@robot-admin/naive-ui-components 0.11.8 → 0.13.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 (310) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +172 -29
  3. package/README_EN.md +171 -28
  4. package/SECURITY.md +1 -0
  5. package/dist/C_ActionBar.cjs +1 -1
  6. package/dist/C_ActionBar.css +67 -67
  7. package/dist/C_ActionBar.d.cts +2 -2
  8. package/dist/C_ActionBar.d.ts +2 -2
  9. package/dist/C_ActionBar.js +1 -1
  10. package/dist/C_ActionBar2.cjs +1 -1
  11. package/dist/C_ActionBar2.js +1 -1
  12. package/dist/C_AntV.css +70 -70
  13. package/dist/C_AntV2.cjs +3 -3
  14. package/dist/C_AntV2.js +3 -3
  15. package/dist/C_AudioPlayer.css +81 -66
  16. package/dist/C_AudioPlayer.d.cts +1 -1
  17. package/dist/C_AudioPlayer.d.ts +1 -1
  18. package/dist/C_AudioPlayer2.cjs +1 -1
  19. package/dist/C_AudioPlayer2.js +1 -1
  20. package/dist/C_AvatarGroup.css +40 -25
  21. package/dist/C_AvatarGroup.d.cts +1 -1
  22. package/dist/C_AvatarGroup.d.ts +1 -1
  23. package/dist/C_AvatarGroup2.cjs +1 -1
  24. package/dist/C_AvatarGroup2.js +1 -1
  25. package/dist/C_Barcode.css +6 -6
  26. package/dist/C_Barcode.d.cts +1 -1
  27. package/dist/C_Barcode.d.ts +1 -1
  28. package/dist/C_Barcode2.cjs +1 -1
  29. package/dist/C_Barcode2.js +1 -1
  30. package/dist/C_Breadcrumb.css +14 -14
  31. package/dist/C_Breadcrumb.d.cts +1 -1
  32. package/dist/C_Breadcrumb.d.ts +1 -1
  33. package/dist/C_Breadcrumb2.cjs +1 -1
  34. package/dist/C_Breadcrumb2.js +1 -1
  35. package/dist/C_Captcha.cjs +1 -1
  36. package/dist/C_Captcha.css +193 -51
  37. package/dist/C_Captcha.d.cts +2 -3
  38. package/dist/C_Captcha.d.ts +2 -3
  39. package/dist/C_Captcha.js +1 -1
  40. package/dist/C_Captcha2.cjs +1 -1
  41. package/dist/C_Captcha2.js +1 -1
  42. package/dist/C_Cascade.css +2 -2
  43. package/dist/C_Cascade.d.cts +1 -1
  44. package/dist/C_Cascade.d.ts +1 -1
  45. package/dist/C_Cascade2.cjs +1 -1
  46. package/dist/C_Cascade2.js +1 -1
  47. package/dist/C_Chat.css +96 -78
  48. package/dist/C_Chat.d.cts +1 -1
  49. package/dist/C_Chat.d.ts +1 -1
  50. package/dist/C_Chat2.cjs +1 -1
  51. package/dist/C_Chat2.js +1 -1
  52. package/dist/C_City.css +52 -28
  53. package/dist/C_City.d.cts +1 -1
  54. package/dist/C_City.d.ts +1 -1
  55. package/dist/C_City2.cjs +1 -1
  56. package/dist/C_City2.js +1 -1
  57. package/dist/C_Code.css +48 -42
  58. package/dist/C_Code.d.cts +1 -1
  59. package/dist/C_Code.d.ts +1 -1
  60. package/dist/C_Code2.cjs +1 -1
  61. package/dist/C_Code2.js +1 -1
  62. package/dist/C_CollapsePanel.css +14 -14
  63. package/dist/C_CollapsePanel2.cjs +1 -1
  64. package/dist/C_CollapsePanel2.js +1 -1
  65. package/dist/C_ContextMenu.css +14 -14
  66. package/dist/C_ContextMenu.d.cts +1 -1
  67. package/dist/C_ContextMenu.d.ts +1 -1
  68. package/dist/C_ContextMenu2.cjs +1 -1
  69. package/dist/C_ContextMenu2.js +1 -1
  70. package/dist/C_Cron.css +94 -55
  71. package/dist/C_Cron2.cjs +1 -1
  72. package/dist/C_Cron2.js +1 -1
  73. package/dist/C_Date.d.cts +1 -1
  74. package/dist/C_Date.d.ts +1 -1
  75. package/dist/C_Date2.cjs +1 -1
  76. package/dist/C_Date2.js +1 -1
  77. package/dist/C_Draggable.css +48 -48
  78. package/dist/C_Draggable2.cjs +1 -1
  79. package/dist/C_Draggable2.js +1 -1
  80. package/dist/C_Editor.css +13 -14
  81. package/dist/C_Editor.d.cts +1 -1
  82. package/dist/C_Editor.d.ts +1 -1
  83. package/dist/C_Editor2.cjs +1 -1
  84. package/dist/C_Editor2.js +1 -1
  85. package/dist/C_FilePreview.css +18 -18
  86. package/dist/C_FilePreview2.cjs +1 -1
  87. package/dist/C_FilePreview2.js +1 -1
  88. package/dist/C_Form.base.css +36 -36
  89. package/dist/C_Form.css +49 -50
  90. package/dist/C_Form2.cjs +1 -1
  91. package/dist/C_Form2.js +1 -1
  92. package/dist/C_FormModal.cjs +1 -0
  93. package/dist/C_FormModal.css +41 -0
  94. package/dist/C_FormModal.d.cts +2 -0
  95. package/dist/C_FormModal.d.ts +3 -0
  96. package/dist/C_FormModal.js +1 -0
  97. package/dist/C_FormModal2.cjs +1 -0
  98. package/dist/C_FormModal2.js +1 -0
  99. package/dist/C_FormSearch.css +45 -45
  100. package/dist/C_FormSearch2.cjs +1 -1
  101. package/dist/C_FormSearch2.js +1 -1
  102. package/dist/C_FormulaEditor.css +94 -55
  103. package/dist/C_FormulaEditor2.cjs +2 -2
  104. package/dist/C_FormulaEditor2.js +2 -2
  105. package/dist/C_FullCalendar.css +8 -1
  106. package/dist/C_FullCalendar2.cjs +1 -1
  107. package/dist/C_FullCalendar2.js +1 -1
  108. package/dist/C_GlobalSearch2.cjs +1 -1
  109. package/dist/C_GlobalSearch2.js +1 -1
  110. package/dist/C_Guide.css +14 -14
  111. package/dist/C_Guide2.cjs +1 -1
  112. package/dist/C_Guide2.js +1 -1
  113. package/dist/C_Icon.css +14 -14
  114. package/dist/C_Icon2.cjs +1 -1
  115. package/dist/C_Icon2.js +1 -1
  116. package/dist/C_ImageCropper.css +22 -22
  117. package/dist/C_ImageCropper2.cjs +1 -1
  118. package/dist/C_ImageCropper2.js +1 -1
  119. package/dist/C_Language.css +14 -14
  120. package/dist/C_Language2.cjs +1 -1
  121. package/dist/C_Language2.js +1 -1
  122. package/dist/C_Login.css +232 -149
  123. package/dist/C_Login2.cjs +1 -1
  124. package/dist/C_Login2.js +1 -1
  125. package/dist/C_Map.css +3 -3
  126. package/dist/C_Map2.cjs +1 -1
  127. package/dist/C_Map2.js +1 -1
  128. package/dist/C_Markdown.css +35 -35
  129. package/dist/C_Markdown2.cjs +1 -1
  130. package/dist/C_Markdown2.js +1 -1
  131. package/dist/C_Menu.d.cts +1 -1
  132. package/dist/C_Menu2.cjs +1 -1
  133. package/dist/C_Menu2.js +1 -1
  134. package/dist/C_NotificationCenter.css +30 -30
  135. package/dist/C_NotificationCenter2.cjs +1 -1
  136. package/dist/C_NotificationCenter2.js +1 -1
  137. package/dist/C_OrgChart.css +4 -0
  138. package/dist/C_OrgChart2.cjs +1 -1
  139. package/dist/C_OrgChart2.js +1 -1
  140. package/dist/C_Progress2.cjs +1 -1
  141. package/dist/C_Progress2.js +1 -1
  142. package/dist/C_QRCode.css +8 -8
  143. package/dist/C_QRCode2.cjs +1 -1
  144. package/dist/C_QRCode2.js +1 -1
  145. package/dist/C_Signature.css +14 -14
  146. package/dist/C_Signature2.cjs +1 -1
  147. package/dist/C_Signature2.js +1 -1
  148. package/dist/C_Skeleton2.cjs +1 -1
  149. package/dist/C_Skeleton2.js +1 -1
  150. package/dist/C_SplitPane.css +39 -39
  151. package/dist/C_SplitPane2.cjs +1 -1
  152. package/dist/C_SplitPane2.js +1 -1
  153. package/dist/C_Steps.css +48 -38
  154. package/dist/C_Steps2.cjs +1 -1
  155. package/dist/C_Steps2.js +1 -1
  156. package/dist/C_Table.base.css +160 -160
  157. package/dist/C_Table.cjs +1 -1
  158. package/dist/C_Table.css +173 -174
  159. package/dist/C_Table.d.ts +4 -3
  160. package/dist/C_Table.js +1 -1
  161. package/dist/C_Tabs.cjs +1 -0
  162. package/dist/C_Tabs.css +1 -0
  163. package/dist/C_Tabs.d.cts +2 -0
  164. package/dist/C_Tabs.d.ts +2 -0
  165. package/dist/C_Tabs.js +1 -0
  166. package/dist/C_TagsView.css +52 -52
  167. package/dist/C_TagsView2.cjs +1 -1
  168. package/dist/C_TagsView2.js +1 -1
  169. package/dist/C_Theme.css +14 -14
  170. package/dist/C_Theme2.cjs +1 -1
  171. package/dist/C_Theme2.js +1 -1
  172. package/dist/C_Time.css +4 -4
  173. package/dist/C_Time2.cjs +1 -1
  174. package/dist/C_Time2.js +1 -1
  175. package/dist/C_Timeline.css +76 -58
  176. package/dist/C_Timeline2.cjs +1 -1
  177. package/dist/C_Timeline2.js +1 -1
  178. package/dist/C_Transfer.css +51 -51
  179. package/dist/C_Transfer2.cjs +1 -1
  180. package/dist/C_Transfer2.js +1 -1
  181. package/dist/C_Tree.css +35 -32
  182. package/dist/C_Tree2.cjs +1 -1
  183. package/dist/C_Tree2.js +1 -1
  184. package/dist/C_Upload.css +53 -50
  185. package/dist/C_Upload2.cjs +1 -1
  186. package/dist/C_Upload2.js +1 -1
  187. package/dist/C_VideoPlayer.css +17 -13
  188. package/dist/C_VideoPlayer2.cjs +2 -2
  189. package/dist/C_VideoPlayer2.js +2 -2
  190. package/dist/C_VtableGantt.css +19 -19
  191. package/dist/C_VtableGantt2.cjs +1 -1
  192. package/dist/C_VtableGantt2.js +1 -1
  193. package/dist/C_WaterFall.css +19 -15
  194. package/dist/C_WaterFall2.cjs +1 -1
  195. package/dist/C_WaterFall2.js +1 -1
  196. package/dist/C_WorkFlow.css +123 -123
  197. package/dist/C_WorkFlow2.cjs +1 -1
  198. package/dist/C_WorkFlow2.js +1 -1
  199. package/dist/constants.d.cts +2 -2
  200. package/dist/constants.d.ts +2 -2
  201. package/dist/constants2.d.cts +3 -3
  202. package/dist/constants2.d.ts +3 -3
  203. package/dist/constants3.d.cts +8 -4
  204. package/dist/constants3.d.ts +8 -4
  205. package/dist/constants4.d.cts +6 -6
  206. package/dist/constants4.d.ts +6 -6
  207. package/dist/constants5.d.cts +2 -2
  208. package/dist/constants5.d.ts +2 -2
  209. package/dist/data.d.cts +108 -0
  210. package/dist/data.d.ts +108 -0
  211. package/dist/data2.cjs +1 -0
  212. package/dist/data2.js +1 -0
  213. package/dist/index.cjs +1 -1
  214. package/dist/index.d.cts +49 -49
  215. package/dist/index.d.ts +51 -49
  216. package/dist/index.js +1 -1
  217. package/dist/index.vue.d.cts +74 -69
  218. package/dist/index.vue.d.ts +74 -69
  219. package/dist/index10.vue.d.cts +80 -39
  220. package/dist/index10.vue.d.ts +68 -77
  221. package/dist/index11.vue.d.cts +68 -77
  222. package/dist/index11.vue.d.ts +54 -69
  223. package/dist/index12.vue.d.cts +54 -69
  224. package/dist/index12.vue.d.ts +52 -58
  225. package/dist/index13.vue.d.cts +52 -58
  226. package/dist/index13.vue.d.ts +1 -1
  227. package/dist/index14.vue.d.cts +1 -1
  228. package/dist/index14.vue.d.ts +14 -47
  229. package/dist/index15.vue.d.cts +14 -47
  230. package/dist/index16.vue.d.ts +15 -12
  231. package/dist/index17.vue.d.cts +15 -12
  232. package/dist/index17.vue.d.ts +4 -4
  233. package/dist/index18.vue.d.cts +4 -4
  234. package/dist/index18.vue.d.ts +2 -2
  235. package/dist/index19.vue.d.cts +1 -1
  236. package/dist/index19.vue.d.ts +1 -1
  237. package/dist/index2.vue.d.cts +70 -65
  238. package/dist/index2.vue.d.ts +70 -65
  239. package/dist/index20.vue.d.cts +1 -1
  240. package/dist/index20.vue.d.ts +1 -1
  241. package/dist/index24.vue.d.cts +3 -3
  242. package/dist/index24.vue.d.ts +3 -3
  243. package/dist/index25.vue.d.cts +1 -1
  244. package/dist/index25.vue.d.ts +1 -1
  245. package/dist/index26.vue.d.cts +5 -5
  246. package/dist/index26.vue.d.ts +5 -5
  247. package/dist/index27.vue.d.cts +1 -1
  248. package/dist/index27.vue.d.ts +1 -1
  249. package/dist/index3.vue.d.cts +30 -80
  250. package/dist/index3.vue.d.ts +30 -80
  251. package/dist/index4.vue.d.cts +130 -30
  252. package/dist/index4.vue.d.ts +22 -30
  253. package/dist/index5.vue.d.cts +18 -126
  254. package/dist/index5.vue.d.ts +22 -19
  255. package/dist/index6.vue.d.cts +22 -19
  256. package/dist/index6.vue.d.ts +117 -22
  257. package/dist/index7.vue.d.cts +117 -22
  258. package/dist/index7.vue.d.ts +17 -110
  259. package/dist/index8.vue.d.cts +17 -110
  260. package/dist/index8.vue.d.ts +37 -24
  261. package/dist/index9.vue.d.cts +37 -24
  262. package/dist/index9.vue.d.ts +80 -39
  263. package/dist/mapUtils.d.cts +2 -2
  264. package/dist/mapUtils.d.ts +2 -2
  265. package/dist/presets.d.cts +96 -0
  266. package/dist/presets.d.ts +96 -0
  267. package/dist/resolver.cjs +1 -1
  268. package/dist/resolver.d.cts +1 -1
  269. package/dist/resolver.d.ts +1 -1
  270. package/dist/resolver.js +1 -1
  271. package/dist/style.css +1735 -1400
  272. package/dist/useCalendarEvents.d.cts +23 -18
  273. package/dist/useCalendarEvents.d.ts +23 -18
  274. package/dist/useCollapsePanel.d.cts +4 -3
  275. package/dist/useCollapsePanel.d.ts +4 -3
  276. package/dist/useCropperCore.d.cts +32 -17
  277. package/dist/useCropperCore.d.ts +32 -17
  278. package/dist/useDraggableLayout.d.cts +2 -2
  279. package/dist/useDraggableLayout.d.ts +2 -2
  280. package/dist/useDynamicFormState.d.cts +7 -2
  281. package/dist/useDynamicFormState.d.ts +7 -2
  282. package/dist/useEdgeInteraction.d.cts +20 -19
  283. package/dist/useEdgeInteraction.d.ts +20 -19
  284. package/dist/useFullscreen.d.cts +6 -6
  285. package/dist/useFullscreen.d.ts +6 -6
  286. package/dist/useInfiniteScroll.d.cts +1 -1
  287. package/dist/useInfiniteScroll.d.ts +1 -1
  288. package/dist/useQRCode.d.cts +5 -4
  289. package/dist/useQRCode.d.ts +5 -4
  290. package/dist/useSearchState.d.cts +9 -9
  291. package/dist/useSearchState.d.ts +9 -9
  292. package/dist/useSignatureHistory.d.cts +18 -10
  293. package/dist/useSignatureHistory.d.ts +18 -10
  294. package/dist/useSplitResize.d.cts +7 -7
  295. package/dist/useSplitResize.d.ts +7 -7
  296. package/dist/useTableQuery.cjs +3 -3
  297. package/dist/useTableQuery.d.cts +12 -5
  298. package/dist/useTableQuery.d.ts +12 -5
  299. package/dist/useTableQuery.js +3 -3
  300. package/dist/useTimeSelection.d.cts +6 -3
  301. package/dist/useTimeSelection.d.ts +6 -3
  302. package/dist/useTreeOperations.d.cts +8 -8
  303. package/dist/useTreeOperations.d.ts +8 -8
  304. package/dist/useWorkflowValidation.d.cts +6 -4
  305. package/dist/useWorkflowValidation.d.ts +6 -4
  306. package/dist/verification.d.cts +71 -6
  307. package/dist/verification.d.ts +71 -6
  308. package/package.json +5 -3
  309. package/dist/types.d.ts +0 -58
  310. package/dist/types2.d.cts +0 -58
@@ -1,54 +1,54 @@
1
- /* unplugin-vue-components disabled */.c-icon[data-v-d0d8dba0] {
1
+ /* unplugin-vue-components disabled */.c-icon[data-v-711aedcd] {
2
2
  display: inline-flex;
3
3
  align-items: center;
4
4
  justify-content: center;
5
5
  user-select: none;
6
6
  transition: all 0.2s ease-in-out;
7
7
  }
8
- .c-icon--clickable[data-v-d0d8dba0] {
8
+ .c-icon--clickable[data-v-711aedcd] {
9
9
  cursor: pointer;
10
10
  }
11
- .c-icon--clickable[data-v-d0d8dba0]:hover {
11
+ .c-icon--clickable[data-v-711aedcd]:hover {
12
12
  opacity: 0.8;
13
13
  transform: scale(1.05);
14
14
  }
15
- .c-icon--clickable[data-v-d0d8dba0]:active {
15
+ .c-icon--clickable[data-v-711aedcd]:active {
16
16
  transform: scale(0.95);
17
17
  }
18
- .c-icon--clickable[data-v-d0d8dba0]:focus-visible {
18
+ .c-icon--clickable[data-v-711aedcd]:focus-visible {
19
19
  outline: 2px solid currentColor;
20
20
  outline-offset: 2px;
21
21
  border-radius: 4px;
22
22
  }
23
- .c-icon--loading[data-v-d0d8dba0] {
23
+ .c-icon--loading[data-v-711aedcd] {
24
24
  opacity: 0.6;
25
25
  cursor: wait;
26
26
  }
27
- .c-icon--error[data-v-d0d8dba0] {
27
+ .c-icon--error[data-v-711aedcd] {
28
28
  opacity: 0.5;
29
29
  }
30
- .c-icon__loading[data-v-d0d8dba0] {
30
+ .c-icon__loading[data-v-711aedcd] {
31
31
  position: relative;
32
32
  }
33
- .c-icon__spinner[data-v-d0d8dba0] {
33
+ .c-icon__spinner[data-v-711aedcd] {
34
34
  width: 100%;
35
35
  height: 100%;
36
36
  border: 2px solid currentColor;
37
37
  border-radius: 50%;
38
38
  border-top-color: transparent;
39
- animation: spin-d0d8dba0 1s linear infinite;
39
+ animation: spin-711aedcd 1s linear infinite;
40
40
  }
41
- .c-icon__error[data-v-d0d8dba0] {
41
+ .c-icon__error[data-v-711aedcd] {
42
42
  font-size: 0.8em;
43
43
  opacity: 0.5;
44
44
  }
45
- .c-icon__rotatable[data-v-d0d8dba0] {
45
+ .c-icon__rotatable[data-v-711aedcd] {
46
46
  transition: transform 0.3s ease-in-out;
47
47
  }
48
- .c-icon__flippable[data-v-d0d8dba0] {
48
+ .c-icon__flippable[data-v-711aedcd] {
49
49
  transition: transform 0.3s ease-in-out;
50
50
  }
51
- @keyframes spin-d0d8dba0 {
51
+ @keyframes spin-711aedcd {
52
52
  0% {
53
53
  transform: rotate(0deg);
54
54
  }
@@ -60,13 +60,17 @@
60
60
  /* unplugin-vue-components disabled *//**
61
61
  * C_AudioPlayer — 音频播放器样式
62
62
  */
63
- .c-audio-player[data-v-9ab6a734] {
63
+ .c-audio-player[data-v-46f841a0] {
64
64
  --ap-bg: var(--card-color);
65
65
  --ap-border: var(--border-color);
66
66
  --ap-accent: var(--primary-color);
67
67
  --ap-text: var(--text-color-1);
68
68
  --ap-text-sub: var(--text-color-3);
69
- --ap-progress-bg: color-mix(in srgb, var(--primary-color) 15%, var(--border-color));
69
+ --ap-progress-bg: color-mix(
70
+ in srgb,
71
+ var(--primary-color) 15%,
72
+ var(--border-color)
73
+ );
70
74
  --ap-progress-fill: var(--primary-color);
71
75
  display: flex;
72
76
  flex-direction: column;
@@ -77,13 +81,13 @@
77
81
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
78
82
  /* ======================== Now Playing ======================== */
79
83
  }
80
- .c-audio-player__now-playing[data-v-9ab6a734] {
84
+ .c-audio-player__now-playing[data-v-46f841a0] {
81
85
  display: flex;
82
86
  align-items: center;
83
87
  gap: 16px;
84
88
  padding: 20px;
85
89
  }
86
- .c-audio-player__cover[data-v-9ab6a734] {
90
+ .c-audio-player__cover[data-v-46f841a0] {
87
91
  flex-shrink: 0;
88
92
  width: 72px;
89
93
  height: 72px;
@@ -95,21 +99,21 @@
95
99
  justify-content: center;
96
100
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
97
101
  }
98
- .c-audio-player__cover img[data-v-9ab6a734] {
102
+ .c-audio-player__cover img[data-v-46f841a0] {
99
103
  width: 100%;
100
104
  height: 100%;
101
105
  object-fit: cover;
102
106
  }
103
- .c-audio-player__cover-placeholder[data-v-9ab6a734] {
107
+ .c-audio-player__cover-placeholder[data-v-46f841a0] {
104
108
  font-size: 32px;
105
109
  color: var(--ap-accent);
106
110
  opacity: 0.5;
107
111
  }
108
- .c-audio-player__info[data-v-9ab6a734] {
112
+ .c-audio-player__info[data-v-46f841a0] {
109
113
  flex: 1;
110
114
  min-width: 0;
111
115
  }
112
- .c-audio-player__title[data-v-9ab6a734] {
116
+ .c-audio-player__title[data-v-46f841a0] {
113
117
  font-size: 15px;
114
118
  font-weight: 600;
115
119
  color: var(--ap-text);
@@ -117,7 +121,7 @@
117
121
  text-overflow: ellipsis;
118
122
  white-space: nowrap;
119
123
  }
120
- .c-audio-player__artist[data-v-9ab6a734] {
124
+ .c-audio-player__artist[data-v-46f841a0] {
121
125
  font-size: 12px;
122
126
  color: var(--ap-text-sub);
123
127
  margin-top: 2px;
@@ -125,13 +129,13 @@
125
129
  text-overflow: ellipsis;
126
130
  white-space: nowrap;
127
131
  }
128
- .c-audio-player[data-v-9ab6a734] {
132
+ .c-audio-player[data-v-46f841a0] {
129
133
  /* ======================== Progress ======================== */
130
134
  }
131
- .c-audio-player__progress[data-v-9ab6a734] {
135
+ .c-audio-player__progress[data-v-46f841a0] {
132
136
  padding: 0 20px;
133
137
  }
134
- .c-audio-player__progress-bar[data-v-9ab6a734] {
138
+ .c-audio-player__progress-bar[data-v-46f841a0] {
135
139
  position: relative;
136
140
  width: 100%;
137
141
  height: 6px;
@@ -140,17 +144,17 @@
140
144
  cursor: pointer;
141
145
  transition: height 0.15s;
142
146
  }
143
- .c-audio-player__progress-bar[data-v-9ab6a734]:hover {
147
+ .c-audio-player__progress-bar[data-v-46f841a0]:hover {
144
148
  height: 8px;
145
149
  }
146
- .c-audio-player__progress-fill[data-v-9ab6a734] {
150
+ .c-audio-player__progress-fill[data-v-46f841a0] {
147
151
  height: 100%;
148
152
  border-radius: 3px;
149
153
  background: var(--ap-progress-fill);
150
154
  position: relative;
151
155
  transition: width 0.1s linear;
152
156
  }
153
- .c-audio-player__progress-fill[data-v-9ab6a734]::after {
157
+ .c-audio-player__progress-fill[data-v-46f841a0]::after {
154
158
  content: "";
155
159
  position: absolute;
156
160
  right: -5px;
@@ -164,10 +168,10 @@
164
168
  opacity: 0;
165
169
  transition: opacity 0.15s;
166
170
  }
167
- .c-audio-player__progress-bar:hover .c-audio-player__progress-fill[data-v-9ab6a734]::after {
171
+ .c-audio-player__progress-bar:hover .c-audio-player__progress-fill[data-v-46f841a0]::after {
168
172
  opacity: 1;
169
173
  }
170
- .c-audio-player__time[data-v-9ab6a734] {
174
+ .c-audio-player__time[data-v-46f841a0] {
171
175
  display: flex;
172
176
  justify-content: space-between;
173
177
  font-size: 11px;
@@ -175,17 +179,17 @@
175
179
  margin-top: 4px;
176
180
  padding-bottom: 4px;
177
181
  }
178
- .c-audio-player[data-v-9ab6a734] {
182
+ .c-audio-player[data-v-46f841a0] {
179
183
  /* ======================== Controls ======================== */
180
184
  }
181
- .c-audio-player__controls[data-v-9ab6a734] {
185
+ .c-audio-player__controls[data-v-46f841a0] {
182
186
  display: flex;
183
187
  align-items: center;
184
188
  justify-content: center;
185
189
  gap: 8px;
186
190
  padding: 12px 20px;
187
191
  }
188
- .c-audio-player__ctrl-btn[data-v-9ab6a734] {
192
+ .c-audio-player__ctrl-btn[data-v-46f841a0] {
189
193
  display: inline-flex;
190
194
  align-items: center;
191
195
  justify-content: center;
@@ -196,65 +200,70 @@
196
200
  border-radius: 50%;
197
201
  transition: background 0.2s, color 0.2s, transform 0.15s;
198
202
  }
199
- .c-audio-player__ctrl-btn[data-v-9ab6a734]:hover {
203
+ .c-audio-player__ctrl-btn[data-v-46f841a0]:hover {
200
204
  color: var(--ap-accent);
201
205
  background: color-mix(in srgb, var(--ap-accent) 10%, transparent);
202
206
  }
203
- .c-audio-player__ctrl-btn[data-v-9ab6a734]:active {
207
+ .c-audio-player__ctrl-btn[data-v-46f841a0]:active {
204
208
  transform: scale(0.92);
205
209
  }
206
- .c-audio-player__ctrl-btn.is-mode[data-v-9ab6a734] {
210
+ .c-audio-player__ctrl-btn.is-mode[data-v-46f841a0] {
207
211
  font-size: 18px;
208
212
  width: 34px;
209
213
  height: 34px;
210
214
  }
211
- .c-audio-player__ctrl-btn.is-skip[data-v-9ab6a734] {
215
+ .c-audio-player__ctrl-btn.is-skip[data-v-46f841a0] {
212
216
  font-size: 22px;
213
217
  width: 38px;
214
218
  height: 38px;
215
219
  }
216
- .c-audio-player__ctrl-btn.is-play[data-v-9ab6a734] {
220
+ .c-audio-player__ctrl-btn.is-play[data-v-46f841a0] {
217
221
  font-size: 28px;
218
222
  width: 48px;
219
223
  height: 48px;
220
224
  background: var(--ap-accent);
221
225
  color: #fff;
222
226
  }
223
- .c-audio-player__ctrl-btn.is-play[data-v-9ab6a734]:hover {
227
+ .c-audio-player__ctrl-btn.is-play[data-v-46f841a0]:hover {
224
228
  background: color-mix(in srgb, var(--ap-accent) 85%, #000);
225
229
  color: #fff;
226
230
  box-shadow: 0 2px 10px color-mix(in srgb, var(--ap-accent) 35%, transparent);
227
231
  }
228
- .c-audio-player[data-v-9ab6a734] {
232
+ .c-audio-player[data-v-46f841a0] {
229
233
  /* ======================== Volume ======================== */
230
234
  }
231
- .c-audio-player__volume[data-v-9ab6a734] {
235
+ .c-audio-player__volume[data-v-46f841a0] {
232
236
  display: flex;
233
237
  align-items: center;
234
238
  gap: 6px;
235
239
  padding: 0 20px 12px;
236
240
  justify-content: flex-end;
237
241
  }
238
- .c-audio-player__volume-icon[data-v-9ab6a734] {
242
+ .c-audio-player__volume-icon[data-v-46f841a0] {
243
+ display: inline-flex;
244
+ padding: 0;
245
+ border: 0;
246
+ background: none;
247
+ font: inherit;
239
248
  font-size: 18px;
240
249
  color: var(--ap-text-sub);
241
250
  cursor: pointer;
242
251
  }
243
- .c-audio-player__volume-icon[data-v-9ab6a734]:hover {
252
+ .c-audio-player__volume-icon[data-v-46f841a0]:hover {
244
253
  color: var(--ap-accent);
245
254
  }
246
- .c-audio-player__volume-slider[data-v-9ab6a734] {
255
+ .c-audio-player__volume-slider[data-v-46f841a0] {
247
256
  width: 100px;
248
257
  }
249
- .c-audio-player[data-v-9ab6a734] {
258
+ .c-audio-player[data-v-46f841a0] {
250
259
  /* ======================== Playlist ======================== */
251
260
  }
252
- .c-audio-player__playlist[data-v-9ab6a734] {
261
+ .c-audio-player__playlist[data-v-46f841a0] {
253
262
  border-top: 1px solid var(--ap-border);
254
263
  max-height: 260px;
255
264
  overflow-y: auto;
256
265
  }
257
- .c-audio-player__playlist-header[data-v-9ab6a734] {
266
+ .c-audio-player__playlist-header[data-v-46f841a0] {
258
267
  display: flex;
259
268
  align-items: center;
260
269
  justify-content: space-between;
@@ -268,56 +277,62 @@
268
277
  top: 0;
269
278
  z-index: 1;
270
279
  }
271
- .c-audio-player__track[data-v-9ab6a734] {
280
+ .c-audio-player__track[data-v-46f841a0] {
272
281
  display: flex;
282
+ width: 100%;
283
+ border: 0;
284
+ background: transparent;
285
+ color: inherit;
286
+ font: inherit;
287
+ text-align: left;
273
288
  align-items: center;
274
289
  gap: 12px;
275
290
  padding: 10px 20px;
276
291
  cursor: pointer;
277
292
  transition: background 0.15s;
278
293
  }
279
- .c-audio-player__track[data-v-9ab6a734]:hover {
294
+ .c-audio-player__track[data-v-46f841a0]:hover {
280
295
  background: color-mix(in srgb, var(--ap-accent) 6%, var(--ap-bg));
281
296
  }
282
- .c-audio-player__track.is-active[data-v-9ab6a734] {
297
+ .c-audio-player__track.is-active[data-v-46f841a0] {
283
298
  background: color-mix(in srgb, var(--ap-accent) 10%, var(--ap-bg));
284
299
  }
285
- .c-audio-player__track.is-active .c-audio-player__track-title[data-v-9ab6a734] {
300
+ .c-audio-player__track.is-active .c-audio-player__track-title[data-v-46f841a0] {
286
301
  color: var(--ap-accent);
287
302
  font-weight: 600;
288
303
  }
289
- .c-audio-player__track-index[data-v-9ab6a734] {
304
+ .c-audio-player__track-index[data-v-46f841a0] {
290
305
  font-size: 12px;
291
306
  width: 20px;
292
307
  text-align: center;
293
308
  color: var(--ap-text-sub);
294
309
  flex-shrink: 0;
295
310
  }
296
- .c-audio-player__track-info[data-v-9ab6a734] {
311
+ .c-audio-player__track-info[data-v-46f841a0] {
297
312
  flex: 1;
298
313
  min-width: 0;
299
314
  }
300
- .c-audio-player__track-title[data-v-9ab6a734] {
315
+ .c-audio-player__track-title[data-v-46f841a0] {
301
316
  font-size: 13px;
302
317
  color: var(--ap-text);
303
318
  overflow: hidden;
304
319
  text-overflow: ellipsis;
305
320
  white-space: nowrap;
306
321
  }
307
- .c-audio-player__track-artist[data-v-9ab6a734] {
322
+ .c-audio-player__track-artist[data-v-46f841a0] {
308
323
  font-size: 11px;
309
324
  color: var(--ap-text-sub);
310
325
  margin-top: 1px;
311
326
  }
312
- .c-audio-player__track-duration[data-v-9ab6a734] {
327
+ .c-audio-player__track-duration[data-v-46f841a0] {
313
328
  font-size: 11px;
314
329
  color: var(--ap-text-sub);
315
330
  flex-shrink: 0;
316
331
  }
317
- .c-audio-player[data-v-9ab6a734] {
332
+ .c-audio-player[data-v-46f841a0] {
318
333
  /* ======================== Minimal Theme ======================== */
319
334
  }
320
- .c-audio-player.is-minimal[data-v-9ab6a734] {
335
+ .c-audio-player.is-minimal[data-v-46f841a0] {
321
336
  border-radius: 99px;
322
337
  padding: 6px 16px;
323
338
  flex-direction: row;
@@ -325,25 +340,25 @@
325
340
  gap: 10px;
326
341
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.05);
327
342
  }
328
- .c-audio-player.is-minimal .c-audio-player__now-playing[data-v-9ab6a734] {
343
+ .c-audio-player.is-minimal .c-audio-player__now-playing[data-v-46f841a0] {
329
344
  padding: 0;
330
345
  gap: 10px;
331
346
  }
332
- .c-audio-player.is-minimal .c-audio-player__cover[data-v-9ab6a734] {
347
+ .c-audio-player.is-minimal .c-audio-player__cover[data-v-46f841a0] {
333
348
  width: 36px;
334
349
  height: 36px;
335
350
  border-radius: 50%;
336
351
  }
337
- .c-audio-player.is-minimal .c-audio-player__progress[data-v-9ab6a734],
338
- .c-audio-player.is-minimal .c-audio-player__playlist[data-v-9ab6a734],
339
- .c-audio-player.is-minimal .c-audio-player__volume[data-v-9ab6a734] {
352
+ .c-audio-player.is-minimal .c-audio-player__progress[data-v-46f841a0],
353
+ .c-audio-player.is-minimal .c-audio-player__playlist[data-v-46f841a0],
354
+ .c-audio-player.is-minimal .c-audio-player__volume[data-v-46f841a0] {
340
355
  display: none;
341
356
  }
342
- .c-audio-player.is-minimal .c-audio-player__controls[data-v-9ab6a734] {
357
+ .c-audio-player.is-minimal .c-audio-player__controls[data-v-46f841a0] {
343
358
  padding: 4px 0;
344
359
  gap: 2px;
345
360
  }
346
- .c-audio-player.is-minimal .c-audio-player__ctrl-btn.is-play[data-v-9ab6a734] {
361
+ .c-audio-player.is-minimal .c-audio-player__ctrl-btn.is-play[data-v-46f841a0] {
347
362
  width: 34px;
348
363
  height: 34px;
349
364
  font-size: 20px;
@@ -1,2 +1,2 @@
1
- import { a as MODE_ICON_MAP, i as DEFAULT_AUDIO_PLAYER_PROPS, n as AudioPlayerProps, o as formatTime, r as AudioTrack, t as _default } from "./index2.vue.cjs";
1
+ import { a as MODE_ICON_MAP, i as DEFAULT_AUDIO_PLAYER_PROPS, n as AudioPlayerProps, o as formatTime, r as AudioTrack, t as _default } from "./index.vue.cjs";
2
2
  export { type AudioPlayerProps, type AudioTrack, _default as C_AudioPlayer, DEFAULT_AUDIO_PLAYER_PROPS, MODE_ICON_MAP, formatTime };
@@ -1,2 +1,2 @@
1
- import { a as MODE_ICON_MAP, i as DEFAULT_AUDIO_PLAYER_PROPS, n as AudioPlayerProps, o as formatTime, r as AudioTrack, t as _default } from "./index2.vue.js";
1
+ import { a as MODE_ICON_MAP, i as DEFAULT_AUDIO_PLAYER_PROPS, n as AudioPlayerProps, o as formatTime, r as AudioTrack, t as _default } from "./index.vue.js";
2
2
  export { type AudioPlayerProps, type AudioTrack, _default as C_AudioPlayer, DEFAULT_AUDIO_PLAYER_PROPS, MODE_ICON_MAP, formatTime };
@@ -1 +1 @@
1
- require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i={initialIndex:0,showPlaylist:!0,showCover:!0,autoplay:!1,mode:`list`,theme:`default`},a={list:{icon:`mdi:repeat`,label:`List Loop`},loop:{icon:`mdi:repeat-once`,label:`Single Loop`},single:{icon:`mdi:numeric-1-box`,label:`Play Once`},shuffle:{icon:`mdi:shuffle-variant`,label:`Shuffle`}};function o(e){if(!Number.isFinite(e)||e<0)return`00:00`;let t=Math.floor(e/60),n=Math.floor(e%60);return`${String(t).padStart(2,`0`)}:${String(n).padStart(2,`0`)}`}const s={class:`c-audio-player__now-playing`},c={key:0,class:`c-audio-player__cover`},l=[`src`,`alt`],u={class:`c-audio-player__info`},d={class:`c-audio-player__title`},f={key:0,class:`c-audio-player__artist`},ee={key:0,class:`c-audio-player__progress`},p={class:`c-audio-player__time`},m={class:`c-audio-player__controls`},h=[`title`],g=[`title`],_={key:1,class:`c-audio-player__volume`},v={key:2,class:`c-audio-player__playlist`},y={class:`c-audio-player__playlist-header`},b=[`onClick`],x={class:`c-audio-player__track-index`},S={class:`c-audio-player__track-info`},C={class:`c-audio-player__track-title`},w={key:0,class:`c-audio-player__track-artist`},T={key:0,class:`c-audio-player__track-duration`},E=(0,n.defineComponent)({__name:`index`,props:{tracks:{},initialIndex:{default:i.initialIndex},showPlaylist:{type:Boolean,default:i.showPlaylist},showCover:{type:Boolean,default:!0},autoplay:{type:Boolean,default:i.autoplay},mode:{default:i.mode},theme:{default:i.theme}},emits:[`play`,`pause`,`ended`,`modeChange`],setup(t,{emit:i}){let E=t,D=i,O=null,k=(0,n.ref)(E.initialIndex??0),A=(0,n.ref)(!1),j=(0,n.ref)(0),M=(0,n.ref)(0),N=(0,n.ref)(70),P=(0,n.ref)(70),F=(0,n.ref)(E.showPlaylist),I=(0,n.ref)(E.mode??`list`),L=(0,n.computed)(()=>E.tracks[k.value]),R=(0,n.computed)(()=>M.value===0?0:j.value/M.value*100),z=(0,n.computed)(()=>N.value===0?`mdi:volume-off`:N.value<40?`mdi:volume-low`:N.value<70?`mdi:volume-medium`:`mdi:volume-high`),B=(0,n.computed)(()=>a[I.value]?.icon??`mdi:repeat`),V=(0,n.computed)(()=>a[I.value]?.label??`循环`);function H(){O&&(O.pause(),O.removeEventListener(`timeupdate`,U),O.removeEventListener(`loadedmetadata`,W),O.removeEventListener(`ended`,G));let e=L.value;e&&(O=new Audio(e.src),O.volume=N.value/100,O.addEventListener(`timeupdate`,U),O.addEventListener(`loadedmetadata`,W),O.addEventListener(`ended`,G))}function U(){O&&(j.value=O.currentTime)}function W(){O&&(M.value=O.duration)}function G(){switch(D(`ended`,k.value),I.value){case`loop`:O?.play().catch(()=>{});break;case`single`:A.value=!1;break;case`shuffle`:q(Math.floor(Math.random()*E.tracks.length));break;default:k.value<E.tracks.length-1?Y():(k.value=0,H(),O?.play().catch(()=>{}))}}function K(){O||H(),A.value?(O?.pause(),A.value=!1,D(`pause`)):(O?.play().catch(()=>{}),A.value=!0,D(`play`,k.value))}function q(e){k.value=e,H(),O?.play().catch(()=>{}),A.value=!0,D(`play`,e)}function J(){q(k.value<=0?E.tracks.length-1:k.value-1)}function Y(){q(k.value>=E.tracks.length-1?0:k.value+1)}function X(e){if(!O||!M.value)return;let t=e.currentTarget.getBoundingClientRect(),n=Math.max(0,Math.min(1,(e.clientX-t.left)/t.width));O.currentTime=n*M.value,j.value=O.currentTime}function Z(e){N.value=e,O&&(O.volume=e/100)}function Q(){N.value>0?(P.value=N.value,N.value=0):N.value=P.value||70,O&&(O.volume=N.value/100)}let $=[`list`,`loop`,`single`,`shuffle`];function te(){I.value=$[($.indexOf(I.value)+1)%$.length],D(`modeChange`,I.value)}return(0,n.watch)(()=>E.tracks,()=>{k.value=0,H()}),(0,n.watch)(()=>E.initialIndex,e=>{e!==void 0&&e!==k.value&&(k.value=e,H())}),(0,n.onBeforeUnmount)(()=>{O&&=(O.pause(),O.removeEventListener(`timeupdate`,U),O.removeEventListener(`loadedmetadata`,W),O.removeEventListener(`ended`,G),null)}),E.autoplay&&E.tracks.length>0&&q(k.value),(i,a)=>{let E=r.NSlider;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:(0,n.normalizeClass)([`c-audio-player`,{"is-minimal":t.theme===`minimal`}])},[(0,n.createCommentVNode)(` ================ Now Playing ================ `),(0,n.createElementVNode)(`div`,s,[t.showCover?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,c,[L.value?.cover?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:L.value.cover,alt:L.value.title},null,8,l)):((0,n.openBlock)(),(0,n.createBlock)(e.t,{key:1,name:`mdi:music-note`,class:`c-audio-player__cover-placeholder`}))])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createElementVNode)(`div`,u,[(0,n.createElementVNode)(`div`,d,(0,n.toDisplayString)(L.value?.title??`未选择曲目`),1),L.value?.artist?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,f,(0,n.toDisplayString)(L.value.artist),1)):(0,n.createCommentVNode)(`v-if`,!0)])]),(0,n.createCommentVNode)(` ================ Progress ================ `),t.theme===`minimal`?(0,n.createCommentVNode)(`v-if`,!0):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ee,[(0,n.createElementVNode)(`div`,{class:`c-audio-player__progress-bar`,onClick:X},[(0,n.createElementVNode)(`div`,{class:`c-audio-player__progress-fill`,style:(0,n.normalizeStyle)({width:`${R.value}%`})},null,4)]),(0,n.createElementVNode)(`div`,p,[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)((0,n.unref)(o)(j.value)),1),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)((0,n.unref)(o)(M.value)),1)])])),(0,n.createCommentVNode)(` ================ Controls ================ `),(0,n.createElementVNode)(`div`,m,[(0,n.createElementVNode)(`button`,{class:`c-audio-player__ctrl-btn is-mode`,title:V.value,onClick:te},[(0,n.createVNode)(e.t,{name:B.value},null,8,[`name`])],8,h),(0,n.createElementVNode)(`button`,{class:`c-audio-player__ctrl-btn is-skip`,title:`上一曲`,onClick:J},[(0,n.createVNode)(e.t,{name:`mdi:skip-previous`})]),(0,n.createElementVNode)(`button`,{class:`c-audio-player__ctrl-btn is-play`,title:A.value?`暂停`:`播放`,onClick:K},[(0,n.createVNode)(e.t,{name:A.value?`mdi:pause`:`mdi:play`},null,8,[`name`])],8,g),(0,n.createElementVNode)(`button`,{class:`c-audio-player__ctrl-btn is-skip`,title:`下一曲`,onClick:Y},[(0,n.createVNode)(e.t,{name:`mdi:skip-next`})]),(0,n.createElementVNode)(`button`,{class:`c-audio-player__ctrl-btn is-mode`,title:`播放列表`,onClick:a[0]||=e=>F.value=!F.value},[(0,n.createVNode)(e.t,{name:`mdi:playlist-music`})])]),(0,n.createCommentVNode)(` ================ Volume ================ `),t.theme===`minimal`?(0,n.createCommentVNode)(`v-if`,!0):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,_,[(0,n.createVNode)(e.t,{name:z.value,class:`c-audio-player__volume-icon`,onClick:Q},null,8,[`name`]),(0,n.createVNode)(E,{value:N.value,"onUpdate:value":[a[1]||=e=>N.value=e,Z],min:0,max:100,step:1,class:`c-audio-player__volume-slider`},null,8,[`value`])])),(0,n.createCommentVNode)(` ================ Playlist ================ `),t.showPlaylist&&F.value&&t.theme!==`minimal`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,v,[(0,n.createElementVNode)(`div`,y,[a[2]||=(0,n.createElementVNode)(`span`,null,`播放列表`,-1),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(t.tracks.length)+` 首`,1)]),((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.tracks,(t,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:t.id,class:(0,n.normalizeClass)([`c-audio-player__track`,{"is-active":r===k.value}]),onClick:e=>q(r)},[(0,n.createElementVNode)(`span`,x,[r===k.value&&A.value?((0,n.openBlock)(),(0,n.createBlock)(e.t,{key:0,name:`mdi:volume-high`})):((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:1},[(0,n.createTextVNode)((0,n.toDisplayString)(r+1),1)],64))]),(0,n.createElementVNode)(`div`,S,[(0,n.createElementVNode)(`div`,C,(0,n.toDisplayString)(t.title),1),t.artist?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,w,(0,n.toDisplayString)(t.artist),1)):(0,n.createCommentVNode)(`v-if`,!0)]),t.duration?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,T,(0,n.toDisplayString)((0,n.unref)(o)(t.duration)),1)):(0,n.createCommentVNode)(`v-if`,!0)],10,b))),128))])):(0,n.createCommentVNode)(`v-if`,!0)],2)}}});var D=t.t(E,[[`__scopeId`,`data-v-9ab6a734`]]);Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return D}});
1
+ require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i={initialIndex:0,showPlaylist:!0,showCover:!0,autoplay:!1,mode:`list`,theme:`default`};function a(e,t){return!Number.isFinite(e)||t<=0?0:Math.min(Math.max(Math.trunc(e),0),t-1)}const o={list:{icon:`mdi:repeat`,label:`List Loop`},loop:{icon:`mdi:repeat-once`,label:`Single Loop`},single:{icon:`mdi:numeric-1-box`,label:`Play Once`},shuffle:{icon:`mdi:shuffle-variant`,label:`Shuffle`}};function s(e){if(!Number.isFinite(e)||e<0)return`00:00`;let t=Math.floor(e/60),n=Math.floor(e%60);return`${String(t).padStart(2,`0`)}:${String(n).padStart(2,`0`)}`}const c={class:`c-audio-player__now-playing`},l={key:0,class:`c-audio-player__cover`},u=[`src`,`alt`],d={class:`c-audio-player__info`},f={class:`c-audio-player__title`},p={key:0,class:`c-audio-player__artist`},ee={key:0,class:`c-audio-player__progress`},m=[`tabindex`,`aria-valuemax`,`aria-valuenow`],h={class:`c-audio-player__time`},g={class:`c-audio-player__controls`},_=[`title`],v=[`disabled`,`title`],y={key:1,class:`c-audio-player__volume`},b=[`aria-label`],x={key:2,class:`c-audio-player__playlist`},S={class:`c-audio-player__playlist-header`},C=[`onClick`],w={class:`c-audio-player__track-index`},T={class:`c-audio-player__track-info`},E={class:`c-audio-player__track-title`},D={key:0,class:`c-audio-player__track-artist`},te={key:0,class:`c-audio-player__track-duration`},O=(0,n.defineComponent)({__name:`index`,props:{tracks:{},initialIndex:{default:i.initialIndex},showPlaylist:{type:Boolean,default:i.showPlaylist},showCover:{type:Boolean,default:!0},autoplay:{type:Boolean,default:i.autoplay},mode:{default:i.mode},theme:{default:i.theme}},emits:[`play`,`pause`,`ended`,`modeChange`,`error`],setup(t,{emit:i}){let O=t,k=i,A=null,j=0,M=e=>Number.isInteger(e)&&!!O.tracks[e],N=(e,t)=>e===j&&t===A,P=(0,n.ref)(a(O.initialIndex??0,O.tracks.length)),F=(0,n.ref)(!1),I=(0,n.ref)(0),L=(0,n.ref)(0),R=(0,n.ref)(70),z=(0,n.ref)(70),B=(0,n.ref)(O.showPlaylist),V=(0,n.ref)(O.mode??`list`),H=(0,n.computed)(()=>O.tracks[P.value]),U=(0,n.computed)(()=>L.value<=0?0:Math.min(100,I.value/L.value*100)),ne=(0,n.computed)(()=>R.value===0?`mdi:volume-off`:R.value<40?`mdi:volume-low`:R.value<70?`mdi:volume-medium`:`mdi:volume-high`),W=(0,n.computed)(()=>o[V.value]?.icon??`mdi:repeat`),G=(0,n.computed)(()=>o[V.value]?.label??`循环`);function K(){j+=1,A&&(A.pause(),A.removeEventListener(`timeupdate`,q),A.removeEventListener(`loadedmetadata`,J),A.removeEventListener(`ended`,Y)),A=null,F.value=!1,I.value=0;let e=H.value;L.value=e?.duration??0,!(!e||typeof Audio>`u`)&&(A=new Audio(e.src),A.volume=R.value/100,A.addEventListener(`timeupdate`,q),A.addEventListener(`loadedmetadata`,J),A.addEventListener(`ended`,Y))}function q(){A&&(I.value=Number.isFinite(A.currentTime)?A.currentTime:0)}function J(){A&&(L.value=Number.isFinite(A.duration)?A.duration:0)}function Y(){switch(k(`ended`,P.value),V.value){case`loop`:A&&(A.currentTime=0),X(P.value,!1);break;case`single`:F.value=!1;break;case`shuffle`:O.tracks.length&&Q(Math.floor(Math.random()*O.tracks.length));break;default:if(!O.tracks.length){F.value=!1;break}Q(P.value<O.tracks.length-1?P.value+1:0)}}async function X(e,t){if(!M(e))return;(t||!A||P.value!==e)&&(P.value=e,K());let n=A;if(!n)return;let r=++j;try{if(await n.play(),!N(r,n))return;F.value=!0,k(`play`,e)}catch(e){if(!N(r,n))return;F.value=!1,k(`error`,e)}}function Z(){if(H.value){if(!F.value){X(P.value,!1);return}j+=1,A?.pause(),F.value=!1,k(`pause`)}}function Q(e){return X(e,!0)}function re(){O.tracks.length&&Q(P.value<=0?O.tracks.length-1:P.value-1)}function ie(){O.tracks.length&&Q(P.value>=O.tracks.length-1?0:P.value+1)}function ae(e){if(!A||!L.value)return;let t=e.currentTarget.getBoundingClientRect();if(t.width<=0)return;let n=Math.max(0,Math.min(1,(e.clientX-t.left)/t.width));A.currentTime=n*L.value,I.value=A.currentTime}function oe(e){if(!A||L.value<=0)return;let t=e.key===`ArrowRight`?5:e.key===`ArrowLeft`?-5:0,n=e.key===`Home`?0:e.key===`End`?L.value:I.value+t;!t&&e.key!==`Home`&&e.key!==`End`||(e.preventDefault(),A.currentTime=Math.max(0,Math.min(L.value,n)),I.value=A.currentTime)}function se(e){R.value=e,A&&(A.volume=e/100)}function ce(){R.value>0?(z.value=R.value,R.value=0):R.value=z.value||70,A&&(A.volume=R.value/100)}let $=[`list`,`loop`,`single`,`shuffle`];function le(){V.value=$[($.indexOf(V.value)+1)%$.length],k(`modeChange`,V.value)}return(0,n.watch)(()=>O.tracks,()=>{let e=F.value;P.value=a(O.initialIndex??0,O.tracks.length),K(),e&&X(P.value,!1)}),(0,n.watch)(()=>O.initialIndex,e=>{let t=a(e??0,O.tracks.length);if(t!==P.value){let e=F.value;P.value=t,K(),e&&X(t,!1)}}),(0,n.watch)(()=>O.mode,e=>{V.value=e}),(0,n.watch)(()=>O.showPlaylist,e=>{B.value=e}),(0,n.onMounted)(()=>{O.autoplay&&H.value&&X(P.value,!1)}),(0,n.onBeforeUnmount)(()=>{j+=1,A&&=(A.pause(),A.removeEventListener(`timeupdate`,q),A.removeEventListener(`loadedmetadata`,J),A.removeEventListener(`ended`,Y),null)}),(i,a)=>{let o=r.NSlider;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:(0,n.normalizeClass)([`c-audio-player`,{"is-minimal":t.theme===`minimal`}])},[(0,n.createCommentVNode)(` ================ Now Playing ================ `),(0,n.createElementVNode)(`div`,c,[t.showCover?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,l,[H.value?.cover?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:H.value.cover,alt:H.value.title},null,8,u)):((0,n.openBlock)(),(0,n.createBlock)(e.t,{key:1,name:`mdi:music-note`,class:`c-audio-player__cover-placeholder`}))])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createElementVNode)(`div`,d,[(0,n.createElementVNode)(`div`,f,(0,n.toDisplayString)(H.value?.title??`未选择曲目`),1),H.value?.artist?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,p,(0,n.toDisplayString)(H.value.artist),1)):(0,n.createCommentVNode)(`v-if`,!0)])]),(0,n.createCommentVNode)(` ================ Progress ================ `),t.theme===`minimal`?(0,n.createCommentVNode)(`v-if`,!0):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ee,[(0,n.createElementVNode)(`div`,{class:`c-audio-player__progress-bar`,role:`slider`,tabindex:H.value?0:-1,"aria-label":`播放进度`,"aria-valuemin":0,"aria-valuemax":Math.floor(L.value),"aria-valuenow":Math.floor(I.value),onClick:ae,onKeydown:oe},[(0,n.createElementVNode)(`div`,{class:`c-audio-player__progress-fill`,style:(0,n.normalizeStyle)({width:`${U.value}%`})},null,4)],40,m),(0,n.createElementVNode)(`div`,h,[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)((0,n.unref)(s)(I.value)),1),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)((0,n.unref)(s)(L.value)),1)])])),(0,n.createCommentVNode)(` ================ Controls ================ `),(0,n.createElementVNode)(`div`,g,[(0,n.createElementVNode)(`button`,{type:`button`,class:`c-audio-player__ctrl-btn is-mode`,title:G.value,onClick:le},[(0,n.createVNode)(e.t,{name:W.value},null,8,[`name`])],8,_),(0,n.createElementVNode)(`button`,{type:`button`,class:`c-audio-player__ctrl-btn is-skip`,title:`上一曲`,onClick:re},[(0,n.createVNode)(e.t,{name:`mdi:skip-previous`})]),(0,n.createElementVNode)(`button`,{type:`button`,class:`c-audio-player__ctrl-btn is-play`,disabled:!H.value,title:F.value?`暂停`:`播放`,onClick:Z},[(0,n.createVNode)(e.t,{name:F.value?`mdi:pause`:`mdi:play`},null,8,[`name`])],8,v),(0,n.createElementVNode)(`button`,{type:`button`,class:`c-audio-player__ctrl-btn is-skip`,title:`下一曲`,onClick:ie},[(0,n.createVNode)(e.t,{name:`mdi:skip-next`})]),(0,n.createElementVNode)(`button`,{type:`button`,class:`c-audio-player__ctrl-btn is-mode`,title:`播放列表`,onClick:a[0]||=e=>B.value=!B.value},[(0,n.createVNode)(e.t,{name:`mdi:playlist-music`})])]),(0,n.createCommentVNode)(` ================ Volume ================ `),t.theme===`minimal`?(0,n.createCommentVNode)(`v-if`,!0):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,y,[(0,n.createElementVNode)(`button`,{type:`button`,class:`c-audio-player__volume-icon`,"aria-label":R.value===0?`取消静音`:`静音`,onClick:ce},[(0,n.createVNode)(e.t,{name:ne.value},null,8,[`name`])],8,b),(0,n.createVNode)(o,{value:R.value,"onUpdate:value":[a[1]||=e=>R.value=e,se],min:0,max:100,step:1,class:`c-audio-player__volume-slider`},null,8,[`value`])])),(0,n.createCommentVNode)(` ================ Playlist ================ `),t.showPlaylist&&B.value&&t.theme!==`minimal`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,x,[(0,n.createElementVNode)(`div`,S,[a[2]||=(0,n.createElementVNode)(`span`,null,`播放列表`,-1),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(t.tracks.length)+` 首`,1)]),((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.tracks,(t,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:t.id,type:`button`,class:(0,n.normalizeClass)([`c-audio-player__track`,{"is-active":r===P.value}]),onClick:e=>Q(r)},[(0,n.createElementVNode)(`span`,w,[r===P.value&&F.value?((0,n.openBlock)(),(0,n.createBlock)(e.t,{key:0,name:`mdi:volume-high`})):((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:1},[(0,n.createTextVNode)((0,n.toDisplayString)(r+1),1)],64))]),(0,n.createElementVNode)(`div`,T,[(0,n.createElementVNode)(`div`,E,(0,n.toDisplayString)(t.title),1),t.artist?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,D,(0,n.toDisplayString)(t.artist),1)):(0,n.createCommentVNode)(`v-if`,!0)]),t.duration?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,te,(0,n.toDisplayString)((0,n.unref)(s)(t.duration)),1)):(0,n.createCommentVNode)(`v-if`,!0)],10,C))),128))])):(0,n.createCommentVNode)(`v-if`,!0)],2)}}});var k=t.t(O,[[`__scopeId`,`data-v-46f841a0`]]);Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return k}});
@@ -1 +1 @@
1
- import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,normalizeClass as d,normalizeStyle as f,onBeforeUnmount as p,openBlock as m,ref as h,renderList as g,resolveComponent as _,toDisplayString as v,unref as y,watch as b}from"vue";import{NSlider as x}from"naive-ui";const S={initialIndex:0,showPlaylist:!0,showCover:!0,autoplay:!1,mode:`list`,theme:`default`},C={list:{icon:`mdi:repeat`,label:`List Loop`},loop:{icon:`mdi:repeat-once`,label:`Single Loop`},single:{icon:`mdi:numeric-1-box`,label:`Play Once`},shuffle:{icon:`mdi:shuffle-variant`,label:`Shuffle`}};function w(e){if(!Number.isFinite(e)||e<0)return`00:00`;let t=Math.floor(e/60),n=Math.floor(e%60);return`${String(t).padStart(2,`0`)}:${String(n).padStart(2,`0`)}`}const T={class:`c-audio-player__now-playing`},E={key:0,class:`c-audio-player__cover`},D=[`src`,`alt`],O={class:`c-audio-player__info`},k={class:`c-audio-player__title`},A={key:0,class:`c-audio-player__artist`},ee={key:0,class:`c-audio-player__progress`},te={class:`c-audio-player__time`},ne={class:`c-audio-player__controls`},re=[`title`],ie=[`title`],ae={key:1,class:`c-audio-player__volume`},oe={key:2,class:`c-audio-player__playlist`},se={class:`c-audio-player__playlist-header`},ce=[`onClick`],j={class:`c-audio-player__track-index`},M={class:`c-audio-player__track-info`},N={class:`c-audio-player__track-title`},P={key:0,class:`c-audio-player__track-artist`},F={key:0,class:`c-audio-player__track-duration`};var I=t(u({__name:`index`,props:{tracks:{},initialIndex:{default:S.initialIndex},showPlaylist:{type:Boolean,default:S.showPlaylist},showCover:{type:Boolean,default:!0},autoplay:{type:Boolean,default:S.autoplay},mode:{default:S.mode},theme:{default:S.theme}},emits:[`play`,`pause`,`ended`,`modeChange`],setup(t,{emit:u}){let _=t,S=u,I=null,L=h(_.initialIndex??0),R=h(!1),z=h(0),B=h(0),V=h(70),H=h(70),U=h(_.showPlaylist),W=h(_.mode??`list`),G=r(()=>_.tracks[L.value]),le=r(()=>B.value===0?0:z.value/B.value*100),ue=r(()=>V.value===0?`mdi:volume-off`:V.value<40?`mdi:volume-low`:V.value<70?`mdi:volume-medium`:`mdi:volume-high`),de=r(()=>C[W.value]?.icon??`mdi:repeat`),fe=r(()=>C[W.value]?.label??`循环`);function K(){I&&(I.pause(),I.removeEventListener(`timeupdate`,q),I.removeEventListener(`loadedmetadata`,J),I.removeEventListener(`ended`,Y));let e=G.value;e&&(I=new Audio(e.src),I.volume=V.value/100,I.addEventListener(`timeupdate`,q),I.addEventListener(`loadedmetadata`,J),I.addEventListener(`ended`,Y))}function q(){I&&(z.value=I.currentTime)}function J(){I&&(B.value=I.duration)}function Y(){switch(S(`ended`,L.value),W.value){case`loop`:I?.play().catch(()=>{});break;case`single`:R.value=!1;break;case`shuffle`:X(Math.floor(Math.random()*_.tracks.length));break;default:L.value<_.tracks.length-1?Z():(L.value=0,K(),I?.play().catch(()=>{}))}}function pe(){I||K(),R.value?(I?.pause(),R.value=!1,S(`pause`)):(I?.play().catch(()=>{}),R.value=!0,S(`play`,L.value))}function X(e){L.value=e,K(),I?.play().catch(()=>{}),R.value=!0,S(`play`,e)}function me(){X(L.value<=0?_.tracks.length-1:L.value-1)}function Z(){X(L.value>=_.tracks.length-1?0:L.value+1)}function Q(e){if(!I||!B.value)return;let t=e.currentTarget.getBoundingClientRect(),n=Math.max(0,Math.min(1,(e.clientX-t.left)/t.width));I.currentTime=n*B.value,z.value=I.currentTime}function he(e){V.value=e,I&&(I.volume=e/100)}function ge(){V.value>0?(H.value=V.value,V.value=0):V.value=H.value||70,I&&(I.volume=V.value/100)}let $=[`list`,`loop`,`single`,`shuffle`];function _e(){W.value=$[($.indexOf(W.value)+1)%$.length],S(`modeChange`,W.value)}return b(()=>_.tracks,()=>{L.value=0,K()}),b(()=>_.initialIndex,e=>{e!==void 0&&e!==L.value&&(L.value=e,K())}),p(()=>{I&&=(I.pause(),I.removeEventListener(`timeupdate`,q),I.removeEventListener(`loadedmetadata`,J),I.removeEventListener(`ended`,Y),null)}),_.autoplay&&_.tracks.length>0&&X(L.value),(r,u)=>{let p=x;return m(),o(`div`,{class:d([`c-audio-player`,{"is-minimal":t.theme===`minimal`}])},[a(` ================ Now Playing ================ `),s(`div`,T,[t.showCover?(m(),o(`div`,E,[G.value?.cover?(m(),o(`img`,{key:0,src:G.value.cover,alt:G.value.title},null,8,D)):(m(),i(e,{key:1,name:`mdi:music-note`,class:`c-audio-player__cover-placeholder`}))])):a(`v-if`,!0),s(`div`,O,[s(`div`,k,v(G.value?.title??`未选择曲目`),1),G.value?.artist?(m(),o(`div`,A,v(G.value.artist),1)):a(`v-if`,!0)])]),a(` ================ Progress ================ `),t.theme===`minimal`?a(`v-if`,!0):(m(),o(`div`,ee,[s(`div`,{class:`c-audio-player__progress-bar`,onClick:Q},[s(`div`,{class:`c-audio-player__progress-fill`,style:f({width:`${le.value}%`})},null,4)]),s(`div`,te,[s(`span`,null,v(y(w)(z.value)),1),s(`span`,null,v(y(w)(B.value)),1)])])),a(` ================ Controls ================ `),s(`div`,ne,[s(`button`,{class:`c-audio-player__ctrl-btn is-mode`,title:fe.value,onClick:_e},[l(e,{name:de.value},null,8,[`name`])],8,re),s(`button`,{class:`c-audio-player__ctrl-btn is-skip`,title:`上一曲`,onClick:me},[l(e,{name:`mdi:skip-previous`})]),s(`button`,{class:`c-audio-player__ctrl-btn is-play`,title:R.value?`暂停`:`播放`,onClick:pe},[l(e,{name:R.value?`mdi:pause`:`mdi:play`},null,8,[`name`])],8,ie),s(`button`,{class:`c-audio-player__ctrl-btn is-skip`,title:`下一曲`,onClick:Z},[l(e,{name:`mdi:skip-next`})]),s(`button`,{class:`c-audio-player__ctrl-btn is-mode`,title:`播放列表`,onClick:u[0]||=e=>U.value=!U.value},[l(e,{name:`mdi:playlist-music`})])]),a(` ================ Volume ================ `),t.theme===`minimal`?a(`v-if`,!0):(m(),o(`div`,ae,[l(e,{name:ue.value,class:`c-audio-player__volume-icon`,onClick:ge},null,8,[`name`]),l(p,{value:V.value,"onUpdate:value":[u[1]||=e=>V.value=e,he],min:0,max:100,step:1,class:`c-audio-player__volume-slider`},null,8,[`value`])])),a(` ================ Playlist ================ `),t.showPlaylist&&U.value&&t.theme!==`minimal`?(m(),o(`div`,oe,[s(`div`,se,[u[2]||=s(`span`,null,`播放列表`,-1),s(`span`,null,v(t.tracks.length)+` 首`,1)]),(m(!0),o(n,null,g(t.tracks,(t,r)=>(m(),o(`div`,{key:t.id,class:d([`c-audio-player__track`,{"is-active":r===L.value}]),onClick:e=>X(r)},[s(`span`,j,[r===L.value&&R.value?(m(),i(e,{key:0,name:`mdi:volume-high`})):(m(),o(n,{key:1},[c(v(r+1),1)],64))]),s(`div`,M,[s(`div`,N,v(t.title),1),t.artist?(m(),o(`div`,P,v(t.artist),1)):a(`v-if`,!0)]),t.duration?(m(),o(`span`,F,v(y(w)(t.duration)),1)):a(`v-if`,!0)],10,ce))),128))])):a(`v-if`,!0)],2)}}}),[[`__scopeId`,`data-v-9ab6a734`]]);export{w as i,S as n,C as r,I as t};
1
+ import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,normalizeClass as d,normalizeStyle as f,onBeforeUnmount as p,onMounted as m,openBlock as h,ref as g,renderList as _,resolveComponent as v,toDisplayString as y,unref as b,watch as x}from"vue";import{NSlider as S}from"naive-ui";const C={initialIndex:0,showPlaylist:!0,showCover:!0,autoplay:!1,mode:`list`,theme:`default`};function w(e,t){return!Number.isFinite(e)||t<=0?0:Math.min(Math.max(Math.trunc(e),0),t-1)}const T={list:{icon:`mdi:repeat`,label:`List Loop`},loop:{icon:`mdi:repeat-once`,label:`Single Loop`},single:{icon:`mdi:numeric-1-box`,label:`Play Once`},shuffle:{icon:`mdi:shuffle-variant`,label:`Shuffle`}};function E(e){if(!Number.isFinite(e)||e<0)return`00:00`;let t=Math.floor(e/60),n=Math.floor(e%60);return`${String(t).padStart(2,`0`)}:${String(n).padStart(2,`0`)}`}const ee={class:`c-audio-player__now-playing`},te={key:0,class:`c-audio-player__cover`},ne=[`src`,`alt`],re={class:`c-audio-player__info`},ie={class:`c-audio-player__title`},ae={key:0,class:`c-audio-player__artist`},oe={key:0,class:`c-audio-player__progress`},se=[`tabindex`,`aria-valuemax`,`aria-valuenow`],ce={class:`c-audio-player__time`},le={class:`c-audio-player__controls`},ue=[`title`],de=[`disabled`,`title`],fe={key:1,class:`c-audio-player__volume`},pe=[`aria-label`],me={key:2,class:`c-audio-player__playlist`},he={class:`c-audio-player__playlist-header`},D=[`onClick`],O={class:`c-audio-player__track-index`},k={class:`c-audio-player__track-info`},A={class:`c-audio-player__track-title`},j={key:0,class:`c-audio-player__track-artist`},M={key:0,class:`c-audio-player__track-duration`};var N=t(u({__name:`index`,props:{tracks:{},initialIndex:{default:C.initialIndex},showPlaylist:{type:Boolean,default:C.showPlaylist},showCover:{type:Boolean,default:!0},autoplay:{type:Boolean,default:C.autoplay},mode:{default:C.mode},theme:{default:C.theme}},emits:[`play`,`pause`,`ended`,`modeChange`,`error`],setup(t,{emit:u}){let v=t,C=u,N=null,P=0,F=e=>Number.isInteger(e)&&!!v.tracks[e],I=(e,t)=>e===P&&t===N,L=g(w(v.initialIndex??0,v.tracks.length)),R=g(!1),z=g(0),B=g(0),V=g(70),H=g(70),U=g(v.showPlaylist),W=g(v.mode??`list`),G=r(()=>v.tracks[L.value]),ge=r(()=>B.value<=0?0:Math.min(100,z.value/B.value*100)),_e=r(()=>V.value===0?`mdi:volume-off`:V.value<40?`mdi:volume-low`:V.value<70?`mdi:volume-medium`:`mdi:volume-high`),ve=r(()=>T[W.value]?.icon??`mdi:repeat`),ye=r(()=>T[W.value]?.label??`循环`);function K(){P+=1,N&&(N.pause(),N.removeEventListener(`timeupdate`,q),N.removeEventListener(`loadedmetadata`,J),N.removeEventListener(`ended`,Y)),N=null,R.value=!1,z.value=0;let e=G.value;B.value=e?.duration??0,!(!e||typeof Audio>`u`)&&(N=new Audio(e.src),N.volume=V.value/100,N.addEventListener(`timeupdate`,q),N.addEventListener(`loadedmetadata`,J),N.addEventListener(`ended`,Y))}function q(){N&&(z.value=Number.isFinite(N.currentTime)?N.currentTime:0)}function J(){N&&(B.value=Number.isFinite(N.duration)?N.duration:0)}function Y(){switch(C(`ended`,L.value),W.value){case`loop`:N&&(N.currentTime=0),X(L.value,!1);break;case`single`:R.value=!1;break;case`shuffle`:v.tracks.length&&Z(Math.floor(Math.random()*v.tracks.length));break;default:if(!v.tracks.length){R.value=!1;break}Z(L.value<v.tracks.length-1?L.value+1:0)}}async function X(e,t){if(!F(e))return;(t||!N||L.value!==e)&&(L.value=e,K());let n=N;if(!n)return;let r=++P;try{if(await n.play(),!I(r,n))return;R.value=!0,C(`play`,e)}catch(e){if(!I(r,n))return;R.value=!1,C(`error`,e)}}function be(){if(G.value){if(!R.value){X(L.value,!1);return}P+=1,N?.pause(),R.value=!1,C(`pause`)}}function Z(e){return X(e,!0)}function xe(){v.tracks.length&&Z(L.value<=0?v.tracks.length-1:L.value-1)}function Se(){v.tracks.length&&Z(L.value>=v.tracks.length-1?0:L.value+1)}function Ce(e){if(!N||!B.value)return;let t=e.currentTarget.getBoundingClientRect();if(t.width<=0)return;let n=Math.max(0,Math.min(1,(e.clientX-t.left)/t.width));N.currentTime=n*B.value,z.value=N.currentTime}function we(e){if(!N||B.value<=0)return;let t=e.key===`ArrowRight`?5:e.key===`ArrowLeft`?-5:0,n=e.key===`Home`?0:e.key===`End`?B.value:z.value+t;!t&&e.key!==`Home`&&e.key!==`End`||(e.preventDefault(),N.currentTime=Math.max(0,Math.min(B.value,n)),z.value=N.currentTime)}function Q(e){V.value=e,N&&(N.volume=e/100)}function Te(){V.value>0?(H.value=V.value,V.value=0):V.value=H.value||70,N&&(N.volume=V.value/100)}let $=[`list`,`loop`,`single`,`shuffle`];function Ee(){W.value=$[($.indexOf(W.value)+1)%$.length],C(`modeChange`,W.value)}return x(()=>v.tracks,()=>{let e=R.value;L.value=w(v.initialIndex??0,v.tracks.length),K(),e&&X(L.value,!1)}),x(()=>v.initialIndex,e=>{let t=w(e??0,v.tracks.length);if(t!==L.value){let e=R.value;L.value=t,K(),e&&X(t,!1)}}),x(()=>v.mode,e=>{W.value=e}),x(()=>v.showPlaylist,e=>{U.value=e}),m(()=>{v.autoplay&&G.value&&X(L.value,!1)}),p(()=>{P+=1,N&&=(N.pause(),N.removeEventListener(`timeupdate`,q),N.removeEventListener(`loadedmetadata`,J),N.removeEventListener(`ended`,Y),null)}),(r,u)=>{let p=S;return h(),o(`div`,{class:d([`c-audio-player`,{"is-minimal":t.theme===`minimal`}])},[a(` ================ Now Playing ================ `),s(`div`,ee,[t.showCover?(h(),o(`div`,te,[G.value?.cover?(h(),o(`img`,{key:0,src:G.value.cover,alt:G.value.title},null,8,ne)):(h(),i(e,{key:1,name:`mdi:music-note`,class:`c-audio-player__cover-placeholder`}))])):a(`v-if`,!0),s(`div`,re,[s(`div`,ie,y(G.value?.title??`未选择曲目`),1),G.value?.artist?(h(),o(`div`,ae,y(G.value.artist),1)):a(`v-if`,!0)])]),a(` ================ Progress ================ `),t.theme===`minimal`?a(`v-if`,!0):(h(),o(`div`,oe,[s(`div`,{class:`c-audio-player__progress-bar`,role:`slider`,tabindex:G.value?0:-1,"aria-label":`播放进度`,"aria-valuemin":0,"aria-valuemax":Math.floor(B.value),"aria-valuenow":Math.floor(z.value),onClick:Ce,onKeydown:we},[s(`div`,{class:`c-audio-player__progress-fill`,style:f({width:`${ge.value}%`})},null,4)],40,se),s(`div`,ce,[s(`span`,null,y(b(E)(z.value)),1),s(`span`,null,y(b(E)(B.value)),1)])])),a(` ================ Controls ================ `),s(`div`,le,[s(`button`,{type:`button`,class:`c-audio-player__ctrl-btn is-mode`,title:ye.value,onClick:Ee},[l(e,{name:ve.value},null,8,[`name`])],8,ue),s(`button`,{type:`button`,class:`c-audio-player__ctrl-btn is-skip`,title:`上一曲`,onClick:xe},[l(e,{name:`mdi:skip-previous`})]),s(`button`,{type:`button`,class:`c-audio-player__ctrl-btn is-play`,disabled:!G.value,title:R.value?`暂停`:`播放`,onClick:be},[l(e,{name:R.value?`mdi:pause`:`mdi:play`},null,8,[`name`])],8,de),s(`button`,{type:`button`,class:`c-audio-player__ctrl-btn is-skip`,title:`下一曲`,onClick:Se},[l(e,{name:`mdi:skip-next`})]),s(`button`,{type:`button`,class:`c-audio-player__ctrl-btn is-mode`,title:`播放列表`,onClick:u[0]||=e=>U.value=!U.value},[l(e,{name:`mdi:playlist-music`})])]),a(` ================ Volume ================ `),t.theme===`minimal`?a(`v-if`,!0):(h(),o(`div`,fe,[s(`button`,{type:`button`,class:`c-audio-player__volume-icon`,"aria-label":V.value===0?`取消静音`:`静音`,onClick:Te},[l(e,{name:_e.value},null,8,[`name`])],8,pe),l(p,{value:V.value,"onUpdate:value":[u[1]||=e=>V.value=e,Q],min:0,max:100,step:1,class:`c-audio-player__volume-slider`},null,8,[`value`])])),a(` ================ Playlist ================ `),t.showPlaylist&&U.value&&t.theme!==`minimal`?(h(),o(`div`,me,[s(`div`,he,[u[2]||=s(`span`,null,`播放列表`,-1),s(`span`,null,y(t.tracks.length)+` 首`,1)]),(h(!0),o(n,null,_(t.tracks,(t,r)=>(h(),o(`button`,{key:t.id,type:`button`,class:d([`c-audio-player__track`,{"is-active":r===L.value}]),onClick:e=>Z(r)},[s(`span`,O,[r===L.value&&R.value?(h(),i(e,{key:0,name:`mdi:volume-high`})):(h(),o(n,{key:1},[c(y(r+1),1)],64))]),s(`div`,k,[s(`div`,A,y(t.title),1),t.artist?(h(),o(`div`,j,y(t.artist),1)):a(`v-if`,!0)]),t.duration?(h(),o(`span`,M,y(b(E)(t.duration)),1)):a(`v-if`,!0)],10,D))),128))])):a(`v-if`,!0)],2)}}}),[[`__scopeId`,`data-v-46f841a0`]]);export{E as i,C as n,T as r,N as t};
@@ -1,61 +1,68 @@
1
1
  /* unplugin-vue-components disabled *//**
2
2
  * C_AvatarGroup — 头像组组件样式
3
3
  */
4
- .c-avatar-group[data-v-e9981c87] {
4
+ .c-avatar-group[data-v-b2031360] {
5
5
  display: inline-flex;
6
6
  align-items: center;
7
7
  }
8
- .c-avatar-group.is-rtl[data-v-e9981c87] {
8
+ .c-avatar-group.is-rtl[data-v-b2031360] {
9
9
  flex-direction: row-reverse;
10
10
  }
11
- .c-avatar-group[data-v-e9981c87] {
11
+ .c-avatar-group[data-v-b2031360] {
12
12
  /* ======================== 单个头像 ======================== */
13
13
  }
14
- .c-avatar-group__item[data-v-e9981c87] {
14
+ .c-avatar-group__item[data-v-b2031360] {
15
15
  position: relative;
16
16
  flex-shrink: 0;
17
17
  border: 2px solid var(--card-color);
18
+ padding: 0;
19
+ color: inherit;
20
+ font: inherit;
18
21
  background: var(--card-color);
19
22
  transition: transform 0.2s, z-index 0.2s, box-shadow 0.2s;
20
23
  cursor: default;
21
24
  z-index: 1;
22
25
  }
23
- .c-avatar-group__item.is-circle[data-v-e9981c87] {
26
+ .c-avatar-group__item[data-v-b2031360]:focus-visible {
27
+ outline: 2px solid var(--primary-color, #2080f0);
28
+ outline-offset: 2px;
29
+ }
30
+ .c-avatar-group__item.is-circle[data-v-b2031360] {
24
31
  border-radius: 50%;
25
32
  }
26
- .c-avatar-group__item.is-square[data-v-e9981c87] {
33
+ .c-avatar-group__item.is-square[data-v-b2031360] {
27
34
  border-radius: 6px;
28
35
  }
29
- .c-avatar-group__item.is-clickable[data-v-e9981c87] {
36
+ .c-avatar-group__item.is-clickable[data-v-b2031360] {
30
37
  cursor: pointer;
31
38
  }
32
- .c-avatar-group__item.is-clickable[data-v-e9981c87]:hover {
39
+ .c-avatar-group__item.is-clickable[data-v-b2031360]:hover {
33
40
  transform: translateY(-3px) scale(1.08);
34
41
  z-index: 10;
35
42
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
36
43
  }
37
- .c-avatar-group__item[data-v-e9981c87]:hover {
44
+ .c-avatar-group__item[data-v-b2031360]:hover {
38
45
  z-index: 10;
39
46
  }
40
- .c-avatar-group[data-v-e9981c87] {
47
+ .c-avatar-group[data-v-b2031360] {
41
48
  /* ---- 头像图片 ---- */
42
49
  }
43
- .c-avatar-group__img[data-v-e9981c87] {
50
+ .c-avatar-group__img[data-v-b2031360] {
44
51
  display: block;
45
52
  width: 100%;
46
53
  height: 100%;
47
54
  object-fit: cover;
48
55
  }
49
- .is-circle .c-avatar-group__img[data-v-e9981c87] {
56
+ .is-circle .c-avatar-group__img[data-v-b2031360] {
50
57
  border-radius: 50%;
51
58
  }
52
- .is-square .c-avatar-group__img[data-v-e9981c87] {
59
+ .is-square .c-avatar-group__img[data-v-b2031360] {
53
60
  border-radius: 4px;
54
61
  }
55
- .c-avatar-group[data-v-e9981c87] {
62
+ .c-avatar-group[data-v-b2031360] {
56
63
  /* ---- 首字母 fallback ---- */
57
64
  }
58
- .c-avatar-group__initials[data-v-e9981c87] {
65
+ .c-avatar-group__initials[data-v-b2031360] {
59
66
  display: flex;
60
67
  align-items: center;
61
68
  justify-content: center;
@@ -65,27 +72,29 @@
65
72
  font-weight: 600;
66
73
  user-select: none;
67
74
  }
68
- .is-circle .c-avatar-group__initials[data-v-e9981c87] {
75
+ .is-circle .c-avatar-group__initials[data-v-b2031360] {
69
76
  border-radius: 50%;
70
77
  }
71
- .is-square .c-avatar-group__initials[data-v-e9981c87] {
78
+ .is-square .c-avatar-group__initials[data-v-b2031360] {
72
79
  border-radius: 4px;
73
80
  }
74
- .c-avatar-group[data-v-e9981c87] {
81
+ .c-avatar-group[data-v-b2031360] {
75
82
  /* ---- 状态指示点 ---- */
76
83
  }
77
- .c-avatar-group__status[data-v-e9981c87] {
84
+ .c-avatar-group__status[data-v-b2031360] {
78
85
  position: absolute;
79
86
  bottom: 0;
80
87
  right: 0;
81
88
  border-radius: 50%;
82
89
  border: 2px solid var(--card-color);
90
+ padding: 0;
91
+ font: inherit;
83
92
  z-index: 2;
84
93
  }
85
- .c-avatar-group[data-v-e9981c87] {
94
+ .c-avatar-group[data-v-b2031360] {
86
95
  /* ======================== 溢出 +N ======================== */
87
96
  }
88
- .c-avatar-group__overflow[data-v-e9981c87] {
97
+ .c-avatar-group__overflow[data-v-b2031360] {
89
98
  position: relative;
90
99
  flex-shrink: 0;
91
100
  display: flex;
@@ -96,18 +105,24 @@
96
105
  color: var(--primary-color);
97
106
  font-weight: 700;
98
107
  z-index: 0;
108
+ }
109
+ .c-avatar-group__overflow[data-v-b2031360]:focus-visible {
110
+ outline: 2px solid var(--primary-color, #2080f0);
111
+ outline-offset: 2px;
112
+ }
113
+ .c-avatar-group__overflow[data-v-b2031360] {
99
114
  transition: transform 0.2s, box-shadow 0.2s;
100
115
  }
101
- .c-avatar-group__overflow.is-circle[data-v-e9981c87] {
116
+ .c-avatar-group__overflow.is-circle[data-v-b2031360] {
102
117
  border-radius: 50%;
103
118
  }
104
- .c-avatar-group__overflow.is-square[data-v-e9981c87] {
119
+ .c-avatar-group__overflow.is-square[data-v-b2031360] {
105
120
  border-radius: 6px;
106
121
  }
107
- .c-avatar-group__overflow.is-clickable[data-v-e9981c87] {
122
+ .c-avatar-group__overflow.is-clickable[data-v-b2031360] {
108
123
  cursor: pointer;
109
124
  }
110
- .c-avatar-group__overflow.is-clickable[data-v-e9981c87]:hover {
125
+ .c-avatar-group__overflow.is-clickable[data-v-b2031360]:hover {
111
126
  transform: translateY(-3px) scale(1.08);
112
127
  z-index: 10;
113
128
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);