From 2d98ac27690088df117d80c953898f0cbc33b75b Mon Sep 17 00:00:00 2001 From: Rafael Miranda Date: Sun, 20 Jan 2019 22:46:34 -0500 Subject: [PATCH] feat(player): Added new config element to start media at a certain second; included documentation of it --- README.md | 6 ++++-- dist/openplayer.js | 10 ++++++++-- dist/openplayer.min.js | 2 +- src/js/player.ts | 4 ++++ 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 73f1780b..0e3ea456 100644 --- a/README.md +++ b/README.md @@ -12,13 +12,13 @@ This awesome player mimics the HTML5 video/audio methods/events/properties, and It also has the ability to play VMAP, VAST and VPAID Ads in an effortless way! -## Why OpenPlayer? +## Advantages of using OpenPlayerJS * **Supports IE11+ (Win8) and all modern browsers**: its CSS and code is compatible with all modern browsers. IE11+ on Win7 requires an MP4/MP3 fallback to work correctly. * **Lightweight library**: Less than `20kb` when gzipped. * **Monetize video and audio content** with video advertising using VAST, VPAID or VMAP Ads, supported by the amazing [Interactive Media Ads SDK](https://developers.google.com/interactive-media-ads/) (IMA SDK) library. * **Accessibility is a priority for OpenPlayerJS**: You can even create specific styling for high contrast mode, and support visually impaired people and improve accessibility. See https://developer.paciellogroup.com/blog/2010/01/high-contrast-proof-css-sprites/ for more details. -* **Always up-to-date**: Relying on services like Greenkeeper, OpenPlayer uses the latest and greatest versions of the packages to ensure it is always updated; also, IMA SDK, [hls.js](https://github.com/video-dev/hls.js/) and [dash.js](https://github.com/Dash-Industry-Forum/dash.js/) use **even-green paths** from their recommended CDN sources to they will be always providing the latest upgrades for OpenPlayer. +* **Always up-to-date**: Relying on services like Greenkeeper, OpenPlayer uses the latest and greatest versions of the packages to ensure it is always updated; also, IMA SDK, [hls.js](https://github.com/video-dev/hls.js/) and [dash.js](https://github.com/Dash-Industry-Forum/dash.js/) use **even-green paths** from their recommended CDN sources to they will be always providing the latest upgrades for OpenPlayerJS. * **Smart `autoplay`**: Special algorithm to detect browser's autoplay capabilities. * **Responsive**: Always adapts to the screen size (and resize) by default, for both video/audio tags; a new **`fill`** mode is also included to scale and crop media relative to its parent container. * Support for **local and remote captions** for **both video and audio**, even without including the `crossorigin` attribute. @@ -92,6 +92,8 @@ var player = new OpenPlayer('[player ID]', [valid VAST/VPAID URL|List of VAST/VP step, // Initial volume of media in decimal numbers (by default, `1`) startVolume, + // Initial play time of media in seconds (by default, `0`) + startTime, ads: { // Custom path/URL to IMA SDK url, diff --git a/dist/openplayer.js b/dist/openplayer.js index cbaa6d8b..1b0958df 100644 --- a/dist/openplayer.js +++ b/dist/openplayer.js @@ -345,7 +345,7 @@ exports.offset = offset; /* 6 */ /***/ (function(module, exports) { -var core = module.exports = { version: '2.6.2' }; +var core = module.exports = { version: '2.5.7' }; if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef @@ -1071,7 +1071,7 @@ var store = global[SHARED] || (global[SHARED] = {}); })('versions', []).push({ version: core.version, mode: __webpack_require__(25) ? 'pure' : 'global', - copyright: '© 2019 Denis Pushkarev (zloirock.ru)' + copyright: '© 2018 Denis Pushkarev (zloirock.ru)' }); @@ -1371,6 +1371,7 @@ var Player = function () { volumeControl: 'Volume Control', volumeSlider: 'Volume Slider' }, + startTime: 0, startVolume: 1, step: 0 }; @@ -1382,6 +1383,11 @@ var Player = function () { this.autoplay = this.element.autoplay || false; this.options = deepmerge(this.defaultOptions, options || {}); this.element.volume = this.options.startVolume; + + if (this.options.startTime > 0) { + this.element.currentTime = this.options.startTime; + } + this.volume = this.element.volume; this.element.autoplay = false; } diff --git a/dist/openplayer.min.js b/dist/openplayer.min.js index a82693fd..7fc85dc0 100644 --- a/dist/openplayer.min.js +++ b/dist/openplayer.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.OpenPlayer=t():e.OpenPlayer=t()}(window,function(){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=51)}([function(e,t,n){var i=n(3),r=n(6),s=n(16),a=n(21),o=n(18),l=function(e,t,n){var u,c,d,h,p=e&l.F,f=e&l.G,v=e&l.S,m=e&l.P,y=e&l.B,b=f?i:v?i[t]||(i[t]={}):(i[t]||{}).prototype,g=f?r:r[t]||(r[t]={}),E=g.prototype||(g.prototype={});for(u in f&&(n=t),n)d=((c=!p&&b&&void 0!==b[u])?b:n)[u],h=y&&c?o(d,i):m&&"function"==typeof d?o(Function.call,d):d,b&&a(b,u,d,e&l.U),g[u]!=d&&s(g,u,h),m&&E[u]!=d&&(E[u]=d)};i.core=r,l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},function(e,t,n){var i=n(42)("wks"),r=n(27),s=n(3).Symbol,a="function"==typeof s;(e.exports=function(e){return i[e]||(i[e]=a&&s[e]||(a?s:r)("Symbol."+e))}).store=i},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t,n){"use strict";var i=n(7);e.exports=function(e,t){return!!e&&i(function(){t?e.call(null,function(){},1):e.call(null)})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getAbsoluteUrl=function(e){var t;return t||(t=document.createElement("a")),t.href=e,t.href},t.isVideo=function(e){return"video"===e.tagName.toLowerCase()},t.isAudio=function(e){return"audio"===e.tagName.toLowerCase()},t.loadScript=function(e){return new Promise(function(t,n){var i=document.createElement("script");i.src=e,i.async=!0,i.onload=function(){i.remove(),t()},i.onerror=function(){i.remove(),n()},document.head.appendChild(i)})},t.request=function(e,t,n,i){var r,s=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");switch(t){case"text":r="text/plain";break;case"json":r="application/json, text/javascript";break;case"html":r="text/html";break;case"xml":r="application/xml, text/xml";break;default:r="application/x-www-form-urlencoded; charset=UTF-8"}var a=!1,o="application/x-www-form-urlencoded"!==r?"".concat(r,", */*; q=0.01"):"*/".concat("*");s&&(s.open("GET",e,!0),s.setRequestHeader("Accept",o),s.onreadystatechange=function(){if(!a&&4===s.readyState)if(200===s.status){var e;switch(a=!0,t){case"json":e=JSON.parse(s.responseText);break;case"xml":e=s.responseXML;break;default:e=s.responseText}n(e)}else"function"==typeof i&&i(s.status)},s.send())},t.hasClass=function(e,t){return!!(e.className.split(" ").indexOf(t)>-1)},t.offset=function(e){var t=e.getBoundingClientRect();return{left:t.left+(window.pageXOffset||document.documentElement.scrollLeft),top:t.top+(window.pageYOffset||document.documentElement.scrollTop)}}},function(e,t){var n=e.exports={version:"2.6.2"};"number"==typeof __e&&(__e=n)},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var i=n(37);e.exports=function(e){return Object(i(e))}},function(e,t,n){var i=n(0),r=n(6),s=n(7);e.exports=function(e,t){var n=(r.Object||{})[e]||Object[e],a={};a[e]=t(n),i(i.S+i.F*s(function(){n(1)}),"Object",a)}},function(e,t,n){var i=n(11),r=n(54),s=n(39),a=Object.defineProperty;t.f=n(12)?Object.defineProperty:function(e,t,n){if(i(e),t=s(t,!0),i(n),r)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var i=n(2);e.exports=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e}},function(e,t,n){e.exports=!n(7)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,n){var i=n(29),r=n(37);e.exports=function(e){return i(r(e))}},function(e,t,n){var i=n(31),r=Math.min;e.exports=function(e){return e>0?r(i(e),9007199254740991):0}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addEvent=function(e,t){if("string"!=typeof e)throw new Error("Event name must be a string");return new CustomEvent(e,{detail:t})},t.events=["loadstart","durationchange","loadedmetadata","loadeddata","progress","canplay","canplaythrough","suspend","abort","error","emptied","stalled","play","playing","pause","waiting","seeking","seeked","timeupdate","ended","ratechange","volumechange"]},function(e,t,n){var i=n(10),r=n(26);e.exports=n(12)?function(e,t,n){return i.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var i=n(22);e.exports=function(e,t,n){if(i(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,r){return e.call(t,n,i,r)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){var i=n(18),r=n(29),s=n(8),a=n(14),o=n(83);e.exports=function(e,t){var n=1==e,l=2==e,u=3==e,c=4==e,d=6==e,h=5==e||d,p=t||o;return function(t,o,f){for(var v,m,y=s(t),b=r(y),g=i(o,f,3),E=a(b.length),_=0,k=n?p(t,E):l?p(t,0):void 0;E>_;_++)if((h||_ in b)&&(m=g(v=b[_],_,y),e))if(n)k[_]=m;else if(m)switch(e){case 3:return!0;case 5:return v;case 6:return _;case 2:k.push(v)}else if(c)return!1;return d?-1:u||c?c:k}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NAV=window.navigator,t.UA=t.NAV.userAgent.toLowerCase(),t.IS_IPAD=/ipad/i.test(t.UA)&&!window.MSStream,t.IS_IPHONE=/iphone/i.test(t.UA)&&!window.MSStream,t.IS_IPOD=/ipod/i.test(t.UA)&&!window.MSStream,t.IS_IOS=/ipad|iphone|ipod/i.test(t.UA)&&!window.MSStream,t.IS_ANDROID=/android/i.test(t.UA),t.IS_IE=/(trident|microsoft)/i.test(t.NAV.appName),t.IS_EDGE="msLaunchUri"in t.NAV&&!("documentMode"in document),t.IS_CHROME=/chrome/i.test(t.UA),t.IS_FIREFOX=/firefox/i.test(t.UA),t.IS_SAFARI=/safari/i.test(t.UA)&&!t.IS_CHROME,t.IS_STOCK_ANDROID=/^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(t.UA),t.HAS_MSE="MediaSource"in window,t.SUPPORTS_HLS=function(){var e=window.MediaSource||window.WebKitMediaSource,n=window.SourceBuffer||window.WebKitSourceBuffer,i=e&&"function"==typeof e.isTypeSupported&&e.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'),r=!n||n.prototype&&"function"==typeof n.prototype.appendBuffer&&"function"==typeof n.prototype.remove;return!!i&&!!r&&!t.IS_SAFARI}},function(e,t,n){var i=n(3),r=n(16),s=n(17),a=n(27)("src"),o=Function.toString,l=(""+o).split("toString");n(6).inspectSource=function(e){return o.call(e)},(e.exports=function(e,t,n,o){var u="function"==typeof n;u&&(s(n,"name")||r(n,"name",t)),e[t]!==n&&(u&&(s(n,a)||r(n,a,e[t]?""+e[t]:l.join(String(t)))),e===i?e[t]=n:o?e[t]?e[t]=n:r(e,t,n):(delete e[t],r(e,t,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[a]||o.call(this)})},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var i=n(56),r=n(43);e.exports=Object.keys||function(e){return i(e,r)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t){e.exports=!1},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){var n=0,i=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+i).toString(36))}},function(e,t){e.exports={}},function(e,t,n){var i=n(24);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==i(e)?e.split(""):Object(e)}},function(e,t,n){var i=n(1)("unscopables"),r=Array.prototype;null==r[i]&&n(16)(r,i,{}),e.exports=function(e){r[i][e]=!0}},function(e,t){var n=Math.ceil,i=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?i:n)(e)}},function(e,t,n){var i=n(31),r=Math.max,s=Math.min;e.exports=function(e,t){return(e=i(e))<0?r(e+t,0):s(e,t)}},function(e,t,n){var i=n(10).f,r=n(17),s=n(1)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,s)&&i(e,s,{configurable:!0,value:t})}},function(e,t,n){var i=n(27)("meta"),r=n(2),s=n(17),a=n(10).f,o=0,l=Object.isExtensible||function(){return!0},u=!n(7)(function(){return l(Object.preventExtensions({}))}),c=function(e){a(e,i,{value:{i:"O"+ ++o,w:{}}})},d=e.exports={KEY:i,NEED:!1,fastKey:function(e,t){if(!r(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!s(e,i)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[i].i},getWeak:function(e,t){if(!s(e,i)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[i].w},onFreeze:function(e){return u&&d.NEED&&l(e)&&!s(e,i)&&c(e),e}}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){"use strict";function i(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=e.split("?")[0].split("\\").pop().split("/").pop();return t.indexOf(".")>-1?t.substring(t.lastIndexOf(".")+1):""}Object.defineProperty(t,"__esModule",{value:!0}),t.getExtension=i,t.isHlsSource=function(e){return/\.m3u8/i.test(e)},t.isDashSource=function(e){return/\.mpd/i.test(e)},t.predictType=function(e){var t,n=i(e);if(!n)return"video/mp4";switch(n){case"m3u8":t="application/x-mpegURL";break;case"mpd":t="application/dash+xml";break;case"mp3":t="audio/mp3";break;case"webm":t="video/webm";break;default:t="video/mp4"}return t},t.isAutoplaySupported=function(e,t,n,i){var r=e.play();void 0!==r?r.then(function(){e.pause(),t(!0),n(!1),i()}).catch(function(){e.volume=0,e.muted=!0,e.play().then(function(){e.pause(),t(!0),n(!0),i()}).catch(function(){e.volume=1,e.muted=!1,t(!1),n(!1),i()})}):(t(!e.paused||"Promise"in window&&r instanceof Promise),e.pause(),n(!1),i())}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var i=n(2),r=n(3).document,s=i(r)&&i(r.createElement);e.exports=function(e){return s?r.createElement(e):{}}},function(e,t,n){var i=n(2);e.exports=function(e,t){if(!i(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!i(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){var i=n(11),r=n(55),s=n(43),a=n(41)("IE_PROTO"),o=function(){},l=function(){var e,t=n(38)("iframe"),i=s.length;for(t.style.display="none",n(44).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("