From 7fb29496feb46fe4e27a334fd390798cb3e80450 Mon Sep 17 00:00:00 2001 From: zhw2590582 Date: Sun, 21 Apr 2019 18:00:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=92=AD=E6=94=BE=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E8=87=AA=E5=8A=A8=E5=BE=AA=E7=8E=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/uncompiled/artplayer-plugin-playlist.js | 90 +++++++++++-------- .../artplayer-plugin-playlist.js.map | 2 +- .../artplayer-plugin-playlist/src/index.js | 67 ++++++++------ 3 files changed, 92 insertions(+), 67 deletions(-) diff --git a/docs/uncompiled/artplayer-plugin-playlist.js b/docs/uncompiled/artplayer-plugin-playlist.js index e06420ad1..427a5084f 100644 --- a/docs/uncompiled/artplayer-plugin-playlist.js +++ b/docs/uncompiled/artplayer-plugin-playlist.js @@ -7,7 +7,8 @@ function artplayerPluginPlaylist(art) { var _art$constructor$util = art.constructor.utils, append = _art$constructor$util.append, - errorHandle = _art$constructor$util.errorHandle; + errorHandle = _art$constructor$util.errorHandle, + sleep = _art$constructor$util.sleep; var player = art.player, proxy = art.events.proxy, _art$template = art.template, @@ -16,28 +17,42 @@ var $playlist = append($player, "\n
\n
\n
\n "); var $playlistInner = $playlist.querySelector('.artplay-playlist-inner'); var playlist = []; - art.on('afterAttachUrl', function () { - var index = playlist.findIndex(function (item) { - return item.url === $video.src; - }); - var $children = Array.from($playlistInner.children); - var $item = $children[index]; - - if (index !== -1 && $item) { - $children.forEach(function (item) { - return item.classList.remove('active'); - }); - $item.classList.add('active'); - } - }); function switchUrl(index) { var itemOption = playlist[index]; - player.switchUrl(itemOption.url, itemOption.title).then(function () { + return player.switchUrl(itemOption.url, itemOption.title).then(function () { art.emit('artplayerPluginPlaylist:change', itemOption); }); } + function prevVideo() { + var index = playlist.findIndex(function (item) { + return item.url === $video.src; + }); + errorHandle(index !== -1, "Can't find Playlist item"); + + if (playlist.length === 1) { + return switchUrl(0); + } + + var prevIndex = index - 1 === -1 ? playlist.length - 1 : index - 1; + return switchUrl(prevIndex); + } + + function nextVideo() { + var index = playlist.findIndex(function (item) { + return item.url === $video.src; + }); + errorHandle(index !== -1, "Can't find Playlist item"); + + if (playlist.length === 1) { + return switchUrl(0); + } + + var nextIndex = index + 1 === playlist.length ? 0 : index + 1; + return switchUrl(nextIndex); + } + proxy($playlistInner, 'click', function (e) { var optionIndex = e.target.dataset.optionIndex; @@ -50,6 +65,25 @@ $playlist.style.display = 'none'; } }); + art.on('video:ended', function () { + nextVideo().then(function () { + sleep(1000).then(player.play); + }); + }); + art.on('afterAttachUrl', function () { + var index = playlist.findIndex(function (item) { + return item.url === $video.src; + }); + var $children = Array.from($playlistInner.children); + var $item = $children[index]; + + if (index !== -1 && $item) { + $children.forEach(function (item) { + return item.classList.remove('active'); + }); + $item.classList.add('active'); + } + }); return { name: 'artplayerPluginPlaylist', load: function load(list) { @@ -71,30 +105,10 @@ $playlist.style.display = 'none'; }, next: function next() { - var index = playlist.findIndex(function (item) { - return item.url === $video.src; - }); - errorHandle(index !== -1, "Can't find Playlist item"); - - if (playlist.length === 1) { - switchUrl(0); - } else { - var nextIndex = index + 1 === playlist.length ? 0 : index + 1; - switchUrl(nextIndex); - } + nextVideo(); }, prev: function prev() { - var index = playlist.findIndex(function (item) { - return item.url === $video.src; - }); - errorHandle(index !== -1, "Can't find Playlist item"); - - if (playlist.length === 1) { - switchUrl(0); - } else { - var prevIndex = index - 1 === -1 ? playlist.length - 1 : index - 1; - switchUrl(prevIndex); - } + prevVideo(); } }; } diff --git a/docs/uncompiled/artplayer-plugin-playlist.js.map b/docs/uncompiled/artplayer-plugin-playlist.js.map index 1c4fca925..96e0aba08 100644 --- a/docs/uncompiled/artplayer-plugin-playlist.js.map +++ b/docs/uncompiled/artplayer-plugin-playlist.js.map @@ -1 +1 @@ -{"version":3,"file":"artplayer-plugin-playlist.js","sources":["../../packages/artplayer-plugin-playlist/src/index.js"],"sourcesContent":["import './index.scss';\n\nfunction artplayerPluginPlaylist(art) {\n const {\n utils: { append, errorHandle },\n } = art.constructor;\n const {\n player,\n events: { proxy },\n template: { $player, $video },\n } = art;\n\n const $playlist = append(\n $player,\n `\n
\n
\n
\n `,\n );\n\n const $playlistInner = $playlist.querySelector('.artplay-playlist-inner');\n let playlist = [];\n\n art.on('afterAttachUrl', () => {\n const index = playlist.findIndex(item => item.url === $video.src);\n const $children = Array.from($playlistInner.children);\n const $item = $children[index];\n if (index !== -1 && $item) {\n $children.forEach(item => item.classList.remove('active'));\n $item.classList.add('active');\n }\n });\n\n function switchUrl(index) {\n const itemOption = playlist[index];\n player.switchUrl(itemOption.url, itemOption.title).then(() => {\n art.emit('artplayerPluginPlaylist:change', itemOption);\n });\n }\n\n proxy($playlistInner, 'click', e => {\n const { optionIndex } = e.target.dataset;\n if (optionIndex && Number(optionIndex) <= playlist.length - 1) {\n switchUrl(optionIndex);\n }\n });\n\n proxy($playlist, 'click', e => {\n if (e.target === $playlist) {\n $playlist.style.display = 'none';\n }\n });\n\n return {\n name: 'artplayerPluginPlaylist',\n load(list) {\n errorHandle(Array.isArray(list), 'Playlist is not an array type');\n errorHandle(list.length > 0, 'Playlist cannot be empty');\n playlist = list.map(item => {\n errorHandle(item.url, 'Playlist items require url attribute');\n errorHandle(item.title, 'Playlist items require title attribute');\n return item;\n });\n $playlistInner.innerHTML = playlist\n .map((item, index) => {\n return `
${item.title}
`;\n })\n .join('');\n },\n show() {\n $playlist.style.display = 'flex';\n },\n hide() {\n $playlist.style.display = 'none';\n },\n next() {\n const index = playlist.findIndex(item => item.url === $video.src);\n errorHandle(index !== -1, \"Can't find Playlist item\");\n if (playlist.length === 1) {\n switchUrl(0);\n } else {\n const nextIndex = index + 1 === playlist.length ? 0 : index + 1;\n switchUrl(nextIndex);\n }\n },\n prev() {\n const index = playlist.findIndex(item => item.url === $video.src);\n errorHandle(index !== -1, \"Can't find Playlist item\");\n if (playlist.length === 1) {\n switchUrl(0);\n } else {\n const prevIndex = index - 1 === -1 ? playlist.length - 1 : index - 1;\n switchUrl(prevIndex);\n }\n },\n };\n}\n\nwindow.artplayerPluginPlaylist = artplayerPluginPlaylist;\nexport default artplayerPluginPlaylist;\n"],"names":["artplayerPluginPlaylist","art","constructor","utils","append","errorHandle","player","proxy","events","template","$player","$video","$playlist","$playlistInner","querySelector","playlist","on","index","findIndex","item","url","src","$children","Array","from","children","$item","forEach","classList","remove","add","switchUrl","itemOption","title","then","emit","e","optionIndex","target","dataset","Number","length","style","display","name","load","list","isArray","map","innerHTML","join","show","hide","next","nextIndex","prev","prevIndex","window"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"artplayer-plugin-playlist.js","sources":["../../packages/artplayer-plugin-playlist/src/index.js"],"sourcesContent":["import './index.scss';\n\nfunction artplayerPluginPlaylist(art) {\n const {\n utils: { append, errorHandle, sleep },\n } = art.constructor;\n const {\n player,\n events: { proxy },\n template: { $player, $video },\n } = art;\n\n const $playlist = append(\n $player,\n `\n
\n
\n
\n `,\n );\n\n const $playlistInner = $playlist.querySelector('.artplay-playlist-inner');\n let playlist = [];\n\n function switchUrl(index) {\n const itemOption = playlist[index];\n return player.switchUrl(itemOption.url, itemOption.title).then(() => {\n art.emit('artplayerPluginPlaylist:change', itemOption);\n });\n }\n\n function prevVideo() {\n const index = playlist.findIndex(item => item.url === $video.src);\n errorHandle(index !== -1, \"Can't find Playlist item\");\n if (playlist.length === 1) {\n return switchUrl(0);\n }\n const prevIndex = index - 1 === -1 ? playlist.length - 1 : index - 1;\n return switchUrl(prevIndex);\n }\n\n function nextVideo() {\n const index = playlist.findIndex(item => item.url === $video.src);\n errorHandle(index !== -1, \"Can't find Playlist item\");\n if (playlist.length === 1) {\n return switchUrl(0);\n }\n const nextIndex = index + 1 === playlist.length ? 0 : index + 1;\n return switchUrl(nextIndex);\n }\n\n proxy($playlistInner, 'click', e => {\n const { optionIndex } = e.target.dataset;\n if (optionIndex && Number(optionIndex) <= playlist.length - 1) {\n switchUrl(optionIndex);\n }\n });\n\n proxy($playlist, 'click', e => {\n if (e.target === $playlist) {\n $playlist.style.display = 'none';\n }\n });\n\n art.on('video:ended', () => {\n nextVideo().then(() => {\n sleep(1000).then(player.play);\n });\n });\n art.on('afterAttachUrl', () => {\n const index = playlist.findIndex(item => item.url === $video.src);\n const $children = Array.from($playlistInner.children);\n const $item = $children[index];\n if (index !== -1 && $item) {\n $children.forEach(item => item.classList.remove('active'));\n $item.classList.add('active');\n }\n });\n\n return {\n name: 'artplayerPluginPlaylist',\n load(list) {\n errorHandle(Array.isArray(list), 'Playlist is not an array type');\n errorHandle(list.length > 0, 'Playlist cannot be empty');\n playlist = list.map(item => {\n errorHandle(item.url, 'Playlist items require url attribute');\n errorHandle(item.title, 'Playlist items require title attribute');\n return item;\n });\n $playlistInner.innerHTML = playlist\n .map((item, index) => {\n return `
${item.title}
`;\n })\n .join('');\n },\n show() {\n $playlist.style.display = 'flex';\n },\n hide() {\n $playlist.style.display = 'none';\n },\n next() {\n nextVideo();\n },\n prev() {\n prevVideo();\n },\n };\n}\n\nwindow.artplayerPluginPlaylist = artplayerPluginPlaylist;\nexport default artplayerPluginPlaylist;\n"],"names":["artplayerPluginPlaylist","art","constructor","utils","append","errorHandle","sleep","player","proxy","events","template","$player","$video","$playlist","$playlistInner","querySelector","playlist","switchUrl","index","itemOption","url","title","then","emit","prevVideo","findIndex","item","src","length","prevIndex","nextVideo","nextIndex","e","optionIndex","target","dataset","Number","style","display","on","play","$children","Array","from","children","$item","forEach","classList","remove","add","name","load","list","isArray","map","innerHTML","join","show","hide","next","prev","window"],"mappings":"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"} \ No newline at end of file diff --git a/packages/artplayer-plugin-playlist/src/index.js b/packages/artplayer-plugin-playlist/src/index.js index 570715176..80ccb74e8 100644 --- a/packages/artplayer-plugin-playlist/src/index.js +++ b/packages/artplayer-plugin-playlist/src/index.js @@ -2,7 +2,7 @@ import './index.scss'; function artplayerPluginPlaylist(art) { const { - utils: { append, errorHandle }, + utils: { append, errorHandle, sleep }, } = art.constructor; const { player, @@ -22,23 +22,33 @@ function artplayerPluginPlaylist(art) { const $playlistInner = $playlist.querySelector('.artplay-playlist-inner'); let playlist = []; - art.on('afterAttachUrl', () => { - const index = playlist.findIndex(item => item.url === $video.src); - const $children = Array.from($playlistInner.children); - const $item = $children[index]; - if (index !== -1 && $item) { - $children.forEach(item => item.classList.remove('active')); - $item.classList.add('active'); - } - }); - function switchUrl(index) { const itemOption = playlist[index]; - player.switchUrl(itemOption.url, itemOption.title).then(() => { + return player.switchUrl(itemOption.url, itemOption.title).then(() => { art.emit('artplayerPluginPlaylist:change', itemOption); }); } + function prevVideo() { + const index = playlist.findIndex(item => item.url === $video.src); + errorHandle(index !== -1, "Can't find Playlist item"); + if (playlist.length === 1) { + return switchUrl(0); + } + const prevIndex = index - 1 === -1 ? playlist.length - 1 : index - 1; + return switchUrl(prevIndex); + } + + function nextVideo() { + const index = playlist.findIndex(item => item.url === $video.src); + errorHandle(index !== -1, "Can't find Playlist item"); + if (playlist.length === 1) { + return switchUrl(0); + } + const nextIndex = index + 1 === playlist.length ? 0 : index + 1; + return switchUrl(nextIndex); + } + proxy($playlistInner, 'click', e => { const { optionIndex } = e.target.dataset; if (optionIndex && Number(optionIndex) <= playlist.length - 1) { @@ -52,6 +62,21 @@ function artplayerPluginPlaylist(art) { } }); + art.on('video:ended', () => { + nextVideo().then(() => { + sleep(1000).then(player.play); + }); + }); + art.on('afterAttachUrl', () => { + const index = playlist.findIndex(item => item.url === $video.src); + const $children = Array.from($playlistInner.children); + const $item = $children[index]; + if (index !== -1 && $item) { + $children.forEach(item => item.classList.remove('active')); + $item.classList.add('active'); + } + }); + return { name: 'artplayerPluginPlaylist', load(list) { @@ -75,24 +100,10 @@ function artplayerPluginPlaylist(art) { $playlist.style.display = 'none'; }, next() { - const index = playlist.findIndex(item => item.url === $video.src); - errorHandle(index !== -1, "Can't find Playlist item"); - if (playlist.length === 1) { - switchUrl(0); - } else { - const nextIndex = index + 1 === playlist.length ? 0 : index + 1; - switchUrl(nextIndex); - } + nextVideo(); }, prev() { - const index = playlist.findIndex(item => item.url === $video.src); - errorHandle(index !== -1, "Can't find Playlist item"); - if (playlist.length === 1) { - switchUrl(0); - } else { - const prevIndex = index - 1 === -1 ? playlist.length - 1 : index - 1; - switchUrl(prevIndex); - } + prevVideo(); }, }; }