Comparar commits

..

31 Commits

Autor SHA1 Mensagem Data
Gary Katsevman 03fd8bb8b9 v5.5.3 dist 2016-01-15 15:34:23 -05:00
Gary Katsevman 81caccd154 v5.5.3 2016-01-15 15:33:46 -05:00
rcrooks d448acd224 @rcrooks fixed a couple of docs link and a jsdoc comment. closes #2987 2016-01-15 15:33:15 -05:00
45aff0062cf1b0e55a6532b0a513db6be3952d17 c901fcee6b @mister-ben updated CDN urls in setup guide. closes #2984 2016-01-15 15:31:08 -05:00
Gary Katsevman 6977b0e3fe @gkasev updated vjs to correctly return already created player when given an element. closes #3006 2016-01-15 15:27:35 -05:00
Gary Katsevman b48797bf17 v5.5.2 2016-01-14 14:03:00 -05:00
Gary Katsevman dcf2a300ef make sure that styleEl_ is in DOM before removing on dispose. closes #3004 2016-01-14 14:01:30 -05:00
Gary Katsevman 088f47af2e v5.5.1 2016-01-08 18:59:50 -05:00
Gary Katsevman 984085a048 @gkatsev fixed sass if else for icons. closes #2988 2016-01-08 18:58:56 -05:00
Gary Katsevman 67840aabbe v5.5.0 2016-01-07 23:39:07 -05:00
Gary Katsevman 93f2f83723 @gkatsev updated css to have ascii codepoints for fonticons. Expose new scss file. closes #2973 2016-01-07 23:36:09 -05:00
jforbes 867fec910f @forbesjo updated player to not autoplay if there is no source. closes #2971 2016-01-07 23:23:38 -05:00
Greg Smith aa4700b098 @incompl updated build command in CONTRIBUTING.md. closes #2967 2016-01-07 23:13:15 -05:00
jforbes b84be556a6 @forbesjo fixed errorDisplay erroring on subsequent openings. closes #2966 2016-01-07 23:10:43 -05:00
rcrooks 0f219b1f1d @rcrooks fixed some broken links in guides. closes #2965 2016-01-07 23:08:12 -05:00
Pete Huitsing 49cc73f980 @huitsing updated docstrings for autoplay and loop methods. closes #2960 2016-01-07 23:05:48 -05:00
Pat O'Neill 8ad286a768 @misteroneill exposed createEl on videojs. closes #2926 2016-01-07 23:03:23 -05:00
Derk-Jan Hartman 5f239d7cf1 @hartman fixed usage of lighten in progress component. Fixes #2793. closes #2875 2016-01-07 23:00:09 -05:00
Gary Katsevman 35203f613f v5.4.6 2015-12-22 17:00:46 -05:00
Gary Katsevman 692608270e @gkatsev fixed vertical slider alignment in volume menu button. closes #2943 2015-12-22 16:58:58 -05:00
Gary Katsevman d99ce79954 v5.4.5 2015-12-15 14:47:29 -05:00
rcrooks 01a7e7509e @rcrooks fixed simple embed example. closes #2915 2015-12-15 14:46:16 -05:00
Derk-Jan Hartman 09f182db60 @hartman updated options guide doc. closes #2908 2015-12-15 14:43:30 -05:00
brandonocasey 7838fe2ec3 @BrandonOCasey updated sandbox to to use newer CDN urls. closes #2917 2015-12-15 14:38:09 -05:00
Gary Katsevman 45d43ec904 @gkatsev updated styles for inline menu and volume bar. closes #2913 2015-12-15 14:26:18 -05:00
Gary Katsevman c61e9e49ab @gkatsev added mouse/touch listeners to volume menu button. closes #2638 2015-12-15 14:17:43 -05:00
Matthew McClure 4cb14eb420 Update plugin documentation to reflect icon usage 2015-12-10 10:38:49 -08:00
Gary Katsevman 1d88ef066d v5.4.4 2015-12-09 18:14:48 -05:00
Gary Katsevman 16f2e4113a @gkatsev switched to use custom vtt.js from npm. closes #2905 2015-12-09 18:12:46 -05:00
Gary Katsevman 4424a06a3d v5.4.3 2015-12-08 20:32:12 -05:00
Gary Katsevman 08f03c160c @gkatsev updated options customizer and github-release options. closes #2903 2015-12-08 20:30:48 -05:00
45 arquivos alterados com 473 adições e 198 exclusões
+37
Ver Arquivo
@@ -6,6 +6,43 @@ _(none)_
--------------------
## 5.5.3 (2016-01-15)
* @gkasev updated vjs to correctly return already created player when given an element ([view](https://github.com/videojs/video.js/pull/3006))
* @mister-ben updated CDN urls in setup guide ([view](https://github.com/videojs/video.js/pull/2984))
* @rcrooks fixed a couple of docs link and a jsdoc comment ([view](https://github.com/videojs/video.js/pull/2987))
## 5.5.2 (2016-01-14)
* make sure that styleEl_ is in DOM before removing on dispose ([view](https://github.com/videojs/video.js/pull/3004))
## 5.5.1 (2016-01-08)
* @gkatsev fixed sass if else for icons ([view](https://github.com/videojs/video.js/pull/2988))
## 5.5.0 (2016-01-07)
* @hartman fixed usage of lighten in progress component. Fixes #2793 ([view](https://github.com/videojs/video.js/pull/2875))
* @misteroneill exposed createEl on videojs ([view](https://github.com/videojs/video.js/pull/2926))
* @huitsing updated docstrings for autoplay and loop methods ([view](https://github.com/videojs/video.js/pull/2960))
* @rcrooks fixed some broken links in guides ([view](https://github.com/videojs/video.js/pull/2965))
* @forbesjo fixed errorDisplay erroring on subsequent openings ([view](https://github.com/videojs/video.js/pull/2966))
* @incompl updated build command in CONTRIBUTING.md ([view](https://github.com/videojs/video.js/pull/2967))
* @forbesjo updated player to not autoplay if there is no source ([view](https://github.com/videojs/video.js/pull/2971))
* @gkatsev updated css to have ascii codepoints for fonticons. Expose new scss file ([view](https://github.com/videojs/video.js/pull/2973))
## 5.4.6 (2015-12-22)
* @gkatsev fixed vertical slider alignment in volume menu button ([view](https://github.com/videojs/video.js/pull/2943))
## 5.4.5 (2015-12-15)
* @gkatsev added mouse/touch listeners to volume menu button ([view](https://github.com/videojs/video.js/pull/2638))
* @gkatsev updated styles for inline menu and volume bar ([view](https://github.com/videojs/video.js/pull/2913))
* @BrandonOCasey updated sandbox to to use newer CDN urls ([view](https://github.com/videojs/video.js/pull/2917))
* @hartman updated options guide doc ([view](https://github.com/videojs/video.js/pull/2908))
* @rcrooks fixed simple embed example ([view](https://github.com/videojs/video.js/pull/2915))
## 5.4.4 (2015-12-09)
* @gkatsev switched to use custom vtt.js from npm ([view](https://github.com/videojs/video.js/pull/2905))
## 5.4.3 (2015-12-08)
* @gkatsev updated options customizer and github-release options ([view](https://github.com/videojs/video.js/pull/2903))
## 5.4.2 (2015-12-08)
* @gkatsev updated grunt-release config ([view](https://github.com/videojs/video.js/pull/2900))
+1 -1
Ver Arquivo
@@ -144,7 +144,7 @@ npm install
Build a local copy of video.js and run tests
```bash
grunt
grunt dist
grunt test
```
+37 -28
Ver Arquivo
@@ -1,3 +1,4 @@
import {gruntCustomizer, gruntOptionsMaker} from './options-customizer.js';
module.exports = function(grunt) {
require('time-grunt')(grunt);
@@ -41,6 +42,19 @@ module.exports = function(grunt) {
]
};
const githubReleaseDefaults = {
options: {
release: {
tag_name: 'v'+ version.full,
name: version.full,
body: require('chg').find(version.full).changesRaw
},
},
files: {
src: [`dist/video-js-${version.full}.zip`] // Files that you want to attach to Release
}
};
/**
* Customizes _.merge behavior in `browserifyGruntOptions` to concatenate
* arrays. This can be overridden on a per-call basis to
@@ -52,11 +66,7 @@ module.exports = function(grunt) {
* @param {Mixed} sourceValue
* @return {Object}
*/
function browserifyGruntCustomizer(objectValue, sourceValue) {
if (Array.isArray(objectValue)) {
return objectValue.concat(sourceValue);
}
}
const browserifyGruntCustomizer = gruntCustomizer;
/**
* Creates a unique object of Browserify Grunt task options.
@@ -70,9 +80,10 @@ module.exports = function(grunt) {
*
* @return {Object}
*/
function browserifyGruntOptions(options = null, customizer = browserifyGruntCustomizer) {
return _.merge({}, browserifyGruntDefaults, options, customizer);
}
const browserifyGruntOptions = gruntOptionsMaker(browserifyGruntDefaults, browserifyGruntCustomizer);
const githubReleaseCustomizer = gruntCustomizer;
const githubReleaseOptions = gruntOptionsMaker(githubReleaseDefaults, githubReleaseCustomizer);
/**
* Creates processor functions for license banners.
@@ -140,7 +151,7 @@ module.exports = function(grunt) {
watch: {
skin: {
files: ['src/css/**/*'],
tasks: 'sass'
tasks: ['sass', 'wrapcodepoints']
},
jshint: {
files: ['src/**/*', 'test/unit/**/*.js', 'Gruntfile.js'],
@@ -185,7 +196,7 @@ module.exports = function(grunt) {
sass: {
build: {
files: {
'build/temp/video-js.css': 'src/css/video-js.scss'
'build/temp/video-js.css': 'src/css/vjs.scss'
}
}
},
@@ -296,28 +307,14 @@ module.exports = function(grunt) {
password: process.env.VJS_GITHUB_TOKEN
}
},
release: {
release: githubReleaseOptions(),
prerelease: githubReleaseOptions({
options: {
release: {
tag_name: 'v'+ version.full,
name: version.full,
body: require('chg').find(version.full).changesRaw
}
}
},
prerelease: {
options: {
release: {
tag_name: 'v'+ version.full,
name: version.full,
body: require('chg').find(version.full).changesRaw,
prerelease: true
}
}
},
files: {
src: [`dist/video-js-${version.full}.zip`] // Files that you want to attach to Release
}
})
},
browserify: {
options: browserifyGruntOptions(),
@@ -330,7 +327,7 @@ module.exports = function(grunt) {
options: browserifyGruntOptions({
transform: [
['browserify-versionify', {
placeholder: '../node_modules/vtt.js/dist/vtt.js',
placeholder: '../node_modules/videojs-vtt.js/dist/vtt.js',
version: 'https://cdn.rawgit.com/gkatsev/vtt.js/vjs-v0.12.1/dist/vtt.min.js'
}],
]
@@ -458,6 +455,7 @@ module.exports = function(grunt) {
'uglify',
'sass',
'wrapcodepoints',
'version:css',
'cssmin',
@@ -482,6 +480,17 @@ module.exports = function(grunt) {
'zip:dist'
]);
// Sass turns unicode codepoints into utf8 characters.
// We don't want that so we unwrapped them in the templates/scss.hbs file.
// After sass has generated our css file, we need to wrap the codepoints
// in quotes for it to work.
grunt.registerTask('wrapcodepoints', function() {
const sassConfig = grunt.config.get('sass.build.files');
const cssPath = Object.keys(sassConfig)[0];
const css = grunt.file.read(cssPath);
grunt.file.write(cssPath, css.replace(/(\\f\w+);/g, "'$1';"));
});
// Default task - build and test
grunt.registerTask('default', ['test']);
+49
Ver Arquivo
@@ -0,0 +1,49 @@
import _ from 'lodash-compat';
/**
* Customizes _.merge behavior in `gruntOptions` to concatenate
* arrays. This can be overridden on a per-call basis to
*
* @see https://lodash.com/docs#merge
* @function GruntCustomizer
* @private
* @param {Mixed} objectValue
* @param {Mixed} sourceValue
* @return {Object}
*/
function gruntCustomizer(objectValue, sourceValue) {
if (Array.isArray(objectValue)) {
return objectValue.concat(sourceValue);
}
}
/**
* Creates a gruntOptions instance for the specific defaultOptions and gruntCustomizer
*
* @function browserifyGruntOptions
* @private
* @param {Object} [options]
* @param {Function} [customizer=gruntCustomizer]
* If the default array-concatenation behavior is not desireable,
* pass _.noop or a unique customizer (https://lodash.com/docs#merge).
*
* @return {Function}
*/
function gruntOptionsMaker(defaultOptions, gruntCustomizer) {
/**
* Creates a unique object of Browserify Grunt task options.
*
* @function gruntOptions
* @private
* @param {Object} [options]
* @param {Function} [customizer=browserifyGruntCustomizer]
* If the default array-concatenation behavior is not desireable,
* pass _.noop or a unique customizer (https://lodash.com/docs#merge).
*
* @return {Object}
*/
return function gruntOptions(options = null, customizer = gruntCustomizer) {
return _.merge({}, defaultOptions, options, customizer);
}
};
export { gruntCustomizer, gruntOptionsMaker };
+1 -1
Ver Arquivo
@@ -1,7 +1,7 @@
{
"name": "video.js",
"description": "An HTML5 and Flash video player with a common API and skin for both.",
"version": "5.4.2",
"version": "5.5.3",
"keywords": [
"videojs",
"html5",
+56 -12
Ver Arquivo
@@ -1,6 +1,6 @@
/**
* @license
* Video.js 5.4.2 <http://videojs.com/>
* Video.js 5.5.3 <http://videojs.com/>
* Copyright Brightcove, Inc. <https://www.brightcove.com/>
* Available under Apache License Version 2.0
* <https://github.com/videojs/video.js/blob/master/LICENSE>
@@ -7398,6 +7398,8 @@ module.exports = exports['default'];
exports.__esModule = true;
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
@@ -7408,6 +7410,10 @@ var _buttonJs = _dereq_('../button.js');
var _buttonJs2 = _interopRequireDefault(_buttonJs);
var _utilsFnJs = _dereq_('../utils/fn.js');
var Fn = _interopRequireWildcard(_utilsFnJs);
var _componentJs = _dereq_('../component.js');
var _componentJs2 = _interopRequireDefault(_componentJs);
@@ -7428,6 +7434,10 @@ var _volumeControlVolumeBarJs = _dereq_('./volume-control/volume-bar.js');
var _volumeControlVolumeBarJs2 = _interopRequireDefault(_volumeControlVolumeBarJs);
var _globalDocument = _dereq_('global/document');
var _globalDocument2 = _interopRequireDefault(_globalDocument);
/**
* Button for volume menu
*
@@ -7528,6 +7538,9 @@ var VolumeMenuButton = (function (_MenuButton) {
menu.addChild(vb);
this.volumeBar = vb;
this.attachVolumeBarEvents();
return menu;
};
@@ -7542,6 +7555,19 @@ var VolumeMenuButton = (function (_MenuButton) {
_MenuButton.prototype.handleClick.call(this);
};
VolumeMenuButton.prototype.attachVolumeBarEvents = function attachVolumeBarEvents() {
this.on(['mousedown', 'touchdown'], this.handleMouseDown);
};
VolumeMenuButton.prototype.handleMouseDown = function handleMouseDown(event) {
this.on(['mousemove', 'touchmove'], Fn.bind(this.volumeBar, this.volumeBar.handleMouseMove));
this.on(_globalDocument2['default'], ['mouseup', 'touchend'], this.handleMouseUp);
};
VolumeMenuButton.prototype.handleMouseUp = function handleMouseUp(event) {
this.off(['mousemove', 'touchmove'], Fn.bind(this.volumeBar, this.volumeBar.handleMouseMove));
};
return VolumeMenuButton;
})(_menuMenuButtonJs2['default']);
@@ -7552,7 +7578,7 @@ _componentJs2['default'].registerComponent('VolumeMenuButton', VolumeMenuButton)
exports['default'] = VolumeMenuButton;
module.exports = exports['default'];
},{"../button.js":63,"../component.js":65,"../menu/menu-button.js":102,"../menu/menu.js":104,"./mute-toggle.js":69,"./volume-control/volume-bar.js":92}],96:[function(_dereq_,module,exports){
},{"../button.js":63,"../component.js":65,"../menu/menu-button.js":102,"../menu/menu.js":104,"../utils/fn.js":130,"./mute-toggle.js":69,"./volume-control/volume-bar.js":92,"global/document":1}],96:[function(_dereq_,module,exports){
/**
* @file error-display.js
*/
@@ -7638,6 +7664,7 @@ var ErrorDisplay = (function (_ModalDialog) {
ErrorDisplay.prototype.options_ = _utilsMergeOptions2['default'](_modalDialog2['default'].prototype.options_, {
fillAlways: true,
temporary: false,
uncloseable: true
});
@@ -9225,7 +9252,7 @@ var Player = (function (_Component) {
// prevent dispose from being called twice
this.off('dispose');
if (this.styleEl_) {
if (this.styleEl_ && this.styleEl_.parentNode) {
this.styleEl_.parentNode.removeChild(this.styleEl_);
}
@@ -9277,6 +9304,7 @@ var Player = (function (_Component) {
// Update tag id/class for use as HTML5 playback tech
// Might think we should do this after embedding in container so .vjs-tech class
// doesn't flash 100% width/height, but class only applies with .video-js parent
tag.playerId = tag.id;
tag.id += '_html5_api';
tag.className = 'vjs-tech';
@@ -9726,7 +9754,7 @@ var Player = (function (_Component) {
// In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.
// In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)
// This fixes both issues. Need to wait for API, so it updates displays correctly
if (this.tag && this.options_.autoplay && this.paused()) {
if (this.src() && this.tag && this.options_.autoplay && this.paused()) {
delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.
this.play();
}
@@ -11053,7 +11081,7 @@ var Player = (function (_Component) {
/**
* Get or set the autoplay attribute.
*
* @param {Boolean} value Boolean to determine if preload should be used
* @param {Boolean} value Boolean to determine if video should autoplay
* @return {String} The autoplay attribute value when getting
* @return {Player} Returns the player when setting
* @method autoplay
@@ -11071,7 +11099,7 @@ var Player = (function (_Component) {
/**
* Get or set the loop attribute on the video element.
*
* @param {Boolean} value Boolean to determine if preload should be used
* @param {Boolean} value Boolean to determine if video should loop
* @return {String} The loop attribute value when getting
* @return {Player} Returns the player when setting
* @method loop
@@ -15450,7 +15478,7 @@ module.exports = exports['default'];
},{"../component":65,"../media-error.js":101,"../tracks/html-track-element":117,"../tracks/html-track-element-list":116,"../tracks/text-track":124,"../tracks/text-track-list":122,"../utils/buffer.js":126,"../utils/fn.js":130,"../utils/log.js":133,"../utils/merge-options.js":134,"../utils/time-ranges.js":136,"global/document":1,"global/window":2}],116:[function(_dereq_,module,exports){
/**
* @file html-track-element.js
* @file html-track-element-list.js
*/
'use strict';
@@ -15541,6 +15569,10 @@ exports['default'] = HtmlTrackElementList;
module.exports = exports['default'];
},{"../utils/browser.js":125,"global/document":1}],117:[function(_dereq_,module,exports){
/**
* @file html-track-element.js
*/
'use strict';
exports.__esModule = true;
@@ -17330,8 +17362,9 @@ function getEl(id) {
/**
* Creates an element and applies properties.
*
* @param {String=} tagName Name of tag to be created.
* @param {Object=} properties Element properties to be applied.
* @param {String} [tagName='div'] Name of tag to be created.
* @param {Object} [properties={}] Element properties to be applied.
* @param {Object} [attributes={}] Element attributes to be applied.
* @return {Element}
* @function createEl
*/
@@ -19007,7 +19040,7 @@ if (typeof HTMLVideoElement === 'undefined') {
* @method videojs
*/
var videojs = function videojs(id, options, ready) {
var tag; // Element of ID
var tag = undefined; // Element of ID
// Allow for element or ID to be passed in
// String ID
@@ -19050,7 +19083,7 @@ var videojs = function videojs(id, options, ready) {
// Element may have a player attr referring to an already created player instance.
// If not, set up a new player and return the instance.
return tag['player'] || new _player2['default'](tag, options, ready);
return tag['player'] || _player2['default'].players[tag.playerId] || new _player2['default'](tag, options, ready);
};
// Add default styles
@@ -19071,7 +19104,7 @@ setup.autoSetupTimeout(1, videojs);
*
* @type {String}
*/
videojs.VERSION = '5.4.2';
videojs.VERSION = '5.5.3';
/**
* The global options object. These are the settings that take effect
@@ -19511,6 +19544,17 @@ videojs.isEl = Dom.isEl;
*/
videojs.isTextNode = Dom.isTextNode;
/**
* Creates an element and applies properties.
*
* @method createEl
* @param {String} [tagName='div'] Name of tag to be created.
* @param {Object} [properties={}] Element properties to be applied.
* @param {Object} [attributes={}] Element attributes to be applied.
* @return {Element}
*/
videojs.createEl = Dom.createEl;
/**
* Check if an element has a CSS class
*
+7 -5
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+17 -24
Ver Arquivo
@@ -1,37 +1,30 @@
<!DOCTYPE html>
<html>
<head>
<title>Video.js | HTML5 Video Player</title>
<!-- Chang URLs to wherever Video.js files will be hosted -->
<!-- Default URLs assume the examples folder is included alongside video.js -->
<link href="../../video-js.min.css" rel="stylesheet" type="text/css">
<head>
<title>Video.js | HTML5 Video Player</title>
<link href="http://vjs.zencdn.net/5.0.2/video-js.css" rel="stylesheet">
<script src="http://vjs.zencdn.net/ie8/1.1.0/videojs-ie8.min.js"></script>
<script src="http://vjs.zencdn.net/5.0.2/video.js"></script>
<!-- Include ES5 shim, sham and html5 shiv for ie8 support -->
<!-- Exclude this if you don't need ie8 support -->
<script src="../../ie8/videojs-ie8.min.js"></script>
<!-- video.js must be in the <head> for older IEs to work. -->
<script src="../../video.min.js"></script>
<!-- Unless using the CDN hosted version, update the URL to the Flash SWF -->
<script>
videojs.options.flash.swf = "../../video-js.swf";
</script>
</head>
</head>
<body>
<video id="example_video_1" class="video-js vjs-default-skin" controls preload="none" width="640" height="264"
poster="http://video-js.zencoder.com/oceans-clip.png"
data-setup="{}">
<source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4' />
<source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm' />
<source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg' />
<track kind="captions" src="../shared/example-captions.vtt" srclang="en" label="English"></track><!-- Tracks need an ending tag thanks to IE9 -->
<track kind="subtitles" src="../shared/example-captions.vtt" srclang="en" label="English"></track><!-- Tracks need an ending tag thanks to IE9 -->
<video id="example_video_1" class="video-js vjs-default-skin" controls preload="none" width="640" height="264" poster="http://vjs.zencdn.net/v/oceans.png" data-setup="{}">
<source src="http://vjs.zencdn.net/v/oceans.mp4" type="video/mp4">
<source src="http://vjs.zencdn.net/v/oceans.webm" type="video/webm">
<source src="http://vjs.zencdn.net/v/oceans.ogv" type="video/ogg">
<track kind="captions" src="../shared/example-captions.vtt" srclang="en" label="English"></track>
<!-- Tracks need an ending tag thanks to IE9 -->
<track kind="subtitles" src="../shared/example-captions.vtt" srclang="en" label="English"></track>
<!-- Tracks need an ending tag thanks to IE9 -->
<p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p>
</video>
</body>
</html>
BIN
Ver Arquivo
Arquivo binário não exibido.
BIN
Ver Arquivo
Arquivo binário não exibido.
BIN
Ver Arquivo
Arquivo binário não exibido.
Arquivo binário não exibido.
+36 -35
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+1 -1
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+56 -12
Ver Arquivo
@@ -1,6 +1,6 @@
/**
* @license
* Video.js 5.4.2 <http://videojs.com/>
* Video.js 5.5.3 <http://videojs.com/>
* Copyright Brightcove, Inc. <https://www.brightcove.com/>
* Available under Apache License Version 2.0
* <https://github.com/videojs/video.js/blob/master/LICENSE>
@@ -7402,6 +7402,8 @@ module.exports = exports['default'];
exports.__esModule = true;
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
@@ -7412,6 +7414,10 @@ var _buttonJs = _dereq_('../button.js');
var _buttonJs2 = _interopRequireDefault(_buttonJs);
var _utilsFnJs = _dereq_('../utils/fn.js');
var Fn = _interopRequireWildcard(_utilsFnJs);
var _componentJs = _dereq_('../component.js');
var _componentJs2 = _interopRequireDefault(_componentJs);
@@ -7432,6 +7438,10 @@ var _volumeControlVolumeBarJs = _dereq_('./volume-control/volume-bar.js');
var _volumeControlVolumeBarJs2 = _interopRequireDefault(_volumeControlVolumeBarJs);
var _globalDocument = _dereq_('global/document');
var _globalDocument2 = _interopRequireDefault(_globalDocument);
/**
* Button for volume menu
*
@@ -7532,6 +7542,9 @@ var VolumeMenuButton = (function (_MenuButton) {
menu.addChild(vb);
this.volumeBar = vb;
this.attachVolumeBarEvents();
return menu;
};
@@ -7546,6 +7559,19 @@ var VolumeMenuButton = (function (_MenuButton) {
_MenuButton.prototype.handleClick.call(this);
};
VolumeMenuButton.prototype.attachVolumeBarEvents = function attachVolumeBarEvents() {
this.on(['mousedown', 'touchdown'], this.handleMouseDown);
};
VolumeMenuButton.prototype.handleMouseDown = function handleMouseDown(event) {
this.on(['mousemove', 'touchmove'], Fn.bind(this.volumeBar, this.volumeBar.handleMouseMove));
this.on(_globalDocument2['default'], ['mouseup', 'touchend'], this.handleMouseUp);
};
VolumeMenuButton.prototype.handleMouseUp = function handleMouseUp(event) {
this.off(['mousemove', 'touchmove'], Fn.bind(this.volumeBar, this.volumeBar.handleMouseMove));
};
return VolumeMenuButton;
})(_menuMenuButtonJs2['default']);
@@ -7556,7 +7582,7 @@ _componentJs2['default'].registerComponent('VolumeMenuButton', VolumeMenuButton)
exports['default'] = VolumeMenuButton;
module.exports = exports['default'];
},{"../button.js":63,"../component.js":65,"../menu/menu-button.js":102,"../menu/menu.js":104,"./mute-toggle.js":69,"./volume-control/volume-bar.js":92}],96:[function(_dereq_,module,exports){
},{"../button.js":63,"../component.js":65,"../menu/menu-button.js":102,"../menu/menu.js":104,"../utils/fn.js":130,"./mute-toggle.js":69,"./volume-control/volume-bar.js":92,"global/document":1}],96:[function(_dereq_,module,exports){
/**
* @file error-display.js
*/
@@ -7642,6 +7668,7 @@ var ErrorDisplay = (function (_ModalDialog) {
ErrorDisplay.prototype.options_ = _utilsMergeOptions2['default'](_modalDialog2['default'].prototype.options_, {
fillAlways: true,
temporary: false,
uncloseable: true
});
@@ -9229,7 +9256,7 @@ var Player = (function (_Component) {
// prevent dispose from being called twice
this.off('dispose');
if (this.styleEl_) {
if (this.styleEl_ && this.styleEl_.parentNode) {
this.styleEl_.parentNode.removeChild(this.styleEl_);
}
@@ -9281,6 +9308,7 @@ var Player = (function (_Component) {
// Update tag id/class for use as HTML5 playback tech
// Might think we should do this after embedding in container so .vjs-tech class
// doesn't flash 100% width/height, but class only applies with .video-js parent
tag.playerId = tag.id;
tag.id += '_html5_api';
tag.className = 'vjs-tech';
@@ -9730,7 +9758,7 @@ var Player = (function (_Component) {
// In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.
// In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)
// This fixes both issues. Need to wait for API, so it updates displays correctly
if (this.tag && this.options_.autoplay && this.paused()) {
if (this.src() && this.tag && this.options_.autoplay && this.paused()) {
delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.
this.play();
}
@@ -11057,7 +11085,7 @@ var Player = (function (_Component) {
/**
* Get or set the autoplay attribute.
*
* @param {Boolean} value Boolean to determine if preload should be used
* @param {Boolean} value Boolean to determine if video should autoplay
* @return {String} The autoplay attribute value when getting
* @return {Player} Returns the player when setting
* @method autoplay
@@ -11075,7 +11103,7 @@ var Player = (function (_Component) {
/**
* Get or set the loop attribute on the video element.
*
* @param {Boolean} value Boolean to determine if preload should be used
* @param {Boolean} value Boolean to determine if video should loop
* @return {String} The loop attribute value when getting
* @return {Player} Returns the player when setting
* @method loop
@@ -15454,7 +15482,7 @@ module.exports = exports['default'];
},{"../component":65,"../media-error.js":101,"../tracks/html-track-element":117,"../tracks/html-track-element-list":116,"../tracks/text-track":124,"../tracks/text-track-list":122,"../utils/buffer.js":126,"../utils/fn.js":130,"../utils/log.js":133,"../utils/merge-options.js":134,"../utils/time-ranges.js":136,"global/document":1,"global/window":2}],116:[function(_dereq_,module,exports){
/**
* @file html-track-element.js
* @file html-track-element-list.js
*/
'use strict';
@@ -15545,6 +15573,10 @@ exports['default'] = HtmlTrackElementList;
module.exports = exports['default'];
},{"../utils/browser.js":125,"global/document":1}],117:[function(_dereq_,module,exports){
/**
* @file html-track-element.js
*/
'use strict';
exports.__esModule = true;
@@ -17334,8 +17366,9 @@ function getEl(id) {
/**
* Creates an element and applies properties.
*
* @param {String=} tagName Name of tag to be created.
* @param {Object=} properties Element properties to be applied.
* @param {String} [tagName='div'] Name of tag to be created.
* @param {Object} [properties={}] Element properties to be applied.
* @param {Object} [attributes={}] Element attributes to be applied.
* @return {Element}
* @function createEl
*/
@@ -19011,7 +19044,7 @@ if (typeof HTMLVideoElement === 'undefined') {
* @method videojs
*/
var videojs = function videojs(id, options, ready) {
var tag; // Element of ID
var tag = undefined; // Element of ID
// Allow for element or ID to be passed in
// String ID
@@ -19054,7 +19087,7 @@ var videojs = function videojs(id, options, ready) {
// Element may have a player attr referring to an already created player instance.
// If not, set up a new player and return the instance.
return tag['player'] || new _player2['default'](tag, options, ready);
return tag['player'] || _player2['default'].players[tag.playerId] || new _player2['default'](tag, options, ready);
};
// Add default styles
@@ -19075,7 +19108,7 @@ setup.autoSetupTimeout(1, videojs);
*
* @type {String}
*/
videojs.VERSION = '5.4.2';
videojs.VERSION = '5.5.3';
/**
* The global options object. These are the settings that take effect
@@ -19515,6 +19548,17 @@ videojs.isEl = Dom.isEl;
*/
videojs.isTextNode = Dom.isTextNode;
/**
* Creates an element and applies properties.
*
* @method createEl
* @param {String} [tagName='div'] Name of tag to be created.
* @param {Object} [properties={}] Element properties to be applied.
* @param {Object} [attributes={}] Element attributes to be applied.
* @return {Element}
*/
videojs.createEl = Dom.createEl;
/**
* Check if an element has a CSS class
*
+9 -9
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+8 -7
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+1 -1
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+17 -24
Ver Arquivo
@@ -1,37 +1,30 @@
<!DOCTYPE html>
<html>
<head>
<title>Video.js | HTML5 Video Player</title>
<!-- Chang URLs to wherever Video.js files will be hosted -->
<!-- Default URLs assume the examples folder is included alongside video.js -->
<link href="../../video-js.min.css" rel="stylesheet" type="text/css">
<head>
<title>Video.js | HTML5 Video Player</title>
<link href="http://vjs.zencdn.net/5.0.2/video-js.css" rel="stylesheet">
<script src="http://vjs.zencdn.net/ie8/1.1.0/videojs-ie8.min.js"></script>
<script src="http://vjs.zencdn.net/5.0.2/video.js"></script>
<!-- Include ES5 shim, sham and html5 shiv for ie8 support -->
<!-- Exclude this if you don't need ie8 support -->
<script src="../../ie8/videojs-ie8.min.js"></script>
<!-- video.js must be in the <head> for older IEs to work. -->
<script src="../../video.min.js"></script>
<!-- Unless using the CDN hosted version, update the URL to the Flash SWF -->
<script>
videojs.options.flash.swf = "../../video-js.swf";
</script>
</head>
</head>
<body>
<video id="example_video_1" class="video-js vjs-default-skin" controls preload="none" width="640" height="264"
poster="http://video-js.zencoder.com/oceans-clip.png"
data-setup="{}">
<source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4' />
<source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm' />
<source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg' />
<track kind="captions" src="../shared/example-captions.vtt" srclang="en" label="English"></track><!-- Tracks need an ending tag thanks to IE9 -->
<track kind="subtitles" src="../shared/example-captions.vtt" srclang="en" label="English"></track><!-- Tracks need an ending tag thanks to IE9 -->
<video id="example_video_1" class="video-js vjs-default-skin" controls preload="none" width="640" height="264" poster="http://vjs.zencdn.net/v/oceans.png" data-setup="{}">
<source src="http://vjs.zencdn.net/v/oceans.mp4" type="video/mp4">
<source src="http://vjs.zencdn.net/v/oceans.webm" type="video/webm">
<source src="http://vjs.zencdn.net/v/oceans.ogv" type="video/ogg">
<track kind="captions" src="../shared/example-captions.vtt" srclang="en" label="English"></track>
<!-- Tracks need an ending tag thanks to IE9 -->
<track kind="subtitles" src="../shared/example-captions.vtt" srclang="en" label="English"></track>
<!-- Tracks need an ending tag thanks to IE9 -->
<p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p>
</video>
</body>
</html>
+1 -1
Ver Arquivo
@@ -153,7 +153,7 @@ Language Codes
--------------
The following is a list of official language codes.
**NOTE:** For supported language translations, please see the [Languages Folder (/lang)](../../lang) folder located in the project root.
**NOTE:** For supported language translations, please see the [Languages Folder (/lang)](https://github.com/videojs/video.js/tree/master/lang) folder located in the project root.
<table border="0" cellspacing="5" cellpadding="5">
<tr>
+2 -2
Ver Arquivo
@@ -134,5 +134,5 @@ notation.
<video ... data-setup='{ "controlBar": { "muteToggle": false } }'></video>
```
The [components guide](components.md) has an excellent breakdown of the structure of a player, you
just need to remember to nest child components in a `children` object for each level.
The [components guide](./components.md) has an excellent breakdown of the structure of a player, you
just need to remember to nest child components in a `children` array for each level.
+5 -1
Ver Arquivo
@@ -17,7 +17,7 @@ You may have already done this step. Code up something interesting and then wrap
});
};
When it's activated, `this` will be the Video.js player your plugin is attached to. You can use anything you'd like in the [Video.js API](api.md) when you're writing a plugin: change the `src`, mess up the DOM, or listen for and emit your own events.
When it's activated, `this` will be the Video.js player your plugin is attached to. You can use anything you'd like in the [Video.js API](./api.md) when you're writing a plugin: change the `src`, mess up the DOM, or listen for and emit your own events.
Step 2: Registering A Plugin
-------------------------------
@@ -45,3 +45,7 @@ If you've already initialized your video tag, you can activate a plugin at any t
video.examplePlugin({ exampleOption: true });
That's it. Head on over to the [Video.js wiki](https://github.com/videojs/video.js/wiki/Plugins) and add your plugin to the list so everyone else can check it out.
## How should I use the Video.js icons in my plugin?
If you'd like to use any of the icons available in the [Video.js icon set](http://videojs.github.io/font/), please target them via the CSS class names instead of codepoints. The codepoints *may* change between versions of the font, so using the class names ensures that your plugin will stay up to date with any font changes.
+2 -2
Ver Arquivo
@@ -6,11 +6,11 @@ Sometimes, you want to remove players after page load (in single page apps or mo
Call `.dispose()`
-----------------
To remove the html associated with your videojs player from the page always call the player's [`dispose()`](https://github.com/videojs/video.js/blob/stable/docs/api/vjs.Player.md#dispose) method:
To remove the html associated with your videojs player from the page always call the player's [`dispose()`](http://docs.videojs.com/docs/api/player.html#Methodsdispose) method:
```javascript```
var oldPlayer = document.getElementById('my-player');
videojs(oldPlayer).dispose();
videojs(oldPlayer).dispose();
```
This method will:
+3 -3
Ver Arquivo
@@ -14,8 +14,8 @@ You can download the Video.js source and host it on your own servers, or use the
### CDN Version ###
```html
<link href="//vjs.zencdn.net/4.12/video-js.min.css" rel="stylesheet">
<script src="//vjs.zencdn.net/4.12/video.min.js"></script>
<link href="//vjs.zencdn.net/5.4.6/video-js.min.css" rel="stylesheet">
<script src="//vjs.zencdn.net/5.4.6/video.min.js"></script>
```
We include a stripped down Google Analytics pixel that tracks a random percentage (currently 1%) of players loaded from the CDN. This allows us to see (roughly) what browsers are in use in the wild, along with other useful metrics such as OS and device. If you'd like to disable analytics, you can simply include the following global **before** including Video.js:
@@ -56,7 +56,7 @@ With Video.js you just use an HTML5 video tag to embed a video. Video.js will th
> Note: The `data-setup` attribute described here should not be used if you use the alternative setup described in the next section.
1. The 'data-setup' Attribute tells Video.js to automatically set up the video when the page is ready, and read any options (in JSON format) from the attribute (see [options](options.md)). There are other methods for initializing the player, but this is the easiest.
1. The 'data-setup' Attribute tells Video.js to automatically set up the video when the page is ready, and read any options (in JSON format) from the attribute (see [options](./options.md)). There are other methods for initializing the player, but this is the easiest.
2. The 'id' Attribute: Should be used and unique for every video on the same page.
+1 -1
Ver Arquivo
@@ -9,7 +9,7 @@ enabled, you'll need to manually include them.
## Icons
You can view all of the icons available in the base theme by renaming and viewing [`icons.html.example`](../../sandbox/icons.html.example) in the sandbox directory.
You can view all of the icons available in the base theme by renaming and viewing [`icons.html.example`](https://github.com/videojs/video.js/blob/master/sandbox/icons.html.example) in the sandbox directory.
## Customization
+3 -3
Ver Arquivo
@@ -1,7 +1,7 @@
{
"name": "video.js",
"description": "An HTML5 and Flash video player with a common API and skin for both.",
"version": "5.4.2",
"version": "5.5.3",
"copyright": "Copyright Brightcove, Inc. <https://www.brightcove.com/>",
"license": "Apache-2.0",
"keywords": [
@@ -28,10 +28,10 @@
"object.assign": "^4.0.1",
"safe-json-parse": "^4.0.0",
"tsml": "1.0.1",
"videojs-font": "1.4.0",
"videojs-font": "1.5.1",
"videojs-ie8": "1.1.1",
"videojs-swf": "5.0.1",
"vtt.js": "git+https://github.com/gkatsev/vtt.js.git#vjs-v0.12.1",
"videojs-vtt.js": "^0.12.1",
"xhr": "~2.2.0"
},
"devDependencies": {
+4 -4
Ver Arquivo
@@ -27,11 +27,11 @@
</div>
<video id="vid1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="264"
poster="http://video-js.zencoder.com/oceans-clip.png"
poster="http://vjs.zencdn.net/v/oceans.png"
data-setup='{}'>
<source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4'>
<source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm'>
<source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg'>
<source src="http://vjs.zencdn.net/v/oceans.mp4" type='video/mp4'>
<source src="http://vjs.zencdn.net/v/oceans.webm" type='video/webm'>
<source src="http://vjs.zencdn.net/v/oceans.ogv" type='video/ogg'>
<track kind="captions" src="../docs/examples/shared/example-captions.vtt" srclang="en" label="English"></track><!-- Tracks need an ending tag thanks to IE9 -->
<p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p>
</video>
+4 -4
Ver Arquivo
@@ -20,10 +20,10 @@
<body>
<p style="background-color:#eee; border: 1px solid #777; padding: 10px; font-size: .8em; line-height: 1.5em; font-family: Verdana, sans-serif;">This page shows you how to create, register and initialize a Video.js plugin.</p>
<video id="vid1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="264" poster="http://video-js.zencoder.com/oceans-clip.png">
<source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4'>
<source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm'>
<source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg'>
<video id="vid1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="264" poster="http://vjs.zencdn.net/v/oceans.png">
<source src="http://vjs.zencdn.net/v/oceans.mp4" type='video/mp4'>
<source src="http://vjs.zencdn.net/v/oceans.webm" type='video/webm'>
<source src="http://vjs.zencdn.net/v/oceans.ogv" type='video/ogg'>
<p>Video Playback Not Supported</p>
</video>
+1
Ver Arquivo
@@ -1 +1,2 @@
$icon-font-path: 'font' !default;
$icon-codepoints: false !default;
+2 -2
Ver Arquivo
@@ -102,7 +102,7 @@
.video-js .vjs-load-progress {
// For IE8 we'll lighten the color
background: ligthen($secondary-background-color, 25%);
background: lighten($secondary-background-color, 25%);
// Otherwise we'll rely on stacked opacities
background: rgba($secondary-background-color, $secondary-background-transparency);
}
@@ -111,7 +111,7 @@
// specific time ranges that have been buffered
.video-js .vjs-load-progress div {
// For IE8 we'll lighten the color
background: ligthen($secondary-background-color, 50%);
background: lighten($secondary-background-color, 50%);
// Otherwise we'll rely on stacked opacities
background: rgba($secondary-background-color, 0.75);
}
+2 -1
Ver Arquivo
@@ -25,7 +25,7 @@
}
.video-js .vjs-volume-bar {
margin: 1.35em;
margin: 1.35em 0.45em;
}
.vjs-volume-bar.vjs-slider-horizontal {
@@ -36,6 +36,7 @@
.vjs-volume-bar.vjs-slider-vertical {
width: 0.3em;
height: 5em;
margin: 1.35em auto;
}
.video-js .vjs-volume-level {
+1 -1
Ver Arquivo
@@ -30,7 +30,7 @@
width: auto;
position: absolute;
left: 2.2222222em;
left: 4em;
top: 0;
padding: 0;
+5 -1
Ver Arquivo
@@ -2,7 +2,11 @@
@import "private-variables";
@import "utilities";
@import "../../node_modules/videojs-font/scss/icons";
@if $icon-codepoints {
@import "../../node_modules/videojs-font/scss/icons-codepoints";
} @else {
@import "../../node_modules/videojs-font/scss/icons";
}
@import "components/layout";
@import "components/big-play";
+3
Ver Arquivo
@@ -0,0 +1,3 @@
$icon-codepoints: true;
@import "video-js";
+17
Ver Arquivo
@@ -2,11 +2,13 @@
* @file volume-menu-button.js
*/
import Button from '../button.js';
import * as Fn from '../utils/fn.js';
import Component from '../component.js';
import Menu from '../menu/menu.js';
import MenuButton from '../menu/menu-button.js';
import MuteToggle from './mute-toggle.js';
import VolumeBar from './volume-control/volume-bar.js';
import document from 'global/document';
/**
* Button for volume menu
@@ -100,6 +102,9 @@ class VolumeMenuButton extends MenuButton {
menu.addChild(vb);
this.volumeBar = vb;
this.attachVolumeBarEvents();
return menu;
}
@@ -113,6 +118,18 @@ class VolumeMenuButton extends MenuButton {
super.handleClick();
}
attachVolumeBarEvents() {
this.on(['mousedown', 'touchdown'], this.handleMouseDown);
}
handleMouseDown(event) {
this.on(['mousemove', 'touchmove'], Fn.bind(this.volumeBar, this.volumeBar.handleMouseMove));
this.on(document, ['mouseup', 'touchend'], this.handleMouseUp);
}
handleMouseUp(event) {
this.off(['mousemove', 'touchmove'], Fn.bind(this.volumeBar, this.volumeBar.handleMouseMove));
}
}
VolumeMenuButton.prototype.volumeUpdate = MuteToggle.prototype.update;
+1
Ver Arquivo
@@ -52,6 +52,7 @@ class ErrorDisplay extends ModalDialog {
ErrorDisplay.prototype.options_ = mergeOptions(ModalDialog.prototype.options_, {
fillAlways: true,
temporary: false,
uncloseable: true
});
+5 -4
Ver Arquivo
@@ -224,7 +224,7 @@ class Player extends Component {
// prevent dispose from being called twice
this.off('dispose');
if (this.styleEl_) {
if (this.styleEl_ && this.styleEl_.parentNode) {
this.styleEl_.parentNode.removeChild(this.styleEl_);
}
@@ -269,6 +269,7 @@ class Player extends Component {
// Update tag id/class for use as HTML5 playback tech
// Might think we should do this after embedding in container so .vjs-tech class
// doesn't flash 100% width/height, but class only applies with .video-js parent
tag.playerId = tag.id;
tag.id += '_html5_api';
tag.className = 'vjs-tech';
@@ -720,7 +721,7 @@ class Player extends Component {
// In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.
// In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)
// This fixes both issues. Need to wait for API, so it updates displays correctly
if (this.tag && this.options_.autoplay && this.paused()) {
if (this.src() && this.tag && this.options_.autoplay && this.paused()) {
delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.
this.play();
}
@@ -1979,7 +1980,7 @@ class Player extends Component {
/**
* Get or set the autoplay attribute.
*
* @param {Boolean} value Boolean to determine if preload should be used
* @param {Boolean} value Boolean to determine if video should autoplay
* @return {String} The autoplay attribute value when getting
* @return {Player} Returns the player when setting
* @method autoplay
@@ -1996,7 +1997,7 @@ class Player extends Component {
/**
* Get or set the loop attribute on the video element.
*
* @param {Boolean} value Boolean to determine if preload should be used
* @param {Boolean} value Boolean to determine if video should loop
* @return {String} The loop attribute value when getting
* @return {Player} Returns the player when setting
* @method loop
+1 -1
Ver Arquivo
@@ -326,7 +326,7 @@ class Tech extends Component {
if (!window['WebVTT'] && this.el().parentNode != null) {
let script = document.createElement('script');
script.src = this.options_['vtt.js'] || '../node_modules/vtt.js/dist/vtt.js';
script.src = this.options_['vtt.js'] || '../node_modules/videojs-vtt.js/dist/vtt.js';
this.el().parentNode.appendChild(script);
window['WebVTT'] = true;
}
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
/**
* @file html-track-element.js
* @file html-track-element-list.js
*/
import * as browser from '../utils/browser.js';
+4
Ver Arquivo
@@ -1,3 +1,7 @@
/**
* @file html-track-element.js
*/
import * as browser from '../utils/browser.js';
import document from 'global/document';
import EventTarget from '../event-target';
+3 -2
Ver Arquivo
@@ -79,8 +79,9 @@ export function getEl(id){
/**
* Creates an element and applies properties.
*
* @param {String=} tagName Name of tag to be created.
* @param {Object=} properties Element properties to be applied.
* @param {String} [tagName='div'] Name of tag to be created.
* @param {Object} [properties={}] Element properties to be applied.
* @param {Object} [attributes={}] Element attributes to be applied.
* @return {Element}
* @function createEl
*/
+14 -3
Ver Arquivo
@@ -52,8 +52,8 @@ if (typeof HTMLVideoElement === 'undefined') {
* @mixes videojs
* @method videojs
*/
var videojs = function(id, options, ready){
var tag; // Element of ID
let videojs = function(id, options, ready){
let tag; // Element of ID
// Allow for element or ID to be passed in
// String ID
@@ -95,7 +95,7 @@ var videojs = function(id, options, ready){
// Element may have a player attr referring to an already created player instance.
// If not, set up a new player and return the instance.
return tag['player'] || new Player(tag, options, ready);
return tag['player'] || Player.players[tag.playerId] || new Player(tag, options, ready);
};
// Add default styles
@@ -563,6 +563,17 @@ videojs.isEl = Dom.isEl;
*/
videojs.isTextNode = Dom.isTextNode;
/**
* Creates an element and applies properties.
*
* @method createEl
* @param {String} [tagName='div'] Name of tag to be created.
* @param {Object} [properties={}] Element properties to be applied.
* @param {Object} [attributes={}] Element attributes to be applied.
* @return {Element}
*/
videojs.createEl = Dom.createEl;
/**
* Check if an element has a CSS class
*
+9
Ver Arquivo
@@ -30,6 +30,15 @@ test('should create player instance that inherits from component and dispose it'
ok(player.el() === null, 'element disposed');
});
test('dispose should not throw if styleEl is missing', function(){
var player = TestHelpers.makePlayer();
player.styleEl_.parentNode.removeChild(player.styleEl_);
player.dispose();
ok(player.el() === null, 'element disposed');
});
// technically, all uses of videojs.options should be replaced with
// Player.prototype.options_ in this file and a equivalent test using
// videojs.options should be made in video.test.js. Keeping this here
+45
Ver Arquivo
@@ -30,6 +30,50 @@ test('should return a video player instance', function(){
var playerAgain = videojs('test_vid_id');
ok(player === playerAgain, 'did not create a second player from same tag');
equal(player, playerAgain, 'we did not make a new player');
var tag2 = document.getElementById('test_vid_id2');
var player2 = videojs(tag2, { techOrder: ['techFaker'] });
ok(player2.id() === 'test_vid_id2', 'created player from element');
});
test('should return a video player instance from el html5 tech', function() {
var fixture = document.getElementById('qunit-fixture');
fixture.innerHTML += '<video id="test_vid_id"></video><video id="test_vid_id2"></video>';
var vid = document.querySelector('#test_vid_id');
var player = videojs(vid);
ok(player, 'created player from tag');
ok(player.id() === 'test_vid_id');
ok(videojs.getPlayers()['test_vid_id'] === player, 'added player to global reference');
var playerAgain = videojs(vid);
ok(player === playerAgain, 'did not create a second player from same tag');
equal(player, playerAgain, 'we did not make a new player');
var tag2 = document.getElementById('test_vid_id2');
var player2 = videojs(tag2, { techOrder: ['techFaker'] });
ok(player2.id() === 'test_vid_id2', 'created player from element');
});
test('should return a video player instance from el techfaker', function() {
var fixture = document.getElementById('qunit-fixture');
fixture.innerHTML += '<video id="test_vid_id"></video><video id="test_vid_id2"></video>';
var vid = document.querySelector('#test_vid_id');
var player = videojs(vid, {techOrder: ['techFaker']});
ok(player, 'created player from tag');
ok(player.id() === 'test_vid_id');
ok(videojs.getPlayers()['test_vid_id'] === player, 'added player to global reference');
var playerAgain = videojs(vid);
ok(player === playerAgain, 'did not create a second player from same tag');
equal(player, playerAgain, 'we did not make a new player');
var tag2 = document.getElementById('test_vid_id2');
var player2 = videojs(tag2, { techOrder: ['techFaker'] });
ok(player2.id() === 'test_vid_id2', 'created player from element');
@@ -86,6 +130,7 @@ test('should expose DOM functions', function() {
let methods = {
isEl: 'isEl',
isTextNode: 'isTextNode',
createEl: 'createEl',
hasClass: 'hasElClass',
addClass: 'addElClass',
removeClass: 'removeElClass',