Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions src/plugins/playlist/playlist.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import isPlainObject from 'lodash/isPlainObject';
import { sliceProperties } from 'utils/slicing';
import { PLAYER_EVENT } from 'utils/consts';
import { getCloudinaryUrl } from 'plugins/cloudinary/common';
Expand All @@ -22,7 +21,7 @@ const playlist = (player, options = {}) => {
playlistWidget.dispose();
}

if (isPlainObject(options.playlistWidget)) {
if (options.playlistWidget?.show != false) {
if (player.fluid_) {
options.playlistWidget.fluid = true;
}
Expand Down
8 changes: 7 additions & 1 deletion src/plugins/playlist/ui/playlist.js
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,13 @@ class Playlist {
current.recommendations(this._defaultRecommendationsResolver(current));
}

this._context.source(current, { recommendationOptions: { disableAutoShow: true, itemBuilder } });
// Extract source options for analytics
const sourceOptions = current.getInitOptions ? current.getInitOptions() : {};

this._context.source(current, {
...sourceOptions,
recommendationOptions: { disableAutoShow: true, itemBuilder }
});

const eventData = { playlist: this, current, next: this.next() };

Expand Down
17 changes: 12 additions & 5 deletions src/utils/get-analytics-player-options.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,16 @@ const getTranscriptOptions = (textTracks = {}) => {

const getSourceOptions = (sourceOptions = {}) => ({
sourceTypes: sourceOptions.sourceTypes,
chapters: sourceOptions.chapters && (sourceOptions.chapters.url ? 'url' : 'inline-chapters'),
visualSearch: hasConfig(sourceOptions.visualSearch),
chapters: (() => {
if (sourceOptions.chapters === true) return 'auto';
if (sourceOptions.chapters && sourceOptions.chapters.url) return 'url';
if (sourceOptions.chapters) return 'inline-chapters';
return undefined;
})(),
visualSearch: sourceOptions.visualSearch,
download: hasConfig(sourceOptions.download),
recommendations: sourceOptions.recommendations && sourceOptions.recommendations.length,
...(sourceOptions.adaptiveStreaming ? {
...(hasConfig(sourceOptions.adaptiveStreaming) ? {
abrStrategy: sourceOptions?.adaptiveStreaming?.strategy,
} : {}),
shoppable: hasConfig(sourceOptions.shoppable),
Expand Down Expand Up @@ -74,7 +79,9 @@ const getAdsOptions = (adsOptions = {}) => ({
adsAdsInPlaylist: adsOptions.adsInPlaylist
});

const getPlaylistWidgetOptions = (playlistWidgetOptions = {}) => ({
const getPlaylistOptions = (playlistWidgetOptions = {}) => ({
playlist: playlistWidgetOptions.playlist,
playlistByTag: playlistWidgetOptions.playlistByTag,
playlistWidgetDirection: playlistWidgetOptions.direction,
playlistWidgetTotal: playlistWidgetOptions.total
});
Expand Down Expand Up @@ -122,5 +129,5 @@ export const getAnalyticsFromPlayerOptions = (playerOptions) => filterDefaultsAn
...getCloudinaryOptions(playerOptions.cloudinary),
...getSourceOptions(playerOptions.sourceOptions),
...getAdsOptions(playerOptions.ads),
...getPlaylistWidgetOptions(playerOptions.playlistWidget)
...getPlaylistOptions(playerOptions.playlistWidget)
});
4 changes: 4 additions & 0 deletions src/video-player.js
Original file line number Diff line number Diff line change
Expand Up @@ -629,6 +629,8 @@ class VideoPlayer extends Utils.mixin(Eventable) {
}

playlist(sources, options = {}) {
this.playerOptions.playlistWidget = { ...(this.playerOptions.playlistWidget || { show: false }), playlist: true };

options = Object.assign({}, options, { playlistWidget: this.playerOptions.playlistWidget });

this.videojs.one(PLAYER_EVENT.READY, async () => {
Expand All @@ -640,6 +642,8 @@ class VideoPlayer extends Utils.mixin(Eventable) {
}

playlistByTag(tag, options = {}) {
this.playerOptions.playlistWidget = { ...(this.playerOptions.playlistWidget || { show: false}), playlistByTag: true };

options = Object.assign({}, options, { playlistWidget: this.playerOptions.playlistWidget });

return new Promise((resolve) => {
Expand Down