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";
-/***/ }),
-/* 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