@ozdao/martyrs 0.2.492 → 0.2.494

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 (341) hide show
  1. package/dist/_virtual/index.cjs +4 -4
  2. package/dist/_virtual/index.js +4 -4
  3. package/dist/_virtual/index2.cjs +4 -4
  4. package/dist/_virtual/index2.js +4 -4
  5. package/dist/builder.cjs +53 -90
  6. package/dist/builder.js +54 -91
  7. package/dist/{crud-B-kQw3Z5.cjs → crud-JN_LFj01.cjs} +3 -0
  8. package/dist/{crud-Cwx5VlSm.js → crud-sE7GLPbj.js} +3 -0
  9. package/dist/globals.server.cjs +322 -3
  10. package/dist/globals.server.js +303 -1
  11. package/dist/{globals.verifier-D68mHEBl.cjs → globals.verifier-C0zj_LLo.cjs} +8 -1
  12. package/dist/{globals.verifier-CWFz5Gh2.js → globals.verifier-DFqKQ7hK.js} +8 -1
  13. package/dist/inventory.server.cjs +2 -2
  14. package/dist/inventory.server.js +2 -2
  15. package/dist/{main-SZQ1QjeP.js → main-CJm5myDI.js} +631 -607
  16. package/dist/{main-MzmGbSxs.cjs → main-DTaE01lg.cjs} +6 -6
  17. package/dist/martyrs/src/components/Calendar/Calendar.vue2.cjs +1 -1
  18. package/dist/martyrs/src/components/Calendar/Calendar.vue2.cjs.map +1 -1
  19. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js +1 -1
  20. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js.map +1 -1
  21. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +33 -7
  22. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  23. package/dist/martyrs/src/components/Feed/Feed.vue.js +33 -7
  24. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  25. package/dist/martyrs/src/components/Field/{Field.vue2.cjs → Field.vue.cjs} +2 -2
  26. package/dist/martyrs/src/components/Field/{Field.vue2.js.map → Field.vue.cjs.map} +1 -1
  27. package/dist/martyrs/src/components/Field/{Field.vue2.js → Field.vue.js} +2 -2
  28. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -0
  29. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +1 -1
  30. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
  31. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +1 -1
  32. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +1 -1
  33. package/dist/martyrs/src/components/Menu/{Menu.vue.cjs → Menu.vue2.cjs} +2 -2
  34. package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +1 -0
  35. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  36. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  37. package/dist/martyrs/src/components/Menu/MenuItem.vue.js +2 -2
  38. package/dist/martyrs/src/components/Menu/MenuItem.vue.js.map +1 -1
  39. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +4 -4
  40. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs +1 -1
  41. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  42. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  43. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  45. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  46. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
  47. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
  48. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +1 -1
  49. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
  50. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  51. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  52. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  53. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  54. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  55. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  56. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
  57. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  58. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +2 -2
  59. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +2 -2
  60. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.cjs +1 -1
  61. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
  62. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.cjs +1 -1
  63. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  64. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
  65. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  66. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  67. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  68. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +1 -1
  69. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
  70. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
  71. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
  72. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
  73. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +1 -1
  74. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.cjs +1 -1
  75. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.js +1 -1
  76. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +5 -1
  77. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
  78. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +5 -1
  79. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
  80. package/dist/martyrs/src/modules/icons/entities/IconTime.vue.cjs +2 -2
  81. package/dist/martyrs/src/modules/icons/entities/IconTime.vue.js +2 -2
  82. package/dist/martyrs/src/modules/icons/navigation/IconChevronLeft.vue.cjs +2 -2
  83. package/dist/martyrs/src/modules/icons/navigation/IconChevronLeft.vue.js +2 -2
  84. package/dist/martyrs/src/modules/icons/navigation/IconChevronRight.vue.cjs +2 -2
  85. package/dist/martyrs/src/modules/icons/navigation/IconChevronRight.vue.js +2 -2
  86. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +6 -6
  87. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
  88. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +1 -1
  89. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +1 -1
  90. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +1 -1
  91. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
  92. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +1 -1
  93. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +1 -1
  94. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
  95. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.cjs +22 -15
  96. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.cjs.map +1 -1
  97. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +23 -16
  98. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
  99. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.cjs +2 -2
  100. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.cjs.map +1 -1
  101. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js +2 -2
  102. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js.map +1 -1
  103. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.cjs +31 -13
  104. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.cjs.map +1 -1
  105. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +33 -15
  106. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js.map +1 -1
  107. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs +39 -22
  108. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs.map +1 -1
  109. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +39 -22
  110. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js.map +1 -1
  111. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +1 -1
  112. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +1 -1
  113. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +1 -1
  114. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
  115. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +385 -125
  116. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs.map +1 -1
  117. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +391 -131
  118. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js.map +1 -1
  119. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs +24 -7
  120. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs.map +1 -1
  121. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +25 -8
  122. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +99 -87
  124. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs.map +1 -1
  125. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +111 -99
  126. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js.map +1 -1
  127. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.cjs +21 -0
  128. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.cjs.map +1 -0
  129. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js +21 -0
  130. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js.map +1 -0
  131. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +442 -210
  132. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs.map +1 -1
  133. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +445 -213
  134. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  135. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +92 -117
  136. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs.map +1 -1
  137. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +93 -118
  138. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
  139. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.cjs +72 -113
  140. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.cjs.map +1 -1
  141. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +78 -119
  142. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
  143. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +15 -12
  144. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs.map +1 -1
  145. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +15 -12
  146. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js.map +1 -1
  147. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +558 -429
  148. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs.map +1 -1
  149. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +560 -431
  150. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs +146 -284
  152. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs.map +1 -1
  153. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +149 -287
  154. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js.map +1 -1
  155. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +460 -63
  156. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs.map +1 -1
  157. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +462 -65
  158. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  159. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.cjs +126 -136
  160. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.cjs.map +1 -1
  161. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +129 -139
  162. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js.map +1 -1
  163. package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.cjs +18 -15
  164. package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.cjs.map +1 -1
  165. package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.js +18 -15
  166. package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.js.map +1 -1
  167. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.cjs +28 -23
  168. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.cjs.map +1 -1
  169. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +29 -24
  170. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js.map +1 -1
  171. package/dist/martyrs/src/modules/music/music.client.cjs +3 -6
  172. package/dist/martyrs/src/modules/music/music.client.cjs.map +1 -1
  173. package/dist/martyrs/src/modules/music/music.client.js +9 -12
  174. package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
  175. package/dist/martyrs/src/modules/music/router/music.cjs +27 -1
  176. package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -1
  177. package/dist/martyrs/src/modules/music/router/music.js +27 -1
  178. package/dist/martyrs/src/modules/music/router/music.js.map +1 -1
  179. package/dist/martyrs/src/modules/music/store/artists.cjs +6 -4
  180. package/dist/martyrs/src/modules/music/store/artists.cjs.map +1 -1
  181. package/dist/martyrs/src/modules/music/store/artists.js +6 -4
  182. package/dist/martyrs/src/modules/music/store/artists.js.map +1 -1
  183. package/dist/martyrs/src/modules/music/store/player.cjs +5 -0
  184. package/dist/martyrs/src/modules/music/store/player.cjs.map +1 -1
  185. package/dist/martyrs/src/modules/music/store/player.js +5 -0
  186. package/dist/martyrs/src/modules/music/store/player.js.map +1 -1
  187. package/dist/martyrs/src/modules/music/store/tracks.cjs +22 -0
  188. package/dist/martyrs/src/modules/music/store/tracks.cjs.map +1 -1
  189. package/dist/martyrs/src/modules/music/store/tracks.js +22 -0
  190. package/dist/martyrs/src/modules/music/store/tracks.js.map +1 -1
  191. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +2 -2
  192. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
  193. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -1
  194. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
  195. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +1 -1
  196. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js +1 -1
  197. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs +1 -1
  198. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.js +1 -1
  199. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -1
  200. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
  201. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +2 -2
  202. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
  203. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +1 -1
  204. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
  205. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
  206. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +1 -1
  207. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  208. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
  209. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  210. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
  211. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
  212. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  213. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  214. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  215. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  216. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
  217. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  218. package/dist/martyrs/src/modules/organizations/router/organizations.cjs +1 -1
  219. package/dist/martyrs/src/modules/organizations/router/organizations.js +1 -1
  220. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  221. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  222. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  223. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  224. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +1 -1
  225. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
  226. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
  227. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
  228. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +1 -1
  229. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  230. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
  231. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
  232. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +1 -1
  233. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
  234. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.cjs +4 -3
  235. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.cjs.map +1 -1
  236. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js +4 -3
  237. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js.map +1 -1
  238. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.cjs +37 -70
  239. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.cjs.map +1 -1
  240. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js +38 -71
  241. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js.map +1 -1
  242. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +2 -1
  243. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs.map +1 -1
  244. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +6 -5
  245. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js.map +1 -1
  246. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +45 -52
  247. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs.map +1 -1
  248. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +46 -53
  249. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js.map +1 -1
  250. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +1 -1
  251. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
  252. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +1 -1
  253. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  254. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
  255. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  256. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +1 -1
  257. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
  258. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
  259. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
  260. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.cjs +1 -1
  261. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  262. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +1 -1
  263. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
  264. package/dist/martyrs.cjs.js +1 -1
  265. package/dist/martyrs.css +1 -1
  266. package/dist/martyrs.es.js +1 -1
  267. package/dist/music.server.cjs +124 -31
  268. package/dist/music.server.js +124 -31
  269. package/dist/organizations.server.cjs +1 -1
  270. package/dist/organizations.server.js +1 -1
  271. package/dist/products.server.cjs +2 -2
  272. package/dist/products.server.js +2 -2
  273. package/dist/rents.server.cjs +3 -3
  274. package/dist/rents.server.js +3 -3
  275. package/dist/style.css +373 -80
  276. package/dist/{web-D7lZjuC0.js → web-Dkk0_7TA.js} +1 -1
  277. package/dist/{web-D-YZ9KHz.cjs → web-stVkXd0l.cjs} +1 -1
  278. package/package.json +1 -1
  279. package/src/builder/modes/ssr.prod.js +21 -5
  280. package/src/builder/rspack/rspack.config.spa.client.js +0 -44
  281. package/src/builder/rspack/rspack.config.ssr.client.js +40 -40
  282. package/src/components/Calendar/Calendar.vue +378 -377
  283. package/src/components/Feed/Feed.vue +28 -2
  284. package/src/modules/globals/controllers/classes/crud/crud.policies.js +5 -0
  285. package/src/modules/globals/controllers/classes/globals.validator.js +8 -1
  286. package/src/modules/globals/views/components/layouts/Client.vue +7 -0
  287. package/src/modules/music/README.md +8 -0
  288. package/src/modules/music/components/SidebarMusic.vue +6 -9
  289. package/src/modules/music/components/cards/AlbumCard.vue +20 -14
  290. package/src/modules/music/components/cards/ArtistCard.vue +1 -1
  291. package/src/modules/music/components/cards/PlaylistCard.vue +31 -11
  292. package/src/modules/music/components/cards/TrackListCard.vue +24 -13
  293. package/src/modules/music/components/forms/PlaylistForm.vue +417 -107
  294. package/src/modules/music/components/forms/SearchForm.vue +31 -8
  295. package/src/modules/music/components/forms/TrackForm.vue +50 -32
  296. package/src/modules/music/components/layouts/MusicBottomPlayer.vue +17 -0
  297. package/src/modules/music/components/pages/Album.vue +373 -186
  298. package/src/modules/music/components/pages/Artist.vue +54 -94
  299. package/src/modules/music/components/pages/MusicHome.vue +59 -56
  300. package/src/modules/music/components/pages/MusicLibrary.vue +13 -11
  301. package/src/modules/music/components/pages/Playlist.vue +495 -379
  302. package/src/modules/music/components/pages/SearchResults.vue +185 -313
  303. package/src/modules/music/components/pages/Track.vue +363 -69
  304. package/src/modules/music/components/player/MusicPlayer.vue +368 -97
  305. package/src/modules/music/components/player/TrackProgress.vue +76 -22
  306. package/src/modules/music/components/player/VolumeControl.vue +61 -28
  307. package/src/modules/music/controllers/search.controller.js +3 -0
  308. package/src/modules/music/controllers/stream.controller.js +11 -3
  309. package/src/modules/music/middlewares/playlists.verifier.js +1 -1
  310. package/src/modules/music/music.client.js +3 -6
  311. package/src/modules/music/music.server.js +8 -4
  312. package/src/modules/music/router/music.js +8 -1
  313. package/src/modules/music/routes/albums.routes.js +37 -5
  314. package/src/modules/music/routes/artists.routes.js +14 -4
  315. package/src/modules/music/routes/genres.routes.js +5 -1
  316. package/src/modules/music/routes/playlists.routes.js +42 -9
  317. package/src/modules/music/routes/tracks.routes.js +27 -2
  318. package/src/modules/music/store/artists.js +6 -2
  319. package/src/modules/music/store/player.js +6 -0
  320. package/src/modules/music/store/tracks.js +31 -0
  321. package/src/modules/music/websocket/streaming.handler.js +7 -1
  322. package/src/modules/rents/controllers/services/rents.services.js +2 -2
  323. package/src/modules/rents/views/components/pages/Gant/GanttBar.vue +4 -3
  324. package/src/modules/rents/views/components/pages/Gant/GanttChart.vue +42 -40
  325. package/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue +3 -1
  326. package/src/modules/rents/views/components/pages/Rents.vue +60 -56
  327. package/dist/globals.websocket-DzvdIBf6.js +0 -306
  328. package/dist/globals.websocket-k6_B1T7k.cjs +0 -322
  329. package/dist/martyrs/src/components/Field/Field.vue2.cjs.map +0 -1
  330. package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +0 -1
  331. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  332. package/dist/martyrs/src/modules/music/components/cards/TrackCard.vue.cjs +0 -69
  333. package/dist/martyrs/src/modules/music/components/cards/TrackCard.vue.cjs.map +0 -1
  334. package/dist/martyrs/src/modules/music/components/cards/TrackCard.vue.js +0 -69
  335. package/dist/martyrs/src/modules/music/components/cards/TrackCard.vue.js.map +0 -1
  336. package/dist/martyrs/src/modules/music/components/layouts/MusicLayout.vue.cjs +0 -104
  337. package/dist/martyrs/src/modules/music/components/layouts/MusicLayout.vue.cjs.map +0 -1
  338. package/dist/martyrs/src/modules/music/components/layouts/MusicLayout.vue.js +0 -104
  339. package/dist/martyrs/src/modules/music/components/layouts/MusicLayout.vue.js.map +0 -1
  340. package/src/modules/music/components/cards/TrackCard.vue +0 -86
  341. package/src/modules/music/components/layouts/MusicLayout.vue +0 -83
@@ -1 +1 @@
1
- {"version":3,"file":"VolumeControl.vue.cjs","sources":["../../../../../../../src/modules/music/components/player/VolumeControl.vue"],"sourcesContent":["<!-- components/player/VolumeControl.vue -->\n<template>\n <div \n ref=\"volumeBarContainer\"\n class=\"volume-bar-container w-100 h-thin bg-grey-transp-50 radius-extra pos-relative cursor-pointer\"\n @click=\"setVolume\"\n @mousedown=\"startVolumeChange\"\n @mousemove=\"updateVolumePosition\"\n @mouseup=\"endVolumeChange\"\n @mouseleave=\"endVolumeChange\"\n >\n <div \n class=\"volume-bar h-100 bg-white radius-extra\" \n :style=\"{ width: volumePercentage + '%' }\"\n :class=\"{ 'muted': muted }\"\n ></div>\n <div \n class=\"volume-handle w-thin h-thin bg-white radius-round pos-absolute pos-t-50 pos-l-0\"\n :style=\"{ \n left: `calc(${volumePercentage}% - 4px)`, \n transform: 'translateY(-50%)',\n opacity: muted ? 0 : 1\n }\"\n ></div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\n\n// Import player store\nimport { state as playerState, actions as playerActions } from '../../store/player.js';\n\n// Refs\nconst volumeBarContainer = ref(null);\nconst isChangingVolume = ref(false);\n\n// Computed properties\nconst volume = computed(() => playerState.volume);\nconst muted = computed(() => playerState.muted);\nconst volumePercentage = computed(() => {\n if (muted.value) return 0;\n return volume.value * 100;\n});\n\n// Methods\nconst calculateVolume = (event) => {\n if (!volumeBarContainer.value) return 0;\n \n const rect = volumeBarContainer.value.getBoundingClientRect();\n const offsetX = event.clientX - rect.left;\n \n return Math.max(0, Math.min(1, offsetX / rect.width));\n};\n\nconst setVolume = (event) => {\n const newVolume = calculateVolume(event);\n playerActions.setVolume(newVolume);\n \n // Unmute if was muted\n if (muted.value && newVolume > 0) {\n playerActions.toggleMute();\n }\n};\n\nconst startVolumeChange = (event) => {\n isChangingVolume.value = true;\n setVolume(event);\n};\n\nconst updateVolumePosition = (event) => {\n if (isChangingVolume.value) {\n setVolume(event);\n }\n};\n\nconst endVolumeChange = () => {\n isChangingVolume.value = false;\n};\n</script>\n\n<style scoped>\n.volume-bar-container:hover .volume-bar:not(.muted) {\n background-color: rgb(var(--main));\n}\n\n.volume-handle {\n display: none;\n}\n\n.volume-bar-container:hover .volume-handle {\n display: block;\n}\n\n.muted {\n opacity: 0.5;\n}\n</style>"],"names":["ref","computed","playerState","playerActions"],"mappings":";;;;;;;;;AAkCA,UAAM,qBAAqBA,IAAAA,IAAI,IAAI;AACnC,UAAM,mBAAmBA,IAAAA,IAAI,KAAK;AAGlC,UAAM,SAASC,IAAAA,SAAS,MAAMC,OAAAA,MAAY,MAAM;AAChD,UAAM,QAAQD,IAAAA,SAAS,MAAMC,OAAAA,MAAY,KAAK;AAC9C,UAAM,mBAAmBD,IAAAA,SAAS,MAAM;AACtC,UAAI,MAAM,MAAO,QAAO;AACxB,aAAO,OAAO,QAAQ;AAAA,IACxB,CAAC;AAGD,UAAM,kBAAkB,CAAC,UAAU;AACjC,UAAI,CAAC,mBAAmB,MAAO,QAAO;AAEtC,YAAM,OAAO,mBAAmB,MAAM,sBAAqB;AAC3D,YAAM,UAAU,MAAM,UAAU,KAAK;AAErC,aAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,UAAU,KAAK,KAAK,CAAC;AAAA,IACtD;AAEA,UAAM,YAAY,CAAC,UAAU;AAC3B,YAAM,YAAY,gBAAgB,KAAK;AACvCE,aAAAA,QAAc,UAAU,SAAS;AAGjC,UAAI,MAAM,SAAS,YAAY,GAAG;AAChCA,eAAAA,QAAc,WAAU;AAAA,MAC1B;AAAA,IACF;AAEA,UAAM,oBAAoB,CAAC,UAAU;AACnC,uBAAiB,QAAQ;AACzB,gBAAU,KAAK;AAAA,IACjB;AAEA,UAAM,uBAAuB,CAAC,UAAU;AACtC,UAAI,iBAAiB,OAAO;AAC1B,kBAAU,KAAK;AAAA,MACjB;AAAA,IACF;AAEA,UAAM,kBAAkB,MAAM;AAC5B,uBAAiB,QAAQ;AAAA,IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"VolumeControl.vue.cjs","sources":["../../../../../../../src/modules/music/components/player/VolumeControl.vue"],"sourcesContent":["<!-- components/player/VolumeControl.vue -->\n<template>\n <div class=\"volume-control\">\n <div \n ref=\"volumeBarContainer\"\n class=\"volume-bar-container\"\n @click=\"setVolume\"\n @mousedown=\"startVolumeChange\"\n @mousemove=\"updateVolumePosition\"\n @mouseup=\"endVolumeChange\"\n @mouseleave=\"endVolumeChange\"\n >\n <div \n class=\"volume-track\"\n :style=\"{ \n background: `linear-gradient(to right, rgb(var(--main)) 0%, rgb(var(--main)) ${volumePercentage}%, rgb(79, 79, 79) ${volumePercentage}%, rgb(79, 79, 79) 100%)`\n }\"\n >\n <div \n class=\"volume-thumb\"\n :style=\"{ \n left: `${volumePercentage}%`,\n opacity: muted ? 0 : 1\n }\"\n ></div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\n\n// Import player store\nimport { state as playerState, actions as playerActions } from '../../store/player.js';\n\n// Refs\nconst volumeBarContainer = ref(null);\nconst isChangingVolume = ref(false);\n\n// Computed properties\nconst volume = computed(() => playerState.volume);\nconst muted = computed(() => playerState.muted);\nconst volumePercentage = computed(() => {\n if (muted.value) return 0;\n return volume.value * 100;\n});\n\n// Methods\nconst calculateVolume = (event) => {\n if (!volumeBarContainer.value) return 0;\n \n const rect = volumeBarContainer.value.getBoundingClientRect();\n const offsetX = event.clientX - rect.left;\n \n return Math.max(0, Math.min(1, offsetX / rect.width));\n};\n\nconst setVolume = (event) => {\n const newVolume = calculateVolume(event);\n playerActions.setVolume(newVolume);\n \n // Unmute if was muted\n if (muted.value && newVolume > 0) {\n playerActions.toggleMute();\n }\n};\n\nconst startVolumeChange = (event) => {\n isChangingVolume.value = true;\n setVolume(event);\n};\n\nconst updateVolumePosition = (event) => {\n if (isChangingVolume.value) {\n setVolume(event);\n }\n};\n\nconst endVolumeChange = () => {\n isChangingVolume.value = false;\n};\n</script>\n\n<style scoped>\n.volume-control {\n width: 100%;\n}\n\n.volume-bar-container {\n width: 100%;\n height: 12px;\n display: flex;\n align-items: center;\n cursor: pointer;\n padding: 4px 0;\n}\n\n.volume-track {\n position: relative;\n width: 100%;\n height: 4px;\n border-radius: 2px;\n transition: height 0.2s ease;\n}\n\n.volume-thumb {\n position: absolute;\n top: 50%;\n width: 12px;\n height: 12px;\n background: rgb(var(--white));\n border-radius: 50%;\n transform: translate(-50%, -50%);\n transition: opacity 0.2s ease;\n opacity: 0;\n}\n\n.volume-bar-container:hover .volume-track {\n height: 6px;\n}\n\n.volume-bar-container:hover .volume-thumb {\n opacity: 1 !important;\n}\n\n/* Muted state */\n.volume-track.muted {\n opacity: 0.5;\n}\n</style>"],"names":["ref","computed","playerState","playerActions"],"mappings":";;;;;;;;;;AAqCA,UAAM,qBAAqBA,IAAAA,IAAI,IAAI;AACnC,UAAM,mBAAmBA,IAAAA,IAAI,KAAK;AAGlC,UAAM,SAASC,IAAAA,SAAS,MAAMC,OAAAA,MAAY,MAAM;AAChD,UAAM,QAAQD,IAAAA,SAAS,MAAMC,OAAAA,MAAY,KAAK;AAC9C,UAAM,mBAAmBD,IAAAA,SAAS,MAAM;AACtC,UAAI,MAAM,MAAO,QAAO;AACxB,aAAO,OAAO,QAAQ;AAAA,IACxB,CAAC;AAGD,UAAM,kBAAkB,CAAC,UAAU;AACjC,UAAI,CAAC,mBAAmB,MAAO,QAAO;AAEtC,YAAM,OAAO,mBAAmB,MAAM,sBAAqB;AAC3D,YAAM,UAAU,MAAM,UAAU,KAAK;AAErC,aAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,UAAU,KAAK,KAAK,CAAC;AAAA,IACtD;AAEA,UAAM,YAAY,CAAC,UAAU;AAC3B,YAAM,YAAY,gBAAgB,KAAK;AACvCE,aAAAA,QAAc,UAAU,SAAS;AAGjC,UAAI,MAAM,SAAS,YAAY,GAAG;AAChCA,eAAAA,QAAc,WAAU;AAAA,MAC1B;AAAA,IACF;AAEA,UAAM,oBAAoB,CAAC,UAAU;AACnC,uBAAiB,QAAQ;AACzB,gBAAU,KAAK;AAAA,IACjB;AAEA,UAAM,uBAAuB,CAAC,UAAU;AACtC,UAAI,iBAAiB,OAAO;AAC1B,kBAAU,KAAK;AAAA,MACjB;AAAA,IACF;AAEA,UAAM,kBAAkB,MAAM;AAC5B,uBAAiB,QAAQ;AAAA,IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,8 @@
1
- import { ref, computed, createElementBlock, openBlock, createElementVNode, normalizeStyle, normalizeClass } from "vue";
1
+ import { ref, computed, createElementBlock, openBlock, createElementVNode, normalizeStyle } from "vue";
2
2
  import { state, actions } from "../../store/player.js";
3
3
  /* empty css */
4
4
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
5
+ const _hoisted_1 = { class: "volume-control" };
5
6
  const _sfc_main = {
6
7
  __name: "VolumeControl",
7
8
  setup(__props) {
@@ -39,33 +40,37 @@ const _sfc_main = {
39
40
  isChangingVolume.value = false;
40
41
  };
41
42
  return (_ctx, _cache) => {
42
- return openBlock(), createElementBlock("div", {
43
- ref_key: "volumeBarContainer",
44
- ref: volumeBarContainer,
45
- class: "volume-bar-container w-100 h-thin bg-grey-transp-50 radius-extra pos-relative cursor-pointer",
46
- onClick: setVolume,
47
- onMousedown: startVolumeChange,
48
- onMousemove: updateVolumePosition,
49
- onMouseup: endVolumeChange,
50
- onMouseleave: endVolumeChange
51
- }, [
43
+ return openBlock(), createElementBlock("div", _hoisted_1, [
52
44
  createElementVNode("div", {
53
- class: normalizeClass(["volume-bar h-100 bg-white radius-extra", { "muted": muted.value }]),
54
- style: normalizeStyle({ width: volumePercentage.value + "%" })
55
- }, null, 6),
56
- createElementVNode("div", {
57
- class: "volume-handle w-thin h-thin bg-white radius-round pos-absolute pos-t-50 pos-l-0",
58
- style: normalizeStyle({
59
- left: `calc(${volumePercentage.value}% - 4px)`,
60
- transform: "translateY(-50%)",
61
- opacity: muted.value ? 0 : 1
62
- })
63
- }, null, 4)
64
- ], 544);
45
+ ref_key: "volumeBarContainer",
46
+ ref: volumeBarContainer,
47
+ class: "volume-bar-container",
48
+ onClick: setVolume,
49
+ onMousedown: startVolumeChange,
50
+ onMousemove: updateVolumePosition,
51
+ onMouseup: endVolumeChange,
52
+ onMouseleave: endVolumeChange
53
+ }, [
54
+ createElementVNode("div", {
55
+ class: "volume-track",
56
+ style: normalizeStyle({
57
+ background: `linear-gradient(to right, rgb(var(--main)) 0%, rgb(var(--main)) ${volumePercentage.value}%, rgb(79, 79, 79) ${volumePercentage.value}%, rgb(79, 79, 79) 100%)`
58
+ })
59
+ }, [
60
+ createElementVNode("div", {
61
+ class: "volume-thumb",
62
+ style: normalizeStyle({
63
+ left: `${volumePercentage.value}%`,
64
+ opacity: muted.value ? 0 : 1
65
+ })
66
+ }, null, 4)
67
+ ], 4)
68
+ ], 544)
69
+ ]);
65
70
  };
66
71
  }
67
72
  };
68
- const VolumeControl = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-08586594"]]);
73
+ const VolumeControl = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-a6e8eccb"]]);
69
74
  export {
70
75
  VolumeControl as default
71
76
  };
@@ -1 +1 @@
1
- {"version":3,"file":"VolumeControl.vue.js","sources":["../../../../../../../src/modules/music/components/player/VolumeControl.vue"],"sourcesContent":["<!-- components/player/VolumeControl.vue -->\n<template>\n <div \n ref=\"volumeBarContainer\"\n class=\"volume-bar-container w-100 h-thin bg-grey-transp-50 radius-extra pos-relative cursor-pointer\"\n @click=\"setVolume\"\n @mousedown=\"startVolumeChange\"\n @mousemove=\"updateVolumePosition\"\n @mouseup=\"endVolumeChange\"\n @mouseleave=\"endVolumeChange\"\n >\n <div \n class=\"volume-bar h-100 bg-white radius-extra\" \n :style=\"{ width: volumePercentage + '%' }\"\n :class=\"{ 'muted': muted }\"\n ></div>\n <div \n class=\"volume-handle w-thin h-thin bg-white radius-round pos-absolute pos-t-50 pos-l-0\"\n :style=\"{ \n left: `calc(${volumePercentage}% - 4px)`, \n transform: 'translateY(-50%)',\n opacity: muted ? 0 : 1\n }\"\n ></div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\n\n// Import player store\nimport { state as playerState, actions as playerActions } from '../../store/player.js';\n\n// Refs\nconst volumeBarContainer = ref(null);\nconst isChangingVolume = ref(false);\n\n// Computed properties\nconst volume = computed(() => playerState.volume);\nconst muted = computed(() => playerState.muted);\nconst volumePercentage = computed(() => {\n if (muted.value) return 0;\n return volume.value * 100;\n});\n\n// Methods\nconst calculateVolume = (event) => {\n if (!volumeBarContainer.value) return 0;\n \n const rect = volumeBarContainer.value.getBoundingClientRect();\n const offsetX = event.clientX - rect.left;\n \n return Math.max(0, Math.min(1, offsetX / rect.width));\n};\n\nconst setVolume = (event) => {\n const newVolume = calculateVolume(event);\n playerActions.setVolume(newVolume);\n \n // Unmute if was muted\n if (muted.value && newVolume > 0) {\n playerActions.toggleMute();\n }\n};\n\nconst startVolumeChange = (event) => {\n isChangingVolume.value = true;\n setVolume(event);\n};\n\nconst updateVolumePosition = (event) => {\n if (isChangingVolume.value) {\n setVolume(event);\n }\n};\n\nconst endVolumeChange = () => {\n isChangingVolume.value = false;\n};\n</script>\n\n<style scoped>\n.volume-bar-container:hover .volume-bar:not(.muted) {\n background-color: rgb(var(--main));\n}\n\n.volume-handle {\n display: none;\n}\n\n.volume-bar-container:hover .volume-handle {\n display: block;\n}\n\n.muted {\n opacity: 0.5;\n}\n</style>"],"names":["playerState","playerActions"],"mappings":";;;;;;;AAkCA,UAAM,qBAAqB,IAAI,IAAI;AACnC,UAAM,mBAAmB,IAAI,KAAK;AAGlC,UAAM,SAAS,SAAS,MAAMA,MAAY,MAAM;AAChD,UAAM,QAAQ,SAAS,MAAMA,MAAY,KAAK;AAC9C,UAAM,mBAAmB,SAAS,MAAM;AACtC,UAAI,MAAM,MAAO,QAAO;AACxB,aAAO,OAAO,QAAQ;AAAA,IACxB,CAAC;AAGD,UAAM,kBAAkB,CAAC,UAAU;AACjC,UAAI,CAAC,mBAAmB,MAAO,QAAO;AAEtC,YAAM,OAAO,mBAAmB,MAAM,sBAAqB;AAC3D,YAAM,UAAU,MAAM,UAAU,KAAK;AAErC,aAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,UAAU,KAAK,KAAK,CAAC;AAAA,IACtD;AAEA,UAAM,YAAY,CAAC,UAAU;AAC3B,YAAM,YAAY,gBAAgB,KAAK;AACvCC,cAAc,UAAU,SAAS;AAGjC,UAAI,MAAM,SAAS,YAAY,GAAG;AAChCA,gBAAc,WAAU;AAAA,MAC1B;AAAA,IACF;AAEA,UAAM,oBAAoB,CAAC,UAAU;AACnC,uBAAiB,QAAQ;AACzB,gBAAU,KAAK;AAAA,IACjB;AAEA,UAAM,uBAAuB,CAAC,UAAU;AACtC,UAAI,iBAAiB,OAAO;AAC1B,kBAAU,KAAK;AAAA,MACjB;AAAA,IACF;AAEA,UAAM,kBAAkB,MAAM;AAC5B,uBAAiB,QAAQ;AAAA,IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"VolumeControl.vue.js","sources":["../../../../../../../src/modules/music/components/player/VolumeControl.vue"],"sourcesContent":["<!-- components/player/VolumeControl.vue -->\n<template>\n <div class=\"volume-control\">\n <div \n ref=\"volumeBarContainer\"\n class=\"volume-bar-container\"\n @click=\"setVolume\"\n @mousedown=\"startVolumeChange\"\n @mousemove=\"updateVolumePosition\"\n @mouseup=\"endVolumeChange\"\n @mouseleave=\"endVolumeChange\"\n >\n <div \n class=\"volume-track\"\n :style=\"{ \n background: `linear-gradient(to right, rgb(var(--main)) 0%, rgb(var(--main)) ${volumePercentage}%, rgb(79, 79, 79) ${volumePercentage}%, rgb(79, 79, 79) 100%)`\n }\"\n >\n <div \n class=\"volume-thumb\"\n :style=\"{ \n left: `${volumePercentage}%`,\n opacity: muted ? 0 : 1\n }\"\n ></div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\n\n// Import player store\nimport { state as playerState, actions as playerActions } from '../../store/player.js';\n\n// Refs\nconst volumeBarContainer = ref(null);\nconst isChangingVolume = ref(false);\n\n// Computed properties\nconst volume = computed(() => playerState.volume);\nconst muted = computed(() => playerState.muted);\nconst volumePercentage = computed(() => {\n if (muted.value) return 0;\n return volume.value * 100;\n});\n\n// Methods\nconst calculateVolume = (event) => {\n if (!volumeBarContainer.value) return 0;\n \n const rect = volumeBarContainer.value.getBoundingClientRect();\n const offsetX = event.clientX - rect.left;\n \n return Math.max(0, Math.min(1, offsetX / rect.width));\n};\n\nconst setVolume = (event) => {\n const newVolume = calculateVolume(event);\n playerActions.setVolume(newVolume);\n \n // Unmute if was muted\n if (muted.value && newVolume > 0) {\n playerActions.toggleMute();\n }\n};\n\nconst startVolumeChange = (event) => {\n isChangingVolume.value = true;\n setVolume(event);\n};\n\nconst updateVolumePosition = (event) => {\n if (isChangingVolume.value) {\n setVolume(event);\n }\n};\n\nconst endVolumeChange = () => {\n isChangingVolume.value = false;\n};\n</script>\n\n<style scoped>\n.volume-control {\n width: 100%;\n}\n\n.volume-bar-container {\n width: 100%;\n height: 12px;\n display: flex;\n align-items: center;\n cursor: pointer;\n padding: 4px 0;\n}\n\n.volume-track {\n position: relative;\n width: 100%;\n height: 4px;\n border-radius: 2px;\n transition: height 0.2s ease;\n}\n\n.volume-thumb {\n position: absolute;\n top: 50%;\n width: 12px;\n height: 12px;\n background: rgb(var(--white));\n border-radius: 50%;\n transform: translate(-50%, -50%);\n transition: opacity 0.2s ease;\n opacity: 0;\n}\n\n.volume-bar-container:hover .volume-track {\n height: 6px;\n}\n\n.volume-bar-container:hover .volume-thumb {\n opacity: 1 !important;\n}\n\n/* Muted state */\n.volume-track.muted {\n opacity: 0.5;\n}\n</style>"],"names":["playerState","playerActions"],"mappings":";;;;;;;;AAqCA,UAAM,qBAAqB,IAAI,IAAI;AACnC,UAAM,mBAAmB,IAAI,KAAK;AAGlC,UAAM,SAAS,SAAS,MAAMA,MAAY,MAAM;AAChD,UAAM,QAAQ,SAAS,MAAMA,MAAY,KAAK;AAC9C,UAAM,mBAAmB,SAAS,MAAM;AACtC,UAAI,MAAM,MAAO,QAAO;AACxB,aAAO,OAAO,QAAQ;AAAA,IACxB,CAAC;AAGD,UAAM,kBAAkB,CAAC,UAAU;AACjC,UAAI,CAAC,mBAAmB,MAAO,QAAO;AAEtC,YAAM,OAAO,mBAAmB,MAAM,sBAAqB;AAC3D,YAAM,UAAU,MAAM,UAAU,KAAK;AAErC,aAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,UAAU,KAAK,KAAK,CAAC;AAAA,IACtD;AAEA,UAAM,YAAY,CAAC,UAAU;AAC3B,YAAM,YAAY,gBAAgB,KAAK;AACvCC,cAAc,UAAU,SAAS;AAGjC,UAAI,MAAM,SAAS,YAAY,GAAG;AAChCA,gBAAc,WAAU;AAAA,MAC1B;AAAA,IACF;AAEA,UAAM,oBAAoB,CAAC,UAAU;AACnC,uBAAiB,QAAQ;AACzB,gBAAU,KAAK;AAAA,IACjB;AAEA,UAAM,uBAAuB,CAAC,UAAU;AACtC,UAAI,iBAAiB,OAAO;AAC1B,kBAAU,KAAK;AAAA,MACjB;AAAA,IACF;AAEA,UAAM,kBAAkB,MAAM;AAC5B,uBAAiB,QAAQ;AAAA,IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -8,7 +8,7 @@ const playlists = require("./store/playlists.cjs");
8
8
  const search = require("./store/search.cjs");
9
9
  const tracks = require("./store/tracks.cjs");
10
10
  const music = require("./router/music.cjs");
11
- const MusicLayout = require("./components/layouts/MusicLayout.vue.cjs");
11
+ const MusicBottomPlayer = require("./components/layouts/MusicBottomPlayer.vue.cjs");
12
12
  const Album = require("./components/pages/Album.vue.cjs");
13
13
  const Artist = require("./components/pages/Artist.vue.cjs");
14
14
  const MusicHome = require("./components/pages/MusicHome.vue.cjs");
@@ -23,7 +23,6 @@ const VolumeControl = require("./components/player/VolumeControl.vue.cjs");
23
23
  const AlbumCard = require("./components/cards/AlbumCard.vue.cjs");
24
24
  const ArtistCard = require("./components/cards/ArtistCard.vue.cjs");
25
25
  const PlaylistCard = require("./components/cards/PlaylistCard.vue.cjs");
26
- const TrackCard = require("./components/cards/TrackCard.vue.cjs");
27
26
  const TrackListCard = require("./components/cards/TrackListCard.vue.cjs");
28
27
  const ArtistForm = require("./components/forms/ArtistForm.vue.cjs");
29
28
  const AlbumForm = require("./components/forms/AlbumForm.vue.cjs");
@@ -74,7 +73,7 @@ const ModuleMusic = {
74
73
  },
75
74
  components: {
76
75
  // Layouts
77
- MusicLayout: MusicLayout.default,
76
+ MusicBottomPlayer: MusicBottomPlayer.default,
78
77
  // Pages
79
78
  MusicHome: MusicHome.default,
80
79
  SearchResults: SearchResults.default,
@@ -89,7 +88,6 @@ const ModuleMusic = {
89
88
  TrackProgress: TrackProgress.default,
90
89
  VolumeControl: VolumeControl.default,
91
90
  // Cards
92
- TrackCard: TrackCard.default,
93
91
  TrackListCard: TrackListCard.default,
94
92
  AlbumCard: AlbumCard.default,
95
93
  PlaylistCard: PlaylistCard.default,
@@ -111,7 +109,7 @@ exports.storePlaylists = playlists;
111
109
  exports.storeSearch = search;
112
110
  exports.storeTracks = tracks;
113
111
  exports.routerMusic = music.default;
114
- exports.MusicLayout = MusicLayout.default;
112
+ exports.MusicBottomPlayer = MusicBottomPlayer.default;
115
113
  exports.Album = Album.default;
116
114
  exports.Artist = Artist.default;
117
115
  exports.MusicHome = MusicHome.default;
@@ -126,7 +124,6 @@ exports.VolumeControl = VolumeControl.default;
126
124
  exports.AlbumCard = AlbumCard.default;
127
125
  exports.ArtistCard = ArtistCard.default;
128
126
  exports.PlaylistCard = PlaylistCard.default;
129
- exports.TrackCard = TrackCard.default;
130
127
  exports.TrackListCard = TrackListCard.default;
131
128
  exports.ArtistForm = ArtistForm.default;
132
129
  exports.AlbumForm = AlbumForm.default;
@@ -1 +1 @@
1
- {"version":3,"file":"music.client.cjs","sources":["../../../../../src/modules/music/music.client.js"],"sourcesContent":["// Store modules\nimport * as storeAlbums from './store/albums.js';\nimport * as storeArtists from './store/artists.js';\nimport * as storeGenres from './store/genres.js';\nimport * as storePlayer from './store/player.js';\nimport * as storePlaylists from './store/playlists.js';\nimport * as storeSearch from './store/search.js';\nimport * as storeTracks from './store/tracks.js';\n\n// Router\nimport routerMusic from './router/music.js';\n\n// Layouts\nimport MusicLayout from './components/layouts/MusicLayout.vue';\n\n// Pages\nimport Album from './components/pages/Album.vue';\nimport Artist from './components/pages/Artist.vue';\nimport MusicHome from './components/pages/MusicHome.vue';\nimport MusicLibrary from './components/pages/MusicLibrary.vue';\nimport TrackCreate from './components/pages/TrackCreate.vue';\nimport Playlist from './components/pages/Playlist.vue';\nimport SearchResults from './components/pages/SearchResults.vue';\nimport Track from './components/pages/Track.vue';\n\n// Components - Player\nimport MusicPlayer from './components/player/MusicPlayer.vue';\nimport TrackProgress from './components/player/TrackProgress.vue';\nimport VolumeControl from './components/player/VolumeControl.vue';\n\n// Components - Cards\nimport AlbumCard from './components/cards/AlbumCard.vue';\nimport ArtistCard from './components/cards/ArtistCard.vue';\nimport PlaylistCard from './components/cards/PlaylistCard.vue';\nimport TrackCard from './components/cards/TrackCard.vue';\nimport TrackListCard from './components/cards/TrackListCard.vue';\n\n\n// Components - Forms\nimport ArtistForm from './components/forms/ArtistForm.vue';\nimport AlbumForm from './components/forms/AlbumForm.vue';\nimport PlaylistForm from './components/forms/PlaylistForm.vue';\nimport SearchForm from './components/forms/SearchForm.vue';\nimport TrackForm from './components/forms/TrackForm.vue';\n\n// WebSocket integration for streaming\nimport globalWebSocket from '@martyrs/src/modules/globals/views/classes/globals.websocket.js';\n\n/**\n * Initialize Music module on client-side\n * @param {Object} app - Vue app instance\n * @param {Object} store - Global store instance\n * @param {Object} router - Vue router instance\n * @param {Object} config - Configuration options\n * @param {Object} options - Additional options\n */\nfunction initializeMusic(app, store, router, config, options = {}) {\n const route = options.route || 'Home';\n\n // Register routes\n router.addRoute(route, routerMusic);\n\n // Register store modules\n store.addStore('tracks', storeTracks);\n store.addStore('playlists', storePlaylists);\n store.addStore('albums', storeAlbums);\n store.addStore('artists', storeArtists);\n store.addStore('genres', storeGenres);\n store.addStore('player', storePlayer);\n store.addStore('search', storeSearch);\n\n // Set up WebSocket subscription for music streaming\n if (options.enableStreaming !== false && app.config.globalProperties.WSS_URL) {\n globalWebSocket.initialize({\n wsUrl: app.config.globalProperties.WSS_URL,\n maxReconnectAttempts: 10,\n reconnectDelay: 2000,\n });\n\n // Subscribe to music streaming module when authenticated\n if (options.userId) {\n globalWebSocket\n .connect(options.userId)\n .then(() => {\n globalWebSocket.subscribeModule('music-streaming');\n })\n .catch(err => {\n console.error('Failed to connect to WebSocket for music streaming:', err);\n });\n }\n }\n\n // Register global components if needed\n app.component('MusicPlayer', MusicPlayer);\n}\n\n// Module export\nconst ModuleMusic = {\n initialize: initializeMusic,\n views: {\n store: {\n storeTracks,\n storePlaylists,\n storeAlbums,\n storeArtists,\n storeGenres,\n storePlayer,\n storeSearch,\n },\n router: {\n routerMusic,\n },\n components: {\n // Layouts\n MusicLayout,\n // Pages\n MusicHome,\n SearchResults,\n Artist,\n Album,\n Playlist,\n Track,\n MusicLibrary,\n TrackCreate,\n // Player Components\n MusicPlayer,\n TrackProgress,\n VolumeControl,\n // Cards\n TrackCard,\n TrackListCard,\n AlbumCard,\n PlaylistCard,\n ArtistCard,\n // Forms\n ArtistForm,\n AlbumForm,\n PlaylistForm,\n SearchForm,\n TrackForm,\n },\n },\n};\n\n// Named exports for direct component imports\nexport {\n AlbumCard,\n Album,\n ArtistCard,\n Artist,\n // Pages\n MusicHome,\n // Layout\n MusicLayout,\n MusicLibrary,\n // Player Components\n MusicPlayer,\n TrackCreate,\n PlaylistCard,\n Playlist,\n // Forms\n ArtistForm,\n AlbumForm,\n PlaylistForm,\n SearchForm,\n SearchResults,\n // Cards\n TrackCard,\n TrackListCard,\n Track,\n TrackForm,\n TrackProgress,\n VolumeControl,\n // Router\n routerMusic,\n storeAlbums,\n storeArtists,\n storeGenres,\n storePlayer,\n storePlaylists,\n storeSearch,\n // Store modules\n storeTracks,\n};\n\n// Default export\nexport default ModuleMusic;\n"],"names":["routerMusic","storeTracks","storePlaylists","storeAlbums","storeArtists","storeGenres","storePlayer","storeSearch","globalWebSocket","MusicPlayer","MusicLayout","MusicHome","SearchResults","Artist","Album","Playlist","Track","MusicLibrary","TrackCreate","TrackProgress","VolumeControl","TrackCard","TrackListCard","AlbumCard","PlaylistCard","ArtistCard","ArtistForm","AlbumForm","PlaylistForm","SearchForm","TrackForm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,SAAS,gBAAgB,KAAK,OAAO,QAAQ,QAAQ,UAAU,IAAI;AACjE,QAAM,QAAQ,QAAQ,SAAS;AAG/B,SAAO,SAAS,OAAOA,aAAW;AAGlC,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,aAAaC,SAAc;AAC1C,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,WAAWC,OAAY;AACtC,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,UAAUC,MAAW;AAGpC,MAAI,QAAQ,oBAAoB,SAAS,IAAI,OAAO,iBAAiB,SAAS;AAC5EC,sBAAAA,QAAgB,WAAW;AAAA,MACzB,OAAO,IAAI,OAAO,iBAAiB;AAAA,MACnC,sBAAsB;AAAA,MACtB,gBAAgB;AAAA,IACtB,CAAK;AAGD,QAAI,QAAQ,QAAQ;AAClBA,wBAAAA,QACG,QAAQ,QAAQ,MAAM,EACtB,KAAK,MAAM;AACVA,0BAAAA,QAAgB,gBAAgB,iBAAiB;AAAA,MACnD,CAAC,EACA,MAAM,SAAO;AACZ,gBAAQ,MAAM,uDAAuD,GAAG;AAAA,MAC1E,CAAC;AAAA,IACL;AAAA,EACF;AAGA,MAAI,UAAU,eAAeC,mBAAW;AAC1C;AAGK,MAAC,cAAc;AAAA,EAClB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,aAAMR;AAAAA,MACN,gBAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,cAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,aAAMC;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA,MACZ,aAAMP,MAAAA;AAAAA,IACN;AAAA,IACI,YAAY;AAAA;AAAA,MAEhB,aAAMU,YAAAA;AAAAA;AAAAA,MAEN,WAAMC,UAAAA;AAAAA,MACN,eAAMC,cAAAA;AAAAA,MACN,QAAMC,OAAAA;AAAAA,MACN,OAAMC,MAAAA;AAAAA,MACN,UAAMC,SAAAA;AAAAA,MACN,OAAMC,MAAAA;AAAAA,MACN,cAAMC,aAAAA;AAAAA,MACN,aAAMC,YAAAA;AAAAA;AAAAA,MAEN,aAAMT,YAAAA;AAAAA,MACN,eAAMU,cAAAA;AAAAA,MACN,eAAMC,cAAAA;AAAAA;AAAAA,MAEN,WAAMC,UAAAA;AAAAA,MACN,eAAMC,cAAAA;AAAAA,MACN,WAAMC,UAAAA;AAAAA,MACN,cAAMC,aAAAA;AAAAA,MACN,YAAMC,WAAAA;AAAAA;AAAAA,MAEN,YAAMC,WAAAA;AAAAA,MACN,WAAMC,UAAAA;AAAAA,MACN,cAAMC,aAAAA;AAAAA,MACN,YAAMC,WAAAA;AAAAA,MACN,WAAMC,UAAAA;AAAAA,IACN;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"music.client.cjs","sources":["../../../../../src/modules/music/music.client.js"],"sourcesContent":["// Store modules\nimport * as storeAlbums from './store/albums.js';\nimport * as storeArtists from './store/artists.js';\nimport * as storeGenres from './store/genres.js';\nimport * as storePlayer from './store/player.js';\nimport * as storePlaylists from './store/playlists.js';\nimport * as storeSearch from './store/search.js';\nimport * as storeTracks from './store/tracks.js';\n\n// Router\nimport routerMusic from './router/music.js';\n\n// Layouts\nimport MusicBottomPlayer from './components/layouts/MusicBottomPlayer.vue';\n\n// Pages\nimport Album from './components/pages/Album.vue';\nimport Artist from './components/pages/Artist.vue';\nimport MusicHome from './components/pages/MusicHome.vue';\nimport MusicLibrary from './components/pages/MusicLibrary.vue';\nimport TrackCreate from './components/pages/TrackCreate.vue';\nimport Playlist from './components/pages/Playlist.vue';\nimport SearchResults from './components/pages/SearchResults.vue';\nimport Track from './components/pages/Track.vue';\n\n// Components - Player\nimport MusicPlayer from './components/player/MusicPlayer.vue';\nimport TrackProgress from './components/player/TrackProgress.vue';\nimport VolumeControl from './components/player/VolumeControl.vue';\n\n// Components - Cards\nimport AlbumCard from './components/cards/AlbumCard.vue';\nimport ArtistCard from './components/cards/ArtistCard.vue';\nimport PlaylistCard from './components/cards/PlaylistCard.vue';\nimport TrackListCard from './components/cards/TrackListCard.vue';\n\n\n// Components - Forms\nimport ArtistForm from './components/forms/ArtistForm.vue';\nimport AlbumForm from './components/forms/AlbumForm.vue';\nimport PlaylistForm from './components/forms/PlaylistForm.vue';\nimport SearchForm from './components/forms/SearchForm.vue';\nimport TrackForm from './components/forms/TrackForm.vue';\n\n// WebSocket integration for streaming\nimport globalWebSocket from '@martyrs/src/modules/globals/views/classes/globals.websocket.js';\n\n/**\n * Initialize Music module on client-side\n * @param {Object} app - Vue app instance\n * @param {Object} store - Global store instance\n * @param {Object} router - Vue router instance\n * @param {Object} config - Configuration options\n * @param {Object} options - Additional options\n */\nfunction initializeMusic(app, store, router, config, options = {}) {\n const route = options.route || 'Home';\n\n // Register routes\n router.addRoute(route, routerMusic);\n\n // Register store modules\n store.addStore('tracks', storeTracks);\n store.addStore('playlists', storePlaylists);\n store.addStore('albums', storeAlbums);\n store.addStore('artists', storeArtists);\n store.addStore('genres', storeGenres);\n store.addStore('player', storePlayer);\n store.addStore('search', storeSearch);\n\n // Set up WebSocket subscription for music streaming\n if (options.enableStreaming !== false && app.config.globalProperties.WSS_URL) {\n globalWebSocket.initialize({\n wsUrl: app.config.globalProperties.WSS_URL,\n maxReconnectAttempts: 10,\n reconnectDelay: 2000,\n });\n\n // Subscribe to music streaming module when authenticated\n if (options.userId) {\n globalWebSocket\n .connect(options.userId)\n .then(() => {\n globalWebSocket.subscribeModule('music-streaming');\n })\n .catch(err => {\n console.error('Failed to connect to WebSocket for music streaming:', err);\n });\n }\n }\n\n // Register global components if needed\n app.component('MusicPlayer', MusicPlayer);\n}\n\n// Module export\nconst ModuleMusic = {\n initialize: initializeMusic,\n views: {\n store: {\n storeTracks,\n storePlaylists,\n storeAlbums,\n storeArtists,\n storeGenres,\n storePlayer,\n storeSearch,\n },\n router: {\n routerMusic,\n },\n components: {\n // Layouts\n MusicBottomPlayer,\n // Pages\n MusicHome,\n SearchResults,\n Artist,\n Album,\n Playlist,\n Track,\n MusicLibrary,\n TrackCreate,\n // Player Components\n MusicPlayer,\n TrackProgress,\n VolumeControl,\n // Cards\n TrackListCard,\n AlbumCard,\n PlaylistCard,\n ArtistCard,\n // Forms\n ArtistForm,\n AlbumForm,\n PlaylistForm,\n SearchForm,\n TrackForm,\n },\n },\n};\n\n// Named exports for direct component imports\nexport {\n AlbumCard,\n Album,\n ArtistCard,\n Artist,\n // Pages\n MusicHome,\n // Layout\n MusicBottomPlayer,\n MusicLibrary,\n // Player Components\n MusicPlayer,\n TrackCreate,\n PlaylistCard,\n Playlist,\n // Forms\n ArtistForm,\n AlbumForm,\n PlaylistForm,\n SearchForm,\n SearchResults,\n // Cards\n TrackListCard,\n Track,\n TrackForm,\n TrackProgress,\n VolumeControl,\n // Router\n routerMusic,\n storeAlbums,\n storeArtists,\n storeGenres,\n storePlayer,\n storePlaylists,\n storeSearch,\n // Store modules\n storeTracks,\n};\n\n// Default export\nexport default ModuleMusic;\n"],"names":["routerMusic","storeTracks","storePlaylists","storeAlbums","storeArtists","storeGenres","storePlayer","storeSearch","globalWebSocket","MusicPlayer","MusicBottomPlayer","MusicHome","SearchResults","Artist","Album","Playlist","Track","MusicLibrary","TrackCreate","TrackProgress","VolumeControl","TrackListCard","AlbumCard","PlaylistCard","ArtistCard","ArtistForm","AlbumForm","PlaylistForm","SearchForm","TrackForm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDA,SAAS,gBAAgB,KAAK,OAAO,QAAQ,QAAQ,UAAU,IAAI;AACjE,QAAM,QAAQ,QAAQ,SAAS;AAG/B,SAAO,SAAS,OAAOA,aAAW;AAGlC,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,aAAaC,SAAc;AAC1C,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,WAAWC,OAAY;AACtC,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,UAAUC,MAAW;AAGpC,MAAI,QAAQ,oBAAoB,SAAS,IAAI,OAAO,iBAAiB,SAAS;AAC5EC,sBAAAA,QAAgB,WAAW;AAAA,MACzB,OAAO,IAAI,OAAO,iBAAiB;AAAA,MACnC,sBAAsB;AAAA,MACtB,gBAAgB;AAAA,IACtB,CAAK;AAGD,QAAI,QAAQ,QAAQ;AAClBA,wBAAAA,QACG,QAAQ,QAAQ,MAAM,EACtB,KAAK,MAAM;AACVA,0BAAAA,QAAgB,gBAAgB,iBAAiB;AAAA,MACnD,CAAC,EACA,MAAM,SAAO;AACZ,gBAAQ,MAAM,uDAAuD,GAAG;AAAA,MAC1E,CAAC;AAAA,IACL;AAAA,EACF;AAGA,MAAI,UAAU,eAAeC,mBAAW;AAC1C;AAGK,MAAC,cAAc;AAAA,EAClB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,aAAMR;AAAAA,MACN,gBAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,cAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,aAAMC;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA,MACZ,aAAMP,MAAAA;AAAAA,IACN;AAAA,IACI,YAAY;AAAA;AAAA,MAEhB,mBAAMU,kBAAAA;AAAAA;AAAAA,MAEN,WAAMC,UAAAA;AAAAA,MACN,eAAMC,cAAAA;AAAAA,MACN,QAAMC,OAAAA;AAAAA,MACN,OAAMC,MAAAA;AAAAA,MACN,UAAMC,SAAAA;AAAAA,MACN,OAAMC,MAAAA;AAAAA,MACN,cAAMC,aAAAA;AAAAA,MACN,aAAMC,YAAAA;AAAAA;AAAAA,MAEN,aAAMT,YAAAA;AAAAA,MACN,eAAMU,cAAAA;AAAAA,MACN,eAAMC,cAAAA;AAAAA;AAAAA,MAEN,eAAMC,cAAAA;AAAAA,MACN,WAAMC,UAAAA;AAAAA,MACN,cAAMC,aAAAA;AAAAA,MACN,YAAMC,WAAAA;AAAAA;AAAAA,MAEN,YAAMC,WAAAA;AAAAA,MACN,WAAMC,UAAAA;AAAAA,MACN,cAAMC,aAAAA;AAAAA,MACN,YAAMC,WAAAA;AAAAA,MACN,WAAMC,UAAAA;AAAAA,IACN;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -6,9 +6,9 @@ import * as playlists from "./store/playlists.js";
6
6
  import * as search from "./store/search.js";
7
7
  import * as tracks from "./store/tracks.js";
8
8
  import routerMusic from "./router/music.js";
9
- import _sfc_main$a from "./components/layouts/MusicLayout.vue.js";
10
- import Album from "./components/pages/Album.vue.js";
11
- import _sfc_main$9 from "./components/pages/Artist.vue.js";
9
+ import _sfc_main$b from "./components/layouts/MusicBottomPlayer.vue.js";
10
+ import _sfc_main$9 from "./components/pages/Album.vue.js";
11
+ import _sfc_main$a from "./components/pages/Artist.vue.js";
12
12
  import MusicHome from "./components/pages/MusicHome.vue.js";
13
13
  import _sfc_main$6 from "./components/pages/MusicLibrary.vue.js";
14
14
  import _sfc_main$5 from "./components/pages/TrackCreate.vue.js";
@@ -21,7 +21,6 @@ import VolumeControl from "./components/player/VolumeControl.vue.js";
21
21
  import AlbumCard from "./components/cards/AlbumCard.vue.js";
22
22
  import ArtistCard from "./components/cards/ArtistCard.vue.js";
23
23
  import PlaylistCard from "./components/cards/PlaylistCard.vue.js";
24
- import TrackCard from "./components/cards/TrackCard.vue.js";
25
24
  import _sfc_main$4 from "./components/cards/TrackListCard.vue.js";
26
25
  import _sfc_main$3 from "./components/forms/ArtistForm.vue.js";
27
26
  import _sfc_main$2 from "./components/forms/AlbumForm.vue.js";
@@ -72,12 +71,12 @@ const ModuleMusic = {
72
71
  },
73
72
  components: {
74
73
  // Layouts
75
- MusicLayout: _sfc_main$a,
74
+ MusicBottomPlayer: _sfc_main$b,
76
75
  // Pages
77
76
  MusicHome,
78
77
  SearchResults,
79
- Artist: _sfc_main$9,
80
- Album,
78
+ Artist: _sfc_main$a,
79
+ Album: _sfc_main$9,
81
80
  Playlist: _sfc_main$8,
82
81
  Track: _sfc_main$7,
83
82
  MusicLibrary: _sfc_main$6,
@@ -87,7 +86,6 @@ const ModuleMusic = {
87
86
  TrackProgress,
88
87
  VolumeControl,
89
88
  // Cards
90
- TrackCard,
91
89
  TrackListCard: _sfc_main$4,
92
90
  AlbumCard,
93
91
  PlaylistCard,
@@ -102,14 +100,14 @@ const ModuleMusic = {
102
100
  }
103
101
  };
104
102
  export {
105
- Album,
103
+ _sfc_main$9 as Album,
106
104
  AlbumCard,
107
105
  _sfc_main$2 as AlbumForm,
108
- _sfc_main$9 as Artist,
106
+ _sfc_main$a as Artist,
109
107
  ArtistCard,
110
108
  _sfc_main$3 as ArtistForm,
109
+ _sfc_main$b as MusicBottomPlayer,
111
110
  MusicHome,
112
- _sfc_main$a as MusicLayout,
113
111
  _sfc_main$6 as MusicLibrary,
114
112
  MusicPlayer,
115
113
  _sfc_main$8 as Playlist,
@@ -118,7 +116,6 @@ export {
118
116
  SearchForm,
119
117
  SearchResults,
120
118
  _sfc_main$7 as Track,
121
- TrackCard,
122
119
  _sfc_main$5 as TrackCreate,
123
120
  _sfc_main as TrackForm,
124
121
  _sfc_main$4 as TrackListCard,
@@ -1 +1 @@
1
- {"version":3,"file":"music.client.js","sources":["../../../../../src/modules/music/music.client.js"],"sourcesContent":["// Store modules\nimport * as storeAlbums from './store/albums.js';\nimport * as storeArtists from './store/artists.js';\nimport * as storeGenres from './store/genres.js';\nimport * as storePlayer from './store/player.js';\nimport * as storePlaylists from './store/playlists.js';\nimport * as storeSearch from './store/search.js';\nimport * as storeTracks from './store/tracks.js';\n\n// Router\nimport routerMusic from './router/music.js';\n\n// Layouts\nimport MusicLayout from './components/layouts/MusicLayout.vue';\n\n// Pages\nimport Album from './components/pages/Album.vue';\nimport Artist from './components/pages/Artist.vue';\nimport MusicHome from './components/pages/MusicHome.vue';\nimport MusicLibrary from './components/pages/MusicLibrary.vue';\nimport TrackCreate from './components/pages/TrackCreate.vue';\nimport Playlist from './components/pages/Playlist.vue';\nimport SearchResults from './components/pages/SearchResults.vue';\nimport Track from './components/pages/Track.vue';\n\n// Components - Player\nimport MusicPlayer from './components/player/MusicPlayer.vue';\nimport TrackProgress from './components/player/TrackProgress.vue';\nimport VolumeControl from './components/player/VolumeControl.vue';\n\n// Components - Cards\nimport AlbumCard from './components/cards/AlbumCard.vue';\nimport ArtistCard from './components/cards/ArtistCard.vue';\nimport PlaylistCard from './components/cards/PlaylistCard.vue';\nimport TrackCard from './components/cards/TrackCard.vue';\nimport TrackListCard from './components/cards/TrackListCard.vue';\n\n\n// Components - Forms\nimport ArtistForm from './components/forms/ArtistForm.vue';\nimport AlbumForm from './components/forms/AlbumForm.vue';\nimport PlaylistForm from './components/forms/PlaylistForm.vue';\nimport SearchForm from './components/forms/SearchForm.vue';\nimport TrackForm from './components/forms/TrackForm.vue';\n\n// WebSocket integration for streaming\nimport globalWebSocket from '@martyrs/src/modules/globals/views/classes/globals.websocket.js';\n\n/**\n * Initialize Music module on client-side\n * @param {Object} app - Vue app instance\n * @param {Object} store - Global store instance\n * @param {Object} router - Vue router instance\n * @param {Object} config - Configuration options\n * @param {Object} options - Additional options\n */\nfunction initializeMusic(app, store, router, config, options = {}) {\n const route = options.route || 'Home';\n\n // Register routes\n router.addRoute(route, routerMusic);\n\n // Register store modules\n store.addStore('tracks', storeTracks);\n store.addStore('playlists', storePlaylists);\n store.addStore('albums', storeAlbums);\n store.addStore('artists', storeArtists);\n store.addStore('genres', storeGenres);\n store.addStore('player', storePlayer);\n store.addStore('search', storeSearch);\n\n // Set up WebSocket subscription for music streaming\n if (options.enableStreaming !== false && app.config.globalProperties.WSS_URL) {\n globalWebSocket.initialize({\n wsUrl: app.config.globalProperties.WSS_URL,\n maxReconnectAttempts: 10,\n reconnectDelay: 2000,\n });\n\n // Subscribe to music streaming module when authenticated\n if (options.userId) {\n globalWebSocket\n .connect(options.userId)\n .then(() => {\n globalWebSocket.subscribeModule('music-streaming');\n })\n .catch(err => {\n console.error('Failed to connect to WebSocket for music streaming:', err);\n });\n }\n }\n\n // Register global components if needed\n app.component('MusicPlayer', MusicPlayer);\n}\n\n// Module export\nconst ModuleMusic = {\n initialize: initializeMusic,\n views: {\n store: {\n storeTracks,\n storePlaylists,\n storeAlbums,\n storeArtists,\n storeGenres,\n storePlayer,\n storeSearch,\n },\n router: {\n routerMusic,\n },\n components: {\n // Layouts\n MusicLayout,\n // Pages\n MusicHome,\n SearchResults,\n Artist,\n Album,\n Playlist,\n Track,\n MusicLibrary,\n TrackCreate,\n // Player Components\n MusicPlayer,\n TrackProgress,\n VolumeControl,\n // Cards\n TrackCard,\n TrackListCard,\n AlbumCard,\n PlaylistCard,\n ArtistCard,\n // Forms\n ArtistForm,\n AlbumForm,\n PlaylistForm,\n SearchForm,\n TrackForm,\n },\n },\n};\n\n// Named exports for direct component imports\nexport {\n AlbumCard,\n Album,\n ArtistCard,\n Artist,\n // Pages\n MusicHome,\n // Layout\n MusicLayout,\n MusicLibrary,\n // Player Components\n MusicPlayer,\n TrackCreate,\n PlaylistCard,\n Playlist,\n // Forms\n ArtistForm,\n AlbumForm,\n PlaylistForm,\n SearchForm,\n SearchResults,\n // Cards\n TrackCard,\n TrackListCard,\n Track,\n TrackForm,\n TrackProgress,\n VolumeControl,\n // Router\n routerMusic,\n storeAlbums,\n storeArtists,\n storeGenres,\n storePlayer,\n storePlaylists,\n storeSearch,\n // Store modules\n storeTracks,\n};\n\n// Default export\nexport default ModuleMusic;\n"],"names":["storeTracks","storePlaylists","storeAlbums","storeArtists","storeGenres","storePlayer","storeSearch","MusicLayout","Artist","Playlist","Track","MusicLibrary","TrackCreate","TrackListCard","ArtistForm","AlbumForm","PlaylistForm","TrackForm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,SAAS,gBAAgB,KAAK,OAAO,QAAQ,QAAQ,UAAU,IAAI;AACjE,QAAM,QAAQ,QAAQ,SAAS;AAG/B,SAAO,SAAS,OAAO,WAAW;AAGlC,QAAM,SAAS,UAAUA,MAAW;AACpC,QAAM,SAAS,aAAaC,SAAc;AAC1C,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,WAAWC,OAAY;AACtC,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,UAAUC,MAAW;AAGpC,MAAI,QAAQ,oBAAoB,SAAS,IAAI,OAAO,iBAAiB,SAAS;AAC5E,oBAAgB,WAAW;AAAA,MACzB,OAAO,IAAI,OAAO,iBAAiB;AAAA,MACnC,sBAAsB;AAAA,MACtB,gBAAgB;AAAA,IACtB,CAAK;AAGD,QAAI,QAAQ,QAAQ;AAClB,sBACG,QAAQ,QAAQ,MAAM,EACtB,KAAK,MAAM;AACV,wBAAgB,gBAAgB,iBAAiB;AAAA,MACnD,CAAC,EACA,MAAM,SAAO;AACZ,gBAAQ,MAAM,uDAAuD,GAAG;AAAA,MAC1E,CAAC;AAAA,IACL;AAAA,EACF;AAGA,MAAI,UAAU,eAAe,WAAW;AAC1C;AAGK,MAAC,cAAc;AAAA,EAClB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,aAAMN;AAAAA,MACN,gBAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,cAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,aAAMC;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA,MACN;AAAA,IACN;AAAA,IACI,YAAY;AAAA;AAAA,MAEhB,aAAMC;AAAAA;AAAAA,MAEA;AAAA,MACA;AAAA,MACN,QAAMC;AAAAA,MACA;AAAA,MACN,UAAMC;AAAAA,MACN,OAAMC;AAAAA,MACN,cAAMC;AAAAA,MACN,aAAMC;AAAAA;AAAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACN,eAAMC;AAAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEN,YAAMC;AAAAA,MACN,WAAMC;AAAAA,MACN,cAAMC;AAAAA,MACA;AAAA,MACN,WAAMC;AAAAA,IACN;AAAA,EACA;AACA;"}
1
+ {"version":3,"file":"music.client.js","sources":["../../../../../src/modules/music/music.client.js"],"sourcesContent":["// Store modules\nimport * as storeAlbums from './store/albums.js';\nimport * as storeArtists from './store/artists.js';\nimport * as storeGenres from './store/genres.js';\nimport * as storePlayer from './store/player.js';\nimport * as storePlaylists from './store/playlists.js';\nimport * as storeSearch from './store/search.js';\nimport * as storeTracks from './store/tracks.js';\n\n// Router\nimport routerMusic from './router/music.js';\n\n// Layouts\nimport MusicBottomPlayer from './components/layouts/MusicBottomPlayer.vue';\n\n// Pages\nimport Album from './components/pages/Album.vue';\nimport Artist from './components/pages/Artist.vue';\nimport MusicHome from './components/pages/MusicHome.vue';\nimport MusicLibrary from './components/pages/MusicLibrary.vue';\nimport TrackCreate from './components/pages/TrackCreate.vue';\nimport Playlist from './components/pages/Playlist.vue';\nimport SearchResults from './components/pages/SearchResults.vue';\nimport Track from './components/pages/Track.vue';\n\n// Components - Player\nimport MusicPlayer from './components/player/MusicPlayer.vue';\nimport TrackProgress from './components/player/TrackProgress.vue';\nimport VolumeControl from './components/player/VolumeControl.vue';\n\n// Components - Cards\nimport AlbumCard from './components/cards/AlbumCard.vue';\nimport ArtistCard from './components/cards/ArtistCard.vue';\nimport PlaylistCard from './components/cards/PlaylistCard.vue';\nimport TrackListCard from './components/cards/TrackListCard.vue';\n\n\n// Components - Forms\nimport ArtistForm from './components/forms/ArtistForm.vue';\nimport AlbumForm from './components/forms/AlbumForm.vue';\nimport PlaylistForm from './components/forms/PlaylistForm.vue';\nimport SearchForm from './components/forms/SearchForm.vue';\nimport TrackForm from './components/forms/TrackForm.vue';\n\n// WebSocket integration for streaming\nimport globalWebSocket from '@martyrs/src/modules/globals/views/classes/globals.websocket.js';\n\n/**\n * Initialize Music module on client-side\n * @param {Object} app - Vue app instance\n * @param {Object} store - Global store instance\n * @param {Object} router - Vue router instance\n * @param {Object} config - Configuration options\n * @param {Object} options - Additional options\n */\nfunction initializeMusic(app, store, router, config, options = {}) {\n const route = options.route || 'Home';\n\n // Register routes\n router.addRoute(route, routerMusic);\n\n // Register store modules\n store.addStore('tracks', storeTracks);\n store.addStore('playlists', storePlaylists);\n store.addStore('albums', storeAlbums);\n store.addStore('artists', storeArtists);\n store.addStore('genres', storeGenres);\n store.addStore('player', storePlayer);\n store.addStore('search', storeSearch);\n\n // Set up WebSocket subscription for music streaming\n if (options.enableStreaming !== false && app.config.globalProperties.WSS_URL) {\n globalWebSocket.initialize({\n wsUrl: app.config.globalProperties.WSS_URL,\n maxReconnectAttempts: 10,\n reconnectDelay: 2000,\n });\n\n // Subscribe to music streaming module when authenticated\n if (options.userId) {\n globalWebSocket\n .connect(options.userId)\n .then(() => {\n globalWebSocket.subscribeModule('music-streaming');\n })\n .catch(err => {\n console.error('Failed to connect to WebSocket for music streaming:', err);\n });\n }\n }\n\n // Register global components if needed\n app.component('MusicPlayer', MusicPlayer);\n}\n\n// Module export\nconst ModuleMusic = {\n initialize: initializeMusic,\n views: {\n store: {\n storeTracks,\n storePlaylists,\n storeAlbums,\n storeArtists,\n storeGenres,\n storePlayer,\n storeSearch,\n },\n router: {\n routerMusic,\n },\n components: {\n // Layouts\n MusicBottomPlayer,\n // Pages\n MusicHome,\n SearchResults,\n Artist,\n Album,\n Playlist,\n Track,\n MusicLibrary,\n TrackCreate,\n // Player Components\n MusicPlayer,\n TrackProgress,\n VolumeControl,\n // Cards\n TrackListCard,\n AlbumCard,\n PlaylistCard,\n ArtistCard,\n // Forms\n ArtistForm,\n AlbumForm,\n PlaylistForm,\n SearchForm,\n TrackForm,\n },\n },\n};\n\n// Named exports for direct component imports\nexport {\n AlbumCard,\n Album,\n ArtistCard,\n Artist,\n // Pages\n MusicHome,\n // Layout\n MusicBottomPlayer,\n MusicLibrary,\n // Player Components\n MusicPlayer,\n TrackCreate,\n PlaylistCard,\n Playlist,\n // Forms\n ArtistForm,\n AlbumForm,\n PlaylistForm,\n SearchForm,\n SearchResults,\n // Cards\n TrackListCard,\n Track,\n TrackForm,\n TrackProgress,\n VolumeControl,\n // Router\n routerMusic,\n storeAlbums,\n storeArtists,\n storeGenres,\n storePlayer,\n storePlaylists,\n storeSearch,\n // Store modules\n storeTracks,\n};\n\n// Default export\nexport default ModuleMusic;\n"],"names":["storeTracks","storePlaylists","storeAlbums","storeArtists","storeGenres","storePlayer","storeSearch","MusicBottomPlayer","Artist","Album","Playlist","Track","MusicLibrary","TrackCreate","TrackListCard","ArtistForm","AlbumForm","PlaylistForm","TrackForm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDA,SAAS,gBAAgB,KAAK,OAAO,QAAQ,QAAQ,UAAU,IAAI;AACjE,QAAM,QAAQ,QAAQ,SAAS;AAG/B,SAAO,SAAS,OAAO,WAAW;AAGlC,QAAM,SAAS,UAAUA,MAAW;AACpC,QAAM,SAAS,aAAaC,SAAc;AAC1C,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,WAAWC,OAAY;AACtC,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,UAAUC,MAAW;AAGpC,MAAI,QAAQ,oBAAoB,SAAS,IAAI,OAAO,iBAAiB,SAAS;AAC5E,oBAAgB,WAAW;AAAA,MACzB,OAAO,IAAI,OAAO,iBAAiB;AAAA,MACnC,sBAAsB;AAAA,MACtB,gBAAgB;AAAA,IACtB,CAAK;AAGD,QAAI,QAAQ,QAAQ;AAClB,sBACG,QAAQ,QAAQ,MAAM,EACtB,KAAK,MAAM;AACV,wBAAgB,gBAAgB,iBAAiB;AAAA,MACnD,CAAC,EACA,MAAM,SAAO;AACZ,gBAAQ,MAAM,uDAAuD,GAAG;AAAA,MAC1E,CAAC;AAAA,IACL;AAAA,EACF;AAGA,MAAI,UAAU,eAAe,WAAW;AAC1C;AAGK,MAAC,cAAc;AAAA,EAClB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,aAAMN;AAAAA,MACN,gBAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,cAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,aAAMC;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA,MACN;AAAA,IACN;AAAA,IACI,YAAY;AAAA;AAAA,MAEhB,mBAAMC;AAAAA;AAAAA,MAEA;AAAA,MACA;AAAA,MACN,QAAMC;AAAAA,MACN,OAAMC;AAAAA,MACN,UAAMC;AAAAA,MACN,OAAMC;AAAAA,MACN,cAAMC;AAAAA,MACN,aAAMC;AAAAA;AAAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEN,eAAMC;AAAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEN,YAAMC;AAAAA,MACN,WAAMC;AAAAA,MACN,cAAMC;AAAAA,MACA;AAAA,MACN,WAAMC;AAAAA,IACN;AAAA,EACA;AACA;"}
@@ -1,12 +1,38 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ require("vue");
4
+ require("vue-router");
5
+ require("../../globals/views/store/globals.cjs");
6
+ ;/* empty css */
7
+ ;/* empty css */
8
+ ;/* empty css */
9
+ ;/* empty css */
10
+ ;/* empty css */
11
+ ;/* empty css */
12
+ ;/* empty css */
13
+ ;/* empty css */
14
+ ;/* empty css */
15
+ ;/* empty css */
16
+ ;/* empty css */
17
+ ;/* empty css */
18
+ ;/* empty css */
19
+ ;/* empty css */
20
+ require("axios");
21
+ ;/* empty css */
22
+ require("../store/playlists.cjs");
23
+ require("../store/tracks.cjs");
24
+ require("../../auth/views/store/auth.cjs");
25
+ const MusicBottomPlayer = require("../components/layouts/MusicBottomPlayer.vue.cjs");
3
26
  const artists = require("./artists.cjs");
4
27
  const albums = require("./albums.cjs");
5
28
  const tracks = require("./tracks.cjs");
6
29
  const playlists = require("./playlists.cjs");
7
30
  const routerMusic = {
8
31
  path: "music",
9
- component: () => Promise.resolve().then(() => require("../components/layouts/MusicLayout.vue.cjs")),
32
+ meta: {
33
+ // sidebar_navigation: SidebarMusic,
34
+ player: MusicBottomPlayer.default
35
+ },
10
36
  children: [
11
37
  {
12
38
  path: "",
@@ -1 +1 @@
1
- {"version":3,"file":"music.cjs","sources":["../../../../../../src/modules/music/router/music.js"],"sourcesContent":["// router/music.js\nimport artistRoutes from './artists.js';\nimport albumRoutes from './albums.js';\nimport trackRoutes from './tracks.js';\nimport playlistRoutes from './playlists.js';\n\nexport default {\n path: 'music',\n component: () => import('../components/layouts/MusicLayout.vue'),\n children: [\n {\n path: '',\n name: 'music-home',\n component: () => import('../components/pages/MusicHome.vue'),\n meta: {\n title: 'Music Home',\n },\n },\n {\n path: 'search',\n name: 'music-search',\n component: () => import('../components/pages/SearchResults.vue'),\n meta: {\n title: 'Search Music',\n },\n },\n {\n path: 'library',\n name: 'music-library',\n component: () => import('../components/pages/MusicLibrary.vue'),\n meta: {\n title: 'My Library',\n requiresAuth: true,\n },\n },\n // Artists routes\n ...artistRoutes,\n // Albums routes\n ...albumRoutes,\n // Tracks routes\n ...trackRoutes,\n // Playlists routes\n ...playlistRoutes,\n ],\n};"],"names":["artistRoutes","albumRoutes","trackRoutes","playlistRoutes"],"mappings":";;;;;;AAMA,MAAA,cAAe;AAAA,EACb,MAAM;AAAA,EACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,2CAAuC,CAAA;AAAA,EAC/D,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,uCAAmC,CAAA;AAAA,MAC3D,MAAM;AAAA,QACJ,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,2CAAuC,CAAA;AAAA,MAC/D,MAAM;AAAA,QACJ,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,0CAAsC,CAAA;AAAA,MAC9D,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,cAAc;AAAA,MACtB;AAAA,IACA;AAAA;AAAA,IAEI,GAAGA,QAAAA;AAAAA;AAAAA,IAEH,GAAGC,OAAAA;AAAAA;AAAAA,IAEH,GAAGC,OAAAA;AAAAA;AAAAA,IAEH,GAAGC,UAAAA;AAAAA,EACP;AACA;;"}
1
+ {"version":3,"file":"music.cjs","sources":["../../../../../../src/modules/music/router/music.js"],"sourcesContent":["import SidebarMusic from '../components/SidebarMusic.vue';\nimport MusicBottomPlayer from '../components/layouts/MusicBottomPlayer.vue';\n\n\n// router/music.js\nimport artistRoutes from './artists.js';\nimport albumRoutes from './albums.js';\nimport trackRoutes from './tracks.js';\nimport playlistRoutes from './playlists.js';\n\nexport default {\n path: 'music',\n meta: {\n // sidebar_navigation: SidebarMusic,\n player: MusicBottomPlayer, \n },\n children: [\n {\n path: '',\n name: 'music-home',\n component: () => import('../components/pages/MusicHome.vue'),\n meta: {\n title: 'Music Home',\n },\n },\n {\n path: 'search',\n name: 'music-search',\n component: () => import('../components/pages/SearchResults.vue'),\n meta: {\n title: 'Search Music',\n },\n },\n {\n path: 'library',\n name: 'music-library',\n component: () => import('../components/pages/MusicLibrary.vue'),\n meta: {\n title: 'My Library',\n requiresAuth: true,\n },\n },\n // Artists routes\n ...artistRoutes,\n // Albums routes\n ...albumRoutes,\n // Tracks routes\n ...trackRoutes,\n // Playlists routes\n ...playlistRoutes,\n ],\n};"],"names":["MusicBottomPlayer","artistRoutes","albumRoutes","trackRoutes","playlistRoutes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAA,cAAe;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA;AAAA,IAEH,QAAQA,kBAAAA;AAAAA,EACb;AAAA,EACE,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,uCAAmC,CAAA;AAAA,MAC3D,MAAM;AAAA,QACJ,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,2CAAuC,CAAA;AAAA,MAC/D,MAAM;AAAA,QACJ,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,0CAAsC,CAAA;AAAA,MAC9D,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,cAAc;AAAA,MACtB;AAAA,IACA;AAAA;AAAA,IAEI,GAAGC,QAAAA;AAAAA;AAAAA,IAEH,GAAGC,OAAAA;AAAAA;AAAAA,IAEH,GAAGC,OAAAA;AAAAA;AAAAA,IAEH,GAAGC,UAAAA;AAAAA,EACP;AACA;;"}
@@ -1,10 +1,36 @@
1
+ import "vue";
2
+ import "vue-router";
3
+ import "../../globals/views/store/globals.js";
4
+ /* empty css */
5
+ /* empty css */
6
+ /* empty css */
7
+ /* empty css */
8
+ /* empty css */
9
+ /* empty css */
10
+ /* empty css */
11
+ /* empty css */
12
+ /* empty css */
13
+ /* empty css */
14
+ /* empty css */
15
+ /* empty css */
16
+ /* empty css */
17
+ /* empty css */
18
+ import "axios";
19
+ /* empty css */
20
+ import "../store/playlists.js";
21
+ import "../store/tracks.js";
22
+ import "../../auth/views/store/auth.js";
23
+ import _sfc_main from "../components/layouts/MusicBottomPlayer.vue.js";
1
24
  import artistRoutes from "./artists.js";
2
25
  import albumRoutes from "./albums.js";
3
26
  import trackRoutes from "./tracks.js";
4
27
  import playlistRoutes from "./playlists.js";
5
28
  const routerMusic = {
6
29
  path: "music",
7
- component: () => import("../components/layouts/MusicLayout.vue.js"),
30
+ meta: {
31
+ // sidebar_navigation: SidebarMusic,
32
+ player: _sfc_main
33
+ },
8
34
  children: [
9
35
  {
10
36
  path: "",
@@ -1 +1 @@
1
- {"version":3,"file":"music.js","sources":["../../../../../../src/modules/music/router/music.js"],"sourcesContent":["// router/music.js\nimport artistRoutes from './artists.js';\nimport albumRoutes from './albums.js';\nimport trackRoutes from './tracks.js';\nimport playlistRoutes from './playlists.js';\n\nexport default {\n path: 'music',\n component: () => import('../components/layouts/MusicLayout.vue'),\n children: [\n {\n path: '',\n name: 'music-home',\n component: () => import('../components/pages/MusicHome.vue'),\n meta: {\n title: 'Music Home',\n },\n },\n {\n path: 'search',\n name: 'music-search',\n component: () => import('../components/pages/SearchResults.vue'),\n meta: {\n title: 'Search Music',\n },\n },\n {\n path: 'library',\n name: 'music-library',\n component: () => import('../components/pages/MusicLibrary.vue'),\n meta: {\n title: 'My Library',\n requiresAuth: true,\n },\n },\n // Artists routes\n ...artistRoutes,\n // Albums routes\n ...albumRoutes,\n // Tracks routes\n ...trackRoutes,\n // Playlists routes\n ...playlistRoutes,\n ],\n};"],"names":[],"mappings":";;;;AAMA,MAAA,cAAe;AAAA,EACb,MAAM;AAAA,EACN,WAAW,MAAM,OAAO,0CAAuC;AAAA,EAC/D,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,MAAM,OAAO,sCAAmC;AAAA,MAC3D,MAAM;AAAA,QACJ,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,MAAM,OAAO,0CAAuC;AAAA,MAC/D,MAAM;AAAA,QACJ,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,MAAM,OAAO,yCAAsC;AAAA,MAC9D,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,cAAc;AAAA,MACtB;AAAA,IACA;AAAA;AAAA,IAEI,GAAG;AAAA;AAAA,IAEH,GAAG;AAAA;AAAA,IAEH,GAAG;AAAA;AAAA,IAEH,GAAG;AAAA,EACP;AACA;"}
1
+ {"version":3,"file":"music.js","sources":["../../../../../../src/modules/music/router/music.js"],"sourcesContent":["import SidebarMusic from '../components/SidebarMusic.vue';\nimport MusicBottomPlayer from '../components/layouts/MusicBottomPlayer.vue';\n\n\n// router/music.js\nimport artistRoutes from './artists.js';\nimport albumRoutes from './albums.js';\nimport trackRoutes from './tracks.js';\nimport playlistRoutes from './playlists.js';\n\nexport default {\n path: 'music',\n meta: {\n // sidebar_navigation: SidebarMusic,\n player: MusicBottomPlayer, \n },\n children: [\n {\n path: '',\n name: 'music-home',\n component: () => import('../components/pages/MusicHome.vue'),\n meta: {\n title: 'Music Home',\n },\n },\n {\n path: 'search',\n name: 'music-search',\n component: () => import('../components/pages/SearchResults.vue'),\n meta: {\n title: 'Search Music',\n },\n },\n {\n path: 'library',\n name: 'music-library',\n component: () => import('../components/pages/MusicLibrary.vue'),\n meta: {\n title: 'My Library',\n requiresAuth: true,\n },\n },\n // Artists routes\n ...artistRoutes,\n // Albums routes\n ...albumRoutes,\n // Tracks routes\n ...trackRoutes,\n // Playlists routes\n ...playlistRoutes,\n ],\n};"],"names":["MusicBottomPlayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAA,cAAe;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA;AAAA,IAEH,QAAQA;AAAAA,EACb;AAAA,EACE,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,MAAM,OAAO,sCAAmC;AAAA,MAC3D,MAAM;AAAA,QACJ,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,MAAM,OAAO,0CAAuC;AAAA,MAC/D,MAAM;AAAA,QACJ,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,MAAM,OAAO,yCAAsC;AAAA,MAC9D,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,cAAc;AAAA,MACtB;AAAA,IACA;AAAA;AAAA,IAEI,GAAG;AAAA;AAAA,IAEH,GAAG;AAAA;AAAA,IAEH,GAAG;AAAA;AAAA,IAEH,GAAG;AAAA,EACP;AACA;"}
@@ -10,7 +10,8 @@ const state = vue.reactive({
10
10
  currentArtist: null,
11
11
  discography: {
12
12
  albums: [],
13
- singles: []
13
+ singles: [],
14
+ tracks: []
14
15
  },
15
16
  relatedArtists: [],
16
17
  isLoading: false,
@@ -59,9 +60,9 @@ const actions = {
59
60
  try {
60
61
  const response = await fetch(`${process.env.API_URL}/api/artists/url/${url}`);
61
62
  const artist = await response.json();
62
- state.currentArtist = artist;
63
63
  await this.fetchArtistDiscography(artist._id);
64
64
  await this.fetchRelatedArtists(artist._id);
65
+ state.currentArtist = artist;
65
66
  return artist;
66
67
  } catch (error) {
67
68
  console.error("Error fetching artist by URL:", error);
@@ -74,12 +75,13 @@ const actions = {
74
75
  const discography = await response.json();
75
76
  state.discography = {
76
77
  albums: discography.albums || [],
77
- singles: discography.singles || []
78
+ singles: discography.singles || [],
79
+ tracks: discography.tracks || []
78
80
  };
79
81
  return discography;
80
82
  } catch (error) {
81
83
  console.error("Error fetching artist discography:", error);
82
- return { albums: [], singles: [] };
84
+ return { albums: [], singles: [], tracks: [] };
83
85
  }
84
86
  },
85
87
  async fetchRelatedArtists(artistId) {
@@ -1 +1 @@
1
- {"version":3,"file":"artists.cjs","sources":["../../../../../../src/modules/music/store/artists.js"],"sourcesContent":["// store/artists.js\nimport Store from '@martyrs/src/modules/globals/views/classes/globals.store.js';\nimport { reactive } from 'vue';\n\n// Create store instance\nconst artistStore = new Store(`${process.env.API_URL}/api/artists`);\n\n// State\nexport const state = reactive({\n artists: [],\n topArtists: [],\n userArtists: [],\n currentArtist: null,\n discography: {\n albums: [],\n singles: [],\n },\n relatedArtists: [],\n isLoading: false,\n loadingTopArtists: false,\n});\n\n// Actions\nexport const actions = {\n async fetchArtists(options = {}) {\n state.isLoading = true;\n try {\n const artists = await artistStore.read(options);\n state.artists = artists;\n return artists;\n } catch (error) {\n console.error('Error fetching artists:', error);\n return [];\n } finally {\n state.isLoading = false;\n }\n },\n\n async fetchTopArtists(options = {}) {\n state.loadingTopArtists = true;\n try {\n // Обрабатываем options от Feed компонента\n const queryOptions = {\n limit: options.limit || 10,\n sortParam: options.sortParam || 'popularity',\n sortOrder: options.sortOrder || 'desc',\n status: 'published',\n };\n \n // Добавляем дополнительные параметры если есть\n if (options.skip) queryOptions.skip = options.skip;\n if (options.search) queryOptions.search = options.search;\n \n // Если указан top=true, используем сортировку по популярности\n if (options.top) {\n queryOptions.sortParam = 'popularity';\n queryOptions.sortOrder = 'desc';\n }\n\n const artists = await artistStore.read(queryOptions);\n state.topArtists = artists;\n return artists;\n } catch (error) {\n console.error('Error fetching top artists:', error);\n return [];\n } finally {\n state.loadingTopArtists = false;\n }\n },\n\n async fetchArtistByUrl(url) {\n try {\n const response = await fetch(`${process.env.API_URL}/api/artists/url/${url}`);\n const artist = await response.json();\n state.currentArtist = artist;\n\n // Fetch artist discography\n await this.fetchArtistDiscography(artist._id);\n\n // Fetch related artists\n await this.fetchRelatedArtists(artist._id);\n\n return artist;\n } catch (error) {\n console.error('Error fetching artist by URL:', error);\n return null;\n }\n },\n\n async fetchArtistDiscography(artistId) {\n try {\n const response = await fetch(`${process.env.API_URL}/api/artists/${artistId}/discography`);\n const discography = await response.json();\n state.discography = {\n albums: discography.albums || [],\n singles: discography.singles || [],\n };\n return discography;\n } catch (error) {\n console.error('Error fetching artist discography:', error);\n return { albums: [], singles: [] };\n }\n },\n\n async fetchRelatedArtists(artistId) {\n try {\n const response = await fetch(`${process.env.API_URL}/api/artists/${artistId}/related`);\n const artists = await response.json();\n state.relatedArtists = artists;\n return artists;\n } catch (error) {\n console.error('Error fetching related artists:', error);\n return [];\n }\n },\n\n async createArtist(artistData) {\n try {\n const createdArtist = await artistStore.create(artistData);\n // Update local state\n state.artists.unshift(createdArtist);\n state.userArtists.unshift(createdArtist);\n return createdArtist;\n } catch (error) {\n console.error('Error creating artist:', error);\n throw error;\n }\n },\n\n async updateArtist(artistData) {\n try {\n const updatedArtist = await artistStore.update(artistData);\n\n // Update local state\n const index = state.artists.findIndex(a => a._id === updatedArtist._id);\n if (index !== -1) {\n state.artists[index] = updatedArtist;\n }\n\n const userIndex = state.userArtists.findIndex(a => a._id === updatedArtist._id);\n if (userIndex !== -1) {\n state.userArtists[userIndex] = updatedArtist;\n }\n\n if (state.currentArtist && state.currentArtist._id === updatedArtist._id) {\n state.currentArtist = updatedArtist;\n }\n\n return updatedArtist;\n } catch (error) {\n console.error('Error updating artist:', error);\n throw error;\n }\n },\n\n async deleteArtist(artistId) {\n try {\n await artistStore.delete({ _id: artistId });\n\n // Update local state\n state.artists = state.artists.filter(a => a._id !== artistId);\n state.userArtists = state.userArtists.filter(a => a._id !== artistId);\n\n if (state.currentArtist && state.currentArtist._id === artistId) {\n state.currentArtist = null;\n }\n\n return true;\n } catch (error) {\n console.error('Error deleting artist:', error);\n throw error;\n }\n },\n\n async fetchUserArtists(userId) {\n try {\n const options = {\n creator: userId,\n limit: 100,\n };\n\n const artists = await artistStore.read(options);\n\n console.log('artists is', artists);\n state.userArtists = artists;\n console.log('state is', state);\n return artists;\n } catch (error) {\n console.error('Error fetching user artists:', error);\n return [];\n }\n },\n};\n"],"names":["Store","reactive"],"mappings":"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"}
1
+ {"version":3,"file":"artists.cjs","sources":["../../../../../../src/modules/music/store/artists.js"],"sourcesContent":["// store/artists.js\nimport Store from '@martyrs/src/modules/globals/views/classes/globals.store.js';\nimport { reactive } from 'vue';\n\n// Create store instance\nconst artistStore = new Store(`${process.env.API_URL}/api/artists`);\n\n// State\nexport const state = reactive({\n artists: [],\n topArtists: [],\n userArtists: [],\n currentArtist: null,\n discography: {\n albums: [],\n singles: [],\n tracks: [],\n },\n relatedArtists: [],\n isLoading: false,\n loadingTopArtists: false,\n});\n\n// Actions\nexport const actions = {\n async fetchArtists(options = {}) {\n state.isLoading = true;\n try {\n const artists = await artistStore.read(options);\n state.artists = artists;\n return artists;\n } catch (error) {\n console.error('Error fetching artists:', error);\n return [];\n } finally {\n state.isLoading = false;\n }\n },\n\n async fetchTopArtists(options = {}) {\n state.loadingTopArtists = true;\n try {\n // Обрабатываем options от Feed компонента\n const queryOptions = {\n limit: options.limit || 10,\n sortParam: options.sortParam || 'popularity',\n sortOrder: options.sortOrder || 'desc',\n status: 'published',\n };\n \n // Добавляем дополнительные параметры если есть\n if (options.skip) queryOptions.skip = options.skip;\n if (options.search) queryOptions.search = options.search;\n \n // Если указан top=true, используем сортировку по популярности\n if (options.top) {\n queryOptions.sortParam = 'popularity';\n queryOptions.sortOrder = 'desc';\n }\n\n const artists = await artistStore.read(queryOptions);\n state.topArtists = artists;\n return artists;\n } catch (error) {\n console.error('Error fetching top artists:', error);\n return [];\n } finally {\n state.loadingTopArtists = false;\n }\n },\n\n async fetchArtistByUrl(url) {\n try {\n const response = await fetch(`${process.env.API_URL}/api/artists/url/${url}`);\n const artist = await response.json();\n\n // Fetch artist discography\n await this.fetchArtistDiscography(artist._id);\n\n // Fetch related artists\n await this.fetchRelatedArtists(artist._id);\n\n // Set artist only after all data is loaded\n state.currentArtist = artist;\n\n return artist;\n } catch (error) {\n console.error('Error fetching artist by URL:', error);\n return null;\n }\n },\n\n async fetchArtistDiscography(artistId) {\n try {\n const response = await fetch(`${process.env.API_URL}/api/artists/${artistId}/discography`);\n const discography = await response.json();\n state.discography = {\n albums: discography.albums || [],\n singles: discography.singles || [],\n tracks: discography.tracks || [],\n };\n return discography;\n } catch (error) {\n console.error('Error fetching artist discography:', error);\n return { albums: [], singles: [], tracks: [] };\n }\n },\n\n async fetchRelatedArtists(artistId) {\n try {\n const response = await fetch(`${process.env.API_URL}/api/artists/${artistId}/related`);\n const artists = await response.json();\n state.relatedArtists = artists;\n return artists;\n } catch (error) {\n console.error('Error fetching related artists:', error);\n return [];\n }\n },\n\n async createArtist(artistData) {\n try {\n const createdArtist = await artistStore.create(artistData);\n // Update local state\n state.artists.unshift(createdArtist);\n state.userArtists.unshift(createdArtist);\n return createdArtist;\n } catch (error) {\n console.error('Error creating artist:', error);\n throw error;\n }\n },\n\n async updateArtist(artistData) {\n try {\n const updatedArtist = await artistStore.update(artistData);\n\n // Update local state\n const index = state.artists.findIndex(a => a._id === updatedArtist._id);\n if (index !== -1) {\n state.artists[index] = updatedArtist;\n }\n\n const userIndex = state.userArtists.findIndex(a => a._id === updatedArtist._id);\n if (userIndex !== -1) {\n state.userArtists[userIndex] = updatedArtist;\n }\n\n if (state.currentArtist && state.currentArtist._id === updatedArtist._id) {\n state.currentArtist = updatedArtist;\n }\n\n return updatedArtist;\n } catch (error) {\n console.error('Error updating artist:', error);\n throw error;\n }\n },\n\n async deleteArtist(artistId) {\n try {\n await artistStore.delete({ _id: artistId });\n\n // Update local state\n state.artists = state.artists.filter(a => a._id !== artistId);\n state.userArtists = state.userArtists.filter(a => a._id !== artistId);\n\n if (state.currentArtist && state.currentArtist._id === artistId) {\n state.currentArtist = null;\n }\n\n return true;\n } catch (error) {\n console.error('Error deleting artist:', error);\n throw error;\n }\n },\n\n async fetchUserArtists(userId) {\n try {\n const options = {\n creator: userId,\n limit: 100,\n };\n\n const artists = await artistStore.read(options);\n\n console.log('artists is', artists);\n state.userArtists = artists;\n console.log('state is', state);\n return artists;\n } catch (error) {\n console.error('Error fetching user artists:', error);\n return [];\n }\n },\n};\n"],"names":["Store","reactive"],"mappings":"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"}
@@ -8,7 +8,8 @@ const state = reactive({
8
8
  currentArtist: null,
9
9
  discography: {
10
10
  albums: [],
11
- singles: []
11
+ singles: [],
12
+ tracks: []
12
13
  },
13
14
  relatedArtists: [],
14
15
  isLoading: false,
@@ -57,9 +58,9 @@ const actions = {
57
58
  try {
58
59
  const response = await fetch(`${process.env.API_URL}/api/artists/url/${url}`);
59
60
  const artist = await response.json();
60
- state.currentArtist = artist;
61
61
  await this.fetchArtistDiscography(artist._id);
62
62
  await this.fetchRelatedArtists(artist._id);
63
+ state.currentArtist = artist;
63
64
  return artist;
64
65
  } catch (error) {
65
66
  console.error("Error fetching artist by URL:", error);
@@ -72,12 +73,13 @@ const actions = {
72
73
  const discography = await response.json();
73
74
  state.discography = {
74
75
  albums: discography.albums || [],
75
- singles: discography.singles || []
76
+ singles: discography.singles || [],
77
+ tracks: discography.tracks || []
76
78
  };
77
79
  return discography;
78
80
  } catch (error) {
79
81
  console.error("Error fetching artist discography:", error);
80
- return { albums: [], singles: [] };
82
+ return { albums: [], singles: [], tracks: [] };
81
83
  }
82
84
  },
83
85
  async fetchRelatedArtists(artistId) {
@@ -1 +1 @@
1
- {"version":3,"file":"artists.js","sources":["../../../../../../src/modules/music/store/artists.js"],"sourcesContent":["// store/artists.js\nimport Store from '@martyrs/src/modules/globals/views/classes/globals.store.js';\nimport { reactive } from 'vue';\n\n// Create store instance\nconst artistStore = new Store(`${process.env.API_URL}/api/artists`);\n\n// State\nexport const state = reactive({\n artists: [],\n topArtists: [],\n userArtists: [],\n currentArtist: null,\n discography: {\n albums: [],\n singles: [],\n },\n relatedArtists: [],\n isLoading: false,\n loadingTopArtists: false,\n});\n\n// Actions\nexport const actions = {\n async fetchArtists(options = {}) {\n state.isLoading = true;\n try {\n const artists = await artistStore.read(options);\n state.artists = artists;\n return artists;\n } catch (error) {\n console.error('Error fetching artists:', error);\n return [];\n } finally {\n state.isLoading = false;\n }\n },\n\n async fetchTopArtists(options = {}) {\n state.loadingTopArtists = true;\n try {\n // Обрабатываем options от Feed компонента\n const queryOptions = {\n limit: options.limit || 10,\n sortParam: options.sortParam || 'popularity',\n sortOrder: options.sortOrder || 'desc',\n status: 'published',\n };\n \n // Добавляем дополнительные параметры если есть\n if (options.skip) queryOptions.skip = options.skip;\n if (options.search) queryOptions.search = options.search;\n \n // Если указан top=true, используем сортировку по популярности\n if (options.top) {\n queryOptions.sortParam = 'popularity';\n queryOptions.sortOrder = 'desc';\n }\n\n const artists = await artistStore.read(queryOptions);\n state.topArtists = artists;\n return artists;\n } catch (error) {\n console.error('Error fetching top artists:', error);\n return [];\n } finally {\n state.loadingTopArtists = false;\n }\n },\n\n async fetchArtistByUrl(url) {\n try {\n const response = await fetch(`${process.env.API_URL}/api/artists/url/${url}`);\n const artist = await response.json();\n state.currentArtist = artist;\n\n // Fetch artist discography\n await this.fetchArtistDiscography(artist._id);\n\n // Fetch related artists\n await this.fetchRelatedArtists(artist._id);\n\n return artist;\n } catch (error) {\n console.error('Error fetching artist by URL:', error);\n return null;\n }\n },\n\n async fetchArtistDiscography(artistId) {\n try {\n const response = await fetch(`${process.env.API_URL}/api/artists/${artistId}/discography`);\n const discography = await response.json();\n state.discography = {\n albums: discography.albums || [],\n singles: discography.singles || [],\n };\n return discography;\n } catch (error) {\n console.error('Error fetching artist discography:', error);\n return { albums: [], singles: [] };\n }\n },\n\n async fetchRelatedArtists(artistId) {\n try {\n const response = await fetch(`${process.env.API_URL}/api/artists/${artistId}/related`);\n const artists = await response.json();\n state.relatedArtists = artists;\n return artists;\n } catch (error) {\n console.error('Error fetching related artists:', error);\n return [];\n }\n },\n\n async createArtist(artistData) {\n try {\n const createdArtist = await artistStore.create(artistData);\n // Update local state\n state.artists.unshift(createdArtist);\n state.userArtists.unshift(createdArtist);\n return createdArtist;\n } catch (error) {\n console.error('Error creating artist:', error);\n throw error;\n }\n },\n\n async updateArtist(artistData) {\n try {\n const updatedArtist = await artistStore.update(artistData);\n\n // Update local state\n const index = state.artists.findIndex(a => a._id === updatedArtist._id);\n if (index !== -1) {\n state.artists[index] = updatedArtist;\n }\n\n const userIndex = state.userArtists.findIndex(a => a._id === updatedArtist._id);\n if (userIndex !== -1) {\n state.userArtists[userIndex] = updatedArtist;\n }\n\n if (state.currentArtist && state.currentArtist._id === updatedArtist._id) {\n state.currentArtist = updatedArtist;\n }\n\n return updatedArtist;\n } catch (error) {\n console.error('Error updating artist:', error);\n throw error;\n }\n },\n\n async deleteArtist(artistId) {\n try {\n await artistStore.delete({ _id: artistId });\n\n // Update local state\n state.artists = state.artists.filter(a => a._id !== artistId);\n state.userArtists = state.userArtists.filter(a => a._id !== artistId);\n\n if (state.currentArtist && state.currentArtist._id === artistId) {\n state.currentArtist = null;\n }\n\n return true;\n } catch (error) {\n console.error('Error deleting artist:', error);\n throw error;\n }\n },\n\n async fetchUserArtists(userId) {\n try {\n const options = {\n creator: userId,\n limit: 100,\n };\n\n const artists = await artistStore.read(options);\n\n console.log('artists is', artists);\n state.userArtists = artists;\n console.log('state is', state);\n return artists;\n } catch (error) {\n console.error('Error fetching user artists:', error);\n return [];\n }\n },\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artists.js","sources":["../../../../../../src/modules/music/store/artists.js"],"sourcesContent":["// store/artists.js\nimport Store from '@martyrs/src/modules/globals/views/classes/globals.store.js';\nimport { reactive } from 'vue';\n\n// Create store instance\nconst artistStore = new Store(`${process.env.API_URL}/api/artists`);\n\n// State\nexport const state = reactive({\n artists: [],\n topArtists: [],\n userArtists: [],\n currentArtist: null,\n discography: {\n albums: [],\n singles: [],\n tracks: [],\n },\n relatedArtists: [],\n isLoading: false,\n loadingTopArtists: false,\n});\n\n// Actions\nexport const actions = {\n async fetchArtists(options = {}) {\n state.isLoading = true;\n try {\n const artists = await artistStore.read(options);\n state.artists = artists;\n return artists;\n } catch (error) {\n console.error('Error fetching artists:', error);\n return [];\n } finally {\n state.isLoading = false;\n }\n },\n\n async fetchTopArtists(options = {}) {\n state.loadingTopArtists = true;\n try {\n // Обрабатываем options от Feed компонента\n const queryOptions = {\n limit: options.limit || 10,\n sortParam: options.sortParam || 'popularity',\n sortOrder: options.sortOrder || 'desc',\n status: 'published',\n };\n \n // Добавляем дополнительные параметры если есть\n if (options.skip) queryOptions.skip = options.skip;\n if (options.search) queryOptions.search = options.search;\n \n // Если указан top=true, используем сортировку по популярности\n if (options.top) {\n queryOptions.sortParam = 'popularity';\n queryOptions.sortOrder = 'desc';\n }\n\n const artists = await artistStore.read(queryOptions);\n state.topArtists = artists;\n return artists;\n } catch (error) {\n console.error('Error fetching top artists:', error);\n return [];\n } finally {\n state.loadingTopArtists = false;\n }\n },\n\n async fetchArtistByUrl(url) {\n try {\n const response = await fetch(`${process.env.API_URL}/api/artists/url/${url}`);\n const artist = await response.json();\n\n // Fetch artist discography\n await this.fetchArtistDiscography(artist._id);\n\n // Fetch related artists\n await this.fetchRelatedArtists(artist._id);\n\n // Set artist only after all data is loaded\n state.currentArtist = artist;\n\n return artist;\n } catch (error) {\n console.error('Error fetching artist by URL:', error);\n return null;\n }\n },\n\n async fetchArtistDiscography(artistId) {\n try {\n const response = await fetch(`${process.env.API_URL}/api/artists/${artistId}/discography`);\n const discography = await response.json();\n state.discography = {\n albums: discography.albums || [],\n singles: discography.singles || [],\n tracks: discography.tracks || [],\n };\n return discography;\n } catch (error) {\n console.error('Error fetching artist discography:', error);\n return { albums: [], singles: [], tracks: [] };\n }\n },\n\n async fetchRelatedArtists(artistId) {\n try {\n const response = await fetch(`${process.env.API_URL}/api/artists/${artistId}/related`);\n const artists = await response.json();\n state.relatedArtists = artists;\n return artists;\n } catch (error) {\n console.error('Error fetching related artists:', error);\n return [];\n }\n },\n\n async createArtist(artistData) {\n try {\n const createdArtist = await artistStore.create(artistData);\n // Update local state\n state.artists.unshift(createdArtist);\n state.userArtists.unshift(createdArtist);\n return createdArtist;\n } catch (error) {\n console.error('Error creating artist:', error);\n throw error;\n }\n },\n\n async updateArtist(artistData) {\n try {\n const updatedArtist = await artistStore.update(artistData);\n\n // Update local state\n const index = state.artists.findIndex(a => a._id === updatedArtist._id);\n if (index !== -1) {\n state.artists[index] = updatedArtist;\n }\n\n const userIndex = state.userArtists.findIndex(a => a._id === updatedArtist._id);\n if (userIndex !== -1) {\n state.userArtists[userIndex] = updatedArtist;\n }\n\n if (state.currentArtist && state.currentArtist._id === updatedArtist._id) {\n state.currentArtist = updatedArtist;\n }\n\n return updatedArtist;\n } catch (error) {\n console.error('Error updating artist:', error);\n throw error;\n }\n },\n\n async deleteArtist(artistId) {\n try {\n await artistStore.delete({ _id: artistId });\n\n // Update local state\n state.artists = state.artists.filter(a => a._id !== artistId);\n state.userArtists = state.userArtists.filter(a => a._id !== artistId);\n\n if (state.currentArtist && state.currentArtist._id === artistId) {\n state.currentArtist = null;\n }\n\n return true;\n } catch (error) {\n console.error('Error deleting artist:', error);\n throw error;\n }\n },\n\n async fetchUserArtists(userId) {\n try {\n const options = {\n creator: userId,\n limit: 100,\n };\n\n const artists = await artistStore.read(options);\n\n console.log('artists is', artists);\n state.userArtists = artists;\n console.log('state is', state);\n return artists;\n } catch (error) {\n console.error('Error fetching user artists:', error);\n return [];\n }\n },\n};\n"],"names":[],"mappings":"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"}