@wordpress/block-library
Version:
Block library for the WordPress editor.
68 lines (66 loc) • 1.99 kB
JavaScript
;
// packages/block-library/src/playlist/view.js
var import_interactivity = require("@wordpress/interactivity");
(0, import_interactivity.store)(
"core/playlist",
{
state: {
playlists: {},
get currentTrack() {
const { currentId, playlistId } = (0, import_interactivity.getContext)();
if (!currentId || !playlistId) {
return {};
}
const playlist = this.playlists[playlistId];
if (!playlist) {
return {};
}
return playlist.tracks[currentId] || {};
},
get isCurrentTrack() {
const { currentId, uniqueId } = (0, import_interactivity.getContext)();
return currentId === uniqueId;
}
},
actions: {
changeTrack() {
const context = (0, import_interactivity.getContext)();
context.currentId = context.uniqueId;
context.isPlaying = true;
},
isPlaying() {
const context = (0, import_interactivity.getContext)();
context.isPlaying = true;
},
isPaused() {
const context = (0, import_interactivity.getContext)();
context.isPlaying = false;
},
nextSong() {
const context = (0, import_interactivity.getContext)();
const currentIndex = context.tracks.findIndex(
(uniqueId) => uniqueId === context.currentId
);
const nextTrack = context.tracks[currentIndex + 1];
if (nextTrack) {
context.currentId = nextTrack;
const { ref } = (0, import_interactivity.getElement)();
setTimeout(() => {
ref.play();
}, 1e3);
}
}
},
callbacks: {
autoPlay() {
const context = (0, import_interactivity.getContext)();
const { ref } = (0, import_interactivity.getElement)();
if (context.currentId && context.isPlaying) {
ref.play();
}
}
}
},
{ lock: true }
);
//# sourceMappingURL=view.cjs.map