@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 { ref, computed, onMounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createVNode, createElementVNode, toDisplayString,
|
|
1
|
+
import { ref, computed, onMounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createVNode, createElementVNode, toDisplayString, Fragment, renderList, createBlock, withCtx, createTextVNode } from "vue";
|
|
2
2
|
import { useRoute, useRouter } from "vue-router";
|
|
3
|
-
import _sfc_main$
|
|
3
|
+
import _sfc_main$9 from "../../../../components/Button/Button.vue2.js";
|
|
4
4
|
/* empty css */
|
|
5
5
|
import Media from "../../../../components/Media/Media.vue.js";
|
|
6
|
-
|
|
7
|
-
import _sfc_main$
|
|
8
|
-
import _sfc_main$
|
|
9
|
-
import _sfc_main$
|
|
10
|
-
import _sfc_main$
|
|
11
|
-
import _sfc_main$
|
|
12
|
-
import _sfc_main$6 from "../../../icons/entities/IconCalendar.vue.js";
|
|
6
|
+
/* empty css */
|
|
7
|
+
import _sfc_main$7 from "../../../../components/Feed/Feed.vue.js";
|
|
8
|
+
import _sfc_main$a from "../../../../components/Popup/Popup.vue.js";
|
|
9
|
+
import _sfc_main$1 from "../../../icons/navigation/IconPlay.vue.js";
|
|
10
|
+
import _sfc_main$2 from "../../../icons/navigation/IconShuffle.vue.js";
|
|
11
|
+
import _sfc_main$4 from "../../../icons/entities/IconCalendar.vue.js";
|
|
13
12
|
import IconTime from "../../../icons/entities/IconTime.vue.js";
|
|
14
|
-
import _sfc_main$
|
|
15
|
-
import _sfc_main$
|
|
16
|
-
import _sfc_main$
|
|
13
|
+
import _sfc_main$6 from "../../../icons/actions/IconShow.vue.js";
|
|
14
|
+
import _sfc_main$5 from "../../../icons/navigation/IconRefresh.vue.js";
|
|
15
|
+
import _sfc_main$3 from "../blocks/ActionButtons.vue.js";
|
|
16
|
+
import _sfc_main$8 from "../cards/TrackListCard.vue.js";
|
|
17
17
|
import PlaylistCard from "../cards/PlaylistCard.vue.js";
|
|
18
|
-
import _sfc_main$
|
|
18
|
+
import _sfc_main$b from "../forms/PlaylistForm.vue.js";
|
|
19
19
|
import ArtistCardSmall from "../cards/ArtistCardSmall.vue.js";
|
|
20
|
-
import { state, actions } from "../../store/playlists.js";
|
|
21
|
-
import { actions
|
|
20
|
+
import { state, actions as actions$1 } from "../../store/playlists.js";
|
|
21
|
+
import { actions } from "../../store/player.js";
|
|
22
22
|
import { state as state$1 } from "../../../auth/views/store/auth.js";
|
|
23
23
|
import { useStore } from "../../../core/views/store/core.store.js";
|
|
24
24
|
const _hoisted_1 = { class: "playlist-page pd-small" };
|
|
@@ -28,9 +28,9 @@ const _hoisted_2 = {
|
|
|
28
28
|
};
|
|
29
29
|
const _hoisted_3 = {
|
|
30
30
|
key: 1,
|
|
31
|
-
class: "playlist-content cols-2
|
|
31
|
+
class: "playlist-content cols-2 mobile:cols-1 gap-big"
|
|
32
32
|
};
|
|
33
|
-
const _hoisted_4 = { class: "pos-sticky
|
|
33
|
+
const _hoisted_4 = { class: "pos-sticky pos-t-0 mobile:pos-relative playlist-cover-section" };
|
|
34
34
|
const _hoisted_5 = { class: "cover-container relative mn-b-medium radius-big overflow-hidden shadow-big" };
|
|
35
35
|
const _hoisted_6 = { class: "stats-grid grid cols-2 gap-small" };
|
|
36
36
|
const _hoisted_7 = { class: "stat-card bg-light pd-medium radius-medium t-center" };
|
|
@@ -48,53 +48,51 @@ const _hoisted_14 = {
|
|
|
48
48
|
class: "bg-light t-medium pd-thin radius-thin uppercase t-small t-uppercase"
|
|
49
49
|
};
|
|
50
50
|
const _hoisted_15 = { class: "h1 mn-b-medium" };
|
|
51
|
-
const _hoisted_16 = { class: "
|
|
52
|
-
const _hoisted_17 = { class: "
|
|
53
|
-
const _hoisted_18 = {
|
|
54
|
-
const _hoisted_19 = { class: "flex flex-column gap-small" };
|
|
55
|
-
const _hoisted_20 = {
|
|
51
|
+
const _hoisted_16 = { class: "artists-section mn-b-medium" };
|
|
52
|
+
const _hoisted_17 = { class: "flex flex-column gap-small" };
|
|
53
|
+
const _hoisted_18 = {
|
|
56
54
|
key: 0,
|
|
57
55
|
class: "collaborators-section mn-b-big"
|
|
58
56
|
};
|
|
59
|
-
const
|
|
60
|
-
const
|
|
61
|
-
const
|
|
57
|
+
const _hoisted_19 = { class: "flex flex-wrap gap-small" };
|
|
58
|
+
const _hoisted_20 = { class: "t-small" };
|
|
59
|
+
const _hoisted_21 = { class: "metadata-grid grid cols-2 gap-small mn-b-medium" };
|
|
60
|
+
const _hoisted_22 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
|
|
61
|
+
const _hoisted_23 = { class: "t-medium" };
|
|
62
62
|
const _hoisted_24 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
|
|
63
63
|
const _hoisted_25 = { class: "t-medium" };
|
|
64
64
|
const _hoisted_26 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
|
|
65
65
|
const _hoisted_27 = { class: "t-medium" };
|
|
66
66
|
const _hoisted_28 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
|
|
67
67
|
const _hoisted_29 = { class: "t-medium" };
|
|
68
|
-
const _hoisted_30 = {
|
|
69
|
-
const _hoisted_31 = { class: "t-medium" };
|
|
70
|
-
const _hoisted_32 = {
|
|
68
|
+
const _hoisted_30 = {
|
|
71
69
|
key: 1,
|
|
72
70
|
class: "tags-section mn-b-medium"
|
|
73
71
|
};
|
|
74
|
-
const
|
|
75
|
-
const
|
|
72
|
+
const _hoisted_31 = { class: "flex gap-thin flex-wrap" };
|
|
73
|
+
const _hoisted_32 = {
|
|
76
74
|
key: 2,
|
|
77
75
|
class: "description-section bg-light pd-medium radius-medium mn-b-medium"
|
|
78
76
|
};
|
|
79
|
-
const
|
|
80
|
-
const
|
|
77
|
+
const _hoisted_33 = { class: "t-transp" };
|
|
78
|
+
const _hoisted_34 = {
|
|
81
79
|
key: 2,
|
|
82
80
|
class: "tracks-section mn-t-big"
|
|
83
81
|
};
|
|
84
|
-
const
|
|
85
|
-
const
|
|
82
|
+
const _hoisted_35 = { class: "bg-light radius-medium o-hidden" };
|
|
83
|
+
const _hoisted_36 = {
|
|
86
84
|
key: 3,
|
|
87
85
|
class: "empty-section mn-t-big"
|
|
88
86
|
};
|
|
89
|
-
const
|
|
90
|
-
const
|
|
87
|
+
const _hoisted_37 = { class: "empty-tracks t-center pd-big bg-light radius-medium" };
|
|
88
|
+
const _hoisted_38 = {
|
|
91
89
|
key: 4,
|
|
92
90
|
class: "more-playlists-section mn-t-big"
|
|
93
91
|
};
|
|
94
|
-
const
|
|
95
|
-
const
|
|
96
|
-
const
|
|
97
|
-
const
|
|
92
|
+
const _hoisted_39 = { class: "flex justify-between items-center mn-b-medium" };
|
|
93
|
+
const _hoisted_40 = { class: "flex flex-nowrap gap-small o-x-scroll overscroll-behavior-x-contain scroll-behavior-smooth scroll-snap-type-x-mandatory scroll-hide" };
|
|
94
|
+
const _hoisted_41 = { class: "t-transp mn-b-medium" };
|
|
95
|
+
const _hoisted_42 = { class: "flex justify-end gap-small" };
|
|
98
96
|
const _sfc_main = {
|
|
99
97
|
__name: "Playlist",
|
|
100
98
|
emits: ["page-loading", "page-loaded"],
|
|
@@ -105,7 +103,6 @@ const _sfc_main = {
|
|
|
105
103
|
const emits = __emit;
|
|
106
104
|
const hasLoaded = ref(false);
|
|
107
105
|
const isFollowing = ref(false);
|
|
108
|
-
const showDropdown = ref(false);
|
|
109
106
|
const showEditModal = ref(false);
|
|
110
107
|
const showDeleteModal = ref(false);
|
|
111
108
|
const followedUsers = ref([]);
|
|
@@ -130,6 +127,58 @@ const _sfc_main = {
|
|
|
130
127
|
const totalSeconds = playlistTracks.value.reduce((sum, track) => sum + (track.duration || 0), 0);
|
|
131
128
|
return formatDuration(totalSeconds);
|
|
132
129
|
});
|
|
130
|
+
const actionButtons = computed(() => {
|
|
131
|
+
const buttons = [
|
|
132
|
+
{
|
|
133
|
+
type: "button",
|
|
134
|
+
class: "t-white bg-black",
|
|
135
|
+
icon: _sfc_main$1,
|
|
136
|
+
iconFill: "rgb(var(--white))",
|
|
137
|
+
text: "Play All",
|
|
138
|
+
action: playPlaylist
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: "button",
|
|
142
|
+
class: "bg-light",
|
|
143
|
+
icon: _sfc_main$2,
|
|
144
|
+
text: "Shuffle",
|
|
145
|
+
action: shufflePlay
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: "button",
|
|
149
|
+
class: "bg-light",
|
|
150
|
+
icon: null,
|
|
151
|
+
text: isFollowing.value ? "Unfollow" : "Follow",
|
|
152
|
+
action: toggleFollow
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
type: "dropdown",
|
|
156
|
+
items: [
|
|
157
|
+
{ text: "Add to Queue", action: addToQueue, class: "t-nowrap" },
|
|
158
|
+
{ text: "Copy Link", action: copyLink, class: "t-nowrap" }
|
|
159
|
+
]
|
|
160
|
+
}
|
|
161
|
+
];
|
|
162
|
+
if (isOwner.value || isCollaborator.value) {
|
|
163
|
+
const items = buttons[3].items;
|
|
164
|
+
items.push({ separator: true });
|
|
165
|
+
items.push({ text: "Edit Playlist", action: editPlaylist, class: "t-nowrap" });
|
|
166
|
+
if (isOwner.value) {
|
|
167
|
+
items.push({
|
|
168
|
+
text: playlist.value?.isCollaborative ? "Make Private" : "Make Collaborative",
|
|
169
|
+
action: toggleCollaborative,
|
|
170
|
+
class: "t-nowrap"
|
|
171
|
+
});
|
|
172
|
+
items.push({
|
|
173
|
+
text: "Delete Playlist",
|
|
174
|
+
action: deletePlaylist,
|
|
175
|
+
color: "danger",
|
|
176
|
+
class: "t-nowrap"
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return buttons;
|
|
181
|
+
});
|
|
133
182
|
const getOwnerProfileLink = (owner) => {
|
|
134
183
|
if (!owner || !owner.target) return { name: "music-home" };
|
|
135
184
|
const targetId = typeof owner.target === "object" ? owner.target._id : owner.target;
|
|
@@ -169,22 +218,22 @@ const _sfc_main = {
|
|
|
169
218
|
};
|
|
170
219
|
const playPlaylist = () => {
|
|
171
220
|
if (playlistTracks.value && playlistTracks.value.length > 0) {
|
|
172
|
-
actions
|
|
221
|
+
actions.setQueue(playlistTracks.value);
|
|
173
222
|
}
|
|
174
223
|
};
|
|
175
224
|
const shufflePlay = () => {
|
|
176
225
|
if (playlistTracks.value && playlistTracks.value.length > 0) {
|
|
177
226
|
const shuffled = [...playlistTracks.value].sort(() => Math.random() - 0.5);
|
|
178
|
-
actions
|
|
227
|
+
actions.setQueue(shuffled);
|
|
179
228
|
}
|
|
180
229
|
};
|
|
181
230
|
const toggleFollow = async () => {
|
|
182
231
|
isFollowing.value = !isFollowing.value;
|
|
183
232
|
try {
|
|
184
233
|
if (isFollowing.value) {
|
|
185
|
-
await actions.followPlaylist(playlist.value._id);
|
|
234
|
+
await actions$1.followPlaylist(playlist.value._id);
|
|
186
235
|
} else {
|
|
187
|
-
await actions.unfollowPlaylist(playlist.value._id);
|
|
236
|
+
await actions$1.unfollowPlaylist(playlist.value._id);
|
|
188
237
|
}
|
|
189
238
|
} catch (error) {
|
|
190
239
|
console.error("Error toggling follow:", error);
|
|
@@ -202,14 +251,12 @@ const _sfc_main = {
|
|
|
202
251
|
const addToQueue = () => {
|
|
203
252
|
if (playlistTracks.value && playlistTracks.value.length > 0) {
|
|
204
253
|
playlistTracks.value.forEach((track) => {
|
|
205
|
-
actions
|
|
254
|
+
actions.addToQueue(track);
|
|
206
255
|
});
|
|
207
|
-
showDropdown.value = false;
|
|
208
256
|
}
|
|
209
257
|
};
|
|
210
258
|
const editPlaylist = () => {
|
|
211
259
|
showEditModal.value = true;
|
|
212
|
-
showDropdown.value = false;
|
|
213
260
|
};
|
|
214
261
|
const toggleCollaborative = async () => {
|
|
215
262
|
try {
|
|
@@ -217,19 +264,17 @@ const _sfc_main = {
|
|
|
217
264
|
_id: playlist.value._id,
|
|
218
265
|
isCollaborative: !playlist.value.isCollaborative
|
|
219
266
|
};
|
|
220
|
-
await actions.updatePlaylist(updatedData);
|
|
221
|
-
showDropdown.value = false;
|
|
267
|
+
await actions$1.updatePlaylist(updatedData);
|
|
222
268
|
} catch (error) {
|
|
223
269
|
console.error("Error updating playlist:", error);
|
|
224
270
|
}
|
|
225
271
|
};
|
|
226
272
|
const deletePlaylist = () => {
|
|
227
273
|
showDeleteModal.value = true;
|
|
228
|
-
showDropdown.value = false;
|
|
229
274
|
};
|
|
230
275
|
const confirmDelete = async () => {
|
|
231
276
|
try {
|
|
232
|
-
await actions.deletePlaylist(playlist.value._id);
|
|
277
|
+
await actions$1.deletePlaylist(playlist.value._id);
|
|
233
278
|
router.push({ name: "music-library" });
|
|
234
279
|
} catch (error) {
|
|
235
280
|
console.error("Error deleting playlist:", error);
|
|
@@ -240,7 +285,7 @@ const _sfc_main = {
|
|
|
240
285
|
};
|
|
241
286
|
const removeTrack = async (trackId) => {
|
|
242
287
|
try {
|
|
243
|
-
await actions.removeTrackFromPlaylist(playlist.value._id, trackId);
|
|
288
|
+
await actions$1.removeTrackFromPlaylist(playlist.value._id, trackId);
|
|
244
289
|
await fetchPlaylistData();
|
|
245
290
|
} catch (error) {
|
|
246
291
|
console.error("Error removing track:", error);
|
|
@@ -251,7 +296,6 @@ const _sfc_main = {
|
|
|
251
296
|
};
|
|
252
297
|
const copyLink = () => {
|
|
253
298
|
navigator.clipboard.writeText(window.location.href);
|
|
254
|
-
showDropdown.value = false;
|
|
255
299
|
};
|
|
256
300
|
const handlePlaylistUpdated = () => {
|
|
257
301
|
showEditModal.value = false;
|
|
@@ -259,12 +303,12 @@ const _sfc_main = {
|
|
|
259
303
|
};
|
|
260
304
|
const fetchPlaylistData = async () => {
|
|
261
305
|
try {
|
|
262
|
-
await actions.fetchPlaylistByUrl(route.params.url);
|
|
306
|
+
await actions$1.fetchPlaylistByUrl(route.params.url);
|
|
263
307
|
if (state$1.user && playlist.value) {
|
|
264
308
|
}
|
|
265
309
|
if (playlist.value?.creator?.target) {
|
|
266
310
|
const creatorId = typeof playlist.value.creator.target === "object" ? playlist.value.creator.target._id : playlist.value.creator.target;
|
|
267
|
-
const playlists = await actions.fetchPlaylists({
|
|
311
|
+
const playlists = await actions$1.fetchPlaylists({
|
|
268
312
|
"creator.target": creatorId,
|
|
269
313
|
isPublic: true,
|
|
270
314
|
limit: 6
|
|
@@ -284,7 +328,7 @@ const _sfc_main = {
|
|
|
284
328
|
return (_ctx, _cache) => {
|
|
285
329
|
const _component_router_link = resolveComponent("router-link");
|
|
286
330
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
287
|
-
hasLoaded.value && !playlist.value ? (openBlock(), createElementBlock("div", _hoisted_2, _cache[
|
|
331
|
+
hasLoaded.value && !playlist.value ? (openBlock(), createElementBlock("div", _hoisted_2, _cache[6] || (_cache[6] = [
|
|
288
332
|
createElementVNode("h2", { class: "" }, "Playlist not found", -1),
|
|
289
333
|
createElementVNode("p", { class: "t-transp t-medium" }, "The playlist you're looking for doesn't exist or has been removed.", -1)
|
|
290
334
|
]))) : createCommentVNode("", true),
|
|
@@ -300,148 +344,25 @@ const _sfc_main = {
|
|
|
300
344
|
createElementVNode("div", _hoisted_6, [
|
|
301
345
|
createElementVNode("div", _hoisted_7, [
|
|
302
346
|
createElementVNode("div", _hoisted_8, toDisplayString(playlistTracks.value.length), 1),
|
|
303
|
-
_cache[
|
|
347
|
+
_cache[7] || (_cache[7] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Tracks", -1))
|
|
304
348
|
]),
|
|
305
349
|
createElementVNode("div", _hoisted_9, [
|
|
306
350
|
createElementVNode("div", _hoisted_10, toDisplayString(formatNumber(playlist.value.followers || 0)), 1),
|
|
307
|
-
_cache[
|
|
351
|
+
_cache[8] || (_cache[8] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Followers", -1))
|
|
308
352
|
])
|
|
309
353
|
])
|
|
310
354
|
]),
|
|
311
355
|
createElementVNode("div", _hoisted_11, [
|
|
312
356
|
createElementVNode("div", _hoisted_12, [
|
|
313
|
-
_cache[
|
|
357
|
+
_cache[9] || (_cache[9] = createElementVNode("span", { class: "bg-light t-medium pd-thin radius-thin uppercase t-small t-uppercase" }, " Playlist ", -1)),
|
|
314
358
|
playlist.value.isCollaborative ? (openBlock(), createElementBlock("span", _hoisted_13, " Collaborative ")) : createCommentVNode("", true),
|
|
315
359
|
playlist.value.status === "published" ? (openBlock(), createElementBlock("span", _hoisted_14, " Published ")) : createCommentVNode("", true)
|
|
316
360
|
]),
|
|
317
361
|
createElementVNode("h1", _hoisted_15, toDisplayString(playlist.value.title), 1),
|
|
362
|
+
createVNode(_sfc_main$3, { buttons: actionButtons.value }, null, 8, ["buttons"]),
|
|
318
363
|
createElementVNode("div", _hoisted_16, [
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
color: "primary",
|
|
322
|
-
size: "medium",
|
|
323
|
-
class: "flex-1 t-white bg-black radius-thin flex-center gap-thin"
|
|
324
|
-
}, {
|
|
325
|
-
default: withCtx(() => [
|
|
326
|
-
createVNode(_sfc_main$2, {
|
|
327
|
-
fill: "rgb(var(--white))",
|
|
328
|
-
class: "i-medium"
|
|
329
|
-
}),
|
|
330
|
-
_cache[11] || (_cache[11] = createTextVNode(" Play All "))
|
|
331
|
-
]),
|
|
332
|
-
_: 1
|
|
333
|
-
}),
|
|
334
|
-
createVNode(_sfc_main$1, {
|
|
335
|
-
onClick: shufflePlay,
|
|
336
|
-
color: "primary",
|
|
337
|
-
size: "medium",
|
|
338
|
-
class: "flex-1 bg-light radius-thin flex-center gap-thin"
|
|
339
|
-
}, {
|
|
340
|
-
default: withCtx(() => [
|
|
341
|
-
createVNode(_sfc_main$3, { class: "i-medium" }),
|
|
342
|
-
_cache[12] || (_cache[12] = createTextVNode(" Shuffle "))
|
|
343
|
-
]),
|
|
344
|
-
_: 1
|
|
345
|
-
}),
|
|
346
|
-
createVNode(_sfc_main$1, {
|
|
347
|
-
onClick: toggleFollow,
|
|
348
|
-
color: "primary",
|
|
349
|
-
size: "medium",
|
|
350
|
-
class: "flex-1 bg-light radius-thin flex-center gap-thin"
|
|
351
|
-
}, {
|
|
352
|
-
default: withCtx(() => [
|
|
353
|
-
createTextVNode(toDisplayString(isFollowing.value ? "Follow" : "Unfollow"), 1)
|
|
354
|
-
]),
|
|
355
|
-
_: 1
|
|
356
|
-
}),
|
|
357
|
-
createVNode(_sfc_main$4, {
|
|
358
|
-
label: { component: _sfc_main$5, class: "bg-light radius-thin pd-thin i-big" },
|
|
359
|
-
modelValue: showDropdown.value,
|
|
360
|
-
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => showDropdown.value = $event),
|
|
361
|
-
class: "relative"
|
|
362
|
-
}, {
|
|
363
|
-
trigger: withCtx(() => [
|
|
364
|
-
createVNode(_sfc_main$1, {
|
|
365
|
-
color: "transp",
|
|
366
|
-
size: "medium",
|
|
367
|
-
class: "w-3r h-3r radius-full"
|
|
368
|
-
}, {
|
|
369
|
-
default: withCtx(() => [
|
|
370
|
-
createVNode(_sfc_main$5, { class: "w-1-25r h-1-25r" })
|
|
371
|
-
]),
|
|
372
|
-
_: 1
|
|
373
|
-
})
|
|
374
|
-
]),
|
|
375
|
-
default: withCtx(() => [
|
|
376
|
-
createElementVNode("div", _hoisted_17, [
|
|
377
|
-
createVNode(_sfc_main$1, {
|
|
378
|
-
onClick: addToQueue,
|
|
379
|
-
color: "transp",
|
|
380
|
-
size: "small",
|
|
381
|
-
class: "w-100 t-nowrap justify-start"
|
|
382
|
-
}, {
|
|
383
|
-
default: withCtx(() => _cache[13] || (_cache[13] = [
|
|
384
|
-
createTextVNode(" Add to Queue ")
|
|
385
|
-
])),
|
|
386
|
-
_: 1
|
|
387
|
-
}),
|
|
388
|
-
createVNode(_sfc_main$1, {
|
|
389
|
-
onClick: copyLink,
|
|
390
|
-
color: "transp",
|
|
391
|
-
size: "small",
|
|
392
|
-
class: "w-100 t-nowrap justify-start"
|
|
393
|
-
}, {
|
|
394
|
-
default: withCtx(() => _cache[14] || (_cache[14] = [
|
|
395
|
-
createTextVNode(" Copy Link ")
|
|
396
|
-
])),
|
|
397
|
-
_: 1
|
|
398
|
-
}),
|
|
399
|
-
isOwner.value || isCollaborator.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
400
|
-
_cache[17] || (_cache[17] = createElementVNode("hr", { class: "mn-v-thin border-dark-transp-10" }, null, -1)),
|
|
401
|
-
createVNode(_sfc_main$1, {
|
|
402
|
-
onClick: editPlaylist,
|
|
403
|
-
color: "transp",
|
|
404
|
-
size: "small",
|
|
405
|
-
class: "w-100 t-nowrap justify-start"
|
|
406
|
-
}, {
|
|
407
|
-
default: withCtx(() => _cache[15] || (_cache[15] = [
|
|
408
|
-
createTextVNode(" Edit Playlist ")
|
|
409
|
-
])),
|
|
410
|
-
_: 1
|
|
411
|
-
}),
|
|
412
|
-
isOwner.value ? (openBlock(), createBlock(_sfc_main$1, {
|
|
413
|
-
key: 0,
|
|
414
|
-
onClick: toggleCollaborative,
|
|
415
|
-
color: "transp",
|
|
416
|
-
size: "small",
|
|
417
|
-
class: "t-nowrap w-100 justify-start"
|
|
418
|
-
}, {
|
|
419
|
-
default: withCtx(() => [
|
|
420
|
-
createTextVNode(toDisplayString(playlist.value.isCollaborative ? "Make Private" : "Make Collaborative"), 1)
|
|
421
|
-
]),
|
|
422
|
-
_: 1
|
|
423
|
-
})) : createCommentVNode("", true),
|
|
424
|
-
isOwner.value ? (openBlock(), createBlock(_sfc_main$1, {
|
|
425
|
-
key: 1,
|
|
426
|
-
onClick: deletePlaylist,
|
|
427
|
-
color: "danger",
|
|
428
|
-
size: "small",
|
|
429
|
-
class: "t-nowrap w-100 justify-start"
|
|
430
|
-
}, {
|
|
431
|
-
default: withCtx(() => _cache[16] || (_cache[16] = [
|
|
432
|
-
createTextVNode(" Delete Playlist ")
|
|
433
|
-
])),
|
|
434
|
-
_: 1
|
|
435
|
-
})) : createCommentVNode("", true)
|
|
436
|
-
], 64)) : createCommentVNode("", true)
|
|
437
|
-
])
|
|
438
|
-
]),
|
|
439
|
-
_: 1
|
|
440
|
-
}, 8, ["label", "modelValue"])
|
|
441
|
-
]),
|
|
442
|
-
createElementVNode("div", _hoisted_18, [
|
|
443
|
-
_cache[18] || (_cache[18] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Created by", -1)),
|
|
444
|
-
createElementVNode("div", _hoisted_19, [
|
|
364
|
+
_cache[10] || (_cache[10] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Created by", -1)),
|
|
365
|
+
createElementVNode("div", _hoisted_17, [
|
|
445
366
|
createVNode(ArtistCardSmall, {
|
|
446
367
|
artist: {
|
|
447
368
|
_id: playlist.value.creator.target,
|
|
@@ -452,13 +373,13 @@ const _sfc_main = {
|
|
|
452
373
|
},
|
|
453
374
|
"is-following": followedUsers.value.includes(playlist.value.creator.target),
|
|
454
375
|
"show-follow-button": !isOwner.value,
|
|
455
|
-
onToggleFollow: _cache[
|
|
376
|
+
onToggleFollow: _cache[0] || (_cache[0] = ($event) => toggleFollowUser(playlist.value.creator.target))
|
|
456
377
|
}, null, 8, ["artist", "is-following", "show-follow-button"])
|
|
457
378
|
])
|
|
458
379
|
]),
|
|
459
|
-
playlist.value.collaborators && playlist.value.collaborators.length > 0 ? (openBlock(), createElementBlock("div",
|
|
460
|
-
_cache[
|
|
461
|
-
createElementVNode("div",
|
|
380
|
+
playlist.value.collaborators && playlist.value.collaborators.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_18, [
|
|
381
|
+
_cache[11] || (_cache[11] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Collaborators", -1)),
|
|
382
|
+
createElementVNode("div", _hoisted_19, [
|
|
462
383
|
(openBlock(true), createElementBlock(Fragment, null, renderList(playlist.value.collaborators, (collaborator) => {
|
|
463
384
|
return openBlock(), createElementBlock("div", {
|
|
464
385
|
key: collaborator._id || collaborator,
|
|
@@ -469,45 +390,45 @@ const _sfc_main = {
|
|
|
469
390
|
url: collaborator.photoUrl,
|
|
470
391
|
class: "i-medium radius-full object-cover"
|
|
471
392
|
}, null, 8, ["url"])) : createCommentVNode("", true),
|
|
472
|
-
createElementVNode("span",
|
|
393
|
+
createElementVNode("span", _hoisted_20, toDisplayString(collaborator.name || collaborator.profile?.name || "User"), 1)
|
|
473
394
|
]);
|
|
474
395
|
}), 128))
|
|
475
396
|
])
|
|
476
397
|
])) : createCommentVNode("", true),
|
|
477
|
-
_cache[
|
|
478
|
-
createElementVNode("div",
|
|
479
|
-
createElementVNode("div",
|
|
480
|
-
createVNode(_sfc_main$
|
|
398
|
+
_cache[18] || (_cache[18] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Metadata", -1)),
|
|
399
|
+
createElementVNode("div", _hoisted_21, [
|
|
400
|
+
createElementVNode("div", _hoisted_22, [
|
|
401
|
+
createVNode(_sfc_main$4, { class: "i-medium t-primary" }),
|
|
481
402
|
createElementVNode("div", null, [
|
|
482
|
-
_cache[
|
|
483
|
-
createElementVNode("div",
|
|
403
|
+
_cache[12] || (_cache[12] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Created", -1)),
|
|
404
|
+
createElementVNode("div", _hoisted_23, toDisplayString(formatDate(playlist.value.createdAt)), 1)
|
|
484
405
|
])
|
|
485
406
|
]),
|
|
486
|
-
createElementVNode("div",
|
|
407
|
+
createElementVNode("div", _hoisted_24, [
|
|
487
408
|
createVNode(IconTime, { class: "i-medium t-primary" }),
|
|
488
409
|
createElementVNode("div", null, [
|
|
489
|
-
_cache[
|
|
490
|
-
createElementVNode("div",
|
|
410
|
+
_cache[13] || (_cache[13] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Duration", -1)),
|
|
411
|
+
createElementVNode("div", _hoisted_25, toDisplayString(totalDuration.value), 1)
|
|
491
412
|
])
|
|
492
413
|
]),
|
|
493
|
-
createElementVNode("div",
|
|
494
|
-
createVNode(_sfc_main$
|
|
414
|
+
createElementVNode("div", _hoisted_26, [
|
|
415
|
+
createVNode(_sfc_main$5, { class: "i-medium t-primary" }),
|
|
495
416
|
createElementVNode("div", null, [
|
|
496
|
-
_cache[
|
|
497
|
-
createElementVNode("div",
|
|
417
|
+
_cache[14] || (_cache[14] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Updated", -1)),
|
|
418
|
+
createElementVNode("div", _hoisted_27, toDisplayString(formatDate(playlist.value.updatedAt)), 1)
|
|
498
419
|
])
|
|
499
420
|
]),
|
|
500
|
-
createElementVNode("div",
|
|
501
|
-
createVNode(_sfc_main$
|
|
421
|
+
createElementVNode("div", _hoisted_28, [
|
|
422
|
+
createVNode(_sfc_main$6, { class: "i-medium t-primary" }),
|
|
502
423
|
createElementVNode("div", null, [
|
|
503
|
-
_cache[
|
|
504
|
-
createElementVNode("div",
|
|
424
|
+
_cache[15] || (_cache[15] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Visibility", -1)),
|
|
425
|
+
createElementVNode("div", _hoisted_29, toDisplayString(playlist.value.isPublic ? "Public" : "Private"), 1)
|
|
505
426
|
])
|
|
506
427
|
])
|
|
507
428
|
]),
|
|
508
|
-
playlist.value.tags && playlist.value.tags.length ? (openBlock(), createElementBlock("div",
|
|
509
|
-
_cache[
|
|
510
|
-
createElementVNode("div",
|
|
429
|
+
playlist.value.tags && playlist.value.tags.length ? (openBlock(), createElementBlock("div", _hoisted_30, [
|
|
430
|
+
_cache[16] || (_cache[16] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Tags", -1)),
|
|
431
|
+
createElementVNode("div", _hoisted_31, [
|
|
511
432
|
(openBlock(true), createElementBlock(Fragment, null, renderList(playlist.value.tags, (tag) => {
|
|
512
433
|
return openBlock(), createElementBlock("span", {
|
|
513
434
|
key: tag,
|
|
@@ -516,15 +437,15 @@ const _sfc_main = {
|
|
|
516
437
|
}), 128))
|
|
517
438
|
])
|
|
518
439
|
])) : createCommentVNode("", true),
|
|
519
|
-
playlist.value.description ? (openBlock(), createElementBlock("div",
|
|
520
|
-
_cache[
|
|
521
|
-
createElementVNode("p",
|
|
440
|
+
playlist.value.description ? (openBlock(), createElementBlock("div", _hoisted_32, [
|
|
441
|
+
_cache[17] || (_cache[17] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "About", -1)),
|
|
442
|
+
createElementVNode("p", _hoisted_33, toDisplayString(playlist.value.description), 1)
|
|
522
443
|
])) : createCommentVNode("", true)
|
|
523
444
|
])
|
|
524
445
|
])) : createCommentVNode("", true),
|
|
525
|
-
!_ctx.isLoading && playlist.value && playlistTracks.value.length ? (openBlock(), createElementBlock("section",
|
|
526
|
-
_cache[
|
|
527
|
-
createVNode(_sfc_main$
|
|
446
|
+
!_ctx.isLoading && playlist.value && playlistTracks.value.length ? (openBlock(), createElementBlock("section", _hoisted_34, [
|
|
447
|
+
_cache[19] || (_cache[19] = createElementVNode("h2", { class: "h2 mn-b-medium" }, "Tracklist", -1)),
|
|
448
|
+
createVNode(_sfc_main$7, {
|
|
528
449
|
store: {
|
|
529
450
|
read: () => _ctx.Promise.resolve(playlistTracks.value),
|
|
530
451
|
state: { isLoading: false }
|
|
@@ -540,9 +461,9 @@ const _sfc_main = {
|
|
|
540
461
|
}
|
|
541
462
|
}, {
|
|
542
463
|
default: withCtx(({ items }) => [
|
|
543
|
-
createElementVNode("div",
|
|
464
|
+
createElementVNode("div", _hoisted_35, [
|
|
544
465
|
(openBlock(true), createElementBlock(Fragment, null, renderList(items, (track, index) => {
|
|
545
|
-
return openBlock(), createBlock(_sfc_main$
|
|
466
|
+
return openBlock(), createBlock(_sfc_main$8, {
|
|
546
467
|
key: track._id,
|
|
547
468
|
track,
|
|
548
469
|
index: index + 1,
|
|
@@ -556,38 +477,38 @@ const _sfc_main = {
|
|
|
556
477
|
]),
|
|
557
478
|
_: 1
|
|
558
479
|
}, 8, ["store", "items"])
|
|
559
|
-
])) : !_ctx.isLoading && playlist.value && !playlistTracks.value.length ? (openBlock(), createElementBlock("section",
|
|
560
|
-
createElementVNode("div",
|
|
561
|
-
_cache[
|
|
562
|
-
_cache[
|
|
563
|
-
isOwner.value || isCollaborator.value ? (openBlock(), createBlock(_sfc_main$
|
|
480
|
+
])) : !_ctx.isLoading && playlist.value && !playlistTracks.value.length ? (openBlock(), createElementBlock("section", _hoisted_36, [
|
|
481
|
+
createElementVNode("div", _hoisted_37, [
|
|
482
|
+
_cache[21] || (_cache[21] = createElementVNode("h3", { class: "mn-b-small" }, "This playlist is empty", -1)),
|
|
483
|
+
_cache[22] || (_cache[22] = createElementVNode("p", { class: "t-transp t-medium mn-b-medium" }, "Add some tracks to get started", -1)),
|
|
484
|
+
isOwner.value || isCollaborator.value ? (openBlock(), createBlock(_sfc_main$9, {
|
|
564
485
|
key: 0,
|
|
565
|
-
onClick: _cache[
|
|
486
|
+
onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$router.push({ name: "music-search" })),
|
|
566
487
|
color: "primary",
|
|
567
488
|
size: "medium"
|
|
568
489
|
}, {
|
|
569
|
-
default: withCtx(() => _cache[
|
|
490
|
+
default: withCtx(() => _cache[20] || (_cache[20] = [
|
|
570
491
|
createTextVNode(" Find Tracks ")
|
|
571
492
|
])),
|
|
572
493
|
_: 1
|
|
573
494
|
})) : createCommentVNode("", true)
|
|
574
495
|
])
|
|
575
496
|
])) : createCommentVNode("", true),
|
|
576
|
-
!_ctx.isLoading && playlist.value && morePlaylists.value.length ? (openBlock(), createElementBlock("section",
|
|
577
|
-
createElementVNode("div",
|
|
578
|
-
_cache[
|
|
497
|
+
!_ctx.isLoading && playlist.value && morePlaylists.value.length ? (openBlock(), createElementBlock("section", _hoisted_38, [
|
|
498
|
+
createElementVNode("div", _hoisted_39, [
|
|
499
|
+
_cache[24] || (_cache[24] = createElementVNode("h2", { class: "h2" }, "More Playlists", -1)),
|
|
579
500
|
playlist.value.creator ? (openBlock(), createBlock(_component_router_link, {
|
|
580
501
|
key: 0,
|
|
581
502
|
to: getOwnerProfileLink(playlist.value.creator),
|
|
582
503
|
class: "t-primary hover-opacity"
|
|
583
504
|
}, {
|
|
584
|
-
default: withCtx(() => _cache[
|
|
505
|
+
default: withCtx(() => _cache[23] || (_cache[23] = [
|
|
585
506
|
createTextVNode(" See all ")
|
|
586
507
|
])),
|
|
587
508
|
_: 1
|
|
588
509
|
}, 8, ["to"])) : createCommentVNode("", true)
|
|
589
510
|
]),
|
|
590
|
-
createElementVNode("div",
|
|
511
|
+
createElementVNode("div", _hoisted_40, [
|
|
591
512
|
(openBlock(true), createElementBlock(Fragment, null, renderList(morePlaylists.value, (relatedPlaylist) => {
|
|
592
513
|
return openBlock(), createElementBlock("li", {
|
|
593
514
|
key: relatedPlaylist._id,
|
|
@@ -601,46 +522,46 @@ const _sfc_main = {
|
|
|
601
522
|
}), 128))
|
|
602
523
|
])
|
|
603
524
|
])) : createCommentVNode("", true),
|
|
604
|
-
createVNode(_sfc_main$
|
|
525
|
+
createVNode(_sfc_main$a, {
|
|
605
526
|
isPopupOpen: showEditModal.value && (isOwner.value || isCollaborator.value),
|
|
606
|
-
onClosePopup: _cache[
|
|
527
|
+
onClosePopup: _cache[3] || (_cache[3] = ($event) => showEditModal.value = false),
|
|
607
528
|
class: "bg-white pd-medium w-m-30r radius-medium"
|
|
608
529
|
}, {
|
|
609
530
|
default: withCtx(() => [
|
|
610
|
-
createVNode(_sfc_main$
|
|
531
|
+
createVNode(_sfc_main$b, {
|
|
611
532
|
editMode: true,
|
|
612
533
|
url: playlist.value.url,
|
|
613
|
-
onCancel: _cache[
|
|
534
|
+
onCancel: _cache[2] || (_cache[2] = ($event) => showEditModal.value = false),
|
|
614
535
|
onUpdated: handlePlaylistUpdated
|
|
615
536
|
}, null, 8, ["url"])
|
|
616
537
|
]),
|
|
617
538
|
_: 1
|
|
618
539
|
}, 8, ["isPopupOpen"]),
|
|
619
|
-
createVNode(_sfc_main$
|
|
540
|
+
createVNode(_sfc_main$a, {
|
|
620
541
|
isPopupOpen: showDeleteModal.value,
|
|
621
|
-
onClosePopup: _cache[
|
|
542
|
+
onClosePopup: _cache[5] || (_cache[5] = ($event) => showDeleteModal.value = false),
|
|
622
543
|
class: "bg-white pd-medium w-m-25r radius-medium"
|
|
623
544
|
}, {
|
|
624
545
|
default: withCtx(() => [
|
|
625
|
-
_cache[
|
|
626
|
-
createElementVNode("p",
|
|
627
|
-
createElementVNode("div",
|
|
628
|
-
createVNode(_sfc_main$
|
|
629
|
-
onClick: _cache[
|
|
546
|
+
_cache[27] || (_cache[27] = createElementVNode("h3", { class: "mn-b-medium" }, "Delete Playlist", -1)),
|
|
547
|
+
createElementVNode("p", _hoisted_41, 'Are you sure you want to delete "' + toDisplayString(playlist.value.title) + '"? This action cannot be undone.', 1),
|
|
548
|
+
createElementVNode("div", _hoisted_42, [
|
|
549
|
+
createVNode(_sfc_main$9, {
|
|
550
|
+
onClick: _cache[4] || (_cache[4] = ($event) => showDeleteModal.value = false),
|
|
630
551
|
color: "transp",
|
|
631
552
|
size: "medium"
|
|
632
553
|
}, {
|
|
633
|
-
default: withCtx(() => _cache[
|
|
554
|
+
default: withCtx(() => _cache[25] || (_cache[25] = [
|
|
634
555
|
createTextVNode(" Cancel ")
|
|
635
556
|
])),
|
|
636
557
|
_: 1
|
|
637
558
|
}),
|
|
638
|
-
createVNode(_sfc_main$
|
|
559
|
+
createVNode(_sfc_main$9, {
|
|
639
560
|
onClick: confirmDelete,
|
|
640
561
|
color: "danger",
|
|
641
562
|
size: "medium"
|
|
642
563
|
}, {
|
|
643
|
-
default: withCtx(() => _cache[
|
|
564
|
+
default: withCtx(() => _cache[26] || (_cache[26] = [
|
|
644
565
|
createTextVNode(" Delete Playlist ")
|
|
645
566
|
])),
|
|
646
567
|
_: 1
|