snice 4.14.0 → 4.16.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 (384) hide show
  1. package/adapters/react/doc.d.ts +1 -0
  2. package/adapters/react/doc.d.ts.map +1 -1
  3. package/adapters/react/doc.js +1 -1
  4. package/adapters/react/doc.js.map +1 -1
  5. package/adapters/react/doc.tsx +2 -1
  6. package/adapters/react/input.d.ts +3 -0
  7. package/adapters/react/input.d.ts.map +1 -1
  8. package/adapters/react/input.js +1 -1
  9. package/adapters/react/input.js.map +1 -1
  10. package/adapters/react/input.tsx +4 -1
  11. package/adapters/react/modal.d.ts +2 -0
  12. package/adapters/react/modal.d.ts.map +1 -1
  13. package/adapters/react/modal.js +1 -1
  14. package/adapters/react/modal.js.map +1 -1
  15. package/adapters/react/modal.tsx +3 -1
  16. package/dist/cdn/accordion/snice-accordion.js +1 -1
  17. package/dist/cdn/accordion/snice-accordion.min.js +1 -1
  18. package/dist/cdn/alert/snice-alert.js +1 -1
  19. package/dist/cdn/alert/snice-alert.min.js +1 -1
  20. package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
  21. package/dist/cdn/app-tiles/snice-app-tiles.min.js +1 -1
  22. package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
  23. package/dist/cdn/audio-recorder/snice-audio-recorder.min.js +1 -1
  24. package/dist/cdn/avatar/snice-avatar.js +1 -1
  25. package/dist/cdn/avatar/snice-avatar.min.js +1 -1
  26. package/dist/cdn/badge/snice-badge.js +1 -1
  27. package/dist/cdn/badge/snice-badge.min.js +1 -1
  28. package/dist/cdn/banner/snice-banner.js +1 -1
  29. package/dist/cdn/banner/snice-banner.min.js +1 -1
  30. package/dist/cdn/book/README.md +2 -2
  31. package/dist/cdn/book/snice-book.js +29 -8
  32. package/dist/cdn/book/snice-book.js.map +1 -1
  33. package/dist/cdn/book/snice-book.min.js +3 -3
  34. package/dist/cdn/book/snice-book.min.js.map +1 -1
  35. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
  36. package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +1 -1
  37. package/dist/cdn/button/snice-button.js +1 -1
  38. package/dist/cdn/button/snice-button.min.js +1 -1
  39. package/dist/cdn/calendar/snice-calendar.js +1 -1
  40. package/dist/cdn/calendar/snice-calendar.min.js +1 -1
  41. package/dist/cdn/camera/snice-camera.js +1 -1
  42. package/dist/cdn/camera/snice-camera.min.js +1 -1
  43. package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
  44. package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +1 -1
  45. package/dist/cdn/candlestick/snice-candlestick.js +1 -1
  46. package/dist/cdn/candlestick/snice-candlestick.min.js +1 -1
  47. package/dist/cdn/card/snice-card.js +1 -1
  48. package/dist/cdn/card/snice-card.min.js +1 -1
  49. package/dist/cdn/carousel/snice-carousel.js +1 -1
  50. package/dist/cdn/carousel/snice-carousel.min.js +1 -1
  51. package/dist/cdn/chart/snice-chart.js +1 -1
  52. package/dist/cdn/chart/snice-chart.min.js +1 -1
  53. package/dist/cdn/chat/snice-chat.js +1 -1
  54. package/dist/cdn/chat/snice-chat.min.js +1 -1
  55. package/dist/cdn/checkbox/snice-checkbox.js +1 -1
  56. package/dist/cdn/checkbox/snice-checkbox.min.js +1 -1
  57. package/dist/cdn/chip/snice-chip.js +1 -1
  58. package/dist/cdn/chip/snice-chip.min.js +1 -1
  59. package/dist/cdn/code-block/snice-code-block.js +4 -4
  60. package/dist/cdn/code-block/snice-code-block.js.map +1 -1
  61. package/dist/cdn/code-block/snice-code-block.min.js +2 -2
  62. package/dist/cdn/code-block/snice-code-block.min.js.map +1 -1
  63. package/dist/cdn/color-display/snice-color-display.js +1 -1
  64. package/dist/cdn/color-display/snice-color-display.min.js +1 -1
  65. package/dist/cdn/color-picker/snice-color-picker.js +1 -1
  66. package/dist/cdn/color-picker/snice-color-picker.min.js +1 -1
  67. package/dist/cdn/command-palette/snice-command-palette.js +1 -1
  68. package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
  69. package/dist/cdn/comments/snice-comments.js +1 -1
  70. package/dist/cdn/comments/snice-comments.min.js +1 -1
  71. package/dist/cdn/countdown/snice-countdown.js +1 -1
  72. package/dist/cdn/countdown/snice-countdown.min.js +1 -1
  73. package/dist/cdn/cropper/snice-cropper.js +1 -1
  74. package/dist/cdn/cropper/snice-cropper.min.js +1 -1
  75. package/dist/cdn/date-picker/README.md +1 -1
  76. package/dist/cdn/date-picker/snice-date-picker.js +49 -39
  77. package/dist/cdn/date-picker/snice-date-picker.js.map +1 -1
  78. package/dist/cdn/date-picker/snice-date-picker.min.js +4 -4
  79. package/dist/cdn/date-picker/snice-date-picker.min.js.map +1 -1
  80. package/dist/cdn/diff/snice-diff.js +1 -1
  81. package/dist/cdn/diff/snice-diff.min.js +1 -1
  82. package/dist/cdn/divider/snice-divider.js +1 -1
  83. package/dist/cdn/divider/snice-divider.min.js +1 -1
  84. package/dist/cdn/doc/README.md +2 -2
  85. package/dist/cdn/doc/snice-doc.js +221 -35
  86. package/dist/cdn/doc/snice-doc.js.map +1 -1
  87. package/dist/cdn/doc/snice-doc.min.js +2 -2
  88. package/dist/cdn/doc/snice-doc.min.js.map +1 -1
  89. package/dist/cdn/draw/snice-draw.js +1 -1
  90. package/dist/cdn/draw/snice-draw.min.js +1 -1
  91. package/dist/cdn/drawer/snice-drawer.js +1 -1
  92. package/dist/cdn/drawer/snice-drawer.min.js +1 -1
  93. package/dist/cdn/empty-state/snice-empty-state.js +1 -1
  94. package/dist/cdn/empty-state/snice-empty-state.min.js +1 -1
  95. package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
  96. package/dist/cdn/file-gallery/snice-file-gallery.min.js +1 -1
  97. package/dist/cdn/file-upload/snice-file-upload.js +1 -1
  98. package/dist/cdn/file-upload/snice-file-upload.min.js +1 -1
  99. package/dist/cdn/flip-card/snice-flip-card.js +1 -1
  100. package/dist/cdn/flip-card/snice-flip-card.min.js +1 -1
  101. package/dist/cdn/flow/snice-flow.js +1 -1
  102. package/dist/cdn/flow/snice-flow.min.js +1 -1
  103. package/dist/cdn/funnel/snice-funnel.js +1 -1
  104. package/dist/cdn/funnel/snice-funnel.min.js +1 -1
  105. package/dist/cdn/gantt/snice-gantt.js +1 -1
  106. package/dist/cdn/gantt/snice-gantt.min.js +1 -1
  107. package/dist/cdn/gauge/snice-gauge.js +1 -1
  108. package/dist/cdn/gauge/snice-gauge.min.js +1 -1
  109. package/dist/cdn/heatmap/snice-heatmap.js +1 -1
  110. package/dist/cdn/heatmap/snice-heatmap.min.js +1 -1
  111. package/dist/cdn/image/snice-image.js +1 -1
  112. package/dist/cdn/image/snice-image.min.js +1 -1
  113. package/dist/cdn/input/README.md +2 -2
  114. package/dist/cdn/input/snice-input.js +21 -3
  115. package/dist/cdn/input/snice-input.js.map +1 -1
  116. package/dist/cdn/input/snice-input.min.js +3 -3
  117. package/dist/cdn/input/snice-input.min.js.map +1 -1
  118. package/dist/cdn/kanban/snice-kanban.js +1 -1
  119. package/dist/cdn/kanban/snice-kanban.min.js +1 -1
  120. package/dist/cdn/kpi/snice-kpi.js +1 -1
  121. package/dist/cdn/kpi/snice-kpi.min.js +1 -1
  122. package/dist/cdn/layout/snice-layout.js +1 -1
  123. package/dist/cdn/layout/snice-layout.min.js +1 -1
  124. package/dist/cdn/link/snice-link.js +1 -1
  125. package/dist/cdn/link/snice-link.min.js +1 -1
  126. package/dist/cdn/link-preview/snice-link-preview.js +2 -2
  127. package/dist/cdn/link-preview/snice-link-preview.js.map +1 -1
  128. package/dist/cdn/link-preview/snice-link-preview.min.js +2 -2
  129. package/dist/cdn/link-preview/snice-link-preview.min.js.map +1 -1
  130. package/dist/cdn/list/snice-list.js +4 -4
  131. package/dist/cdn/list/snice-list.js.map +1 -1
  132. package/dist/cdn/list/snice-list.min.js +2 -2
  133. package/dist/cdn/list/snice-list.min.js.map +1 -1
  134. package/dist/cdn/location/snice-location.js +1 -1
  135. package/dist/cdn/location/snice-location.min.js +1 -1
  136. package/dist/cdn/login/snice-login.js +1 -1
  137. package/dist/cdn/login/snice-login.min.js +1 -1
  138. package/dist/cdn/map/snice-map.js +1 -1
  139. package/dist/cdn/map/snice-map.min.js +1 -1
  140. package/dist/cdn/markdown/snice-markdown.js +1 -1
  141. package/dist/cdn/markdown/snice-markdown.min.js +1 -1
  142. package/dist/cdn/masonry/snice-masonry.js +1 -1
  143. package/dist/cdn/masonry/snice-masonry.min.js +1 -1
  144. package/dist/cdn/menu/snice-menu.js +2 -2
  145. package/dist/cdn/menu/snice-menu.js.map +1 -1
  146. package/dist/cdn/menu/snice-menu.min.js +2 -2
  147. package/dist/cdn/menu/snice-menu.min.js.map +1 -1
  148. package/dist/cdn/modal/README.md +2 -2
  149. package/dist/cdn/modal/snice-modal.js +34 -18
  150. package/dist/cdn/modal/snice-modal.js.map +1 -1
  151. package/dist/cdn/modal/snice-modal.min.js +24 -20
  152. package/dist/cdn/modal/snice-modal.min.js.map +1 -1
  153. package/dist/cdn/music-player/README.md +2 -2
  154. package/dist/cdn/music-player/snice-music-player.js +8 -1
  155. package/dist/cdn/music-player/snice-music-player.js.map +1 -1
  156. package/dist/cdn/music-player/snice-music-player.min.js +3 -3
  157. package/dist/cdn/music-player/snice-music-player.min.js.map +1 -1
  158. package/dist/cdn/nav/snice-nav.js +1 -1
  159. package/dist/cdn/nav/snice-nav.min.js +1 -1
  160. package/dist/cdn/network-graph/snice-network-graph.js +1 -1
  161. package/dist/cdn/network-graph/snice-network-graph.min.js +1 -1
  162. package/dist/cdn/notification-center/snice-notification-center.js +1 -1
  163. package/dist/cdn/notification-center/snice-notification-center.min.js +1 -1
  164. package/dist/cdn/org-chart/snice-org-chart.js +1 -1
  165. package/dist/cdn/org-chart/snice-org-chart.min.js +1 -1
  166. package/dist/cdn/pagination/snice-pagination.js +1 -1
  167. package/dist/cdn/pagination/snice-pagination.min.js +1 -1
  168. package/dist/cdn/paint/snice-paint.js +1 -1
  169. package/dist/cdn/paint/snice-paint.min.js +1 -1
  170. package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
  171. package/dist/cdn/pdf-viewer/snice-pdf-viewer.min.js +1 -1
  172. package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
  173. package/dist/cdn/podcast-player/snice-podcast-player.min.js +1 -1
  174. package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
  175. package/dist/cdn/pricing-table/snice-pricing-table.min.js +1 -1
  176. package/dist/cdn/progress/snice-progress.js +1 -1
  177. package/dist/cdn/progress/snice-progress.min.js +1 -1
  178. package/dist/cdn/qr-code/snice-qr-code.js +1 -1
  179. package/dist/cdn/qr-code/snice-qr-code.min.js +1 -1
  180. package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
  181. package/dist/cdn/qr-reader/snice-qr-reader.min.js +1 -1
  182. package/dist/cdn/radio/README.md +2 -2
  183. package/dist/cdn/radio/snice-radio.js +23 -3
  184. package/dist/cdn/radio/snice-radio.js.map +1 -1
  185. package/dist/cdn/radio/snice-radio.min.js +3 -3
  186. package/dist/cdn/radio/snice-radio.min.js.map +1 -1
  187. package/dist/cdn/rating/snice-rating.js +1 -1
  188. package/dist/cdn/rating/snice-rating.min.js +1 -1
  189. package/dist/cdn/recipe/snice-recipe.js +1 -1
  190. package/dist/cdn/recipe/snice-recipe.min.js +1 -1
  191. package/dist/cdn/runtime/README.md +2 -2
  192. package/dist/cdn/runtime/snice-runtime.esm.js +513 -46
  193. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  194. package/dist/cdn/runtime/snice-runtime.esm.min.js +6 -6
  195. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  196. package/dist/cdn/runtime/snice-runtime.js +6420 -5951
  197. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  198. package/dist/cdn/runtime/snice-runtime.min.js +18 -18
  199. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  200. package/dist/cdn/sankey/snice-sankey.js +1 -1
  201. package/dist/cdn/sankey/snice-sankey.min.js +1 -1
  202. package/dist/cdn/select/README.md +2 -2
  203. package/dist/cdn/select/snice-select.js +46 -92
  204. package/dist/cdn/select/snice-select.js.map +1 -1
  205. package/dist/cdn/select/snice-select.min.js +5 -13
  206. package/dist/cdn/select/snice-select.min.js.map +1 -1
  207. package/dist/cdn/skeleton/snice-skeleton.js +1 -1
  208. package/dist/cdn/skeleton/snice-skeleton.min.js +1 -1
  209. package/dist/cdn/slider/snice-slider.js +1 -1
  210. package/dist/cdn/slider/snice-slider.min.js +1 -1
  211. package/dist/cdn/sortable/snice-sortable.js +1 -1
  212. package/dist/cdn/sortable/snice-sortable.min.js +1 -1
  213. package/dist/cdn/sparkline/snice-sparkline.js +1 -1
  214. package/dist/cdn/sparkline/snice-sparkline.min.js +1 -1
  215. package/dist/cdn/spinner/snice-spinner.js +1 -1
  216. package/dist/cdn/spinner/snice-spinner.min.js +1 -1
  217. package/dist/cdn/split-pane/snice-split-pane.js +1 -1
  218. package/dist/cdn/split-pane/snice-split-pane.min.js +1 -1
  219. package/dist/cdn/spotlight/snice-spotlight.js +1 -1
  220. package/dist/cdn/spotlight/snice-spotlight.min.js +1 -1
  221. package/dist/cdn/spreadsheet/snice-spreadsheet.js +1 -1
  222. package/dist/cdn/spreadsheet/snice-spreadsheet.min.js +1 -1
  223. package/dist/cdn/stepper/snice-stepper.js +1 -1
  224. package/dist/cdn/stepper/snice-stepper.min.js +1 -1
  225. package/dist/cdn/switch/README.md +1 -1
  226. package/dist/cdn/switch/snice-switch.js +33 -23
  227. package/dist/cdn/switch/snice-switch.js.map +1 -1
  228. package/dist/cdn/switch/snice-switch.min.js +3 -3
  229. package/dist/cdn/switch/snice-switch.min.js.map +1 -1
  230. package/dist/cdn/table/README.md +2 -2
  231. package/dist/cdn/table/snice-table.js +2876 -111
  232. package/dist/cdn/table/snice-table.js.map +1 -1
  233. package/dist/cdn/table/snice-table.min.js +187 -47
  234. package/dist/cdn/table/snice-table.min.js.map +1 -1
  235. package/dist/cdn/tabs/snice-tabs.js +1 -1
  236. package/dist/cdn/tabs/snice-tabs.min.js +1 -1
  237. package/dist/cdn/tag-input/snice-tag-input.js +1 -1
  238. package/dist/cdn/tag-input/snice-tag-input.min.js +1 -1
  239. package/dist/cdn/terminal/snice-terminal.js +1 -1
  240. package/dist/cdn/terminal/snice-terminal.min.js +1 -1
  241. package/dist/cdn/testimonial/snice-testimonial.js +1 -1
  242. package/dist/cdn/testimonial/snice-testimonial.min.js +1 -1
  243. package/dist/cdn/textarea/snice-textarea.js +1 -1
  244. package/dist/cdn/textarea/snice-textarea.min.js +1 -1
  245. package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
  246. package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +1 -1
  247. package/dist/cdn/timeline/snice-timeline.js +1 -1
  248. package/dist/cdn/timeline/snice-timeline.min.js +1 -1
  249. package/dist/cdn/timer/snice-timer.js +1 -1
  250. package/dist/cdn/timer/snice-timer.min.js +1 -1
  251. package/dist/cdn/toast/README.md +1 -1
  252. package/dist/cdn/toast/snice-toast.js +3 -3
  253. package/dist/cdn/toast/snice-toast.js.map +1 -1
  254. package/dist/cdn/toast/snice-toast.min.js +2 -2
  255. package/dist/cdn/toast/snice-toast.min.js.map +1 -1
  256. package/dist/cdn/tooltip/snice-tooltip.js +1 -1
  257. package/dist/cdn/tooltip/snice-tooltip.min.js +1 -1
  258. package/dist/cdn/tree/snice-tree.js +1 -1
  259. package/dist/cdn/tree/snice-tree.min.js +1 -1
  260. package/dist/cdn/treemap/snice-treemap.js +1 -1
  261. package/dist/cdn/treemap/snice-treemap.min.js +1 -1
  262. package/dist/cdn/video-player/snice-video-player.js +1 -1
  263. package/dist/cdn/video-player/snice-video-player.min.js +1 -1
  264. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
  265. package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +1 -1
  266. package/dist/cdn/waterfall/snice-waterfall.js +1 -1
  267. package/dist/cdn/waterfall/snice-waterfall.min.js +1 -1
  268. package/dist/cdn/weather/snice-weather.js +1 -1
  269. package/dist/cdn/weather/snice-weather.min.js +1 -1
  270. package/dist/components/book/snice-book.d.ts +2 -0
  271. package/dist/components/book/snice-book.js +28 -7
  272. package/dist/components/book/snice-book.js.map +1 -1
  273. package/dist/components/book/snice-book.types.d.ts +7 -0
  274. package/dist/components/code-block/snice-code-block.js +3 -3
  275. package/dist/components/code-block/snice-code-block.js.map +1 -1
  276. package/dist/components/code-block/snice-code-block.types.d.ts +3 -3
  277. package/dist/components/date-picker/snice-date-picker.d.ts +2 -0
  278. package/dist/components/date-picker/snice-date-picker.js +49 -39
  279. package/dist/components/date-picker/snice-date-picker.js.map +1 -1
  280. package/dist/components/doc/snice-doc.d.ts +20 -0
  281. package/dist/components/doc/snice-doc.js +220 -34
  282. package/dist/components/doc/snice-doc.js.map +1 -1
  283. package/dist/components/input/snice-input.d.ts +3 -0
  284. package/dist/components/input/snice-input.js +20 -2
  285. package/dist/components/input/snice-input.js.map +1 -1
  286. package/dist/components/input/snice-input.types.d.ts +3 -0
  287. package/dist/components/link-preview/snice-link-preview.js +1 -1
  288. package/dist/components/link-preview/snice-link-preview.js.map +1 -1
  289. package/dist/components/list/snice-list.js +3 -3
  290. package/dist/components/list/snice-list.js.map +1 -1
  291. package/dist/components/menu/snice-menu.js +1 -1
  292. package/dist/components/menu/snice-menu.js.map +1 -1
  293. package/dist/components/modal/snice-modal.d.ts +2 -0
  294. package/dist/components/modal/snice-modal.js +33 -17
  295. package/dist/components/modal/snice-modal.js.map +1 -1
  296. package/dist/components/modal/snice-modal.types.d.ts +2 -0
  297. package/dist/components/music-player/snice-music-player.d.ts +1 -0
  298. package/dist/components/music-player/snice-music-player.js +7 -0
  299. package/dist/components/music-player/snice-music-player.js.map +1 -1
  300. package/dist/components/notification-center/snice-notification-center.d.ts +1 -1
  301. package/dist/components/notification-center/snice-notification-center.js.map +1 -1
  302. package/dist/components/notification-center/snice-notification-center.types.d.ts +1 -0
  303. package/dist/components/radio/snice-radio.d.ts +1 -0
  304. package/dist/components/radio/snice-radio.js +22 -2
  305. package/dist/components/radio/snice-radio.js.map +1 -1
  306. package/dist/components/select/snice-select.d.ts +2 -4
  307. package/dist/components/select/snice-select.js +46 -92
  308. package/dist/components/select/snice-select.js.map +1 -1
  309. package/dist/components/switch/snice-switch.d.ts +2 -0
  310. package/dist/components/switch/snice-switch.js +32 -22
  311. package/dist/components/switch/snice-switch.js.map +1 -1
  312. package/dist/components/table/snice-table.d.ts +2 -0
  313. package/dist/components/table/snice-table.js +17 -3
  314. package/dist/components/table/snice-table.js.map +1 -1
  315. package/dist/components/toast/snice-toast-container.js +2 -2
  316. package/dist/components/toast/snice-toast-container.js.map +1 -1
  317. package/dist/index.cjs +512 -43
  318. package/dist/index.cjs.map +1 -1
  319. package/dist/index.d.ts +1 -0
  320. package/dist/index.esm.js +511 -44
  321. package/dist/index.esm.js.map +1 -1
  322. package/dist/index.iife.js +512 -43
  323. package/dist/index.iife.js.map +1 -1
  324. package/dist/symbols.cjs +1 -1
  325. package/dist/symbols.esm.js +1 -1
  326. package/dist/tooltip-observer.d.ts +11 -0
  327. package/dist/transitions.cjs +1 -1
  328. package/dist/transitions.esm.js +1 -1
  329. package/docs/ai/DEVELOPMENT.md +1 -1
  330. package/docs/ai/api.md +14 -10
  331. package/docs/ai/architecture.md +18 -5
  332. package/docs/ai/components/app-tiles.md +1 -1
  333. package/docs/ai/components/book.md +5 -6
  334. package/docs/ai/components/camera-annotate.md +3 -3
  335. package/docs/ai/components/candlestick.md +3 -3
  336. package/docs/ai/components/chart.md +1 -1
  337. package/docs/ai/components/code-block.md +3 -3
  338. package/docs/ai/components/doc.md +26 -15
  339. package/docs/ai/components/file-gallery.md +1 -1
  340. package/docs/ai/components/input.md +10 -0
  341. package/docs/ai/components/link-preview.md +1 -1
  342. package/docs/ai/components/list.md +2 -2
  343. package/docs/ai/components/markdown.md +13 -6
  344. package/docs/ai/components/modal.md +2 -0
  345. package/docs/ai/components/music-player.md +3 -2
  346. package/docs/ai/components/network-graph.md +5 -5
  347. package/docs/ai/components/notification-center.md +1 -0
  348. package/docs/ai/components/pdf-viewer.md +1 -1
  349. package/docs/ai/components/radio.md +2 -2
  350. package/docs/ai/components/sankey.md +3 -3
  351. package/docs/ai/components/select.md +1 -1
  352. package/docs/ai/components/tooltip.md +54 -0
  353. package/docs/ai/decorators.md +4 -4
  354. package/docs/code-block.md +4 -4
  355. package/docs/components/app-tiles.md +1 -1
  356. package/docs/components/book.md +3 -4
  357. package/docs/components/button.md +2 -2
  358. package/docs/components/camera-annotate.md +6 -6
  359. package/docs/components/candlestick.md +6 -6
  360. package/docs/components/chart.md +4 -6
  361. package/docs/components/checkbox.md +3 -3
  362. package/docs/components/chip.md +4 -4
  363. package/docs/components/code-block.md +4 -3
  364. package/docs/components/doc.md +99 -58
  365. package/docs/components/file-gallery.md +25 -3
  366. package/docs/components/input.md +20 -0
  367. package/docs/components/kpi.md +2 -3
  368. package/docs/components/link-preview.md +2 -2
  369. package/docs/components/list.md +3 -3
  370. package/docs/components/markdown.md +14 -36
  371. package/docs/components/modal.md +2 -0
  372. package/docs/components/music-player.md +3 -2
  373. package/docs/components/network-graph.md +7 -7
  374. package/docs/components/notification-center.md +1 -0
  375. package/docs/components/pdf-viewer.md +1 -1
  376. package/docs/components/sankey.md +6 -6
  377. package/docs/components/switch.md +1 -1
  378. package/docs/components/table.md +2 -2
  379. package/docs/components/tooltip.md +133 -0
  380. package/docs/controllers.md +3 -14
  381. package/docs/elements.md +0 -1
  382. package/docs/events.md +3 -0
  383. package/docs/request-response.md +2 -0
  384. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * snice v4.13.0
2
+ * snice v4.15.0
3
3
  * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
6
6
  */
7
- void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be loaded before snice-music-player.min.js");var SniceMusicPlayer=function(e,t){"use strict";function r(e,t,r,a,i,s){function l(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var n,o=a.kind,c="getter"===o?"get":"setter"===o?"set":"value",h=!t&&e?a.static?e:e.prototype:null,d=t||(h?Object.getOwnPropertyDescriptor(h,a.name):{}),p=!1,u=r.length-1;u>=0;u--){var m={};for(var g in a)m[g]="access"===g?{}:a[g];for(var g in a.access)m.access[g]=a.access[g];m.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");s.push(l(e||null))};var v=(0,r[u])("accessor"===o?{get:d.get,set:d.set}:d[c],m);if("accessor"===o){if(void 0===v)continue;if(null===v||"object"!=typeof v)throw new TypeError("Object expected");(n=l(v.get))&&(d.get=n),(n=l(v.set))&&(d.set=n),(n=l(v.init))&&i.unshift(n)}else(n=l(v))&&("field"===o?i.unshift(n):d[c]=n)}h&&Object.defineProperty(h,a.name,d),p=!0}function a(e,t,r){for(var a=arguments.length>2,i=0;i<t.length;i++)r=a?t[i].call(e,r):t[i].call(e);return a?r:void 0}"function"==typeof SuppressedError&&SuppressedError;let i=(()=>{let e,i,s,l,n,o,c,h,d,p,u,m,g,v,y,f,b,k,w,x,T,E,S,C,$,I,z,V,M,P,B,j,H,L,R,A,Q,N,O=[t.element("snice-music-player")],U=[],F=HTMLElement,q=[],D=[],X=[],G=[],J=[],K=[],W=[],Y=[],Z=[],_=[],ee=[],te=[],re=[],ae=[],ie=[],se=[],le=[],ne=[],oe=[],ce=[],he=[],de=[],pe=[],ue=[],me=[],ge=[],ve=[],ye=[],fe=[],be=[],ke=[],we=[],xe=[],Te=[],Ee=[],Se=[],Ce=[];return class extends F{static{i=this}static{const $e="function"==typeof Symbol&&Symbol.metadata?Object.create(F[Symbol.metadata]??null):void 0;s=[t.property({type:Array})],l=[t.property({type:Number,attribute:"current-track-index"})],n=[t.property({type:String,attribute:"current-track"})],o=[t.property({type:Number})],c=[t.property({type:Boolean})],h=[t.property({type:Boolean})],d=[t.property({type:String})],p=[t.property({type:String})],u=[t.property({type:Boolean})],m=[t.property({type:Boolean,attribute:"show-playlist"})],g=[t.property({type:Boolean,attribute:"show-controls"})],v=[t.property({type:Boolean,attribute:"show-volume"})],y=[t.property({type:Boolean,attribute:"show-artwork"})],f=[t.property({type:Boolean,attribute:"show-track-info"})],b=[t.property({type:Boolean})],k=[t.property({type:Boolean,attribute:"show-volume-slider"})],w=[t.query(".player-progress")],x=[t.query(".player-volume-slider")],T=[t.styles()],E=[t.ready()],S=[t.dispose()],C=[t.watch("tracks")],$=[t.watch("currentTrack")],I=[t.watch("volume")],z=[t.watch("muted")],V=[t.render()],M=[t.dispatch("player-play",{bubbles:!0,composed:!0})],P=[t.dispatch("player-pause",{bubbles:!0,composed:!0})],B=[t.dispatch("player-stop",{bubbles:!0,composed:!0})],j=[t.dispatch("player-track-change",{bubbles:!0,composed:!0})],H=[t.dispatch("player-track-ended",{bubbles:!0,composed:!0})],L=[t.dispatch("player-seek",{bubbles:!0,composed:!0})],R=[t.dispatch("player-volume-change",{bubbles:!0,composed:!0})],A=[t.dispatch("player-shuffle-change",{bubbles:!0,composed:!0})],Q=[t.dispatch("player-repeat-change",{bubbles:!0,composed:!0})],N=[t.dispatch("player-error",{bubbles:!0,composed:!0})],r(this,null,T,{kind:"method",name:"componentStyles",static:!1,private:!1,access:{has:e=>"componentStyles"in e,get:e=>e.componentStyles},metadata:$e},null,q),r(this,null,E,{kind:"method",name:"init",static:!1,private:!1,access:{has:e=>"init"in e,get:e=>e.init},metadata:$e},null,q),r(this,null,S,{kind:"method",name:"cleanup",static:!1,private:!1,access:{has:e=>"cleanup"in e,get:e=>e.cleanup},metadata:$e},null,q),r(this,null,C,{kind:"method",name:"handleTracksChange",static:!1,private:!1,access:{has:e=>"handleTracksChange"in e,get:e=>e.handleTracksChange},metadata:$e},null,q),r(this,null,$,{kind:"method",name:"handleCurrentTrackChange",static:!1,private:!1,access:{has:e=>"handleCurrentTrackChange"in e,get:e=>e.handleCurrentTrackChange},metadata:$e},null,q),r(this,null,I,{kind:"method",name:"handleVolumeChange",static:!1,private:!1,access:{has:e=>"handleVolumeChange"in e,get:e=>e.handleVolumeChange},metadata:$e},null,q),r(this,null,z,{kind:"method",name:"handleMutedChange",static:!1,private:!1,access:{has:e=>"handleMutedChange"in e,get:e=>e.handleMutedChange},metadata:$e},null,q),r(this,null,V,{kind:"method",name:"renderPlayer",static:!1,private:!1,access:{has:e=>"renderPlayer"in e,get:e=>e.renderPlayer},metadata:$e},null,q),r(this,null,M,{kind:"method",name:"emitPlay",static:!1,private:!1,access:{has:e=>"emitPlay"in e,get:e=>e.emitPlay},metadata:$e},null,q),r(this,null,P,{kind:"method",name:"emitPause",static:!1,private:!1,access:{has:e=>"emitPause"in e,get:e=>e.emitPause},metadata:$e},null,q),r(this,null,B,{kind:"method",name:"emitStop",static:!1,private:!1,access:{has:e=>"emitStop"in e,get:e=>e.emitStop},metadata:$e},null,q),r(this,null,j,{kind:"method",name:"emitTrackChange",static:!1,private:!1,access:{has:e=>"emitTrackChange"in e,get:e=>e.emitTrackChange},metadata:$e},null,q),r(this,null,H,{kind:"method",name:"emitTrackEnded",static:!1,private:!1,access:{has:e=>"emitTrackEnded"in e,get:e=>e.emitTrackEnded},metadata:$e},null,q),r(this,null,L,{kind:"method",name:"emitSeek",static:!1,private:!1,access:{has:e=>"emitSeek"in e,get:e=>e.emitSeek},metadata:$e},null,q),r(this,null,R,{kind:"method",name:"emitVolumeChange",static:!1,private:!1,access:{has:e=>"emitVolumeChange"in e,get:e=>e.emitVolumeChange},metadata:$e},null,q),r(this,null,A,{kind:"method",name:"emitShuffleChange",static:!1,private:!1,access:{has:e=>"emitShuffleChange"in e,get:e=>e.emitShuffleChange},metadata:$e},null,q),r(this,null,Q,{kind:"method",name:"emitRepeatChange",static:!1,private:!1,access:{has:e=>"emitRepeatChange"in e,get:e=>e.emitRepeatChange},metadata:$e},null,q),r(this,null,N,{kind:"method",name:"emitError",static:!1,private:!1,access:{has:e=>"emitError"in e,get:e=>e.emitError},metadata:$e},null,q),r(null,null,s,{kind:"field",name:"tracks",static:!1,private:!1,access:{has:e=>"tracks"in e,get:e=>e.tracks,set:(e,t)=>{e.tracks=t}},metadata:$e},D,X),r(null,null,l,{kind:"field",name:"currentTrackIndex",static:!1,private:!1,access:{has:e=>"currentTrackIndex"in e,get:e=>e.currentTrackIndex,set:(e,t)=>{e.currentTrackIndex=t}},metadata:$e},G,J),r(null,null,n,{kind:"field",name:"currentTrack",static:!1,private:!1,access:{has:e=>"currentTrack"in e,get:e=>e.currentTrack,set:(e,t)=>{e.currentTrack=t}},metadata:$e},K,W),r(null,null,o,{kind:"field",name:"volume",static:!1,private:!1,access:{has:e=>"volume"in e,get:e=>e.volume,set:(e,t)=>{e.volume=t}},metadata:$e},Y,Z),r(null,null,c,{kind:"field",name:"muted",static:!1,private:!1,access:{has:e=>"muted"in e,get:e=>e.muted,set:(e,t)=>{e.muted=t}},metadata:$e},_,ee),r(null,null,h,{kind:"field",name:"shuffle",static:!1,private:!1,access:{has:e=>"shuffle"in e,get:e=>e.shuffle,set:(e,t)=>{e.shuffle=t}},metadata:$e},te,re),r(null,null,d,{kind:"field",name:"repeat",static:!1,private:!1,access:{has:e=>"repeat"in e,get:e=>e.repeat,set:(e,t)=>{e.repeat=t}},metadata:$e},ae,ie),r(null,null,p,{kind:"field",name:"state",static:!1,private:!1,access:{has:e=>"state"in e,get:e=>e.state,set:(e,t)=>{e.state=t}},metadata:$e},se,le),r(null,null,u,{kind:"field",name:"autoplay",static:!1,private:!1,access:{has:e=>"autoplay"in e,get:e=>e.autoplay,set:(e,t)=>{e.autoplay=t}},metadata:$e},ne,oe),r(null,null,m,{kind:"field",name:"showPlaylist",static:!1,private:!1,access:{has:e=>"showPlaylist"in e,get:e=>e.showPlaylist,set:(e,t)=>{e.showPlaylist=t}},metadata:$e},ce,he),r(null,null,g,{kind:"field",name:"showControls",static:!1,private:!1,access:{has:e=>"showControls"in e,get:e=>e.showControls,set:(e,t)=>{e.showControls=t}},metadata:$e},de,pe),r(null,null,v,{kind:"field",name:"showVolume",static:!1,private:!1,access:{has:e=>"showVolume"in e,get:e=>e.showVolume,set:(e,t)=>{e.showVolume=t}},metadata:$e},ue,me),r(null,null,y,{kind:"field",name:"showArtwork",static:!1,private:!1,access:{has:e=>"showArtwork"in e,get:e=>e.showArtwork,set:(e,t)=>{e.showArtwork=t}},metadata:$e},ge,ve),r(null,null,f,{kind:"field",name:"showTrackInfo",static:!1,private:!1,access:{has:e=>"showTrackInfo"in e,get:e=>e.showTrackInfo,set:(e,t)=>{e.showTrackInfo=t}},metadata:$e},ye,fe),r(null,null,b,{kind:"field",name:"compact",static:!1,private:!1,access:{has:e=>"compact"in e,get:e=>e.compact,set:(e,t)=>{e.compact=t}},metadata:$e},be,ke),r(null,null,k,{kind:"field",name:"showVolumeSlider",static:!1,private:!1,access:{has:e=>"showVolumeSlider"in e,get:e=>e.showVolumeSlider,set:(e,t)=>{e.showVolumeSlider=t}},metadata:$e},we,xe),r(null,null,w,{kind:"field",name:"progressElement",static:!1,private:!1,access:{has:e=>"progressElement"in e,get:e=>e.progressElement,set:(e,t)=>{e.progressElement=t}},metadata:$e},Te,Ee),r(null,null,x,{kind:"field",name:"volumeSlider",static:!1,private:!1,access:{has:e=>"volumeSlider"in e,get:e=>e.volumeSlider,set:(e,t)=>{e.volumeSlider=t}},metadata:$e},Se,Ce),r(null,e={value:i},O,{kind:"class",name:i.name,metadata:$e},null,U),i=e.value,$e&&Object.defineProperty(i,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:$e}),a(i,U)}componentStyles(){return t.css`${":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);contain:layout style paint}.player-container{background:var(--snice-color-background,rgb(255 255 255));border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-lg,.5rem);padding:var(--snice-spacing-lg,1.5rem);box-shadow:var(--snice-shadow-md,0 4px 6px -1px rgb(0 0 0 / .1),0 2px 4px -2px rgb(0 0 0 / .1))}.player-info{display:flex;align-items:center;gap:var(--snice-spacing-md,1rem);margin-bottom:var(--snice-spacing-lg,1.5rem)}.player-artwork{flex-shrink:0;width:5rem;height:5rem;border-radius:var(--snice-border-radius-md,.25rem);overflow:hidden;background:var(--snice-color-background-secondary,rgb(250 250 250));display:flex;align-items:center;justify-content:center}.player-artwork img{width:100%;height:100%;object-fit:cover}.player-artwork-placeholder{color:var(--snice-color-text-tertiary,rgb(115 115 115))}.player-track-info{flex:1;min-width:0}.player-track-title{font-size:var(--snice-font-size-lg, 1.125rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--snice-color-text,rgb(23 23 23));margin-bottom:var(--snice-spacing-3xs,.125rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-track-artist{font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text-secondary,rgb(82 82 82));margin-bottom:var(--snice-spacing-3xs,.125rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-track-album{font-size:var(--snice-font-size-xs, .75rem);color:var(--snice-color-text-tertiary,rgb(115 115 115));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-controls{margin-bottom:var(--snice-spacing-md,1rem);overflow:visible}.player-control-buttons{display:flex;align-items:center;justify-content:center;gap:var(--snice-spacing-sm,.75rem);margin-bottom:var(--snice-spacing-md,1rem)}.player-btn{background:0 0;border:none;cursor:pointer;padding:var(--snice-spacing-xs,.5rem);border-radius:var(--snice-border-radius-md,.25rem);color:var(--snice-color-text,rgb(23 23 23));display:inline-flex;align-items:center;justify-content:center;transition:background-color var(--snice-transition-fast, 150ms) ease}.player-btn:hover:not(:disabled){background:var(--snice-color-background-hover,rgb(241 241 241))}.player-btn:active:not(:disabled){background:var(--snice-color-background-active,rgb(226 226 226))}.player-btn:disabled{opacity:.5;cursor:not-allowed}.player-btn.active{color:var(--snice-color-primary,rgb(37 99 235))}.player-btn-play-pause{background:var(--snice-color-primary,rgb(37 99 235));color:var(--snice-color-text-inverse,rgb(250 250 250));padding:var(--snice-spacing-md,1rem);border-radius:var(--snice-border-radius-circle,50%)}.player-btn-play-pause:active:not(:disabled),.player-btn-play-pause:hover:not(:disabled){background:var(--snice-color-primary-hover,rgb(29 78 216))}.player-progress-container{display:flex;align-items:center;gap:var(--snice-spacing-sm,.75rem);position:relative}.player-time{font-size:var(--snice-font-size-xs, .75rem);font-variant-numeric:tabular-nums;color:var(--snice-color-text-secondary,rgb(82 82 82));min-width:2.5rem}.player-time-current{text-align:right}.player-progress{flex:1;height:.375rem;background:var(--snice-color-background-secondary,rgb(250 250 250));border-radius:var(--snice-border-radius-pill,9999px);cursor:pointer;position:relative;overflow:hidden}.player-progress:hover{background:var(--snice-color-background-tertiary,rgb(241 241 241))}.player-progress-bar{height:100%;background:var(--snice-color-primary,rgb(37 99 235));border-radius:var(--snice-border-radius-pill,9999px);transition:width .1s linear}.player-volume{display:flex;align-items:center;gap:var(--snice-spacing-xs,.5rem);margin-left:var(--snice-spacing-sm,.75rem)}.player-btn-volume{flex-shrink:0}.player-volume-slider-container{display:flex;align-items:center}.player-volume-slider{-webkit-appearance:none;appearance:none;width:5rem;height:.375rem;background:linear-gradient(to right,var(--snice-color-primary,rgb(37 99 235)) 0,var(--snice-color-primary,rgb(37 99 235)) var(--volume-percent,100%),var(--snice-color-background-secondary,rgb(250 250 250)) var(--volume-percent,100%),var(--snice-color-background-secondary,rgb(250 250 250)) 100%);border-radius:var(--snice-border-radius-pill,9999px);outline:0;cursor:pointer}.player-volume-slider::-webkit-slider-runnable-track{width:100%;height:.375rem;background:0 0;border-radius:var(--snice-border-radius-pill,9999px)}.player-volume-slider::-moz-range-track{width:100%;height:.375rem;background:var(--snice-color-background-secondary,rgb(250 250 250));border-radius:var(--snice-border-radius-pill,9999px)}.player-volume-slider::-moz-range-progress{height:.375rem;background:var(--snice-color-primary,rgb(37 99 235));border-radius:var(--snice-border-radius-pill,9999px)}.player-volume-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:.875rem;height:.875rem;background:var(--snice-color-primary,rgb(37 99 235));border-radius:var(--snice-border-radius-circle,50%);cursor:pointer;transition:transform var(--snice-transition-fast, 150ms) ease;margin-top:-.25rem}.player-volume-slider::-webkit-slider-thumb:hover{transform:scale(1.15)}.player-volume-slider::-moz-range-thumb{width:.875rem;height:.875rem;background:var(--snice-color-primary,rgb(37 99 235));border:none;border-radius:var(--snice-border-radius-circle,50%);cursor:pointer;transition:transform var(--snice-transition-fast, 150ms) ease}.player-volume-slider::-moz-range-thumb:hover{transform:scale(1.15)}.player-playlist{border-top:1px solid var(--snice-color-border,rgb(226 226 226));padding-top:var(--snice-spacing-md,1rem);margin-top:var(--snice-spacing-md,1rem)}.player-playlist-header{font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--snice-color-text,rgb(23 23 23));margin-bottom:var(--snice-spacing-sm,.75rem)}.player-playlist-items{display:flex;flex-direction:column;gap:var(--snice-spacing-2xs,.25rem);max-height:15rem;overflow-y:auto}.player-playlist-item{display:flex;align-items:center;gap:var(--snice-spacing-sm,.75rem);padding:var(--snice-spacing-sm,.75rem);border-radius:var(--snice-border-radius-md,.25rem);cursor:pointer;transition:background-color var(--snice-transition-fast, 150ms) ease}.player-playlist-item:hover{background:var(--snice-color-background-hover,rgb(241 241 241))}.player-playlist-item.active{background:var(--snice-color-primary-subtle,rgb(239 246 255))}.player-playlist-item.active .player-playlist-item-title{color:var(--snice-color-primary,rgb(37 99 235));font-weight:var(--snice-font-weight-medium,500)}.player-playlist-item-number{font-size:var(--snice-font-size-xs, .75rem);font-variant-numeric:tabular-nums;color:var(--snice-color-text-tertiary,rgb(115 115 115));width:1.5rem;text-align:center;flex-shrink:0}.player-playlist-item-artwork{width:2.5rem;height:2.5rem;border-radius:var(--snice-border-radius-sm,.125rem);object-fit:cover;flex-shrink:0}.player-playlist-item-info{flex:1;min-width:0}.player-playlist-item-title{font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text,rgb(23 23 23));margin-bottom:var(--snice-spacing-3xs,.125rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-playlist-item-artist{font-size:var(--snice-font-size-xs, .75rem);color:var(--snice-color-text-secondary,rgb(82 82 82));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-playlist-item-duration{font-size:var(--snice-font-size-xs, .75rem);font-variant-numeric:tabular-nums;color:var(--snice-color-text-tertiary,rgb(115 115 115));flex-shrink:0}.player-playlist-items::-webkit-scrollbar{width:.5rem}.player-playlist-items::-webkit-scrollbar-track{background:var(--snice-color-background-secondary,rgb(250 250 250));border-radius:var(--snice-border-radius-pill,9999px)}.player-playlist-items::-webkit-scrollbar-thumb{background:var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-pill,9999px)}.player-playlist-items::-webkit-scrollbar-thumb:hover{background:var(--snice-color-border-hover,rgb(204 204 204))}.player-container--compact{padding:var(--snice-spacing-sm,.75rem);display:flex;align-items:center;gap:var(--snice-spacing-md,1rem)}.player-container--compact .player-info{gap:var(--snice-spacing-sm,.75rem);margin-bottom:0;flex-shrink:0}.player-container--compact .player-artwork{width:3rem;height:3rem}.player-container--compact .player-track-title{font-size:var(--snice-font-size-sm, .875rem)}.player-container--compact .player-track-artist{font-size:var(--snice-font-size-xs, .75rem)}.player-container--compact .player-track-album{display:none}.player-container--compact .player-controls{flex:1;margin-bottom:0;display:flex;align-items:center;gap:var(--snice-spacing-sm,.75rem)}.player-container--compact .player-control-buttons{gap:var(--snice-spacing-xs,.5rem);margin-bottom:0}.player-container--compact .player-btn{padding:var(--snice-spacing-2xs,.25rem)}.player-container--compact .player-btn svg{width:1.25rem;height:1.25rem}.player-container--compact .player-btn-play-pause{padding:var(--snice-spacing-xs,.5rem)}.player-container--compact .player-btn-play-pause svg{width:1.5rem;height:1.5rem}.player-container--compact .player-progress-container{flex:1}.player-container--compact .player-time{font-size:var(--snice-font-size-2xs, .625rem);min-width:2rem}"}`}init(){this.audioElement=new Audio,this.audioElement.volume=this.volume,this.audioElement.muted=this.muted,this.audioElement.addEventListener("loadedmetadata",()=>{this.duration=this.audioElement.duration,this.state="loading"===this.state?"paused":this.state}),this.audioElement.addEventListener("play",()=>{this.state="playing",this.startUpdateInterval()}),this.audioElement.addEventListener("pause",()=>{this.audioElement.ended||(this.state="paused"),this.stopUpdateInterval()}),this.audioElement.addEventListener("ended",()=>{this.handleTrackEnded()}),this.audioElement.addEventListener("error",()=>{this.state="error",this.emitError(new Error("Failed to load track"))}),this.audioElement.addEventListener("timeupdate",()=>{this.currentTime=this.audioElement.currentTime}),this.tracks.length>0&&this.loadTrack(this.currentTrackIndex)}cleanup(){this.stop(),this.stopUpdateInterval(),this.audioElement&&(this.audioElement.pause(),this.audioElement.src="",this.audioElement=null)}handleTracksChange(){this.tracks.length>0&&this.currentTrackIndex>=this.tracks.length&&(this.currentTrackIndex=0),this.shuffle&&(this.shuffleQueue=[]),this.tracks.length>0&&this.audioElement&&!this.audioElement.src&&this.loadTrack(this.currentTrackIndex)}handleCurrentTrackChange(e,t){if(!t||t===e)return;const r=this.tracks.findIndex(e=>e.id===t);r>=0&&r!==this.currentTrackIndex&&this.loadTrack(r)}handleVolumeChange(e,t){this.audioElement&&t>=0&&t<=1&&(this.audioElement.volume=t),this.volumeSlider&&this.volumeSlider.style.setProperty("--volume-percent",100*t+"%")}handleMutedChange(e,t){this.audioElement&&(this.audioElement.muted=t)}renderPlayer(){const e=this.getCurrentTrack(),r=this.duration>0?this.currentTime/this.duration*100:0;return t.html`
7
+ void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be loaded before snice-music-player.min.js");var SniceMusicPlayer=function(e,t){"use strict";function r(e,t,r,a,i,s){function l(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var n,o=a.kind,c="getter"===o?"get":"setter"===o?"set":"value",h=!t&&e?a.static?e:e.prototype:null,d=t||(h?Object.getOwnPropertyDescriptor(h,a.name):{}),p=!1,m=r.length-1;m>=0;m--){var u={};for(var g in a)u[g]="access"===g?{}:a[g];for(var g in a.access)u.access[g]=a.access[g];u.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");s.push(l(e||null))};var v=(0,r[m])("accessor"===o?{get:d.get,set:d.set}:d[c],u);if("accessor"===o){if(void 0===v)continue;if(null===v||"object"!=typeof v)throw new TypeError("Object expected");(n=l(v.get))&&(d.get=n),(n=l(v.set))&&(d.set=n),(n=l(v.init))&&i.unshift(n)}else(n=l(v))&&("field"===o?i.unshift(n):d[c]=n)}h&&Object.defineProperty(h,a.name,d),p=!0}function a(e,t,r){for(var a=arguments.length>2,i=0;i<t.length;i++)r=a?t[i].call(e,r):t[i].call(e);return a?r:void 0}"function"==typeof SuppressedError&&SuppressedError;let i=(()=>{let e,i,s,l,n,o,c,h,d,p,m,u,g,v,y,f,b,k,w,x,T,E,S,C,$,I,z,V,M,P,B,j,H,L,R,U,A,Q,N,O=[t.element("snice-music-player")],F=[],q=HTMLElement,D=[],X=[],G=[],J=[],K=[],W=[],Y=[],Z=[],_=[],ee=[],te=[],re=[],ae=[],ie=[],se=[],le=[],ne=[],oe=[],ce=[],he=[],de=[],pe=[],me=[],ue=[],ge=[],ve=[],ye=[],fe=[],be=[],ke=[],we=[],xe=[],Te=[],Ee=[],Se=[],Ce=[],$e=[];return class extends q{static{i=this}static{const Ie="function"==typeof Symbol&&Symbol.metadata?Object.create(q[Symbol.metadata]??null):void 0;s=[t.property({type:Array})],l=[t.property({type:Number,attribute:"current-track-index"})],n=[t.property({type:String,attribute:"current-track"})],o=[t.property({type:Number})],c=[t.property({type:Boolean})],h=[t.property({type:Boolean})],d=[t.property({type:String})],p=[t.property({type:String})],m=[t.property({type:Boolean})],u=[t.property({type:Boolean,attribute:"show-playlist"})],g=[t.property({type:Boolean,attribute:"show-controls"})],v=[t.property({type:Boolean,attribute:"show-volume"})],y=[t.property({type:Boolean,attribute:"show-artwork"})],f=[t.property({type:Boolean,attribute:"show-track-info"})],b=[t.property({type:Boolean})],k=[t.property({type:Boolean,attribute:"show-volume-slider"})],w=[t.query(".player-progress")],x=[t.query(".player-volume-slider")],T=[t.styles()],E=[t.ready()],S=[t.dispose()],C=[t.watch("tracks")],$=[t.watch("currentTrack")],I=[t.watch("volume")],z=[t.watch("muted")],V=[t.render()],M=[t.dispatch("player-play",{bubbles:!0,composed:!0})],P=[t.dispatch("player-pause",{bubbles:!0,composed:!0})],B=[t.dispatch("player-stop",{bubbles:!0,composed:!0})],j=[t.dispatch("player-track-change",{bubbles:!0,composed:!0})],H=[t.dispatch("player-track-ended",{bubbles:!0,composed:!0})],L=[t.dispatch("player-seek",{bubbles:!0,composed:!0})],R=[t.dispatch("player-volume-change",{bubbles:!0,composed:!0})],U=[t.dispatch("player-shuffle-change",{bubbles:!0,composed:!0})],A=[t.dispatch("player-repeat-change",{bubbles:!0,composed:!0})],Q=[t.dispatch("player-time-update",{bubbles:!0,composed:!0})],N=[t.dispatch("player-error",{bubbles:!0,composed:!0})],r(this,null,T,{kind:"method",name:"componentStyles",static:!1,private:!1,access:{has:e=>"componentStyles"in e,get:e=>e.componentStyles},metadata:Ie},null,D),r(this,null,E,{kind:"method",name:"init",static:!1,private:!1,access:{has:e=>"init"in e,get:e=>e.init},metadata:Ie},null,D),r(this,null,S,{kind:"method",name:"cleanup",static:!1,private:!1,access:{has:e=>"cleanup"in e,get:e=>e.cleanup},metadata:Ie},null,D),r(this,null,C,{kind:"method",name:"handleTracksChange",static:!1,private:!1,access:{has:e=>"handleTracksChange"in e,get:e=>e.handleTracksChange},metadata:Ie},null,D),r(this,null,$,{kind:"method",name:"handleCurrentTrackChange",static:!1,private:!1,access:{has:e=>"handleCurrentTrackChange"in e,get:e=>e.handleCurrentTrackChange},metadata:Ie},null,D),r(this,null,I,{kind:"method",name:"handleVolumeChange",static:!1,private:!1,access:{has:e=>"handleVolumeChange"in e,get:e=>e.handleVolumeChange},metadata:Ie},null,D),r(this,null,z,{kind:"method",name:"handleMutedChange",static:!1,private:!1,access:{has:e=>"handleMutedChange"in e,get:e=>e.handleMutedChange},metadata:Ie},null,D),r(this,null,V,{kind:"method",name:"renderPlayer",static:!1,private:!1,access:{has:e=>"renderPlayer"in e,get:e=>e.renderPlayer},metadata:Ie},null,D),r(this,null,M,{kind:"method",name:"emitPlay",static:!1,private:!1,access:{has:e=>"emitPlay"in e,get:e=>e.emitPlay},metadata:Ie},null,D),r(this,null,P,{kind:"method",name:"emitPause",static:!1,private:!1,access:{has:e=>"emitPause"in e,get:e=>e.emitPause},metadata:Ie},null,D),r(this,null,B,{kind:"method",name:"emitStop",static:!1,private:!1,access:{has:e=>"emitStop"in e,get:e=>e.emitStop},metadata:Ie},null,D),r(this,null,j,{kind:"method",name:"emitTrackChange",static:!1,private:!1,access:{has:e=>"emitTrackChange"in e,get:e=>e.emitTrackChange},metadata:Ie},null,D),r(this,null,H,{kind:"method",name:"emitTrackEnded",static:!1,private:!1,access:{has:e=>"emitTrackEnded"in e,get:e=>e.emitTrackEnded},metadata:Ie},null,D),r(this,null,L,{kind:"method",name:"emitSeek",static:!1,private:!1,access:{has:e=>"emitSeek"in e,get:e=>e.emitSeek},metadata:Ie},null,D),r(this,null,R,{kind:"method",name:"emitVolumeChange",static:!1,private:!1,access:{has:e=>"emitVolumeChange"in e,get:e=>e.emitVolumeChange},metadata:Ie},null,D),r(this,null,U,{kind:"method",name:"emitShuffleChange",static:!1,private:!1,access:{has:e=>"emitShuffleChange"in e,get:e=>e.emitShuffleChange},metadata:Ie},null,D),r(this,null,A,{kind:"method",name:"emitRepeatChange",static:!1,private:!1,access:{has:e=>"emitRepeatChange"in e,get:e=>e.emitRepeatChange},metadata:Ie},null,D),r(this,null,Q,{kind:"method",name:"emitTimeUpdate",static:!1,private:!1,access:{has:e=>"emitTimeUpdate"in e,get:e=>e.emitTimeUpdate},metadata:Ie},null,D),r(this,null,N,{kind:"method",name:"emitError",static:!1,private:!1,access:{has:e=>"emitError"in e,get:e=>e.emitError},metadata:Ie},null,D),r(null,null,s,{kind:"field",name:"tracks",static:!1,private:!1,access:{has:e=>"tracks"in e,get:e=>e.tracks,set:(e,t)=>{e.tracks=t}},metadata:Ie},X,G),r(null,null,l,{kind:"field",name:"currentTrackIndex",static:!1,private:!1,access:{has:e=>"currentTrackIndex"in e,get:e=>e.currentTrackIndex,set:(e,t)=>{e.currentTrackIndex=t}},metadata:Ie},J,K),r(null,null,n,{kind:"field",name:"currentTrack",static:!1,private:!1,access:{has:e=>"currentTrack"in e,get:e=>e.currentTrack,set:(e,t)=>{e.currentTrack=t}},metadata:Ie},W,Y),r(null,null,o,{kind:"field",name:"volume",static:!1,private:!1,access:{has:e=>"volume"in e,get:e=>e.volume,set:(e,t)=>{e.volume=t}},metadata:Ie},Z,_),r(null,null,c,{kind:"field",name:"muted",static:!1,private:!1,access:{has:e=>"muted"in e,get:e=>e.muted,set:(e,t)=>{e.muted=t}},metadata:Ie},ee,te),r(null,null,h,{kind:"field",name:"shuffle",static:!1,private:!1,access:{has:e=>"shuffle"in e,get:e=>e.shuffle,set:(e,t)=>{e.shuffle=t}},metadata:Ie},re,ae),r(null,null,d,{kind:"field",name:"repeat",static:!1,private:!1,access:{has:e=>"repeat"in e,get:e=>e.repeat,set:(e,t)=>{e.repeat=t}},metadata:Ie},ie,se),r(null,null,p,{kind:"field",name:"state",static:!1,private:!1,access:{has:e=>"state"in e,get:e=>e.state,set:(e,t)=>{e.state=t}},metadata:Ie},le,ne),r(null,null,m,{kind:"field",name:"autoplay",static:!1,private:!1,access:{has:e=>"autoplay"in e,get:e=>e.autoplay,set:(e,t)=>{e.autoplay=t}},metadata:Ie},oe,ce),r(null,null,u,{kind:"field",name:"showPlaylist",static:!1,private:!1,access:{has:e=>"showPlaylist"in e,get:e=>e.showPlaylist,set:(e,t)=>{e.showPlaylist=t}},metadata:Ie},he,de),r(null,null,g,{kind:"field",name:"showControls",static:!1,private:!1,access:{has:e=>"showControls"in e,get:e=>e.showControls,set:(e,t)=>{e.showControls=t}},metadata:Ie},pe,me),r(null,null,v,{kind:"field",name:"showVolume",static:!1,private:!1,access:{has:e=>"showVolume"in e,get:e=>e.showVolume,set:(e,t)=>{e.showVolume=t}},metadata:Ie},ue,ge),r(null,null,y,{kind:"field",name:"showArtwork",static:!1,private:!1,access:{has:e=>"showArtwork"in e,get:e=>e.showArtwork,set:(e,t)=>{e.showArtwork=t}},metadata:Ie},ve,ye),r(null,null,f,{kind:"field",name:"showTrackInfo",static:!1,private:!1,access:{has:e=>"showTrackInfo"in e,get:e=>e.showTrackInfo,set:(e,t)=>{e.showTrackInfo=t}},metadata:Ie},fe,be),r(null,null,b,{kind:"field",name:"compact",static:!1,private:!1,access:{has:e=>"compact"in e,get:e=>e.compact,set:(e,t)=>{e.compact=t}},metadata:Ie},ke,we),r(null,null,k,{kind:"field",name:"showVolumeSlider",static:!1,private:!1,access:{has:e=>"showVolumeSlider"in e,get:e=>e.showVolumeSlider,set:(e,t)=>{e.showVolumeSlider=t}},metadata:Ie},xe,Te),r(null,null,w,{kind:"field",name:"progressElement",static:!1,private:!1,access:{has:e=>"progressElement"in e,get:e=>e.progressElement,set:(e,t)=>{e.progressElement=t}},metadata:Ie},Ee,Se),r(null,null,x,{kind:"field",name:"volumeSlider",static:!1,private:!1,access:{has:e=>"volumeSlider"in e,get:e=>e.volumeSlider,set:(e,t)=>{e.volumeSlider=t}},metadata:Ie},Ce,$e),r(null,e={value:i},O,{kind:"class",name:i.name,metadata:Ie},null,F),i=e.value,Ie&&Object.defineProperty(i,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:Ie}),a(i,F)}componentStyles(){return t.css`${":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);contain:layout style paint}.player-container{background:var(--snice-color-background,rgb(255 255 255));border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-lg,.5rem);padding:var(--snice-spacing-lg,1.5rem);box-shadow:var(--snice-shadow-md,0 4px 6px -1px rgb(0 0 0 / .1),0 2px 4px -2px rgb(0 0 0 / .1))}.player-info{display:flex;align-items:center;gap:var(--snice-spacing-md,1rem);margin-bottom:var(--snice-spacing-lg,1.5rem)}.player-artwork{flex-shrink:0;width:5rem;height:5rem;border-radius:var(--snice-border-radius-md,.25rem);overflow:hidden;background:var(--snice-color-background-secondary,rgb(250 250 250));display:flex;align-items:center;justify-content:center}.player-artwork img{width:100%;height:100%;object-fit:cover}.player-artwork-placeholder{color:var(--snice-color-text-tertiary,rgb(115 115 115))}.player-track-info{flex:1;min-width:0}.player-track-title{font-size:var(--snice-font-size-lg, 1.125rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--snice-color-text,rgb(23 23 23));margin-bottom:var(--snice-spacing-3xs,.125rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-track-artist{font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text-secondary,rgb(82 82 82));margin-bottom:var(--snice-spacing-3xs,.125rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-track-album{font-size:var(--snice-font-size-xs, .75rem);color:var(--snice-color-text-tertiary,rgb(115 115 115));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-controls{margin-bottom:var(--snice-spacing-md,1rem);overflow:visible}.player-control-buttons{display:flex;align-items:center;justify-content:center;gap:var(--snice-spacing-sm,.75rem);margin-bottom:var(--snice-spacing-md,1rem)}.player-btn{background:0 0;border:none;cursor:pointer;padding:var(--snice-spacing-xs,.5rem);border-radius:var(--snice-border-radius-md,.25rem);color:var(--snice-color-text,rgb(23 23 23));display:inline-flex;align-items:center;justify-content:center;transition:background-color var(--snice-transition-fast, 150ms) ease}.player-btn:hover:not(:disabled){background:var(--snice-color-background-hover,rgb(241 241 241))}.player-btn:active:not(:disabled){background:var(--snice-color-background-active,rgb(226 226 226))}.player-btn:disabled{opacity:.5;cursor:not-allowed}.player-btn.active{color:var(--snice-color-primary,rgb(37 99 235))}.player-btn-play-pause{background:var(--snice-color-primary,rgb(37 99 235));color:var(--snice-color-text-inverse,rgb(250 250 250));padding:var(--snice-spacing-md,1rem);border-radius:var(--snice-border-radius-circle,50%)}.player-btn-play-pause:active:not(:disabled),.player-btn-play-pause:hover:not(:disabled){background:var(--snice-color-primary-hover,rgb(29 78 216))}.player-progress-container{display:flex;align-items:center;gap:var(--snice-spacing-sm,.75rem);position:relative}.player-time{font-size:var(--snice-font-size-xs, .75rem);font-variant-numeric:tabular-nums;color:var(--snice-color-text-secondary,rgb(82 82 82));min-width:2.5rem}.player-time-current{text-align:right}.player-progress{flex:1;height:.375rem;background:var(--snice-color-background-secondary,rgb(250 250 250));border-radius:var(--snice-border-radius-pill,9999px);cursor:pointer;position:relative;overflow:hidden}.player-progress:hover{background:var(--snice-color-background-tertiary,rgb(241 241 241))}.player-progress-bar{height:100%;background:var(--snice-color-primary,rgb(37 99 235));border-radius:var(--snice-border-radius-pill,9999px);transition:width .1s linear}.player-volume{display:flex;align-items:center;gap:var(--snice-spacing-xs,.5rem);margin-left:var(--snice-spacing-sm,.75rem)}.player-btn-volume{flex-shrink:0}.player-volume-slider-container{display:flex;align-items:center}.player-volume-slider{-webkit-appearance:none;appearance:none;width:5rem;height:.375rem;background:linear-gradient(to right,var(--snice-color-primary,rgb(37 99 235)) 0,var(--snice-color-primary,rgb(37 99 235)) var(--volume-percent,100%),var(--snice-color-background-secondary,rgb(250 250 250)) var(--volume-percent,100%),var(--snice-color-background-secondary,rgb(250 250 250)) 100%);border-radius:var(--snice-border-radius-pill,9999px);outline:0;cursor:pointer}.player-volume-slider::-webkit-slider-runnable-track{width:100%;height:.375rem;background:0 0;border-radius:var(--snice-border-radius-pill,9999px)}.player-volume-slider::-moz-range-track{width:100%;height:.375rem;background:var(--snice-color-background-secondary,rgb(250 250 250));border-radius:var(--snice-border-radius-pill,9999px)}.player-volume-slider::-moz-range-progress{height:.375rem;background:var(--snice-color-primary,rgb(37 99 235));border-radius:var(--snice-border-radius-pill,9999px)}.player-volume-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:.875rem;height:.875rem;background:var(--snice-color-primary,rgb(37 99 235));border-radius:var(--snice-border-radius-circle,50%);cursor:pointer;transition:transform var(--snice-transition-fast, 150ms) ease;margin-top:-.25rem}.player-volume-slider::-webkit-slider-thumb:hover{transform:scale(1.15)}.player-volume-slider::-moz-range-thumb{width:.875rem;height:.875rem;background:var(--snice-color-primary,rgb(37 99 235));border:none;border-radius:var(--snice-border-radius-circle,50%);cursor:pointer;transition:transform var(--snice-transition-fast, 150ms) ease}.player-volume-slider::-moz-range-thumb:hover{transform:scale(1.15)}.player-playlist{border-top:1px solid var(--snice-color-border,rgb(226 226 226));padding-top:var(--snice-spacing-md,1rem);margin-top:var(--snice-spacing-md,1rem)}.player-playlist-header{font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--snice-color-text,rgb(23 23 23));margin-bottom:var(--snice-spacing-sm,.75rem)}.player-playlist-items{display:flex;flex-direction:column;gap:var(--snice-spacing-2xs,.25rem);max-height:15rem;overflow-y:auto}.player-playlist-item{display:flex;align-items:center;gap:var(--snice-spacing-sm,.75rem);padding:var(--snice-spacing-sm,.75rem);border-radius:var(--snice-border-radius-md,.25rem);cursor:pointer;transition:background-color var(--snice-transition-fast, 150ms) ease}.player-playlist-item:hover{background:var(--snice-color-background-hover,rgb(241 241 241))}.player-playlist-item.active{background:var(--snice-color-primary-subtle,rgb(239 246 255))}.player-playlist-item.active .player-playlist-item-title{color:var(--snice-color-primary,rgb(37 99 235));font-weight:var(--snice-font-weight-medium,500)}.player-playlist-item-number{font-size:var(--snice-font-size-xs, .75rem);font-variant-numeric:tabular-nums;color:var(--snice-color-text-tertiary,rgb(115 115 115));width:1.5rem;text-align:center;flex-shrink:0}.player-playlist-item-artwork{width:2.5rem;height:2.5rem;border-radius:var(--snice-border-radius-sm,.125rem);object-fit:cover;flex-shrink:0}.player-playlist-item-info{flex:1;min-width:0}.player-playlist-item-title{font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text,rgb(23 23 23));margin-bottom:var(--snice-spacing-3xs,.125rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-playlist-item-artist{font-size:var(--snice-font-size-xs, .75rem);color:var(--snice-color-text-secondary,rgb(82 82 82));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-playlist-item-duration{font-size:var(--snice-font-size-xs, .75rem);font-variant-numeric:tabular-nums;color:var(--snice-color-text-tertiary,rgb(115 115 115));flex-shrink:0}.player-playlist-items::-webkit-scrollbar{width:.5rem}.player-playlist-items::-webkit-scrollbar-track{background:var(--snice-color-background-secondary,rgb(250 250 250));border-radius:var(--snice-border-radius-pill,9999px)}.player-playlist-items::-webkit-scrollbar-thumb{background:var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-pill,9999px)}.player-playlist-items::-webkit-scrollbar-thumb:hover{background:var(--snice-color-border-hover,rgb(204 204 204))}.player-container--compact{padding:var(--snice-spacing-sm,.75rem);display:flex;align-items:center;gap:var(--snice-spacing-md,1rem)}.player-container--compact .player-info{gap:var(--snice-spacing-sm,.75rem);margin-bottom:0;flex-shrink:0}.player-container--compact .player-artwork{width:3rem;height:3rem}.player-container--compact .player-track-title{font-size:var(--snice-font-size-sm, .875rem)}.player-container--compact .player-track-artist{font-size:var(--snice-font-size-xs, .75rem)}.player-container--compact .player-track-album{display:none}.player-container--compact .player-controls{flex:1;margin-bottom:0;display:flex;align-items:center;gap:var(--snice-spacing-sm,.75rem)}.player-container--compact .player-control-buttons{gap:var(--snice-spacing-xs,.5rem);margin-bottom:0}.player-container--compact .player-btn{padding:var(--snice-spacing-2xs,.25rem)}.player-container--compact .player-btn svg{width:1.25rem;height:1.25rem}.player-container--compact .player-btn-play-pause{padding:var(--snice-spacing-xs,.5rem)}.player-container--compact .player-btn-play-pause svg{width:1.5rem;height:1.5rem}.player-container--compact .player-progress-container{flex:1}.player-container--compact .player-time{font-size:var(--snice-font-size-2xs, .625rem);min-width:2rem}"}`}init(){this.audioElement=new Audio,this.audioElement.volume=this.volume,this.audioElement.muted=this.muted,this.audioElement.addEventListener("loadedmetadata",()=>{this.duration=this.audioElement.duration,this.state="loading"===this.state?"paused":this.state}),this.audioElement.addEventListener("play",()=>{this.state="playing",this.startUpdateInterval()}),this.audioElement.addEventListener("pause",()=>{this.audioElement.ended||(this.state="paused"),this.stopUpdateInterval()}),this.audioElement.addEventListener("ended",()=>{this.handleTrackEnded()}),this.audioElement.addEventListener("error",()=>{this.state="error",this.emitError(new Error("Failed to load track"))}),this.audioElement.addEventListener("timeupdate",()=>{this.currentTime=this.audioElement.currentTime,this.emitTimeUpdate()}),this.tracks.length>0&&this.loadTrack(this.currentTrackIndex)}cleanup(){this.stop(),this.stopUpdateInterval(),this.audioElement&&(this.audioElement.pause(),this.audioElement.src="",this.audioElement=null)}handleTracksChange(){this.tracks.length>0&&this.currentTrackIndex>=this.tracks.length&&(this.currentTrackIndex=0),this.shuffle&&(this.shuffleQueue=[]),this.tracks.length>0&&this.audioElement&&!this.audioElement.src&&this.loadTrack(this.currentTrackIndex)}handleCurrentTrackChange(e,t){if(!t||t===e)return;const r=this.tracks.findIndex(e=>e.id===t);r>=0&&r!==this.currentTrackIndex&&this.loadTrack(r)}handleVolumeChange(e,t){this.audioElement&&t>=0&&t<=1&&(this.audioElement.volume=t),this.volumeSlider&&this.volumeSlider.style.setProperty("--volume-percent",100*t+"%")}handleMutedChange(e,t){this.audioElement&&(this.audioElement.muted=t)}renderPlayer(){const e=this.getCurrentTrack(),r=this.duration>0?this.currentTime/this.duration*100:0;return t.html`
8
8
  <div class="player-container ${this.compact?"player-container--compact":""}">
9
9
  <if ${this.showArtwork||this.showTrackInfo}>
10
10
  <div class="player-info">
@@ -199,5 +199,5 @@ void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be lo
199
199
  </div>
200
200
  </if>
201
201
  </div>
202
- `}async play(){if(this.audioElement&&0!==this.tracks.length)try{await this.audioElement.play(),this.emitPlay()}catch(e){this.state="error",this.emitError(e)}}pause(){this.audioElement&&(this.audioElement.pause(),this.emitPause())}stop(){this.audioElement&&(this.audioElement.pause(),this.audioElement.currentTime=0,this.currentTime=0,this.state="stopped",this.emitStop())}next(){if(0===this.tracks.length)return;let e;this.shuffle?e=this.getNextShuffleIndex():(e=this.currentTrackIndex+1,e>=this.tracks.length&&(e=0)),this.loadTrack(e),"playing"===this.state&&this.play()}previous(){if(0===this.tracks.length)return;if(this.currentTime>3)return void this.seek(0);let e;this.shuffle&&this.shuffleHistory.length>0?e=this.shuffleHistory.pop():(e=this.currentTrackIndex-1,e<0&&(e=this.tracks.length-1)),this.loadTrack(e),"playing"===this.state&&this.play()}seek(e){this.audioElement&&(this.audioElement.currentTime=e,this.currentTime=e,this.emitSeek(e))}setVolume(e){if(e<0||e>1)throw new Error("Volume must be between 0 and 1");this.volume=e,this.volume>0&&this.muted&&(this.muted=!1),this.emitVolumeChange(e)}toggleShuffle(){this.shuffle=!this.shuffle,this.shuffle?this.initializeShuffleQueue():(this.shuffleHistory=[],this.shuffleQueue=[]),this.emitShuffleChange(this.shuffle)}setRepeat(e){this.repeat=e,this.emitRepeatChange(e)}async loadTrack(e){if(e<0||e>=this.tracks.length)throw new Error("Invalid track index");const t="playing"===this.state;this.state="loading",this.currentTrackIndex=e;const r=this.tracks[e];this.currentTrack=r.id,this.audioElement&&(this.audioElement.src=r.src,this.audioElement.load(),this.currentTime=0,(t||this.autoplay)&&await this.play()),this.emitTrackChange(r)}getCurrentTrack(){return this.currentTrackIndex>=0&&this.currentTrackIndex<this.tracks.length?this.tracks[this.currentTrackIndex]:null}toggleMute(){this.muted=!this.muted}toggleVolumeSlider(){this.showVolumeSlider=!this.showVolumeSlider}cycleRepeat(){const e=["off","all","one"],t=(e.indexOf(this.repeat)+1)%e.length;this.setRepeat(e[t])}handleSeek(e){if(!this.progressElement||0===this.duration)return;const t=this.progressElement.getBoundingClientRect(),r=(e.clientX-t.left)/t.width*this.duration;this.seek(r)}handleVolumeSlider(e){const t=e.target,r=parseFloat(t.value);t.style.setProperty("--volume-percent",100*r+"%"),this.setVolume(r)}handleTrackEnded(){"one"===this.repeat?(this.seek(0),this.play()):"all"===this.repeat||this.currentTrackIndex<this.tracks.length-1?(this.next(),this.play()):(this.state="stopped",this.currentTime=0),this.emitTrackEnded()}getNextShuffleIndex(){return 1===this.tracks.length?0:(0===this.shuffleQueue.length&&this.initializeShuffleQueue(),this.shuffleHistory.push(this.currentTrackIndex),this.shuffleQueue.shift())}initializeShuffleQueue(){const e=[];for(let t=0;t<this.tracks.length;t++)t!==this.currentTrackIndex&&e.push(t);for(let t=e.length-1;t>0;t--){const r=Math.floor(Math.random()*(t+1));[e[t],e[r]]=[e[r],e[t]]}this.shuffleQueue=e}startUpdateInterval(){this.updateInterval=window.setInterval(()=>{},100)}stopUpdateInterval(){null!==this.updateInterval&&(clearInterval(this.updateInterval),this.updateInterval=null)}formatTime(e){if(isNaN(e)||e===1/0)return"0:00";return`${Math.floor(e/60)}:${Math.floor(e%60).toString().padStart(2,"0")}`}emitPlay(){return{player:this,track:this.getCurrentTrack()}}emitPause(){return{player:this,track:this.getCurrentTrack()}}emitStop(){return{player:this}}emitTrackChange(e){return{player:this,track:e}}emitTrackEnded(){return{player:this,track:this.getCurrentTrack()}}emitSeek(e){return{player:this,time:e}}emitVolumeChange(e){return{player:this,volume:e}}emitShuffleChange(e){return{player:this,shuffle:e}}emitRepeatChange(e){return{player:this,repeat:e}}emitError(e){return{player:this,error:e}}constructor(){super(...arguments),this.tracks=(a(this,q),a(this,D,[])),this.currentTrackIndex=(a(this,X),a(this,G,0)),this.currentTrack=(a(this,J),a(this,K,"")),this.currentTime=(a(this,W),0),this.duration=0,this.volume=a(this,Y,1),this.muted=(a(this,Z),a(this,_,!1)),this.shuffle=(a(this,ee),a(this,te,!1)),this.repeat=(a(this,re),a(this,ae,"off")),this.state=(a(this,ie),a(this,se,"stopped")),this.autoplay=(a(this,le),a(this,ne,!1)),this.showPlaylist=(a(this,oe),a(this,ce,!0)),this.showControls=(a(this,he),a(this,de,!0)),this.showVolume=(a(this,pe),a(this,ue,!0)),this.showArtwork=(a(this,me),a(this,ge,!0)),this.showTrackInfo=(a(this,ve),a(this,ye,!0)),this.compact=(a(this,fe),a(this,be,!1)),this.showVolumeSlider=(a(this,ke),a(this,we,!1)),this.audioElement=(a(this,xe),null),this.updateInterval=null,this.shuffleHistory=[],this.shuffleQueue=[],this.progressElement=a(this,Te,void 0),this.volumeSlider=(a(this,Ee),a(this,Se,void 0)),a(this,Ce)}},i})();return e.SniceMusicPlayer=i,e}({},Snice);
202
+ `}async play(){if(this.audioElement&&0!==this.tracks.length)try{await this.audioElement.play(),this.emitPlay()}catch(e){this.state="error",this.emitError(e)}}pause(){this.audioElement&&(this.audioElement.pause(),this.emitPause())}stop(){this.audioElement&&(this.audioElement.pause(),this.audioElement.currentTime=0,this.currentTime=0,this.state="stopped",this.emitStop())}next(){if(0===this.tracks.length)return;let e;this.shuffle?e=this.getNextShuffleIndex():(e=this.currentTrackIndex+1,e>=this.tracks.length&&(e=0)),this.loadTrack(e),"playing"===this.state&&this.play()}previous(){if(0===this.tracks.length)return;if(this.currentTime>3)return void this.seek(0);let e;this.shuffle&&this.shuffleHistory.length>0?e=this.shuffleHistory.pop():(e=this.currentTrackIndex-1,e<0&&(e=this.tracks.length-1)),this.loadTrack(e),"playing"===this.state&&this.play()}seek(e){this.audioElement&&(this.audioElement.currentTime=e,this.currentTime=e,this.emitSeek(e))}setVolume(e){if(e<0||e>1)throw new Error("Volume must be between 0 and 1");this.volume=e,this.volume>0&&this.muted&&(this.muted=!1),this.emitVolumeChange(e)}toggleShuffle(){this.shuffle=!this.shuffle,this.shuffle?this.initializeShuffleQueue():(this.shuffleHistory=[],this.shuffleQueue=[]),this.emitShuffleChange(this.shuffle)}setRepeat(e){this.repeat=e,this.emitRepeatChange(e)}async loadTrack(e){if(e<0||e>=this.tracks.length)throw new Error("Invalid track index");const t="playing"===this.state;this.state="loading",this.currentTrackIndex=e;const r=this.tracks[e];this.currentTrack=r.id,this.audioElement&&(this.audioElement.src=r.src,this.audioElement.load(),this.currentTime=0,(t||this.autoplay)&&await this.play()),this.emitTrackChange(r)}getCurrentTrack(){return this.currentTrackIndex>=0&&this.currentTrackIndex<this.tracks.length?this.tracks[this.currentTrackIndex]:null}toggleMute(){this.muted=!this.muted}toggleVolumeSlider(){this.showVolumeSlider=!this.showVolumeSlider}cycleRepeat(){const e=["off","all","one"],t=(e.indexOf(this.repeat)+1)%e.length;this.setRepeat(e[t])}handleSeek(e){if(!this.progressElement||0===this.duration)return;const t=this.progressElement.getBoundingClientRect(),r=(e.clientX-t.left)/t.width*this.duration;this.seek(r)}handleVolumeSlider(e){const t=e.target,r=parseFloat(t.value);t.style.setProperty("--volume-percent",100*r+"%"),this.setVolume(r)}handleTrackEnded(){"one"===this.repeat?(this.seek(0),this.play()):"all"===this.repeat||this.currentTrackIndex<this.tracks.length-1?(this.next(),this.play()):(this.state="stopped",this.currentTime=0),this.emitTrackEnded()}getNextShuffleIndex(){return 1===this.tracks.length?0:(0===this.shuffleQueue.length&&this.initializeShuffleQueue(),this.shuffleHistory.push(this.currentTrackIndex),this.shuffleQueue.shift())}initializeShuffleQueue(){const e=[];for(let t=0;t<this.tracks.length;t++)t!==this.currentTrackIndex&&e.push(t);for(let t=e.length-1;t>0;t--){const r=Math.floor(Math.random()*(t+1));[e[t],e[r]]=[e[r],e[t]]}this.shuffleQueue=e}startUpdateInterval(){this.updateInterval=window.setInterval(()=>{},100)}stopUpdateInterval(){null!==this.updateInterval&&(clearInterval(this.updateInterval),this.updateInterval=null)}formatTime(e){if(isNaN(e)||e===1/0)return"0:00";return`${Math.floor(e/60)}:${Math.floor(e%60).toString().padStart(2,"0")}`}emitPlay(){return{player:this,track:this.getCurrentTrack()}}emitPause(){return{player:this,track:this.getCurrentTrack()}}emitStop(){return{player:this}}emitTrackChange(e){return{player:this,track:e}}emitTrackEnded(){return{player:this,track:this.getCurrentTrack()}}emitSeek(e){return{player:this,time:e}}emitVolumeChange(e){return{player:this,volume:e}}emitShuffleChange(e){return{player:this,shuffle:e}}emitRepeatChange(e){return{player:this,repeat:e}}emitTimeUpdate(){return{player:this,currentTime:this.currentTime,duration:this.duration}}emitError(e){return{player:this,error:e}}constructor(){super(...arguments),this.tracks=(a(this,D),a(this,X,[])),this.currentTrackIndex=(a(this,G),a(this,J,0)),this.currentTrack=(a(this,K),a(this,W,"")),this.currentTime=(a(this,Y),0),this.duration=0,this.volume=a(this,Z,1),this.muted=(a(this,_),a(this,ee,!1)),this.shuffle=(a(this,te),a(this,re,!1)),this.repeat=(a(this,ae),a(this,ie,"off")),this.state=(a(this,se),a(this,le,"stopped")),this.autoplay=(a(this,ne),a(this,oe,!1)),this.showPlaylist=(a(this,ce),a(this,he,!0)),this.showControls=(a(this,de),a(this,pe,!0)),this.showVolume=(a(this,me),a(this,ue,!0)),this.showArtwork=(a(this,ge),a(this,ve,!0)),this.showTrackInfo=(a(this,ye),a(this,fe,!0)),this.compact=(a(this,be),a(this,ke,!1)),this.showVolumeSlider=(a(this,we),a(this,xe,!1)),this.audioElement=(a(this,Te),null),this.updateInterval=null,this.shuffleHistory=[],this.shuffleQueue=[],this.progressElement=a(this,Ee,void 0),this.volumeSlider=(a(this,Se),a(this,Ce,void 0)),a(this,$e)}},i})();return e.SniceMusicPlayer=i,e}({},Snice);
203
203
  //# sourceMappingURL=snice-music-player.min.js.map