From f3c14e8a3eb89520ac54acce8cac74134c0fc96d Mon Sep 17 00:00:00 2001 From: Bruno Torres Date: Mon, 12 Nov 2018 19:06:51 -0200 Subject: [PATCH] bump to 0.3.0 --- bower.json | 2 +- dist/clappr.js | 10995 ++++++++++++++-------------- dist/clappr.js.map | 2 +- dist/clappr.min.js | 2 +- dist/clappr.min.js.map | 2 +- dist/clappr.plainhtml5.js | 6471 ++++++++-------- dist/clappr.plainhtml5.js.map | 2 +- dist/clappr.plainhtml5.min.js | 2 +- dist/clappr.plainhtml5.min.js.map | 2 +- package.json | 2 +- 10 files changed, 8786 insertions(+), 8696 deletions(-) diff --git a/bower.json b/bower.json index ea0e7a5d1..7b39d0433 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "clappr", "description": "An extensible media player for the web", - "version": "0.2.100", + "version": "0.3.0", "homepage": "https://github.com/clappr/clappr", "authors": [ "Globo.com" diff --git a/dist/clappr.js b/dist/clappr.js index 17ca6e14c..0926dbfc6 100644 --- a/dist/clappr.js +++ b/dist/clappr.js @@ -815,6 +815,12 @@ Events.PLAYBACK_SUBTITLE_CHANGED = 'playback:subtitle:changed'; * @event CORE_CONTAINERS_CREATED */ Events.CORE_CONTAINERS_CREATED = 'core:containers:created'; +/** + * Fired when the active container changed + * + * @event CORE_ACTIVE_CONTAINER_CHANGED + */ +Events.CORE_ACTIVE_CONTAINER_CHANGED = 'core:active:container:changed'; /** * Fired when the options were changed for the core * @@ -854,6 +860,20 @@ Events.CORE_RESIZE = 'core:resize'; * screen orientation (ie: 'landscape' or 'portrait') */ Events.CORE_SCREEN_ORIENTATION_CHANGED = 'core:screen:orientation:changed'; +/** + * Fired when occurs mouse move event on core element + * + * @event CORE_MOUSE_MOVE + * @param {Object} event a DOM event + */ +Events.CORE_MOUSE_MOVE = 'core:mousemove'; +/** + * Fired when occurs mouse leave event on core element + * + * @event CORE_MOUSE_LEAVE + * @param {Object} event a DOM event + */ +Events.CORE_MOUSE_LEAVE = 'core:mouseleave'; // Container Events /** @@ -1135,6 +1155,7 @@ exports.currentScriptUrl = currentScriptUrl; exports.getBrowserLanguage = getBrowserLanguage; exports.now = now; exports.removeArrayItem = removeArrayItem; +exports.listContainsIgnoreCase = listContainsIgnoreCase; exports.canAutoPlayMedia = canAutoPlayMedia; __webpack_require__(143); @@ -1384,6 +1405,14 @@ function removeArrayItem(arr, item) { if (i >= 0) arr.splice(i, 1); } +// find an item regardless of its letter case +function listContainsIgnoreCase(item, items) { + if (item === undefined || items === undefined) return false; + return items.find(function (itemEach) { + return item.toLowerCase() === itemEach.toLowerCase(); + }) !== undefined; +} + // https://github.com/video-dev/can-autoplay function canAutoPlayMedia(cb, options) { options = (0, _assign2.default)({ @@ -3408,88 +3437,6 @@ module.exports = Zepto /***/ }), /* 7 */ -/***/ (function(module, exports) { - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ -// css base code, injected by the css-loader -module.exports = function(useSourceMap) { - var list = []; - - // return the list of modules as css string - list.toString = function toString() { - return this.map(function (item) { - var content = cssWithMappingToString(item, useSourceMap); - if(item[2]) { - return "@media " + item[2] + "{" + content + "}"; - } else { - return content; - } - }).join(""); - }; - - // import a list of modules into the list - list.i = function(modules, mediaQuery) { - if(typeof modules === "string") - modules = [[null, modules, ""]]; - var alreadyImportedModules = {}; - for(var i = 0; i < this.length; i++) { - var id = this[i][0]; - if(typeof id === "number") - alreadyImportedModules[id] = true; - } - for(i = 0; i < modules.length; i++) { - var item = modules[i]; - // skip already imported module - // this implementation is not 100% perfect for weird media query combinations - // when a module is imported multiple times with different media queries. - // I hope this will never occur (Hey this way we have smaller bundles) - if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) { - if(mediaQuery && !item[2]) { - item[2] = mediaQuery; - } else if(mediaQuery) { - item[2] = "(" + item[2] + ") and (" + mediaQuery + ")"; - } - list.push(item); - } - } - }; - return list; -}; - -function cssWithMappingToString(item, useSourceMap) { - var content = item[1] || ''; - var cssMapping = item[3]; - if (!cssMapping) { - return content; - } - - if (useSourceMap && typeof btoa === 'function') { - var sourceMapping = toComment(cssMapping); - var sourceURLs = cssMapping.sources.map(function (source) { - return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */' - }); - - return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); - } - - return [content].join('\n'); -} - -// Adapted from convert-source-map (MIT) -function toComment(sourceMap) { - // eslint-disable-next-line no-undef - var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); - var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; - - return '/*# ' + data + ' */'; -} - - -/***/ }), -/* 8 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3607,6 +3554,88 @@ tmpl.settings = settings; exports.default = tmpl; module.exports = exports['default']; +/***/ }), +/* 8 */ +/***/ (function(module, exports) { + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +// css base code, injected by the css-loader +module.exports = function(useSourceMap) { + var list = []; + + // return the list of modules as css string + list.toString = function toString() { + return this.map(function (item) { + var content = cssWithMappingToString(item, useSourceMap); + if(item[2]) { + return "@media " + item[2] + "{" + content + "}"; + } else { + return content; + } + }).join(""); + }; + + // import a list of modules into the list + list.i = function(modules, mediaQuery) { + if(typeof modules === "string") + modules = [[null, modules, ""]]; + var alreadyImportedModules = {}; + for(var i = 0; i < this.length; i++) { + var id = this[i][0]; + if(typeof id === "number") + alreadyImportedModules[id] = true; + } + for(i = 0; i < modules.length; i++) { + var item = modules[i]; + // skip already imported module + // this implementation is not 100% perfect for weird media query combinations + // when a module is imported multiple times with different media queries. + // I hope this will never occur (Hey this way we have smaller bundles) + if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) { + if(mediaQuery && !item[2]) { + item[2] = mediaQuery; + } else if(mediaQuery) { + item[2] = "(" + item[2] + ") and (" + mediaQuery + ")"; + } + list.push(item); + } + } + }; + return list; +}; + +function cssWithMappingToString(item, useSourceMap) { + var content = item[1] || ''; + var cssMapping = item[3]; + if (!cssMapping) { + return content; + } + + if (useSourceMap && typeof btoa === 'function') { + var sourceMapping = toComment(cssMapping); + var sourceURLs = cssMapping.sources.map(function (source) { + return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */' + }); + + return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); + } + + return [content].join('\n'); +} + +// Adapted from convert-source-map (MIT) +function toComment(sourceMap) { + // eslint-disable-next-line no-undef + var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); + var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; + + return '/*# ' + data + ' */'; +} + + /***/ }), /* 9 */ /***/ (function(module, exports, __webpack_require__) { @@ -4022,7 +4051,7 @@ var _inherits3 = _interopRequireDefault(_inherits2); var _utils = __webpack_require__(5); -var _ui_object = __webpack_require__(23); +var _ui_object = __webpack_require__(30); var _ui_object2 = _interopRequireDefault(_ui_object); @@ -4275,16 +4304,6 @@ var Playback = function (_UIObject) { this._options = _clapprZepto2.default.extend(this._options, options); }; - /** - * destroys the playback, removing it from DOM - * @method destroy - */ - - - Playback.prototype.destroy = function destroy() { - this.remove(); - }; - /** * attempt to autoplays the playback. * @method attemptAutoPlay @@ -4770,6 +4789,196 @@ module.exports = function(it, key){ "use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _assign = __webpack_require__(12); + +var _assign2 = _interopRequireDefault(_assign); + +var _classCallCheck2 = __webpack_require__(0); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _possibleConstructorReturn2 = __webpack_require__(1); + +var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); + +var _createClass2 = __webpack_require__(3); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _inherits2 = __webpack_require__(2); + +var _inherits3 = _interopRequireDefault(_inherits2); + +var _utils = __webpack_require__(5); + +var _ui_object = __webpack_require__(30); + +var _ui_object2 = _interopRequireDefault(_ui_object); + +var _error_mixin = __webpack_require__(20); + +var _error_mixin2 = _interopRequireDefault(_error_mixin); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var UICorePlugin = function (_UIObject) { + (0, _inherits3.default)(UICorePlugin, _UIObject); + (0, _createClass3.default)(UICorePlugin, [{ + key: 'playerError', + get: function get() { + return this.core.playerError; + } + }]); + + function UICorePlugin(core) { + (0, _classCallCheck3.default)(this, UICorePlugin); + + var _this = (0, _possibleConstructorReturn3.default)(this, _UIObject.call(this, core.options)); + + _this.core = core; + _this.enabled = true; + _this.bindEvents(); + _this.render(); + return _this; + } + + UICorePlugin.prototype.bindEvents = function bindEvents() {}; + + UICorePlugin.prototype.getExternalInterface = function getExternalInterface() { + return {}; + }; + + UICorePlugin.prototype.enable = function enable() { + if (!this.enabled) { + this.bindEvents(); + this.$el.show(); + this.enabled = true; + } + }; + + UICorePlugin.prototype.disable = function disable() { + this.stopListening(); + this.$el.hide(); + this.enabled = false; + }; + + UICorePlugin.prototype.render = function render() { + return this; + }; + + return UICorePlugin; +}(_ui_object2.default); + +exports.default = UICorePlugin; + + +(0, _assign2.default)(UICorePlugin.prototype, _error_mixin2.default); + +UICorePlugin.extend = function (properties) { + return (0, _utils.extend)(UICorePlugin, properties); +}; + +UICorePlugin.type = 'core'; +module.exports = exports['default']; + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _error = __webpack_require__(79); + +var _error2 = _interopRequireDefault(_error); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = _error2.default; +module.exports = exports['default']; + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + +var dP = __webpack_require__(18) + , createDesc = __webpack_require__(33); +module.exports = __webpack_require__(21) ? function(object, key, value){ + return dP.f(object, key, createDesc(1, value)); +} : function(object, key, value){ + object[key] = value; + return object; +}; + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(32); +module.exports = function(it){ + if(!isObject(it))throw TypeError(it + ' is not an object!'); + return it; +}; + +/***/ }), +/* 27 */ +/***/ (function(module, exports) { + +module.exports = function(exec){ + try { + return !!exec(); + } catch(e){ + return true; + } +}; + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +var $keys = __webpack_require__(67) + , enumBugKeys = __webpack_require__(51); + +module.exports = Object.keys || function keys(O){ + return $keys(O, enumBugKeys); +}; + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _log = __webpack_require__(148); + +var _log2 = _interopRequireDefault(_log); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = _log2.default; +module.exports = exports['default']; + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + Object.defineProperty(exports, "__esModule", { value: true }); @@ -4949,12 +5158,12 @@ var UIObject = function (_BaseObject) { /** * removes the ui component from DOM - * @method remove + * @method destroy * @return {UIObject} itself */ - UIObject.prototype.remove = function remove() { + UIObject.prototype.destroy = function destroy() { this.$el.remove(); this.stopListening(); this.undelegateEvents(); @@ -5041,94 +5250,7 @@ exports.default = UIObject; module.exports = exports['default']; /***/ }), -/* 24 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _error = __webpack_require__(79); - -var _error2 = _interopRequireDefault(_error); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _error2.default; -module.exports = exports['default']; - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(18) - , createDesc = __webpack_require__(32); -module.exports = __webpack_require__(21) ? function(object, key, value){ - return dP.f(object, key, createDesc(1, value)); -} : function(object, key, value){ - object[key] = value; - return object; -}; - -/***/ }), -/* 26 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(31); -module.exports = function(it){ - if(!isObject(it))throw TypeError(it + ' is not an object!'); - return it; -}; - -/***/ }), -/* 27 */ -/***/ (function(module, exports) { - -module.exports = function(exec){ - try { - return !!exec(); - } catch(e){ - return true; - } -}; - -/***/ }), -/* 28 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.14 / 15.2.3.14 Object.keys(O) -var $keys = __webpack_require__(67) - , enumBugKeys = __webpack_require__(51); - -module.exports = Object.keys || function keys(O){ - return $keys(O, enumBugKeys); -}; - -/***/ }), -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _log = __webpack_require__(148); - -var _log2 = _interopRequireDefault(_log); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _log2.default; -module.exports = exports['default']; - -/***/ }), -/* 30 */ +/* 31 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5194,7 +5316,7 @@ Mediator.stopListening = function (obj, name, callback) { module.exports = exports['default']; /***/ }), -/* 31 */ +/* 32 */ /***/ (function(module, exports) { module.exports = function(it){ @@ -5202,7 +5324,7 @@ module.exports = function(it){ }; /***/ }), -/* 32 */ +/* 33 */ /***/ (function(module, exports) { module.exports = function(bitmap, value){ @@ -5215,118 +5337,11 @@ module.exports = function(bitmap, value){ }; /***/ }), -/* 33 */ +/* 34 */ /***/ (function(module, exports) { module.exports = {}; -/***/ }), -/* 34 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _assign = __webpack_require__(12); - -var _assign2 = _interopRequireDefault(_assign); - -var _classCallCheck2 = __webpack_require__(0); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _possibleConstructorReturn2 = __webpack_require__(1); - -var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - -var _createClass2 = __webpack_require__(3); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _inherits2 = __webpack_require__(2); - -var _inherits3 = _interopRequireDefault(_inherits2); - -var _utils = __webpack_require__(5); - -var _ui_object = __webpack_require__(23); - -var _ui_object2 = _interopRequireDefault(_ui_object); - -var _error_mixin = __webpack_require__(20); - -var _error_mixin2 = _interopRequireDefault(_error_mixin); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var UICorePlugin = function (_UIObject) { - (0, _inherits3.default)(UICorePlugin, _UIObject); - (0, _createClass3.default)(UICorePlugin, [{ - key: 'playerError', - get: function get() { - return this.core.playerError; - } - }]); - - function UICorePlugin(core) { - (0, _classCallCheck3.default)(this, UICorePlugin); - - var _this = (0, _possibleConstructorReturn3.default)(this, _UIObject.call(this, core.options)); - - _this.core = core; - _this.enabled = true; - _this.bindEvents(); - _this.render(); - return _this; - } - - UICorePlugin.prototype.bindEvents = function bindEvents() {}; - - UICorePlugin.prototype.getExternalInterface = function getExternalInterface() { - return {}; - }; - - UICorePlugin.prototype.enable = function enable() { - if (!this.enabled) { - this.bindEvents(); - this.$el.show(); - this.enabled = true; - } - }; - - UICorePlugin.prototype.disable = function disable() { - this.stopListening(); - this.$el.hide(); - this.enabled = false; - }; - - UICorePlugin.prototype.destroy = function destroy() { - this.remove(); - }; - - UICorePlugin.prototype.render = function render() { - return this; - }; - - return UICorePlugin; -}(_ui_object2.default); - -exports.default = UICorePlugin; - - -(0, _assign2.default)(UICorePlugin.prototype, _error_mixin2.default); - -UICorePlugin.extend = function (properties) { - return (0, _utils.extend)(UICorePlugin, properties); -}; - -UICorePlugin.type = 'core'; -module.exports = exports['default']; - /***/ }), /* 35 */ /***/ (function(module, exports, __webpack_require__) { @@ -5531,7 +5546,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _html5_video = __webpack_require__(183); +var _html5_video = __webpack_require__(172); var _html5_video2 = _interopRequireDefault(_html5_video); @@ -5573,7 +5588,7 @@ var _inherits3 = _interopRequireDefault(_inherits2); var _utils = __webpack_require__(5); -var _ui_object = __webpack_require__(23); +var _ui_object = __webpack_require__(30); var _ui_object2 = _interopRequireDefault(_ui_object); @@ -5626,10 +5641,6 @@ var UIContainerPlugin = function (_UIObject) { UIContainerPlugin.prototype.bindEvents = function bindEvents() {}; - UIContainerPlugin.prototype.destroy = function destroy() { - this.remove(); - }; - return UIContainerPlugin; }(_ui_object2.default); // Copyright 2014 Globo.com Player authors. All rights reserved. // Use of this source code is governed by a BSD-style @@ -5782,7 +5793,7 @@ module.exports = function(fn, that, length){ /***/ (function(module, exports, __webpack_require__) { // 7.1.1 ToPrimitive(input [, PreferredType]) -var isObject = __webpack_require__(31); +var isObject = __webpack_require__(32); // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function(it, S){ @@ -5957,7 +5968,7 @@ module.exports = function(name){ /***/ (function(module, exports, __webpack_require__) { var pIE = __webpack_require__(37) - , createDesc = __webpack_require__(32) + , createDesc = __webpack_require__(33) , toIObject = __webpack_require__(19) , toPrimitive = __webpack_require__(45) , has = __webpack_require__(22) @@ -5995,6 +6006,33 @@ module.exports = exports['default']; /***/ }), /* 61 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _from = __webpack_require__(83); + +var _from2 = _interopRequireDefault(_from); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = function (arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { + arr2[i] = arr[i]; + } + + return arr2; + } else { + return (0, _from2.default)(arr); + } +}; + +/***/ }), +/* 62 */ /***/ (function(module, exports) { // shim for using process in browser @@ -6179,12 +6217,6 @@ process.chdir = function (dir) { process.umask = function() { return 0; }; -/***/ }), -/* 62 */ -/***/ (function(module, exports) { - -module.exports = "" - /***/ }), /* 63 */ /***/ (function(module, exports, __webpack_require__) { @@ -6192,39 +6224,18 @@ module.exports = "" + /***/ }), /* 65 */ /***/ (function(module, exports, __webpack_require__) { @@ -6237,7 +6248,7 @@ module.exports = !__webpack_require__(21) && !__webpack_require__(27)(function() /* 66 */ /***/ (function(module, exports, __webpack_require__) { -var isObject = __webpack_require__(31) +var isObject = __webpack_require__(32) , document = __webpack_require__(17).document // in old IE typeof document.createElement is 'object' , is = isObject(document) && isObject(document.createElement); @@ -6337,7 +6348,7 @@ var LIBRARY = __webpack_require__(54) , redefine = __webpack_require__(73) , hide = __webpack_require__(25) , has = __webpack_require__(22) - , Iterators = __webpack_require__(33) + , Iterators = __webpack_require__(34) , $iterCreate = __webpack_require__(113) , setToStringTag = __webpack_require__(56) , getPrototypeOf = __webpack_require__(116) @@ -6463,13 +6474,29 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _container = __webpack_require__(155); +var _clapprZepto = __webpack_require__(6); -var _container2 = _interopRequireDefault(_container); +var _clapprZepto2 = _interopRequireDefault(_clapprZepto); + +var _template = __webpack_require__(7); + +var _template2 = _interopRequireDefault(_template); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -exports.default = _container2.default; +// Copyright 2014 Globo.com Player authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +var Styler = { + getStyleFor: function getStyleFor(style) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { baseUrl: '' }; + + return (0, _clapprZepto2.default)('').html((0, _template2.default)(style.toString())(options)); + } +}; + +exports.default = Styler; module.exports = exports['default']; /***/ }), @@ -6587,23 +6614,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _media_control = __webpack_require__(159); +var _container = __webpack_require__(155); -var _media_control2 = _interopRequireDefault(_media_control); +var _container2 = _interopRequireDefault(_container); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -exports.default = _media_control2.default; +exports.default = _container2.default; module.exports = exports['default']; /***/ }), /* 81 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(160), __esModule: true }; - -/***/ }), -/* 82 */ /***/ (function(module, exports) { module.exports = function escape(url) { @@ -6625,55 +6646,7 @@ module.exports = function escape(url) { /***/ }), -/* 83 */ -/***/ (function(module, exports) { - -module.exports = "<%=baseUrl%>/a8c874b93b3d848f39a71260c57e3863.cur"; - -/***/ }), -/* 84 */ -/***/ (function(module, exports) { - -module.exports = "" - -/***/ }), -/* 85 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _clapprZepto = __webpack_require__(6); - -var _clapprZepto2 = _interopRequireDefault(_clapprZepto); - -var _template = __webpack_require__(8); - -var _template2 = _interopRequireDefault(_template); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Copyright 2014 Globo.com Player authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -var Styler = { - getStyleFor: function getStyleFor(style) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { baseUrl: '' }; - - return (0, _clapprZepto2.default)('').html((0, _template2.default)(style.toString())(options)); - } -}; - -exports.default = Styler; -module.exports = exports['default']; - -/***/ }), -/* 86 */ +/* 82 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6683,7 +6656,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _loader = __webpack_require__(174); +var _loader = __webpack_require__(163); var _loader2 = _interopRequireDefault(_loader); @@ -6693,13 +6666,13 @@ exports.default = _loader2.default; module.exports = exports['default']; /***/ }), -/* 87 */ +/* 83 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = { "default": __webpack_require__(175), __esModule: true }; +module.exports = { "default": __webpack_require__(164), __esModule: true }; /***/ }), -/* 88 */ +/* 84 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6709,7 +6682,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _flash = __webpack_require__(187); +var _flash = __webpack_require__(176); var _flash2 = _interopRequireDefault(_flash); @@ -6719,7 +6692,7 @@ exports.default = _flash2.default; module.exports = exports['default']; /***/ }), -/* 89 */ +/* 85 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6729,7 +6702,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _html5_audio = __webpack_require__(193); +var _html5_audio = __webpack_require__(182); var _html5_audio2 = _interopRequireDefault(_html5_audio); @@ -6739,7 +6712,7 @@ exports.default = _html5_audio2.default; module.exports = exports['default']; /***/ }), -/* 90 */ +/* 86 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6749,7 +6722,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _flashls = __webpack_require__(194); +var _flashls = __webpack_require__(183); var _flashls2 = _interopRequireDefault(_flashls); @@ -6759,7 +6732,7 @@ exports.default = _flashls2.default; module.exports = exports['default']; /***/ }), -/* 91 */ +/* 87 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6769,7 +6742,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _hls = __webpack_require__(197); +var _hls = __webpack_require__(186); var _hls2 = _interopRequireDefault(_hls); @@ -6779,7 +6752,13 @@ exports.default = _hls2.default; module.exports = exports['default']; /***/ }), -/* 92 */ +/* 88 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { "default": __webpack_require__(187), __esModule: true }; + +/***/ }), +/* 89 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6789,7 +6768,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _html_img = __webpack_require__(199); +var _html_img = __webpack_require__(189); var _html_img2 = _interopRequireDefault(_html_img); @@ -6799,7 +6778,7 @@ exports.default = _html_img2.default; module.exports = exports['default']; /***/ }), -/* 93 */ +/* 90 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6809,7 +6788,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _no_op = __webpack_require__(202); +var _no_op = __webpack_require__(192); var _no_op2 = _interopRequireDefault(_no_op); @@ -6819,7 +6798,7 @@ exports.default = _no_op2.default; module.exports = exports['default']; /***/ }), -/* 94 */ +/* 91 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6829,7 +6808,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _spinner_three_bounce = __webpack_require__(206); +var _spinner_three_bounce = __webpack_require__(196); var _spinner_three_bounce2 = _interopRequireDefault(_spinner_three_bounce); @@ -6839,7 +6818,7 @@ exports.default = _spinner_three_bounce2.default; module.exports = exports['default']; /***/ }), -/* 95 */ +/* 92 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6849,7 +6828,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _watermark = __webpack_require__(212); +var _watermark = __webpack_require__(202); var _watermark2 = _interopRequireDefault(_watermark); @@ -6859,7 +6838,7 @@ exports.default = _watermark2.default; module.exports = exports['default']; /***/ }), -/* 96 */ +/* 93 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6869,7 +6848,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _poster = __webpack_require__(216); +var _poster = __webpack_require__(206); var _poster2 = _interopRequireDefault(_poster); @@ -6879,7 +6858,7 @@ exports.default = _poster2.default; module.exports = exports['default']; /***/ }), -/* 97 */ +/* 94 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6889,7 +6868,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _click_to_pause = __webpack_require__(222); +var _click_to_pause = __webpack_require__(212); var _click_to_pause2 = _interopRequireDefault(_click_to_pause); @@ -6898,6 +6877,38 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de exports.default = _click_to_pause2.default; module.exports = exports['default']; +/***/ }), +/* 95 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _media_control = __webpack_require__(213); + +var _media_control2 = _interopRequireDefault(_media_control); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = _media_control2.default; +module.exports = exports['default']; + +/***/ }), +/* 96 */ +/***/ (function(module, exports) { + +module.exports = "<%=baseUrl%>/a8c874b93b3d848f39a71260c57e3863.cur"; + +/***/ }), +/* 97 */ +/***/ (function(module, exports) { + +module.exports = "" + /***/ }), /* 98 */ /***/ (function(module, exports, __webpack_require__) { @@ -6973,7 +6984,7 @@ var _core_plugin = __webpack_require__(35); var _core_plugin2 = _interopRequireDefault(_core_plugin); -var _ui_core_plugin = __webpack_require__(34); +var _ui_core_plugin = __webpack_require__(23); var _ui_core_plugin2 = _interopRequireDefault(_ui_core_plugin); @@ -6985,7 +6996,7 @@ var _base_object = __webpack_require__(15); var _base_object2 = _interopRequireDefault(_base_object); -var _ui_object = __webpack_require__(23); +var _ui_object = __webpack_require__(30); var _ui_object2 = _interopRequireDefault(_ui_object); @@ -6993,7 +7004,7 @@ var _browser = __webpack_require__(14); var _browser2 = _interopRequireDefault(_browser); -var _container = __webpack_require__(78); +var _container = __webpack_require__(80); var _container2 = _interopRequireDefault(_container); @@ -7005,39 +7016,35 @@ var _error = __webpack_require__(24); var _error2 = _interopRequireDefault(_error); -var _loader = __webpack_require__(86); +var _loader = __webpack_require__(82); var _loader2 = _interopRequireDefault(_loader); -var _mediator = __webpack_require__(30); +var _mediator = __webpack_require__(31); var _mediator2 = _interopRequireDefault(_mediator); -var _media_control = __webpack_require__(80); - -var _media_control2 = _interopRequireDefault(_media_control); - var _player_info = __webpack_require__(40); var _player_info2 = _interopRequireDefault(_player_info); -var _base_flash_playback = __webpack_require__(64); +var _base_flash_playback = __webpack_require__(63); var _base_flash_playback2 = _interopRequireDefault(_base_flash_playback); -var _flash = __webpack_require__(88); +var _flash = __webpack_require__(84); var _flash2 = _interopRequireDefault(_flash); -var _flashls = __webpack_require__(90); +var _flashls = __webpack_require__(86); var _flashls2 = _interopRequireDefault(_flashls); -var _hls = __webpack_require__(91); +var _hls = __webpack_require__(87); var _hls2 = _interopRequireDefault(_hls); -var _html5_audio = __webpack_require__(89); +var _html5_audio = __webpack_require__(85); var _html5_audio2 = _interopRequireDefault(_html5_audio); @@ -7045,15 +7052,19 @@ var _html5_video = __webpack_require__(41); var _html5_video2 = _interopRequireDefault(_html5_video); -var _html_img = __webpack_require__(92); +var _html_img = __webpack_require__(89); var _html_img2 = _interopRequireDefault(_html_img); -var _no_op = __webpack_require__(93); +var _no_op = __webpack_require__(90); var _no_op2 = _interopRequireDefault(_no_op); -var _click_to_pause = __webpack_require__(97); +var _media_control = __webpack_require__(95); + +var _media_control2 = _interopRequireDefault(_media_control); + +var _click_to_pause = __webpack_require__(94); var _click_to_pause2 = _interopRequireDefault(_click_to_pause); @@ -7069,19 +7080,19 @@ var _log = __webpack_require__(29); var _log2 = _interopRequireDefault(_log); -var _poster = __webpack_require__(96); +var _poster = __webpack_require__(93); var _poster2 = _interopRequireDefault(_poster); -var _spinner_three_bounce = __webpack_require__(94); +var _spinner_three_bounce = __webpack_require__(91); var _spinner_three_bounce2 = _interopRequireDefault(_spinner_three_bounce); -var _watermark = __webpack_require__(95); +var _watermark = __webpack_require__(92); var _watermark2 = _interopRequireDefault(_watermark); -var _styler = __webpack_require__(85); +var _styler = __webpack_require__(78); var _styler2 = _interopRequireDefault(_styler); @@ -7089,7 +7100,7 @@ var _vendor = __webpack_require__(60); var _vendor2 = _interopRequireDefault(_vendor); -var _template = __webpack_require__(8); +var _template = __webpack_require__(7); var _template2 = _interopRequireDefault(_template); @@ -7099,7 +7110,7 @@ var _clapprZepto2 = _interopRequireDefault(_clapprZepto); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var version = "0.2.100"; // Copyright 2014 Globo.com Player authors. All rights reserved. +var version = "0.3.0"; // Copyright 2014 Globo.com Player authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. @@ -7198,7 +7209,7 @@ var _core_factory = __webpack_require__(150); var _core_factory2 = _interopRequireDefault(_core_factory); -var _loader = __webpack_require__(86); +var _loader = __webpack_require__(82); var _loader2 = _interopRequireDefault(_loader); @@ -7268,7 +7279,7 @@ var Player = function (_BaseObject) { }, { key: 'ended', get: function get() { - return this.core.mediaControl.container.ended; + return this.core.activeContainer.ended; } /** @@ -7282,7 +7293,7 @@ var Player = function (_BaseObject) { }, { key: 'buffering', get: function get() { - return this.core.mediaControl.container.buffering; + return this.core.activeContainer.buffering; } /* @@ -7456,7 +7467,16 @@ var Player = function (_BaseObject) { var _this = (0, _possibleConstructorReturn3.default)(this, _BaseObject.call(this, options)); - var defaultOptions = { playerId: (0, _utils.uniqueId)(''), persistConfig: true, width: 640, height: 360, baseUrl: baseUrl, allowUserInteraction: _browser2.default.isMobile }; + var playbackDefaultOptions = { recycleVideo: true }; + var defaultOptions = { + playerId: (0, _utils.uniqueId)(''), + persistConfig: true, + width: 640, + height: 360, + baseUrl: baseUrl, + allowUserInteraction: _browser2.default.isMobile, + playback: playbackDefaultOptions + }; _this._options = _clapprZepto2.default.extend(defaultOptions, options); _this.options.sources = _this._normalizeSources(options); if (!_this.options.chromeless) { @@ -7510,14 +7530,14 @@ var Player = function (_BaseObject) { Player.prototype._addEventListeners = function _addEventListeners() { if (!this.core.isReady) this.listenToOnce(this.core, _events2.default.CORE_READY, this._onReady);else this._onReady(); - this.listenTo(this.core.mediaControl, _events2.default.MEDIACONTROL_CONTAINERCHANGED, this._containerChanged); + this.listenTo(this.core.activeContainer, _events2.default.CORE_ACTIVE_CONTAINER_CHANGED, this._containerChanged); this.listenTo(this.core, _events2.default.CORE_FULLSCREEN, this._onFullscreenChange); this.listenTo(this.core, _events2.default.CORE_RESIZE, this._onResize); return this; }; Player.prototype._addContainerEventListeners = function _addContainerEventListeners() { - var container = this.core.mediaControl.container; + var container = this.core.activeContainer; if (container) { this.listenTo(container, _events2.default.CONTAINER_PLAY, this._onPlay); this.listenTo(container, _events2.default.CONTAINER_PAUSE, this._onPause); @@ -7683,7 +7703,7 @@ var Player = function (_BaseObject) { Player.prototype.play = function play() { - this.core.mediaControl.container.play(); + this.core.activeContainer.play(); return this; }; @@ -7695,7 +7715,7 @@ var Player = function (_BaseObject) { Player.prototype.pause = function pause() { - this.core.mediaControl.container.pause(); + this.core.activeContainer.pause(); return this; }; @@ -7707,7 +7727,7 @@ var Player = function (_BaseObject) { Player.prototype.stop = function stop() { - this.core.mediaControl.container.stop(); + this.core.activeContainer.stop(); return this; }; @@ -7720,7 +7740,7 @@ var Player = function (_BaseObject) { Player.prototype.seek = function seek(time) { - this.core.mediaControl.container.seek(time); + this.core.activeContainer.seek(time); return this; }; @@ -7733,35 +7753,10 @@ var Player = function (_BaseObject) { Player.prototype.seekPercentage = function seekPercentage(percentage) { - this.core.mediaControl.container.seekPercentage(percentage); - return this; - }; - - /** - * Set the volume for the current video (`source`). - * @method setVolume - * @param {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume. - * @return {Player} itself - */ - - - Player.prototype.setVolume = function setVolume(volume) { - if (this.core && this.core.mediaControl) this.core.mediaControl.setVolume(volume); - + this.core.activeContainer.seekPercentage(percentage); return this; }; - /** - * Get the volume for the current video - * @method getVolume - * @return {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume. - */ - - - Player.prototype.getVolume = function getVolume() { - return this.core && this.core.mediaControl ? this.core.mediaControl.volume : 0; - }; - /** * mutes the current video (`source`). * @method mute @@ -7796,7 +7791,7 @@ var Player = function (_BaseObject) { Player.prototype.isPlaying = function isPlaying() { - return this.core.mediaControl.container.isPlaying(); + return this.core.activeContainer.isPlaying(); }; /** @@ -7807,7 +7802,7 @@ var Player = function (_BaseObject) { Player.prototype.isDvrEnabled = function isDvrEnabled() { - return this.core.mediaControl.container.isDvrEnabled(); + return this.core.activeContainer.isDvrEnabled(); }; /** @@ -7818,7 +7813,7 @@ var Player = function (_BaseObject) { Player.prototype.isDvrInUse = function isDvrInUse() { - return this.core.mediaControl.container.isDvrInUse(); + return this.core.activeContainer.isDvrInUse(); }; /** @@ -7851,7 +7846,7 @@ var Player = function (_BaseObject) { Player.prototype.getPlugin = function getPlugin(name) { - var plugins = this.core.plugins.concat(this.core.mediaControl.container.plugins); + var plugins = this.core.plugins.concat(this.core.activeContainer.plugins); return plugins.filter(function (plugin) { return plugin.name === name; })[0]; @@ -7865,7 +7860,7 @@ var Player = function (_BaseObject) { Player.prototype.getCurrentTime = function getCurrentTime() { - return this.core.mediaControl.container.getCurrentTime(); + return this.core.activeContainer.getCurrentTime(); }; /** @@ -7878,7 +7873,7 @@ var Player = function (_BaseObject) { Player.prototype.getStartTimeOffset = function getStartTimeOffset() { - return this.core.mediaControl.container.getStartTimeOffset(); + return this.core.activeContainer.getStartTimeOffset(); }; /** @@ -7889,7 +7884,7 @@ var Player = function (_BaseObject) { Player.prototype.getDuration = function getDuration() { - return this.core.mediaControl.container.getDuration(); + return this.core.activeContainer.getDuration(); }; return Player; @@ -8067,7 +8062,7 @@ module.exports = function(TO_STRING){ "use strict"; var create = __webpack_require__(55) - , descriptor = __webpack_require__(32) + , descriptor = __webpack_require__(33) , setToStringTag = __webpack_require__(56) , IteratorPrototype = {}; @@ -8128,7 +8123,7 @@ module.exports = Object.getPrototypeOf || function(O){ __webpack_require__(118); var global = __webpack_require__(17) , hide = __webpack_require__(25) - , Iterators = __webpack_require__(33) + , Iterators = __webpack_require__(34) , TO_STRING_TAG = __webpack_require__(13)('toStringTag'); for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){ @@ -8147,7 +8142,7 @@ for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList' var addToUnscopables = __webpack_require__(119) , step = __webpack_require__(120) - , Iterators = __webpack_require__(33) + , Iterators = __webpack_require__(34) , toIObject = __webpack_require__(19); // 22.1.3.4 Array.prototype.entries() @@ -8235,7 +8230,7 @@ var global = __webpack_require__(17) , anObject = __webpack_require__(26) , toIObject = __webpack_require__(19) , toPrimitive = __webpack_require__(45) - , createDesc = __webpack_require__(32) + , createDesc = __webpack_require__(33) , _create = __webpack_require__(55) , gOPNExt = __webpack_require__(128) , $GOPD = __webpack_require__(59) @@ -8455,7 +8450,7 @@ setToStringTag(global.JSON, 'JSON', true); /***/ (function(module, exports, __webpack_require__) { var META = __webpack_require__(36)('meta') - , isObject = __webpack_require__(31) + , isObject = __webpack_require__(32) , has = __webpack_require__(22) , setDesc = __webpack_require__(18).f , id = 0; @@ -8641,7 +8636,7 @@ $export($export.S, 'Object', {setPrototypeOf: __webpack_require__(137).set}); // Works with __proto__ only. Old v8 can't work with null proto objects. /* eslint-disable no-proto */ -var isObject = __webpack_require__(31) +var isObject = __webpack_require__(32) , anObject = __webpack_require__(26); var check = function(O, proto){ anObject(O); @@ -9868,6 +9863,7 @@ var CoreFactory = function (_BaseObject) { var externalFunctions = plugin.getExternalInterface(); for (var key in externalFunctions) { this.player[key] = externalFunctions[key].bind(plugin); + this.core[key] = externalFunctions[key].bind(plugin); } }; @@ -9910,14 +9906,22 @@ var _inherits3 = _interopRequireDefault(_inherits2); var _utils = __webpack_require__(5); +var _styler = __webpack_require__(78); + +var _styler2 = _interopRequireDefault(_styler); + var _events = __webpack_require__(4); var _events2 = _interopRequireDefault(_events); -var _ui_object = __webpack_require__(23); +var _ui_object = __webpack_require__(30); var _ui_object2 = _interopRequireDefault(_ui_object); +var _ui_core_plugin = __webpack_require__(23); + +var _ui_core_plugin2 = _interopRequireDefault(_ui_core_plugin); + var _browser = __webpack_require__(14); var _browser2 = _interopRequireDefault(_browser); @@ -9926,11 +9930,7 @@ var _container_factory = __webpack_require__(153); var _container_factory2 = _interopRequireDefault(_container_factory); -var _media_control = __webpack_require__(80); - -var _media_control2 = _interopRequireDefault(_media_control); - -var _mediator = __webpack_require__(30); +var _mediator = __webpack_require__(31); var _mediator2 = _interopRequireDefault(_mediator); @@ -9946,17 +9946,13 @@ var _error_mixin = __webpack_require__(20); var _error_mixin2 = _interopRequireDefault(_error_mixin); -var _styler = __webpack_require__(85); - -var _styler2 = _interopRequireDefault(_styler); - var _clapprZepto = __webpack_require__(6); var _clapprZepto2 = _interopRequireDefault(_clapprZepto); -__webpack_require__(170); +__webpack_require__(159); -var _fonts = __webpack_require__(172); +var _fonts = __webpack_require__(161); var _fonts2 = _interopRequireDefault(_fonts); @@ -9984,8 +9980,8 @@ var Core = function (_UIObject) { get: function get() { return { 'webkitfullscreenchange': 'handleFullscreenChange', - 'mousemove': 'showMediaControl', - 'mouseleave': 'hideMediaControl' + 'mousemove': 'onMouseMove', + 'mouseleave': 'onMouseLeave' }; } }, { @@ -10022,6 +10018,60 @@ var Core = function (_UIObject) { return key; } }; } + + /** + * @deprecated + * This property currently exists for retrocompatibility reasons. + * If you want to access the media control instance, use the method getPlugin('media_control'). + */ + + }, { + key: 'mediaControl', + get: function get() { + return this.getPlugin('media_control') || this.dummyMediaControl; + } + }, { + key: 'dummyMediaControl', + get: function get() { + if (this._dummyMediaControl) return this._dummyMediaControl; + this._dummyMediaControl = new _ui_core_plugin2.default(this); + return this._dummyMediaControl; + } + + /** + * gets the active container reference. + * @property activeContainer + * @type {Object} + */ + + }, { + key: 'activeContainer', + get: function get() { + return this._activeContainer; + } + + /** + * sets the active container reference and trigger a event with the new reference. + * @property activeContainer + * @type {Object} + */ + , + set: function set(container) { + this._activeContainer = container; + this.trigger(_events2.default.CORE_ACTIVE_CONTAINER_CHANGED, this._activeContainer); + } + + /** + * gets the active playback reference. + * @property activePlayback + * @type {Object} + */ + + }, { + key: 'activePlayback', + get: function get() { + return this.activeContainer && this.activeContainer.playback; + } }]); function Core(options) { @@ -10035,7 +10085,6 @@ var Core = function (_UIObject) { _this.firstResize = true; _this.plugins = []; _this.containers = []; - _this.setupMediaControl(null); //FIXME fullscreen api sucks _this._boundFullscreenHandler = function () { return _this.handleFullscreenChange(); @@ -10050,18 +10099,20 @@ var Core = function (_UIObject) { } Core.prototype.configureDomRecycler = function configureDomRecycler() { - var recycleVideo = this.options && this.options.playback && this.options.playback.recycleVideo ? true : false; - _utils.DomRecycler.configure({ - recycleVideo: recycleVideo - }); + var recycleVideo = this.options && this.options.playback && this.options.playback.recycleVideo; + _utils.DomRecycler.configure({ recycleVideo: recycleVideo }); }; Core.prototype.createContainers = function createContainers(options) { - var _this2 = this; - this.defer = _clapprZepto2.default.Deferred(); this.defer.promise(this); this.containerFactory = new _container_factory2.default(options, options.loader, this.i18n, this.playerError); + this.prepareContainers(); + }; + + Core.prototype.prepareContainers = function prepareContainers() { + var _this2 = this; + this.containerFactory.createContainers().then(function (containers) { return _this2.setupContainers(containers); }).then(function (containers) { @@ -10070,7 +10121,7 @@ var Core = function (_UIObject) { }; Core.prototype.updateSize = function updateSize() { - if (_utils.Fullscreen.isFullscreen()) this.setFullscreen();else this.setPlayerSize(); + _utils.Fullscreen.isFullscreen() ? this.setFullscreen() : this.setPlayerSize(); }; Core.prototype.setFullscreen = function setFullscreen() { @@ -10126,7 +10177,7 @@ var Core = function (_UIObject) { }; Core.prototype.disableResizeObserver = function disableResizeObserver() { - if (this.resizeObserverInterval) clearInterval(this.resizeObserverInterval); + this.resizeObserverInterval && clearInterval(this.resizeObserverInterval); }; Core.prototype.resolveOnContainersReady = function resolveOnContainersReady(containers) { @@ -10154,21 +10205,14 @@ var Core = function (_UIObject) { }; Core.prototype.load = function load(sources, mimeType) { - var _this5 = this; - this.options.mimeType = mimeType; sources = sources && sources.constructor === Array ? sources : [sources]; this.options.sources = sources; this.containers.forEach(function (container) { return container.destroy(); }); - this.mediaControl.container = null; this.containerFactory.options = _clapprZepto2.default.extend(this.options, { sources: sources }); - this.containerFactory.createContainers().then(function (containers) { - return _this5.setupContainers(containers); - }).then(function (containers) { - return _this5.resolveOnContainersReady(containers); - }); + this.prepareContainers(); }; Core.prototype.destroy = function destroy() { @@ -10180,7 +10224,6 @@ var Core = function (_UIObject) { return plugin.destroy(); }); this.$el.remove(); - this.mediaControl.destroy(); (0, _clapprZepto2.default)(document).unbind('fullscreenchange', this._boundFullscreenHandler); (0, _clapprZepto2.default)(document).unbind('MSFullscreenChange', this._boundFullscreenHandler); (0, _clapprZepto2.default)(document).unbind('mozfullscreenchange', this._boundFullscreenHandler); @@ -10190,14 +10233,12 @@ var Core = function (_UIObject) { Core.prototype.handleFullscreenChange = function handleFullscreenChange() { this.trigger(_events2.default.CORE_FULLSCREEN, _utils.Fullscreen.isFullscreen()); this.updateSize(); - this.mediaControl.show(); }; Core.prototype.handleWindowResize = function handleWindowResize(event) { - var orientation = (0, _clapprZepto2.default)(window).width() > (0, _clapprZepto2.default)(window).height() ? 'landscape' : 'portrait'; + var orientation = window.innerWidth > window.innerHeight ? 'landscape' : 'portrait'; if (this._screenOrientation === orientation) return; this._screenOrientation = orientation; - this.triggerResize({ width: this.el.clientWidth, height: this.el.clientHeight }); this.trigger(_events2.default.CORE_SCREEN_ORIENTATION_CHANGED, { event: event, @@ -10205,20 +10246,6 @@ var Core = function (_UIObject) { }); }; - Core.prototype.setMediaControlContainer = function setMediaControlContainer(container) { - this.mediaControl.setContainer(container); - this.mediaControl.render(); - }; - - Core.prototype.disableMediaControl = function disableMediaControl() { - this.mediaControl.disable(); - this.$el.removeClass('nocursor'); - }; - - Core.prototype.enableMediaControl = function enableMediaControl() { - this.mediaControl.enable(); - }; - Core.prototype.removeContainer = function removeContainer(container) { this.stopListening(container); this.containers = this.containers.filter(function (c) { @@ -10235,17 +10262,17 @@ var Core = function (_UIObject) { containers.forEach(this.setupContainer.bind(this)); this.trigger(_events2.default.CORE_CONTAINERS_CREATED); this.renderContainers(); - this.setupMediaControl(this.getCurrentContainer()); + this.activeContainer = containers[0]; this.render(); this.appendToParent(); return this.containers; }; Core.prototype.renderContainers = function renderContainers() { - var _this6 = this; + var _this5 = this; this.containers.forEach(function (container) { - return _this6.el.appendChild(container.render().el); + return _this5.el.appendChild(container.render().el); }); }; @@ -10256,62 +10283,48 @@ var Core = function (_UIObject) { return container; }; - Core.prototype.setupMediaControl = function setupMediaControl(container) { - if (this.mediaControl) { - this.mediaControl.setContainer(container); - } else { - this.mediaControl = this.createMediaControl(_clapprZepto2.default.extend({ container: container, focusElement: this.el }, this.options)); - this.listenTo(this.mediaControl, _events2.default.MEDIACONTROL_FULLSCREEN, this.toggleFullscreen); - this.listenTo(this.mediaControl, _events2.default.MEDIACONTROL_SHOW, this.onMediaControlShow.bind(this, true)); - this.listenTo(this.mediaControl, _events2.default.MEDIACONTROL_HIDE, this.onMediaControlShow.bind(this, false)); - } - }; + /** + * @deprecated + * This method currently exists for retrocompatibility reasons. + * If you want the current container reference, use the activeContainer getter. + */ - Core.prototype.createMediaControl = function createMediaControl(options) { - if (options.mediacontrol && options.mediacontrol.external) return new options.mediacontrol.external(options).render();else return new _media_control2.default(options).render(); - }; Core.prototype.getCurrentContainer = function getCurrentContainer() { - if (!this.mediaControl || !this.mediaControl.container) return this.containers[0]; - - return this.mediaControl.container; + return this.activeContainer; }; + /** + * @deprecated + * This method currently exists for retrocompatibility reasons. + * If you want the current playback reference, use the activePlayback getter. + */ + + Core.prototype.getCurrentPlayback = function getCurrentPlayback() { - var container = this.getCurrentContainer(); - return container && container.playback; + return this.activePlayback; }; Core.prototype.getPlaybackType = function getPlaybackType() { - var container = this.getCurrentContainer(); - return container && container.getPlaybackType(); + return this.activeContainer && this.activeContainer.getPlaybackType(); }; Core.prototype.toggleFullscreen = function toggleFullscreen() { - if (_utils.Fullscreen.isFullscreen()) { - _utils.Fullscreen.cancelFullscreen(); - if (!_browser2.default.isiOS) this.$el.removeClass('fullscreen nocursor'); + if (!_utils.Fullscreen.isFullscreen()) { + _utils.Fullscreen.requestFullscreen(_browser2.default.isiOS ? this.activeContainer.el : this.el); + !_browser2.default.isiOS && this.$el.addClass('fullscreen'); } else { - var element = _browser2.default.isiOS ? this.getCurrentContainer().el : this.el; - _utils.Fullscreen.requestFullscreen(element); - - if (!_browser2.default.isiOS) this.$el.addClass('fullscreen'); + _utils.Fullscreen.cancelFullscreen(); + !_browser2.default.isiOS && this.$el.removeClass('fullscreen nocursor'); } - this.mediaControl.show(); - }; - - Core.prototype.showMediaControl = function showMediaControl(event) { - this.mediaControl.show(event); }; - Core.prototype.hideMediaControl = function hideMediaControl() { - this.mediaControl.hide(this.options.hideMediaControlDelay); + Core.prototype.onMouseMove = function onMouseMove(event) { + this.trigger(_events2.default.CORE_MOUSE_MOVE, event); }; - Core.prototype.onMediaControlShow = function onMediaControlShow(showing) { - this.getCurrentContainer().trigger(showing ? _events2.default.CONTAINER_MEDIACONTROL_SHOW : _events2.default.CONTAINER_MEDIACONTROL_HIDE); - - if (showing) this.$el.removeClass('nocursor');else if (_utils.Fullscreen.isFullscreen()) this.$el.addClass('nocursor'); + Core.prototype.onMouseLeave = function onMouseLeave(event) { + this.trigger(_events2.default.CORE_MOUSE_LEAVE, event); }; /** @@ -10322,19 +10335,18 @@ var Core = function (_UIObject) { Core.prototype.configure = function configure(options) { - var _this7 = this; + var _this6 = this; this._options = _clapprZepto2.default.extend(this._options, options); this.configureDomRecycler(); - var sources = options.source || options.sources; - if (sources) this.load(sources, options.mimeType || this.options.mimeType); + var sources = options.source || options.sources; + sources && this.load(sources, options.mimeType || this.options.mimeType); this.trigger(_events2.default.CORE_OPTIONS_CHANGE); this.containers.forEach(function (container) { - container.configure(_this7.options); + return container.configure(_this6.options); }); - this.mediaControl.configure(this.options); }; Core.prototype.appendToParent = function appendToParent() { @@ -10343,8 +10355,6 @@ var Core = function (_UIObject) { }; Core.prototype.render = function render() { - this.$el.append(this.mediaControl.render().el); - if (!style) style = _styler2.default.getStyleFor(_fonts2.default, { baseUrl: this.options.baseUrl }); (0, _clapprZepto2.default)('head').append(style); @@ -10430,7 +10440,7 @@ var _events = __webpack_require__(4); var _events2 = _interopRequireDefault(_events); -var _container = __webpack_require__(78); +var _container = __webpack_require__(80); var _container2 = _interopRequireDefault(_container); @@ -10565,7 +10575,7 @@ var _events = __webpack_require__(4); var _events2 = _interopRequireDefault(_events); -var _ui_object = __webpack_require__(23); +var _ui_object = __webpack_require__(30); var _ui_object2 = _interopRequireDefault(_ui_object); @@ -11164,7 +11174,7 @@ if(false) { /* 157 */ /***/ (function(module, exports, __webpack_require__) { -exports = module.exports = __webpack_require__(7)(false); +exports = module.exports = __webpack_require__(8)(false); // imports @@ -11273,16 +11283,105 @@ module.exports = function (css) { /* 159 */ /***/ (function(module, exports, __webpack_require__) { + +var content = __webpack_require__(160); + +if(typeof content === 'string') content = [[module.i, content, '']]; + +var transform; +var insertInto; + + + +var options = {"singleton":true,"hmr":true} + +options.transform = transform +options.insertInto = undefined; + +var update = __webpack_require__(9)(content, options); + +if(content.locals) module.exports = content.locals; + +if(false) { + module.hot.accept("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss", function() { + var newContent = require("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss"); + + if(typeof newContent === 'string') newContent = [[module.id, newContent, '']]; + + var locals = (function(a, b) { + var key, idx = 0; + + for(key in a) { + if(!b || a[key] !== b[key]) return false; + idx++; + } + + for(key in b) idx--; + + return idx === 0; + }(content.locals, newContent.locals)); + + if(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.'); + + update(newContent); + }); + + module.hot.dispose(function() { update(); }); +} + +/***/ }), +/* 160 */ +/***/ (function(module, exports, __webpack_require__) { + +exports = module.exports = __webpack_require__(8)(false); +// imports + + +// module +exports.push([module.i, "[data-player] {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n -o-user-select: none;\n user-select: none;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n position: relative;\n margin: 0;\n padding: 0;\n border: 0;\n font-style: normal;\n font-weight: normal;\n text-align: center;\n overflow: hidden;\n font-size: 100%;\n font-family: \"Roboto\", \"Open Sans\", Arial, sans-serif;\n text-shadow: 0 0 0;\n box-sizing: border-box; }\n [data-player] div, [data-player] span, [data-player] applet, [data-player] object, [data-player] iframe,\n [data-player] h1, [data-player] h2, [data-player] h3, [data-player] h4, [data-player] h5, [data-player] h6, [data-player] p, [data-player] blockquote, [data-player] pre,\n [data-player] a, [data-player] abbr, [data-player] acronym, [data-player] address, [data-player] big, [data-player] cite, [data-player] code,\n [data-player] del, [data-player] dfn, [data-player] em, [data-player] img, [data-player] ins, [data-player] kbd, [data-player] q, [data-player] s, [data-player] samp,\n [data-player] small, [data-player] strike, [data-player] strong, [data-player] sub, [data-player] sup, [data-player] tt, [data-player] var,\n [data-player] b, [data-player] u, [data-player] i, [data-player] center,\n [data-player] dl, [data-player] dt, [data-player] dd, [data-player] ol, [data-player] ul, [data-player] li,\n [data-player] fieldset, [data-player] form, [data-player] label, [data-player] legend,\n [data-player] table, [data-player] caption, [data-player] tbody, [data-player] tfoot, [data-player] thead, [data-player] tr, [data-player] th, [data-player] td,\n [data-player] article, [data-player] aside, [data-player] canvas, [data-player] details, [data-player] embed,\n [data-player] figure, [data-player] figcaption, [data-player] footer, [data-player] header, [data-player] hgroup,\n [data-player] menu, [data-player] nav, [data-player] output, [data-player] ruby, [data-player] section, [data-player] summary,\n [data-player] time, [data-player] mark, [data-player] audio, [data-player] video {\n margin: 0;\n padding: 0;\n border: 0;\n font: inherit;\n font-size: 100%;\n vertical-align: baseline; }\n [data-player] table {\n border-collapse: collapse;\n border-spacing: 0; }\n [data-player] caption, [data-player] th, [data-player] td {\n text-align: left;\n font-weight: normal;\n vertical-align: middle; }\n [data-player] q, [data-player] blockquote {\n quotes: none; }\n [data-player] q:before, [data-player] q:after, [data-player] blockquote:before, [data-player] blockquote:after {\n content: \"\";\n content: none; }\n [data-player] a img {\n border: none; }\n [data-player]:focus {\n outline: 0; }\n [data-player] * {\n max-width: none;\n box-sizing: inherit;\n float: none; }\n [data-player] div {\n display: block; }\n [data-player].fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0;\n left: 0; }\n [data-player].nocursor {\n cursor: none; }\n\n.clappr-style {\n display: none !important; }\n", ""]); + +// exports + + +/***/ }), +/* 161 */ +/***/ (function(module, exports, __webpack_require__) { + +var escape = __webpack_require__(81); +exports = module.exports = __webpack_require__(8)(false); +// imports + + +// module +exports.push([module.i, "@font-face {\n font-family: \"Roboto\";\n font-style: normal;\n font-weight: 400;\n src: local(\"Roboto\"), local(\"Roboto-Regular\"), url(" + escape(__webpack_require__(162)) + ") format(\"truetype\");\n}\n", ""]); + +// exports + + +/***/ }), +/* 162 */ +/***/ (function(module, exports) { + +module.exports = "<%=baseUrl%>/38861cba61c66739c1452c3a71e39852.ttf"; + +/***/ }), +/* 163 */ +/***/ (function(module, exports, __webpack_require__) { + "use strict"; -/* WEBPACK VAR INJECTION */(function(process) { + Object.defineProperty(exports, "__esModule", { value: true }); -var _stringify = __webpack_require__(81); +var _create = __webpack_require__(76); -var _stringify2 = _interopRequireDefault(_stringify); +var _create2 = _interopRequireDefault(_create); + +var _toConsumableArray2 = __webpack_require__(61); + +var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _classCallCheck2 = __webpack_require__(0); @@ -11292,2346 +11391,1947 @@ var _possibleConstructorReturn2 = __webpack_require__(1); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); -var _createClass2 = __webpack_require__(3); - -var _createClass3 = _interopRequireDefault(_createClass2); - var _inherits2 = __webpack_require__(2); var _inherits3 = _interopRequireDefault(_inherits2); -var _utils = __webpack_require__(5); +var _base_object = __webpack_require__(15); -var _vendor = __webpack_require__(60); +var _base_object2 = _interopRequireDefault(_base_object); -var _events = __webpack_require__(4); +var _player_info = __webpack_require__(40); -var _events2 = _interopRequireDefault(_events); +var _player_info2 = _interopRequireDefault(_player_info); -var _ui_object = __webpack_require__(23); +var _html5_video = __webpack_require__(41); -var _ui_object2 = _interopRequireDefault(_ui_object); +var _html5_video2 = _interopRequireDefault(_html5_video); -var _browser = __webpack_require__(14); +var _flash = __webpack_require__(84); -var _browser2 = _interopRequireDefault(_browser); +var _flash2 = _interopRequireDefault(_flash); -var _mediator = __webpack_require__(30); +var _html5_audio = __webpack_require__(85); -var _mediator2 = _interopRequireDefault(_mediator); +var _html5_audio2 = _interopRequireDefault(_html5_audio); -var _template = __webpack_require__(8); +var _flashls = __webpack_require__(86); -var _template2 = _interopRequireDefault(_template); +var _flashls2 = _interopRequireDefault(_flashls); -var _playback = __webpack_require__(10); +var _hls = __webpack_require__(87); -var _playback2 = _interopRequireDefault(_playback); +var _hls2 = _interopRequireDefault(_hls); -var _clapprZepto = __webpack_require__(6); +var _html_img = __webpack_require__(89); -var _clapprZepto2 = _interopRequireDefault(_clapprZepto); +var _html_img2 = _interopRequireDefault(_html_img); -__webpack_require__(161); +var _no_op = __webpack_require__(90); -var _mediaControl = __webpack_require__(163); +var _no_op2 = _interopRequireDefault(_no_op); -var _mediaControl2 = _interopRequireDefault(_mediaControl); +var _spinner_three_bounce = __webpack_require__(91); -var _play = __webpack_require__(62); +var _spinner_three_bounce2 = _interopRequireDefault(_spinner_three_bounce); -var _play2 = _interopRequireDefault(_play); +var _stats = __webpack_require__(200); -var _pause = __webpack_require__(84); +var _stats2 = _interopRequireDefault(_stats); -var _pause2 = _interopRequireDefault(_pause); +var _watermark = __webpack_require__(92); -var _stop = __webpack_require__(164); +var _watermark2 = _interopRequireDefault(_watermark); -var _stop2 = _interopRequireDefault(_stop); +var _poster = __webpack_require__(93); -var _volume = __webpack_require__(165); +var _poster2 = _interopRequireDefault(_poster); -var _volume2 = _interopRequireDefault(_volume); +var _google_analytics = __webpack_require__(210); -var _mute = __webpack_require__(166); +var _google_analytics2 = _interopRequireDefault(_google_analytics); -var _mute2 = _interopRequireDefault(_mute); +var _click_to_pause = __webpack_require__(94); -var _expand = __webpack_require__(167); +var _click_to_pause2 = _interopRequireDefault(_click_to_pause); -var _expand2 = _interopRequireDefault(_expand); +var _media_control = __webpack_require__(95); -var _shrink = __webpack_require__(168); +var _media_control2 = _interopRequireDefault(_media_control); -var _shrink2 = _interopRequireDefault(_shrink); +var _dvr_controls = __webpack_require__(98); -var _hd = __webpack_require__(169); +var _dvr_controls2 = _interopRequireDefault(_dvr_controls); -var _hd2 = _interopRequireDefault(_hd); +var _closed_captions = __webpack_require__(227); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +var _closed_captions2 = _interopRequireDefault(_closed_captions); -var MediaControl = function (_UIObject) { - (0, _inherits3.default)(MediaControl, _UIObject); - (0, _createClass3.default)(MediaControl, [{ - key: 'name', - get: function get() { - return 'MediaControl'; - } - }, { - key: 'disabled', - get: function get() { - return this.userDisabled || this.container && this.container.getPlaybackType() === _playback2.default.NO_OP; - } - }, { - key: 'attributes', - get: function get() { - return { - 'class': 'media-control', - 'data-media-control': '' - }; - } - }, { - key: 'events', - get: function get() { - return { - 'click [data-play]': 'play', - 'click [data-pause]': 'pause', - 'click [data-playpause]': 'togglePlayPause', - 'click [data-stop]': 'stop', - 'click [data-playstop]': 'togglePlayStop', - 'click [data-fullscreen]': 'toggleFullscreen', - 'click .bar-container[data-seekbar]': 'seek', - 'click .bar-container[data-volume]': 'onVolumeClick', - 'click .drawer-icon[data-volume]': 'toggleMute', - 'mouseenter .drawer-container[data-volume]': 'showVolumeBar', - 'mouseleave .drawer-container[data-volume]': 'hideVolumeBar', - 'mousedown .bar-container[data-volume]': 'startVolumeDrag', - 'mousemove .bar-container[data-volume]': 'mousemoveOnVolumeBar', - 'mousedown .bar-scrubber[data-seekbar]': 'startSeekDrag', - 'mousemove .bar-container[data-seekbar]': 'mousemoveOnSeekBar', - 'mouseleave .bar-container[data-seekbar]': 'mouseleaveOnSeekBar', - 'mouseenter .media-control-layer[data-controls]': 'setUserKeepVisible', - 'mouseleave .media-control-layer[data-controls]': 'resetUserKeepVisible' - }; - } - }, { - key: 'template', - get: function get() { - return (0, _template2.default)(_mediaControl2.default); - } - }, { - key: 'volume', - get: function get() { - return this.container && this.container.isReady ? this.container.volume : this.intendedVolume; - } - }, { - key: 'muted', - get: function get() { - return this.volume === 0; - } - }]); +var _favicon = __webpack_require__(99); - function MediaControl(options) { - (0, _classCallCheck3.default)(this, MediaControl); +var _favicon2 = _interopRequireDefault(_favicon); - var _this = (0, _possibleConstructorReturn3.default)(this, _UIObject.call(this, options)); +var _seek_time = __webpack_require__(234); - _this.persistConfig = _this.options.persistConfig; - _this.container = options.container; - _this.currentPositionValue = null; - _this.currentDurationValue = null; - _this.keepVisible = false; - _this.fullScreenOnVideoTagSupported = null; // unknown - _this.setInitialVolume(); - _this.addEventListeners(); - _this.settings = { - left: ['play', 'stop', 'pause'], - right: ['volume'], - default: ['position', 'seekbar', 'duration'] - }; - _this.kibo = new _vendor.Kibo(_this.options.focusElement); - _this.bindKeyEvents(); +var _seek_time2 = _interopRequireDefault(_seek_time); - if (_this.container) { - if (!_clapprZepto2.default.isEmptyObject(_this.container.settings)) _this.settings = _clapprZepto2.default.extend({}, _this.container.settings); - } else { - _this.settings = {}; - } +var _sources = __webpack_require__(239); - _this.userDisabled = false; - if (_this.container && _this.container.mediaControlDisabled || _this.options.chromeless) _this.disable(); +var _sources2 = _interopRequireDefault(_sources); - _this.stopDragHandler = function (event) { - return _this.stopDrag(event); - }; - _this.updateDragHandler = function (event) { - return _this.updateDrag(event); - }; - (0, _clapprZepto2.default)(document).bind('mouseup', _this.stopDragHandler); - (0, _clapprZepto2.default)(document).bind('mousemove', _this.updateDragHandler); - return _this; - } +var _end_video = __webpack_require__(240); - MediaControl.prototype.addEventListeners = function addEventListeners() { - if (this.container) { - _mediator2.default.on(this.options.playerId + ':' + _events2.default.PLAYER_RESIZE, this.playerResize, this); - this.listenTo(this.container, _events2.default.CONTAINER_PLAY, this.changeTogglePlay); - this.listenTo(this.container, _events2.default.CONTAINER_PAUSE, this.changeTogglePlay); - this.listenTo(this.container, _events2.default.CONTAINER_STOP, this.changeTogglePlay); - this.listenTo(this.container, _events2.default.CONTAINER_DBLCLICK, this.toggleFullscreen); - this.listenTo(this.container, _events2.default.CONTAINER_TIMEUPDATE, this.onTimeUpdate); - this.listenTo(this.container, _events2.default.CONTAINER_PROGRESS, this.updateProgressBar); - this.listenTo(this.container, _events2.default.CONTAINER_SETTINGSUPDATE, this.settingsUpdate); - this.listenTo(this.container, _events2.default.CONTAINER_PLAYBACKDVRSTATECHANGED, this.settingsUpdate); - this.listenTo(this.container, _events2.default.CONTAINER_HIGHDEFINITIONUPDATE, this.highDefinitionUpdate); - this.listenTo(this.container, _events2.default.CONTAINER_MEDIACONTROL_DISABLE, this.disable); - this.listenTo(this.container, _events2.default.CONTAINER_MEDIACONTROL_ENABLE, this.enable); - this.listenTo(this.container, _events2.default.CONTAINER_ENDED, this.ended); - this.listenTo(this.container, _events2.default.CONTAINER_VOLUME, this.onVolumeChanged); - this.listenTo(this.container, _events2.default.CONTAINER_OPTIONS_CHANGE, this.setInitialVolume); - if (this.container.playback.el.nodeName.toLowerCase() === 'video') { - // wait until the metadata has loaded and then check if fullscreen on video tag is supported - this.listenToOnce(this.container, _events2.default.CONTAINER_LOADEDMETADATA, this.onLoadedMetadataOnVideoTag); - } - } - }; +var _end_video2 = _interopRequireDefault(_end_video); - MediaControl.prototype.disable = function disable() { - this.userDisabled = true; - this.hide(); - this.unbindKeyEvents(); - this.$el.hide(); - }; +var _strings = __webpack_require__(241); - MediaControl.prototype.enable = function enable() { - if (this.options.chromeless) return; - this.userDisabled = false; - this.bindKeyEvents(); - this.show(); - }; +var _strings2 = _interopRequireDefault(_strings); - MediaControl.prototype.play = function play() { - this.container.play(); - }; +var _error_screen = __webpack_require__(242); - MediaControl.prototype.pause = function pause() { - this.container.pause(); - }; +var _error_screen2 = _interopRequireDefault(_error_screen); - MediaControl.prototype.stop = function stop() { - this.container.stop(); - }; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - MediaControl.prototype.setInitialVolume = function setInitialVolume() { - var initialVolume = this.persistConfig ? _utils.Config.restore('volume') : 100; - var options = this.container && this.container.options || this.options; - this.setVolume(options.mute ? 0 : initialVolume, true); - }; +/** + * It keeps a list of the default plugins (playback, container, core) and it merges external plugins with its internals. + * @class Loader + * @constructor + * @extends BaseObject + * @module components + */ - MediaControl.prototype.onVolumeChanged = function onVolumeChanged() { - this.updateVolumeUI(); - }; - MediaControl.prototype.onLoadedMetadataOnVideoTag = function onLoadedMetadataOnVideoTag() { - var video = this.container.playback.el; - // video.webkitSupportsFullscreen is deprecated but iOS appears to only use this - // see https://github.com/clappr/clappr/issues/1127 - if (!_utils.Fullscreen.fullscreenEnabled() && video.webkitSupportsFullscreen) { - this.fullScreenOnVideoTagSupported = true; - this.settingsUpdate(); - } - }; +/* Playback Plugins */ +// Copyright 2014 Globo.com Player authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. - MediaControl.prototype.updateVolumeUI = function updateVolumeUI() { - if (!this.rendered) { - // this will be called after a render - return; - } - // update volume bar scrubber/fill on bar mode - this.$volumeBarContainer.find('.bar-fill-2').css({}); - var containerWidth = this.$volumeBarContainer.width(); - var barWidth = this.$volumeBarBackground.width(); - var offset = (containerWidth - barWidth) / 2.0; - var pos = barWidth * this.volume / 100.0 + offset; - this.$volumeBarFill.css({ width: this.volume + '%' }); - this.$volumeBarScrubber.css({ left: pos }); +var Loader = function (_BaseObject) { + (0, _inherits3.default)(Loader, _BaseObject); - // update volume bar segments on segmented bar mode - this.$volumeBarContainer.find('.segmented-bar-element').removeClass('fill'); - var item = Math.ceil(this.volume / 10.0); - this.$volumeBarContainer.find('.segmented-bar-element').slice(0, item).addClass('fill'); - this.$volumeIcon.html(''); - this.$volumeIcon.removeClass('muted'); - if (!this.muted) { - this.$volumeIcon.append(_volume2.default); - } else { - this.$volumeIcon.append(_mute2.default); - this.$volumeIcon.addClass('muted'); - } - this.applyButtonStyle(this.$volumeIcon); - }; + /** + * builds the loader + * @method constructor + * @param {Object} externalPlugins the external plugins + * @param {Number} playerId you can embed multiple instances of clappr, therefore this is the unique id of each one. + */ + function Loader() { + var externalPlugins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var playerId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var useOnlyPlainHtml5Plugins = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + (0, _classCallCheck3.default)(this, Loader); - MediaControl.prototype.changeTogglePlay = function changeTogglePlay() { - this.$playPauseToggle.html(''); - this.$playStopToggle.html(''); - if (this.container && this.container.isPlaying()) { - this.$playPauseToggle.append(_pause2.default); - this.$playStopToggle.append(_stop2.default); - this.trigger(_events2.default.MEDIACONTROL_PLAYING); - } else { - this.$playPauseToggle.append(_play2.default); - this.$playStopToggle.append(_play2.default); - this.trigger(_events2.default.MEDIACONTROL_NOTPLAYING); - if (_browser2.default.isMobile) this.show(); + var _this = (0, _possibleConstructorReturn3.default)(this, _BaseObject.call(this)); + + _this.playerId = playerId; + _this.playbackPlugins = []; + + if (!useOnlyPlainHtml5Plugins) { + _this.playbackPlugins = [].concat((0, _toConsumableArray3.default)(_this.playbackPlugins), [_hls2.default]); } - this.applyButtonStyle(this.$playPauseToggle); - this.applyButtonStyle(this.$playStopToggle); - }; - MediaControl.prototype.mousemoveOnSeekBar = function mousemoveOnSeekBar(event) { - if (this.settings.seekEnabled) { - var offsetX = event.pageX - this.$seekBarContainer.offset().left - this.$seekBarHover.width() / 2; - this.$seekBarHover.css({ left: offsetX }); + _this.playbackPlugins = [].concat((0, _toConsumableArray3.default)(_this.playbackPlugins), [_html5_video2.default, _html5_audio2.default]); + + if (!useOnlyPlainHtml5Plugins) { + _this.playbackPlugins = [].concat((0, _toConsumableArray3.default)(_this.playbackPlugins), [_flash2.default, _flashls2.default]); } - this.trigger(_events2.default.MEDIACONTROL_MOUSEMOVE_SEEKBAR, event); - }; - MediaControl.prototype.mouseleaveOnSeekBar = function mouseleaveOnSeekBar(event) { - this.trigger(_events2.default.MEDIACONTROL_MOUSELEAVE_SEEKBAR, event); - }; + _this.playbackPlugins = [].concat((0, _toConsumableArray3.default)(_this.playbackPlugins), [_html_img2.default, _no_op2.default]); - MediaControl.prototype.onVolumeClick = function onVolumeClick(event) { - this.setVolume(this.getVolumeFromUIEvent(event)); - }; + _this.containerPlugins = [_spinner_three_bounce2.default, _watermark2.default, _poster2.default, _stats2.default, _google_analytics2.default, _click_to_pause2.default]; + _this.corePlugins = [_media_control2.default, _dvr_controls2.default, _closed_captions2.default, _favicon2.default, _seek_time2.default, _sources2.default, _end_video2.default, _error_screen2.default, _strings2.default]; - MediaControl.prototype.mousemoveOnVolumeBar = function mousemoveOnVolumeBar(event) { - if (this.draggingVolumeBar) this.setVolume(this.getVolumeFromUIEvent(event)); - }; + if (!Array.isArray(externalPlugins)) _this.validateExternalPluginsType(externalPlugins); - MediaControl.prototype.playerResize = function playerResize(size) { - this.$fullscreenToggle.html(''); - if (_utils.Fullscreen.isFullscreen()) this.$fullscreenToggle.append(_shrink2.default);else this.$fullscreenToggle.append(_expand2.default); + _this.addExternalPlugins(externalPlugins); + return _this; + } - this.applyButtonStyle(this.$fullscreenToggle); - this.$el.removeClass('w320'); - if (size.width <= 320 || this.options.hideVolumeBar) this.$el.addClass('w320'); - }; + /** + * groups by type the external plugins that were passed through `options.plugins` it they're on a flat array + * @method addExternalPlugins + * @private + * @param {Object} an config object or an array of plugins + * @return {Object} plugins the config object with the plugins separated by type + */ - MediaControl.prototype.togglePlayPause = function togglePlayPause() { - if (this.container.isPlaying()) this.container.pause();else this.container.play(); - return false; + Loader.prototype.groupPluginsByType = function groupPluginsByType(plugins) { + if (Array.isArray(plugins)) { + plugins = plugins.reduce(function (memo, plugin) { + memo[plugin.type] || (memo[plugin.type] = []); + memo[plugin.type].push(plugin); + return memo; + }, {}); + } + return plugins; }; - MediaControl.prototype.togglePlayStop = function togglePlayStop() { - if (this.container.isPlaying()) this.container.stop();else this.container.play(); - }; + Loader.prototype.removeDups = function removeDups(list) { + var groupUp = function groupUp(plugins, plugin) { + plugins[plugin.prototype.name] && delete plugins[plugin.prototype.name]; + plugins[plugin.prototype.name] = plugin; + return plugins; + }; + var pluginsMap = list.reduceRight(groupUp, (0, _create2.default)(null)); - MediaControl.prototype.startSeekDrag = function startSeekDrag(event) { - if (!this.settings.seekEnabled) return; - this.draggingSeekBar = true; - this.$el.addClass('dragging'); - this.$seekBarLoaded.addClass('media-control-notransition'); - this.$seekBarPosition.addClass('media-control-notransition'); - this.$seekBarScrubber.addClass('media-control-notransition'); - if (event) event.preventDefault(); + var plugins = []; + for (var key in pluginsMap) { + plugins.unshift(pluginsMap[key]); + }return plugins; }; - MediaControl.prototype.startVolumeDrag = function startVolumeDrag(event) { - this.draggingVolumeBar = true; - this.$el.addClass('dragging'); - if (event) event.preventDefault(); - }; + /** + * adds all the external plugins that were passed through `options.plugins` + * @method addExternalPlugins + * @private + * @param {Object} plugins the config object with all plugins + */ - MediaControl.prototype.stopDrag = function stopDrag(event) { - if (this.draggingSeekBar) this.seek(event); - this.$el.removeClass('dragging'); - this.$seekBarLoaded.removeClass('media-control-notransition'); - this.$seekBarPosition.removeClass('media-control-notransition'); - this.$seekBarScrubber.removeClass('media-control-notransition dragging'); - this.draggingSeekBar = false; - this.draggingVolumeBar = false; - }; + Loader.prototype.addExternalPlugins = function addExternalPlugins(plugins) { + plugins = this.groupPluginsByType(plugins); + if (plugins.playback) this.playbackPlugins = this.removeDups(plugins.playback.concat(this.playbackPlugins)); - MediaControl.prototype.updateDrag = function updateDrag(event) { - if (this.draggingSeekBar) { - event.preventDefault(); - var offsetX = event.pageX - this.$seekBarContainer.offset().left; - var pos = offsetX / this.$seekBarContainer.width() * 100; - pos = Math.min(100, Math.max(pos, 0)); - this.setSeekPercentage(pos); - } else if (this.draggingVolumeBar) { - event.preventDefault(); - this.setVolume(this.getVolumeFromUIEvent(event)); - } - }; + if (plugins.container) this.containerPlugins = this.removeDups(plugins.container.concat(this.containerPlugins)); - MediaControl.prototype.getVolumeFromUIEvent = function getVolumeFromUIEvent(event) { - var offsetY = event.pageX - this.$volumeBarContainer.offset().left; - var volumeFromUI = offsetY / this.$volumeBarContainer.width() * 100; - return volumeFromUI; - }; + if (plugins.core) this.corePlugins = this.removeDups(plugins.core.concat(this.corePlugins)); - MediaControl.prototype.toggleMute = function toggleMute() { - this.setVolume(this.muted ? 100 : 0); + _player_info2.default.getInstance(this.playerId).playbackPlugins = this.playbackPlugins; }; - MediaControl.prototype.setVolume = function setVolume(value) { - var _this2 = this; - - var isInitialVolume = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + /** + * validate if the external plugins that were passed through `options.plugins` are associated to the correct type + * @method validateExternalPluginsType + * @private + * @param {Object} plugins the config object with all plugins + */ - value = Math.min(100, Math.max(value, 0)); - // this will hold the intended volume - // it may not actually get set to this straight away - // if the container is not ready etc - this.intendedVolume = value; - this.persistConfig && !isInitialVolume && _utils.Config.persist('volume', value); - var setWhenContainerReady = function setWhenContainerReady() { - if (_this2.container.isReady) { - _this2.container.setVolume(value); - } else { - _this2.listenToOnce(_this2.container, _events2.default.CONTAINER_READY, function () { - _this2.container.setVolume(value); - }); - } - }; - if (!this.container) { - this.listenToOnce(this, _events2.default.MEDIACONTROL_CONTAINERCHANGED, function () { - setWhenContainerReady(); + Loader.prototype.validateExternalPluginsType = function validateExternalPluginsType(plugins) { + var plugintypes = ['playback', 'container', 'core']; + plugintypes.forEach(function (type) { + (plugins[type] || []).forEach(function (el) { + var errorMessage = 'external ' + el.type + ' plugin on ' + type + ' array'; + if (el.type !== type) throw new ReferenceError(errorMessage); }); - } else { - setWhenContainerReady(); - } + }); }; - MediaControl.prototype.toggleFullscreen = function toggleFullscreen() { - this.trigger(_events2.default.MEDIACONTROL_FULLSCREEN, this.name); - this.container.fullscreen(); - this.resetUserKeepVisible(); - }; + return Loader; +}(_base_object2.default); - MediaControl.prototype.setContainer = function setContainer(container) { - if (this.container) { - this.stopListening(this.container); - this.fullScreenOnVideoTagSupported = null; - } - _mediator2.default.off(this.options.playerId + ':' + _events2.default.PLAYER_RESIZE, this.playerResize, this); - this.container = container; - // set the new container to match the volume of the last one - this.setVolume(this.intendedVolume, true); - this.changeTogglePlay(); - this.addEventListeners(); - this.settingsUpdate(); - this.container.trigger(_events2.default.CONTAINER_PLAYBACKDVRSTATECHANGED, this.container.isDvrInUse()); - if (this.container.mediaControlDisabled) this.disable(); +/* Core Plugins */ - this.trigger(_events2.default.MEDIACONTROL_CONTAINERCHANGED); - }; - MediaControl.prototype.showVolumeBar = function showVolumeBar() { - if (this.hideVolumeId) clearTimeout(this.hideVolumeId); +/* Container Plugins */ - this.$volumeBarContainer.removeClass('volume-bar-hide'); - }; - MediaControl.prototype.hideVolumeBar = function hideVolumeBar() { - var _this3 = this; +exports.default = Loader; +module.exports = exports['default']; - var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 400; +/***/ }), +/* 164 */ +/***/ (function(module, exports, __webpack_require__) { - if (!this.$volumeBarContainer) return; - if (this.draggingVolumeBar) { - this.hideVolumeId = setTimeout(function () { - return _this3.hideVolumeBar(); - }, timeout); - } else { - if (this.hideVolumeId) clearTimeout(this.hideVolumeId); +__webpack_require__(71); +__webpack_require__(165); +module.exports = __webpack_require__(11).Array.from; - this.hideVolumeId = setTimeout(function () { - return _this3.$volumeBarContainer.addClass('volume-bar-hide'); - }, timeout); - } - }; +/***/ }), +/* 165 */ +/***/ (function(module, exports, __webpack_require__) { - MediaControl.prototype.ended = function ended() { - this.changeTogglePlay(); - }; +"use strict"; - MediaControl.prototype.updateProgressBar = function updateProgressBar(progress) { - var loadedStart = progress.start / progress.total * 100; - var loadedEnd = progress.current / progress.total * 100; - this.$seekBarLoaded.css({ left: loadedStart + '%', width: loadedEnd - loadedStart + '%' }); - }; +var ctx = __webpack_require__(44) + , $export = __webpack_require__(16) + , toObject = __webpack_require__(38) + , call = __webpack_require__(166) + , isArrayIter = __webpack_require__(167) + , toLength = __webpack_require__(69) + , createProperty = __webpack_require__(168) + , getIterFn = __webpack_require__(169); - MediaControl.prototype.onTimeUpdate = function onTimeUpdate(timeProgress) { - if (this.draggingSeekBar) return; - // TODO why should current time ever be negative? - var position = timeProgress.current < 0 ? timeProgress.total : timeProgress.current; +$export($export.S + $export.F * !__webpack_require__(171)(function(iter){ Array.from(iter); }), 'Array', { + // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) + from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){ + var O = toObject(arrayLike) + , C = typeof this == 'function' ? this : Array + , aLen = arguments.length + , mapfn = aLen > 1 ? arguments[1] : undefined + , mapping = mapfn !== undefined + , index = 0 + , iterFn = getIterFn(O) + , length, result, step, iterator; + if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); + // if object isn't iterable or it's array with default iterator - use simple case + if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){ + for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){ + createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); + } + } else { + length = toLength(O.length); + for(result = new C(length); length > index; index++){ + createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + } + } + result.length = index; + return result; + } +}); - this.currentPositionValue = position; - this.currentDurationValue = timeProgress.total; - this.renderSeekBar(); - }; - MediaControl.prototype.renderSeekBar = function renderSeekBar() { - if (this.currentPositionValue === null || this.currentDurationValue === null) { - // this will be triggered as soon as these beocome available - return; - } +/***/ }), +/* 166 */ +/***/ (function(module, exports, __webpack_require__) { - // default to 100% - this.currentSeekBarPercentage = 100; - if (this.container.getPlaybackType() !== _playback2.default.LIVE || this.container.isDvrInUse()) this.currentSeekBarPercentage = this.currentPositionValue / this.currentDurationValue * 100; +// call something on iterator step with safe closing on error +var anObject = __webpack_require__(26); +module.exports = function(iterator, fn, value, entries){ + try { + return entries ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch(e){ + var ret = iterator['return']; + if(ret !== undefined)anObject(ret.call(iterator)); + throw e; + } +}; - this.setSeekPercentage(this.currentSeekBarPercentage); +/***/ }), +/* 167 */ +/***/ (function(module, exports, __webpack_require__) { - var newPosition = (0, _utils.formatTime)(this.currentPositionValue); - var newDuration = (0, _utils.formatTime)(this.currentDurationValue); - if (newPosition !== this.displayedPosition) { - this.$position.text(newPosition); - this.displayedPosition = newPosition; - } - if (newDuration !== this.displayedDuration) { - this.$duration.text(newDuration); - this.displayedDuration = newDuration; - } - }; +// check on default Array iterator +var Iterators = __webpack_require__(34) + , ITERATOR = __webpack_require__(13)('iterator') + , ArrayProto = Array.prototype; - MediaControl.prototype.seek = function seek(event) { - if (!this.settings.seekEnabled) return; - var offsetX = event.pageX - this.$seekBarContainer.offset().left; - var pos = offsetX / this.$seekBarContainer.width() * 100; - pos = Math.min(100, Math.max(pos, 0)); - this.container.seekPercentage(pos); - this.setSeekPercentage(pos); - return false; - }; +module.exports = function(it){ + return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); +}; - MediaControl.prototype.setKeepVisible = function setKeepVisible() { - this.keepVisible = true; - }; +/***/ }), +/* 168 */ +/***/ (function(module, exports, __webpack_require__) { - MediaControl.prototype.resetKeepVisible = function resetKeepVisible() { - this.keepVisible = false; - }; +"use strict"; - MediaControl.prototype.setUserKeepVisible = function setUserKeepVisible() { - this.userKeepVisible = true; - }; +var $defineProperty = __webpack_require__(18) + , createDesc = __webpack_require__(33); - MediaControl.prototype.resetUserKeepVisible = function resetUserKeepVisible() { - this.userKeepVisible = false; - }; +module.exports = function(object, index, value){ + if(index in object)$defineProperty.f(object, index, createDesc(0, value)); + else object[index] = value; +}; - MediaControl.prototype.isVisible = function isVisible() { - return !this.$el.hasClass('media-control-hide'); - }; +/***/ }), +/* 169 */ +/***/ (function(module, exports, __webpack_require__) { - MediaControl.prototype.show = function show(event) { - var _this4 = this; +var classof = __webpack_require__(170) + , ITERATOR = __webpack_require__(13)('iterator') + , Iterators = __webpack_require__(34); +module.exports = __webpack_require__(11).getIteratorMethod = function(it){ + if(it != undefined)return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; - if (this.disabled) return; +/***/ }), +/* 170 */ +/***/ (function(module, exports, __webpack_require__) { - var timeout = 2000; - if (!event || event.clientX !== this.lastMouseX && event.clientY !== this.lastMouseY || navigator.userAgent.match(/firefox/i)) { - clearTimeout(this.hideId); - this.$el.show(); - this.trigger(_events2.default.MEDIACONTROL_SHOW, this.name); - this.$el.removeClass('media-control-hide'); - this.hideId = setTimeout(function () { - return _this4.hide(); - }, timeout); - if (event) { - this.lastMouseX = event.clientX; - this.lastMouseY = event.clientY; - } - } - }; +// getting tag from 19.1.3.6 Object.prototype.toString() +var cof = __webpack_require__(46) + , TAG = __webpack_require__(13)('toStringTag') + // ES3 wrong here + , ARG = cof(function(){ return arguments; }()) == 'Arguments'; - MediaControl.prototype.hide = function hide() { - var _this5 = this; +// fallback for IE11 Script Access Denied error +var tryGet = function(it, key){ + try { + return it[key]; + } catch(e){ /* empty */ } +}; - var delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; +module.exports = function(it){ + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T + // builtinTag case + : ARG ? cof(O) + // ES3 arguments fallback + : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; +}; - if (!this.isVisible()) return; +/***/ }), +/* 171 */ +/***/ (function(module, exports, __webpack_require__) { - var timeout = delay || 2000; - clearTimeout(this.hideId); - if (!this.disabled && this.options.hideMediaControl === false) return; +var ITERATOR = __webpack_require__(13)('iterator') + , SAFE_CLOSING = false; - if (!this.disabled && (delay || this.userKeepVisible || this.keepVisible || this.draggingSeekBar || this.draggingVolumeBar)) { - this.hideId = setTimeout(function () { - return _this5.hide(); - }, timeout); - } else { - this.trigger(_events2.default.MEDIACONTROL_HIDE, this.name); - this.$el.addClass('media-control-hide'); - this.hideVolumeBar(0); - } - }; +try { + var riter = [7][ITERATOR](); + riter['return'] = function(){ SAFE_CLOSING = true; }; + Array.from(riter, function(){ throw 2; }); +} catch(e){ /* empty */ } - MediaControl.prototype.settingsUpdate = function settingsUpdate() { - var newSettings = this.getSettings(); - if (newSettings && !this.fullScreenOnVideoTagSupported && !_utils.Fullscreen.fullscreenEnabled()) { - // remove fullscreen from settings if it is present - newSettings.default && (0, _utils.removeArrayItem)(newSettings.default, 'fullscreen'); - newSettings.left && (0, _utils.removeArrayItem)(newSettings.left, 'fullscreen'); - newSettings.right && (0, _utils.removeArrayItem)(newSettings.right, 'fullscreen'); - } - var settingsChanged = (0, _stringify2.default)(this.settings) !== (0, _stringify2.default)(newSettings); - if (settingsChanged) { - this.settings = newSettings; - this.render(); - } - }; +module.exports = function(exec, skipClosing){ + if(!skipClosing && !SAFE_CLOSING)return false; + var safe = false; + try { + var arr = [7] + , iter = arr[ITERATOR](); + iter.next = function(){ return {done: safe = true}; }; + arr[ITERATOR] = function(){ return iter; }; + exec(arr); + } catch(e){ /* empty */ } + return safe; +}; - MediaControl.prototype.getSettings = function getSettings() { - return _clapprZepto2.default.extend(true, {}, this.container.settings); - }; +/***/ }), +/* 172 */ +/***/ (function(module, exports, __webpack_require__) { - MediaControl.prototype.highDefinitionUpdate = function highDefinitionUpdate(isHD) { - this.isHD = isHD; - var method = isHD ? 'addClass' : 'removeClass'; - this.$hdIndicator[method]('enabled'); - }; +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { - MediaControl.prototype.createCachedElements = function createCachedElements() { - var $layer = this.$el.find('.media-control-layer'); - this.$duration = $layer.find('.media-control-indicator[data-duration]'); - this.$fullscreenToggle = $layer.find('button.media-control-button[data-fullscreen]'); - this.$playPauseToggle = $layer.find('button.media-control-button[data-playpause]'); - this.$playStopToggle = $layer.find('button.media-control-button[data-playstop]'); - this.$position = $layer.find('.media-control-indicator[data-position]'); - this.$seekBarContainer = $layer.find('.bar-container[data-seekbar]'); - this.$seekBarHover = $layer.find('.bar-hover[data-seekbar]'); - this.$seekBarLoaded = $layer.find('.bar-fill-1[data-seekbar]'); - this.$seekBarPosition = $layer.find('.bar-fill-2[data-seekbar]'); - this.$seekBarScrubber = $layer.find('.bar-scrubber[data-seekbar]'); - this.$volumeBarContainer = $layer.find('.bar-container[data-volume]'); - this.$volumeContainer = $layer.find('.drawer-container[data-volume]'); - this.$volumeIcon = $layer.find('.drawer-icon[data-volume]'); - this.$volumeBarBackground = this.$el.find('.bar-background[data-volume]'); - this.$volumeBarFill = this.$el.find('.bar-fill-1[data-volume]'); - this.$volumeBarScrubber = this.$el.find('.bar-scrubber[data-volume]'); - this.$hdIndicator = this.$el.find('button.media-control-button[data-hd-indicator]'); - this.resetIndicators(); - this.initializeIcons(); - }; +Object.defineProperty(exports, "__esModule", { + value: true +}); - MediaControl.prototype.resetIndicators = function resetIndicators() { - this.displayedPosition = this.$position.text(); - this.displayedDuration = this.$duration.text(); - }; +var _from = __webpack_require__(83); - MediaControl.prototype.initializeIcons = function initializeIcons() { - var $layer = this.$el.find('.media-control-layer'); - $layer.find('button.media-control-button[data-play]').append(_play2.default); - $layer.find('button.media-control-button[data-pause]').append(_pause2.default); - $layer.find('button.media-control-button[data-stop]').append(_stop2.default); - this.$playPauseToggle.append(_play2.default); - this.$playStopToggle.append(_play2.default); - this.$volumeIcon.append(_volume2.default); - this.$fullscreenToggle.append(_expand2.default); - this.$hdIndicator.append(_hd2.default); - }; +var _from2 = _interopRequireDefault(_from); - MediaControl.prototype.setSeekPercentage = function setSeekPercentage(value) { - value = Math.max(Math.min(value, 100.0), 0); - if (this.displayedSeekBarPercentage === value) { - // not changed since last update - return; - } - this.displayedSeekBarPercentage = value; +var _classCallCheck2 = __webpack_require__(0); - this.$seekBarPosition.removeClass('media-control-notransition'); - this.$seekBarScrubber.removeClass('media-control-notransition'); - this.$seekBarPosition.css({ width: value + '%' }); - this.$seekBarScrubber.css({ left: value + '%' }); - }; +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - MediaControl.prototype.seekRelative = function seekRelative(delta) { - if (!this.settings.seekEnabled) return; - var currentTime = this.container.getCurrentTime(); - var duration = this.container.getDuration(); - var position = Math.min(Math.max(currentTime + delta, 0), duration); - position = Math.min(position * 100 / duration, 100); - this.container.seekPercentage(position); - }; +var _possibleConstructorReturn2 = __webpack_require__(1); - MediaControl.prototype.bindKeyAndShow = function bindKeyAndShow(key, cb) { - var _this6 = this; +var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - this.kibo.down(key, function () { - _this6.show(); - return cb(); - }); - }; +var _createClass2 = __webpack_require__(3); - MediaControl.prototype.bindKeyEvents = function bindKeyEvents() { - var _this7 = this; +var _createClass3 = _interopRequireDefault(_createClass2); - if (_browser2.default.isMobile || this.options.disableKeyboardShortcuts) return; +var _inherits2 = __webpack_require__(2); - this.unbindKeyEvents(); +var _inherits3 = _interopRequireDefault(_inherits2); - this.bindKeyAndShow('space', function () { - return _this7.togglePlayPause(); - }); - this.bindKeyAndShow('left', function () { - return _this7.seekRelative(-5); - }); - this.bindKeyAndShow('right', function () { - return _this7.seekRelative(5); - }); - this.bindKeyAndShow('shift left', function () { - return _this7.seekRelative(-10); - }); - this.bindKeyAndShow('shift right', function () { - return _this7.seekRelative(10); - }); - this.bindKeyAndShow('shift ctrl left', function () { - return _this7.seekRelative(-15); - }); - this.bindKeyAndShow('shift ctrl right', function () { - return _this7.seekRelative(15); - }); - var keys = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']; - keys.forEach(function (i) { - _this7.bindKeyAndShow(i, function () { - return _this7.settings.seekEnabled && _this7.container.seekPercentage(i * 10); - }); - }); - }; +var _toConsumableArray2 = __webpack_require__(61); - MediaControl.prototype.unbindKeyEvents = function unbindKeyEvents() { - if (this.kibo) { - this.kibo.off('space'); - this.kibo.off('left'); - this.kibo.off('right'); - this.kibo.off('shift left'); - this.kibo.off('shift right'); - this.kibo.off('shift ctrl left'); - this.kibo.off('shift ctrl right'); - this.kibo.off(['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']); - } - }; +var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); - MediaControl.prototype.parseColors = function parseColors() { - if (this.options.mediacontrol) { - this.buttonsColor = this.options.mediacontrol.buttons; - var seekbarColor = this.options.mediacontrol.seekbar; - this.$el.find('.bar-fill-2[data-seekbar]').css('background-color', seekbarColor); - this.$el.find('.media-control-icon svg path').css('fill', this.buttonsColor); - this.$el.find('.segmented-bar-element[data-volume]').css('boxShadow', 'inset 2px 0 0 ' + this.buttonsColor); - } - }; +var _keys = __webpack_require__(53); - MediaControl.prototype.applyButtonStyle = function applyButtonStyle(element) { - if (this.buttonsColor && element) (0, _clapprZepto2.default)(element).find('svg path').css('fill', this.buttonsColor); - }; +var _keys2 = _interopRequireDefault(_keys); - MediaControl.prototype.destroy = function destroy() { - this.remove(); - (0, _clapprZepto2.default)(document).unbind('mouseup', this.stopDragHandler); - (0, _clapprZepto2.default)(document).unbind('mousemove', this.updateDragHandler); - this.unbindKeyEvents(); - this.stopListening(); - }; +var _utils = __webpack_require__(5); - /** - * enables to configure the media control after its creation - * @method configure - * @param {Object} options all the options to change in form of a javascript object - */ +var _playback = __webpack_require__(10); +var _playback2 = _interopRequireDefault(_playback); - MediaControl.prototype.configure = function configure(options) { - this._options = _clapprZepto2.default.extend(this._options, options); - this.trigger(_events2.default.MEDIACONTROL_OPTIONS_CHANGE); - }; +var _browser = __webpack_require__(14); - MediaControl.prototype.render = function render() { - var _this8 = this; +var _browser2 = _interopRequireDefault(_browser); - var timeout = this.options.hideMediaControlDelay || 2000; - this.$el.html(this.template({ settings: this.settings })); - this.createCachedElements(); - this.$playPauseToggle.addClass('paused'); - this.$playStopToggle.addClass('stopped'); +var _error = __webpack_require__(24); - this.changeTogglePlay(); - this.hideId = setTimeout(function () { - return _this8.hide(); - }, timeout); - if (this.disabled) this.hide(); +var _error2 = _interopRequireDefault(_error); - // Video volume cannot be changed with Safari on mobile devices - // Display mute/unmute icon only if Safari version >= 10 - if (_browser2.default.isSafari && _browser2.default.isMobile) { - if (_browser2.default.version < 10) this.$volumeContainer.css('display', 'none');else this.$volumeBarContainer.css('display', 'none'); - } +var _events = __webpack_require__(4); - this.$seekBarPosition.addClass('media-control-notransition'); - this.$seekBarScrubber.addClass('media-control-notransition'); +var _events2 = _interopRequireDefault(_events); - var previousSeekPercentage = 0; - if (this.displayedSeekBarPercentage) previousSeekPercentage = this.displayedSeekBarPercentage; +var _log = __webpack_require__(29); - this.displayedSeekBarPercentage = null; - this.setSeekPercentage(previousSeekPercentage); +var _log2 = _interopRequireDefault(_log); - process.nextTick(function () { - if (!_this8.settings.seekEnabled) _this8.$seekBarContainer.addClass('seek-disabled'); +var _clapprZepto = __webpack_require__(6); - _this8.playerResize({ width: _this8.options.width, height: _this8.options.height }); - _this8.hideVolumeBar(0); - }); +var _clapprZepto2 = _interopRequireDefault(_clapprZepto); - this.parseColors(); - this.highDefinitionUpdate(this.isHD); +var _template = __webpack_require__(7); - this.rendered = true; - this.updateVolumeUI(); - this.trigger(_events2.default.MEDIACONTROL_RENDERED); - return this; - }; +var _template2 = _interopRequireDefault(_template); - return MediaControl; -}(_ui_object2.default); // Copyright 2014 Globo.com Player authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +var _tracks = __webpack_require__(173); -/** - * The MediaControl is responsible for displaying the Player controls. - */ +var _tracks2 = _interopRequireDefault(_tracks); -exports.default = MediaControl; +__webpack_require__(174); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -MediaControl.extend = function (properties) { - return (0, _utils.extend)(MediaControl, properties); -}; -module.exports = exports['default']; -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(61))) +// Copyright 2014 Globo.com Player authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. -/***/ }), -/* 160 */ -/***/ (function(module, exports, __webpack_require__) { +var MIMETYPES = { + 'mp4': ['avc1.42E01E', 'avc1.58A01E', 'avc1.4D401E', 'avc1.64001E', 'mp4v.20.8', 'mp4v.20.240', 'mp4a.40.2'].map(function (codec) { + return 'video/mp4; codecs="' + codec + ', mp4a.40.2"'; + }), + 'ogg': ['video/ogg; codecs="theora, vorbis"', 'video/ogg; codecs="dirac"', 'video/ogg; codecs="theora, speex"'], + '3gpp': ['video/3gpp; codecs="mp4v.20.8, samr"'], + 'webm': ['video/webm; codecs="vp8, vorbis"'], + 'mkv': ['video/x-matroska; codecs="theora, vorbis"'], + 'm3u8': ['application/x-mpegurl'] +}; +MIMETYPES['ogv'] = MIMETYPES['ogg']; +MIMETYPES['3gp'] = MIMETYPES['3gpp']; -var core = __webpack_require__(11) - , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify}); -module.exports = function stringify(it){ // eslint-disable-line no-unused-vars - return $JSON.stringify.apply($JSON, arguments); +var AUDIO_MIMETYPES = { + 'wav': ['audio/wav'], + 'mp3': ['audio/mp3', 'audio/mpeg;codecs="mp3"'], + 'aac': ['audio/mp4;codecs="mp4a.40.5"'], + 'oga': ['audio/ogg'] }; -/***/ }), -/* 161 */ -/***/ (function(module, exports, __webpack_require__) { +var KNOWN_AUDIO_MIMETYPES = (0, _keys2.default)(AUDIO_MIMETYPES).reduce(function (acc, k) { + return [].concat((0, _toConsumableArray3.default)(acc), (0, _toConsumableArray3.default)(AUDIO_MIMETYPES[k])); +}, []); +var UNKNOWN_ERROR = { code: 'unknown', message: 'unknown' -var content = __webpack_require__(162); + // TODO: rename this Playback to HTML5Playback (breaking change, only after 0.3.0) +}; +var HTML5Video = function (_Playback) { + (0, _inherits3.default)(HTML5Video, _Playback); + (0, _createClass3.default)(HTML5Video, [{ + key: 'name', + get: function get() { + return 'html5_video'; + } + }, { + key: 'tagName', + get: function get() { + return this.isAudioOnly ? 'audio' : 'video'; + } + }, { + key: 'isAudioOnly', + get: function get() { + var resourceUrl = this.options.src; + var mimeTypes = HTML5Video._mimeTypesForUrl(resourceUrl, AUDIO_MIMETYPES, this.options.mimeType); + return this.options.playback && this.options.playback.audioOnly || this.options.audioOnly || KNOWN_AUDIO_MIMETYPES.indexOf(mimeTypes[0]) >= 0; + } + }, { + key: 'attributes', + get: function get() { + return { + 'data-html5-video': '' + }; + } + }, { + key: 'events', + get: function get() { + return { + 'canplay': '_onCanPlay', + 'canplaythrough': '_handleBufferingEvents', + 'durationchange': '_onDurationChange', + 'ended': '_onEnded', + 'error': '_onError', + 'loadeddata': '_onLoadedData', + 'loadedmetadata': '_onLoadedMetadata', + 'pause': '_onPause', + 'playing': '_onPlaying', + 'progress': '_onProgress', + 'seeking': '_onSeeking', + 'seeked': '_onSeeked', + 'stalled': '_handleBufferingEvents', + 'timeupdate': '_onTimeUpdate', + 'waiting': '_onWaiting' + }; + } -if(typeof content === 'string') content = [[module.i, content, '']]; + /** + * Determine if the playback has ended. + * @property ended + * @type Boolean + */ -var transform; -var insertInto; + }, { + key: 'ended', + get: function get() { + return this.el.ended; + } + /** + * Determine if the playback is having to buffer in order for + * playback to be smooth. + * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events + * @property buffering + * @type Boolean + */ + }, { + key: 'buffering', + get: function get() { + return this._isBuffering; + } + }]); -var options = {"singleton":true,"hmr":true} + function HTML5Video() { + (0, _classCallCheck3.default)(this, HTML5Video); -options.transform = transform -options.insertInto = undefined; + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } -var update = __webpack_require__(9)(content, options); + var _this = (0, _possibleConstructorReturn3.default)(this, _Playback.call.apply(_Playback, [this].concat(args))); -if(content.locals) module.exports = content.locals; + _this._destroyed = false; + _this._loadStarted = false; + _this._isBuffering = false; + _this._playheadMoving = false; + _this._playheadMovingTimer = null; + _this._stopped = false; + _this._ccTrackId = -1; + _this._setupSrc(_this.options.src); + // backwards compatibility (TODO: remove on 0.3.0) + _this.options.playback || (_this.options.playback = _this.options || {}); + _this.options.playback.disableContextMenu = _this.options.playback.disableContextMenu || _this.options.disableVideoTagContextMenu; -if(false) { - module.hot.accept("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./media-control.scss", function() { - var newContent = require("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./media-control.scss"); + var playbackConfig = _this.options.playback; + var preload = playbackConfig.preload || (_browser2.default.isSafari ? 'auto' : _this.options.preload); - if(typeof newContent === 'string') newContent = [[module.id, newContent, '']]; + var posterUrl = void 0; // FIXME: poster plugin should always convert poster to object with expected properties ? + if (_this.options.poster) { + if (typeof _this.options.poster === 'string') posterUrl = _this.options.poster;else if (typeof _this.options.poster.url === 'string') posterUrl = _this.options.poster.url; + } - var locals = (function(a, b) { - var key, idx = 0; + _clapprZepto2.default.extend(_this.el, { + muted: _this.options.mute, + defaultMuted: _this.options.mute, + loop: _this.options.loop, + poster: posterUrl, + preload: preload || 'metadata', + controls: (playbackConfig.controls || _this.options.useVideoTagDefaultControls) && 'controls', + crossOrigin: playbackConfig.crossOrigin, + 'x-webkit-playsinline': playbackConfig.playInline + }); - for(key in a) { - if(!b || a[key] !== b[key]) return false; - idx++; - } + playbackConfig.playInline && _this.$el.attr({ playsinline: 'playsinline' }); + playbackConfig.crossOrigin && _this.$el.attr({ crossorigin: playbackConfig.crossOrigin }); - for(key in b) idx--; + // TODO should settings be private? + _this.settings = { default: ['seekbar'] }; + _this.settings.left = ['playpause', 'position', 'duration']; + _this.settings.right = ['fullscreen', 'volume', 'hd-indicator']; - return idx === 0; - }(content.locals, newContent.locals)); + playbackConfig.externalTracks && _this._setupExternalTracks(playbackConfig.externalTracks); - if(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.'); + _this.options.autoPlay && _this.attemptAutoPlay(); + return _this; + } - update(newContent); - }); + // See Playback.attemptAutoPlay() - module.hot.dispose(function() { update(); }); -} -/***/ }), -/* 162 */ -/***/ (function(module, exports, __webpack_require__) { + HTML5Video.prototype.attemptAutoPlay = function attemptAutoPlay() { + var _this2 = this; -var escape = __webpack_require__(82); -exports = module.exports = __webpack_require__(7)(false); -// imports + this.canAutoPlay(function (result, error) { + error && _log2.default.warn(_this2.name, 'autoplay error.', { result: result, error: error }); + // https://github.com/clappr/clappr/issues/1076 + result && process.nextTick(function () { + return !_this2._destroyed && _this2.play(); + }); + }); + }; -// module -exports.push([module.i, ".media-control-notransition {\n transition: none !important; }\n\n.media-control[data-media-control] {\n position: absolute;\n width: 100%;\n height: 100%;\n z-index: 9999;\n pointer-events: none; }\n .media-control[data-media-control].dragging {\n pointer-events: auto;\n cursor: -webkit-grabbing !important;\n cursor: grabbing !important;\n cursor: url(" + escape(__webpack_require__(83)) + "), move; }\n .media-control[data-media-control].dragging * {\n cursor: -webkit-grabbing !important;\n cursor: grabbing !important;\n cursor: url(" + escape(__webpack_require__(83)) + "), move; }\n .media-control[data-media-control] .media-control-background[data-background] {\n position: absolute;\n height: 40%;\n width: 100%;\n bottom: 0;\n background: linear-gradient(transparent, rgba(0, 0, 0, 0.9));\n transition: opacity 0.6s ease-out; }\n .media-control[data-media-control] .media-control-icon {\n line-height: 0;\n letter-spacing: 0;\n speak: none;\n color: #fff;\n opacity: 0.5;\n vertical-align: middle;\n text-align: left;\n transition: all 0.1s ease; }\n .media-control[data-media-control] .media-control-icon:hover {\n color: white;\n opacity: 0.75;\n text-shadow: rgba(255, 255, 255, 0.8) 0 0 5px; }\n .media-control[data-media-control].media-control-hide .media-control-background[data-background] {\n opacity: 0; }\n .media-control[data-media-control].media-control-hide .media-control-layer[data-controls] {\n bottom: -50px; }\n .media-control[data-media-control].media-control-hide .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar] {\n opacity: 0; }\n .media-control[data-media-control] .media-control-layer[data-controls] {\n position: absolute;\n bottom: 7px;\n width: 100%;\n height: 32px;\n font-size: 0;\n vertical-align: middle;\n pointer-events: auto;\n transition: bottom 0.4s ease-out; }\n .media-control[data-media-control] .media-control-layer[data-controls] .media-control-left-panel[data-media-control] {\n position: absolute;\n top: 0;\n left: 4px;\n height: 100%; }\n .media-control[data-media-control] .media-control-layer[data-controls] .media-control-center-panel[data-media-control] {\n height: 100%;\n text-align: center;\n line-height: 32px; }\n .media-control[data-media-control] .media-control-layer[data-controls] .media-control-right-panel[data-media-control] {\n position: absolute;\n top: 0;\n right: 4px;\n height: 100%; }\n .media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button {\n background-color: transparent;\n border: 0;\n margin: 0 6px;\n padding: 0;\n cursor: pointer;\n display: inline-block;\n width: 32px;\n height: 100%; }\n .media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button svg {\n width: 100%;\n height: 22px; }\n .media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button svg path {\n fill: white; }\n .media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button:focus {\n outline: none; }\n .media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-play] {\n float: left;\n height: 100%; }\n .media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-pause] {\n float: left;\n height: 100%; }\n .media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-stop] {\n float: left;\n height: 100%; }\n .media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen] {\n float: right;\n background-color: transparent;\n border: 0;\n height: 100%; }\n .media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator] {\n background-color: transparent;\n border: 0;\n cursor: default;\n display: none;\n float: right;\n height: 100%; }\n .media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled {\n display: block;\n opacity: 1.0; }\n .media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled:hover {\n opacity: 1.0;\n text-shadow: none; }\n .media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause] {\n float: left; }\n .media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop] {\n float: left; }\n .media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position], .media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration] {\n display: inline-block;\n font-size: 10px;\n color: white;\n cursor: default;\n line-height: 32px;\n position: relative; }\n .media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position] {\n margin: 0 6px 0 7px; }\n .media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration] {\n color: rgba(255, 255, 255, 0.5);\n margin-right: 6px; }\n .media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]:before {\n content: \"|\";\n margin-right: 7px; }\n .media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] {\n position: absolute;\n top: -20px;\n left: 0;\n display: inline-block;\n vertical-align: middle;\n width: 100%;\n height: 25px;\n cursor: pointer; }\n .media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] {\n width: 100%;\n height: 1px;\n position: relative;\n top: 12px;\n background-color: #666666; }\n .media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-1[data-seekbar] {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 100%;\n background-color: #c2c2c2;\n transition: all 0.1s ease-out; }\n .media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar] {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 100%;\n background-color: #005aff;\n transition: all 0.1s ease-out; }\n .media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-hover[data-seekbar] {\n opacity: 0;\n position: absolute;\n top: -3px;\n width: 5px;\n height: 7px;\n background-color: rgba(255, 255, 255, 0.5);\n transition: opacity 0.1s ease; }\n .media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]:hover .bar-background[data-seekbar] .bar-hover[data-seekbar] {\n opacity: 1; }\n .media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled {\n cursor: default; }\n .media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled:hover .bar-background[data-seekbar] .bar-hover[data-seekbar] {\n opacity: 0; }\n .media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar] {\n position: absolute;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n top: 2px;\n left: 0;\n width: 20px;\n height: 20px;\n opacity: 1;\n transition: all 0.1s ease-out; }\n .media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar] .bar-scrubber-icon[data-seekbar] {\n position: absolute;\n left: 6px;\n top: 6px;\n width: 8px;\n height: 8px;\n border-radius: 10px;\n box-shadow: 0 0 0 6px rgba(255, 255, 255, 0.2);\n background-color: white; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] {\n float: right;\n display: inline-block;\n height: 32px;\n cursor: pointer;\n margin: 0 6px;\n box-sizing: border-box; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] {\n float: left;\n bottom: 0; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] {\n background-color: transparent;\n border: 0;\n box-sizing: content-box;\n width: 32px;\n height: 32px;\n opacity: 0.5; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]:hover {\n opacity: 0.75; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] svg {\n height: 24px;\n position: relative;\n top: 3px; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] svg path {\n fill: white; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted svg {\n margin-left: 2px; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] {\n float: left;\n position: relative;\n overflow: hidden;\n top: 6px;\n width: 42px;\n height: 18px;\n padding: 3px 0;\n transition: width .2s ease-out; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] {\n height: 1px;\n position: relative;\n top: 7px;\n margin: 0 3px;\n background-color: #666666; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-fill-1[data-volume] {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 100%;\n background-color: #c2c2c2;\n transition: all 0.1s ease-out; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-fill-2[data-volume] {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 100%;\n background-color: #005aff;\n transition: all 0.1s ease-out; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-hover[data-volume] {\n opacity: 0;\n position: absolute;\n top: -3px;\n width: 5px;\n height: 7px;\n background-color: rgba(255, 255, 255, 0.5);\n transition: opacity 0.1s ease; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-scrubber[data-volume] {\n position: absolute;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n top: 0px;\n left: 0;\n width: 20px;\n height: 20px;\n opacity: 1;\n transition: all 0.1s ease-out; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-scrubber[data-volume] .bar-scrubber-icon[data-volume] {\n position: absolute;\n left: 6px;\n top: 6px;\n width: 8px;\n height: 8px;\n border-radius: 10px;\n box-shadow: 0 0 0 6px rgba(255, 255, 255, 0.2);\n background-color: white; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume] {\n float: left;\n width: 4px;\n padding-left: 2px;\n height: 12px;\n opacity: 0.5;\n box-shadow: inset 2px 0 0 white;\n transition: -webkit-transform .2s ease-out;\n transition: transform .2s ease-out;\n transition: transform .2s ease-out, -webkit-transform .2s ease-out; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume].fill {\n box-shadow: inset 2px 0 0 #fff;\n opacity: 1; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:nth-of-type(1) {\n padding-left: 0; }\n .media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:hover {\n -webkit-transform: scaleY(1.5);\n transform: scaleY(1.5); }\n .media-control[data-media-control].w320 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume].volume-bar-hide {\n width: 0;\n height: 12px;\n top: 9px;\n padding: 0; }\n", ""]); + // See Playback.canAutoPlay() -// exports + HTML5Video.prototype.canAutoPlay = function canAutoPlay(cb) { + if (this.options.disableCanAutoPlay) cb(true, null); -/***/ }), -/* 163 */ -/***/ (function(module, exports) { + var opts = { + timeout: this.options.autoPlayTimeout || 500, + inline: this.options.playback.playInline || false, + muted: this.options.mute || false // Known issue: mediacontrols may asynchronously mute video -module.exports = "
\n
\n <% var renderBar = function(name) { %>\n
>\n
>\n
>
\n
>
\n
>
\n
\n
>\n
>
\n
\n
\n <% }; %>\n <% var renderSegmentedBar = function(name, segments) {\n segments = segments || 10; %>\n
>\n <% for (var i = 0; i < segments; i++) { %>\n
>
\n <% } %>\n
\n <% }; %>\n <% var renderDrawer = function(name, renderContent) { %>\n
>\n
>\n
>
\n >\n
\n <% renderContent(name); %>\n
\n <% }; %>\n <% var renderIndicator = function(name) { %>\n
>
\n <% }; %>\n <% var renderButton = function(name) { %>\n \n <% }; %>\n <% var templates = {\n bar: renderBar,\n segmentedBar: renderSegmentedBar,\n };\n var render = function(settingsList) {\n settingsList.forEach(function(setting) {\n if(setting === \"seekbar\") {\n renderBar(setting);\n } else if (setting === \"volume\") {\n renderDrawer(setting, settings.volumeBarTemplate ? templates[settings.volumeBarTemplate] : function(name) { return renderSegmentedBar(name); });\n } else if (setting === \"duration\" || setting === \"position\") {\n renderIndicator(setting);\n } else {\n renderButton(setting);\n }\n });\n }; %>\n <% if (settings.default && settings.default.length) { %>\n
\n <% render(settings.default); %>\n
\n <% } %>\n <% if (settings.left && settings.left.length) { %>\n
\n <% render(settings.left); %>\n
\n <% } %>\n <% if (settings.right && settings.right.length) { %>\n
\n <% render(settings.right); %>\n
\n <% } %>\n
\n"; -/***/ }), -/* 164 */ -/***/ (function(module, exports) { + // Use current video element if recycling feature enabled with mobile devices + };if (_browser2.default.isMobile && _utils.DomRecycler.options.recycleVideo) opts.element = this.el; -module.exports = "" + // Desktop browser autoplay policy may require user action + // Mobile browser autoplay require user consent and video recycling feature enabled + // It may returns a false positive with source-less player consent + (0, _utils.canAutoPlayMedia)(cb, opts); + }; -/***/ }), -/* 165 */ -/***/ (function(module, exports) { + HTML5Video.prototype._setupExternalTracks = function _setupExternalTracks(tracks) { + this._externalTracks = tracks.map(function (track) { + return { + kind: track.kind || 'subtitles', // Default is 'subtitles' + label: track.label, + lang: track.lang, + src: track.src + }; + }); + }; -module.exports = "" + /** + * Sets the source url on the