@cldemo/ui-kit 1.0.0

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 (720) hide show
  1. package/COMPONENT_CATALOG.md +210 -0
  2. package/LICENSE +21 -0
  3. package/README.md +120 -0
  4. package/buildLibs/all/index.cjs +99 -0
  5. package/buildLibs/all/index.cjs.map +1 -0
  6. package/buildLibs/all/index.d.ts +83 -0
  7. package/buildLibs/all/index.js +168 -0
  8. package/buildLibs/all/index.js.map +1 -0
  9. package/buildLibs/common/Element/Event/drag.d.ts +24 -0
  10. package/buildLibs/common/Element/Event/index.d.ts +9 -0
  11. package/buildLibs/common/Element/Event/resize.d.ts +20 -0
  12. package/buildLibs/common/Element/index.d.ts +104 -0
  13. package/buildLibs/common/Element_Event_drag-DeZYlveu.js +430 -0
  14. package/buildLibs/common/Element_Event_drag-DeZYlveu.js.map +1 -0
  15. package/buildLibs/common/Element_Event_drag-L_ZT9whD.cjs +3 -0
  16. package/buildLibs/common/Element_Event_drag-L_ZT9whD.cjs.map +1 -0
  17. package/buildLibs/common/Element_Event_resize-DA_sUt40.cjs +2 -0
  18. package/buildLibs/common/Element_Event_resize-DA_sUt40.cjs.map +1 -0
  19. package/buildLibs/common/Element_Event_resize-DqH_UT2k.js +49 -0
  20. package/buildLibs/common/Element_Event_resize-DqH_UT2k.js.map +1 -0
  21. package/buildLibs/common/Tools/animateEasing.d.ts +27 -0
  22. package/buildLibs/common/Tools/cookie.d.ts +8 -0
  23. package/buildLibs/common/Tools/delayFun.d.ts +9 -0
  24. package/buildLibs/common/Tools/index.d.ts +15 -0
  25. package/buildLibs/common/Tools/localStorage.d.ts +9 -0
  26. package/buildLibs/common/Tools/number.d.ts +8 -0
  27. package/buildLibs/common/Tools_animateEasing-C6TmrmvZ.cjs +2 -0
  28. package/buildLibs/common/Tools_animateEasing-C6TmrmvZ.cjs.map +1 -0
  29. package/buildLibs/common/Tools_animateEasing-D0lY_Vn8.js +50 -0
  30. package/buildLibs/common/Tools_animateEasing-D0lY_Vn8.js.map +1 -0
  31. package/buildLibs/common/Tools_cookie-CCTgXZb7.cjs +2 -0
  32. package/buildLibs/common/Tools_cookie-CCTgXZb7.cjs.map +1 -0
  33. package/buildLibs/common/Tools_cookie-DKctMXdK.js +31 -0
  34. package/buildLibs/common/Tools_cookie-DKctMXdK.js.map +1 -0
  35. package/buildLibs/common/Tools_delayFun-CA1ktv1L.js +21 -0
  36. package/buildLibs/common/Tools_delayFun-CA1ktv1L.js.map +1 -0
  37. package/buildLibs/common/Tools_delayFun-DYTkzlXE.cjs +2 -0
  38. package/buildLibs/common/Tools_delayFun-DYTkzlXE.cjs.map +1 -0
  39. package/buildLibs/common/Tools_localStorage-Cbecy4gj.cjs +2 -0
  40. package/buildLibs/common/Tools_localStorage-Cbecy4gj.cjs.map +1 -0
  41. package/buildLibs/common/Tools_localStorage-DVvhtzhL.js +48 -0
  42. package/buildLibs/common/Tools_localStorage-DVvhtzhL.js.map +1 -0
  43. package/buildLibs/common/Tools_number-Bh6hGO5U.cjs +2 -0
  44. package/buildLibs/common/Tools_number-Bh6hGO5U.cjs.map +1 -0
  45. package/buildLibs/common/Tools_number-C_MjN473.js +22 -0
  46. package/buildLibs/common/Tools_number-C_MjN473.js.map +1 -0
  47. package/buildLibs/common/axios-DZoeNi6y.cjs +2 -0
  48. package/buildLibs/common/axios-DZoeNi6y.cjs.map +1 -0
  49. package/buildLibs/common/axios-DqkFEq4Y.js +242 -0
  50. package/buildLibs/common/axios-DqkFEq4Y.js.map +1 -0
  51. package/buildLibs/common/axios.d.ts +28 -0
  52. package/buildLibs/common/base-PQGakkrl.js +808 -0
  53. package/buildLibs/common/base-PQGakkrl.js.map +1 -0
  54. package/buildLibs/common/base-iCmnU-fv.cjs +2 -0
  55. package/buildLibs/common/base-iCmnU-fv.cjs.map +1 -0
  56. package/buildLibs/common/base.d.ts +222 -0
  57. package/buildLibs/common/day-BzMalBXj.cjs +2 -0
  58. package/buildLibs/common/day-BzMalBXj.cjs.map +1 -0
  59. package/buildLibs/common/day-Dm_AnEZp.js +75 -0
  60. package/buildLibs/common/day-Dm_AnEZp.js.map +1 -0
  61. package/buildLibs/common/day.d.ts +25 -0
  62. package/buildLibs/common/echart-BtfUJ8lE.js +498 -0
  63. package/buildLibs/common/echart-BtfUJ8lE.js.map +1 -0
  64. package/buildLibs/common/echart-Cs3rQ-e9.cjs +2 -0
  65. package/buildLibs/common/echart-Cs3rQ-e9.cjs.map +1 -0
  66. package/buildLibs/common/echart.d.ts +82 -0
  67. package/buildLibs/common/i18n/en.d.ts +111 -0
  68. package/buildLibs/common/i18n/index.d.ts +25 -0
  69. package/buildLibs/common/i18n/zh_CN.d.ts +111 -0
  70. package/buildLibs/common/i18n_en-BHhFEbi6.js +114 -0
  71. package/buildLibs/common/i18n_en-BHhFEbi6.js.map +1 -0
  72. package/buildLibs/common/i18n_en-D-5antzy.cjs +2 -0
  73. package/buildLibs/common/i18n_en-D-5antzy.cjs.map +1 -0
  74. package/buildLibs/common/i18n_zh_CN-COzQ8Los.js +114 -0
  75. package/buildLibs/common/i18n_zh_CN-COzQ8Los.js.map +1 -0
  76. package/buildLibs/common/i18n_zh_CN-DTZIQXOQ.cjs +2 -0
  77. package/buildLibs/common/i18n_zh_CN-DTZIQXOQ.cjs.map +1 -0
  78. package/buildLibs/common/index.cjs +2 -0
  79. package/buildLibs/common/index.cjs.map +1 -0
  80. package/buildLibs/common/index.d.ts +10 -0
  81. package/buildLibs/common/index.js +124 -0
  82. package/buildLibs/common/index.js.map +1 -0
  83. package/buildLibs/common/promise-BtoePzHD.cjs +2 -0
  84. package/buildLibs/common/promise-BtoePzHD.cjs.map +1 -0
  85. package/buildLibs/common/promise-CPiVqqqL.js +44 -0
  86. package/buildLibs/common/promise-CPiVqqqL.js.map +1 -0
  87. package/buildLibs/common/promise.d.ts +14 -0
  88. package/buildLibs/common/tooltip-De0atcAJ.js +215 -0
  89. package/buildLibs/common/tooltip-De0atcAJ.js.map +1 -0
  90. package/buildLibs/common/tooltip-Dj_ol2ax.cjs +2 -0
  91. package/buildLibs/common/tooltip-Dj_ol2ax.cjs.map +1 -0
  92. package/buildLibs/common/tooltip.d.ts +37 -0
  93. package/buildLibs/mobile/index.cjs +56 -0
  94. package/buildLibs/mobile/index.cjs.map +1 -0
  95. package/buildLibs/mobile/index.d.ts +47 -0
  96. package/buildLibs/mobile/index.js +96 -0
  97. package/buildLibs/mobile/index.js.map +1 -0
  98. package/buildLibs/resolver/index.cjs +2 -0
  99. package/buildLibs/resolver/index.cjs.map +1 -0
  100. package/buildLibs/resolver/index.js +82 -0
  101. package/buildLibs/resolver/index.js.map +1 -0
  102. package/buildLibs/resolver/resolver.d.ts +7 -0
  103. package/buildLibs/utils/Element/ClAnchorNav.cjs +2 -0
  104. package/buildLibs/utils/Element/ClAnchorNav.cjs.map +1 -0
  105. package/buildLibs/utils/Element/ClAnchorNav.css +1 -0
  106. package/buildLibs/utils/Element/ClAnchorNav.d.ts +3 -0
  107. package/buildLibs/utils/Element/ClAnchorNav.js +55 -0
  108. package/buildLibs/utils/Element/ClAnchorNav.js.map +1 -0
  109. package/buildLibs/utils/Element/ClBadge.cjs +2 -0
  110. package/buildLibs/utils/Element/ClBadge.cjs.map +1 -0
  111. package/buildLibs/utils/Element/ClBadge.d.ts +3 -0
  112. package/buildLibs/utils/Element/ClBadge.js +5 -0
  113. package/buildLibs/utils/Element/ClBadge.js.map +1 -0
  114. package/buildLibs/utils/Element/ClButton.cjs +2 -0
  115. package/buildLibs/utils/Element/ClButton.cjs.map +1 -0
  116. package/buildLibs/utils/Element/ClButton.css +1 -0
  117. package/buildLibs/utils/Element/ClButton.d.ts +3 -0
  118. package/buildLibs/utils/Element/ClButton.js +226 -0
  119. package/buildLibs/utils/Element/ClButton.js.map +1 -0
  120. package/buildLibs/utils/Element/ClCheckbox.cjs +2 -0
  121. package/buildLibs/utils/Element/ClCheckbox.cjs.map +1 -0
  122. package/buildLibs/utils/Element/ClCheckbox.d.ts +3 -0
  123. package/buildLibs/utils/Element/ClCheckbox.js +205 -0
  124. package/buildLibs/utils/Element/ClCheckbox.js.map +1 -0
  125. package/buildLibs/utils/Element/ClCheckboxOne.d.ts +3 -0
  126. package/buildLibs/utils/Element/ClClipboard.cjs +2 -0
  127. package/buildLibs/utils/Element/ClClipboard.cjs.map +1 -0
  128. package/buildLibs/utils/Element/ClClipboard.d.ts +3 -0
  129. package/buildLibs/utils/Element/ClClipboard.js +5 -0
  130. package/buildLibs/utils/Element/ClClipboard.js.map +1 -0
  131. package/buildLibs/utils/Element/ClCountup.cjs +2 -0
  132. package/buildLibs/utils/Element/ClCountup.cjs.map +1 -0
  133. package/buildLibs/utils/Element/ClCountup.d.ts +3 -0
  134. package/buildLibs/utils/Element/ClCountup.js +56 -0
  135. package/buildLibs/utils/Element/ClCountup.js.map +1 -0
  136. package/buildLibs/utils/Element/ClCropper.cjs +2 -0
  137. package/buildLibs/utils/Element/ClCropper.cjs.map +1 -0
  138. package/buildLibs/utils/Element/ClCropper.d.ts +3 -0
  139. package/buildLibs/utils/Element/ClCropper.js +5 -0
  140. package/buildLibs/utils/Element/ClCropper.js.map +1 -0
  141. package/buildLibs/utils/Element/ClCropperPreview.css +1 -0
  142. package/buildLibs/utils/Element/ClDarg.cjs +7 -0
  143. package/buildLibs/utils/Element/ClDarg.cjs.map +1 -0
  144. package/buildLibs/utils/Element/ClDarg.css +1 -0
  145. package/buildLibs/utils/Element/ClDarg.d.ts +3 -0
  146. package/buildLibs/utils/Element/ClDarg.js +1554 -0
  147. package/buildLibs/utils/Element/ClDarg.js.map +1 -0
  148. package/buildLibs/utils/Element/ClEllipsis.cjs +2 -0
  149. package/buildLibs/utils/Element/ClEllipsis.cjs.map +1 -0
  150. package/buildLibs/utils/Element/ClEllipsis.css +1 -0
  151. package/buildLibs/utils/Element/ClEllipsis.d.ts +3 -0
  152. package/buildLibs/utils/Element/ClEllipsis.js +99 -0
  153. package/buildLibs/utils/Element/ClEllipsis.js.map +1 -0
  154. package/buildLibs/utils/Element/ClForm.cjs +2 -0
  155. package/buildLibs/utils/Element/ClForm.cjs.map +1 -0
  156. package/buildLibs/utils/Element/ClForm.css +1 -0
  157. package/buildLibs/utils/Element/ClForm.d.ts +3 -0
  158. package/buildLibs/utils/Element/ClForm.js +139 -0
  159. package/buildLibs/utils/Element/ClForm.js.map +1 -0
  160. package/buildLibs/utils/Element/ClFormGroup.cjs +2 -0
  161. package/buildLibs/utils/Element/ClFormGroup.cjs.map +1 -0
  162. package/buildLibs/utils/Element/ClFormGroup.css +1 -0
  163. package/buildLibs/utils/Element/ClFormGroup.d.ts +3 -0
  164. package/buildLibs/utils/Element/ClFormGroup.js +76 -0
  165. package/buildLibs/utils/Element/ClFormGroup.js.map +1 -0
  166. package/buildLibs/utils/Element/ClFormValidate.d.ts +3 -0
  167. package/buildLibs/utils/Element/ClIconFont.cjs +2 -0
  168. package/buildLibs/utils/Element/ClIconFont.cjs.map +1 -0
  169. package/buildLibs/utils/Element/ClIconFont.d.ts +3 -0
  170. package/buildLibs/utils/Element/ClIconFont.js +5 -0
  171. package/buildLibs/utils/Element/ClIconFont.js.map +1 -0
  172. package/buildLibs/utils/Element/ClImage.cjs +2 -0
  173. package/buildLibs/utils/Element/ClImage.cjs.map +1 -0
  174. package/buildLibs/utils/Element/ClImage.css +1 -0
  175. package/buildLibs/utils/Element/ClImage.d.ts +3 -0
  176. package/buildLibs/utils/Element/ClImage.js +195 -0
  177. package/buildLibs/utils/Element/ClImage.js.map +1 -0
  178. package/buildLibs/utils/Element/ClInput.cjs +2 -0
  179. package/buildLibs/utils/Element/ClInput.cjs.map +1 -0
  180. package/buildLibs/utils/Element/ClInput.d.ts +3 -0
  181. package/buildLibs/utils/Element/ClInput.js +5 -0
  182. package/buildLibs/utils/Element/ClInput.js.map +1 -0
  183. package/buildLibs/utils/Element/ClInputCaptcha.cjs +2 -0
  184. package/buildLibs/utils/Element/ClInputCaptcha.cjs.map +1 -0
  185. package/buildLibs/utils/Element/ClInputCaptcha.css +1 -0
  186. package/buildLibs/utils/Element/ClInputCaptcha.d.ts +3 -0
  187. package/buildLibs/utils/Element/ClInputCaptcha.js +111 -0
  188. package/buildLibs/utils/Element/ClInputCaptcha.js.map +1 -0
  189. package/buildLibs/utils/Element/ClInputNumber.cjs +2 -0
  190. package/buildLibs/utils/Element/ClInputNumber.cjs.map +1 -0
  191. package/buildLibs/utils/Element/ClInputNumber.d.ts +3 -0
  192. package/buildLibs/utils/Element/ClInputNumber.js +5 -0
  193. package/buildLibs/utils/Element/ClInputNumber.js.map +1 -0
  194. package/buildLibs/utils/Element/ClInputSearch.cjs +2 -0
  195. package/buildLibs/utils/Element/ClInputSearch.cjs.map +1 -0
  196. package/buildLibs/utils/Element/ClInputSearch.d.ts +3 -0
  197. package/buildLibs/utils/Element/ClInputSearch.js +5 -0
  198. package/buildLibs/utils/Element/ClInputSearch.js.map +1 -0
  199. package/buildLibs/utils/Element/ClInputTag.css +1 -0
  200. package/buildLibs/utils/Element/ClInputTextarea.cjs +2 -0
  201. package/buildLibs/utils/Element/ClInputTextarea.cjs.map +1 -0
  202. package/buildLibs/utils/Element/ClInputTextarea.d.ts +3 -0
  203. package/buildLibs/utils/Element/ClInputTextarea.js +5 -0
  204. package/buildLibs/utils/Element/ClInputTextarea.js.map +1 -0
  205. package/buildLibs/utils/Element/ClInputnumberButton.d.ts +3 -0
  206. package/buildLibs/utils/Element/ClLink.cjs +2 -0
  207. package/buildLibs/utils/Element/ClLink.cjs.map +1 -0
  208. package/buildLibs/utils/Element/ClLink.d.ts +3 -0
  209. package/buildLibs/utils/Element/ClLink.js +5 -0
  210. package/buildLibs/utils/Element/ClLink.js.map +1 -0
  211. package/buildLibs/utils/Element/ClLoad.cjs +2 -0
  212. package/buildLibs/utils/Element/ClLoad.cjs.map +1 -0
  213. package/buildLibs/utils/Element/ClLoad.d.ts +3 -0
  214. package/buildLibs/utils/Element/ClLoad.js +5 -0
  215. package/buildLibs/utils/Element/ClLoad.js.map +1 -0
  216. package/buildLibs/utils/Element/ClLoadFullCenter.d.ts +3 -0
  217. package/buildLibs/utils/Element/ClLoadIng.d.ts +3 -0
  218. package/buildLibs/utils/Element/ClLoadScreen.cjs +2 -0
  219. package/buildLibs/utils/Element/ClLoadScreen.cjs.map +1 -0
  220. package/buildLibs/utils/Element/ClLoadScreen.d.ts +3 -0
  221. package/buildLibs/utils/Element/ClLoadScreen.js +5 -0
  222. package/buildLibs/utils/Element/ClLoadScreen.js.map +1 -0
  223. package/buildLibs/utils/Element/ClLoadWarp.d.ts +3 -0
  224. package/buildLibs/utils/Element/ClModal.cjs +2 -0
  225. package/buildLibs/utils/Element/ClModal.cjs.map +1 -0
  226. package/buildLibs/utils/Element/ClModal.d.ts +3 -0
  227. package/buildLibs/utils/Element/ClModal.js +5 -0
  228. package/buildLibs/utils/Element/ClModal.js.map +1 -0
  229. package/buildLibs/utils/Element/ClProgress.cjs +2 -0
  230. package/buildLibs/utils/Element/ClProgress.cjs.map +1 -0
  231. package/buildLibs/utils/Element/ClProgress.css +1 -0
  232. package/buildLibs/utils/Element/ClProgress.d.ts +3 -0
  233. package/buildLibs/utils/Element/ClProgress.js +219 -0
  234. package/buildLibs/utils/Element/ClProgress.js.map +1 -0
  235. package/buildLibs/utils/Element/ClRadio.cjs +2 -0
  236. package/buildLibs/utils/Element/ClRadio.cjs.map +1 -0
  237. package/buildLibs/utils/Element/ClRadio.d.ts +3 -0
  238. package/buildLibs/utils/Element/ClRadio.js +176 -0
  239. package/buildLibs/utils/Element/ClRadio.js.map +1 -0
  240. package/buildLibs/utils/Element/ClRadioOne.d.ts +3 -0
  241. package/buildLibs/utils/Element/ClSlider.cjs +2 -0
  242. package/buildLibs/utils/Element/ClSlider.cjs.map +1 -0
  243. package/buildLibs/utils/Element/ClSlider.css +1 -0
  244. package/buildLibs/utils/Element/ClSlider.d.ts +3 -0
  245. package/buildLibs/utils/Element/ClSlider.js +721 -0
  246. package/buildLibs/utils/Element/ClSlider.js.map +1 -0
  247. package/buildLibs/utils/Element/ClSwitchery.cjs +2 -0
  248. package/buildLibs/utils/Element/ClSwitchery.cjs.map +1 -0
  249. package/buildLibs/utils/Element/ClSwitchery.css +1 -0
  250. package/buildLibs/utils/Element/ClSwitchery.d.ts +3 -0
  251. package/buildLibs/utils/Element/ClSwitchery.js +429 -0
  252. package/buildLibs/utils/Element/ClSwitchery.js.map +1 -0
  253. package/buildLibs/utils/Element/ClTags.cjs +2 -0
  254. package/buildLibs/utils/Element/ClTags.cjs.map +1 -0
  255. package/buildLibs/utils/Element/ClTags.d.ts +3 -0
  256. package/buildLibs/utils/Element/ClTags.js +5 -0
  257. package/buildLibs/utils/Element/ClTags.js.map +1 -0
  258. package/buildLibs/utils/Element/ClTransitionSlideupdown.d.ts +3 -0
  259. package/buildLibs/utils/Element/ClWaterfall.cjs +2 -0
  260. package/buildLibs/utils/Element/ClWaterfall.cjs.map +1 -0
  261. package/buildLibs/utils/Element/ClWaterfall.css +1 -0
  262. package/buildLibs/utils/Element/ClWaterfall.d.ts +3 -0
  263. package/buildLibs/utils/Element/ClWaterfall.js +167 -0
  264. package/buildLibs/utils/Element/ClWaterfall.js.map +1 -0
  265. package/buildLibs/utils/Element/ClWaterfallImage.d.ts +3 -0
  266. package/buildLibs/utils/Element/__provide__/Clipboard.cjs +2 -0
  267. package/buildLibs/utils/Element/__provide__/Clipboard.cjs.map +1 -0
  268. package/buildLibs/utils/Element/__provide__/Clipboard.d.ts +2 -0
  269. package/buildLibs/utils/Element/__provide__/Clipboard.js +62 -0
  270. package/buildLibs/utils/Element/__provide__/Clipboard.js.map +1 -0
  271. package/buildLibs/utils/Element/__provide__/LoadScreen.cjs +2 -0
  272. package/buildLibs/utils/Element/__provide__/LoadScreen.cjs.map +1 -0
  273. package/buildLibs/utils/Element/__provide__/LoadScreen.d.ts +2 -0
  274. package/buildLibs/utils/Element/__provide__/LoadScreen.js +17 -0
  275. package/buildLibs/utils/Element/__provide__/LoadScreen.js.map +1 -0
  276. package/buildLibs/utils/Element/__provide__/languagePack.cjs +2 -0
  277. package/buildLibs/utils/Element/__provide__/languagePack.cjs.map +1 -0
  278. package/buildLibs/utils/Element/__provide__/languagePack.d.ts +2 -0
  279. package/buildLibs/utils/Element/__provide__/languagePack.js +29 -0
  280. package/buildLibs/utils/Element/__provide__/languagePack.js.map +1 -0
  281. package/buildLibs/utils/Mobile/ClCell.cjs +2 -0
  282. package/buildLibs/utils/Mobile/ClCell.cjs.map +1 -0
  283. package/buildLibs/utils/Mobile/ClCell.css +1 -0
  284. package/buildLibs/utils/Mobile/ClCell.d.ts +3 -0
  285. package/buildLibs/utils/Mobile/ClCell.js +130 -0
  286. package/buildLibs/utils/Mobile/ClCell.js.map +1 -0
  287. package/buildLibs/utils/Mobile/ClPullToRefresh.cjs +2 -0
  288. package/buildLibs/utils/Mobile/ClPullToRefresh.cjs.map +1 -0
  289. package/buildLibs/utils/Mobile/ClPullToRefresh.css +1 -0
  290. package/buildLibs/utils/Mobile/ClPullToRefresh.d.ts +3 -0
  291. package/buildLibs/utils/Mobile/ClPullToRefresh.js +195 -0
  292. package/buildLibs/utils/Mobile/ClPullToRefresh.js.map +1 -0
  293. package/buildLibs/utils/Shared/Alert.css +1 -0
  294. package/buildLibs/utils/Shared/Base.css +1 -0
  295. package/buildLibs/utils/Shared/Base.vue_vue_type_script_setup_true_lang-C_-WLPmH.js +2 -0
  296. package/buildLibs/utils/Shared/Base.vue_vue_type_script_setup_true_lang-C_-WLPmH.js.map +1 -0
  297. package/buildLibs/utils/Shared/Base.vue_vue_type_script_setup_true_lang-Duh9tbur.js +354 -0
  298. package/buildLibs/utils/Shared/Base.vue_vue_type_script_setup_true_lang-Duh9tbur.js.map +1 -0
  299. package/buildLibs/utils/Shared/BaseTransition.css +1 -0
  300. package/buildLibs/utils/Shared/BaseTransition.vue_vue_type_script_setup_true_lang-DEXehdBc.js +2 -0
  301. package/buildLibs/utils/Shared/BaseTransition.vue_vue_type_script_setup_true_lang-DEXehdBc.js.map +1 -0
  302. package/buildLibs/utils/Shared/BaseTransition.vue_vue_type_script_setup_true_lang-DLAYzSgX.js +121 -0
  303. package/buildLibs/utils/Shared/BaseTransition.vue_vue_type_script_setup_true_lang-DLAYzSgX.js.map +1 -0
  304. package/buildLibs/utils/Shared/Highlight.css +1 -0
  305. package/buildLibs/utils/Shared/Index.css +1 -0
  306. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-AhjUdZHr.js +233 -0
  307. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-AhjUdZHr.js.map +1 -0
  308. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-B3Jxjv3S.js +75 -0
  309. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-B3Jxjv3S.js.map +1 -0
  310. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BSTGdmJD.js +2 -0
  311. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BSTGdmJD.js.map +1 -0
  312. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BWdaQyLA.js +2 -0
  313. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BWdaQyLA.js.map +1 -0
  314. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BYmK-TqX.js +2 -0
  315. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BYmK-TqX.js.map +1 -0
  316. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-B_jfFc6B.js +143 -0
  317. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-B_jfFc6B.js.map +1 -0
  318. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BjRPiJPA.js +2 -0
  319. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BjRPiJPA.js.map +1 -0
  320. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Bv5Aqano.js +24 -0
  321. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Bv5Aqano.js.map +1 -0
  322. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BvGrVSSF.js +1146 -0
  323. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BvGrVSSF.js.map +1 -0
  324. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BxtgFrvB.js +336 -0
  325. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BxtgFrvB.js.map +1 -0
  326. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-C1ANWb2_.js +2 -0
  327. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-C1ANWb2_.js.map +1 -0
  328. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-C4XFCLbD.js +2 -0
  329. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-C4XFCLbD.js.map +1 -0
  330. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-C4rRquU-.js +165 -0
  331. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-C4rRquU-.js.map +1 -0
  332. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CIdipm_Z.js +2 -0
  333. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CIdipm_Z.js.map +1 -0
  334. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CNa69faz.js +168 -0
  335. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CNa69faz.js.map +1 -0
  336. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CPWxeZzn.js +2 -0
  337. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CPWxeZzn.js.map +1 -0
  338. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CVPvV5cZ.js +2 -0
  339. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CVPvV5cZ.js.map +1 -0
  340. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CejRfZxl.js +70 -0
  341. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CejRfZxl.js.map +1 -0
  342. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Cjhn8JLr.js +2 -0
  343. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Cjhn8JLr.js.map +1 -0
  344. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Cuv5NgcY.js +84 -0
  345. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Cuv5NgcY.js.map +1 -0
  346. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-D5cJAhwe.js +2 -0
  347. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-D5cJAhwe.js.map +1 -0
  348. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DKAxas3I.js +98 -0
  349. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DKAxas3I.js.map +1 -0
  350. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DWw1B8Z2.js +342 -0
  351. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DWw1B8Z2.js.map +1 -0
  352. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Da4Z8GsB.js +166 -0
  353. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Da4Z8GsB.js.map +1 -0
  354. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Dd2V82en.js +2 -0
  355. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Dd2V82en.js.map +1 -0
  356. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DfYsa_hk.js +2 -0
  357. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DfYsa_hk.js.map +1 -0
  358. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DlCXpiu6.js +384 -0
  359. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DlCXpiu6.js.map +1 -0
  360. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DpxHzkjC.js +462 -0
  361. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DpxHzkjC.js.map +1 -0
  362. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Ds2Q0eNQ.js +2 -0
  363. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Ds2Q0eNQ.js.map +1 -0
  364. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DxWcQL_8.js +2 -0
  365. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DxWcQL_8.js.map +1 -0
  366. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-HDdyVujM.js +2 -0
  367. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-HDdyVujM.js.map +1 -0
  368. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-SO7WBNgE.js +2 -0
  369. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-SO7WBNgE.js.map +1 -0
  370. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-_Zu2nb2q.js +593 -0
  371. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-_Zu2nb2q.js.map +1 -0
  372. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-gzy5AIqr.js +54 -0
  373. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-gzy5AIqr.js.map +1 -0
  374. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-inXYfqWx.js +144 -0
  375. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-inXYfqWx.js.map +1 -0
  376. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-p08PZCov.js +2 -0
  377. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-p08PZCov.js.map +1 -0
  378. package/buildLibs/utils/Shared/Index10.css +1 -0
  379. package/buildLibs/utils/Shared/Index11.css +1 -0
  380. package/buildLibs/utils/Shared/Index12.css +1 -0
  381. package/buildLibs/utils/Shared/Index13.css +1 -0
  382. package/buildLibs/utils/Shared/Index14.css +1 -0
  383. package/buildLibs/utils/Shared/Index15.css +1 -0
  384. package/buildLibs/utils/Shared/Index16.css +1 -0
  385. package/buildLibs/utils/Shared/Index17.css +1 -0
  386. package/buildLibs/utils/Shared/Index18.css +1 -0
  387. package/buildLibs/utils/Shared/Index19.css +1 -0
  388. package/buildLibs/utils/Shared/Index2.css +1 -0
  389. package/buildLibs/utils/Shared/Index3.css +1 -0
  390. package/buildLibs/utils/Shared/Index4.css +1 -0
  391. package/buildLibs/utils/Shared/Index5.css +1 -0
  392. package/buildLibs/utils/Shared/Index6.css +1 -0
  393. package/buildLibs/utils/Shared/Index7.css +1 -0
  394. package/buildLibs/utils/Shared/Index8.css +1 -0
  395. package/buildLibs/utils/Shared/Index9.css +1 -0
  396. package/buildLibs/utils/Shared/Ing-C_3NkQxd.js +43 -0
  397. package/buildLibs/utils/Shared/Ing-C_3NkQxd.js.map +1 -0
  398. package/buildLibs/utils/Shared/Ing-D_cd5IxY.js +2 -0
  399. package/buildLibs/utils/Shared/Ing-D_cd5IxY.js.map +1 -0
  400. package/buildLibs/utils/Shared/Ing.css +1 -0
  401. package/buildLibs/utils/Shared/List.vue_vue_type_script_setup_true_lang-Dr6PppOP.js +2 -0
  402. package/buildLibs/utils/Shared/List.vue_vue_type_script_setup_true_lang-Dr6PppOP.js.map +1 -0
  403. package/buildLibs/utils/Shared/List.vue_vue_type_script_setup_true_lang-DzmylhZ6.js +141 -0
  404. package/buildLibs/utils/Shared/List.vue_vue_type_script_setup_true_lang-DzmylhZ6.js.map +1 -0
  405. package/buildLibs/utils/Shared/Notify.css +1 -0
  406. package/buildLibs/utils/Shared/One.vue_vue_type_script_setup_true_lang-BuNRS-9u.js +87 -0
  407. package/buildLibs/utils/Shared/One.vue_vue_type_script_setup_true_lang-BuNRS-9u.js.map +1 -0
  408. package/buildLibs/utils/Shared/One.vue_vue_type_script_setup_true_lang-E9U8wdGT.js +2 -0
  409. package/buildLibs/utils/Shared/One.vue_vue_type_script_setup_true_lang-E9U8wdGT.js.map +1 -0
  410. package/buildLibs/utils/Shared/Popup.vue_vue_type_script_setup_true_lang-CbaTn8Yz.js +109 -0
  411. package/buildLibs/utils/Shared/Popup.vue_vue_type_script_setup_true_lang-CbaTn8Yz.js.map +1 -0
  412. package/buildLibs/utils/Shared/Popup.vue_vue_type_script_setup_true_lang-D6uynoJZ.js +2 -0
  413. package/buildLibs/utils/Shared/Popup.vue_vue_type_script_setup_true_lang-D6uynoJZ.js.map +1 -0
  414. package/buildLibs/utils/Shared/Tooltip.css +1 -0
  415. package/buildLibs/utils/Shared/Waves.css +7 -0
  416. package/buildLibs/utils/Shared/_plugin-vue_export-helper-BHFhmbuH.js +2 -0
  417. package/buildLibs/utils/Shared/_plugin-vue_export-helper-BHFhmbuH.js.map +1 -0
  418. package/buildLibs/utils/Shared/_plugin-vue_export-helper-CHgC5LLL.js +10 -0
  419. package/buildLibs/utils/Shared/_plugin-vue_export-helper-CHgC5LLL.js.map +1 -0
  420. package/buildLibs/utils/Shared/base-PQGakkrl.js +808 -0
  421. package/buildLibs/utils/Shared/base-PQGakkrl.js.map +1 -0
  422. package/buildLibs/utils/Shared/base-iCmnU-fv.js +2 -0
  423. package/buildLibs/utils/Shared/base-iCmnU-fv.js.map +1 -0
  424. package/buildLibs/utils/Shared/day-Bz9LfelO.js +75 -0
  425. package/buildLibs/utils/Shared/day-Bz9LfelO.js.map +1 -0
  426. package/buildLibs/utils/Shared/day-CvcvgKjb.js +2 -0
  427. package/buildLibs/utils/Shared/day-CvcvgKjb.js.map +1 -0
  428. package/buildLibs/utils/Shared/drag-CzE5R222.js +2 -0
  429. package/buildLibs/utils/Shared/drag-CzE5R222.js.map +1 -0
  430. package/buildLibs/utils/Shared/drag-CzfhSB0g.js +42 -0
  431. package/buildLibs/utils/Shared/drag-CzfhSB0g.js.map +1 -0
  432. package/buildLibs/utils/Shared/index-BnerInzC.js +432 -0
  433. package/buildLibs/utils/Shared/index-BnerInzC.js.map +1 -0
  434. package/buildLibs/utils/Shared/index-C1R9HAvS.js +320 -0
  435. package/buildLibs/utils/Shared/index-C1R9HAvS.js.map +1 -0
  436. package/buildLibs/utils/Shared/index-CVBh8iTg.js +2 -0
  437. package/buildLibs/utils/Shared/index-CVBh8iTg.js.map +1 -0
  438. package/buildLibs/utils/Shared/index-Ul6uY51t.js +3 -0
  439. package/buildLibs/utils/Shared/index-Ul6uY51t.js.map +1 -0
  440. package/buildLibs/utils/Shared/language-D6gRWx8H.js +2 -0
  441. package/buildLibs/utils/Shared/language-D6gRWx8H.js.map +1 -0
  442. package/buildLibs/utils/Shared/language-DxTlvFs2.js +18 -0
  443. package/buildLibs/utils/Shared/language-DxTlvFs2.js.map +1 -0
  444. package/buildLibs/utils/Shared/resize-COkswDOq.js +2 -0
  445. package/buildLibs/utils/Shared/resize-COkswDOq.js.map +1 -0
  446. package/buildLibs/utils/Shared/resize-kOWxHVSP.js +54 -0
  447. package/buildLibs/utils/Shared/resize-kOWxHVSP.js.map +1 -0
  448. package/buildLibs/utils/Shared/vue-virtual-scroller.css +1 -0
  449. package/buildLibs/utils/Web/ClBreadcrumb.cjs +2 -0
  450. package/buildLibs/utils/Web/ClBreadcrumb.cjs.map +1 -0
  451. package/buildLibs/utils/Web/ClBreadcrumb.css +1 -0
  452. package/buildLibs/utils/Web/ClBreadcrumb.d.ts +3 -0
  453. package/buildLibs/utils/Web/ClBreadcrumb.js +82 -0
  454. package/buildLibs/utils/Web/ClBreadcrumb.js.map +1 -0
  455. package/buildLibs/utils/Web/ClCalendar.cjs +2 -0
  456. package/buildLibs/utils/Web/ClCalendar.cjs.map +1 -0
  457. package/buildLibs/utils/Web/ClCalendar.css +1 -0
  458. package/buildLibs/utils/Web/ClCalendar.d.ts +3 -0
  459. package/buildLibs/utils/Web/ClCalendar.js +179 -0
  460. package/buildLibs/utils/Web/ClCalendar.js.map +1 -0
  461. package/buildLibs/utils/Web/ClCard.cjs +2 -0
  462. package/buildLibs/utils/Web/ClCard.cjs.map +1 -0
  463. package/buildLibs/utils/Web/ClCard.d.ts +3 -0
  464. package/buildLibs/utils/Web/ClCard.js +5 -0
  465. package/buildLibs/utils/Web/ClCard.js.map +1 -0
  466. package/buildLibs/utils/Web/ClCardLegend.cjs +2 -0
  467. package/buildLibs/utils/Web/ClCardLegend.cjs.map +1 -0
  468. package/buildLibs/utils/Web/ClCardLegend.css +1 -0
  469. package/buildLibs/utils/Web/ClCardLegend.d.ts +3 -0
  470. package/buildLibs/utils/Web/ClCardLegend.js +128 -0
  471. package/buildLibs/utils/Web/ClCardLegend.js.map +1 -0
  472. package/buildLibs/utils/Web/ClCollapse.cjs +2 -0
  473. package/buildLibs/utils/Web/ClCollapse.cjs.map +1 -0
  474. package/buildLibs/utils/Web/ClCollapse.css +1 -0
  475. package/buildLibs/utils/Web/ClCollapse.d.ts +3 -0
  476. package/buildLibs/utils/Web/ClCollapse.js +111 -0
  477. package/buildLibs/utils/Web/ClCollapse.js.map +1 -0
  478. package/buildLibs/utils/Web/ClColorpicker.cjs +2 -0
  479. package/buildLibs/utils/Web/ClColorpicker.cjs.map +1 -0
  480. package/buildLibs/utils/Web/ClColorpicker.css +1 -0
  481. package/buildLibs/utils/Web/ClColorpicker.d.ts +3 -0
  482. package/buildLibs/utils/Web/ClColorpicker.js +1130 -0
  483. package/buildLibs/utils/Web/ClColorpicker.js.map +1 -0
  484. package/buildLibs/utils/Web/ClCropperPreview.cjs +2 -0
  485. package/buildLibs/utils/Web/ClCropperPreview.cjs.map +1 -0
  486. package/buildLibs/utils/Web/ClCropperPreview.d.ts +3 -0
  487. package/buildLibs/utils/Web/ClCropperPreview.js +175 -0
  488. package/buildLibs/utils/Web/ClCropperPreview.js.map +1 -0
  489. package/buildLibs/utils/Web/ClDatetime.cjs +2 -0
  490. package/buildLibs/utils/Web/ClDatetime.cjs.map +1 -0
  491. package/buildLibs/utils/Web/ClDatetime.css +1 -0
  492. package/buildLibs/utils/Web/ClDatetime.d.ts +3 -0
  493. package/buildLibs/utils/Web/ClDatetime.js +2002 -0
  494. package/buildLibs/utils/Web/ClDatetime.js.map +1 -0
  495. package/buildLibs/utils/Web/ClDropdownmenu.cjs +2 -0
  496. package/buildLibs/utils/Web/ClDropdownmenu.cjs.map +1 -0
  497. package/buildLibs/utils/Web/ClDropdownmenu.css +1 -0
  498. package/buildLibs/utils/Web/ClDropdownmenu.d.ts +3 -0
  499. package/buildLibs/utils/Web/ClDropdownmenu.js +75 -0
  500. package/buildLibs/utils/Web/ClDropdownmenu.js.map +1 -0
  501. package/buildLibs/utils/Web/ClDropdownmenuItem.d.ts +3 -0
  502. package/buildLibs/utils/Web/ClDropdownpopup.cjs +2 -0
  503. package/buildLibs/utils/Web/ClDropdownpopup.cjs.map +1 -0
  504. package/buildLibs/utils/Web/ClDropdownpopup.css +1 -0
  505. package/buildLibs/utils/Web/ClDropdownpopup.d.ts +3 -0
  506. package/buildLibs/utils/Web/ClDropdownpopup.js +89 -0
  507. package/buildLibs/utils/Web/ClDropdownpopup.js.map +1 -0
  508. package/buildLibs/utils/Web/ClEcharts.cjs +2 -0
  509. package/buildLibs/utils/Web/ClEcharts.cjs.map +1 -0
  510. package/buildLibs/utils/Web/ClEcharts.css +1 -0
  511. package/buildLibs/utils/Web/ClEcharts.d.ts +3 -0
  512. package/buildLibs/utils/Web/ClEcharts.js +297 -0
  513. package/buildLibs/utils/Web/ClEcharts.js.map +1 -0
  514. package/buildLibs/utils/Web/ClFileupload.cjs +2 -0
  515. package/buildLibs/utils/Web/ClFileupload.cjs.map +1 -0
  516. package/buildLibs/utils/Web/ClFileupload.d.ts +3 -0
  517. package/buildLibs/utils/Web/ClFileupload.js +5 -0
  518. package/buildLibs/utils/Web/ClFileupload.js.map +1 -0
  519. package/buildLibs/utils/Web/ClInputTag.cjs +6 -0
  520. package/buildLibs/utils/Web/ClInputTag.cjs.map +1 -0
  521. package/buildLibs/utils/Web/ClInputTag.d.ts +3 -0
  522. package/buildLibs/utils/Web/ClInputTag.js +854 -0
  523. package/buildLibs/utils/Web/ClInputTag.js.map +1 -0
  524. package/buildLibs/utils/Web/ClPaginate.cjs +2 -0
  525. package/buildLibs/utils/Web/ClPaginate.cjs.map +1 -0
  526. package/buildLibs/utils/Web/ClPaginate.css +1 -0
  527. package/buildLibs/utils/Web/ClPaginate.d.ts +3 -0
  528. package/buildLibs/utils/Web/ClPaginate.js +167 -0
  529. package/buildLibs/utils/Web/ClPaginate.js.map +1 -0
  530. package/buildLibs/utils/Web/ClPortlet.cjs +2 -0
  531. package/buildLibs/utils/Web/ClPortlet.cjs.map +1 -0
  532. package/buildLibs/utils/Web/ClPortlet.css +1 -0
  533. package/buildLibs/utils/Web/ClPortlet.d.ts +3 -0
  534. package/buildLibs/utils/Web/ClPortlet.js +47 -0
  535. package/buildLibs/utils/Web/ClPortlet.js.map +1 -0
  536. package/buildLibs/utils/Web/ClPreview.cjs +2 -0
  537. package/buildLibs/utils/Web/ClPreview.cjs.map +1 -0
  538. package/buildLibs/utils/Web/ClPreview.js +5 -0
  539. package/buildLibs/utils/Web/ClPreview.js.map +1 -0
  540. package/buildLibs/utils/Web/ClPreviewexample.cjs +2 -0
  541. package/buildLibs/utils/Web/ClPreviewexample.cjs.map +1 -0
  542. package/buildLibs/utils/Web/ClPreviewexample.d.ts +3 -0
  543. package/buildLibs/utils/Web/ClPreviewexample.js +5 -0
  544. package/buildLibs/utils/Web/ClPreviewexample.js.map +1 -0
  545. package/buildLibs/utils/Web/ClScrollXFence.cjs +2 -0
  546. package/buildLibs/utils/Web/ClScrollXFence.cjs.map +1 -0
  547. package/buildLibs/utils/Web/ClScrollXFence.css +1 -0
  548. package/buildLibs/utils/Web/ClScrollXFence.d.ts +3 -0
  549. package/buildLibs/utils/Web/ClScrollXFence.js +107 -0
  550. package/buildLibs/utils/Web/ClScrollXFence.js.map +1 -0
  551. package/buildLibs/utils/Web/ClSelect.cjs +2 -0
  552. package/buildLibs/utils/Web/ClSelect.cjs.map +1 -0
  553. package/buildLibs/utils/Web/ClSelect.d.ts +3 -0
  554. package/buildLibs/utils/Web/ClSelect.js +5 -0
  555. package/buildLibs/utils/Web/ClSelect.js.map +1 -0
  556. package/buildLibs/utils/Web/ClSelectCascade.cjs +2 -0
  557. package/buildLibs/utils/Web/ClSelectCascade.cjs.map +1 -0
  558. package/buildLibs/utils/Web/ClSelectCascade.css +1 -0
  559. package/buildLibs/utils/Web/ClSelectCascade.d.ts +3 -0
  560. package/buildLibs/utils/Web/ClSelectCascade.js +222 -0
  561. package/buildLibs/utils/Web/ClSelectCascade.js.map +1 -0
  562. package/buildLibs/utils/Web/ClSelectTag.cjs +2 -0
  563. package/buildLibs/utils/Web/ClSelectTag.cjs.map +1 -0
  564. package/buildLibs/utils/Web/ClSelectTag.css +1 -0
  565. package/buildLibs/utils/Web/ClSelectTag.d.ts +3 -0
  566. package/buildLibs/utils/Web/ClSelectTag.js +249 -0
  567. package/buildLibs/utils/Web/ClSelectTag.js.map +1 -0
  568. package/buildLibs/utils/Web/ClSelectTree.cjs +2 -0
  569. package/buildLibs/utils/Web/ClSelectTree.cjs.map +1 -0
  570. package/buildLibs/utils/Web/ClSelectTree.css +1 -0
  571. package/buildLibs/utils/Web/ClSelectTree.d.ts +3 -0
  572. package/buildLibs/utils/Web/ClSelectTree.js +190 -0
  573. package/buildLibs/utils/Web/ClSelectTree.js.map +1 -0
  574. package/buildLibs/utils/Web/ClSelectmove.cjs +2 -0
  575. package/buildLibs/utils/Web/ClSelectmove.cjs.map +1 -0
  576. package/buildLibs/utils/Web/ClSelectmove.css +1 -0
  577. package/buildLibs/utils/Web/ClSelectmove.d.ts +3 -0
  578. package/buildLibs/utils/Web/ClSelectmove.js +1090 -0
  579. package/buildLibs/utils/Web/ClSelectmove.js.map +1 -0
  580. package/buildLibs/utils/Web/ClSidemenu.cjs +2 -0
  581. package/buildLibs/utils/Web/ClSidemenu.cjs.map +1 -0
  582. package/buildLibs/utils/Web/ClSidemenu.css +1 -0
  583. package/buildLibs/utils/Web/ClSidemenu.d.ts +3 -0
  584. package/buildLibs/utils/Web/ClSidemenu.js +190 -0
  585. package/buildLibs/utils/Web/ClSidemenu.js.map +1 -0
  586. package/buildLibs/utils/Web/ClTable.cjs +2 -0
  587. package/buildLibs/utils/Web/ClTable.cjs.map +1 -0
  588. package/buildLibs/utils/Web/ClTable.css +1 -0
  589. package/buildLibs/utils/Web/ClTable.d.ts +3 -0
  590. package/buildLibs/utils/Web/ClTable.js +1914 -0
  591. package/buildLibs/utils/Web/ClTable.js.map +1 -0
  592. package/buildLibs/utils/Web/ClTabs.cjs +2 -0
  593. package/buildLibs/utils/Web/ClTabs.cjs.map +1 -0
  594. package/buildLibs/utils/Web/ClTabs.css +1 -0
  595. package/buildLibs/utils/Web/ClTabs.d.ts +3 -0
  596. package/buildLibs/utils/Web/ClTabs.js +276 -0
  597. package/buildLibs/utils/Web/ClTabs.js.map +1 -0
  598. package/buildLibs/utils/Web/ClTree.cjs +2 -0
  599. package/buildLibs/utils/Web/ClTree.cjs.map +1 -0
  600. package/buildLibs/utils/Web/ClTree.css +1 -0
  601. package/buildLibs/utils/Web/ClTree.d.ts +3 -0
  602. package/buildLibs/utils/Web/ClTree.js +416 -0
  603. package/buildLibs/utils/Web/ClTree.js.map +1 -0
  604. package/buildLibs/utils/Web/ClWeekhour.cjs +2 -0
  605. package/buildLibs/utils/Web/ClWeekhour.cjs.map +1 -0
  606. package/buildLibs/utils/Web/ClWeekhour.css +1 -0
  607. package/buildLibs/utils/Web/ClWeekhour.d.ts +3 -0
  608. package/buildLibs/utils/Web/ClWeekhour.js +679 -0
  609. package/buildLibs/utils/Web/ClWeekhour.js.map +1 -0
  610. package/buildLibs/utils/Web/ClXeditable.cjs +2 -0
  611. package/buildLibs/utils/Web/ClXeditable.cjs.map +1 -0
  612. package/buildLibs/utils/Web/ClXeditable.css +1 -0
  613. package/buildLibs/utils/Web/ClXeditable.d.ts +3 -0
  614. package/buildLibs/utils/Web/ClXeditable.js +593 -0
  615. package/buildLibs/utils/Web/ClXeditable.js.map +1 -0
  616. package/buildLibs/utils/Web/__directive__/Highlight.cjs +4 -0
  617. package/buildLibs/utils/Web/__directive__/Highlight.cjs.map +1 -0
  618. package/buildLibs/utils/Web/__directive__/Highlight.d.ts +2 -0
  619. package/buildLibs/utils/Web/__directive__/Highlight.js +3625 -0
  620. package/buildLibs/utils/Web/__directive__/Highlight.js.map +1 -0
  621. package/buildLibs/utils/Web/__directive__/Tooltip.cjs +2 -0
  622. package/buildLibs/utils/Web/__directive__/Tooltip.cjs.map +1 -0
  623. package/buildLibs/utils/Web/__directive__/Tooltip.d.ts +2 -0
  624. package/buildLibs/utils/Web/__directive__/Tooltip.js +356 -0
  625. package/buildLibs/utils/Web/__directive__/Tooltip.js.map +1 -0
  626. package/buildLibs/utils/Web/__directive__/Waves.cjs +9 -0
  627. package/buildLibs/utils/Web/__directive__/Waves.cjs.map +1 -0
  628. package/buildLibs/utils/Web/__directive__/Waves.d.ts +2 -0
  629. package/buildLibs/utils/Web/__directive__/Waves.js +256 -0
  630. package/buildLibs/utils/Web/__directive__/Waves.js.map +1 -0
  631. package/buildLibs/utils/Web/__provide__/Alert.cjs +2 -0
  632. package/buildLibs/utils/Web/__provide__/Alert.cjs.map +1 -0
  633. package/buildLibs/utils/Web/__provide__/Alert.d.ts +2 -0
  634. package/buildLibs/utils/Web/__provide__/Alert.js +236 -0
  635. package/buildLibs/utils/Web/__provide__/Alert.js.map +1 -0
  636. package/buildLibs/utils/Web/__provide__/Notify.cjs +2 -0
  637. package/buildLibs/utils/Web/__provide__/Notify.cjs.map +1 -0
  638. package/buildLibs/utils/Web/__provide__/Notify.d.ts +2 -0
  639. package/buildLibs/utils/Web/__provide__/Notify.js +235 -0
  640. package/buildLibs/utils/Web/__provide__/Notify.js.map +1 -0
  641. package/buildLibs/utils/Web/__provide__/Preview.cjs +2 -0
  642. package/buildLibs/utils/Web/__provide__/Preview.cjs.map +1 -0
  643. package/buildLibs/utils/Web/__provide__/Preview.d.ts +2 -0
  644. package/buildLibs/utils/Web/__provide__/Preview.js +26 -0
  645. package/buildLibs/utils/Web/__provide__/Preview.js.map +1 -0
  646. package/buildLibs/web/index.cjs +97 -0
  647. package/buildLibs/web/index.cjs.map +1 -0
  648. package/buildLibs/web/index.d.ts +81 -0
  649. package/buildLibs/web/index.js +164 -0
  650. package/buildLibs/web/index.js.map +1 -0
  651. package/docs/components/Element/AnchorNav.md +19 -0
  652. package/docs/components/Element/Badge.md +24 -0
  653. package/docs/components/Element/Button.md +45 -0
  654. package/docs/components/Element/Checkbox.md +48 -0
  655. package/docs/components/Element/Clipboard.md +34 -0
  656. package/docs/components/Element/Countup.md +12 -0
  657. package/docs/components/Element/Cropper.md +46 -0
  658. package/docs/components/Element/Darg.md +30 -0
  659. package/docs/components/Element/Ellipsis.md +12 -0
  660. package/docs/components/Element/Form.md +25 -0
  661. package/docs/components/Element/FormGroup.md +29 -0
  662. package/docs/components/Element/IconFont.md +12 -0
  663. package/docs/components/Element/Image.md +18 -0
  664. package/docs/components/Element/Input.md +65 -0
  665. package/docs/components/Element/InputCaptcha.md +27 -0
  666. package/docs/components/Element/InputNumber.md +51 -0
  667. package/docs/components/Element/InputSearch.md +43 -0
  668. package/docs/components/Element/InputTextarea.md +52 -0
  669. package/docs/components/Element/Link.md +41 -0
  670. package/docs/components/Element/Load.md +20 -0
  671. package/docs/components/Element/LoadScreen.md +19 -0
  672. package/docs/components/Element/Modal.md +51 -0
  673. package/docs/components/Element/Progress.md +28 -0
  674. package/docs/components/Element/Radio.md +41 -0
  675. package/docs/components/Element/Slider.md +33 -0
  676. package/docs/components/Element/Switchery.md +42 -0
  677. package/docs/components/Element/Tags.md +39 -0
  678. package/docs/components/Element/Waterfall.md +36 -0
  679. package/docs/components/Mobile/Cell.md +49 -0
  680. package/docs/components/Mobile/PullToRefresh.md +52 -0
  681. package/docs/components/Web/Breadcrumb.md +26 -0
  682. package/docs/components/Web/Calendar.md +34 -0
  683. package/docs/components/Web/Card.md +22 -0
  684. package/docs/components/Web/CardLegend.md +20 -0
  685. package/docs/components/Web/Collapse.md +26 -0
  686. package/docs/components/Web/Colorpicker.md +41 -0
  687. package/docs/components/Web/CropperPreview.md +43 -0
  688. package/docs/components/Web/Datetime.md +52 -0
  689. package/docs/components/Web/Dropdownmenu.md +33 -0
  690. package/docs/components/Web/Dropdownpopup.md +47 -0
  691. package/docs/components/Web/Echarts.md +43 -0
  692. package/docs/components/Web/Fileupload.md +60 -0
  693. package/docs/components/Web/InputTag.md +56 -0
  694. package/docs/components/Web/Paginate.md +30 -0
  695. package/docs/components/Web/Portlet.md +27 -0
  696. package/docs/components/Web/Preview.md +19 -0
  697. package/docs/components/Web/Previewexample.md +39 -0
  698. package/docs/components/Web/ScrollXFence.md +38 -0
  699. package/docs/components/Web/Select.md +56 -0
  700. package/docs/components/Web/SelectCascade.md +37 -0
  701. package/docs/components/Web/SelectTag.md +43 -0
  702. package/docs/components/Web/SelectTree.md +44 -0
  703. package/docs/components/Web/Selectmove.md +58 -0
  704. package/docs/components/Web/Sidemenu.md +25 -0
  705. package/docs/components/Web/Table.md +78 -0
  706. package/docs/components/Web/Tabs.md +47 -0
  707. package/docs/components/Web/Tree.md +44 -0
  708. package/docs/components/Web/Weekhour.md +29 -0
  709. package/docs/components/Web/Xeditable.md +52 -0
  710. package/docs/tools/CommonAxios.md +17 -0
  711. package/docs/tools/CommonBase.md +79 -0
  712. package/docs/tools/CommonDay.md +18 -0
  713. package/docs/tools/CommonEchart.md +19 -0
  714. package/docs/tools/CommonElement.md +42 -0
  715. package/docs/tools/CommonElementEvent.md +30 -0
  716. package/docs/tools/CommonI18n.md +18 -0
  717. package/docs/tools/CommonPromise.md +16 -0
  718. package/docs/tools/CommonTools.md +43 -0
  719. package/docs/tools/CommonTooltip.md +38 -0
  720. package/package.json +123 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/libs/Common/base.ts","../../src/libs/Common/promise.ts","../../src/libs/Common/Element/index.ts","../../src/libs/Element/Input/Index.vue","../../src/libs/Element/Load/RotaryLine.vue","../../src/libs/Element/Load/CircleBubble.vue","../../src/libs/Element/Load/CircleNotch.vue","../../src/libs/Element/Load/BallColor4.vue","../../src/libs/Element/Load/Index.vue","../../src/libs/Web/Waves/waves.js","../../src/libs/Web/Waves/index.ts","../../src/libs/Element/Button/Index.vue","../../src/libs/Element/Link/Index.vue","../../src/libs/Element/IconFont/Index.vue","../../src/libs/Element/Modal/BaseTransition.vue","../../src/libs/Element/Modal/Index.vue","../../src/libs/Element/Load/FullCenter.vue","../../src/libs/Element/Load/Ing.vue","../../src/libs/Element/Load/Warp.vue","../../src/libs/Common/tooltip.ts","../../src/libs/Web/Tooltip/index.ts","../../src/libs/Element/Radio/Index.vue","../../src/libs/Element/Radio/One.vue","../../src/libs/Element/CheckBox/Index.vue","../../src/libs/Element/CheckBox/One.vue","../../src/libs/Element/Badge/Index.vue","../../src/libs/Element/CountUp/Index.vue","../../src/libs/Element/Cropper/Base.vue","../../src/libs/Element/Cropper/Index.vue","../../src/libs/Element/Darg/Sortable.js","../../src/libs/Element/Darg/Index.vue","../../src/libs/Element/Ellipsis/Index.vue","../../src/libs/Common/Tools/delayFun.ts","../../src/libs/Common/Tools/animateEasing.ts","../../src/libs/Element/Form/Index.vue","../../src/libs/Common/day.ts","../../src/libs/Common/i18n/zh_CN.ts","../../src/libs/Common/i18n/en.ts","../../src/libs/Common/i18n/index.ts","../../src/libs/Use/language.ts","../../src/libs/Element/Form/Validate.vue","../../src/libs/Element/LazyImage/lazy.ts","../../src/libs/Element/LazyImage/use.ts","../../src/libs/Element/Image/Index.vue","../../src/libs/Element/InputCaptcha/Index.vue","../../src/libs/Common/Element/Event/drag.ts","../../src/libs/Common/Element/Event/resize.ts","../../src/libs/Element/InputNumber/Button.vue","../../src/libs/Element/InputNumber/Index.vue","../../src/libs/Element/InputSearch/Index.vue","../../src/libs/Element/Transition/SlideUpDown.vue","../../src/libs/Common/axios.ts","../../src/libs/Element/Switchery/Index.vue","../../src/libs/Element/Clipboard/index.ts","../../src/libs/Element/LanguagePack/index.ts","../../src/libs/Mobile/PullToRefresh/Index.vue","../../src/libs/Mobile/Cell/Index.vue","../../src/libs/Element/LoadScreen/Index.vue","../../src/libs/Element/Progress/Index.vue","../../src/libs/Element/Slider/Bar.vue","../../src/libs/Element/Slider/Button.vue","../../src/libs/Element/Slider/Dot.vue","../../src/libs/Element/Slider/Index.vue","../../src/libs/Element/FormGroup/Index.vue","../../src/libs/Element/AnchorNav/Index.vue","../../src/libs/Element/InputTextarea/Index.vue","../../src/libs/Element/Tags/Index.vue","../../src/libs/Element/Waterfall/Index.vue","../../src/libs/Element/Waterfall/Image.vue","../../src/libs/Element/Clipboard/Index.vue","../../src/libs/Element/LoadScreen/index.ts","../../src/libs/Element/componentsInstalls.ts","../../src/libs/Mobile/componentsInstalls.ts","../../src/libs/Mobile/installs.ts"],"sourcesContent":["// Format handler registry — registered by day.ts to avoid circular import\nconst _formatHandlers: Record<string, (value: any, format: string) => any> = {}\n\nexport function registerFormatHandler(type: string, handler: (value: any, format: string) => any) {\n _formatHandlers[type] = handler\n}\n\nclass CommonBase {\n // constructor() {}\n /**\n * 获取 typeof 类型\n * @param value\n * @returns {string}\n */\n static getTypeof(value: any): string {\n return typeof value;\n }\n private static _toStringCall(value: any): string {\n return Object.prototype.toString.call(value);\n }\n\n static isUndefined(value: any): boolean {\n return this.getTypeof(value) === \"undefined\" || value === null;\n }\n\n static isBoolean(value: any): boolean {\n return this.getTypeof(value) === \"boolean\";\n }\n\n static isString(value: any): boolean {\n return this.getTypeof(value) === \"string\";\n }\n\n static isFunction(value: any): boolean {\n return this.getTypeof(value) === \"function\" && this._toStringCall(value) === \"[object Function]\";\n }\n\n static isObject(value: any): boolean {\n return !this.isUndefined(value) && this.getTypeof(value) === \"object\";\n }\n static isBlob(value: any): boolean {\n return this._toStringCall(value) === \"[object Blob]\";\n }\n static isFile(value: any): boolean {\n return this._toStringCall(value) === \"[object File]\";\n }\n\n static isNumber(value: any): boolean {\n let b = false;\n if (this.isString(value)) {\n return (/^(-)?(([1-9]\\d*)|0)(\\.\\d+)?$/).test(value);\n } else if (this.getTypeof(value) === \"number\") {\n b = true;\n }\n return b;\n }\n\n static isInt(value: number): boolean {\n let check = true;\n if (!this.isEmpty(value)) {\n const reg: any = /^[1-9]\\d*$|^0$/;\n check = reg.test(value.toString());\n }\n return check;\n }\n static isHtml(value: string): boolean {\n return (/^<([a-z][a-z0-9]*)\\b[^>]*>(.*?)<\\/\\1>$/i).test(value);\n }\n static isJson(value: any): boolean {\n let check = false;\n if (this.isString(value)) {\n try {\n const obj = JSON.parse(value);\n if (this.isObject(obj)) {\n check = true;\n }\n } catch (e) { }\n } else if (this.isObject(value)) {\n check = true;\n }\n return check;\n }\n\n static isWindow(obj: any): boolean {\n return !this.isUndefined(obj) && obj === obj.window;\n }\n\n private static _isEmptyObject(value: any): boolean {\n return this.isUndefined(value) ? true : Object.keys(value).length === 0;\n }\n\n static isArray(value: any): boolean {\n return Array.isArray(value) && this._toStringCall(value) === \"[object Array]\";\n }\n static isLocationLngLat(value: any) {\n let b = false;\n if (!this.isEmpty(value)) {\n let arr: any;\n if (this.isString(value)) {\n arr = value.split(\",\");\n } else if (this.isArray(value)) {\n arr = value;\n } else {\n arr = [];\n }\n if (arr.length === 2) {\n const lng = arr[0];\n const lat = arr[1];\n const lngRegex = /^-?(180(\\.0+)?|1[0-7]?\\d?(\\.\\d+)?|[1-9]?\\d?(\\.\\d+)?)$/;\n const latRegex = /^-?(90(\\.0+)?|[1-8]?\\d?(\\.\\d+)?)$/;\n b = lngRegex.test(lng) && latRegex.test(lat);\n }\n }\n return b;\n }\n\n static isEmpty(value: any, def?: any): boolean {\n let b = this.isUndefined(value);\n if (!b) {\n const objType: string = this.getTypeof(value);\n if (this.isString(value)) {\n b = this.trim(value).length === 0;\n } else if (this.isArray(value)) {\n b = value.length === 0;\n } else if (objType === \"object\") {\n if (this.isFile(value)) {\n b = false;\n } else {\n b = this._isEmptyObject(value);\n }\n }\n if (!b && !this.isUndefined(def)) {\n let strValue = value;\n if (this.isNumber(value)) {\n strValue = strValue.toString();\n }\n let strDef = def;\n if (this.isNumber(def)) {\n strDef = strDef.toString();\n }\n b = this.isEqual(strValue, strDef);\n }\n }\n return b;\n }\n\n static isEqual(value1: any, value2: any): boolean {\n return Object.is(value1, value2);\n }\n\n static isEqualArr(arr1: any[], arr2: any[], isInOrder = false): boolean {\n let b = false;\n const isEmpty1 = this.isEmpty(arr1);\n const isEmpty2 = this.isEmpty(arr2);\n if (isEmpty1 && isEmpty2) {\n b = true;\n } else {\n if (arr1.length === arr2.length) {\n b = true;\n if (isInOrder) {\n for (let i = 0; i < arr1.length; i++) {\n if (arr1[i].toString() !== arr2[i].toString()) {\n b = false;\n break;\n }\n }\n } else {\n const json2 = this.getArrConvertJson(arr2);\n for (let i = 0; i < arr1.length; i++) {\n if (!this.isExistJsonKey(json2, arr1[i].toString())) {\n b = false;\n break;\n }\n }\n }\n } else {\n b = false;\n }\n }\n return b;\n }\n\n static isEqualList(list1: any[], list2: any[], key = [\"id\"]): boolean {\n let b = false;\n const isEmpty1 = this.isEmpty(list1);\n const isEmpty2 = this.isEmpty(list2);\n if (isEmpty1 && isEmpty2) {\n b = true;\n } else {\n if (list1.length === list2.length) {\n const arr1: string[] = list1.map(info1 => {\n return key.map((k) => info1[k].toString()).join(\",\");\n });\n b = true;\n list2.some((info2: any) => {\n const k2 = key.map((k) => info2[k].toString()).join(\",\");\n if (!this.isExistValue(arr1, k2)) {\n b = false;\n return true;\n }\n });\n } else {\n b = false;\n }\n }\n return b;\n }\n\n /**\n * 数组1是否包含数组2\n * @param arr1\n * @param arr2\n */\n static isContainArr(arr1: any[], arr2: any[]): boolean {\n let b = false;\n const isEmpty1 = this.isEmpty(arr1);\n const isEmpty2 = this.isEmpty(arr2);\n if (isEmpty1 && isEmpty2) {\n b = true;\n } else {\n if (arr1.length >= arr2.length) {\n b = true;\n arr2.some((v: string) => {\n if (!this.isExistValue(arr1, v)) {\n b = false;\n return true;\n }\n });\n } else {\n b = false;\n }\n }\n return b;\n }\n\n /**\n * 是否存在 大量循环时误用(慢)\n * @param value\n * @param key\n * @returns\n */\n static isExistValue(value: any, key: string): boolean {\n if (this.isUndefined(value)) {\n return false;\n }\n if (value.includes) {\n return value.includes(key);\n }\n return value.indexOf(key) > -1;\n }\n\n /**\n * 是否存在(专用json)\n * @param json\n * @param key\n * @returns\n */\n static isExistJsonKey(json: any, key: string): boolean {\n if (this.isUndefined(json)) {\n return false;\n }\n return Object.prototype.hasOwnProperty.call(json, key);\n }\n /**\n * 操作系统类型 仅浏览器端使用\n * @returns \n */\n static osType() {\n const ua = navigator.userAgent,\n //isWindowsPhone = /(?:Windows Phone)/.test(ua),\n //isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone,\n isAndroid = /(?:Android)/.test(ua),\n isFireFox = /(?:Firefox)/.test(ua),\n //isChrome = /(?:Chrome|CriOS)/.test(ua),\n isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid && !/(?:Mobile)/.test(ua)) || (isFireFox && /(?:Tablet)/.test(ua)),\n isIOS = /(?:iPhone)/.test(ua) && !isTablet,\n isPc = !isIOS && !isAndroid; //&& !isSymbian;\n return {\n isTablet: isTablet,\n isIOS: isIOS,\n isAndroid: isAndroid,\n isMobile: isIOS || isAndroid,\n isPc: isPc,\n };\n }\n /**\n * 移除空格\n * @param value\n * @returns {string}\n */\n static trim(value: any): any {\n if (this.isUndefined(value)) return value;\n const newValue: string = value.toString();\n if (newValue.trim) {\n return newValue.trim();\n }\n return newValue.replace(/^\\s+|\\s+$/gm, \"\");\n }\n\n static split(str: string, sign = \",\"): string[] {\n let newValue: string[];\n if (this.isEmpty(str)) {\n newValue = [];\n } else {\n let newStr = str;\n if (sign === \",\") {\n newStr = newStr.replace(/,/g, \",\");\n }\n newValue = newStr.toString().split(sign);\n }\n return newValue;\n }\n static kebabCase(value: string): string {\n const result = value.replace(/([A-Z])/g, \" $1\").trim();\n return result.split(\" \").join(\"-\").toLowerCase();\n }\n /**\n * 获取字节长度\n * @param {string} str\n * @returns {number}\n */\n static getByteLen(str: string): number {\n let len = 0;\n for (let i = 0; i < str.length; i += 1) {\n const si = str.charAt(i);\n if (si.match(/[^\\x00-\\xff]/ig) !== null) { // eslint-disable-line\n len += 3;\n } else {\n len += 1;\n }\n }\n return len;\n }\n\n /**\n * 复制json\n * @param json {Object}\n * @returns\n */\n static getJsonClone(json: any, isDeep = false, opt: any = {}): any {\n if (isDeep) {\n return this._getJsonCloneDeep(json, opt);\n } else {\n const exclude = this.isUndefined(opt.exclude) ? [] : opt.exclude;\n if (exclude.length === 0) {\n return this.getJsonMerge(json);\n } else {\n const clone: any = {};\n Object.keys(json).forEach((key: any) => {\n if (!this.isExistValue(exclude, key)) {\n clone[key] = json[key];\n }\n });\n return clone;\n }\n }\n }\n\n /**\n * 复制json 深拷贝\n * @param json\n * @returns\n */\n private static _getJsonCloneDeep(json: any, opt: any = {}): any {\n const newJson: any = this.isArray(json) ? [] : {};\n const exclude = this.isUndefined(opt.exclude) ? [] : opt.exclude;\n Object.keys(json).forEach((key: any) => {\n const isCheckExclude = exclude.length === 0 || !this.isExistValue(exclude, key);\n if (isCheckExclude) {\n const value = json[key];\n if (this.isUndefined(value) || !this.isObject(value)) {\n if (this.isArray(value)) {\n newJson[key] = this.getListClone(value, true);\n } else {\n newJson[key] = value;\n }\n } else {\n newJson[key] = this._getJsonCloneDeep(value);\n }\n }\n });\n return newJson;\n }\n\n static getJsonCloneByKeyArr(sourceJson: any, keyArr: string[]): any {\n const tempFormValue: any = {};\n keyArr.forEach(k => {\n const v = sourceJson[k];\n tempFormValue[k] = this.isUndefined(v)\n ? \"\"\n : (this.isObject(v) ? this.getJsonClone(v) : v);\n });\n return tempFormValue;\n }\n\n static getJsonCloneByKeyJson(sourceJson: any, keyJson: any): any {\n const keyArr: string[] = Object.keys(keyJson);\n return this.getJsonCloneByKeyArr(sourceJson, keyArr);\n }\n\n static getJsonCloneByRemoveArr(sourceJson: any, removeArr: string[]): any {\n const temp: any = {};\n if (removeArr.length === 0) {\n return sourceJson;\n }\n Object.keys(sourceJson).forEach((k) => {\n if (!this.isExistValue(removeArr, k)) {\n temp[k] = sourceJson[k];\n }\n });\n return temp;\n }\n\n static getJsonMerge(...target: any): any {\n return Object.assign({}, ...target);\n }\n static getJsonReversal(json: any): any {\n const newJson: any = {};\n Object.keys(json).forEach((k: string) => {\n newJson[json[k]] = k;\n });\n return newJson;\n }\n\n\n static getJsonMergeDeep(...target: any): any {\n const newJson = {};\n const len = target.length;\n for (let i = 0; i < len; i++) {\n this._mergeJsonDeep(newJson, target[i] || {});\n }\n return newJson;\n }\n\n private static _mergeJsonDeep(json1: any, json2: any) {\n Object.keys(json2).forEach((k: any) => {\n const value = json2[k];\n if (this.isUndefined(value)) {\n json1[k] = value;\n } else {\n if (this.isArray(value)) {\n json1[k] = this.getListClone(value, true);\n } else if (this.isObject(value) && this.isExistJsonKey(json1, k)) {\n this._mergeJsonDeep(json1[k], value);\n } else {\n json1[k] = value;\n }\n }\n });\n }\n\n static getJsonMap(json: any, map: any, isDef = false): any {\n const newJson: any = {};\n if (!this.isEmpty(json) && !this._isEmptyObject(map)) {\n for (const [k, v] of Object.entries(map)) {\n let strValue = (v as string).toString();\n let valueType = \"\";\n if (strValue.indexOf(\"|\") > -1) {\n const arrValue = strValue.split(\"|\");\n strValue = arrValue[0];\n valueType = arrValue[1];\n }\n if (strValue.indexOf(\".\") > -1) {\n const arrTemp: string[] = this.split(strValue, \".\");\n let tempValue: any = this.getJsonClone(json, true);\n arrTemp.forEach((vi: string, i: number) => {\n const tt = tempValue[vi];\n const isE = this.isEmpty(tt);\n if (i === arrTemp.length - 1) {\n if (this.isUndefined(tt)) {\n tempValue = isDef ? \"\" : tt;\n } else {\n if (isE) {\n tempValue = \"\";\n } else {\n if (valueType && valueType.length > 0) {\n tempValue = this.isEmpty(tt) ? \"\" : this.getValueByFormat(tt, valueType);\n } else {\n tempValue = tt;\n }\n }\n }\n } else {\n tempValue = isE ? {} : tt;\n }\n });\n newJson[k] = this.isString(tempValue) ? this.trim(tempValue) : tempValue;\n } else {\n if (this.isExistJsonKey(json, strValue)) {\n const value: any = json[strValue];\n let tempValue;\n if (this.isUndefined(value)) {\n tempValue = isDef ? \"\" : value;\n } else {\n if (valueType && valueType.length > 0) {\n tempValue = this.isEmpty(value) ? \"\" : this.getValueByFormat(value, valueType);\n } else {\n tempValue = value;\n }\n }\n newJson[k] = this.isString(tempValue) ? this.trim(tempValue) : tempValue;\n } else {\n if (isDef) {\n newJson[k] = \"\";\n }\n }\n }\n }\n }\n return newJson;\n }\n\n static getJsonByList(list: any, key?: string, isFormat = false): any {\n const json: any = {};\n if (!this.isEmpty(list)) {\n const newKey = key && !this.isEmpty(key) ? key : \"id\";\n list.forEach((info: any) => {\n let k = \"\";\n if (isFormat) {\n if (key) {\n k = this.convertStringFormat(key, info);\n }\n } else {\n k = this.isExistJsonKey(info, newKey) ? info[newKey].toString() : \"\";\n }\n if (k.length > 0) {\n json[k] = this.getJsonClone(info);\n }\n });\n }\n return json;\n }\n static getJsonByArr(arr: string[]): any {\n const json: any = {};\n if (!this.isEmpty(arr)) {\n arr.forEach((k: string) => {\n json[k] = k;\n });\n }\n return json;\n }\n static getGroupByList(list: any, key: string): any {\n const json: any = {};\n if (!this.isEmpty(list)) {\n list.forEach((info: any) => {\n const k = this.isExistJsonKey(info, key) ? info[key].toString() : \"\";\n if (k.length > 0) {\n if (!this.isExistJsonKey(json, k)) {\n json[k] = [];\n }\n json[k].push(this.getJsonClone(info));\n }\n });\n }\n return json;\n }\n\n static getJsonByBlob(blob: any): any {\n return new Promise((resolve, reject) => {\n const reader: any = new FileReader();\n reader.onload = () => {\n try {\n const json = JSON.parse(reader.result);\n resolve(json);\n } catch (error) {\n reject(error);\n }\n };\n reader.onerror = reject;\n reader.readAsText(blob);\n });\n }\n static getBase64ByFile(files: any): any {\n return new Promise((resolve) => {\n if (files.length > 0) {\n const file = files[0];\n if (file instanceof File) {\n const reader = new FileReader();\n reader.onload = (e: any) => {\n resolve(e.target.result);\n };\n reader.readAsDataURL(file);\n } else {\n resolve(\"\");\n }\n } else {\n resolve(\"\");\n }\n });\n }\n /**\n * 获取list 层级结构\n * @param {any[]} list\n * @returns {any}\n */\n static getTreeList(list: any[]): any {\n let tree: any[] = [];\n const topId: string[] = [];\n // const lastChildId: string[] = [];\n const json: any = {};\n const group: any = {};\n if (!this.isEmpty(list)) {\n list.forEach((info: any) => {\n const id = info.id.toString();\n const pId = info.parentId.toString();\n if (pId === \"0\") {\n topId.push(id);\n }\n json[id] = info;\n\n if (!this.isExistJsonKey(group, pId)) {\n group[pId] = [];\n }\n group[pId].push(info);\n });\n topId.forEach((tId: string) => {\n tree = tree.concat(this._recursionChild(tId, group, json));\n });\n }\n return { tree, group, json, list };\n }\n\n static getTreeLastParent(id: string, json: any, isShowSelf = true): any {\n let list = [];\n if (this.isExistJsonKey(json, id)) {\n list = this._recursionParent(id, json);\n if (!isShowSelf) {\n list.splice(0, 1);\n }\n list.reverse();\n }\n return list;\n }\n\n private static _recursionChild(id: string, group: any, json: any): any[] {\n const list: any[] = [];\n const pInfo: any = this.getJsonClone(json[id]);\n if (this.isExistJsonKey(group, id)) {\n pInfo.list = [];\n const data: any[] = group[id];\n data.forEach((info: any) => {\n const cId = info.id.toString();\n pInfo.list = pInfo.list.concat(this._recursionChild(cId, group, json));\n });\n }\n list.push(pInfo);\n return list;\n }\n\n private static _recursionParent(id: string, json: any): any[] {\n let list: any[] = [];\n if (this.isExistJsonKey(json, id)) {\n const info = json[id];\n const pId = info.parentId.toString();\n list.push(info);\n list = list.concat(this._recursionParent(pId, json));\n }\n return list;\n }\n /**\n * 获取list tree转list\n * @param tree \n * @param opt \n * @returns \n */\n static getListByTree(tree: any, opt: any = {}): any {\n const idKey: string = this.isEmpty(opt.idKey) ? \"id\" : opt.idKey;\n const cKey: string = this.isEmpty(opt.cKey) ? \"list\" : opt.cKey;\n const pKey: string = this.isEmpty(opt.pKey) ? \"parentId\" : opt.pKey;\n const topPV: string = this.isEmpty(opt.topPV) ? \"0\" : opt.topPV;\n const list = this._recursionListByTree(tree, topPV, { idKey, cKey, pKey });\n return list;\n }\n private static _recursionListByTree(tree: any[], pId: string, opt: any): any[] {\n const list: any[] = [];\n tree.forEach((info: any) => {\n const temp = this.getJsonClone(info, false, { exclude: [opt.cKey] });\n temp[opt.pKey] = pId;\n const isUndefinedCKey = this.isUndefined(info[opt.cKey]);\n temp.isLastLevel = isUndefinedCKey;\n list.push(temp);\n if (!isUndefinedCKey) {\n const tempList = this._recursionListByTree(info[opt.cKey], temp[opt.idKey], opt);\n list.push(...tempList);\n }\n });\n return list;\n }\n /**\n * 复制list\n * @param list\n */\n static getListClone(list: any, isDeep = false): any {\n if (this.isEmpty(list)) {\n return [];\n }\n return list.map((info: any) => {\n if (this.isObject(info)) {\n return this.getJsonClone(info, isDeep);\n } else {\n return info;\n }\n });\n }\n\n /**\n * list 合并\n * @param newList 新\n * @param oldList 旧\n * @param key id\n * @returns list\n */\n static getListMergeDeep(newList: any[], oldList: any[], key = \"id\"): any {\n const list: any = [];\n if (newList.length > 0) {\n const oldJson = this.getJsonByList(oldList, key);\n newList.forEach((info: any) => {\n let initJson = {};\n let idKey = info[key];\n if (!this.isEmpty(idKey)) {\n idKey = idKey.toString();\n initJson = this.isExistJsonKey(oldJson, idKey) ? oldJson[idKey] : {};\n }\n const newInfo = this.getJsonMergeDeep(initJson, info);\n list.push(newInfo);\n });\n }\n return list;\n }\n\n static getRecursionParentList(json: any, pId: [string, number], pKey = \"parentId\"): any {\n let result: any = [];\n const strPId = pId.toString();\n if (strPId !== \"0\" && this.isExistJsonKey(json, strPId)) {\n const tempInfo = json[strPId];\n result.push(tempInfo);\n const newStrPid = tempInfo[pKey].toString();\n const tempResult: any = this.getRecursionParentList(json, newStrPid);\n if (!this.isEmpty(tempResult)) {\n result = result.concat(tempResult);\n }\n }\n return result;\n }\n static getListExistValue(list: any, value: string, key = \"id\"): any {\n let newInfo: any;\n let inx = -1;\n if (!this.isEmpty(list)) {\n list.forEach((info: any, i: number) => {\n if (this.isExistJsonKey(info, key)) {\n if (info[key].toString() === value.toString()) {\n newInfo = this.getJsonClone(info);\n inx = i;\n }\n }\n });\n }\n return inx === -1 ? null : { info: newInfo, inx };\n }\n /**\n * 复制数组\n * @param arr\n * @returns {Array}\n */\n static getArrClone(arr: any): any {\n return this.isEmpty(arr) ? [] : arr.map((a: any) => a);\n }\n\n static getArrByList(list: any[], key = \"id\") {\n const arr: any = [];\n if (!this.isEmpty(list)) {\n list.forEach((info: any) => {\n if (this.isExistJsonKey(info, key)) {\n arr.push(info[key]);\n }\n });\n }\n return arr;\n }\n\n\n static getArrRemoveById(arr: any, ids: any): string[] {\n if (this.isEmpty(ids)) {\n return arr;\n }\n const newArr: string[] = [];\n const arrParam = this.isArray(ids) ? ids : this.split(ids.toString());\n const jsonParam = this.getArrConvertJson(arrParam);\n arr.forEach((id: string) => {\n const isExist = this.isExistJsonKey(jsonParam, id.toString());\n if (!isExist) {\n newArr.push(id);\n }\n });\n return newArr;\n }\n\n static getArrByMinMax(min = 1, max: number): number[] {\n const arr: number[] = [];\n for (let i = min; i <= max; i += 1) {\n arr.push(i);\n }\n return arr;\n }\n\n /**\n * 数组去重\n * @param arr \n * @returns \n */\n static getArrUnique(arr: any): any {\n const result = [];\n if (arr.length > 0) {\n const hash: any = {};\n let elem = null;\n for (let i = 0; i < arr.length; i += 1) {\n elem = arr[i];\n if (elem !== null && !hash[elem]) {\n result.push(elem);\n hash[elem] = true;\n }\n }\n }\n return result;\n }\n\n static getArrConvertJson(arr: any[]): any {\n const tempFormValue: any = {};\n arr.forEach(a => {\n tempFormValue[a.toString()] = true;\n });\n return tempFormValue;\n }\n\n // //数组排序\n static getArrAsc(arr: any, type: string): any[] {\n let funAsc;\n switch (type) {\n case \"date\":\n funAsc = (a: any, b: any) => { return Date.parse(a) - Date.parse(b); };\n break;\n case \"number\":\n funAsc = (a: number, b: number) => { return a - b; };\n break;\n default: {\n funAsc = (a: string, b: string) => { return this._arrSortString(a.toString(), b.toString()); };\n }\n }\n return arr.sort(funAsc);\n }\n\n static getArrDesc(arr: any, type: string): any[] {\n let funDesc;\n switch (type) {\n case \"date\":\n funDesc = (a: any, b: any) => { return Date.parse(b) - Date.parse(a); };\n break;\n case \"number\":\n funDesc = (a: number, b: number) => { return b - a; };\n break;\n default: {\n funDesc = (a: string, b: string) => { return this._arrSortString(b.toString(), a.toString()); };\n }\n }\n return arr.sort(funDesc);\n }\n\n private static _arrSortString(s1: string, s2: string): number {\n let res = 0;\n for (let i = 0; ; i++) {\n if (!s1[i] || !s2[i]) {\n res = s1.length - s2.length;\n break;\n }\n const char1 = s1[i];\n const char1Type = this._getChartType(char1);\n const char2 = s2[i];\n const char2Type = this._getChartType(char2);\n // 类型相同的逐个比较字符\n if (char1Type[0] === char2Type[0]) {\n if (char1 === char2) {\n continue;\n } else {\n if (char1Type[0] === \"zh\") {\n res = char1.localeCompare(char2);\n } else if (char1Type[0] === \"en\") {\n res = char1.charCodeAt(0) - char2.charCodeAt(0);\n } else {\n res = (char1 as any) - (char2 as any);\n }\n break;\n }\n } else {\n // 类型不同的,直接用返回的数字相减\n res = char1Type[1] - char2Type[1];\n break;\n }\n }\n return res;\n }\n\n private static _getChartType(char: string): [string, number] {\n // 数字,大写字母,小写字母,中文,其他\n if (/^[0-9]$/.test(char)) {\n return [\"number\", 100];\n }\n if (/^[a-zA-Z]$/.test(char)) {\n return [\"en\", 200];\n }\n if (/^[\\u4e00-\\u9fa5]$/.test(char)) {\n return [\"zh\", 300];\n }\n return [\"others\", 999];\n }\n\n static getZeroCount(len: number): string {\n if (len <= 0) { return \"\"; }\n const zero = [];\n for (let i = 0; i < len; i += 1) {\n zero.push(\"0\");\n }\n return zero.join(\"\");\n }\n\n /** 补全零 */\n static getFillZero(value: any, len = 2, around = \"l\"): string {\n const zero = this.getZeroCount(len);\n const strValue = this.isEmpty(value) ? \"\" : value.toString();\n let temp = \"\";\n let result = \"\";\n if (around === \"l\") {\n temp = zero + strValue;\n result = temp.substring(temp.length - len);\n } else {\n temp = strValue.toString() + zero;\n result = temp.substring(0, len);\n }\n return result;\n }\n\n /**\n * 获取随机数\n * @param {number} len\n * @returns {any}\n */\n static getRandom(len = 3): string {\n const lens = len > 0 ? len : 1;\n let r = Math.random();\n r = Math.ceil(r * (10 ** (lens - 1)));\n return this.getFillZero(r, len, \"r\");\n }\n\n /**\n * 指定范围获取随机数\n * @param {number} min\n * @param {number} max\n * @returns {number}\n */\n static getRandomRange(min: number, max: number, isRound = true): number {\n const range = max - min;\n const rand = Math.random();\n return min + (isRound ? Math.round(range * rand) : (range * rand));\n }\n /**\n * 验证码\n */\n static getCaptcha(len = 6) {\n const digits = \"0123456789\";\n let captcha = \"\";\n for (let i = 0; i < len; i++) {\n captcha += digits.charAt(Math.floor(Math.random() * digits.length));\n }\n return captcha;\n }\n /**\n * 字符串格式化(int float2)\n * @param value\n * @param type num int float float2 float3 date dateTime time string intArray\n */\n static getValueByFormat(value: any, type: string, extInfo: any = {}): string {\n let newValue: any;\n switch (type) {\n case \"num\":\n case \"int\":\n case \"float\":\n case \"float2\":\n case \"float3\":\n case \"number\": {\n if (this.isNumber(value)) {\n if (this.isEmpty(value)) {\n const isEmptyDefault = this.isBoolean(extInfo.isEmptyDefault) ? extInfo.isEmptyDefault : true;\n newValue = isEmptyDefault ? \"0\" : value;\n } else {\n let useValue = value.toString();\n useValue = this.isExistValue(useValue, \",\") ? this.removeReplace(useValue) : useValue;\n if (type === \"number\") {\n newValue = Number(useValue);\n } else {\n let fixedNum = 0;\n if (type === \"num\") {\n fixedNum = this.isExistValue(useValue, \".\") ? 2 : 0;\n } else if (type === \"int\") {\n fixedNum = 0;\n } else if (type === \"float\") {\n if (this.isNumber(extInfo.decimalNum)) {\n fixedNum = parseInt(extInfo.decimalNum);\n }\n } else if (type === \"float2\") {\n fixedNum = 2;\n } else if (type === \"float3\") {\n fixedNum = 3;\n }\n const isRounding = this.isBoolean(extInfo.isRounding) ? extInfo.isRounding : true;\n if (isRounding) {\n newValue = parseFloat(useValue).toFixed(fixedNum);\n } else {\n if (fixedNum > 0) {\n const temp = useValue.split(\".\");\n const len = temp[1].length;\n newValue = temp[0] + \".\" + temp[1].substring(0, len > fixedNum ? fixedNum : len);\n } else {\n newValue = parseInt(useValue).toString();\n }\n }\n newValue = Number(newValue).toFixed(fixedNum);\n const isThousands = this.isBoolean(extInfo.isThousands) ? extInfo.isThousands : true;\n if (isThousands) {\n newValue = this.getFormatThousands(newValue);\n }\n }\n }\n } else {\n newValue = value;\n }\n break;\n }\n case \"date\":\n case \"dateTime\":\n case \"time\": {\n if (this.isEmpty(value)) {\n newValue = value;\n } else {\n let newFormat = \"\";\n if (this.isEmpty(extInfo.dateFormat)) {\n if (type === \"dateTime\") {\n newFormat = \"YYYY-MM-DD HH:mm:ss\";\n } else if (type === \"time\") {\n newFormat = \"HH:mm:ss\";\n } else {\n newFormat = \"YYYY-MM-DD\";\n }\n } else {\n newFormat = extInfo.dateFormat;\n }\n const handler = _formatHandlers[type]\n if (handler) {\n newValue = handler(value, newFormat)\n } else {\n newValue = value\n }\n }\n break;\n }\n case \"string\":\n newValue = value.toString();\n break;\n case \"intArray\":\n newValue = value.split(\",\").map((id: string) => parseInt(id));\n break;\n default:\n newValue = value;\n }\n return newValue;\n }\n\n /**\n * 小时格式\n * @param start 开始\n * @param end 结束\n * @returns 格式: 01:00-02:59\n */\n static getHourInterval(start: any, end: any = \"\"): string {\n const newE = this.isEmpty(end) ? start : end;\n return `${this.getFillZero(start)}:00-${this.getFillZero(newE)}:59`;\n }\n\n /** 转化千分位 */\n static getFormatThousands(value: any): string {\n if (!this.isNumber(value)) {\n return \"\";\n }\n const arrNum = this.split(value.toString(), \".\");\n return arrNum[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, \"$1,\") + (arrNum.length > 1 ? (`.${arrNum[1]}`) : \"\");\n }\n\n /**\n * 指定位 数字加一,位之后零补充\n * @param value 值\n * @param opt inxPos(第几位 默认第二位) isCeil(最后数字是否ceil) isRounding(是否四舍五入,优先isCeil) isEndFive (最后数字是否5/0)\n * @returns\n */\n static getNumCeil(value: any, opt: any = {}): number {\n /* if (inxPos <= 0) {\n return Math.ceil(value);\n } */\n if (!this.isNumber(value)) {\n return 0;\n }\n const numValue = Number(value);\n const isMinus = numValue < 0;\n const absValue = Math.abs(numValue);\n if (absValue === 0) {\n return 0;\n }\n const isLess1 = absValue < 1;\n let zeroLenL = 0;\n let strValue = absValue.toString();\n let indexDot = -1;\n if (isLess1) {\n indexDot = -1;\n if (absValue > 0) {\n const tempLess1 = strValue.split(\".\")[1];\n strValue = Number(tempLess1).toString();\n zeroLenL = tempLess1.length - strValue.length;\n }\n } else {\n zeroLenL = 0;\n indexDot = strValue.indexOf(\".\");\n if (indexDot > -1) {\n strValue = strValue.replace(\".\", \"\");\n }\n }\n\n const isCeil = this.isBoolean(opt.isCeil) ? opt.isCeil : true;\n const inxPos = this.isUndefined(opt.inxPos) ? 2 : parseInt(opt.inxPos);\n const isEndFive = this.isBoolean(opt.isEndFive) ? opt.isEndFive : false;\n const isRounding = this.isBoolean(opt.isRounding) ? opt.isRounding : false;\n\n // 拆分\n let l;\n let r = \"\";\n if (inxPos < strValue.length) {\n l = strValue.substring(0, inxPos);\n r = strValue.substring(inxPos);\n } else {\n l = strValue;\n }\n\n /// 左\n let newL = \"\";\n const strL = isCeil || (isRounding && r.length > 0 && parseInt(r.substring(0, 1)) >= 5)\n ? (parseInt(l) + 1).toString()\n : parseInt(l).toString();\n const lastL = parseInt(strL.substring(strL.length - 1));\n if (isEndFive) {\n // 四舍六入五保留\n if (lastL === 5 || lastL === 0) {\n newL = strL;\n } else {\n const f = parseInt(strL.substring(0, inxPos - 1));\n if (lastL > 5) {\n newL = `${f + 1}0`;\n } else if (lastL < 5) {\n newL = `${f}5`;\n }\n if (strL.length > inxPos && newL.length === inxPos) {\n newL = `${newL}0`;\n }\n }\n } else {\n newL = strL;\n }\n\n /// 右\n let newR = \"\";\n let zeroLenR = 0;\n if (indexDot === -1) {\n zeroLenR = r.length;\n } else {\n if (indexDot < inxPos) {\n zeroLenR = 0;\n newL = (Number(newL) / ((inxPos - indexDot) * 10)).toString();\n } else if (indexDot > inxPos) {\n zeroLenR = indexDot - inxPos;\n }\n }\n newR = this.getZeroCount(zeroLenR);\n\n if (isLess1) {\n const zeroL = this.getZeroCount(zeroLenL);\n newL = `0.${zeroL}${newL}`;\n }\n const newValue = newL + newR;\n\n return Number(newValue) * (isMinus ? -1 : 1);\n }\n\n static removeReplace(value: any, key = \",\") {\n if (this.isUndefined(value)) {\n return \"\";\n }\n const reg = new RegExp(`[${key}]`, \"g\");\n return value.toString().replace(reg, \"\");\n }\n\n /**\n * 转换空为零\n * @param json \n * @param mapKey \n * @param optExt \n * @returns \n */\n static conversionEmptyZero(json: any, mapKey: string[], optExt?: any) {\n const newJson = json;\n if (!this.isEmpty(mapKey)) {\n let defEmpty: any = 0;\n let defUndefined: any = 0;\n if (optExt) {\n let newOptExt: any = {};\n if (this.isString(optExt)) {\n newOptExt.emptyDef = optExt;\n } else if (this.isObject(optExt)) {\n newOptExt = optExt;\n }\n const isEmptyExtUndefinedDef = this.isEmpty(newOptExt.undefinedDef);\n if (!isEmptyExtUndefinedDef) {\n defUndefined = newOptExt.undefinedDef;\n }\n if (!this.isEmpty(newOptExt.emptyDef)) {\n defEmpty = newOptExt.emptyDef;\n if (isEmptyExtUndefinedDef) {\n defUndefined = newOptExt.emptyDef;\n }\n }\n }\n mapKey.forEach((k: string) => {\n if (this.isEmpty(json[k])) {\n if (this.isUndefined(json[k])) {\n newJson[k] = defUndefined;\n } else {\n newJson[k] = defEmpty;\n }\n }\n });\n }\n return newJson;\n }\n /**\n * 转换百分比\n * @param {any} json\n * @param {string[]} mapKey\n */\n static conversionPercentage(json: any, mapKey: string[], isMultiply = true) {\n const newJson = json;\n if (!this.isEmpty(mapKey)) {\n mapKey.forEach((k: string) => {\n const v = json[k];\n if (this.isEmpty(v)) {\n newJson[k] = 0;\n } else {\n if (this.isNumber(v)) {\n newJson[k] = isMultiply\n ? v * 100\n : v / 100;\n } else {\n newJson[k] = v;\n }\n }\n });\n }\n return newJson;\n }\n\n /**\n * 转换格式化的字符串\n * @param {string} strFormat\n * @param {any} json\n * @returns {string}\n */\n static convertStringFormat(strFormat: string, json: any): string {\n let newStr = strFormat;\n if (!this.isEmpty(json)) {\n newStr = strFormat.replace(/[$]{[^}]+}/g, ($1) => {\n const k = $1.replace(\"${\", \"\").replace(\"}\", \"\");\n return this.isExistJsonKey(json, k) ? json[k] : $1;\n });\n }\n return newStr;\n }\n\n static getQueryString(url: string, name: string): string {\n const reg: any = new RegExp(`(^|&)${name}=([^&]*)(&|$)`, \"i\");\n const r: any = url.substring(url.indexOf(\"?\") + 1).match(reg);\n if (r !== null) return decodeURI(r[2]);\n return \"\";\n }\n\n static getQueryStringByHash(name: string): string {\n return this.getQueryString(window.location.hash, name);\n }\n\n static encodeHTML(source: string) {\n return String(source)\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#39;\");\n }\n static removeHTMLTags(str: string) {\n return str.replace(/<[^>]*>/g, \"\");\n }\n\n static requestAnimationFrame(nextCb: any) {\n const rAF = window.requestAnimationFrame\n || (window as any).webkitRequestAnimationFrame\n || (window as any).mozRequestAnimationFrame\n || (window as any).oRequestAnimationFrame\n || (window as any).msRequestAnimationFrame;\n if (rAF) {\n return rAF.call(window, nextCb);\n }\n return window.setTimeout(nextCb, 1000 / 60);\n }\n\n static cancelAnimationFrame(handle: any) {\n const cAF = window.cancelAnimationFrame\n || (window as any).webkitCancelAnimationFrame\n || (window as any).mozCancelAnimationFrame\n || (window as any).oCancelAnimationFrame\n || (window as any).msCancelAnimationFrame;\n if (cAF) {\n cAF.call(window, handle);\n } else {\n window.clearTimeout(handle);\n }\n }\n}\nexport default CommonBase;\n","import CommonBase from \"./base\";\nclass PromiseCommit {\n promise(result: any) {\n return new Promise((resolve) => {\n resolve(result);\n });\n }\n\n promiseFun(callback: any) {\n return new Promise((resolve) => {\n if (callback) {\n callback(resolve);\n }\n });\n }\n\n resolve(result: any) {\n return Promise.resolve(result);\n }\n\n all(promises: any) {\n return Promise.all(promises);\n }\n\n allByJson(promises: { [key: string]: Promise<any> }): Promise<{ result: Record<string, any>; errors: Record<string, any> }> {\n return new Promise((resolve) => {\n if (CommonBase.isEmpty(promises)) {\n return resolve({ result: {}, errors: {} });\n }\n let count = 0;\n const keyArr = Object.keys(promises);\n const keyLen = keyArr.length;\n const result: any = {};\n const errors: any = {};\n const run = (key: string) => {\n Promise.resolve(promises[key]).then(\n (res) => {\n count += 1;\n result[key] = res;\n if (count === keyLen) {\n resolve({ result, errors });\n }\n },\n (err) => {\n count += 1;\n errors[key] = err;\n if (count === keyLen) {\n resolve({ result, errors });\n }\n });\n };\n keyArr.forEach((k) => {\n run(k);\n });\n });\n }\n}\nexport default new PromiseCommit();\n","import CommonBase from \"../base\";\nimport CommonPromise from \"../promise\";\nclass Element {\n _elCanvasTextWidth: any;\n constructor() {\n this._elCanvasTextWidth = null;\n }\n\n private _getArrClassBySplit(cls: string) {\n return cls.split(\" \").filter((c) => !CommonBase.isEmpty(c));\n }\n\n private _getClasssByReal(classs: any[string], exist: any) {\n return classs.filter((cls: string) => !CommonBase.isExistValue(exist, cls) && !CommonBase.isEmpty(cls));\n }\n\n onListener(element: any, eventName: string, eventFun: any, useCapture = false) {\n if (element && eventName && eventFun) {\n element.addEventListener(eventName, eventFun, useCapture);\n }\n }\n\n offListener(element: any, eventName: string, eventFun: any, useCapture = false) {\n if (element && eventName && eventFun) {\n element.removeEventListener(eventName, eventFun, useCapture);\n }\n }\n\n getTextWidth(text: string, font = \"normal 12px Microsoft YaHei\"): number {\n if (!this._elCanvasTextWidth) {\n this._elCanvasTextWidth = document.createElement(\"canvas\");\n }\n const context: any = this._elCanvasTextWidth.getContext(\"2d\");\n context.font = font;\n return context.measureText(text).width;\n }\n\n /** 添加class */\n getAddClass(...classs: any) {\n let result: any = [];\n classs.forEach((cls: any) => {\n if (CommonBase.isString(cls)) {\n const tempCls = this._getArrClassBySplit(cls);\n result = result.concat(this._getClasssByReal(tempCls, result));\n } else if (CommonBase.isArray(cls)) {\n result = result.concat(this._getClasssByReal(cls, result));\n } else if (CommonBase.isObject(cls)) {\n for (const [k, v] of Object.entries(cls)) {\n if (CommonBase.isExistJsonKey(cls, k) && v) {\n result.push(k);\n } else {\n result = result.filter((c: string) => c !== k || (c === k && v));\n }\n }\n }\n });\n return result.join(\" \");\n }\n\n /** 移除class */\n getRemoveClass(classTotal: string, classs: string) {\n const arrRemove: string[] = this._getArrClassBySplit(classs);\n const result: string[] = this._getArrClassBySplit(classTotal).filter((cls) => !CommonBase.isExistValue(arrRemove, cls));\n return result.join(\" \");\n }\n checkHasClass(classTotal: string, className: string) {\n const arrTotal = this._getArrClassBySplit(classTotal);\n const arrCls = this._getArrClassBySplit(className);\n return CommonBase.isContainArr(arrTotal, arrCls);\n }\n\n /** 指定元素距离窗口信息 */\n private _getBoundingClientRect(el: any) {\n const rect = CommonBase.isUndefined(el.getBoundingClientRect) ? {} : el.getBoundingClientRect();\n const box = {\n width: rect.width || 0,\n height: rect.height || 0,\n top: rect.top || 0,\n right: 0,\n bottom: 0,\n left: rect.left || 0,\n x: rect.left || 0,\n y: rect.top || 0,\n };\n const winHeight = this.getWinHeight();\n const winWidth = this.getWinWidth();\n box.right = winWidth - rect.right || 0;\n box.bottom = winHeight - rect.bottom || 0;\n return box;\n }\n\n /* _getWindow(el: any) {\n if (CommonBase.isWindow(el)) {\n return el;\n }\n return el.nodeType === 9 ? (el.defaultView || el.parentWindow) : false;\n } */\n\n private _getWindow(el: any) {\n if (el && el.toString() !== \"[object Window]\") {\n const ownerDocument = el.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n return el;\n }\n\n isElementHtml(el: any) {\n const OwnElement = this._getWindow(el).HTMLElement;\n return el instanceof OwnElement || el instanceof HTMLElement;\n }\n\n isElementBody(el: any) {\n return CommonBase.isUndefined(el)\n ? false\n : this.isElementHtml(el) && el.tagName.toLocaleLowerCase() === \"body\";\n }\n\n getWinScrollTop() {\n return document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset;\n }\n getWinWidth() {\n return document.documentElement.clientWidth || document.body.clientWidth || window.innerWidth;\n }\n getWinHeight() {\n return document.documentElement.clientHeight || document.body.clientHeight || window.innerHeight;\n }\n /**\n * 获取元素的css\n * @param el\n * @returns\n */\n getStyle(el: any) {\n if (window.getComputedStyle) {\n return window.getComputedStyle(el, null);\n }\n return el.currentStyle;\n }\n\n private _isElementScroll(element: any) {\n const sty = this.getStyle(element);\n const overflow = sty.overflow;\n const overflowX = sty.overflowX;\n const overflowY = sty.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n }\n\n isHidden(element: any) {\n const sty = this.getStyle(element);\n const display = sty.display;\n return display === \"none\";\n }\n\n isHiddenParent(element: any) {\n let isHide = false;\n let current = element;\n let isStop = false;\n while (current && current.nodeType !== 9 && !isStop) {\n if (current.nodeType === 1) {\n isStop = this.isHidden(current);\n if (isStop) {\n isHide = true;\n }\n }\n current = current.parentNode;\n }\n return isHide;\n }\n\n /**\n * 获取上级元素,并检查parent包含el且parent非body\n * @param el 指定元素\n * @param parent 指定上级,可为string[#(id),.(class),tagName] || element; 为空时默认el.parentNode\n * @returns parentElement。当检查parentElement为body或者parent不包含el时,返回null\n */\n getParentCheckBody(el: any, parent: any, isCheckContains = true) {\n let newParentEl: any = null;\n if (parent) {\n if (CommonBase.isString(parent)) {\n if (parent.toLocaleLowerCase() !== \"body\") {\n newParentEl = this.getParent(el, parent);\n }\n } else {\n if (!this.isElementBody(parent)) {\n if (isCheckContains) {\n if (parent.contains(el)) {\n newParentEl = parent;\n }\n } else {\n newParentEl = parent;\n }\n }\n }\n } else {\n if (!this.isElementBody(el.parentNode)) {\n newParentEl = el.parentNode;\n }\n }\n return newParentEl;\n }\n\n /**\n * 获取上级元素\n * @param el 指定元素\n * @param parentAttr 指定上级,可为string[#(id),.(class),tagName]; 为空时默认el.parentNode\n * @param elUpperLimit 非必传,设置该参数时,如果在parentAttr参数之前匹配上设置值 则直接返回\n * @param isLimitReturnSelf 截止到elUpperLimit时 未匹配上parentAttr 是否返回 elUpperLimit\n * @returns parentElement\n */\n getParent(el: any, parentAttr: any, elUpperLimit?: any, isLimitReturnSelf = true) {\n const isEmpty: boolean = CommonBase.isEmpty(parentAttr);\n if (isEmpty) {\n return el.parentNode;\n }\n let pEl = null;\n const isLimit = !CommonBase.isUndefined(elUpperLimit);\n const check: any = this._checkElementByAttr(el, parentAttr);\n if (!check) {\n let current = el.parentNode;\n let isStop = false;\n while (current && current.nodeType !== 9 && !isStop) {\n if (current.nodeType === 1) {\n isStop = this._checkElementByAttr(current, parentAttr);\n if (isStop) {\n pEl = current;\n } else {\n if (isLimit) {\n isStop = current === elUpperLimit;\n if (isStop) {\n if (isLimitReturnSelf) {\n pEl = current;\n }\n }\n }\n }\n }\n current = current.parentNode;\n }\n } else {\n pEl = el;\n }\n return pEl;\n }\n\n /**\n * 获取所有上级元素\n * @param el 指定元素\n * @param parentAttr 指定上级,可为string[#(id),.(class),tagName]; 为空时默认el.parentNode\n * @returns list[parentElement]\n */\n getParentList(el: any, parentAttr: any) {\n const newAttr = CommonBase.isEmpty(parentAttr) ? \"body\" : parentAttr;\n return this._recursionParents(el, newAttr);\n }\n\n private _recursionParents(el: any, parentAttr: any): any[] {\n const list: any[] = [];\n if (this._checkElementByAttr(el, parentAttr)) {\n list.push(el);\n } else {\n if (el.parentNode && el.parentElement && !this.isElementBody(el.parentElement)) {\n list.push(el.parentNode);\n const temp = this._recursionParents(el.parentNode, parentAttr);\n list.push(...temp);\n }\n }\n return list;\n }\n\n getParentScrollList(el: any, parentAttr: any, isContainsSelf = true) {\n const scrollList: any[] = [];\n const pList = this.getParentList(el, parentAttr);\n pList.forEach((pEl: any) => {\n if (this._isElementScroll(pEl)) {\n if (isContainsSelf) {\n scrollList.push(pEl);\n } else {\n if (!this._checkElementByAttr(pEl, parentAttr)) {\n scrollList.push(pEl);\n }\n }\n }\n });\n return scrollList;\n }\n\n /**\n * 根据attr检查元素信息\n * @param el\n * @param attr\n * @returns true/false\n */\n private _checkElementByAttr(el: any, attr: any) {\n let check = false;\n if (!CommonBase.isEmpty(attr)) {\n if (CommonBase.isString(attr)) {\n const pre = attr.substr(0, 1);\n const compare = attr.substring(1);\n switch (pre) {\n case \"#\":\n check = el.id === compare;\n break;\n case \".\":\n check = CommonBase.isString(el.className) ? CommonBase.isExistValue(el.className.split(\" \"), compare) : false;\n break;\n default:\n check = el.tagName.toLocaleLowerCase() === attr;\n }\n } else {\n if (this.isElementHtml(attr)) {\n check = el === attr;\n }\n }\n }\n return check;\n }\n\n /**\n * 获取元素到窗体 偏移量\n * @param el 指定元素\n * @param viewEl 指定窗体,为空时默认window\n * @returns json { top,left }\n */\n getOffset(el: any, viewEl: any = null) {\n const box = this.getPositionView(el, viewEl);\n if (box.viewEl) {\n return {\n top: box.top + box.viewEl.scrollTop - box.viewEl.clientTop,\n left: box.left + box.viewEl.scrollLeft - box.viewEl.clientLeft,\n };\n } else {\n const doc = el && el.ownerDocument;\n const docEl = doc.documentElement;\n const winEl = this._getWindow(docEl);\n return {\n top: (box.top + (winEl.pageYOffset || docEl.scrollTop)) - (docEl.clientTop || 0),\n left: (box.left + (winEl.pageXOffset || docEl.scrollLeft)) - (docEl.clientLeft || 0),\n };\n }\n }\n\n /**\n * 获取元素相对指定容器的相对偏移\n * @param el 指定元素\n * @param viewEl 指定容器,为空时默认window\n * @returns json {top,left,viewEl}\n */\n getPositionView(el: any, viewEl: any = null) {\n const box: any = { top: 0, left: 0, viewEl: null };\n if (!this.isElementHtml(el)) {\n return box;\n }\n const tempBox = this._getBoundingClientRect(el);\n box.top = tempBox.top;\n box.right = tempBox.right;\n box.bottom = tempBox.bottom;\n box.left = tempBox.left;\n box.width = tempBox.width;\n box.height = tempBox.height;\n\n const viewBox = { top: 0, right: 0, bottom: 0, left: 0 };\n const newViewEl: any = CommonBase.isUndefined(viewEl) ? null : this.getParentCheckBody(el, viewEl, true);\n if (newViewEl) {\n const tempViewBox: any = this._getBoundingClientRect(newViewEl);\n viewBox.top = tempViewBox.top;\n viewBox.right = tempViewBox.right;\n viewBox.bottom = tempViewBox.bottom;\n viewBox.left = tempViewBox.left;\n box.viewWidth = tempViewBox.width;\n box.viewHeight = tempViewBox.height;\n\n box.top = tempBox.top - (viewBox.top < 0 ? 0 : viewBox.top);\n box.right = tempBox.right - (viewBox.right < 0 ? 0 : viewBox.right);\n box.bottom = tempBox.bottom - (viewBox.bottom < 0 ? 0 : viewBox.bottom);\n box.left = tempBox.left - (viewBox.left < 0 ? 0 : viewBox.left);\n\n box.elViewBox = {\n top: tempBox.top - viewBox.top,\n right: tempBox.right - viewBox.right,\n bottom: tempBox.bottom - viewBox.bottom,\n left: tempBox.left - viewBox.left,\n };\n }\n box.viewEl = newViewEl;\n return box;\n }\n\n /**\n * 获取元素相对指定容器的相对偏移\n * @param el 指定元素\n * @param parentAttr 指定窗体,为空时默认parentNode\n * @returns json\n */\n getPosition(el: any, parentAttr: any = null) {\n const parentEl: any = CommonBase.isUndefined(parentAttr) ? el.parentNode : parentAttr;\n return this.getPositionView(el, parentEl);\n }\n getElementIndex(el: any) {\n const prevAll = this.getPrevAll(el);\n return prevAll.length;\n }\n getPrev(el: any) {\n if (!CommonBase.isUndefined(el.previousElementSibling)) {\n return el.previousElementSibling;\n } else {\n let newEl: any = el.previousSibling;\n while (newEl && newEl.nodeType !== 1) {\n newEl = newEl.previousSibling;\n }\n return newEl;\n }\n\n }\n getPrevAll(el: any) {\n const arrEl: any = [];\n let prevEl: any = this.getPrev(el);\n while (prevEl) {\n arrEl.push(prevEl);\n prevEl = this.getPrev(prevEl);\n }\n return arrEl.reverse();\n }\n getNext(el: any) {\n if (!CommonBase.isUndefined(el.nextElementSibling)) {\n return el.nextElementSibling;\n } else {\n let newEl: any = el.nextSibling;\n while (newEl && newEl.nodeType !== 1) {\n newEl = newEl.nextSibling;\n }\n return newEl;\n }\n }\n\n insertAfter(targetEl: any, newEl: any) {\n const parentEl: any = targetEl.parentNode;\n if (parentEl.lastChild == targetEl) {// eslint-disable-line\n parentEl.appendChild(newEl);\n } else {\n parentEl.insertBefore(newEl, targetEl.nextSibling);\n }\n }\n\n getFocusSelection(targetEl: any) {\n const position: any = {};\n if (CommonBase.isUndefined(targetEl.selectionStart)) {\n targetEl.focus();\n // @ts-ignore\n const select: any = document.selection.createRange();\n position.length = select.text.length;\n select.moveStart(\"character\", -targetEl.value.length);\n position.end = select.text.length;\n position.start = position.end - position.length;\n } else {\n position.start = targetEl.selectionStart;\n position.end = targetEl.selectionEnd;\n position.length = position.end - position.start;\n }\n return position;\n }\n\n setFocusSelection(el: any, start: number, end: number) {\n if (CommonBase.isUndefined(el.selectionStart)) {\n el.focus();\n const r = el.createTextRange();\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n r.select();\n } else {\n el.selectionStart = start;\n el.selectionEnd = end;\n }\n }\n\n /* checkHoverInControl(controlEl, hoverInfo) {\n\n } */\n\n calculationDropdownPosition(controlEl: any, textEl: any, dropDownEl: any, arrowEl: any, containerEl: any) {\n const newContainerEl: any = containerEl ? this.getParentCheckBody(controlEl, containerEl) : null;\n const isAppendWindow = CommonBase.isUndefined(newContainerEl); // 检查是否以窗体为显示容器\n\n const textWidth = textEl.offsetWidth;\n const textHeight = textEl.offsetHeight;\n\n const dropDownWidth = dropDownEl.offsetWidth;\n const dropDownHeight = dropDownEl.offsetHeight;\n\n let arrowWidth = 0;\n let arrowHeight = 0;\n if (!CommonBase.isUndefined(arrowEl)) {\n arrowWidth = arrowEl.offsetWidth;\n arrowHeight = arrowEl.offsetHeight;\n }\n const arrowWidthHalf = (arrowWidth) / 2;\n\n const winHeight = this.getWinHeight();\n const winWidth = this.getWinWidth();\n\n let containerWidth = 0; // 容器 宽度\n let containerHeight = 0; // 容器 高度\n // let containerScrollTop = 0; // 容器 Scroll Top\n let containerScrollWidth = 0; // 容器 Scroll 宽度\n\n let controlOffset: any = { top: 0, left: 0 }; // 组件 位置 top,lef\n let controlPosView: any = { top: 0, left: 0 }; // 组件 相对位置 top,lef\n if (isAppendWindow) {\n containerWidth = winWidth;\n containerHeight = winHeight;\n // containerScrollTop = this.getWinScrollTop();\n containerScrollWidth = containerWidth - document.body.clientWidth;\n\n controlOffset = this.getOffset(controlEl);// boyd位置\n controlPosView = this.getPositionView(controlEl);// 相对window窗口位置\n } else {\n containerWidth = newContainerEl.clientWidth;\n containerHeight = newContainerEl.clientHeight;\n // containerScrollTop = this.getWinScrollTop();\n containerScrollWidth = newContainerEl.offsetWidth - containerWidth;\n\n controlOffset = this.getOffset(controlEl, newContainerEl);// 距containerEl位置\n controlPosView = this.getPositionView(controlEl, newContainerEl);// 相对controlEl窗口位置\n }\n\n const controlViewTop = controlPosView.top; /// 组件到窗体顶部的距离\n const controlDropDownTotalWidth = dropDownWidth + arrowWidth; // dropDown加箭头的总宽度\n const controlDropDownTotalHeight = dropDownHeight + arrowHeight; // dropDown加箭头的总高度\n const controlTotalHeight = textHeight + controlDropDownTotalHeight; /// 组件加dropDown加箭头的总高度\n\n const json: any = {\n winWidth,\n winHeight,\n containerWidth,\n containerHeight,\n controlOffset,\n controlPosView,\n textWidth,\n textHeight,\n dropDownWidth,\n dropDownHeight,\n arrowWidth,\n arrowHeight,\n };\n\n let posDown = \"down\";\n if (controlViewTop + controlTotalHeight > containerHeight) { /// 总体高度超过容器高度\n if (controlViewTop > controlDropDownTotalHeight) { /// 组件到视图顶部的距离大于dropDown高度\n posDown = \"up\";\n } else {\n if (controlOffset.top > controlDropDownTotalHeight) { /// 组件到顶部的距离大于dropDown高度\n posDown = \"up\";\n }\n }\n }\n json.dropDownPosDown = posDown;\n\n let posUp = \"up\";\n if (controlViewTop < controlDropDownTotalHeight) { /// 组件到视图顶部的距离小于dropDown高度\n if (controlOffset.top < controlDropDownTotalHeight) {\n posUp = \"down\";\n }\n }\n json.dropDownPosUp = posUp;\n\n let posLeft = \"left\";\n if (controlPosView.left < controlDropDownTotalWidth) { /// 组件到视图左侧的距离小于dropDown宽度时\n if (controlOffset.right >= controlDropDownTotalHeight) {\n posLeft = \"right\";\n }\n }\n json.dropDownPosLeft = posLeft;\n\n const posRight = \"right\";\n if (controlPosView.right < controlDropDownTotalWidth) { /// 组件到视图右侧的距离小于dropDown宽度时\n if (controlOffset.left >= controlDropDownTotalHeight) {\n posLeft = \"left\";\n }\n }\n json.dropDownPosRight = posRight;\n\n\n /// arrow left / right / center\n let arrowPosLeft = \"left\";\n if (containerWidth - controlOffset.left < dropDownWidth) {\n arrowPosLeft = controlOffset.left + textWidth >= dropDownWidth ? \"right\" : \"left\";\n }\n json.arrowPosLeft = arrowPosLeft;\n\n let arrowPosRight = \"right\";\n if (controlOffset.left + textWidth < dropDownWidth) {\n arrowPosRight = containerWidth - controlOffset.left >= dropDownWidth ? \"left\" : \"right\";\n }\n json.arrowPosRight = arrowPosRight;\n\n // 居中时,计算dropDown和arrow偏移量 \n let arrowPosCenterLR = \"center\";\n if ((controlOffset.left + textWidth) < (dropDownWidth / 2 - textWidth / 2)) {\n arrowPosCenterLR = controlOffset.left > (dropDownWidth / 2 - textWidth / 2) ? \"right\" : \"left\";\n }\n json.arrowPosCenterLR = arrowPosCenterLR;\n\n const arrowPosCenterLRInfo = {\n dropDownLeft: 0,\n arrowLeft: 0,\n };\n const textOffset = this.getOffset(textEl);\n const textOffsetControl = this.getOffset(textEl, controlEl);\n const textWidthHalf = textWidth / 2;\n const textOffsetLeft = textOffset.left - 5; // 5px 不靠边\n const textOffsetRight = containerWidth - textOffsetLeft - textWidth - 10 - (containerScrollWidth); // 不靠边 滚动条\n\n //const centerDropDownLeft = dropDownWidth / 2 - textWidthHalf;\n const centerDropDownLeft = dropDownEl.clientWidth / 2 - textWidthHalf;\n\n const centerDiffLeft = centerDropDownLeft - textOffsetLeft;\n const centerDiffRight = centerDropDownLeft - textOffsetRight;\n\n if (centerDiffLeft <= 0 && centerDiffRight <= 0) {\n arrowPosCenterLRInfo.dropDownLeft = (centerDropDownLeft - textOffsetControl.left) * -1;\n arrowPosCenterLRInfo.arrowLeft = centerDropDownLeft + textWidthHalf - arrowWidthHalf - 1;\n } else {\n if (centerDiffLeft > 0) {\n arrowPosCenterLRInfo.dropDownLeft = textOffsetLeft * -1;\n arrowPosCenterLRInfo.arrowLeft = textOffsetLeft + textWidthHalf - arrowWidthHalf;\n } else if (centerDiffRight > 0) {\n arrowPosCenterLRInfo.dropDownLeft = (centerDropDownLeft + centerDiffRight) * -1;\n arrowPosCenterLRInfo.arrowLeft = centerDropDownLeft + centerDiffRight + textWidthHalf - arrowWidthHalf;\n }\n }\n json.arrowPosCenterLRInfo = arrowPosCenterLRInfo;\n\n /// arrow top / bottom / center\n //const arrowPosTop = \"top\";\n /* if (containerHeight - controlViewTop) {\n\n }\n\n if (containerWidth - controlOffset.left < dropDownWidth) {\n arrowPosTop = controlOffset.left + textWidth >= dropDownWidth ? \"right\" : \"left\";\n } */\n //// todo\n json.arrowPosTop = \"top\";\n json.arrowPosBottom = \"bottom\";\n json.arrowPosCenterTB = \"center\";\n /* let posDown = \"down\";\n if (controlViewTop + controlTotalHeight > containerHeight) { /// 总体高度超过容器高度\n if (controlViewTop > controlDropDownTotalHeight) { /// 组件到视图顶部的距离大于dropDown高度\n posDown = \"up\";\n } else {\n if (controlOffset.top > controlDropDownTotalHeight) { /// 组件到顶部的距离大于dropDown高度\n posDown = \"up\";\n }\n }\n }\n json.dropDownPosDown = posDown; */\n\n\n return json;\n }\n\n getElementData(json: any) {\n const data: any = {};\n if (!CommonBase.isEmpty(json)) {\n for (const [k, v] of Object.entries(json)) {\n const temp = k.split(\"-\");\n const arr: string[] = [];\n temp.forEach((n: string, i: number) => {\n if (i > 0) {\n const newKey = n.toLowerCase();\n if (i === 1) {\n arr.push(newKey);\n } else {\n arr.push(newKey.replace(newKey[0], newKey[0].toUpperCase()));\n }\n }\n });\n if (arr.length > 0) {\n data[arr.join(\"\")] = v;\n }\n }\n }\n return data;\n }\n async getTextDataByFile(files: any) {\n const list: any = [];\n if (!CommonBase.isEmpty(files)) {\n for (let fi = 0; fi < files.length; fi++) {\n const listOne: any = await this._getTextDataFileOne(files[fi]);\n list.push(...listOne);\n }\n }\n return list;\n }\n private _getTextDataFileOne(file: any) {\n return CommonPromise.promiseFun((resolve: any) => {\n const reader = new FileReader();\n reader.readAsText(file, \"utf-8\");\n reader.onload = (e: any) => {\n const list: string[] = [];\n e.target.result.split(\"\\n\").forEach((t: string) => {\n const newTxt = CommonBase.trim(t);\n if (!CommonBase.isEmpty(newTxt)) {\n list.push(newTxt);\n }\n });\n resolve(list);\n };\n });\n }\n\n getClientXY(e: Event | MouseEvent | TouchEvent) {\n let clientX: number;\n let clientY: number;\n if (e.type === \"touchend\") {\n clientY = (e as TouchEvent).changedTouches[0].clientY;\n clientX = (e as TouchEvent).changedTouches[0].clientX;\n } else if (e.type.startsWith(\"touch\")) {\n clientY = (e as TouchEvent).touches[0].clientY;\n clientX = (e as TouchEvent).touches[0].clientX;\n } else {\n clientY = (e as MouseEvent).clientY;\n clientX = (e as MouseEvent).clientX;\n }\n return {\n clientX,\n clientY,\n };\n }\n}\nexport default new Element();\n","<template>\n <div :class=\"clsParent\" :style=\"styParent\">\n <div :class=\"clsGroup\">\n <div v-if=\"optIsGroupPrepend\" class=\"input-group-prepend\"><span class=\"input-group-text\">\n <slot name=\"prepend\"></slot>\n </span>\n </div>\n <div :class=\"clsContainer\">\n <input ref=\"refElInput\" :type=\"optInputType\" :name=\"optElName\" class=\"form-control container-border\"\n autocomplete=\"off\" v-model=\"optTextValue\" :placeholder=\"placeholder\" :disabled=\"disabled\"\n :readonly=\"isReadonly\" @input=\"onInputText\" @keydown=\"onKeydown\" @keyup=\"onKeyup\"\n @focus=\"onInputFocus\" @blur=\"onInputBlur\" />\n <i v-if=\"optIsShowClean\" class=\"input-clear-icon clIconFont clIcon-close-circle-fill\"\n @click.stop=\"onClear\"></i>\n <i v-if=\"isPassword\" :class=\"clsPasswordIcon\" @click=\"onShowPasswordValue\"></i>\n </div>\n <div v-if=\"optIsGroupAppend\" class=\"input-group-append\"><span class=\"input-group-text\">\n <slot name=\"append\"></slot>\n </span>\n </div>\n </div>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport './Index.css'\nimport '../../CommonCss/Input.css'\nimport { watch, nextTick, onMounted, computed, ref, useSlots } from \"vue\";\nimport CommonBase from \"../../Common/base\";\nimport CommonElement from \"../../Common/Element/index\";\n\ndefineOptions({\n name: 'ClInput'\n})\n\nconst props = defineProps({\n theme: {\n type: String,\n default: 'default',\n validator: (value: string) => {\n return ['default', 'icon', 'bottomLine'].indexOf(value) !== -1\n }\n },\n value: {\n type: [String, Number],\n default: ''\n },\n inputType: {\n type: String,\n default: ''\n },\n className: {\n type: String,\n default: ''\n },\n width: {\n type: String,\n default: ''\n },\n name: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n },\n isReadonly: {\n type: Boolean,\n default: false\n },\n isClean: {\n type: Boolean,\n default: true\n },\n isNumber: {\n type: Boolean,\n default: false\n },\n decimal: {\n type: Number,\n default: 0\n },\n isThousand: {\n type: Boolean,\n default: true\n },\n isImmediateThousand: {\n type: Boolean,\n default: true\n },\n isPassword: {\n type: Boolean,\n default: false\n },\n changDelayTime: {\n type: Number,\n default: 200\n },\n})\n\nconst emit = defineEmits<{\n (e: 'update:value', value: any): void\n (e: 'onChange', value: any): void\n (e: 'onFocus', value: any): void\n (e: 'onBlur', value: any): void\n (e: 'onChangeBlur', value: any): void\n (e: 'onKeyupEnter', value: any): void\n (e: 'onClear'): void\n (e: 'onInit'): void\n (e: 'onKeydown', event: any): void\n (e: 'onKeyup', event: any): void\n (e: 'onChangeDelay', value: string): void\n}>()\n\nconst slots = useSlots()\n\nconst refElInput = ref<HTMLInputElement | null>(null)\n\nconst optIsFocusIng = ref(false)\nconst optIsShowPassword = ref(false)\nconst optTextValue = ref(props.value)\nconst optLastValueChange = ref(props.value)\nconst optLastValueFocus = ref(props.value)\nconst _pageData = {\n prevDelayValue: props.value,\n valueDelayRun: false,\n}\n\nconst optInputType = computed(() => {\n let temp = \"text\"\n const { inputType, isNumber, isPassword } = props\n if (inputType) {\n temp = inputType\n } else {\n if (isNumber) {\n } else if (isPassword) {\n temp = optIsShowPassword.value ? \"text\" : \"password\"\n }\n }\n return temp\n})\n\nconst optElName = computed(() => {\n let name = props.name\n if (CommonBase.isEmpty(name)) {\n name = `input_${CommonBase.getRandom(8)}`\n }\n return name\n})\n\nconst optIsGroupPrepend = computed(() => {\n return !CommonBase.isUndefined(slots.prepend)\n})\n\nconst optIsGroupAppend = computed(() => {\n return !CommonBase.isUndefined(slots.append)\n})\n\nconst optIsShowClean = computed(() => {\n return props.isClean && !props.disabled && !CommonBase.isEmpty(optTextValue.value)\n})\n\nconst clsParent = computed(() => {\n const clsTemp: any = {\n \"panel-input\": true,\n \"box-width\": true,\n \"input-disabled\": props.disabled,\n \"input-readonly\": props.isReadonly,\n }\n if (props.className&&!CommonBase.isEmpty(props.className)) {\n props.className.split(\" \").forEach((cls: string) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n\n if (!CommonBase.isEmpty(props.theme, \"default\")) {\n clsTemp[`input-${props.theme}`] = true\n }\n return clsTemp\n})\n\nconst styParent = computed(() => {\n const sty: any = {}\n if (!CommonBase.isEmpty(props.width)) {\n sty.width = props.width\n }\n return sty\n})\n\nconst clsContainer = computed(() => {\n const cls = {\n \"input-container\": true,\n \"input-clean\": props.isClean,\n \"input-password\": props.isPassword,\n }\n return cls\n})\n\nconst clsGroup = computed(() => {\n const cls: any = {}\n if (optIsGroupPrepend.value || optIsGroupAppend.value) {\n cls[\"input-group\"] = true\n cls[\"input-group-focus\"] = optIsFocusIng.value\n }\n cls[\"input-valueEntry\"] = !CommonBase.isEmpty(optTextValue.value)\n return cls\n})\n\nconst clsPasswordIcon = computed(() => {\n return {\n \"input-password-icon\": true,\n clIconFont: true,\n \"clIcon-eye-no\": !optIsShowPassword.value,\n \"clIcon-eye\": optIsShowPassword.value,\n }\n})\n\nlet _valueTimerDelay: any\nconst _emitChangeDelay = (value: string) => {\n if (_valueTimerDelay) {\n clearTimeout(_valueTimerDelay)\n _valueTimerDelay = null\n }\n _pageData.valueDelayRun = true\n _valueTimerDelay = setTimeout(() => {\n _pageData.valueDelayRun = false\n if (_pageData.prevDelayValue !== value) {\n _pageData.prevDelayValue = value\n emit(\"onChangeDelay\", value)\n }\n }, props.changDelayTime)\n}\n\nconst _emitChange = (value: string) => {\n if (value !== optLastValueChange.value) {\n optLastValueChange.value = value\n const useValue = _convertUseValue(value)\n emit(\"update:value\", useValue)\n emit(\"onChange\", useValue)\n _emitChangeDelay(useValue)\n }\n}\n\nconst _emitFocus = (value: any) => {\n optIsFocusIng.value = true\n optLastValueFocus.value = value\n emit(\"onFocus\", value)\n}\n\nconst _emitBlur = (value: any) => {\n optIsFocusIng.value = false\n emit(\"onBlur\", value)\n if (value !== optLastValueFocus.value) {\n optLastValueFocus.value = value\n emit(\"onChangeBlur\", value)\n }\n}\n\nconst _emitKeyupEnter = (value: any) => {\n emit(\"onKeyupEnter\", value)\n}\n\nconst _emitKeydown = (e: any) => {\n emit(\"onKeydown\", e)\n}\n\nconst _emitKeyup = (e: any) => {\n emit(\"onKeyup\", e)\n}\n\nconst _emitClear = () => {\n emit(\"onClear\")\n}\n\nconst _emitInit = () => {\n nextTick(() => {\n emit(\"onInit\")\n })\n}\n\nconst _checkValueNumber = (value: string) => {\n let check = CommonBase.isNumber(value)\n if (!check) {\n if ((+value).toString() !== \"NaN\") {\n const arrNum = value.split(\".\")\n if (arrNum.length === 2) {\n check = CommonBase.isNumber(arrNum[0]) && (CommonBase.isEmpty(arrNum[1]) || CommonBase.isNumber(arrNum[1]))\n }\n } else if (value === \"-\") {\n check = true\n }\n }\n return check\n}\n\nconst _convertValue = (value: any, prevValue: any, isTofixed = true, isThousand = true) => {\n let newValue = value\n if (props.isNumber) {\n let tempValue = CommonBase.removeReplace(value)\n if (tempValue.length > 0) {\n const check = _checkValueNumber(tempValue)\n if (check) {\n if (isThousand) {\n if (tempValue !== \"-\") {\n const { decimal } = props\n if (isTofixed && decimal !== 0) {\n tempValue =\n decimal === -1\n ? parseFloat(tempValue).toString()\n : parseFloat(tempValue).toFixed(decimal)\n }\n const arrNum = tempValue.split(\".\")\n if (arrNum.length > 0) {\n tempValue = props.isThousand ? CommonBase.getFormatThousands(arrNum[0]) : arrNum[0]\n }\n\n if (arrNum.length === 2 && decimal !== 0) {\n const decimalValue = decimal === -1 ? arrNum[1] : arrNum[1].substr(0, decimal)\n tempValue += `.${decimalValue}`\n }\n }\n }\n } else {\n tempValue = prevValue\n }\n } else {\n tempValue = \"\"\n }\n newValue = tempValue\n }\n return newValue\n}\n\nconst _getFocusIndexByLeftValue = (showValue: string, leftValue: string) => {\n const arrLeft = leftValue.split(\"\")\n const regLeft = new RegExp(`^${arrLeft.join(\".*?\")}`)\n const newLeft: any = showValue.match(regLeft)\n let focusIdx\n if (!CommonBase.isUndefined(newLeft)) {\n focusIdx = newLeft[0].length\n }\n return focusIdx\n}\n\nconst _setFocusSelection = (el: any, inputValue: string, showValue: string) => {\n const focusInfo = CommonElement.getFocusSelection(el)\n let inputValueLeft = inputValue.substring(0, focusInfo.start)\n inputValueLeft = CommonBase.removeReplace(inputValueLeft)\n const inputValueRight = inputValue.substring(focusInfo.start)\n let checkLeftNum = _checkValueNumber(inputValueLeft)\n if (inputValueLeft.indexOf(\".\") > -1 && inputValueRight.indexOf(\".\") > -1) {\n checkLeftNum = false\n }\n let focusIdx = focusInfo.start\n if (checkLeftNum) {\n focusIdx = _getFocusIndexByLeftValue(showValue, inputValueLeft)\n } else {\n focusIdx = showValue.lastIndexOf(inputValueRight)\n }\n if (CommonBase.isUndefined(focusIdx) || focusIdx > showValue.length) {\n focusIdx = showValue.length\n }\n nextTick(() => {\n CommonElement.setFocusSelection(el, focusIdx, focusIdx)\n })\n}\n\nconst _getTextValue = () => {\n const textValue = optTextValue.value\n if (textValue && !CommonBase.isEmpty(textValue)) {\n let newTextValue: any = textValue.toString()\n if (props.isNumber) {\n const { decimal } = props\n newTextValue = CommonBase.removeReplace(newTextValue)\n\n if (decimal !== 0) {\n newTextValue =\n decimal === -1\n ? parseFloat(newTextValue).toString()\n : parseFloat(newTextValue).toFixed(decimal)\n }\n const arrNum: string[] = newTextValue.split(\".\")\n if (arrNum.length > 0) {\n arrNum[0] = props.isThousand ? CommonBase.getFormatThousands(arrNum[0]) : arrNum[0]\n }\n if (decimal === 0) {\n newTextValue = arrNum[0]\n } else {\n if (arrNum.length === 2) {\n arrNum[1] = decimal === -1 ? arrNum[1] : CommonBase.getFillZero(arrNum[1], decimal, \"r\")\n newTextValue = arrNum.join(\".\")\n } else {\n newTextValue = arrNum[0]\n }\n }\n }\n return newTextValue\n } else {\n return textValue\n }\n}\n\nconst _convertUseValue = (value: any) => {\n let newUserValue = \"\"\n if (!CommonBase.isEmpty(value)) {\n newUserValue = value.toString()\n if (props.isNumber) {\n if (newUserValue !== \"-\") {\n const { decimal } = props\n const arrNum = newUserValue.split(\".\")\n let tempValue = \"\"\n if (arrNum.length > 0) {\n tempValue = CommonBase.removeReplace(arrNum[0])\n }\n if (arrNum.length === 2 && decimal !== 0) {\n let decimalValue = \"\"\n if (decimal === -1) {\n decimalValue = arrNum[1]\n } else {\n decimalValue = arrNum.length === 2 ? arrNum[1] : \"\"\n decimalValue = CommonBase.getFillZero(decimalValue, decimal, \"r\")\n }\n tempValue += `.${decimalValue}`\n }\n newUserValue = tempValue\n }\n }\n }\n return newUserValue\n}\n\nconst _focus = () => {\n refElInput.value?.focus()\n}\n\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue !== oldValue && newValue !== optTextValue.value) {\n let isRun = true\n if (props.isNumber) {\n const tempNewValue = CommonBase.removeReplace(newValue)\n const tempTextValue = CommonBase.removeReplace(optTextValue.value)\n const isEmptyNew = CommonBase.isEmpty(tempNewValue)\n const isEmptyText = CommonBase.isEmpty(tempTextValue)\n if (isEmptyNew && isEmptyText) {\n isRun = false\n } else {\n if (!isEmptyNew && !isEmptyText) {\n isRun = Number(tempNewValue) !== Number(tempTextValue)\n }\n }\n }\n if (isRun) {\n const value = _convertValue(newValue, oldValue)\n optTextValue.value = value\n optLastValueChange.value = value\n if (!_pageData.valueDelayRun) {\n _pageData.prevDelayValue = newValue\n }\n }\n }\n },\n)\n\nwatch([() => props.isNumber, () => props.decimal, () => props.isThousand], () => {\n const newShowText = _convertValue(optTextValue.value, \"\")\n optTextValue.value = newShowText\n _emitChange(newShowText)\n})\n\nconst _initMain = () => {\n if (!CommonBase.isEmpty(props.value)) {\n const v = _convertValue(props.value, props.value)\n optTextValue.value = v\n optLastValueChange.value = v\n }\n _emitInit()\n}\n\nonMounted(() => {\n _initMain()\n})\n\nconst onInputText = (e: any) => {\n const value = e.target.value\n const newValue = _convertValue(value, optLastValueChange.value, false, props.isImmediateThousand)\n if (props.isNumber) {\n optTextValue.value = newValue\n _setFocusSelection(e.target, value, newValue)\n }\n _emitChange(newValue)\n}\n\nconst onKeydown = (e: any) => {\n _emitKeydown(e)\n}\n\nconst onKeyup = (e: any) => {\n e.preventDefault()\n e.stopPropagation()\n const keyCode = e.keyCode\n if (!CommonBase.isUndefined(keyCode) && keyCode.toString() === \"13\") {\n const useValue = _convertUseValue(e.target.value)\n _emitKeyupEnter(useValue)\n } else {\n _emitKeyup(e)\n }\n}\n\nconst onInputFocus = () => {\n const value = _getTextValue()\n optTextValue.value = value\n optLastValueChange.value = value\n const useValue = _convertUseValue(value)\n _emitFocus(useValue)\n}\n\nconst onInputBlur = () => {\n const value = _getTextValue()\n optTextValue.value = value\n optLastValueChange.value = value\n const useValue = _convertUseValue(value)\n _emitBlur(useValue)\n}\n\nconst onClear = () => {\n optTextValue.value = \"\"\n _emitChange(\"\")\n _emitClear()\n _focus()\n}\n\nconst onShowPasswordValue = () => {\n optIsShowPassword.value = !optIsShowPassword.value\n}\n\nconst getValue = () => {\n return _convertUseValue(optTextValue.value)\n}\n\nconst getValueData = () => {\n return { value: getValue(), show: optTextValue.value }\n}\n\nconst setValue = (value: any) => {\n const newValue = CommonBase.isEmpty(value) ? \"\" : _convertValue(value, \"\")\n optTextValue.value = newValue\n optLastValueChange.value = newValue\n}\n\nconst focus = () => {\n _focus()\n}\n\nexport interface ClInputExpose {\n getValue: () => any\n getValueData: () => { value: any; show: any }\n setValue: (value: any) => void\n focus: () => void\n}\n\ndefineExpose({\n getValue,\n getValueData,\n setValue,\n focus,\n})\n</script>\n<style scoped></style>\n","<template>\n <div class=\"load-rotaryLine-container\">\n <div class=\"rotary-line rotary-line-1\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-2\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-3\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-4\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-5\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-6\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-7\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-8\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-9\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-10\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-11\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-12\">\n <div></div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n// defineOptions\ndefineOptions({ name: 'ClLoadRotaryLine' })\n</script>\n","<template>\n <div class=\"load-circleBubble-container\">\n <div class=\"circleBubble-container circleBubble-container1\">\n <div class=\"circleBubble-item circleBubble-item1\"></div>\n <div class=\"circleBubble-item circleBubble-item2\"></div>\n <div class=\"circleBubble-item circleBubble-item3\"></div>\n <div class=\"circleBubble-item circleBubble-item4\"></div>\n </div>\n <div class=\"circleBubble-container circleBubble-container2\">\n <div class=\"circleBubble-item circleBubble-item1\"></div>\n <div class=\"circleBubble-item circleBubble-item2\"></div>\n <div class=\"circleBubble-item circleBubble-item3\"></div>\n <div class=\"circleBubble-item circleBubble-item4\"></div>\n </div>\n <div class=\"circleBubble-container circleBubble-container3\">\n <div class=\"circleBubble-item circleBubble-item1\"></div>\n <div class=\"circleBubble-item circleBubble-item2\"></div>\n <div class=\"circleBubble-item circleBubble-item3\"></div>\n <div class=\"circleBubble-item circleBubble-item4\"></div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n// defineOptions\ndefineOptions({ name: 'ClLoadCircleBubble' })\n</script>\n","<template>\n <div :class=\"clsParent\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\n// defineOptions\ndefineOptions({ name: 'ClLoadCircleNotch' })\n\n// props\nconst props = defineProps<{\n color?: string\n}>()\n\n// computed\nconst clsParent = computed(() => {\n const cls: any = {\n 'load-circleNotch-container': true,\n }\n const { color } = props\n if (color && color !== 'default') {\n cls['circleNotch-white'] = true\n }\n return cls\n})\n</script>\n","<template>\n <div class=\"loader\">\n <!-- --i、--c为自定义属性,CSS中可通过var函数对其调用 -->\n <span style=\"--i:1;--c:#2ecc71;\"></span>\n <span style=\"--i:2;--c:#3498db;\"></span>\n <span style=\"--i:3;--c:#f1c40f;\"></span>\n <span style=\"--i:4;--c:#e74c3c;\"></span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n// defineOptions\ndefineOptions({ name: 'ClLoadBallColor4' })\n</script>\n","<template>\n <div :class=\"clsParent\">\n <ClLoadRotaryLine v-if=\"theme === 'rotaryLine'\" />\n <ClLoadCircleNotch\n v-else-if=\"theme === 'circleNotch'\"\n :color=\"color\"\n />\n <ClLoadCircleBubble v-else-if=\"theme === 'circleBubble'\" />\n <ClLoadBallColor4 v-else-if=\"theme === 'ballColor4'\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { computed } from 'vue'\nimport ClLoadRotaryLine from './RotaryLine.vue'\nimport ClLoadCircleBubble from './CircleBubble.vue'\nimport ClLoadCircleNotch from './CircleNotch.vue'\nimport ClLoadBallColor4 from './BallColor4.vue'\n\n// defineOptions\ndefineOptions({ name: 'ClLoad' })\n\n// props\nconst props = defineProps({\n theme: {\n type: String,\n default: 'rotaryLine',\n validator: (value: string) => {\n return ['rotaryLine', 'circleNotch', 'circleBubble', 'ballColor4'].indexOf(value) !== -1\n }\n },\n size: {\n type: String,\n default: 'large'\n },\n color: {\n type: String,\n default: 'default'\n },\n})\n\n// computed\nconst clsParent = computed(() => {\n const cls: any = {\n 'panel-load': true,\n }\n cls[`load-${props.theme || 'rotaryLine'}`] = true\n // 仅实现 circleBubble 大小\n cls[`${props.theme || 'rotaryLine'}-${props.size || 'large'}`] = true\n return cls\n})\n</script>\n","/*!\n * Waves v0.7.6\n * http://fian.my.id/Waves\n *\n * Copyright 2014-2018 Alfiana E. Sibuea and other contributors\n * Released under the MIT license\n * https://github.com/fians/Waves/blob/master/LICENSE\n */\n\n;(function(window, factory) {\n 'use strict';\n\n // AMD. Register as an anonymous module. Wrap in function so we have access\n // to root via `this`.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n window.Waves = factory.call(window);\n return window.Waves;\n });\n }\n\n // Node. Does not work with strict CommonJS, but only CommonJS-like\n // environments that support module.exports, like Node.\n else if (typeof exports === 'object') {\n module.exports = factory.call(window);\n }\n\n // Browser globals.\n else {\n (window||Window).Waves = factory.call(window);\n }\n})(typeof global === 'object' ? global : this, function() {\n 'use strict';\n\n var Waves = Waves || {};\n var $$ = document.querySelectorAll.bind(document);\n var toString = Object.prototype.toString;\n var isTouchAvailable = 'ontouchstart' in window;\n\n\n // Find exact position of element\n function isWindow(obj) {\n return obj !== null && obj === obj.window;\n }\n\n function getWindow(elem) {\n return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\n }\n\n function isObject(value) {\n var type = typeof value;\n return type === 'function' || type === 'object' && !!value;\n }\n\n function isDOMNode(obj) {\n return isObject(obj) && obj.nodeType > 0;\n }\n\n function getWavesElements(nodes) {\n var stringRepr = toString.call(nodes);\n\n if (stringRepr === '[object String]') {\n return $$(nodes);\n } else if (isObject(nodes) && /^\\[object (Array|HTMLCollection|NodeList|Object)\\]$/.test(stringRepr) && nodes.hasOwnProperty('length')) {\n return nodes;\n } else if (isDOMNode(nodes)) {\n return [nodes];\n }\n\n return [];\n }\n\n function offset(elem) {\n var docElem, win,\n box = { top: 0, left: 0 },\n doc = elem && elem.ownerDocument;\n\n docElem = doc.documentElement;\n\n if (typeof elem.getBoundingClientRect !== typeof undefined) {\n box = elem.getBoundingClientRect();\n }\n win = getWindow(doc);\n return {\n top: box.top + win.pageYOffset - docElem.clientTop,\n left: box.left + win.pageXOffset - docElem.clientLeft\n };\n }\n\n function convertStyle(styleObj) {\n var style = '';\n\n for (var prop in styleObj) {\n if (styleObj.hasOwnProperty(prop)) {\n style += (prop + ':' + styleObj[prop] + ';');\n }\n }\n\n return style;\n }\n\n var Effect = {\n\n // Effect duration\n duration: 750,\n\n // Effect delay (check for scroll before showing effect)\n delay: 200,\n\n show: function(e, element, velocity) {\n\n // Disable right click\n if (e.button === 2) {\n return false;\n }\n\n element = element || this;\n\n // Create ripple\n var ripple = document.createElement('div');\n ripple.className = 'waves-ripple waves-rippling';\n element.appendChild(ripple);\n\n // Get click coordinate and element width\n var pos = offset(element);\n var relativeY = 0;\n var relativeX = 0;\n // Support for touch devices\n if('touches' in e && e.touches.length) {\n relativeY = (e.touches[0].pageY - pos.top);\n relativeX = (e.touches[0].pageX - pos.left);\n }\n //Normal case\n else {\n relativeY = (e.pageY - pos.top);\n relativeX = (e.pageX - pos.left);\n }\n // Support for synthetic events\n relativeX = relativeX >= 0 ? relativeX : 0;\n relativeY = relativeY >= 0 ? relativeY : 0;\n\n var scale = 'scale(' + ((element.clientWidth / 100) * 3) + ')';\n var translate = 'translate(0,0)';\n\n if (velocity) {\n translate = 'translate(' + (velocity.x) + 'px, ' + (velocity.y) + 'px)';\n }\n\n // Attach data to element\n ripple.setAttribute('data-hold', Date.now());\n ripple.setAttribute('data-x', relativeX);\n ripple.setAttribute('data-y', relativeY);\n ripple.setAttribute('data-scale', scale);\n ripple.setAttribute('data-translate', translate);\n\n // Set ripple position\n var rippleStyle = {\n top: relativeY + 'px',\n left: relativeX + 'px'\n };\n\n ripple.classList.add('waves-notransition');\n ripple.setAttribute('style', convertStyle(rippleStyle));\n ripple.classList.remove('waves-notransition');\n\n // Scale the ripple\n rippleStyle['-webkit-transform'] = scale + ' ' + translate;\n rippleStyle['-moz-transform'] = scale + ' ' + translate;\n rippleStyle['-ms-transform'] = scale + ' ' + translate;\n rippleStyle['-o-transform'] = scale + ' ' + translate;\n rippleStyle.transform = scale + ' ' + translate;\n rippleStyle.opacity = '1';\n\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\n rippleStyle['-webkit-transition-duration'] = duration + 'ms';\n rippleStyle['-moz-transition-duration'] = duration + 'ms';\n rippleStyle['-o-transition-duration'] = duration + 'ms';\n rippleStyle['transition-duration'] = duration + 'ms';\n\n ripple.setAttribute('style', convertStyle(rippleStyle));\n },\n\n hide: function(e, element) {\n element = element || this;\n\n var ripples = element.getElementsByClassName('waves-rippling');\n\n for (var i = 0, len = ripples.length; i < len; i++) {\n removeRipple(e, element, ripples[i]);\n }\n\n if (isTouchAvailable) {\n element.removeEventListener('touchend', Effect.hide);\n element.removeEventListener('touchcancel', Effect.hide);\n }\n\n element.removeEventListener('mouseup', Effect.hide);\n element.removeEventListener('mouseleave', Effect.hide);\n }\n };\n\n /**\n * Collection of wrapper for HTML element that only have single tag\n * like <input> and <img>\n */\n var TagWrapper = {\n\n // Wrap <input> tag so it can perform the effect\n input: function(element) {\n\n var parent = element.parentNode;\n\n // If input already have parent just pass through\n if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {\n return;\n }\n\n // Put element class and style to the specified parent\n var wrapper = document.createElement('i');\n wrapper.className = element.className + ' waves-input-wrapper';\n element.className = 'waves-button-input';\n\n // Put element as child\n parent.replaceChild(wrapper, element);\n wrapper.appendChild(element);\n\n // Apply element color and background color to wrapper\n var elementStyle = window.getComputedStyle(element, null);\n var color = elementStyle.color;\n var backgroundColor = elementStyle.backgroundColor;\n\n wrapper.setAttribute('style', 'color:' + color + ';background:' + backgroundColor);\n element.setAttribute('style', 'background-color:rgba(0,0,0,0);');\n\n },\n\n // Wrap <img> tag so it can perform the effect\n img: function(element) {\n\n var parent = element.parentNode;\n\n // If input already have parent just pass through\n if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {\n return;\n }\n\n // Put element as child\n var wrapper = document.createElement('i');\n parent.replaceChild(wrapper, element);\n wrapper.appendChild(element);\n\n }\n };\n\n /**\n * Hide the effect and remove the ripple. Must be\n * a separate function to pass the JSLint...\n */\n function removeRipple(e, el, ripple) {\n\n // Check if the ripple still exist\n if (!ripple) {\n return;\n }\n\n ripple.classList.remove('waves-rippling');\n\n var relativeX = ripple.getAttribute('data-x');\n var relativeY = ripple.getAttribute('data-y');\n var scale = ripple.getAttribute('data-scale');\n var translate = ripple.getAttribute('data-translate');\n\n // Get delay beetween mousedown and mouse leave\n var diff = Date.now() - Number(ripple.getAttribute('data-hold'));\n var delay = 350 - diff;\n\n if (delay < 0) {\n delay = 0;\n }\n\n if (e.type === 'mousemove') {\n delay = 150;\n }\n\n // Fade out ripple after delay\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\n\n setTimeout(function() {\n\n var style = {\n top: relativeY + 'px',\n left: relativeX + 'px',\n opacity: '0',\n\n // Duration\n '-webkit-transition-duration': duration + 'ms',\n '-moz-transition-duration': duration + 'ms',\n '-o-transition-duration': duration + 'ms',\n 'transition-duration': duration + 'ms',\n '-webkit-transform': scale + ' ' + translate,\n '-moz-transform': scale + ' ' + translate,\n '-ms-transform': scale + ' ' + translate,\n '-o-transform': scale + ' ' + translate,\n 'transform': scale + ' ' + translate\n };\n\n ripple.setAttribute('style', convertStyle(style));\n\n setTimeout(function() {\n try {\n el.removeChild(ripple);\n } catch (e) {\n return false;\n }\n }, duration);\n\n }, delay);\n }\n\n\n /**\n * Disable mousedown event for 500ms during and after touch\n */\n var TouchHandler = {\n\n /* uses an integer rather than bool so there's no issues with\n * needing to clear timeouts if another touch event occurred\n * within the 500ms. Cannot mouseup between touchstart and\n * touchend, nor in the 500ms after touchend. */\n touches: 0,\n\n allowEvent: function(e) {\n\n var allow = true;\n\n if (/^(mousedown|mousemove)$/.test(e.type) && TouchHandler.touches) {\n allow = false;\n }\n\n return allow;\n },\n registerEvent: function(e) {\n var eType = e.type;\n\n if (eType === 'touchstart') {\n\n TouchHandler.touches += 1; // push\n\n } else if (/^(touchend|touchcancel)$/.test(eType)) {\n\n setTimeout(function() {\n if (TouchHandler.touches) {\n TouchHandler.touches -= 1; // pop after 500ms\n }\n }, 500);\n\n }\n }\n };\n\n\n /**\n * Delegated click handler for .waves-effect element.\n * returns null when .waves-effect element not in \"click tree\"\n */\n function getWavesEffectElement(e) {\n\n if (TouchHandler.allowEvent(e) === false) {\n return null;\n }\n\n var element = null;\n var target = e.target || e.srcElement;\n\n while (target.parentElement) {\n if ( (!(target instanceof SVGElement)) && target.classList.contains('waves-effect')) {\n element = target;\n break;\n }\n target = target.parentElement;\n }\n\n return element;\n }\n\n /**\n * Bubble the click and show effect if .waves-effect elem was found\n */\n function showEffect(e) {\n\n // Disable effect if element has \"disabled\" property on it\n // In some cases, the event is not triggered by the current element\n // if (e.target.getAttribute('disabled') !== null) {\n // return;\n // }\n\n var element = getWavesEffectElement(e);\n\n if (element !== null) {\n\n // Make it sure the element has either disabled property, disabled attribute or 'disabled' class\n if (element.disabled || element.getAttribute('disabled') || element.classList.contains('disabled')) {\n return;\n }\n\n TouchHandler.registerEvent(e);\n\n if (e.type === 'touchstart' && Effect.delay) {\n\n var hidden = false;\n\n var timer = setTimeout(function () {\n timer = null;\n Effect.show(e, element);\n }, Effect.delay);\n\n var hideEffect = function(hideEvent) {\n\n // if touch hasn't moved, and effect not yet started: start effect now\n if (timer) {\n clearTimeout(timer);\n timer = null;\n Effect.show(e, element);\n }\n if (!hidden) {\n hidden = true;\n Effect.hide(hideEvent, element);\n }\n\n removeListeners();\n };\n\n var touchMove = function(moveEvent) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n hideEffect(moveEvent);\n\n removeListeners();\n };\n\n element.addEventListener('touchmove', touchMove, false);\n element.addEventListener('touchend', hideEffect, false);\n element.addEventListener('touchcancel', hideEffect, false);\n\n var removeListeners = function() {\n element.removeEventListener('touchmove', touchMove);\n element.removeEventListener('touchend', hideEffect);\n element.removeEventListener('touchcancel', hideEffect);\n };\n } else {\n\n Effect.show(e, element);\n\n if (isTouchAvailable) {\n element.addEventListener('touchend', Effect.hide, false);\n element.addEventListener('touchcancel', Effect.hide, false);\n }\n\n element.addEventListener('mouseup', Effect.hide, false);\n element.addEventListener('mouseleave', Effect.hide, false);\n }\n }\n }\n\n Waves.init = function(options) {\n var body = document.body;\n\n options = options || {};\n\n if ('duration' in options) {\n Effect.duration = options.duration;\n }\n\n if ('delay' in options) {\n Effect.delay = options.delay;\n }\n\n if (isTouchAvailable) {\n body.addEventListener('touchstart', showEffect, false);\n body.addEventListener('touchcancel', TouchHandler.registerEvent, false);\n body.addEventListener('touchend', TouchHandler.registerEvent, false);\n }\n\n body.addEventListener('mousedown', showEffect, false);\n };\n\n\n /**\n * Attach Waves to dynamically loaded inputs, or add .waves-effect and other\n * waves classes to a set of elements. Set drag to true if the ripple mouseover\n * or skimming effect should be applied to the elements.\n */\n Waves.attach = function(elements, classes) {\n\n elements = getWavesElements(elements);\n\n if (toString.call(classes) === '[object Array]') {\n classes = classes.join(' ');\n }\n\n classes = classes ? ' ' + classes : '';\n\n var element, tagName;\n\n for (var i = 0, len = elements.length; i < len; i++) {\n\n element = elements[i];\n tagName = element.tagName.toLowerCase();\n\n if (['input', 'img'].indexOf(tagName) !== -1) {\n TagWrapper[tagName](element);\n element = element.parentElement;\n }\n\n if (element.className.indexOf('waves-effect') === -1) {\n element.className += ' waves-effect' + classes;\n }\n }\n };\n\n\n /**\n * Cause a ripple to appear in an element via code.\n */\n Waves.ripple = function(elements, options) {\n elements = getWavesElements(elements);\n var elementsLen = elements.length;\n\n options = options || {};\n options.wait = options.wait || 0;\n options.position = options.position || null; // default = centre of element\n\n\n if (elementsLen) {\n var element, pos, off, centre = {}, i = 0;\n var mousedown = {\n type: 'mousedown',\n button: 1\n };\n var hideRipple = function(mouseup, element) {\n return function() {\n Effect.hide(mouseup, element);\n };\n };\n\n for (; i < elementsLen; i++) {\n element = elements[i];\n pos = options.position || {\n x: element.clientWidth / 2,\n y: element.clientHeight / 2\n };\n\n off = offset(element);\n centre.x = off.left + pos.x;\n centre.y = off.top + pos.y;\n\n mousedown.pageX = centre.x;\n mousedown.pageY = centre.y;\n\n Effect.show(mousedown, element);\n\n if (options.wait >= 0 && options.wait !== null) {\n var mouseup = {\n type: 'mouseup',\n button: 1\n };\n\n setTimeout(hideRipple(mouseup, element), options.wait);\n }\n }\n }\n };\n\n /**\n * Remove all ripples from an element.\n */\n Waves.calm = function(elements) {\n elements = getWavesElements(elements);\n var mouseup = {\n type: 'mouseup',\n button: 1\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n Effect.hide(mouseup, elements[i]);\n }\n };\n\n /**\n * Deprecated API fallback\n */\n Waves.displayEffect = function(options) {\n console.error('Waves.displayEffect() has been deprecated and will be removed in future version. Please use Waves.init() to initialize Waves effect');\n Waves.init(options);\n };\n\n return Waves;\n});\n","import \"./waves.css\";\r\nimport \"./waves.js\";\r\nimport CommonBase from \"../../Common/base\";\r\n\r\nconst _waves = {\r\n init: (options: any) => {\r\n const newOption = CommonBase.getJsonMerge({ name: \"waves\", duration: 500, delay: 200 }, options);\r\n // @ts-ignore\r\n if (Window.Waves) {\r\n // @ts-ignore\r\n Window.Waves.init(newOption);\r\n }\r\n },\r\n bind: (el: any, binding: any) => {\r\n const newOptions = CommonBase.isObject(binding.value) ? binding.value : {};\r\n const isInit = CommonBase.isBoolean(newOptions.init) ? newOptions.init : true;\r\n if (isInit) {\r\n const isEmpty = CommonBase.isEmpty(binding.modifiers);\r\n let classes;\r\n if (isEmpty) {\r\n let colorBg = \"\";\r\n if (!CommonBase.isEmpty(newOptions.color)) {\r\n switch (newOptions.color) {\r\n case \"white\":\r\n colorBg = \"light\";\r\n break;\r\n case \"black\":\r\n colorBg = \"\";\r\n break;\r\n }\r\n }\r\n if (!CommonBase.isEmpty(colorBg)) {\r\n classes = `waves-${colorBg}`;\r\n }\r\n } else {\r\n classes = [\"button\", \"circle\", \"block\", \"float\", \"light\", \"classic\"]\r\n .filter((cls) => binding.modifiers[cls])\r\n .map((cls) => `waves-${cls}`);\r\n }\r\n // @ts-ignore\r\n if (Window.Waves) {\r\n // @ts-ignore\r\n Window.Waves.attach(el, classes);\r\n }\r\n }\r\n },\r\n};\r\nexport const name = \"clwaves\";\r\nexport const directive = (options: any) => {\r\n _waves.init(options);\r\n return {\r\n deep: true,\r\n mounted: _waves.bind,\r\n };\r\n};\r\nexport const wavesBind = {\r\n mounted: _waves.bind,\r\n};\r\n","<template>\n <span class=\"panel-btn-parent\">\n <button\n ref=\"refElTopParent\"\n type=\"button\"\n :class=\"clsParent\"\n :disabled=\"optIsDisabled\"\n @click=\"onClick\"\n v-clwaves=\"{ color: optWavesColor }\"\n >\n <span :style=\"styBtnChild\">\n <i\n :class=\"clsIcon\"\n v-if=\"optIsShowIcon\"\n ></i>\n <span\n class=\"btn-label\"\n v-if=\"optIsShowLabel\"\n >{{ label }}</span>\n </span>\n <span\n class=\"btn-loading\"\n v-if=\"optIsRunLoading && !optIsShowBackDropLoad\"\n >\n <ClLoad\n :theme=\"loadTheme\"\n :size=\"optLoadSize\"\n />\n </span>\n </button>\n <template v-if=\"optIsShowBackDrop\">\n <div class=\"btn-body-backdrop\"></div>\n <div\n :class=\"clsBodyBackdropMain\"\n v-if=\"optIsShowBackDropLoad && optIsBackDropRunLoading\"\n >\n <div class=\"btn-body-backdrop-container\">\n <ClLoad\n :theme=\"loadTheme\"\n :size=\"optLoadSize\"\n />\n <div class=\"btn-body-backdrop-text\">{{ loadText || '加载中' }}</div>\n </div>\n </div>\n </template>\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, computed, watch, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport ClLoad from '../Load/Index.vue'\nimport { wavesBind } from '../../Web/Waves'\n\n// defineOptions\ndefineOptions({\n name: 'ClButton',\n directives: {\n clwaves: wavesBind\n }\n})\n\n// props\nconst props = defineProps({\n className: {\n type: String,\n default: '' // desc: 自定义CSS类名\n },\n label: {\n type: String,\n default: '' // desc: 按钮文本标签\n },\n icon: {\n type: String,\n default: '' // desc: 按钮图标类名\n },\n color: {\n type: String,\n default: 'default' // desc: 按钮颜色主题 | enum: default, green, red, yellow, white, grayLight, transparent\n },\n size: {\n type: String,\n default: '' // desc: 按钮尺寸 | enum: large, small, xl\n },\n disabled: {\n type: Boolean,\n default: false // desc: 是否禁用按钮\n },\n isShowLoad: {\n type: Boolean,\n default: false // desc: 是否显示加载动画\n },\n loadPos: {\n type: String,\n default: 'right', // desc: 加载动画位置 | enum: right, zoom-out, fixedCenter\n validator: (value: string) => {\n return ['right', 'zoom-out', 'fixedCenter'].indexOf(value) !== -1\n }\n },\n loadTheme: {\n type: String,\n default: 'rotaryLine' // desc: 加载动画主题 | enum: rotaryLine, circleNotch, circleBubble\n },\n loadDrift: {\n type: Boolean,\n default: true // desc: 加载时是否漂移\n },\n loadText: {\n type: String,\n default: '' // desc: 加载提示文本\n },\n isShowBackDrop: {\n type: Boolean,\n default: false // desc: 是否显示遮罩层\n },\n isShowWaves: {\n type: Boolean,\n default: true // desc: 是否显示点击波纹效果\n },\n wavesColor: {\n type: String,\n default: 'white' // desc: 波纹颜色 | enum: white, black\n },\n loadStatusIsIng: {\n type: [Boolean, null],\n default: null // desc: 加载状态控制(true开始,false结束,null忽略)\n }\n})\n\nif (CommonBase.isEmpty(props.label) && CommonBase.isEmpty(props.icon)) {\n console.warn('[ClButton] Warning: Either \"label\" or \"icon\" prop is required.')\n}\n\n// emit\nconst emit = defineEmits<{\n (e: 'onClick'): void\n}>()\n\n// refs\nconst refElTopParent = ref<HTMLElement | null>(null)\n\n// reactive\nconst optIsRunLoading = ref(false)\nconst optIsShowBackDrop = ref(false)\nconst optIsBackDropRunLoading = ref(false)\n\n// computed\nconst optIsShowLabel = computed(() => {\n return !CommonBase.isEmpty(props.label)\n})\n\nconst optIsShowIcon = computed(() => {\n return !CommonBase.isEmpty(props.icon)\n})\n\nconst optIsDisabled = computed(() => {\n return props.disabled ? true : optIsRunLoading.value\n})\n\nconst optIsShowBackDropLoad = computed(() => {\n return props.loadPos === 'fixedCenter'\n})\n\nconst optWavesColor = computed(() => {\n let color = props.wavesColor || 'white'\n if (CommonBase.isExistValue(props.color, 'white') || CommonBase.isExistValue(props.color, 'grayLight')) {\n color = 'black'\n }\n return color\n})\n\nconst optLoadPos = computed(() => {\n let pos = props.loadPos || 'right'\n if (CommonBase.isExistValue(props.className, 'btn-circle')) {\n if (CommonBase.isExistValue(pos, 'right')) {\n pos = 'zoom-out'\n }\n }\n return pos\n})\n\nconst optLoadSize = computed(() => {\n let size = 'large'\n switch (props.loadTheme) {\n case 'rotaryLine':\n size = props.size === 'small' ? 'small' : 'large'\n if (CommonBase.isExistValue(props.className, 'btn-circle')) {\n size = 'small'\n }\n break\n case 'circleNotch':\n size = 'large'\n break\n case 'circleBubble':\n size = 'small'\n break\n }\n return size\n})\n\nconst clsParent = computed(() => {\n const cls: any = {\n 'btn-parent': true,\n btn: true,\n }\n if (!CommonBase.isEmpty(props.color)) {\n cls[`btn-${props.color}`] = true\n }\n if (!CommonBase.isEmpty(props.className)) {\n props.className?.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n if (!CommonBase.isEmpty(props.size)) {\n cls[`btn-${props.size}`] = true\n }\n\n cls['btn-load-ing'] = optIsRunLoading.value\n if (optIsRunLoading.value) {\n cls[`btn-load-${optLoadPos.value}`] = true\n cls[`btn-load-${props.loadTheme}`] = true\n cls['btn-load-nodrift'] = !props.loadDrift\n }\n\n if (refElTopParent.value && refElTopParent.value.className) {\n refElTopParent.value.className.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n if (!CommonBase.isExistJsonKey(cls, c)) {\n cls[c] = true\n }\n }\n })\n }\n return cls\n})\n\nconst clsIcon = computed(() => {\n const cls: any = {\n 'btn-icon': true,\n }\n if (optIsShowIcon.value) {\n props.icon?.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsBodyBackdropMain = computed(() => {\n const isRun = optIsRunLoading.value && optIsShowBackDropLoad.value\n const cls = {\n 'btn-body-backdrop-main': true,\n animated: true,\n zoomIn: isRun,\n zoomOut: !isRun,\n }\n return cls\n})\n\nconst styBtnChild = computed(() => {\n const sty: any = {}\n if (optIsShowLabel.value || optIsShowIcon.value) {\n if (optLoadPos.value === 'zoom-out' && optIsRunLoading.value && !optIsShowBackDropLoad.value) {\n sty.opacity = 0\n }\n }\n return sty\n})\n\n// 内部方法\nconst _runLoading = () => {\n if (!optIsRunLoading.value) {\n if (props.isShowBackDrop) {\n optIsShowBackDrop.value = true\n optIsBackDropRunLoading.value = true\n }\n optIsRunLoading.value = true\n }\n}\n\nconst _runLoadEnd = () => {\n if (props.isShowBackDrop) {\n if (optIsShowBackDropLoad.value) {\n nextTick(() => {\n setTimeout(() => {\n optIsShowBackDrop.value = false\n optIsBackDropRunLoading.value = false\n }, 200)\n })\n } else {\n optIsShowBackDrop.value = false\n }\n }\n optIsRunLoading.value = false\n}\n\n// watch\nwatch(\n () => props.loadStatusIsIng,\n (newValue) => {\n if (CommonBase.isBoolean(newValue)) {\n newValue ? _runLoading() : _runLoadEnd()\n }\n }\n)\n\n// emit 外部使用的事件\nconst _emitClick = () => {\n emit('onClick')\n}\n\n// 内部触发的事件 on\nconst onClick = () => {\n if (!props.disabled) {\n if (props.isShowLoad) {\n _runLoading()\n }\n _emitClick()\n }\n}\n\n// 外部调用\nconst loadStart = () => {\n _runLoading()\n}\n\nconst loadStop = () => {\n _runLoadEnd()\n}\n\n// 暴露给外部的方法\nexport interface ClButtonExpose {\n loadStart: () => void\n loadStop: () => void\n}\n\ndefineExpose({\n loadStart,\n loadStop\n})\n</script>\n\n<style scoped>\n.panel-btn-parent {\n display: inline-block;\n}\n</style>\n","<template>\n <template v-if=\"url && optIsLink\">\n <span\n v-if=\"disabled\"\n :class=\"clsParent\"\n >\n <slot></slot>\n </span>\n <template v-else>\n <a\n v-if=\"isOutside\"\n :class=\"clsParent\"\n :href=\"url.toString()\"\n :target=\"isTargetBlank ? '_blank' : ''\"\n @click=\"onClick\"\n @mouseenter=\"onHoverIn\"\n @mouseleave=\"onHoverOut\"\n >\n <span>\n <slot></slot>\n </span>\n </a>\n <template v-else>\n <a\n v-if=\"isTargetBlank\"\n :class=\"clsParent\"\n :href=\"url.toString()\"\n target=\"_blank\"\n @click.stop=\"onClick\"\n @mouseenter=\"onHoverIn\"\n @mouseleave=\"onHoverOut\"\n >\n <span>\n <slot></slot>\n </span>\n </a>\n <router-link\n v-else\n :class=\"clsParent\"\n :to=\"url\"\n @click.stop=\"onClick\"\n >\n <span\n @mouseenter=\"onHoverIn\"\n @mouseleave=\"onHoverOut\"\n >\n <slot></slot>\n </span>\n </router-link>\n </template>\n </template>\n </template>\n <a\n v-else\n :class=\"clsParent\"\n href=\"javascript:\"\n @click=\"onClick\"\n @mouseenter=\"onHoverIn\"\n @mouseleave=\"onHoverOut\"\n >\n <span>\n <slot></slot>\n </span>\n </a>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { computed } from 'vue'\nimport CommonBase from '../../Common/base'\n\n// defineOptions\ndefineOptions({ name: 'ClLink' })\n\n// props\nconst props = defineProps({\n wavesColor: {\n type: String,\n default: 'black',\n validator: (value: string) => {\n return ['black', 'white'].indexOf(value) !== -1\n }\n },\n url: {\n type: [String, Object],\n default: ''\n },\n className: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n },\n isUnderline: {\n type: Boolean,\n default: false\n },\n isLight: {\n type: Boolean,\n default: false\n },\n isWaves: {\n type: Boolean,\n default: false\n },\n isTargetBlank: {\n type: Boolean,\n default: false\n },\n isOutside: {\n type: Boolean,\n default: false\n },\n isStopPropagation: {\n type: Boolean,\n default: false\n },\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'onClick', event: any): void\n (e: 'onHoverIn', event: any): void\n (e: 'onHoverOut', event: any): void\n}>()\n\n// computed\nconst optIsLink = computed(() => {\n return !CommonBase.isEmpty(props.url)\n})\n\nconst clsParent = computed(() => {\n const clsTemp: any = {\n 'btn-link': true,\n 'btn-link-disabled': props.disabled,\n 'always-light': props.isLight,\n 'underline-none': !props.isUnderline,\n }\n if (!CommonBase.isEmpty(props.className)) {\n props.className?.split(' ').forEach((cls) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n return clsTemp\n})\n\n// emit 外部使用的事件\nconst _emitClick = (event: any) => {\n emit('onClick', event)\n}\n\nconst _emitHoverIn = (event: any) => {\n emit('onHoverIn', event)\n}\n\nconst _emitHoverOut = (event: any) => {\n emit('onHoverOut', event)\n}\n\n// 内部触发的事件 on\nconst onClick = (event: any) => {\n if (!props.disabled) {\n _emitClick(event)\n if (props.isStopPropagation) {\n event.preventDefault()\n event.stopPropagation()\n }\n }\n}\n\nconst onHoverIn = (event: any) => {\n if (!props.disabled) {\n _emitHoverIn(event)\n }\n}\n\nconst onHoverOut = (event: any) => {\n if (!props.disabled) {\n _emitHoverOut(event)\n }\n}\n</script>\n","<template>\n <i class=\"clIconFont\" :class=\"iconClass\" :style=\"iconStyle\" />\n</template>\n\n<script setup lang=\"ts\">\n// import 导入\nimport { computed } from 'vue'\nimport './Index.css'\n\n// defineOptions(组件名称:Cl + 组件名,首字母大写)\ndefineOptions({ name: 'ClIconFont' })\n\n// props\nconst props = defineProps<{\n name: string\n size?: string | number\n color?: string\n}>()\n\n// 内部调用方法(方法名以 _ 开头)\nconst _getIconClass = () => {\n return `clIcon-${props.name}`\n}\n\n// 开放给外部使用的方法\nconst iconClass = computed(() => _getIconClass())\n\nconst iconStyle = computed(() => {\n const style: Record<string, string | undefined> = {}\n if (props.size) {\n style['font-size'] = typeof props.size === 'number' ? `${props.size}px` : props.size\n }\n if (props.color) {\n style.color = props.color\n }\n return style\n})\n</script>\n","<template>\n <div :class=\"clsParent\">\n <transition\n :enter-active-class=\"classTransitionEnter\"\n :leave-active-class=\"classTransitionLeave\"\n @enter=\"onTransitionEnter\"\n @after-leave=\"onTransitionLeave\"\n >\n <div\n :class=\"clsModal\"\n tabindex=\"-1\"\n v-show=\"optBase.isShow\"\n >\n <div\n ref=\"refElWrapper\"\n class=\"modal-wrapper\"\n :style=\"styWrapper\"\n @click=\"onClickBack\"\n >\n <div\n class=\"modal-dialog\"\n :style=\"styDialog\"\n ref=\"refElDialog\"\n >\n <div class=\"modal-content\">\n <slot></slot>\n </div>\n </div>\n </div>\n </div>\n </transition>\n <transition name=\"overlay-fade\">\n <div\n v-show=\"optBase.isShow\"\n class=\"modal-backdrop fade show\"\n ></div>\n </transition>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { onMounted, nextTick, watch, computed, reactive, ref } from 'vue'\nimport CommonBase from '../../Common/base'\n\n// defineOptions\ndefineOptions({ name: 'ClModalTransition' })\n\n// props\nconst props = defineProps<{\n className?: string\n isBackClick?: boolean\n width?: string\n classTransitionEnter?: string\n classTransitionLeave?: string\n}>()\n\n// emit\nconst emit = defineEmits<{\n (e: 'onClickBack'): void\n}>()\n\n// refs\nconst refElDialog = ref<HTMLElement | null>(null)\nconst refElWrapper = ref<HTMLElement | null>(null)\n\n// reactive\nconst optBase = reactive({\n isShow: false,\n isAlignTop: false,\n isAlignLeft: false,\n})\n\n// computed\nconst clsParent = computed(() => {\n const cls: any = {\n 'panel-modal': true,\n }\n if (!CommonBase.isEmpty(props.className)) {\n props.className?.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsModal = computed(() => {\n const cls = {\n modal: true,\n fade: true,\n show: optBase.isShow,\n }\n return cls\n})\n\nconst styWrapper = computed(() => {\n const sty: any = {}\n if (optBase.isAlignTop) {\n sty['align-items'] = 'flex-start'\n }\n if (optBase.isAlignLeft) {\n sty['justify-content'] = 'flex-start'\n }\n return sty\n})\n\nconst styDialog = computed(() => {\n const sty: any = {}\n if (!CommonBase.isEmpty(props.width)) {\n sty.width = props.width\n }\n return sty\n})\n\n// emit 外部使用的事件\nconst _emitClickBack = () => {\n emit('onClickBack')\n}\n\n// 内部方法\nconst _closeHide = () => {\n optBase.isShow = false\n document.body.className = document.body.className.replace(' modal-open', '')\n}\n\nconst _calculationAlignTop = () => {\n if (refElDialog.value) {\n optBase.isAlignTop = refElDialog.value.clientHeight > window.innerHeight\n }\n}\n\nconst _calculationAlignLeft = () => {\n if (refElDialog.value) {\n optBase.isAlignLeft = refElDialog.value.clientWidth > window.innerWidth\n }\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _calculationAlignTop()\n _calculationAlignLeft()\n })\n})\n\nwatch(\n () => optBase.isShow,\n (newValue) => {\n if (newValue) {\n if (!document.body.className.includes('modal-open')) {\n document.body.className += ' modal-open'\n }\n nextTick(() => {\n _calculationAlignTop()\n })\n } else {\n document.body.className = document.body.className.replace(' modal-open', '')\n optBase.isAlignTop = false\n }\n }\n)\n\n// 内部触发的事件 on\nconst onClickBack = (event: any) => {\n if (props.isBackClick) {\n if (event.currentTarget === event.target) {\n _closeHide()\n _emitClickBack()\n }\n }\n}\n\nconst onTransitionEnter = () => {}\n\nconst onTransitionLeave = () => {}\n\n// 外部调用\nconst show = () => {\n optBase.isShow = true\n}\n\nconst hide = () => {\n _closeHide()\n}\n\n// 暴露给外部的方法\nexport interface ClModalBaseTransitionExpose {\n show: () => void\n hide: () => void\n}\n\ndefineExpose({\n show,\n hide\n})\n</script>\n","<template>\n <cl-modal-transition\n :className=\"className\"\n :isBackClick=\"isBackClick && optBase.isLoadBackClick\"\n :classTransitionEnter=\"classTransitionEnter\"\n :width=\"width\"\n @onClickBack=\"onClickBack\"\n ref=\"refElTransition\"\n >\n <div\n v-if=\"isShowHeader\"\n class=\"modal-header\"\n >\n <h4 class=\"modal-title\">{{titleName}}</h4>\n <button\n type=\"button\"\n class=\"close\"\n @click=\"onClose\"\n ><i class=\"clIconFont clIcon-close\"></i></button>\n </div>\n <div class=\"modal-body\">\n <slot></slot>\n </div>\n <div\n class=\"modal-footer\"\n v-if=\"isShowFooter\"\n >\n <template v-if=\"posSubmitClose==='CloseSubmit'\">\n <cl-button\n :label=\"closeLabel||'取消'\"\n color=\"grayLight\"\n @onClick=\"onClose\"\n ></cl-button>\n <cl-button\n ref=\"refElBtnSubmit\"\n v-if=\"isShowSubmit\"\n :disabled=\"optBase.disabledSubmit\"\n :isShowLoad=\"isShowSubmitLoad\"\n :isShowBackDrop=\"true\"\n :label=\"submitLabel||'提交'\"\n @onClick=\"onSubmit\"\n ></cl-button>\n </template>\n <template v-else-if=\"posSubmitClose==='SubmitClose'\">\n <cl-button\n ref=\"refElBtnSubmit\"\n v-if=\"isShowSubmit\"\n :disabled=\"optBase.disabledSubmit\"\n :isShowLoad=\"isShowSubmitLoad\"\n :isShowBackDrop=\"true\"\n :label=\"submitLabel||'提交'\"\n @onClick=\"onSubmit\"\n ></cl-button>\n <cl-button\n :label=\"closeLabel||'取消'\"\n color=\"grayLight\"\n @onClick=\"onClose\"\n ></cl-button>\n </template>\n <template v-else></template>\n </div>\n <div\n v-else\n class=\"modal-footer-hide\"\n ></div>\n </cl-modal-transition>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { reactive, ref } from 'vue'\nimport CommonBase from '../../Common/base'\nimport ClModalTransition from './BaseTransition.vue'\nimport ClButton from '../Button/Index.vue'\n\n// defineOptions\ndefineOptions({ name: 'ClModal' })\n\n// props\nconst props = defineProps({\n posSubmitClose: {\n type: String,\n default: 'CloseSubmit',\n validator: (value: string) => {\n return ['CloseSubmit', 'SubmitClose'].indexOf(value) !== -1\n }\n },\n className: {\n type: String,\n default: ''\n },\n width: {\n type: String,\n default: '600px'\n },\n titleName: {\n type: String,\n default: ''\n },\n isBackClick: {\n type: Boolean,\n default: true\n },\n isShowHeader: {\n type: Boolean,\n default: true\n },\n isShowFooter: {\n type: Boolean,\n default: true\n },\n isShowSubmit: {\n type: Boolean,\n default: true\n },\n isShowSubmitLoad: {\n type: Boolean,\n default: true\n },\n closeLabel: {\n type: String,\n default: ''\n },\n submitLabel: {\n type: String,\n default: ''\n },\n classTransitionEnter: {\n type: String,\n default: 'animated fadeInDown'\n },\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'onSubmit'): void\n (e: 'onClose'): void\n}>()\n\n// refs\nconst refElTransition = ref<HTMLElement | null>(null)\nconst refElBtnSubmit = ref<HTMLElement | null>(null)\n\n// reactive\nconst optBase:any = reactive({\n isLoadBackClick: true,\n disabledSubmit: false,\n})\n\n// emit 外部使用的事件\nconst _emitClickSubmit = () => {\n emit('onSubmit')\n}\n\nconst _emitClickClose = () => {\n emit('onClose')\n}\n\n// 内部方法\nconst _closeHide = () => {\n if (refElTransition.value) {\n // @ts-ignore\n refElTransition.value.hide()\n }\n}\n\n// 内部触发的事件 on\nconst onSubmit = () => {\n if (props.isShowSubmitLoad) {\n optBase.isLoadBackClick = false\n }\n _emitClickSubmit()\n}\n\nconst onClose = () => {\n _closeHide()\n _emitClickClose()\n}\n\nconst onClickBack = () => {\n _emitClickClose()\n}\n\n// 外部调用\nconst show = () => {\n optBase.disabledSubmit = false\n if (refElTransition.value) {\n // @ts-ignore\n refElTransition.value.show()\n }\n}\n\nconst hide = () => {\n optBase.isLoadBackClick = true\n if (props.isShowSubmitLoad && refElBtnSubmit.value) {\n // @ts-ignore\n refElBtnSubmit.value.loadStop()\n }\n _closeHide()\n}\n\nconst loadStop = () => {\n optBase.isLoadBackClick = true\n if (props.isShowSubmitLoad && refElBtnSubmit.value) {\n // @ts-ignore\n refElBtnSubmit.value.loadStop()\n }\n}\n\nconst disabledSubmit = (b?: boolean) => {\n const isDisabled = CommonBase.isBoolean(b) ? b : true\n optBase.disabledSubmit = isDisabled\n}\n\n// 暴露给外部的方法\nexport interface ClModalExpose {\n show: () => void\n hide: () => void\n loadStop: () => void\n disabledSubmit: (b: boolean) => void\n}\n\ndefineExpose({\n show,\n hide,\n loadStop,\n disabledSubmit\n})\n</script>\n","<template>\n <div class=\"panel-load-fullCenter loading-wrapper\">\n <div class=\"load-fullCenter-bg\"></div>\n <div class=\"loading-content\">\n <ClLoad\n :theme=\"theme\"\n :size=\"size\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport ClLoad from './Index.vue'\n\n// defineOptions\ndefineOptions({ name: 'ClLoadFullCenter' })\n\n// props\ndefineProps<{\n theme?: string\n size?: string\n}>()\n</script>\n\n<style scoped>\n.panel-load-fullCenter.loading-wrapper {\n background-color: transparent;\n border-radius: 0;\n}\n\n.load-fullCenter-bg {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: rgba(0, 0, 0, 0.5);\n}\n</style>\n","<template>\n <div\n class=\"loading-wrapper\"\n v-if=\"isLoadIng || isEmpty\"\n >\n <div\n class=\"loading-content\"\n v-if=\"isLoadIng\"\n >\n <ClLoad\n :theme=\"theme\"\n :size=\"size\"\n />\n </div>\n <div\n v-else-if=\"isEmpty\"\n class=\"loading-nothing\"\n >\n <div>\n <slot name=\"nothingData\">\n <span>{{ noDataText || '暂无数据' }}</span>\n </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport ClLoad from './Index.vue'\n\n// defineOptions\ndefineOptions({ name: 'ClLoadIng' })\n\n// props\ndefineProps<{\n theme?: string\n size?: string\n isLoadIng?: boolean\n isEmpty?: boolean\n noDataText?: string\n}>()\n</script>\n\n<style scoped>\n.loading-nothing {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n height: 100%;\n font-size: 20px;\n color: #c0c0c0;\n cursor: default;\n}\n</style>\n","<template>\n <div\n class=\"panel-load-ward\"\n :style=\"styParent\"\n >\n <slot></slot>\n <ClLoadIng\n :isLoadIng=\"isLoadIng\"\n :isEmpty=\"isEmpty\"\n :theme=\"theme\"\n :size=\"size\"\n :noDataText=\"noDataText\"\n >\n <template #nothingData>\n <slot name=\"nothingData\"></slot>\n </template>\n </ClLoadIng>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport CommonBase from '../../Common/base'\nimport ClLoadIng from './Ing.vue'\n\n// defineOptions\ndefineOptions({ name: 'ClLoadWarp' })\n\n// props\nconst props = defineProps<{\n theme?: string\n size?: string\n isLoadIng?: boolean\n isEmpty?: boolean\n height?: string\n minHeight?: string\n noDataText?: string\n}>()\n\n// computed\nconst styParent = computed(() => {\n const sty: any = {}\n const { height, minHeight, isLoadIng } = props\n if (isLoadIng) {\n sty['min-height'] = '100px'\n }\n if (height && !CommonBase.isEmpty(height)) {\n sty.height = height\n } else {\n if (minHeight && !CommonBase.isEmpty(minHeight)) {\n sty['min-height'] = minHeight\n }\n }\n return sty\n})\n</script>\n\n<style scoped>\n.panel-load-ward {\n position: relative;\n min-height: 80px;\n height: 100%;\n}\n</style>\n","import { createPopper } from \"@popperjs/core\";\nimport CommonBase from \"./base\";\nimport CommonElement from \"./Element/index\";\nconst defaultTrigger = [\"click\", \"hover\", \"focus\"];\nconst defaultClass = { fade: \"fade\", show: \"show\" };\nconst defaultOptions = {\n type: \"tooltip\",\n placement: \"top\",\n trigger: \"click\",\n theme: \"white\",\n wrap: \"body\",\n template: \"\",\n contentBody: \"\",\n contentHeader: \"\",\n selectorBody: \"\",\n selectorHead: \"\",\n selectorArrow: \".arrow\",\n isLoad: false,\n loadOnCallback: null,\n loadOffCallback: null,\n isRunTrigger: true,\n isStopPropagation: true,\n isInitShow: true,\n isHtml: true,\n className: \"\",\n};\n\nclass Tooltip {\n elementModal: any;\n optionModal: any;\n pageData: any;\n pageObject: any;\n constructor(el: Element, options: any) {\n this.elementModal = {};\n this.elementModal.rely = el;\n this.optionModal = CommonBase.getJsonMerge(defaultOptions, options);\n this.pageData = {\n isOpen: false,\n events: [],\n };\n this.pageObject = null;\n [\"listenerOn\", \"listenerOff\", \"listenerHide\", \"listenerRelatedMouseLeave\"].forEach((handle) => {\n //@ts-ignore\n this[handle] = this[handle].bind(this);\n });\n this.init();\n }\n\n init() {\n if (!CommonBase.isEmpty(this.optionModal.template)) {\n const eventInfo = this.getEventType();\n this.setEventListener(eventInfo);\n }\n }\n\n getEventType() {\n const on: any = [];\n const off: any = [];\n let triggers = [];\n if (CommonBase.isArray(this.optionModal.trigger)) {\n triggers = this.optionModal.trigger;\n } else if (CommonBase.isString(this.optionModal.trigger)) {\n triggers = this.optionModal.trigger.split(\",\");\n }\n triggers.forEach((eventName: string) => {\n const eventType = CommonBase.isExistValue(defaultTrigger, eventName) ? eventName : \"\";\n switch (eventType) {\n case \"hover\":\n on.push(\"mouseenter\");\n off.push(\"mouseleave\");\n break;\n case \"focus\":\n on.push(\"focus\");\n off.push(\"blur\");\n break;\n case \"click\":\n on.push(\"click\");\n off.push(\"click\");\n break;\n }\n });\n return { on, off };\n }\n\n setEventListener(eventInfo: any) {\n if (!CommonBase.isEmpty(eventInfo.on)) {\n eventInfo.on.forEach((eventName: string) => {\n this.pageData.events.push({ on: eventName, func: this.listenerOn, eventName });\n this.elementModal.rely.addEventListener(eventName, this.listenerOn);\n });\n }\n if (!CommonBase.isEmpty(eventInfo.off)) {\n eventInfo.off.forEach((eventName: string) => {\n this.pageData.events.push({ off: eventName, func: this.listenerOff, eventName });\n this.elementModal.rely.addEventListener(eventName, this.listenerOff);\n });\n }\n }\n\n listenerOn(e: any) {\n if (this.optionModal.isInitShow) {\n if (this.optionModal.isStopPropagation) {\n e.preventDefault();\n e.stopPropagation();\n }\n if (this.pageData.isOpen) {\n return;\n }\n if (!this.optionModal.isRunTrigger) { return; }\n e.useOpenToTip = true;\n this.show();\n if (this.optionModal.isLoad) {\n if (CommonBase.isFunction(this.optionModal.loadOnCallback)) {\n this.optionModal.loadOnCallback();\n }\n }\n }\n }\n\n listenerOff(e: any) {\n if (!this.optionModal.isRunTrigger) { return; }\n const use = CommonBase.isBoolean(e.useOpenToTip) ? e.useOpenToTip : false;\n if (use) {\n return;\n }\n this.hide(e);\n if (this.optionModal.isLoad) {\n if (CommonBase.isFunction(this.optionModal.loadOffCallback)) {\n this.optionModal.loadOffCallback();\n }\n }\n }\n\n show() {\n if (CommonBase.isString(this.optionModal.wrap)) {\n const container = window.document.querySelector(this.optionModal.wrap);\n if (CommonBase.isUndefined(container)) {\n return;\n }\n }\n if (this.pageData.isOpen) {\n return;\n }\n this.operateShow();\n }\n\n operateShow() {\n if (!this.pageData.isOpen) {\n this.pageData.isOpen = true;\n if (CommonBase.isUndefined(this.elementModal.tip)) {\n this.elementModal.tip = this.createElement();\n const elWrap = this.getWrapElement();\n if (!CommonBase.isUndefined(elWrap)) {\n elWrap.appendChild(this.elementModal.tip);\n }\n const popperOptions: any = {\n placement: this.optionModal.placement,\n };\n popperOptions.modifiers = [\n {\n name: \"offset\",\n options: {\n offset: [0, 8],\n },\n },\n ];\n this.pageObject = createPopper(this.elementModal.rely, this.elementModal.tip, popperOptions);\n } else {\n this.pageObject.setOptions({\n modifiers: [{ name: \"eventListeners\", enabled: true }],\n });\n }\n\n this.setContentBody(this.optionModal.contentBody);\n this.setContentHeader(this.optionModal.contentHeader);\n const arrAdd = [\n defaultClass.fade,\n defaultClass.show,\n `bs-${this.optionModal.type}-${this.optionModal.placement}`,\n `tooltip-${this.optionModal.theme}`,\n ];\n if (!CommonBase.isEmpty(this.optionModal.className)) {\n this.optionModal.className.split(\" \").forEach((cls: string) => {\n if (!CommonBase.isEmpty(cls)) {\n arrAdd.push(cls);\n }\n });\n }\n this.elementModal.tip.className = CommonElement.getAddClass(this.elementModal.tip.className, arrAdd);\n\n // 元素 属性变动 更新浮层信息\n setTimeout(() => {\n this.pageObject.update();\n }, 50);\n }\n }\n\n createElement() {\n const tempDiv = window.document.createElement(\"div\");\n tempDiv.innerHTML = this.optionModal.template;\n return tempDiv.childNodes[0];\n }\n\n setContentBody(body: string) {\n if (!CommonBase.isEmpty(this.optionModal.selectorBody) && !CommonBase.isEmpty(body)) {\n if (CommonBase.isUndefined(this.elementModal.tip)) {\n this.optionModal.contentBody = body;\n } else {\n const el = this.elementModal.tip.querySelector(this.optionModal.selectorBody);\n if (!CommonBase.isUndefined(el)) {\n if (this.optionModal.isHtml) {\n const newBodyHtml = body.replace(/\\\\n/g, \"<br>\").replace(/\\n/g, \"<br>\");\n el.innerHTML = newBodyHtml;\n } else {\n el.innerText = body;\n }\n this.optionModal.contentBody = body;\n this.pageObject.update();\n }\n }\n }\n }\n setInitShow(isInitShow: boolean) {\n this.optionModal.isInitShow = isInitShow;\n }\n\n setContentHeader(header: string) {\n if (!CommonBase.isEmpty(this.optionModal.selectorHead)) {\n const el = this.elementModal.tip.querySelector(this.optionModal.selectorHead);\n if (!CommonBase.isUndefined(el)) {\n const headerValue = CommonBase.isEmpty(header) ? \"\" : header;\n if (this.optionModal.isHtml) {\n el.innerHTML = headerValue;\n } else {\n el.innerText = headerValue;\n }\n this.optionModal.contentHeader = headerValue;\n this.pageObject.update();\n }\n }\n }\n\n getWrapElement() {\n let elWrap;\n if (CommonBase.isString(this.optionModal.wrap)) {\n elWrap = window.document.querySelector(this.optionModal.wrap);\n } else if (this.optionModal.wrap === false) {\n elWrap = this.elementModal.rely.parentNode;\n }\n return elWrap;\n }\n\n hide(e: any) {\n if (!this.pageData.isOpen) {\n return;\n }\n if (!document.body.contains(this.elementModal.tip)) {\n return;\n }\n let isHide = true;\n if (e.type === \"mouseleave\") {\n const relatedEl = e.relatedreference || e.toElement || e.relatedTarget;\n if (this.elementModal.tip.contains(relatedEl)) {\n isHide = false;\n this.elementModal.tip.addEventListener(e.type, this.listenerRelatedMouseLeave);\n }\n }\n if (isHide) {\n this.operateHide();\n }\n }\n\n listenerRelatedMouseLeave(e: any) {\n const relatedEl = e.relatedreference || e.toElement || e.relatedTarget;\n this.elementModal.tip.removeEventListener(e.type, this.listenerRelatedMouseLeave);\n if (!this.elementModal.rely.contains(relatedEl)) {\n this.hide(e);\n }\n }\n\n operateHide() {\n if (this.pageData.isOpen) {\n this.pageData.isOpen = false;\n this.pageObject.setOptions({\n modifiers: [{ name: \"eventListeners\", enabled: false }],\n });\n this.elementModal.tip.className = CommonElement.getRemoveClass(this.elementModal.tip.className, defaultClass.show);\n this.elementModal.tip.removeEventListener(\"mouseenter\", this.listenerHide);\n this.elementModal.tip.removeEventListener(\"click\", this.listenerHide);\n this.elementModal.tip.parentNode.removeChild(this.elementModal.tip);\n this.elementModal.tip = null;\n }\n }\n\n listenerHide() {\n this.operateHide();\n }\n\n setRunTrigger(isRunTrigger: boolean) {\n this.optionModal.isRunTrigger = isRunTrigger;\n }\n\n dispose() {\n this.pageData.events.forEach(({ eventName, func }: any) => {\n this.elementModal.rely.removeEventListener(eventName, func);\n });\n this.pageData.events = [];\n if (this.pageObject) {\n this.operateHide();\n this.pageObject.destroy();\n }\n }\n\n clShow() {\n this.operateShow();\n }\n\n clHide() {\n this.operateHide();\n }\n\n clToggle() {\n if (this.pageData.isOpen) {\n this.operateHide();\n } else {\n this.operateShow();\n }\n }\n\n clSetContentBody(body: string) {\n this.setContentBody(body);\n }\n\n clSetContentHeader(header: string) {\n this.setContentHeader(header);\n }\n\n clSetRunTrigger(isRunTrigger: boolean) {\n this.setRunTrigger(isRunTrigger);\n }\n clSetInitShow(isInitShow: boolean) {\n this.setInitShow(isInitShow);\n }\n\n clDispose() {\n this.dispose();\n }\n}\n\nexport default Tooltip;\n","import \"./tooltip.css\";\nimport CommonBase from \"../../Common/base\";\nimport Tooltip from \"../../Common/tooltip\";\n\nconst _tooltip: any = {\n positions: {\n top: \"top\",\n right: \"right\",\n rightTop: \"right-start\",\n bottom: \"bottom\",\n left: \"left\",\n leftTop: \"left-start\",\n },\n triggers: [\"hover\", \"click\", \"focus\"],\n themes: [\"white\", \"black\"],\n options: {\n position: \"top\", // top | right | bottom | left | rightTop\n trigger: \"hover\", // hover | focus | click\n theme: \"white\", // white | black\n template: \"<div class='tooltip'><div class='tooltip-inner'></div><div class='arrow' data-popper-arrow></div></div>\",\n selectorBody: \".tooltip-inner\",\n selectorArrow: \".arrow\",\n isHtml: true,\n isRunTrigger: true,\n isFixedVisible: false, // todo 待定\n isStopPropagation: true,\n className: \"\",\n },\n bind: (el: any, binding: any) => {\n _tooltip.create(el, binding);\n },\n create: (el: any, binding: any) => {\n if (CommonBase.isObject(binding) && !CommonBase.isUndefined(binding.value)) {\n const isInit = _tooltip.getIsInit(binding);\n if (isInit) {\n const bodyHtml = _tooltip._getValueHtml(binding.value);\n if (!CommonBase.isEmpty(bodyHtml)) {\n const newOption = _tooltip.getOptions();\n newOption.contentBody = bodyHtml;\n newOption.placement = _tooltip.getPosition(binding);\n newOption.trigger = _tooltip.getTrigger(binding);\n newOption.theme = _tooltip.getTheme(binding);\n newOption.isHtml = _tooltip.getIsHtml(binding);\n newOption.isFixedVisible = _tooltip.getFixedVisible(binding);\n newOption.isStopPropagation = _tooltip.getStopPropagation(binding);\n newOption.className = _tooltip.getClassName(binding);\n const tooltip: any = new Tooltip(el, newOption);\n tooltip._vueEl = el;\n el._tooltip = tooltip;\n }\n }\n }\n },\n getIsInit: (binding: any) => {\n return CommonBase.isObject(binding.value) && CommonBase.isBoolean(binding.value.init) ? binding.value.init : true;\n },\n getOptions: () => {\n const newOption = CommonBase.getJsonClone(_tooltip.options);\n return newOption;\n },\n _getValueHtml: (bindingValue: any) => {\n let bodyHtml;\n const valueType = typeof bindingValue;\n switch (valueType) {\n case \"string\":\n case \"number\":\n bodyHtml = bindingValue.toString();\n break;\n case \"object\":\n if (!CommonBase.isEmpty(bindingValue.html)) {\n bodyHtml = bindingValue.html;\n }\n break;\n default:\n bodyHtml = \"\";\n }\n return bodyHtml;\n },\n getPosition: (binding: any) => {\n let position = CommonBase.isObject(binding.value) ? binding.value.position : \"\";\n if (CommonBase.isEmpty(position)) {\n for (const [kp, vp] of Object.entries(_tooltip.positions)) {\n if (binding.modifiers[kp]) {\n position = vp;\n }\n }\n } else {\n if (CommonBase.isExistJsonKey(_tooltip.positions, position)) {\n position = _tooltip.positions[position];\n }\n }\n return CommonBase.isEmpty(position) ? _tooltip.options.position : position;\n },\n getTrigger: (binding: any) => {\n let trigger = CommonBase.isObject(binding.value) ? binding.value.trigger : \"\";\n if (CommonBase.isEmpty(trigger)) {\n _tooltip.triggers.forEach((t: any) => {\n if (binding.modifiers[t]) {\n trigger = t;\n }\n });\n }\n return CommonBase.isEmpty(trigger) ? _tooltip.options.trigger : trigger;\n },\n getTheme: (binding: any) => {\n let theme = CommonBase.isObject(binding.value) ? binding.value.theme : \"\";\n if (CommonBase.isEmpty(theme)) {\n _tooltip.themes.forEach((t: any) => {\n if (binding.modifiers[t]) {\n theme = t;\n }\n });\n }\n return CommonBase.isEmpty(theme) ? _tooltip.options.theme : theme;\n },\n getIsHtml: (binding: any) => {\n const isHtml = CommonBase.isObject(binding.value) ? binding.value.isHtml : true;\n return CommonBase.isBoolean(isHtml) ? isHtml : _tooltip.options.isFixedVisible;\n },\n getIsRunTrigger: (bindingValue: any) => {\n return CommonBase.isObject(bindingValue) && CommonBase.isBoolean(bindingValue.isRunTrigger) ? bindingValue.isRunTrigger : true;\n },\n getFixedVisible: (binding: any) => {\n const isFixedVisible = CommonBase.isObject(binding.value) ? binding.value.isFixedVisible : false;\n return CommonBase.isBoolean(isFixedVisible) ? isFixedVisible : _tooltip.options.isFixedVisible;\n },\n getStopPropagation: (binding: any) => {\n const isStopPropagation = CommonBase.isObject(binding.value) ? binding.value.isStopPropagation : false;\n return CommonBase.isBoolean(isStopPropagation) ? isStopPropagation : _tooltip.options.isStopPropagation;\n },\n getClassName: (binding: any) => {\n const cls = CommonBase.isObject(binding.value) ? binding.value.className : \"\";\n return CommonBase.isEmpty(cls) ? _tooltip.options.className : cls;\n },\n update: (el: any, binding: any) => {\n const newIsInit = _tooltip.getIsInit(binding);\n if (newIsInit) {\n if (!el._tooltip && newIsInit) {\n _tooltip.create(el, binding);\n }\n const newValue = _tooltip._getValueHtml(binding.value);\n const oldValue = _tooltip._getValueHtml(binding.oldValue);\n const isValueObject = CommonBase.isObject(binding.value);\n let isUpdContent = false;\n if (newValue !== oldValue) {\n isUpdContent = true;\n } else {\n if (isValueObject && !CommonBase.isUndefined(binding.value.updRefreshInx)) {\n const newRefreshInx = binding.value.updRefreshInx;\n const oldRefreshInx = binding.oldValue.updRefreshInx;\n if (newRefreshInx !== oldRefreshInx) {\n isUpdContent = true;\n }\n }\n }\n if (el._tooltip) {\n if (isUpdContent) {\n el._tooltip.clSetContentBody(newValue);\n }\n el._tooltip.clSetInitShow(newIsInit);\n\n const newRunTrigger = _tooltip.getIsRunTrigger(binding.value);\n const oldRunTrigger = _tooltip.getIsRunTrigger(binding.oldValue);\n if (!newRunTrigger || !newIsInit) {\n el._tooltip.clHide();\n }\n if (newRunTrigger !== oldRunTrigger) {\n el._tooltip.clSetRunTrigger(newRunTrigger);\n }\n }\n } else {\n _tooltip.destroy(el);\n }\n },\n destroy: (el: any) => {\n if (el._tooltip) {\n el._tooltip.clDispose();\n delete el._tooltip;\n }\n },\n show: (el: any) => {\n if (el._tooltip) {\n el._tooltip.clShow();\n }\n },\n hide: (el: any) => {\n if (el._tooltip) {\n el._tooltip.clHide();\n }\n },\n};\n\nexport const name = \"clTooltip\";\nexport const directive = () => {\n return {\n deep: true,\n mounted: _tooltip.bind,\n updated: _tooltip.update,\n unmounted: _tooltip.destroy,\n };\n};\n\nexport const tooltipDirectives = {\n mounted: _tooltip.bind,\n updated: _tooltip.update,\n};\n\nexport const tooltipCommon = {\n show: _tooltip.show,\n hide: _tooltip.hide,\n};","<template>\n <div :class=\"clsParent\">\n <template\n v-for=\"(info, _cbIndex) in list\"\n :key=\"`${_optKeyIndex}-${_cbIndex}`\"\n >\n <div\n v-if=\"info.isShow || info.isShow===undefined\"\n :class=\"clsContainer\"\n :style=\"styContainerFun(info)\"\n >\n <span>\n <span>\n <input\n type=\"radio\"\n :id=\"`rd_${name}_${info.id}`\"\n :name=\"name\"\n :value=\"info.id\"\n :disabled=\"info.isDisabled || disabled\"\n :checked=\"info.id.toString()===optTextValue\"\n @click=\"onClick(info)\"\n >\n <label :for=\"`rd_${name}_${info.id}`\">\n <i\n v-if=\"info.icon && info.icon.length>0\"\n :class=\"info.icon\"\n v-cltooltip=\"{html:info.name,className:'tooltip-modal'}\"\n ></i>\n <template v-else> {{info.name}}</template>\n </label>\n </span>\n <i\n v-if=\"info.tipMsg && info.tipMsg.length>0\"\n :class=\"clsTipFun(info)\"\n v-cltooltip=\"{html:info.tipMsg,className:'tooltip-modal'}\"\n ></i>\n </span>\n </div>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted, nextTick } from 'vue'\nimport './Index.css'\nimport CommonBase from '../../Common/base'\nimport { tooltipDirectives } from '../../Web/Tooltip'\n\n// defineOptions\ndefineOptions({\n name: 'ClRadio',\n directives: {\n cltooltip: tooltipDirectives\n }\n})\n\n// props\nexport interface ListInfo {\n id: string | number\n name: string\n isDisabled: boolean\n tipMsg: string\n tipIcon: string\n isShow: boolean\n icon: string\n width?: string\n}\n\nconst props = defineProps({\n value: {\n type: [String, Number],\n required: true\n },\n className: {\n type: String,\n default: ''\n },\n name: {\n type: String,\n required: true\n },\n list: {\n type: Array as () => ListInfo[],\n default: () => []\n },\n disabled: {\n type: Boolean,\n default: false\n },\n width: {\n type: String,\n default: 'auto'\n },\n isInline: {\n type: Boolean,\n default: true\n }\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'update:value', value: string): void\n (e: 'onChange', value: string, info: ListInfo): void\n (e: 'onInit'): void\n}>()\n\n// 常量 / 变量定义\nconst _optKeyIndex = `rd-${CommonBase.getRandom(8)}`\nvoid _optKeyIndex // 模板 :key 中使用,vue-tsc 无法追踪\nconst optTextValue = ref(props.value?.toString() || '')\nlet _listDataToJson: any = {}\nconst _optIsFirstDataFinish = ref(false)\n\n// computed\nconst clsParent = computed(() => {\n const className = props.className\n const cls: any = {\n \"panel-radio\": true,\n }\n if (className && !CommonBase.isEmpty(className)) {\n className.split(\" \").forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsContainer = computed(() => {\n const cls: any = {\n radio: true,\n \"radio-default\": true,\n }\n cls[\"radio-inline\"] = props.isInline ?? true\n return cls\n})\n\n// 内部调用方法\nconst clsTipFun = (item: any) => {\n const cls: any = {\n \"radio-icon-tip\": true,\n }\n if (CommonBase.isEmpty(item.tipIcon)) {\n cls[\"clIconFont clIcon-question-circle\"] = true\n } else {\n cls[item.tipIcon] = true\n }\n return cls\n}\n\nconst styContainerFun = (item: any) => {\n const sty: any = {}\n const { width } = props\n if (item && !CommonBase.isEmpty(item.width)) {\n sty.width = item.width\n } else {\n if (!CommonBase.isEmpty(width)) {\n sty.width = props.width\n }\n }\n return sty\n}\n\nconst _emitModelValue = (value: string) => {\n emit(\"update:value\", value)\n}\n\nconst _emitChange = (info: any) => {\n const value = info.id.toString()\n _emitModelValue(value)\n emit(\"onChange\", value, CommonBase.getJsonClone(info))\n}\n\nconst _emitInit = () => {\n nextTick(() => {\n emit(\"onInit\")\n })\n}\n\nconst _getValue = () => {\n return CommonBase.isExistJsonKey(_listDataToJson, optTextValue.value) ? optTextValue.value : \"\"\n}\n\nconst _convertListToJson = (list: any[]) => {\n _listDataToJson = CommonBase.isEmpty(list) ? {} : CommonBase.getJsonByList(list)\n}\n\nconst _checkValueInList = () => {\n if (_optIsFirstDataFinish.value) {\n const selectValue = CommonBase.isEmpty(optTextValue.value) ? \"\" : optTextValue.value\n const isExist = CommonBase.isExistJsonKey(_listDataToJson, selectValue)\n if (!isExist) {\n optTextValue.value = \"\"\n _emitModelValue(\"\")\n }\n }\n}\n\nconst _setValue = (value: any) => {\n if (value !== optTextValue.value) {\n optTextValue.value = value?.toString() || ''\n }\n}\n\nconst _initMain = () => {\n _optIsFirstDataFinish.value = props.list.length !== 0\n _convertListToJson(props.list)\n _checkValueInList()\n}\n\n// watch\nwatch(_optIsFirstDataFinish, (newValue) => {\n if (newValue) {\n _emitInit()\n }\n})\n\nwatch(\n () => props.list,\n (newValue) => {\n if (!_optIsFirstDataFinish.value) {\n _optIsFirstDataFinish.value = true\n if (newValue.length === 0) {\n _checkValueInList()\n }\n }\n }\n)\n\nwatch(\n [() => props.value, () => props.list],\n ([newValue, newList]) => {\n const list = newList as any[]\n if (!_optIsFirstDataFinish.value && list.length > 0) {\n _optIsFirstDataFinish.value = true\n }\n _convertListToJson(list)\n if (newValue !== optTextValue.value) {\n _setValue(newValue)\n }\n _checkValueInList()\n }\n)\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// 事件方法\nconst onClick = (item: any) => {\n if (!item.isDisabled && !props.disabled) {\n const value = item.id.toString()\n if (value !== optTextValue.value) {\n optTextValue.value = value\n _emitChange(item)\n }\n }\n}\n\n// 开放给外部使用的方法\nconst getValue = () => {\n return _getValue()\n}\n\nconst getValueData = () => {\n const value = getValue()\n return CommonBase.isExistJsonKey(_listDataToJson, value) ? CommonBase.getJsonClone(_listDataToJson[value]) : {}\n}\n\nconst setValue = (value: string) => {\n _setValue(value)\n _checkValueInList()\n}\n\nconst runInitComplete = () => {\n if (!_optIsFirstDataFinish.value) {\n _optIsFirstDataFinish.value = true\n _convertListToJson(props.list)\n _setValue(props.value)\n _checkValueInList()\n }\n}\n\n// 导出类型定义\nexport interface ClRadioExpose {\n getValue: () => string\n getValueData: () => Record<string, any>\n setValue: (value: string) => void\n runInitComplete: () => void\n}\n\n// defineExpose\ndefineExpose({\n getValue,\n getValueData,\n setValue,\n runInitComplete\n})\n</script>","<template>\n <div :class=\"clsContainer\">\n <span>\n <span>\n <input\n type=\"radio\"\n :id=\"optForId\"\n :name=\"name\"\n :checked=\"value\"\n :disabled=\"isDisabled\"\n @click=\"onClick\"\n >\n <label :for=\"optForId\">\n <i\n v-if=\"icon && icon.length>0\"\n :class=\"icon\"\n v-cltooltip=\"{html:label,className:'tooltip-modal'}\"\n ></i>\n <template v-else> {{label}}</template>\n </label>\n </span>\n <i\n v-if=\"tipMsg && tipMsg.length>0\"\n :class=\"clsTip\"\n v-cltooltip=\"{html:tipMsg,className:'tooltip-modal'}\"\n ></i>\n </span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport './Index.css'\nimport CommonBase from '../../Common/base'\nimport { tooltipDirectives } from '../../Web/Tooltip'\n\n// defineOptions\ndefineOptions({\n name: 'ClRadioOne',\n directives: {\n cltooltip: tooltipDirectives\n }\n})\n\n// props\nconst props = defineProps<{\n className?: string\n forId?: string\n name?: string\n label?: string\n value?: boolean\n isDisabled?: boolean\n icon?: string\n tipMsg?: string\n tipIcon?: string\n}>()\n\n// emit\nconst emit = defineEmits<{\n (e: 'update:value', value: boolean): void\n (e: 'onChange', value: boolean): void\n}>()\n\n// 常量 / 变量定义\nconst optForId = CommonBase.isEmpty(props.forId) ? `rd_${props.name}_${CommonBase.getRandom(8)}` : props.forId\n\n// computed\nconst clsContainer = computed(() => {\n const cls: any = {\n radio: true,\n \"radio-default\": true,\n \"radio-inline\": true,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(\" \").forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsTip = computed(() => {\n const { tipIcon } = props\n const cls: any = {\n \"radio-icon-tip\": true,\n }\n if (!CommonBase.isEmpty(tipIcon) && tipIcon) {\n cls[tipIcon] = true\n } else {\n cls[\"clIconFont clIcon-question-circle\"] = true\n }\n return cls\n})\n\n// 内部调用方法\nconst _emitChange = (value: boolean) => {\n emit(\"update:value\", value)\n emit(\"onChange\", value)\n}\n\n// 事件方法\nconst onClick = (event: any) => {\n const checked = event.currentTarget.checked\n if (!checked) {\n _emitChange(checked)\n }\n}\n</script>","<template>\n <div :class=\"clsParent\">\n <template v-for=\"(info, _cbIndex) in list\" :key=\"`${optKeyIndex}-${_cbIndex}`\">\n <div v-if=\"info.isShow || info.isShow === undefined\" :class=\"clsContainer\" :style=\"styContainerFun(info)\">\n <span>\n <span>\n <input type=\"checkbox\" :id=\"`${optKeyIndex}_${name}_${info.id}`\" :name=\"name\" :value=\"info.id\"\n :disabled=\"info.isDisabled || disabled\" :checked=\"optTextValue.includes(info.id.toString())\"\n @click=\"onClick(info)\">\n <label :for=\"`${optKeyIndex}_${name}_${info.id}`\">\n <slot :data=\"info\">\n <i v-if=\"info.icon && info.icon.length > 0\" :class=\"info.icon\"\n v-cltooltip=\"{ html: info.name, className: 'tooltip-modal' }\"></i>\n <template v-else> {{ info.name }}</template>\n </slot>\n </label>\n </span>\n <i v-if=\"info.tipMsg && info.tipMsg.length > 0\" :class=\"clsTipFun(info)\"\n v-cltooltip=\"{ html: info.tipMsg, className: 'tooltip-modal' }\"></i>\n </span>\n </div>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted, nextTick } from 'vue'\nimport './Index.css'\nimport CommonBase from '../../Common/base'\nimport { tooltipDirectives } from '../../Web/Tooltip'\n\n// defineOptions\ndefineOptions({\n name: 'ClCheckbox',\n directives: {\n cltooltip: tooltipDirectives\n }\n})\n\n// props\nexport interface ListInfo {\n id: string | number\n name: string\n isDisabled: boolean\n tipMsg: string\n tipIcon: string\n isShow: boolean\n icon: string\n width?: string\n}\n\nconst props = defineProps({\n value: {\n type: String,\n required: true\n },\n className: {\n type: String,\n default: ''\n },\n name: {\n type: String,\n required: true\n },\n list: {\n type: Array as () => ListInfo[],\n default: () => []\n },\n disabled: {\n type: Boolean,\n default: false\n },\n width: {\n type: String,\n default: ''\n },\n isInline: {\n type: Boolean,\n default: true\n },\n checkChangeBefore: {\n type: Function,\n default: undefined\n }\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'update:value', value: string): void\n (e: 'onChange', value: string, dataList: ListInfo[], isAll: boolean): void\n (e: 'onInit'): void\n}>()\n\n// 常量 / 变量定义\nconst optKeyIndex = `cb-${CommonBase.getRandom(8)}`\nconst optTextValue = ref(CommonBase.isEmpty(props.value) ? [] : props.value.split(','))\nconst _optIsFirstDataFinish = ref(false)\nlet _listDataToJson: any = {}\nconst _pageData = {\n lastValue: [] as string[]\n}\n\n// computed\nconst clsParent = computed(() => {\n const className = props.className\n const cls: any = {\n \"panel-checkbox\": true,\n }\n if (className && !CommonBase.isEmpty(className)) {\n className.split(\" \").forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsContainer = computed(() => {\n const cls: any = {\n checkbox: true,\n \"checkbox-default\": true,\n }\n cls[\"checkbox-inline\"] = props.isInline ?? true\n return cls\n})\n\n// 内部调用方法\nconst clsTipFun = (item: any) => {\n const cls: any = {\n \"checkbox-icon-tip\": true,\n }\n if (CommonBase.isEmpty(item.tipIcon)) {\n cls[\"clIconFont clIcon-question-circle\"] = true\n } else {\n cls[item.tipIcon] = true\n }\n return cls\n}\n\nconst styContainerFun = (item: any) => {\n const sty: any = {}\n const { width } = props\n if (item && !CommonBase.isEmpty(item.width)) {\n sty.width = item.width\n } else {\n if (!CommonBase.isEmpty(width)) {\n sty.width = props.width\n }\n }\n return sty\n}\n\nconst _emitModelValue = (value: string) => {\n emit(\"update:value\", value)\n}\n\nconst _emitChange = (value: string) => {\n const dataList: any[] = []\n if (!CommonBase.isEmpty(value)) {\n value.split(',').forEach((v: string) => {\n if (CommonBase.isExistJsonKey(_listDataToJson, v)) {\n dataList.push(CommonBase.getJsonClone(_listDataToJson[v]))\n }\n })\n }\n const isAll = dataList.length > 0 && dataList.length === props.list.length\n _emitModelValue(value)\n emit(\"onChange\", value, dataList, isAll)\n}\n\nconst _emitInit = () => {\n nextTick(() => {\n emit(\"onInit\")\n })\n}\n\nconst _getEffectiveValue = () => {\n const effectiveValue: any[] = []\n optTextValue.value.forEach((v: string) => {\n if (CommonBase.isExistJsonKey(_listDataToJson, v)) {\n effectiveValue.push(v)\n }\n })\n return effectiveValue\n}\n\nconst _convertListToJson = (list: any[]) => {\n _listDataToJson = CommonBase.isEmpty(list) ? {} : CommonBase.getJsonByList(list)\n}\n\nconst _checkValueInList = () => {\n if (_optIsFirstDataFinish.value) {\n if (!CommonBase.isEmpty(optTextValue.value)) {\n const effectiveValue = _getEffectiveValue()\n if (!CommonBase.isEqualArr(optTextValue.value, effectiveValue)) {\n optTextValue.value = effectiveValue\n _emitModelValue(effectiveValue.join(','))\n }\n }\n }\n}\n\nconst _setValue = (value: string) => {\n const arrValue = value.split(',')\n let isExist = CommonBase.isEqualArr(optTextValue.value, arrValue)\n if (isExist) {\n isExist = value === optTextValue.value.join(',')\n }\n if (!isExist) {\n optTextValue.value = arrValue\n }\n}\n\nconst _initMain = () => {\n _optIsFirstDataFinish.value = props.list.length !== 0\n _convertListToJson(props.list)\n _checkValueInList()\n _pageData.lastValue = CommonBase.getArrClone(optTextValue.value)\n}\n\n// watch\nwatch(_optIsFirstDataFinish, (newValue) => {\n if (newValue) {\n _emitInit()\n }\n})\n\nwatch(\n () => props.list,\n (newValue) => {\n if (!_optIsFirstDataFinish.value) {\n _optIsFirstDataFinish.value = true\n if (newValue.length === 0) {\n _checkValueInList()\n }\n _emitInit()\n }\n }\n)\n\nwatch(\n [() => props.value, () => props.list],\n ([newValue, newList]) => {\n const list = newList as any[]\n if (!_optIsFirstDataFinish.value && list.length > 0) {\n _optIsFirstDataFinish.value = true\n _emitInit()\n }\n _convertListToJson(list)\n if (newValue !== props.value) {\n _setValue(newValue)\n }\n _checkValueInList()\n }\n)\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// 事件方法\nconst onClick = async (item: any) => {\n if (!item.isDisabled && !props.disabled) {\n const value: string = item.id.toString()\n let selectArr = CommonBase.getArrClone(optTextValue.value)\n if (CommonBase.isExistValue(optTextValue.value, value)) {\n selectArr = CommonBase.getArrRemoveById(selectArr, value)\n } else {\n selectArr.push(value)\n }\n\n const selectValueStr = selectArr.join(',')\n let tempCheck: any = true\n if (props.checkChangeBefore) {\n tempCheck = await props.checkChangeBefore(selectValueStr)\n tempCheck = CommonBase.isBoolean(tempCheck) ? tempCheck : true\n }\n if (tempCheck) {\n optTextValue.value = selectArr\n _pageData.lastValue = selectArr\n _emitChange(selectValueStr)\n } else {\n nextTick(() => {\n optTextValue.value = selectArr\n nextTick(() => {\n optTextValue.value = _pageData.lastValue\n })\n })\n }\n }\n}\n\n// 开放给外部使用的方法\nconst getValue = () => {\n const values = _getEffectiveValue()\n return values.join(',')\n}\n\nconst getValueData = () => {\n const list: any[] = []\n optTextValue.value.forEach((v: string) => {\n if (CommonBase.isExistJsonKey(_listDataToJson, v)) {\n list.push(CommonBase.getJsonClone(_listDataToJson[v]))\n }\n })\n return list\n}\n\nconst setValue = (value: string) => {\n _setValue(value)\n _checkValueInList()\n}\n\nconst runInitComplete = () => {\n if (!_optIsFirstDataFinish.value) {\n _optIsFirstDataFinish.value = true\n _convertListToJson(props.list)\n _setValue(props.value)\n _checkValueInList()\n _emitInit()\n }\n}\n\n// 导出类型定义\nexport interface ClCheckboxExpose {\n getValue: () => string\n getValueData: () => Record<string, any>[]\n setValue: (value: string) => void\n runInitComplete: () => void\n}\n\n// defineExpose\ndefineExpose({\n getValue,\n getValueData,\n setValue,\n runInitComplete\n})\n</script>","<template>\n <div :class=\"clsContainer\">\n <span>\n <span>\n <input\n type=\"checkbox\"\n :id=\"optForId\"\n :name=\"name\"\n :class=\"clsCheckbox\"\n :checked=\"value\"\n :disabled=\"disabled\"\n @click=\"onClick\"\n >\n <label :for=\"optForId\">\n <i\n v-if=\"icon && icon.length>0\"\n :class=\"icon\"\n v-cltooltip=\"{html:label,className:'tooltip-modal'}\"\n ></i>\n <template v-else> {{label}}</template>\n </label>\n </span>\n <i\n v-if=\"tipMsg && tipMsg.length>0\"\n :class=\"clsTip\"\n v-cltooltip=\"{html:tipMsg,className:'tooltip-modal'}\"\n ></i>\n </span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport './Index.css'\nimport CommonBase from '../../Common/base'\nimport { tooltipDirectives } from '../../Web/Tooltip'\n\n// defineOptions\ndefineOptions({\n name: 'ClCheckboxOne',\n directives: {\n cltooltip: tooltipDirectives\n }\n})\n\n// props\nconst props = defineProps<{\n className?: string\n forId?: string\n name?: string\n label?: string\n value?: boolean\n disabled?: boolean\n indeterminate?: boolean\n icon?: string\n tipMsg?: string\n tipIcon?: string\n}>()\n\n// emit\nconst emit = defineEmits<{\n (e: 'update:value', value: boolean): void\n (e: 'onChange', data: { event: any; value: boolean }): void\n}>()\n\n// 常量 / 变量定义\nconst optForId = CommonBase.isEmpty(props.forId) ? `cb_${props.name || ''}_${CommonBase.getRandom(8)}` : props.forId\n\n// computed\nconst clsContainer = computed(() => {\n const cls: any = {\n checkbox: true,\n \"checkbox-default\": true,\n \"checkbox-inline\": true,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(\" \").forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsTip = computed(() => {\n const { tipIcon } = props\n const cls: any = {\n \"checkbox-icon-tip\": true,\n }\n if (!CommonBase.isEmpty(tipIcon) && tipIcon) {\n cls[tipIcon] = true\n } else {\n cls[\"clIconFont clIcon-question-circle\"] = true\n }\n return cls\n})\n\nconst clsCheckbox = computed(() => {\n return {\n indeterminate: props.indeterminate,\n }\n})\n\n// 内部调用方法\nconst _emitChange = (e: any, value: boolean) => {\n emit(\"update:value\", value)\n emit(\"onChange\", { event: e, value })\n}\n\n// 事件方法\nconst onClick = (event: any) => {\n _emitChange(event, event.currentTarget.checked)\n}\n</script>","<template>\n <span\n :class=\"clsParent\"\n :style=\"styParent\"\n >{{optTextNum}}</span>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, watch, onMounted } from 'vue'\nimport './Index.css'\nimport CommonBase from '../../Common/base'\n\n// defineOptions\ndefineOptions({\n name: 'ClBadge'\n})\n\n// props\nconst props = defineProps({\n className: String, // desc: 自定义CSS类名\n color: {\n type: String,\n default: 'default' // enum: default, green, red, yellow, black, gray (可自定义) | desc: 颜色主题\n },\n colorSty: String, // desc: 自定义颜色样式\n num: [String, Number], // desc: 显示的数字\n maxNum: {\n type: Number,\n default: -1 // desc: 最大显示数字,超过显示 maxNum+\n },\n isHideZero: {\n type: Boolean,\n default: true // desc: 是否隐藏数字为0的徽章\n },\n isDot: {\n type: Boolean,\n default: false // desc: 是否显示为圆点\n }\n})\n\n// 验证:num 或者 isDot 必须传一个值\nconst validateProps = () => {\n if (CommonBase.isEmpty(props.num) && !props.isDot) {\n console.warn('[ClBadge] Warning: Either \"num\" prop or \"isDot\" prop is required. When \"num\" is not provided, \"isDot\" must be true.')\n }\n}\n\nonMounted(() => {\n validateProps()\n})\n\nwatch(() => [props.num, props.isDot], () => {\n validateProps()\n})\n\n// computed\nconst optTextNum = computed(() => {\n let v = ''\n if (!CommonBase.isEmpty(props.num)) {\n const n = Number(props.num)\n if (n === 0 && props.isHideZero) {\n v = ''\n } else if (n > (props.maxNum ?? -1) && (props.maxNum ?? -1) > 0) {\n v = `${props.maxNum}+`\n } else {\n v = n.toString()\n }\n }\n return v\n})\n\nconst clsParent = computed(() => {\n const cls: any = {\n badge: true,\n }\n if (!CommonBase.isEmpty(props.color)) {\n cls[`bg-${props.color}`] = true\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n if (props.isDot) {\n cls['badge-dot'] = true\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const sty: any = {}\n if (!CommonBase.isEmpty(props.colorSty)) {\n sty['background-color'] = `${props.colorSty} !important`\n }\n return sty\n})\n</script>","<template>\n <span ref=\"refElText\">{{optValue}}</span>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport * as CountUp from 'countup.js'\n\n// defineOptions\ndefineOptions({\n name: 'ClCountup'\n})\n\n// props\nconst props = defineProps<{\n value?: string | number\n decimal?: number\n isThousand?: boolean\n separator?: string\n animationTime?: number\n}>()\n\n// 常量 / 变量定义\nconst refElText = ref<HTMLSpanElement | null>(null)\nconst optValue = ref('')\nconst _pageData: any = {\n lastValue: '',\n}\n\n// 内部调用方法\nconst _initValue = (value: any) => {\n const { animationTime = 0, decimal = 0, isThousand = true, separator = ',' } = props\n if (animationTime === 0) {\n let newValue = ''\n if (!CommonBase.isEmpty(value)) {\n newValue = CommonBase.getValueByFormat(value.toString(), decimal === 0 ? 'int' : 'float', {\n decimalNum: decimal,\n isThousands: isThousand,\n })\n if (isThousand && separator !== ',') {\n newValue = newValue.replace(/,/g, separator)\n }\n }\n optValue.value = newValue\n } else {\n const start = CommonBase.isEmpty(_pageData.lastValue) ? 0 : Number(_pageData.lastValue)\n const end = value && !CommonBase.isEmpty(value) ? Number(value) : 0\n const options = {\n startVal: start,\n duration: animationTime,\n decimalPlaces: decimal,\n separator,\n useGrouping: isThousand,\n }\n const objCountUp = new CountUp.CountUp(refElText.value as HTMLSpanElement, end, options)\n if (!objCountUp.error) {\n objCountUp.start()\n }\n }\n}\n\nconst _initMain = () => {\n _initValue(props.value)\n}\n\n// watch\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue !== oldValue) {\n _pageData.lastValue = oldValue\n _initValue(newValue)\n }\n }\n)\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n</script>","<template>\n <div :class=\"clsParent\">\n <div class=\"imgCropper-container\">\n <div>\n <div class=\"imgCropper-main\">\n <vue-cropper\n ref=\"refElCropper\"\n v-bind=\"optCropper\"\n @realTime=\"onRealTime\"\n @imgLoad=\"onImgLoad\"\n ></vue-cropper>\n <div class=\"frame-alignline\">\n <template v-if=\"optAlignLine.indexOf('center') > -1\">\n <div class=\"alignline-h alignline-center-h\"></div>\n <div class=\"alignline-v alignline-center-v\"></div>\n </template>\n <template v-if=\"optAlignLine.indexOf('nineGrid') > -1\">\n <div class=\"alignline-h alignline-nineGrid-h1\"></div>\n <div class=\"alignline-h alignline-nineGrid-h2\"></div>\n <div class=\"alignline-v alignline-nineGrid-v1\"></div>\n <div class=\"alignline-v alignline-nineGrid-v2\"></div>\n </template>\n </div>\n <ClLoadFullCenter\n v-if=\"optBase.isInitImageLoading\"\n theme=\"rotaryLine\"\n ></ClLoadFullCenter>\n </div>\n <div class=\"imgCropper-btns\">\n <div>\n <div\n v-if=\"isShowUpload\"\n class=\"imgCropper-upload\"\n >\n <input\n type=\"file\"\n :id=\"optBase.uploadAgainId\"\n :name=\"optBase.uploadAgainId\"\n accept=\"image/jpg,image/jpeg,image/pjpeg,image/png,image/x-png\"\n @change=\"onChangeFileAgain\"\n >\n <label\n ref=\"refElFileLabel\"\n :for=\"optBase.uploadAgainId\"\n >\n <span\n title=\"重新上传\"\n @click.stop=\"onClickFileLabel\"\n ><i class=\"clIconFont clIcon-upload\"></i></span>\n </label>\n </div>\n </div>\n\n <div class=\"imgCropper-btns-opt\">\n <span\n title=\"放大\"\n @click.stop=\"onLarge\"\n ><i class=\"clIconFont clIcon-search-plus\"></i></span>\n <span\n title=\"缩小\"\n @click.stop=\"onSmall\"\n ><i class=\"clIconFont clIcon-search-minus\"></i></span>\n <span\n title=\"左转90°\"\n @click.stop=\"onRotateLeft\"\n ><i class=\"clIconFont clIcon-rotate-left\"></i></span>\n <span\n title=\"右转90°\"\n @click.stop=\"onRotateRight\"\n ><i class=\"clIconFont clIcon-rotate-right\"></i></span>\n <span\n title=\"重置\"\n @click.stop=\"onReduction\"\n ><i class=\"clIconFont clIcon-restore\"></i></span>\n <span\n v-if=\"isShowSave\"\n title=\"保存\"\n @click.stop=\"onSave\"\n ><i class=\"clIconFont clIcon-save\"></i></span>\n </div>\n </div>\n </div>\n <div\n v-if=\"isPreview\"\n :class=\"clsPreview\"\n >\n <div :style=\"optPreview.pStyle\">\n <img\n :src=\"optPreview.src\"\n :style=\"optPreview.style\"\n alt=\"\"\n >\n </div>\n <div\n v-if=\"isPreviewAlignLine\"\n class=\"frame-alignline\"\n >\n <template v-if=\"optAlignLine.indexOf('center') > -1\">\n <div class=\"alignline-h alignline-center-h\"></div>\n <div class=\"alignline-v alignline-center-v\"></div>\n </template>\n <template v-if=\"optAlignLine.indexOf('nineGrid') > -1\">\n <div class=\"alignline-h alignline-nineGrid-h1\"></div>\n <div class=\"alignline-h alignline-nineGrid-h2\"></div>\n <div class=\"alignline-v alignline-nineGrid-v1\"></div>\n <div class=\"alignline-v alignline-nineGrid-v2\"></div>\n </template>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { watch, onMounted, nextTick, computed, ref, reactive } from 'vue'\nimport 'vue-cropper/dist/index.css'\nimport { VueCropper } from 'vue-cropper'\nimport ClLoadFullCenter from '../Load/FullCenter.vue'\nimport CommonBase from '../../Common/base'\nimport './index.css'\n\ndefineOptions({ name: 'ClCropperBase' })\n\nconst props = defineProps({\n className: String,\n src: {\n type: String,\n required: true\n },\n width: {\n type: Number,\n required: true\n },\n height: {\n type: Number,\n required: true\n },\n isFixedAspectRatio: {\n type: Boolean,\n default: true\n },\n isPreview: {\n type: Boolean,\n default: true\n },\n previewShape: {\n type: String,\n default: 'square' // square | round\n },\n enlarge: {\n type: Number,\n default: 2\n },\n isShowUpload: {\n type: Boolean,\n default: true\n },\n isShowSave: {\n type: Boolean,\n default: false\n },\n isCenterBox: {\n type: Boolean,\n default: true\n },\n fillColor: {\n type: String,\n default: 'transparent' // #FFFFFF\n },\n alignLine: {\n type: String,\n default: 'center' // center | nineGrid\n },\n isPreviewAlignLine: {\n type: Boolean,\n default: false\n }\n})\n\nconst emit = defineEmits<{\n (e: 'onImgLoad', isSuccess: boolean): void\n (e: 'onImgSave'): void\n}>()\n\nconst refElCropper: any = ref(null)\nconst refElFileLabel: any = ref(null)\n\nconst ran = CommonBase.getRandom(8)\nconst optBase = reactive({\n uploadAgainId: `btnImgCropper_uploadAgain_${ran}`,\n isInitImageLoading: false\n})\n\nconst optCropper: any = reactive({\n img: '',\n outputSize: 1,\n outputType: 'png',\n info: true,\n canScale: true,\n autoCrop: true,\n autoCropWidth: props.width,\n autoCropHeight: props.height,\n fixed: props.isFixedAspectRatio,\n fixedNumber: [1, 1],\n full: false,\n fixedBox: false,\n canMove: true,\n canMoveBox: true,\n original: false,\n centerBox: props.isCenterBox,\n high: true,\n infoTrue: true,\n maxImgSize: 2000,\n enlarge: props.enlarge,\n mode: 'contain',\n limitMinSize: 50,\n fillColor: props.fillColor\n})\n\nconst optPreview = reactive({\n src: '',\n style: {} as any,\n pStyle: {} as any\n})\n\nconst optAlignLine = computed(() => {\n const { alignLine } = props\n const arr: string[] = alignLine && !CommonBase.isEmpty(alignLine) ? alignLine.split(',') : []\n return arr\n})\n\nconst clsParent = computed(() => {\n const { className } = props\n const cls: any = {\n 'panel-imgCropper': true\n }\n if (className && !CommonBase.isEmpty(className)) {\n className.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsPreview = computed(() => {\n const { previewShape } = props\n const cls: any = {\n 'imgCropper-preview': true\n }\n cls[`imgCropper-preview-${previewShape}`] = true\n return cls\n})\n\nconst _setFixedNumber = () => {\n const { width, height } = props\n let fixedNumber: number[] = []\n if (width > height) {\n fixedNumber = [1, height / width]\n } else if (width < height) {\n fixedNumber = [width / height, 1]\n } else {\n fixedNumber = [1, 1]\n }\n optCropper.fixedNumber = fixedNumber\n}\n\nconst _setCropperImgSrc = () => {\n const { src } = props\n let newSrc = ''\n if (src && !CommonBase.isEmpty(src)) {\n if (src.substring(0, 5) !== 'data:') {\n if (/^(http|https):\\/\\/[^\\s]+$/.test(src)) {\n const t = `_t=${new Date().getTime()}`\n const joinStr = src.indexOf('?') === -1 ? '?' : '&'\n newSrc = src + joinStr + t\n }\n } else {\n newSrc = src\n }\n optBase.isInitImageLoading = true\n }\n optCropper.img = newSrc\n}\n\nconst _initMain = () => {\n _setFixedNumber()\n _setCropperImgSrc()\n}\n\nonMounted(() => {\n optBase.isInitImageLoading = true\n nextTick(() => {\n _initMain()\n })\n})\n\nwatch(\n () => props.src,\n (newValue: string) => {\n if (!CommonBase.isEmpty(newValue)) {\n _setCropperImgSrc()\n }\n }\n)\n\nconst onRealTime = (imgData: any) => {\n optPreview.src = imgData.url\n optPreview.style = imgData.img\n optPreview.pStyle = imgData.div\n}\n\nconst onImgLoad = (result: any) => {\n const isSuccess = result === 'success'\n optBase.isInitImageLoading = false\n emit('onImgLoad', isSuccess)\n}\n\nconst onChangeFileAgain = (el: any) => {\n CommonBase.getBase64ByFile(el.currentTarget.files).then((result: any) => {\n optCropper.img = result\n })\n}\n\nconst onClickFileLabel = () => {\n // refElFileLabel.value.click()\n}\n\nconst onLarge = () => {\n refElCropper.value.changeScale(1)\n}\n\nconst onSmall = () => {\n refElCropper.value.changeScale(-1)\n}\n\nconst onRotateLeft = () => {\n refElCropper.value.rotateLeft()\n}\n\nconst onRotateRight = () => {\n refElCropper.value.rotateRight()\n}\n\nconst onReduction = () => {\n refElCropper.value.refresh()\n}\n\nconst onSave = () => {\n emit('onImgSave')\n}\n\nconst getImageBase64 = (): Promise<any> => {\n return new Promise((resolve) => {\n refElCropper.value.getCropData((cropperData: any) => {\n resolve(cropperData)\n })\n })\n}\n\ndefineExpose({\n getImageBase64\n})\n</script>\n","<template>\n <ClModal\n v-if=\"isModal\"\n ref=\"refElModal\"\n width=\"850px\"\n titleName=\"图片裁切\"\n :isShowSubmitLoad=\"false\"\n closeLabel=\"取消\"\n submitLabel=\"确定\"\n @onSubmit=\"onSubmit\"\n >\n <ClCropperBase\n ref=\"refElCropper\"\n :className=\"className\"\n :src=\"src\"\n :width=\"width\"\n :height=\"height\"\n :isFixedAspectRatio=\"isFixedAspectRatio\"\n :isPreview=\"isPreview\"\n :previewShape=\"previewShape\"\n :enlarge=\"enlarge\"\n :isCenterBox=\"isCenterBox\"\n :isShowUpload=\"isShowUpload\"\n :isShowSave=\"false\"\n :alignLine=\"alignLine\"\n :isPreviewAlignLine=\"isPreviewAlignLine\"\n :fillColor=\"fillColor\"\n @onImgLoad=\"onImgLoad\"\n ></ClCropperBase>\n </ClModal>\n <ClCropperBase\n v-else\n ref=\"refElCropper\"\n :className=\"className\"\n :src=\"src\"\n :width=\"width\"\n :height=\"height\"\n :isFixedAspectRatio=\"isFixedAspectRatio\"\n :isPreview=\"isPreview\"\n :previewShape=\"previewShape\"\n :enlarge=\"enlarge\"\n :isCenterBox=\"isCenterBox\"\n :isShowUpload=\"isShowUpload\"\n :isShowSave=\"isShowSave\"\n :alignLine=\"alignLine\"\n :isPreviewAlignLine=\"isPreviewAlignLine\"\n :fillColor=\"fillColor\"\n @onImgLoad=\"onImgLoad\"\n @onImgSave=\"onImgSave\"\n ></ClCropperBase>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport ClCropperBase from './Base.vue'\nimport ClModal from '../Modal/Index.vue'\n\ndefineOptions({ name: 'ClCropper' })\n\nconst props = defineProps({\n className: String,\n src: {\n type: String,\n required: true\n },\n width: {\n type: Number,\n required: true\n },\n height: {\n type: Number,\n required: true\n },\n isFixedAspectRatio: {\n type: Boolean,\n default: true\n },\n isCenterBox: {\n type: Boolean,\n default: true\n },\n isPreview: {\n type: Boolean,\n default: true\n },\n previewShape: {\n type: String,\n default: 'square' // square | round\n },\n enlarge: {\n type: Number,\n default: 2\n },\n isModal: {\n type: Boolean,\n default: true\n },\n isShowUpload: {\n type: Boolean,\n default: true\n },\n isShowSave: {\n type: Boolean,\n default: false\n },\n fillColor: {\n type: String,\n default: 'transparent' // #FFFFFF\n },\n alignLine: {\n type: String,\n default: 'center' // center | nineGrid\n },\n isPreviewAlignLine: {\n type: Boolean,\n default: false\n }\n})\n\nconst emit = defineEmits<{\n (e: 'onSubmit', data: any): void\n (e: 'onImgLoad', isSuccess: boolean): void\n}>()\n\nconst refElModal: any = ref(null)\nconst refElCropper: any = ref(null)\n\nconst _getOutImageBase64 = () => {\n return refElCropper.value.getImageBase64().then((data: any) => data)\n}\n\nconst onSubmit = () => {\n return _getOutImageBase64().then((data: any) => {\n emit('onSubmit', data)\n refElModal.value.hide()\n })\n}\n\nconst onImgLoad = (isSuccess: boolean) => {\n emit('onImgLoad', isSuccess)\n}\n\nconst onImgSave = () => {\n return _getOutImageBase64().then((data: any) => {\n emit('onSubmit', data)\n })\n}\n\nconst getImageBase64 = () => {\n return _getOutImageBase64()\n}\n\nconst show = () => {\n if (refElModal.value && props.isModal) {\n refElModal.value.show()\n }\n}\n\ndefineExpose({\n getImageBase64,\n show\n})\n</script>\n","/**!\n * Sortable 1.15.0\n * @author\tRubaXa <trash@rubaxa.org>\n * @author\towenm <owen23355@gmail.com>\n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n /**HTMLElement*/\n el,\n /**String*/\n selector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n /**HTMLElement*/\n el,\n /**String*/\n selector,\n /**HTMLElement*/\n ctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n var winWidth = document.documentElement.clientWidth || document.body.clientWidth || window.innerWidth;\n var winHeight = document.documentElement.clientHeight || document.body.clientHeight || window.innerHeight;\n top = 0;\n left = 0;\n bottom = winHeight;\n right = winWidth;\n height = winHeight;\n width = winWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghostClone && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghostClone || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghostClone) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n dragElClone,\n parentEl,\n ghostEl,\n ghostElClone,\n ghostMatrixLast,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\n ghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n _silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\n supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n }(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n },\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n },\n\n /**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n },\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n },\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n },\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n }; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n //console.log(\"new Sortable\")\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5,\n extOption: {\n boundary: {\n isOut: false,\n element: \"\",\n x: 0,\n y: 0,\n },\n wrapBody: {\n isWrap: false,\n element: \"\"\n },\n cross: {\n isCross: false,\n isSameStruct: true,\n dropEndBeforeCallback: null\n },\n }\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) { }\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n if (ghostEl) {\n /// 判断是否移出边界\n const boundaryCheckInfo = SortableExt.checkMoveOutBoundary(ghostEl, this.el, this.options);\n if (boundaryCheckInfo.isOut) {\n //console.log(boundaryCheckInfo)\n if (ghostMatrixLast) {\n ghostMatrix.e = ghostMatrixLast.e;\n ghostMatrix.f = ghostMatrixLast.f;\n } else {\n if (boundaryCheckInfo.top) {\n ghostMatrix.f = boundaryCheckInfo.x * -1;\n }\n if (boundaryCheckInfo.right) {\n ghostMatrix.e = boundaryCheckInfo.y;\n }\n if (boundaryCheckInfo.bottom) {\n ghostMatrix.f = boundaryCheckInfo.x;\n }\n if (boundaryCheckInfo.left) {\n ghostMatrix.e = boundaryCheckInfo.y * -1;\n }\n }\n } else {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n\n //防止当前超出\n const boundaryCheckInfo1 = SortableExt.checkMoveOutBoundary(ghostEl, this.el, this.options);\n if (!boundaryCheckInfo1.isOut) {\n ghostMatrixLast = ghostMatrix;\n }\n }\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n ghostElClone = dragEl.cloneNode(true);\n ghostEl = dragEl.cloneNode(true);\n ghostEl = SortableExt.setWrapBody(ghostEl, this.el, this.options)\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n Sortable.ghostClone = ghostElClone;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n //console.log(\"activeSortable && !options.disabled !Sortable.eventCanceled\")\n SortableExt.setCrossEl(target, this.options)\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n //console.log(\"!elLastChild || _ghostIsLast\")\n SortableExt.setCrossEl(target, this.options)\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n //console.log(\"elLastChild && _ghostIsFirst\")\n capture();\n SortableExt.setCrossEl(target, this.options)\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostElClone));//sibling === ghostEl\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n //console.log(\"target.parentNode === el\")\n SortableExt.setCrossEl(target, this.options)\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n //console.log(\"DropEnd\")\n SortableExt.crossDropEnd(this.options).then((crossResult) => {\n //console.log(crossResult)\n if (crossResult) {\n ////\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n this._nulling();\n\n ////\n }\n })\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = dragElClone = parentEl = ghostEl = ghostElClone = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.ghostClone = Sortable.clone = Sortable.active = ghostMatrixLast = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray(pEl) {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n /**Event*/\n evt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() { }\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() { }\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\n multiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\n folding = false,\n // Folding any other time\n dragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\n * Selects the provided multi-drag item\n * @param {HTMLElement} el The element to be selected\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\n * Deselects the provided multi-drag item\n * @param {HTMLElement} el The element to be deselected\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\n * Insert multi-drag clones\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\n * @param {HTMLElement} rootEl\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\nconst SortableExt = {\n isBoolean: (value) => {\n return typeof value === \"boolean\"\n },\n isFunction: (value) => {\n return typeof value === \"function\"\n },\n isUndefined: (value) => {\n return typeof value === \"undefined\" || value === null;\n },\n getOffset: (el) => {\n const tempElBox = el.getBoundingClientRect();\n const doc = el && el.ownerDocument;\n const docEl = doc.documentElement;\n let winEl\n if (docEl.toString() !== \"[object Window]\") {\n const ownerDocument = el.ownerDocument;\n winEl = ownerDocument ? ownerDocument.defaultView || window : window;\n } else {\n winEl = docEl;\n }\n return {\n top: (tempElBox.top + (winEl.pageYOffset || docEl.scrollTop)) - (docEl.clientTop || 0),\n left: (tempElBox.left + (winEl.pageXOffset || docEl.scrollLeft)) - (docEl.clientLeft || 0),\n width: tempElBox.width,\n height: tempElBox.height\n };\n },\n createElement: (el) => {\n const sf = el.substring(0, 1);\n if (sf === \"<\") {\n const temp = document.createElement(\"div\"); temp.innerHTML = el;\n return temp.children[0]\n } else {\n return document.createElement(el)\n }\n },\n getElementData: (pEl, options) => {\n const order = [],\n children = pEl.children,\n n = children.length;\n let el;\n for (let i = 0; i < n; i++) {\n el = children[i];\n const attrData = el.getAttribute(options.dataIdAttr);\n if (attrData && attrData.length > 0) {\n order.push(attrData);\n }\n }\n return order;\n },\n checkMoveOutBoundary: (moveEl, pEl, option) => {\n let isCheck = true;\n let result = {};\n const boundary = option.extOption.boundary;\n if (boundary) {\n let isOut = boundary.isOut;\n isOut = SortableExt.isBoolean(isOut) ? isOut : true;\n if (!isOut) {\n //isCheck = false;\n let elOffset;\n if (boundary.element && boundary.element.length > 0) {\n const boundaryEl = window.document.querySelector(boundary.element);\n if (boundaryEl) {\n elOffset = SortableExt.getOffset(boundaryEl)\n }\n } else {\n elOffset = SortableExt.getOffset(pEl)\n }\n if (elOffset) {\n //evt.pageX evt.pageY\n const moveElOffset = SortableExt.getOffset(moveEl);\n let x = Number(boundary.x);\n if (x === NaN) {\n x = 0;\n }\n let y = Number(boundary.y);\n if (y === NaN) {\n y = 0;\n }\n const checkTop = elOffset.top - x > moveElOffset.top;\n const checkRight = elOffset.left + elOffset.width + y < moveElOffset.left + moveElOffset.width;\n const checkBottom = elOffset.top + elOffset.height + x < moveElOffset.top + moveElOffset.height;\n const checkLeft = elOffset.left - y > moveElOffset.left;\n isCheck = !(checkTop || checkRight || checkBottom || checkLeft)\n if (!isCheck) {\n result = {\n top: checkTop,\n right: checkRight,\n bottom: checkBottom,\n left: checkLeft,\n x,\n y,\n }\n }\n }\n }\n }\n result.isOut = !isCheck;\n return result;\n },\n setWrapBody: (el, pEl, option) => {\n let elWrap = el;\n let wrapBody = option.extOption.wrapBody;\n if (option.fallbackOnBody) {\n if (wrapBody) {\n option.extOption.wrapBody.isWrap = true;\n } else {\n option.extOption.wrapBody = { isWrap: true }\n }\n wrapBody = option.extOption.wrapBody;\n }\n if (wrapBody) {\n let isWrap = wrapBody.isWrap;\n isWrap = SortableExt.isBoolean(isWrap) ? isWrap : false;\n if (isWrap) {\n //let elWrap;\n if (wrapBody.element && wrapBody.element.length > 0) {\n elWrap = SortableExt.createElement(wrapBody.element)\n elWrap.appendChild(el);\n } else {\n elWrap = pEl.cloneNode();\n elWrap.appendChild(el);\n switch (elWrap.tagName.toLocaleLowerCase()) {\n case \"tbody\":\n const temp = pEl.parentNode.cloneNode();\n temp.appendChild(elWrap);\n elWrap = temp\n break;\n }\n }\n }\n }\n return elWrap;\n },\n checkCross: (moveEl, containerEl, option) => {\n const cross = option.extOption.cross;\n let result = { newEl: null, isSameStruct: true };\n if (cross) {\n let isCross = cross.isCross;\n isCross = SortableExt.isBoolean(isCross) ? isCross : false;\n if (moveEl.parentNode === containerEl.parentNode) {\n isCross = false;\n }\n if (isCross) {\n let isSameStruct = cross.isSameStruct;\n isSameStruct = SortableExt.isBoolean(isSameStruct) ? isSameStruct : true;\n if (!isSameStruct) {\n const tagName = containerEl.tagName.toLocaleLowerCase();\n const newEl = SortableExt.createElement(tagName);\n const newCls = [];\n const clsArr = [\"darg-select\", \"darg-placeholder\"];\n containerEl.className.split(\" \").forEach((s) => {\n if (clsArr.indexOf(s) === -1) {\n newCls.push(s);\n }\n })\n newCls.push(...clsArr)\n newEl.className = newCls.join(\" \");\n css(newEl, 'height', containerEl.clientHeight);\n switch (tagName) {\n case \"tr\":\n let len = 0;\n for (let i = 0; i < containerEl.children.length; i++) {\n const s = containerEl.children[i].getAttribute(\"colspan\");\n len += (SortableExt.isUndefined(s) ? 1 : Number(s))\n }\n const td = SortableExt.createElement(\"td\");\n td.setAttribute(\"colspan\", len);\n newEl.appendChild(td)\n break;\n }\n result.isSameStruct = false;\n result.newEl = newEl;\n }\n }\n }\n return result;\n },\n setCrossEl: (containerEl, option) => {\n var result = SortableExt.checkCross(dragEl, containerEl, option)\n if (!result.isSameStruct) {\n const temp = dragEl.cloneNode(true);\n dragEl.parentNode.removeChild(dragEl)\n if (dragElClone) {\n dragEl = dragElClone\n dragElClone = null\n } else {\n dragEl = result.newEl\n }\n if (!dragElClone) {\n dragElClone = temp\n }\n }\n },\n crossDropEnd: (option) => {\n return new Promise((resolve, reject) => {\n const cross = option.extOption.cross;\n let isRunCb = false;\n const parentEl = dragEl && dragEl.parentNode;\n if (cross) {\n let isCross = cross.isCross;\n isCross = SortableExt.isBoolean(isCross) ? isCross : false;\n if (isCross) {\n if (parentEl && rootEl !== parentEl) {\n if (cross.dropEndBeforeCallback) {\n isRunCb = true;\n }\n }\n }\n }\n if (isRunCb) {\n const assistData = ghostElClone.getAttribute(option.dataIdAttr)\n const arrSortId = SortableExt.getElementData(parentEl, option)\n const checkCb = cross.dropEndBeforeCallback({ data: assistData, inx: index(dragEl), arrSortId });\n if (checkCb && checkCb.then && SortableExt.isFunction(checkCb.then)) {\n SortableExt._crossDropLoad(true);\n checkCb.then((checkResult) => {\n SortableExt._crossDropLoad(false);\n const isSuccess = SortableExt._crossDropEndCb(checkResult)\n resolve({ success: isSuccess })\n });\n } else {\n const isSuccess = SortableExt._crossDropEndCb(checkCb)\n resolve({ success: isSuccess })\n }\n } else {\n resolve({ success: true })\n }\n })\n },\n _crossDropLoad: (isAdd) => {\n let containerEl;\n const tagName = dragEl.tagName.toLocaleLowerCase();\n if (dragEl.children.length === 0) {\n containerEl = dragEl;\n } else {\n switch (tagName) {\n case \"tr\":\n containerEl = dragEl.children[0]\n break\n }\n }\n if (isAdd) {\n const el = SortableExt.createElement(\"div\");\n el.className = \"panel-darg-loading\";\n el.innerHTML = '<div class=\"darg-add-loading\"></div>'\n containerEl.appendChild(el)\n } else {\n const loadEl = dragEl.querySelector(\".panel-darg-loading\")\n loadEl.parentNode.removeChild(loadEl);\n }\n },\n _crossDropEndCb: (result) => {\n var isSuccess = SortableExt.isBoolean(result) ? result : true;\n if (isSuccess) {\n dragEl && dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n }\n }\n}\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","<template>\n <div\n ref=\"refElTop\"\n :class=\"clsParent\"\n >\n <slot></slot>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, computed, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport { Drag as DragEvent } from '../../Common/Element/Event/index'\nimport Sortable from './Sortable.js'\n\n// defineOptions\ndefineOptions({\n name: 'ClDarg'\n})\n\n// props\nconst props = defineProps<{\n className?: string\n group?: string\n dargRegionCls?: string\n handleCls?: string\n selectCls?: string\n placeholderCls?: string\n isBoundaryOut?: boolean\n boundaryElement?: string\n isWrapBody?: boolean\n wrapBodyElement?: string\n isDisabledInner?: boolean\n isDisabledOutsideInto?: boolean\n isGroupSameStruct?: boolean\n groupDropEndBeforeCallback?: Function\n keyAttrId?: string\n}>()\n\n// emit\nconst emit = defineEmits<{\n (e: 'onChangeSort', arrSort: any[]): void\n}>()\n\n// 常量 / 变量定义\nconst refElTop = ref<HTMLElement | null>(null)\nconst _pageData: any = {\n sortableObj: {},\n dargEventObj: {} as DragEvent,\n}\n\n// computed\nconst clsParent = computed(() => {\n const cls: any = {\n 'panel-darg': true,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\n// 内部调用方法\nconst _emitChangeSort = () => {\n const arrSort = _pageData.sortableObj.toArray()\n emit('onChangeSort', arrSort)\n}\n\nconst _initSortable = () => {\n nextTick(() => {\n const el = refElTop.value?.querySelector(props.dargRegionCls || '.darg-region') as HTMLElement | null\n if (!el) return\n \n const {\n group,\n placeholderCls,\n handleCls,\n selectCls,\n isBoundaryOut,\n boundaryElement,\n isWrapBody,\n wrapBodyElement,\n isDisabledInner,\n isDisabledOutsideInto,\n isGroupSameStruct,\n groupDropEndBeforeCallback,\n keyAttrId,\n } = props\n const option: any = {\n sort: !isDisabledInner,\n forceFallback: true,\n fallbackOnBody: isWrapBody,\n fallbackTolerance: 0,\n handle: handleCls,\n ghostClass: placeholderCls,\n chosenClass: selectCls,\n dragClass: 'darg-moveing',\n animation: 150,\n dataIdAttr: keyAttrId,\n extOption: {\n boundary: {\n isOut: isBoundaryOut,\n element: boundaryElement,\n x: 5,\n y: 5,\n },\n wrapBody: {\n isWrap: isWrapBody,\n element: wrapBodyElement,\n },\n cross: {\n isCross: false,\n isSameStruct: isGroupSameStruct,\n dropEndBeforeCallback: groupDropEndBeforeCallback,\n },\n },\n onUpdate: () => {\n _emitChangeSort()\n },\n }\n if (group && !CommonBase.isEmpty(group) && isBoundaryOut) {\n if (isDisabledOutsideInto) {\n option.group = {\n name: group,\n pull: 'clone',\n put: false,\n }\n option.animation = 0\n } else {\n option.group = group\n }\n option.extOption.cross.isCross = true\n }\n _pageData.sortableObj = new Sortable(el, option)\n })\n}\n\nconst _initMain = () => {\n _initSortable()\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// 开放给外部使用的方法\nconst getArrSort = () => {\n return _pageData.sortableObj.toArray ? _pageData.sortableObj.toArray() : []\n}\n\n// 导出类型定义\nexport interface ClDargExpose {\n getArrSort: () => string[]\n}\n\n// defineExpose\ndefineExpose({\n getArrSort\n})\n</script>","<template>\n <div\n ref=\"refElParent\"\n :class=\"clsParent\"\n v-cltooltip=\"{\n init:isShowTitle&&optBase.isUseTooltip&&optBase.isPosParent,\n html:tooltipHtml||text,\n theme:tooltipTheme,\n position:tooltipPosition,\n trigger:tooltipTrigger,\n isHtml:tooltipIsHtml\n }\"\n ><span\n ref=\"refElSpan\"\n :title=\"optTitle\"\n v-cltooltip=\"{\n init:isShowTitle&&optBase.isUseTooltip&&optBase.isPosSpan,\n html:tooltipHtml||text,\n theme:tooltipTheme,\n position:tooltipPosition,\n trigger:tooltipTrigger,\n isHtml:tooltipIsHtml\n }\"\n >{{text}}</span></div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, reactive, computed, watch, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport { tooltipDirectives } from '../../Web/Tooltip'\n\n// defineOptions\ndefineOptions({\n name: 'ClEllipsis',\n directives: {\n cltooltip: tooltipDirectives\n }\n})\n\n// props\nconst props = defineProps<{\n className?: string\n text?: string\n isUseTooltip?: boolean\n tooltipTheme?: string\n tooltipPosition?: string\n tooltipTrigger?: string\n tooltipIsHtml?: boolean\n tooltipHtml?: string\n isAutoTooltip?: boolean\n isShowTitle?: boolean\n}>()\n\n// 常量 / 变量定义\nconst refElParent = ref<HTMLElement | null>(null)\nconst refElSpan = ref<HTMLElement | null>(null)\n\nconst optBase = reactive({\n isPosParent: false,\n isPosSpan: false,\n isUseTooltip: false,\n})\n\n// computed\nconst optTitle = computed(() => {\n let title = ''\n if (props.isUseTooltip || optBase.isUseTooltip) {\n title = ''\n } else {\n title = props.isShowTitle ? props.text || '' : ''\n }\n return title\n})\n\nconst clsParent = computed(() => {\n const cls: any = {\n 'panel-ellipsis': true,\n 'ellipsis-txt-title': true,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\n// 内部调用方法\nconst _initTipPos = () => {\n if (props.isUseTooltip && props.text && props.text.length > 0) {\n if (refElParent.value && refElSpan.value) {\n const pW = refElParent.value.clientWidth\n const cW = refElSpan.value.offsetWidth\n if (pW > 0 && cW > 0) {\n const isPosSpan = pW >= cW\n const isPosParent = pW < cW\n\n if (props.isAutoTooltip) {\n optBase.isUseTooltip = isPosParent\n } else {\n optBase.isUseTooltip = true\n }\n optBase.isPosSpan = isPosSpan\n optBase.isPosParent = isPosParent\n }\n }\n }\n}\n\nconst _initMain = () => {\n _initTipPos()\n}\n\n// watch\nwatch(\n () => props.text,\n () => {\n nextTick(() => {\n _initTipPos()\n })\n },\n)\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n</script>","class DelayFun {\n private _fun: any;\n private _time: number;\n private _cb: any;\n constructor(cb: any, delay = 200) {\n this._cb = cb;\n this._time = delay;\n }\n stopRun() {\n if (this._fun) {\n clearTimeout(this._fun);\n this._fun = null;\n }\n }\n run(cb?: any) {\n const newCb = cb ? cb : this._cb;\n if (newCb) {\n this.stopRun();\n this._fun = setTimeout(()=>{\n newCb();\n }, this._time);\n }\n }\n}\nexport default DelayFun;","import CommonBase from \"../base\";\nclass AnimateEasing {\n startTime: number;\n startPos: number;\n endPos: number;\n duration: number;\n runEasing: any;\n\n runIngFun: any;\n\n lastPos: number;\n lastInterval: number;\n\n timeAnimate: any;\n constructor(option: any) {\n this.startTime = 0;\n this.startPos = 0;\n this.endPos = 0;\n this.duration = 0;\n this.runEasing = null;\n\n this.runIngFun = option.runIngCallback;\n\n this.lastPos = 0;\n this.lastInterval = 0;\n }\n\n _easing = {\n /**\n * t:动画已经消耗的时间\n * b:初始位置\n * c:目标位置\n * d:动画持续的总时间\n */\n linear: (t: number, b: number, c: number, d: number) => c * t / d + b,\n easeInCubic: (t: number, b: number, c: number, d: number) => c * (t /= d) * t * t + b, // eslint-disable-line\n easeOutCubic: (t: number, b: number, c: number, d: number) => c * ((t = t / d - 1) * t * t + 1) + b,// eslint-disable-line\n };\n\n start(startPos: number, endPos: number, duration: number, easing = \"linear\") {\n const self: any = this;\n return new Promise((resolve) => {\n this.startTime = +new Date();\n this.startPos = startPos;\n this.endPos = endPos;\n this.duration = duration;\n this.runEasing = self._easing[easing];\n self.timeAnimate = CommonBase.requestAnimationFrame(function fnCb() {\n const stepResult = self.step();\n if (stepResult === false) {\n self.stop();\n resolve(self.lastInterval);\n } else {\n self.timeAnimate = CommonBase.requestAnimationFrame(fnCb);\n }\n });\n });\n }\n\n step() {\n const t = +new Date();\n if (t >= this.startTime + this.duration) {\n this.runIngFun(this.endPos);\n return false;\n }\n const pos = this.runEasing(t - this.startTime, this.startPos, this.endPos - this.startPos, this.duration);\n this.lastInterval = Math.abs(pos - this.lastPos);\n this.lastPos = pos;\n this.runIngFun(pos);\n return true;\n }\n\n stop() {\n if (this.timeAnimate) {\n CommonBase.cancelAnimationFrame(this.timeAnimate);\n }\n }\n}\nexport default AnimateEasing;\n","<template>\n <form ref=\"refElTop\" autocomplete=\"off\" :class=\"clsParent\" v-bind=\"optParent\">\n <slot></slot>\n </form>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, reactive, computed, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport CommonPromise from '../../Common/promise'\nimport CommonElement from '../../Common/Element/index'\nimport { AnimateEasing } from '../../Common/Tools/index'\n\n// defineOptions\ndefineOptions({\n name: 'ClForm'\n})\n\n// props\nconst props = defineProps<{\n theme?: string\n className?: string\n isAwaitRun?: boolean\n preScroll?: number\n pElError?: string\n isScrollToErr?: boolean\n}>()\n\n// 常量 / 变量定义\nconst refElTop = ref<HTMLFormElement | null>(null)\nconst optBase = reactive({ isRun: !props.isAwaitRun })\nconst _pageData: any = {\n _scrollUpAnimate: null,\n parentScroll: null,\n isScrollWindow: true,\n}\n\n// computed\nconst optParent = computed(() => {\n const temp: any = {\n 'data-cl-validate': '',\n }\n if (optBase.isRun) {\n temp['data-run'] = ''\n }\n if (!CommonBase.isEmpty(props.theme)) {\n temp['data-theme'] = props.theme\n }\n return temp\n})\n\nconst clsParent = computed(() => {\n const clsTemp: any = {\n 'panel-form': true,\n 'form-validate': true,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((cls) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n return clsTemp\n})\n\n// 内部调用方法\nconst _validateEl = (el: any) => {\n let result = true\n if (optBase.isRun && !CommonBase.isUndefined(el) && refElTop.value?.contains(el)) {\n if (el.runValidate) {\n result = el.runValidate()\n }\n }\n return result\n}\n\nconst _runScrollErrorEl = () => {\n const errEl: any = refElTop.value?.querySelectorAll('[data-validate-error]')\n if (!CommonBase.isUndefined(errEl) && errEl.length && errEl.length > 0) {\n let el = errEl[0]\n const { preScroll, pElError } = props\n\n const isErrElP = !CommonBase.isEmpty(el.pElError)\n const isErrElF = !CommonBase.isEmpty(pElError)\n if (isErrElP || isErrElF) {\n const tempEL = CommonElement.getParent(el, isErrElP ? el.pElError : pElError, refElTop.value)\n if (!CommonBase.isUndefined(tempEL)) {\n el = tempEL\n }\n }\n const elOffset = CommonElement.getOffset(el, _pageData.isScrollWindow ? null : _pageData.parentScroll)\n let end = elOffset.top - 10\n if (preScroll && !CommonBase.isUndefined(preScroll)) {\n end -= preScroll\n }\n _pageData._scrollUpAnimate.start(_pageData.parentScroll.scrollTop, end, 200)\n }\n}\n\nconst _initMain = () => {\n const pScrolls = CommonElement.getParentScrollList(refElTop.value, null, false)\n _pageData.isScrollWindow = pScrolls.length === 0\n _pageData.parentScroll = _pageData.isScrollWindow ? document.documentElement : pScrolls[0].children[0]\n _pageData._scrollUpAnimate = new AnimateEasing({\n runIngCallback: (pos: any) => {\n _pageData.parentScroll.scrollTop = pos\n },\n })\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// 开放给外部使用的方法\nconst validate = (el?: any) => {\n return CommonPromise.promiseFun((resolve: any) => {\n let result = true\n if (CommonBase.isUndefined(el)) {\n optBase.isRun = true\n nextTick(() => {\n const validateEl: any = refElTop.value?.querySelectorAll('[data-validate-el]')\n if (!CommonBase.isUndefined(validateEl) && validateEl.length && validateEl.length > 0) {\n validateEl.forEach((e: any) => {\n const check = _validateEl(e)\n if (!check) {\n result = false\n }\n })\n }\n if (!result) {\n if (props.isScrollToErr) {\n nextTick(() => {\n _runScrollErrorEl()\n })\n }\n }\n resolve(result)\n })\n } else {\n result = _validateEl(el)\n resolve(result)\n }\n })\n}\n\nconst reset = () => {\n optBase.isRun = false\n refElTop.value?.removeAttribute('data-run')\n const validateEl:any = refElTop.value?.querySelectorAll('[data-validate-el]')\n if (!CommonBase.isUndefined(validateEl) && validateEl.length && validateEl.length > 0) {\n validateEl.forEach((e: any) => {\n if (e.runReset) {\n e.runReset()\n }\n })\n }\n}\n\n// 导出类型定义\nexport interface ClFormExpose {\n validate: (el?: HTMLElement) => Promise<boolean>\n reset: () => void\n}\n\n// defineExpose\ndefineExpose({\n validate,\n reset\n})\n</script>","import dayjs from \"dayjs\";\nimport CommonBase, { registerFormatHandler } from \"./base\";\nimport \"dayjs/locale/zh-cn\";\nimport \"dayjs/locale/en\";\nimport localeData from \"dayjs/plugin/localeData\";\nimport objectSupport from \"dayjs/plugin/objectSupport\";\nimport isSameOrAfter from \"dayjs/plugin/isSameOrAfter\";\nimport isSameOrBefore from \"dayjs/plugin/isSameOrBefore\";\nimport isoWeek from \"dayjs/plugin/isoWeek\";\n\nimport lunar from \"dayjs-lunar\";\n//import customParseFormat from \"dayjs/plugin/customParseFormat\";\n\n\nimport utc from \"dayjs/plugin/utc\";\nimport timezone from \"dayjs/plugin/timezone\";\n\ndayjs.locale(\"zh-cn\");\ndayjs.extend(localeData);\ndayjs.extend(objectSupport);\ndayjs.extend(isSameOrAfter);\ndayjs.extend(isSameOrBefore);\ndayjs.extend(isoWeek);\n//dayjs.extend(customParseFormat);\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\ndayjs.extend(lunar);\n\nclass CommDay {\n static objDay: any = dayjs;\n static timezone = \"PRC\"; // desc: 时区配置,默认中国时区,可设置为 \"UTC\"、 \"America/New_York\" 等\n\n static initDay(d?: any): any {\n const newDay = CommonBase.isUndefined(d) ? dayjs() : d;\n return newDay.tz(this.timezone);\n }\n\n\n static getDayjsObject(day: any): any {\n if (CommonBase.isEmpty(day)) {\n return this.initDay(dayjs());\n }\n if (dayjs.isDayjs(day)) {\n return this.initDay(day.clone());\n }\n let value: any;\n if (CommonBase.isString(day)) {\n value = day.replace(/[/]/g, \"-\").replace(/:/g, \":\");\n } else if (CommonBase.isInt(day)) {\n value = new Date(parseInt(day, 10));\n } else if (CommonBase.isObject(day)) {\n value = day;\n }\n return this.initDay(dayjs(value, \"YYYY-MM-DD HH:mm:ss\"));\n }\n\n /**\n * 获取时间格式\n * @param options string|int| new Date() | dayjs() | {value,format}\n * @returns\n */\n static initFormat(options?: any): string {\n let optionBase: any = { value: \"\", format: \"YYYY-MM-DD\" };\n let objDay: any;\n if (CommonBase.isObject(options)) {\n if (dayjs.isDayjs(options)) {\n objDay = options;\n } else {\n if (options.format) {\n optionBase = CommonBase.getJsonMerge(optionBase, options);\n }\n if (options.value || options.format) {\n objDay = this.getDayjsObject(options.value || \"\");\n } else {\n objDay = this.getDayjsObject(options);\n }\n }\n } else {\n objDay = this.getDayjsObject(options);\n }\n return objDay.format(optionBase.format);\n }\n\n static addTime(time: any, num: number, type = \"days\"): any {\n return this.getDayjsObject(time).add(num, type);\n }\n\n static subtractTime(time: any, num: number, type = \"days\"): any {\n return this.getDayjsObject(time).subtract(num, type);\n }\n\n /**\n * 比较时间差值\n * @param time1 开始时间\n * @param timeDiff2 比较时间\n * @param type day week month year hour minute second millisecond\n * @returns\n */\n static diffTime(time1: any, timeDiff2: any, type = \"millisecond\") {\n const diff = this.getDayjsObject(time1).diff(this.getDayjsObject(timeDiff2), type);\n return diff;\n }\n\n /* static isValid(time: any, checkFormat = \"YYYY-MM-DD\"): any {\n return Dayjs(time, checFormat, true).isValid();\n } */\n\n static lunar(value: string) {\n const objDay = this.getDayjsObject(value);\n const newValue = objDay.lunar();\n return newValue;\n }\n}\n\n// Register date format handlers into base.ts to avoid circular import\nregisterFormatHandler('date', (value: any, format: string) => CommDay.initFormat({ value, format }))\nregisterFormatHandler('dateTime', (value: any, format: string) => CommDay.initFormat({ value, format }))\nregisterFormatHandler('time', (value: any, format: string) => CommDay.initFormat({ value, format }))\n\nexport default CommDay;\n","export default {\n common: {\n submit: \"确定\",\n save: \"保存\",\n cancel: \"取消\",\n update: \"修改\",\n close: \"关闭\",\n delete: \"删除\",\n deleteAll: \"全部删除\",\n upload: \"上传\",\n download: \"下载\",\n preview: \"预览\",\n restore: \"还原\",\n clear: \"清除\",\n clearEmpty: \"清空\",\n clearAll: \"全部清除\",\n copy:\"复制\",\n custom: \"自定义\",\n loading: \"加载中\",\n noDataText: \"暂无数据\",\n noResultsText: \"未找到结果\",\n checkboxAll: \"全选\",\n selected: \"已选\",\n count: \"个\",\n add: \"添加\",\n checkAddMax: \"最多添加\",\n checkAddMin: \"最少保留\",\n pleaseSelect: \"请选择\",\n },\n validate: {\n required: \"此项不能为空\",\n number: \"请输入数字\",\n integer: \"请输入整数\",\n integerPositive: \"请输入正整数\",\n alphanum: \"请输入数字或字母\",\n email: \"邮箱格式不正确\",\n minLen: \"输入值的长度不能小于 %s 个字\",\n maxLen: \"输入值的长度不能大于 %s 个字\",\n minByte: \"输入值的长度不能小于 %s 个字节\",\n maxByte: \"输入值的长度不能大于 %s 个字节\",\n minGreater: \"输入值请大于 %s\",\n maxGreater: \"输入值请小于 %s\",\n minGreaterEqual: \"输入值请大于或等于 %s\",\n maxGreaterEqual: \"输入值请小于或等于 %s\",\n phone: \"手机号不正确\",\n equalto: \"两次输入值不同\",\n },\n dataTime: {\n am: \"上午\",\n pm: \"下午\",\n year: \"年\",\n prevYear: \"上一年\",\n prevMonth: \"上一月\",\n nextYear: \"下一年\",\n nextMonth: \"下一月\",\n prevYear10: \"前十年\",\n nextYear10: \"后十年\",\n today: \"今天\",\n yesterDay: \"昨天\",\n pastDays7: \"过去7天\",\n pastDays30: \"过去30天\",\n montCurrent: \"本月\",\n montLast: \"上月\",\n montLately6: \"最近半年\",\n yearCurrent: \"今年\",\n yearLast: \"去年\",\n rangeStartLabel: \"开始\",\n checkEndMinLabel: \"结束时间不能小于设置的最小时间\",\n checkStartMaxLabel: \"时间不能大于设置的最大时间\",\n checkStartMinLabel: \"时间不能小于设置的最小时间\",\n checkStartEndLabel: \" \",\n checkRangeEmptyLabel: \"请选择完整的开始时间,结束时间\",\n },\n fileUpload: {\n checkImageWHLabel: \"图片宽高不匹配\",\n checkSuffixMimeLabel: \"类型不匹配\",\n checkSizeLabel: \"大小不匹配\",\n uploadFile: \"上传文件\",\n },\n weekHour: {\n daily: \"每日\",\n monday: \"周一\",\n tuesday: \"周二\",\n wednesday: \"周三\",\n thursday: \"周四\",\n friday: \"周五\",\n saturday: \"周六\",\n sunday: \"周日\",\n weekday: \"工作日\",\n weekend: \"周末\",\n dawn: \"凌晨\",\n morning: \"上午\",\n noon: \"中午\",\n afternoon: \"下午\",\n evening: \"傍晚\",\n night: \"晚上\",\n selected: \"已定向\",\n selectedNot: \"未定向\",\n },\n paginate: {\n page: \"页\",\n pageStrip: \"页/条\",\n jumpTo: \"跳转至\",\n statistic: \"显示第 ${s} 至 ${e} 项结果,共 ${_total} 项\",\n },\n xEditable: {\n required: \"此项不能为空\",\n submitCallback: \"submitCallback的返回格式不正确\",\n },\n};","export default {\n common: {\n submit: \"Submit\",\n save: \"Save\",\n cancel: \"Cancel\",\n update: \"Modify\",\n close: \"Close\",\n delete: \"Delete\",\n deleteAll: \"Delete All\",\n upload: \"Upload\",\n download: \"Download\",\n preview: \"Preview\",\n restore: \"Restore\",\n clear: \"Clear\",\n clearEmpty: \"Clear All\",\n clearAll: \"Clear All\",\n copy: \"Copy\",\n custom: \"Custom\",\n loading: \"Loading\",\n noDataText: \"No Data\",\n noResultsText: \"No Result\",\n checkboxAll: \"Select All\",\n selected: \"Selected\",\n count: \"Count\",\n add: \"Add\",\n checkAddMax: \"Add Maximum\",\n checkAddMin: \"Add Minimum\",\n pleaseSelect: \"Select\",\n },\n validate: {\n required: \"Required\",\n number: \"Please enter number\",\n integer: \"Please enter integer\",\n integerPositive: \"Please enter positive integer\",\n alphanum: \"Please enter number or letter\",\n email: \"Error Email\",\n minLen: \"Cannot less than %s characters\",\n maxLen: \"Cannot more than %s characters\",\n minByte: \"Cannot less than %s Bytes\",\n maxByte: \"Cannot more than %s Bytes\",\n minGreater: \"Must more than %s\",\n maxGreater: \"Must less than %s\",\n minGreaterEqual: \"Cannot less than %s\",\n maxGreaterEqual: \"Cannot more than %s\",\n phone: \"Error phone number\",\n equalto: \"Different Value\",\n },\n dataTime: {\n am: \"am\",\n pm: \"pm\",\n year: \"year\",\n prevYear: \"Last Year\",\n prevMonth: \"Last Month\",\n nextYear: \"Next Year\",\n nextMonth: \"Next Month\",\n prevYear10: \"Last Decade\",\n nextYear10: \"Next Decade\",\n today: \"Today\",\n yesterDay: \"Yesterday\",\n pastDays7: \"Last 7 Days\",\n pastDays30: \"Last 30 Days\",\n montCurrent: \"This Month\",\n montLast: \"Last Month\",\n montLately6: \"Last Half Year\",\n yearCurrent: \"This Year\",\n yearLast: \"Last Year\",\n rangeStartLabel: \"Start\",\n checkEndMinLabel: \"Error end time\",\n checkStartMaxLabel: \"Error end time\",\n checkStartMinLabel: \"Error start time\",\n checkStartEndLabel: \"End time cannot before start time\",\n checkRangeEmptyLabel: \"Select start and end time\",\n },\n fileUpload: {\n checkImageWHLabel: \"Error image dimension\",\n checkSuffixMimeLabel: \"Error type\",\n checkSizeLabel: \"Error file size\",\n uploadFile: \"Upload File\",\n },\n weekHour: {\n daily: \"Daily\",\n monday: \"Monday\",\n tuesday: \"Tuesday\",\n wednesday: \"Wednesday\",\n thursday: \"Thursday\",\n friday: \"Friday\",\n saturday: \"Saturday\",\n sunday: \"Sunday\",\n weekday: \"Weekday\",\n weekend: \"Weekend\",\n dawn: \"Midnight\",\n morning: \"AM\",\n noon: \"Noon\",\n afternoon: \"PM\",\n evening: \"Evenfall\",\n night: \"Evening\",\n selected: \"Include\",\n selectedNot: \"Exclude\",\n },\n paginate: {\n page: \"Page\",\n pageStrip: \"Lines/Page\",\n jumpTo: \"Page to\",\n statistic: \"Records ${s} to ${e} , ${_total} Records in Total\",\n },\n xEditable: {\n required: \"Required\",\n submitCallback: \"Error SubmitCallback\",\n },\n};","import CommonBase from \"../base\";\nimport CommonDay from \"../day\";\nimport ZHCN from \"./zh_CN\";\nimport EN from \"./en\";\nclass LanguagePack {\n private _type: string;\n private _typeDef: string;\n private _packageData: any;\n constructor() {\n this._type = \"zh_cn\";\n this._typeDef = \"zh_cn\";\n this._packageData = {\n \"zh_cn\": ZHCN,\n en: EN,\n };\n }\n initMerge(options: any) {\n const isEmptyType = CommonBase.isEmpty(options.type);\n if (!isEmptyType) {\n this._type = options.type;\n }\n /* if (!CommonBase.isEmpty(options.typeDef)) {\n this._typeDef = options.typeDef;\n } */\n if (!CommonBase.isEmpty(options.packageData)) {\n if (isEmptyType) {\n this._packageData[this._typeDef] = CommonBase.getJsonMergeDeep(this._packageData[this._typeDef], options.packageData);\n } else {\n this._packageData = CommonBase.getJsonMergeDeep(this._packageData, options.packageData);\n }\n }\n return {\n type: this._type,\n //typeDef: this._typeDef,\n packageData: this._packageData,\n };\n }\n private _getType() {\n //const defType = \"zh_cn\";\n let type = this._type;\n if (CommonBase.isEmpty(type)) {\n type = this._typeDef;\n }\n /* if (CommonBase.isEmpty(type)) {\n type = defType;\n } */\n return { type, def: this._typeDef };\n }\n private _getData(type?: string) {\n let data = {};\n const packageData = this._packageData;\n if (type) {\n data = packageData[type];\n } else {\n const typeInfo = this._getType();\n if (CommonBase.isExistJsonKey(packageData, typeInfo.type)) {\n data = packageData[typeInfo.type];\n }\n if (CommonBase.isEmpty(data)) {\n data = packageData[typeInfo.def];\n }\n }\n return data;\n }\n private _getKeyValue(k: string, data: any) {\n let value;\n if (CommonBase.isExistValue(k, \".\")) {\n const arrTemp: string[] = CommonBase.split(k, \".\");\n let tempValue: any = CommonBase.getJsonClone(data, true);\n arrTemp.forEach((ki: string, i: number) => {\n const kv = tempValue[ki];\n if (i === arrTemp.length - 1) {\n tempValue = kv;\n } else {\n tempValue = CommonBase.isEmpty(kv) ? {} : kv;\n }\n });\n value = tempValue;\n } else {\n value = data[k];\n }\n return value;\n }\n private _getKey(k: string, type?: string) {\n let value;\n const data: any = type\n ? this._getData(type)\n : this._getData();\n if (!CommonBase.isEmpty(data)) {\n value = this._getKeyValue(k, data);\n if (CommonBase.isObject(value)) {\n value = CommonBase.getJsonClone(value, true);\n }\n }\n return value;\n }\n getType() {\n return this._getType();\n }\n\n getAll() {\n return this._getData();\n }\n getCommon() {\n const data = this._getKey(\"common\");\n const dataDef = this._getKey(\"common\", this._typeDef);\n return CommonBase.getJsonMergeDeep(dataDef || {}, data || {});\n }\n getValue(key: string) {\n let value = this._getKey(key);\n if (CommonBase.isEmpty(value)) {\n value = this._getKey(key, this._typeDef);\n }\n return value;\n }\n\n getPage(key: string) {\n let data = {};\n const common = this.getCommon();\n if (key === \"common\") {\n data = common;\n } else {\n const jsonDef = this._getKey(key, this._typeDef);\n const jsonValue = this._getKey(key);\n const pageJson = CommonBase.getJsonMergeDeep(jsonDef, jsonValue);\n let pageCommon = {};\n if (CommonBase.isExistValue(key, \".\")) {\n const arrTemp: string[] = CommonBase.split(key, \".\");\n arrTemp[arrTemp.length - 1] = \"common\";\n const keyTemp = arrTemp.join(\".\");\n const jsonTempDef = this._getKey(keyTemp, this._typeDef);\n const jsonTempValue = this._getKey(keyTemp);\n pageCommon = CommonBase.getJsonMergeDeep(jsonTempDef, jsonTempValue);\n }\n data = CommonBase.getJsonMerge(pageJson, { common, pageCommon });\n }\n return data;\n }\n setType(type: string) {\n this._type = type;\n switch (type) {\n case \"zh_cn\":\n CommonDay.objDay.locale(\"zh-cn\");\n break;\n case \"en\":\n CommonDay.objDay.locale(\"en\");\n break;\n\n }\n }\n}\nexport default new LanguagePack();\n","import { ref } from \"vue\";\nimport Language from \"../Common/i18n/index\";\n\nconst useLanguage = () => {\n\n const optPageLanguage: any = ref({});\n const getPageLanguage = (page: string) => {\n const temp = Language.getPage(page);\n optPageLanguage.value = temp;\n };\n const getLanguageValue = (key: string) => {\n const value = Language.getValue(key);\n return value;\n };\n const getLanguageType = () => {\n return Language.getType();\n };\n\n return {\n optPageLanguage,\n getPageLanguage,\n getLanguageValue,\n getLanguageType,\n };\n};\nexport default useLanguage;\n","<template>\n <div ref=\"refElTop\" :class=\"clsParent\" v-bind=\"optParent\">\n <slot></slot>\n <div ref=\"refElMsg\" v-if=\"optBase.msgHtml.length > 0 && isShowMsg\" :class=\"clsErr\">\n <i v-if=\"optBase.type === 'tip'\" class=\"clIconFont clIcon-exclamation-circle-fill error-tip-el\"\n v-cltooltip=\"optBase.msgHtml\"></i>\n <span v-else-if=\"optBase.type === 'text'\" class=\"error-text-el\">{{ optBase.msgHtml }}</span>\n <template v-else></template>\n </div><template v-else></template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, computed, onMounted, nextTick, toRaw, inject, watch } from \"vue\";\nimport CommonBase from \"../../Common/base\";\nimport CommonElement from \"../../Common/Element/index\";\nimport { tooltipDirectives } from \"../../Web/Tooltip\";\nimport useLanguage from \"../../Use/language\";\n\n// defineOptions\ndefineOptions({\n name: 'ClFormValidate',\n directives: {\n cltooltip: tooltipDirectives\n }\n})\n\n// props\nconst props = defineProps<{\n className?: string\n checkValue?: string | number\n rules?: any[]\n isCheck?: boolean\n msgElementId?: string\n msgType?: string\n pElError?: string\n isShowMsg?: boolean\n}>()\n\n// 常量 / 变量定义\nconst { optPageLanguage, getPageLanguage, getLanguageType } = useLanguage();\ngetPageLanguage(\"validate\");\n\nconst _clGlobals: any = inject(\"$ClGlobals\");\n\nconst refElTop = ref<HTMLElement | null>(null);\nconst refElMsg = ref<HTMLElement | null>(null);\n\nconst optBase = reactive({\n type: \"\",\n msgHtml: \"\",\n check: 0,\n});\n\nconst _pageElement: any = {\n form: null,\n};\n\nconst _pageData: any = {\n rules: {},\n messages: {},\n totalMessages: {},\n};\n\n// computed\nconst optParent = computed(() => {\n const temp: any = {\n \"data-validate-el\": \"\",\n };\n if (props.isCheck) {\n switch (optBase.check) {\n case 1:\n temp[\"data-validate-success\"] = \"\";\n break;\n case 2:\n temp[\"data-validate-error\"] = \"\";\n break;\n }\n }\n return temp;\n});\n\nconst clsParent = computed(() => {\n const clsTemp: any = {};\n if (props.isCheck) {\n clsTemp[\"panel-validate-element\"] = true;\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(\" \").forEach((cls) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true;\n }\n });\n }\n return clsTemp;\n});\n\nconst clsErr = computed(() => {\n const cls: any = {\n \"panel-validate-errors\": true,\n };\n cls[`validate-errors-${optBase.type}`] = true;\n return cls;\n});\n\n// 内部调用方法\nconst _initRules = (options: any[]) => {\n const rules: any = {};\n const messages: any = {};\n options.forEach((info: any) => {\n const type = typeof info;\n switch (type) {\n case \"string\":\n if (!CommonBase.isEmpty(info)) {\n if (CommonBase.isExistValue(info, \"|\")) {\n const tempR = info.split(\"|\");\n rules[tempR[0]] = tempR[1];\n } else {\n rules[info] = \"\";\n }\n }\n break;\n case \"object\":\n const isCheckOne = CommonBase.isBoolean(info.isCheck) ? info.isCheck : true;\n if (!CommonBase.isEmpty(info.r) && isCheckOne) {\n rules[info.r] = CommonBase.isUndefined(info.p) ? \"\" : info.p;\n if (!CommonBase.isEmpty(info.m)) {\n messages[info.r] = info.m;\n }\n }\n break;\n default:\n break;\n }\n });\n _pageData.rules = rules;\n _pageData.messages = messages;\n};\n\nconst _mergeRules = () => {\n const cancel: string[] = [];\n const param: any = {};\n const message: any = {};\n if (refElTop.value && !CommonBase.isEmpty(refElTop.value.dataset)) {\n Object.keys(refElTop.value.dataset).forEach((key) => {\n if (key.indexOf(\"validate\") === 0) {\n const tempKey = key.replace(/[A-Z]/g, (str) => `-${str.toLowerCase()}`);\n const arrKey = tempKey.split(\"-\");\n if (arrKey.length === 3) {\n const name = arrKey[2];\n const value: any = refElTop.value!.dataset[key];\n switch (arrKey[1]) {\n case \"check\":\n if (!CommonBase.isEmpty(value) && value.toLowerCase() === \"false\") {\n cancel.push(name);\n }\n break;\n case \"param\":\n param[name] = value;\n break;\n case \"message\":\n message[name] = value;\n break;\n default:\n break;\n }\n }\n }\n });\n }\n\n if (!CommonBase.isEmpty(_pageData.rules)) {\n if (!CommonBase.isEmpty(cancel) || !CommonBase.isEmpty(param)) {\n const newRules: any = {};\n for (const [r, p] of Object.entries(_pageData.rules)) {\n if (!CommonBase.isExistValue(cancel, r)) {\n newRules[r] = CommonBase.isExistJsonKey(param, r) ? param[r] : p;\n }\n }\n _pageData.rules = newRules;\n }\n }\n if (!CommonBase.isEmpty(_pageData.messages)) {\n if (!CommonBase.isEmpty(message)) {\n const newMessages: any = {};\n for (const [r, m] of Object.entries(_pageData.messages)) {\n newMessages[r] = CommonBase.isExistJsonKey(message, r) ? param[r] : m;\n }\n _pageData.messages = newMessages;\n }\n }\n};\n\nconst _getErrData = (value: string) => {\n const errData: any = {};\n const totalRules = _clGlobals.validate.rules;\n if (!CommonBase.isEmpty(_pageData.rules)) {\n const isEmpty = CommonBase.isEmpty(value);\n const newValue = isEmpty ? \"\" : CommonBase.trim(value);\n for (const [r, p] of Object.entries(_pageData.rules)) {\n if (CommonBase.isExistJsonKey(totalRules, r)) {\n let check = true;\n if (r === \"required\") {\n check = totalRules.required(newValue);\n } else {\n if (!isEmpty) {\n check = totalRules[r](newValue, p);\n }\n }\n if (!check) {\n errData[r] = p;\n }\n }\n }\n }\n return errData;\n};\n\nconst _getTotalMessages = () => {\n if (CommonBase.isEmpty(_pageData.totalMessages)) {\n const lang = toRaw(optPageLanguage.value);\n const vMsg = toRaw(_clGlobals.validate.messages);\n const langTypeInfo = getLanguageType();\n const msg =\n CommonBase.isExistJsonKey(vMsg, langTypeInfo.type) || CommonBase.isExistJsonKey(vMsg, langTypeInfo.def)\n ? CommonBase.getJsonMerge({}, vMsg[langTypeInfo.def] || {}, vMsg[langTypeInfo.type] || {})\n : vMsg;\n\n const data = CommonBase.getJsonMerge({}, lang, msg);\n return data;\n } else {\n return _pageData.totalMessages;\n }\n};\n\nconst _getErrMsg = (errData: any) => {\n const totalMessages = _getTotalMessages();\n const msg: any[] = [];\n Object.keys(errData).forEach((r) => {\n let rMsg = \"\";\n if (!CommonBase.isUndefined(totalMessages[r])) {\n rMsg = totalMessages[r];\n }\n if (!CommonBase.isUndefined(_pageData.messages[r])) {\n rMsg = _pageData.messages[r];\n }\n if (!CommonBase.isEmpty(rMsg)) {\n let temp = \"\";\n const p = errData[r];\n if (CommonBase.isExistValue(rMsg, \"%s\")) {\n temp = rMsg.replace(\"%s\", p);\n } else {\n temp = rMsg;\n }\n msg.push({ rule: r, msg: temp });\n }\n });\n return msg;\n};\n\nconst _getForm = () => {\n if (CommonBase.isUndefined(_pageElement.form) && refElTop.value) {\n _pageElement.form = CommonElement.getParent(refElTop.value, \"form\");\n }\n return _pageElement.form;\n};\n\nconst _setThemeType = () => {\n _getForm();\n let type = _clGlobals.validate.type;\n if (!CommonBase.isUndefined(_pageElement.form) && !CommonBase.isEmpty(_pageElement.form.dataset.theme)) {\n type = _pageElement.form.dataset.theme;\n }\n if (props.msgType && !CommonBase.isEmpty(props.msgType)) {\n type = props.msgType;\n }\n optBase.type = type;\n};\n\nconst _checkRun = () => {\n let isRun = true;\n _getForm();\n if (CommonBase.isUndefined(_pageElement.form)) {\n isRun = false;\n } else {\n if (!CommonBase.isEmpty(_pageElement.form.dataset)) {\n isRun = !CommonBase.isUndefined(_pageElement.form.dataset.run);\n }\n }\n return isRun;\n};\n\nconst _setMsg = (msg: string) => {\n if (CommonBase.isEmpty(msg)) {\n optBase.msgHtml = \"\";\n optBase.check = 1;\n } else {\n optBase.msgHtml = msg;\n optBase.check = 2;\n }\n if (props.msgElementId && !CommonBase.isEmpty(props.msgElementId)) {\n const msgEl: any = window.document.querySelector(props.msgElementId);\n if (msgEl) {\n nextTick(() => {\n if (refElMsg.value) {\n msgEl.appendChild(refElMsg.value);\n }\n });\n }\n }\n};\n\nconst _validate = () => {\n let result = true;\n if (props.isCheck && _checkRun()) {\n _setThemeType();\n _mergeRules();\n const errData = _getErrData(props.checkValue as string);\n result = CommonBase.isEmpty(errData);\n if (result) {\n _setMsg(\"\");\n } else {\n const msgList = _getErrMsg(errData);\n let msg = \"\";\n if (!CommonBase.isEmpty(msgList)) {\n switch (optBase.type) {\n case \"tip\":\n msg = msgList.map((info: any) => `<div>${info.msg}</div>`).join(\"\");\n break;\n case \"text\":\n msg = msgList.map((info: any) => info.msg).join(\",\");\n break;\n default:\n msg = \"\";\n }\n }\n _setMsg(msg);\n }\n } else {\n _setMsg(\"\");\n }\n return result;\n};\n\nconst _initMain = () => {\n _initRules(props.rules || []);\n _getForm();\n if (refElTop.value) {\n //@ts-ignore\n refElTop.value.pElError = props.pElError;\n //@ts-ignore\n refElTop.value.runValidate = _validate;\n //@ts-ignore\n refElTop.value.runErrMsg = _setMsg;\n //@ts-ignore\n refElTop.value.runReset = () => {\n _setMsg(\"\");\n };\n }\n};\n\n// watch\nwatch(\n [() => props.checkValue, () => props.rules, () => props.isCheck],\n ([_newValue, newRules]: any) => {\n _initRules(newRules || []);\n _validate();\n },\n { deep: true },\n);\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain();\n });\n});\n\n// 开放给外部使用的方法\nconst runValidate = () => {\n _validate();\n};\n\nconst runErrMsg = (msg: string) => {\n _setThemeType();\n _setMsg(msg);\n};\n\nconst runReset = () => {\n _setThemeType();\n _setMsg(\"\");\n};\n\n// 导出类型定义\nexport interface ClFormValidateExpose {\n runValidate: () => void\n runErrMsg: (msg: string) => void\n runReset: () => void\n}\n\n// defineExpose\ndefineExpose({\n runValidate,\n runErrMsg,\n runReset\n})\n</script>","import CommonBase from \"../../Common/base\";\nimport { LazyOptionInfo } from \"./interfaceItem\";\nconst defOption = {\n loading: \"data:image/gif;base64,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\",\n error: \"data:image/png;base64,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\",\n attr: {\n timeOutId: \"data-lazy-timeout-id\",\n },\n isCrossOrigin: false,\n};\nclass Lazy {\n public options: LazyOptionInfo = {\n loading: defOption.loading,\n error: defOption.error,\n observerOptions: {\n rootMargin: \"0px\",\n threshold: 0,\n },\n log: false,\n callback: {},\n };\n private _images = new WeakMap();\n constructor(options?: LazyOptionInfo) {\n this.config(options);\n }\n public config(options = {}): void {\n this.options = CommonBase.getJsonMergeDeep(this.options, options);\n }\n private _initValue(value: any, el: any) {\n let src = \"\";\n let loading = this.options.loading;\n let error = this.options.error;\n let callback = this.options.callback;\n let delay = this.options.delay;\n if (CommonBase.isObject(value)) {\n src = value.src;\n loading = value.loading || this.options.loading;\n error = value.error || this.options.error;\n callback = value.callback || this.options.callback;\n delay = value.delay || this.options.delay;\n } else if (CommonBase.isString(value)) {\n src = value;\n }\n else if (CommonBase.isUndefined(value)) {\n src = el && el.src || \"\";\n }\n return {\n src,\n loading,\n error,\n callback,\n delay,\n };\n }\n public mount(el: HTMLElement, binding: any): void {\n if (CommonBase.isUndefined(el)) return;\n const value = typeof binding === \"string\" ? binding : binding.value;\n const { src, loading, error, callback, delay } = this._initValue(value, el);\n this._setCallback(el, \"loading\", callback);\n el.setAttribute(\"src\", loading || defOption.loading);\n if (!this._checkIntersectionObserver()) {\n this._setImageSrc(el, src, error, callback);\n this._log(() => {\n throw new Error(\"Not support IntersectionObserver!\");\n });\n }\n this._initIntersectionObserver(el, src, error, callback, delay);\n }\n public update(el: HTMLElement, binding: any): void {\n if (CommonBase.isUndefined(el)) return;\n this._realObserver(el)?.unobserve(el);\n const value = typeof binding === \"string\" ? binding : binding.value;\n const { src, error, callback, delay } = this._initValue(value, el);\n this._initIntersectionObserver(el, src, error, callback, delay);\n }\n public unmount(el: HTMLElement): void {\n if (CommonBase.isUndefined(el)) return;\n this._realObserver(el)?.unobserve(el);\n this._images.delete(el);\n }\n\n private _setImageSrc(el: HTMLElement, src: string, error?: string, callback?: any): void {\n if (el.tagName.toLowerCase() === \"img\") {\n const elImage = el as HTMLImageElement;\n if (CommonBase.isEmpty(src)) {\n\n elImage.onload = null;\n this._setCallback(elImage, \"error\", callback);\n this._realObserver(elImage)?.disconnect();\n if (error) {\n elImage.setAttribute(\"src\", error);\n }\n } else {\n if (src) {\n const preSrc = elImage.getAttribute(\"src\");\n if (preSrc !== src) elImage.setAttribute(\"src\", src);\n }\n if (this.options.isCrossOrigin) {\n elImage.crossOrigin = \"Anonymous\";\n }\n elImage.onload = () => {\n if (src) {\n this._setCallback(elImage, \"loaded\", callback);\n }\n };\n elImage.onerror = () => {\n // Fix onload trigger twice, clear onload event\n // Reload on update\n elImage.onload = null;\n this._setCallback(elImage, \"error\", callback);\n this._realObserver(elImage)?.disconnect();\n if (error) {\n const newImageSrc = elImage.getAttribute(\"src\");\n if (newImageSrc !== error) elImage.setAttribute(\"src\", error);\n }\n this._log(() => { throw new Error(`Image failed to load!And failed src was: ${src} `); });\n };\n }\n }\n else {\n el.style.backgroundImage = `url('${src}')`;\n }\n }\n private _setCallback(el: HTMLElement, type: string, callback?: any): void {\n el?.setAttribute(\"lazy\", type);\n switch (type) {\n case \"loading\":\n if (callback?.loading) callback.loading(el);\n break;\n case \"loaded\":\n if (callback?.loaded) callback.loaded(el);\n break;\n case \"error\":\n if (callback?.error) callback.error(el);\n break;\n default:\n break;\n }\n }\n private _realObserver(el: HTMLElement) {\n return this._images.get(el);\n }\n private _checkIntersectionObserver(): boolean {\n const inBrowser = typeof window !== \"undefined\" && window !== null;\n if (inBrowser\n && \"IntersectionObserver\" in window\n && \"IntersectionObserverEntry\" in window\n && \"intersectionRatio\" in window.IntersectionObserverEntry.prototype) {\n if (!(\"isIntersecting\" in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n \"isIntersecting\", {\n get() {\n return this.intersectionRatio > 0;\n },\n });\n }\n return true;\n }\n return false;\n }\n private _initIntersectionObserver(el: HTMLElement, src: string, error?: string, callback?: any, delay?: number): void {\n const observerOptions = this.options.observerOptions;\n this._images.set(el, new IntersectionObserver((entries) => {\n Array.prototype.forEach.call(entries, (entry) => {\n if (delay && delay > 0)\n this._delayedIntersectionCallback(el, entry, delay, src, error, callback);\n else\n this._intersectionCallback(el, entry, src, error, callback);\n });\n }, observerOptions));\n this._realObserver(el)?.observe(el);\n }\n private _intersectionCallback(el: HTMLElement, entry: IntersectionObserverEntry, src: string, error?: string, callback?: any): void {\n if (entry.isIntersecting) {\n this._realObserver(el)?.unobserve(entry.target);\n this._setImageSrc(el, src, error, callback);\n }\n }\n\n private _delayedIntersectionCallback(el: HTMLElement, entry: IntersectionObserverEntry, delay: number, src: string, error?: string, callback?: any): void {\n if (entry.isIntersecting) {\n if (entry.target.hasAttribute(defOption.attr.timeOutId))\n return;\n\n const timeoutId = setTimeout(() => {\n this._intersectionCallback(el, entry, src, error, callback);\n entry.target.removeAttribute(defOption.attr.timeOutId);\n }, delay);\n entry.target.setAttribute(defOption.attr.timeOutId, String(timeoutId));\n }\n else {\n if (entry.target.hasAttribute(defOption.attr.timeOutId)) {\n clearTimeout(Number(entry.target.getAttribute(defOption.attr.timeOutId)));\n entry.target.removeAttribute(defOption.attr.timeOutId);\n }\n }\n }\n private _log(callback: () => void): void {\n if (this.options.log) callback();\n\n }\n}\nexport default Lazy;","import { onMounted, onUnmounted, nextTick, watch, Ref } from \"vue\";\nimport Lazy from \"./lazy\";\nimport { LazyOptionInfo } from \"./interfaceItem\";\n\nexport const useLazyload = (refEl: Ref<HTMLElement | null>, src: Ref<string>, options?: LazyOptionInfo) => {\n const lazy = new Lazy(options);\n onMounted(() => {\n nextTick(() => {\n if (refEl.value) {\n lazy.mount(refEl.value, src);\n }\n });\n });\n onUnmounted(() => {\n if (refEl.value) {\n lazy.unmount(refEl.value);\n }\n });\n watch(src, (newVal: string) => {\n if (src.value && refEl.value) {\n lazy.update(refEl.value, newVal);\n }\n });\n};","<template>\n <div\n :class=\"clsParent\"\n :style=\"styParent\"\n >\n <img\n ref=\"refElImage\"\n alt=\"\"\n :style=\"styImg\"\n >\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, computed, watch } from 'vue'\nimport CommonBase from '../../Common/base'\nimport { useLazyload } from '../LazyImage/use'\n\n// defineOptions\ndefineOptions({\n name: 'ClImage'\n})\n\n// props\nconst props = defineProps<{\n className?: string\n src: string\n height?: string\n width?: string\n isCircle?: boolean\n fit?: string\n isCrossOrigin?: boolean\n}>()\n\n// emit\nconst emit = defineEmits<{\n (e: 'onInit'): void\n}>()\n\n// 常量 / 变量定义\nconst optSrcUrl = ref(props.src)\nconst refElImage = ref<HTMLImageElement | null>(null)\n\n// 内部调用方法\nconst _emitInit = () => {\n emit('onInit')\n}\n\nuseLazyload(refElImage, optSrcUrl, {\n callback: {\n loaded: () => {\n _emitInit()\n },\n error: () => {\n _emitInit()\n },\n },\n isCrossOrigin: props.isCrossOrigin,\n})\n\n// computed\nconst clsParent = computed(() => {\n const cls: any = {\n 'panel-imageBox': true,\n 'imageBox-circle': props.isCircle,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const { width, height } = props\n const sty: any = {}\n if (width && !CommonBase.isEmpty(width)) {\n sty.width = width\n }\n if (height && !CommonBase.isEmpty(height)) {\n sty.height = height\n }\n return sty\n})\n\nconst styImg = computed(() => {\n const { width, height, fit } = props\n const sty: any = {}\n if (fit && !CommonBase.isEmpty(fit)) {\n sty['object-fit'] = fit\n if (width && !CommonBase.isEmpty(width)) {\n sty.width = width\n }\n if (height && !CommonBase.isEmpty(height)) {\n sty.height = height\n }\n }\n return sty\n})\n\n// watch\nwatch(\n () => props.src,\n (newValue) => {\n optSrcUrl.value = newValue\n },\n)\n\n</script>","<template>\n <div :class=\"clsParent\">\n <cl-input ref=\"refElInput\" theme=\"bottomLine\" :isNumber=\"true\" :decimal=\"0\" :isThousand=\"false\"\n v-model:value=\"optBase.value\" :placeholder=\"placeholder\" :isClean=\"true\" @onKeyupEnter=\"onKeyupEnter\"\n @onChange=\"onChange\"></cl-input>\n <div :class=\"clsSendBtn\">\n <template v-if=\"optBase.isSend\">\n <span v-if=\"optBase.isCountdown\" class=\"inputCaptcha-count\">{{ optBase.countdown }}秒后重发</span>\n <span v-else class=\"inputCaptcha-btn\" @click.stop=\"onSend\">重新发送</span>\n </template>\n <span v-else class=\"inputCaptcha-btn\" @click.stop=\"onSend\">发送验证码</span>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, reactive, computed, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport Input from '../Input/Index.vue'\n\n// defineOptions\ndefineOptions({\n name: 'ClInputCaptcha',\n components: {\n ClInput: Input,\n }\n})\n\n// props\nconst props = defineProps<{\n value?: string\n className?: string\n theme?: string\n placeholder?: string\n countdownMax?: number\n onSendBefore?: Function\n}>()\n\n// emit\nconst emit = defineEmits<{\n (e: 'update:value', value: string): void\n (e: 'onChange', value: string): void\n (e: 'onKeyupEnter', value: string): void\n (e: 'onSend'): void\n}>()\n\n// 常量 / 变量定义\nconst refElInput = ref<any>(null)\nconst optBase = reactive({\n value: '',\n isSend: false,\n isCountdown: false,\n countdown: props.countdownMax || 120,\n})\nconst _pageData: any = {\n intervalCountdownId: null,\n}\n\n// computed\nconst clsParent = computed(() => {\n const clsTemp: any = {\n 'panel-input-captcha': true,\n 'box-width': true,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((cls) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n clsTemp[`inputCaptcha-theme-${props.theme || 'default'}`] = true\n return clsTemp\n})\n\nconst clsSendBtn = computed(() => {\n const clsTemp: any = {\n 'inputCaptcha-send': true,\n 'inputCaptcha-send-ing': optBase.isCountdown,\n }\n return clsTemp\n})\n\n// emit 外部使用的事件\nconst _emitChange = (value: string) => {\n emit('update:value', value)\n emit('onChange', value)\n}\n\nconst _emitKeyupEnter = () => {\n emit('onKeyupEnter', optBase.value)\n}\n\nconst _emitSend = () => {\n emit('onSend')\n}\n\n// 内部方法\nconst _initMain = () => { }\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// 内部触发的事件\nconst onChange = (value: string) => {\n _emitChange(value)\n}\n\nconst onKeyupEnter = () => {\n _emitKeyupEnter()\n}\n\nconst onSend = () => {\n const { countdownMax = 120 } = props\n let countdown = optBase.countdown\n if (countdown === countdownMax) {\n let isSend = false\n if (props.onSendBefore) {\n isSend = props.onSendBefore()\n isSend = CommonBase.isBoolean(isSend) ? isSend : false\n }\n optBase.isSend = isSend\n if (isSend) {\n _emitSend()\n countdown = countdownMax\n optBase.isCountdown = true\n optBase.countdown = countdown\n _pageData.intervalCountdownId = setInterval(() => {\n countdown -= 1\n let isCountdown = false\n if (countdown <= 0) {\n clearInterval(_pageData.intervalCountdownId)\n countdown = countdownMax\n isCountdown = false\n } else {\n isCountdown = true\n }\n optBase.countdown = countdown\n optBase.isCountdown = isCountdown\n }, 1000)\n }\n }\n}\n\n// 开放给外部使用的方法\nconst getValue = () => {\n return CommonBase.trim(optBase.value)\n}\n\n// 导出类型定义\nexport interface ClInputCaptchaExpose {\n getValue: () => string\n}\n\n// defineExpose\ndefineExpose({\n getValue\n})\n</script>","import CommonBase from \"../../base\";\nimport CommonElement from \"../index\";\ndeclare interface IClientXY {\n clientX: number\n clientY: number\n}\ndeclare interface IOptions {\n start?: (event: Event, clientXYInfo: IClientXY) => void\n ing?: (event: Event, clientXYInfo: IClientXY) => void\n end?: (event: Event, clientXYInfo: IClientXY) => void\n}\nclass Drag {\n optionsDrag: IOptions;\n private _isDragging: boolean;\n private _bindRunDragStart: any;\n private _bindRunDragIng: any;\n private _bindRunDragEnd: any;\n constructor(element: HTMLElement | null, options: IOptions) {\n this.optionsDrag = options;\n this._isDragging = false;\n this._init(element);\n }\n private _init(element: HTMLElement | null) {\n this._bindRunDragStart = this._runDragStart.bind(this);\n this._bindRunDragIng = this._runDraggIng.bind(this);\n this._bindRunDragEnd = this._runDragEnd.bind(this);\n CommonElement.onListener(element, \"mousedown\", this._bindRunDragStart);\n CommonElement.onListener(element, \"touchstart\", this._bindRunDragStart);\n }\n private _runDragStart(e: Event) {\n if (this._isDragging) return;\n\n const clientXYInfo = CommonElement.getClientXY(e);\n let tempRun: any = true;\n if (this.optionsDrag.start) {\n tempRun = this.optionsDrag.start(e, clientXYInfo);\n }\n tempRun = CommonBase.isBoolean(tempRun) ? tempRun : true;\n if (tempRun) {\n e.preventDefault();\n e.stopPropagation();\n\n document.onselectstart = () => false;\n document.ondragstart = () => false;\n\n this._isDragging = true;\n\n CommonElement.onListener(window, \"mousemove\", this._bindRunDragIng);\n CommonElement.onListener(window, \"touchmove\", this._bindRunDragIng);\n CommonElement.onListener(window, \"mouseup\", this._bindRunDragEnd);\n CommonElement.onListener(window, \"touchend\", this._bindRunDragEnd);\n CommonElement.onListener(window, \"contextmenu\", this._bindRunDragEnd);\n } else {\n this._isDragging = false;\n }\n }\n private _runDraggIng(e: Event) {\n if (!this._isDragging) return;\n const clientXYInfo = CommonElement.getClientXY(e);\n if (this.optionsDrag.ing) {\n this.optionsDrag.ing(e, clientXYInfo);\n }\n }\n private _runDragEnd(e: Event) {\n if (!this._isDragging) return;\n this._isDragging = false;\n const clientXYInfo = CommonElement.getClientXY(e);\n if (this.optionsDrag.end) {\n this.optionsDrag.end(e, clientXYInfo);\n }\n this._offListener();\n }\n private _offListener() {\n CommonElement.offListener(window, \"mousemove\", this._bindRunDragIng);\n CommonElement.offListener(window, \"touchmove\", this._bindRunDragIng);\n CommonElement.offListener(window, \"mouseup\", this._bindRunDragEnd);\n CommonElement.offListener(window, \"touchend\", this._bindRunDragEnd);\n CommonElement.offListener(window, \"contextmenu\", this._bindRunDragEnd);\n }\n end() {\n this._isDragging = false;\n this._offListener();\n }\n}\nexport default Drag;\n","import CommonBase from \"../../base\";\nimport CommonElement from \"../index\";\nimport { DelayFun } from \"../../Tools/index\";\ninterface IOptions {\n element?: HTMLElement | null\n isDelay?: boolean\n delayTime?: number\n callback: (item?: any) => void\n}\nclass Resize {\n options: IOptions;\n private _isWinResize: boolean;\n private _isRunDelay: boolean;\n private _runDelayFun: any;\n private _bindWinResize: any;\n private _objResizeObserver: any;\n constructor(options: IOptions) {\n this._isWinResize = CommonBase.isUndefined(options.element);\n this._isRunDelay = Boolean(CommonBase.isBoolean(options.isDelay) ? options.isDelay : true);\n this.options = options;\n this._init();\n }\n private _init() {\n if (this._isRunDelay) {\n this._runDelayFun = new DelayFun(this.options.callback, this.options.delayTime);\n }\n\n if (this._isWinResize) {\n this._bindWinResize = this._onWinResize.bind(this);\n CommonElement.onListener(window, \"resize\", this._bindWinResize);\n } else {\n this._initResizeObserver();\n }\n\n }\n private _onWinResize() {\n if (this._isRunDelay) {\n this._runDelayFun.run();\n } else {\n if (this.options.callback) {\n this.options.callback();\n }\n }\n }\n private _initResizeObserver() {\n if (window && \"ResizeObserver\" in window) {\n this._objResizeObserver = new ResizeObserver(entries => {\n const entry = entries[0]; // {target,contentRect}\n if (this._isRunDelay) {\n this._runDelayFun.run(() => {\n this.options.callback(entry);\n });\n } else {\n this.options.callback(entry);\n }\n });\n this._objResizeObserver.observe(this.options.element);\n }\n }\n destroy() {\n if (this._isWinResize) {\n CommonElement.offListener(window, \"resize\", this._bindWinResize);\n } else {\n if (this._objResizeObserver) {\n this._objResizeObserver.disconnect();\n this._objResizeObserver = null;\n }\n }\n }\n}\nexport default Resize;","<template>\n <span\n ref=\"refElButton\"\n :class=\"clsParent\"\n >\n <slot name=\"icon\"></slot>\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport { Drag as DragEvent } from '../../Common/Element/Event/index'\n\n// defineOptions\ndefineOptions({\n name: 'ClInputnumberButton'\n})\n\n// props\nconst props = defineProps<{\n className?: string\n isDisabled?: boolean\n checkDownBeforeCallback?: Function\n}>()\n\n// emit\nconst emit = defineEmits<{\n (e: 'onLongDownStart'): void\n (e: 'onLongDownEnd'): void\n}>()\n\n// 常量 / 变量定义\nconst refElButton = ref<HTMLElement | null>(null)\nconst _pageData: any = {\n longDownInterval: null,\n isMoveBoundary: false,\n}\n\n// computed\nconst clsParent = computed(() => {\n const cls: any = {\n 'inputNumber-controls': true,\n }\n const className = props.className\n if (className && !CommonBase.isEmpty(className)) {\n className.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n cls['inputNumber-controls-disabled'] = props.isDisabled || false\n return cls\n})\n\n// emit 外部使用的事件\nconst _emitLongDownStart = () => {\n emit('onLongDownStart')\n}\n\nconst _emitLongDownEnd = () => {\n emit('onLongDownEnd')\n}\n\n// 内部方法\nconst _checkLongDownStart = () => {\n let isCheck = true\n if (props.checkDownBeforeCallback) {\n isCheck = props.checkDownBeforeCallback()\n }\n return isCheck\n}\n\nconst _stopLongDownInterval = () => {\n if (_pageData.longDownInterval) {\n clearInterval(_pageData.longDownInterval)\n _pageData.longDownInterval = null\n }\n}\n\nconst _runLongDownStart = () => {\n _emitLongDownStart()\n _stopLongDownInterval()\n _pageData.longDownInterval = setInterval(() => {\n if (!props.isDisabled) {\n _emitLongDownStart()\n } else {\n _runLongDownEnd()\n }\n }, 200)\n}\n\nconst _runLongDownIng = (e: any) => {\n if (refElButton.value === e.target || refElButton.value?.contains(e.target)) {\n if (_pageData.isMoveBoundary) {\n _pageData.isMoveBoundary = false\n _runLongDownStart()\n }\n } else {\n _stopLongDownInterval()\n _pageData.isMoveBoundary = true\n }\n}\n\nconst _runLongDownEnd = () => {\n _stopLongDownInterval()\n _emitLongDownEnd()\n}\n\nconst _initMain = () => {\n const dragConfig = {\n start(e: any) {\n let isRun = false\n if (e.buttons === 1) {\n isRun = _checkLongDownStart()\n if (isRun) {\n if (!props.isDisabled) {\n _runLongDownStart()\n }\n }\n }\n return isRun\n },\n ing: (e: any) => {\n _runLongDownIng(e)\n },\n end: () => {\n _runLongDownEnd()\n },\n }\n if (refElButton.value) {\n new DragEvent(refElButton.value, dragConfig)\n }\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n</script>","<template>\n <div :class=\"clsParent\">\n <cl-input ref=\"refElInput\" :value=\"optValue\" :placeholder=\"placeholder\" :disabled=\"disabled\"\n :isReadonly=\"isTextRead\" :isClean=\"isClean\" :isNumber=\"!optIsFillZero\" :decimal=\"optTextDecimal\" theme=\"icon\"\n @onChange=\"onInputChange\" @onKeydown=\"onInputKeydown\" @onKeyup=\"onInputKeyup\" @onFocus=\"onInputFocus\"\n @onBlur=\"onInputBlur\"><template v-if=\"optIsShowTextPrepend\" v-slot:prepend>\n <slot name=\"textPrepend\"></slot>\n </template>\n </cl-input>\n <cl-inputnumber-button className=\"inputNumber-subtract\" :isDisabled=\"disabled || optBtn.subtractDisabled\"\n :checkDownBeforeCallback=\"operateBtnDownBeforeCallback\" @onLongDownStart=\"onButtonLongDown('subtract')\"\n @onLongDownEnd=\"onButtonLongDownEnd()\">\n <template v-slot:icon>\n <i :class=\"clsIconSubtract\"></i>\n </template>\n </cl-inputnumber-button>\n <cl-inputnumber-button className=\"inputNumber-add\" :isDisabled=\"disabled || optBtn.addDisabled\"\n :checkDownBeforeCallback=\"operateBtnDownBeforeCallback\" @onLongDownStart=\"onButtonLongDown('add')\"\n @onLongDownEnd=\"onButtonLongDownEnd()\">\n <template v-slot:icon>\n <i :class=\"clsIconAdd\"></i>\n </template>\n </cl-inputnumber-button>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, reactive, computed, onMounted, nextTick, watch, useSlots } from 'vue'\nimport CommonBase from '../../Common/base'\nimport Input from '../Input/Index.vue'\nimport InputnumberButton from './Button.vue'\n\n// defineOptions\ndefineOptions({\n name: 'ClInputNumber',\n components: {\n ClInput: Input,\n ClInputnumberButton: InputnumberButton,\n }\n})\n\n// props\nconst props = defineProps({\n size: {\n type: String,\n default: 'large',\n validator: (value: string) => {\n return ['', 'large', 'small'].indexOf(value) !== -1\n }\n },\n btnShowType: {\n type: String,\n default: 'fixed',\n validator: (value: string) => {\n return ['fixed', 'focus'].indexOf(value) !== -1\n }\n },\n btnTheme: {\n type: String,\n default: 'leftRight',\n validator: (value: string) => {\n return ['leftRight', 'upDown'].indexOf(value) !== -1\n }\n },\n value: {\n type: [String, Number],\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n },\n className: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n },\n isClean: {\n type: Boolean,\n default: true\n },\n isTextRead: {\n type: Boolean,\n default: false\n },\n min: {\n type: Number,\n default: undefined\n },\n max: {\n type: Number,\n default: undefined\n },\n isLoop: {\n type: Boolean,\n default: false\n },\n decimal: {\n type: Number,\n default: 0\n },\n fillZeroCount: {\n type: Number,\n default: 0\n },\n btnStep: {\n type: Number,\n default: 1\n },\n btnClsIconSub: {\n type: String,\n default: ''\n },\n btnClsIconAdd: {\n type: String,\n default: ''\n },\n operateBtnDownBeforeCallback: Function,\n calculationOperateValueCallback: Function,\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'update:value', value: string): void\n (e: 'onChange', value: string): void\n}>()\n\n// 常量 / 变量定义\nconst refElInput = ref<any>(null)\nconst optBase = reactive({\n isHover: false,\n isFocus: false,\n})\nconst optValue = ref('')\n\nconst optBtn = reactive({\n subtractDisabled: false,\n addDisabled: false,\n})\n\nconst _pageData: any = {\n upDown: {\n subtract: 'clIconFont clIcon-angle-up',\n add: 'clIconFont clIcon-angle-down',\n },\n leftRight: {\n subtract: 'clIconFont clIcon-minus',\n add: 'clIconFont clIcon-plus',\n },\n btnShowFixed: props.btnShowType === 'fixed',\n btnShowFocus: props.btnShowType === 'focus',\n}\n\n// computed\nconst optIsShowTextPrepend = computed(() => {\n return !CommonBase.isUndefined(slots.textPrepend)\n})\n\nconst optTextDecimal = computed(() => {\n const decimal = props.decimal || 0\n const step = (props.btnStep || 1).toString()\n let newDecimal = decimal\n if (step.indexOf('.') > -1) {\n const len = step.split('.')[1].length\n if (decimal < len) {\n newDecimal = len\n }\n }\n return newDecimal\n})\n\nconst optIsFillZero = computed(() => {\n return (props.fillZeroCount || 0) > 0\n})\n\nconst clsParent = computed(() => {\n const cls: any = {\n 'panel-inputNumber': true,\n 'inputNumber-disabled': props.disabled || false,\n }\n const { className, size } = props\n\n if (className && !CommonBase.isEmpty(className)) {\n className.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n cls[`inputNumber-btn-${props.btnTheme || 'leftRight'}`] = true\n cls[`inputNumber-btn-${props.btnShowType || 'fixed'}`] = true\n cls['inputNumber-hover'] = optBase.isHover\n cls['inputNumber-focus'] = optBase.isFocus\n cls[`inputNumber-${size || 'large'}`] = true\n return cls\n})\n\nconst clsIconSubtract = computed(() => {\n const cls: any = {}\n let icon = ''\n if (props.btnClsIconSub && !CommonBase.isEmpty(props.btnClsIconSub)) {\n icon = props.btnClsIconSub\n } else {\n const btnTheme = props.btnTheme || 'leftRight'\n if (_pageData[btnTheme]) {\n icon = _pageData[btnTheme].subtract\n }\n }\n if (icon.length > 0) {\n cls[icon] = true\n }\n return cls\n})\n\nconst clsIconAdd = computed(() => {\n const cls: any = {}\n let icon = ''\n if (props.btnClsIconAdd && !CommonBase.isEmpty(props.btnClsIconAdd)) {\n icon = props.btnClsIconAdd\n } else {\n const btnTheme = props.btnTheme || 'leftRight'\n if (_pageData[btnTheme]) {\n icon = _pageData[btnTheme].add\n }\n }\n if (icon.length > 0) {\n cls[icon] = true\n }\n return cls\n})\n\n// emit 外部使用的事件\nconst _emitChange = () => {\n const value = optValue.value\n emit('update:value', value)\n emit('onChange', value)\n}\n\n// 内部方法\nconst _initValue = (value: string) => {\n if (value === optValue.value) {\n refElInput.value?.setValue(value)\n }\n optValue.value = value\n}\n\nconst _calculationOperateValue = (value: any, type?: string) => {\n let newValue: any\n let subtractDisabled = false\n let addDisabled = false\n if (props.calculationOperateValueCallback) {\n const tempValueInfo = props.calculationOperateValueCallback({ value, type })\n newValue = tempValueInfo.value\n subtractDisabled = tempValueInfo.subtractDisabled\n addDisabled = tempValueInfo.addDisabled\n } else {\n const num = CommonBase.isEmpty(value) ? 0 : Number(value)\n const min: any = props.min\n const max: any = props.max\n const { isLoop = false } = props\n const minIsEmpty = CommonBase.isUndefined(min)\n const maxIsEmpty = CommonBase.isUndefined(max)\n const step = props.btnStep || 1\n\n let tempNum = num\n if (type && !CommonBase.isEmpty(type)) {\n tempNum += step * (type === 'subtract' ? -1 : 1)\n\n const tempStr = tempNum.toString()\n if (tempStr.indexOf('.') > -1) {\n const len = tempStr.split('.')[1].length\n const decimal = optTextDecimal.value\n if (decimal.toString().length < len) {\n tempNum = Number(tempNum.toFixed(decimal))\n }\n }\n }\n\n if (!minIsEmpty && tempNum <= min) {\n if (!isLoop) {\n subtractDisabled = true\n }\n newValue = tempNum < min && isLoop && !maxIsEmpty ? max : min\n } else if (!maxIsEmpty && tempNum >= max) {\n if (!isLoop) {\n addDisabled = true\n }\n newValue = tempNum > max && isLoop && !minIsEmpty ? min : max\n } else {\n newValue = tempNum\n }\n }\n if (optIsFillZero.value) {\n newValue = CommonBase.getFillZero(newValue)\n }\n _initValue(newValue.toString())\n optBtn.subtractDisabled = subtractDisabled\n optBtn.addDisabled = addDisabled\n}\n\nconst _setFocus = (isFocus: boolean) => {\n optBase.isFocus = isFocus\n if (isFocus) {\n refElInput.value?.focus()\n }\n}\n\nconst _initMain = () => {\n _calculationOperateValue(props.value)\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// watch\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue !== oldValue && newValue !== optValue.value) {\n _calculationOperateValue(newValue)\n }\n },\n)\n\n// 内部触发的事件\nlet _searchTimerDelay: any\nconst onInputChange = (value: string) => {\n if (!props.disabled) {\n if (_searchTimerDelay) {\n clearTimeout(_searchTimerDelay)\n _searchTimerDelay = null\n }\n _searchTimerDelay = setTimeout(() => {\n if (CommonBase.isEmpty(value)) {\n _initValue('')\n optBtn.subtractDisabled = false\n optBtn.addDisabled = false\n } else {\n _calculationOperateValue(value)\n }\n _emitChange()\n }, 100)\n }\n}\n\nconst onInputKeydown = (e: any) => {\n if (!props.disabled && !props.isTextRead) {\n let keyCode = e.keyCode\n if (!CommonBase.isUndefined(keyCode)) {\n keyCode = keyCode.toString()\n if (keyCode === '37' || keyCode === '40') {\n _calculationOperateValue(optValue.value, 'subtract')\n _setFocus(true)\n } else if (keyCode === '38' || keyCode === '39') {\n _calculationOperateValue(optValue.value, 'add')\n _setFocus(true)\n }\n }\n }\n}\n\nconst onInputKeyup = (e: any) => {\n if (!props.disabled && !props.isTextRead) {\n let keyCode = e.keyCode\n if (!CommonBase.isUndefined(keyCode)) {\n keyCode = keyCode.toString()\n if (keyCode === '37' || keyCode === '40' || keyCode === '38' || keyCode === '39') {\n _setFocus(true)\n _emitChange()\n }\n }\n }\n}\n\nconst onInputFocus = () => {\n _setFocus(true)\n}\n\nconst onInputBlur = () => {\n _setFocus(false)\n}\n\nconst onButtonLongDown = (type: string) => {\n _calculationOperateValue(optValue.value, type)\n _setFocus(true)\n}\n\nconst onButtonLongDownEnd = () => {\n _emitChange()\n _setFocus(true)\n}\n\nconst slots = useSlots()\n</script>","<template>\n <div :class=\"clsParent\">\n <cl-input\n ref=\"refElInput\"\n v-model:value=\"optSearchValue\"\n theme=\"icon\"\n :placeholder=\"placeholder\"\n :isClean=\"true\"\n :disabled=\"disabled\"\n @onChange=\"onChange\"\n @onKeyupEnter=\"onKeyupEnter\"\n @onFocus=\"onFocus\"\n @onBlur=\"onBlur\"\n @onClear=\"onClear\"\n >\n <template v-slot:[optSlotAttrName]>\n <span\n v-if=\"theme==='text'\"\n @click=\"onClickIcon\"\n >{{textLabel}}</span>\n <i\n v-else\n class=\"clIconFont clIcon-search\"\n @click=\"onClickIcon\"\n ></i>\n </template>\n </cl-input>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, computed, watch } from 'vue'\nimport CommonBase from '../../Common/base'\nimport ClInput from '../Input/Index.vue'\n\ndefineOptions({\n name: 'ClInputSearch',\n components: {\n ClInput\n }\n})\n\nconst props = defineProps({\n theme: {\n type: String,\n default: 'icon',\n validator: (value: string) => {\n return ['icon', 'text'].indexOf(value) !== -1\n }\n },\n location: {\n type: String,\n default: 'right',\n validator: (value: string) => {\n return ['left', 'right'].indexOf(value) !== -1\n }\n },\n value: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n },\n className: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n },\n textLabel: {\n type: String,\n default: ''\n },\n changDelayTime: {\n type: Number,\n default: 200\n },\n})\n\nconst emit = defineEmits<{\n (e: 'update:value', value: string): void\n (e: 'onChange', value: string): void\n (e: 'onSearch', value: string): void\n (e: 'onFocus', value: string): void\n (e: 'onBlur', value: string): void\n}>()\n\nconst refElInput = ref<any>(null)\n\nlet _prevValue = props.value as string\nconst optSearchValue = ref(props.value)\n\nconst clsParent = computed(() => {\n const clsTemp: any = {\n 'panel-input-search': true,\n 'input-search-disabled': props.disabled,\n }\n if (!CommonBase.isEmpty(props.className)) {\n props.className?.split(' ').forEach((cls) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n const theme = CommonBase.isEmpty(props.theme) ? 'icon' : props.theme\n clsTemp[`input-search-${theme}`] = true\n\n return clsTemp\n})\n\nconst optSlotAttrName = computed(() => {\n let temp = 'append'\n if (!CommonBase.isEmpty(props.location)) {\n temp = props.location === 'left' ? 'prepend' : 'append'\n }\n return temp\n})\n\nlet _searchTimerDelay: any\n\nconst _stopRunDelay = () => {\n if (_searchTimerDelay) {\n clearTimeout(_searchTimerDelay)\n _searchTimerDelay = null\n }\n}\n\nconst _emitChange = (value: string) => {\n emit('update:value', value)\n emit('onChange', value)\n}\n\nconst _emitSearch = (value: string) => {\n emit('onSearch', value)\n}\n\nconst _emitFocus = (value: string) => {\n emit('onFocus', value)\n}\n\nconst _emitBlur = (value: string) => {\n emit('onBlur', value)\n}\n\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue !== oldValue) {\n optSearchValue.value = newValue\n }\n },\n)\n\nconst onChange = (value: string) => {\n if (!props.disabled) {\n _stopRunDelay()\n _searchTimerDelay = setTimeout(() => {\n if (_prevValue !== value) {\n _prevValue = value\n _emitChange(value)\n }\n }, props.changDelayTime)\n }\n}\n\nconst onKeyupEnter = (value: string) => {\n if (!props.disabled) {\n setTimeout(() => {\n _emitSearch(value)\n }, props.changDelayTime)\n }\n}\n\nconst onFocus = (value: string) => {\n if (!props.disabled) {\n _emitFocus(value)\n }\n}\n\nconst onBlur = (value: string) => {\n if (!props.disabled) {\n _emitBlur(value)\n }\n}\n\nconst onClickIcon = () => {\n if (!props.disabled) {\n _emitSearch(optSearchValue.value as string)\n }\n}\n\nconst onClear = () => {\n if (!props.disabled) {\n _emitChange('')\n _emitSearch('')\n }\n}\n\nconst getValue = () => {\n return optSearchValue.value\n}\n\nconst setValue = (value: string) => {\n _prevValue = value\n optSearchValue.value = value\n}\n\nconst focus = () => {\n refElInput.value?.focus()\n}\n\nexport interface ClInputSearchExpose {\n getValue: () => string\n setValue: (value: string) => void\n focus: () => void\n}\n\ndefineExpose({\n getValue,\n setValue,\n focus\n})\n</script>\n\n<style scoped>\n</style>\n","<template>\n <transition\n name=\"clSlideUpDown\"\n @before-enter=\"onBeforeEnter\"\n @enter=\"onEnter\"\n @after-enter=\"onAfterEnter\"\n @before-leave=\"onBeforeLeave\"\n @leave=\"onLeave\"\n @after-leave=\"onAfterLeave\"\n >\n <slot></slot>\n </transition>\n</template>\n\n<script setup lang=\"ts\">\nimport { reactive } from 'vue'\n\n// defineOptions\ndefineOptions({ name: 'ClTransitionSlideupdown' })\n\n// reactive\nconst optBase = reactive({\n oldPaddingTop: '',\n oldPaddingBottom: '',\n oldOverflow: '',\n})\n\n// 过渡事件处理\nconst onBeforeEnter = (el: any) => {\n optBase.oldPaddingBottom = el.style.paddingBottom\n optBase.oldPaddingTop = el.style.paddingTop\n // 过渡效果开始前设置元素的maxHeight为0,让元素maxHeight有一个初始值\n el.style.paddingTop = '0'\n el.style.paddingBottom = '0'\n el.style.maxHeight = '0'\n}\n\nconst onEnter = (el: any, done: any) => {\n optBase.oldOverflow = el.style.overflow\n const elHeight = el.scrollHeight\n // 过渡效果进入后将元素的maxHeight设置为元素本身的高度,将元素maxHeight设置为auto不会有过渡效果\n if (elHeight > 0) {\n el.style.maxHeight = elHeight + 'px'\n } else {\n el.style.maxHeight = '0'\n }\n el.style.paddingTop = optBase.oldPaddingTop\n el.style.paddingBottom = optBase.oldPaddingBottom\n\n el.style.overflow = 'hidden'\n // done();\n const onTransitionDone = function() {\n done()\n el.removeEventListener('transitionend', onTransitionDone, false)\n el.removeEventListener('transitioncancel', onTransitionDone, false)\n }\n // 绑定元素的transition完成事件,在transition完成后立即完成vue的过度动效\n el.addEventListener('transitionend', onTransitionDone, false)\n el.addEventListener('transitioncancel', onTransitionDone, false)\n}\n\nconst onAfterEnter = (el: any) => {\n // 过渡效果完成后恢复元素的maxHeight\n el.style.maxHeight = ''\n el.style.overflow = optBase.oldOverflow\n}\n\nconst onBeforeLeave = (el: any) => {\n optBase.oldPaddingBottom = el.style.paddingBottom\n optBase.oldPaddingTop = el.style.paddingTop\n optBase.oldOverflow = el.style.overflow\n\n el.style.maxHeight = el.scrollHeight + 'px'\n el.style.overflow = 'hidden'\n}\n\nconst onLeave = (el: any, done: any) => {\n if (el.scrollHeight !== 0) {\n el.style.maxHeight = '0'\n el.style.paddingBottom = '0'\n el.style.paddingTop = '0'\n }\n // done();\n const onTransitionDone = function() {\n done()\n el.removeEventListener('transitionend', onTransitionDone, false)\n el.removeEventListener('transitioncancel', onTransitionDone, false)\n }\n // 绑定元素的transition完成事件,在transition完成后立即完成vue的过度动效\n el.addEventListener('transitionend', onTransitionDone, false)\n el.addEventListener('transitioncancel', onTransitionDone, false)\n}\n\nconst onAfterLeave = (el: any) => {\n el.style.maxHeight = ''\n el.style.overflow = optBase.oldOverflow\n el.style.paddingBottom = optBase.oldPaddingBottom\n el.style.paddingTop = optBase.oldPaddingTop\n\n optBase.oldOverflow = optBase.oldPaddingBottom = optBase.oldPaddingTop = ''\n}\n</script>\n\n<style scoped>\n.clSlideUpDown-enter-active,\n.clSlideUpDown-leave-active {\n overflow: hidden;\n transition: height 0.3s ease-in-out, padding 0.3s ease-in-out, max-height 0.3s ease-in-out;\n}\n</style>\n","import axios from \"axios\";\nimport qs from \"qs\";\nimport CommonBase from \"./base\";\nclass AxiosRequest {\n requestPendingList: any;\n globalOptions: any;\n constructor() {\n this.requestPendingList = new Map();\n this.globalOptions = {};\n this._setInterceptors();\n }\n private _initRequest(url: string, param: any, optionsAll: any): Promise<any> {\n const self = this;\n const newExtInfo = this._getExtInfo(optionsAll.ext);\n return new Promise((resolve) => {\n const startTime = new Date();\n let options: any = {\n url: url,\n timeout: 1000 * 15,\n responseType: \"json\",\n retry: 3,\n retryDelay: 1000,\n //_requestKeyMerge: [\"method\", \"url\", \"_ran\"],\n };\n options = CommonBase.getJsonMerge(options, optionsAll.options, param);\n\n axios(options).then((response) => {\n if (optionsAll.ext._operateType === \"fileDownBinary\") {\n optionsAll.ext.uploadDownBinaryCallback(response, newExtInfo, resolve);\n } else {\n const initResData = newExtInfo.resultCallback ? newExtInfo.resultCallback(response) : self._initResult(response, newExtInfo.resultCode);\n self._initRequestResolve(resolve, initResData, newExtInfo, startTime);\n }\n\n }).catch((error) => {\n if (newExtInfo.errorCallback && error.response) {\n const errCbResult = newExtInfo.errorCallback(error);\n if (errCbResult) {\n if (errCbResult.then && CommonBase.isFunction(errCbResult.then)) {\n errCbResult.then((result: any) => {\n self._initRequestError(error, resolve, result, newExtInfo, startTime);\n });\n } else {\n self._initRequestError(error, resolve, errCbResult, newExtInfo, startTime);\n }\n }\n } else {\n let errCode = \"\";\n let errMsg = \"\";\n if (error.response) {\n errCode = error.response.status.toString();\n } else if (error.code === \"ECONNABORTED\") {\n errMsg = \"Axios:TimeOut Repeat\";\n } else {\n if (!CommonBase.isEmpty(error.message)) {\n errMsg = `Axios:${CommonBase.isEmpty(error.code) ? \"\" : (error.code + \"-\")}${error.message}`;\n }\n }\n const initErrData = self._initResultErr(errCode, errMsg);\n self._initRequestError(error, resolve, initErrData, newExtInfo, startTime);\n }\n });\n });\n }\n _initRequestResolve(resolve: any, data: any, newExtInfo: any, startTime: any) {\n if (newExtInfo.isTimeOut) {\n this._timeOut(startTime, () => {\n resolve(data);\n });\n } else {\n resolve(data);\n }\n }\n _initRequestError(error: any, resolve: any, errData: any, newExtInfo: any, startTime: any) {\n if (axios.isCancel(error)) {\n //reject({ code: \"-1111\", success: false, msg: error.message });\n } else {\n this._initRequestResolve(resolve, errData, newExtInfo, startTime);\n }\n }\n initGet(options: any) {\n const param = {\n method: \"get\",\n headers: this._getHeader(options.ext),\n params: options.param,\n };\n return this._initRequest(options.url, param, options);\n }\n\n initPost(options: any) {\n const param = {\n method: \"post\",\n headers: this._getHeader(options.ext),\n data: JSON.stringify(options.param),\n };\n return this._initRequest(options.url, param, options);\n }\n\n initPut(options: any) {\n const url = options.url;\n const param = {\n method: \"put\",\n headers: this._getHeader(options.ext),\n data: JSON.stringify(options.param),\n };\n return this._initRequest(url, param, options);\n }\n\n initDelete(options: any) {\n const url = options.url;\n const param = {\n method: \"delete\",\n headers: this._getHeader(options.ext),\n data: JSON.stringify(options.param),\n };\n return this._initRequest(url, param, options);\n }\n\n initFile(options: any) {\n const param: any = {\n method: \"post\",\n };\n const headers: any = this._getHeader(options.ext);\n /* if (options.ext.headerCallback) {\n const headerData = options.ext.headerCallback();\n if (!CommonBase.isEmpty(headerData)) {\n for (const [k, v] of Object.entries(headerData)) {\n headers[k] = v;\n }\n }\n } */\n // headers[\"Content-Type\"] = \"multipart/form-data\";\n /* param.headers = this._getHeader({\n headerCallback: () => headers,\n }); */\n param.headers = headers;\n const formData = new FormData();\n Object.keys(options.param).forEach((pk) => {\n const pv = options.param[pk];\n if (CommonBase.isArray(pv)) {\n pv.forEach((v: any) => {\n formData.append(pk, v);\n });\n } else {\n formData.append(pk, options.param[pk]);\n }\n });\n param.data = formData;\n return this._initRequest(options.url, param, options);\n }\n\n initFileDownLoad(options: any) {\n const self = this;\n const param: any = {\n method: \"post\",\n responseType: \"blob\",\n };\n const methodType = !CommonBase.isEmpty(options.options.method) ? options.options.method : \"post\";\n param.method = methodType;\n\n const headers: any = this._getHeader(options.ext);\n headers[\"Content-Type\"] = \"application/json;\";\n param.headers = headers;\n\n if (!CommonBase.isEmpty(options.param)) {\n if (methodType === \"get\") {\n param.params = options.param;\n } else {\n param.data = JSON.stringify(options.param);\n }\n }\n\n options.ext._operateType = \"fileDownBinary\";\n options.ext.uploadDownBinaryCallback = (response: any, newExtInfo: any, resolve: any) => {\n const fr = new FileReader();\n fr.onload = function(resFr: any) {\n try {\n const resData = JSON.parse(resFr.currentTarget.result);\n const result = newExtInfo.resultCallback ? newExtInfo.resultCallback({ data: resData }) : self._initResult({ data: resData }, newExtInfo.resultCode);\n if (!result.success) {\n resolve(result);\n }\n } catch (err) {\n //const fileName = window.decodeURIComponent(response.headers[\"content-disposition\"].split(\"=\")[1]);\n const contentDisposition = response.headers[\"content-disposition\"];\n let fileName = \"\";\n if (!CommonBase.isEmpty(contentDisposition)) {\n fileName = window.decodeURIComponent(contentDisposition.split(\"=\")[1]);\n } else {\n fileName = options.param && options.param.fileName\n ? options.param.fileName\n : (new Date()).getTime().toString();\n }\n fileName = fileName.replace(/\\\"/g, \"\").replace(/'/g, \"\");\n let fileType = \"\";\n /* const arrFile = fileName.split(\".\");\n if (arrFile.length > 1) {\n fileType = arrFile[1];\n }\n let blobOption: any = undefined;\n if (fileType === \"xlsx\") {\n blobOption = { type: \"application/vnd.ms-excel\" };\n }*/\n const lastIndex = fileName.lastIndexOf(\".\");\n if (lastIndex > -1) {\n fileType = fileName.substring(lastIndex + 1);\n }\n let blobOption: any = undefined;\n switch (fileType) {\n case \"xls\":\n case \"xlsx\":\n blobOption = { type: \"application/vnd.ms-excel\" };\n break;\n case \"csv\":\n blobOption = { type: \"text/csv\" };\n break;\n case \"doc\":\n case \"docx\":\n blobOption = { type: \"application/msword\" };\n break;\n case \"pdf\":\n blobOption = { type: \"application/pdf\" };\n break;\n }\n const blob = new Blob([response.data], blobOption);\n\n //@ts-ignore\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\n //@ts-ignore\n window.navigator.msSaveOrOpenBlob(blob, fileName);\n } else {\n const link = document.createElement(\"a\");\n link.href = (window.URL || window.webkitURL).createObjectURL(blob);\n link.download = fileName;\n link.style.display = \"none\";\n document.body.appendChild(link);\n link.click();\n //document.body.removeChild(link);\n window.URL.revokeObjectURL(link.href);\n }\n resolve({ success: true });\n }\n };\n fr.readAsText(response.data);\n };\n return this._initRequest(options.url, param, options);\n }\n\n private _getHeader(extOptions: any) {\n const reqHeaders: any = {\n \"Content-Type\": \"application/json;charset=UTF-8\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n };\n if (extOptions && extOptions.headerCallback) {\n const headerData = extOptions.headerCallback();\n if (!CommonBase.isEmpty(headerData)) {\n for (const [k, v] of Object.entries(headerData)) {\n reqHeaders[k] = v;\n }\n }\n }\n return reqHeaders;\n }\n\n private _getExtInfo(extOptions: any) {\n const ext = CommonBase.getJsonClone(extOptions);\n ext.isTimeOut = CommonBase.isBoolean(ext.isTimeOut) ? ext.isTimeOut : true;\n return ext;\n }\n private _timeOut(timeStart: any, cb: any) {\n const timeEnd = new Date();\n const timeDiff = timeEnd.getTime() - timeStart.getTime();\n const diff = timeDiff - 200;\n const timeout = diff > 0 ? 0 : Math.abs(diff);\n if (timeout <= 0) {\n cb();\n } else {\n setTimeout(() => {\n cb();\n }, timeout);\n }\n }\n\n private _initResult(res: any, extCode: any): any {\n const temp = { code: null, success: false, msg: \"\", data: null };\n if (res.data) {\n temp.code = res.data.code.toString();\n const successCode = extCode.success || \"200\";\n if (temp.code === successCode) {\n temp.success = true;\n temp.data = res.data.data;\n } else {\n temp.success = false;\n temp.msg = res.data.message;\n temp.data = res.data.data;\n }\n }\n return temp;\n }\n\n private _initResultErr(code: string, errMsg: string): any {\n const temp = { code: null, success: false, msg: \"Axios:Unknown error .\", data: null };\n //let msg = CommonBase.isExistJsonKey(this.clientErrCode[this.languageType], code) ? this.clientErrCode[this.languageType][code] : \"\";\n //if (CommonBase.isEmpty(msg)) {\n const msg = CommonBase.isEmpty(errMsg) ? `Axios:Unknown error ${code}` : errMsg;\n //}\n temp.msg = msg;\n return temp;\n }\n _setInterceptors() {\n //请求拦截 \n /// 取消重复请求\n axios.interceptors.request.use((config: any) => {\n if (this.globalOptions.interceptorsRequestCallback) {\n this.globalOptions.interceptorsRequestCallback(config);\n }\n if (config) {\n const isRunTimeout = !CommonBase.isEmpty(config.__retryCount) && config.__retryCount > 0;\n /// 超时重发,不执行取消操作\n if (!isRunTimeout) {\n this._removeRequestPending(config);\n this._addRequestPending(config);\n }\n }\n return config;\n }, (error: any) => {\n return Promise.reject(error);\n });\n\n //响应拦截 \n /// 设置 取消重复请求| 超时重发\n axios.interceptors.response.use((response: any) => {\n if (this.globalOptions.interceptorsResponseCallback) {\n this.globalOptions.interceptorsResponseCallback(response);\n }\n this._removeRequestPending(response.config);\n return response;\n }, (error: any) => {\n if (error.code === \"ECONNABORTED\" && error.message.indexOf(\"timeout\") > -1) {\n const config = error.config;\n // If config does not exist or the retry option is not set, reject\n if (!config || !config.retry) return Promise.reject(error);\n\n // Set the variable for keeping track of the retry count\n config.__retryCount = config.__retryCount || 0;\n\n // Check if we've maxed out the total number of retries\n if (config.__retryCount >= config.retry) {\n // Reject with the error\n return Promise.reject(error);\n }\n\n // Increase the retry count\n config.__retryCount += 1;\n\n // Create new promise to handle exponential backoff\n const backoff = new Promise((resolve: any) => {\n setTimeout(function() {\n resolve();\n }, config.retryDelay || 1);\n });\n\n // Return the promise in which recalls axios to retry the request\n return backoff.then(function() {\n return axios(config);\n });\n } else {\n /* this._removeRequestPending(error.config || {});\n if (axios.isCancel(error)) {\n console.log(`请求取消: ${error.message}`);\n } */\n //else {\n return Promise.reject(error);\n //}\n\n }\n });\n }\n private _getRequestKeyMerge(config: any) {\n const requestKeyMerge = config._requestKeyMerge;\n const isRequestCancelRepeat = CommonBase.isBoolean(config.isRequestCancelRepeat) ? config.isRequestCancelRepeat : true;\n const keyArr: string[] = [];\n if (!CommonBase.isEmpty(config) && isRequestCancelRepeat) {\n if (!CommonBase.isUndefined(requestKeyMerge)) {\n [\"method\", \"url\", \"params\", \"data\", \"_ran\"].forEach((k: string) => {\n if (CommonBase.isExistValue(requestKeyMerge, k) && !CommonBase.isEmpty(config[k])) {\n let v = config[k];\n if (k === \"params\" || k === \"data\") {\n if (CommonBase.isString(v)) {\n v = JSON.parse(v);\n }\n keyArr.push(qs.stringify(v));\n } else {\n if (k === \"_ran\" && CommonBase.isEmpty(v)) {\n v = (new Date()).getTime();\n }\n keyArr.push(v);\n }\n }\n });\n } else {\n keyArr.push(config.method);\n keyArr.push(config.url);\n if (!CommonBase.isEmpty(config._ran)) {\n keyArr.push(config._ran);\n }\n }\n }\n return keyArr.join(\"&\");\n }\n private _addRequestPending(config: any) {\n const requestKey = this._getRequestKeyMerge(config);\n if (!CommonBase.isEmpty(requestKey)) {\n config.cancelToken = config.cancelToken || new axios.CancelToken((cancel: any) => {\n if (!this.requestPendingList.has(requestKey)) {\n this.requestPendingList.set(requestKey, cancel);\n }\n });\n }\n }\n private _removeRequestPending(config: any) {\n const requestKey = this._getRequestKeyMerge(config);\n if (!CommonBase.isEmpty(requestKey) && this.requestPendingList.has(requestKey)) {\n const cancelToken = this.requestPendingList.get(requestKey);\n cancelToken(`AxiosCancelRepeatRequest: ${requestKey}`);\n this.requestPendingList.delete(requestKey);\n }\n }\n\n cancelAll() {\n const arrKeys = [];\n for (const arrCancel of this.requestPendingList) {\n arrKeys.push(arrCancel[0]);\n }\n arrKeys.forEach((sk: any) => {\n const cancelToken = this.requestPendingList.get(sk);\n cancelToken(`AxiosCancelRepeatRequest: ${sk}`);\n this.requestPendingList.delete(sk);\n });\n }\n setResendAgain(error: any, opt: any = {}) {//{}retryDelay = 100\n const config = error.config;\n //const retryMax = CommonBase.isUndefined(opt.retryMax) ? 3 : opt.retryMax;\n const retryDelay = CommonBase.isUndefined(opt.retryDelay) ? 500 : opt.retryDelay;\n if (!config || !config.retry) return Promise.reject(error);\n\n /* config.__retryCount = config.__retryCount || 0;\n if (config.__retryCount >= retryMax) {\n return Promise.reject(error);\n }\n config.__retryCount += 1; */\n\n const backoff = new Promise((resolve: any) => {\n setTimeout(function() {\n resolve();\n }, retryDelay || 1);\n });\n return backoff.then(function() {\n config.cancelToken = null;\n return axios(config);\n });\n }\n setGlobalOptions(options: any) {\n this.globalOptions = CommonBase.getJsonMerge(this.globalOptions, options || {});\n }\n}\nexport default new AxiosRequest();\n","<template>\n <label :class=\"clsParent\">\n <input\n type=\"checkbox\"\n class=\"switchery-input\"\n :name=\"optElName\"\n :checked=\"optBase.isOpen\"\n >\n <span\n :class=\"clsContainer\"\n :style=\"styContainer\"\n @click=\"onToggle\"\n ref=\"refElContainer\"\n >\n <span\n v-if=\"activeHtml || inactiveHtml\"\n class=\"switchery-txt\"\n >\n <span\n v-if=\"optBase.isOpen\"\n v-html=\"activeHtml\"\n ></span>\n <span\n v-else\n v-html=\"inactiveHtml\"\n ></span>\n </span>\n <template v-else></template>\n <span\n class=\"switchery-button\"\n :style=\"styButton\"\n >\n <cl-load\n v-if=\"isShowLoad && optBase.isRunLoad\"\n theme=\"rotaryLine\"\n size=\"small\"\n ></cl-load>\n <template v-else></template>\n </span>\n </span>\n <div\n v-if=\"isShowLoad && optBase.isRunLoad\"\n class=\"switchery-load-bg\"\n ></div>\n <template v-else></template>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, computed, watch, onMounted, nextTick, inject } from 'vue'\nimport { CommonBase, CommonElement } from '@c.Libs/Common'\nimport ClLoad from '../Load/Index.vue'\nimport './Index.css'\n\ndefineOptions({ name: 'ClSwitchery' })\n\nconst props = defineProps({\n value: {\n type: Boolean,\n default: false,\n },\n name: String,\n className: {\n type: String,\n default: '',\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n color: {\n type: [String, Object],\n validator: (value: any) => {\n return typeof value === 'object' ? value.checked || value.unChecked : typeof value === 'string'\n },\n },\n changeCallback: Function,\n isUseOnChangeCheck: {\n type: Boolean,\n default: false,\n },\n isShowLoad: {\n type: Boolean,\n default: true,\n },\n activeHtml: String,\n inactiveHtml: String,\n})\n\nconst emit = defineEmits<{\n (e: 'update:value', value: boolean): void\n (e: 'onChange', value: boolean, assistData: any): void\n}>()\n\nconst _clGlobals: any = inject('$ClGlobals')\n\nconst refElContainer: any = ref(null)\n\nconst optBase: any = reactive({\n isFirstComplete: false,\n isOpen: props.value,\n buttonLeft: 0,\n isRunLoad: false,\n colorChecked: '#2196f3',\n colorUnChecked: '#ffffff',\n})\n\nconst optElName = computed(() => {\n let name = props.name\n if (CommonBase.isEmpty(name)) {\n name = `switchery_${CommonBase.getRandom(8)}`\n }\n return name\n})\n\nconst optColorChecked = computed(() => {\n const { colorChecked } = optBase\n let strColor = ''\n const color: any = props.color\n if (CommonBase.isUndefined(color)) {\n strColor = colorChecked\n } else {\n if (CommonBase.isString(color)) {\n strColor = color\n } else if (CommonBase.isObject(color)) {\n strColor = CommonBase.isExistJsonKey(color, 'checked') ? color.checked : colorChecked\n }\n }\n return strColor\n})\n\nconst optColorUnChecked = computed(() => {\n const { colorUnChecked } = optBase\n let strColor = ''\n const color: any = props.color\n if (CommonBase.isObject(color) && CommonBase.isExistJsonKey(color, 'unChecked')) {\n strColor = color.unchecked\n } else {\n strColor = colorUnChecked\n }\n return strColor\n})\n\nconst clsParent = computed(() => {\n const cls: any = {\n 'panel-switchery': true,\n 'switchery-transition-immediately': !optBase.isFirstComplete,\n }\n if (!CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsContainer = computed(() => {\n const cls: any = {\n 'switchery-container': true,\n 'switchery-open': optBase.isOpen,\n }\n cls['switchery-disabled'] = props.disabled\n return cls\n})\n\nconst styContainer = computed(() => {\n const isOpen = optBase.isOpen\n const color = isOpen ? optColorChecked.value : optColorUnChecked.value\n const style: any = {\n 'background-color': color,\n }\n style.transition = isOpen\n ? 'border 0.4s, box-shadow 0.4s, background-color 1.2s'\n : 'border 0.4s, box-shadow 0.4s'\n style['box-shadow'] = isOpen ? `${color} 0px 0px 0px 11px inset` : `${color} 0px 0px 0px 0px inset`\n if (isOpen) {\n style['border-color'] = color\n }\n return style\n})\n\nconst styButton = computed(() => {\n const style: any = {\n left: '0',\n }\n if (optBase.isOpen) {\n style.left = `${optBase.buttonLeft}px`\n }\n return style\n})\n\nconst _emitChange = (value: boolean) => {\n const assistData = CommonElement.getElementData(props)\n emit('update:value', value)\n emit('onChange', value, assistData)\n}\n\nconst _initMergeGlobalsOption = () => {\n if (_clGlobals && _clGlobals.globalsOption && _clGlobals.globalsOption.switchery) {\n const opt = _clGlobals.globalsOption.switchery\n if (CommonBase.isExistJsonKey(opt, 'colorChecked')) {\n optBase.colorChecked = opt.colorChecked\n }\n if (CommonBase.isExistJsonKey(opt, 'colorUnChecked')) {\n optBase.colorUnChecked = opt.colorUnChecked\n }\n }\n}\n\nconst _calculationBtnLeft = () => {\n const containerWidth = refElContainer.value.clientWidth\n const buttonWidth = refElContainer.value.querySelector('.switchery-button').clientWidth\n optBase.buttonLeft = containerWidth === 0 ? 22 : containerWidth - buttonWidth\n}\n\nconst _initMain = () => {\n _initMergeGlobalsOption()\n _calculationBtnLeft()\n setTimeout(() => {\n optBase.isFirstComplete = true\n }, 250)\n}\n\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue !== oldValue) {\n optBase.isOpen = newValue\n }\n },\n)\n\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\nconst onToggle = () => {\n if (!props.disabled) {\n _calculationBtnLeft()\n const value = !optBase.isOpen\n if (props.changeCallback && CommonBase.isFunction(props.changeCallback)) {\n optBase.isRunLoad = true\n const assistData = CommonElement.getElementData(props)\n const changeCb: any = props.changeCallback(value, assistData)\n if (changeCb && changeCb.then && CommonBase.isFunction(changeCb.then)) {\n changeCb.then((result: any) => {\n let isCheck = false\n if (CommonBase.isBoolean(result)) {\n isCheck = result\n } else if (CommonBase.isObject(result) && CommonBase.isBoolean(result.success)) {\n isCheck = result.success\n }\n if (isCheck) {\n optBase.isOpen = value\n }\n optBase.isRunLoad = false\n })\n } else {\n let isCheck = false\n if (CommonBase.isBoolean(changeCb)) {\n isCheck = changeCb\n } else if (CommonBase.isObject(changeCb) && CommonBase.isBoolean(changeCb.success)) {\n isCheck = changeCb.success\n }\n if (isCheck) {\n optBase.isOpen = value\n }\n optBase.isRunLoad = false\n }\n } else {\n if (props.isUseOnChangeCheck) {\n optBase.isRunLoad = true\n } else {\n optBase.isOpen = value\n }\n _emitChange(value)\n }\n }\n}\n\nconst getValue = () => {\n return optBase.isOpen\n}\n\nconst setValue = (value: boolean, isEmitChange = false) => {\n optBase.isOpen = value\n if (isEmitChange) {\n _emitChange(value)\n }\n}\n\nconst setOnChangeResult = () => {\n if (props.isUseOnChangeCheck && CommonBase.isUndefined(props.changeCallback)) {\n optBase.isOpen = !optBase.isOpen\n optBase.isRunLoad = false\n }\n}\n\nexport interface ClSwitcheryExpose {\n getValue: () => boolean\n setValue: (value: boolean, isEmitChange?: boolean) => void\n setOnChangeResult: () => void\n}\n\ndefineExpose({\n getValue,\n setValue,\n setOnChangeResult,\n})\n</script>\n","import ClipboardJS from \"clipboard\";\nimport CommonBase from \"../../Common/base\";\n\nexport default () => {\n const _clearSelection = (target: any) => {\n if (target) {\n target().focus();\n const temp = window.getSelection();\n if (temp) {\n temp.removeAllRanges();\n }\n }\n };\n const _clipboardBase = (el: string | Element, option: any) => {\n let newEl: any;\n if (CommonBase.isString(el)) {\n newEl = document.querySelector(el.toString());\n } else {\n newEl = el;\n }\n if (newEl && newEl._clipboardObj) {\n } else {\n const newOption: any = {\n successCallback: option.successCallback,\n errorCallback: option.errorCallback,\n };\n\n const typeAction = CommonBase.getTypeof(option.action);\n switch (typeAction) {\n case \"function\":\n newOption.action = option.action;\n break;\n case \"string\":\n newOption.action = () => option.action;\n break;\n }\n\n const typeText = CommonBase.getTypeof(option.text);\n switch (typeText) {\n case \"function\":\n newOption.text = option.text;\n break;\n case \"string\":\n newOption.text = () => option.text;\n break;\n }\n\n if (option.target) {\n if (CommonBase.isFunction(option.target)) {\n newOption.target = option.target;\n } else {\n newOption.target = () => {\n if (CommonBase.isString(option.target)) {\n return document.querySelector(option.target);\n } else if (option.target instanceof Element) {\n return option.target;\n } else {\n return null;\n }\n\n };\n }\n }\n const clipboardObj = new ClipboardJS(el, newOption);\n clipboardObj.on(\"success\", (e) => {\n newOption.successCallback(clipboardObj, e);\n _clearSelection(newOption.target);\n });\n clipboardObj.on(\"error\", (e) => {\n newOption.errorCallback(clipboardObj, e);\n _clearSelection(newOption.target);\n });\n newEl._clipboardObj = clipboardObj;\n }\n };\n return {\n copy: (option: any) => {\n const tempEl = document.createElement(\"button\");\n tempEl.setAttribute(\"type\", \"button\");\n\n const newOption: any = {\n action: \"copy\",\n text: option.text,\n target: option.target,\n };\n newOption.successCallback = (objClipboard: any) => {\n if (option.successCallback) {\n option.successCallback();\n }\n objClipboard.destroy();\n };\n newOption.errorCallback = (objClipboard: any) => {\n if (option.errorCallback) {\n option.errorCallback();\n }\n objClipboard.destroy();\n };\n _clipboardBase(tempEl, newOption);\n\n document.body.appendChild(tempEl);\n tempEl.click();\n document.body.removeChild(tempEl);\n },\n };\n};\n","import { ref } from \"vue\";\nimport Language from \"../../Common/i18n/index\";\n\nconst useLanguage = () => {\n const optPageLanguage = ref({});\n const getPageLanguage = (page: string) => {\n const temp = Language.getPage(page);\n optPageLanguage.value = temp;\n };\n const getLanguageValue = (key: string) => {\n const value = Language.getValue(key);\n return value;\n };\n const getLanguageType = () => {\n return Language.getType();\n };\n const setLanguageType = (type: string) => {\n Language.setType(type);\n };\n\n return {\n optPageLanguage,\n getPageLanguage,\n getLanguageValue,\n getLanguageType,\n setLanguageType,\n };\n};\n\nexport const languagePack = () => {\n return {\n getPage: (page: string) => Language.getPage(page),\n getValue: (key: string) => Language.getValue(key),\n getType: () => Language.getType(),\n setType: (type: string) => Language.setType(type),\n getAll: () => Language.getAll(),\n getCommon: () => Language.getCommon(),\n };\n};\n\nexport default useLanguage;\n","<template>\n <div class=\"cl-pulltorefresh\" :class=\"clsParent\">\n <div class=\"ptr-track\">\n <div class=\"ptr-indicator\" :style=\"indicatorStyle\">\n <div class=\"ptr-indicator-inner\" :class=\"`ptr-state-${state}`\">\n <slot name=\"indicator\" :state=\"state\" :distance=\"pullDistance\" :threshold=\"threshold\">\n <i :class=\"pullIcon\"></i>\n <span class=\"ptr-text\">{{ indicatorText }}</span>\n </slot>\n </div>\n </div>\n <div\n ref=\"refElContent\"\n class=\"ptr-content\"\n :class=\"{ 'ptr-content-virtual': _isVirtual }\"\n @touchstart=\"onPullStart\"\n @touchmove=\"onPullMove\"\n @touchend=\"onPullEnd\"\n @mousedown=\"onPullStart\"\n >\n <div v-if=\"_isVirtual\" class=\"ptr-scroller-wrap\">\n <DynamicScroller\n class=\"ptr-scroller\"\n :items=\"list\"\n :min-item-size=\"minItemSize\"\n key-field=\"id\"\n @scroll=\"onScrollerScroll\"\n @scroll-end=\"onScrollEnd\"\n >\n <template #default=\"{ item, index, active }\">\n <DynamicScrollerItem\n :item=\"item\"\n :active=\"active\"\n :size-dependencies=\"sizeDependencies ? sizeDependencies(item) : undefined\"\n >\n <slot name=\"item\" :item=\"item\" :index=\"index\" :active=\"active\" />\n </DynamicScrollerItem>\n </template>\n <template #after>\n <div v-if=\"loading\" class=\"ptr-loadmore\">\n <slot name=\"loadMore\">\n <i :class=\"loadingIcon\"></i>\n <span>{{ loadingText }}</span>\n </slot>\n </div>\n <div v-if=\"finished && !loading\" class=\"ptr-finished\">\n <slot name=\"finished\">\n <span>{{ finishedText }}</span>\n </slot>\n </div>\n </template>\n </DynamicScroller>\n </div>\n <slot v-else></slot>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, computed } from 'vue'\nimport { DynamicScroller, DynamicScrollerItem } from 'vue-virtual-scroller'\nimport 'vue-virtual-scroller/dist/vue-virtual-scroller.css'\n\ndefineOptions({ name: 'ClPullToRefresh' })\n\n// props\nconst props = defineProps({\n className: String,\n disabled: Boolean,\n // desc: 下拉刷新阈值(px)\n threshold: {\n type: Number,\n default: 60,\n },\n // desc: 列表数据,传入则启用虚拟滚动渲染\n list: {\n type: Array as () => any[],\n default: undefined,\n },\n // desc: 列表项最小高度(px),用于 DynamicScroller 初始估算\n minItemSize: {\n type: Number,\n default: 60,\n },\n // desc: 列表项高度依赖项提取函数,用于动态高度重算\n sizeDependencies: {\n type: Function,\n default: undefined,\n },\n // desc: 是否已加载完全部数据\n finished: Boolean,\n // desc: 是否正在加载更多\n loading: Boolean,\n // desc: 下拉刷新箭头图标类名(<i> 元素)\n pullIcon: {\n type: String,\n default: 'ptr-icon-arrow',\n },\n // desc: 加载更多时的 loading 图标类名(<i> 元素)\n loadingIcon: {\n type: String,\n default: 'ptr-icon-spinner',\n },\n // desc: 加载中提示文字\n loadingText: {\n type: String,\n default: '加载中...',\n },\n // desc: 已加载全部提示文字\n finishedText: {\n type: String,\n default: '没有更多了',\n },\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'refresh'): void\n (e: 'loadMore'): void\n}>()\n\n// ref\nconst refElContent = ref<HTMLElement>()\n\n// state\nconst state = ref<'idle' | 'pulling' | 'ready' | 'loading'>('idle')\nconst pullDistance = ref(0)\nconst _startY = ref(0)\nconst _isTracking = ref(false)\nconst _isPulling = ref(false)\nconst _scrollTop = ref(0)\nlet _rafId: number | null = null\nlet _pendingDeltaY = 0\n\n// computed\nconst threshold = computed(() => props.threshold || 60)\n\nconst _isVirtual = computed(() => Array.isArray(props.list))\n\nconst clsParent = computed(() => {\n const cls: any = {}\n if (props.disabled) {\n cls['ptr-disabled'] = true\n }\n if (_isPulling.value) {\n cls['ptr-is-pulling'] = true\n }\n if (props.className) {\n cls[props.className] = true\n }\n return cls\n})\n\nconst indicatorStyle = computed(() => ({\n height: `${pullDistance.value}px`,\n}))\n\nconst indicatorText = computed(() => {\n switch (state.value) {\n case 'loading':\n return '加载中...'\n case 'ready':\n return '释放即可刷新…'\n case 'pulling':\n return '下拉即可刷新…'\n default:\n return ''\n }\n})\n\n// 内部方法\nconst _isAtTop = () => {\n if (_isVirtual.value) {\n return _scrollTop.value <= 0\n }\n const el = refElContent.value\n if (!el) return true\n return el.scrollTop <= 0\n}\n\nconst _getClientY = (e: TouchEvent | MouseEvent): number => {\n if ('touches' in e) {\n return (e as TouchEvent).touches[0].clientY\n }\n return (e as MouseEvent).clientY\n}\n\nconst onScrollerScroll = (e: any) => {\n _scrollTop.value = e?.target?.scrollTop || 0\n}\n\nconst onScrollEnd = () => {\n if (!props.finished && !props.loading) {\n emit('loadMore')\n }\n}\n\nconst _startMouseListeners = () => {\n document.addEventListener('mousemove', (onPullMove as any) as EventListener)\n document.addEventListener('mouseup', (onPullEnd as any) as EventListener)\n}\n\nconst _stopMouseListeners = () => {\n document.removeEventListener('mousemove', (onPullMove as any) as EventListener)\n document.removeEventListener('mouseup', (onPullEnd as any) as EventListener)\n}\n\n// 事件方法\nconst onPullStart = (e: TouchEvent | MouseEvent) => {\n if (props.disabled || state.value === 'loading') return\n _startY.value = _getClientY(e)\n _isTracking.value = true\n if (!('touches' in e)) {\n _startMouseListeners()\n }\n}\n\nconst onPullMove = (e: TouchEvent | MouseEvent) => {\n if (!_isTracking.value) return\n _pendingDeltaY = _getClientY(e) - _startY.value\n if (_pendingDeltaY > 0 && _isAtTop()) {\n if (!_isPulling.value) {\n _isPulling.value = true\n }\n e.preventDefault()\n if (_rafId === null) {\n _rafId = requestAnimationFrame(() => {\n _rafId = null\n const d = _pendingDeltaY * 0.4\n pullDistance.value = d\n state.value = d >= threshold.value ? 'ready' : 'pulling'\n })\n }\n } else if (_isPulling.value) {\n _resetPull()\n }\n}\n\nconst onPullEnd = () => {\n if (!_isTracking.value) return\n _isTracking.value = false\n _stopMouseListeners()\n if (_rafId !== null) {\n cancelAnimationFrame(_rafId)\n _rafId = null\n }\n if (_isPulling.value && state.value === 'ready') {\n state.value = 'loading'\n pullDistance.value = threshold.value\n emit('refresh')\n } else {\n _resetPull()\n }\n}\n\nconst _resetPull = () => {\n if (_rafId !== null) {\n cancelAnimationFrame(_rafId)\n _rafId = null\n }\n _isPulling.value = false\n pullDistance.value = 0\n state.value = 'idle'\n}\n\n// 开放方法\nconst finishRefresh = () => {\n _resetPull()\n}\n\n// 导出类型\nexport interface ClPullToRefreshExpose {\n finishRefresh: () => void\n}\n\ndefineExpose({ finishRefresh })\n</script>\n","<template>\n <div\n class=\"cl-cell\"\n :class=\"clsParent\"\n :style=\"styParent\"\n @click=\"onClick\"\n >\n <div v-if=\"title || $slots.title || icon || $slots.icon\" class=\"cl-cell__left\">\n <div v-if=\"$slots.icon\" class=\"cl-cell__icon-wrap\">\n <slot name=\"icon\" />\n </div>\n <i v-else-if=\"icon\" :class=\"icon\" class=\"cl-cell__icon\"></i>\n <div v-if=\"title || $slots.title\" class=\"cl-cell__title-wrap\">\n <slot name=\"title\">\n <span v-if=\"required\" class=\"cl-cell__required\">*</span>\n <span class=\"cl-cell__title\">{{ title }}</span>\n </slot>\n <div v-if=\"label || $slots.label\" class=\"cl-cell__label\">\n <slot name=\"label\">\n <span>{{ label }}</span>\n </slot>\n </div>\n </div>\n </div>\n <div class=\"cl-cell__body\" :class=\"{ 'cl-cell__body--center': center }\">\n <slot>\n <div v-if=\"value || $slots.value\" class=\"cl-cell__value\">\n <slot name=\"value\">\n <span>{{ value }}</span>\n </slot>\n </div>\n </slot>\n </div>\n <div v-if=\"$slots.extra\" class=\"cl-cell__extra\">\n <slot name=\"extra\" />\n </div>\n <div v-if=\"isLink\" class=\"cl-cell__right-icon\">\n <slot name=\"rightIcon\">\n <i :class=\"`cl-cell__arrow cl-cell__arrow--${arrowDirection}`\"></i>\n </slot>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { computed } from 'vue'\nimport { useRouter } from 'vue-router'\n\ndefineOptions({ name: 'ClCell' })\n\nconst router = useRouter()\n\n// props\nconst props = defineProps({\n className: String, // desc: 自定义 CSS 类名\n title: String, // desc: 左侧标题\n value: String, // desc: 右侧内容\n label: String, // desc: 标题下方的描述信息\n icon: String, // desc: 左侧图标类名(<i> 元素)\n size: {\n type: String,\n default: 'default' // enum: default, large | desc: 单元格大小\n },\n url: String, // desc: 点击后跳转的链接地址\n to: [String, Object], // desc: 路由跳转目标,同 vue-router 的 to\n replace: Boolean, // desc: 跳转时是否替换当前页面历史\n border: {\n type: Boolean,\n default: true // desc: 是否显示底部边框\n },\n clickable: Boolean, // desc: 是否开启点击反馈\n isLink: Boolean, // desc: 是否展示右侧箭头\n required: Boolean, // desc: 是否显示必填星号\n center: Boolean, // desc: 是否使内容垂直居中\n arrowDirection: {\n type: String,\n default: 'right' // enum: left, right, up, down | desc: 箭头方向\n }\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'click', event: MouseEvent): void\n}>()\n\n// computed\nconst clsParent = computed(() => {\n const cls: any = {}\n if (props.className) {\n cls[props.className] = true\n }\n if (props.border) {\n cls['cl-cell--border'] = true\n }\n if (props.clickable || props.isLink || props.to || props.url) {\n cls['cl-cell--clickable'] = true\n }\n if (props.size === 'large') {\n cls['cl-cell--large'] = true\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const sty: any = {}\n return sty\n})\n\n// 事件方法\nconst onClick = (e: MouseEvent) => {\n emit('click', e)\n if (props.to) {\n if (props.replace) {\n router.replace(props.to as any)\n } else {\n router.push(props.to as any)\n }\n } else if (props.url) {\n window.location.href = props.url\n }\n}\n</script>\n","<template>\n <div ref=\"refElTopParent\" class=\"panel-loadScreen\">\n <div class=\"loadScreen-container\">\n <div class=\"loadScreen-main\">\n <span v-if=\"optBase.text.length > 0\" class=\"loadScreen-text\">{{ optBase.text }}</span>\n <span>\n <cl-load></cl-load>\n </span>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive } from 'vue'\nimport CommonBase from '../../Common/base'\nimport ClLoad from '../Load/Index.vue'\nimport './Index.css'\n\ndefineOptions({ name: 'ClLoadScreen' })\n\nconst refElTopParent = ref<HTMLElement | null>(null)\n\nconst optBase = reactive({\n text: ''\n})\n\nlet _timeOutDestroyContainer: ReturnType<typeof setTimeout> | null = null\n\nconst _getBody = (): HTMLElement => {\n return document.querySelector('body') as HTMLElement\n}\n\nconst _getTopEl = (): HTMLElement | null => {\n return document.querySelector('body>.panel-loadScreen')\n}\n\nconst _checkContainer = (): boolean => {\n const el = _getTopEl()\n return !CommonBase.isUndefined(el)\n}\n\nconst _creatorContainer = () => {\n if (!_checkContainer()) {\n _getBody().appendChild(refElTopParent.value!)\n } else {\n if (_timeOutDestroyContainer) {\n clearTimeout(_timeOutDestroyContainer)\n _timeOutDestroyContainer = null\n }\n }\n}\n\nconst _destroyContainer = (t: number) => {\n if (_checkContainer()) {\n _timeOutDestroyContainer = setTimeout(() => {\n const el = _getTopEl()\n if (el) {\n _getBody().removeChild(el)\n }\n }, t)\n }\n}\n\nconst _creatorItem = (text: string) => {\n _creatorContainer()\n optBase.text = CommonBase.isEmpty(text) ? '' : text\n}\n\nconst show = (text?: string) => {\n _creatorItem(text || '')\n}\n\nconst hide = (t: number = 0) => {\n _destroyContainer(t)\n}\n\ndefineExpose({\n show,\n hide\n})\n</script>\n","<template>\n <div ref=\"refElTopParent\" :class=\"clsParent\" :style=\"styParent\">\n <template v-if=\"optBase.isHorizontal\">\n <div class=\"progress\">\n <div ref=\"refElBar\" :class=\"clsBar\" :style=\"styBar\">\n <span v-if=\"isShowNum && optBase.posText.inOut === 'in'\" class=\"progress-num\" :style=\"styNum\">{{ optShowNumText }}</span>\n </div>\n </div>\n </template>\n <template v-else-if=\"optBase.isCircular\">\n <div class=\"progress-circular-line circular-line-right\">\n <div class=\"progress-circular-bar\" :style=\"styCircularBarRight\"></div>\n </div>\n <div class=\"progress-circular-line circular-line-left\">\n <div class=\"progress-circular-bar\" :style=\"styCircularBarLeft\"></div>\n </div>\n </template>\n <span v-if=\"isShowNum && optBase.posText.inOut === 'out'\" class=\"progress-num\" :style=\"styNum\">{{ optShowNumText }}</span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, computed, watch, onMounted, onUnmounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport { Resize as ResizeEvent } from '../../Common/Element/Event/index'\nimport './Index.css'\n\ndefineOptions({ name: 'ClProgress' })\n\nconst props = defineProps({\n className: String,\n theme: {\n type: String,\n default: 'horizontal' // horizontal | circular\n },\n color: String,\n ratio: {\n type: [Number, String],\n required: true\n },\n isShowNum: {\n type: Boolean,\n default: true\n },\n isAnimation: {\n type: Boolean,\n default: true\n },\n diameter: {\n type: String,\n default: '50px'\n },\n showNumText: String,\n showNumPos: {\n type: String,\n default: 'out-center' // out-center|out-left|out-right|in-center|in-left|in-right\n },\n showNumTrigger: {\n type: String,\n default: 'hover' // none|hover\n },\n showNumColor: String\n})\n\nconst refElTopParent = ref<HTMLElement | null>(null)\nconst refElBar = ref<HTMLElement | null>(null)\n\nconst optBase = reactive({\n isHorizontal: props.theme === 'horizontal',\n isCircular: props.theme === 'circular',\n ratioHundred: '',\n circularLeftRotate: -45,\n circularLeftTime: 0,\n circularRightRotate: -45,\n circularRightTime: 0,\n posText: {\n inOut: 'out',\n lcr: 'center',\n isOverflow: false\n }\n})\n\nconst _pageData: {\n lastRatio: string\n lastRotateLeft: number\n lastRotateRight: number\n runTimeCircularRotate: ReturnType<typeof setTimeout> | null\n resizeEvent: any\n} = {\n lastRatio: '',\n lastRotateLeft: -45,\n lastRotateRight: -45,\n runTimeCircularRotate: null,\n resizeEvent: null\n}\n\nconst optShowNumText = computed(() => {\n let txt = ''\n const { showNumText } = props\n if (showNumText && !CommonBase.isEmpty(showNumText)) {\n txt = showNumText\n } else {\n let r = optBase.ratioHundred\n r = r.substring(0, r.length - 2)\n txt = CommonBase.getFormatThousands(r) + '%'\n }\n return txt\n})\n\nconst clsParent = computed(() => {\n const cls: Record<string, boolean> = {\n 'panel-progress': true\n }\n cls[`progress-${props.theme}`] = true\n\n const { className, isShowNum, showNumTrigger } = props\n if (isShowNum && showNumTrigger !== 'none') {\n cls[`progress-${showNumTrigger}-num`] = true\n }\n if (className && !CommonBase.isEmpty(className)) {\n className.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const sty: Record<string, string | undefined> = {}\n if (optBase.isCircular) {\n if (!CommonBase.isEmpty(props.diameter)) {\n sty.width = props.diameter\n sty.height = props.diameter\n }\n }\n return sty\n})\n\nconst clsBar = computed(() => {\n const cls: Record<string, boolean> = {\n 'progress-bar': true,\n 'progress-bar-striped': props.isAnimation,\n 'striped-animation': props.isAnimation\n }\n return cls\n})\n\nconst styBar = computed(() => {\n const sty: Record<string, string | undefined> = {}\n sty.width = optBase.ratioHundred\n if (!CommonBase.isEmpty(props.color)) {\n sty['background-color'] = props.color\n }\n if (optBase.isHorizontal && optBase.posText.inOut === 'in') {\n let justifyContent = 'center'\n switch (optBase.posText.lcr) {\n case 'left':\n justifyContent = 'flex-start'\n break\n case 'center':\n justifyContent = 'center'\n break\n case 'right':\n justifyContent = 'flex-end'\n break\n }\n if (optBase.posText.isOverflow) {\n justifyContent = 'flex-start'\n }\n sty['justify-content'] = justifyContent\n }\n return sty\n})\n\nconst styNum = computed(() => {\n const sty: Record<string, string | undefined> = {}\n const { showNumColor } = props\n if (showNumColor && !CommonBase.isEmpty(showNumColor)) {\n sty['color'] = showNumColor\n }\n return sty\n})\n\nconst styCircularBarRight = computed(() => {\n const sty: Record<string, string | undefined> = {}\n sty.transform = `rotate(${optBase.circularRightRotate}deg)`\n if (optBase.circularRightTime > 0) {\n sty['transition-duration'] = `${optBase.circularRightTime}ms`\n }\n if (!CommonBase.isEmpty(props.color)) {\n sty['border-bottom-color'] = props.color\n sty['border-right-color'] = props.color\n }\n return sty\n})\n\nconst styCircularBarLeft = computed(() => {\n const sty: Record<string, string | undefined> = {}\n sty.transform = `rotate(${optBase.circularLeftRotate}deg)`\n if (optBase.circularLeftTime) {\n sty['transition-duration'] = `${optBase.circularLeftTime}ms`\n }\n if (!CommonBase.isEmpty(props.color)) {\n sty['border-bottom-color'] = props.color\n sty['border-right-color'] = props.color\n }\n return sty\n})\n\n// 内部方法\nconst _initPost = () => {\n const { showNumPos } = props\n const arrTemp = showNumPos.split('-')\n if (arrTemp.length === 2) {\n optBase.posText.inOut = CommonBase.isExistValue(['in', 'out'], arrTemp[0]) ? arrTemp[0] : 'out'\n optBase.posText.lcr = CommonBase.isExistValue(['left', 'center', 'right'], arrTemp[1]) ? arrTemp[1] : 'center'\n }\n}\n\nconst _initRatio = (ratio: number | string) => {\n let newRatio = CommonBase.isEmpty(ratio) ? 0 : Number(ratio)\n if (newRatio <= 0) {\n newRatio = 0\n } else if (newRatio >= 100) {\n newRatio = 100\n }\n optBase.ratioHundred = `${newRatio}%`\n if (optBase.isCircular) {\n if (_pageData.runTimeCircularRotate) {\n clearTimeout(_pageData.runTimeCircularRotate)\n }\n\n const rotate = (newRatio / 100) * 360\n let rotateRight = 0\n let rotateLeft = 0\n if (rotate < 180) {\n rotateRight = rotate + -45\n rotateLeft = -45\n } else {\n rotateRight = 135\n rotateLeft = rotate - 180 - 45\n }\n let isIncrease = true\n const isEmptyLst = CommonBase.isEmpty(_pageData.lastRatio)\n if (!isEmptyLst) {\n isIncrease = newRatio >= Number(_pageData.lastRatio)\n }\n let timeRight = 0\n let timeLeft = 0\n const diffRight = Math.abs(rotateRight - _pageData.lastRotateRight)\n const diffLeft = Math.abs(rotateLeft - _pageData.lastRotateLeft)\n if (diffRight > 0 && diffLeft > 0) {\n const time = 400 / (diffRight + diffLeft)\n timeRight = diffRight * time\n timeLeft = diffLeft * time\n }\n\n if (isIncrease) {\n optBase.circularRightRotate = rotateRight\n optBase.circularRightTime = timeRight\n\n nextTick(() => {\n _pageData.runTimeCircularRotate = setTimeout(() => {\n optBase.circularLeftRotate = rotateLeft\n optBase.circularLeftTime = timeLeft\n }, timeRight)\n })\n } else {\n optBase.circularLeftRotate = rotateLeft\n optBase.circularLeftTime = timeLeft\n nextTick(() => {\n _pageData.runTimeCircularRotate = setTimeout(() => {\n optBase.circularRightRotate = rotateRight\n optBase.circularRightTime = timeRight\n }, timeLeft)\n })\n }\n _pageData.lastRotateRight = rotateRight\n _pageData.lastRotateLeft = rotateLeft\n }\n _pageData.lastRatio = String(newRatio)\n}\n\nconst _initMain = () => {\n _initPost()\n _initRatio(props.ratio)\n _pageData.resizeEvent = new ResizeEvent({\n element: refElBar.value,\n callback: () => {\n if (props.isShowNum && optBase.isHorizontal && optBase.posText.inOut === 'in') {\n if (refElTopParent.value) {\n const elBar = refElTopParent.value.querySelector('.progress-bar')\n const elNum = refElTopParent.value.querySelector('.progress-num')\n if (elBar && elNum) {\n const barW = elBar.clientWidth\n const numW = elNum.clientWidth\n let isOverflow = false\n if (barW === 0 && numW === 0) {\n isOverflow = false\n } else {\n if (barW === 0 && numW > 0) {\n isOverflow = true\n } else {\n isOverflow = barW > 0 && numW > barW\n }\n }\n optBase.posText.isOverflow = isOverflow\n }\n }\n }\n }\n })\n}\n\nwatch(\n () => props.ratio,\n (newValue, oldValue) => {\n if (newValue !== oldValue) {\n _initRatio(newValue)\n }\n }\n)\n\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\nonUnmounted(() => {\n if (_pageData.resizeEvent) {\n _pageData.resizeEvent.destroy()\n }\n})\n</script>\n","<template>\n <div\n ref=\"refElBar\"\n :class=\"clsParent\"\n :style=\"styParent\"\n @mouseover=\"onMouseOver\"\n @mouseout=\"onMouseOut\"\n @click=\"onClick\"\n ></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject, ref, reactive, computed, watch, onMounted, nextTick } from 'vue'\nimport { Drag as DragEvent } from '../../Common/Element/Event/index'\n\ndefineOptions({ name: 'ClSliderBar' })\n\nconst props = defineProps({\n left: {\n type: Number,\n default: 0\n },\n width: {\n type: Number,\n default: 0\n },\n isDisabled: {\n type: Boolean,\n default: false\n },\n isVertical: {\n type: Boolean,\n default: false\n },\n isBarDrag: {\n type: Boolean,\n default: false\n }\n})\n\nconst emit = defineEmits(['onMoveStart', 'onMoveIng', 'onMoveEnd', 'onMouseover', 'onMouseout', 'onClick'])\n\nconst _selfTop: any = inject('$SliderTop')\n\nconst refElBar = ref<HTMLElement | null>(null)\n\nconst optBase = reactive({\n isHover: false,\n left: props.left\n})\n\nconst _pageData = {\n isClick: false,\n isDragging: false,\n dragStart: 0,\n dragStartRatio: 0\n}\n\nconst clsParent = computed(() => {\n const cls: Record<string, boolean> = {\n 'slider-bar': true,\n 'slider-bar-drag': props.isBarDrag\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const sty: Record<string, string | undefined> = {}\n if (props.isVertical) {\n sty.bottom = `${optBase.left}%`\n sty.height = `${props.width}%`\n } else {\n sty.left = `${optBase.left}%`\n sty.width = `${props.width}%`\n }\n return sty\n})\n\nconst _runDragStart = (_e: any, clientXYInfo: any) => {\n _pageData.isClick = true\n _pageData.dragStart = props.isVertical ? clientXYInfo.clientY : clientXYInfo.clientX\n _pageData.dragStartRatio = props.left\n emit('onMoveStart')\n}\n\nconst _runDraggIng = (_e: any, clientXYInfo: any) => {\n _pageData.isClick = false\n let move = 0\n if (props.isVertical) {\n move = _pageData.dragStart - clientXYInfo.clientY\n } else {\n move = clientXYInfo.clientX - _pageData.dragStart\n }\n const info = _selfTop.getDragValueInfo(move, _pageData.dragStartRatio)\n optBase.left = info.ratio\n emit('onMoveIng', info.ratio)\n}\n\nconst _runDragEnd = (e: any) => {\n if (_pageData.isClick) {\n emit('onClick', e)\n } else {\n emit('onMoveEnd')\n }\n _pageData.isClick = false\n}\n\nconst _initMain = () => {\n const dragConfig = {\n start(e: any, clientXYInfo: any) {\n let isRun = false\n if (!props.isDisabled && props.isBarDrag && e.buttons === 1) {\n isRun = true\n _runDragStart(e, clientXYInfo)\n }\n return isRun\n },\n ing: (e: any, clientXYInfo: any) => {\n _runDraggIng(e, clientXYInfo)\n },\n end: (e: any) => {\n _runDragEnd(e)\n }\n }\n new DragEvent(refElBar.value, dragConfig)\n}\n\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\nwatch(\n () => props.left,\n (newValue, oldValue) => {\n if (newValue !== oldValue && newValue !== optBase.left) {\n optBase.left = newValue\n }\n }\n)\n\nconst onClick = (e: MouseEvent) => {\n if (!props.isDisabled && !props.isBarDrag) {\n emit('onClick', e)\n }\n}\n\nconst onMouseOver = () => {\n emit('onMouseover')\n}\n\nconst onMouseOut = () => {\n if (!_pageData.isDragging) {\n emit('onMouseout')\n }\n}\n</script>\n","<template>\n <div\n ref=\"refElButton\"\n :class=\"clsParent\"\n :style=\"styParent\"\n tabindex=\"0\"\n @dblclick=\"onDblClick\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n @keydown.down=\"onMoveLeft\"\n @keydown.up=\"onMoveRight\"\n @keydown.left=\"onMoveLeft\"\n @keydown.right=\"onMoveRight\"\n v-cltooltip.black=\"{trigger:['hover','focus'],position:optTooltipPos,html:optTooltipValue,updRefreshInx:optBase.ratio}\"\n >\n <div class=\"slider-button-icon\"></div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject, ref, reactive, computed, watch, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport { Drag as DragEvent } from '../../Common/Element/Event/index'\nimport { tooltipDirectives, tooltipCommon } from '../../Web/Tooltip'\n\ndefineOptions({ name: 'ClSliderButton' })\n\nconst props = defineProps({\n className: String,\n value: [String, Number],\n ratio: {\n type: Number,\n default: 0\n },\n isDisabled: {\n type: Boolean,\n default: false\n },\n isVertical: {\n type: Boolean,\n default: false\n },\n tooltipFormat: String\n})\n\nconst emit = defineEmits(['onMoveIng', 'onMoveEnd', 'onDblClick'])\n\nconst _selfTop: any = inject('$SliderTop')\n\nconst vCltooltip = tooltipDirectives\n\nconst refElButton = ref<HTMLElement | null>(null)\n\nconst optBase = reactive({\n isHover: false,\n ratio: props.ratio,\n value: props.value\n})\n\nconst _pageData = {\n dragStart: 0,\n dragStartRatio: 0,\n isMoveIng: false\n}\n\nconst optTooltipValue = computed(() => {\n let value = optBase.value\n if (value) {\n const format = props.tooltipFormat\n value = CommonBase.getFormatThousands(value.toString())\n if (format && !CommonBase.isEmpty(format)) {\n value = CommonBase.convertStringFormat(format, { _value: value })\n }\n }\n return value\n})\n\nconst optTooltipPos = computed(() => {\n return props.isVertical ? 'right' : 'top'\n})\n\nconst clsParent = computed(() => {\n const cls: Record<string, boolean> = {\n 'slider-button': true,\n hover: optBase.isHover\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const sty: Record<string, string | undefined> = {}\n if (props.isVertical) {\n sty.bottom = `${optBase.ratio}%`\n } else {\n sty.left = `${optBase.ratio}%`\n }\n return sty\n})\n\nconst _showTooltip = () => {\n tooltipCommon.show(refElButton.value)\n}\n\nconst _hideTooltip = () => {\n tooltipCommon.hide(refElButton.value)\n}\n\nconst _getDraggIngInfo = (_e: any, clientXYInfo: any) => {\n let move = 0\n if (props.isVertical) {\n move = _pageData.dragStart - clientXYInfo.clientY\n } else {\n move = clientXYInfo.clientX - _pageData.dragStart\n }\n const info = _selfTop.getDragValueInfo(move, _pageData.dragStartRatio)\n optBase.ratio = info.ratio\n optBase.value = info.value\n return info\n}\n\nconst _runDragStart = (_e: any, clientXYInfo: any) => {\n _pageData.dragStart = props.isVertical ? clientXYInfo.clientY : clientXYInfo.clientX\n _pageData.dragStartRatio = props.ratio\n}\n\nconst _runDraggIng = (e: any, clientXYInfo: any) => {\n const info = _getDraggIngInfo(e, clientXYInfo)\n tooltipCommon.show(refElButton.value)\n emit('onMoveIng', { value: info.ratio, runType: 'drag' })\n}\n\nconst _runDragEnd = (e: any, clientXYInfo: any) => {\n _getDraggIngInfo(e, clientXYInfo)\n if (optBase.isHover || refElButton.value === e.target || refElButton.value?.contains(e.target)) {\n // keep tooltip\n } else {\n tooltipCommon.hide(refElButton.value)\n }\n emit('onMoveEnd', { runType: 'drag' })\n}\n\nconst _runMoveIng = (type: string) => {\n _pageData.isMoveIng = true\n const info = _selfTop.getButtonMoveValueInfo(type, props.ratio)\n optBase.ratio = info.ratio\n optBase.value = info.value\n emit('onMoveIng', { value: info.ratio, runType: 'keydown' })\n}\n\nconst _initMain = () => {\n const dragConfig = {\n start(e: any, clientXYInfo: any) {\n let isRun = false\n if (!props.isDisabled && e.buttons === 1) {\n isRun = true\n _runDragStart(e, clientXYInfo)\n }\n return isRun\n },\n ing: (e: any, clientXYInfo: any) => {\n _runDraggIng(e, clientXYInfo)\n },\n end: (e: any, clientXYInfo: any) => {\n _runDragEnd(e, clientXYInfo)\n }\n }\n new DragEvent(refElButton.value, dragConfig)\n}\n\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue !== oldValue && newValue !== optBase.value) {\n optBase.value = newValue\n }\n }\n)\n\nwatch(\n () => props.ratio,\n (newValue, oldValue) => {\n if (newValue !== oldValue && newValue !== optBase.ratio) {\n optBase.ratio = newValue\n }\n }\n)\n\nconst onMoveLeft = (e: KeyboardEvent) => {\n if (!props.isDisabled) {\n e.preventDefault()\n e.stopPropagation()\n _runMoveIng('left')\n }\n}\n\nconst onMoveRight = (e: KeyboardEvent) => {\n if (!props.isDisabled) {\n e.preventDefault()\n e.stopPropagation()\n _runMoveIng('right')\n }\n}\n\nconst onFocus = () => {\n if (!props.isDisabled) {\n optBase.isHover = true\n }\n}\n\nconst onBlur = () => {\n if (!props.isDisabled) {\n optBase.isHover = false\n if (_pageData.isMoveIng) {\n _pageData.isMoveIng = false\n emit('onMoveEnd', { runType: 'keydown' })\n }\n }\n}\n\nconst onDblClick = () => {\n if (!props.isDisabled) {\n emit('onDblClick')\n }\n}\n\nconst showTooltip = () => {\n _showTooltip()\n}\n\nconst hideTooltip = () => {\n _hideTooltip()\n}\n\ndefineExpose({\n showTooltip,\n hideTooltip\n})\n</script>\n","<template>\n <div :class=\"clsParent\" :style=\"styParent\" @mouseover=\"onMouseOver\" @mouseout=\"onMouseOut\" @click=\"onClick\" v-cltooltip.black.hover=\"{init:isTooltip,position:optTooltipPos,html:optTooltipValue}\">\n <div class=\"slider-dot-icon\"></div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport CommonBase from '../../Common/base'\nimport { tooltipDirectives } from '../../Web/Tooltip'\n\ndefineOptions({ name: 'ClSliderDot' })\n\nconst props = defineProps({\n itemInfo: {\n type: Object,\n default: () => ({})\n },\n isHover: {\n type: Boolean,\n default: false\n },\n isVertical: {\n type: Boolean,\n default: false\n },\n isTooltip: {\n type: Boolean,\n default: true\n },\n tooltipFormat: String\n})\n\nconst emit = defineEmits(['onMouseover', 'onMouseout', 'onClick'])\n\nconst vCltooltip = tooltipDirectives\n\nconst optTooltipPos = computed(() => {\n return props.isVertical ? 'right' : 'top'\n})\n\nconst optTooltipValue = computed(() => {\n let value = props.itemInfo.value\n if (value) {\n const format = props.tooltipFormat\n value = CommonBase.getFormatThousands(value.toString())\n if (format && !CommonBase.isEmpty(format)) {\n value = CommonBase.convertStringFormat(format, { _value: value })\n }\n }\n return value\n})\n\nconst clsParent = computed(() => {\n const cls: Record<string, boolean> = {\n 'slider-dot': true,\n 'slider-dot-active': props.itemInfo.isActive,\n 'slider-dot-hide': props.itemInfo.isHide,\n hover: props.isHover\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const sty: Record<string, string | undefined> = {}\n if (props.isVertical) {\n sty.bottom = `${props.itemInfo.ratio}%`\n } else {\n sty.left = `${props.itemInfo.ratio}%`\n }\n return sty\n})\n\nconst onMouseOver = () => {\n emit('onMouseover')\n}\n\nconst onMouseOut = () => {\n emit('onMouseout')\n}\n\nconst onClick = () => {\n emit('onClick')\n}\n</script>\n","<template>\n <div :class=\"clsParent\" :style=\"styParent\">\n <div class=\"slider-container\">\n <div ref=\"refElTrack\" class=\"slider-track\" @click=\"onClickTrack\"></div>\n <cl-slider-bar\n :isDisabled=\"disabled\"\n :isVertical=\"isVertical\"\n :isBarDrag=\"optIsBarDrag\"\n :left=\"optBar.left\"\n :width=\"optBar.width\"\n @onMoveStart=\"onBarMoveStart\"\n @onMoveIng=\"onBarMoveIng\"\n @onMoveEnd=\"onBarMoveEnd\"\n @onClick=\"onClickTrack\"\n @onMouseover=\"onBarHoverIn\"\n @onMouseout=\"onBarHoverOut\"\n ></cl-slider-bar>\n <template v-if=\"isRange\">\n <cl-slider-button\n ref=\"refBtnStart\"\n :isDisabled=\"disabled\"\n :isVertical=\"isVertical\"\n :value=\"optValue.start\"\n :ratio=\"optValue.startRatio\"\n :tooltipFormat=\"tooltipFormat\"\n @onMoveIng=\"onButtonMoveIng($event, 'start')\"\n @onMoveEnd=\"onButtonMoveEnd\"\n @onDblClick=\"onButtonDblClick('start')\"\n ></cl-slider-button>\n <cl-slider-button\n ref=\"refBtnEnd\"\n :isDisabled=\"disabled\"\n :isVertical=\"isVertical\"\n :value=\"optValue.end\"\n :ratio=\"optValue.endRatio\"\n :tooltipFormat=\"tooltipFormat\"\n @onMoveIng=\"onButtonMoveIng($event, 'end')\"\n @onMoveEnd=\"onButtonMoveEnd\"\n @onDblClick=\"onButtonDblClick('end')\"\n ></cl-slider-button>\n </template>\n <cl-slider-button\n v-else\n ref=\"refBtnEnd\"\n :isDisabled=\"disabled\"\n :isVertical=\"isVertical\"\n :value=\"optValue.end\"\n :ratio=\"optValue.endRatio\"\n :tooltipFormat=\"tooltipFormat\"\n @onMoveIng=\"onButtonMoveIng($event, 'end')\"\n @onMoveEnd=\"onButtonMoveEnd\"\n ></cl-slider-button>\n <div v-if=\"optDotsList.length > 0\" class=\"slider-dots\">\n <cl-slider-dot\n v-for=\"(dInfo, dIndex) in optDotsList\"\n :key=\"`${optBase.keyIndex}-dot-${dIndex}`\"\n :isVertical=\"isVertical\"\n :itemInfo=\"dInfo\"\n :isHover=\"optBase.markHoverIndex === dIndex\"\n :isTooltip=\"!optIsShowMarks\"\n @onMouseover=\"onHoverMarkIn(dIndex)\"\n @onMouseout=\"onHoverMarkOut\"\n @onClick=\"onClickTrack\"\n ></cl-slider-dot>\n </div>\n </div>\n <div v-if=\"optIsShowMarks\" class=\"slider-marks\">\n <div\n v-for=\"(mInfo, mIndex) in optMarksList\"\n :key=\"`${optBase.keyIndex}-mark-${mIndex}`\"\n :class=\"{ 'slider-mark': true, hover: optBase.markHoverIndex === mIndex }\"\n :style=\"optFunMarkStyle(mInfo)\"\n v-html=\"mInfo.mark\"\n @mouseover=\"onHoverMarkIn(mIndex)\"\n @mouseout=\"onHoverMarkOut\"\n ></div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, computed, watch, onMounted, nextTick, provide } from 'vue'\nimport CommonBase from '../../Common/base'\nimport ClSliderBar from './Bar.vue'\nimport ClSliderButton from './Button.vue'\nimport ClSliderDot from './Dot.vue'\nimport './Index.css'\n\ndefineOptions({ name: 'ClSlider' })\n\nconst props = defineProps({\n className: String,\n value: [String, Number],\n\n min: {\n type: Number,\n default: 0\n },\n max: {\n type: Number,\n default: 100\n },\n disabled: {\n type: Boolean,\n default: false\n },\n\n isRange: {\n type: Boolean,\n default: false\n },\n isBarDrag: {\n type: Boolean,\n default: false\n },\n\n splitNumber: {\n type: Number,\n default: 0\n },\n isShowDot: {\n type: Boolean,\n default: true\n },\n isShowDotActive: {\n type: Boolean,\n default: true\n },\n\n marks: {\n type: Array,\n default: () => []\n },\n\n isVertical: {\n type: Boolean,\n default: false\n },\n verticalHeight: String,\n\n size: {\n type: String,\n default: 'large', // large | small\n validator: (value: string) => {\n return ['large', 'small'].indexOf(value) > -1\n }\n },\n numType: {\n type: String,\n default: 'int', // int | float2 | float3\n validator: (value: string) => {\n return ['int', 'float2', 'float3'].indexOf(value) > -1\n }\n },\n tooltipFormat: String\n})\n\nconst emit = defineEmits(['update:value', 'onChange'])\n\nconst refElTrack = ref<HTMLElement | null>(null)\nconst refBtnStart = ref<any>(null)\nconst refBtnEnd = ref<any>(null)\n\nconst optBase = reactive({\n keyIndex: `slider-${CommonBase.getRandom(8)}`,\n markHoverIndex: -1\n})\n\nconst optBar = reactive({\n left: 0,\n width: 0\n})\n\nconst optValue = reactive({\n start: props.min,\n end: props.min,\n startRatio: 0,\n endRatio: 0\n})\n\nconst optDotsList = ref<any[]>([])\nconst optMarksList = ref<any[]>([])\n\n// computed\nconst optTotalNumTrack = computed(() => {\n return Math.abs(props.max - props.min)\n})\n\nconst optIsShowMarks = computed(() => {\n return props.marks.length > 0\n})\n\nconst optIsBarDrag = computed(() => {\n const { isRange, isBarDrag } = props\n let newIsBarDrag = false\n if (isRange) {\n newIsBarDrag = isBarDrag\n }\n return newIsBarDrag\n})\n\nconst optFunMarkStyle = (mInfo: any) => {\n const sty: Record<string, string | undefined> = {}\n if (props.isVertical) {\n sty.bottom = `${mInfo.ratio}%`\n } else {\n sty.left = `${mInfo.ratio}%`\n }\n if (!CommonBase.isEmpty(mInfo.color)) {\n sty.color = mInfo.color\n }\n return sty\n}\n\n// cls\nconst clsParent = computed(() => {\n const cls: Record<string, boolean> = {\n 'panel-slider': true,\n 'slider-disabled': props.disabled,\n 'slider-vertical': props.isVertical,\n 'slider-level': !props.isVertical\n }\n let size = props.size\n if (CommonBase.isEmpty(size)) {\n size = 'large'\n }\n cls[`slider-${size}`] = true\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const sty: Record<string, string | undefined> = {}\n if (props.isVertical) {\n sty.height = props.verticalHeight\n }\n return sty\n})\n\n// emit\nconst _emitChange = (info?: any) => {\n const tempStart = info ? info.start : optValue.start\n const tempEnd = info ? info.end : optValue.end\n let start = tempStart\n let end = tempEnd\n if (start > end) {\n start = tempEnd\n end = tempStart\n }\n const value = props.isRange ? `${start},${end}` : end.toString()\n emit('update:value', value)\n emit('onChange', value, { start, end })\n}\n\n// 内部方法\nconst _calculationPercentage = (ratio: number, f = 2) => {\n return Number((ratio * 100).toFixed(f))\n}\n\nconst _calculationRatioByValue = (value: number) => {\n const total = optTotalNumTrack.value\n const ratio = total > 0 ? _calculationPercentage((value - props.min) / total) : 0\n return ratio\n}\n\nconst _calculationValueByRatio = (ratio: number) => {\n let value = 0\n if (ratio <= 0) {\n value = props.min\n } else if (ratio >= 100) {\n value = props.max\n } else {\n const { numType } = props\n const total = optTotalNumTrack.value\n const p = (total * ratio) / 100\n const t = CommonBase.getValueByFormat(p.toString(), numType, { isThousands: false })\n value = props.min + Number(t)\n if (CommonBase.isExistValue(['float2', 'float3'], numType)) {\n const strValue = value.toString()\n const decimal = Number(strValue.replace('float', ''))\n if (CommonBase.isExistValue(strValue, '.') && strValue.split('.')[1].length > decimal) {\n value = Number(value.toFixed(decimal))\n }\n }\n }\n return value\n}\n\nconst _checkMinMax = (value: any) => {\n let newValue = Number(value)\n let check = true\n if (newValue <= props.min) {\n newValue = props.min\n check = false\n } else if (newValue >= props.max) {\n newValue = props.max\n check = false\n }\n return { value: newValue, check }\n}\n\nconst _initMarks = () => {\n if (optIsShowMarks.value) {\n const list: any[] = []\n props.marks.forEach((mInfo: any) => {\n const newInfo = CommonBase.getJsonClone(mInfo)\n newInfo.value = Number(newInfo.value)\n newInfo.ratio = _calculationRatioByValue(newInfo.value)\n list.push(newInfo)\n })\n optMarksList.value = list\n }\n}\n\nconst _initDots = () => {\n const list: any[] = []\n if (optIsShowMarks.value) {\n optMarksList.value.forEach((mInfo: any) => {\n list.push({ ratio: mInfo.ratio, value: mInfo.value, isActive: false, isHide: false })\n })\n } else {\n if (props.splitNumber > 1) {\n const intervalRatio = Number((100 / props.splitNumber).toFixed())\n const halfRatio = intervalRatio / 2\n\n for (let i = 1; i < props.splitNumber; i++) {\n const valueRatio = intervalRatio * i\n const value = _calculationValueByRatio(valueRatio)\n list.push({\n value,\n ratio: valueRatio,\n isActive: false,\n isHide: false,\n left: valueRatio - halfRatio,\n right: valueRatio + halfRatio\n })\n }\n }\n }\n optDotsList.value = list\n}\n\nconst _refreshDotsStatus = () => {\n if (optDotsList.value.length > 0) {\n const { isShowDot, isShowDotActive, min, max } = props\n const isShowForever = optIsShowMarks.value\n\n const barStart = optBar.left\n const barEnd = barStart + optBar.width\n\n const newList: any[] = []\n optDotsList.value.forEach((dInfo: any) => {\n const newInfo = CommonBase.getJsonClone(dInfo)\n\n const isActive = dInfo.ratio >= barStart && dInfo.ratio <= barEnd\n newInfo.isActive = isActive\n\n let isShow = false\n if (isShowForever) {\n isShow = true\n } else {\n if (isShowDot) {\n isShow = true\n if (isActive) {\n if (isShowDotActive) {\n isShow = true\n } else {\n isShow = false\n }\n }\n } else {\n isShow = false\n }\n }\n if (newInfo.ratio === min || newInfo.ratio === max) {\n isShow = false\n }\n\n newInfo.isHide = !isShow\n newList.push(newInfo)\n })\n optDotsList.value = newList\n }\n}\n\nconst _bindBar = (info: any) => {\n const left = info.startRatio > info.endRatio ? info.endRatio : info.startRatio\n const width = Math.abs(info.endRatio - info.startRatio)\n optBar.left = left\n optBar.width = width\n}\n\nconst _setBtnTooltipByBarMove = (isShow: boolean) => {\n nextTick(() => {\n if (props.isRange) {\n if (isShow) {\n refBtnStart.value?.showTooltip()\n refBtnEnd.value?.showTooltip()\n } else {\n refBtnStart.value?.hideTooltip()\n refBtnEnd.value?.hideTooltip()\n }\n } else {\n if (isShow) {\n refBtnEnd.value?.showTooltip()\n } else {\n refBtnEnd.value?.hideTooltip()\n }\n }\n })\n}\n\nconst _bindValue = (info: any) => {\n _bindBar(info)\n optValue.start = info.start\n optValue.end = info.end\n optValue.startRatio = info.startRatio\n optValue.endRatio = info.endRatio\n _refreshDotsStatus()\n}\n\nconst _initValue = (value: any) => {\n let start: number\n let end: number\n if (value && !CommonBase.isEmpty(value)) {\n const tempArr = value.toString().split(',')\n const tempStartInfo = _checkMinMax(tempArr[0])\n if (props.isRange) {\n start = tempStartInfo.value\n end = start\n if (tempArr.length > 1) {\n const tempEndInfo = _checkMinMax(tempArr[1])\n if (tempEndInfo.value > start) {\n end = tempEndInfo.value\n }\n }\n } else {\n start = props.min\n end = tempStartInfo.value\n }\n } else {\n start = props.min\n end = props.min\n }\n const startRatio = _calculationRatioByValue(start)\n const endRatio = _calculationRatioByValue(end)\n _bindValue({ start, end, startRatio, endRatio })\n}\n\nconst _getCheckUseRatio = (ratio: number) => {\n let newRatio = _calculationPercentage(ratio)\n const listDots = optDotsList.value\n if (!optIsShowMarks.value && listDots.length > 0) {\n if (newRatio < listDots[0].left) {\n newRatio = 0\n } else if (newRatio > listDots[listDots.length - 1].right) {\n newRatio = 100\n } else {\n for (let i = 0; i < listDots.length; i++) {\n if (newRatio >= listDots[i].left && newRatio <= listDots[i].right) {\n newRatio = listDots[i].ratio\n break\n }\n }\n }\n }\n return newRatio\n}\n\nconst _calculationTrackClickValue = (ratio: number) => {\n const newRatio = _getCheckUseRatio(ratio)\n const value = _calculationValueByRatio(newRatio)\n let { start, startRatio, end, endRatio } = optValue\n let updType = ''\n\n if (props.isRange) {\n if (newRatio <= startRatio) {\n updType = 'start'\n } else if (newRatio >= endRatio) {\n updType = 'end'\n } else {\n const diff = (endRatio - startRatio) / 2\n if (newRatio > startRatio && newRatio <= startRatio + diff) {\n updType = 'start'\n } else if (newRatio >= endRatio - diff && newRatio < endRatio) {\n updType = 'end'\n }\n }\n } else {\n updType = 'end'\n }\n switch (updType) {\n case 'start':\n start = value\n startRatio = newRatio\n break\n case 'end':\n end = value\n endRatio = newRatio\n break\n default:\n break\n }\n return { start, end, startRatio, endRatio }\n}\n\nconst _initMain = () => {\n _initMarks()\n _initDots()\n _initValue(props.value)\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// watch\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue && newValue !== oldValue) {\n let isInit = true\n const tempArr = newValue.toString().split(',')\n const temp0 = Number(tempArr[0])\n if (props.isRange) {\n const temp1 = tempArr.length > 1 ? Number(tempArr[1]) : temp0\n if (\n (temp0 === optValue.start && temp1 === optValue.end) ||\n (temp0 === optValue.end && temp1 === optValue.start)\n ) {\n isInit = false\n }\n } else {\n isInit = temp0 !== optValue.end\n }\n if (isInit) {\n _initValue(newValue)\n }\n }\n }\n)\n\n// 事件\nconst onClickTrack = (e: any) => {\n if (!props.disabled) {\n e.preventDefault()\n e.stopPropagation()\n const elTrack = refElTrack.value!\n const trackClientItem = elTrack.getBoundingClientRect()\n const ratio = props.isVertical\n ? (trackClientItem.bottom - e.clientY) / elTrack.clientHeight\n : (e.clientX - trackClientItem.left) / elTrack.clientWidth\n const newValueInfo = _calculationTrackClickValue(ratio)\n _bindValue(newValueInfo)\n _emitChange(newValueInfo)\n }\n}\n\nconst onButtonMoveIng = (moveInfo: any, btnType: string) => {\n let { startRatio, endRatio } = optValue\n const ratio = moveInfo.value\n if (btnType === 'start') {\n startRatio = ratio\n optValue.start = _calculationValueByRatio(ratio)\n optValue.startRatio = ratio\n } else {\n endRatio = ratio\n optValue.end = _calculationValueByRatio(ratio)\n optValue.endRatio = ratio\n }\n _bindBar({ startRatio, endRatio })\n _refreshDotsStatus()\n if (moveInfo.runType === 'keydown') {\n _emitChange()\n }\n}\n\nconst onButtonMoveEnd = (moveInfo: any) => {\n const { left, width } = optBar\n const info: any = {\n startRatio: left,\n endRatio: left + width\n }\n info.start = _calculationValueByRatio(info.startRatio)\n info.end = _calculationValueByRatio(info.endRatio)\n _bindValue(info)\n if (moveInfo.runType === 'drag') {\n _emitChange(info)\n }\n}\n\nconst onButtonDblClick = (btnType: string) => {\n if (props.isRange) {\n let { start, startRatio, end, endRatio } = optValue\n if (btnType === 'start') {\n endRatio = startRatio\n end = start\n } else {\n startRatio = endRatio\n start = end\n }\n const info = { start, startRatio, end, endRatio }\n _bindValue(info)\n _emitChange(info)\n }\n}\n\nconst onBarMoveStart = () => {\n _setBtnTooltipByBarMove(true)\n}\n\nconst onBarMoveIng = (ratio: number) => {\n const startRatio = ratio\n optValue.start = _calculationValueByRatio(ratio)\n optValue.startRatio = ratio\n\n const endRatio = ratio + optBar.width\n optValue.end = _calculationValueByRatio(endRatio)\n optValue.endRatio = endRatio\n\n _bindBar({ startRatio, endRatio })\n _refreshDotsStatus()\n _setBtnTooltipByBarMove(true)\n}\n\nconst onBarMoveEnd = () => {\n _emitChange()\n _setBtnTooltipByBarMove(false)\n}\n\nconst onBarHoverIn = () => {\n _setBtnTooltipByBarMove(true)\n}\n\nconst onBarHoverOut = () => {\n _setBtnTooltipByBarMove(false)\n}\n\nconst onHoverMarkIn = (inx: number) => {\n if (optIsShowMarks.value) {\n optBase.markHoverIndex = inx\n }\n}\n\nconst onHoverMarkOut = () => {\n optBase.markHoverIndex = -1\n}\n\n// provide\nprovide('$SliderTop', {\n getDragValueInfo: (move: number, start: number) => {\n const moveRatio = props.isVertical\n ? move / refElTrack.value!.clientHeight\n : move / refElTrack.value!.clientWidth\n let newRatio = start / 100 + moveRatio\n if (newRatio >= 1) {\n newRatio = 1\n } else if (newRatio <= 0) {\n newRatio = 0\n }\n newRatio = _getCheckUseRatio(newRatio)\n const value = _calculationValueByRatio(newRatio)\n return { ratio: newRatio, value }\n },\n getButtonMoveValueInfo: (moveType: string, start: number) => {\n const move = moveType === 'left' ? -1 : 1\n const startNum = Number(start)\n let newRatio: number\n const listDots = optDotsList.value\n const listLen = listDots.length\n if (!optIsShowMarks.value && listLen > 0) {\n let startIndex = -1\n if (startNum < listDots[0].ratio) {\n startIndex = -1\n } else if (startNum > listDots[listLen - 1].ratio) {\n startIndex = listLen\n } else {\n for (let i = 0; i < listLen; i++) {\n if (startNum >= listDots[i].ratio && i + 1 < listLen && startNum < listDots[i + 1].ratio) {\n startIndex = i\n break\n }\n }\n }\n const newIndex = startIndex + move\n if (newIndex < 0) {\n newRatio = 0\n } else if (newIndex >= listLen) {\n newRatio = 100\n } else {\n newRatio = listDots[newIndex].ratio\n }\n } else {\n newRatio = startNum + move\n }\n if (newRatio >= 100) {\n newRatio = 100\n } else if (newRatio <= 0) {\n newRatio = 0\n }\n const value = _calculationValueByRatio(newRatio)\n return { ratio: newRatio, value }\n }\n})\n</script>\n","<template>\n <div :class=\"clsParent\">\n <div :class=\"clsLabel\">\n <span>\n <span class=\"tip-must\" v-if=\"isTipMust\">*</span>\n <span class=\"control-label-text\">{{ label }}</span>\n <slot name=\"labelExtend\"></slot>\n </span>\n </div>\n <div :class=\"clsContent\">\n <slot></slot>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport CommonBase from '../../Common/base'\n\ndefineOptions({ name: 'ClFormGroup' })\n\nconst props = defineProps({\n colRatio: {\n type: String,\n default: '2:10'\n },\n className: {\n type: String,\n default: ''\n },\n label: String,\n isTipMust: {\n type: Boolean,\n default: false\n },\n isPlaintext: {\n type: Boolean,\n default: false\n }\n})\n\nconst clsParent = computed(() => {\n const clsTemp: Record<string, boolean> = {\n 'form-group': true,\n 'form-group-plaintext': props.isPlaintext,\n row: true\n }\n if (!CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((cls: string) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n return clsTemp\n})\n\nconst clsLabel = computed(() => {\n let r = '2'\n const temp: string[] = props.colRatio.split(':')\n if (temp.length > 0) {\n r = temp[0]\n }\n const clsTemp: Record<string, boolean> = {\n 'control-label': true\n }\n clsTemp[`col-sm-${r}`] = true\n clsTemp[`col-${r}`] = true\n return clsTemp\n})\n\nconst clsContent = computed(() => {\n let r = '10'\n const temp: string[] = props.colRatio.split(':')\n if (temp.length > 1) {\n r = temp[1]\n }\n const clsTemp: Record<string, boolean> = {}\n clsTemp[`col-sm-${r}`] = true\n clsTemp[`col-${r}`] = true\n return clsTemp\n})\n</script>\n\n<style src=\"./Index.css\"></style>\n","<template>\n <div class=\"anchor-nav\" :class=\"{ 'is-fixed': isFixed }\">\n <div v-for=\"item in list\" :key=\"item.id\" class=\"anchor-item\" :class=\"{ active: currentAnchor === item.id }\"\n @click=\"scrollToAnchor(item.id)\">\n <span class=\"anchor-dot\"></span>\n <span class=\"anchor-label\">{{ item.label }}</span>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted } from 'vue'\nimport './Index.css'\nimport type { AnchorItem } from './AnchorItem'\n\ndefineOptions({ name: 'ClAnchorNav' })\n\nconst props = defineProps({\n className: {\n type: String,\n default: '', // desc: 自定义CSS类名\n },\n list: {\n type: Array as () => AnchorItem[],\n required: true, // desc: 锚点列表配置,每个锚点包含id和label属性\n },\n})\n\nconst currentAnchor = ref('')\nconst isFixed = ref(false)\n\nconst scrollToAnchor = (anchorId: string) => {\n const element = document.getElementById(anchorId)\n if (element) {\n element.scrollIntoView({ behavior: 'smooth', block: 'start' })\n }\n}\n\nconst handleScroll = () => {\n const scrollTop = window.scrollY\n const windowHeight = window.innerHeight\n\n isFixed.value = scrollTop > 100\n\n const anchorElements = props.list\n .map((item) => ({\n id: item.id,\n element: document.getElementById(item.id),\n }))\n .filter((a): a is { id: string; element: HTMLElement } => a.element !== null)\n\n for (let i = anchorElements.length - 1; i >= 0; i--) {\n const element = anchorElements[i].element\n const rect = element.getBoundingClientRect()\n if (rect.top <= windowHeight / 2) {\n currentAnchor.value = anchorElements[i].id\n break\n }\n }\n}\n\nonMounted(() => {\n window.addEventListener('scroll', handleScroll)\n handleScroll()\n})\n\nonUnmounted(() => {\n window.removeEventListener('scroll', handleScroll)\n})\n</script>\n","<template>\n <div :class=\"clsParent\" :style=\"styParent\">\n <textarea ref=\"refElTextarea\" class=\"form-control text-area\" v-model=\"optTextValue\" :name=\"optElName\"\n :placeholder=\"placeholder\" :disabled=\"disabled\" @input=\"onInputText\" @keydown=\"onKeydown\" @keyup=\"onKeyup\"\n @focus=\"onFocus\" @blur=\"onBlur\"></textarea>\n <i v-if=\"optIsShowClean\" class=\"textarea-clear-icon clIconFont clIcon-close-circle-fill\"\n @click.stop=\"onClear\"></i>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, computed, watch, nextTick, onMounted } from 'vue'\nimport CommonBase from '../../Common/base'\nimport './Index.css'\n\ndefineOptions({ name: 'ClInputTextarea' })\n\nconst props = defineProps({\n value: {\n type: String,\n default: ''\n },\n className: {\n type: String,\n default: ''\n },\n width: {\n type: String,\n default: ''\n },\n height: {\n type: String,\n default: '100px'\n },\n name: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n },\n isClean: {\n type: Boolean,\n default: false\n },\n isAutoHeight: {\n type: Boolean,\n default: false\n },\n changDelayTime: {\n type: Number,\n default: 200\n },\n heightMax: {\n type: String,\n default: ''\n },\n})\n\nconst emit = defineEmits<{\n (e: 'update:value', value: string): void\n (e: 'onChange', value: string): void\n (e: 'onInit'): void\n (e: 'onKeydownEnter', event: KeyboardEvent): void\n (e: 'onKeyupEnter', event: KeyboardEvent): void\n (e: 'onFocus'): void\n (e: 'onBlur'): void\n (e: 'onChangeDelay', value: string): void\n}>()\n\nconst refElTextarea = ref<HTMLTextAreaElement | null>(null)\nconst optBase = reactive({\n height: props.height || '100px',\n})\nconst optTextValue = ref(props.value || '')\nconst _pageData: any = {\n lastValue: props.value || '',\n prevDelayValue: props.value || '',\n valueDelayRun: false,\n}\n\nconst optElName = computed(() => {\n let name = props.name\n if (CommonBase.isEmpty(name)) {\n name = `textarea_${CommonBase.getRandom(8)}`\n }\n return name\n})\n\nconst optIsShowClean = computed(() => {\n return props.isClean && !props.disabled && !CommonBase.isEmpty(optTextValue.value)\n})\n\nconst clsParent = computed(() => {\n const clsTemp: any = {\n 'panel-textarea': true,\n 'box-width': true,\n 'textarea-clean': props.isClean,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((cls) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n return clsTemp\n})\n\nconst styParent = computed(() => {\n const { width, heightMax } = props\n const sty: any = {}\n if (!CommonBase.isEmpty(width)) {\n sty.width = width\n }\n if (!CommonBase.isEmpty(optBase.height)) {\n sty.height = optBase.height\n }\n if (heightMax && !CommonBase.isEmpty(heightMax)) {\n sty['max-height'] = heightMax\n }\n return sty\n})\n\nconst _calculationHeight = () => {\n if (props.isAutoHeight) {\n const el = refElTextarea.value\n if (el) {\n el.style.height = props.height || '100px'\n const height = el.scrollHeight + el.scrollTop + (el.offsetHeight - el.clientHeight)\n el.style.height = '100%'\n optBase.height = height > 0 ? `${height}px` : (props.height || '100px')\n }\n }\n}\n\nconst _focus = () => {\n refElTextarea.value?.focus()\n}\n\nconst _emitChange = (value: string) => {\n if (value !== _pageData.lastValue) {\n _pageData.lastValue = value\n emit('update:value', value)\n emit('onChange', value)\n _emitChangeDelay(value)\n }\n}\n\nlet _valueTimerDelay: any\nconst _emitChangeDelay = (value: string) => {\n if (_valueTimerDelay) {\n clearTimeout(_valueTimerDelay)\n _valueTimerDelay = null\n }\n _pageData.valueDelayRun = true\n _valueTimerDelay = setTimeout(() => {\n _pageData.valueDelayRun = false\n if (_pageData.prevDelayValue !== value) {\n _pageData.prevDelayValue = value\n emit('onChangeDelay', value)\n }\n }, props.changDelayTime || 200)\n}\n\nconst _initMain = () => {\n nextTick(() => {\n emit('onInit')\n })\n}\n\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue !== oldValue) {\n optTextValue.value = newValue || ''\n _pageData.lastValue = newValue || ''\n _calculationHeight()\n if (!_pageData.valueDelayRun) {\n _pageData.prevDelayValue = newValue || ''\n }\n }\n },\n)\n\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\nconst onInputText = (e: Event) => {\n const value = (e.target as HTMLTextAreaElement).value\n _calculationHeight()\n _emitChange(value)\n}\n\nconst onKeydown = (e: KeyboardEvent) => {\n const keyCode = e.key\n if (keyCode === 'Enter') {\n emit('onKeydownEnter', e)\n }\n}\n\nconst onKeyup = (e: KeyboardEvent) => {\n const keyCode = e.key\n if (keyCode === 'Enter') {\n emit('onKeyupEnter', e)\n }\n}\n\nconst onClear = () => {\n optTextValue.value = ''\n _emitChange('')\n _focus()\n}\n\nconst onFocus = () => {\n emit('onFocus')\n}\n\nconst onBlur = () => {\n emit('onBlur')\n}\n\nexport interface ClInputTextareaExpose {\n getValue: () => string\n getValueData: () => { value: string; show: string }\n setValue: (value: string) => void\n initHeight: () => void\n focus: () => void\n getParentElement: () => HTMLElement | null\n}\n\nconst getValue = () => {\n return CommonBase.trim(optTextValue.value)\n}\n\nconst getValueData = () => {\n return { value: getValue(), show: optTextValue.value }\n}\n\nconst setValue = (value: any) => {\n const newValue = CommonBase.isEmpty(value) ? '' : value\n _pageData.lastValue = newValue\n _pageData.prevDelayValue = newValue\n optTextValue.value = newValue\n _calculationHeight()\n}\n\nconst initHeight = () => {\n optBase.height = props.height || '100px'\n}\n\nconst focus = () => {\n _focus()\n}\n\nconst getParentElement = () => {\n return refElTextarea.value?.parentElement || null\n}\n\ndefineExpose({\n getValue,\n getValueData,\n setValue,\n initHeight,\n focus,\n getParentElement,\n})\n</script>\n","<template>\n <div :class=\"clsParent\">\n <template v-if=\"optNewList.length > 0\">\n <slot name=\"head\"></slot>\n </template>\n <span\n v-for=\"(info, inx) in optNewList\"\n :key=\"`${optKeyIndex}-list-${inx}-${info.id}`\"\n :class=\"clsTag(info)\"\n :style=\"styTag(info)\"\n @click.stop=\"onClickTag($event, info)\"\n >\n <span v-if=\"info.isHtml || isFormatHtml\" v-html=\"optFunShowTextLabel(info)\"></span>\n <span v-else>{{ optFunShowTextLabel(info) }}</span>\n <i\n v-if=\"isRemove && !info.isShowDisabled\"\n class=\"tag-close clIconFont clIcon-close\"\n @click=\"onRemoveItem($event, info, inx)\"\n ></i>\n </span>\n <i\n v-if=\"isRemoveAll && optNewList.length > 0 && !disabled\"\n class=\"tag-closeAll clIconFont clIcon-close\"\n @click=\"onRemoveAll\"\n ></i>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, computed, watch, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport './Index.css'\n\ndefineOptions({ name: 'ClTags' })\n\nconst props = defineProps({\n className: String,\n\n list: {\n type: Array,\n default: () => []\n },\n disabled: {\n type: Boolean,\n default: false\n },\n isRemove: {\n type: Boolean,\n default: true\n },\n showTextFormat: String, // \"${id} ${name}\"\n isRemoveAll: {\n type: Boolean,\n default: false\n },\n theme: {\n type: String,\n default: 'default' // default | code\n },\n isFormatHtml: {\n type: Boolean,\n default: false\n }\n})\n\nconst emit = defineEmits(['onRemove', 'onClickTag'])\n\nconst optKeyIndex = `tag-${CommonBase.getRandom(8)}`\nconst optIsShowDisabled = ref(props.disabled)\nconst optNewList = ref<any[]>([])\n\nconst optHlight = reactive({\n status: 0, // 1:初始,2:过渡中 0:结束\n startColor: '#FFFF80',\n endColor: 'rgba(0, 0, 0, 0)',\n hID: ''\n})\n\nconst clsParent = computed(() => {\n const { className, theme } = props\n const cls: Record<string, boolean> = {\n 'panel-tags': true\n }\n if (theme !== 'default') {\n cls[`tags-${theme}`] = true\n }\n if (props.isRemoveAll && optNewList.value.length > 0) {\n cls['tags-region'] = true\n }\n if (!CommonBase.isEmpty(className)) {\n className!.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsTag = (info: any) => {\n const { theme } = props\n let cls: Record<string, boolean> = {}\n if (theme === 'default') {\n cls = {\n tag: true,\n 'tag-disabled': info.isShowDisabled,\n 'tag-remove': props.isRemove && !info.isShowDisabled\n }\n cls['tag-hlight'] = info.id.toString() === optHlight.hID && optHlight.status === 2\n } else if (theme === 'code') {\n cls['tag-code'] = true\n }\n return cls\n}\n\nconst styTag = (info: any) => {\n const sty: Record<string, string | undefined> = {}\n if (info.id.toString() === optHlight.hID) {\n switch (optHlight.status) {\n case 1:\n sty['background-color'] = optHlight.startColor\n break\n case 2:\n sty['background-color'] = optHlight.endColor\n break\n case 0:\n break\n }\n }\n return sty\n}\n\nconst optFunShowTextLabel = (info: any) => {\n return CommonBase.isEmpty(props.showTextFormat)\n ? info.name\n : CommonBase.convertStringFormat(props.showTextFormat as string, info)\n}\n\n// 内部方法\nconst _convertListInfoDisabled = (item: any) => {\n const disabled = optIsShowDisabled.value\n let isItemDisabled = false\n if (disabled) {\n isItemDisabled = true\n } else {\n isItemDisabled = CommonBase.isBoolean(item.isDisabled) ? item.isDisabled : false\n }\n item.isShowDisabled = isItemDisabled\n}\n\nconst _convertList = (list: any[]) => {\n const newList: any[] = []\n list.forEach((item: any) => {\n const newItem = CommonBase.getJsonClone(item)\n _convertListInfoDisabled(newItem)\n newList.push(newItem)\n })\n return newList\n}\n\nconst _changeDisabled = (isDisabled: boolean) => {\n optIsShowDisabled.value = isDisabled\n const newList = _convertList(optNewList.value)\n optNewList.value = newList\n}\n\nconst _bindHlight = (id: any) => {\n optHlight.hID = id.toString()\n optHlight.status = 1\n nextTick(() => {\n setTimeout(() => {\n optHlight.status = 2\n }, 10)\n setTimeout(() => {\n optHlight.status = 0\n optHlight.hID = ''\n }, 1500)\n })\n}\n\nconst _initMain = () => {\n const newList = _convertList(props.list)\n optNewList.value = newList\n}\n\n// watch\nwatch(\n () => props.disabled,\n (newValue: boolean) => {\n _changeDisabled(newValue)\n }\n)\n\nwatch(\n () => props.list,\n (newValue: any[]) => {\n const newList = _convertList(newValue)\n optNewList.value = newList\n },\n { deep: true }\n)\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// 事件\nconst onClickTag = (_event: MouseEvent, info: any) => {\n emit('onClickTag', info)\n}\n\nconst onRemoveItem = (event: MouseEvent, info: any, inx: number) => {\n event.preventDefault()\n event.stopPropagation()\n if (props.isRemove && !info.isShowDisabled) {\n optNewList.value.splice(inx, 1)\n emit('onRemove', info.id.toString())\n }\n}\n\nconst onRemoveAll = () => {\n optNewList.value = []\n emit('onRemove', '')\n}\n\n// 外部调用\nconst setDisabled = (isDisabled = true) => {\n _changeDisabled(isDisabled)\n}\n\nconst addInfo = (item: any) => {\n const existInfo = CommonBase.getListExistValue(optNewList.value, item.name, 'name')\n if (CommonBase.isEmpty(existInfo)) {\n const newItem = CommonBase.getJsonClone(item)\n _convertListInfoDisabled(newItem)\n optNewList.value.push(newItem)\n } else {\n _bindHlight(existInfo.info.id)\n }\n}\n\nconst getData = () => {\n return optNewList.value\n}\n\ndefineExpose({\n setDisabled,\n addInfo,\n getData\n})\n</script>\n","<template>\n <div :class=\"clsParent\">\n <div ref=\"refElList\" class=\"waterfall-list\" :style=\"{ height: `${optBase.pHeight}px` }\">\n <div\n v-for=\"(info, inx) in optList\"\n :key=\"`${optBase.keyIndex}_${info[itemKey] || inx}`\"\n class=\"waterfall-item\"\n >\n <div>\n <slot :data=\"info\" :index=\"inx\"></slot>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, computed, watch, onMounted, onUnmounted, nextTick, provide } from 'vue'\nimport CommonBase from '../../Common/base'\nimport CommonElement from '../../Common/Element/index'\nimport { Resize as ResizeEvent } from '../../Common/Element/Event/index'\nimport { DelayFun } from '../../Common/Tools/index'\nimport './Index.css'\n\ndefineOptions({ name: 'ClWaterfall' })\n\nconst props = defineProps({\n className: String,\n list: {\n type: Array,\n default: () => []\n },\n itemKey: {\n type: String,\n default: 'id'\n },\n width: {\n type: Number,\n default: -1\n },\n colNum: {\n type: Number,\n default: -1\n },\n spacing: {\n type: Number,\n default: 10\n },\n animationName: {\n type: String,\n default: 'animated fadeIn'\n }\n})\n\nconst refElList = ref<HTMLElement | null>(null)\n\nconst optBase = reactive({\n keyIndex: `waterfall-${CommonBase.getRandom(8)}`,\n pWidth: 0,\n pHeight: 0\n})\n\nconst optList = ref<any[]>([])\n\nconst _pageData: any = {\n colPosY: [],\n resizeEvent: null,\n resizeDelayFun: null,\n isExistItemKey: true\n}\n\n// computed\nconst optColWidth = computed(() => {\n const pWidth = optBase.pWidth\n const { width, colNum, spacing } = props\n let newWidth = 300\n const isWidth = width > 0\n const isCols = colNum > 0\n const averageW = isCols ? parseInt(((pWidth + spacing) / colNum).toString()) - spacing : 0\n if (isWidth && isCols) {\n const useTotalW = (width + spacing) * colNum - spacing\n newWidth = pWidth >= useTotalW ? width : averageW\n } else if (!isWidth && isCols) {\n newWidth = averageW\n } else if (isWidth && !isCols) {\n newWidth = pWidth > width ? width : pWidth\n }\n return newWidth\n})\n\nconst optColNum = computed(() => {\n const pWidth = optBase.pWidth\n const boxWidth = optColWidth.value\n const { colNum, spacing } = props\n const isCols = colNum > 0\n let newCol = -1\n const maxCol = parseInt(((pWidth + spacing) / (boxWidth + spacing)).toString())\n if (isCols) {\n const useTotalW = (boxWidth + spacing) * colNum - spacing\n newCol = pWidth >= useTotalW ? colNum : maxCol\n } else {\n newCol = maxCol\n }\n return newCol\n})\n\nconst optOffsetX = computed(() => {\n const pWidth = optBase.pWidth\n const boxWidth = optColWidth.value\n const maxColNum = optColNum.value\n const { spacing } = props\n const useTotalW = (boxWidth + spacing) * maxColNum - spacing\n const newOffsetX = parseInt(((pWidth - useTotalW) / 2).toString())\n return newOffsetX\n})\n\nconst clsParent = computed(() => {\n const cls: Record<string, boolean> = {\n 'panel-waterfall': true\n }\n const { className } = props\n if (className && !CommonBase.isEmpty(className)) {\n className.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\n// 内部方法\nconst _checkExistItemKey = () => {\n const { list, itemKey } = props\n list.forEach((info: any) => {\n if (_pageData.isExistItemKey) {\n _pageData.isExistItemKey = CommonBase.isExistJsonKey(info, itemKey)\n }\n })\n}\n\nconst _initList = () => {\n optList.value = props.list\n}\n\nconst _initColPosY = () => {\n const { spacing } = props\n _pageData.colPosY = new Array(optColNum.value).fill(spacing)\n}\n\nconst _getColItemX = (inx: number) => {\n const { spacing } = props\n const w = optColWidth.value\n const x = optOffsetX.value\n return x + (w + spacing) * inx\n}\n\nconst _initLayoutItems = () => {\n let elItems: NodeListOf<HTMLElement> | undefined\n if (refElList.value) {\n elItems = refElList.value.querySelectorAll('.waterfall-item')\n }\n if (CommonBase.isUndefined(elItems) || !elItems) {\n return\n }\n if (elItems.length === 0) {\n return\n }\n\n _initColPosY()\n const w = optColWidth.value\n const { spacing, animationName } = props\n for (let i = 0; i < elItems.length; i++) {\n const el = elItems[i]\n const h = CommonElement.getPositionView(el).height\n const y = Math.min.apply(null, _pageData.colPosY)\n const yInx = _pageData.colPosY.indexOf(y)\n const x = _getColItemX(yInx)\n\n el.style.width = `${w}px`\n el.style.transform = `translate3d(${x}px,${y}px, 0)`\n _pageData.colPosY[yInx] += h + spacing\n\n const elChild = el.firstChild as HTMLElement\n const sty = elChild.style as any\n elChild.style.visibility = 'visible'\n if (!CommonElement.checkHasClass(elChild.className, animationName)) {\n sty['animation-duration'] = '1000ms'\n sty['animation-delay'] = '200ms'\n sty['animation-fill-mode'] = 'both'\n elChild.className = CommonElement.getAddClass(elChild.className, animationName)\n }\n }\n optBase.pHeight = Math.max.apply(null, _pageData.colPosY)\n}\n\nconst _initRender = () => {\n if (_pageData.isExistItemKey) {\n _initList()\n _pageData.resizeDelayFun.run(() => {\n _initLayoutItems()\n })\n } else {\n _pageData.resizeDelayFun.run(() => {\n _initList()\n nextTick(() => {\n _initLayoutItems()\n })\n })\n }\n}\n\nconst _initMain = () => {\n _pageData.resizeDelayFun = new DelayFun(null, 200)\n _pageData.resizeEvent = new ResizeEvent({\n element: refElList.value,\n callback: (item: any) => {\n optBase.pWidth = item.contentRect.width\n }\n })\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\nonUnmounted(() => {\n if (_pageData.resizeEvent) {\n _pageData.resizeEvent.destroy()\n }\n})\n\n// watch\nwatch(\n () => [optBase.pWidth, optColWidth, props.list],\n () => {\n _checkExistItemKey()\n _initRender()\n },\n { deep: true }\n)\n\n// provide\nprovide('$WaterfallTop', {\n imgCallback: _initRender\n})\n\n// 外部调用\nconst deleteItem = (inx: number) => {\n const elItems = refElList.value?.querySelectorAll('.waterfall-item')\n if (elItems && elItems[inx]) {\n const el = elItems[inx] as HTMLElement\n if (el.firstChild) {\n (el.firstChild as HTMLElement).style.visibility = 'hidden'\n }\n }\n}\n\ndefineExpose({\n deleteItem\n})\n</script>\n","<template>\n <div class=\"waterfall-imageBox\">\n <img ref=\"refElImage\" class=\"waterfall-image\" alt=\"\">\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject, ref, watch } from 'vue'\nimport { useLazyload } from '../LazyImage/use'\n\ndefineOptions({ name: 'ClWaterfallImage' })\n\nconst props = defineProps({\n url: {\n type: String,\n default: ''\n }\n})\n\nconst _selfTop: any = inject('$WaterfallTop')\nconst optSrcUrl = ref(props.url)\nconst refElImage = ref<HTMLElement | null>(null)\n\nuseLazyload(refElImage, optSrcUrl, {\n callback: {\n loaded: () => {\n _selfTop.imgCallback()\n },\n error: () => {\n _selfTop.imgCallback()\n }\n }\n})\n\nwatch(\n () => props.url,\n (newValue) => {\n optSrcUrl.value = newValue\n }\n)\n</script>\n","<template>\n <div\n :class=\"clsParent\"\n @mouseenter=\"onHoverIn\"\n @mouseleave=\"onHoverOut\"\n @click.stop=\"onClick\"\n >\n <div class=\"clipboard-btn\">\n <slot><i\n :class=\"clsIcon\"\n :title=\"'复制'\"\n ></i></slot>\n </div>\n <div\n v-if=\"isUseSuccess&& optBase.isHover && optBase.isShowSuccess\"\n class=\"clipboard-operate-result\"\n ><i class=\"clIconFont clIcon-check\"></i></div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { onMounted, nextTick, computed, reactive } from 'vue'\nimport CommonBase from '../../Common/base'\nimport Clipboard from './index'\n\n// defineOptions\ndefineOptions({ name: 'ClClipboard' })\n\n// props\nconst props = defineProps({\n // 必填属性\n textLabel: {\n type: [String, Function],\n required: true\n },\n // 简单属性(无默认值、非必填、无需验证)\n className: String,\n iconColorClass: String,\n isUseSuccess: Boolean,\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'onCopySuccess'): void\n (e: 'onCopyError', text: string): void\n}>()\n\n// reactive\nconst optBase = reactive({\n isHover: false,\n isShowSuccess: false,\n})\n\n// 内部数据\nlet clipboard: any = null\n\n// computed\nconst clsParent = computed(() => {\n const clsTemp:any = {\n 'panel-clipboard': true,\n }\n const { className } = props\n if (className && !CommonBase.isEmpty(className)) {\n className.split(' ').forEach((cls) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n return clsTemp\n})\n\nconst clsIcon = computed(() => {\n const clsTemp:any = {\n clIconFont: true,\n 'clIcon-copy': true,\n }\n\n const { iconColorClass } = props\n if (iconColorClass && !CommonBase.isEmpty(iconColorClass)) {\n clsTemp[iconColorClass] = true\n }\n return clsTemp\n})\n\n// 内部方法\nconst _initMain = () => {\n clipboard = Clipboard()\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// 内部触发的事件 on\nconst onClick = () => {\n let text = ''\n const { textLabel } = props\n if (textLabel) {\n switch (typeof textLabel) {\n case 'function':\n text = textLabel()\n break\n case 'string':\n text = textLabel\n break\n }\n }\n if (!CommonBase.isEmpty(text)) {\n clipboard.copy({\n text,\n successCallback: () => {\n optBase.isShowSuccess = true\n emit('onCopySuccess')\n },\n errorCallback: () => {\n optBase.isShowSuccess = false\n emit('onCopyError', text)\n },\n })\n } else {\n emit('onCopyError', text)\n }\n}\n\nconst onHoverIn = () => {\n optBase.isHover = true\n}\n\nconst onHoverOut = () => {\n optBase.isShowSuccess = false\n optBase.isHover = false\n}\n</script>\n","import { createApp } from 'vue'\nimport ElementLoadScreen from './Index.vue'\n\nexport default (options: Record<string, any> = {}) => {\n const VLoadScreen = createApp(ElementLoadScreen, options)\n const tempParent = document.createElement('div')\n const loadScreen: any = VLoadScreen.mount(tempParent)\n return {\n show: (text?: string) => {\n loadScreen.show(text)\n },\n hide: (t: number = 1000) => {\n loadScreen.hide(t)\n }\n }\n}\n","//// component\nimport Input from \"./Input/Index.vue\";\nimport IconFont from \"./IconFont/Index.vue\";\nimport Load from \"./Load/Index.vue\";\nimport LoadFullCenter from \"./Load/FullCenter.vue\";\nimport LoadWarp from \"./Load/Warp.vue\";\nimport LoadIng from \"./Load/Ing.vue\";\nimport LoadScreenComponent from \"./LoadScreen/Index.vue\";\nimport Progress from \"./Progress/Index.vue\";\nimport Slider from \"./Slider/Index.vue\";\nimport Button from \"./Button/Index.vue\";\nimport Link from \"./Link/Index.vue\";\nimport Modal from \"./Modal/Index.vue\";\nimport SlideUpDown from \"./Transition/SlideUpDown.vue\";\nimport Radio from \"./Radio/Index.vue\";\nimport RadioOne from \"./Radio/One.vue\";\nimport Checkbox from \"./CheckBox/Index.vue\";\nimport CheckboxOne from \"./CheckBox/One.vue\";\nimport Badge from \"./Badge/Index.vue\";\nimport CountUp from \"./CountUp/Index.vue\";\nimport Cropper from \"./Cropper/Index.vue\";\nimport Darg from \"./Darg/Index.vue\";\nimport Ellipsis from \"./Ellipsis/Index.vue\";\nimport Form from \"./Form/Index.vue\";\nimport FormGroup from \"./FormGroup/Index.vue\";\nimport FormValidate from \"./Form/Validate.vue\";\nimport Image from \"./Image/Index.vue\";\nimport InputCaptcha from \"./InputCaptcha/Index.vue\";\nimport InputNumber from \"./InputNumber/Index.vue\";\nimport InputNumberButton from \"./InputNumber/Button.vue\";\nimport InputSearch from \"./InputSearch/Index.vue\";\nimport AnchorNav from \"./AnchorNav/Index.vue\";\nimport InputTextarea from \"./InputTextarea/Index.vue\";\nimport Switchery from \"./Switchery/Index.vue\";\nimport Tags from \"./Tags/Index.vue\";\nimport Waterfall from \"./Waterfall/Index.vue\";\nimport WaterfallImage from \"./Waterfall/Image.vue\";\nimport ClipboardComponent from \"./Clipboard/Index.vue\";\n\nexport const components = [\n Input,\n IconFont,\n Load,\n LoadFullCenter,\n LoadWarp,\n LoadIng,\n LoadScreenComponent,\n Progress,\n Slider,\n Button,\n Link,\n Modal,\n SlideUpDown,\n Radio,\n RadioOne,\n Checkbox,\n CheckboxOne,\n Badge,\n CountUp,\n Cropper,\n Darg,\n Ellipsis,\n Form,\n FormGroup,\n FormValidate,\n Image,\n InputCaptcha,\n InputNumber,\n InputNumberButton,\n InputSearch,\n AnchorNav,\n InputTextarea,\n Switchery,\n Tags,\n Waterfall,\n WaterfallImage,\n ClipboardComponent];\n\n//// directive (empty, directives are in Web)\nexport const directives: any = {};\n\n//// provide\nimport Clipboard from \"./Clipboard\";\nimport LoadScreen from \"./LoadScreen\";\nimport { languagePack } from \"./LanguagePack\";\n\nexport const provides: any = {\n clipboard: Clipboard,\n loadScreen: LoadScreen,\n languagePack,\n};\n","//// component\nimport PullToRefresh from \"./PullToRefresh/Index.vue\";\nimport Cell from \"./Cell/Index.vue\";\n\nexport const components: any[] = [PullToRefresh, Cell];\n\n//// directive\nexport const directives: any = {};\n\n//// provide\nexport const provides: any = {};\n","import * as element from \"../Element/componentsInstalls\";\nimport * as mobile from \"./componentsInstalls\";\n\nconst components = [...element.components, ...mobile.components];\nconst directives: any = { ...element.directives, ...mobile.directives };\nconst provides: any = { ...element.provides, ...mobile.provides };\n\nexport default (Vue: any, options: any = {}) => {\n components.forEach((item: any) => {\n Vue.component(item.name, item);\n });\n\n Object.keys(directives).forEach((dk: string) => {\n Vue.directive(directives[dk].name, directives[dk].directive(options[dk] || {}));\n });\n\n const optProvides: any = {};\n Object.keys(provides).forEach((dp: string) => {\n optProvides[dp] = provides[dp](options[dp] || {});\n });\n\n Vue.provide(\"$ClGlobals\", optProvides);\n};\n"],"names":["_formatHandlers","registerFormatHandler","type","handler","CommonBase","value","b","check","obj","arr","lng","lat","lngRegex","latRegex","def","objType","strValue","strDef","value1","value2","arr1","arr2","isInOrder","isEmpty1","isEmpty2","i","json2","list1","list2","key","info1","k","info2","k2","v","json","ua","isAndroid","isFireFox","isTablet","isIOS","newValue","str","sign","newStr","len","isDeep","opt","exclude","clone","newJson","sourceJson","keyArr","tempFormValue","keyJson","removeArr","temp","target","json1","map","isDef","valueType","arrValue","arrTemp","tempValue","vi","tt","isE","list","isFormat","newKey","info","blob","resolve","reject","reader","error","files","file","e","tree","topId","group","id","pId","tId","isShowSelf","pInfo","cId","idKey","cKey","pKey","topPV","isUndefinedCKey","tempList","newList","oldList","oldJson","initJson","newInfo","result","strPId","tempInfo","newStrPid","tempResult","inx","a","ids","newArr","arrParam","jsonParam","min","max","hash","elem","funAsc","funDesc","s1","s2","res","char1","char1Type","char2","char2Type","char","zero","around","lens","r","isRound","range","rand","digits","captcha","extInfo","useValue","fixedNum","newFormat","start","end","newE","arrNum","numValue","isMinus","absValue","isLess1","zeroLenL","indexDot","tempLess1","isCeil","inxPos","isEndFive","isRounding","l","newL","strL","lastL","f","newR","zeroLenR","reg","mapKey","optExt","defEmpty","defUndefined","newOptExt","isEmptyExtUndefinedDef","isMultiply","strFormat","$1","url","name","source","nextCb","rAF","handle","cAF","PromiseCommit","callback","promises","count","keyLen","errors","run","err","CommonPromise","Element$1","cls","c","classs","exist","element","eventName","eventFun","useCapture","text","font","context","tempCls","classTotal","arrRemove","className","arrTotal","arrCls","el","rect","box","winHeight","winWidth","ownerDocument","OwnElement","sty","overflow","overflowX","overflowY","isHide","current","isStop","parent","isCheckContains","newParentEl","parentAttr","elUpperLimit","isLimitReturnSelf","pEl","isLimit","newAttr","isContainsSelf","scrollList","attr","pre","compare","viewEl","docEl","winEl","tempBox","viewBox","newViewEl","tempViewBox","parentEl","newEl","arrEl","prevEl","targetEl","position","select","controlEl","textEl","dropDownEl","arrowEl","containerEl","newContainerEl","isAppendWindow","textWidth","textHeight","dropDownWidth","dropDownHeight","arrowWidth","arrowHeight","arrowWidthHalf","containerWidth","containerHeight","containerScrollWidth","controlOffset","controlPosView","controlViewTop","controlDropDownTotalWidth","controlDropDownTotalHeight","controlTotalHeight","posDown","posUp","posLeft","posRight","arrowPosLeft","arrowPosRight","arrowPosCenterLR","arrowPosCenterLRInfo","textOffset","textOffsetControl","textWidthHalf","textOffsetLeft","textOffsetRight","centerDropDownLeft","centerDiffLeft","centerDiffRight","data","n","fi","listOne","t","newTxt","clientX","clientY","CommonElement","Element","props","__props","emit","__emit","slots","useSlots","refElInput","ref","optIsFocusIng","optIsShowPassword","optTextValue","optLastValueChange","optLastValueFocus","_pageData","optInputType","computed","inputType","isNumber","isPassword","optElName","optIsGroupPrepend","optIsGroupAppend","optIsShowClean","clsParent","clsTemp","styParent","clsContainer","clsGroup","clsPasswordIcon","_valueTimerDelay","_emitChangeDelay","_emitChange","_convertUseValue","_emitFocus","_emitBlur","_emitKeyupEnter","_emitKeydown","_emitKeyup","_emitClear","_emitInit","nextTick","_checkValueNumber","_convertValue","prevValue","isTofixed","isThousand","decimal","decimalValue","_getFocusIndexByLeftValue","showValue","leftValue","arrLeft","regLeft","newLeft","focusIdx","_setFocusSelection","inputValue","focusInfo","inputValueLeft","inputValueRight","checkLeftNum","_getTextValue","textValue","newTextValue","newUserValue","_focus","watch","oldValue","isRun","tempNewValue","tempTextValue","isEmptyNew","isEmptyText","newShowText","_initMain","onMounted","onInputText","onKeydown","onKeyup","keyCode","onInputFocus","onInputBlur","onClear","onShowPasswordValue","getValue","__expose","_createElementBlock","_createElementVNode","_openBlock","_hoisted_1","_hoisted_2","_renderSlot","_ctx","$event","_hoisted_4","_hoisted_5","_cache","color","_createBlock","ClLoadRotaryLine","ClLoadCircleNotch","ClLoadCircleBubble","ClLoadBallColor4","window","factory","this","Waves","$$","toString","isTouchAvailable","isWindow","getWindow","isObject","isDOMNode","getWavesElements","nodes","stringRepr","offset","docElem","win","doc","convertStyle","styleObj","style","prop","Effect","velocity","ripple","pos","relativeY","relativeX","scale","translate","rippleStyle","duration","ripples","removeRipple","TagWrapper","wrapper","elementStyle","backgroundColor","diff","delay","TouchHandler","allow","eType","getWavesEffectElement","showEffect","hidden","timer","hideEffect","hideEvent","removeListeners","touchMove","moveEvent","options","body","elements","classes","tagName","elementsLen","off","centre","mousedown","hideRipple","mouseup","_waves","binding","newOptions","isEmpty","colorBg","wavesBind","refElTopParent","optIsRunLoading","optIsShowBackDrop","optIsBackDropRunLoading","optIsShowLabel","optIsShowIcon","optIsDisabled","optIsShowBackDropLoad","optWavesColor","optLoadPos","optLoadSize","size","clsIcon","clsBodyBackdropMain","styBtnChild","_runLoading","_runLoadEnd","_emitClick","onClick","_hoisted_3","_toDisplayString","_createVNode","ClLoad","_Fragment","_hoisted_6","optIsLink","event","_emitHoverIn","_emitHoverOut","onHoverIn","onHoverOut","_component_router_link","_getIconClass","iconClass","iconStyle","_normalizeClass","refElDialog","refElWrapper","optBase","reactive","clsModal","styWrapper","styDialog","_emitClickBack","_closeHide","_calculationAlignTop","_calculationAlignLeft","onClickBack","onTransitionEnter","onTransitionLeave","_Transition","_vShow","_withDirectives","refElTransition","refElBtnSubmit","_emitClickSubmit","_emitClickClose","onSubmit","onClose","isDisabled","ClModalTransition","ClButton","height","minHeight","isLoadIng","ClLoadIng","defaultTrigger","defaultClass","defaultOptions","Tooltip","eventInfo","on","triggers","container","elWrap","popperOptions","createPopper","arrAdd","tempDiv","newBodyHtml","isInitShow","header","headerValue","relatedEl","isRunTrigger","func","_tooltip","bodyHtml","newOption","tooltip","bindingValue","kp","vp","trigger","theme","isHtml","isFixedVisible","isStopPropagation","newIsInit","isValueObject","isUpdContent","newRefreshInx","oldRefreshInx","newRunTrigger","oldRunTrigger","tooltipDirectives","tooltipCommon","_optKeyIndex","_listDataToJson","_optIsFirstDataFinish","clsTipFun","item","styContainerFun","width","_emitModelValue","_getValue","_convertListToJson","_checkValueInList","selectValue","_setValue","_renderList","_cbIndex","_normalizeStyle","_directive_cltooltip","_createTextVNode","optForId","clsTip","tipIcon","checked","_unref","optKeyIndex","dataList","isAll","_getEffectiveValue","effectiveValue","isExist","selectArr","selectValueStr","tempCheck","clsCheckbox","validateProps","optTextNum","refElText","optValue","_initValue","animationTime","separator","objCountUp","CountUp","refElCropper","refElFileLabel","ran","optCropper","optPreview","optAlignLine","alignLine","clsPreview","previewShape","_setFixedNumber","fixedNumber","_setCropperImgSrc","src","newSrc","joinStr","onRealTime","imgData","onImgLoad","isSuccess","onChangeFileAgain","onClickFileLabel","onLarge","onSmall","onRotateLeft","onRotateRight","onReduction","onSave","cropperData","_mergeProps","ClLoadFullCenter","_hoisted_8","_hoisted_10","refElModal","_getOutImageBase64","onImgSave","ClModal","ClCropperBase","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread2","_defineProperty","_typeof","_extends","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","version","userAgent","pattern","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","fn","matches","selector","getParentOrHost","closest","ctx","includeCTX","R_SPACE","toggleClass","state","css","val","matrix","selfOnly","appliedTransforms","transform","matrixFn","find","iterator","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","elRect","top","left","bottom","right","containerRect","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","visible","getChild","childNum","includeDragEl","currentChild","children","Sortable","lastChild","last","index","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","indexOfObject","includeSelf","gotSelf","elemCSS","extend","dst","isRectEqual","rect1","rect2","_throttleTimeout","throttle","ms","args","_this","cancelThrottle","scrollBy","x","y","Polymer","$","expando","AnimationStateManager","animationStates","animationCallbackId","child","fromRect","childMatrix","animating","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","currentRect","translateX","translateY","repaint","plugins","defaults","PluginManager","plugin","option","p","sortable","evt","eventNameGlobal","pluginName","initialized","modified","eventProperties","modifiedValue","dispatchEvent","_ref","rootEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","allEventProperties","_excluded","pluginEvent","dragEl","ghostEl","nextEl","lastDownEl","cloneHidden","moved","_hideGhostForTarget","_unhideGhostForTarget","_dispatchEvent","dragElClone","ghostElClone","ghostMatrixLast","activeGroup","awaitingDragStarted","ignoreNextClick","sortables","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","pastFirstInvertThresh","isCircumstantialInvert","targetMoveDistance","ghostRelativeParent","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","_detectDirection","elCSS","elWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","secondChildWidth","touchingSideChild2","_dragElInRowColumn","dragRect","targetRect","vertical","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_detectNearestEmptySortable","ret","threshold","insideHorizontally","insideVertically","_prepareGroup","toFn","pull","to","from","sameGroup","otherGroup","originalGroup","nearestEmptyInsertDetectEvent","nearest","_checkOutsideTargetEl","dataTransfer","preventOnFilter","touch","originalTarget","filter","_saveInputCheckedState","criteria","dragStartFn","_disableDraggable","_nextTick","fallback","inserted","fallbackTolerance","fallbackOffset","ghostMatrix","relativeScrollOffset","dx","dy","boundaryCheckInfo","SortableExt","cssMatrix","revert","activeSortable","isOwner","canSort","fromSortable","completedFired","dragOverEvent","extra","completed","after","_onMove","changed","capture","insertion","elLastChild","_ghostIsLast","_ghostIsFirst","firstChild","direction","targetBeforeFirstSwap","differentLevel","differentRowCol","side1","scrolledPastTop","scrollBefore","_getSwapDirection","sibling","dragIndex","nextSibling","moveVector","_unsilent","crossResult","_cancelNextTick","_globalDragOver","order","_generateId","useAnimation","items","store","willInsertAfter","onMoveFn","retVal","spacer","swapThreshold","invertedSwapThreshold","invertSwap","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","sum","root","inputs","idx","_len","_key","autoScrolls","scrollEl","scrollRootEl","scrolling","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","AutoScrollPlugin","AutoScroll","_ref2","clearPointerElemChangedInterval","clearAutoScrolls","autoScroll","ogElemScroller","newElem","isFallback","sens","speed","scrollThisInstance","scrollCustomFn","layersOut","currentParent","canScrollX","canScrollY","scrollWidth","scrollHeight","scrollPosX","scrollPosY","vx","vy","scrollOffsetY","scrollOffsetX","drop","dispatchSortableEvent","hideGhostForTarget","unhideGhostForTarget","toSortable","Revert","_ref3","Remove","_ref4","parentSortable","tempElBox","attrData","moveEl","isCheck","boundary","isOut","elOffset","boundaryEl","moveElOffset","checkTop","checkRight","checkBottom","checkLeft","wrapBody","isWrap","cross","isCross","isSameStruct","newCls","clsArr","s","td","isRunCb","assistData","arrSortId","checkCb","checkResult","isAdd","loadEl","refElTop","_emitChangeSort","arrSort","_initSortable","placeholderCls","handleCls","selectCls","isBoundaryOut","boundaryElement","isWrapBody","wrapBodyElement","isDisabledInner","isDisabledOutsideInto","isGroupSameStruct","groupDropEndBeforeCallback","keyAttrId","refElParent","refElSpan","optTitle","title","_initTipPos","pW","cW","isPosSpan","isPosParent","DelayFun","cb","newCb","AnimateEasing","d","startPos","endPos","easing","self","fnCb","optParent","_validateEl","_runScrollErrorEl","errEl","preScroll","pElError","isErrElP","isErrElF","tempEL","pScrolls","validateEl","dayjs","localeData","objectSupport","isSameOrAfter","isSameOrBefore","isoWeek","utc","timezone","lunar","CommDay","day","optionBase","objDay","num","time1","timeDiff2","format","ZHCN","EN","LanguagePack","isEmptyType","packageData","typeInfo","ki","kv","dataDef","common","jsonDef","jsonValue","pageJson","pageCommon","keyTemp","jsonTempDef","jsonTempValue","CommonDay","Language","useLanguage","optPageLanguage","page","getPageLanguage","getLanguageType","_clGlobals","inject","refElMsg","_pageElement","clsErr","_initRules","rules","messages","tempR","isCheckOne","_mergeRules","cancel","param","message","arrKey","newRules","newMessages","m","_getErrData","errData","totalRules","_getTotalMessages","lang","toRaw","vMsg","langTypeInfo","msg","_getErrMsg","totalMessages","rMsg","_getForm","_setThemeType","_checkRun","_setMsg","msgEl","_validate","msgList","_newValue","defOption","Lazy","loading","elImage","observerOptions","entries","entry","timeoutId","useLazyload","refEl","lazy","onUnmounted","newVal","optSrcUrl","refElImage","styImg","fit","clsSendBtn","_emitSend","onChange","onKeyupEnter","onSend","countdownMax","countdown","isSend","isCountdown","_component_cl_input","Drag","clientXYInfo","tempRun","Resize","refElButton","_emitLongDownStart","_emitLongDownEnd","_checkLongDownStart","_stopLongDownInterval","_runLongDownStart","_runLongDownEnd","_runLongDownIng","dragConfig","DragEvent","optBtn","optIsShowTextPrepend","optTextDecimal","step","newDecimal","optIsFillZero","clsIconSubtract","icon","btnTheme","clsIconAdd","_calculationOperateValue","subtractDisabled","addDisabled","tempValueInfo","isLoop","minIsEmpty","maxIsEmpty","tempNum","tempStr","_setFocus","isFocus","_searchTimerDelay","onInputChange","onInputKeydown","onInputKeyup","onButtonLongDown","onButtonLongDownEnd","_component_cl_inputnumber_button","_prevValue","optSearchValue","optSlotAttrName","_stopRunDelay","_emitSearch","onFocus","onBlur","onClickIcon","ClInput","onBeforeEnter","onEnter","done","elHeight","onTransitionDone","onAfterEnter","onBeforeLeave","onLeave","onAfterLeave","AxiosRequest","optionsAll","newExtInfo","startTime","axios","response","initResData","errCbResult","errCode","errMsg","initErrData","headers","formData","pk","pv","methodType","fr","resFr","resData","contentDisposition","fileName","fileType","lastIndex","blobOption","link","extOptions","reqHeaders","headerData","ext","timeStart","timeout","extCode","successCode","code","config","requestKeyMerge","isRequestCancelRepeat","qs","requestKey","arrKeys","arrCancel","sk","retryDelay","refElContainer","optColorChecked","colorChecked","strColor","optColorUnChecked","colorUnChecked","styContainer","isOpen","styButton","_initMergeGlobalsOption","_calculationBtnLeft","buttonWidth","onToggle","changeCb","isEmitChange","Clipboard","_clearSelection","_clipboardBase","clipboardObj","ClipboardJS","tempEl","objClipboard","languagePack","refElContent","pullDistance","_startY","_isTracking","_isPulling","_scrollTop","_rafId","_pendingDeltaY","_isVirtual","indicatorStyle","indicatorText","_isAtTop","_getClientY","onScrollerScroll","onScrollEnd","_startMouseListeners","onPullMove","onPullEnd","_stopMouseListeners","onPullStart","_resetPull","DynamicScroller","active","DynamicScrollerItem","router","useRouter","$slots","_hoisted_7","_hoisted_9","_timeOutDestroyContainer","_getBody","_getTopEl","_checkContainer","_creatorContainer","_destroyContainer","_creatorItem","refElBar","optShowNumText","txt","showNumText","isShowNum","showNumTrigger","clsBar","styBar","justifyContent","styNum","showNumColor","styCircularBarRight","styCircularBarLeft","_initPost","showNumPos","_initRatio","ratio","newRatio","rotate","rotateRight","rotateLeft","isIncrease","timeRight","timeLeft","diffRight","diffLeft","ResizeEvent","elBar","elNum","barW","numW","isOverflow","_selfTop","_runDragStart","_e","_runDraggIng","move","_runDragEnd","onMouseOver","onMouseOut","vCltooltip","optTooltipValue","optTooltipPos","_showTooltip","_hideTooltip","_getDraggIngInfo","_runMoveIng","onMoveLeft","onMoveRight","onDblClick","refElTrack","refBtnStart","refBtnEnd","optBar","optDotsList","optMarksList","optTotalNumTrack","optIsShowMarks","optIsBarDrag","isRange","isBarDrag","newIsBarDrag","optFunMarkStyle","mInfo","tempStart","tempEnd","_calculationPercentage","_calculationRatioByValue","total","_calculationValueByRatio","numType","_checkMinMax","_initMarks","_initDots","intervalRatio","halfRatio","valueRatio","_refreshDotsStatus","isShowDot","isShowDotActive","isShowForever","barStart","barEnd","dInfo","isActive","isShow","_bindBar","_setBtnTooltipByBarMove","_bindValue","tempArr","tempStartInfo","tempEndInfo","startRatio","endRatio","_getCheckUseRatio","listDots","_calculationTrackClickValue","updType","isInit","temp0","temp1","onClickTrack","elTrack","trackClientItem","newValueInfo","onButtonMoveIng","moveInfo","btnType","onButtonMoveEnd","onButtonDblClick","onBarMoveStart","onBarMoveIng","onBarMoveEnd","onBarHoverIn","onBarHoverOut","onHoverMarkIn","onHoverMarkOut","provide","moveRatio","moveType","startNum","listLen","startIndex","ClSliderBar","ClSliderButton","dIndex","ClSliderDot","mIndex","clsLabel","clsContent","currentAnchor","isFixed","scrollToAnchor","anchorId","handleScroll","scrollTop","windowHeight","anchorElements","refElTextarea","heightMax","_calculationHeight","optIsShowDisabled","optNewList","optHlight","clsTag","styTag","optFunShowTextLabel","_convertListInfoDisabled","disabled","isItemDisabled","_convertList","newItem","_changeDisabled","_bindHlight","onClickTag","_event","onRemoveItem","onRemoveAll","existInfo","_withModifiers","refElList","optList","optColWidth","pWidth","colNum","spacing","newWidth","isWidth","isCols","averageW","useTotalW","optColNum","boxWidth","newCol","maxCol","optOffsetX","maxColNum","_checkExistItemKey","itemKey","_initList","_initColPosY","_getColItemX","w","_initLayoutItems","elItems","animationName","h","yInx","elChild","_initRender","clipboard","iconColorClass","textLabel","LoadScreen","VLoadScreen","createApp","ElementLoadScreen","tempParent","loadScreen","components","Input","IconFont","Load","LoadFullCenter","LoadWarp","LoadIng","LoadScreenComponent","Progress","Slider","Button","Link","Modal","SlideUpDown","Radio","RadioOne","Checkbox","CheckboxOne","Badge","Cropper","Darg","Ellipsis","Form","FormGroup","FormValidate","Image","InputCaptcha","InputNumber","InputNumberButton","InputSearch","AnchorNav","InputTextarea","Switchery","Tags","Waterfall","WaterfallImage","ClipboardComponent","directives","provides","PullToRefresh","Cell","element.components","mobile.components","element.directives","mobile.directives","element.provides","mobile.provides","installs","Vue","dk","optProvides","dp"],"mappings":"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"}