fast-element-plus 1.0.0-alpha.0 → 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 (269) hide show
  1. package/package.json +24 -121
  2. package/Fast.png +0 -0
  3. package/LICENSE +0 -201
  4. package/README.md +0 -158
  5. package/README.zh.md +0 -158
  6. package/dist/index.iife.js +0 -2
  7. package/dist/index.iife.js.map +0 -1
  8. package/dist/index.umd.js +0 -2
  9. package/dist/index.umd.js.map +0 -1
  10. package/es/components/icon/index.d.ts +0 -20
  11. package/es/components/icon/index.mjs +0 -9
  12. package/es/components/icon/index.mjs.map +0 -1
  13. package/es/components/icon/src/icon.d.ts +0 -61
  14. package/es/components/icon/src/icon.mjs +0 -81
  15. package/es/components/icon/src/icon.mjs.map +0 -1
  16. package/es/components/index.d.ts +0 -1
  17. package/es/components/index.mjs +0 -5
  18. package/es/components/index.mjs.map +0 -1
  19. package/es/constants/index.d.ts +0 -2
  20. package/es/constants/index.mjs +0 -7
  21. package/es/constants/index.mjs.map +0 -1
  22. package/es/constants/mime.d.ts +0 -61
  23. package/es/constants/mime.mjs +0 -62
  24. package/es/constants/mime.mjs.map +0 -1
  25. package/es/constants/regex.d.ts +0 -78
  26. package/es/constants/regex.mjs +0 -79
  27. package/es/constants/regex.mjs.map +0 -1
  28. package/es/directives/clickCopy/index.d.ts +0 -2
  29. package/es/directives/clickCopy/index.mjs +0 -39
  30. package/es/directives/clickCopy/index.mjs.map +0 -1
  31. package/es/directives/clickDebounce/index.d.ts +0 -2
  32. package/es/directives/clickDebounce/index.mjs +0 -21
  33. package/es/directives/clickDebounce/index.mjs.map +0 -1
  34. package/es/directives/clickDraggable/index.d.ts +0 -2
  35. package/es/directives/clickDraggable/index.mjs +0 -39
  36. package/es/directives/clickDraggable/index.mjs.map +0 -1
  37. package/es/directives/clickIconCopy/index.d.ts +0 -2
  38. package/es/directives/clickIconCopy/index.mjs +0 -57
  39. package/es/directives/clickIconCopy/index.mjs.map +0 -1
  40. package/es/directives/clickLongpress/index.d.ts +0 -2
  41. package/es/directives/clickLongpress/index.mjs +0 -43
  42. package/es/directives/clickLongpress/index.mjs.map +0 -1
  43. package/es/directives/clickThrottle/index.d.ts +0 -2
  44. package/es/directives/clickThrottle/index.mjs +0 -32
  45. package/es/directives/clickThrottle/index.mjs.map +0 -1
  46. package/es/directives/index.d.ts +0 -6
  47. package/es/directives/index.mjs +0 -15
  48. package/es/directives/index.mjs.map +0 -1
  49. package/es/fast-element-plus/component.d.ts +0 -3
  50. package/es/fast-element-plus/component.mjs +0 -6
  51. package/es/fast-element-plus/component.mjs.map +0 -1
  52. package/es/fast-element-plus/directive.d.ts +0 -2
  53. package/es/fast-element-plus/directive.mjs +0 -11
  54. package/es/fast-element-plus/directive.mjs.map +0 -1
  55. package/es/fast-element-plus/element-plus.d.ts +0 -2
  56. package/es/fast-element-plus/element-plus.mjs +0 -113
  57. package/es/fast-element-plus/element-plus.mjs.map +0 -1
  58. package/es/fast-element-plus/fast-element-plus.d.ts +0 -3
  59. package/es/fast-element-plus/fast-element-plus.mjs +0 -12
  60. package/es/fast-element-plus/fast-element-plus.mjs.map +0 -1
  61. package/es/fast-element-plus/make-installer.d.ts +0 -7
  62. package/es/fast-element-plus/make-installer.mjs +0 -30
  63. package/es/fast-element-plus/make-installer.mjs.map +0 -1
  64. package/es/fast-element-plus/version.d.ts +0 -4
  65. package/es/fast-element-plus/version.mjs +0 -5
  66. package/es/fast-element-plus/version.mjs.map +0 -1
  67. package/es/hooks/index.d.ts +0 -2
  68. package/es/hooks/index.mjs +0 -7
  69. package/es/hooks/index.mjs.map +0 -1
  70. package/es/hooks/useLoading/index.d.ts +0 -4
  71. package/es/hooks/useLoading/index.mjs +0 -35
  72. package/es/hooks/useLoading/index.mjs.map +0 -1
  73. package/es/hooks/useOverlay/index.d.ts +0 -4
  74. package/es/hooks/useOverlay/index.mjs +0 -27
  75. package/es/hooks/useOverlay/index.mjs.map +0 -1
  76. package/es/hooks/useScreenFull/index.d.ts +0 -0
  77. package/es/index.d.ts +0 -16
  78. package/es/index.es.d.ts +0 -6
  79. package/es/index.mjs +0 -82
  80. package/es/index.mjs.map +0 -1
  81. package/es/settings/index.d.ts +0 -79
  82. package/es/settings/index.mjs +0 -35
  83. package/es/settings/index.mjs.map +0 -1
  84. package/es/stores/index.d.ts +0 -4
  85. package/es/stores/index.mjs +0 -7
  86. package/es/stores/index.mjs.map +0 -1
  87. package/es/utils/base64.d.ts +0 -10
  88. package/es/utils/base64.mjs +0 -106
  89. package/es/utils/base64.mjs.map +0 -1
  90. package/es/utils/click.d.ts +0 -14
  91. package/es/utils/click.mjs +0 -35
  92. package/es/utils/click.mjs.map +0 -1
  93. package/es/utils/color.d.ts +0 -31
  94. package/es/utils/color.mjs +0 -73
  95. package/es/utils/color.mjs.map +0 -1
  96. package/es/utils/console.d.ts +0 -21
  97. package/es/utils/console.mjs +0 -19
  98. package/es/utils/console.mjs.map +0 -1
  99. package/es/utils/deviceId.d.ts +0 -9
  100. package/es/utils/deviceId.mjs +0 -27
  101. package/es/utils/deviceId.mjs.map +0 -1
  102. package/es/utils/errorHandler.d.ts +0 -4
  103. package/es/utils/errorHandler.mjs +0 -42
  104. package/es/utils/errorHandler.mjs.map +0 -1
  105. package/es/utils/form.d.ts +0 -78
  106. package/es/utils/form.mjs +0 -218
  107. package/es/utils/form.mjs.map +0 -1
  108. package/es/utils/index.d.ts +0 -10
  109. package/es/utils/index.mjs +0 -29
  110. package/es/utils/index.mjs.map +0 -1
  111. package/es/utils/storage.d.ts +0 -79
  112. package/es/utils/storage.mjs +0 -219
  113. package/es/utils/storage.mjs.map +0 -1
  114. package/es/utils/string.d.ts +0 -33
  115. package/es/utils/string.mjs +0 -119
  116. package/es/utils/string.mjs.map +0 -1
  117. package/es/utils/vue/func.d.ts +0 -7
  118. package/es/utils/vue/func.mjs +0 -17
  119. package/es/utils/vue/func.mjs.map +0 -1
  120. package/es/utils/vue/index.d.ts +0 -6
  121. package/es/utils/vue/index.mjs +0 -17
  122. package/es/utils/vue/index.mjs.map +0 -1
  123. package/es/utils/vue/install.d.ts +0 -5
  124. package/es/utils/vue/install.mjs +0 -31
  125. package/es/utils/vue/install.mjs.map +0 -1
  126. package/es/utils/vue/props.d.ts +0 -10
  127. package/es/utils/vue/props.mjs +0 -14
  128. package/es/utils/vue/props.mjs.map +0 -1
  129. package/es/utils/vue/slots.d.ts +0 -11
  130. package/es/utils/vue/slots.mjs +0 -7
  131. package/es/utils/vue/slots.mjs.map +0 -1
  132. package/es/utils/vue/useRender.d.ts +0 -7
  133. package/es/utils/vue/useRender.mjs +0 -12
  134. package/es/utils/vue/useRender.mjs.map +0 -1
  135. package/es/utils/vue/with.d.ts +0 -6
  136. package/es/utils/vue/with.mjs +0 -7
  137. package/es/utils/vue/with.mjs.map +0 -1
  138. package/global.d.ts +0 -3
  139. package/lib/components/icon/index.d.ts +0 -20
  140. package/lib/components/icon/index.js +0 -2
  141. package/lib/components/icon/index.js.map +0 -1
  142. package/lib/components/icon/src/icon.d.ts +0 -61
  143. package/lib/components/icon/src/icon.js +0 -2
  144. package/lib/components/icon/src/icon.js.map +0 -1
  145. package/lib/components/index.d.ts +0 -1
  146. package/lib/components/index.js +0 -2
  147. package/lib/components/index.js.map +0 -1
  148. package/lib/constants/index.d.ts +0 -2
  149. package/lib/constants/index.js +0 -2
  150. package/lib/constants/index.js.map +0 -1
  151. package/lib/constants/mime.d.ts +0 -61
  152. package/lib/constants/mime.js +0 -2
  153. package/lib/constants/mime.js.map +0 -1
  154. package/lib/constants/regex.d.ts +0 -78
  155. package/lib/constants/regex.js +0 -2
  156. package/lib/constants/regex.js.map +0 -1
  157. package/lib/directives/clickCopy/index.d.ts +0 -2
  158. package/lib/directives/clickCopy/index.js +0 -2
  159. package/lib/directives/clickCopy/index.js.map +0 -1
  160. package/lib/directives/clickDebounce/index.d.ts +0 -2
  161. package/lib/directives/clickDebounce/index.js +0 -2
  162. package/lib/directives/clickDebounce/index.js.map +0 -1
  163. package/lib/directives/clickDraggable/index.d.ts +0 -2
  164. package/lib/directives/clickDraggable/index.js +0 -2
  165. package/lib/directives/clickDraggable/index.js.map +0 -1
  166. package/lib/directives/clickIconCopy/index.d.ts +0 -2
  167. package/lib/directives/clickIconCopy/index.js +0 -2
  168. package/lib/directives/clickIconCopy/index.js.map +0 -1
  169. package/lib/directives/clickLongpress/index.d.ts +0 -2
  170. package/lib/directives/clickLongpress/index.js +0 -2
  171. package/lib/directives/clickLongpress/index.js.map +0 -1
  172. package/lib/directives/clickThrottle/index.d.ts +0 -2
  173. package/lib/directives/clickThrottle/index.js +0 -2
  174. package/lib/directives/clickThrottle/index.js.map +0 -1
  175. package/lib/directives/index.d.ts +0 -6
  176. package/lib/directives/index.js +0 -2
  177. package/lib/directives/index.js.map +0 -1
  178. package/lib/fast-element-plus/component.d.ts +0 -3
  179. package/lib/fast-element-plus/component.js +0 -2
  180. package/lib/fast-element-plus/component.js.map +0 -1
  181. package/lib/fast-element-plus/directive.d.ts +0 -2
  182. package/lib/fast-element-plus/directive.js +0 -2
  183. package/lib/fast-element-plus/directive.js.map +0 -1
  184. package/lib/fast-element-plus/element-plus.d.ts +0 -2
  185. package/lib/fast-element-plus/element-plus.js +0 -2
  186. package/lib/fast-element-plus/element-plus.js.map +0 -1
  187. package/lib/fast-element-plus/fast-element-plus.d.ts +0 -3
  188. package/lib/fast-element-plus/fast-element-plus.js +0 -2
  189. package/lib/fast-element-plus/fast-element-plus.js.map +0 -1
  190. package/lib/fast-element-plus/make-installer.d.ts +0 -7
  191. package/lib/fast-element-plus/make-installer.js +0 -2
  192. package/lib/fast-element-plus/make-installer.js.map +0 -1
  193. package/lib/fast-element-plus/version.d.ts +0 -4
  194. package/lib/fast-element-plus/version.js +0 -2
  195. package/lib/fast-element-plus/version.js.map +0 -1
  196. package/lib/hooks/index.d.ts +0 -2
  197. package/lib/hooks/index.js +0 -2
  198. package/lib/hooks/index.js.map +0 -1
  199. package/lib/hooks/useLoading/index.d.ts +0 -4
  200. package/lib/hooks/useLoading/index.js +0 -2
  201. package/lib/hooks/useLoading/index.js.map +0 -1
  202. package/lib/hooks/useOverlay/index.d.ts +0 -4
  203. package/lib/hooks/useOverlay/index.js +0 -2
  204. package/lib/hooks/useOverlay/index.js.map +0 -1
  205. package/lib/hooks/useScreenFull/index.d.ts +0 -0
  206. package/lib/index.d.ts +0 -16
  207. package/lib/index.es.d.ts +0 -6
  208. package/lib/index.js +0 -2
  209. package/lib/index.js.map +0 -1
  210. package/lib/settings/index.d.ts +0 -79
  211. package/lib/settings/index.js +0 -2
  212. package/lib/settings/index.js.map +0 -1
  213. package/lib/stores/index.d.ts +0 -4
  214. package/lib/stores/index.js +0 -2
  215. package/lib/stores/index.js.map +0 -1
  216. package/lib/utils/base64.d.ts +0 -10
  217. package/lib/utils/base64.js +0 -2
  218. package/lib/utils/base64.js.map +0 -1
  219. package/lib/utils/click.d.ts +0 -14
  220. package/lib/utils/click.js +0 -2
  221. package/lib/utils/click.js.map +0 -1
  222. package/lib/utils/color.d.ts +0 -31
  223. package/lib/utils/color.js +0 -2
  224. package/lib/utils/color.js.map +0 -1
  225. package/lib/utils/console.d.ts +0 -21
  226. package/lib/utils/console.js +0 -2
  227. package/lib/utils/console.js.map +0 -1
  228. package/lib/utils/deviceId.d.ts +0 -9
  229. package/lib/utils/deviceId.js +0 -2
  230. package/lib/utils/deviceId.js.map +0 -1
  231. package/lib/utils/errorHandler.d.ts +0 -4
  232. package/lib/utils/errorHandler.js +0 -2
  233. package/lib/utils/errorHandler.js.map +0 -1
  234. package/lib/utils/form.d.ts +0 -78
  235. package/lib/utils/form.js +0 -2
  236. package/lib/utils/form.js.map +0 -1
  237. package/lib/utils/index.d.ts +0 -10
  238. package/lib/utils/index.js +0 -2
  239. package/lib/utils/index.js.map +0 -1
  240. package/lib/utils/storage.d.ts +0 -79
  241. package/lib/utils/storage.js +0 -2
  242. package/lib/utils/storage.js.map +0 -1
  243. package/lib/utils/string.d.ts +0 -33
  244. package/lib/utils/string.js +0 -2
  245. package/lib/utils/string.js.map +0 -1
  246. package/lib/utils/vue/func.d.ts +0 -7
  247. package/lib/utils/vue/func.js +0 -2
  248. package/lib/utils/vue/func.js.map +0 -1
  249. package/lib/utils/vue/index.d.ts +0 -6
  250. package/lib/utils/vue/index.js +0 -2
  251. package/lib/utils/vue/index.js.map +0 -1
  252. package/lib/utils/vue/install.d.ts +0 -5
  253. package/lib/utils/vue/install.js +0 -2
  254. package/lib/utils/vue/install.js.map +0 -1
  255. package/lib/utils/vue/props.d.ts +0 -10
  256. package/lib/utils/vue/props.js +0 -2
  257. package/lib/utils/vue/props.js.map +0 -1
  258. package/lib/utils/vue/slots.d.ts +0 -11
  259. package/lib/utils/vue/slots.js +0 -2
  260. package/lib/utils/vue/slots.js.map +0 -1
  261. package/lib/utils/vue/useRender.d.ts +0 -7
  262. package/lib/utils/vue/useRender.js +0 -2
  263. package/lib/utils/vue/useRender.js.map +0 -1
  264. package/lib/utils/vue/with.d.ts +0 -6
  265. package/lib/utils/vue/with.js +0 -2
  266. package/lib/utils/vue/with.js.map +0 -1
  267. package/types/env.d.ts +0 -45
  268. package/types/runtime-core.d.ts +0 -52
  269. package/types/shims-vue.d.ts +0 -20
@@ -1,2 +0,0 @@
1
- var FastElementPlus=function(e,t,o,n,r,a,i){"use strict";function s(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const o in e)if("default"!==o){const n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:()=>e[o]})}return t.default=e,Object.freeze(t)}const l=s(a),c=t.reactive({warnPageNum:15,storageCrypto:!0,axios:{baseUrl:void 0,timeout:6e4,requestCipher:!0},table:{showSearch:!0,hideImage:!0,dataSearchRange:"Past3D"}}),d=(e,t)=>{for(const o in t){const n=t[o];void 0!==n&&null!=n&&(e[o]="object"==typeof n?d(e[o],t[o]):t[o])}},u=e=>{d(c,e)},m=(e,...t)=>{if(!e)return Promise.resolve(void 0);if("AsyncFunction"!==e.constructor.name)throw I("execAsyncFunction","必须为 Promise 异步方法"),new Error("必须为 Promise 异步方法");return e(...t).then((e=>e)).catch((e=>(I("execAsyncFunction",e),Promise.reject(e))))},p=()=>{},g=(e,t)=>{if(e.install=o=>{for(const n of[e,...Object.values(t??{})])o.component(n.name,n)},t)for(const[o,n]of Object.entries(t))e[o]=n;return e},f=(e,t)=>(e.install=o=>{o.directive(t,e)},e),x=e=>{const o=t.getCurrentInstance();if(!o)throw new Error("useRender must be called from inside a setup function");o.render=e},w=[{index:977,randomIndex:188},{index:926,randomIndex:201},{index:851,randomIndex:225},{index:700,randomIndex:255},{index:600,randomIndex:268},{index:500,randomIndex:277},{index:400,randomIndex:288},{index:330,randomIndex:327},{index:300,randomIndex:180},{index:200,randomIndex:178},{index:100,randomIndex:124},{index:98,randomIndex:95},{index:92,randomIndex:90},{index:91,randomIndex:87},{index:88,randomIndex:84},{index:82,randomIndex:79},{index:78,randomIndex:71},{index:72,randomIndex:69},{index:68,randomIndex:66},{index:59,randomIndex:55},{index:48,randomIndex:43},{index:42,randomIndex:37},{index:36,randomIndex:30},{index:33,randomIndex:27},{index:24,randomIndex:20},{index:23,randomIndex:18},{index:21,randomIndex:16},{index:17,randomIndex:14},{index:13,randomIndex:9},{index:7,randomIndex:4},{index:5,randomIndex:3},{index:2,randomIndex:1}];const v={toBase64(e,t=6){if(0===e.length)return"";const o=function(e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",t=6){let o="";for(let n=0;n<t;n++)o+=e[Math.ceil(Math.random()*(e.length-1))];return o}();let n=btoa(encodeURIComponent(e));return 0!==t&&(n=function(e){let t=e;return w.sort(((e,t)=>t.index-e.index)).forEach((o=>{if(o.index<e.length){const n=e[o.randomIndex];t=t.slice(0,o.index)+n+t.slice(o.index)}})),t}(n)),o+n},base64ToStr(e,t=6){let o=e;if(0===e.length)return"";let n=e.slice(t);return 0!==t&&(n=function(e){const t=w.sort(((e,t)=>e.index-t.index));let o=e;return t.forEach((t=>{t.index<e.length&&(o=o.slice(0,t.index)+o.slice(t.index+1))})),o}(n)),o=atob(n),decodeURIComponent(o)}};let h=null,E=!1;const y={debounce(e,t=500){clearTimeout(h),h=setTimeout((()=>{e()}),t)},throttle(e,t=500){E||(E=!0,e(),setTimeout((()=>{E=!1}),t))}},_={hexToRgb(e){let t="";if(/^#?[0-9A-Fa-f]{6}$/.test(e)){t=(e=e.replace("#","")).match(/../g);for(let e=0;e<3;e++)t[e]=parseInt(t[e],16);return t}n.ElMessage.warning("输入错误的hex")},rgbToHex(e,t,o){const r=/^\d{1,3}$/;if(!r.test(e)||!r.test(t)||!r.test(o))return void n.ElMessage.warning("输入错误的rgb颜色值");const a=[e.toString(16),t.toString(16),o.toString(16)];for(let n=0;n<3;n++)1==a[n].length&&(a[n]=`0${a[n]}`);return`#${a.join("")}`},getDarkColor(e,t){if(!/^#?[0-9A-Fa-f]{6}$/.test(e))return void n.ElMessage.warning("输入错误的hex颜色值");const o=this.hexToRgb(e);for(let n=0;n<3;n++)o[n]=Math.round(20.5*t+o[n]*(1-t));return this.rgbToHex(o[0],o[1],o[2])},getLightColor(e,t){if(!/^#?[0-9A-Fa-f]{6}$/.test(e))return void n.ElMessage.warning("输入错误的hex颜色值");const o=this.hexToRgb(e);for(let n=0;n<3;n++)o[n]=Math.round(255*t+o[n]*(1-t));return this.rgbToHex(o[0],o[1],o[2])}},b=(e,t,...o)=>{console.warn(`[Fast-Warn-${e}]`,t,o)},I=(e,t,...o)=>{console.error(`[Fast-Error-${e}]`,t,o)},$={UUID:/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,Mobile:/^(?:(?:\+|00)86)?1\d{10}$/,Phone:/^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$/,Email:/^[a-zA-Z0-9_-]+@([a-zA-Z0-9]+\.)+(com|cn|net|org)$/,IdCard:/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$)/,External:/^(https?:|mailto:|tel:|ftp:)/,Url:/^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/,CarNumber:/^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新军使领]{1}[A-HJ-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/,NewEnergyCarNumber:/^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新军使领]{1}[A-HJ-Z]{1}(([0-9]{5}[DF]$)|([ABCDE][A-HJ-NP-Z0-9][0-9]{3}[0-9挂学警港澳]{1}$)|([FGHJK][A-HJ-NP-Z0-9][0-9]{3}[0-9挂学警港澳]{1}$))/,PostCode:/^[1-9]\d{5}$/,Ipv4:/^([01]?\d{1,2}|2[0-4]\d|25[0-5])\.([01]?\d{1,2}|2[0-4]\d|25[0-5])\.([01]?\d{1,2}|2[0-4]\d|25[0-5])\.([01]?\d{1,2}|2[0-4]\d|25[0-5])$/,Passport:/^[EeGg]\d{8}$/,HKMacauPass:/^[HMhm]\d{8}$/,Account:/^[a-zA-Z][a-zA-Z\d]{5,19}$/,Password:/^[A-Za-z0-9]{6,18}$/,StrongPassword:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_])[A-Za-z\d\W_]{8,20}$/,Chinese:/^[\u4E00-\u9FA5]+$/,English:/^[a-zA-Z]+$/},C="__DEVICE_ID",S=e=>e&&$.UUID.test(e)?(D.set(C,e),window.deviceId=e,e):(e=D.get(C))&&$.UUID.test(e)?(window.deviceId=e,e):(e=O.generateUUID(),D.set(C,e),window.deviceId=e,e),P=e=>{if(!e)return;if(e instanceof r.AxiosError)return!1;const o={InternalError:"Javascript引擎内部错误",ReferenceError:"未找到对象",TypeError:"使用了错误的类型或对象",RangeError:"使用内置对象时,参数超范围",SyntaxError:"语法错误",EvalError:"错误的使用了Eval",URIError:"URI错误",AggregateError:"未知的多个错误",TimeoutError:"操作超时",NetworkError:"网络错误",OutOfMemoryError:"内存溢出"};if("cancel"===e)b("Cancel","操作已取消");else{const r=o[e.name]||"未知错误";I("Handler",e),t.nextTick((()=>{n.ElNotification({title:"系统错误",message:r,duration:3e3,position:"top-right"})}))}},T={validate:e=>new Promise(((t,o)=>{e.value.validate(((e,n)=>{e?t(e):(n&&b("formUtil",n),o(e))}))})),validateScrollToField:e=>new Promise(((t,o)=>{e.value.validate(((n,r)=>{n?t(n):(e.value.scrollToField(Object.keys(r)),r&&b("formUtil",r),o(n))}))})),mobile(e,t,o){t?$.Mobile.test(t)?o():o(new Error("请输入正确的手机号码")):o(new Error("请输入手机号码"))},phone(e,t,o){t?$.Phone.test(t)?o():o(new Error("请输入正确的电话号码")):o()},email(e,t,o){t?$.Email.test(t)?o():o(new Error("请输入正确的邮箱地址")):o()},idCard(e,t,o){$.IdCard.test(t)||!t?o():o(new Error("请输入正确的身份证号码"))},carNumber(e,t,o){let n=!1;7===(null==t?void 0:t.length)?n=$.CarNumber.test(t):8===(null==t?void 0:t.length)&&(n=$.NewEnergyCarNumber.test(t)),n?o():o(new Error("请输入正确的车牌号码"))},editorRequired:(e,t,o)=>"<p><br></p>"==t?o(new Error("内容不能为空")):o(),external(e,t,o){$.External.test(t)?o():o(new Error("请输入正确的外部链接"))},url(e,t,o){$.Url.test(t)?o():o(new Error("请输入有效的Url"))},postCode(e,t,o){$.PostCode.test(t)?o():o(new Error("请输入有效的邮政编码"))},account(e,t,o){$.Account.test(t)?o():o(new Error("请输入有效的账号(6-20位字母或数字,必须以字母开头,不能全为数字)"))},password(e,t,o){$.Password.test(t)?o():o(new Error("请输入有效的密码(只包含字母和数字,长度为6到18位)"))},strongPassword(e,t,o){$.StrongPassword.test(t)?o():o(new Error("请输入有效的密码(8到20位,包含大小写字母、数字及特殊字符)"))},chinese(e,t,o){$.Chinese.test(t)?o():o(new Error("请输入有效的中文字符"))},english(e,t,o){$.English.test(t)?o():o(new Error("请输入有效的英文字符"))},inputRequired:(e,t="blur")=>({required:!0,message:e,trigger:t}),selectRequired:(e,t="change")=>({required:!0,message:e,trigger:t})},A="fast__",N="__Expire",D={set(e,t,o,n){try{if(n??(n=c.storageCrypto),o){if(isNaN(o)||o<1)throw new Error("有效期应为一个有效数值");const t={time:Date.now(),expire:o},n=JSON.stringify(t);window.localStorage.setItem(`${A}${e}${N}`,n)}let r=JSON.stringify(t);n&&(r=v.toBase64(r)),window.localStorage.setItem(`${A}${e}`,r)}catch(r){I("Local",r)}},get(e,t){try{t??(t=c.storageCrypto);let o=window.localStorage.getItem(`${A}${e}`);if(o){t&&(o=v.base64ToStr(o));const n=window.localStorage.getItem(`${A}${e}${N}`);if(n){const t=JSON.parse(n);if(Date.now()>t.time+60*t.expire*1e3)return window.localStorage.removeItem(`${A}${e}`),window.localStorage.removeItem(`${A}${e}${N}`),null}try{return JSON.parse(o)}catch{return o}}return null}catch(o){I("Local",o)}},remove(e){try{window.localStorage.removeItem(`${A}${e}`),window.localStorage.removeItem(`${A}${e}${N}`)}catch(t){I("Local",t)}},removeByPrefix(e){try{for(const t in window.localStorage)-1!==t.indexOf(`${A}${e}`)&&window.localStorage.removeItem(t)}catch(t){I("Local",t)}},clear(){try{window.localStorage.clear()}catch(e){I("Local",e)}}},k={set(e,t,o,n){try{if(n??(n=c.storageCrypto),o){if(isNaN(o)||o<1)throw new Error("有效期应为一个有效数值");const t={time:Date.now(),expire:o},n=JSON.stringify(t);window.sessionStorage.setItem(`${A}${e}${N}`,n)}let r=JSON.stringify(t);n&&(r=v.toBase64(r)),window.sessionStorage.setItem(`${A}${e}`,r)}catch(r){I("Session",r)}},get(e,t){try{t??(t=c.storageCrypto);let o=window.sessionStorage.getItem(`${A}${e}`);if(o){t&&(o=v.base64ToStr(o));const n=window.sessionStorage.getItem(`${A}${e}${N}`);if(n){const t=JSON.parse(n);if(Date.now()>t.time+60*t.expire*1e3)return window.sessionStorage.removeItem(`${A}${e}`),window.sessionStorage.removeItem(`${A}${e}${N}`),null}try{return JSON.parse(o)}catch{return o}}return null}catch(o){I("Session",o)}},remove(e){try{window.sessionStorage.removeItem(`${A}${e}`),window.sessionStorage.removeItem(`${A}${e}${N}`)}catch(t){I("Session",t)}},removeByPrefix(e){try{for(const t in window.sessionStorage)-1!==t.indexOf(`${A}${e}`)&&window.sessionStorage.removeItem(t)}catch(t){I("Session",t)}},clear(){try{window.sessionStorage.clear()}catch(e){I("Session",e)}}},O={getGreet(){const e=(new Date).getHours();let t="";return t=e<5?"夜深了,注意身体哦!":e<9?"早上好!欢迎回来!":e<12?"上午好!欢迎回来!":e<14?"中午好!欢迎回来!":e<18?"下午好!欢迎回来!":e<24?"晚上好!欢迎回来!":"您好!欢迎回来!",t},objectToQueryString(e){let t="";for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(""!==t&&(t+="&"),t+=`${encodeURIComponent(o)}=${encodeURIComponent(e[o])}`);return t},getUrlParams(e){const t=/[?&][^=?&]+=[^?&]+/g,o={};let n;for(;null!==(n=t.exec(e));){const[e,t]=n[0].substring(1).split("=");o[e]=decodeURIComponent(t)}return o},isJson:e=>!!o.isString(e)&&(e=e.replace(/\s/g,"").replace(/\n|\r/,""),/^\{(.*?)\}$/.test(e)?/"(.*?)":(.*?)/g.test(e):!!/^\[(.*?)\]$/.test(e)&&e.replace(/^\[/,"").replace(/\]$/,"").replace(/},{/g,"}\n{").split(/\n/).map((e=>O.isJson(e))).reduce(((e,t)=>!!t))),generateRandomString(e){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let o="";for(let n=0;n<e;n++){const e=Math.floor(62*Math.random());o+=t.charAt(e)}return o},generateUUID(){let e="";for(let t=0;t<32;t++){const o=16*Math.random()|0;8!==t&&12!==t&&16!==t&&20!==t||(e+="-"),e+=(12===t?4:16===t?3&o|8:o).toString(16)}return e},async copy(e){if((null==navigator?void 0:navigator.clipboard)&&window.isSecureContext)await navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,t.style.position="absolute",t.style.opacity="0",t.style.left="-999999px",t.style.top="-999999px",document.body.appendChild(t),t.focus(),t.select(),document.execCommand("copy"),t.remove()}}},U={show:()=>{if(!window.loading){const e=document.body,t=document.createElement("div");t.className="__fa-loading",t.innerHTML='\n<div class="__fa-loading__box">\n\t<div class="__fa-loading__box-warp">\n\t\t\t<div class="__fa-loading__box-warp__item"></div>\n\t</div>\n</div>\n',e.insertBefore(t,e.childNodes[0]),window.loading=!0}},hide:()=>{window.loading&&t.nextTick((()=>{setTimeout((()=>{var e;const t=document.querySelector(".__fa-loading__box");t&&(null==(e=t.parentNode)||e.removeChild(t)),window.loading=!1}),500)}))}},M={show:(e=0)=>{if(!window.overlay){const t=document.body,o=document.createElement("div");o.className="__fa-overlay",o.style.backgroundColor=`rgba(0, 0, 0, ${e})`,t.insertBefore(o,t.childNodes[0]),window.overlay=!0}},hide:()=>{window.overlay&&t.nextTick((()=>{var e;const t=document.querySelector(".__fa-overlay");t&&(null==(e=t.parentNode)||e.removeChild(t)),window.overlay=!1}))}};n.ElDialog.props={...n.ElDialog.props,draggable:{type:Boolean,default:!0}},n.ElInput.props={...n.ElInput.props,showWordLimit:{type:Boolean,default:!0}};const L=(e,t,o)=>{if((null==(t=t??{})?void 0:t.title)||(t.title="温馨提示"),null==(null==t?void 0:t.draggable)&&(t.draggable=!0),(null==t?void 0:t.cancelButtonText)||(t.cancelButtonText="取消"),(null==t?void 0:t.confirmButtonText)||(t.confirmButtonText="确定"),null==(null==t?void 0:t.closeOnClickModal)&&(t.closeOnClickModal=!1),null==(null==t?void 0:t.closeOnPressEscape)&&(t.closeOnPressEscape=!1),null!=(null==t?void 0:t.beforeClose)){const e=t.beforeClose,o=(null==t?void 0:t.confirmButtonText)??"确定",n=(null==t?void 0:t.showCancelButton)??!1;t.beforeClose=(t,r,a)=>{if("confirm"===t){M.show(0),r.confirmButtonLoading=!0,r.showCancelButton=!1,r.confirmButtonText="加载中...";const i=()=>{r.confirmButtonLoading=!1,r.showCancelButton=n,r.confirmButtonText=o,M.hide()},s=()=>{i(),a()};m(e,t,r,s).then((()=>{s()})).catch((e=>{I("MessageBox",e),i(),P(e)}))}else a()}}switch(o){case"alert":break;case"confirm":case"prompt":null==(null==t?void 0:t.showCancelButton)&&(t.showCancelButton=!0)}return n.ElMessageBox(Object.assign({message:e},t,{boxType:o}))};n.ElMessageBox.alert=(e,t)=>L(e,t,"alert"),n.ElMessageBox.prompt=(e,t)=>L(e,t,"prompt"),n.ElMessageBox.confirm=(e,t)=>L(e,t,"confirm");function B(e){return"function"==typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!t.isVNode(e)}const F={name:{type:String,required:!0},size:[Number,String],color:String},z=g(t.defineComponent({name:"FaIcon",props:F,setup(e,{attrs:r}){const a=t.reactive({isUrl:t.computed((()=>$.External.test(e.name))),style:t.computed((()=>{const t={};return e.size&&(o.isNumber(e.size)?t.size=`${e.size}px`:t.size=e.size),e.color&&(t.color=e.color),a.isUrl&&(t.mask=`url(${e.name}) no-repeat 50% 50%`,t["-webkit-mask"]=`url(${e.name}) no-repeat 50% 50%`),t}))});x((()=>{let o,i;return 0===e.name.indexOf("el-icon-")?t.createVNode(n.ElIcon,t.mergeProps(r,e,{class:"fa-icon"}),B(o=t.h(t.resolveComponent(e.name)))?o:{default:()=>[o]}):0===e.name.indexOf("fa-icon")?t.createVNode(n.ElIcon,t.mergeProps(r,e,{class:"fa-icon"}),B(i=t.h(t.resolveComponent(e.name)))?i:{default:()=>[i]}):a.isUrl?t.createVNode("div",t.mergeProps(r,{class:"el-icon fa-icon url-icon",style:a.style}),null):t.createVNode("i",t.mergeProps(r,{class:[e.name,"el-icon fa-icon"],style:a.style}),null)}))}})),j=[z],H=f({mounted(e,t){e.copyData=t.value,e.__handleClick__=async()=>{if(e.copyData)try{await O.copy(String(e.copyData)),n.ElMessage({type:"success",message:"复制成功"})}catch(t){n.ElMessage({type:"error",message:"复制失败"}),I("CopyDirective","复制失败",t)}},e.addEventListener("click",e.__handleClick__)},updated(e,t){e.copyData=t.value},beforeUnmount(e){e.removeEventListener("click",e.__handleClick__)}},"copy"),R=f({created(e,t,o){e.__debounce_originClick__=o.props.onClick,o.props.onClick=()=>{e.__debounce_timer__&&clearInterval(e.__debounce_timer__),e.__debounce_timer__=setTimeout((()=>{e.__debounce_originClick__()}),500)}}},"debounce"),Z=f({mounted(e){e.style.cursor="move",e.style.position="absolute",e.onmousedown=t=>{const o=t.pageX-e.offsetLeft,n=t.pageY-e.offsetTop;document.onmousemove=t=>{let r=t.pageX-o,a=t.pageY-n;const i=e.parentNode.offsetWidth-e.offsetWidth,s=e.parentNode.offsetHeight-e.offsetHeight;r<0?r=0:r>i&&(r=i),a<0?a=0:a>s&&(a=s),e.style.left=`${r}px`,e.style.top=`${a}px`},document.onmouseup=()=>{document.onmousemove=document.onmouseup=null}}}},"draggable"),J=f({mounted(e,o){if(e.copyData=o.value,!e.copyData)return;const r=t.h(n.ElIcon,{class:"fa-icon-CopyDocument",title:"复制",onClick:async()=>{try{await O.copy(String(e.copyData)),n.ElMessage({type:"success",message:"复制成功"})}catch(t){n.ElMessage({type:"error",message:"复制失败"}),I("CopyDirective","复制失败",t)}}},{default:()=>t.h(a.CopyDocument)}),i=document.createElement("div");t.render(r,i),e.__iconElement__=i.firstChild,e.parentElement.insertBefore(i.firstChild,e)},updated(e,t){e.copyData=t.value},beforeUnmount(e){e.__iconElement__&&e.parentElement.removeChild(e.__iconElement__)}},"iconCopy"),V=f({mounted(e,t){if("function"!=typeof t.value)throw"callback must be a function";let o=null;const n=e=>{e.button&&"click"===e.type&&0!==e.button||null===o&&(o=setTimeout((()=>{(e=>{t.value(e)})(e)}),1e3))},r=()=>{null!==o&&(clearTimeout(o),o=null)};e.addEventListener("mousedown",n),e.addEventListener("touchstart",n),e.addEventListener("click",r),e.addEventListener("mouseout",r),e.addEventListener("touchend",r),e.addEventListener("touchcancel",r)}},"longpress"),q=f({mounted(e,t){if("function"!=typeof t.value)throw"callback must be a function";let o=null;e.__handleClick__=()=>{o&&clearTimeout(o),e.disabled||(e.disabled=!0,t.value(),o=setTimeout((()=>{e.disabled=!1}),1e3))},e.addEventListener("click",e.__handleClick__)},beforeUnmount(e){e.removeEventListener("click",e.__handleClick__)}},"throttle"),W=[H,R,Z,J,V,q],X=Symbol("INSTALLED_KEY"),K={version:"1.4.18",install:(e,t)=>{e[X]||(e[X]=!0,e.config.errorHandler=P,S(),t&&u(t),(e=>{for(const[t,o]of Object.entries(l))e.component(`el-icon-${t}`,o);e.use(n)})(e),(e=>{e.use(i),j.forEach((t=>e.use(t))),W.forEach((t=>e.use(t)))})(e))}},Y=K.install,G=K.version;return e.CACHE_EXPIRE_SUFFIX=N,e.CACHE_PREFIX=A,e.DEVICE_ID_KEY=C,e.FaIcon=z,e.FaMimeType={PDF:"application/pdf",Text:"text/plain",Word:"application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document",Excel:"application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,text/csv",Powerpoint:"application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation",ZIP:"application/zip,application/x-zip-compressed",Image:"image/jpeg,image/png,image/gif",Video:"video/mp4,video/mpeg,video/quicktime",Audio:"audio/mpeg,audio/wav",Html:"text/html",Css:"text/css",JavaScript:"application/javascript,text/javascript",Json:"application/json",XML:"application/xml,text/xml"},e.INSTALLED_KEY=X,e.Local=D,e.RegExps=$,e.Session=k,e.base64Util=v,e.clickUtil=y,e.colorUtil=_,e.consoleDebug=(e,t,...o)=>{console.debug(`[Fast-Debug-${e}]`,t,o)},e.consoleError=I,e.consoleLog=(e,t,...o)=>{},e.consoleWarn=b,e.default=K,e.errorHandler=P,e.execAsyncFunction=m,e.fastOptions=c,e.formUtil=T,e.install=Y,e.makeIdentity=S,e.makeSlots=()=>Object,e.setFastOptions=u,e.stringUtil=O,e.useLoading=U,e.useOverlay=M,e.useProps=(e,n,r,a)=>e?t.computed((()=>{const t=n?o.omit(n,r??[]):{};return{...o.pick(e,Object.keys(t)),...a??{}}})):t.computed((()=>({}))),e.useRender=x,e.vCopy=H,e.vDebounce=R,e.vDraggable=Z,e.vIconCopy=J,e.vLongpress=V,e.vThrottle=q,e.version=G,e.withDefineType=e=>e,e.withInstall=g,e.withInstallDirective=f,e.withNoopInstall=e=>(e.install=p,e),Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),e}({},Vue,LodashES,ElementPlus,axios,ElementPlusIconsVue,FastElementPlusIconsVue);
2
- //# sourceMappingURL=index.iife.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.iife.js","sources":["../../packages/settings/index.ts","../../packages/utils/vue/func.ts","../../packages/utils/vue/install.ts","../../packages/utils/vue/useRender.ts","../../packages/utils/base64.ts","../../packages/utils/click.ts","../../packages/utils/color.ts","../../packages/utils/console.ts","../../packages/constants/regex.ts","../../packages/utils/deviceId.ts","../../packages/utils/errorHandler.ts","../../packages/utils/form.ts","../../packages/utils/storage.ts","../../packages/utils/string.ts","../../packages/hooks/useLoading/index.ts","../../packages/hooks/useOverlay/index.ts","../../packages/fast-element-plus/element-plus.ts","../../packages/components/icon/src/icon.tsx","../../packages/components/icon/index.ts","../../packages/fast-element-plus/component.ts","../../packages/directives/clickCopy/index.ts","../../packages/directives/clickDebounce/index.ts","../../packages/directives/clickDraggable/index.ts","../../packages/directives/clickIconCopy/index.ts","../../packages/directives/clickLongpress/index.ts","../../packages/directives/clickThrottle/index.ts","../../packages/fast-element-plus/directive.ts","../../packages/fast-element-plus/make-installer.ts","../../packages/index.ts","../../packages/fast-element-plus/version.ts","../../packages/fast-element-plus/fast-element-plus.ts","../../packages/constants/mime.ts","../../packages/utils/vue/slots.ts","../../packages/utils/vue/props.ts","../../packages/utils/vue/with.ts"],"sourcesContent":["import { reactive } from \"vue\";\n\n/**\n * 日期范围\n */\nexport type DataRange = \"Past1D\" | \"Past3D\" | \"Past1W\" | \"Past1M\" | \"Past3M\" | \"Past6M\" | \"Past1Y\";\n\n/**\n * Fast 配置选项\n */\nexport type FastOptions = {\n\t/**\n\t * 警告页面数量\n\t * @default 15\n\t */\n\twarnPageNum?: number;\n\t/**\n\t * 存储加密\n\t * @description 请在初始化的时候确认,后续不可再修改,否则所有数据都将失效\n\t * @default true\n\t */\n\tstorageCrypto?: boolean;\n\t/**\n\t * Axios 配置\n\t */\n\taxios?: {\n\t\t/**\n\t\t * 请求域名或者Base路径\n\t\t */\n\t\tbaseUrl?: string;\n\t\t/**\n\t\t * 超时时间,单位毫秒\n\t\t * @default 60000\n\t\t */\n\t\ttimeout?: number;\n\t\t/**\n\t\t * 请求加密解密\n\t\t * @default true\n\t\t */\n\t\trequestCipher?: boolean;\n\t};\n\t/**\n\t * 表格配置\n\t */\n\ttable?: {\n\t\t/**\n\t\t * 显示搜索Form\n\t\t * @default true\n\t\t */\n\t\tshowSearch?: boolean;\n\t\t/**\n\t\t * 隐藏图片\n\t\t * @default true\n\t\t */\n\t\thideImage?: boolean;\n\t\t/**\n\t\t * 时间搜索范围\n\t\t */\n\t\tdataSearchRange?: DataRange;\n\t};\n};\n\n/**\n * 全局 Fast 配置选项\n */\nexport const fastOptions = reactive<FastOptions>({\n\twarnPageNum: 15,\n\tstorageCrypto: true,\n\taxios: {\n\t\tbaseUrl: undefined,\n\t\ttimeout: 60000,\n\t\trequestCipher: true,\n\t},\n\ttable: {\n\t\tshowSearch: true,\n\t\thideImage: true,\n\t\tdataSearchRange: \"Past3D\",\n\t},\n});\n\nconst merge = (target: FastOptions, source: FastOptions): void => {\n\tfor (const key in source) {\n\t\tconst value = source[key];\n\t\tif (value !== undefined && value != null) {\n\t\t\tif (typeof value === \"object\") {\n\t\t\t\ttarget[key] = merge(target[key], source[key]);\n\t\t\t} else {\n\t\t\t\ttarget[key] = source[key];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * 设置 全局 Fast 配置选项\n */\nexport const setFastOptions = (options: FastOptions): void => {\n\tmerge(fastOptions, options);\n};\n","/**\n * 执行异步方法\n * @param fn 要执行的异步方法\n * @param args 参数\n */\n\nimport { consoleError } from \"@fast-element-plus/utils\";\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nconst execAsyncFunction = <T = void>(fn: Function, ...args: any[]): Promise<T> => {\n\tif (!fn) return Promise.resolve(undefined);\n\tif (fn.constructor.name !== \"AsyncFunction\") {\n\t\tconsoleError(\"execAsyncFunction\", \"必须为 Promise 异步方法\");\n\t\tthrow new Error(\"必须为 Promise 异步方法\");\n\t}\n\treturn fn(...args)\n\t\t.then((res) => res)\n\t\t.catch((error) => {\n\t\t\tconsoleError(\"execAsyncFunction\", error);\n\t\t\treturn Promise.reject(error);\n\t\t});\n};\n\nexport { execAsyncFunction };\n","import type { App, Directive, Plugin } from \"vue\";\n\nexport type TSXWithInstall<T> = T & Plugin;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst NOOP = (): void => {};\n\nexport const withInstall = <T, E extends Record<string, any>>(main: T, extra?: E): TSXWithInstall<T> & E => {\n\t(main as TSXWithInstall<T>).install = (app): void => {\n\t\tfor (const comp of [main, ...Object.values(extra ?? {})]) {\n\t\t\tapp.component(comp.name, comp);\n\t\t}\n\t};\n\n\tif (extra) {\n\t\tfor (const [key, comp] of Object.entries(extra)) {\n\t\t\t(main as any)[key] = comp;\n\t\t}\n\t}\n\treturn main as TSXWithInstall<T> & E;\n};\n\nexport const withNoopInstall = <T>(component: T): TSXWithInstall<T> => {\n\t(component as TSXWithInstall<T>).install = NOOP;\n\n\treturn component as TSXWithInstall<T>;\n};\n\nexport const withInstallDirective = <T extends Directive>(directive: T, name: string): TSXWithInstall<T> => {\n\t(directive as TSXWithInstall<T>).install = (app: App): void => {\n\t\tapp.directive(name, directive);\n\t};\n\n\treturn directive as TSXWithInstall<T>;\n};\n","import type { VNode } from \"vue\";\nimport { getCurrentInstance } from \"vue\";\n\n/**\n * 使用渲染\n * @description 为了解决使用 TSX 语法返回渲染函数,状态不会出现在 vue.js devtools 中\n */\nconst useRender = (render: () => VNode): void => {\n\tconst vm = getCurrentInstance() as any;\n\tif (!vm) {\n\t\tthrow new Error(\"useRender must be called from inside a setup function\");\n\t}\n\tvm.render = render;\n};\n\nexport { useRender };\n","/**加密字典 */\nconst base64PwdDic = [\n\t{ index: 977, randomIndex: 188 },\n\t{ index: 926, randomIndex: 201 },\n\t{ index: 851, randomIndex: 225 },\n\t{ index: 700, randomIndex: 255 },\n\t{ index: 600, randomIndex: 268 },\n\t{ index: 500, randomIndex: 277 },\n\t{ index: 400, randomIndex: 288 },\n\t{ index: 330, randomIndex: 327 },\n\t{ index: 300, randomIndex: 180 },\n\t{ index: 200, randomIndex: 178 },\n\t{ index: 100, randomIndex: 124 },\n\t// 100 以内字典\n\t{ index: 98, randomIndex: 95 },\n\t{ index: 92, randomIndex: 90 },\n\t{ index: 91, randomIndex: 87 },\n\t{ index: 88, randomIndex: 84 },\n\t{ index: 82, randomIndex: 79 },\n\t{ index: 78, randomIndex: 71 },\n\t{ index: 72, randomIndex: 69 },\n\t{ index: 68, randomIndex: 66 },\n\t{ index: 59, randomIndex: 55 },\n\t{ index: 48, randomIndex: 43 },\n\t{ index: 42, randomIndex: 37 },\n\t{ index: 36, randomIndex: 30 },\n\t{ index: 33, randomIndex: 27 },\n\t{ index: 24, randomIndex: 20 },\n\t{ index: 23, randomIndex: 18 },\n\t{ index: 21, randomIndex: 16 },\n\t{ index: 17, randomIndex: 14 },\n\t{ index: 13, randomIndex: 9 },\n\t{ index: 7, randomIndex: 4 },\n\t{ index: 5, randomIndex: 3 },\n\t{ index: 2, randomIndex: 1 },\n];\n\n/**随机字符串长度 */\nconst randomPrefixStrLength = 6;\n\n/**随机字符串 */\nconst randomStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n\n/**\n * 在Base64字符串中添加加密字典\n */\nfunction insertRandomStrToBase64Str(base64Str: string): string {\n\tlet strResult = base64Str;\n\tconst items = base64PwdDic.sort((a, b) => {\n\t\treturn b.index - a.index;\n\t});\n\titems.forEach((item) => {\n\t\tif (item.index < base64Str.length) {\n\t\t\tconst randomChar = base64Str[item.randomIndex];\n\t\t\tstrResult = strResult.slice(0, item.index) + randomChar + strResult.slice(item.index);\n\t\t}\n\t});\n\treturn strResult;\n}\n\n/**\n * 删除Base64字符串中的加密字典\n */\nfunction removeBase64StrRandomStr(base64Str: string): string {\n\tconst items = base64PwdDic.sort((a, b) => {\n\t\treturn a.index - b.index;\n\t});\n\tlet strResult = base64Str;\n\titems.forEach((item) => {\n\t\tif (item.index < base64Str.length) {\n\t\t\tstrResult = strResult.slice(0, item.index) + strResult.slice(item.index + 1);\n\t\t}\n\t});\n\treturn strResult;\n}\n\n/**\n * 得到随机字符串\n */\nfunction getRandomStr(str = randomStr, prefixStrLength = randomPrefixStrLength): string {\n\tlet result = \"\";\n\tfor (let i = 0; i < prefixStrLength; i++) {\n\t\tconst randomInt = Math.ceil(Math.random() * (str.length - 1));\n\t\tconst randomChar = str[randomInt];\n\t\tresult += randomChar;\n\t}\n\treturn result;\n}\n\nexport const base64Util = {\n\t/**\n\t * 字符串ToBase64\n\t */\n\ttoBase64(str: string, prefixStrLength = randomPrefixStrLength): string {\n\t\tif (str.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tconst randomPrefixStr = getRandomStr();\n\t\tlet base64 = btoa(encodeURIComponent(str));\n\t\tif (prefixStrLength !== 0) {\n\t\t\tbase64 = insertRandomStrToBase64Str(base64);\n\t\t}\n\t\treturn randomPrefixStr + base64;\n\t},\n\n\t/**\n\t * Base64转字符串\n\t */\n\tbase64ToStr(str: string, prefixStrLength = randomPrefixStrLength): string {\n\t\tlet result = str;\n\t\tif (str.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tlet input = str.slice(prefixStrLength);\n\t\tif (prefixStrLength !== 0) {\n\t\t\tinput = removeBase64StrRandomStr(input);\n\t\t}\n\t\tresult = atob(input);\n\t\treturn decodeURIComponent(result);\n\t},\n};\n","let _debounceTimeout: any = null,\n\t_throttleRunning: any = false;\n\nexport const clickUtil = {\n\t/**\n\t * 防抖\n\t * @param {Function} 执行函数\n\t * @param {Number} delay 延时ms\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n\tdebounce(fn: Function, delay = 500): void {\n\t\tclearTimeout(_debounceTimeout);\n\t\t_debounceTimeout = setTimeout(() => {\n\t\t\tfn();\n\t\t}, delay);\n\t},\n\t/**\n\t * 节流\n\t * @param {Function} 执行函数\n\t * @param {Number} delay 延时ms\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n\tthrottle(fn: Function, delay = 500): void {\n\t\tif (_throttleRunning) {\n\t\t\treturn;\n\t\t}\n\t\t_throttleRunning = true;\n\t\tfn();\n\t\tsetTimeout(() => {\n\t\t\t_throttleRunning = false;\n\t\t}, delay);\n\t},\n};\n","import type { MessageHandler } from \"element-plus\";\nimport { ElMessage } from \"element-plus\";\n\nexport const colorUtil = {\n\t/**\n\t * hex颜色转rgb颜色\n\t * @param str 颜色值字符串\n\t * @returns 返回处理后的颜色值\n\t */\n\thexToRgb(str: any): any {\n\t\tlet hex: any = \"\";\n\t\tconst reg = /^#?[0-9A-Fa-f]{6}$/;\n\t\tif (!reg.test(str)) {\n\t\t\tElMessage.warning(\"输入错误的hex\");\n\t\t\treturn;\n\t\t}\n\t\tstr = str.replace(\"#\", \"\");\n\t\thex = str.match(/../g);\n\t\tfor (let i = 0; i < 3; i++) hex[i] = parseInt(hex[i], 16);\n\t\treturn hex;\n\t},\n\t/**\n\t * rgb颜色转Hex颜色\n\t * @param r 代表红色\n\t * @param g 代表绿色\n\t * @param b 代表蓝色\n\t * @returns 返回处理后的颜色值\n\t */\n\trgbToHex(r: any, g: any, b: any): string | MessageHandler {\n\t\tconst reg = /^\\d{1,3}$/;\n\t\tif (!reg.test(r) || !reg.test(g) || !reg.test(b)) {\n\t\t\tElMessage.warning(\"输入错误的rgb颜色值\");\n\t\t\treturn;\n\t\t}\n\t\tconst hex = [r.toString(16), g.toString(16), b.toString(16)];\n\t\tfor (let i = 0; i < 3; i++) if (hex[i].length == 1) hex[i] = `0${hex[i]}`;\n\t\treturn `#${hex.join(\"\")}`;\n\t},\n\t/**\n\t * 加深颜色值\n\t * @param color 颜色值字符串\n\t * @param level 加深的程度,限0-1之间\n\t * @returns 返回处理后的颜色值\n\t */\n\tgetDarkColor(color: string, level: number): string | MessageHandler {\n\t\tconst reg = /^#?[0-9A-Fa-f]{6}$/;\n\t\tif (!reg.test(color)) {\n\t\t\tElMessage.warning(\"输入错误的hex颜色值\");\n\t\t\treturn;\n\t\t}\n\t\tconst rgb = this.hexToRgb(color);\n\t\tfor (let i = 0; i < 3; i++) rgb[i] = Math.round(20.5 * level + rgb[i] * (1 - level));\n\t\treturn this.rgbToHex(rgb[0], rgb[1], rgb[2]);\n\t},\n\t/**\n\t * 变浅颜色值\n\t * @param color 颜色值字符串\n\t * @param level 加深的程度,限0-1之间\n\t * @returns 返回处理后的颜色值\n\t */\n\tgetLightColor(color: string, level: number): string | MessageHandler {\n\t\tconst reg = /^#?[0-9A-Fa-f]{6}$/;\n\t\tif (!reg.test(color)) {\n\t\t\tElMessage.warning(\"输入错误的hex颜色值\");\n\t\t\treturn;\n\t\t}\n\t\tconst rgb = this.hexToRgb(color);\n\t\tfor (let i = 0; i < 3; i++) rgb[i] = Math.round(255 * level + rgb[i] * (1 - level));\n\t\treturn this.rgbToHex(rgb[0], rgb[1], rgb[2]);\n\t},\n};\n","/**\n * 打印 Log 日志\n * @param name 来源名称\n */\nconst consoleLog = (name: string, message?: any, ...optionalParams: any[]): void => {\n\t// eslint-disable-next-line no-console\n\tconsole.log(`[Fast-Log-${name}]`, message, optionalParams);\n};\n\n/**\n * 打印 Warn 日志\n * @param name 来源名称\n */\nconst consoleWarn = (name: string, message?: any, ...optionalParams: any[]): void => {\n\t// eslint-disable-next-line no-console\n\tconsole.warn(`[Fast-Warn-${name}]`, message, optionalParams);\n};\n\n/**\n * 打印 Error 日志\n * @param name 来源名称\n */\nconst consoleError = (name: string, message?: any, ...optionalParams: any[]): void => {\n\t// eslint-disable-next-line no-console\n\tconsole.error(`[Fast-Error-${name}]`, message, optionalParams);\n};\n\n/**\n * 打印 Debug 日志\n * @param name 来源名称\n */\nconst consoleDebug = (name: string, message?: any, ...optionalParams: any[]): void => {\n\t// eslint-disable-next-line no-console\n\tconsole.debug(`[Fast-Debug-${name}]`, message, optionalParams);\n};\n\nexport { consoleLog, consoleWarn, consoleError, consoleDebug };\n","/**\n * 正则表达式\n */\nexport const RegExps = {\n\t/**\n\t * UUID\n\t */\n\tUUID: /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n\t/**\n\t * 手机号\n\t */\n\tMobile: /^(?:(?:\\+|00)86)?1\\d{10}$/,\n\t/**\n\t * 电话\n\t */\n\tPhone: /^(?:(?:\\d{3}-)?\\d{8}|^(?:\\d{4}-)?\\d{7,8})(?:-\\d+)?$/,\n\t/**\n\t * 邮箱\n\t */\n\tEmail: /^[a-zA-Z0-9_-]+@([a-zA-Z0-9]+\\.)+(com|cn|net|org)$/,\n\t/**\n\t * 身份证\n\t */\n\tIdCard: /(^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{2}[0-9Xx]$)/,\n\t/**\n\t * 外部链接\n\t * 匹配http、https、mailto、tel和ftp开头的链接\n\t */\n\tExternal: /^(https?:|mailto:|tel:|ftp:)/,\n\t/**\n\t * Url\n\t */\n\tUrl: /^(https?|ftp):\\/\\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+\\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\\/($|[a-zA-Z0-9.,?'\\\\+&%$#=~_-]+))*$/,\n\t/**\n\t * 车牌号\n\t */\n\tCarNumber: /^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新军使领]{1}[A-HJ-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/,\n\t/**\n\t * 新能源车牌号\n\t */\n\tNewEnergyCarNumber:\n\t\t/^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新军使领]{1}[A-HJ-Z]{1}(([0-9]{5}[DF]$)|([ABCDE][A-HJ-NP-Z0-9][0-9]{3}[0-9挂学警港澳]{1}$)|([FGHJK][A-HJ-NP-Z0-9][0-9]{3}[0-9挂学警港澳]{1}$))/,\n\t/**\n\t * 邮政编码\n\t */\n\tPostCode: /^[1-9]\\d{5}$/,\n\t/**\n\t * ipv4\n\t */\n\tIpv4: /^([01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.([01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.([01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.([01]?\\d{1,2}|2[0-4]\\d|25[0-5])$/,\n\t/**\n\t * 护照\n\t */\n\tPassport: /^[EeGg]\\d{8}$/,\n\t/**\n\t * 港澳通行证\n\t */\n\tHKMacauPass: /^[HMhm]\\d{8}$/,\n\t/**\n\t * 账号(6-20位字母或数字,必须以字母开头,不能全为数字)\n\t */\n\tAccount: /^[a-zA-Z][a-zA-Z\\d]{5,19}$/,\n\t/**\n\t * 弱密码(只包含字母和数字,长度为6到18位)\n\t */\n\tPassword: /^[A-Za-z0-9]{6,18}$/,\n\t/**\n\t * 强密码(8到20位,包含大小写字母、数字及特殊字符)\n\t */\n\tStrongPassword: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[\\W_])[A-Za-z\\d\\W_]{8,20}$/,\n\t/**\n\t * 中文字符\n\t */\n\tChinese: /^[\\u4E00-\\u9FA5]+$/,\n\t/**\n\t * 英文字符\n\t */\n\tEnglish: /^[a-zA-Z]+$/,\n};\n","import { RegExps } from \"@fast-element-plus/constants\";\nimport { Local, stringUtil } from \"@fast-element-plus/utils\";\n\n/**\n * 设备Id Key\n */\nexport const DEVICE_ID_KEY = \"__DEVICE_ID\";\n\n/**\n * 生成设备唯一标识(不安全)\n * @description 如果存在,则返回已经生成的唯一标识\n */\nexport const makeIdentity = (deviceId?: string): string => {\n\tif (deviceId && RegExps.UUID.test(deviceId)) {\n\t\tLocal.set(DEVICE_ID_KEY, deviceId);\n\t\twindow.deviceId = deviceId;\n\t\treturn deviceId;\n\t}\n\t// 生成浏览器唯一 UUID\n\tdeviceId = Local.get(DEVICE_ID_KEY);\n\tif (deviceId && RegExps.UUID.test(deviceId)) {\n\t\twindow.deviceId = deviceId;\n\t\treturn deviceId;\n\t}\n\tdeviceId = stringUtil.generateUUID();\n\tLocal.set(DEVICE_ID_KEY, deviceId);\n\twindow.deviceId = deviceId;\n\treturn deviceId;\n};\n","import { nextTick } from \"vue\";\nimport { consoleError, consoleWarn } from \"@fast-element-plus/utils\";\nimport { AxiosError } from \"axios\";\nimport { ElNotification } from \"element-plus\";\n\n/**\n * 全局异常捕获\n */\nexport const errorHandler = (error: any): boolean => {\n\tif (!error) return;\n\t// 过滤 Axios 错误\n\tif (error instanceof AxiosError) {\n\t\treturn false;\n\t}\n\tconst errorMap: any = {\n\t\tInternalError: \"Javascript引擎内部错误\",\n\t\tReferenceError: \"未找到对象\",\n\t\tTypeError: \"使用了错误的类型或对象\",\n\t\tRangeError: \"使用内置对象时,参数超范围\",\n\t\tSyntaxError: \"语法错误\",\n\t\tEvalError: \"错误的使用了Eval\",\n\t\tURIError: \"URI错误\",\n\t\tAggregateError: \"未知的多个错误\",\n\t\tTimeoutError: \"操作超时\",\n\t\tNetworkError: \"网络错误\",\n\t\tOutOfMemoryError: \"内存溢出\",\n\t};\n\tif (error === \"cancel\") {\n\t\tconsoleWarn(\"Cancel\", \"操作已取消\");\n\t} else {\n\t\tconst errorName = errorMap[error.name] || \"未知错误\";\n\t\tconsoleError(\"Handler\", error);\n\t\tnextTick(() => {\n\t\t\tElNotification({\n\t\t\t\ttitle: \"系统错误\",\n\t\t\t\tmessage: errorName,\n\t\t\t\tduration: 3000,\n\t\t\t\tposition: \"top-right\",\n\t\t\t});\n\t\t});\n\t}\n};\n","import type { Ref } from \"vue\";\nimport { RegExps } from \"@fast-element-plus/constants\";\nimport { consoleWarn } from \"@fast-element-plus/utils\";\nimport type { ElForm, FormItemRule, FormValidationResult } from \"element-plus\";\n\nexport const formUtil = {\n\t/**\n\t * ElForm 表单验证\n\t * @param elFormRef ElForm 组件ref\n\t */\n\tvalidate(elFormRef: Ref<InstanceType<typeof ElForm>>): FormValidationResult {\n\t\treturn new Promise<boolean>((resolve, reject) => {\n\t\t\telFormRef.value.validate((isValid: boolean, invalidFields?) => {\n\t\t\t\tif (isValid) {\n\t\t\t\t\tresolve(isValid);\n\t\t\t\t} else {\n\t\t\t\t\tif (invalidFields) {\n\t\t\t\t\t\tconsoleWarn(\"formUtil\", invalidFields);\n\t\t\t\t\t}\n\t\t\t\t\treject(isValid);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t},\n\t/**\n\t * ElForm 表单验证,带滚动\n\t * @param elFormRef ElForm 组件ref\n\t */\n\tvalidateScrollToField(elFormRef: Ref<InstanceType<typeof ElForm>>): FormValidationResult {\n\t\treturn new Promise<boolean>((resolve, reject) => {\n\t\t\telFormRef.value.validate((isValid: boolean, invalidFields?) => {\n\t\t\t\tif (isValid) {\n\t\t\t\t\tresolve(isValid);\n\t\t\t\t} else {\n\t\t\t\t\telFormRef.value.scrollToField(Object.keys(invalidFields));\n\t\t\t\t\tif (invalidFields) {\n\t\t\t\t\t\tconsoleWarn(\"formUtil\", invalidFields);\n\t\t\t\t\t}\n\t\t\t\t\treject(isValid);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t},\n\t/**\n\t * 手机号\n\t */\n\tmobile(rule: any, value: string, callback: any): void {\n\t\tif (!value) {\n\t\t\tcallback(new Error(\"请输入手机号码\"));\n\t\t} else if (RegExps.Mobile.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入正确的手机号码\"));\n\t\t}\n\t},\n\t/**\n\t * 电话号码\n\t */\n\tphone(rule: any, value: string, callback: any): void {\n\t\tif (!value) {\n\t\t\tcallback();\n\t\t} else if (RegExps.Phone.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入正确的电话号码\"));\n\t\t}\n\t},\n\t/**\n\t * 邮箱\n\t */\n\temail(rule: any, value: string, callback: any): void {\n\t\tif (!value) {\n\t\t\tcallback();\n\t\t} else if (RegExps.Email.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入正确的邮箱地址\"));\n\t\t}\n\t},\n\t/**\n\t * 身份证\n\t */\n\tidCard(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.IdCard.test(value) || !value) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入正确的身份证号码\"));\n\t\t}\n\t},\n\t/**\n\t * 车牌号\n\t */\n\tcarNumber(rule: any, value: string, callback: any): void {\n\t\tlet success = false;\n\t\tif (value?.length === 7) {\n\t\t\tsuccess = RegExps.CarNumber.test(value);\n\t\t} else if (value?.length === 8) {\n\t\t\tsuccess = RegExps.NewEnergyCarNumber.test(value);\n\t\t}\n\t\tif (success) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入正确的车牌号码\"));\n\t\t}\n\t},\n\t/**\n\t * editor 必填\n\t */\n\teditorRequired(rule: any, value: string, callback: any): void {\n\t\tif (value == \"<p><br></p>\") {\n\t\t\treturn callback(new Error(\"内容不能为空\"));\n\t\t}\n\t\treturn callback();\n\t},\n\t/**\n\t * 外部链接\n\t */\n\texternal(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.External.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入正确的外部链接\"));\n\t\t}\n\t},\n\t/**\n\t * 有效的URL\n\t */\n\turl(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.Url.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入有效的Url\"));\n\t\t}\n\t},\n\t/**\n\t * 邮政编码\n\t */\n\tpostCode(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.PostCode.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入有效的邮政编码\"));\n\t\t}\n\t},\n\t/**\n\t * 账号(6-20位字母或数字,必须以字母开头,不能全为数字)\n\t */\n\taccount(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.Account.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入有效的账号(6-20位字母或数字,必须以字母开头,不能全为数字)\"));\n\t\t}\n\t},\n\t/**\n\t * 弱密码(只包含字母和数字,长度为6到18位)\n\t */\n\tpassword(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.Password.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入有效的密码(只包含字母和数字,长度为6到18位)\"));\n\t\t}\n\t},\n\t/**\n\t * 强密码(8到20位,包含大小写字母、数字及特殊字符)\n\t */\n\tstrongPassword(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.StrongPassword.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入有效的密码(8到20位,包含大小写字母、数字及特殊字符)\"));\n\t\t}\n\t},\n\t/**\n\t * 中文字符\n\t */\n\tchinese(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.Chinese.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入有效的中文字符\"));\n\t\t}\n\t},\n\t/**\n\t * 英文字符\n\t */\n\tenglish(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.English.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入有效的英文字符\"));\n\t\t}\n\t},\n\t/**\n\t * 文本框必填\n\t */\n\tinputRequired(message: string, trigger = \"blur\"): FormItemRule {\n\t\treturn {\n\t\t\trequired: true,\n\t\t\tmessage,\n\t\t\ttrigger,\n\t\t};\n\t},\n\t/**\n\t * 选择器必选\n\t */\n\tselectRequired(message: string, trigger = \"change\"): FormItemRule {\n\t\treturn {\n\t\t\trequired: true,\n\t\t\tmessage,\n\t\t\ttrigger,\n\t\t};\n\t},\n};\n","/**\n * 本地缓存\n */\n\nimport { fastOptions } from \"@fast-element-plus/settings\";\nimport { base64Util, consoleError } from \"@fast-element-plus/utils\";\n\n/**\n * 本地缓存前缀 Key\n */\nexport const CACHE_PREFIX = \"fast__\";\n\n/**\n * 本地缓存过期值后缀 Key\n */\nexport const CACHE_EXPIRE_SUFFIX = \"__Expire\";\n\n/**\n * window.localStorage\n */\nexport const Local = {\n\t/**\n\t * 设置\n\t * @param key 缓存的Key\n\t * @param val 缓存值\n\t * @param expire 过期时间,单位分钟\n\t * @param encrypt 是否对缓存的数据加密\n\t */\n\tset(key: string, val: any, expire?: number, encrypt?: boolean): void {\n\t\ttry {\n\t\t\tencrypt ??= fastOptions.storageCrypto;\n\t\t\t// 判断是否存在缓存过期时间\n\t\t\tif (expire) {\n\t\t\t\tif (isNaN(expire) || expire < 1) {\n\t\t\t\t\tthrow new Error(\"有效期应为一个有效数值\");\n\t\t\t\t}\n\t\t\t\t// 设置过期时间的缓存\n\t\t\t\tconst expireData = {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\texpire,\n\t\t\t\t};\n\t\t\t\tconst expireJson = JSON.stringify(expireData);\n\t\t\t\twindow.localStorage.setItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`, expireJson);\n\t\t\t}\n\t\t\tlet valJson = JSON.stringify(val);\n\t\t\tif (encrypt) {\n\t\t\t\tvalJson = base64Util.toBase64(valJson);\n\t\t\t}\n\t\t\twindow.localStorage.setItem(`${CACHE_PREFIX}${key}`, valJson);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 获取\n\t * @param key 缓存的Key\n\t * @param decrypt 是否对缓存的数据解密\n\t * @returns {T} 传入的对象类型,默认为 string\n\t */\n\tget<T = string>(key: string, decrypt?: boolean): T {\n\t\ttry {\n\t\t\tdecrypt ??= fastOptions.storageCrypto;\n\t\t\t// 获取缓存 JSON 字符串\n\t\t\tlet valJson = window.localStorage.getItem(`${CACHE_PREFIX}${key}`);\n\t\t\tif (valJson) {\n\t\t\t\t// 判断是否解密\n\t\t\t\tif (decrypt) {\n\t\t\t\t\tvalJson = base64Util.base64ToStr(valJson);\n\t\t\t\t}\n\t\t\t\t// 尝试获取缓存过期时间的 JSON 字符串\n\t\t\t\tconst expireJson = window.localStorage.getItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`);\n\t\t\t\t// 判断是否存在过期时间\n\t\t\t\tif (expireJson) {\n\t\t\t\t\tconst expireData = JSON.parse(expireJson) as anyObj;\n\t\t\t\t\tif (Date.now() > expireData.time + expireData.expire * 60 * 1000) {\n\t\t\t\t\t\t// 过期了,删除对应的缓存数据\n\t\t\t\t\t\twindow.localStorage.removeItem(`${CACHE_PREFIX}${key}`);\n\t\t\t\t\t\twindow.localStorage.removeItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.parse(valJson) as T;\n\t\t\t\t} catch {\n\t\t\t\t\treturn valJson as T;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除\n\t * @param key 缓存的Key\n\t */\n\tremove(key: string): void {\n\t\ttry {\n\t\t\twindow.localStorage.removeItem(`${CACHE_PREFIX}${key}`);\n\t\t\twindow.localStorage.removeItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 根据前缀移除\n\t * @param key 缓存的Key\n\t */\n\tremoveByPrefix(key: string): void {\n\t\ttry {\n\t\t\tfor (const itemKey in window.localStorage) {\n\t\t\t\tif (itemKey.indexOf(`${CACHE_PREFIX}${key}`) !== -1) {\n\t\t\t\t\twindow.localStorage.removeItem(itemKey);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除全部\n\t */\n\tclear(): void {\n\t\ttry {\n\t\t\twindow.localStorage.clear();\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n};\n\n/**\n * window.sessionStorage\n */\nexport const Session = {\n\t/**\n\t * 设置会话缓存\n\t * @param key 缓存的Key\n\t * @param val 缓存值\n\t * @param expire 过期时间,单位分钟\n\t * @param encrypt 是否对缓存的数据加密\n\t */\n\tset(key: string, val: any, expire?: number, encrypt?: boolean): void {\n\t\ttry {\n\t\t\tencrypt ??= fastOptions.storageCrypto;\n\t\t\t// 判断是否存在缓存过期时间\n\t\t\tif (expire) {\n\t\t\t\tif (isNaN(expire) || expire < 1) {\n\t\t\t\t\tthrow new Error(\"有效期应为一个有效数值\");\n\t\t\t\t}\n\t\t\t\t// 设置过期时间的缓存\n\t\t\t\tconst expireData = {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\texpire,\n\t\t\t\t};\n\t\t\t\tconst expireJson = JSON.stringify(expireData);\n\t\t\t\twindow.sessionStorage.setItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`, expireJson);\n\t\t\t}\n\t\t\tlet valJson = JSON.stringify(val);\n\t\t\tif (encrypt) {\n\t\t\t\tvalJson = base64Util.toBase64(valJson);\n\t\t\t}\n\t\t\twindow.sessionStorage.setItem(`${CACHE_PREFIX}${key}`, valJson);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 获取会话缓存\n\t * @param key 缓存的Key\n\t * @param decrypt 是否对缓存的数据解密\n\t * @returns {T} 传入的对象类型,默认为 string\n\t */\n\tget<T = string>(key: string, decrypt?: boolean): T {\n\t\ttry {\n\t\t\tdecrypt ??= fastOptions.storageCrypto;\n\t\t\t// 获取缓存 JSON 字符串\n\t\t\tlet valJson = window.sessionStorage.getItem(`${CACHE_PREFIX}${key}`);\n\t\t\tif (valJson) {\n\t\t\t\t// 判断是否解密\n\t\t\t\tif (decrypt) {\n\t\t\t\t\tvalJson = base64Util.base64ToStr(valJson);\n\t\t\t\t}\n\t\t\t\t// 尝试获取缓存过期时间的 JSON 字符串\n\t\t\t\tconst expireJson = window.sessionStorage.getItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`);\n\t\t\t\t// 判断是否存在过期时间\n\t\t\t\tif (expireJson) {\n\t\t\t\t\tconst expireData = JSON.parse(expireJson) as anyObj;\n\t\t\t\t\tif (Date.now() > expireData.time + expireData.expire * 60 * 1000) {\n\t\t\t\t\t\t// 过期了,删除对应的缓存数据\n\t\t\t\t\t\twindow.sessionStorage.removeItem(`${CACHE_PREFIX}${key}`);\n\t\t\t\t\t\twindow.sessionStorage.removeItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.parse(valJson) as T;\n\t\t\t\t} catch {\n\t\t\t\t\treturn valJson as T;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除会话缓存\n\t * @param key 缓存的Key\n\t */\n\tremove(key: string): void {\n\t\ttry {\n\t\t\twindow.sessionStorage.removeItem(`${CACHE_PREFIX}${key}`);\n\t\t\twindow.sessionStorage.removeItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 根据前缀移除会话缓存\n\t * @param key 缓存的Key\n\t */\n\tremoveByPrefix(key: string): void {\n\t\ttry {\n\t\t\tfor (const itemKey in window.sessionStorage) {\n\t\t\t\tif (itemKey.indexOf(`${CACHE_PREFIX}${key}`) !== -1) {\n\t\t\t\t\twindow.sessionStorage.removeItem(itemKey);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除全部会话缓存\n\t */\n\tclear(): void {\n\t\ttry {\n\t\t\twindow.sessionStorage.clear();\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n};\n","import { isString } from \"lodash-es\";\n\n/**\n * 字符串工具类\n */\nexport const stringUtil = {\n\t/**\n\t * 根据当前时间生成问候语\n\t */\n\tgetGreet(): string {\n\t\tconst now = new Date();\n\t\tconst hour = now.getHours();\n\t\tlet greet = \"\";\n\n\t\tif (hour < 5) {\n\t\t\tgreet = \"夜深了,注意身体哦!\";\n\t\t} else if (hour < 9) {\n\t\t\tgreet = \"早上好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 12) {\n\t\t\tgreet = \"上午好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 14) {\n\t\t\tgreet = \"中午好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 18) {\n\t\t\tgreet = \"下午好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 24) {\n\t\t\tgreet = \"晚上好!\" + \"欢迎回来!\";\n\t\t} else {\n\t\t\tgreet = \"您好!\" + \"欢迎回来!\";\n\t\t}\n\t\treturn greet;\n\t},\n\t/**\n\t * 对象URL参数化\n\t */\n\tobjectToQueryString(obj: any): string {\n\t\tlet params = \"\";\n\t\tfor (const key in obj) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(obj, key)) {\n\t\t\t\tif (params !== \"\") {\n\t\t\t\t\tparams += \"&\";\n\t\t\t\t}\n\t\t\t\tparams += `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`;\n\t\t\t}\n\t\t}\n\t\treturn params;\n\t},\n\t/**\n\t * 获取Url参数\n\t */\n\tgetUrlParams(url: string): Record<string, any> {\n\t\tconst regex = /[?&][^=?&]+=[^?&]+/g;\n\t\tconst params: Record<string, any> = {};\n\n\t\tlet match;\n\t\twhile ((match = regex.exec(url)) !== null) {\n\t\t\tconst [key, value] = match[0].substring(1).split(\"=\");\n\t\t\tparams[key] = decodeURIComponent(value);\n\t\t}\n\n\t\treturn params;\n\t},\n\t/**\n\t * 是否为JSON字符串\n\t */\n\tisJson(value: string): boolean {\n\t\tif (!isString(value)) return false;\n\n\t\tvalue = value.replace(/\\s/g, \"\").replace(/\\n|\\r/, \"\");\n\n\t\tif (/^\\{(.*?)\\}$/.test(value)) return /\"(.*?)\":(.*?)/g.test(value);\n\n\t\tif (/^\\[(.*?)\\]$/.test(value)) {\n\t\t\treturn value\n\t\t\t\t.replace(/^\\[/, \"\")\n\t\t\t\t.replace(/\\]$/, \"\")\n\t\t\t\t.replace(/},{/g, \"}\\n{\")\n\t\t\t\t.split(/\\n/)\n\t\t\t\t.map((s) => {\n\t\t\t\t\treturn stringUtil.isJson(s);\n\t\t\t\t})\n\t\t\t\t.reduce((prev, curr) => {\n\t\t\t\t\treturn !!curr;\n\t\t\t\t});\n\t\t}\n\n\t\treturn false;\n\t},\n\t/**\n\t * 生成随机字符串\n\t */\n\tgenerateRandomString(length: number): string {\n\t\tconst characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\t\tlet randomString = \"\";\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst randomIndex = Math.floor(Math.random() * characters.length);\n\t\t\trandomString += characters.charAt(randomIndex);\n\t\t}\n\t\treturn randomString;\n\t},\n\t/**\n\t * @description 生成唯一 uuid\n\t */\n\tgenerateUUID(): string {\n\t\tlet uuid = \"\";\n\t\tfor (let i = 0; i < 32; i++) {\n\t\t\tconst random = (Math.random() * 16) | 0;\n\t\t\tif (i === 8 || i === 12 || i === 16 || i === 20) uuid += \"-\";\n\t\t\tuuid += (i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random).toString(16);\n\t\t}\n\t\treturn uuid;\n\t},\n\t/**\n\t * 复制\n\t */\n\tasync copy(value: string): Promise<void> {\n\t\t// navigator.clipboard 需要https等安全上下文\n\t\tif (navigator?.clipboard && window.isSecureContext) {\n\t\t\tawait navigator.clipboard.writeText(value);\n\t\t} else {\n\t\t\tconst textareaEl = document.createElement(\"textarea\");\n\t\t\ttextareaEl.value = value;\n\t\t\t// 使文本域不显示\n\t\t\ttextareaEl.style.position = \"absolute\";\n\t\t\ttextareaEl.style.opacity = \"0\";\n\t\t\ttextareaEl.style.left = \"-999999px\";\n\t\t\ttextareaEl.style.top = \"-999999px\";\n\t\t\tdocument.body.appendChild(textareaEl);\n\t\t\ttextareaEl.focus();\n\t\t\ttextareaEl.select();\n\t\t\tdocument.execCommand(\"copy\");\n\t\t\ttextareaEl.remove();\n\t\t}\n\t},\n};\n","import { nextTick } from \"vue\";\n\nexport const useLoading = {\n\tshow: (): void => {\n\t\t// 判断是否存在加载效果\n\t\tif (!window.loading) {\n\t\t\tconst bodyEl: Element = document.body;\n\t\t\tconst div = document.createElement(\"div\");\n\t\t\tdiv.className = \"__fa-loading\";\n\t\t\tdiv.innerHTML = `\n<div class=\"__fa-loading__box\">\n\t<div class=\"__fa-loading__box-warp\">\n\t\t\t<div class=\"__fa-loading__box-warp__item\"></div>\n\t</div>\n</div>\n`;\n\t\t\tbodyEl.insertBefore(div, bodyEl.childNodes[0]);\n\t\t\twindow.loading = true;\n\t\t}\n\t},\n\thide: (): void => {\n\t\t// 判断是否存在加载效果\n\t\tif (window.loading) {\n\t\t\tnextTick(() => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst loadingEl = document.querySelector(\".__fa-loading__box\");\n\t\t\t\t\tloadingEl && loadingEl.parentNode?.removeChild(loadingEl);\n\t\t\t\t\twindow.loading = false;\n\t\t\t\t}, 500);\n\t\t\t});\n\t\t}\n\t},\n};\n","import { nextTick } from \"vue\";\n\nexport const useOverlay = {\n\tshow: (transparent = 0): void => {\n\t\t// 判断是否存在遮罩层\n\t\tif (!window.overlay) {\n\t\t\tconst bodyEl: Element = document.body;\n\t\t\tconst div = document.createElement(\"div\");\n\t\t\tdiv.className = \"__fa-overlay\";\n\t\t\tdiv.style.backgroundColor = `rgba(0, 0, 0, ${transparent})`;\n\t\t\tbodyEl.insertBefore(div, bodyEl.childNodes[0]);\n\t\t\twindow.overlay = true;\n\t\t}\n\t},\n\thide: (): void => {\n\t\t// 判断是否存在遮罩层\n\t\tif (window.overlay) {\n\t\t\tnextTick(() => {\n\t\t\t\tconst loadingEl = document.querySelector(\".__fa-overlay\");\n\t\t\t\tloadingEl && loadingEl.parentNode?.removeChild(loadingEl);\n\t\t\t\twindow.overlay = false;\n\t\t\t});\n\t\t}\n\t},\n};\n","/** Element Plus 组件全局配置 */\n\nimport type { App } from \"vue\";\nimport * as ElementPlusIconsVue from \"@element-plus/icons-vue\";\nimport { useOverlay } from \"@fast-element-plus/hooks\";\nimport { consoleError, errorHandler, execAsyncFunction } from \"@fast-element-plus/utils\";\nimport type { Action, ElMessageBoxOptions, MessageBoxData, MessageBoxState } from \"element-plus\";\nimport ElementPlus, { ElDialog, ElInput, ElMessageBox } from \"element-plus\";\n\n// ELDialog 默认拖拽\nElDialog.props = {\n\t...ElDialog.props,\n\tdraggable: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n};\n\n// ELInput 默认显示统计字数\nElInput.props = {\n\t...ElInput.props,\n\tshowWordLimit: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n};\n\n// ElMessageBox 默认配置\nconst elMessageBox = (\n\tmessage: ElMessageBoxOptions[\"message\"],\n\toptions: ElMessageBoxOptions,\n\ttype: \"alert\" | \"confirm\" | \"prompt\"\n): Promise<MessageBoxData> => {\n\toptions = options ?? {};\n\tif (!options?.title) {\n\t\t// 默认提示\n\t\toptions.title = \"温馨提示\";\n\t}\n\tif (options?.draggable == undefined) {\n\t\t// 默认拖拽\n\t\toptions.draggable = true;\n\t}\n\tif (!options?.cancelButtonText) {\n\t\t// 默认 取消按钮的文本内容\n\t\toptions.cancelButtonText = \"取消\";\n\t}\n\tif (!options?.confirmButtonText) {\n\t\t// 默认 确定按钮的文本内容\n\t\toptions.confirmButtonText = \"确定\";\n\t}\n\tif (options?.closeOnClickModal == undefined) {\n\t\t// 默认 是否可通过点击遮罩层关闭 MessageBox\n\t\toptions.closeOnClickModal = false;\n\t}\n\tif (options?.closeOnPressEscape == undefined) {\n\t\t// 默认 是否可通过按下 ESC 键关闭 MessageBox\n\t\toptions.closeOnPressEscape = false;\n\t}\n\n\t// 关闭之前的判断逻辑\n\tif (options?.beforeClose != undefined) {\n\t\tconst localBeforeClose = options.beforeClose;\n\t\tconst localConfirmButtonText = options?.confirmButtonText ?? \"确定\";\n\t\tconst localShowCancelButton = options?.showCancelButton ?? false;\n\t\toptions.beforeClose = (action: Action, instance: MessageBoxState, done: () => void): void => {\n\t\t\tif (action === \"confirm\") {\n\t\t\t\tuseOverlay.show(0);\n\t\t\t\tinstance.confirmButtonLoading = true;\n\t\t\t\tinstance.showCancelButton = false;\n\t\t\t\tinstance.confirmButtonText = \"加载中...\";\n\n\t\t\t\tconst cancelLoading = (): void => {\n\t\t\t\t\tinstance.confirmButtonLoading = false;\n\t\t\t\t\tinstance.showCancelButton = localShowCancelButton;\n\t\t\t\t\tinstance.confirmButtonText = localConfirmButtonText;\n\t\t\t\t\tuseOverlay.hide();\n\t\t\t\t};\n\n\t\t\t\tconst newDone = (): void => {\n\t\t\t\t\tcancelLoading();\n\t\t\t\t\tdone();\n\t\t\t\t};\n\n\t\t\t\texecAsyncFunction(localBeforeClose, action, instance, newDone)\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tnewDone();\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\tconsoleError(\"MessageBox\", error);\n\t\t\t\t\t\tcancelLoading();\n\t\t\t\t\t\terrorHandler(error);\n\t\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdone();\n\t\t\t}\n\t\t};\n\t}\n\n\t// 根据类型有一些判断\n\tswitch (type) {\n\t\tcase \"alert\":\n\t\t\tbreak;\n\t\tcase \"confirm\":\n\t\t\tif (options?.showCancelButton == undefined) {\n\t\t\t\toptions.showCancelButton = true;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"prompt\":\n\t\t\tif (options?.showCancelButton == undefined) {\n\t\t\t\toptions.showCancelButton = true;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\treturn ElMessageBox(\n\t\tObject.assign(\n\t\t\t{\n\t\t\t\tmessage,\n\t\t\t},\n\t\t\toptions,\n\t\t\t{\n\t\t\t\tboxType: type,\n\t\t\t}\n\t\t)\n\t);\n};\n\nElMessageBox.alert = (message: ElMessageBoxOptions[\"message\"], options?: ElMessageBoxOptions): Promise<MessageBoxData> =>\n\telMessageBox(message, options, \"alert\");\n\nElMessageBox.prompt = (message: ElMessageBoxOptions[\"message\"], options?: ElMessageBoxOptions): Promise<MessageBoxData> =>\n\telMessageBox(message, options, \"prompt\");\n\nElMessageBox.confirm = (message: ElMessageBoxOptions[\"message\"], options?: ElMessageBoxOptions): Promise<MessageBoxData> =>\n\telMessageBox(message, options, \"confirm\");\n\nexport const installElementPlus = (app: App): void => {\n\t/** 注册所有 Element Plus Icon */\n\tfor (const [key, component] of Object.entries(ElementPlusIconsVue)) {\n\t\t// 这里是给 FaIcon 使用的\n\t\tapp.component(`el-icon-${key}`, component);\n\t}\n\n\t/** Element Plus 组件完整引入 */\n\tapp.use(ElementPlus);\n};\n","import type { CSSProperties, PropType } from \"vue\";\nimport { computed, defineComponent, h, reactive, resolveComponent } from \"vue\";\nimport { RegExps } from \"@fast-element-plus/constants\";\nimport { useRender } from \"@fast-element-plus/utils\";\nimport { ElIcon } from \"element-plus\";\nimport { isNumber } from \"lodash-es\";\n\nexport const faIconProps = {\n\t/**\n\t * 名称\n\t * @description el-icon- 使用 El-icon 的图标;fa-icon 使用 Fast 图标组件库;\n\t * @requires 必填\n\t */\n\tname: {\n\t\ttype: String,\n\t\trequired: true,\n\t},\n\t/**\n\t * 大小\n\t */\n\tsize: [Number, String] as PropType<number | string>,\n\t/**\n\t * 颜色\n\t */\n\tcolor: String,\n};\n\n/**\n * FaIcon 组件\n */\nexport default defineComponent({\n\tname: \"FaIcon\",\n\tprops: faIconProps,\n\tsetup(props, { attrs }) {\n\t\tconst state = reactive({\n\t\t\tisUrl: computed(() => RegExps.External.test(props.name)),\n\t\t\tstyle: computed((): CSSProperties => {\n\t\t\t\tconst result: any = {};\n\t\t\t\tif (props.size) {\n\t\t\t\t\tif (isNumber(props.size)) {\n\t\t\t\t\t\tresult.size = `${props.size}px`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.size = props.size;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (props.color) {\n\t\t\t\t\tresult.color = props.color;\n\t\t\t\t}\n\t\t\t\tif (state.isUrl) {\n\t\t\t\t\tresult.mask = `url(${props.name}) no-repeat 50% 50%`;\n\t\t\t\t\tresult[\"-webkit-mask\"] = `url(${props.name}) no-repeat 50% 50%`;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}),\n\t\t});\n\n\t\tuseRender(() =>\n\t\t\tprops.name.indexOf(\"el-icon-\") === 0 ? (\n\t\t\t\t<ElIcon {...attrs} {...props} class=\"fa-icon\">\n\t\t\t\t\t{h(resolveComponent(props.name))}\n\t\t\t\t</ElIcon>\n\t\t\t) : props.name.indexOf(\"fa-icon\") === 0 ? (\n\t\t\t\t<ElIcon {...attrs} {...props} class=\"fa-icon\">\n\t\t\t\t\t{h(resolveComponent(props.name))}\n\t\t\t\t</ElIcon>\n\t\t\t) : state.isUrl ? (\n\t\t\t\t<div {...attrs} class=\"el-icon fa-icon url-icon\" style={state.style} />\n\t\t\t) : (\n\t\t\t\t<i {...attrs} class={[props.name, \"el-icon fa-icon\"]} style={state.style} />\n\t\t\t)\n\t\t);\n\t},\n});\n","import type { ExtractPropTypes } from \"vue\";\nimport { withInstall } from \"@fast-element-plus/utils\";\nimport type { faIconProps } from \"./src/icon\";\nimport Icon from \"./src/icon\";\n\nexport const FaIcon = withInstall(Icon);\nexport default FaIcon;\n\nexport type GIconInstance = InstanceType<typeof Icon>;\n\nexport type GIconProps = ExtractPropTypes<typeof faIconProps>;\n","import type { Plugin } from \"vue\";\nimport { FaIcon } from \"@fast-element-plus/components/icon\";\n\nexport default [FaIcon] as Plugin[];\n","/**\n * v-copy\n * 复制某个值至剪贴板\n * 接收参数:string类型/Ref<string>类型/Reactive<string>类型\n */\nimport type { Directive, DirectiveBinding } from \"vue\";\nimport { consoleError, stringUtil, withInstallDirective } from \"@fast-element-plus/utils\";\nimport { ElMessage } from \"element-plus\";\n\ninterface ElType extends HTMLElement {\n\tcopyData: string | number;\n\t__handleClick__: () => void;\n}\n\nconst CopyDirective: Directive = {\n\tmounted(el: ElType, binding: DirectiveBinding) {\n\t\tel.copyData = binding.value;\n\n\t\tel.__handleClick__ = async (): Promise<void> => {\n\t\t\tif (!el.copyData) return;\n\t\t\ttry {\n\t\t\t\tawait stringUtil.copy(String(el.copyData));\n\t\t\t\tElMessage({\n\t\t\t\t\ttype: \"success\",\n\t\t\t\t\tmessage: \"复制成功\",\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tElMessage({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: \"复制失败\",\n\t\t\t\t});\n\t\t\t\tconsoleError(\"CopyDirective\", \"复制失败\", error);\n\t\t\t}\n\t\t};\n\t\tel.addEventListener(\"click\", el.__handleClick__);\n\t},\n\tupdated(el: ElType, binding: DirectiveBinding) {\n\t\tel.copyData = binding.value;\n\t},\n\tbeforeUnmount(el: ElType) {\n\t\tel.removeEventListener(\"click\", el.__handleClick__);\n\t},\n};\n\nexport const vCopy = withInstallDirective(CopyDirective, \"copy\");\nexport default vCopy;\n","/**\n * v-debounce\n * 按钮防抖指令\n */\nimport type { Directive, DirectiveBinding, VNode } from \"vue\";\nimport { withInstallDirective } from \"@fast-element-plus/utils\";\n\ninterface ElType extends HTMLElement {\n\t__debounce_timer__: NodeJS.Timeout;\n\t__debounce_originClick__: () => any;\n}\n\nconst DebounceDirective: Directive = {\n\tcreated(el: ElType, binding: DirectiveBinding, vNode: VNode) {\n\t\t// 记录原来的点击事件方法\n\t\tel.__debounce_originClick__ = vNode.props.onClick;\n\n\t\t// 替换原来的点击事件\n\t\tvNode.props.onClick = (): void => {\n\t\t\tif (el.__debounce_timer__) {\n\t\t\t\tclearInterval(el.__debounce_timer__);\n\t\t\t}\n\t\t\t// 防抖处理\n\t\t\tel.__debounce_timer__ = setTimeout(() => {\n\t\t\t\tel.__debounce_originClick__();\n\t\t\t}, 500);\n\t\t};\n\t},\n};\n\nexport const vDebounce = withInstallDirective(DebounceDirective, \"debounce\");\nexport default vDebounce;\n","/*\n\t需求:实现一个拖拽指令,可在父元素区域任意拖拽元素。\n\n\t思路:\n\t\t1、设置需要拖拽的元素为absolute,其父元素为relative。\n\t\t2、鼠标按下(onmousedown)时记录目标元素当前的 left 和 top 值。\n\t\t3、鼠标移动(onmousemove)时计算每次移动的横向距离和纵向距离的变化值,并改变元素的 left 和 top 值\n\t\t4、鼠标松开(onmouseup)时完成一次拖拽\n\n\t使用:在 Dom 上加上 v-draggable 即可\n\t<div class=\"dialog-model\" v-draggable></div>\n*/\nimport type { Directive } from \"vue\";\nimport { withInstallDirective } from \"@fast-element-plus/utils\";\n\ninterface ElType extends HTMLElement {\n\tparentNode: any;\n}\n\nconst DraggableDirective: Directive = {\n\tmounted(el: ElType) {\n\t\tel.style.cursor = \"move\";\n\t\tel.style.position = \"absolute\";\n\t\tel.onmousedown = (e): void => {\n\t\t\tconst disX = e.pageX - el.offsetLeft;\n\t\t\tconst disY = e.pageY - el.offsetTop;\n\t\t\tdocument.onmousemove = (e): void => {\n\t\t\t\tlet x = e.pageX - disX;\n\t\t\t\tlet y = e.pageY - disY;\n\t\t\t\tconst maxX = el.parentNode.offsetWidth - el.offsetWidth;\n\t\t\t\tconst maxY = el.parentNode.offsetHeight - el.offsetHeight;\n\t\t\t\tif (x < 0) {\n\t\t\t\t\tx = 0;\n\t\t\t\t} else if (x > maxX) {\n\t\t\t\t\tx = maxX;\n\t\t\t\t}\n\n\t\t\t\tif (y < 0) {\n\t\t\t\t\ty = 0;\n\t\t\t\t} else if (y > maxY) {\n\t\t\t\t\ty = maxY;\n\t\t\t\t}\n\t\t\t\tel.style.left = `${x}px`;\n\t\t\t\tel.style.top = `${y}px`;\n\t\t\t};\n\t\t\tdocument.onmouseup = (): void => {\n\t\t\t\tdocument.onmousemove = document.onmouseup = null;\n\t\t\t};\n\t\t};\n\t},\n};\n\nexport const vDraggable = withInstallDirective(DraggableDirective, \"draggable\");\nexport default vDraggable;\n","/**\n * v-iconCopy\n * 左侧插入复制图标,复制某个值至剪贴板\n * 接收参数:string类型/Ref<string>类型/Reactive<string>类型\n */\nimport { type Directive, type DirectiveBinding, h, render } from \"vue\";\nimport { CopyDocument } from \"@element-plus/icons-vue\";\nimport { consoleError, stringUtil, withInstallDirective } from \"@fast-element-plus/utils\";\nimport { ElIcon, ElMessage } from \"element-plus\";\n\ninterface ElType extends HTMLElement {\n\tcopyData: string | number;\n\t__iconElement__: Node;\n}\n\nconst IconCopyDirective: Directive = {\n\tmounted(el: ElType, binding: DirectiveBinding) {\n\t\tel.copyData = binding.value;\n\n\t\tif (!el.copyData) return;\n\n\t\tconst handleCopyClick = async (): Promise<void> => {\n\t\t\ttry {\n\t\t\t\tawait stringUtil.copy(String(el.copyData));\n\t\t\t\tElMessage({\n\t\t\t\t\ttype: \"success\",\n\t\t\t\t\tmessage: \"复制成功\",\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tElMessage({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: \"复制失败\",\n\t\t\t\t});\n\t\t\t\tconsoleError(\"CopyDirective\", \"复制失败\", error);\n\t\t\t}\n\t\t};\n\n\t\t// 创建 ELIcon 组件\n\t\tconst iconEl = h(\n\t\t\tElIcon,\n\t\t\t{\n\t\t\t\tclass: \"fa-icon-CopyDocument\",\n\t\t\t\ttitle: \"复制\",\n\t\t\t\tonClick: handleCopyClick,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdefault: () => h(CopyDocument),\n\t\t\t}\n\t\t);\n\n\t\tconst tempDiv = document.createElement(\"div\");\n\t\trender(iconEl, tempDiv);\n\n\t\tel.__iconElement__ = tempDiv.firstChild;\n\t\tel.parentElement.insertBefore(tempDiv.firstChild, el);\n\t},\n\tupdated(el: ElType, binding: DirectiveBinding) {\n\t\tel.copyData = binding.value;\n\t},\n\tbeforeUnmount(el: ElType) {\n\t\tif (el.__iconElement__) {\n\t\t\tel.parentElement.removeChild(el.__iconElement__);\n\t\t}\n\t},\n};\n\nexport const vIconCopy = withInstallDirective(IconCopyDirective, \"iconCopy\");\nexport default vIconCopy;\n","/**\n * v-longpress\n * 长按指令,长按时触发事件\n */\nimport type { Directive, DirectiveBinding } from \"vue\";\nimport { withInstallDirective } from \"@fast-element-plus/utils\";\n\nconst LongpressDirective: Directive = {\n\tmounted(el: HTMLElement, binding: DirectiveBinding) {\n\t\tif (typeof binding.value !== \"function\") {\n\t\t\tthrow \"callback must be a function\";\n\t\t}\n\n\t\t// 运行函数\n\t\tconst handler = (e: MouseEvent | TouchEvent): void => {\n\t\t\tbinding.value(e);\n\t\t};\n\n\t\t// 定义变量\n\t\tlet pressTimer: any = null;\n\t\t// 创建计时器( 2秒后执行函数 )\n\t\tconst start = (e: any): void => {\n\t\t\tif (e.button) {\n\t\t\t\tif (e.type === \"click\" && e.button !== 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pressTimer === null) {\n\t\t\t\tpressTimer = setTimeout(() => {\n\t\t\t\t\thandler(e);\n\t\t\t\t}, 1000);\n\t\t\t}\n\t\t};\n\t\t// 取消计时器\n\t\tconst cancel = (): void => {\n\t\t\tif (pressTimer !== null) {\n\t\t\t\tclearTimeout(pressTimer);\n\t\t\t\tpressTimer = null;\n\t\t\t}\n\t\t};\n\t\t// 添加事件监听器\n\t\tel.addEventListener(\"mousedown\", start);\n\t\tel.addEventListener(\"touchstart\", start);\n\t\t// 取消计时器\n\t\tel.addEventListener(\"click\", cancel);\n\t\tel.addEventListener(\"mouseout\", cancel);\n\t\tel.addEventListener(\"touchend\", cancel);\n\t\tel.addEventListener(\"touchcancel\", cancel);\n\t},\n};\n\nexport const vLongpress = withInstallDirective(LongpressDirective, \"longpress\");\nexport default vLongpress;\n","/*\n 需求:防止按钮在短时间内被多次点击,使用节流函数限制规定时间内只能点击一次。\n\n 思路:\n 1、第一次点击,立即调用方法并禁用按钮,等延迟结束再次激活按钮\n 2、将需要触发的方法绑定在指令上\n\n 使用:给 Dom 加上 v-throttle 及回调函数即可\n <button v-throttle=\"debounceClick\">节流提交</button>\n*/\nimport type { Directive, DirectiveBinding } from \"vue\";\nimport { withInstallDirective } from \"@fast-element-plus/utils\";\n\ninterface ElType extends HTMLElement {\n\t__handleClick__: () => any;\n\tdisabled: boolean;\n}\n\nconst ThrottleDirective: Directive = {\n\tmounted(el: ElType, binding: DirectiveBinding) {\n\t\tif (typeof binding.value !== \"function\") {\n\t\t\tthrow \"callback must be a function\";\n\t\t}\n\t\tlet timer: NodeJS.Timeout | null = null;\n\t\tel.__handleClick__ = (): void => {\n\t\t\tif (timer) {\n\t\t\t\tclearTimeout(timer);\n\t\t\t}\n\t\t\tif (!el.disabled) {\n\t\t\t\tel.disabled = true;\n\t\t\t\tbinding.value();\n\t\t\t\ttimer = setTimeout(() => {\n\t\t\t\t\tel.disabled = false;\n\t\t\t\t}, 1000);\n\t\t\t}\n\t\t};\n\t\tel.addEventListener(\"click\", el.__handleClick__);\n\t},\n\tbeforeUnmount(el: ElType) {\n\t\tel.removeEventListener(\"click\", el.__handleClick__);\n\t},\n};\n\nexport const vThrottle = withInstallDirective(ThrottleDirective, \"throttle\");\nexport default vThrottle;\n","import { vCopy } from \"@fast-element-plus/directives/clickCopy\";\nimport { vDebounce } from \"@fast-element-plus/directives/clickDebounce\";\nimport { vDraggable } from \"@fast-element-plus/directives/clickDraggable\";\nimport { vIconCopy } from \"@fast-element-plus/directives/clickIconCopy\";\nimport { vLongpress } from \"@fast-element-plus/directives/clickLongpress\";\nimport { vThrottle } from \"@fast-element-plus/directives/clickThrottle\";\n\nexport default [vCopy, vDebounce, vDraggable, vIconCopy, vLongpress, vThrottle];\n","import type { App } from \"vue\";\nimport { type FastOptions, setFastOptions } from \"@fast-element-plus/settings\";\nimport { errorHandler, makeIdentity } from \"@fast-element-plus/utils\";\nimport { installElementPlus } from \"./element-plus\";\nimport { installFastElementPlus } from \"./fast-element-plus\";\nimport { fastElementPlusVersion } from \"./version\";\n\nexport const INSTALLED_KEY = Symbol(\"INSTALLED_KEY\");\n\nexport const makeInstaller = (): {\n\tversion: string;\n\tinstall: (app: App, options?: FastOptions) => void;\n} => {\n\tconst install = (app: App, options?: FastOptions): void => {\n\t\tif (app[INSTALLED_KEY]) return;\n\n\t\tapp[INSTALLED_KEY] = true;\n\n\t\t// 全局异常捕获\n\t\tapp.config.errorHandler = errorHandler;\n\n\t\tmakeIdentity();\n\n\t\tif (options) {\n\t\t\tsetFastOptions(options);\n\t\t}\n\n\t\tinstallElementPlus(app);\n\t\tinstallFastElementPlus(app);\n\t};\n\n\treturn {\n\t\tversion: fastElementPlusVersion,\n\t\tinstall,\n\t};\n};\n","import { INSTALLED_KEY, makeInstaller } from \"@fast-element-plus/build\";\n\nexport * from \"@fast-element-plus/components\";\nexport * from \"@fast-element-plus/constants\";\nexport * from \"@fast-element-plus/directives\";\nexport * from \"@fast-element-plus/hooks\";\nexport * from \"@fast-element-plus/settings\";\nexport * from \"@fast-element-plus/stores\";\nexport * from \"@fast-element-plus/utils\";\n\nexport { INSTALLED_KEY };\n\nconst installer = makeInstaller();\n\nexport const install = installer.install;\nexport const version = installer.version;\nexport default installer;\n","/**\n * 组件库版本号\n */\nexport const fastElementPlusVersion = \"1.4.18\";\n","import type { App } from \"vue\";\nimport FastElementPlusIconsVue from \"@fast-element-plus/icons-vue\";\nimport FastElementPlusComponents from \"./component\";\nimport FastElementPlusDirectives from \"./directive\";\n\nconst installFastElementPlus = (app: App): void => {\n\t/** 注册 Fast Icon 组件库 */\n\tapp.use(FastElementPlusIconsVue);\n\n\tFastElementPlusComponents.forEach((c) => app.use(c));\n\n\tFastElementPlusDirectives.forEach((d) => app.use(d));\n};\n\nexport { installFastElementPlus };\n","/**\n * MIME 类型\n */\nexport const FaMimeType = {\n\t/**\n\t * PDF\n\t */\n\tPDF: \"application/pdf\",\n\t/**\n\t * 文本文件\n\t */\n\tText: \"text/plain\",\n\t/**\n\t * Word 和 DOCX(Word 2007 及以后版本)\n\t */\n\tWord: \"application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n\t/**\n\t * Excel 和 CSV\n\t */\n\tExcel: \"application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,text/csv\",\n\t/**\n\t * PowerPoint 和 PPTX(PowerPoint 2007 及以后版本)\n\t */\n\tPowerpoint: \"application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n\t/**\n\t * 压缩文件\n\t */\n\tZIP: \"application/zip,application/x-zip-compressed\",\n\t/**\n\t * 图片\n\t */\n\tImage: \"image/jpeg,image/png,image/gif\",\n\t/**\n\t * 视频\n\t */\n\tVideo: \"video/mp4,video/mpeg,video/quicktime\",\n\t/**\n\t * 音频\n\t */\n\tAudio: \"audio/mpeg,audio/wav\",\n\t/**\n\t * HTML\n\t */\n\tHtml: \"text/html\",\n\t/**\n\t * CSS\n\t */\n\tCss: \"text/css\",\n\t/**\n\t * JavaScript\n\t */\n\tJavaScript: \"application/javascript,text/javascript\",\n\t/**\n\t * JSON\n\t */\n\tJson: \"application/json\",\n\t/**\n\t * XML\n\t */\n\tXML: \"application/xml,text/xml\",\n};\n","import type { SlotsType, VNode } from \"vue\";\n\ntype RawSlots = Record<string, unknown>;\n\ntype VueSlots<T> = [T] extends [never] ? () => VNode[] : (arg: T) => VNode[];\n\ntype MakeSlots<T extends RawSlots> = {\n\t[K in keyof T]: VueSlots<T[K]>;\n};\n\n/**\n * 构建 slots\n */\nconst makeSlots = <Slots extends RawSlots>(): SlotsType<Partial<MakeSlots<Slots>>> => {\n\treturn Object as SlotsType<Partial<MakeSlots<Slots>>>;\n};\n\nexport { makeSlots };\n","import type { ComputedRef } from \"vue\";\nimport { computed } from \"vue\";\nimport { omit, pick } from \"lodash-es\";\n\n/**\n * 构建 props\n * @param props props\n * @param rawProps 原生 props\n * @param ignoreRawProps 忽略 原生 props 的 key\n * @param mergeProps 合并的 props,固定的值,即使在外部props中传入了也没用\n */\nconst useProps = <T extends Record<string, unknown>, RT extends Record<string, unknown>>(\n\tprops: T,\n\trawProps?: RT,\n\tignoreRawProps?: (keyof RT)[],\n\tmergeProps?: Partial<Record<keyof RT, unknown>>\n): ComputedRef<Record<string, unknown>> => {\n\tif (!props) return computed(() => ({}));\n\n\treturn computed<Record<string, unknown>>(() => {\n\t\tconst omittedRawProps = rawProps ? omit(rawProps, ignoreRawProps ?? []) : {};\n\t\tconst pickedProps = pick(props, Object.keys(omittedRawProps)) as Record<string, unknown>;\n\t\treturn { ...pickedProps, ...(mergeProps ?? {}) };\n\t});\n};\n\nexport { useProps };\n","/**\n * 定义类型数据\n * @description 传入什么就返回什么,用来定义reactive或其他对象的响应式数据\n */\nconst withDefineType = <T>(data: T): T => {\n\treturn data;\n};\n\nexport { withDefineType };\n"],"names":["fastOptions","reactive","warnPageNum","storageCrypto","axios","baseUrl","timeout","requestCipher","table","showSearch","hideImage","dataSearchRange","merge","target","source","key","value","setFastOptions","options","execAsyncFunction","fn","args","Promise","resolve","constructor","name","consoleError","Error","then","res","catch","error","reject","NOOP","withInstall","main","extra","install","app","comp","Object","values","component","entries","withInstallDirective","directive","useRender","render","vm","getCurrentInstance","base64PwdDic","index","randomIndex","base64Util","toBase64","str","prefixStrLength","length","randomPrefixStr","result","i","Math","ceil","random","getRandomStr","base64","btoa","encodeURIComponent","base64Str","strResult","sort","a","b","forEach","item","randomChar","slice","insertRandomStrToBase64Str","base64ToStr","input","items","removeBase64StrRandomStr","atob","decodeURIComponent","_debounceTimeout","_throttleRunning","clickUtil","debounce","delay","clearTimeout","setTimeout","throttle","colorUtil","hexToRgb","hex","test","replace","match","parseInt","ElMessage","warning","rgbToHex","r","g","reg","toString","join","getDarkColor","color","level","rgb","this","round","getLightColor","consoleWarn","message","optionalParams","console","warn","RegExps","UUID","Mobile","Phone","Email","IdCard","External","Url","CarNumber","NewEnergyCarNumber","PostCode","Ipv4","Passport","HKMacauPass","Account","Password","StrongPassword","Chinese","English","DEVICE_ID_KEY","makeIdentity","deviceId","Local","set","window","get","stringUtil","generateUUID","errorHandler","AxiosError","errorMap","InternalError","ReferenceError","TypeError","RangeError","SyntaxError","EvalError","URIError","AggregateError","TimeoutError","NetworkError","OutOfMemoryError","errorName","nextTick","ElNotification","title","duration","position","formUtil","validate","elFormRef","isValid","invalidFields","validateScrollToField","scrollToField","keys","mobile","rule","callback","phone","email","idCard","carNumber","success","editorRequired","external","url","postCode","account","password","strongPassword","chinese","english","inputRequired","trigger","required","selectRequired","CACHE_PREFIX","CACHE_EXPIRE_SUFFIX","val","expire","encrypt","isNaN","expireData","time","Date","now","expireJson","JSON","stringify","localStorage","setItem","valJson","decrypt","getItem","parse","removeItem","remove","removeByPrefix","itemKey","indexOf","clear","Session","sessionStorage","getGreet","hour","getHours","greet","objectToQueryString","obj","params","prototype","hasOwnProperty","call","getUrlParams","regex","exec","substring","split","isJson","isString","map","s","reduce","prev","curr","generateRandomString","characters","randomString","floor","charAt","uuid","copy","navigator","clipboard","isSecureContext","writeText","textareaEl","document","createElement","style","opacity","left","top","body","appendChild","focus","select","execCommand","useLoading","show","loading","bodyEl","div","className","innerHTML","insertBefore","childNodes","hide","loadingEl","querySelector","_a","parentNode","removeChild","useOverlay","transparent","overlay","backgroundColor","ElementPlus","ElDialog","props","draggable","type","Boolean","default","ElInput","showWordLimit","elMessageBox","cancelButtonText","confirmButtonText","closeOnClickModal","closeOnPressEscape","beforeClose","localBeforeClose","localConfirmButtonText","localShowCancelButton","showCancelButton","action","instance","done","confirmButtonLoading","cancelLoading","newDone","ElMessageBox","assign","boxType","alert","prompt","confirm","_isSlot","_isVNode","isVNode","faIconProps","String","size","Number","FaIcon","setup","attrs","state","isUrl","computed","isNumber","mask","_slot","_slot2","_createVNode","ElIcon","_mergeProps","class","h","resolveComponent","createVNode","mergeProps","FastElementPlusComponents","vCopy","mounted","el","binding","copyData","__handleClick__","async","addEventListener","updated","beforeUnmount","removeEventListener","vDebounce","created","vNode","__debounce_originClick__","onClick","__debounce_timer__","clearInterval","vDraggable","cursor","onmousedown","e","disX","pageX","offsetLeft","disY","pageY","offsetTop","onmousemove","x","y","maxX","offsetWidth","maxY","offsetHeight","onmouseup","vIconCopy","iconEl","CopyDocument","tempDiv","__iconElement__","firstChild","parentElement","vLongpress","pressTimer","start","button","handler","cancel","vThrottle","timer","disabled","FastElementPlusDirectives","INSTALLED_KEY","Symbol","installer","version","config","ElementPlusIconsVue","use","installElementPlus","FastElementPlusIconsVue","c","d","installFastElementPlus","PDF","Text","Word","Excel","Powerpoint","ZIP","Image","Video","Audio","Html","Css","JavaScript","Json","XML","debug","rawProps","ignoreRawProps","omittedRawProps","omit","pick","data"],"mappings":"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"}
package/dist/index.umd.js DELETED
@@ -1,2 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue"),require("lodash-es"),require("element-plus"),require("axios"),require("@element-plus/icons-vue"),require("@fast-element-plus/icons-vue")):"function"==typeof define&&define.amd?define(["exports","vue","lodash-es","element-plus","axios","@element-plus/icons-vue","@fast-element-plus/icons-vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).FastElementPlus={},e.Vue,e.LodashES,e.ElementPlus,e.axios,e.ElementPlusIconsVue,e.FastElementPlusIconsVue)}(this,(function(e,t,o,n,r,i,a){"use strict";function s(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const o in e)if("default"!==o){const n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:()=>e[o]})}return t.default=e,Object.freeze(t)}const l=s(i),c=t.reactive({warnPageNum:15,storageCrypto:!0,axios:{baseUrl:void 0,timeout:6e4,requestCipher:!0},table:{showSearch:!0,hideImage:!0,dataSearchRange:"Past3D"}}),d=(e,t)=>{for(const o in t){const n=t[o];void 0!==n&&null!=n&&(e[o]="object"==typeof n?d(e[o],t[o]):t[o])}},u=e=>{d(c,e)},m=(e,...t)=>{if(!e)return Promise.resolve(void 0);if("AsyncFunction"!==e.constructor.name)throw I("execAsyncFunction","必须为 Promise 异步方法"),new Error("必须为 Promise 异步方法");return e(...t).then((e=>e)).catch((e=>(I("execAsyncFunction",e),Promise.reject(e))))},p=()=>{},g=(e,t)=>{if(e.install=o=>{for(const n of[e,...Object.values(t??{})])o.component(n.name,n)},t)for(const[o,n]of Object.entries(t))e[o]=n;return e},f=(e,t)=>(e.install=o=>{o.directive(t,e)},e),x=e=>{const o=t.getCurrentInstance();if(!o)throw new Error("useRender must be called from inside a setup function");o.render=e},w=[{index:977,randomIndex:188},{index:926,randomIndex:201},{index:851,randomIndex:225},{index:700,randomIndex:255},{index:600,randomIndex:268},{index:500,randomIndex:277},{index:400,randomIndex:288},{index:330,randomIndex:327},{index:300,randomIndex:180},{index:200,randomIndex:178},{index:100,randomIndex:124},{index:98,randomIndex:95},{index:92,randomIndex:90},{index:91,randomIndex:87},{index:88,randomIndex:84},{index:82,randomIndex:79},{index:78,randomIndex:71},{index:72,randomIndex:69},{index:68,randomIndex:66},{index:59,randomIndex:55},{index:48,randomIndex:43},{index:42,randomIndex:37},{index:36,randomIndex:30},{index:33,randomIndex:27},{index:24,randomIndex:20},{index:23,randomIndex:18},{index:21,randomIndex:16},{index:17,randomIndex:14},{index:13,randomIndex:9},{index:7,randomIndex:4},{index:5,randomIndex:3},{index:2,randomIndex:1}];const v={toBase64(e,t=6){if(0===e.length)return"";const o=function(e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",t=6){let o="";for(let n=0;n<t;n++)o+=e[Math.ceil(Math.random()*(e.length-1))];return o}();let n=btoa(encodeURIComponent(e));return 0!==t&&(n=function(e){let t=e;return w.sort(((e,t)=>t.index-e.index)).forEach((o=>{if(o.index<e.length){const n=e[o.randomIndex];t=t.slice(0,o.index)+n+t.slice(o.index)}})),t}(n)),o+n},base64ToStr(e,t=6){let o=e;if(0===e.length)return"";let n=e.slice(t);return 0!==t&&(n=function(e){const t=w.sort(((e,t)=>e.index-t.index));let o=e;return t.forEach((t=>{t.index<e.length&&(o=o.slice(0,t.index)+o.slice(t.index+1))})),o}(n)),o=atob(n),decodeURIComponent(o)}};let h=null,y=!1;const E={debounce(e,t=500){clearTimeout(h),h=setTimeout((()=>{e()}),t)},throttle(e,t=500){y||(y=!0,e(),setTimeout((()=>{y=!1}),t))}},_={hexToRgb(e){let t="";if(/^#?[0-9A-Fa-f]{6}$/.test(e)){t=(e=e.replace("#","")).match(/../g);for(let e=0;e<3;e++)t[e]=parseInt(t[e],16);return t}n.ElMessage.warning("输入错误的hex")},rgbToHex(e,t,o){const r=/^\d{1,3}$/;if(!r.test(e)||!r.test(t)||!r.test(o))return void n.ElMessage.warning("输入错误的rgb颜色值");const i=[e.toString(16),t.toString(16),o.toString(16)];for(let n=0;n<3;n++)1==i[n].length&&(i[n]=`0${i[n]}`);return`#${i.join("")}`},getDarkColor(e,t){if(!/^#?[0-9A-Fa-f]{6}$/.test(e))return void n.ElMessage.warning("输入错误的hex颜色值");const o=this.hexToRgb(e);for(let n=0;n<3;n++)o[n]=Math.round(20.5*t+o[n]*(1-t));return this.rgbToHex(o[0],o[1],o[2])},getLightColor(e,t){if(!/^#?[0-9A-Fa-f]{6}$/.test(e))return void n.ElMessage.warning("输入错误的hex颜色值");const o=this.hexToRgb(e);for(let n=0;n<3;n++)o[n]=Math.round(255*t+o[n]*(1-t));return this.rgbToHex(o[0],o[1],o[2])}},b=(e,t,...o)=>{console.warn(`[Fast-Warn-${e}]`,t,o)},I=(e,t,...o)=>{console.error(`[Fast-Error-${e}]`,t,o)},$={UUID:/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,Mobile:/^(?:(?:\+|00)86)?1\d{10}$/,Phone:/^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$/,Email:/^[a-zA-Z0-9_-]+@([a-zA-Z0-9]+\.)+(com|cn|net|org)$/,IdCard:/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$)/,External:/^(https?:|mailto:|tel:|ftp:)/,Url:/^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/,CarNumber:/^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新军使领]{1}[A-HJ-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/,NewEnergyCarNumber:/^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新军使领]{1}[A-HJ-Z]{1}(([0-9]{5}[DF]$)|([ABCDE][A-HJ-NP-Z0-9][0-9]{3}[0-9挂学警港澳]{1}$)|([FGHJK][A-HJ-NP-Z0-9][0-9]{3}[0-9挂学警港澳]{1}$))/,PostCode:/^[1-9]\d{5}$/,Ipv4:/^([01]?\d{1,2}|2[0-4]\d|25[0-5])\.([01]?\d{1,2}|2[0-4]\d|25[0-5])\.([01]?\d{1,2}|2[0-4]\d|25[0-5])\.([01]?\d{1,2}|2[0-4]\d|25[0-5])$/,Passport:/^[EeGg]\d{8}$/,HKMacauPass:/^[HMhm]\d{8}$/,Account:/^[a-zA-Z][a-zA-Z\d]{5,19}$/,Password:/^[A-Za-z0-9]{6,18}$/,StrongPassword:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_])[A-Za-z\d\W_]{8,20}$/,Chinese:/^[\u4E00-\u9FA5]+$/,English:/^[a-zA-Z]+$/},C="__DEVICE_ID",S=e=>e&&$.UUID.test(e)?(D.set(C,e),window.deviceId=e,e):(e=D.get(C))&&$.UUID.test(e)?(window.deviceId=e,e):(e=O.generateUUID(),D.set(C,e),window.deviceId=e,e),T=e=>{if(!e)return;if(e instanceof r.AxiosError)return!1;const o={InternalError:"Javascript引擎内部错误",ReferenceError:"未找到对象",TypeError:"使用了错误的类型或对象",RangeError:"使用内置对象时,参数超范围",SyntaxError:"语法错误",EvalError:"错误的使用了Eval",URIError:"URI错误",AggregateError:"未知的多个错误",TimeoutError:"操作超时",NetworkError:"网络错误",OutOfMemoryError:"内存溢出"};if("cancel"===e)b("Cancel","操作已取消");else{const r=o[e.name]||"未知错误";I("Handler",e),t.nextTick((()=>{n.ElNotification({title:"系统错误",message:r,duration:3e3,position:"top-right"})}))}},P={validate:e=>new Promise(((t,o)=>{e.value.validate(((e,n)=>{e?t(e):(n&&b("formUtil",n),o(e))}))})),validateScrollToField:e=>new Promise(((t,o)=>{e.value.validate(((n,r)=>{n?t(n):(e.value.scrollToField(Object.keys(r)),r&&b("formUtil",r),o(n))}))})),mobile(e,t,o){t?$.Mobile.test(t)?o():o(new Error("请输入正确的手机号码")):o(new Error("请输入手机号码"))},phone(e,t,o){t?$.Phone.test(t)?o():o(new Error("请输入正确的电话号码")):o()},email(e,t,o){t?$.Email.test(t)?o():o(new Error("请输入正确的邮箱地址")):o()},idCard(e,t,o){$.IdCard.test(t)||!t?o():o(new Error("请输入正确的身份证号码"))},carNumber(e,t,o){let n=!1;7===(null==t?void 0:t.length)?n=$.CarNumber.test(t):8===(null==t?void 0:t.length)&&(n=$.NewEnergyCarNumber.test(t)),n?o():o(new Error("请输入正确的车牌号码"))},editorRequired:(e,t,o)=>"<p><br></p>"==t?o(new Error("内容不能为空")):o(),external(e,t,o){$.External.test(t)?o():o(new Error("请输入正确的外部链接"))},url(e,t,o){$.Url.test(t)?o():o(new Error("请输入有效的Url"))},postCode(e,t,o){$.PostCode.test(t)?o():o(new Error("请输入有效的邮政编码"))},account(e,t,o){$.Account.test(t)?o():o(new Error("请输入有效的账号(6-20位字母或数字,必须以字母开头,不能全为数字)"))},password(e,t,o){$.Password.test(t)?o():o(new Error("请输入有效的密码(只包含字母和数字,长度为6到18位)"))},strongPassword(e,t,o){$.StrongPassword.test(t)?o():o(new Error("请输入有效的密码(8到20位,包含大小写字母、数字及特殊字符)"))},chinese(e,t,o){$.Chinese.test(t)?o():o(new Error("请输入有效的中文字符"))},english(e,t,o){$.English.test(t)?o():o(new Error("请输入有效的英文字符"))},inputRequired:(e,t="blur")=>({required:!0,message:e,trigger:t}),selectRequired:(e,t="change")=>({required:!0,message:e,trigger:t})},A="fast__",N="__Expire",D={set(e,t,o,n){try{if(n??(n=c.storageCrypto),o){if(isNaN(o)||o<1)throw new Error("有效期应为一个有效数值");const t={time:Date.now(),expire:o},n=JSON.stringify(t);window.localStorage.setItem(`${A}${e}${N}`,n)}let r=JSON.stringify(t);n&&(r=v.toBase64(r)),window.localStorage.setItem(`${A}${e}`,r)}catch(r){I("Local",r)}},get(e,t){try{t??(t=c.storageCrypto);let o=window.localStorage.getItem(`${A}${e}`);if(o){t&&(o=v.base64ToStr(o));const n=window.localStorage.getItem(`${A}${e}${N}`);if(n){const t=JSON.parse(n);if(Date.now()>t.time+60*t.expire*1e3)return window.localStorage.removeItem(`${A}${e}`),window.localStorage.removeItem(`${A}${e}${N}`),null}try{return JSON.parse(o)}catch{return o}}return null}catch(o){I("Local",o)}},remove(e){try{window.localStorage.removeItem(`${A}${e}`),window.localStorage.removeItem(`${A}${e}${N}`)}catch(t){I("Local",t)}},removeByPrefix(e){try{for(const t in window.localStorage)-1!==t.indexOf(`${A}${e}`)&&window.localStorage.removeItem(t)}catch(t){I("Local",t)}},clear(){try{window.localStorage.clear()}catch(e){I("Local",e)}}},k={set(e,t,o,n){try{if(n??(n=c.storageCrypto),o){if(isNaN(o)||o<1)throw new Error("有效期应为一个有效数值");const t={time:Date.now(),expire:o},n=JSON.stringify(t);window.sessionStorage.setItem(`${A}${e}${N}`,n)}let r=JSON.stringify(t);n&&(r=v.toBase64(r)),window.sessionStorage.setItem(`${A}${e}`,r)}catch(r){I("Session",r)}},get(e,t){try{t??(t=c.storageCrypto);let o=window.sessionStorage.getItem(`${A}${e}`);if(o){t&&(o=v.base64ToStr(o));const n=window.sessionStorage.getItem(`${A}${e}${N}`);if(n){const t=JSON.parse(n);if(Date.now()>t.time+60*t.expire*1e3)return window.sessionStorage.removeItem(`${A}${e}`),window.sessionStorage.removeItem(`${A}${e}${N}`),null}try{return JSON.parse(o)}catch{return o}}return null}catch(o){I("Session",o)}},remove(e){try{window.sessionStorage.removeItem(`${A}${e}`),window.sessionStorage.removeItem(`${A}${e}${N}`)}catch(t){I("Session",t)}},removeByPrefix(e){try{for(const t in window.sessionStorage)-1!==t.indexOf(`${A}${e}`)&&window.sessionStorage.removeItem(t)}catch(t){I("Session",t)}},clear(){try{window.sessionStorage.clear()}catch(e){I("Session",e)}}},O={getGreet(){const e=(new Date).getHours();let t="";return t=e<5?"夜深了,注意身体哦!":e<9?"早上好!欢迎回来!":e<12?"上午好!欢迎回来!":e<14?"中午好!欢迎回来!":e<18?"下午好!欢迎回来!":e<24?"晚上好!欢迎回来!":"您好!欢迎回来!",t},objectToQueryString(e){let t="";for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(""!==t&&(t+="&"),t+=`${encodeURIComponent(o)}=${encodeURIComponent(e[o])}`);return t},getUrlParams(e){const t=/[?&][^=?&]+=[^?&]+/g,o={};let n;for(;null!==(n=t.exec(e));){const[e,t]=n[0].substring(1).split("=");o[e]=decodeURIComponent(t)}return o},isJson:e=>!!o.isString(e)&&(e=e.replace(/\s/g,"").replace(/\n|\r/,""),/^\{(.*?)\}$/.test(e)?/"(.*?)":(.*?)/g.test(e):!!/^\[(.*?)\]$/.test(e)&&e.replace(/^\[/,"").replace(/\]$/,"").replace(/},{/g,"}\n{").split(/\n/).map((e=>O.isJson(e))).reduce(((e,t)=>!!t))),generateRandomString(e){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let o="";for(let n=0;n<e;n++){const e=Math.floor(62*Math.random());o+=t.charAt(e)}return o},generateUUID(){let e="";for(let t=0;t<32;t++){const o=16*Math.random()|0;8!==t&&12!==t&&16!==t&&20!==t||(e+="-"),e+=(12===t?4:16===t?3&o|8:o).toString(16)}return e},async copy(e){if((null==navigator?void 0:navigator.clipboard)&&window.isSecureContext)await navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,t.style.position="absolute",t.style.opacity="0",t.style.left="-999999px",t.style.top="-999999px",document.body.appendChild(t),t.focus(),t.select(),document.execCommand("copy"),t.remove()}}},U={show:()=>{if(!window.loading){const e=document.body,t=document.createElement("div");t.className="__fa-loading",t.innerHTML='\n<div class="__fa-loading__box">\n\t<div class="__fa-loading__box-warp">\n\t\t\t<div class="__fa-loading__box-warp__item"></div>\n\t</div>\n</div>\n',e.insertBefore(t,e.childNodes[0]),window.loading=!0}},hide:()=>{window.loading&&t.nextTick((()=>{setTimeout((()=>{var e;const t=document.querySelector(".__fa-loading__box");t&&(null==(e=t.parentNode)||e.removeChild(t)),window.loading=!1}),500)}))}},M={show:(e=0)=>{if(!window.overlay){const t=document.body,o=document.createElement("div");o.className="__fa-overlay",o.style.backgroundColor=`rgba(0, 0, 0, ${e})`,t.insertBefore(o,t.childNodes[0]),window.overlay=!0}},hide:()=>{window.overlay&&t.nextTick((()=>{var e;const t=document.querySelector(".__fa-overlay");t&&(null==(e=t.parentNode)||e.removeChild(t)),window.overlay=!1}))}};n.ElDialog.props={...n.ElDialog.props,draggable:{type:Boolean,default:!0}},n.ElInput.props={...n.ElInput.props,showWordLimit:{type:Boolean,default:!0}};const L=(e,t,o)=>{if((null==(t=t??{})?void 0:t.title)||(t.title="温馨提示"),null==(null==t?void 0:t.draggable)&&(t.draggable=!0),(null==t?void 0:t.cancelButtonText)||(t.cancelButtonText="取消"),(null==t?void 0:t.confirmButtonText)||(t.confirmButtonText="确定"),null==(null==t?void 0:t.closeOnClickModal)&&(t.closeOnClickModal=!1),null==(null==t?void 0:t.closeOnPressEscape)&&(t.closeOnPressEscape=!1),null!=(null==t?void 0:t.beforeClose)){const e=t.beforeClose,o=(null==t?void 0:t.confirmButtonText)??"确定",n=(null==t?void 0:t.showCancelButton)??!1;t.beforeClose=(t,r,i)=>{if("confirm"===t){M.show(0),r.confirmButtonLoading=!0,r.showCancelButton=!1,r.confirmButtonText="加载中...";const a=()=>{r.confirmButtonLoading=!1,r.showCancelButton=n,r.confirmButtonText=o,M.hide()},s=()=>{a(),i()};m(e,t,r,s).then((()=>{s()})).catch((e=>{I("MessageBox",e),a(),T(e)}))}else i()}}switch(o){case"alert":break;case"confirm":case"prompt":null==(null==t?void 0:t.showCancelButton)&&(t.showCancelButton=!0)}return n.ElMessageBox(Object.assign({message:e},t,{boxType:o}))};n.ElMessageBox.alert=(e,t)=>L(e,t,"alert"),n.ElMessageBox.prompt=(e,t)=>L(e,t,"prompt"),n.ElMessageBox.confirm=(e,t)=>L(e,t,"confirm");function B(e){return"function"==typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!t.isVNode(e)}const F={name:{type:String,required:!0},size:[Number,String],color:String},j=g(t.defineComponent({name:"FaIcon",props:F,setup(e,{attrs:r}){const i=t.reactive({isUrl:t.computed((()=>$.External.test(e.name))),style:t.computed((()=>{const t={};return e.size&&(o.isNumber(e.size)?t.size=`${e.size}px`:t.size=e.size),e.color&&(t.color=e.color),i.isUrl&&(t.mask=`url(${e.name}) no-repeat 50% 50%`,t["-webkit-mask"]=`url(${e.name}) no-repeat 50% 50%`),t}))});x((()=>{let o,a;return 0===e.name.indexOf("el-icon-")?t.createVNode(n.ElIcon,t.mergeProps(r,e,{class:"fa-icon"}),B(o=t.h(t.resolveComponent(e.name)))?o:{default:()=>[o]}):0===e.name.indexOf("fa-icon")?t.createVNode(n.ElIcon,t.mergeProps(r,e,{class:"fa-icon"}),B(a=t.h(t.resolveComponent(e.name)))?a:{default:()=>[a]}):i.isUrl?t.createVNode("div",t.mergeProps(r,{class:"el-icon fa-icon url-icon",style:i.style}),null):t.createVNode("i",t.mergeProps(r,{class:[e.name,"el-icon fa-icon"],style:i.style}),null)}))}})),z=[j],H=f({mounted(e,t){e.copyData=t.value,e.__handleClick__=async()=>{if(e.copyData)try{await O.copy(String(e.copyData)),n.ElMessage({type:"success",message:"复制成功"})}catch(t){n.ElMessage({type:"error",message:"复制失败"}),I("CopyDirective","复制失败",t)}},e.addEventListener("click",e.__handleClick__)},updated(e,t){e.copyData=t.value},beforeUnmount(e){e.removeEventListener("click",e.__handleClick__)}},"copy"),R=f({created(e,t,o){e.__debounce_originClick__=o.props.onClick,o.props.onClick=()=>{e.__debounce_timer__&&clearInterval(e.__debounce_timer__),e.__debounce_timer__=setTimeout((()=>{e.__debounce_originClick__()}),500)}}},"debounce"),Z=f({mounted(e){e.style.cursor="move",e.style.position="absolute",e.onmousedown=t=>{const o=t.pageX-e.offsetLeft,n=t.pageY-e.offsetTop;document.onmousemove=t=>{let r=t.pageX-o,i=t.pageY-n;const a=e.parentNode.offsetWidth-e.offsetWidth,s=e.parentNode.offsetHeight-e.offsetHeight;r<0?r=0:r>a&&(r=a),i<0?i=0:i>s&&(i=s),e.style.left=`${r}px`,e.style.top=`${i}px`},document.onmouseup=()=>{document.onmousemove=document.onmouseup=null}}}},"draggable"),J=f({mounted(e,o){if(e.copyData=o.value,!e.copyData)return;const r=t.h(n.ElIcon,{class:"fa-icon-CopyDocument",title:"复制",onClick:async()=>{try{await O.copy(String(e.copyData)),n.ElMessage({type:"success",message:"复制成功"})}catch(t){n.ElMessage({type:"error",message:"复制失败"}),I("CopyDirective","复制失败",t)}}},{default:()=>t.h(i.CopyDocument)}),a=document.createElement("div");t.render(r,a),e.__iconElement__=a.firstChild,e.parentElement.insertBefore(a.firstChild,e)},updated(e,t){e.copyData=t.value},beforeUnmount(e){e.__iconElement__&&e.parentElement.removeChild(e.__iconElement__)}},"iconCopy"),q=f({mounted(e,t){if("function"!=typeof t.value)throw"callback must be a function";let o=null;const n=e=>{e.button&&"click"===e.type&&0!==e.button||null===o&&(o=setTimeout((()=>{(e=>{t.value(e)})(e)}),1e3))},r=()=>{null!==o&&(clearTimeout(o),o=null)};e.addEventListener("mousedown",n),e.addEventListener("touchstart",n),e.addEventListener("click",r),e.addEventListener("mouseout",r),e.addEventListener("touchend",r),e.addEventListener("touchcancel",r)}},"longpress"),V=f({mounted(e,t){if("function"!=typeof t.value)throw"callback must be a function";let o=null;e.__handleClick__=()=>{o&&clearTimeout(o),e.disabled||(e.disabled=!0,t.value(),o=setTimeout((()=>{e.disabled=!1}),1e3))},e.addEventListener("click",e.__handleClick__)},beforeUnmount(e){e.removeEventListener("click",e.__handleClick__)}},"throttle"),W=[H,R,Z,J,q,V],X=Symbol("INSTALLED_KEY"),K={version:"1.4.18",install:(e,t)=>{e[X]||(e[X]=!0,e.config.errorHandler=T,S(),t&&u(t),(e=>{for(const[t,o]of Object.entries(l))e.component(`el-icon-${t}`,o);e.use(n)})(e),(e=>{e.use(a),z.forEach((t=>e.use(t))),W.forEach((t=>e.use(t)))})(e))}},Y=K.install,G=K.version;e.CACHE_EXPIRE_SUFFIX=N,e.CACHE_PREFIX=A,e.DEVICE_ID_KEY=C,e.FaIcon=j,e.FaMimeType={PDF:"application/pdf",Text:"text/plain",Word:"application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document",Excel:"application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,text/csv",Powerpoint:"application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation",ZIP:"application/zip,application/x-zip-compressed",Image:"image/jpeg,image/png,image/gif",Video:"video/mp4,video/mpeg,video/quicktime",Audio:"audio/mpeg,audio/wav",Html:"text/html",Css:"text/css",JavaScript:"application/javascript,text/javascript",Json:"application/json",XML:"application/xml,text/xml"},e.INSTALLED_KEY=X,e.Local=D,e.RegExps=$,e.Session=k,e.base64Util=v,e.clickUtil=E,e.colorUtil=_,e.consoleDebug=(e,t,...o)=>{console.debug(`[Fast-Debug-${e}]`,t,o)},e.consoleError=I,e.consoleLog=(e,t,...o)=>{},e.consoleWarn=b,e.default=K,e.errorHandler=T,e.execAsyncFunction=m,e.fastOptions=c,e.formUtil=P,e.install=Y,e.makeIdentity=S,e.makeSlots=()=>Object,e.setFastOptions=u,e.stringUtil=O,e.useLoading=U,e.useOverlay=M,e.useProps=(e,n,r,i)=>e?t.computed((()=>{const t=n?o.omit(n,r??[]):{};return{...o.pick(e,Object.keys(t)),...i??{}}})):t.computed((()=>({}))),e.useRender=x,e.vCopy=H,e.vDebounce=R,e.vDraggable=Z,e.vIconCopy=J,e.vLongpress=q,e.vThrottle=V,e.version=G,e.withDefineType=e=>e,e.withInstall=g,e.withInstallDirective=f,e.withNoopInstall=e=>(e.install=p,e),Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
2
- //# sourceMappingURL=index.umd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.umd.js","sources":["../../packages/settings/index.ts","../../packages/utils/vue/func.ts","../../packages/utils/vue/install.ts","../../packages/utils/vue/useRender.ts","../../packages/utils/base64.ts","../../packages/utils/click.ts","../../packages/utils/color.ts","../../packages/utils/console.ts","../../packages/constants/regex.ts","../../packages/utils/deviceId.ts","../../packages/utils/errorHandler.ts","../../packages/utils/form.ts","../../packages/utils/storage.ts","../../packages/utils/string.ts","../../packages/hooks/useLoading/index.ts","../../packages/hooks/useOverlay/index.ts","../../packages/fast-element-plus/element-plus.ts","../../packages/components/icon/src/icon.tsx","../../packages/components/icon/index.ts","../../packages/fast-element-plus/component.ts","../../packages/directives/clickCopy/index.ts","../../packages/directives/clickDebounce/index.ts","../../packages/directives/clickDraggable/index.ts","../../packages/directives/clickIconCopy/index.ts","../../packages/directives/clickLongpress/index.ts","../../packages/directives/clickThrottle/index.ts","../../packages/fast-element-plus/directive.ts","../../packages/fast-element-plus/make-installer.ts","../../packages/index.ts","../../packages/fast-element-plus/version.ts","../../packages/fast-element-plus/fast-element-plus.ts","../../packages/constants/mime.ts","../../packages/utils/vue/slots.ts","../../packages/utils/vue/props.ts","../../packages/utils/vue/with.ts"],"sourcesContent":["import { reactive } from \"vue\";\n\n/**\n * 日期范围\n */\nexport type DataRange = \"Past1D\" | \"Past3D\" | \"Past1W\" | \"Past1M\" | \"Past3M\" | \"Past6M\" | \"Past1Y\";\n\n/**\n * Fast 配置选项\n */\nexport type FastOptions = {\n\t/**\n\t * 警告页面数量\n\t * @default 15\n\t */\n\twarnPageNum?: number;\n\t/**\n\t * 存储加密\n\t * @description 请在初始化的时候确认,后续不可再修改,否则所有数据都将失效\n\t * @default true\n\t */\n\tstorageCrypto?: boolean;\n\t/**\n\t * Axios 配置\n\t */\n\taxios?: {\n\t\t/**\n\t\t * 请求域名或者Base路径\n\t\t */\n\t\tbaseUrl?: string;\n\t\t/**\n\t\t * 超时时间,单位毫秒\n\t\t * @default 60000\n\t\t */\n\t\ttimeout?: number;\n\t\t/**\n\t\t * 请求加密解密\n\t\t * @default true\n\t\t */\n\t\trequestCipher?: boolean;\n\t};\n\t/**\n\t * 表格配置\n\t */\n\ttable?: {\n\t\t/**\n\t\t * 显示搜索Form\n\t\t * @default true\n\t\t */\n\t\tshowSearch?: boolean;\n\t\t/**\n\t\t * 隐藏图片\n\t\t * @default true\n\t\t */\n\t\thideImage?: boolean;\n\t\t/**\n\t\t * 时间搜索范围\n\t\t */\n\t\tdataSearchRange?: DataRange;\n\t};\n};\n\n/**\n * 全局 Fast 配置选项\n */\nexport const fastOptions = reactive<FastOptions>({\n\twarnPageNum: 15,\n\tstorageCrypto: true,\n\taxios: {\n\t\tbaseUrl: undefined,\n\t\ttimeout: 60000,\n\t\trequestCipher: true,\n\t},\n\ttable: {\n\t\tshowSearch: true,\n\t\thideImage: true,\n\t\tdataSearchRange: \"Past3D\",\n\t},\n});\n\nconst merge = (target: FastOptions, source: FastOptions): void => {\n\tfor (const key in source) {\n\t\tconst value = source[key];\n\t\tif (value !== undefined && value != null) {\n\t\t\tif (typeof value === \"object\") {\n\t\t\t\ttarget[key] = merge(target[key], source[key]);\n\t\t\t} else {\n\t\t\t\ttarget[key] = source[key];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * 设置 全局 Fast 配置选项\n */\nexport const setFastOptions = (options: FastOptions): void => {\n\tmerge(fastOptions, options);\n};\n","/**\n * 执行异步方法\n * @param fn 要执行的异步方法\n * @param args 参数\n */\n\nimport { consoleError } from \"@fast-element-plus/utils\";\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nconst execAsyncFunction = <T = void>(fn: Function, ...args: any[]): Promise<T> => {\n\tif (!fn) return Promise.resolve(undefined);\n\tif (fn.constructor.name !== \"AsyncFunction\") {\n\t\tconsoleError(\"execAsyncFunction\", \"必须为 Promise 异步方法\");\n\t\tthrow new Error(\"必须为 Promise 异步方法\");\n\t}\n\treturn fn(...args)\n\t\t.then((res) => res)\n\t\t.catch((error) => {\n\t\t\tconsoleError(\"execAsyncFunction\", error);\n\t\t\treturn Promise.reject(error);\n\t\t});\n};\n\nexport { execAsyncFunction };\n","import type { App, Directive, Plugin } from \"vue\";\n\nexport type TSXWithInstall<T> = T & Plugin;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst NOOP = (): void => {};\n\nexport const withInstall = <T, E extends Record<string, any>>(main: T, extra?: E): TSXWithInstall<T> & E => {\n\t(main as TSXWithInstall<T>).install = (app): void => {\n\t\tfor (const comp of [main, ...Object.values(extra ?? {})]) {\n\t\t\tapp.component(comp.name, comp);\n\t\t}\n\t};\n\n\tif (extra) {\n\t\tfor (const [key, comp] of Object.entries(extra)) {\n\t\t\t(main as any)[key] = comp;\n\t\t}\n\t}\n\treturn main as TSXWithInstall<T> & E;\n};\n\nexport const withNoopInstall = <T>(component: T): TSXWithInstall<T> => {\n\t(component as TSXWithInstall<T>).install = NOOP;\n\n\treturn component as TSXWithInstall<T>;\n};\n\nexport const withInstallDirective = <T extends Directive>(directive: T, name: string): TSXWithInstall<T> => {\n\t(directive as TSXWithInstall<T>).install = (app: App): void => {\n\t\tapp.directive(name, directive);\n\t};\n\n\treturn directive as TSXWithInstall<T>;\n};\n","import type { VNode } from \"vue\";\nimport { getCurrentInstance } from \"vue\";\n\n/**\n * 使用渲染\n * @description 为了解决使用 TSX 语法返回渲染函数,状态不会出现在 vue.js devtools 中\n */\nconst useRender = (render: () => VNode): void => {\n\tconst vm = getCurrentInstance() as any;\n\tif (!vm) {\n\t\tthrow new Error(\"useRender must be called from inside a setup function\");\n\t}\n\tvm.render = render;\n};\n\nexport { useRender };\n","/**加密字典 */\nconst base64PwdDic = [\n\t{ index: 977, randomIndex: 188 },\n\t{ index: 926, randomIndex: 201 },\n\t{ index: 851, randomIndex: 225 },\n\t{ index: 700, randomIndex: 255 },\n\t{ index: 600, randomIndex: 268 },\n\t{ index: 500, randomIndex: 277 },\n\t{ index: 400, randomIndex: 288 },\n\t{ index: 330, randomIndex: 327 },\n\t{ index: 300, randomIndex: 180 },\n\t{ index: 200, randomIndex: 178 },\n\t{ index: 100, randomIndex: 124 },\n\t// 100 以内字典\n\t{ index: 98, randomIndex: 95 },\n\t{ index: 92, randomIndex: 90 },\n\t{ index: 91, randomIndex: 87 },\n\t{ index: 88, randomIndex: 84 },\n\t{ index: 82, randomIndex: 79 },\n\t{ index: 78, randomIndex: 71 },\n\t{ index: 72, randomIndex: 69 },\n\t{ index: 68, randomIndex: 66 },\n\t{ index: 59, randomIndex: 55 },\n\t{ index: 48, randomIndex: 43 },\n\t{ index: 42, randomIndex: 37 },\n\t{ index: 36, randomIndex: 30 },\n\t{ index: 33, randomIndex: 27 },\n\t{ index: 24, randomIndex: 20 },\n\t{ index: 23, randomIndex: 18 },\n\t{ index: 21, randomIndex: 16 },\n\t{ index: 17, randomIndex: 14 },\n\t{ index: 13, randomIndex: 9 },\n\t{ index: 7, randomIndex: 4 },\n\t{ index: 5, randomIndex: 3 },\n\t{ index: 2, randomIndex: 1 },\n];\n\n/**随机字符串长度 */\nconst randomPrefixStrLength = 6;\n\n/**随机字符串 */\nconst randomStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n\n/**\n * 在Base64字符串中添加加密字典\n */\nfunction insertRandomStrToBase64Str(base64Str: string): string {\n\tlet strResult = base64Str;\n\tconst items = base64PwdDic.sort((a, b) => {\n\t\treturn b.index - a.index;\n\t});\n\titems.forEach((item) => {\n\t\tif (item.index < base64Str.length) {\n\t\t\tconst randomChar = base64Str[item.randomIndex];\n\t\t\tstrResult = strResult.slice(0, item.index) + randomChar + strResult.slice(item.index);\n\t\t}\n\t});\n\treturn strResult;\n}\n\n/**\n * 删除Base64字符串中的加密字典\n */\nfunction removeBase64StrRandomStr(base64Str: string): string {\n\tconst items = base64PwdDic.sort((a, b) => {\n\t\treturn a.index - b.index;\n\t});\n\tlet strResult = base64Str;\n\titems.forEach((item) => {\n\t\tif (item.index < base64Str.length) {\n\t\t\tstrResult = strResult.slice(0, item.index) + strResult.slice(item.index + 1);\n\t\t}\n\t});\n\treturn strResult;\n}\n\n/**\n * 得到随机字符串\n */\nfunction getRandomStr(str = randomStr, prefixStrLength = randomPrefixStrLength): string {\n\tlet result = \"\";\n\tfor (let i = 0; i < prefixStrLength; i++) {\n\t\tconst randomInt = Math.ceil(Math.random() * (str.length - 1));\n\t\tconst randomChar = str[randomInt];\n\t\tresult += randomChar;\n\t}\n\treturn result;\n}\n\nexport const base64Util = {\n\t/**\n\t * 字符串ToBase64\n\t */\n\ttoBase64(str: string, prefixStrLength = randomPrefixStrLength): string {\n\t\tif (str.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tconst randomPrefixStr = getRandomStr();\n\t\tlet base64 = btoa(encodeURIComponent(str));\n\t\tif (prefixStrLength !== 0) {\n\t\t\tbase64 = insertRandomStrToBase64Str(base64);\n\t\t}\n\t\treturn randomPrefixStr + base64;\n\t},\n\n\t/**\n\t * Base64转字符串\n\t */\n\tbase64ToStr(str: string, prefixStrLength = randomPrefixStrLength): string {\n\t\tlet result = str;\n\t\tif (str.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tlet input = str.slice(prefixStrLength);\n\t\tif (prefixStrLength !== 0) {\n\t\t\tinput = removeBase64StrRandomStr(input);\n\t\t}\n\t\tresult = atob(input);\n\t\treturn decodeURIComponent(result);\n\t},\n};\n","let _debounceTimeout: any = null,\n\t_throttleRunning: any = false;\n\nexport const clickUtil = {\n\t/**\n\t * 防抖\n\t * @param {Function} 执行函数\n\t * @param {Number} delay 延时ms\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n\tdebounce(fn: Function, delay = 500): void {\n\t\tclearTimeout(_debounceTimeout);\n\t\t_debounceTimeout = setTimeout(() => {\n\t\t\tfn();\n\t\t}, delay);\n\t},\n\t/**\n\t * 节流\n\t * @param {Function} 执行函数\n\t * @param {Number} delay 延时ms\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n\tthrottle(fn: Function, delay = 500): void {\n\t\tif (_throttleRunning) {\n\t\t\treturn;\n\t\t}\n\t\t_throttleRunning = true;\n\t\tfn();\n\t\tsetTimeout(() => {\n\t\t\t_throttleRunning = false;\n\t\t}, delay);\n\t},\n};\n","import type { MessageHandler } from \"element-plus\";\nimport { ElMessage } from \"element-plus\";\n\nexport const colorUtil = {\n\t/**\n\t * hex颜色转rgb颜色\n\t * @param str 颜色值字符串\n\t * @returns 返回处理后的颜色值\n\t */\n\thexToRgb(str: any): any {\n\t\tlet hex: any = \"\";\n\t\tconst reg = /^#?[0-9A-Fa-f]{6}$/;\n\t\tif (!reg.test(str)) {\n\t\t\tElMessage.warning(\"输入错误的hex\");\n\t\t\treturn;\n\t\t}\n\t\tstr = str.replace(\"#\", \"\");\n\t\thex = str.match(/../g);\n\t\tfor (let i = 0; i < 3; i++) hex[i] = parseInt(hex[i], 16);\n\t\treturn hex;\n\t},\n\t/**\n\t * rgb颜色转Hex颜色\n\t * @param r 代表红色\n\t * @param g 代表绿色\n\t * @param b 代表蓝色\n\t * @returns 返回处理后的颜色值\n\t */\n\trgbToHex(r: any, g: any, b: any): string | MessageHandler {\n\t\tconst reg = /^\\d{1,3}$/;\n\t\tif (!reg.test(r) || !reg.test(g) || !reg.test(b)) {\n\t\t\tElMessage.warning(\"输入错误的rgb颜色值\");\n\t\t\treturn;\n\t\t}\n\t\tconst hex = [r.toString(16), g.toString(16), b.toString(16)];\n\t\tfor (let i = 0; i < 3; i++) if (hex[i].length == 1) hex[i] = `0${hex[i]}`;\n\t\treturn `#${hex.join(\"\")}`;\n\t},\n\t/**\n\t * 加深颜色值\n\t * @param color 颜色值字符串\n\t * @param level 加深的程度,限0-1之间\n\t * @returns 返回处理后的颜色值\n\t */\n\tgetDarkColor(color: string, level: number): string | MessageHandler {\n\t\tconst reg = /^#?[0-9A-Fa-f]{6}$/;\n\t\tif (!reg.test(color)) {\n\t\t\tElMessage.warning(\"输入错误的hex颜色值\");\n\t\t\treturn;\n\t\t}\n\t\tconst rgb = this.hexToRgb(color);\n\t\tfor (let i = 0; i < 3; i++) rgb[i] = Math.round(20.5 * level + rgb[i] * (1 - level));\n\t\treturn this.rgbToHex(rgb[0], rgb[1], rgb[2]);\n\t},\n\t/**\n\t * 变浅颜色值\n\t * @param color 颜色值字符串\n\t * @param level 加深的程度,限0-1之间\n\t * @returns 返回处理后的颜色值\n\t */\n\tgetLightColor(color: string, level: number): string | MessageHandler {\n\t\tconst reg = /^#?[0-9A-Fa-f]{6}$/;\n\t\tif (!reg.test(color)) {\n\t\t\tElMessage.warning(\"输入错误的hex颜色值\");\n\t\t\treturn;\n\t\t}\n\t\tconst rgb = this.hexToRgb(color);\n\t\tfor (let i = 0; i < 3; i++) rgb[i] = Math.round(255 * level + rgb[i] * (1 - level));\n\t\treturn this.rgbToHex(rgb[0], rgb[1], rgb[2]);\n\t},\n};\n","/**\n * 打印 Log 日志\n * @param name 来源名称\n */\nconst consoleLog = (name: string, message?: any, ...optionalParams: any[]): void => {\n\t// eslint-disable-next-line no-console\n\tconsole.log(`[Fast-Log-${name}]`, message, optionalParams);\n};\n\n/**\n * 打印 Warn 日志\n * @param name 来源名称\n */\nconst consoleWarn = (name: string, message?: any, ...optionalParams: any[]): void => {\n\t// eslint-disable-next-line no-console\n\tconsole.warn(`[Fast-Warn-${name}]`, message, optionalParams);\n};\n\n/**\n * 打印 Error 日志\n * @param name 来源名称\n */\nconst consoleError = (name: string, message?: any, ...optionalParams: any[]): void => {\n\t// eslint-disable-next-line no-console\n\tconsole.error(`[Fast-Error-${name}]`, message, optionalParams);\n};\n\n/**\n * 打印 Debug 日志\n * @param name 来源名称\n */\nconst consoleDebug = (name: string, message?: any, ...optionalParams: any[]): void => {\n\t// eslint-disable-next-line no-console\n\tconsole.debug(`[Fast-Debug-${name}]`, message, optionalParams);\n};\n\nexport { consoleLog, consoleWarn, consoleError, consoleDebug };\n","/**\n * 正则表达式\n */\nexport const RegExps = {\n\t/**\n\t * UUID\n\t */\n\tUUID: /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n\t/**\n\t * 手机号\n\t */\n\tMobile: /^(?:(?:\\+|00)86)?1\\d{10}$/,\n\t/**\n\t * 电话\n\t */\n\tPhone: /^(?:(?:\\d{3}-)?\\d{8}|^(?:\\d{4}-)?\\d{7,8})(?:-\\d+)?$/,\n\t/**\n\t * 邮箱\n\t */\n\tEmail: /^[a-zA-Z0-9_-]+@([a-zA-Z0-9]+\\.)+(com|cn|net|org)$/,\n\t/**\n\t * 身份证\n\t */\n\tIdCard: /(^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{2}[0-9Xx]$)/,\n\t/**\n\t * 外部链接\n\t * 匹配http、https、mailto、tel和ftp开头的链接\n\t */\n\tExternal: /^(https?:|mailto:|tel:|ftp:)/,\n\t/**\n\t * Url\n\t */\n\tUrl: /^(https?|ftp):\\/\\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+\\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\\/($|[a-zA-Z0-9.,?'\\\\+&%$#=~_-]+))*$/,\n\t/**\n\t * 车牌号\n\t */\n\tCarNumber: /^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新军使领]{1}[A-HJ-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/,\n\t/**\n\t * 新能源车牌号\n\t */\n\tNewEnergyCarNumber:\n\t\t/^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新军使领]{1}[A-HJ-Z]{1}(([0-9]{5}[DF]$)|([ABCDE][A-HJ-NP-Z0-9][0-9]{3}[0-9挂学警港澳]{1}$)|([FGHJK][A-HJ-NP-Z0-9][0-9]{3}[0-9挂学警港澳]{1}$))/,\n\t/**\n\t * 邮政编码\n\t */\n\tPostCode: /^[1-9]\\d{5}$/,\n\t/**\n\t * ipv4\n\t */\n\tIpv4: /^([01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.([01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.([01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.([01]?\\d{1,2}|2[0-4]\\d|25[0-5])$/,\n\t/**\n\t * 护照\n\t */\n\tPassport: /^[EeGg]\\d{8}$/,\n\t/**\n\t * 港澳通行证\n\t */\n\tHKMacauPass: /^[HMhm]\\d{8}$/,\n\t/**\n\t * 账号(6-20位字母或数字,必须以字母开头,不能全为数字)\n\t */\n\tAccount: /^[a-zA-Z][a-zA-Z\\d]{5,19}$/,\n\t/**\n\t * 弱密码(只包含字母和数字,长度为6到18位)\n\t */\n\tPassword: /^[A-Za-z0-9]{6,18}$/,\n\t/**\n\t * 强密码(8到20位,包含大小写字母、数字及特殊字符)\n\t */\n\tStrongPassword: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[\\W_])[A-Za-z\\d\\W_]{8,20}$/,\n\t/**\n\t * 中文字符\n\t */\n\tChinese: /^[\\u4E00-\\u9FA5]+$/,\n\t/**\n\t * 英文字符\n\t */\n\tEnglish: /^[a-zA-Z]+$/,\n};\n","import { RegExps } from \"@fast-element-plus/constants\";\nimport { Local, stringUtil } from \"@fast-element-plus/utils\";\n\n/**\n * 设备Id Key\n */\nexport const DEVICE_ID_KEY = \"__DEVICE_ID\";\n\n/**\n * 生成设备唯一标识(不安全)\n * @description 如果存在,则返回已经生成的唯一标识\n */\nexport const makeIdentity = (deviceId?: string): string => {\n\tif (deviceId && RegExps.UUID.test(deviceId)) {\n\t\tLocal.set(DEVICE_ID_KEY, deviceId);\n\t\twindow.deviceId = deviceId;\n\t\treturn deviceId;\n\t}\n\t// 生成浏览器唯一 UUID\n\tdeviceId = Local.get(DEVICE_ID_KEY);\n\tif (deviceId && RegExps.UUID.test(deviceId)) {\n\t\twindow.deviceId = deviceId;\n\t\treturn deviceId;\n\t}\n\tdeviceId = stringUtil.generateUUID();\n\tLocal.set(DEVICE_ID_KEY, deviceId);\n\twindow.deviceId = deviceId;\n\treturn deviceId;\n};\n","import { nextTick } from \"vue\";\nimport { consoleError, consoleWarn } from \"@fast-element-plus/utils\";\nimport { AxiosError } from \"axios\";\nimport { ElNotification } from \"element-plus\";\n\n/**\n * 全局异常捕获\n */\nexport const errorHandler = (error: any): boolean => {\n\tif (!error) return;\n\t// 过滤 Axios 错误\n\tif (error instanceof AxiosError) {\n\t\treturn false;\n\t}\n\tconst errorMap: any = {\n\t\tInternalError: \"Javascript引擎内部错误\",\n\t\tReferenceError: \"未找到对象\",\n\t\tTypeError: \"使用了错误的类型或对象\",\n\t\tRangeError: \"使用内置对象时,参数超范围\",\n\t\tSyntaxError: \"语法错误\",\n\t\tEvalError: \"错误的使用了Eval\",\n\t\tURIError: \"URI错误\",\n\t\tAggregateError: \"未知的多个错误\",\n\t\tTimeoutError: \"操作超时\",\n\t\tNetworkError: \"网络错误\",\n\t\tOutOfMemoryError: \"内存溢出\",\n\t};\n\tif (error === \"cancel\") {\n\t\tconsoleWarn(\"Cancel\", \"操作已取消\");\n\t} else {\n\t\tconst errorName = errorMap[error.name] || \"未知错误\";\n\t\tconsoleError(\"Handler\", error);\n\t\tnextTick(() => {\n\t\t\tElNotification({\n\t\t\t\ttitle: \"系统错误\",\n\t\t\t\tmessage: errorName,\n\t\t\t\tduration: 3000,\n\t\t\t\tposition: \"top-right\",\n\t\t\t});\n\t\t});\n\t}\n};\n","import type { Ref } from \"vue\";\nimport { RegExps } from \"@fast-element-plus/constants\";\nimport { consoleWarn } from \"@fast-element-plus/utils\";\nimport type { ElForm, FormItemRule, FormValidationResult } from \"element-plus\";\n\nexport const formUtil = {\n\t/**\n\t * ElForm 表单验证\n\t * @param elFormRef ElForm 组件ref\n\t */\n\tvalidate(elFormRef: Ref<InstanceType<typeof ElForm>>): FormValidationResult {\n\t\treturn new Promise<boolean>((resolve, reject) => {\n\t\t\telFormRef.value.validate((isValid: boolean, invalidFields?) => {\n\t\t\t\tif (isValid) {\n\t\t\t\t\tresolve(isValid);\n\t\t\t\t} else {\n\t\t\t\t\tif (invalidFields) {\n\t\t\t\t\t\tconsoleWarn(\"formUtil\", invalidFields);\n\t\t\t\t\t}\n\t\t\t\t\treject(isValid);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t},\n\t/**\n\t * ElForm 表单验证,带滚动\n\t * @param elFormRef ElForm 组件ref\n\t */\n\tvalidateScrollToField(elFormRef: Ref<InstanceType<typeof ElForm>>): FormValidationResult {\n\t\treturn new Promise<boolean>((resolve, reject) => {\n\t\t\telFormRef.value.validate((isValid: boolean, invalidFields?) => {\n\t\t\t\tif (isValid) {\n\t\t\t\t\tresolve(isValid);\n\t\t\t\t} else {\n\t\t\t\t\telFormRef.value.scrollToField(Object.keys(invalidFields));\n\t\t\t\t\tif (invalidFields) {\n\t\t\t\t\t\tconsoleWarn(\"formUtil\", invalidFields);\n\t\t\t\t\t}\n\t\t\t\t\treject(isValid);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t},\n\t/**\n\t * 手机号\n\t */\n\tmobile(rule: any, value: string, callback: any): void {\n\t\tif (!value) {\n\t\t\tcallback(new Error(\"请输入手机号码\"));\n\t\t} else if (RegExps.Mobile.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入正确的手机号码\"));\n\t\t}\n\t},\n\t/**\n\t * 电话号码\n\t */\n\tphone(rule: any, value: string, callback: any): void {\n\t\tif (!value) {\n\t\t\tcallback();\n\t\t} else if (RegExps.Phone.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入正确的电话号码\"));\n\t\t}\n\t},\n\t/**\n\t * 邮箱\n\t */\n\temail(rule: any, value: string, callback: any): void {\n\t\tif (!value) {\n\t\t\tcallback();\n\t\t} else if (RegExps.Email.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入正确的邮箱地址\"));\n\t\t}\n\t},\n\t/**\n\t * 身份证\n\t */\n\tidCard(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.IdCard.test(value) || !value) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入正确的身份证号码\"));\n\t\t}\n\t},\n\t/**\n\t * 车牌号\n\t */\n\tcarNumber(rule: any, value: string, callback: any): void {\n\t\tlet success = false;\n\t\tif (value?.length === 7) {\n\t\t\tsuccess = RegExps.CarNumber.test(value);\n\t\t} else if (value?.length === 8) {\n\t\t\tsuccess = RegExps.NewEnergyCarNumber.test(value);\n\t\t}\n\t\tif (success) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入正确的车牌号码\"));\n\t\t}\n\t},\n\t/**\n\t * editor 必填\n\t */\n\teditorRequired(rule: any, value: string, callback: any): void {\n\t\tif (value == \"<p><br></p>\") {\n\t\t\treturn callback(new Error(\"内容不能为空\"));\n\t\t}\n\t\treturn callback();\n\t},\n\t/**\n\t * 外部链接\n\t */\n\texternal(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.External.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入正确的外部链接\"));\n\t\t}\n\t},\n\t/**\n\t * 有效的URL\n\t */\n\turl(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.Url.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入有效的Url\"));\n\t\t}\n\t},\n\t/**\n\t * 邮政编码\n\t */\n\tpostCode(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.PostCode.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入有效的邮政编码\"));\n\t\t}\n\t},\n\t/**\n\t * 账号(6-20位字母或数字,必须以字母开头,不能全为数字)\n\t */\n\taccount(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.Account.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入有效的账号(6-20位字母或数字,必须以字母开头,不能全为数字)\"));\n\t\t}\n\t},\n\t/**\n\t * 弱密码(只包含字母和数字,长度为6到18位)\n\t */\n\tpassword(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.Password.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入有效的密码(只包含字母和数字,长度为6到18位)\"));\n\t\t}\n\t},\n\t/**\n\t * 强密码(8到20位,包含大小写字母、数字及特殊字符)\n\t */\n\tstrongPassword(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.StrongPassword.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入有效的密码(8到20位,包含大小写字母、数字及特殊字符)\"));\n\t\t}\n\t},\n\t/**\n\t * 中文字符\n\t */\n\tchinese(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.Chinese.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入有效的中文字符\"));\n\t\t}\n\t},\n\t/**\n\t * 英文字符\n\t */\n\tenglish(rule: any, value: string, callback: any): void {\n\t\tif (RegExps.English.test(value)) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\tcallback(new Error(\"请输入有效的英文字符\"));\n\t\t}\n\t},\n\t/**\n\t * 文本框必填\n\t */\n\tinputRequired(message: string, trigger = \"blur\"): FormItemRule {\n\t\treturn {\n\t\t\trequired: true,\n\t\t\tmessage,\n\t\t\ttrigger,\n\t\t};\n\t},\n\t/**\n\t * 选择器必选\n\t */\n\tselectRequired(message: string, trigger = \"change\"): FormItemRule {\n\t\treturn {\n\t\t\trequired: true,\n\t\t\tmessage,\n\t\t\ttrigger,\n\t\t};\n\t},\n};\n","/**\n * 本地缓存\n */\n\nimport { fastOptions } from \"@fast-element-plus/settings\";\nimport { base64Util, consoleError } from \"@fast-element-plus/utils\";\n\n/**\n * 本地缓存前缀 Key\n */\nexport const CACHE_PREFIX = \"fast__\";\n\n/**\n * 本地缓存过期值后缀 Key\n */\nexport const CACHE_EXPIRE_SUFFIX = \"__Expire\";\n\n/**\n * window.localStorage\n */\nexport const Local = {\n\t/**\n\t * 设置\n\t * @param key 缓存的Key\n\t * @param val 缓存值\n\t * @param expire 过期时间,单位分钟\n\t * @param encrypt 是否对缓存的数据加密\n\t */\n\tset(key: string, val: any, expire?: number, encrypt?: boolean): void {\n\t\ttry {\n\t\t\tencrypt ??= fastOptions.storageCrypto;\n\t\t\t// 判断是否存在缓存过期时间\n\t\t\tif (expire) {\n\t\t\t\tif (isNaN(expire) || expire < 1) {\n\t\t\t\t\tthrow new Error(\"有效期应为一个有效数值\");\n\t\t\t\t}\n\t\t\t\t// 设置过期时间的缓存\n\t\t\t\tconst expireData = {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\texpire,\n\t\t\t\t};\n\t\t\t\tconst expireJson = JSON.stringify(expireData);\n\t\t\t\twindow.localStorage.setItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`, expireJson);\n\t\t\t}\n\t\t\tlet valJson = JSON.stringify(val);\n\t\t\tif (encrypt) {\n\t\t\t\tvalJson = base64Util.toBase64(valJson);\n\t\t\t}\n\t\t\twindow.localStorage.setItem(`${CACHE_PREFIX}${key}`, valJson);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 获取\n\t * @param key 缓存的Key\n\t * @param decrypt 是否对缓存的数据解密\n\t * @returns {T} 传入的对象类型,默认为 string\n\t */\n\tget<T = string>(key: string, decrypt?: boolean): T {\n\t\ttry {\n\t\t\tdecrypt ??= fastOptions.storageCrypto;\n\t\t\t// 获取缓存 JSON 字符串\n\t\t\tlet valJson = window.localStorage.getItem(`${CACHE_PREFIX}${key}`);\n\t\t\tif (valJson) {\n\t\t\t\t// 判断是否解密\n\t\t\t\tif (decrypt) {\n\t\t\t\t\tvalJson = base64Util.base64ToStr(valJson);\n\t\t\t\t}\n\t\t\t\t// 尝试获取缓存过期时间的 JSON 字符串\n\t\t\t\tconst expireJson = window.localStorage.getItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`);\n\t\t\t\t// 判断是否存在过期时间\n\t\t\t\tif (expireJson) {\n\t\t\t\t\tconst expireData = JSON.parse(expireJson) as anyObj;\n\t\t\t\t\tif (Date.now() > expireData.time + expireData.expire * 60 * 1000) {\n\t\t\t\t\t\t// 过期了,删除对应的缓存数据\n\t\t\t\t\t\twindow.localStorage.removeItem(`${CACHE_PREFIX}${key}`);\n\t\t\t\t\t\twindow.localStorage.removeItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.parse(valJson) as T;\n\t\t\t\t} catch {\n\t\t\t\t\treturn valJson as T;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除\n\t * @param key 缓存的Key\n\t */\n\tremove(key: string): void {\n\t\ttry {\n\t\t\twindow.localStorage.removeItem(`${CACHE_PREFIX}${key}`);\n\t\t\twindow.localStorage.removeItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 根据前缀移除\n\t * @param key 缓存的Key\n\t */\n\tremoveByPrefix(key: string): void {\n\t\ttry {\n\t\t\tfor (const itemKey in window.localStorage) {\n\t\t\t\tif (itemKey.indexOf(`${CACHE_PREFIX}${key}`) !== -1) {\n\t\t\t\t\twindow.localStorage.removeItem(itemKey);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除全部\n\t */\n\tclear(): void {\n\t\ttry {\n\t\t\twindow.localStorage.clear();\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n};\n\n/**\n * window.sessionStorage\n */\nexport const Session = {\n\t/**\n\t * 设置会话缓存\n\t * @param key 缓存的Key\n\t * @param val 缓存值\n\t * @param expire 过期时间,单位分钟\n\t * @param encrypt 是否对缓存的数据加密\n\t */\n\tset(key: string, val: any, expire?: number, encrypt?: boolean): void {\n\t\ttry {\n\t\t\tencrypt ??= fastOptions.storageCrypto;\n\t\t\t// 判断是否存在缓存过期时间\n\t\t\tif (expire) {\n\t\t\t\tif (isNaN(expire) || expire < 1) {\n\t\t\t\t\tthrow new Error(\"有效期应为一个有效数值\");\n\t\t\t\t}\n\t\t\t\t// 设置过期时间的缓存\n\t\t\t\tconst expireData = {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\texpire,\n\t\t\t\t};\n\t\t\t\tconst expireJson = JSON.stringify(expireData);\n\t\t\t\twindow.sessionStorage.setItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`, expireJson);\n\t\t\t}\n\t\t\tlet valJson = JSON.stringify(val);\n\t\t\tif (encrypt) {\n\t\t\t\tvalJson = base64Util.toBase64(valJson);\n\t\t\t}\n\t\t\twindow.sessionStorage.setItem(`${CACHE_PREFIX}${key}`, valJson);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 获取会话缓存\n\t * @param key 缓存的Key\n\t * @param decrypt 是否对缓存的数据解密\n\t * @returns {T} 传入的对象类型,默认为 string\n\t */\n\tget<T = string>(key: string, decrypt?: boolean): T {\n\t\ttry {\n\t\t\tdecrypt ??= fastOptions.storageCrypto;\n\t\t\t// 获取缓存 JSON 字符串\n\t\t\tlet valJson = window.sessionStorage.getItem(`${CACHE_PREFIX}${key}`);\n\t\t\tif (valJson) {\n\t\t\t\t// 判断是否解密\n\t\t\t\tif (decrypt) {\n\t\t\t\t\tvalJson = base64Util.base64ToStr(valJson);\n\t\t\t\t}\n\t\t\t\t// 尝试获取缓存过期时间的 JSON 字符串\n\t\t\t\tconst expireJson = window.sessionStorage.getItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`);\n\t\t\t\t// 判断是否存在过期时间\n\t\t\t\tif (expireJson) {\n\t\t\t\t\tconst expireData = JSON.parse(expireJson) as anyObj;\n\t\t\t\t\tif (Date.now() > expireData.time + expireData.expire * 60 * 1000) {\n\t\t\t\t\t\t// 过期了,删除对应的缓存数据\n\t\t\t\t\t\twindow.sessionStorage.removeItem(`${CACHE_PREFIX}${key}`);\n\t\t\t\t\t\twindow.sessionStorage.removeItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.parse(valJson) as T;\n\t\t\t\t} catch {\n\t\t\t\t\treturn valJson as T;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除会话缓存\n\t * @param key 缓存的Key\n\t */\n\tremove(key: string): void {\n\t\ttry {\n\t\t\twindow.sessionStorage.removeItem(`${CACHE_PREFIX}${key}`);\n\t\t\twindow.sessionStorage.removeItem(`${CACHE_PREFIX}${key}${CACHE_EXPIRE_SUFFIX}`);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 根据前缀移除会话缓存\n\t * @param key 缓存的Key\n\t */\n\tremoveByPrefix(key: string): void {\n\t\ttry {\n\t\t\tfor (const itemKey in window.sessionStorage) {\n\t\t\t\tif (itemKey.indexOf(`${CACHE_PREFIX}${key}`) !== -1) {\n\t\t\t\t\twindow.sessionStorage.removeItem(itemKey);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除全部会话缓存\n\t */\n\tclear(): void {\n\t\ttry {\n\t\t\twindow.sessionStorage.clear();\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n};\n","import { isString } from \"lodash-es\";\n\n/**\n * 字符串工具类\n */\nexport const stringUtil = {\n\t/**\n\t * 根据当前时间生成问候语\n\t */\n\tgetGreet(): string {\n\t\tconst now = new Date();\n\t\tconst hour = now.getHours();\n\t\tlet greet = \"\";\n\n\t\tif (hour < 5) {\n\t\t\tgreet = \"夜深了,注意身体哦!\";\n\t\t} else if (hour < 9) {\n\t\t\tgreet = \"早上好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 12) {\n\t\t\tgreet = \"上午好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 14) {\n\t\t\tgreet = \"中午好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 18) {\n\t\t\tgreet = \"下午好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 24) {\n\t\t\tgreet = \"晚上好!\" + \"欢迎回来!\";\n\t\t} else {\n\t\t\tgreet = \"您好!\" + \"欢迎回来!\";\n\t\t}\n\t\treturn greet;\n\t},\n\t/**\n\t * 对象URL参数化\n\t */\n\tobjectToQueryString(obj: any): string {\n\t\tlet params = \"\";\n\t\tfor (const key in obj) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(obj, key)) {\n\t\t\t\tif (params !== \"\") {\n\t\t\t\t\tparams += \"&\";\n\t\t\t\t}\n\t\t\t\tparams += `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`;\n\t\t\t}\n\t\t}\n\t\treturn params;\n\t},\n\t/**\n\t * 获取Url参数\n\t */\n\tgetUrlParams(url: string): Record<string, any> {\n\t\tconst regex = /[?&][^=?&]+=[^?&]+/g;\n\t\tconst params: Record<string, any> = {};\n\n\t\tlet match;\n\t\twhile ((match = regex.exec(url)) !== null) {\n\t\t\tconst [key, value] = match[0].substring(1).split(\"=\");\n\t\t\tparams[key] = decodeURIComponent(value);\n\t\t}\n\n\t\treturn params;\n\t},\n\t/**\n\t * 是否为JSON字符串\n\t */\n\tisJson(value: string): boolean {\n\t\tif (!isString(value)) return false;\n\n\t\tvalue = value.replace(/\\s/g, \"\").replace(/\\n|\\r/, \"\");\n\n\t\tif (/^\\{(.*?)\\}$/.test(value)) return /\"(.*?)\":(.*?)/g.test(value);\n\n\t\tif (/^\\[(.*?)\\]$/.test(value)) {\n\t\t\treturn value\n\t\t\t\t.replace(/^\\[/, \"\")\n\t\t\t\t.replace(/\\]$/, \"\")\n\t\t\t\t.replace(/},{/g, \"}\\n{\")\n\t\t\t\t.split(/\\n/)\n\t\t\t\t.map((s) => {\n\t\t\t\t\treturn stringUtil.isJson(s);\n\t\t\t\t})\n\t\t\t\t.reduce((prev, curr) => {\n\t\t\t\t\treturn !!curr;\n\t\t\t\t});\n\t\t}\n\n\t\treturn false;\n\t},\n\t/**\n\t * 生成随机字符串\n\t */\n\tgenerateRandomString(length: number): string {\n\t\tconst characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\t\tlet randomString = \"\";\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst randomIndex = Math.floor(Math.random() * characters.length);\n\t\t\trandomString += characters.charAt(randomIndex);\n\t\t}\n\t\treturn randomString;\n\t},\n\t/**\n\t * @description 生成唯一 uuid\n\t */\n\tgenerateUUID(): string {\n\t\tlet uuid = \"\";\n\t\tfor (let i = 0; i < 32; i++) {\n\t\t\tconst random = (Math.random() * 16) | 0;\n\t\t\tif (i === 8 || i === 12 || i === 16 || i === 20) uuid += \"-\";\n\t\t\tuuid += (i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random).toString(16);\n\t\t}\n\t\treturn uuid;\n\t},\n\t/**\n\t * 复制\n\t */\n\tasync copy(value: string): Promise<void> {\n\t\t// navigator.clipboard 需要https等安全上下文\n\t\tif (navigator?.clipboard && window.isSecureContext) {\n\t\t\tawait navigator.clipboard.writeText(value);\n\t\t} else {\n\t\t\tconst textareaEl = document.createElement(\"textarea\");\n\t\t\ttextareaEl.value = value;\n\t\t\t// 使文本域不显示\n\t\t\ttextareaEl.style.position = \"absolute\";\n\t\t\ttextareaEl.style.opacity = \"0\";\n\t\t\ttextareaEl.style.left = \"-999999px\";\n\t\t\ttextareaEl.style.top = \"-999999px\";\n\t\t\tdocument.body.appendChild(textareaEl);\n\t\t\ttextareaEl.focus();\n\t\t\ttextareaEl.select();\n\t\t\tdocument.execCommand(\"copy\");\n\t\t\ttextareaEl.remove();\n\t\t}\n\t},\n};\n","import { nextTick } from \"vue\";\n\nexport const useLoading = {\n\tshow: (): void => {\n\t\t// 判断是否存在加载效果\n\t\tif (!window.loading) {\n\t\t\tconst bodyEl: Element = document.body;\n\t\t\tconst div = document.createElement(\"div\");\n\t\t\tdiv.className = \"__fa-loading\";\n\t\t\tdiv.innerHTML = `\n<div class=\"__fa-loading__box\">\n\t<div class=\"__fa-loading__box-warp\">\n\t\t\t<div class=\"__fa-loading__box-warp__item\"></div>\n\t</div>\n</div>\n`;\n\t\t\tbodyEl.insertBefore(div, bodyEl.childNodes[0]);\n\t\t\twindow.loading = true;\n\t\t}\n\t},\n\thide: (): void => {\n\t\t// 判断是否存在加载效果\n\t\tif (window.loading) {\n\t\t\tnextTick(() => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst loadingEl = document.querySelector(\".__fa-loading__box\");\n\t\t\t\t\tloadingEl && loadingEl.parentNode?.removeChild(loadingEl);\n\t\t\t\t\twindow.loading = false;\n\t\t\t\t}, 500);\n\t\t\t});\n\t\t}\n\t},\n};\n","import { nextTick } from \"vue\";\n\nexport const useOverlay = {\n\tshow: (transparent = 0): void => {\n\t\t// 判断是否存在遮罩层\n\t\tif (!window.overlay) {\n\t\t\tconst bodyEl: Element = document.body;\n\t\t\tconst div = document.createElement(\"div\");\n\t\t\tdiv.className = \"__fa-overlay\";\n\t\t\tdiv.style.backgroundColor = `rgba(0, 0, 0, ${transparent})`;\n\t\t\tbodyEl.insertBefore(div, bodyEl.childNodes[0]);\n\t\t\twindow.overlay = true;\n\t\t}\n\t},\n\thide: (): void => {\n\t\t// 判断是否存在遮罩层\n\t\tif (window.overlay) {\n\t\t\tnextTick(() => {\n\t\t\t\tconst loadingEl = document.querySelector(\".__fa-overlay\");\n\t\t\t\tloadingEl && loadingEl.parentNode?.removeChild(loadingEl);\n\t\t\t\twindow.overlay = false;\n\t\t\t});\n\t\t}\n\t},\n};\n","/** Element Plus 组件全局配置 */\n\nimport type { App } from \"vue\";\nimport * as ElementPlusIconsVue from \"@element-plus/icons-vue\";\nimport { useOverlay } from \"@fast-element-plus/hooks\";\nimport { consoleError, errorHandler, execAsyncFunction } from \"@fast-element-plus/utils\";\nimport type { Action, ElMessageBoxOptions, MessageBoxData, MessageBoxState } from \"element-plus\";\nimport ElementPlus, { ElDialog, ElInput, ElMessageBox } from \"element-plus\";\n\n// ELDialog 默认拖拽\nElDialog.props = {\n\t...ElDialog.props,\n\tdraggable: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n};\n\n// ELInput 默认显示统计字数\nElInput.props = {\n\t...ElInput.props,\n\tshowWordLimit: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n};\n\n// ElMessageBox 默认配置\nconst elMessageBox = (\n\tmessage: ElMessageBoxOptions[\"message\"],\n\toptions: ElMessageBoxOptions,\n\ttype: \"alert\" | \"confirm\" | \"prompt\"\n): Promise<MessageBoxData> => {\n\toptions = options ?? {};\n\tif (!options?.title) {\n\t\t// 默认提示\n\t\toptions.title = \"温馨提示\";\n\t}\n\tif (options?.draggable == undefined) {\n\t\t// 默认拖拽\n\t\toptions.draggable = true;\n\t}\n\tif (!options?.cancelButtonText) {\n\t\t// 默认 取消按钮的文本内容\n\t\toptions.cancelButtonText = \"取消\";\n\t}\n\tif (!options?.confirmButtonText) {\n\t\t// 默认 确定按钮的文本内容\n\t\toptions.confirmButtonText = \"确定\";\n\t}\n\tif (options?.closeOnClickModal == undefined) {\n\t\t// 默认 是否可通过点击遮罩层关闭 MessageBox\n\t\toptions.closeOnClickModal = false;\n\t}\n\tif (options?.closeOnPressEscape == undefined) {\n\t\t// 默认 是否可通过按下 ESC 键关闭 MessageBox\n\t\toptions.closeOnPressEscape = false;\n\t}\n\n\t// 关闭之前的判断逻辑\n\tif (options?.beforeClose != undefined) {\n\t\tconst localBeforeClose = options.beforeClose;\n\t\tconst localConfirmButtonText = options?.confirmButtonText ?? \"确定\";\n\t\tconst localShowCancelButton = options?.showCancelButton ?? false;\n\t\toptions.beforeClose = (action: Action, instance: MessageBoxState, done: () => void): void => {\n\t\t\tif (action === \"confirm\") {\n\t\t\t\tuseOverlay.show(0);\n\t\t\t\tinstance.confirmButtonLoading = true;\n\t\t\t\tinstance.showCancelButton = false;\n\t\t\t\tinstance.confirmButtonText = \"加载中...\";\n\n\t\t\t\tconst cancelLoading = (): void => {\n\t\t\t\t\tinstance.confirmButtonLoading = false;\n\t\t\t\t\tinstance.showCancelButton = localShowCancelButton;\n\t\t\t\t\tinstance.confirmButtonText = localConfirmButtonText;\n\t\t\t\t\tuseOverlay.hide();\n\t\t\t\t};\n\n\t\t\t\tconst newDone = (): void => {\n\t\t\t\t\tcancelLoading();\n\t\t\t\t\tdone();\n\t\t\t\t};\n\n\t\t\t\texecAsyncFunction(localBeforeClose, action, instance, newDone)\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tnewDone();\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\tconsoleError(\"MessageBox\", error);\n\t\t\t\t\t\tcancelLoading();\n\t\t\t\t\t\terrorHandler(error);\n\t\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdone();\n\t\t\t}\n\t\t};\n\t}\n\n\t// 根据类型有一些判断\n\tswitch (type) {\n\t\tcase \"alert\":\n\t\t\tbreak;\n\t\tcase \"confirm\":\n\t\t\tif (options?.showCancelButton == undefined) {\n\t\t\t\toptions.showCancelButton = true;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"prompt\":\n\t\t\tif (options?.showCancelButton == undefined) {\n\t\t\t\toptions.showCancelButton = true;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\treturn ElMessageBox(\n\t\tObject.assign(\n\t\t\t{\n\t\t\t\tmessage,\n\t\t\t},\n\t\t\toptions,\n\t\t\t{\n\t\t\t\tboxType: type,\n\t\t\t}\n\t\t)\n\t);\n};\n\nElMessageBox.alert = (message: ElMessageBoxOptions[\"message\"], options?: ElMessageBoxOptions): Promise<MessageBoxData> =>\n\telMessageBox(message, options, \"alert\");\n\nElMessageBox.prompt = (message: ElMessageBoxOptions[\"message\"], options?: ElMessageBoxOptions): Promise<MessageBoxData> =>\n\telMessageBox(message, options, \"prompt\");\n\nElMessageBox.confirm = (message: ElMessageBoxOptions[\"message\"], options?: ElMessageBoxOptions): Promise<MessageBoxData> =>\n\telMessageBox(message, options, \"confirm\");\n\nexport const installElementPlus = (app: App): void => {\n\t/** 注册所有 Element Plus Icon */\n\tfor (const [key, component] of Object.entries(ElementPlusIconsVue)) {\n\t\t// 这里是给 FaIcon 使用的\n\t\tapp.component(`el-icon-${key}`, component);\n\t}\n\n\t/** Element Plus 组件完整引入 */\n\tapp.use(ElementPlus);\n};\n","import type { CSSProperties, PropType } from \"vue\";\nimport { computed, defineComponent, h, reactive, resolveComponent } from \"vue\";\nimport { RegExps } from \"@fast-element-plus/constants\";\nimport { useRender } from \"@fast-element-plus/utils\";\nimport { ElIcon } from \"element-plus\";\nimport { isNumber } from \"lodash-es\";\n\nexport const faIconProps = {\n\t/**\n\t * 名称\n\t * @description el-icon- 使用 El-icon 的图标;fa-icon 使用 Fast 图标组件库;\n\t * @requires 必填\n\t */\n\tname: {\n\t\ttype: String,\n\t\trequired: true,\n\t},\n\t/**\n\t * 大小\n\t */\n\tsize: [Number, String] as PropType<number | string>,\n\t/**\n\t * 颜色\n\t */\n\tcolor: String,\n};\n\n/**\n * FaIcon 组件\n */\nexport default defineComponent({\n\tname: \"FaIcon\",\n\tprops: faIconProps,\n\tsetup(props, { attrs }) {\n\t\tconst state = reactive({\n\t\t\tisUrl: computed(() => RegExps.External.test(props.name)),\n\t\t\tstyle: computed((): CSSProperties => {\n\t\t\t\tconst result: any = {};\n\t\t\t\tif (props.size) {\n\t\t\t\t\tif (isNumber(props.size)) {\n\t\t\t\t\t\tresult.size = `${props.size}px`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.size = props.size;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (props.color) {\n\t\t\t\t\tresult.color = props.color;\n\t\t\t\t}\n\t\t\t\tif (state.isUrl) {\n\t\t\t\t\tresult.mask = `url(${props.name}) no-repeat 50% 50%`;\n\t\t\t\t\tresult[\"-webkit-mask\"] = `url(${props.name}) no-repeat 50% 50%`;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}),\n\t\t});\n\n\t\tuseRender(() =>\n\t\t\tprops.name.indexOf(\"el-icon-\") === 0 ? (\n\t\t\t\t<ElIcon {...attrs} {...props} class=\"fa-icon\">\n\t\t\t\t\t{h(resolveComponent(props.name))}\n\t\t\t\t</ElIcon>\n\t\t\t) : props.name.indexOf(\"fa-icon\") === 0 ? (\n\t\t\t\t<ElIcon {...attrs} {...props} class=\"fa-icon\">\n\t\t\t\t\t{h(resolveComponent(props.name))}\n\t\t\t\t</ElIcon>\n\t\t\t) : state.isUrl ? (\n\t\t\t\t<div {...attrs} class=\"el-icon fa-icon url-icon\" style={state.style} />\n\t\t\t) : (\n\t\t\t\t<i {...attrs} class={[props.name, \"el-icon fa-icon\"]} style={state.style} />\n\t\t\t)\n\t\t);\n\t},\n});\n","import type { ExtractPropTypes } from \"vue\";\nimport { withInstall } from \"@fast-element-plus/utils\";\nimport type { faIconProps } from \"./src/icon\";\nimport Icon from \"./src/icon\";\n\nexport const FaIcon = withInstall(Icon);\nexport default FaIcon;\n\nexport type GIconInstance = InstanceType<typeof Icon>;\n\nexport type GIconProps = ExtractPropTypes<typeof faIconProps>;\n","import type { Plugin } from \"vue\";\nimport { FaIcon } from \"@fast-element-plus/components/icon\";\n\nexport default [FaIcon] as Plugin[];\n","/**\n * v-copy\n * 复制某个值至剪贴板\n * 接收参数:string类型/Ref<string>类型/Reactive<string>类型\n */\nimport type { Directive, DirectiveBinding } from \"vue\";\nimport { consoleError, stringUtil, withInstallDirective } from \"@fast-element-plus/utils\";\nimport { ElMessage } from \"element-plus\";\n\ninterface ElType extends HTMLElement {\n\tcopyData: string | number;\n\t__handleClick__: () => void;\n}\n\nconst CopyDirective: Directive = {\n\tmounted(el: ElType, binding: DirectiveBinding) {\n\t\tel.copyData = binding.value;\n\n\t\tel.__handleClick__ = async (): Promise<void> => {\n\t\t\tif (!el.copyData) return;\n\t\t\ttry {\n\t\t\t\tawait stringUtil.copy(String(el.copyData));\n\t\t\t\tElMessage({\n\t\t\t\t\ttype: \"success\",\n\t\t\t\t\tmessage: \"复制成功\",\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tElMessage({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: \"复制失败\",\n\t\t\t\t});\n\t\t\t\tconsoleError(\"CopyDirective\", \"复制失败\", error);\n\t\t\t}\n\t\t};\n\t\tel.addEventListener(\"click\", el.__handleClick__);\n\t},\n\tupdated(el: ElType, binding: DirectiveBinding) {\n\t\tel.copyData = binding.value;\n\t},\n\tbeforeUnmount(el: ElType) {\n\t\tel.removeEventListener(\"click\", el.__handleClick__);\n\t},\n};\n\nexport const vCopy = withInstallDirective(CopyDirective, \"copy\");\nexport default vCopy;\n","/**\n * v-debounce\n * 按钮防抖指令\n */\nimport type { Directive, DirectiveBinding, VNode } from \"vue\";\nimport { withInstallDirective } from \"@fast-element-plus/utils\";\n\ninterface ElType extends HTMLElement {\n\t__debounce_timer__: NodeJS.Timeout;\n\t__debounce_originClick__: () => any;\n}\n\nconst DebounceDirective: Directive = {\n\tcreated(el: ElType, binding: DirectiveBinding, vNode: VNode) {\n\t\t// 记录原来的点击事件方法\n\t\tel.__debounce_originClick__ = vNode.props.onClick;\n\n\t\t// 替换原来的点击事件\n\t\tvNode.props.onClick = (): void => {\n\t\t\tif (el.__debounce_timer__) {\n\t\t\t\tclearInterval(el.__debounce_timer__);\n\t\t\t}\n\t\t\t// 防抖处理\n\t\t\tel.__debounce_timer__ = setTimeout(() => {\n\t\t\t\tel.__debounce_originClick__();\n\t\t\t}, 500);\n\t\t};\n\t},\n};\n\nexport const vDebounce = withInstallDirective(DebounceDirective, \"debounce\");\nexport default vDebounce;\n","/*\n\t需求:实现一个拖拽指令,可在父元素区域任意拖拽元素。\n\n\t思路:\n\t\t1、设置需要拖拽的元素为absolute,其父元素为relative。\n\t\t2、鼠标按下(onmousedown)时记录目标元素当前的 left 和 top 值。\n\t\t3、鼠标移动(onmousemove)时计算每次移动的横向距离和纵向距离的变化值,并改变元素的 left 和 top 值\n\t\t4、鼠标松开(onmouseup)时完成一次拖拽\n\n\t使用:在 Dom 上加上 v-draggable 即可\n\t<div class=\"dialog-model\" v-draggable></div>\n*/\nimport type { Directive } from \"vue\";\nimport { withInstallDirective } from \"@fast-element-plus/utils\";\n\ninterface ElType extends HTMLElement {\n\tparentNode: any;\n}\n\nconst DraggableDirective: Directive = {\n\tmounted(el: ElType) {\n\t\tel.style.cursor = \"move\";\n\t\tel.style.position = \"absolute\";\n\t\tel.onmousedown = (e): void => {\n\t\t\tconst disX = e.pageX - el.offsetLeft;\n\t\t\tconst disY = e.pageY - el.offsetTop;\n\t\t\tdocument.onmousemove = (e): void => {\n\t\t\t\tlet x = e.pageX - disX;\n\t\t\t\tlet y = e.pageY - disY;\n\t\t\t\tconst maxX = el.parentNode.offsetWidth - el.offsetWidth;\n\t\t\t\tconst maxY = el.parentNode.offsetHeight - el.offsetHeight;\n\t\t\t\tif (x < 0) {\n\t\t\t\t\tx = 0;\n\t\t\t\t} else if (x > maxX) {\n\t\t\t\t\tx = maxX;\n\t\t\t\t}\n\n\t\t\t\tif (y < 0) {\n\t\t\t\t\ty = 0;\n\t\t\t\t} else if (y > maxY) {\n\t\t\t\t\ty = maxY;\n\t\t\t\t}\n\t\t\t\tel.style.left = `${x}px`;\n\t\t\t\tel.style.top = `${y}px`;\n\t\t\t};\n\t\t\tdocument.onmouseup = (): void => {\n\t\t\t\tdocument.onmousemove = document.onmouseup = null;\n\t\t\t};\n\t\t};\n\t},\n};\n\nexport const vDraggable = withInstallDirective(DraggableDirective, \"draggable\");\nexport default vDraggable;\n","/**\n * v-iconCopy\n * 左侧插入复制图标,复制某个值至剪贴板\n * 接收参数:string类型/Ref<string>类型/Reactive<string>类型\n */\nimport { type Directive, type DirectiveBinding, h, render } from \"vue\";\nimport { CopyDocument } from \"@element-plus/icons-vue\";\nimport { consoleError, stringUtil, withInstallDirective } from \"@fast-element-plus/utils\";\nimport { ElIcon, ElMessage } from \"element-plus\";\n\ninterface ElType extends HTMLElement {\n\tcopyData: string | number;\n\t__iconElement__: Node;\n}\n\nconst IconCopyDirective: Directive = {\n\tmounted(el: ElType, binding: DirectiveBinding) {\n\t\tel.copyData = binding.value;\n\n\t\tif (!el.copyData) return;\n\n\t\tconst handleCopyClick = async (): Promise<void> => {\n\t\t\ttry {\n\t\t\t\tawait stringUtil.copy(String(el.copyData));\n\t\t\t\tElMessage({\n\t\t\t\t\ttype: \"success\",\n\t\t\t\t\tmessage: \"复制成功\",\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tElMessage({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: \"复制失败\",\n\t\t\t\t});\n\t\t\t\tconsoleError(\"CopyDirective\", \"复制失败\", error);\n\t\t\t}\n\t\t};\n\n\t\t// 创建 ELIcon 组件\n\t\tconst iconEl = h(\n\t\t\tElIcon,\n\t\t\t{\n\t\t\t\tclass: \"fa-icon-CopyDocument\",\n\t\t\t\ttitle: \"复制\",\n\t\t\t\tonClick: handleCopyClick,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdefault: () => h(CopyDocument),\n\t\t\t}\n\t\t);\n\n\t\tconst tempDiv = document.createElement(\"div\");\n\t\trender(iconEl, tempDiv);\n\n\t\tel.__iconElement__ = tempDiv.firstChild;\n\t\tel.parentElement.insertBefore(tempDiv.firstChild, el);\n\t},\n\tupdated(el: ElType, binding: DirectiveBinding) {\n\t\tel.copyData = binding.value;\n\t},\n\tbeforeUnmount(el: ElType) {\n\t\tif (el.__iconElement__) {\n\t\t\tel.parentElement.removeChild(el.__iconElement__);\n\t\t}\n\t},\n};\n\nexport const vIconCopy = withInstallDirective(IconCopyDirective, \"iconCopy\");\nexport default vIconCopy;\n","/**\n * v-longpress\n * 长按指令,长按时触发事件\n */\nimport type { Directive, DirectiveBinding } from \"vue\";\nimport { withInstallDirective } from \"@fast-element-plus/utils\";\n\nconst LongpressDirective: Directive = {\n\tmounted(el: HTMLElement, binding: DirectiveBinding) {\n\t\tif (typeof binding.value !== \"function\") {\n\t\t\tthrow \"callback must be a function\";\n\t\t}\n\n\t\t// 运行函数\n\t\tconst handler = (e: MouseEvent | TouchEvent): void => {\n\t\t\tbinding.value(e);\n\t\t};\n\n\t\t// 定义变量\n\t\tlet pressTimer: any = null;\n\t\t// 创建计时器( 2秒后执行函数 )\n\t\tconst start = (e: any): void => {\n\t\t\tif (e.button) {\n\t\t\t\tif (e.type === \"click\" && e.button !== 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pressTimer === null) {\n\t\t\t\tpressTimer = setTimeout(() => {\n\t\t\t\t\thandler(e);\n\t\t\t\t}, 1000);\n\t\t\t}\n\t\t};\n\t\t// 取消计时器\n\t\tconst cancel = (): void => {\n\t\t\tif (pressTimer !== null) {\n\t\t\t\tclearTimeout(pressTimer);\n\t\t\t\tpressTimer = null;\n\t\t\t}\n\t\t};\n\t\t// 添加事件监听器\n\t\tel.addEventListener(\"mousedown\", start);\n\t\tel.addEventListener(\"touchstart\", start);\n\t\t// 取消计时器\n\t\tel.addEventListener(\"click\", cancel);\n\t\tel.addEventListener(\"mouseout\", cancel);\n\t\tel.addEventListener(\"touchend\", cancel);\n\t\tel.addEventListener(\"touchcancel\", cancel);\n\t},\n};\n\nexport const vLongpress = withInstallDirective(LongpressDirective, \"longpress\");\nexport default vLongpress;\n","/*\n 需求:防止按钮在短时间内被多次点击,使用节流函数限制规定时间内只能点击一次。\n\n 思路:\n 1、第一次点击,立即调用方法并禁用按钮,等延迟结束再次激活按钮\n 2、将需要触发的方法绑定在指令上\n\n 使用:给 Dom 加上 v-throttle 及回调函数即可\n <button v-throttle=\"debounceClick\">节流提交</button>\n*/\nimport type { Directive, DirectiveBinding } from \"vue\";\nimport { withInstallDirective } from \"@fast-element-plus/utils\";\n\ninterface ElType extends HTMLElement {\n\t__handleClick__: () => any;\n\tdisabled: boolean;\n}\n\nconst ThrottleDirective: Directive = {\n\tmounted(el: ElType, binding: DirectiveBinding) {\n\t\tif (typeof binding.value !== \"function\") {\n\t\t\tthrow \"callback must be a function\";\n\t\t}\n\t\tlet timer: NodeJS.Timeout | null = null;\n\t\tel.__handleClick__ = (): void => {\n\t\t\tif (timer) {\n\t\t\t\tclearTimeout(timer);\n\t\t\t}\n\t\t\tif (!el.disabled) {\n\t\t\t\tel.disabled = true;\n\t\t\t\tbinding.value();\n\t\t\t\ttimer = setTimeout(() => {\n\t\t\t\t\tel.disabled = false;\n\t\t\t\t}, 1000);\n\t\t\t}\n\t\t};\n\t\tel.addEventListener(\"click\", el.__handleClick__);\n\t},\n\tbeforeUnmount(el: ElType) {\n\t\tel.removeEventListener(\"click\", el.__handleClick__);\n\t},\n};\n\nexport const vThrottle = withInstallDirective(ThrottleDirective, \"throttle\");\nexport default vThrottle;\n","import { vCopy } from \"@fast-element-plus/directives/clickCopy\";\nimport { vDebounce } from \"@fast-element-plus/directives/clickDebounce\";\nimport { vDraggable } from \"@fast-element-plus/directives/clickDraggable\";\nimport { vIconCopy } from \"@fast-element-plus/directives/clickIconCopy\";\nimport { vLongpress } from \"@fast-element-plus/directives/clickLongpress\";\nimport { vThrottle } from \"@fast-element-plus/directives/clickThrottle\";\n\nexport default [vCopy, vDebounce, vDraggable, vIconCopy, vLongpress, vThrottle];\n","import type { App } from \"vue\";\nimport { type FastOptions, setFastOptions } from \"@fast-element-plus/settings\";\nimport { errorHandler, makeIdentity } from \"@fast-element-plus/utils\";\nimport { installElementPlus } from \"./element-plus\";\nimport { installFastElementPlus } from \"./fast-element-plus\";\nimport { fastElementPlusVersion } from \"./version\";\n\nexport const INSTALLED_KEY = Symbol(\"INSTALLED_KEY\");\n\nexport const makeInstaller = (): {\n\tversion: string;\n\tinstall: (app: App, options?: FastOptions) => void;\n} => {\n\tconst install = (app: App, options?: FastOptions): void => {\n\t\tif (app[INSTALLED_KEY]) return;\n\n\t\tapp[INSTALLED_KEY] = true;\n\n\t\t// 全局异常捕获\n\t\tapp.config.errorHandler = errorHandler;\n\n\t\tmakeIdentity();\n\n\t\tif (options) {\n\t\t\tsetFastOptions(options);\n\t\t}\n\n\t\tinstallElementPlus(app);\n\t\tinstallFastElementPlus(app);\n\t};\n\n\treturn {\n\t\tversion: fastElementPlusVersion,\n\t\tinstall,\n\t};\n};\n","import { INSTALLED_KEY, makeInstaller } from \"@fast-element-plus/build\";\n\nexport * from \"@fast-element-plus/components\";\nexport * from \"@fast-element-plus/constants\";\nexport * from \"@fast-element-plus/directives\";\nexport * from \"@fast-element-plus/hooks\";\nexport * from \"@fast-element-plus/settings\";\nexport * from \"@fast-element-plus/stores\";\nexport * from \"@fast-element-plus/utils\";\n\nexport { INSTALLED_KEY };\n\nconst installer = makeInstaller();\n\nexport const install = installer.install;\nexport const version = installer.version;\nexport default installer;\n","/**\n * 组件库版本号\n */\nexport const fastElementPlusVersion = \"1.4.18\";\n","import type { App } from \"vue\";\nimport FastElementPlusIconsVue from \"@fast-element-plus/icons-vue\";\nimport FastElementPlusComponents from \"./component\";\nimport FastElementPlusDirectives from \"./directive\";\n\nconst installFastElementPlus = (app: App): void => {\n\t/** 注册 Fast Icon 组件库 */\n\tapp.use(FastElementPlusIconsVue);\n\n\tFastElementPlusComponents.forEach((c) => app.use(c));\n\n\tFastElementPlusDirectives.forEach((d) => app.use(d));\n};\n\nexport { installFastElementPlus };\n","/**\n * MIME 类型\n */\nexport const FaMimeType = {\n\t/**\n\t * PDF\n\t */\n\tPDF: \"application/pdf\",\n\t/**\n\t * 文本文件\n\t */\n\tText: \"text/plain\",\n\t/**\n\t * Word 和 DOCX(Word 2007 及以后版本)\n\t */\n\tWord: \"application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n\t/**\n\t * Excel 和 CSV\n\t */\n\tExcel: \"application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,text/csv\",\n\t/**\n\t * PowerPoint 和 PPTX(PowerPoint 2007 及以后版本)\n\t */\n\tPowerpoint: \"application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n\t/**\n\t * 压缩文件\n\t */\n\tZIP: \"application/zip,application/x-zip-compressed\",\n\t/**\n\t * 图片\n\t */\n\tImage: \"image/jpeg,image/png,image/gif\",\n\t/**\n\t * 视频\n\t */\n\tVideo: \"video/mp4,video/mpeg,video/quicktime\",\n\t/**\n\t * 音频\n\t */\n\tAudio: \"audio/mpeg,audio/wav\",\n\t/**\n\t * HTML\n\t */\n\tHtml: \"text/html\",\n\t/**\n\t * CSS\n\t */\n\tCss: \"text/css\",\n\t/**\n\t * JavaScript\n\t */\n\tJavaScript: \"application/javascript,text/javascript\",\n\t/**\n\t * JSON\n\t */\n\tJson: \"application/json\",\n\t/**\n\t * XML\n\t */\n\tXML: \"application/xml,text/xml\",\n};\n","import type { SlotsType, VNode } from \"vue\";\n\ntype RawSlots = Record<string, unknown>;\n\ntype VueSlots<T> = [T] extends [never] ? () => VNode[] : (arg: T) => VNode[];\n\ntype MakeSlots<T extends RawSlots> = {\n\t[K in keyof T]: VueSlots<T[K]>;\n};\n\n/**\n * 构建 slots\n */\nconst makeSlots = <Slots extends RawSlots>(): SlotsType<Partial<MakeSlots<Slots>>> => {\n\treturn Object as SlotsType<Partial<MakeSlots<Slots>>>;\n};\n\nexport { makeSlots };\n","import type { ComputedRef } from \"vue\";\nimport { computed } from \"vue\";\nimport { omit, pick } from \"lodash-es\";\n\n/**\n * 构建 props\n * @param props props\n * @param rawProps 原生 props\n * @param ignoreRawProps 忽略 原生 props 的 key\n * @param mergeProps 合并的 props,固定的值,即使在外部props中传入了也没用\n */\nconst useProps = <T extends Record<string, unknown>, RT extends Record<string, unknown>>(\n\tprops: T,\n\trawProps?: RT,\n\tignoreRawProps?: (keyof RT)[],\n\tmergeProps?: Partial<Record<keyof RT, unknown>>\n): ComputedRef<Record<string, unknown>> => {\n\tif (!props) return computed(() => ({}));\n\n\treturn computed<Record<string, unknown>>(() => {\n\t\tconst omittedRawProps = rawProps ? omit(rawProps, ignoreRawProps ?? []) : {};\n\t\tconst pickedProps = pick(props, Object.keys(omittedRawProps)) as Record<string, unknown>;\n\t\treturn { ...pickedProps, ...(mergeProps ?? {}) };\n\t});\n};\n\nexport { useProps };\n","/**\n * 定义类型数据\n * @description 传入什么就返回什么,用来定义reactive或其他对象的响应式数据\n */\nconst withDefineType = <T>(data: T): T => {\n\treturn data;\n};\n\nexport { withDefineType };\n"],"names":["fastOptions","reactive","warnPageNum","storageCrypto","axios","baseUrl","timeout","requestCipher","table","showSearch","hideImage","dataSearchRange","merge","target","source","key","value","setFastOptions","options","execAsyncFunction","fn","args","Promise","resolve","constructor","name","consoleError","Error","then","res","catch","error","reject","NOOP","withInstall","main","extra","install","app","comp","Object","values","component","entries","withInstallDirective","directive","useRender","render","vm","getCurrentInstance","base64PwdDic","index","randomIndex","base64Util","toBase64","str","prefixStrLength","length","randomPrefixStr","result","i","Math","ceil","random","getRandomStr","base64","btoa","encodeURIComponent","base64Str","strResult","sort","a","b","forEach","item","randomChar","slice","insertRandomStrToBase64Str","base64ToStr","input","items","removeBase64StrRandomStr","atob","decodeURIComponent","_debounceTimeout","_throttleRunning","clickUtil","debounce","delay","clearTimeout","setTimeout","throttle","colorUtil","hexToRgb","hex","test","replace","match","parseInt","warning","rgbToHex","r","g","reg","toString","join","getDarkColor","color","level","rgb","this","round","getLightColor","consoleWarn","message","optionalParams","console","warn","RegExps","UUID","Mobile","Phone","Email","IdCard","External","Url","CarNumber","NewEnergyCarNumber","PostCode","Ipv4","Passport","HKMacauPass","Account","Password","StrongPassword","Chinese","English","DEVICE_ID_KEY","makeIdentity","deviceId","Local","set","window","get","stringUtil","generateUUID","errorHandler","AxiosError","errorMap","InternalError","ReferenceError","TypeError","RangeError","SyntaxError","EvalError","URIError","AggregateError","TimeoutError","NetworkError","OutOfMemoryError","errorName","nextTick","ElNotification","title","duration","position","formUtil","validate","elFormRef","isValid","invalidFields","validateScrollToField","scrollToField","keys","mobile","rule","callback","phone","email","idCard","carNumber","success","editorRequired","external","url","postCode","account","password","strongPassword","chinese","english","inputRequired","trigger","required","selectRequired","CACHE_PREFIX","CACHE_EXPIRE_SUFFIX","val","expire","encrypt","isNaN","expireData","time","Date","now","expireJson","JSON","stringify","localStorage","setItem","valJson","decrypt","getItem","parse","removeItem","remove","removeByPrefix","itemKey","indexOf","clear","Session","sessionStorage","getGreet","hour","getHours","greet","objectToQueryString","obj","params","prototype","hasOwnProperty","call","getUrlParams","regex","exec","substring","split","isJson","isString","map","s","reduce","prev","curr","generateRandomString","characters","randomString","floor","charAt","uuid","copy","navigator","clipboard","isSecureContext","writeText","textareaEl","document","createElement","style","opacity","left","top","body","appendChild","focus","select","execCommand","useLoading","show","loading","bodyEl","div","className","innerHTML","insertBefore","childNodes","hide","loadingEl","querySelector","_a","parentNode","removeChild","useOverlay","transparent","overlay","backgroundColor","ElementPlus","ElDialog","props","draggable","type","Boolean","default","ElInput","showWordLimit","elMessageBox","cancelButtonText","confirmButtonText","closeOnClickModal","closeOnPressEscape","beforeClose","localBeforeClose","localConfirmButtonText","localShowCancelButton","showCancelButton","action","instance","done","confirmButtonLoading","cancelLoading","newDone","ElMessageBox","assign","boxType","alert","prompt","confirm","_isSlot","_isVNode","isVNode","faIconProps","String","size","Number","FaIcon","setup","attrs","state","isUrl","computed","isNumber","mask","_slot","_slot2","_createVNode","ElIcon","_mergeProps","class","h","resolveComponent","createVNode","mergeProps","FastElementPlusComponents","vCopy","mounted","el","binding","copyData","__handleClick__","async","ElMessage","addEventListener","updated","beforeUnmount","removeEventListener","vDebounce","created","vNode","__debounce_originClick__","onClick","__debounce_timer__","clearInterval","vDraggable","cursor","onmousedown","e","disX","pageX","offsetLeft","disY","pageY","offsetTop","onmousemove","x","y","maxX","offsetWidth","maxY","offsetHeight","onmouseup","vIconCopy","iconEl","CopyDocument","tempDiv","__iconElement__","firstChild","parentElement","vLongpress","pressTimer","start","button","handler","cancel","vThrottle","timer","disabled","FastElementPlusDirectives","INSTALLED_KEY","Symbol","installer","version","config","ElementPlusIconsVue","use","installElementPlus","FastElementPlusIconsVue","c","d","installFastElementPlus","PDF","Text","Word","Excel","Powerpoint","ZIP","Image","Video","Audio","Html","Css","JavaScript","Json","XML","debug","rawProps","ignoreRawProps","omittedRawProps","omit","pick","data"],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { ExtractPropTypes } from 'vue';
2
- import { faIconProps, default as Icon } from './src/icon';
3
- export declare const FaIcon: import('../../utils').TSXWithInstall<import('vue').DefineComponent<ExtractPropTypes<{
4
- name: {
5
- type: StringConstructor;
6
- required: boolean;
7
- };
8
- size: import('vue').PropType<number | string>;
9
- color: StringConstructor;
10
- }>, void, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ExtractPropTypes<{
11
- name: {
12
- type: StringConstructor;
13
- required: boolean;
14
- };
15
- size: import('vue').PropType<number | string>;
16
- color: StringConstructor;
17
- }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>> & Record<string, any>;
18
- export default FaIcon;
19
- export type GIconInstance = InstanceType<typeof Icon>;
20
- export type GIconProps = ExtractPropTypes<typeof faIconProps>;
@@ -1,9 +0,0 @@
1
- import "../../utils/index.mjs";
2
- import Icon from "./src/icon.mjs";
3
- import { withInstall } from "../../utils/vue/install.mjs";
4
- const FaIcon = withInstall(Icon);
5
- export {
6
- FaIcon,
7
- FaIcon as default
8
- };
9
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../packages/components/icon/index.ts"],"sourcesContent":["import type { ExtractPropTypes } from \"vue\";\nimport { withInstall } from \"@fast-element-plus/utils\";\nimport type { faIconProps } from \"./src/icon\";\nimport Icon from \"./src/icon\";\n\nexport const FaIcon = withInstall(Icon);\nexport default FaIcon;\n\nexport type GIconInstance = InstanceType<typeof Icon>;\n\nexport type GIconProps = ExtractPropTypes<typeof faIconProps>;\n"],"names":[],"mappings":";;;AAKa,MAAA,SAAS,YAAY,IAAI;"}