@smallwei/avue 3.8.1 → 3.8.3

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 (376) hide show
  1. package/README.md +206 -86
  2. package/dist/avue.js +37301 -0
  3. package/dist/avue.js.map +1 -0
  4. package/dist/avue.min.js +6 -0
  5. package/dist/avue.min.mjs +2 -0
  6. package/dist/avue.mjs +2 -0
  7. package/dist/index.css +1 -0
  8. package/es/avue.min.mjs +2 -0
  9. package/es/avue.min.ts +2 -0
  10. package/es/avue.mjs +2 -0
  11. package/es/avue.ts +2 -0
  12. package/es/core/create.mjs +8 -0
  13. package/es/core/create.ts +16 -0
  14. package/es/core/dataformat.mjs +184 -0
  15. package/es/core/dataformat.ts +190 -0
  16. package/es/core/detail.mjs +74 -0
  17. package/es/core/detail.ts +81 -0
  18. package/es/core/dic.mjs +213 -0
  19. package/es/core/dic.ts +235 -0
  20. package/es/core/locale.mjs +8 -0
  21. package/es/core/locale.ts +9 -0
  22. package/es/core/packages.mjs +61 -0
  23. package/es/core/packages.ts +62 -0
  24. package/es/core/slot.mjs +32 -0
  25. package/es/core/slot.ts +30 -0
  26. package/es/global/variable.mjs +80 -0
  27. package/es/global/variable.ts +84 -0
  28. package/es/icon.mjs +9 -0
  29. package/es/icon.ts +11 -0
  30. package/es/index.mjs +127 -0
  31. package/es/index.ts +177 -0
  32. package/es/locale/browser/en.mjs +288 -0
  33. package/es/locale/browser/zh-cn.mjs +288 -0
  34. package/es/locale/browser/zh.mjs +288 -0
  35. package/es/locale/index.mjs +141 -0
  36. package/es/locale/index.ts +196 -0
  37. package/es/locale/lang/en.mjs +282 -0
  38. package/es/locale/lang/en.ts +282 -0
  39. package/es/locale/lang/zh-cn.mjs +282 -0
  40. package/es/locale/lang/zh-cn.ts +282 -0
  41. package/es/locale/lang/zh.mjs +282 -0
  42. package/es/locale/lang/zh.ts +282 -0
  43. package/es/packages/core/common/event.mjs +58 -0
  44. package/es/packages/core/common/event.ts +56 -0
  45. package/es/packages/core/common/init.mjs +134 -0
  46. package/es/packages/core/common/init.ts +133 -0
  47. package/es/packages/core/common/props.mjs +239 -0
  48. package/es/packages/core/common/props.ts +240 -0
  49. package/es/packages/core/components/dialog-form/index.mjs +29 -0
  50. package/es/packages/core/components/dialog-form/index.ts +29 -0
  51. package/es/packages/core/components/dialog-form/index.vue +108 -0
  52. package/es/packages/core/components/form/custom.mjs +41 -0
  53. package/es/packages/core/components/form/custom.ts +41 -0
  54. package/es/packages/core/components/form/index.vue +176 -0
  55. package/es/packages/core/components/icon/index.vue +37 -0
  56. package/es/packages/core/components/image-preview/index.mjs +34 -0
  57. package/es/packages/core/components/image-preview/index.ts +37 -0
  58. package/es/packages/core/components/image-preview/index.vue +215 -0
  59. package/es/packages/core/directive/contextmenu.mjs +92 -0
  60. package/es/packages/core/directive/contextmenu.ts +103 -0
  61. package/es/packages/core/directive/permission.mjs +19 -0
  62. package/es/packages/core/directive/permission.ts +18 -0
  63. package/es/packages/data/box/index.vue +66 -0
  64. package/es/packages/data/card/index.vue +62 -0
  65. package/es/packages/data/cardText/index.vue +56 -0
  66. package/es/packages/data/countdown/index.vue +81 -0
  67. package/es/packages/data/dashboard/index.vue +72 -0
  68. package/es/packages/data/display/index.vue +63 -0
  69. package/es/packages/data/icons/index.vue +68 -0
  70. package/es/packages/data/imgText/index.vue +72 -0
  71. package/es/packages/data/list/index.vue +69 -0
  72. package/es/packages/data/notice/index.vue +63 -0
  73. package/es/packages/data/operaText/index.vue +62 -0
  74. package/es/packages/data/panel/index.vue +62 -0
  75. package/es/packages/data/pay/index.vue +92 -0
  76. package/es/packages/data/price/index.vue +55 -0
  77. package/es/packages/data/product/index.vue +106 -0
  78. package/es/packages/data/profile/index.vue +91 -0
  79. package/es/packages/data/progress/index.vue +64 -0
  80. package/es/packages/data/rank/index.vue +92 -0
  81. package/es/packages/data/rotate/index.vue +69 -0
  82. package/es/packages/data/statistic/index.vue +71 -0
  83. package/es/packages/data/tabs/index.vue +64 -0
  84. package/es/packages/data/task/index.vue +82 -0
  85. package/es/packages/data/weather/index.vue +103 -0
  86. package/es/packages/element-plus/array/index.vue +115 -0
  87. package/es/packages/element-plus/article/index.vue +73 -0
  88. package/es/packages/element-plus/card/index.vue +103 -0
  89. package/es/packages/element-plus/cascader/index.vue +132 -0
  90. package/es/packages/element-plus/chat/index.vue +513 -0
  91. package/es/packages/element-plus/checkbox/index.vue +84 -0
  92. package/es/packages/element-plus/comment/index.vue +76 -0
  93. package/es/packages/element-plus/count-up/index.vue +107 -0
  94. package/es/packages/element-plus/crud/column/column-default.vue +128 -0
  95. package/es/packages/element-plus/crud/column/column-dynamic.vue +86 -0
  96. package/es/packages/element-plus/crud/column/column-menu.vue +267 -0
  97. package/es/packages/element-plus/crud/column/column-slot.vue +348 -0
  98. package/es/packages/element-plus/crud/column/column.vue +119 -0
  99. package/es/packages/element-plus/crud/column/menu.vue +78 -0
  100. package/es/packages/element-plus/crud/config.mjs +74 -0
  101. package/es/packages/element-plus/crud/config.ts +74 -0
  102. package/es/packages/element-plus/crud/dialog/dialog-column.vue +102 -0
  103. package/es/packages/element-plus/crud/dialog/dialog-excel.vue +204 -0
  104. package/es/packages/element-plus/crud/dialog/dialog-filter.vue +159 -0
  105. package/es/packages/element-plus/crud/dialog/dialog-form.vue +352 -0
  106. package/es/packages/element-plus/crud/grid/index.vue +271 -0
  107. package/es/packages/element-plus/crud/grid/item.vue +39 -0
  108. package/es/packages/element-plus/crud/index.vue +1018 -0
  109. package/es/packages/element-plus/crud/menu/header-menu.vue +175 -0
  110. package/es/packages/element-plus/crud/menu/header-search.vue +228 -0
  111. package/es/packages/element-plus/crud/menu/table-page.vue +108 -0
  112. package/es/packages/element-plus/date/index.vue +81 -0
  113. package/es/packages/element-plus/draggable/index.vue +444 -0
  114. package/es/packages/element-plus/dynamic/index.vue +353 -0
  115. package/es/packages/element-plus/flow/index.vue +339 -0
  116. package/es/packages/element-plus/flow/node.vue +84 -0
  117. package/es/packages/element-plus/form/config.mjs +6 -0
  118. package/es/packages/element-plus/form/config.ts +6 -0
  119. package/es/packages/element-plus/form/index.vue +954 -0
  120. package/es/packages/element-plus/form/menu.vue +63 -0
  121. package/es/packages/element-plus/group/index.vue +90 -0
  122. package/es/packages/element-plus/input/index.vue +1264 -0
  123. package/es/packages/element-plus/input-color/index.vue +70 -0
  124. package/es/packages/element-plus/input-cron/index.vue +363 -0
  125. package/es/packages/element-plus/input-icon/index.vue +143 -0
  126. package/es/packages/element-plus/input-map/index.vue +311 -0
  127. package/es/packages/element-plus/input-number/index.vue +91 -0
  128. package/es/packages/element-plus/input-table/index.vue +279 -0
  129. package/es/packages/element-plus/input-tag/index.vue +79 -0
  130. package/es/packages/element-plus/input-tree/index.vue +194 -0
  131. package/es/packages/element-plus/license/index.vue +155 -0
  132. package/es/packages/element-plus/login/index.vue +203 -0
  133. package/es/packages/element-plus/mention/index.vue +117 -0
  134. package/es/packages/element-plus/radio/index.vue +38 -0
  135. package/es/packages/element-plus/rate/index.vue +51 -0
  136. package/es/packages/element-plus/search/index.vue +129 -0
  137. package/es/packages/element-plus/select/index.vue +292 -0
  138. package/es/packages/element-plus/sign/index.vue +230 -0
  139. package/es/packages/element-plus/slider/index.vue +66 -0
  140. package/es/packages/element-plus/switch/index.vue +72 -0
  141. package/es/packages/element-plus/tabs/index.vue +62 -0
  142. package/es/packages/element-plus/text-ellipsis/index.vue +104 -0
  143. package/es/packages/element-plus/time/index.vue +81 -0
  144. package/es/packages/element-plus/title/index.vue +30 -0
  145. package/es/packages/element-plus/tree/index.vue +460 -0
  146. package/es/packages/element-plus/upload/index.vue +728 -0
  147. package/es/packages/element-plus/verify/index.vue +62 -0
  148. package/es/packages/element-plus/video/index.vue +90 -0
  149. package/es/plugin/ali/index.mjs +4 -0
  150. package/es/plugin/ali/index.ts +6 -0
  151. package/es/plugin/clipboard/index.mjs +61 -0
  152. package/es/plugin/clipboard/index.ts +67 -0
  153. package/es/plugin/export/_blob.mjs +151 -0
  154. package/es/plugin/export/_blob.ts +176 -0
  155. package/es/plugin/export/_export2Excel.mjs +141 -0
  156. package/es/plugin/export/_export2Excel.ts +166 -0
  157. package/es/plugin/export/index.mjs +263 -0
  158. package/es/plugin/export/index.ts +274 -0
  159. package/es/plugin/logs/index.mjs +46 -0
  160. package/es/plugin/logs/index.ts +66 -0
  161. package/es/plugin/print/index.mjs +145 -0
  162. package/es/plugin/print/index.ts +155 -0
  163. package/es/plugin/qiniu/index.mjs +78 -0
  164. package/es/plugin/qiniu/index.ts +88 -0
  165. package/es/plugin/screenshot/index.mjs +8 -0
  166. package/es/plugin/screenshot/index.ts +9 -0
  167. package/es/plugin/video/index.mjs +52 -0
  168. package/es/plugin/video/index.ts +60 -0
  169. package/es/plugin/watermark/index.mjs +114 -0
  170. package/es/plugin/watermark/index.ts +127 -0
  171. package/es/plugin/watermark/watermark.mjs +109 -0
  172. package/es/plugin/watermark/watermark.ts +121 -0
  173. package/es/ui/data/index.mjs +49 -0
  174. package/es/ui/data/index.ts +51 -0
  175. package/es/ui/element-plus/index.mjs +87 -0
  176. package/es/ui/element-plus/index.ts +89 -0
  177. package/es/ui/index.mjs +4 -0
  178. package/es/ui/index.ts +6 -0
  179. package/es/utils/bem.mjs +29 -0
  180. package/es/utils/bem.ts +36 -0
  181. package/es/utils/mock.mjs +137 -0
  182. package/es/utils/mock.ts +151 -0
  183. package/es/utils/util.mjs +370 -0
  184. package/es/utils/util.ts +392 -0
  185. package/es/utils/validate.mjs +18 -0
  186. package/es/utils/validate.ts +23 -0
  187. package/es/version.mjs +1 -0
  188. package/es/version.ts +1 -0
  189. package/lib/avue.js +11 -31398
  190. package/lib/avue.min.js +11 -6
  191. package/lib/avue.min.ts +2 -0
  192. package/lib/avue.ts +2 -0
  193. package/lib/core/create.js +14 -0
  194. package/lib/core/create.ts +16 -0
  195. package/lib/core/dataformat.js +194 -0
  196. package/lib/core/dataformat.ts +190 -0
  197. package/lib/core/detail.js +81 -0
  198. package/lib/core/detail.ts +81 -0
  199. package/lib/core/dic.js +220 -0
  200. package/lib/core/dic.ts +235 -0
  201. package/lib/core/locale.js +10 -0
  202. package/lib/core/locale.ts +9 -0
  203. package/lib/core/packages.js +66 -0
  204. package/lib/core/packages.ts +62 -0
  205. package/lib/core/slot.js +34 -0
  206. package/lib/core/slot.ts +30 -0
  207. package/lib/global/variable.js +83 -0
  208. package/lib/global/variable.ts +84 -0
  209. package/lib/icon.js +44 -0
  210. package/lib/icon.ts +11 -0
  211. package/lib/index.css +1 -1
  212. package/lib/index.js +134 -0
  213. package/lib/index.ts +177 -0
  214. package/lib/locale/browser/en.js +288 -0
  215. package/lib/locale/browser/zh-cn.js +288 -0
  216. package/lib/locale/browser/zh.js +288 -0
  217. package/lib/locale/index.js +153 -47
  218. package/lib/locale/index.ts +196 -0
  219. package/lib/locale/lang/en.js +284 -100
  220. package/lib/locale/lang/en.ts +282 -0
  221. package/lib/locale/lang/zh-cn.js +284 -0
  222. package/lib/locale/lang/zh-cn.ts +282 -0
  223. package/lib/locale/lang/zh.js +284 -100
  224. package/lib/locale/lang/zh.ts +282 -0
  225. package/lib/packages/core/common/event.js +61 -0
  226. package/lib/packages/core/common/event.ts +56 -0
  227. package/lib/packages/core/common/init.js +140 -0
  228. package/lib/packages/core/common/init.ts +133 -0
  229. package/lib/packages/core/common/props.js +245 -0
  230. package/lib/packages/core/common/props.ts +240 -0
  231. package/lib/packages/core/components/dialog-form/index.js +35 -0
  232. package/lib/packages/core/components/dialog-form/index.ts +29 -0
  233. package/lib/packages/core/components/dialog-form/index.vue +108 -0
  234. package/lib/packages/core/components/form/custom.js +43 -0
  235. package/lib/packages/core/components/form/custom.ts +41 -0
  236. package/lib/packages/core/components/form/index.vue +176 -0
  237. package/lib/packages/core/components/icon/index.vue +37 -0
  238. package/lib/packages/core/components/image-preview/index.js +40 -0
  239. package/lib/packages/core/components/image-preview/index.ts +37 -0
  240. package/lib/packages/core/components/image-preview/index.vue +215 -0
  241. package/lib/packages/core/directive/contextmenu.js +94 -0
  242. package/lib/packages/core/directive/contextmenu.ts +103 -0
  243. package/lib/packages/core/directive/permission.js +21 -0
  244. package/lib/packages/core/directive/permission.ts +18 -0
  245. package/lib/packages/data/box/index.vue +66 -0
  246. package/lib/packages/data/card/index.vue +62 -0
  247. package/lib/packages/data/cardText/index.vue +56 -0
  248. package/lib/packages/data/countdown/index.vue +81 -0
  249. package/lib/packages/data/dashboard/index.vue +72 -0
  250. package/lib/packages/data/display/index.vue +63 -0
  251. package/lib/packages/data/icons/index.vue +68 -0
  252. package/lib/packages/data/imgText/index.vue +72 -0
  253. package/lib/packages/data/list/index.vue +69 -0
  254. package/lib/packages/data/notice/index.vue +63 -0
  255. package/lib/packages/data/operaText/index.vue +62 -0
  256. package/lib/packages/data/panel/index.vue +62 -0
  257. package/lib/packages/data/pay/index.vue +92 -0
  258. package/lib/packages/data/price/index.vue +55 -0
  259. package/lib/packages/data/product/index.vue +106 -0
  260. package/lib/packages/data/profile/index.vue +91 -0
  261. package/lib/packages/data/progress/index.vue +64 -0
  262. package/lib/packages/data/rank/index.vue +92 -0
  263. package/lib/packages/data/rotate/index.vue +69 -0
  264. package/lib/packages/data/statistic/index.vue +71 -0
  265. package/lib/packages/data/tabs/index.vue +64 -0
  266. package/lib/packages/data/task/index.vue +82 -0
  267. package/lib/packages/data/weather/index.vue +103 -0
  268. package/lib/packages/element-plus/array/index.vue +115 -0
  269. package/lib/packages/element-plus/article/index.vue +73 -0
  270. package/lib/packages/element-plus/card/index.vue +103 -0
  271. package/lib/packages/element-plus/cascader/index.vue +132 -0
  272. package/lib/packages/element-plus/chat/index.vue +513 -0
  273. package/lib/packages/element-plus/checkbox/index.vue +84 -0
  274. package/lib/packages/element-plus/comment/index.vue +76 -0
  275. package/lib/packages/element-plus/count-up/index.vue +107 -0
  276. package/lib/packages/element-plus/crud/column/column-default.vue +128 -0
  277. package/lib/packages/element-plus/crud/column/column-dynamic.vue +86 -0
  278. package/lib/packages/element-plus/crud/column/column-menu.vue +267 -0
  279. package/lib/packages/element-plus/crud/column/column-slot.vue +348 -0
  280. package/lib/packages/element-plus/crud/column/column.vue +119 -0
  281. package/lib/packages/element-plus/crud/column/menu.vue +78 -0
  282. package/lib/packages/element-plus/crud/config.js +76 -0
  283. package/lib/packages/element-plus/crud/config.ts +74 -0
  284. package/lib/packages/element-plus/crud/dialog/dialog-column.vue +102 -0
  285. package/lib/packages/element-plus/crud/dialog/dialog-excel.vue +204 -0
  286. package/lib/packages/element-plus/crud/dialog/dialog-filter.vue +159 -0
  287. package/lib/packages/element-plus/crud/dialog/dialog-form.vue +352 -0
  288. package/lib/packages/element-plus/crud/grid/index.vue +271 -0
  289. package/lib/packages/element-plus/crud/grid/item.vue +39 -0
  290. package/lib/packages/element-plus/crud/index.vue +1018 -0
  291. package/lib/packages/element-plus/crud/menu/header-menu.vue +175 -0
  292. package/lib/packages/element-plus/crud/menu/header-search.vue +228 -0
  293. package/lib/packages/element-plus/crud/menu/table-page.vue +108 -0
  294. package/lib/packages/element-plus/date/index.vue +81 -0
  295. package/lib/packages/element-plus/draggable/index.vue +444 -0
  296. package/lib/packages/element-plus/dynamic/index.vue +353 -0
  297. package/lib/packages/element-plus/flow/index.vue +339 -0
  298. package/lib/packages/element-plus/flow/node.vue +84 -0
  299. package/lib/packages/element-plus/form/config.js +8 -0
  300. package/lib/packages/element-plus/form/config.ts +6 -0
  301. package/lib/packages/element-plus/form/index.vue +954 -0
  302. package/lib/packages/element-plus/form/menu.vue +63 -0
  303. package/lib/packages/element-plus/group/index.vue +90 -0
  304. package/lib/packages/element-plus/input/index.vue +1264 -0
  305. package/lib/packages/element-plus/input-color/index.vue +70 -0
  306. package/lib/packages/element-plus/input-cron/index.vue +363 -0
  307. package/lib/packages/element-plus/input-icon/index.vue +143 -0
  308. package/lib/packages/element-plus/input-map/index.vue +311 -0
  309. package/lib/packages/element-plus/input-number/index.vue +91 -0
  310. package/lib/packages/element-plus/input-table/index.vue +279 -0
  311. package/lib/packages/element-plus/input-tag/index.vue +79 -0
  312. package/lib/packages/element-plus/input-tree/index.vue +194 -0
  313. package/lib/packages/element-plus/license/index.vue +155 -0
  314. package/lib/packages/element-plus/login/index.vue +203 -0
  315. package/lib/packages/element-plus/mention/index.vue +117 -0
  316. package/lib/packages/element-plus/radio/index.vue +38 -0
  317. package/lib/packages/element-plus/rate/index.vue +51 -0
  318. package/lib/packages/element-plus/search/index.vue +129 -0
  319. package/lib/packages/element-plus/select/index.vue +292 -0
  320. package/lib/packages/element-plus/sign/index.vue +230 -0
  321. package/lib/packages/element-plus/slider/index.vue +66 -0
  322. package/lib/packages/element-plus/switch/index.vue +72 -0
  323. package/lib/packages/element-plus/tabs/index.vue +62 -0
  324. package/lib/packages/element-plus/text-ellipsis/index.vue +104 -0
  325. package/lib/packages/element-plus/time/index.vue +81 -0
  326. package/lib/packages/element-plus/title/index.vue +30 -0
  327. package/lib/packages/element-plus/tree/index.vue +460 -0
  328. package/lib/packages/element-plus/upload/index.vue +728 -0
  329. package/lib/packages/element-plus/verify/index.vue +62 -0
  330. package/lib/packages/element-plus/video/index.vue +90 -0
  331. package/lib/plugin/ali/index.js +8 -0
  332. package/lib/plugin/ali/index.ts +6 -0
  333. package/lib/plugin/clipboard/index.js +64 -0
  334. package/lib/plugin/clipboard/index.ts +67 -0
  335. package/lib/plugin/export/_blob.js +151 -0
  336. package/lib/plugin/export/_blob.ts +176 -0
  337. package/lib/plugin/export/_export2Excel.js +145 -0
  338. package/lib/plugin/export/_export2Excel.ts +166 -0
  339. package/lib/plugin/export/index.js +268 -0
  340. package/lib/plugin/export/index.ts +274 -0
  341. package/lib/plugin/logs/index.js +48 -0
  342. package/lib/plugin/logs/index.ts +66 -0
  343. package/lib/plugin/print/index.js +147 -0
  344. package/lib/plugin/print/index.ts +155 -0
  345. package/lib/plugin/qiniu/index.js +82 -0
  346. package/lib/plugin/qiniu/index.ts +88 -0
  347. package/lib/plugin/screenshot/index.js +14 -0
  348. package/lib/plugin/screenshot/index.ts +9 -0
  349. package/lib/plugin/video/index.js +55 -0
  350. package/lib/plugin/video/index.ts +60 -0
  351. package/lib/plugin/watermark/index.js +121 -0
  352. package/lib/plugin/watermark/index.ts +127 -0
  353. package/lib/plugin/watermark/watermark.js +111 -0
  354. package/lib/plugin/watermark/watermark.ts +121 -0
  355. package/lib/ui/data/index.js +54 -0
  356. package/lib/ui/data/index.ts +51 -0
  357. package/lib/ui/element-plus/index.js +92 -0
  358. package/lib/ui/element-plus/index.ts +89 -0
  359. package/lib/ui/index.js +9 -0
  360. package/lib/ui/index.ts +6 -0
  361. package/lib/utils/bem.js +31 -0
  362. package/lib/utils/bem.ts +36 -0
  363. package/lib/utils/mock.js +142 -0
  364. package/lib/utils/mock.ts +151 -0
  365. package/lib/utils/util.js +403 -0
  366. package/lib/utils/util.ts +392 -0
  367. package/lib/utils/validate.js +21 -0
  368. package/lib/utils/validate.ts +23 -0
  369. package/lib/version.js +4 -0
  370. package/lib/version.ts +1 -0
  371. package/package.json +24 -11
  372. package/types/index.d.ts +141 -0
  373. package/types/shims-aliases.d.ts +4 -0
  374. package/types/shims-vue.d.ts +6 -0
  375. package/lib/avue.js.map +0 -1
  376. package/lib/locale/format.js +0 -44
@@ -1,47 +1,153 @@
1
- import Format from './format';
2
- import defaultLang from './lang/zh';
3
- import { createApp } from 'vue'
4
- const Vue = createApp({})
5
- const format = Format(Vue);
6
- let lang = defaultLang;
7
- let merged = false;
8
- let i18nHandler = function () {
9
- const vuei18n = Object.getPrototypeOf(this || Vue || {}).$t;
10
- if (typeof vuei18n === 'function' && !!Vue.locale) {
11
- if (!merged) {
12
- merged = true;
13
- Vue.locale(
14
- Vue.config.lang,
15
- Object.assign(lang, Vue.locale(Vue.config.lang) || {}, { clone: true })
16
- );
17
- }
18
- return vuei18n.apply(this, arguments);
19
- }
20
- };
21
-
22
- export const t = function (path, options) {
23
- let value = i18nHandler.apply(this, arguments);
24
- if (value !== null && value !== undefined) return value;
25
-
26
- const array = path.split('.');
27
- let current = lang;
28
-
29
- for (let i = 0, j = array.length; i < j; i++) {
30
- const property = array[i];
31
- value = current[property];
32
- if (i === j - 1) return format(value, options);
33
- if (!value) return '';
34
- current = value;
35
- }
36
- return '';
37
- };
38
-
39
- export const use = function (l) {
40
- lang = l || lang;
41
- };
42
-
43
- export const i18n = function (fn) {
44
- i18nHandler = fn || i18nHandler;
45
- };
46
-
47
- export default { use, t, i18n };
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getLocaleCode = exports.getLocale = exports.i18n = exports.use = exports.t = exports.register = void 0;
7
+ const en_js_1 = __importDefault(require("./lang/en.js"));
8
+ const zh_js_1 = __importDefault(require("./lang/zh.js"));
9
+ const zh_cn_js_1 = __importDefault(require("./lang/zh-cn.js"));
10
+ const merge_1 = __importDefault(require("lodash/merge"));
11
+ const DEFAULT_LOCALE = 'zh-cn';
12
+ const RE_NARGS = /(%|)\{([0-9a-zA-Z_]+)\}/g;
13
+ const format = (string = '', ...args) => {
14
+ let formatArgs = args;
15
+ if (args.length === 1 && typeof args[0] === 'object') {
16
+ formatArgs = args[0];
17
+ }
18
+ if (!formatArgs || typeof formatArgs !== 'object') {
19
+ formatArgs = {};
20
+ }
21
+ return string.replace(RE_NARGS, (match, _prefix, key, index) => {
22
+ if (string[index - 1] === '{' && string[index + match.length] === '}') {
23
+ return key;
24
+ }
25
+ const result = Object.prototype.hasOwnProperty.call(formatArgs, key)
26
+ ? formatArgs[key]
27
+ : null;
28
+ return result == null ? '' : String(result);
29
+ });
30
+ };
31
+ const isPlainObject = (value) => Object.prototype.toString.call(value) === '[object Object]';
32
+ const resolveByPath = (path, locale) => {
33
+ return path.split('.').reduce((current, key) => {
34
+ if (current == null)
35
+ return undefined;
36
+ return current[key];
37
+ }, locale);
38
+ };
39
+ const normalizeLocaleCode = (code) => code.trim().toLowerCase();
40
+ const getGlobalLocaleRegistry = () => {
41
+ const globalObject = typeof globalThis !== 'undefined'
42
+ ? globalThis
43
+ : typeof window !== 'undefined'
44
+ ? window
45
+ : undefined;
46
+ if (!globalObject)
47
+ return {};
48
+ if (!isPlainObject(globalObject.AVUE_LANG)) {
49
+ globalObject.AVUE_LANG = {};
50
+ }
51
+ return globalObject.AVUE_LANG;
52
+ };
53
+ const localeRegistry = {};
54
+ const rememberLocale = (code, locale) => {
55
+ localeRegistry[code] = locale;
56
+ const globalRegistry = getGlobalLocaleRegistry();
57
+ globalRegistry[code] = locale;
58
+ };
59
+ const resolveRegisteredLocale = (code) => {
60
+ if (typeof code !== 'string' || !code.trim())
61
+ return null;
62
+ const normalizedCode = normalizeLocaleCode(code);
63
+ const shortCode = normalizedCode.split('-')[0];
64
+ const candidates = shortCode !== normalizedCode ? [normalizedCode, shortCode] : [normalizedCode];
65
+ const globalRegistry = getGlobalLocaleRegistry();
66
+ for (const candidate of candidates) {
67
+ const registered = localeRegistry[candidate] ||
68
+ (isPlainObject(globalRegistry[candidate]) ? globalRegistry[candidate] : undefined);
69
+ if (registered) {
70
+ localeRegistry[candidate] = registered;
71
+ return {
72
+ code: candidate,
73
+ locale: registered
74
+ };
75
+ }
76
+ }
77
+ return null;
78
+ };
79
+ const buildLocaleState = (code) => {
80
+ const merged = (0, merge_1.default)({}, zh_cn_js_1.default);
81
+ const resolved = resolveRegisteredLocale(code);
82
+ if (resolved) {
83
+ return {
84
+ code: resolved.code,
85
+ locale: (0, merge_1.default)({}, merged, resolved.locale)
86
+ };
87
+ }
88
+ return {
89
+ code: DEFAULT_LOCALE,
90
+ locale: merged
91
+ };
92
+ };
93
+ const register = function (code, locale, aliases = []) {
94
+ if (!code || !isPlainObject(locale))
95
+ return locale;
96
+ [code, ...aliases]
97
+ .map((name) => normalizeLocaleCode(name))
98
+ .filter(Boolean)
99
+ .forEach((name) => rememberLocale(name, locale));
100
+ return locale;
101
+ };
102
+ exports.register = register;
103
+ (0, exports.register)('en', en_js_1.default);
104
+ (0, exports.register)('zh', zh_js_1.default);
105
+ (0, exports.register)(DEFAULT_LOCALE, zh_cn_js_1.default);
106
+ let currentCode = DEFAULT_LOCALE;
107
+ let currentLang = buildLocaleState(DEFAULT_LOCALE).locale;
108
+ let i18nHandler = null;
109
+ const t = function (path, options) {
110
+ if (typeof i18nHandler === 'function') {
111
+ const translated = i18nHandler.call(this, path, options, currentLang);
112
+ if (translated !== undefined && translated !== null && translated !== path) {
113
+ return typeof translated === 'string'
114
+ ? format(translated, options)
115
+ : translated;
116
+ }
117
+ }
118
+ const value = resolveByPath(path, currentLang);
119
+ if (typeof value === 'string')
120
+ return format(value, options);
121
+ if (value === undefined || value === null)
122
+ return '';
123
+ return value;
124
+ };
125
+ exports.t = t;
126
+ const use = function (locale, override) {
127
+ const localeState = typeof locale === 'string' ? buildLocaleState(locale) : buildLocaleState(currentCode);
128
+ currentCode = localeState.code;
129
+ currentLang = localeState.locale;
130
+ const extraLocale = typeof locale === 'string' ? override : locale;
131
+ if (isPlainObject(extraLocale)) {
132
+ currentLang = (0, merge_1.default)({}, currentLang, extraLocale);
133
+ }
134
+ return currentLang;
135
+ };
136
+ exports.use = use;
137
+ const i18n = function (fn) {
138
+ i18nHandler = typeof fn === 'function' ? fn : null;
139
+ return i18nHandler;
140
+ };
141
+ exports.i18n = i18n;
142
+ const getLocale = function (code) {
143
+ if (typeof code === 'string') {
144
+ return buildLocaleState(code).locale;
145
+ }
146
+ return currentLang;
147
+ };
148
+ exports.getLocale = getLocale;
149
+ const getLocaleCode = function () {
150
+ return currentCode;
151
+ };
152
+ exports.getLocaleCode = getLocaleCode;
153
+ exports.default = { register: exports.register, use: exports.use, t: exports.t, i18n: exports.i18n, getLocale: exports.getLocale, getLocaleCode: exports.getLocaleCode };
@@ -0,0 +1,196 @@
1
+ import enLang from './lang/en';
2
+ import zhLang from './lang/zh';
3
+ import defaultLang from './lang/zh-cn';
4
+ import _merge from 'lodash/merge';
5
+
6
+ type TemplateArgs = Record<string, any> | any[];
7
+ type LocalePrimitive = string | number | boolean;
8
+ interface LocaleMessages {
9
+ [key: string]: LocalePrimitive | LocaleMessages | Array<LocalePrimitive | LocaleMessages>;
10
+ }
11
+ type LocaleInput = string | LocaleMessages | null | undefined;
12
+ type LocaleRegistry = Record<string, LocaleMessages>;
13
+ type TranslateHandler = (
14
+ this: any,
15
+ path: string,
16
+ options?: any,
17
+ locale?: LocaleMessages
18
+ ) => unknown;
19
+
20
+ const DEFAULT_LOCALE = 'zh-cn';
21
+ const RE_NARGS = /(%|)\{([0-9a-zA-Z_]+)\}/g;
22
+
23
+ const format = (string = '', ...args: any[]): string => {
24
+ let formatArgs: TemplateArgs = args;
25
+
26
+ if (args.length === 1 && typeof args[0] === 'object') {
27
+ formatArgs = args[0];
28
+ }
29
+
30
+ if (!formatArgs || typeof formatArgs !== 'object') {
31
+ formatArgs = {};
32
+ }
33
+
34
+ return string.replace(RE_NARGS, (match, _prefix, key, index) => {
35
+ if (string[index - 1] === '{' && string[index + match.length] === '}') {
36
+ return key;
37
+ }
38
+
39
+ const result = Object.prototype.hasOwnProperty.call(formatArgs, key)
40
+ ? (formatArgs as Record<string, any>)[key]
41
+ : null;
42
+
43
+ return result == null ? '' : String(result);
44
+ });
45
+ };
46
+
47
+ const isPlainObject = (value: unknown): value is Record<string, any> =>
48
+ Object.prototype.toString.call(value) === '[object Object]';
49
+
50
+ const resolveByPath = (path: string, locale: LocaleMessages) => {
51
+ return path.split('.').reduce<any>((current, key) => {
52
+ if (current == null) return undefined;
53
+ return current[key];
54
+ }, locale);
55
+ };
56
+
57
+ const normalizeLocaleCode = (code: string) => code.trim().toLowerCase();
58
+
59
+ const getGlobalLocaleRegistry = (): LocaleRegistry => {
60
+ const globalObject =
61
+ typeof globalThis !== 'undefined'
62
+ ? (globalThis as Record<string, any>)
63
+ : typeof window !== 'undefined'
64
+ ? (window as unknown as Record<string, any>)
65
+ : undefined;
66
+
67
+ if (!globalObject) return {};
68
+ if (!isPlainObject(globalObject.AVUE_LANG)) {
69
+ globalObject.AVUE_LANG = {};
70
+ }
71
+ return globalObject.AVUE_LANG as LocaleRegistry;
72
+ };
73
+
74
+ const localeRegistry: LocaleRegistry = {};
75
+
76
+ const rememberLocale = (code: string, locale: LocaleMessages) => {
77
+ localeRegistry[code] = locale;
78
+ const globalRegistry = getGlobalLocaleRegistry();
79
+ globalRegistry[code] = locale;
80
+ };
81
+
82
+ const resolveRegisteredLocale = (
83
+ code?: string
84
+ ): { code: string; locale: LocaleMessages } | null => {
85
+ if (typeof code !== 'string' || !code.trim()) return null;
86
+
87
+ const normalizedCode = normalizeLocaleCode(code);
88
+ const shortCode = normalizedCode.split('-')[0];
89
+ const candidates = shortCode !== normalizedCode ? [normalizedCode, shortCode] : [normalizedCode];
90
+ const globalRegistry = getGlobalLocaleRegistry();
91
+
92
+ for (const candidate of candidates) {
93
+ const registered =
94
+ localeRegistry[candidate] ||
95
+ (isPlainObject(globalRegistry[candidate]) ? globalRegistry[candidate] : undefined);
96
+
97
+ if (registered) {
98
+ localeRegistry[candidate] = registered;
99
+ return {
100
+ code: candidate,
101
+ locale: registered
102
+ };
103
+ }
104
+ }
105
+
106
+ return null;
107
+ };
108
+
109
+ const buildLocaleState = (code?: string) => {
110
+ const merged = _merge({}, defaultLang);
111
+ const resolved = resolveRegisteredLocale(code);
112
+
113
+ if (resolved) {
114
+ return {
115
+ code: resolved.code,
116
+ locale: _merge({}, merged, resolved.locale)
117
+ };
118
+ }
119
+
120
+ return {
121
+ code: DEFAULT_LOCALE,
122
+ locale: merged
123
+ };
124
+ };
125
+
126
+ export const register = function (
127
+ code: string,
128
+ locale: LocaleMessages,
129
+ aliases: string[] = []
130
+ ) {
131
+ if (!code || !isPlainObject(locale)) return locale;
132
+
133
+ [code, ...aliases]
134
+ .map((name) => normalizeLocaleCode(name))
135
+ .filter(Boolean)
136
+ .forEach((name) => rememberLocale(name, locale));
137
+
138
+ return locale;
139
+ };
140
+
141
+ register('en', enLang);
142
+ register('zh', zhLang);
143
+ register(DEFAULT_LOCALE, defaultLang);
144
+
145
+ let currentCode = DEFAULT_LOCALE;
146
+ let currentLang = buildLocaleState(DEFAULT_LOCALE).locale;
147
+ let i18nHandler: TranslateHandler | null = null;
148
+
149
+ export const t = function (this: any, path: string, options?: any) {
150
+ if (typeof i18nHandler === 'function') {
151
+ const translated = i18nHandler.call(this, path, options, currentLang);
152
+ if (translated !== undefined && translated !== null && translated !== path) {
153
+ return typeof translated === 'string'
154
+ ? format(translated, options)
155
+ : translated;
156
+ }
157
+ }
158
+
159
+ const value = resolveByPath(path, currentLang);
160
+ if (typeof value === 'string') return format(value, options);
161
+ if (value === undefined || value === null) return '';
162
+ return value;
163
+ };
164
+
165
+ export const use = function (locale?: LocaleInput, override?: LocaleMessages) {
166
+ const localeState =
167
+ typeof locale === 'string' ? buildLocaleState(locale) : buildLocaleState(currentCode);
168
+
169
+ currentCode = localeState.code;
170
+ currentLang = localeState.locale;
171
+
172
+ const extraLocale = typeof locale === 'string' ? override : locale;
173
+ if (isPlainObject(extraLocale)) {
174
+ currentLang = _merge({}, currentLang, extraLocale);
175
+ }
176
+
177
+ return currentLang;
178
+ };
179
+
180
+ export const i18n = function (fn?: TranslateHandler | null) {
181
+ i18nHandler = typeof fn === 'function' ? fn : null;
182
+ return i18nHandler;
183
+ };
184
+
185
+ export const getLocale = function (code?: string) {
186
+ if (typeof code === 'string') {
187
+ return buildLocaleState(code).locale;
188
+ }
189
+ return currentLang;
190
+ };
191
+
192
+ export const getLocaleCode = function () {
193
+ return currentCode;
194
+ };
195
+
196
+ export default { register, use, t, i18n, getLocale, getLocaleCode };