@ozdao/martyrs 0.2.565 → 0.2.566
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/martyrs/dist/main-B9o1iBAZ.js +943 -0
- package/dist/martyrs/dist/main-B9o1iBAZ.js.map +1 -0
- package/dist/martyrs/dist/web-BF3ijvEr.js +55 -0
- package/dist/martyrs/dist/web-BF3ijvEr.js.map +1 -0
- package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +96 -0
- package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +1 -0
- package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +1 -0
- package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
- package/dist/martyrs/src/modules/events/events.client.js +15 -12
- package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +95 -0
- package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +5 -2
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +24 -24
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js +31 -6
- package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +120 -205
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +9 -13
- package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +166 -245
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +135 -220
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +171 -0
- package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +31 -153
- package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +96 -0
- package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +55 -27
- package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/player/tonar.png.js +5 -0
- package/dist/martyrs/src/modules/music/components/player/tonar.png.js.map +1 -0
- package/dist/martyrs/src/modules/music/store/albums.js +8 -2
- package/dist/martyrs/src/modules/music/store/albums.js.map +1 -1
- package/dist/martyrs/src/modules/music/store/player.js +83 -65
- package/dist/martyrs/src/modules/music/store/player.js.map +1 -1
- package/dist/martyrs/src/modules/music/store/tracks.js +4 -13
- package/dist/martyrs/src/modules/music/store/tracks.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/notifications.client.js +2 -2
- package/dist/martyrs.css +1 -1
- package/dist/music.server.js +33 -6
- package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js +1 -0
- package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +1 -0
- package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js +1 -1
- package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js.map +1 -1
- package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js +16 -1
- package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +1 -0
- package/dist/node_modules/.pnpm/{@capacitor_core@7.0.1 → @capacitor_core@7.4.4}/node_modules/@capacitor/core/dist/index.js +2 -1
- package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js +1 -1
- package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js.map +1 -1
- package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js +1 -1
- package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js.map +1 -1
- package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js.map +1 -1
- package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js +1 -1
- package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js.map +1 -1
- package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js +1 -1
- package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js.map +1 -1
- package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js +1 -1
- package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js.map +1 -1
- package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js +1 -1
- package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js.map +1 -1
- package/dist/style.css +214 -138
- package/package.json +1 -1
- package/src/components/BottomSheet/BottomSheet.vue +4 -4
- package/src/modules/LAYOUT.MD +767 -0
- package/src/modules/core/views/components/layouts/Client.vue +1 -1
- package/src/modules/events/events.client.js +3 -0
- package/src/modules/music/components/blocks/ActionButtons.vue +74 -0
- package/src/modules/music/components/cards/AlbumCard.vue +1 -1
- package/src/modules/music/components/cards/ArtistCardSmall.vue +8 -6
- package/src/modules/music/components/layouts/MusicBottomPlayer.vue +94 -4
- package/src/modules/music/components/pages/Album.vue +55 -67
- package/src/modules/music/components/pages/MusicHome.vue +4 -6
- package/src/modules/music/components/pages/Playlist.vue +61 -70
- package/src/modules/music/components/pages/Track.vue +54 -71
- package/src/modules/music/components/player/FullscreenPlayer.vue +248 -0
- package/src/modules/music/components/player/MusicPlayer.vue +21 -216
- package/src/modules/music/components/player/PlayerControls.vue +112 -0
- package/src/modules/music/components/player/Visualizer.vue +151 -0
- package/src/modules/music/components/player/VolumeControl.vue +75 -23
- package/src/modules/music/components/player/tonar.png +0 -0
- package/src/modules/music/routes/albums.routes.js +13 -12
- package/src/modules/music/routes/tracks.routes.js +39 -0
- package/src/modules/music/store/albums.js +10 -2
- package/src/modules/music/store/player.js +101 -89
- package/src/modules/music/store/tracks.js +5 -21
- package/src/styles/config.scss +6 -6
- package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +0 -1
- package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +0 -1
- package/dist/node_modules/.pnpm/@capacitor_core@7.0.1/node_modules/@capacitor/core/dist/index.js.map +0 -1
- /package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js +0 -0
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { computed, ref, onMounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createBlock, createVNode, createElementVNode, withCtx, toDisplayString,
|
|
1
|
+
import { computed, ref, onMounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createBlock, createVNode, createElementVNode, withCtx, toDisplayString, Fragment, renderList } from "vue";
|
|
2
2
|
import { useRoute, useRouter } from "vue-router";
|
|
3
|
-
import _sfc_main$
|
|
3
|
+
import _sfc_main$5 from "../../../../components/Button/Button.vue2.js";
|
|
4
4
|
import Loader from "../../../../components/Loader/Loader.vue.js";
|
|
5
5
|
import Media from "../../../../components/Media/Media.vue.js";
|
|
6
|
-
|
|
7
|
-
import _sfc_main$
|
|
8
|
-
import _sfc_main$
|
|
6
|
+
/* empty css */
|
|
7
|
+
import _sfc_main$c from "../../../../components/Popup/Popup.vue.js";
|
|
8
|
+
import _sfc_main$a from "../../../../components/Feed/Feed.vue.js";
|
|
9
9
|
import _sfc_main$2 from "../../../icons/navigation/IconPlay.vue.js";
|
|
10
|
-
import _sfc_main$
|
|
11
|
-
import _sfc_main$
|
|
12
|
-
import _sfc_main$
|
|
13
|
-
import _sfc_main$4 from "../../../icons/navigation/IconAdd.vue.js";
|
|
10
|
+
import _sfc_main$1 from "../../../icons/navigation/IconPause.vue.js";
|
|
11
|
+
import _sfc_main$4 from "../../../icons/navigation/IconLike.vue.js";
|
|
12
|
+
import _sfc_main$3 from "../../../icons/navigation/IconAdd.vue.js";
|
|
14
13
|
import IconTime from "../../../icons/entities/IconTime.vue.js";
|
|
15
|
-
import _sfc_main$
|
|
16
|
-
import _sfc_main$
|
|
17
|
-
import _sfc_main$
|
|
18
|
-
import _sfc_main$
|
|
14
|
+
import _sfc_main$7 from "../../../icons/entities/IconCalendar.vue.js";
|
|
15
|
+
import _sfc_main$8 from "../../../icons/navigation/IconCheckmark.vue.js";
|
|
16
|
+
import _sfc_main$9 from "../../../icons/actions/IconShow.vue.js";
|
|
17
|
+
import _sfc_main$6 from "../blocks/ActionButtons.vue.js";
|
|
18
|
+
import _sfc_main$b from "../cards/TrackListCard.vue.js";
|
|
19
19
|
import ArtistCardSmall from "../cards/ArtistCardSmall.vue.js";
|
|
20
|
-
import { state as state$1, actions } from "../../store/tracks.js";
|
|
21
|
-
import { state, actions
|
|
20
|
+
import { state as state$1, actions as actions$1 } from "../../store/tracks.js";
|
|
21
|
+
import { state, actions } from "../../store/player.js";
|
|
22
22
|
import { state as state$2 } from "../../../auth/views/store/auth.js";
|
|
23
23
|
const _hoisted_1 = { class: "track-page pd-small" };
|
|
24
24
|
const _hoisted_2 = {
|
|
@@ -31,7 +31,7 @@ const _hoisted_3 = {
|
|
|
31
31
|
};
|
|
32
32
|
const _hoisted_4 = {
|
|
33
33
|
key: 2,
|
|
34
|
-
class: "track-content cols-2
|
|
34
|
+
class: "track-content cols-2 mobile:cols-1 gap-big"
|
|
35
35
|
};
|
|
36
36
|
const _hoisted_5 = { class: "pos-sticky pos-t-0 mobile:pos-relative track-cover-section" };
|
|
37
37
|
const _hoisted_6 = { class: "cover-container pos-relative mn-b-medium radius-big o-hidden" };
|
|
@@ -43,52 +43,49 @@ const _hoisted_11 = { class: "stat-card bg-light pd-medium radius-medium t-cente
|
|
|
43
43
|
const _hoisted_12 = { class: "mn-b-thin" };
|
|
44
44
|
const _hoisted_13 = { class: "track-details-section" };
|
|
45
45
|
const _hoisted_14 = { class: "h1 mn-b-medium" };
|
|
46
|
-
const _hoisted_15 = { class: "
|
|
47
|
-
const _hoisted_16 = {
|
|
48
|
-
const _hoisted_17 = { class: "artists-section mn-b-medium" };
|
|
49
|
-
const _hoisted_18 = {
|
|
46
|
+
const _hoisted_15 = { class: "artists-section mn-b-medium" };
|
|
47
|
+
const _hoisted_16 = {
|
|
50
48
|
key: 0,
|
|
51
49
|
class: "t-medium mn-b-small"
|
|
52
50
|
};
|
|
53
|
-
const
|
|
54
|
-
const
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
const
|
|
58
|
-
const
|
|
59
|
-
const
|
|
60
|
-
const
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
const _hoisted_29 = {
|
|
51
|
+
const _hoisted_17 = { class: "metadata-grid grid cols-2 gap-small mn-b-medium" };
|
|
52
|
+
const _hoisted_18 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
|
|
53
|
+
const _hoisted_19 = { class: "t-medium" };
|
|
54
|
+
const _hoisted_20 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
|
|
55
|
+
const _hoisted_21 = { class: "t-medium" };
|
|
56
|
+
const _hoisted_22 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
|
|
57
|
+
const _hoisted_23 = { class: "t-medium" };
|
|
58
|
+
const _hoisted_24 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
|
|
59
|
+
const _hoisted_25 = { class: "t-medium" };
|
|
60
|
+
const _hoisted_26 = {
|
|
64
61
|
key: 0,
|
|
65
62
|
class: "t-medium mn-b-small"
|
|
66
63
|
};
|
|
67
|
-
const
|
|
64
|
+
const _hoisted_27 = {
|
|
68
65
|
key: 1,
|
|
69
66
|
class: "album-card bg-light pd-medium radius-medium mn-b-medium"
|
|
70
67
|
};
|
|
71
|
-
const
|
|
72
|
-
const
|
|
68
|
+
const _hoisted_28 = { class: "t-medium" };
|
|
69
|
+
const _hoisted_29 = {
|
|
73
70
|
key: 2,
|
|
74
71
|
class: "tags-section mn-b-medium"
|
|
75
72
|
};
|
|
76
|
-
const
|
|
77
|
-
const
|
|
73
|
+
const _hoisted_30 = { class: "flex gap-thin flex-wrap" };
|
|
74
|
+
const _hoisted_31 = {
|
|
78
75
|
key: 3,
|
|
79
76
|
class: "description-section bg-light pd-medium radius-medium mn-b-medium"
|
|
80
77
|
};
|
|
81
|
-
const
|
|
82
|
-
const
|
|
78
|
+
const _hoisted_32 = { class: "t-transp" };
|
|
79
|
+
const _hoisted_33 = {
|
|
83
80
|
key: 4,
|
|
84
81
|
class: "lyrics-section bg-light pd-medium radius-medium"
|
|
85
82
|
};
|
|
86
|
-
const
|
|
87
|
-
const
|
|
83
|
+
const _hoisted_34 = { class: "t-transp t-small" };
|
|
84
|
+
const _hoisted_35 = {
|
|
88
85
|
key: 3,
|
|
89
86
|
class: "related-section mn-t-big"
|
|
90
87
|
};
|
|
91
|
-
const
|
|
88
|
+
const _hoisted_36 = { class: "bg-light radius-medium o-hidden" };
|
|
92
89
|
const _sfc_main = {
|
|
93
90
|
__name: "Track",
|
|
94
91
|
emits: ["page-loading", "page-loaded"],
|
|
@@ -98,7 +95,6 @@ const _sfc_main = {
|
|
|
98
95
|
const router = useRouter();
|
|
99
96
|
const emits = __emit;
|
|
100
97
|
const hasLoaded = ref(false);
|
|
101
|
-
const showDropdown = ref(false);
|
|
102
98
|
const showAddToPlaylistModal = ref(false);
|
|
103
99
|
const isFavorite = ref(false);
|
|
104
100
|
const isFollowingArtist = ref(false);
|
|
@@ -109,6 +105,47 @@ const _sfc_main = {
|
|
|
109
105
|
const isOwner = computed(() => {
|
|
110
106
|
return track.value?.owner?.target === state$2.user?._id;
|
|
111
107
|
});
|
|
108
|
+
const actionButtons = computed(() => {
|
|
109
|
+
const buttons = [
|
|
110
|
+
{
|
|
111
|
+
type: "button",
|
|
112
|
+
class: "t-white bg-black",
|
|
113
|
+
icon: isPlaying.value ? _sfc_main$1 : _sfc_main$2,
|
|
114
|
+
iconFill: "rgb(var(--white))",
|
|
115
|
+
text: isPlaying.value ? "Pause" : "Play",
|
|
116
|
+
action: playTrack
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
type: "button",
|
|
120
|
+
class: "bg-light",
|
|
121
|
+
icon: _sfc_main$3,
|
|
122
|
+
text: "Add to Queue",
|
|
123
|
+
action: addToQueue
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
type: "button",
|
|
127
|
+
class: "bg-light",
|
|
128
|
+
icon: _sfc_main$4,
|
|
129
|
+
iconFill: isFavorite.value ? "rgb(var(--main))" : "rgb(var(--black))",
|
|
130
|
+
text: isFavorite.value ? "Liked" : "Like",
|
|
131
|
+
action: toggleFavorite
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: "dropdown",
|
|
135
|
+
items: [
|
|
136
|
+
{ text: "Add to Playlist", action: () => showAddToPlaylistModal.value = true },
|
|
137
|
+
{ text: "Copy Link", action: copyLink }
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
];
|
|
141
|
+
if (isOwner.value) {
|
|
142
|
+
const items = buttons[3].items;
|
|
143
|
+
items.push({ separator: true });
|
|
144
|
+
items.push({ text: "Edit Track", action: editTrack });
|
|
145
|
+
items.push({ text: "Delete Track", action: deleteTrack, color: "danger" });
|
|
146
|
+
}
|
|
147
|
+
return buttons;
|
|
148
|
+
});
|
|
112
149
|
const formatDuration = (seconds) => {
|
|
113
150
|
if (!seconds) return "0:00";
|
|
114
151
|
const h = Math.floor(seconds / 3600);
|
|
@@ -138,7 +175,7 @@ const _sfc_main = {
|
|
|
138
175
|
};
|
|
139
176
|
const playTrack = () => {
|
|
140
177
|
if (track.value) {
|
|
141
|
-
actions
|
|
178
|
+
actions.setQueue([track.value]);
|
|
142
179
|
}
|
|
143
180
|
};
|
|
144
181
|
const toggleFavorite = () => {
|
|
@@ -149,7 +186,7 @@ const _sfc_main = {
|
|
|
149
186
|
};
|
|
150
187
|
const addToQueue = () => {
|
|
151
188
|
if (track.value) {
|
|
152
|
-
actions
|
|
189
|
+
actions.addToQueue(track.value);
|
|
153
190
|
}
|
|
154
191
|
};
|
|
155
192
|
const editTrack = () => {
|
|
@@ -158,7 +195,7 @@ const _sfc_main = {
|
|
|
158
195
|
const deleteTrack = async () => {
|
|
159
196
|
if (confirm("Are you sure you want to delete this track?")) {
|
|
160
197
|
try {
|
|
161
|
-
await actions.deleteTrack(track.value._id);
|
|
198
|
+
await actions$1.deleteTrack(track.value._id);
|
|
162
199
|
router.push({ name: "music-library" });
|
|
163
200
|
} catch (error) {
|
|
164
201
|
console.error("Failed to delete track:", error);
|
|
@@ -167,12 +204,11 @@ const _sfc_main = {
|
|
|
167
204
|
};
|
|
168
205
|
const copyLink = () => {
|
|
169
206
|
navigator.clipboard.writeText(window.location.href);
|
|
170
|
-
showDropdown.value = false;
|
|
171
207
|
};
|
|
172
208
|
const fetchTrackData = async () => {
|
|
173
209
|
try {
|
|
174
|
-
await actions.fetchTrackByUrl(route.params.url);
|
|
175
|
-
await actions.fetchRelatedTracks(route.params.url);
|
|
210
|
+
await actions$1.fetchTrackByUrl(route.params.url);
|
|
211
|
+
await actions$1.fetchRelatedTracks(route.params.url);
|
|
176
212
|
} catch (error) {
|
|
177
213
|
console.error("Error loading track:", error);
|
|
178
214
|
}
|
|
@@ -189,7 +225,7 @@ const _sfc_main = {
|
|
|
189
225
|
_ctx.isLoading ? (openBlock(), createElementBlock("div", _hoisted_2, [
|
|
190
226
|
createVNode(Loader)
|
|
191
227
|
])) : createCommentVNode("", true),
|
|
192
|
-
hasLoaded.value && !track.value ? (openBlock(), createElementBlock("div", _hoisted_3, _cache[
|
|
228
|
+
hasLoaded.value && !track.value ? (openBlock(), createElementBlock("div", _hoisted_3, _cache[1] || (_cache[1] = [
|
|
193
229
|
createElementVNode("h2", { class: "" }, "Track not found", -1),
|
|
194
230
|
createElementVNode("p", { class: "t-transp t-medium" }, "The track you're looking for doesn't exist or has been removed.", -1)
|
|
195
231
|
]))) : createCommentVNode("", true),
|
|
@@ -202,7 +238,7 @@ const _sfc_main = {
|
|
|
202
238
|
class: "aspect-1x1 w-100 radius-medium o-hidden"
|
|
203
239
|
}, null, 8, ["url", "alt"]),
|
|
204
240
|
createElementVNode("div", _hoisted_7, [
|
|
205
|
-
createVNode(_sfc_main$
|
|
241
|
+
createVNode(_sfc_main$5, {
|
|
206
242
|
onClick: playTrack,
|
|
207
243
|
color: "white",
|
|
208
244
|
size: "big",
|
|
@@ -213,7 +249,7 @@ const _sfc_main = {
|
|
|
213
249
|
key: 0,
|
|
214
250
|
fill: "rgb(var(--white))",
|
|
215
251
|
class: "i-medium"
|
|
216
|
-
})) : (openBlock(), createBlock(_sfc_main$
|
|
252
|
+
})) : (openBlock(), createBlock(_sfc_main$1, {
|
|
217
253
|
key: 1,
|
|
218
254
|
fill: "rgb(var(--white))",
|
|
219
255
|
class: "i-medium"
|
|
@@ -226,185 +262,64 @@ const _sfc_main = {
|
|
|
226
262
|
createElementVNode("div", _hoisted_8, [
|
|
227
263
|
createElementVNode("div", _hoisted_9, [
|
|
228
264
|
createElementVNode("div", _hoisted_10, toDisplayString(formatNumber(track.value.playCount)), 1),
|
|
229
|
-
_cache[
|
|
265
|
+
_cache[2] || (_cache[2] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Plays", -1))
|
|
230
266
|
]),
|
|
231
267
|
createElementVNode("div", _hoisted_11, [
|
|
232
268
|
createElementVNode("div", _hoisted_12, toDisplayString(formatNumber(track.value.views)), 1),
|
|
233
|
-
_cache[
|
|
269
|
+
_cache[3] || (_cache[3] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Views", -1))
|
|
234
270
|
])
|
|
235
271
|
])
|
|
236
272
|
]),
|
|
237
273
|
createElementVNode("div", _hoisted_13, [
|
|
238
|
-
_cache[
|
|
274
|
+
_cache[11] || (_cache[11] = createElementVNode("div", { class: "flex items-center gap-small mn-b-small" }, [
|
|
239
275
|
createElementVNode("span", { class: "bg-light t-medium pd-thin radius-thin uppercase t-small t-uppercase" }, "Single"),
|
|
240
276
|
createElementVNode("span", { class: "bg-light t-medium pd-thin radius-thin uppercase t-small t-uppercase" }, "Explicit")
|
|
241
277
|
], -1)),
|
|
242
278
|
createElementVNode("h1", _hoisted_14, toDisplayString(track.value.title), 1),
|
|
279
|
+
createVNode(_sfc_main$6, { buttons: actionButtons.value }, null, 8, ["buttons"]),
|
|
243
280
|
createElementVNode("div", _hoisted_15, [
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
key: 0,
|
|
253
|
-
fill: "rgb(var(--white))",
|
|
254
|
-
class: "i-medium"
|
|
255
|
-
})) : (openBlock(), createBlock(_sfc_main$3, {
|
|
256
|
-
key: 1,
|
|
257
|
-
fill: "rgb(var(--white))",
|
|
258
|
-
class: "i-medium"
|
|
259
|
-
})),
|
|
260
|
-
createTextVNode(" " + toDisplayString(!isPlaying.value ? "Play" : "Pause"), 1)
|
|
261
|
-
]),
|
|
262
|
-
_: 1
|
|
263
|
-
}),
|
|
264
|
-
createVNode(_sfc_main$1, {
|
|
265
|
-
onClick: addToQueue,
|
|
266
|
-
color: "primary",
|
|
267
|
-
size: "medium",
|
|
268
|
-
class: "flex-1 bg-light radius-thin flex-center gap-thin"
|
|
269
|
-
}, {
|
|
270
|
-
default: withCtx(() => [
|
|
271
|
-
createVNode(_sfc_main$4, { class: "i-medium" }),
|
|
272
|
-
_cache[6] || (_cache[6] = createTextVNode(" Add to Queue "))
|
|
273
|
-
]),
|
|
274
|
-
_: 1
|
|
275
|
-
}),
|
|
276
|
-
createVNode(_sfc_main$1, {
|
|
277
|
-
onClick: toggleFavorite,
|
|
278
|
-
color: "primary",
|
|
279
|
-
size: "medium",
|
|
280
|
-
class: "flex-1 bg-light radius-thin flex-center gap-thin"
|
|
281
|
-
}, {
|
|
282
|
-
default: withCtx(() => [
|
|
283
|
-
createVNode(_sfc_main$5, {
|
|
284
|
-
class: "i-medium",
|
|
285
|
-
fill: isFavorite.value ? "rgb(var(--main)" : "rgb(var(--black)"
|
|
286
|
-
}, null, 8, ["fill"]),
|
|
287
|
-
createTextVNode(" " + toDisplayString(isFavorite.value ? "Liked" : "Like"), 1)
|
|
288
|
-
]),
|
|
289
|
-
_: 1
|
|
290
|
-
}),
|
|
291
|
-
createVNode(_sfc_main$6, {
|
|
292
|
-
label: { component: _sfc_main$7, class: "bg-light radius-thin pd-thin i-big" },
|
|
293
|
-
modelValue: showDropdown.value,
|
|
294
|
-
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => showDropdown.value = $event),
|
|
295
|
-
class: "relative"
|
|
296
|
-
}, {
|
|
297
|
-
trigger: withCtx(() => [
|
|
298
|
-
createVNode(_sfc_main$1, {
|
|
299
|
-
color: "transp",
|
|
300
|
-
size: "medium",
|
|
301
|
-
class: "w-3r h-3r radius-full"
|
|
302
|
-
}, {
|
|
303
|
-
default: withCtx(() => [
|
|
304
|
-
createVNode(_sfc_main$7, { class: "w-1-25r h-1-25r" })
|
|
305
|
-
]),
|
|
306
|
-
_: 1
|
|
307
|
-
})
|
|
308
|
-
]),
|
|
309
|
-
default: withCtx(() => [
|
|
310
|
-
createElementVNode("div", _hoisted_16, [
|
|
311
|
-
createVNode(_sfc_main$1, {
|
|
312
|
-
onClick: _cache[0] || (_cache[0] = ($event) => showAddToPlaylistModal.value = true),
|
|
313
|
-
color: "transp",
|
|
314
|
-
size: "small",
|
|
315
|
-
class: "w-100 justify-start"
|
|
316
|
-
}, {
|
|
317
|
-
default: withCtx(() => _cache[7] || (_cache[7] = [
|
|
318
|
-
createTextVNode(" Add to Playlist ")
|
|
319
|
-
])),
|
|
320
|
-
_: 1
|
|
321
|
-
}),
|
|
322
|
-
createVNode(_sfc_main$1, {
|
|
323
|
-
onClick: copyLink,
|
|
324
|
-
color: "transp",
|
|
325
|
-
size: "small",
|
|
326
|
-
class: "w-100 justify-start"
|
|
327
|
-
}, {
|
|
328
|
-
default: withCtx(() => _cache[8] || (_cache[8] = [
|
|
329
|
-
createTextVNode(" Copy Link ")
|
|
330
|
-
])),
|
|
331
|
-
_: 1
|
|
332
|
-
}),
|
|
333
|
-
isOwner.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
334
|
-
_cache[11] || (_cache[11] = createElementVNode("hr", { class: "mn-v-thin border-dark-transp-10" }, null, -1)),
|
|
335
|
-
createVNode(_sfc_main$1, {
|
|
336
|
-
onClick: editTrack,
|
|
337
|
-
color: "transp",
|
|
338
|
-
size: "small",
|
|
339
|
-
class: "w-100 justify-start"
|
|
340
|
-
}, {
|
|
341
|
-
default: withCtx(() => _cache[9] || (_cache[9] = [
|
|
342
|
-
createTextVNode(" Edit Track ")
|
|
343
|
-
])),
|
|
344
|
-
_: 1
|
|
345
|
-
}),
|
|
346
|
-
createVNode(_sfc_main$1, {
|
|
347
|
-
onClick: deleteTrack,
|
|
348
|
-
color: "danger",
|
|
349
|
-
size: "small",
|
|
350
|
-
class: "w-100 justify-start"
|
|
351
|
-
}, {
|
|
352
|
-
default: withCtx(() => _cache[10] || (_cache[10] = [
|
|
353
|
-
createTextVNode(" Delete Track ")
|
|
354
|
-
])),
|
|
355
|
-
_: 1
|
|
356
|
-
})
|
|
357
|
-
], 64)) : createCommentVNode("", true)
|
|
358
|
-
])
|
|
359
|
-
]),
|
|
360
|
-
_: 1
|
|
361
|
-
}, 8, ["label", "modelValue"])
|
|
281
|
+
track.value.artist ? (openBlock(), createElementBlock("h3", _hoisted_16, "Artist")) : createCommentVNode("", true),
|
|
282
|
+
(openBlock(), createBlock(ArtistCardSmall, {
|
|
283
|
+
key: track.value.artist._id,
|
|
284
|
+
artist: track.value.artist,
|
|
285
|
+
"is-following": isFollowingArtist.value,
|
|
286
|
+
"show-follow-button": !isOwner.value,
|
|
287
|
+
onToggleFollow: toggleFollowArtist
|
|
288
|
+
}, null, 8, ["artist", "is-following", "show-follow-button"]))
|
|
362
289
|
]),
|
|
290
|
+
_cache[12] || (_cache[12] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Metadata", -1)),
|
|
363
291
|
createElementVNode("div", _hoisted_17, [
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
(openBlock(), createBlock(ArtistCardSmall, {
|
|
367
|
-
key: track.value.artist._id,
|
|
368
|
-
artist: track.value.artist,
|
|
369
|
-
"is-following": isFollowingArtist.value,
|
|
370
|
-
"show-follow-button": !isOwner.value,
|
|
371
|
-
onToggleFollow: toggleFollowArtist
|
|
372
|
-
}, null, 8, ["artist", "is-following", "show-follow-button"]))
|
|
373
|
-
])
|
|
374
|
-
]),
|
|
375
|
-
_cache[20] || (_cache[20] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Metadata", -1)),
|
|
376
|
-
createElementVNode("div", _hoisted_20, [
|
|
377
|
-
createElementVNode("div", _hoisted_21, [
|
|
378
|
-
createVNode(_sfc_main$8, { class: "i-medium t-primary" }),
|
|
292
|
+
createElementVNode("div", _hoisted_18, [
|
|
293
|
+
createVNode(_sfc_main$7, { class: "i-medium t-primary" }),
|
|
379
294
|
createElementVNode("div", null, [
|
|
380
|
-
_cache[
|
|
381
|
-
createElementVNode("div",
|
|
295
|
+
_cache[4] || (_cache[4] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Released", -1)),
|
|
296
|
+
createElementVNode("div", _hoisted_19, toDisplayString(formatDate(track.value.releaseDate)), 1)
|
|
382
297
|
])
|
|
383
298
|
]),
|
|
384
|
-
createElementVNode("div",
|
|
299
|
+
createElementVNode("div", _hoisted_20, [
|
|
385
300
|
createVNode(IconTime, { class: "i-medium t-primary" }),
|
|
386
301
|
createElementVNode("div", null, [
|
|
387
|
-
_cache[
|
|
388
|
-
createElementVNode("div",
|
|
302
|
+
_cache[5] || (_cache[5] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Duration", -1)),
|
|
303
|
+
createElementVNode("div", _hoisted_21, toDisplayString(formatDuration(track.value.duration)), 1)
|
|
389
304
|
])
|
|
390
305
|
]),
|
|
391
|
-
createElementVNode("div",
|
|
392
|
-
createVNode(_sfc_main$
|
|
306
|
+
createElementVNode("div", _hoisted_22, [
|
|
307
|
+
createVNode(_sfc_main$8, { class: "i-medium t-primary" }),
|
|
393
308
|
createElementVNode("div", null, [
|
|
394
|
-
_cache[
|
|
395
|
-
createElementVNode("div",
|
|
309
|
+
_cache[6] || (_cache[6] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Status", -1)),
|
|
310
|
+
createElementVNode("div", _hoisted_23, toDisplayString(track.value.status), 1)
|
|
396
311
|
])
|
|
397
312
|
]),
|
|
398
|
-
createElementVNode("div",
|
|
399
|
-
createVNode(_sfc_main$
|
|
313
|
+
createElementVNode("div", _hoisted_24, [
|
|
314
|
+
createVNode(_sfc_main$9, { class: "i-medium t-primary" }),
|
|
400
315
|
createElementVNode("div", null, [
|
|
401
|
-
_cache[
|
|
402
|
-
createElementVNode("div",
|
|
316
|
+
_cache[7] || (_cache[7] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Visibility", -1)),
|
|
317
|
+
createElementVNode("div", _hoisted_25, toDisplayString(track.value.isPublic ? "Public" : "Private"), 1)
|
|
403
318
|
])
|
|
404
319
|
])
|
|
405
320
|
]),
|
|
406
|
-
track.value.album ? (openBlock(), createElementBlock("h3",
|
|
407
|
-
track.value.album ? (openBlock(), createElementBlock("div",
|
|
321
|
+
track.value.album ? (openBlock(), createElementBlock("h3", _hoisted_26, "From Album")) : createCommentVNode("", true),
|
|
322
|
+
track.value.album ? (openBlock(), createElementBlock("div", _hoisted_27, [
|
|
408
323
|
createVNode(_component_router_link, {
|
|
409
324
|
to: `/album/${track.value.album.url}`,
|
|
410
325
|
class: "flex flex-v-center gap-thin hover-opacity"
|
|
@@ -415,14 +330,14 @@ const _sfc_main = {
|
|
|
415
330
|
alt: track.value.album.title,
|
|
416
331
|
class: "w-3r h-3r radius-thin o-hidden object-cover"
|
|
417
332
|
}, null, 8, ["url", "alt"]),
|
|
418
|
-
createElementVNode("span",
|
|
333
|
+
createElementVNode("span", _hoisted_28, toDisplayString(track.value.album.title), 1)
|
|
419
334
|
]),
|
|
420
335
|
_: 1
|
|
421
336
|
}, 8, ["to"])
|
|
422
337
|
])) : createCommentVNode("", true),
|
|
423
|
-
track.value.genre && track.value.genre.length || track.value.tags && track.value.tags.length ? (openBlock(), createElementBlock("div",
|
|
424
|
-
_cache[
|
|
425
|
-
createElementVNode("div",
|
|
338
|
+
track.value.genre && track.value.genre.length || track.value.tags && track.value.tags.length ? (openBlock(), createElementBlock("div", _hoisted_29, [
|
|
339
|
+
_cache[8] || (_cache[8] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Genres & Tags", -1)),
|
|
340
|
+
createElementVNode("div", _hoisted_30, [
|
|
426
341
|
(openBlock(true), createElementBlock(Fragment, null, renderList(track.value.genre, (genre) => {
|
|
427
342
|
return openBlock(), createElementBlock("span", {
|
|
428
343
|
key: genre,
|
|
@@ -437,19 +352,19 @@ const _sfc_main = {
|
|
|
437
352
|
}), 128))
|
|
438
353
|
])
|
|
439
354
|
])) : createCommentVNode("", true),
|
|
440
|
-
track.value.description ? (openBlock(), createElementBlock("div",
|
|
441
|
-
_cache[
|
|
442
|
-
createElementVNode("p",
|
|
355
|
+
track.value.description ? (openBlock(), createElementBlock("div", _hoisted_31, [
|
|
356
|
+
_cache[9] || (_cache[9] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "About", -1)),
|
|
357
|
+
createElementVNode("p", _hoisted_32, toDisplayString(track.value.description), 1)
|
|
443
358
|
])) : createCommentVNode("", true),
|
|
444
|
-
track.value.lyrics ? (openBlock(), createElementBlock("div",
|
|
445
|
-
_cache[
|
|
446
|
-
createElementVNode("pre",
|
|
359
|
+
track.value.lyrics ? (openBlock(), createElementBlock("div", _hoisted_33, [
|
|
360
|
+
_cache[10] || (_cache[10] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Lyrics", -1)),
|
|
361
|
+
createElementVNode("pre", _hoisted_34, toDisplayString(track.value.lyrics), 1)
|
|
447
362
|
])) : createCommentVNode("", true)
|
|
448
363
|
])
|
|
449
364
|
])) : createCommentVNode("", true),
|
|
450
|
-
track.value && relatedTracks.value && relatedTracks.value.length ? (openBlock(), createElementBlock("section",
|
|
451
|
-
_cache[
|
|
452
|
-
createVNode(_sfc_main$
|
|
365
|
+
track.value && relatedTracks.value && relatedTracks.value.length ? (openBlock(), createElementBlock("section", _hoisted_35, [
|
|
366
|
+
_cache[13] || (_cache[13] = createElementVNode("h2", { class: "h2 mn-b-medium" }, "Related Tracks", -1)),
|
|
367
|
+
createVNode(_sfc_main$a, {
|
|
453
368
|
store: {
|
|
454
369
|
read: () => new _ctx.Promise((resolve) => resolve(relatedTracks.value || [])),
|
|
455
370
|
state: { isLoading: false }
|
|
@@ -466,9 +381,9 @@ const _sfc_main = {
|
|
|
466
381
|
class: "grid cols-2 cols-m-3 cols-l-4 gap-regular"
|
|
467
382
|
}, {
|
|
468
383
|
default: withCtx(({ items }) => [
|
|
469
|
-
createElementVNode("div",
|
|
384
|
+
createElementVNode("div", _hoisted_36, [
|
|
470
385
|
(openBlock(true), createElementBlock(Fragment, null, renderList(items, (relatedTrack, index) => {
|
|
471
|
-
return openBlock(), createBlock(_sfc_main$
|
|
386
|
+
return openBlock(), createBlock(_sfc_main$b, {
|
|
472
387
|
key: relatedTrack._id,
|
|
473
388
|
track: relatedTrack,
|
|
474
389
|
index,
|
|
@@ -481,12 +396,12 @@ const _sfc_main = {
|
|
|
481
396
|
_: 1
|
|
482
397
|
}, 8, ["store", "items"])
|
|
483
398
|
])) : createCommentVNode("", true),
|
|
484
|
-
showAddToPlaylistModal.value ? (openBlock(), createBlock(_sfc_main$
|
|
399
|
+
showAddToPlaylistModal.value ? (openBlock(), createBlock(_sfc_main$c, {
|
|
485
400
|
key: 4,
|
|
486
|
-
onClosePopup: _cache[
|
|
401
|
+
onClosePopup: _cache[0] || (_cache[0] = ($event) => showAddToPlaylistModal.value = false),
|
|
487
402
|
class: "bg-white pd-medium w-m-25r radius-medium"
|
|
488
403
|
}, {
|
|
489
|
-
default: withCtx(() => _cache[
|
|
404
|
+
default: withCtx(() => _cache[14] || (_cache[14] = [
|
|
490
405
|
createElementVNode("h3", { class: "h3 mn-b-medium" }, "Add to Playlist", -1),
|
|
491
406
|
createElementVNode("p", { class: "t-transp" }, "Playlist selector coming soon...", -1)
|
|
492
407
|
])),
|