@ozdao/martyrs 0.2.484 → 0.2.486
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.
- package/dist/{Media-2NvSR0vE.js → Media-CXQSPHt2.js} +1 -1
- package/dist/{Media-EYG9WPI4.cjs → Media-DhpD64nT.cjs} +1 -1
- package/dist/_virtual/index.cjs +4 -4
- package/dist/_virtual/index.js +4 -4
- package/dist/_virtual/index2.cjs +4 -4
- package/dist/_virtual/index2.js +4 -4
- package/dist/auth.server.cjs +2 -23
- package/dist/auth.server.js +1 -22
- package/dist/globals.crud-BQG1Lm0A.js +90 -0
- package/dist/globals.crud-Dv7UXbRM.cjs +89 -0
- package/dist/globals.server.cjs +3 -322
- package/dist/globals.server.js +1 -303
- package/dist/globals.websocket-DzvdIBf6.js +306 -0
- package/dist/globals.websocket-k6_B1T7k.cjs +322 -0
- package/dist/{main-BT1yoKH2.js → main-Cfh5138F.js} +2102 -1993
- package/dist/main-DKJqboZy.cjs +11 -0
- package/dist/martyrs/src/components/Button/{Button.vue2.cjs → Button.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Button/{Button.vue2.js.map → Button.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Button/{Button.vue2.js → Button.vue.js} +2 -2
- package/dist/martyrs/src/components/Button/Button.vue.js.map +1 -0
- package/dist/martyrs/src/components/{DatePicker → Calendar}/Calendar.vue.cjs +1 -1
- package/dist/martyrs/src/components/Calendar/Calendar.vue.cjs.map +1 -0
- package/dist/martyrs/src/components/{DatePicker → Calendar}/Calendar.vue.js +1 -1
- package/dist/martyrs/src/components/Calendar/Calendar.vue.js.map +1 -0
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.cjs → Dropdown.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js.map → Dropdown.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js → Dropdown.vue.js} +2 -2
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +1 -0
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +2 -2
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
- package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
- package/dist/martyrs/src/components/Field/Field.vue.cjs +13 -7
- package/dist/martyrs/src/components/Field/Field.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Field/Field.vue.js +14 -8
- package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +1 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +1 -1
- package/dist/martyrs/src/components/Popup/{Popup.vue2.cjs → Popup.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Popup/{Popup.vue2.js.map → Popup.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Popup/{Popup.vue2.js → Popup.vue.js} +2 -2
- package/dist/martyrs/src/components/Popup/Popup.vue.js.map +1 -0
- package/dist/martyrs/src/modules/auth/auth.client.cjs +3 -0
- package/dist/martyrs/src/modules/auth/auth.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/auth.client.js +3 -0
- package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
- package/dist/martyrs/src/modules/auth/locales/en.cjs +79 -0
- package/dist/martyrs/src/modules/auth/locales/en.cjs.map +1 -0
- package/dist/martyrs/src/modules/auth/locales/en.js +79 -0
- package/dist/martyrs/src/modules/auth/locales/en.js.map +1 -0
- package/dist/martyrs/src/modules/auth/locales/index.cjs +10 -0
- package/dist/martyrs/src/modules/auth/locales/index.cjs.map +1 -0
- package/dist/martyrs/src/modules/auth/locales/index.js +10 -0
- package/dist/martyrs/src/modules/auth/locales/index.js.map +1 -0
- package/dist/martyrs/src/modules/auth/locales/ru.cjs +79 -0
- package/dist/martyrs/src/modules/auth/locales/ru.cjs.map +1 -0
- package/dist/martyrs/src/modules/auth/locales/ru.js +79 -0
- package/dist/martyrs/src/modules/auth/locales/ru.js.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +0 -9
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +2 -11
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs +4 -6
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +4 -6
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +7 -9
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +7 -9
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +11 -13
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +11 -13
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +12 -14
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +12 -14
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +11 -13
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +11 -13
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs +5 -47
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +5 -47
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +2 -2
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +3 -3
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +3 -3
- package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +2 -2
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +2 -2
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/globals.client.cjs +1 -0
- package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.js +1 -0
- package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +3 -3
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +3 -3
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +1 -1
- package/dist/martyrs/src/modules/globals/views/utils/axios-instance.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/utils/axios-instance.js.map +1 -1
- package/dist/martyrs/src/modules/icons/actions/IconShow.vue.cjs +49 -0
- package/dist/martyrs/src/modules/icons/actions/IconShow.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/actions/IconShow.vue.js +49 -0
- package/dist/martyrs/src/modules/icons/actions/IconShow.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs +34 -0
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js +34 -0
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +115 -122
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +163 -170
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.cjs +87 -0
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +87 -0
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.cjs +83 -0
- package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js +83 -0
- package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.cjs +83 -0
- package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +83 -0
- package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/cards/TrackCard.vue.cjs +68 -0
- package/dist/martyrs/src/modules/music/components/cards/TrackCard.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/cards/TrackCard.vue.js +68 -0
- package/dist/martyrs/src/modules/music/components/cards/TrackCard.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +174 -0
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +174 -0
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs +80 -0
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +80 -0
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/forms/UploadForm.vue.cjs +328 -0
- package/dist/martyrs/src/modules/music/components/forms/UploadForm.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/forms/UploadForm.vue.js +328 -0
- package/dist/martyrs/src/modules/music/components/forms/UploadForm.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/layouts/MusicLayout.vue.cjs +115 -0
- package/dist/martyrs/src/modules/music/components/layouts/MusicLayout.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/layouts/MusicLayout.vue.js +115 -0
- package/dist/martyrs/src/modules/music/components/layouts/MusicLayout.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/lists/AlbumList.vue.cjs +44 -0
- package/dist/martyrs/src/modules/music/components/lists/AlbumList.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/lists/AlbumList.vue.js +44 -0
- package/dist/martyrs/src/modules/music/components/lists/AlbumList.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/lists/ArtistList.vue.cjs +305 -0
- package/dist/martyrs/src/modules/music/components/lists/ArtistList.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/lists/ArtistList.vue.js +305 -0
- package/dist/martyrs/src/modules/music/components/lists/ArtistList.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/lists/PlaylistList.vue.cjs +44 -0
- package/dist/martyrs/src/modules/music/components/lists/PlaylistList.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/lists/PlaylistList.vue.js +44 -0
- package/dist/martyrs/src/modules/music/components/lists/PlaylistList.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/lists/TrackList.vue.cjs +199 -0
- package/dist/martyrs/src/modules/music/components/lists/TrackList.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/lists/TrackList.vue.js +199 -0
- package/dist/martyrs/src/modules/music/components/lists/TrackList.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/AlbumDetail.vue.cjs +290 -0
- package/dist/martyrs/src/modules/music/components/pages/AlbumDetail.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/AlbumDetail.vue.js +290 -0
- package/dist/martyrs/src/modules/music/components/pages/AlbumDetail.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/ArtistDetail.vue.cjs +467 -0
- package/dist/martyrs/src/modules/music/components/pages/ArtistDetail.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/ArtistDetail.vue.js +467 -0
- package/dist/martyrs/src/modules/music/components/pages/ArtistDetail.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/ArtistForm.vue.cjs +382 -0
- package/dist/martyrs/src/modules/music/components/pages/ArtistForm.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/ArtistForm.vue.js +382 -0
- package/dist/martyrs/src/modules/music/components/pages/ArtistForm.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/ArtistManager.vue.cjs +303 -0
- package/dist/martyrs/src/modules/music/components/pages/ArtistManager.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/ArtistManager.vue.js +303 -0
- package/dist/martyrs/src/modules/music/components/pages/ArtistManager.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.cjs +221 -0
- package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +221 -0
- package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +200 -0
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +200 -0
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/MusicUpload.vue.cjs +50 -0
- package/dist/martyrs/src/modules/music/components/pages/MusicUpload.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/MusicUpload.vue.js +50 -0
- package/dist/martyrs/src/modules/music/components/pages/MusicUpload.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/PlaylistDetail.vue.cjs +556 -0
- package/dist/martyrs/src/modules/music/components/pages/PlaylistDetail.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/PlaylistDetail.vue.js +556 -0
- package/dist/martyrs/src/modules/music/components/pages/PlaylistDetail.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs +449 -0
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +449 -0
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/TrackDetail.vue.cjs +87 -0
- package/dist/martyrs/src/modules/music/components/pages/TrackDetail.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/TrackDetail.vue.js +87 -0
- package/dist/martyrs/src/modules/music/components/pages/TrackDetail.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.cjs +227 -0
- package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +227 -0
- package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.cjs +85 -0
- package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.js +85 -0
- package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.cjs +71 -0
- package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +71 -0
- package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/music.client.cjs +137 -0
- package/dist/martyrs/src/modules/music/music.client.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/music.client.js +137 -0
- package/dist/martyrs/src/modules/music/music.client.js.map +1 -0
- package/dist/martyrs/src/modules/music/router/music.cjs +99 -0
- package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/router/music.js +99 -0
- package/dist/martyrs/src/modules/music/router/music.js.map +1 -0
- package/dist/martyrs/src/modules/music/store/albums.cjs +167 -0
- package/dist/martyrs/src/modules/music/store/albums.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/store/albums.js +167 -0
- package/dist/martyrs/src/modules/music/store/albums.js.map +1 -0
- package/dist/martyrs/src/modules/music/store/artists.cjs +154 -0
- package/dist/martyrs/src/modules/music/store/artists.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/store/artists.js +154 -0
- package/dist/martyrs/src/modules/music/store/artists.js.map +1 -0
- package/dist/martyrs/src/modules/music/store/player.cjs +297 -0
- package/dist/martyrs/src/modules/music/store/player.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/store/player.js +297 -0
- package/dist/martyrs/src/modules/music/store/player.js.map +1 -0
- package/dist/martyrs/src/modules/music/store/playlists.cjs +174 -0
- package/dist/martyrs/src/modules/music/store/playlists.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/store/playlists.js +174 -0
- package/dist/martyrs/src/modules/music/store/playlists.js.map +1 -0
- package/dist/martyrs/src/modules/music/store/search.cjs +109 -0
- package/dist/martyrs/src/modules/music/store/search.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/store/search.js +109 -0
- package/dist/martyrs/src/modules/music/store/search.js.map +1 -0
- package/dist/martyrs/src/modules/music/store/tracks.cjs +180 -0
- package/dist/martyrs/src/modules/music/store/tracks.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/store/tracks.js +180 -0
- package/dist/martyrs/src/modules/music/store/tracks.js.map +1 -0
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs +1 -1
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +2 -2
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +3 -3
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +3 -3
- package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.cjs +3 -3
- package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.js +3 -3
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +2 -2
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +3 -3
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +3 -3
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +38 -36
- package/dist/music.server.cjs +1407 -0
- package/dist/music.server.js +1407 -0
- package/dist/orders.server.cjs +3 -88
- package/dist/orders.server.js +2 -87
- package/dist/socials.schema-BOZV82Mp.js +25 -0
- package/dist/socials.schema-CtpSF9dE.cjs +24 -0
- package/dist/style.css +250 -97
- package/package.json +1 -1
- package/src/.martyrs/filemap.json +2 -2
- package/src/components/Feed/Feed.vue +1 -1
- package/src/components/Field/Field.vue +42 -27
- package/src/components/index.js +2 -0
- package/src/main.js +6 -0
- package/src/modules/auth/auth.client.js +7 -0
- package/src/modules/auth/locales/en.js +76 -0
- package/src/modules/auth/locales/index.js +7 -0
- package/src/modules/auth/locales/ru.js +76 -0
- package/src/modules/auth/views/components/layouts/Auth.vue +2 -44
- package/src/modules/auth/views/components/pages/EnterCode.vue +5 -7
- package/src/modules/auth/views/components/pages/EnterPassword.vue +7 -10
- package/src/modules/auth/views/components/pages/ResetPassword.vue +9 -12
- package/src/modules/auth/views/components/pages/SignIn.vue +12 -15
- package/src/modules/auth/views/components/pages/SignUp.vue +9 -12
- package/src/modules/auth/views/components/sections/SliderFeatures.vue +11 -48
- package/src/modules/events/components/pages/EditEvent.vue +1 -1
- package/src/modules/globals/globals.client.js +1 -0
- package/src/modules/globals/views/components/blocks/PopupDateSelector.vue +1 -1
- package/src/modules/globals/views/utils/axios-instance.js +15 -1
- package/src/modules/icons/actions/IconShow.vue +23 -0
- package/src/modules/icons/pages/IconsPage.vue +114 -120
- package/src/modules/products/components/pages/Product.vue +1 -1
- package/dist/main-rF15sgss.cjs +0 -11
- package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/DatePicker/Calendar.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/DatePicker/Calendar.vue.js.map +0 -1
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Popup/Popup.vue2.cjs.map +0 -1
- package/dist/martyrs/src/modules/auth/views/localization/EnterCode.json.cjs +0 -9
- package/dist/martyrs/src/modules/auth/views/localization/EnterCode.json.cjs.map +0 -1
- package/dist/martyrs/src/modules/auth/views/localization/EnterCode.json.js +0 -9
- package/dist/martyrs/src/modules/auth/views/localization/EnterCode.json.js.map +0 -1
- package/dist/martyrs/src/modules/auth/views/localization/EnterPassword.json.cjs +0 -9
- package/dist/martyrs/src/modules/auth/views/localization/EnterPassword.json.cjs.map +0 -1
- package/dist/martyrs/src/modules/auth/views/localization/EnterPassword.json.js +0 -9
- package/dist/martyrs/src/modules/auth/views/localization/EnterPassword.json.js.map +0 -1
- package/dist/martyrs/src/modules/auth/views/localization/ResetPassword.json.cjs +0 -9
- package/dist/martyrs/src/modules/auth/views/localization/ResetPassword.json.cjs.map +0 -1
- package/dist/martyrs/src/modules/auth/views/localization/ResetPassword.json.js +0 -9
- package/dist/martyrs/src/modules/auth/views/localization/ResetPassword.json.js.map +0 -1
- package/dist/martyrs/src/modules/auth/views/localization/SignIn.json.cjs +0 -9
- package/dist/martyrs/src/modules/auth/views/localization/SignIn.json.cjs.map +0 -1
- package/dist/martyrs/src/modules/auth/views/localization/SignIn.json.js +0 -9
- package/dist/martyrs/src/modules/auth/views/localization/SignIn.json.js.map +0 -1
- package/dist/martyrs/src/modules/auth/views/localization/SignUp.json.cjs +0 -9
- package/dist/martyrs/src/modules/auth/views/localization/SignUp.json.cjs.map +0 -1
- package/dist/martyrs/src/modules/auth/views/localization/SignUp.json.js +0 -9
- package/dist/martyrs/src/modules/auth/views/localization/SignUp.json.js.map +0 -1
- package/src/modules/auth/views/localization/EnterCode.json +0 -16
- package/src/modules/auth/views/localization/EnterPassword.json +0 -22
- package/src/modules/auth/views/localization/ResetPassword.json +0 -26
- package/src/modules/auth/views/localization/SignIn.json +0 -34
- package/src/modules/auth/views/localization/SignUp.json +0 -28
- /package/src/components/{DatePicker → Calendar}/Calendar.vue +0 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const vue = require("vue");
|
|
4
|
+
const player = require("../../store/player.cjs");
|
|
5
|
+
const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.cjs");
|
|
6
|
+
const _hoisted_1 = { class: "track-progress flex flex-v-center gap-small" };
|
|
7
|
+
const _hoisted_2 = { class: "current-time t-grey t-small" };
|
|
8
|
+
const _hoisted_3 = { class: "total-time t-grey t-small" };
|
|
9
|
+
const _sfc_main = {
|
|
10
|
+
__name: "TrackProgress",
|
|
11
|
+
setup(__props) {
|
|
12
|
+
const progressBarContainer = vue.ref(null);
|
|
13
|
+
const isSeeking = vue.ref(false);
|
|
14
|
+
const seekPosition = vue.ref(0);
|
|
15
|
+
const currentTime = vue.computed(() => player.state.currentTime);
|
|
16
|
+
const duration = vue.computed(() => player.state.duration);
|
|
17
|
+
const progressPercentage = vue.computed(() => {
|
|
18
|
+
if (!duration.value) return 0;
|
|
19
|
+
return Math.min(100, currentTime.value / duration.value * 100);
|
|
20
|
+
});
|
|
21
|
+
const formatTime = (seconds) => {
|
|
22
|
+
if (!seconds) return "0:00";
|
|
23
|
+
const minutes = Math.floor(seconds / 60);
|
|
24
|
+
const remainingSeconds = Math.floor(seconds % 60);
|
|
25
|
+
return `${minutes}:${remainingSeconds.toString().padStart(2, "0")}`;
|
|
26
|
+
};
|
|
27
|
+
const calculateSeekTime = (event) => {
|
|
28
|
+
if (!progressBarContainer.value || !duration.value) return 0;
|
|
29
|
+
const rect = progressBarContainer.value.getBoundingClientRect();
|
|
30
|
+
const offsetX = event.clientX - rect.left;
|
|
31
|
+
const percentage = Math.max(0, Math.min(1, offsetX / rect.width));
|
|
32
|
+
return percentage * duration.value;
|
|
33
|
+
};
|
|
34
|
+
const seek = (event) => {
|
|
35
|
+
const seekTime = calculateSeekTime(event);
|
|
36
|
+
player.actions.seek(seekTime);
|
|
37
|
+
};
|
|
38
|
+
const startSeek = (event) => {
|
|
39
|
+
isSeeking.value = true;
|
|
40
|
+
seekPosition.value = calculateSeekTime(event);
|
|
41
|
+
};
|
|
42
|
+
const updateSeekPosition = (event) => {
|
|
43
|
+
if (isSeeking.value) {
|
|
44
|
+
seekPosition.value = calculateSeekTime(event);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const endSeek = () => {
|
|
48
|
+
if (isSeeking.value) {
|
|
49
|
+
isSeeking.value = false;
|
|
50
|
+
player.actions.seek(seekPosition.value);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
vue.onUnmounted(() => {
|
|
54
|
+
isSeeking.value = false;
|
|
55
|
+
});
|
|
56
|
+
return (_ctx, _cache) => {
|
|
57
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
58
|
+
vue.createElementVNode("div", _hoisted_2, vue.toDisplayString(formatTime(currentTime.value)), 1),
|
|
59
|
+
vue.createElementVNode("div", {
|
|
60
|
+
ref_key: "progressBarContainer",
|
|
61
|
+
ref: progressBarContainer,
|
|
62
|
+
class: "progress-bar-container flex-1 h-thin bg-grey radius-extra pos-relative cursor-pointer",
|
|
63
|
+
onClick: seek,
|
|
64
|
+
onMousedown: startSeek,
|
|
65
|
+
onMousemove: updateSeekPosition,
|
|
66
|
+
onMouseup: endSeek,
|
|
67
|
+
onMouseleave: endSeek
|
|
68
|
+
}, [
|
|
69
|
+
vue.createElementVNode("div", {
|
|
70
|
+
class: "progress-bar h-100 bg-white radius-extra",
|
|
71
|
+
style: vue.normalizeStyle({ width: progressPercentage.value + "%" })
|
|
72
|
+
}, null, 4),
|
|
73
|
+
vue.createElementVNode("div", {
|
|
74
|
+
class: "progress-handle w-thin h-thin bg-white radius-round pos-absolute pos-t-50 pos-l-0",
|
|
75
|
+
style: vue.normalizeStyle({ left: `calc(${progressPercentage.value}% - 4px)`, transform: "translateY(-50%)" })
|
|
76
|
+
}, null, 4)
|
|
77
|
+
], 544),
|
|
78
|
+
vue.createElementVNode("div", _hoisted_3, vue.toDisplayString(formatTime(duration.value)), 1)
|
|
79
|
+
]);
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
const TrackProgress = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-4326ac71"]]);
|
|
84
|
+
exports.default = TrackProgress;
|
|
85
|
+
//# sourceMappingURL=TrackProgress.vue.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrackProgress.vue.cjs","sources":["../../../../../../../src/modules/music/components/player/TrackProgress.vue"],"sourcesContent":["<!-- components/player/TrackProgress.vue -->\n<template>\n <div class=\"track-progress flex flex-v-center gap-small\">\n <div class=\"current-time t-grey t-small\">{{ formatTime(currentTime) }}</div>\n \n <div \n ref=\"progressBarContainer\"\n class=\"progress-bar-container flex-1 h-thin bg-grey radius-extra pos-relative cursor-pointer\"\n @click=\"seek\"\n @mousedown=\"startSeek\"\n @mousemove=\"updateSeekPosition\"\n @mouseup=\"endSeek\"\n @mouseleave=\"endSeek\"\n >\n <div \n class=\"progress-bar h-100 bg-white radius-extra\" \n :style=\"{ width: progressPercentage + '%' }\"\n ></div>\n <div \n class=\"progress-handle w-thin h-thin bg-white radius-round pos-absolute pos-t-50 pos-l-0\"\n :style=\"{ left: `calc(${progressPercentage}% - 4px)`, transform: 'translateY(-50%)' }\"\n ></div>\n </div>\n \n <div class=\"total-time t-grey t-small\">{{ formatTime(duration) }}</div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, onUnmounted } from 'vue';\n\n// Import player store\nimport { state as playerState, actions as playerActions } from '../../store/player.js';\n\n// Refs\nconst progressBarContainer = ref(null);\nconst isSeeking = ref(false);\nconst seekPosition = ref(0);\n\n// Computed properties\nconst currentTime = computed(() => playerState.currentTime);\nconst duration = computed(() => playerState.duration);\nconst progressPercentage = computed(() => {\n if (!duration.value) return 0;\n return Math.min(100, (currentTime.value / duration.value) * 100);\n});\n\n// Methods\nconst formatTime = (seconds) => {\n if (!seconds) return '0:00';\n \n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n \n return `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`;\n};\n\nconst calculateSeekTime = (event) => {\n if (!progressBarContainer.value || !duration.value) return 0;\n \n const rect = progressBarContainer.value.getBoundingClientRect();\n const offsetX = event.clientX - rect.left;\n const percentage = Math.max(0, Math.min(1, offsetX / rect.width));\n \n return percentage * duration.value;\n};\n\nconst seek = (event) => {\n const seekTime = calculateSeekTime(event);\n playerActions.seek(seekTime);\n};\n\nconst startSeek = (event) => {\n isSeeking.value = true;\n seekPosition.value = calculateSeekTime(event);\n};\n\nconst updateSeekPosition = (event) => {\n if (isSeeking.value) {\n seekPosition.value = calculateSeekTime(event);\n }\n};\n\nconst endSeek = () => {\n if (isSeeking.value) {\n isSeeking.value = false;\n playerActions.seek(seekPosition.value);\n }\n};\n\n// Clean up event listeners when component is unmounted\nonUnmounted(() => {\n isSeeking.value = false;\n});\n</script>\n\n<style scoped>\n.progress-bar-container:hover .progress-bar {\n background-color: rgb(var(--main));\n}\n\n.progress-handle {\n display: none;\n}\n\n.progress-bar-container:hover .progress-handle {\n display: block;\n transform: translateY(-50%) scale(1.3);\n}\n</style>"],"names":["ref","computed","playerState","playerActions","onUnmounted"],"mappings":";;;;;;;;;;;AAmCA,UAAM,uBAAuBA,IAAG,IAAC,IAAI;AACrC,UAAM,YAAYA,IAAG,IAAC,KAAK;AAC3B,UAAM,eAAeA,IAAG,IAAC,CAAC;AAG1B,UAAM,cAAcC,IAAQ,SAAC,MAAMC,OAAW,MAAC,WAAW;AAC1D,UAAM,WAAWD,IAAQ,SAAC,MAAMC,OAAW,MAAC,QAAQ;AACpD,UAAM,qBAAqBD,IAAQ,SAAC,MAAM;AACxC,UAAI,CAAC,SAAS,MAAO,QAAO;AAC5B,aAAO,KAAK,IAAI,KAAM,YAAY,QAAQ,SAAS,QAAS,GAAG;AAAA,IACjE,CAAC;AAGD,UAAM,aAAa,CAAC,YAAY;AAC9B,UAAI,CAAC,QAAS,QAAO;AAErB,YAAM,UAAU,KAAK,MAAM,UAAU,EAAE;AACvC,YAAM,mBAAmB,KAAK,MAAM,UAAU,EAAE;AAEhD,aAAO,GAAG,OAAO,IAAI,iBAAiB,SAAU,EAAC,SAAS,GAAG,GAAG,CAAC;AAAA,IACnE;AAEA,UAAM,oBAAoB,CAAC,UAAU;AACnC,UAAI,CAAC,qBAAqB,SAAS,CAAC,SAAS,MAAO,QAAO;AAE3D,YAAM,OAAO,qBAAqB,MAAM,sBAAuB;AAC/D,YAAM,UAAU,MAAM,UAAU,KAAK;AACrC,YAAM,aAAa,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,UAAU,KAAK,KAAK,CAAC;AAEhE,aAAO,aAAa,SAAS;AAAA,IAC/B;AAEA,UAAM,OAAO,CAAC,UAAU;AACtB,YAAM,WAAW,kBAAkB,KAAK;AACxCE,aAAa,QAAC,KAAK,QAAQ;AAAA,IAC7B;AAEA,UAAM,YAAY,CAAC,UAAU;AAC3B,gBAAU,QAAQ;AAClB,mBAAa,QAAQ,kBAAkB,KAAK;AAAA,IAC9C;AAEA,UAAM,qBAAqB,CAAC,UAAU;AACpC,UAAI,UAAU,OAAO;AACnB,qBAAa,QAAQ,kBAAkB,KAAK;AAAA,MAChD;AAAA,IACA;AAEA,UAAM,UAAU,MAAM;AACpB,UAAI,UAAU,OAAO;AACnB,kBAAU,QAAQ;AAClBA,uBAAc,KAAK,aAAa,KAAK;AAAA,MACzC;AAAA,IACA;AAGAC,QAAAA,YAAY,MAAM;AAChB,gBAAU,QAAQ;AAAA,IACpB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { ref, computed, onUnmounted, createElementBlock, openBlock, createElementVNode, toDisplayString, normalizeStyle } from "vue";
|
|
2
|
+
import { state, actions } from "../../store/player.js";
|
|
3
|
+
import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const _hoisted_1 = { class: "track-progress flex flex-v-center gap-small" };
|
|
5
|
+
const _hoisted_2 = { class: "current-time t-grey t-small" };
|
|
6
|
+
const _hoisted_3 = { class: "total-time t-grey t-small" };
|
|
7
|
+
const _sfc_main = {
|
|
8
|
+
__name: "TrackProgress",
|
|
9
|
+
setup(__props) {
|
|
10
|
+
const progressBarContainer = ref(null);
|
|
11
|
+
const isSeeking = ref(false);
|
|
12
|
+
const seekPosition = ref(0);
|
|
13
|
+
const currentTime = computed(() => state.currentTime);
|
|
14
|
+
const duration = computed(() => state.duration);
|
|
15
|
+
const progressPercentage = computed(() => {
|
|
16
|
+
if (!duration.value) return 0;
|
|
17
|
+
return Math.min(100, currentTime.value / duration.value * 100);
|
|
18
|
+
});
|
|
19
|
+
const formatTime = (seconds) => {
|
|
20
|
+
if (!seconds) return "0:00";
|
|
21
|
+
const minutes = Math.floor(seconds / 60);
|
|
22
|
+
const remainingSeconds = Math.floor(seconds % 60);
|
|
23
|
+
return `${minutes}:${remainingSeconds.toString().padStart(2, "0")}`;
|
|
24
|
+
};
|
|
25
|
+
const calculateSeekTime = (event) => {
|
|
26
|
+
if (!progressBarContainer.value || !duration.value) return 0;
|
|
27
|
+
const rect = progressBarContainer.value.getBoundingClientRect();
|
|
28
|
+
const offsetX = event.clientX - rect.left;
|
|
29
|
+
const percentage = Math.max(0, Math.min(1, offsetX / rect.width));
|
|
30
|
+
return percentage * duration.value;
|
|
31
|
+
};
|
|
32
|
+
const seek = (event) => {
|
|
33
|
+
const seekTime = calculateSeekTime(event);
|
|
34
|
+
actions.seek(seekTime);
|
|
35
|
+
};
|
|
36
|
+
const startSeek = (event) => {
|
|
37
|
+
isSeeking.value = true;
|
|
38
|
+
seekPosition.value = calculateSeekTime(event);
|
|
39
|
+
};
|
|
40
|
+
const updateSeekPosition = (event) => {
|
|
41
|
+
if (isSeeking.value) {
|
|
42
|
+
seekPosition.value = calculateSeekTime(event);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const endSeek = () => {
|
|
46
|
+
if (isSeeking.value) {
|
|
47
|
+
isSeeking.value = false;
|
|
48
|
+
actions.seek(seekPosition.value);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
onUnmounted(() => {
|
|
52
|
+
isSeeking.value = false;
|
|
53
|
+
});
|
|
54
|
+
return (_ctx, _cache) => {
|
|
55
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
56
|
+
createElementVNode("div", _hoisted_2, toDisplayString(formatTime(currentTime.value)), 1),
|
|
57
|
+
createElementVNode("div", {
|
|
58
|
+
ref_key: "progressBarContainer",
|
|
59
|
+
ref: progressBarContainer,
|
|
60
|
+
class: "progress-bar-container flex-1 h-thin bg-grey radius-extra pos-relative cursor-pointer",
|
|
61
|
+
onClick: seek,
|
|
62
|
+
onMousedown: startSeek,
|
|
63
|
+
onMousemove: updateSeekPosition,
|
|
64
|
+
onMouseup: endSeek,
|
|
65
|
+
onMouseleave: endSeek
|
|
66
|
+
}, [
|
|
67
|
+
createElementVNode("div", {
|
|
68
|
+
class: "progress-bar h-100 bg-white radius-extra",
|
|
69
|
+
style: normalizeStyle({ width: progressPercentage.value + "%" })
|
|
70
|
+
}, null, 4),
|
|
71
|
+
createElementVNode("div", {
|
|
72
|
+
class: "progress-handle w-thin h-thin bg-white radius-round pos-absolute pos-t-50 pos-l-0",
|
|
73
|
+
style: normalizeStyle({ left: `calc(${progressPercentage.value}% - 4px)`, transform: "translateY(-50%)" })
|
|
74
|
+
}, null, 4)
|
|
75
|
+
], 544),
|
|
76
|
+
createElementVNode("div", _hoisted_3, toDisplayString(formatTime(duration.value)), 1)
|
|
77
|
+
]);
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const TrackProgress = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4326ac71"]]);
|
|
82
|
+
export {
|
|
83
|
+
TrackProgress as default
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=TrackProgress.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrackProgress.vue.js","sources":["../../../../../../../src/modules/music/components/player/TrackProgress.vue"],"sourcesContent":["<!-- components/player/TrackProgress.vue -->\n<template>\n <div class=\"track-progress flex flex-v-center gap-small\">\n <div class=\"current-time t-grey t-small\">{{ formatTime(currentTime) }}</div>\n \n <div \n ref=\"progressBarContainer\"\n class=\"progress-bar-container flex-1 h-thin bg-grey radius-extra pos-relative cursor-pointer\"\n @click=\"seek\"\n @mousedown=\"startSeek\"\n @mousemove=\"updateSeekPosition\"\n @mouseup=\"endSeek\"\n @mouseleave=\"endSeek\"\n >\n <div \n class=\"progress-bar h-100 bg-white radius-extra\" \n :style=\"{ width: progressPercentage + '%' }\"\n ></div>\n <div \n class=\"progress-handle w-thin h-thin bg-white radius-round pos-absolute pos-t-50 pos-l-0\"\n :style=\"{ left: `calc(${progressPercentage}% - 4px)`, transform: 'translateY(-50%)' }\"\n ></div>\n </div>\n \n <div class=\"total-time t-grey t-small\">{{ formatTime(duration) }}</div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, onUnmounted } from 'vue';\n\n// Import player store\nimport { state as playerState, actions as playerActions } from '../../store/player.js';\n\n// Refs\nconst progressBarContainer = ref(null);\nconst isSeeking = ref(false);\nconst seekPosition = ref(0);\n\n// Computed properties\nconst currentTime = computed(() => playerState.currentTime);\nconst duration = computed(() => playerState.duration);\nconst progressPercentage = computed(() => {\n if (!duration.value) return 0;\n return Math.min(100, (currentTime.value / duration.value) * 100);\n});\n\n// Methods\nconst formatTime = (seconds) => {\n if (!seconds) return '0:00';\n \n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n \n return `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`;\n};\n\nconst calculateSeekTime = (event) => {\n if (!progressBarContainer.value || !duration.value) return 0;\n \n const rect = progressBarContainer.value.getBoundingClientRect();\n const offsetX = event.clientX - rect.left;\n const percentage = Math.max(0, Math.min(1, offsetX / rect.width));\n \n return percentage * duration.value;\n};\n\nconst seek = (event) => {\n const seekTime = calculateSeekTime(event);\n playerActions.seek(seekTime);\n};\n\nconst startSeek = (event) => {\n isSeeking.value = true;\n seekPosition.value = calculateSeekTime(event);\n};\n\nconst updateSeekPosition = (event) => {\n if (isSeeking.value) {\n seekPosition.value = calculateSeekTime(event);\n }\n};\n\nconst endSeek = () => {\n if (isSeeking.value) {\n isSeeking.value = false;\n playerActions.seek(seekPosition.value);\n }\n};\n\n// Clean up event listeners when component is unmounted\nonUnmounted(() => {\n isSeeking.value = false;\n});\n</script>\n\n<style scoped>\n.progress-bar-container:hover .progress-bar {\n background-color: rgb(var(--main));\n}\n\n.progress-handle {\n display: none;\n}\n\n.progress-bar-container:hover .progress-handle {\n display: block;\n transform: translateY(-50%) scale(1.3);\n}\n</style>"],"names":["playerState","playerActions"],"mappings":";;;;;;;;;AAmCA,UAAM,uBAAuB,IAAI,IAAI;AACrC,UAAM,YAAY,IAAI,KAAK;AAC3B,UAAM,eAAe,IAAI,CAAC;AAG1B,UAAM,cAAc,SAAS,MAAMA,MAAY,WAAW;AAC1D,UAAM,WAAW,SAAS,MAAMA,MAAY,QAAQ;AACpD,UAAM,qBAAqB,SAAS,MAAM;AACxC,UAAI,CAAC,SAAS,MAAO,QAAO;AAC5B,aAAO,KAAK,IAAI,KAAM,YAAY,QAAQ,SAAS,QAAS,GAAG;AAAA,IACjE,CAAC;AAGD,UAAM,aAAa,CAAC,YAAY;AAC9B,UAAI,CAAC,QAAS,QAAO;AAErB,YAAM,UAAU,KAAK,MAAM,UAAU,EAAE;AACvC,YAAM,mBAAmB,KAAK,MAAM,UAAU,EAAE;AAEhD,aAAO,GAAG,OAAO,IAAI,iBAAiB,SAAU,EAAC,SAAS,GAAG,GAAG,CAAC;AAAA,IACnE;AAEA,UAAM,oBAAoB,CAAC,UAAU;AACnC,UAAI,CAAC,qBAAqB,SAAS,CAAC,SAAS,MAAO,QAAO;AAE3D,YAAM,OAAO,qBAAqB,MAAM,sBAAuB;AAC/D,YAAM,UAAU,MAAM,UAAU,KAAK;AACrC,YAAM,aAAa,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,UAAU,KAAK,KAAK,CAAC;AAEhE,aAAO,aAAa,SAAS;AAAA,IAC/B;AAEA,UAAM,OAAO,CAAC,UAAU;AACtB,YAAM,WAAW,kBAAkB,KAAK;AACxCC,cAAc,KAAK,QAAQ;AAAA,IAC7B;AAEA,UAAM,YAAY,CAAC,UAAU;AAC3B,gBAAU,QAAQ;AAClB,mBAAa,QAAQ,kBAAkB,KAAK;AAAA,IAC9C;AAEA,UAAM,qBAAqB,CAAC,UAAU;AACpC,UAAI,UAAU,OAAO;AACnB,qBAAa,QAAQ,kBAAkB,KAAK;AAAA,MAChD;AAAA,IACA;AAEA,UAAM,UAAU,MAAM;AACpB,UAAI,UAAU,OAAO;AACnB,kBAAU,QAAQ;AAClBA,gBAAc,KAAK,aAAa,KAAK;AAAA,MACzC;AAAA,IACA;AAGA,gBAAY,MAAM;AAChB,gBAAU,QAAQ;AAAA,IACpB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const vue = require("vue");
|
|
4
|
+
const player = require("../../store/player.cjs");
|
|
5
|
+
const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.cjs");
|
|
6
|
+
const _sfc_main = {
|
|
7
|
+
__name: "VolumeControl",
|
|
8
|
+
setup(__props) {
|
|
9
|
+
const volumeBarContainer = vue.ref(null);
|
|
10
|
+
const isChangingVolume = vue.ref(false);
|
|
11
|
+
const volume = vue.computed(() => player.state.volume);
|
|
12
|
+
const muted = vue.computed(() => player.state.muted);
|
|
13
|
+
const volumePercentage = vue.computed(() => {
|
|
14
|
+
if (muted.value) return 0;
|
|
15
|
+
return volume.value * 100;
|
|
16
|
+
});
|
|
17
|
+
const calculateVolume = (event) => {
|
|
18
|
+
if (!volumeBarContainer.value) return 0;
|
|
19
|
+
const rect = volumeBarContainer.value.getBoundingClientRect();
|
|
20
|
+
const offsetX = event.clientX - rect.left;
|
|
21
|
+
return Math.max(0, Math.min(1, offsetX / rect.width));
|
|
22
|
+
};
|
|
23
|
+
const setVolume = (event) => {
|
|
24
|
+
const newVolume = calculateVolume(event);
|
|
25
|
+
player.actions.setVolume(newVolume);
|
|
26
|
+
if (muted.value && newVolume > 0) {
|
|
27
|
+
player.actions.toggleMute();
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const startVolumeChange = (event) => {
|
|
31
|
+
isChangingVolume.value = true;
|
|
32
|
+
setVolume(event);
|
|
33
|
+
};
|
|
34
|
+
const updateVolumePosition = (event) => {
|
|
35
|
+
if (isChangingVolume.value) {
|
|
36
|
+
setVolume(event);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const endVolumeChange = () => {
|
|
40
|
+
isChangingVolume.value = false;
|
|
41
|
+
};
|
|
42
|
+
return (_ctx, _cache) => {
|
|
43
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
44
|
+
ref_key: "volumeBarContainer",
|
|
45
|
+
ref: volumeBarContainer,
|
|
46
|
+
class: "volume-bar-container w-100 h-thin bg-grey-transp-50 radius-extra pos-relative cursor-pointer",
|
|
47
|
+
onClick: setVolume,
|
|
48
|
+
onMousedown: startVolumeChange,
|
|
49
|
+
onMousemove: updateVolumePosition,
|
|
50
|
+
onMouseup: endVolumeChange,
|
|
51
|
+
onMouseleave: endVolumeChange
|
|
52
|
+
}, [
|
|
53
|
+
vue.createElementVNode("div", {
|
|
54
|
+
class: vue.normalizeClass(["volume-bar h-100 bg-white radius-extra", { "muted": muted.value }]),
|
|
55
|
+
style: vue.normalizeStyle({ width: volumePercentage.value + "%" })
|
|
56
|
+
}, null, 6),
|
|
57
|
+
vue.createElementVNode("div", {
|
|
58
|
+
class: "volume-handle w-thin h-thin bg-white radius-round pos-absolute pos-t-50 pos-l-0",
|
|
59
|
+
style: vue.normalizeStyle({
|
|
60
|
+
left: `calc(${volumePercentage.value}% - 4px)`,
|
|
61
|
+
transform: "translateY(-50%)",
|
|
62
|
+
opacity: muted.value ? 0 : 1
|
|
63
|
+
})
|
|
64
|
+
}, null, 4)
|
|
65
|
+
], 544);
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const VolumeControl = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-08586594"]]);
|
|
70
|
+
exports.default = VolumeControl;
|
|
71
|
+
//# sourceMappingURL=VolumeControl.vue.cjs.map
|
|
@@ -0,0 +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,IAAG,IAAC,IAAI;AACnC,UAAM,mBAAmBA,IAAG,IAAC,KAAK;AAGlC,UAAM,SAASC,IAAQ,SAAC,MAAMC,OAAW,MAAC,MAAM;AAChD,UAAM,QAAQD,IAAQ,SAAC,MAAMC,OAAW,MAAC,KAAK;AAC9C,UAAM,mBAAmBD,IAAQ,SAAC,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,sBAAuB;AAC7D,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,aAAa,QAAC,UAAU,SAAS;AAGjC,UAAI,MAAM,SAAS,YAAY,GAAG;AAChCA,eAAAA,QAAc,WAAY;AAAA,MAC9B;AAAA,IACA;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,MACnB;AAAA,IACA;AAEA,UAAM,kBAAkB,MAAM;AAC5B,uBAAiB,QAAQ;AAAA,IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { ref, computed, createElementBlock, openBlock, createElementVNode, normalizeStyle, normalizeClass } from "vue";
|
|
2
|
+
import { state, actions } from "../../store/player.js";
|
|
3
|
+
import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const _sfc_main = {
|
|
5
|
+
__name: "VolumeControl",
|
|
6
|
+
setup(__props) {
|
|
7
|
+
const volumeBarContainer = ref(null);
|
|
8
|
+
const isChangingVolume = ref(false);
|
|
9
|
+
const volume = computed(() => state.volume);
|
|
10
|
+
const muted = computed(() => state.muted);
|
|
11
|
+
const volumePercentage = computed(() => {
|
|
12
|
+
if (muted.value) return 0;
|
|
13
|
+
return volume.value * 100;
|
|
14
|
+
});
|
|
15
|
+
const calculateVolume = (event) => {
|
|
16
|
+
if (!volumeBarContainer.value) return 0;
|
|
17
|
+
const rect = volumeBarContainer.value.getBoundingClientRect();
|
|
18
|
+
const offsetX = event.clientX - rect.left;
|
|
19
|
+
return Math.max(0, Math.min(1, offsetX / rect.width));
|
|
20
|
+
};
|
|
21
|
+
const setVolume = (event) => {
|
|
22
|
+
const newVolume = calculateVolume(event);
|
|
23
|
+
actions.setVolume(newVolume);
|
|
24
|
+
if (muted.value && newVolume > 0) {
|
|
25
|
+
actions.toggleMute();
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const startVolumeChange = (event) => {
|
|
29
|
+
isChangingVolume.value = true;
|
|
30
|
+
setVolume(event);
|
|
31
|
+
};
|
|
32
|
+
const updateVolumePosition = (event) => {
|
|
33
|
+
if (isChangingVolume.value) {
|
|
34
|
+
setVolume(event);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const endVolumeChange = () => {
|
|
38
|
+
isChangingVolume.value = false;
|
|
39
|
+
};
|
|
40
|
+
return (_ctx, _cache) => {
|
|
41
|
+
return openBlock(), createElementBlock("div", {
|
|
42
|
+
ref_key: "volumeBarContainer",
|
|
43
|
+
ref: volumeBarContainer,
|
|
44
|
+
class: "volume-bar-container w-100 h-thin bg-grey-transp-50 radius-extra pos-relative cursor-pointer",
|
|
45
|
+
onClick: setVolume,
|
|
46
|
+
onMousedown: startVolumeChange,
|
|
47
|
+
onMousemove: updateVolumePosition,
|
|
48
|
+
onMouseup: endVolumeChange,
|
|
49
|
+
onMouseleave: endVolumeChange
|
|
50
|
+
}, [
|
|
51
|
+
createElementVNode("div", {
|
|
52
|
+
class: normalizeClass(["volume-bar h-100 bg-white radius-extra", { "muted": muted.value }]),
|
|
53
|
+
style: normalizeStyle({ width: volumePercentage.value + "%" })
|
|
54
|
+
}, null, 6),
|
|
55
|
+
createElementVNode("div", {
|
|
56
|
+
class: "volume-handle w-thin h-thin bg-white radius-round pos-absolute pos-t-50 pos-l-0",
|
|
57
|
+
style: normalizeStyle({
|
|
58
|
+
left: `calc(${volumePercentage.value}% - 4px)`,
|
|
59
|
+
transform: "translateY(-50%)",
|
|
60
|
+
opacity: muted.value ? 0 : 1
|
|
61
|
+
})
|
|
62
|
+
}, null, 4)
|
|
63
|
+
], 544);
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
const VolumeControl = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-08586594"]]);
|
|
68
|
+
export {
|
|
69
|
+
VolumeControl as default
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=VolumeControl.vue.js.map
|
|
@@ -0,0 +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,sBAAuB;AAC7D,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,WAAY;AAAA,MAC9B;AAAA,IACA;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,MACnB;AAAA,IACA;AAEA,UAAM,kBAAkB,MAAM;AAC5B,uBAAiB,QAAQ;AAAA,IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const albums = require("./store/albums.cjs");
|
|
4
|
+
const artists = require("./store/artists.cjs");
|
|
5
|
+
const player = require("./store/player.cjs");
|
|
6
|
+
const playlists = require("./store/playlists.cjs");
|
|
7
|
+
const search = require("./store/search.cjs");
|
|
8
|
+
const tracks = require("./store/tracks.cjs");
|
|
9
|
+
const music = require("./router/music.cjs");
|
|
10
|
+
const MusicLayout = require("./components/layouts/MusicLayout.vue.cjs");
|
|
11
|
+
const AlbumDetail = require("./components/pages/AlbumDetail.vue.cjs");
|
|
12
|
+
const ArtistDetail = require("./components/pages/ArtistDetail.vue.cjs");
|
|
13
|
+
const MusicHome = require("./components/pages/MusicHome.vue.cjs");
|
|
14
|
+
const MusicLibrary = require("./components/pages/MusicLibrary.vue.cjs");
|
|
15
|
+
const MusicUpload = require("./components/pages/MusicUpload.vue.cjs");
|
|
16
|
+
const PlaylistDetail = require("./components/pages/PlaylistDetail.vue.cjs");
|
|
17
|
+
const SearchResults = require("./components/pages/SearchResults.vue.cjs");
|
|
18
|
+
const TrackDetail = require("./components/pages/TrackDetail.vue.cjs");
|
|
19
|
+
const MusicPlayer = require("./components/player/MusicPlayer.vue.cjs");
|
|
20
|
+
const TrackProgress = require("./components/player/TrackProgress.vue.cjs");
|
|
21
|
+
const VolumeControl = require("./components/player/VolumeControl.vue.cjs");
|
|
22
|
+
const AlbumCard = require("./components/cards/AlbumCard.vue.cjs");
|
|
23
|
+
const ArtistCard = require("./components/cards/ArtistCard.vue.cjs");
|
|
24
|
+
const PlaylistCard = require("./components/cards/PlaylistCard.vue.cjs");
|
|
25
|
+
const TrackCard = require("./components/cards/TrackCard.vue.cjs");
|
|
26
|
+
const AlbumList = require("./components/lists/AlbumList.vue.cjs");
|
|
27
|
+
const ArtistList = require("./components/lists/ArtistList.vue.cjs");
|
|
28
|
+
const PlaylistList = require("./components/lists/PlaylistList.vue.cjs");
|
|
29
|
+
const TrackList = require("./components/lists/TrackList.vue.cjs");
|
|
30
|
+
const PlaylistForm = require("./components/forms/PlaylistForm.vue.cjs");
|
|
31
|
+
const SearchForm = require("./components/forms/SearchForm.vue.cjs");
|
|
32
|
+
const UploadForm = require("./components/forms/UploadForm.vue.cjs");
|
|
33
|
+
const globals_websocket = require("../globals/views/classes/globals.websocket.cjs");
|
|
34
|
+
function initializeMusic(app, store, router, config, options = {}) {
|
|
35
|
+
const route = options.route || "Home";
|
|
36
|
+
router.addRoute(route, music.default);
|
|
37
|
+
store.addStore("tracks", tracks);
|
|
38
|
+
store.addStore("playlists", playlists);
|
|
39
|
+
store.addStore("albums", albums);
|
|
40
|
+
store.addStore("artists", artists);
|
|
41
|
+
store.addStore("player", player);
|
|
42
|
+
store.addStore("search", search);
|
|
43
|
+
if (options.enableStreaming !== false && app.config.globalProperties.WSS_URL) {
|
|
44
|
+
globals_websocket.default.initialize({
|
|
45
|
+
wsUrl: app.config.globalProperties.WSS_URL,
|
|
46
|
+
maxReconnectAttempts: 10,
|
|
47
|
+
reconnectDelay: 2e3
|
|
48
|
+
});
|
|
49
|
+
if (options.userId) {
|
|
50
|
+
globals_websocket.default.connect(options.userId).then(() => {
|
|
51
|
+
globals_websocket.default.subscribeModule("music-streaming");
|
|
52
|
+
}).catch((err) => {
|
|
53
|
+
console.error("Failed to connect to WebSocket for music streaming:", err);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
app.component("MusicPlayer", MusicPlayer.default);
|
|
58
|
+
}
|
|
59
|
+
const ModuleMusic = {
|
|
60
|
+
initialize: initializeMusic,
|
|
61
|
+
views: {
|
|
62
|
+
store: {
|
|
63
|
+
storeTracks: tracks,
|
|
64
|
+
storePlaylists: playlists,
|
|
65
|
+
storeAlbums: albums,
|
|
66
|
+
storeArtists: artists,
|
|
67
|
+
storePlayer: player,
|
|
68
|
+
storeSearch: search
|
|
69
|
+
},
|
|
70
|
+
router: {
|
|
71
|
+
routerMusic: music.default
|
|
72
|
+
},
|
|
73
|
+
components: {
|
|
74
|
+
// Layouts
|
|
75
|
+
MusicLayout: MusicLayout.default,
|
|
76
|
+
// Pages
|
|
77
|
+
MusicHome: MusicHome.default,
|
|
78
|
+
SearchResults: SearchResults.default,
|
|
79
|
+
ArtistDetail: ArtistDetail.default,
|
|
80
|
+
AlbumDetail: AlbumDetail.default,
|
|
81
|
+
PlaylistDetail: PlaylistDetail.default,
|
|
82
|
+
TrackDetail: TrackDetail.default,
|
|
83
|
+
MusicLibrary: MusicLibrary.default,
|
|
84
|
+
MusicUpload: MusicUpload.default,
|
|
85
|
+
// Player Components
|
|
86
|
+
MusicPlayer: MusicPlayer.default,
|
|
87
|
+
TrackProgress: TrackProgress.default,
|
|
88
|
+
VolumeControl: VolumeControl.default,
|
|
89
|
+
// Cards
|
|
90
|
+
TrackCard: TrackCard.default,
|
|
91
|
+
AlbumCard: AlbumCard.default,
|
|
92
|
+
PlaylistCard: PlaylistCard.default,
|
|
93
|
+
ArtistCard: ArtistCard.default,
|
|
94
|
+
// Lists
|
|
95
|
+
TrackList: TrackList.default,
|
|
96
|
+
AlbumList: AlbumList.default,
|
|
97
|
+
PlaylistList: PlaylistList.default,
|
|
98
|
+
ArtistList: ArtistList.default,
|
|
99
|
+
// Forms
|
|
100
|
+
PlaylistForm: PlaylistForm.default,
|
|
101
|
+
SearchForm: SearchForm.default,
|
|
102
|
+
UploadForm: UploadForm.default
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
exports.storeAlbums = albums;
|
|
107
|
+
exports.storeArtists = artists;
|
|
108
|
+
exports.storePlayer = player;
|
|
109
|
+
exports.storePlaylists = playlists;
|
|
110
|
+
exports.storeSearch = search;
|
|
111
|
+
exports.storeTracks = tracks;
|
|
112
|
+
exports.routerMusic = music.default;
|
|
113
|
+
exports.MusicLayout = MusicLayout.default;
|
|
114
|
+
exports.AlbumDetail = AlbumDetail.default;
|
|
115
|
+
exports.ArtistDetail = ArtistDetail.default;
|
|
116
|
+
exports.MusicHome = MusicHome.default;
|
|
117
|
+
exports.MusicLibrary = MusicLibrary.default;
|
|
118
|
+
exports.MusicUpload = MusicUpload.default;
|
|
119
|
+
exports.PlaylistDetail = PlaylistDetail.default;
|
|
120
|
+
exports.SearchResults = SearchResults.default;
|
|
121
|
+
exports.TrackDetail = TrackDetail.default;
|
|
122
|
+
exports.MusicPlayer = MusicPlayer.default;
|
|
123
|
+
exports.TrackProgress = TrackProgress.default;
|
|
124
|
+
exports.VolumeControl = VolumeControl.default;
|
|
125
|
+
exports.AlbumCard = AlbumCard.default;
|
|
126
|
+
exports.ArtistCard = ArtistCard.default;
|
|
127
|
+
exports.PlaylistCard = PlaylistCard.default;
|
|
128
|
+
exports.TrackCard = TrackCard.default;
|
|
129
|
+
exports.AlbumList = AlbumList.default;
|
|
130
|
+
exports.ArtistList = ArtistList.default;
|
|
131
|
+
exports.PlaylistList = PlaylistList.default;
|
|
132
|
+
exports.TrackList = TrackList.default;
|
|
133
|
+
exports.PlaylistForm = PlaylistForm.default;
|
|
134
|
+
exports.SearchForm = SearchForm.default;
|
|
135
|
+
exports.UploadForm = UploadForm.default;
|
|
136
|
+
exports.default = ModuleMusic;
|
|
137
|
+
//# sourceMappingURL=music.client.cjs.map
|
|
@@ -0,0 +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 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 AlbumDetail from './components/pages/AlbumDetail.vue';\nimport ArtistDetail from './components/pages/ArtistDetail.vue';\nimport MusicHome from './components/pages/MusicHome.vue';\nimport MusicLibrary from './components/pages/MusicLibrary.vue';\nimport MusicUpload from './components/pages/MusicUpload.vue';\nimport PlaylistDetail from './components/pages/PlaylistDetail.vue';\nimport SearchResults from './components/pages/SearchResults.vue';\nimport TrackDetail from './components/pages/TrackDetail.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';\n\n// Components - Lists\nimport AlbumList from './components/lists/AlbumList.vue';\nimport ArtistList from './components/lists/ArtistList.vue';\nimport PlaylistList from './components/lists/PlaylistList.vue';\nimport TrackList from './components/lists/TrackList.vue';\n\n// Components - Forms\nimport PlaylistForm from './components/forms/PlaylistForm.vue';\nimport SearchForm from './components/forms/SearchForm.vue';\nimport UploadForm from './components/forms/UploadForm.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('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 storePlayer,\n storeSearch,\n },\n router: {\n routerMusic,\n },\n components: {\n // Layouts\n MusicLayout,\n // Pages\n MusicHome,\n SearchResults,\n ArtistDetail,\n AlbumDetail,\n PlaylistDetail,\n TrackDetail,\n MusicLibrary,\n MusicUpload,\n // Player Components\n MusicPlayer,\n TrackProgress,\n VolumeControl,\n // Cards\n TrackCard,\n AlbumCard,\n PlaylistCard,\n ArtistCard,\n // Lists\n TrackList,\n AlbumList,\n PlaylistList,\n ArtistList,\n // Forms\n PlaylistForm,\n SearchForm,\n UploadForm,\n },\n },\n};\n\n// Named exports for direct component imports\nexport {\n AlbumCard,\n AlbumDetail,\n AlbumList,\n ArtistCard,\n ArtistDetail,\n ArtistList,\n // Pages\n MusicHome,\n // Layout\n MusicLayout,\n MusicLibrary,\n // Player Components\n MusicPlayer,\n MusicUpload,\n PlaylistCard,\n PlaylistDetail,\n // Forms\n PlaylistForm,\n PlaylistList,\n SearchForm,\n SearchResults,\n // Cards\n TrackCard,\n TrackDetail,\n // Lists\n TrackList,\n TrackProgress,\n UploadForm,\n VolumeControl,\n // Router\n routerMusic,\n storeAlbums,\n storeArtists,\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","storePlayer","storeSearch","globalWebSocket","MusicPlayer","MusicLayout","MusicHome","SearchResults","ArtistDetail","AlbumDetail","PlaylistDetail","TrackDetail","MusicLibrary","MusicUpload","TrackProgress","VolumeControl","TrackCard","AlbumCard","PlaylistCard","ArtistCard","TrackList","AlbumList","PlaylistList","ArtistList","PlaylistForm","SearchForm","UploadForm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDA,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;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,0BAAe,QAAC,gBAAgB,iBAAiB;AAAA,MAClD,CAAA,EACA,MAAM,SAAO;AACZ,gBAAQ,MAAM,uDAAuD,GAAG;AAAA,MAClF,CAAS;AAAA,IACT;AAAA,EACA;AAGE,MAAI,UAAU,eAAeC,mBAAW;AAC1C;AAGK,MAAC,cAAc;AAAA,EAClB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,aAAMP;AAAAA,MACN,gBAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,cAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,aAAMC;AAAAA,IACD;AAAA,IACD,QAAQ;AAAA,MACZ,aAAMN,MAAW;AAAA,IACZ;AAAA,IACD,YAAY;AAAA;AAAA,MAEhB,aAAMS,YAAW;AAAA;AAAA,MAEjB,WAAMC,UAAS;AAAA,MACf,eAAMC,cAAa;AAAA,MACnB,cAAMC,aAAY;AAAA,MAClB,aAAMC,YAAW;AAAA,MACjB,gBAAMC,eAAc;AAAA,MACpB,aAAMC,YAAW;AAAA,MACjB,cAAMC,aAAY;AAAA,MAClB,aAAMC,YAAW;AAAA;AAAA,MAEjB,aAAMT,YAAW;AAAA,MACjB,eAAMU,cAAa;AAAA,MACnB,eAAMC,cAAa;AAAA;AAAA,MAEnB,WAAMC,UAAS;AAAA,MACf,WAAMC,UAAS;AAAA,MACf,cAAMC,aAAY;AAAA,MAClB,YAAMC,WAAU;AAAA;AAAA,MAEhB,WAAMC,UAAS;AAAA,MACf,WAAMC,UAAS;AAAA,MACf,cAAMC,aAAY;AAAA,MAClB,YAAMC,WAAU;AAAA;AAAA,MAEhB,cAAMC,aAAY;AAAA,MAClB,YAAMC,WAAU;AAAA,MAChB,YAAMC,WAAU;AAAA,IACX;AAAA,EACF;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import * as albums from "./store/albums.js";
|
|
2
|
+
import * as artists from "./store/artists.js";
|
|
3
|
+
import * as player from "./store/player.js";
|
|
4
|
+
import * as playlists from "./store/playlists.js";
|
|
5
|
+
import * as search from "./store/search.js";
|
|
6
|
+
import * as tracks from "./store/tracks.js";
|
|
7
|
+
import routerMusic from "./router/music.js";
|
|
8
|
+
import _sfc_main$a from "./components/layouts/MusicLayout.vue.js";
|
|
9
|
+
import AlbumDetail from "./components/pages/AlbumDetail.vue.js";
|
|
10
|
+
import _sfc_main$9 from "./components/pages/ArtistDetail.vue.js";
|
|
11
|
+
import MusicHome from "./components/pages/MusicHome.vue.js";
|
|
12
|
+
import _sfc_main$6 from "./components/pages/MusicLibrary.vue.js";
|
|
13
|
+
import _sfc_main$5 from "./components/pages/MusicUpload.vue.js";
|
|
14
|
+
import _sfc_main$8 from "./components/pages/PlaylistDetail.vue.js";
|
|
15
|
+
import SearchResults from "./components/pages/SearchResults.vue.js";
|
|
16
|
+
import _sfc_main$7 from "./components/pages/TrackDetail.vue.js";
|
|
17
|
+
import MusicPlayer from "./components/player/MusicPlayer.vue.js";
|
|
18
|
+
import TrackProgress from "./components/player/TrackProgress.vue.js";
|
|
19
|
+
import VolumeControl from "./components/player/VolumeControl.vue.js";
|
|
20
|
+
import AlbumCard from "./components/cards/AlbumCard.vue.js";
|
|
21
|
+
import ArtistCard from "./components/cards/ArtistCard.vue.js";
|
|
22
|
+
import PlaylistCard from "./components/cards/PlaylistCard.vue.js";
|
|
23
|
+
import TrackCard from "./components/cards/TrackCard.vue.js";
|
|
24
|
+
import _sfc_main$4 from "./components/lists/AlbumList.vue.js";
|
|
25
|
+
import _sfc_main$2 from "./components/lists/ArtistList.vue.js";
|
|
26
|
+
import _sfc_main$3 from "./components/lists/PlaylistList.vue.js";
|
|
27
|
+
import TrackList from "./components/lists/TrackList.vue.js";
|
|
28
|
+
import _sfc_main$1 from "./components/forms/PlaylistForm.vue.js";
|
|
29
|
+
import SearchForm from "./components/forms/SearchForm.vue.js";
|
|
30
|
+
import _sfc_main from "./components/forms/UploadForm.vue.js";
|
|
31
|
+
import globalWebSocket from "../globals/views/classes/globals.websocket.js";
|
|
32
|
+
function initializeMusic(app, store, router, config, options = {}) {
|
|
33
|
+
const route = options.route || "Home";
|
|
34
|
+
router.addRoute(route, routerMusic);
|
|
35
|
+
store.addStore("tracks", tracks);
|
|
36
|
+
store.addStore("playlists", playlists);
|
|
37
|
+
store.addStore("albums", albums);
|
|
38
|
+
store.addStore("artists", artists);
|
|
39
|
+
store.addStore("player", player);
|
|
40
|
+
store.addStore("search", search);
|
|
41
|
+
if (options.enableStreaming !== false && app.config.globalProperties.WSS_URL) {
|
|
42
|
+
globalWebSocket.initialize({
|
|
43
|
+
wsUrl: app.config.globalProperties.WSS_URL,
|
|
44
|
+
maxReconnectAttempts: 10,
|
|
45
|
+
reconnectDelay: 2e3
|
|
46
|
+
});
|
|
47
|
+
if (options.userId) {
|
|
48
|
+
globalWebSocket.connect(options.userId).then(() => {
|
|
49
|
+
globalWebSocket.subscribeModule("music-streaming");
|
|
50
|
+
}).catch((err) => {
|
|
51
|
+
console.error("Failed to connect to WebSocket for music streaming:", err);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
app.component("MusicPlayer", MusicPlayer);
|
|
56
|
+
}
|
|
57
|
+
const ModuleMusic = {
|
|
58
|
+
initialize: initializeMusic,
|
|
59
|
+
views: {
|
|
60
|
+
store: {
|
|
61
|
+
storeTracks: tracks,
|
|
62
|
+
storePlaylists: playlists,
|
|
63
|
+
storeAlbums: albums,
|
|
64
|
+
storeArtists: artists,
|
|
65
|
+
storePlayer: player,
|
|
66
|
+
storeSearch: search
|
|
67
|
+
},
|
|
68
|
+
router: {
|
|
69
|
+
routerMusic
|
|
70
|
+
},
|
|
71
|
+
components: {
|
|
72
|
+
// Layouts
|
|
73
|
+
MusicLayout: _sfc_main$a,
|
|
74
|
+
// Pages
|
|
75
|
+
MusicHome,
|
|
76
|
+
SearchResults,
|
|
77
|
+
ArtistDetail: _sfc_main$9,
|
|
78
|
+
AlbumDetail,
|
|
79
|
+
PlaylistDetail: _sfc_main$8,
|
|
80
|
+
TrackDetail: _sfc_main$7,
|
|
81
|
+
MusicLibrary: _sfc_main$6,
|
|
82
|
+
MusicUpload: _sfc_main$5,
|
|
83
|
+
// Player Components
|
|
84
|
+
MusicPlayer,
|
|
85
|
+
TrackProgress,
|
|
86
|
+
VolumeControl,
|
|
87
|
+
// Cards
|
|
88
|
+
TrackCard,
|
|
89
|
+
AlbumCard,
|
|
90
|
+
PlaylistCard,
|
|
91
|
+
ArtistCard,
|
|
92
|
+
// Lists
|
|
93
|
+
TrackList,
|
|
94
|
+
AlbumList: _sfc_main$4,
|
|
95
|
+
PlaylistList: _sfc_main$3,
|
|
96
|
+
ArtistList: _sfc_main$2,
|
|
97
|
+
// Forms
|
|
98
|
+
PlaylistForm: _sfc_main$1,
|
|
99
|
+
SearchForm,
|
|
100
|
+
UploadForm: _sfc_main
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
export {
|
|
105
|
+
AlbumCard,
|
|
106
|
+
AlbumDetail,
|
|
107
|
+
_sfc_main$4 as AlbumList,
|
|
108
|
+
ArtistCard,
|
|
109
|
+
_sfc_main$9 as ArtistDetail,
|
|
110
|
+
_sfc_main$2 as ArtistList,
|
|
111
|
+
MusicHome,
|
|
112
|
+
_sfc_main$a as MusicLayout,
|
|
113
|
+
_sfc_main$6 as MusicLibrary,
|
|
114
|
+
MusicPlayer,
|
|
115
|
+
_sfc_main$5 as MusicUpload,
|
|
116
|
+
PlaylistCard,
|
|
117
|
+
_sfc_main$8 as PlaylistDetail,
|
|
118
|
+
_sfc_main$1 as PlaylistForm,
|
|
119
|
+
_sfc_main$3 as PlaylistList,
|
|
120
|
+
SearchForm,
|
|
121
|
+
SearchResults,
|
|
122
|
+
TrackCard,
|
|
123
|
+
_sfc_main$7 as TrackDetail,
|
|
124
|
+
TrackList,
|
|
125
|
+
TrackProgress,
|
|
126
|
+
_sfc_main as UploadForm,
|
|
127
|
+
VolumeControl,
|
|
128
|
+
ModuleMusic as default,
|
|
129
|
+
routerMusic,
|
|
130
|
+
albums as storeAlbums,
|
|
131
|
+
artists as storeArtists,
|
|
132
|
+
player as storePlayer,
|
|
133
|
+
playlists as storePlaylists,
|
|
134
|
+
search as storeSearch,
|
|
135
|
+
tracks as storeTracks
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=music.client.js.map
|