@a2simcode/ui 0.0.170 → 0.0.172

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 (349) hide show
  1. package/.cursor/skills/ui-component-helper/README.md +86 -86
  2. package/.cursor/skills/ui-component-helper/SKILL.md +115 -115
  3. package/LICENSE +53 -53
  4. package/README.md +156 -156
  5. package/dist/components/button/index.d.ts +3 -3
  6. package/dist/components/button/src/button.vue.d.ts +3 -3
  7. package/dist/components/input-button/src/input-button.vue.d.ts +1 -1
  8. package/dist/components/input-code/src/input-code.vue.d.ts +1 -1
  9. package/dist/components/slider-captcha/index.d.ts +5 -5
  10. package/dist/components/slider-captcha/src/slider-captcha.vue.d.ts +2 -2
  11. package/dist/components/upload/index.d.ts +5 -5
  12. package/dist/components/upload/src/upload.vue.d.ts +2 -2
  13. package/dist/simcode-ui.es.js +4 -4
  14. package/dist/simcode-ui.umd.js +2 -2
  15. package/dist/stats.html +1 -1
  16. package/dist/ui.css +1 -1
  17. package/docs/components/autocomplete.md +89 -89
  18. package/docs/components/barcode.md +101 -101
  19. package/docs/components/button-select.md +24 -24
  20. package/docs/components/button.md +117 -117
  21. package/docs/components/buttons.md +119 -119
  22. package/docs/components/cascader-select.md +114 -114
  23. package/docs/components/checkbox.md +114 -114
  24. package/docs/components/code-mirror.md +85 -85
  25. package/docs/components/collapse.md +26 -26
  26. package/docs/components/comp.md +71 -71
  27. package/docs/components/count-up.md +24 -24
  28. package/docs/components/count.md +24 -24
  29. package/docs/components/data-panel.md +24 -24
  30. package/docs/components/date.md +76 -76
  31. package/docs/components/dialog-full.md +112 -112
  32. package/docs/components/dialog.md +127 -127
  33. package/docs/components/divider.md +24 -24
  34. package/docs/components/drawer.md +127 -127
  35. package/docs/components/dynamic-layer.md +118 -118
  36. package/docs/components/echarts.md +72 -72
  37. package/docs/components/editor.md +24 -24
  38. package/docs/components/form.md +72 -72
  39. package/docs/components/guid.md +39 -39
  40. package/docs/components/hpanel.md +24 -24
  41. package/docs/components/icon.md +56 -56
  42. package/docs/components/input-button.md +24 -24
  43. package/docs/components/input-code.md +24 -24
  44. package/docs/components/input-color.md +114 -114
  45. package/docs/components/input-layer.md +26 -26
  46. package/docs/components/input-rows.md +370 -370
  47. package/docs/components/input-tag.md +50 -50
  48. package/docs/components/input.md +129 -129
  49. package/docs/components/layer-form.md +61 -61
  50. package/docs/components/layer.md +127 -127
  51. package/docs/components/layout.md +132 -132
  52. package/docs/components/map.md +24 -24
  53. package/docs/components/menu.md +121 -121
  54. package/docs/components/meta/buttons.ts +76 -76
  55. package/docs/components/meta/code-mirror.ts +108 -108
  56. package/docs/components/meta/comp.ts +236 -236
  57. package/docs/components/meta/date.ts +267 -267
  58. package/docs/components/meta/echarts.ts +64 -64
  59. package/docs/components/meta/form-item.ts +50 -50
  60. package/docs/components/meta/form.ts +181 -181
  61. package/docs/components/meta/input-cards.ts +112 -112
  62. package/docs/components/meta/input-color.ts +243 -243
  63. package/docs/components/meta/input-layer.ts +366 -366
  64. package/docs/components/meta/input-rows.ts +1 -1
  65. package/docs/components/meta/layer-form.ts +56 -56
  66. package/docs/components/meta/map.ts +68 -68
  67. package/docs/components/meta/panel.ts +152 -152
  68. package/docs/components/meta/slider.ts +270 -270
  69. package/docs/components/meta/table-panel.ts +232 -232
  70. package/docs/components/meta/table.ts +391 -391
  71. package/docs/components/meta/tabs.ts +146 -146
  72. package/docs/components/meta/title.ts +91 -91
  73. package/docs/components/meta/tree-select.ts +199 -199
  74. package/docs/components/meta/tree.ts +219 -219
  75. package/docs/components/meta/vpanel.ts +19 -19
  76. package/docs/components/meta/workflow-viewer.ts +55 -55
  77. package/docs/components/number.md +124 -124
  78. package/docs/components/page.md +102 -102
  79. package/docs/components/panel.md +37 -37
  80. package/docs/components/radio.md +87 -87
  81. package/docs/components/rate.md +71 -71
  82. package/docs/components/select.md +133 -133
  83. package/docs/components/slider-captcha.md +41 -41
  84. package/docs/components/slider.md +101 -101
  85. package/docs/components/switch.md +90 -90
  86. package/docs/components/table-panel.md +236 -236
  87. package/docs/components/table.md +391 -391
  88. package/docs/components/tabs.md +26 -26
  89. package/docs/components/title.md +24 -24
  90. package/docs/components/tree.md +207 -207
  91. package/docs/components/upload.md +117 -117
  92. package/docs/components/workflow-viewer.md +21 -21
  93. package/docs/components/workflow.md +21 -21
  94. package/docs/examples/autocomplete/advanced.vue +35 -35
  95. package/docs/examples/autocomplete/basic.vue +32 -32
  96. package/docs/examples/autocomplete/clearable.vue +33 -33
  97. package/docs/examples/autocomplete/custom-template.vue +49 -49
  98. package/docs/examples/autocomplete/disabled.vue +33 -33
  99. package/docs/examples/autocomplete/icon.vue +37 -37
  100. package/docs/examples/barcode/all-types.vue +380 -380
  101. package/docs/examples/barcode/basic.vue +14 -14
  102. package/docs/examples/barcode/props-appearance.vue +243 -243
  103. package/docs/examples/barcode/props-geometry.vue +143 -143
  104. package/docs/examples/barcode/props-logic.vue +216 -216
  105. package/docs/examples/barcode/props-symbology.vue +199 -199
  106. package/docs/examples/barcode/props-text.vue +268 -268
  107. package/docs/examples/button/basic.vue +7 -7
  108. package/docs/examples/button/danger-ghost.vue +17 -17
  109. package/docs/examples/button/disabled.vue +10 -10
  110. package/docs/examples/button/loading.vue +6 -6
  111. package/docs/examples/button/shape.vue +7 -7
  112. package/docs/examples/button/size.vue +14 -14
  113. package/docs/examples/button/type.vue +10 -9
  114. package/docs/examples/button-select/basic.vue +19 -19
  115. package/docs/examples/buttons/basic.vue +45 -45
  116. package/docs/examples/buttons/disabled.vue +36 -36
  117. package/docs/examples/buttons/dropdown.vue +63 -63
  118. package/docs/examples/buttons/group.vue +52 -52
  119. package/docs/examples/buttons/link.vue +47 -47
  120. package/docs/examples/buttons/popup.vue +39 -39
  121. package/docs/examples/buttons/size.vue +45 -45
  122. package/docs/examples/cascader-select/basic.vue +28 -28
  123. package/docs/examples/cascader-select/clearable.vue +34 -34
  124. package/docs/examples/cascader-select/disabled.vue +43 -43
  125. package/docs/examples/cascader-select/filterable.vue +37 -37
  126. package/docs/examples/cascader-select/methods.vue +84 -84
  127. package/docs/examples/cascader-select/multiple.vue +38 -38
  128. package/docs/examples/cascader-select/slot.vue +45 -45
  129. package/docs/examples/checkbox/basic.vue +18 -18
  130. package/docs/examples/checkbox/button.vue +19 -19
  131. package/docs/examples/checkbox/color.vue +25 -25
  132. package/docs/examples/checkbox/disabled.vue +17 -17
  133. package/docs/examples/checkbox/min-max.vue +20 -20
  134. package/docs/examples/checkbox/mixed.vue +56 -56
  135. package/docs/examples/checkbox/size.vue +28 -28
  136. package/docs/examples/code-mirror/basic.vue +11 -11
  137. package/docs/examples/code-mirror/events.vue +42 -42
  138. package/docs/examples/code-mirror/height.vue +25 -25
  139. package/docs/examples/code-mirror/mode.vue +33 -33
  140. package/docs/examples/code-mirror/readonly.vue +14 -14
  141. package/docs/examples/collapse/basic.vue +82 -82
  142. package/docs/examples/comp/basic.vue +7 -7
  143. package/docs/examples/comp/collapse.vue +38 -38
  144. package/docs/examples/comp/tabs.vue +38 -38
  145. package/docs/examples/count/basic.vue +101 -101
  146. package/docs/examples/count-up/basic.vue +89 -89
  147. package/docs/examples/data-panel/basic.vue +110 -110
  148. package/docs/examples/date/basic.vue +73 -73
  149. package/docs/examples/date/default-value.vue +59 -59
  150. package/docs/examples/date/format.vue +75 -75
  151. package/docs/examples/date/range.vue +66 -66
  152. package/docs/examples/date/types.vue +79 -79
  153. package/docs/examples/decorated-title/basic.vue +31 -31
  154. package/docs/examples/dialog/basic.vue +36 -36
  155. package/docs/examples/dialog/custom-buttons.vue +44 -44
  156. package/docs/examples/dialog/fullscreen.vue +23 -23
  157. package/docs/examples/dialog/no-mask.vue +17 -17
  158. package/docs/examples/dialog/size.vue +44 -44
  159. package/docs/examples/dialog/steps.vue +57 -57
  160. package/docs/examples/dialog-full/basic.vue +29 -29
  161. package/docs/examples/dialog-full/custom-buttons.vue +45 -45
  162. package/docs/examples/dialog-full/no-buttons.vue +18 -18
  163. package/docs/examples/dialog-full/no-header.vue +27 -27
  164. package/docs/examples/dialog-full/steps.vue +71 -71
  165. package/docs/examples/divider/basic.vue +52 -52
  166. package/docs/examples/drawer/basic.vue +35 -35
  167. package/docs/examples/drawer/custom-buttons.vue +34 -34
  168. package/docs/examples/drawer/direction.vue +47 -47
  169. package/docs/examples/drawer/mask.vue +36 -36
  170. package/docs/examples/drawer/no-buttons.vue +20 -20
  171. package/docs/examples/drawer/size.vue +28 -28
  172. package/docs/examples/dynamic-layer/basic.vue +33 -33
  173. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
  174. package/docs/examples/dynamic-layer/form.vue +73 -73
  175. package/docs/examples/dynamic-layer/steps.vue +52 -52
  176. package/docs/examples/dynamic-layer/types.vue +40 -40
  177. package/docs/examples/echarts/basic.vue +31 -31
  178. package/docs/examples/echarts/dynamic.vue +43 -43
  179. package/docs/examples/echarts/line.vue +46 -46
  180. package/docs/examples/echarts/pie.vue +44 -44
  181. package/docs/examples/editor/basic.vue +15 -15
  182. package/docs/examples/form/basic.vue +613 -613
  183. package/docs/examples/form/init.vue +76 -76
  184. package/docs/examples/form/master-detail.vue +203 -203
  185. package/docs/examples/form/rule-format.vue +179 -179
  186. package/docs/examples/guid/basic.vue +10 -10
  187. package/docs/examples/guid/size.vue +13 -13
  188. package/docs/examples/hpanel/basic.vue +79 -79
  189. package/docs/examples/icon/basic.vue +9 -9
  190. package/docs/examples/icon/rotate-flip.vue +9 -9
  191. package/docs/examples/icon/size.vue +7 -7
  192. package/docs/examples/input/basic.vue +10 -10
  193. package/docs/examples/input/clearable.vue +12 -12
  194. package/docs/examples/input/disabled.vue +6 -6
  195. package/docs/examples/input/icon.vue +23 -23
  196. package/docs/examples/input/password.vue +18 -18
  197. package/docs/examples/input/size.vue +13 -13
  198. package/docs/examples/input/textarea.vue +25 -25
  199. package/docs/examples/input/word-limit.vue +28 -28
  200. package/docs/examples/input-button/basic.vue +33 -33
  201. package/docs/examples/input-code/basic.vue +29 -29
  202. package/docs/examples/input-color/basic.vue +10 -10
  203. package/docs/examples/input-color/disabled.vue +13 -13
  204. package/docs/examples/input-color/format.vue +17 -17
  205. package/docs/examples/input-color/no-alpha.vue +13 -13
  206. package/docs/examples/input-color/only-button.vue +15 -15
  207. package/docs/examples/input-color/predefine.vue +31 -31
  208. package/docs/examples/input-color/size.vue +15 -15
  209. package/docs/examples/input-layer/basic.vue +86 -86
  210. package/docs/examples/input-rows/basic.vue +73 -73
  211. package/docs/examples/input-rows/drag.vue +48 -48
  212. package/docs/examples/input-rows/layer-form.vue +85 -85
  213. package/docs/examples/input-rows/nested.vue +91 -91
  214. package/docs/examples/input-tag/basic.vue +27 -27
  215. package/docs/examples/input-tag/colors.vue +23 -23
  216. package/docs/examples/input-tag/readonly.vue +17 -17
  217. package/docs/examples/layer/basic.vue +43 -43
  218. package/docs/examples/layer/custom-buttons.vue +61 -61
  219. package/docs/examples/layer/drawer.vue +37 -37
  220. package/docs/examples/layer/full.vue +38 -38
  221. package/docs/examples/layer/modal.vue +34 -34
  222. package/docs/examples/layer/steps.vue +46 -46
  223. package/docs/examples/layer-form/basic.vue +76 -76
  224. package/docs/examples/layer-form/config.vue +82 -82
  225. package/docs/examples/layer-form/size.vue +72 -72
  226. package/docs/examples/layout/basic.vue +36 -36
  227. package/docs/examples/layout/custom-size.vue +50 -50
  228. package/docs/examples/layout/disable-move.vue +37 -37
  229. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
  230. package/docs/examples/layout/min-size.vue +73 -73
  231. package/docs/examples/layout/percent-size.vue +80 -80
  232. package/docs/examples/layout/simple.vue +22 -22
  233. package/docs/examples/layout/top-side.vue +34 -34
  234. package/docs/examples/map/basic.vue +22 -22
  235. package/docs/examples/menu/basic.vue +58 -58
  236. package/docs/examples/menu/collapsed.vue +49 -49
  237. package/docs/examples/menu/horizontal.vue +44 -44
  238. package/docs/examples/menu/selection-test.vue +104 -104
  239. package/docs/examples/menu/theme.vue +46 -46
  240. package/docs/examples/menu/vertical.vue +46 -46
  241. package/docs/examples/number/advanced.vue +143 -143
  242. package/docs/examples/number/basic.vue +63 -63
  243. package/docs/examples/number/disabled.vue +49 -49
  244. package/docs/examples/number/size.vue +42 -42
  245. package/docs/examples/number/slots.vue +123 -123
  246. package/docs/examples/number/step-strictly.vue +41 -41
  247. package/docs/examples/number/step.vue +47 -47
  248. package/docs/examples/page/basic.vue +41 -41
  249. package/docs/examples/page/code-table-model.vue +428 -428
  250. package/docs/examples/page/dept-user-management.vue +211 -211
  251. package/docs/examples/page/init.vue +87 -87
  252. package/docs/examples/page/log.vue +453 -453
  253. package/docs/examples/page/user-management.vue +313 -313
  254. package/docs/examples/panel/tool-buttons.vue +18 -18
  255. package/docs/examples/radio/basic.vue +17 -17
  256. package/docs/examples/radio/button.vue +17 -17
  257. package/docs/examples/radio/color.vue +18 -18
  258. package/docs/examples/radio/disabled.vue +17 -17
  259. package/docs/examples/radio/size.vue +29 -29
  260. package/docs/examples/rate/basic.vue +24 -24
  261. package/docs/examples/rate/half.vue +24 -24
  262. package/docs/examples/rate/readonly.vue +11 -11
  263. package/docs/examples/rate/text.vue +37 -37
  264. package/docs/examples/select/basic.vue +16 -16
  265. package/docs/examples/select/clearable.vue +22 -22
  266. package/docs/examples/select/disabled.vue +31 -31
  267. package/docs/examples/select/filterable.vue +24 -24
  268. package/docs/examples/select/group.vue +23 -23
  269. package/docs/examples/select/icon.vue +16 -16
  270. package/docs/examples/select/multiple.vue +18 -18
  271. package/docs/examples/select/size.vue +39 -39
  272. package/docs/examples/slider/basic.vue +42 -42
  273. package/docs/examples/slider/disabled.vue +17 -17
  274. package/docs/examples/slider/marks.vue +30 -30
  275. package/docs/examples/slider/size.vue +37 -37
  276. package/docs/examples/slider/tooltip.vue +36 -36
  277. package/docs/examples/slider/vertical.vue +26 -26
  278. package/docs/examples/slider-captcha/basic.vue +44 -44
  279. package/docs/examples/slider-captcha/custom.vue +48 -48
  280. package/docs/examples/switch/basic.vue +16 -16
  281. package/docs/examples/switch/disabled.vue +13 -13
  282. package/docs/examples/switch/loading.vue +13 -13
  283. package/docs/examples/switch/size.vue +15 -15
  284. package/docs/examples/switch/text.vue +13 -13
  285. package/docs/examples/table/action-filter.vue +126 -126
  286. package/docs/examples/table/actions.vue +116 -116
  287. package/docs/examples/table/add-row.vue +103 -103
  288. package/docs/examples/table/basic.vue +168 -168
  289. package/docs/examples/table/checkbox-layout.vue +68 -68
  290. package/docs/examples/table/custom-layout.vue +115 -115
  291. package/docs/examples/table/dynamic-type.vue +73 -73
  292. package/docs/examples/table/editable.vue +262 -262
  293. package/docs/examples/table/field-selection.vue +87 -87
  294. package/docs/examples/table/frozen-column.vue +140 -140
  295. package/docs/examples/table/height-mode.vue +99 -99
  296. package/docs/examples/table/icon.vue +85 -85
  297. package/docs/examples/table/link.vue +66 -66
  298. package/docs/examples/table/multiple.vue +188 -188
  299. package/docs/examples/table/pagination.vue +151 -151
  300. package/docs/examples/table/single-selection.vue +64 -64
  301. package/docs/examples/table/sub-table-lazy.vue +97 -97
  302. package/docs/examples/table/sub-table.vue +103 -103
  303. package/docs/examples/table/tag.vue +43 -43
  304. package/docs/examples/table/tree-column.vue +119 -119
  305. package/docs/examples/table/tree-data.vue +141 -141
  306. package/docs/examples/table/tree-default-expand-all.vue +60 -60
  307. package/docs/examples/table/tree-lazy.vue +80 -80
  308. package/docs/examples/table/tree-set-selection.vue +75 -75
  309. package/docs/examples/table-panel/basic.vue +229 -229
  310. package/docs/examples/table-panel/batch-operations.vue +285 -285
  311. package/docs/examples/table-panel/button-visibility.vue +88 -88
  312. package/docs/examples/table-panel/filter.vue +219 -219
  313. package/docs/examples/table-panel/get-selection.vue +111 -111
  314. package/docs/examples/table-panel/multiple-selection.vue +243 -243
  315. package/docs/examples/table-panel/pagination.vue +133 -133
  316. package/docs/examples/table-panel/sub-table-lazy.vue +118 -118
  317. package/docs/examples/table-panel/tree-parent-key.vue +67 -67
  318. package/docs/examples/tabs/basic.vue +98 -98
  319. package/docs/examples/time/base.vue +67 -67
  320. package/docs/examples/title/basic.vue +87 -87
  321. package/docs/examples/tree/accordion.vue +46 -46
  322. package/docs/examples/tree/basic.vue +50 -50
  323. package/docs/examples/tree/buttons.vue +53 -53
  324. package/docs/examples/tree/checkable.vue +52 -52
  325. package/docs/examples/tree/custom-keys.vue +39 -39
  326. package/docs/examples/tree/default-expanded.vue +52 -52
  327. package/docs/examples/tree/draggable.vue +29 -29
  328. package/docs/examples/tree/expand-on-click.vue +39 -39
  329. package/docs/examples/tree/flat-data.vue +20 -20
  330. package/docs/examples/tree/icon.vue +40 -40
  331. package/docs/examples/tree/load-data.vue +37 -37
  332. package/docs/examples/tree/methods.vue +74 -74
  333. package/docs/examples/tree/theme.vue +33 -33
  334. package/docs/examples/tree-select/basic.vue +47 -47
  335. package/docs/examples/upload/accept.vue +31 -31
  336. package/docs/examples/upload/basic.vue +12 -12
  337. package/docs/examples/upload/drag.vue +11 -11
  338. package/docs/examples/upload/image.vue +17 -17
  339. package/docs/examples/upload/limit.vue +20 -20
  340. package/docs/examples/upload/multiple.vue +17 -17
  341. package/docs/examples/upload/readonly.vue +17 -17
  342. package/docs/examples/utils/cipher.vue +160 -160
  343. package/docs/examples/utils/common.vue +153 -153
  344. package/docs/examples/utils/date.vue +56 -56
  345. package/docs/examples/utils/dom.vue +52 -52
  346. package/docs/examples/utils/is.vue +70 -70
  347. package/docs/examples/workflow/basic.vue +265 -265
  348. package/docs/examples/workflow-viewer/basic.vue +248 -248
  349. package/package.json +23 -23
package/README.md CHANGED
@@ -1,156 +1,156 @@
1
- # SimCode UI
2
-
3
- <div align="center">
4
- <h1>SimCode UI</h1>
5
- <p>基于 Vue 3 + TypeScript 的现代化 UI 组件库</p>
6
- </div>
7
-
8
- ## ✨ 特性
9
-
10
- - 🚀 **现代化技术栈**: 基于 Vue 3 + TypeScript + Vite
11
- - 📦 **开箱即用**: 提供完善的类型定义和文档
12
- - 🎨 **精美设计**: 现代化的设计风格
13
- - 🔧 **易于定制**: 支持主题定制
14
- - ⚡️ **按需加载**: 支持 Tree Shaking
15
- - 🧪 **完善测试**: 单元测试覆盖
16
-
17
- ## 📦 安装
18
-
19
- 使用 pnpm:
20
-
21
- ```bash
22
- pnpm add @a2simcode/ui
23
- ```
24
-
25
- 使用 npm:
26
-
27
- ```bash
28
- npm install @a2simcode/ui
29
- ```
30
-
31
- 使用 yarn:
32
-
33
- ```bash
34
- yarn add @a2simcode/ui
35
- ```
36
-
37
- ### 安装 Peer Dependencies
38
-
39
- `@a2simcode/ui` 使用 peer dependencies 来避免重复打包依赖。**必须安装**以下依赖:
40
-
41
- ```bash
42
- pnpm add vue element-plus
43
- ```
44
-
45
- 根据你使用的组件,可能还需要安装以下**可选依赖**:
46
-
47
- ```bash
48
- # 如果使用表格组件
49
- pnpm add @visactor/vtable @visactor/vtable-editors
50
-
51
- # 如果使用图表组件
52
- pnpm add echarts
53
-
54
- # 如果使用代码编辑器组件
55
- pnpm add codemirror @codemirror/autocomplete @codemirror/commands @codemirror/lang-javascript @codemirror/lang-json @codemirror/lang-sql @codemirror/lang-python @codemirror/lang-java @codemirror/lang-css @codemirror/lang-html @codemirror/lang-xml @codemirror/lang-markdown @codemirror/language @codemirror/state @codemirror/view
56
-
57
- # 如果使用其他功能组件
58
- pnpm add @iconify/vue @vueuse/core dayjs async-validator crypto-js sortablejs sql-formatter countup.js @bwip-js/browser @wangeditor/editor diagram-js diagram-js-direct-editing min-dom inherits tiny-svg min-dash
59
- ```
60
-
61
- > **注意**: 由于 `@a2simcode/ui` 输出的是预打包的单文件,使用方的打包器可能无法自动识别 peer dependencies。请确保在使用相关组件前,已安装对应的 peer dependencies。
62
-
63
- ## 🔨 快速开始
64
-
65
- ### 完整引入
66
-
67
- ```typescript
68
- import { createApp } from 'vue'
69
- import App from './App.vue'
70
- import SimCodeUI from '@a2simcode/ui'
71
- import '@a2simcode/ui/dist/style.css'
72
-
73
- const app = createApp(App)
74
- app.use(SimCodeUI)
75
- app.mount('#app')
76
- ```
77
-
78
- ### 按需引入
79
-
80
- ```vue
81
- <template>
82
- <j-button type="primary">按钮</j-button>
83
- </template>
84
-
85
- <script setup lang="ts">
86
- import { JButton } from '@a2simcode/ui'
87
- import '@a2simcode/ui/dist/style.css'
88
- </script>
89
- ```
90
-
91
- ## 🎯 组件列表
92
-
93
- - ✅ Button 按钮
94
- - ✅ Input 输入框
95
- - ✅ Radio 单选框
96
- - 🚧 更多组件开发中...
97
-
98
- ## 💻 本地开发
99
-
100
- ```bash
101
- # 进入项目目录
102
- cd simcode-ui
103
-
104
- # 安装依赖
105
- pnpm install
106
-
107
- # 启动开发服务器
108
- pnpm dev
109
-
110
- # 构建组件库
111
- pnpm build
112
-
113
- # 运行测试
114
- pnpm test
115
-
116
- # 启动文档站点
117
- pnpm docs:dev
118
- ```
119
-
120
- ## 📁 项目结构
121
-
122
- ```
123
- simcode-ui/
124
- ├── packages/ # 组件源码
125
- │ ├── components/ # 组件
126
- │ │ ├── button/ # 按钮组件
127
- │ │ ├── input/ # 输入框组件
128
- │ │ └── index.ts # 组件入口
129
- │ └── theme/ # 主题样式
130
- │ └── src/ # 样式源码 (Less)
131
- ├── examples/ # 组件预览
132
- │ ├── App.vue # 预览应用
133
- │ └── main.ts # 入口文件
134
- ├── docs/ # 文档
135
- │ ├── .vitepress/ # VitePress 配置
136
- │ ├── guide/ # 指南
137
- │ └── components/ # 组件文档
138
- ├── __tests__/ # 测试文件
139
- ├── vite.config.ts # Vite 配置
140
- ├── vitest.config.ts # Vitest 配置
141
- └── package.json # 项目配置
142
- ```
143
-
144
- ## 🤝 贡献
145
-
146
- 欢迎提交 Issue 和 Pull Request!
147
-
148
- ## 📄 版权声明
149
-
150
- Copyright © 2024 苏州极简搭信息技术有限公司. All rights reserved.
151
-
152
- 本软件及其相关文档为专有软件,受版权法保护。未经版权所有者明确书面许可,不得以任何形式或方式(电子、机械、复印、录制或其他方式)复制、分发、传播或使用本软件的任何部分。
153
-
154
- ## 🙏 致谢
155
-
156
- 感谢所有为这个项目做出贡献的开发者!
1
+ # SimCode UI
2
+
3
+ <div align="center">
4
+ <h1>SimCode UI</h1>
5
+ <p>基于 Vue 3 + TypeScript 的现代化 UI 组件库</p>
6
+ </div>
7
+
8
+ ## ✨ 特性
9
+
10
+ - 🚀 **现代化技术栈**: 基于 Vue 3 + TypeScript + Vite
11
+ - 📦 **开箱即用**: 提供完善的类型定义和文档
12
+ - 🎨 **精美设计**: 现代化的设计风格
13
+ - 🔧 **易于定制**: 支持主题定制
14
+ - ⚡️ **按需加载**: 支持 Tree Shaking
15
+ - 🧪 **完善测试**: 单元测试覆盖
16
+
17
+ ## 📦 安装
18
+
19
+ 使用 pnpm:
20
+
21
+ ```bash
22
+ pnpm add @a2simcode/ui
23
+ ```
24
+
25
+ 使用 npm:
26
+
27
+ ```bash
28
+ npm install @a2simcode/ui
29
+ ```
30
+
31
+ 使用 yarn:
32
+
33
+ ```bash
34
+ yarn add @a2simcode/ui
35
+ ```
36
+
37
+ ### 安装 Peer Dependencies
38
+
39
+ `@a2simcode/ui` 使用 peer dependencies 来避免重复打包依赖。**必须安装**以下依赖:
40
+
41
+ ```bash
42
+ pnpm add vue element-plus
43
+ ```
44
+
45
+ 根据你使用的组件,可能还需要安装以下**可选依赖**:
46
+
47
+ ```bash
48
+ # 如果使用表格组件
49
+ pnpm add @visactor/vtable @visactor/vtable-editors
50
+
51
+ # 如果使用图表组件
52
+ pnpm add echarts
53
+
54
+ # 如果使用代码编辑器组件
55
+ pnpm add codemirror @codemirror/autocomplete @codemirror/commands @codemirror/lang-javascript @codemirror/lang-json @codemirror/lang-sql @codemirror/lang-python @codemirror/lang-java @codemirror/lang-css @codemirror/lang-html @codemirror/lang-xml @codemirror/lang-markdown @codemirror/language @codemirror/state @codemirror/view
56
+
57
+ # 如果使用其他功能组件
58
+ pnpm add @iconify/vue @vueuse/core dayjs async-validator crypto-js sortablejs sql-formatter countup.js @bwip-js/browser @wangeditor/editor diagram-js diagram-js-direct-editing min-dom inherits tiny-svg min-dash
59
+ ```
60
+
61
+ > **注意**: 由于 `@a2simcode/ui` 输出的是预打包的单文件,使用方的打包器可能无法自动识别 peer dependencies。请确保在使用相关组件前,已安装对应的 peer dependencies。
62
+
63
+ ## 🔨 快速开始
64
+
65
+ ### 完整引入
66
+
67
+ ```typescript
68
+ import { createApp } from 'vue'
69
+ import App from './App.vue'
70
+ import SimCodeUI from '@a2simcode/ui'
71
+ import '@a2simcode/ui/dist/style.css'
72
+
73
+ const app = createApp(App)
74
+ app.use(SimCodeUI)
75
+ app.mount('#app')
76
+ ```
77
+
78
+ ### 按需引入
79
+
80
+ ```vue
81
+ <template>
82
+ <j-button type="primary">按钮</j-button>
83
+ </template>
84
+
85
+ <script setup lang="ts">
86
+ import { JButton } from '@a2simcode/ui'
87
+ import '@a2simcode/ui/dist/style.css'
88
+ </script>
89
+ ```
90
+
91
+ ## 🎯 组件列表
92
+
93
+ - ✅ Button 按钮
94
+ - ✅ Input 输入框
95
+ - ✅ Radio 单选框
96
+ - 🚧 更多组件开发中...
97
+
98
+ ## 💻 本地开发
99
+
100
+ ```bash
101
+ # 进入项目目录
102
+ cd simcode-ui
103
+
104
+ # 安装依赖
105
+ pnpm install
106
+
107
+ # 启动开发服务器
108
+ pnpm dev
109
+
110
+ # 构建组件库
111
+ pnpm build
112
+
113
+ # 运行测试
114
+ pnpm test
115
+
116
+ # 启动文档站点
117
+ pnpm docs:dev
118
+ ```
119
+
120
+ ## 📁 项目结构
121
+
122
+ ```
123
+ simcode-ui/
124
+ ├── packages/ # 组件源码
125
+ │ ├── components/ # 组件
126
+ │ │ ├── button/ # 按钮组件
127
+ │ │ ├── input/ # 输入框组件
128
+ │ │ └── index.ts # 组件入口
129
+ │ └── theme/ # 主题样式
130
+ │ └── src/ # 样式源码 (Less)
131
+ ├── examples/ # 组件预览
132
+ │ ├── App.vue # 预览应用
133
+ │ └── main.ts # 入口文件
134
+ ├── docs/ # 文档
135
+ │ ├── .vitepress/ # VitePress 配置
136
+ │ ├── guide/ # 指南
137
+ │ └── components/ # 组件文档
138
+ ├── __tests__/ # 测试文件
139
+ ├── vite.config.ts # Vite 配置
140
+ ├── vitest.config.ts # Vitest 配置
141
+ └── package.json # 项目配置
142
+ ```
143
+
144
+ ## 🤝 贡献
145
+
146
+ 欢迎提交 Issue 和 Pull Request!
147
+
148
+ ## 📄 版权声明
149
+
150
+ Copyright © 2024 苏州极简搭信息技术有限公司. All rights reserved.
151
+
152
+ 本软件及其相关文档为专有软件,受版权法保护。未经版权所有者明确书面许可,不得以任何形式或方式(电子、机械、复印、录制或其他方式)复制、分发、传播或使用本软件的任何部分。
153
+
154
+ ## 🙏 致谢
155
+
156
+ 感谢所有为这个项目做出贡献的开发者!
@@ -9,7 +9,7 @@ declare const JButton: {
9
9
  }, import('vue').PublicProps, {
10
10
  size: "large" | "default" | "small";
11
11
  icon: string;
12
- type: "primary" | "dashed" | "link" | "text" | "default";
12
+ type: "primary" | "success" | "dashed" | "link" | "text" | "default";
13
13
  label: string;
14
14
  shape: "default" | "circle" | "round";
15
15
  ghost: boolean;
@@ -42,7 +42,7 @@ declare const JButton: {
42
42
  }, {}, {}, {}, {
43
43
  size: "large" | "default" | "small";
44
44
  icon: string;
45
- type: "primary" | "dashed" | "link" | "text" | "default";
45
+ type: "primary" | "success" | "dashed" | "link" | "text" | "default";
46
46
  label: string;
47
47
  shape: "default" | "circle" | "round";
48
48
  ghost: boolean;
@@ -72,7 +72,7 @@ declare const JButton: {
72
72
  }, string, {
73
73
  size: "large" | "default" | "small";
74
74
  icon: string;
75
- type: "primary" | "dashed" | "link" | "text" | "default";
75
+ type: "primary" | "success" | "dashed" | "link" | "text" | "default";
76
76
  label: string;
77
77
  shape: "default" | "circle" | "round";
78
78
  ghost: boolean;
@@ -1,6 +1,6 @@
1
1
  export interface ButtonProps {
2
- /** 按钮的类型,分为五种:主要按钮、幽灵按钮、虚框按钮、链接按钮、文字按钮、次要按钮 */
3
- type?: 'primary' | 'dashed' | 'link' | 'text' | 'default';
2
+ /** 按钮的类型 */
3
+ type?: 'primary' | 'success' | 'dashed' | 'link' | 'text' | 'default';
4
4
  /** 设置按钮大小 */
5
5
  size?: 'large' | 'default' | 'small';
6
6
  /** 设置按钮形状 */
@@ -53,7 +53,7 @@ declare const __VLS_component: import('vue').DefineComponent<ButtonProps, {
53
53
  }>, {
54
54
  size: "large" | "default" | "small";
55
55
  icon: string;
56
- type: "primary" | "dashed" | "link" | "text" | "default";
56
+ type: "primary" | "success" | "dashed" | "link" | "text" | "default";
57
57
  label: string;
58
58
  shape: "default" | "circle" | "round";
59
59
  ghost: boolean;
@@ -2,7 +2,7 @@ export interface InputButtonProps {
2
2
  /** 输入值 */
3
3
  modelValue?: string | Record<string, any>;
4
4
  /** 按钮的类型,分为五种:主要按钮、幽灵按钮、虚框按钮、链接按钮、文字按钮、次要按钮 */
5
- type?: 'primary' | 'ghost' | 'dashed' | 'link' | 'text' | 'default';
5
+ type?: 'primary' | 'success' | 'ghost' | 'dashed' | 'link' | 'text' | 'default';
6
6
  /** 弹窗类型,弹窗、全屏弹窗、抽屉 */
7
7
  layerType?: 'model' | 'full' | 'drawer';
8
8
  /** 设置按钮文字 */
@@ -2,7 +2,7 @@ export interface InputCodeProps {
2
2
  /** 输入值 */
3
3
  modelValue?: string;
4
4
  /** 按钮的类型,分为五种:主要按钮、幽灵按钮、虚框按钮、链接按钮、文字按钮、次要按钮 */
5
- type?: 'primary' | 'ghost' | 'dashed' | 'link' | 'text' | 'default';
5
+ type?: 'primary' | 'success' | 'ghost' | 'dashed' | 'link' | 'text' | 'default';
6
6
  /** 脚本类型 */
7
7
  mode?: string;
8
8
  /** 按钮文字 */
@@ -2,15 +2,15 @@ export declare const JSliderCaptcha: {
2
2
  new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{
3
3
  modelValue?: boolean;
4
4
  } & import('./src/types').SliderCaptchaProps> & Readonly<{
5
+ onSuccess?: ((args_0: import('./src/types').CaptchaVerifyPassingData) => any) | undefined;
5
6
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
6
7
  onMove?: ((args_0: import('./src/types').SliderRotateVerifyPassingData) => any) | undefined;
7
- onSuccess?: ((args_0: import('./src/types').CaptchaVerifyPassingData) => any) | undefined;
8
8
  onStart?: ((args_0: MouseEvent | TouchEvent) => any) | undefined;
9
9
  onEnd?: ((args_0: MouseEvent | TouchEvent) => any) | undefined;
10
10
  }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
11
+ success: (args_0: import('./src/types').CaptchaVerifyPassingData) => any;
11
12
  "update:modelValue": (value: boolean) => any;
12
13
  move: (args_0: import('./src/types').SliderRotateVerifyPassingData) => any;
13
- success: (args_0: import('./src/types').CaptchaVerifyPassingData) => any;
14
14
  start: (args_0: MouseEvent | TouchEvent) => any;
15
15
  end: (args_0: MouseEvent | TouchEvent) => any;
16
16
  }, import('vue').PublicProps, {
@@ -138,9 +138,9 @@ export declare const JSliderCaptcha: {
138
138
  }, Readonly<{
139
139
  modelValue?: boolean;
140
140
  } & import('./src/types').SliderCaptchaProps> & Readonly<{
141
+ onSuccess?: ((args_0: import('./src/types').CaptchaVerifyPassingData) => any) | undefined;
141
142
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
142
143
  onMove?: ((args_0: import('./src/types').SliderRotateVerifyPassingData) => any) | undefined;
143
- onSuccess?: ((args_0: import('./src/types').CaptchaVerifyPassingData) => any) | undefined;
144
144
  onStart?: ((args_0: MouseEvent | TouchEvent) => any) | undefined;
145
145
  onEnd?: ((args_0: MouseEvent | TouchEvent) => any) | undefined;
146
146
  }>, {}, {}, {}, {}, {
@@ -157,15 +157,15 @@ export declare const JSliderCaptcha: {
157
157
  } & import('vue').ComponentOptionsBase<Readonly<{
158
158
  modelValue?: boolean;
159
159
  } & import('./src/types').SliderCaptchaProps> & Readonly<{
160
+ onSuccess?: ((args_0: import('./src/types').CaptchaVerifyPassingData) => any) | undefined;
160
161
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
161
162
  onMove?: ((args_0: import('./src/types').SliderRotateVerifyPassingData) => any) | undefined;
162
- onSuccess?: ((args_0: import('./src/types').CaptchaVerifyPassingData) => any) | undefined;
163
163
  onStart?: ((args_0: MouseEvent | TouchEvent) => any) | undefined;
164
164
  onEnd?: ((args_0: MouseEvent | TouchEvent) => any) | undefined;
165
165
  }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
166
+ success: (args_0: import('./src/types').CaptchaVerifyPassingData) => any;
166
167
  "update:modelValue": (value: boolean) => any;
167
168
  move: (args_0: import('./src/types').SliderRotateVerifyPassingData) => any;
168
- success: (args_0: import('./src/types').CaptchaVerifyPassingData) => any;
169
169
  start: (args_0: MouseEvent | TouchEvent) => any;
170
170
  end: (args_0: MouseEvent | TouchEvent) => any;
171
171
  }, string, {
@@ -4,15 +4,15 @@ type __VLS_PublicProps = {
4
4
  modelValue?: boolean;
5
5
  } & __VLS_Props;
6
6
  declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
7
+ success: (args_0: CaptchaVerifyPassingData) => any;
7
8
  "update:modelValue": (value: boolean) => any;
8
9
  move: (args_0: SliderRotateVerifyPassingData) => any;
9
- success: (args_0: CaptchaVerifyPassingData) => any;
10
10
  start: (args_0: MouseEvent | TouchEvent) => any;
11
11
  end: (args_0: MouseEvent | TouchEvent) => any;
12
12
  }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
13
+ onSuccess?: ((args_0: CaptchaVerifyPassingData) => any) | undefined;
13
14
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
14
15
  onMove?: ((args_0: SliderRotateVerifyPassingData) => any) | undefined;
15
- onSuccess?: ((args_0: CaptchaVerifyPassingData) => any) | undefined;
16
16
  onStart?: ((args_0: MouseEvent | TouchEvent) => any) | undefined;
17
17
  onEnd?: ((args_0: MouseEvent | TouchEvent) => any) | undefined;
18
18
  }>, {
@@ -91,20 +91,20 @@ declare const JUpload: {
91
91
  };
92
92
  }>> & Readonly<{
93
93
  onDelete?: ((...args: any[]) => any) | undefined;
94
+ onSuccess?: ((...args: any[]) => any) | undefined;
94
95
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
95
96
  onChange?: ((...args: any[]) => any) | undefined;
96
97
  onError?: ((...args: any[]) => any) | undefined;
97
98
  onLoad?: ((...args: any[]) => any) | undefined;
98
- onSuccess?: ((...args: any[]) => any) | undefined;
99
99
  onStart?: ((...args: any[]) => any) | undefined;
100
100
  onNotUploadChange?: ((...args: any[]) => any) | undefined;
101
101
  }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
102
102
  delete: (...args: any[]) => void;
103
+ success: (...args: any[]) => void;
103
104
  "update:modelValue": (...args: any[]) => void;
104
105
  change: (...args: any[]) => void;
105
106
  error: (...args: any[]) => void;
106
107
  load: (...args: any[]) => void;
107
- success: (...args: any[]) => void;
108
108
  start: (...args: any[]) => void;
109
109
  notUploadChange: (...args: any[]) => void;
110
110
  }, import('vue').PublicProps, {
@@ -232,11 +232,11 @@ declare const JUpload: {
232
232
  };
233
233
  }>> & Readonly<{
234
234
  onDelete?: ((...args: any[]) => any) | undefined;
235
+ onSuccess?: ((...args: any[]) => any) | undefined;
235
236
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
236
237
  onChange?: ((...args: any[]) => any) | undefined;
237
238
  onError?: ((...args: any[]) => any) | undefined;
238
239
  onLoad?: ((...args: any[]) => any) | undefined;
239
- onSuccess?: ((...args: any[]) => any) | undefined;
240
240
  onStart?: ((...args: any[]) => any) | undefined;
241
241
  onNotUploadChange?: ((...args: any[]) => any) | undefined;
242
242
  }>, {}, {}, {}, {}, {
@@ -359,20 +359,20 @@ declare const JUpload: {
359
359
  };
360
360
  }>> & Readonly<{
361
361
  onDelete?: ((...args: any[]) => any) | undefined;
362
+ onSuccess?: ((...args: any[]) => any) | undefined;
362
363
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
363
364
  onChange?: ((...args: any[]) => any) | undefined;
364
365
  onError?: ((...args: any[]) => any) | undefined;
365
366
  onLoad?: ((...args: any[]) => any) | undefined;
366
- onSuccess?: ((...args: any[]) => any) | undefined;
367
367
  onStart?: ((...args: any[]) => any) | undefined;
368
368
  onNotUploadChange?: ((...args: any[]) => any) | undefined;
369
369
  }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
370
370
  delete: (...args: any[]) => void;
371
+ success: (...args: any[]) => void;
371
372
  "update:modelValue": (...args: any[]) => void;
372
373
  change: (...args: any[]) => void;
373
374
  error: (...args: any[]) => void;
374
375
  load: (...args: any[]) => void;
375
- success: (...args: any[]) => void;
376
376
  start: (...args: any[]) => void;
377
377
  notUploadChange: (...args: any[]) => void;
378
378
  }, string, {
@@ -161,11 +161,11 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
161
161
  };
162
162
  }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
163
163
  delete: (...args: any[]) => void;
164
+ success: (...args: any[]) => void;
164
165
  "update:modelValue": (...args: any[]) => void;
165
166
  change: (...args: any[]) => void;
166
167
  error: (...args: any[]) => void;
167
168
  load: (...args: any[]) => void;
168
- success: (...args: any[]) => void;
169
169
  start: (...args: any[]) => void;
170
170
  notUploadChange: (...args: any[]) => void;
171
171
  }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
@@ -330,11 +330,11 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
330
330
  };
331
331
  }>> & Readonly<{
332
332
  onDelete?: ((...args: any[]) => any) | undefined;
333
+ onSuccess?: ((...args: any[]) => any) | undefined;
333
334
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
334
335
  onChange?: ((...args: any[]) => any) | undefined;
335
336
  onError?: ((...args: any[]) => any) | undefined;
336
337
  onLoad?: ((...args: any[]) => any) | undefined;
337
- onSuccess?: ((...args: any[]) => any) | undefined;
338
338
  onStart?: ((...args: any[]) => any) | undefined;
339
339
  onNotUploadChange?: ((...args: any[]) => any) | undefined;
340
340
  }>, {
@@ -186,6 +186,7 @@ var Xt = (e) => !!(e == null || typeof e == "string" && e.trim() === "" || Array
186
186
  type: "button",
187
187
  class: Ue(["j-button", {
188
188
  "j-button-primary": e.type == "primary",
189
+ "j-button-success": e.type == "success",
189
190
  "j-button-default": e.type == "default",
190
191
  "j-button-dashed": e.type == "dashed",
191
192
  "j-button-link": e.type == "link",
@@ -211,8 +212,7 @@ var Xt = (e) => !!(e == null || typeof e == "string" && e.trim() === "" || Array
211
212
  icon: "mdi:loading",
212
213
  size: e.size == "large" ? 14 : 12,
213
214
  class: "loading-spin j-button-loading-icon"
214
- }, null, 8, ["size"])) : ee("", !0),
215
- e.icon ? (k(), V(Ea, {
215
+ }, null, 8, ["size"])) : e.icon ? (k(), V(Ea, {
216
216
  key: 1,
217
217
  icon: e.icon
218
218
  }, null, 8, ["icon"])) : ee("", !0),
@@ -8847,7 +8847,7 @@ var Dp = { class: "j-table-footer" }, $p = {
8847
8847
  const n = e.__vccOpts || e;
8848
8848
  for (const [a, o] of t) n[a] = o;
8849
8849
  return n;
8850
- }, Qg = /* @__PURE__ */ zc(Zg, [["__scopeId", "data-v-69ad659b"]]), ev = _e(Qg), tv = ["innerHTML"], nv = {
8850
+ }, Qg = /* @__PURE__ */ zc(Zg, [["__scopeId", "data-v-37f9a80b"]]), ev = _e(Qg), tv = ["innerHTML"], nv = {
8851
8851
  key: 1,
8852
8852
  class: "j-barcode-error"
8853
8853
  }, av = /* @__PURE__ */ he({
@@ -14517,7 +14517,7 @@ var $c = ({ data: e, actions: t, utils: n, inputParams: a, notRunActions: o }) =
14517
14517
  style: se(l.value)
14518
14518
  }, null, 4)]));
14519
14519
  }
14520
- }), r0 = /* @__PURE__ */ zc(i0, [["__scopeId", "data-v-d513e01b"]]), l0 = _e(r0), s0 = {
14520
+ }), r0 = /* @__PURE__ */ zc(i0, [["__scopeId", "data-v-086d2967"]]), l0 = _e(r0), s0 = {
14521
14521
  key: 0,
14522
14522
  class: "j-map-loading"
14523
14523
  }, c0 = /* @__PURE__ */ he({