Comparar commits
46 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| e6ba488380 | |||
| 5a5b42f2a7 | |||
| f82a3d148f | |||
| 21051534f3 | |||
| f4bc3c12b5 | |||
| c1112b74fe | |||
| f77bcc95d0 | |||
| cb3d709237 | |||
| d9a0a4503c | |||
| 3ef88f8b80 | |||
| 80c6c16a2f | |||
| e12ca69306 | |||
| d8ba649549 | |||
| 0490728321 | |||
| dd1f2b5c25 | |||
| 47a307b773 | |||
| 050f23d913 | |||
| b027603a6a | |||
| a2f5430a5d | |||
| acd775f551 | |||
| 084bcf692c | |||
| fc7a166705 | |||
| 341c9c7700 | |||
| 5245335147 | |||
| 171ec1a274 | |||
| 29f66acb98 | |||
| d9cad36ade | |||
| 99b34e9691 | |||
| 2f0b9ee8ca | |||
| c8646aa02b | |||
| 58f76136e5 | |||
| 47f639fb41 | |||
| bb606cdcbd | |||
| 876e48547c | |||
| df02e7a709 | |||
| 9cdfb75187 | |||
| 8a17313a3b | |||
| 6317395e0c | |||
| b9f251650b | |||
| 0ffb27abb0 | |||
| e05931dd19 | |||
| 16f0179c07 | |||
| 81caccd154 | |||
| d448acd224 | |||
| c901fcee6b | |||
| 6977b0e3fe |
@@ -28,3 +28,5 @@ test/coverage/*
|
||||
.sass-cache
|
||||
|
||||
dist/*
|
||||
|
||||
.idea/
|
||||
|
||||
@@ -23,3 +23,5 @@ sudo: false
|
||||
cache:
|
||||
directories:
|
||||
- node_modules
|
||||
addons:
|
||||
firefox: latest
|
||||
|
||||
@@ -6,6 +6,57 @@ _(none)_
|
||||
|
||||
--------------------
|
||||
|
||||
## 5.8.1 (2016-03-07)
|
||||
* @gkatsev updated videojs badges in the README ([view](https://github.com/videojs/video.js/pull/3134))
|
||||
* @BrandonOCasey converted remaining text-track modules to ES6 ([view](https://github.com/videojs/video.js/pull/3130))
|
||||
* @gkatsev cleared waiting/spinner on timeupdate. Fixes #3124 ([view](https://github.com/videojs/video.js/pull/3138))
|
||||
* @BrandonOCasey updated text track unit tests to use full es6 syntax ([view](https://github.com/videojs/video.js/pull/3148))
|
||||
* @defli added missing var to sandbox index.html example ([view](https://github.com/videojs/video.js/pull/3155))
|
||||
* @defli fixed typo and updated Turkish translations ([view](https://github.com/videojs/video.js/pull/3156))
|
||||
* @OwenEdwards fixed menu closing on ios, specifically ipad ([view](https://github.com/videojs/video.js/pull/3158))
|
||||
|
||||
## 5.8.0 (2016-02-19)
|
||||
* @gkatsev added issue and PR templates for github ([view](https://github.com/videojs/video.js/pull/3117))
|
||||
* @Nipoto added fa.json (farsi/persian lang file) ([view](https://github.com/videojs/video.js/pull/3116))
|
||||
* @forbesjo updated travis to use latest firefox ([view](https://github.com/videojs/video.js/pull/3112))
|
||||
* @Naouak updated time display to not change if values do not change ([view](https://github.com/videojs/video.js/pull/3101))
|
||||
* @forbesjo updated track settings to not fail restoring settings when localStorage is not available ([view](https://github.com/videojs/video.js/pull/3120))
|
||||
* @mister-ben Added en.json as localization template ([view](https://github.com/videojs/video.js/pull/3096))
|
||||
* @misteroneill added alt css as video-js-cdn.css ([view](https://github.com/videojs/video.js/pull/3118))
|
||||
|
||||
## 5.7.1 (2016-02-11)
|
||||
* @alex-phillips fixed reference to videojs-vtt.js dependency ([view](https://github.com/videojs/video.js/pull/3080))
|
||||
* @gkatsev fixed minified videojs in IE8. Fixes #3064 and #3070 ([view](https://github.com/videojs/video.js/pull/3104))
|
||||
|
||||
## 5.7.0 (2016-02-04)
|
||||
* @forbesjo updated emulated tracks to have listeners removed when they are removed ([view](https://github.com/videojs/video.js/pull/3046))
|
||||
* @incompl improved the UX of time tooltips ([view](https://github.com/videojs/video.js/pull/3060))
|
||||
* @gkatsev updated README to include links to plugins page and getting started and cleaner link to LICENSE ([view](https://github.com/videojs/video.js/pull/3066))
|
||||
* @hartman Corrected adaptive layout selectors to match their intent ([view](https://github.com/videojs/video.js/pull/2923))
|
||||
* @mister-ben updated Umuted to Unmute in lang files ([view](https://github.com/videojs/video.js/pull/3053))
|
||||
* @hartman updated fullscreen and time controls for more consistent widths ([view](https://github.com/videojs/video.js/pull/2893))
|
||||
* @hartman Set a min-width for the progress slider of 4em ([view](https://github.com/videojs/video.js/pull/2902))
|
||||
* @misteroneill fixed iphone useragent detection ([view](https://github.com/videojs/video.js/pull/3077))
|
||||
* @erikyuzwa added ability to add child component at specific index ([view](https://github.com/videojs/video.js/pull/2540))
|
||||
|
||||
## 5.6.0 (2016-01-26)
|
||||
* @OwenEdwards added ClickableComponent. Fixed keyboard operation of buttons ([view](https://github.com/videojs/video.js/pull/3032))
|
||||
* @OwenEdwards Fixed menu keyboard access and ARIA labeling for screen readers ([view](https://github.com/videojs/video.js/pull/3033))
|
||||
* @OwenEdwards Fixed volume menu keyboard access ([view](https://github.com/videojs/video.js/pull/3034))
|
||||
* @mister-ben made $primary-foreground-color a !default sass var ([view](https://github.com/videojs/video.js/pull/3003))
|
||||
* @OwenEdwards fixed double-localization of mute toggle control text ([view](https://github.com/videojs/video.js/pull/3017))
|
||||
* @gkatsev checked muted status when updating volume bar level ([view](https://github.com/videojs/video.js/pull/3037))
|
||||
* @vitor-faiante updated the guides ([view](https://github.com/videojs/video.js/pull/2781))
|
||||
* @aril-spetalen added language support for Norwegian (nb and nn) ([view](https://github.com/videojs/video.js/pull/3021))
|
||||
* @CoWinkKeyDinkInc fixed table in Tracks guide. Replaced some single quotes with double quotes ([view](https://github.com/videojs/video.js/pull/2946))
|
||||
* @hubdotcom changed URLs in README to be protocol-relative ([view](https://github.com/videojs/video.js/pull/3040))
|
||||
* @gkatsev updated to latest videojs-ie8 shim ([view](https://github.com/videojs/video.js/pull/3042))
|
||||
|
||||
## 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))
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
## Description
|
||||
Briefly describe the issue.
|
||||
Include a [reduced test case](https://css-tricks.com/reduced-test-cases/), we have a [starter template](http://jsbin.com/axedog/edit?html,output) on JSBin you can use.
|
||||
|
||||
## Steps to reproduce
|
||||
Explain in detail the exact steps necessary to reproduce the issue.
|
||||
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
## Results
|
||||
### Expected
|
||||
Please describe what you expected to see.
|
||||
|
||||
### Actual
|
||||
Please describe what actually happened.
|
||||
|
||||
### Error output
|
||||
If there are any errors at all, please include them here.
|
||||
|
||||
## Additional Information
|
||||
Please include any additional information necessary here. Including the following:
|
||||
### versions
|
||||
#### videojs
|
||||
what version of videojs does this occur with?
|
||||
#### browsers
|
||||
what browser are affected?
|
||||
#### OSes
|
||||
what platforms (operating systems and devices) are affected?
|
||||
### plugins
|
||||
are any videojs plugins being used on the page? If so, please list them below.
|
||||
@@ -0,0 +1,16 @@
|
||||
## Description
|
||||
Please describe the change as necessary.
|
||||
If it's a feature or enhancement please be as detailed as possible.
|
||||
If it's a bug fix, please link the issue that it fixes or describe the bug in as much detail.
|
||||
|
||||
|
||||
## Specific Changes proposed
|
||||
Please list the specific changes involved in this pull request.
|
||||
|
||||
## Requirements Checklist
|
||||
- [ ] Feature implemented / Bug fixed
|
||||
- [ ] If necessary, more likely in a feature request than a bug fix
|
||||
- [ ] Unit Tests updated or fixed
|
||||
- [ ] Docs/guides updated
|
||||
- [ ] Example created ([starter template on JSBin](http://jsbin.com/axedog/edit?html,output))
|
||||
- [ ] Reviewed by Two Core Contributors
|
||||
+13
-9
@@ -1,27 +1,33 @@
|
||||

|
||||
|
||||
# [Video.js - HTML5 Video Player](http://videojs.com) [](https://travis-ci.org/videojs/video.js)
|
||||
# [Video.js - HTML5 Video Player](http://videojs.com)
|
||||
[](https://travis-ci.org/videojs/video.js)
|
||||
[](https://coveralls.io/github/videojs/video.js?branch=master)
|
||||
|
||||
[](https://nodei.co/npm/video.js/)
|
||||
|
||||
> Video.js is a web video player built from the ground up for an HTML5 world. It supports HTML5 and Flash video, as well as YouTube and Vimeo (through [plugins](https://github.com/videojs/video.js/wiki/Plugins)). It supports video playback on desktops and mobile devices. This project was started mid 2010, and the player is now used on over ~~50,000~~ ~~100,000~~ 200,000 websites.
|
||||
|
||||
## Quick start
|
||||
Thanks to the awesome folks over at [Fastly](http://www.fastly.com/), there's a free, CDN hosted version of Video.js that anyone can use. Simply add these includes to your document's
|
||||
Thanks to the awesome folks over at [Fastly](http://www.fastly.com/), there's a free, CDN hosted version of Video.js that anyone can use.
|
||||
Also, check out the [Getting Started](http://videojs.com/getting-started/) page on our website which has the latest urls as well.
|
||||
Simply add these includes to your document's
|
||||
`<head>`:
|
||||
|
||||
```html
|
||||
<link href="http://vjs.zencdn.net/5.0/video-js.min.css" rel="stylesheet">
|
||||
<script src="http://vjs.zencdn.net/5.0/video.min.js"></script>
|
||||
<link href="//vjs.zencdn.net/5.0/video-js.min.css" rel="stylesheet">
|
||||
<script src="//vjs.zencdn.net/5.0/video.min.js"></script>
|
||||
```
|
||||
|
||||
Then, whenever you want to use Video.js you can simply use the `<video>` element as your normally would, but with an additional `data-setup` attribute containing any Video.js options. These options
|
||||
can include any Video.js option plus potential [plugin](https://github.com/videojs/video.js/wiki/Plugins) options, just make sure they're valid JSON!
|
||||
can include any Video.js option plus potential [plugin](http://videojs.com/plugins/) options, just make sure they're valid JSON!
|
||||
|
||||
```html
|
||||
<video id="really-cool-video" class="video-js vjs-default-skin" controls
|
||||
preload="auto" width="640" height="264" poster="really-cool-video-poster.jpg"
|
||||
data-setup='{}'>
|
||||
<source src="really-cool-video.mp4" type='video/mp4'>
|
||||
<source src="really-cool-video.webm" type='video/webm'>
|
||||
<source src="really-cool-video.mp4" type="video/mp4">
|
||||
<source src="really-cool-video.webm" type="video/webm">
|
||||
<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>
|
||||
@@ -55,5 +61,3 @@ To build your own custom version read the section on [contributing code](CONTRIB
|
||||
## License
|
||||
|
||||
Video.js is licensed under the Apache License, Version 2.0. [View the license file](LICENSE)
|
||||
|
||||
Copyright 2014-2015 Brightcove, Inc.
|
||||
|
||||
+8
-3
@@ -149,6 +149,10 @@ module.exports = function(grunt) {
|
||||
},
|
||||
dist: {},
|
||||
watch: {
|
||||
minify: {
|
||||
files: ['build/temp/video.js'],
|
||||
tasks: ['uglify']
|
||||
},
|
||||
skin: {
|
||||
files: ['src/css/**/*'],
|
||||
tasks: ['sass', 'wrapcodepoints']
|
||||
@@ -188,7 +192,7 @@ module.exports = function(grunt) {
|
||||
minify: {
|
||||
expand: true,
|
||||
cwd: 'build/temp/',
|
||||
src: ['video-js.css'],
|
||||
src: ['video-js.css', 'alt/video-js-cdn.css'],
|
||||
dest: 'build/temp/',
|
||||
ext: '.min.css'
|
||||
}
|
||||
@@ -196,7 +200,8 @@ module.exports = function(grunt) {
|
||||
sass: {
|
||||
build: {
|
||||
files: {
|
||||
'build/temp/video-js.css': 'src/css/vjs.scss'
|
||||
'build/temp/video-js.css': 'src/css/vjs.scss',
|
||||
'build/temp/alt/video-js-cdn.css': 'src/css/vjs-cdn.scss'
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -396,7 +401,7 @@ module.exports = function(grunt) {
|
||||
options: {
|
||||
separator: '\n',
|
||||
},
|
||||
src: ['build/temp/video.js', 'node_modules/vtt.js/dist/vtt.js'],
|
||||
src: ['build/temp/video.js', 'node_modules/videojs-vtt.js/dist/vtt.js'],
|
||||
dest: 'build/temp/video.js',
|
||||
},
|
||||
},
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "video.js",
|
||||
"description": "An HTML5 and Flash video player with a common API and skin for both.",
|
||||
"version": "5.5.2",
|
||||
"version": "5.8.1",
|
||||
"keywords": [
|
||||
"videojs",
|
||||
"html5",
|
||||
|
||||
externo
+1239
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
externo
+1
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
externo
+1314
-641
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
externo
+10
-9
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
externo
+1
-1
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
externo
+363
-69
@@ -26,7 +26,7 @@ if (typeof window.HTMLVideoElement === 'undefined') {
|
||||
;
|
||||
|
||||
// UMD (Universal Module Definition)
|
||||
// see https://github.com/umdjs/umd/blob/master/returnExports.js
|
||||
// see https://github.com/umdjs/umd/blob/master/templates/returnExports.js
|
||||
(function (root, factory) {
|
||||
'use strict';
|
||||
|
||||
@@ -72,6 +72,7 @@ var array_push = ArrayPrototype.push;
|
||||
var array_unshift = ArrayPrototype.unshift;
|
||||
var array_concat = ArrayPrototype.concat;
|
||||
var call = FunctionPrototype.call;
|
||||
var apply = FunctionPrototype.apply;
|
||||
var max = Math.max;
|
||||
var min = Math.min;
|
||||
|
||||
@@ -84,19 +85,18 @@ var isRegex; /* inlined from https://npmjs.com/is-regex */ var regexExec = RegEx
|
||||
var isString; /* inlined from https://npmjs.com/is-string */ var strValue = String.prototype.valueOf, tryStringObject = function tryStringObject(value) { try { strValue.call(value); return true; } catch (e) { return false; } }, stringClass = '[object String]'; isString = function isString(value) { if (typeof value === 'string') { return true; } if (typeof value !== 'object') { return false; } return hasToStringTag ? tryStringObject(value) : to_string.call(value) === stringClass; };
|
||||
|
||||
/* inlined from http://npmjs.com/define-properties */
|
||||
var supportsDescriptors = $Object.defineProperty && (function () {
|
||||
try {
|
||||
var obj = {};
|
||||
$Object.defineProperty(obj, 'x', { enumerable: false, value: obj });
|
||||
for (var _ in obj) { return false; }
|
||||
return obj.x === obj;
|
||||
} catch (e) { /* this is ES3 */
|
||||
return false;
|
||||
}
|
||||
}());
|
||||
var defineProperties = (function (has) {
|
||||
var supportsDescriptors = $Object.defineProperty && (function () {
|
||||
try {
|
||||
var obj = {};
|
||||
$Object.defineProperty(obj, 'x', { enumerable: false, value: obj });
|
||||
for (var _ in obj) { return false; }
|
||||
return obj.x === obj;
|
||||
} catch (e) { /* this is ES3 */
|
||||
return false;
|
||||
}
|
||||
}());
|
||||
|
||||
// Define configurable, writable and non-enumerable props
|
||||
// Define configurable, writable, and non-enumerable props
|
||||
// if they don't exist.
|
||||
var defineProperty;
|
||||
if (supportsDescriptors) {
|
||||
@@ -179,7 +179,6 @@ var ES = {
|
||||
// http://es5.github.com/#x9.9
|
||||
/* replaceable with https://npmjs.com/package/es-abstract ES5.ToObject */
|
||||
ToObject: function (o) {
|
||||
/* jshint eqnull: true */
|
||||
if (o == null) { // this matches both null and undefined
|
||||
throw new TypeError("can't convert " + o + ' to object');
|
||||
}
|
||||
@@ -337,13 +336,17 @@ defineProperties(FunctionPrototype, {
|
||||
});
|
||||
|
||||
// _Please note: Shortcuts are defined after `Function.prototype.bind` as we
|
||||
// us it in defining shortcuts.
|
||||
// use it in defining shortcuts.
|
||||
var owns = call.bind(ObjectPrototype.hasOwnProperty);
|
||||
var toStr = call.bind(ObjectPrototype.toString);
|
||||
var arraySlice = call.bind(array_slice);
|
||||
var arraySliceApply = apply.bind(array_slice);
|
||||
var strSlice = call.bind(StringPrototype.slice);
|
||||
var strSplit = call.bind(StringPrototype.split);
|
||||
var strIndexOf = call.bind(StringPrototype.indexOf);
|
||||
var push = call.bind(array_push);
|
||||
var pushCall = call.bind(array_push);
|
||||
var isEnum = call.bind(ObjectPrototype.propertyIsEnumerable);
|
||||
var arraySort = call.bind(ArrayPrototype.sort);
|
||||
|
||||
//
|
||||
// Array
|
||||
@@ -397,18 +400,23 @@ var properlyBoxesContext = function properlyBoxed(method) {
|
||||
// Check node 0.6.21 bug where third parameter is not boxed
|
||||
var properlyBoxesNonStrict = true;
|
||||
var properlyBoxesStrict = true;
|
||||
var threwException = false;
|
||||
if (method) {
|
||||
method.call('foo', function (_, __, context) {
|
||||
if (typeof context !== 'object') { properlyBoxesNonStrict = false; }
|
||||
});
|
||||
try {
|
||||
method.call('foo', function (_, __, context) {
|
||||
if (typeof context !== 'object') { properlyBoxesNonStrict = false; }
|
||||
});
|
||||
|
||||
method.call([1], function () {
|
||||
'use strict';
|
||||
method.call([1], function () {
|
||||
'use strict';
|
||||
|
||||
properlyBoxesStrict = typeof this === 'string';
|
||||
}, 'x');
|
||||
properlyBoxesStrict = typeof this === 'string';
|
||||
}, 'x');
|
||||
} catch (e) {
|
||||
threwException = true;
|
||||
}
|
||||
}
|
||||
return !!method && properlyBoxesNonStrict && properlyBoxesStrict;
|
||||
return !!method && !threwException && properlyBoxesNonStrict && properlyBoxesStrict;
|
||||
};
|
||||
|
||||
defineProperties(ArrayPrototype, {
|
||||
@@ -497,7 +505,7 @@ defineProperties(ArrayPrototype, {
|
||||
if (i in self) {
|
||||
value = self[i];
|
||||
if (typeof T === 'undefined' ? callbackfn(value, i, object) : callbackfn.call(T, value, i, object)) {
|
||||
push(result, value);
|
||||
pushCall(result, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -750,9 +758,9 @@ defineProperties(ArrayPrototype, {
|
||||
var args = arguments;
|
||||
this.length = max(ES.ToInteger(this.length), 0);
|
||||
if (arguments.length > 0 && typeof deleteCount !== 'number') {
|
||||
args = array_slice.call(arguments);
|
||||
args = arraySlice(arguments);
|
||||
if (args.length < 2) {
|
||||
push(args, this.length - start);
|
||||
pushCall(args, this.length - start);
|
||||
} else {
|
||||
args[1] = ES.ToInteger(deleteCount);
|
||||
}
|
||||
@@ -799,7 +807,7 @@ defineProperties(ArrayPrototype, {
|
||||
k += 1;
|
||||
}
|
||||
|
||||
var items = array_slice.call(arguments, 2);
|
||||
var items = arraySlice(arguments, 2);
|
||||
var itemCount = items.length;
|
||||
var to;
|
||||
if (itemCount < actualDeleteCount) {
|
||||
@@ -843,13 +851,31 @@ defineProperties(ArrayPrototype, {
|
||||
}
|
||||
}, !spliceWorksWithLargeSparseArrays || !spliceWorksWithSmallSparseArrays);
|
||||
|
||||
var hasJoinUndefinedBug = [1, 2].join(undefined) !== '1,2';
|
||||
var originalJoin = ArrayPrototype.join;
|
||||
defineProperties(ArrayPrototype, {
|
||||
join: function join(separator) {
|
||||
return originalJoin.call(this, typeof separator === 'undefined' ? ',' : separator);
|
||||
}
|
||||
}, hasJoinUndefinedBug);
|
||||
var hasStringJoinBug;
|
||||
try {
|
||||
hasStringJoinBug = Array.prototype.join.call('123', ',') !== '1,2,3';
|
||||
} catch (e) {
|
||||
hasStringJoinBug = true;
|
||||
}
|
||||
if (hasStringJoinBug) {
|
||||
defineProperties(ArrayPrototype, {
|
||||
join: function join(separator) {
|
||||
var sep = typeof separator === 'undefined' ? ',' : separator;
|
||||
return originalJoin.call(isString(this) ? strSplit(this, '') : this, sep);
|
||||
}
|
||||
}, hasStringJoinBug);
|
||||
}
|
||||
|
||||
var hasJoinUndefinedBug = [1, 2].join(undefined) !== '1,2';
|
||||
if (hasJoinUndefinedBug) {
|
||||
defineProperties(ArrayPrototype, {
|
||||
join: function join(separator) {
|
||||
var sep = typeof separator === 'undefined' ? ',' : separator;
|
||||
return originalJoin.call(this, sep);
|
||||
}
|
||||
}, hasJoinUndefinedBug);
|
||||
}
|
||||
|
||||
var pushShim = function push(item) {
|
||||
var O = ES.ToObject(this);
|
||||
@@ -885,6 +911,52 @@ var pushUndefinedIsWeird = (function () {
|
||||
}());
|
||||
defineProperties(ArrayPrototype, { push: pushShim }, pushUndefinedIsWeird);
|
||||
|
||||
// ES5 15.2.3.14
|
||||
// http://es5.github.io/#x15.4.4.10
|
||||
// Fix boxed string bug
|
||||
defineProperties(ArrayPrototype, {
|
||||
slice: function (start, end) {
|
||||
var arr = isString(this) ? strSplit(this, '') : this;
|
||||
return arraySliceApply(arr, arguments);
|
||||
}
|
||||
}, splitString);
|
||||
|
||||
var sortIgnoresNonFunctions = (function () {
|
||||
try {
|
||||
[1, 2].sort(null);
|
||||
[1, 2].sort({});
|
||||
return true;
|
||||
} catch (e) { /**/ }
|
||||
return false;
|
||||
}());
|
||||
var sortThrowsOnRegex = (function () {
|
||||
// this is a problem in Firefox 4, in which `typeof /a/ === 'function'`
|
||||
try {
|
||||
[1, 2].sort(/a/);
|
||||
return false;
|
||||
} catch (e) { /**/ }
|
||||
return true;
|
||||
}());
|
||||
var sortIgnoresUndefined = (function () {
|
||||
// applies in IE 8, for one.
|
||||
try {
|
||||
[1, 2].sort(undefined);
|
||||
return true;
|
||||
} catch (e) { /**/ }
|
||||
return false;
|
||||
}());
|
||||
defineProperties(ArrayPrototype, {
|
||||
sort: function sort(compareFn) {
|
||||
if (typeof compareFn === 'undefined') {
|
||||
return arraySort(this);
|
||||
}
|
||||
if (!isCallable(compareFn)) {
|
||||
throw new TypeError('Array.prototype.sort callback must be a function');
|
||||
}
|
||||
return arraySort(this, compareFn);
|
||||
}
|
||||
}, sortIgnoresNonFunctions || !sortIgnoresUndefined || !sortThrowsOnRegex);
|
||||
|
||||
//
|
||||
// Object
|
||||
// ======
|
||||
@@ -910,7 +982,8 @@ var blacklistedKeys = {
|
||||
$frames: true,
|
||||
$frameElement: true,
|
||||
$webkitIndexedDB: true,
|
||||
$webkitStorageInfo: true
|
||||
$webkitStorageInfo: true,
|
||||
$external: true
|
||||
};
|
||||
var hasAutomationEqualityBug = (function () {
|
||||
/* globals window */
|
||||
@@ -975,14 +1048,14 @@ defineProperties($Object, {
|
||||
var skipProto = hasProtoEnumBug && isFn;
|
||||
if ((isStr && hasStringEnumBug) || isArgs) {
|
||||
for (var i = 0; i < object.length; ++i) {
|
||||
push(theKeys, $String(i));
|
||||
pushCall(theKeys, $String(i));
|
||||
}
|
||||
}
|
||||
|
||||
if (!isArgs) {
|
||||
for (var name in object) {
|
||||
if (!(skipProto && name === 'prototype') && owns(object, name)) {
|
||||
push(theKeys, $String(name));
|
||||
pushCall(theKeys, $String(name));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -992,7 +1065,7 @@ defineProperties($Object, {
|
||||
for (var j = 0; j < dontEnumsLength; j++) {
|
||||
var dontEnum = dontEnums[j];
|
||||
if (!(skipConstructor && dontEnum === 'constructor') && owns(object, dontEnum)) {
|
||||
push(theKeys, dontEnum);
|
||||
pushCall(theKeys, dontEnum);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1012,7 +1085,7 @@ var originalKeys = $Object.keys;
|
||||
defineProperties($Object, {
|
||||
keys: function keys(object) {
|
||||
if (isArguments(object)) {
|
||||
return originalKeys(array_slice.call(object));
|
||||
return originalKeys(arraySlice(object));
|
||||
} else {
|
||||
return originalKeys(object);
|
||||
}
|
||||
@@ -1024,6 +1097,190 @@ defineProperties($Object, {
|
||||
// ====
|
||||
//
|
||||
|
||||
var hasNegativeMonthYearBug = new Date(-3509827329600292).getUTCMonth() !== 0;
|
||||
var aNegativeTestDate = new Date(-1509842289600292);
|
||||
var aPositiveTestDate = new Date(1449662400000);
|
||||
var hasToUTCStringFormatBug = aNegativeTestDate.toUTCString() !== 'Mon, 01 Jan -45875 11:59:59 GMT';
|
||||
var hasToDateStringFormatBug;
|
||||
var hasToStringFormatBug;
|
||||
var timeZoneOffset = aNegativeTestDate.getTimezoneOffset();
|
||||
if (timeZoneOffset < -720) {
|
||||
hasToDateStringFormatBug = aNegativeTestDate.toDateString() !== 'Tue Jan 02 -45875';
|
||||
hasToStringFormatBug = !(/^Thu Dec 10 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/).test(aPositiveTestDate.toString());
|
||||
} else {
|
||||
hasToDateStringFormatBug = aNegativeTestDate.toDateString() !== 'Mon Jan 01 -45875';
|
||||
hasToStringFormatBug = !(/^Wed Dec 09 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/).test(aPositiveTestDate.toString());
|
||||
}
|
||||
|
||||
var originalGetFullYear = call.bind(Date.prototype.getFullYear);
|
||||
var originalGetMonth = call.bind(Date.prototype.getMonth);
|
||||
var originalGetDate = call.bind(Date.prototype.getDate);
|
||||
var originalGetUTCFullYear = call.bind(Date.prototype.getUTCFullYear);
|
||||
var originalGetUTCMonth = call.bind(Date.prototype.getUTCMonth);
|
||||
var originalGetUTCDate = call.bind(Date.prototype.getUTCDate);
|
||||
var originalGetUTCDay = call.bind(Date.prototype.getUTCDay);
|
||||
var originalGetUTCHours = call.bind(Date.prototype.getUTCHours);
|
||||
var originalGetUTCMinutes = call.bind(Date.prototype.getUTCMinutes);
|
||||
var originalGetUTCSeconds = call.bind(Date.prototype.getUTCSeconds);
|
||||
var originalGetUTCMilliseconds = call.bind(Date.prototype.getUTCMilliseconds);
|
||||
var dayName = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri'];
|
||||
var monthName = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
||||
var daysInMonth = function daysInMonth(month, year) {
|
||||
return originalGetDate(new Date(year, month, 0));
|
||||
};
|
||||
|
||||
defineProperties(Date.prototype, {
|
||||
getFullYear: function getFullYear() {
|
||||
if (!this || !(this instanceof Date)) {
|
||||
throw new TypeError('this is not a Date object.');
|
||||
}
|
||||
var year = originalGetFullYear(this);
|
||||
if (year < 0 && originalGetMonth(this) > 11) {
|
||||
return year + 1;
|
||||
}
|
||||
return year;
|
||||
},
|
||||
getMonth: function getMonth() {
|
||||
if (!this || !(this instanceof Date)) {
|
||||
throw new TypeError('this is not a Date object.');
|
||||
}
|
||||
var year = originalGetFullYear(this);
|
||||
var month = originalGetMonth(this);
|
||||
if (year < 0 && month > 11) {
|
||||
return 0;
|
||||
}
|
||||
return month;
|
||||
},
|
||||
getDate: function getDate() {
|
||||
if (!this || !(this instanceof Date)) {
|
||||
throw new TypeError('this is not a Date object.');
|
||||
}
|
||||
var year = originalGetFullYear(this);
|
||||
var month = originalGetMonth(this);
|
||||
var date = originalGetDate(this);
|
||||
if (year < 0 && month > 11) {
|
||||
if (month === 12) {
|
||||
return date;
|
||||
}
|
||||
var days = daysInMonth(0, year + 1);
|
||||
return (days - date) + 1;
|
||||
}
|
||||
return date;
|
||||
},
|
||||
getUTCFullYear: function getUTCFullYear() {
|
||||
if (!this || !(this instanceof Date)) {
|
||||
throw new TypeError('this is not a Date object.');
|
||||
}
|
||||
var year = originalGetUTCFullYear(this);
|
||||
if (year < 0 && originalGetUTCMonth(this) > 11) {
|
||||
return year + 1;
|
||||
}
|
||||
return year;
|
||||
},
|
||||
getUTCMonth: function getUTCMonth() {
|
||||
if (!this || !(this instanceof Date)) {
|
||||
throw new TypeError('this is not a Date object.');
|
||||
}
|
||||
var year = originalGetUTCFullYear(this);
|
||||
var month = originalGetUTCMonth(this);
|
||||
if (year < 0 && month > 11) {
|
||||
return 0;
|
||||
}
|
||||
return month;
|
||||
},
|
||||
getUTCDate: function getUTCDate() {
|
||||
if (!this || !(this instanceof Date)) {
|
||||
throw new TypeError('this is not a Date object.');
|
||||
}
|
||||
var year = originalGetUTCFullYear(this);
|
||||
var month = originalGetUTCMonth(this);
|
||||
var date = originalGetUTCDate(this);
|
||||
if (year < 0 && month > 11) {
|
||||
if (month === 12) {
|
||||
return date;
|
||||
}
|
||||
var days = daysInMonth(0, year + 1);
|
||||
return (days - date) + 1;
|
||||
}
|
||||
return date;
|
||||
}
|
||||
}, hasNegativeMonthYearBug);
|
||||
|
||||
defineProperties(Date.prototype, {
|
||||
toUTCString: function toUTCString() {
|
||||
if (!this || !(this instanceof Date)) {
|
||||
throw new TypeError('this is not a Date object.');
|
||||
}
|
||||
var day = originalGetUTCDay(this);
|
||||
var date = originalGetUTCDate(this);
|
||||
var month = originalGetUTCMonth(this);
|
||||
var year = originalGetUTCFullYear(this);
|
||||
var hour = originalGetUTCHours(this);
|
||||
var minute = originalGetUTCMinutes(this);
|
||||
var second = originalGetUTCSeconds(this);
|
||||
return dayName[day] + ', ' +
|
||||
(date < 10 ? '0' + date : date) + ' ' +
|
||||
monthName[month] + ' ' +
|
||||
year + ' ' +
|
||||
(hour < 10 ? '0' + hour : hour) + ':' +
|
||||
(minute < 10 ? '0' + minute : minute) + ':' +
|
||||
(second < 10 ? '0' + second : second) + ' GMT';
|
||||
}
|
||||
}, hasNegativeMonthYearBug || hasToUTCStringFormatBug);
|
||||
|
||||
// Opera 12 has `,`
|
||||
defineProperties(Date.prototype, {
|
||||
toDateString: function toDateString() {
|
||||
if (!this || !(this instanceof Date)) {
|
||||
throw new TypeError('this is not a Date object.');
|
||||
}
|
||||
var day = this.getDay();
|
||||
var date = this.getDate();
|
||||
var month = this.getMonth();
|
||||
var year = this.getFullYear();
|
||||
return dayName[day] + ' ' +
|
||||
monthName[month] + ' ' +
|
||||
(date < 10 ? '0' + date : date) + ' ' +
|
||||
year;
|
||||
}
|
||||
}, hasNegativeMonthYearBug || hasToDateStringFormatBug);
|
||||
|
||||
// can't use defineProperties here because of toString enumeration issue in IE <= 8
|
||||
if (hasNegativeMonthYearBug || hasToStringFormatBug) {
|
||||
Date.prototype.toString = function toString() {
|
||||
if (!this || !(this instanceof Date)) {
|
||||
throw new TypeError('this is not a Date object.');
|
||||
}
|
||||
var day = this.getDay();
|
||||
var date = this.getDate();
|
||||
var month = this.getMonth();
|
||||
var year = this.getFullYear();
|
||||
var hour = this.getHours();
|
||||
var minute = this.getMinutes();
|
||||
var second = this.getSeconds();
|
||||
var timezoneOffset = this.getTimezoneOffset();
|
||||
var hoursOffset = Math.floor(Math.abs(timezoneOffset) / 60);
|
||||
var minutesOffset = Math.floor(Math.abs(timezoneOffset) % 60);
|
||||
return dayName[day] + ' ' +
|
||||
monthName[month] + ' ' +
|
||||
(date < 10 ? '0' + date : date) + ' ' +
|
||||
year + ' ' +
|
||||
(hour < 10 ? '0' + hour : hour) + ':' +
|
||||
(minute < 10 ? '0' + minute : minute) + ':' +
|
||||
(second < 10 ? '0' + second : second) + ' GMT' +
|
||||
(timezoneOffset > 0 ? '-' : '+') +
|
||||
(hoursOffset < 10 ? '0' + hoursOffset : hoursOffset) +
|
||||
(minutesOffset < 10 ? '0' + minutesOffset : minutesOffset);
|
||||
};
|
||||
if (supportsDescriptors) {
|
||||
$Object.defineProperty(Date.prototype, 'toString', {
|
||||
configurable: true,
|
||||
enumerable: false,
|
||||
writable: true
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// ES5 15.9.5.43
|
||||
// http://es5.github.com/#x15.9.5.43
|
||||
// This function returns a String value represent the instance in time
|
||||
@@ -1038,39 +1295,33 @@ var hasSafari51DateBug = Date.prototype.toISOString && new Date(-1).toISOString(
|
||||
|
||||
defineProperties(Date.prototype, {
|
||||
toISOString: function toISOString() {
|
||||
var result, length, value, year, month;
|
||||
if (!isFinite(this)) {
|
||||
throw new RangeError('Date.prototype.toISOString called on non-finite value.');
|
||||
}
|
||||
|
||||
year = this.getUTCFullYear();
|
||||
var year = originalGetUTCFullYear(this);
|
||||
|
||||
month = this.getUTCMonth();
|
||||
var month = originalGetUTCMonth(this);
|
||||
// see https://github.com/es-shims/es5-shim/issues/111
|
||||
year += Math.floor(month / 12);
|
||||
month = (month % 12 + 12) % 12;
|
||||
|
||||
// the date time string format is specified in 15.9.1.15.
|
||||
result = [month + 1, this.getUTCDate(), this.getUTCHours(), this.getUTCMinutes(), this.getUTCSeconds()];
|
||||
var result = [month + 1, originalGetUTCDate(this), originalGetUTCHours(this), originalGetUTCMinutes(this), originalGetUTCSeconds(this)];
|
||||
year = (
|
||||
(year < 0 ? '-' : (year > 9999 ? '+' : '')) +
|
||||
strSlice('00000' + Math.abs(year), (0 <= year && year <= 9999) ? -4 : -6)
|
||||
);
|
||||
|
||||
length = result.length;
|
||||
while (length--) {
|
||||
value = result[length];
|
||||
// pad months, days, hours, minutes, and seconds to have two
|
||||
// digits.
|
||||
if (value < 10) {
|
||||
result[length] = '0' + value;
|
||||
}
|
||||
for (var i = 0; i < result.length; ++i) {
|
||||
// pad months, days, hours, minutes, and seconds to have two digits.
|
||||
result[i] = strSlice('00' + result[i], -2);
|
||||
}
|
||||
// pad milliseconds to have three digits.
|
||||
return (
|
||||
year + '-' + array_slice.call(result, 0, 2).join('-') +
|
||||
'T' + array_slice.call(result, 2).join(':') + '.' +
|
||||
strSlice('000' + this.getUTCMilliseconds(), -3) + 'Z'
|
||||
year + '-' + arraySlice(result, 0, 2).join('-') +
|
||||
'T' + arraySlice(result, 2).join(':') + '.' +
|
||||
strSlice('000' + originalGetUTCMilliseconds(this), -3) + 'Z'
|
||||
);
|
||||
}
|
||||
}, hasNegativeDateBug || hasSafari51DateBug);
|
||||
@@ -1140,7 +1391,6 @@ if (doesNotParseY2KNewYear || acceptsInvalidDates || !supportsExtendedYears) {
|
||||
/* global Date: true */
|
||||
/* eslint-disable no-undef */
|
||||
var maxSafeUnsigned32Bit = Math.pow(2, 31) - 1;
|
||||
var secondsWithinMaxSafeUnsigned32Bit = Math.floor(maxSafeUnsigned32Bit / 1e3);
|
||||
var hasSafariSignedIntBug = isActualNaN(new Date(1970, 0, 1, 0, 0, 0, maxSafeUnsigned32Bit + 1).getTime());
|
||||
Date = (function (NativeDate) {
|
||||
/* eslint-enable no-undef */
|
||||
@@ -1513,7 +1763,7 @@ if (
|
||||
var maxSafe32BitInt = Math.pow(2, 32) - 1;
|
||||
|
||||
StringPrototype.split = function (separator, limit) {
|
||||
var string = this;
|
||||
var string = String(this);
|
||||
if (typeof separator === 'undefined' && limit === 0) {
|
||||
return [];
|
||||
}
|
||||
@@ -1532,7 +1782,6 @@ if (
|
||||
// Make `global` and avoid `lastIndex` issues by working with a copy
|
||||
separator2, match, lastIndex, lastLength;
|
||||
var separatorCopy = new RegExp(separator.source, flags + 'g');
|
||||
string += ''; // Type-convert
|
||||
if (!compliantExecNpcg) {
|
||||
// Doesn't need flags gy, but they don't hurt
|
||||
separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\s)', flags);
|
||||
@@ -1550,7 +1799,7 @@ if (
|
||||
// `separatorCopy.lastIndex` is not reliable cross-browser
|
||||
lastIndex = match.index + match[0].length;
|
||||
if (lastIndex > lastLastIndex) {
|
||||
push(output, strSlice(string, lastLastIndex, match.index));
|
||||
pushCall(output, strSlice(string, lastLastIndex, match.index));
|
||||
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
||||
// nonparticipating capturing groups
|
||||
if (!compliantExecNpcg && match.length > 1) {
|
||||
@@ -1565,7 +1814,7 @@ if (
|
||||
/* eslint-enable no-loop-func */
|
||||
}
|
||||
if (match.length > 1 && match.index < string.length) {
|
||||
array_push.apply(output, array_slice.call(match, 1));
|
||||
array_push.apply(output, arraySlice(match, 1));
|
||||
}
|
||||
lastLength = match[0].length;
|
||||
lastLastIndex = lastIndex;
|
||||
@@ -1580,10 +1829,10 @@ if (
|
||||
}
|
||||
if (lastLastIndex === string.length) {
|
||||
if (lastLength || !separatorCopy.test('')) {
|
||||
push(output, '');
|
||||
pushCall(output, '');
|
||||
}
|
||||
} else {
|
||||
push(output, strSlice(string, lastLastIndex));
|
||||
pushCall(output, strSlice(string, lastLastIndex));
|
||||
}
|
||||
return output.length > splitLimit ? strSlice(output, 0, splitLimit) : output;
|
||||
};
|
||||
@@ -1606,7 +1855,7 @@ var str_replace = StringPrototype.replace;
|
||||
var replaceReportsGroupsCorrectly = (function () {
|
||||
var groups = [];
|
||||
'x'.replace(/x(.)?/g, function (match, group) {
|
||||
push(groups, group);
|
||||
pushCall(groups, group);
|
||||
});
|
||||
return groups.length === 1 && typeof groups[0] === 'undefined';
|
||||
}());
|
||||
@@ -1624,7 +1873,7 @@ if (!replaceReportsGroupsCorrectly) {
|
||||
searchValue.lastIndex = 0;
|
||||
var args = searchValue.exec(match) || [];
|
||||
searchValue.lastIndex = originalLastIndex;
|
||||
push(args, arguments[length - 2], arguments[length - 1]);
|
||||
pushCall(args, arguments[length - 2], arguments[length - 1]);
|
||||
return replaceValue.apply(this, args);
|
||||
};
|
||||
return str_replace.call(this, searchValue, wrappedReplaceValue);
|
||||
@@ -1669,6 +1918,7 @@ defineProperties(StringPrototype, {
|
||||
return $String(this).replace(trimBeginRegexp, '').replace(trimEndRegexp, '');
|
||||
}
|
||||
}, hasTrimWhitespaceBug);
|
||||
var trim = call.bind(String.prototype.trim);
|
||||
|
||||
var hasLastIndexBug = StringPrototype.lastIndexOf && 'abcあい'.lastIndexOf('あい', 2) !== -1;
|
||||
defineProperties(StringPrototype, {
|
||||
@@ -1709,15 +1959,26 @@ if (parseInt(ws + '08') !== 8 || parseInt(ws + '0x16') !== 22) {
|
||||
parseInt = (function (origParseInt) {
|
||||
var hexRegex = /^[\-+]?0[xX]/;
|
||||
return function parseInt(str, radix) {
|
||||
var string = $String(str).trim();
|
||||
var string = trim(str);
|
||||
var defaultedRadix = $Number(radix) || (hexRegex.test(string) ? 16 : 10);
|
||||
return origParseInt(string, defaultedRadix);
|
||||
};
|
||||
}(parseInt));
|
||||
}
|
||||
|
||||
// https://es5.github.io/#x15.1.2.3
|
||||
if (1 / parseFloat('-0') !== -Infinity) {
|
||||
/* global parseFloat: true */
|
||||
parseFloat = (function (origParseFloat) {
|
||||
return function parseFloat(string) {
|
||||
var inputString = trim(string);
|
||||
var result = origParseFloat(inputString);
|
||||
return result === 0 && strSlice(inputString, 0, 1) === '-' ? -0 : result;
|
||||
};
|
||||
}(parseFloat));
|
||||
}
|
||||
|
||||
if (String(new RangeError('test')) !== 'RangeError: test') {
|
||||
var originalErrorToString = Error.prototype.toString;
|
||||
var errorToStringShim = function toString() {
|
||||
if (typeof this === 'undefined' || this === null) {
|
||||
throw new TypeError("can't convert " + this + ' to object');
|
||||
@@ -1746,6 +2007,39 @@ if (String(new RangeError('test')) !== 'RangeError: test') {
|
||||
Error.prototype.toString = errorToStringShim;
|
||||
}
|
||||
|
||||
if (supportsDescriptors) {
|
||||
var ensureNonEnumerable = function (obj, prop) {
|
||||
if (isEnum(obj, prop)) {
|
||||
var desc = Object.getOwnPropertyDescriptor(obj, prop);
|
||||
desc.enumerable = false;
|
||||
Object.defineProperty(obj, prop, desc);
|
||||
}
|
||||
};
|
||||
ensureNonEnumerable(Error.prototype, 'message');
|
||||
if (Error.prototype.message !== '') {
|
||||
Error.prototype.message = '';
|
||||
}
|
||||
ensureNonEnumerable(Error.prototype, 'name');
|
||||
}
|
||||
|
||||
if (String(/a/mig) !== '/a/gim') {
|
||||
var regexToString = function toString() {
|
||||
var str = '/' + this.source + '/';
|
||||
if (this.global) {
|
||||
str += 'g';
|
||||
}
|
||||
if (this.ignoreCase) {
|
||||
str += 'i';
|
||||
}
|
||||
if (this.multiline) {
|
||||
str += 'm';
|
||||
}
|
||||
return str;
|
||||
};
|
||||
// can't use defineProperties here because of toString enumeration issue in IE <= 8
|
||||
RegExp.prototype.toString = regexToString;
|
||||
}
|
||||
|
||||
}));
|
||||
|
||||
/*!
|
||||
@@ -1760,7 +2054,7 @@ if (String(new RangeError('test')) !== 'RangeError: test') {
|
||||
;
|
||||
|
||||
// UMD (Universal Module Definition)
|
||||
// see https://github.com/umdjs/umd/blob/master/returnExports.js
|
||||
// see https://github.com/umdjs/umd/blob/master/templates/returnExports.js
|
||||
(function (root, factory) {
|
||||
'use strict';
|
||||
|
||||
@@ -1779,10 +2073,10 @@ if (String(new RangeError('test')) !== 'RangeError: test') {
|
||||
}
|
||||
}(this, function () {
|
||||
|
||||
var call = Function.prototype.call;
|
||||
var call = Function.call;
|
||||
var prototypeOfObject = Object.prototype;
|
||||
var owns = call.bind(prototypeOfObject.hasOwnProperty);
|
||||
var propertyIsEnumerable = call.bind(prototypeOfObject.propertyIsEnumerable);
|
||||
var isEnumerable = call.bind(prototypeOfObject.propertyIsEnumerable);
|
||||
var toStr = call.bind(prototypeOfObject.toString);
|
||||
|
||||
// If JS engine supports accessors creating shortcuts.
|
||||
@@ -1881,7 +2175,7 @@ if (!Object.getOwnPropertyDescriptor || getOwnPropertyDescriptorFallback) {
|
||||
// If object has a property then it's for sure `configurable`, and
|
||||
// probably `enumerable`. Detect enumerability though.
|
||||
descriptor = {
|
||||
enumerable: propertyIsEnumerable(object, property),
|
||||
enumerable: isEnumerable(object, property),
|
||||
configurable: true
|
||||
};
|
||||
|
||||
|
||||
externo
+1
-1
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("ar",{
|
||||
"Fullscreen": "ملء الشاشة",
|
||||
"Non-Fullscreen": "غير ملء الشاشة",
|
||||
"Mute": "صامت",
|
||||
"Unmuted": "غير الصامت",
|
||||
"Unmute": "غير الصامت",
|
||||
"Playback Rate": "معدل التشغيل",
|
||||
"Subtitles": "الترجمة",
|
||||
"subtitles off": "ايقاف الترجمة",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("ba",{
|
||||
"Fullscreen": "Puni ekran",
|
||||
"Non-Fullscreen": "Mali ekran",
|
||||
"Mute": "Prigušen",
|
||||
"Unmuted": "Ne-prigušen",
|
||||
"Unmute": "Ne-prigušen",
|
||||
"Playback Rate": "Stopa reprodukcije",
|
||||
"Subtitles": "Podnaslov",
|
||||
"subtitles off": "Podnaslov deaktiviran",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("bg",{
|
||||
"Fullscreen": "Цял екран",
|
||||
"Non-Fullscreen": "Спиране на цял екран",
|
||||
"Mute": "Без звук",
|
||||
"Unmuted": "Със звук",
|
||||
"Unmute": "Със звук",
|
||||
"Playback Rate": "Скорост на възпроизвеждане",
|
||||
"Subtitles": "Субтитри",
|
||||
"subtitles off": "Спряни субтитри",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("ca",{
|
||||
"Fullscreen": "Pantalla completa",
|
||||
"Non-Fullscreen": "Pantalla no completa",
|
||||
"Mute": "Silencia",
|
||||
"Unmuted": "Amb so",
|
||||
"Unmute": "Amb so",
|
||||
"Playback Rate": "Velocitat de reproducció",
|
||||
"Subtitles": "Subtítols",
|
||||
"subtitles off": "Subtítols desactivats",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("cs",{
|
||||
"Fullscreen": "Celá obrazovka",
|
||||
"Non-Fullscreen": "Zmenšená obrazovka",
|
||||
"Mute": "Ztlumit zvuk",
|
||||
"Unmuted": "Přehrát zvuk",
|
||||
"Unmute": "Přehrát zvuk",
|
||||
"Playback Rate": "Rychlost přehrávání",
|
||||
"Subtitles": "Titulky",
|
||||
"subtitles off": "Titulky vypnuty",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("da",{
|
||||
"Fullscreen": "Fuldskærm",
|
||||
"Non-Fullscreen": "Luk fuldskærm",
|
||||
"Mute": "Uden lyd",
|
||||
"Unmuted": "Med lyd",
|
||||
"Unmute": "Med lyd",
|
||||
"Playback Rate": "Afspilningsrate",
|
||||
"Subtitles": "Undertekster",
|
||||
"subtitles off": "Uden undertekster",
|
||||
|
||||
externo
+10
-2
@@ -11,7 +11,7 @@ videojs.addLanguage("de",{
|
||||
"Fullscreen": "Vollbild",
|
||||
"Non-Fullscreen": "Kein Vollbild",
|
||||
"Mute": "Ton aus",
|
||||
"Unmuted": "Ton ein",
|
||||
"Unmute": "Ton ein",
|
||||
"Playback Rate": "Wiedergabegeschwindigkeit",
|
||||
"Subtitles": "Untertitel",
|
||||
"subtitles off": "Untertitel aus",
|
||||
@@ -22,5 +22,13 @@ videojs.addLanguage("de",{
|
||||
"A network error caused the media download to fail part-way.": "Der Videodownload ist aufgrund eines Netzwerkfehlers fehlgeschlagen.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Das Video konnte nicht geladen werden, da entweder ein Server- oder Netzwerkfehler auftrat oder das Format nicht unterstützt wird.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Die Videowiedergabe wurde entweder wegen eines Problems mit einem beschädigten Video oder wegen verwendeten Funktionen, die vom Browser nicht unterstützt werden, abgebrochen.",
|
||||
"No compatible source was found for this media.": "Für dieses Video wurde keine kompatible Quelle gefunden."
|
||||
"No compatible source was found for this media.": "Für dieses Video wurde keine kompatible Quelle gefunden.",
|
||||
"Play video": "Video abspielen",
|
||||
"Close": "Schließen",
|
||||
"Modal Window": "Modales Fenster",
|
||||
"This is a modal window": "Dies ist ein modales Fenster",
|
||||
"This modal can be closed by pressing the Escape key or activating the close button.": "Durch Drücken der Esc-Taste bzw. Betätigung der Schaltfläche \"Schließen\" wird dieses modale Fenster geschlossen.",
|
||||
", opens captions settings dialog": ", öffnet Einstellungen für Untertitel",
|
||||
", opens subtitles settings dialog": ", öffnet Einstellungen für Untertitel",
|
||||
", selected": " (ausgewählt)"
|
||||
});
|
||||
externo
+34
@@ -0,0 +1,34 @@
|
||||
videojs.addLanguage("en",{
|
||||
"Play": "Play",
|
||||
"Pause": "Pause",
|
||||
"Current Time": "Current Time",
|
||||
"Duration Time": "Duration Time",
|
||||
"Remaining Time": "Remaining Time",
|
||||
"Stream Type": "Stream Type",
|
||||
"LIVE": "LIVE",
|
||||
"Loaded": "Loaded",
|
||||
"Progress": "Progress",
|
||||
"Fullscreen": "Fullscreen",
|
||||
"Non-Fullscreen": "Non-Fullscreen",
|
||||
"Mute": "Mute",
|
||||
"Unmute": "Unmute",
|
||||
"Playback Rate": "Playback Rate",
|
||||
"Subtitles": "Subtitles",
|
||||
"subtitles off": "subtitles off",
|
||||
"Captions": "Captions",
|
||||
"captions off": "captions off",
|
||||
"Chapters": "Chapters",
|
||||
"You aborted the media playback": "You aborted the media playback",
|
||||
"A network error caused the media download to fail part-way.": "A network error caused the media download to fail part-way.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "The media could not be loaded, either because the server or network failed or because the format is not supported.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.",
|
||||
"No compatible source was found for this media.": "No compatible source was found for this media.",
|
||||
"Play video": "Play video",
|
||||
"Close": "Close",
|
||||
"Modal Window": "Modal Window",
|
||||
"This is a modal window": "This is a modal window",
|
||||
"This modal can be closed by pressing the Escape key or activating the close button.": "This modal can be closed by pressing the Escape key or activating the close button.",
|
||||
", opens captions settings dialog": ", opens captions settings dialog",
|
||||
", opens subtitles settings dialog": ", opens subtitles settings dialog",
|
||||
", selected": ", selected"
|
||||
});
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("es",{
|
||||
"Fullscreen": "Pantalla completa",
|
||||
"Non-Fullscreen": "Pantalla no completa",
|
||||
"Mute": "Silenciar",
|
||||
"Unmuted": "No silenciado",
|
||||
"Unmute": "No silenciado",
|
||||
"Playback Rate": "Velocidad de reproducción",
|
||||
"Subtitles": "Subtítulos",
|
||||
"subtitles off": "Subtítulos desactivados",
|
||||
|
||||
externo
+26
@@ -0,0 +1,26 @@
|
||||
videojs.addLanguage("fa",{
|
||||
"Play": "پخش",
|
||||
"Pause": "وقفه",
|
||||
"Current Time": "زمان کنونی",
|
||||
"Duration Time": "مدت زمان",
|
||||
"Remaining Time": "زمان باقیمانده",
|
||||
"Stream Type": "نوع استریم",
|
||||
"LIVE": "زنده",
|
||||
"Loaded": "فراخوانی شده",
|
||||
"Progress": "پیشرفت",
|
||||
"Fullscreen": "تمام صفحه",
|
||||
"Non-Fullscreen": "نمایش عادی",
|
||||
"Mute": "بی صدا",
|
||||
"Unmute": "بهمراه صدا",
|
||||
"Playback Rate": "سرعت پخش",
|
||||
"Subtitles": "زیرنویس",
|
||||
"subtitles off": "بدون زیرنویس",
|
||||
"Captions": "عنوان",
|
||||
"captions off": "بدون عنوان",
|
||||
"Chapters": "فصل",
|
||||
"You aborted the media playback": "شما پخش را متوقف کردید.",
|
||||
"A network error caused the media download to fail part-way.": "مشکل در دریافت ویدئو ...",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "فرمت پشتیبانی نمیشود یا خطایی روی داده است.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "مشکل در دریافت ویدئو ...",
|
||||
"No compatible source was found for this media.": "هیچ ورودی ای برای این رسانه شناسایی نشد."
|
||||
});
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("fi",{
|
||||
"Fullscreen": "Koko näyttö",
|
||||
"Non-Fullscreen": "Koko näyttö pois",
|
||||
"Mute": "Ääni pois",
|
||||
"Unmuted": "Ääni päällä",
|
||||
"Unmute": "Ääni päällä",
|
||||
"Playback Rate": "Toistonopeus",
|
||||
"Subtitles": "Tekstitys",
|
||||
"subtitles off": "Tekstitys pois",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("fr",{
|
||||
"Fullscreen": "Plein écran",
|
||||
"Non-Fullscreen": "Fenêtré",
|
||||
"Mute": "Sourdine",
|
||||
"Unmuted": "Son activé",
|
||||
"Unmute": "Son activé",
|
||||
"Playback Rate": "Vitesse de lecture",
|
||||
"Subtitles": "Sous-titres",
|
||||
"subtitles off": "Sous-titres désactivés",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("hr",{
|
||||
"Fullscreen": "Puni ekran",
|
||||
"Non-Fullscreen": "Mali ekran",
|
||||
"Mute": "Prigušen",
|
||||
"Unmuted": "Ne-prigušen",
|
||||
"Unmute": "Ne-prigušen",
|
||||
"Playback Rate": "Stopa reprodukcije",
|
||||
"Subtitles": "Podnaslov",
|
||||
"subtitles off": "Podnaslov deaktiviran",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("hu",{
|
||||
"Fullscreen": "Teljes képernyő",
|
||||
"Non-Fullscreen": "Normál méret",
|
||||
"Mute": "Némítás",
|
||||
"Unmuted": "Némítás kikapcsolva",
|
||||
"Unmute": "Némítás kikapcsolva",
|
||||
"Playback Rate": "Lejátszási sebesség",
|
||||
"Subtitles": "Feliratok",
|
||||
"subtitles off": "Feliratok kikapcsolva",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("it",{
|
||||
"Fullscreen": "Schermo intero",
|
||||
"Non-Fullscreen": "Chiudi schermo intero",
|
||||
"Mute": "Muto",
|
||||
"Unmuted": "Audio",
|
||||
"Unmute": "Audio",
|
||||
"Playback Rate": "Tasso di riproduzione",
|
||||
"Subtitles": "Sottotitoli",
|
||||
"subtitles off": "Senza sottotitoli",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("ja",{
|
||||
"Fullscreen": "フルスクリーン",
|
||||
"Non-Fullscreen": "フルスクリーン以外",
|
||||
"Mute": "ミュート",
|
||||
"Unmuted": "ミュート解除",
|
||||
"Unmute": "ミュート解除",
|
||||
"Playback Rate": "再生レート",
|
||||
"Subtitles": "サブタイトル",
|
||||
"subtitles off": "サブタイトル オフ",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("ko",{
|
||||
"Fullscreen": "전체 화면",
|
||||
"Non-Fullscreen": "전체 화면 해제",
|
||||
"Mute": "음소거",
|
||||
"Unmuted": "음소거 해제",
|
||||
"Unmute": "음소거 해제",
|
||||
"Playback Rate": "재생 비율",
|
||||
"Subtitles": "서브타이틀",
|
||||
"subtitles off": "서브타이틀 끄기",
|
||||
|
||||
externo
+26
@@ -0,0 +1,26 @@
|
||||
videojs.addLanguage("nb",{
|
||||
"Play": "Spill",
|
||||
"Pause": "Pause",
|
||||
"Current Time": "Aktuell tid",
|
||||
"Duration Time": "Varighet",
|
||||
"Remaining Time": "Gjenstående tid",
|
||||
"Stream Type": "Type strøm",
|
||||
"LIVE": "DIREKTE",
|
||||
"Loaded": "Lastet inn",
|
||||
"Progress": "Status",
|
||||
"Fullscreen": "Fullskjerm",
|
||||
"Non-Fullscreen": "Lukk fullskjerm",
|
||||
"Mute": "Lyd av",
|
||||
"Unmute": "Lyd på",
|
||||
"Playback Rate": "Avspillingsrate",
|
||||
"Subtitles": "Undertekst på",
|
||||
"subtitles off": "Undertekst av",
|
||||
"Captions": "Undertekst for hørselshemmede på",
|
||||
"captions off": "Undertekst for hørselshemmede av",
|
||||
"Chapters": "Kapitler",
|
||||
"You aborted the media playback": "Du avbrøt avspillingen.",
|
||||
"A network error caused the media download to fail part-way.": "En nettverksfeil avbrøt nedlasting av videoen.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Videoen kunne ikke lastes ned, på grunn av nettverksfeil eller serverfeil, eller fordi formatet ikke er støttet.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Videoavspillingen ble avbrudt på grunn av ødelagte data eller fordi videoen ville gjøre noe som nettleseren din ikke har støtte for.",
|
||||
"No compatible source was found for this media.": "Fant ikke en kompatibel kilde for dette mediainnholdet."
|
||||
});
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("nl",{
|
||||
"Fullscreen": "Volledig scherm",
|
||||
"Non-Fullscreen": "Geen volledig scherm",
|
||||
"Mute": "Geluid uit",
|
||||
"Unmuted": "Geluid aan",
|
||||
"Unmute": "Geluid aan",
|
||||
"Playback Rate": "Weergavesnelheid",
|
||||
"Subtitles": "Ondertiteling",
|
||||
"subtitles off": "Ondertiteling uit",
|
||||
|
||||
externo
+26
@@ -0,0 +1,26 @@
|
||||
videojs.addLanguage("nn",{
|
||||
"Play": "Spel",
|
||||
"Pause": "Pause",
|
||||
"Current Time": "Aktuell tid",
|
||||
"Duration Time": "Varigheit",
|
||||
"Remaining Time": "Tid attende",
|
||||
"Stream Type": "Type straum",
|
||||
"LIVE": "DIREKTE",
|
||||
"Loaded": "Lasta inn",
|
||||
"Progress": "Status",
|
||||
"Fullscreen": "Fullskjerm",
|
||||
"Non-Fullscreen": "Stenga fullskjerm",
|
||||
"Mute": "Ljod av",
|
||||
"Unmute": "Ljod på",
|
||||
"Playback Rate": "Avspelingsrate",
|
||||
"Subtitles": "Teksting på",
|
||||
"subtitles off": "Teksting av",
|
||||
"Captions": "Teksting for høyrselshemma på",
|
||||
"captions off": "Teksting for høyrselshemma av",
|
||||
"Chapters": "Kapitel",
|
||||
"You aborted the media playback": "Du avbraut avspelinga.",
|
||||
"A network error caused the media download to fail part-way.": "Ein nettverksfeil avbraut nedlasting av videoen.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Videoen kunne ikkje lastas ned, på grunn av ein nettverksfeil eller serverfeil, eller av di formatet ikkje er stoda.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Videoavspelinga blei broten på grunn av øydelagde data eller av di videoen ville gjera noe som nettlesaren din ikkje stodar.",
|
||||
"No compatible source was found for this media.": "Fant ikke en kompatibel kilde for dette mediainnholdet."
|
||||
});
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("pt-BR",{
|
||||
"Fullscreen": "Tela Cheia",
|
||||
"Non-Fullscreen": "Tela Normal",
|
||||
"Mute": "Mudo",
|
||||
"Unmuted": "Habilitar Som",
|
||||
"Unmute": "Habilitar Som",
|
||||
"Playback Rate": "Velocidade",
|
||||
"Subtitles": "Legendas",
|
||||
"subtitles off": "Sem Legendas",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("ru",{
|
||||
"Fullscreen": "Полноэкранный режим",
|
||||
"Non-Fullscreen": "Неполноэкранный режим",
|
||||
"Mute": "Без звука",
|
||||
"Unmuted": "Со звуком",
|
||||
"Unmute": "Со звуком",
|
||||
"Playback Rate": "Скорость воспроизведения",
|
||||
"Subtitles": "Субтитры",
|
||||
"subtitles off": "Субтитры выкл.",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("sr",{
|
||||
"Fullscreen": "Puni ekran",
|
||||
"Non-Fullscreen": "Mali ekran",
|
||||
"Mute": "Prigušen",
|
||||
"Unmuted": "Ne-prigušen",
|
||||
"Unmute": "Ne-prigušen",
|
||||
"Playback Rate": "Stopa reprodukcije",
|
||||
"Subtitles": "Podnaslov",
|
||||
"subtitles off": "Podnaslov deaktiviran",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("sv",{
|
||||
"Fullscreen": "Fullskärm",
|
||||
"Non-Fullscreen": "Ej fullskärm",
|
||||
"Mute": "Ljud av",
|
||||
"Unmuted": "Ljud på",
|
||||
"Unmute": "Ljud på",
|
||||
"Playback Rate": "Uppspelningshastighet",
|
||||
"Subtitles": "Text på",
|
||||
"subtitles off": "Text av",
|
||||
|
||||
externo
+11
-3
@@ -11,10 +11,10 @@ videojs.addLanguage("tr",{
|
||||
"Fullscreen": "Tam Ekran",
|
||||
"Non-Fullscreen": "Küçük Ekran",
|
||||
"Mute": "Ses Kapa",
|
||||
"Unmuted": "Ses Aç",
|
||||
"Unmute": "Ses Aç",
|
||||
"Playback Rate": "Oynatma Hızı",
|
||||
"Subtitles": "Altyazı",
|
||||
"subtitles off": "Altyazı Kapat",
|
||||
"subtitles off": "Altyazı Kapalı",
|
||||
"Captions": "Ek Açıklamalar",
|
||||
"captions off": "Ek Açıklamalar Kapalı",
|
||||
"Chapters": "Bölümler",
|
||||
@@ -22,5 +22,13 @@ videojs.addLanguage("tr",{
|
||||
"A network error caused the media download to fail part-way.": "Video indirilirken bağlantı sorunu oluştu.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video oynatılamadı, ağ ya da sunucu hatası veya belirtilen format desteklenmiyor.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Tarayıcınız desteklemediği için videoda hata oluştu.",
|
||||
"No compatible source was found for this media.": "Video için kaynak bulunamadı."
|
||||
"No compatible source was found for this media.": "Video için kaynak bulunamadı.",
|
||||
"Play video": "Videoyu Oynat",
|
||||
"Close": "Kapat",
|
||||
"Modal Window": "Modal Penceresi",
|
||||
"This is a modal window": "Bu bir modal penceresidir",
|
||||
"This modal can be closed by pressing the Escape key or activating the close button.": "Bu modal ESC tuşuna basarak ya da kapata tıklanarak kapatılabilir.",
|
||||
", opens captions settings dialog": ", ek açıklama ayarları menüsünü açar",
|
||||
", opens subtitles settings dialog": ", altyazı ayarları menüsünü açar",
|
||||
", selected": ", seçildi"
|
||||
});
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("uk",{
|
||||
"Fullscreen": "Повноекранний режим",
|
||||
"Non-Fullscreen": "Неповноекранний режим",
|
||||
"Mute": "Без звуку",
|
||||
"Unmuted": "Зі звуком",
|
||||
"Unmute": "Зі звуком",
|
||||
"Playback Rate": "Швидкість відтворення",
|
||||
"Subtitles": "Субтитри",
|
||||
"subtitles off": "Без субтитрів",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("vi",{
|
||||
"Fullscreen": "Toàn màn hình",
|
||||
"Non-Fullscreen": "Thoát toàn màn hình",
|
||||
"Mute": "Tắt tiếng",
|
||||
"Unmuted": "Bật âm thanh",
|
||||
"Unmute": "Bật âm thanh",
|
||||
"Playback Rate": "Tốc độ phát",
|
||||
"Subtitles": "Phụ đề",
|
||||
"subtitles off": "Tắt phụ đề",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("zh-CN",{
|
||||
"Fullscreen": "全屏",
|
||||
"Non-Fullscreen": "退出全屏",
|
||||
"Mute": "静音",
|
||||
"Unmuted": "取消静音",
|
||||
"Unmute": "取消静音",
|
||||
"Playback Rate": "播放码率",
|
||||
"Subtitles": "字幕",
|
||||
"subtitles off": "字幕关闭",
|
||||
|
||||
externo
+1
-1
@@ -11,7 +11,7 @@ videojs.addLanguage("zh-TW",{
|
||||
"Fullscreen": "全螢幕",
|
||||
"Non-Fullscreen": "退出全螢幕",
|
||||
"Mute": "靜音",
|
||||
"Unmuted": "取消靜音",
|
||||
"Unmute": "取消靜音",
|
||||
"Playback Rate": " 播放速率",
|
||||
"Subtitles": "字幕",
|
||||
"subtitles off": "關閉字幕",
|
||||
|
||||
Arquivo binário não exibido.
externo
+29
-18
@@ -9,6 +9,9 @@
|
||||
.video-js .vjs-big-play-button:before, .video-js .vjs-control:before {
|
||||
text-align: center; }
|
||||
|
||||
.video-js {
|
||||
color: blue; }
|
||||
|
||||
@font-face {
|
||||
font-family: VideoJS;
|
||||
src: url("font/VideoJS.eot?#iefix") format("eot"); }
|
||||
@@ -475,7 +478,7 @@ body.vjs-full-window {
|
||||
bottom: 1.5em;
|
||||
max-height: 15em; }
|
||||
|
||||
.vjs-menu-button-popup:hover .vjs-menu,
|
||||
.vjs-workinghover .vjs-menu-button-popup:hover .vjs-menu,
|
||||
.vjs-menu-button-popup .vjs-menu.vjs-lock-showing {
|
||||
display: block; }
|
||||
|
||||
@@ -637,7 +640,8 @@ body.vjs-full-window {
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center; }
|
||||
align-items: center;
|
||||
min-width: 4em; }
|
||||
|
||||
.vjs-live .vjs-progress-control {
|
||||
display: none; }
|
||||
@@ -692,12 +696,12 @@ body.vjs-full-window {
|
||||
.video-js .vjs-play-progress:after {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: -2.4em;
|
||||
top: -3.4em;
|
||||
right: -1.5em;
|
||||
font-size: 0.9em;
|
||||
color: #000;
|
||||
content: attr(data-current-time);
|
||||
padding: 0.2em 0.5em;
|
||||
padding: 6px 8px 8px 8px;
|
||||
background-color: #fff;
|
||||
background-color: rgba(255, 255, 255, 0.8);
|
||||
-webkit-border-radius: 0.3em;
|
||||
@@ -850,11 +854,15 @@ body.vjs-full-window {
|
||||
overflow-y: hidden; }
|
||||
|
||||
.vjs-volume-menu-button-vertical:hover .vjs-menu-content,
|
||||
.vjs-volume-menu-button-vertical:focus .vjs-menu-content,
|
||||
.vjs-volume-menu-button-vertical.vjs-slider-active .vjs-menu-content,
|
||||
.vjs-volume-menu-button-vertical .vjs-lock-showing .vjs-menu-content {
|
||||
height: 8em;
|
||||
width: 2.9em; }
|
||||
|
||||
.vjs-volume-menu-button-horizontal:hover .vjs-menu-content,
|
||||
.vjs-volume-menu-button-horizontal:focus .vjs-menu-content,
|
||||
.vjs-volume-menu-button-horizontal .vjs-slider-active .vjs-menu-content,
|
||||
.vjs-volume-menu-button-horizontal .vjs-lock-showing .vjs-menu-content {
|
||||
height: 2.9em;
|
||||
width: 8em; }
|
||||
@@ -927,7 +935,11 @@ body.vjs-full-window {
|
||||
-ms-flex: none;
|
||||
flex: none;
|
||||
font-size: 1em;
|
||||
line-height: 3em; }
|
||||
line-height: 3em;
|
||||
min-width: 2em;
|
||||
width: auto;
|
||||
padding-left: 1em;
|
||||
padding-right: 1em; }
|
||||
|
||||
.vjs-live .vjs-time-control {
|
||||
display: none; }
|
||||
@@ -997,7 +1009,6 @@ video::-webkit-media-text-track-display {
|
||||
transform: translateY(-1.5em); }
|
||||
|
||||
.video-js .vjs-fullscreen-control {
|
||||
width: 3.8em;
|
||||
cursor: pointer;
|
||||
-webkit-box-flex: none;
|
||||
-moz-box-flex: none;
|
||||
@@ -1137,22 +1148,22 @@ video::-webkit-media-text-track-display {
|
||||
.video-js.vjs-layout-tiny:not(.vjs-fullscreen).vjs-no-flex .vjs-custom-control-spacer {
|
||||
width: auto; }
|
||||
|
||||
.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-current-time, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-captions-button, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-time-divider,
|
||||
.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-progress-control, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-duration, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-remaining-time, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-playback-rate,
|
||||
.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-mute-control, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-control, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-chapters-button, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-captions-button,
|
||||
.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-subtitles-button, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-menu-button {
|
||||
.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-current-time, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-time-divider, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-duration, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-remaining-time,
|
||||
.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-playback-rate, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-progress-control,
|
||||
.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-mute-control, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-control, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-menu-button,
|
||||
.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-chapters-button, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-captions-button, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-subtitles-button {
|
||||
display: none; }
|
||||
|
||||
.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-current-time, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-captions-button, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-time-divider,
|
||||
.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-duration, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-remaining-time, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-playback-rate, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-captions-button,
|
||||
.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-mute-control, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-control, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-chapters-button,
|
||||
.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-subtitles-button, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-button, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-fullscreen-control {
|
||||
.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-current-time, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-time-divider, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-duration, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-remaining-time,
|
||||
.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-playback-rate,
|
||||
.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-mute-control, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-control, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-menu-button,
|
||||
.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-chapters-button, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-captions-button, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-subtitles-button {
|
||||
display: none; }
|
||||
|
||||
.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-current-time, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-captions-button, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-time-divider,
|
||||
.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-duration, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-remaining-time, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-playback-rate,
|
||||
.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-mute-control, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-volume-control, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-chapters-button,
|
||||
.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-subtitles-button {
|
||||
.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-current-time, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-time-divider, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-duration, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-remaining-time,
|
||||
.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-playback-rate,
|
||||
.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-mute-control, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-volume-control,
|
||||
.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-chapters-button, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-captions-button, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-subtitles-button {
|
||||
display: none; }
|
||||
|
||||
.vjs-caption-settings {
|
||||
|
||||
externo
+1
-1
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
externo
+1314
-641
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
externo
+34
-28
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
externo
+11
-10
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
externo
+1
-1
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
@@ -17,7 +17,7 @@ Wait Until the Player is Ready
|
||||
------------------------------
|
||||
The time it takes Video.js to set up the video and API will vary depending on the playback technology being used (HTML5 will often be much faster to load than Flash). For that reason we want to use the player's 'ready' function to trigger any code that requires the player's API.
|
||||
|
||||
```javascript
|
||||
```js
|
||||
videojs("example_video_1").ready(function(){
|
||||
var myPlayer = this;
|
||||
|
||||
|
||||
+21
-17
@@ -5,7 +5,11 @@ Multiple language support allows for users of non-English locales to natively in
|
||||
|
||||
Creating the Language File
|
||||
--------------------------
|
||||
Video.js uses key/value object dictionaries in JSON form. A sample dictionary for Spanish `['es']` would look as follows;
|
||||
Video.js uses key/value object dictionaries in JSON form.
|
||||
|
||||
An English lang file is at [/lang/en.json](https://github.com/videojs/video.js/tree/master/lang/en.json) which should be used as a template for new files. This will be kept up to date with strings in the core player that need localizations.
|
||||
|
||||
A sample dictionary for Spanish `['es']` would look as follows:
|
||||
|
||||
```JSON
|
||||
{
|
||||
@@ -21,7 +25,7 @@ Video.js uses key/value object dictionaries in JSON form. A sample dictionary fo
|
||||
"Fullscreen": "Pantalla completa",
|
||||
"Non-Fullscreen": "Pantalla no completa",
|
||||
"Mute": "Silenciar",
|
||||
"Unmuted": "No silenciado",
|
||||
"Unmute": "No silenciado",
|
||||
"Playback Rate": "Velocidad de reproducción",
|
||||
"Subtitles": "Subtítulos",
|
||||
"subtitles off": "Subtítulos desactivados",
|
||||
@@ -38,7 +42,7 @@ Video.js uses key/value object dictionaries in JSON form. A sample dictionary fo
|
||||
|
||||
Notes:
|
||||
|
||||
- The file name should always be in the format `XX.json`, where `XX` is the two letter value of the language reported to the browser (for options see the bottom of this document).
|
||||
- The file name should always be in the format `XX.json`, where `XX` is the language code. This should be a two letter code (for options see the bottom of this document) except for cases where a more specific code with sub-code is appropriate, e.g. `zh-CN.lang`.
|
||||
- For automatic inclusion at build time, add your language file to the `/lang` directory (see 'Adding Languages to Video.js below').
|
||||
|
||||
Adding Languages to Video.js
|
||||
@@ -69,7 +73,7 @@ NOTE: These need to be added after the core Video.js script.
|
||||
"Fullscreen": "Pantalla completa",
|
||||
"Non-Fullscreen": "Pantalla no completa",
|
||||
"Mute": "Silenciar",
|
||||
"Unmuted": "No silenciado",
|
||||
"Unmute": "No silenciado",
|
||||
"Playback Rate": "Velocidad de reproducción",
|
||||
"Subtitles": "Subtítulos",
|
||||
"subtitles off": "Subtítulos desactivados",
|
||||
@@ -89,12 +93,12 @@ NOTE: These need to be added after the core Video.js script.
|
||||
3. During a Video.js player instantiation. Adding the languages to the configuration object provided in the `data-setup` attribute.
|
||||
|
||||
```html
|
||||
<video id="example_video_1" class="video-js vjs-default-skin"
|
||||
controls preload="auto" width="640" height="264"
|
||||
data-setup='{"languages":{"es":{"Play":"Juego"}}}'>
|
||||
<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="example_video_1" class="video-js vjs-default-skin"
|
||||
controls preload="auto" width="640" height="264"
|
||||
data-setup='{"languages":{"es":{"Play":"Juego"}}}'>
|
||||
<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="http://example.com/path/to/captions.vtt" srclang="en" label="English" default>
|
||||
|
||||
@@ -110,12 +114,12 @@ Setting Default Language in a Video.js Player
|
||||
During a Video.js player instantiation you can force it to localize to a specific language by including the locale value into the configuration object via the `data-setup` attribute. Valid options listed at the bottom of the page for reference.
|
||||
|
||||
```html
|
||||
<video id="example_video_1" class="video-js vjs-default-skin"
|
||||
controls preload="auto" width="640" height="264"
|
||||
data-setup='{"language":"es"}'>
|
||||
<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="example_video_1" class="video-js vjs-default-skin"
|
||||
controls preload="auto" width="640" height="264"
|
||||
data-setup='{"language":"es"}'>
|
||||
<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="http://example.com/path/to/captions.vtt" srclang="en" label="English" default>
|
||||
|
||||
@@ -145,7 +149,7 @@ Localization in Plugins
|
||||
|
||||
When you're developing a plugin, you can also introduce new localized strings. Simply wrap the string with the player's `localize` function:
|
||||
|
||||
```javascript
|
||||
```js
|
||||
var details = '<div class="vjs-errors-details">' + player.localize('Technical details') + '</div>';
|
||||
```
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@ Component Options
|
||||
You can set the options for any single player component. For instance, if you wanted to remove the `muteToggle` button, which
|
||||
is a child of `controlBar`, you can just set that component to false:
|
||||
|
||||
```javascript
|
||||
```js
|
||||
var player = videojs('video-id', {
|
||||
controlBar: {
|
||||
muteToggle: false
|
||||
@@ -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
|
||||
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.
|
||||
|
||||
@@ -11,19 +11,23 @@ Step 1: Write Some Javascript
|
||||
-----------------------------
|
||||
You may have already done this step. Code up something interesting and then wrap it in a function. At the most basic level, that's all a video.js plugin is. By convention, plugins take a hash of options as their first argument:
|
||||
|
||||
```js
|
||||
function examplePlugin(options) {
|
||||
this.on('play', function(e) {
|
||||
console.log('playback has started!');
|
||||
});
|
||||
};
|
||||
```
|
||||
|
||||
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
|
||||
-------------------------------
|
||||
It's time to give the rest of the world the opportunity to be awed by your genius. When your plugin is loaded, it needs to let Video.js know this amazing new functionality is now available:
|
||||
|
||||
```js
|
||||
videojs.plugin('examplePlugin', examplePlugin);
|
||||
```
|
||||
|
||||
From this point on, your plugin will be added to the Video.js prototype and will show up as a property on every instance created. Make sure you choose a unique name that doesn't clash with any of the properties already in Video.js. Which leads us to...
|
||||
|
||||
@@ -31,6 +35,7 @@ Step 3: Using A Plugin
|
||||
----------------------
|
||||
There are two ways to initialize a plugin. If you're creating your video tag dynamically, you can specify the plugins you'd like to initialize with it and any options you want to pass to them:
|
||||
|
||||
```js
|
||||
videojs('vidId', {
|
||||
plugins: {
|
||||
examplePlugin: {
|
||||
@@ -38,11 +43,14 @@ There are two ways to initialize a plugin. If you're creating your video tag dyn
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
If you've already initialized your video tag, you can activate a plugin at any time by calling its setup function directly:
|
||||
|
||||
```js
|
||||
var video = videojs('cool-vid');
|
||||
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.
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ Call `.dispose()`
|
||||
|
||||
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```
|
||||
```js
|
||||
var oldPlayer = document.getElementById('my-player');
|
||||
videojs(oldPlayer).dispose();
|
||||
```
|
||||
|
||||
@@ -14,10 +14,12 @@ 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>
|
||||
```
|
||||
|
||||
Alternatively you can always [go here](http://videojs.com/getting-started/) to get the latest URL for videojs CDN.
|
||||
|
||||
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:
|
||||
|
||||
```js
|
||||
@@ -56,7 +58,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.
|
||||
|
||||
@@ -70,9 +72,9 @@ Otherwise include/exclude attributes, settings, sources, and tracks exactly as y
|
||||
controls preload="auto" width="640" height="264"
|
||||
poster="http://video-js.zencoder.com/oceans-clip.png"
|
||||
data-setup='{"example_option":true}'>
|
||||
<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://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" />
|
||||
<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>
|
||||
```
|
||||
|
||||
+3
-25
@@ -23,9 +23,9 @@ Once you have your WebVTT file created, you can add it to Video.js using the tra
|
||||
<video id="example_video_1" class="video-js vjs-default-skin"
|
||||
controls preload="auto" width="640" height="264"
|
||||
data-setup='{"example_option":true}'>
|
||||
<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://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="http://example.com/path/to/captions.vtt" srclang="en" label="English" default>
|
||||
|
||||
@@ -56,8 +56,6 @@ The two-letter code (valid BCP 47 language tag) for the language of the text tra
|
||||
|
||||
<table border="0" cellspacing="5" cellpadding="5">
|
||||
<tr>
|
||||
<td>
|
||||
|
||||
<table>
|
||||
<tr><th>ab<th><td>Abkhazian</td></tr>
|
||||
<tr><th>aa<th><td>Afar</td></tr>
|
||||
@@ -96,12 +94,6 @@ The two-letter code (valid BCP 47 language tag) for the language of the text tra
|
||||
<tr><th>fa<th><td>Farsi</td></tr>
|
||||
<tr><th>fj<th><td>Fiji</td></tr>
|
||||
<tr><th>fi<th><td>Finnish</td></tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
<td>
|
||||
|
||||
<table>
|
||||
<tr><th>fr<th><td>French</td></tr>
|
||||
<tr><th>fy<th><td>Frisian</td></tr>
|
||||
<tr><th>gl<th><td>Galician</td></tr>
|
||||
@@ -139,12 +131,6 @@ The two-letter code (valid BCP 47 language tag) for the language of the text tra
|
||||
<tr><th>ku<th><td>Kurdish</td></tr>
|
||||
<tr><th>lo<th><td>Laothian</td></tr>
|
||||
<tr><th>la<th><td>Latin</td></tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
<td>
|
||||
|
||||
<table>
|
||||
<tr><th>lv<th><td>Latvian (Lettish)</td></tr>
|
||||
<tr><th>li<th><td>Limburgish ( Limburger)</td></tr>
|
||||
<tr><th>ln<th><td>Lingala</td></tr>
|
||||
@@ -182,12 +168,6 @@ The two-letter code (valid BCP 47 language tag) for the language of the text tra
|
||||
<tr><th>sn<th><td>Shona</td></tr>
|
||||
<tr><th>ii<th><td>Sichuan Yi</td></tr>
|
||||
<tr><th>sd<th><td>Sindhi</td></tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
<td>
|
||||
|
||||
<table>
|
||||
<tr><th>si<th><td>Sinhalese</td></tr>
|
||||
<tr><th>ss<th><td>Siswati</td></tr>
|
||||
<tr><th>sk<th><td>Slovak</td></tr>
|
||||
@@ -224,7 +204,5 @@ The two-letter code (valid BCP 47 language tag) for the language of the text tra
|
||||
<tr><th>yo<th><td>Yoruba</td></tr>
|
||||
<tr><th>zu<th><td>Zulu</td></tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "ملء الشاشة",
|
||||
"Non-Fullscreen": "غير ملء الشاشة",
|
||||
"Mute": "صامت",
|
||||
"Unmuted": "غير الصامت",
|
||||
"Unmute": "غير الصامت",
|
||||
"Playback Rate": "معدل التشغيل",
|
||||
"Subtitles": "الترجمة",
|
||||
"subtitles off": "ايقاف الترجمة",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Puni ekran",
|
||||
"Non-Fullscreen": "Mali ekran",
|
||||
"Mute": "Prigušen",
|
||||
"Unmuted": "Ne-prigušen",
|
||||
"Unmute": "Ne-prigušen",
|
||||
"Playback Rate": "Stopa reprodukcije",
|
||||
"Subtitles": "Podnaslov",
|
||||
"subtitles off": "Podnaslov deaktiviran",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Цял екран",
|
||||
"Non-Fullscreen": "Спиране на цял екран",
|
||||
"Mute": "Без звук",
|
||||
"Unmuted": "Със звук",
|
||||
"Unmute": "Със звук",
|
||||
"Playback Rate": "Скорост на възпроизвеждане",
|
||||
"Subtitles": "Субтитри",
|
||||
"subtitles off": "Спряни субтитри",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Pantalla completa",
|
||||
"Non-Fullscreen": "Pantalla no completa",
|
||||
"Mute": "Silencia",
|
||||
"Unmuted": "Amb so",
|
||||
"Unmute": "Amb so",
|
||||
"Playback Rate": "Velocitat de reproducció",
|
||||
"Subtitles": "Subtítols",
|
||||
"subtitles off": "Subtítols desactivats",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Celá obrazovka",
|
||||
"Non-Fullscreen": "Zmenšená obrazovka",
|
||||
"Mute": "Ztlumit zvuk",
|
||||
"Unmuted": "Přehrát zvuk",
|
||||
"Unmute": "Přehrát zvuk",
|
||||
"Playback Rate": "Rychlost přehrávání",
|
||||
"Subtitles": "Titulky",
|
||||
"subtitles off": "Titulky vypnuty",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Fuldskærm",
|
||||
"Non-Fullscreen": "Luk fuldskærm",
|
||||
"Mute": "Uden lyd",
|
||||
"Unmuted": "Med lyd",
|
||||
"Unmute": "Med lyd",
|
||||
"Playback Rate": "Afspilningsrate",
|
||||
"Subtitles": "Undertekster",
|
||||
"subtitles off": "Uden undertekster",
|
||||
|
||||
+10
-2
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Vollbild",
|
||||
"Non-Fullscreen": "Kein Vollbild",
|
||||
"Mute": "Ton aus",
|
||||
"Unmuted": "Ton ein",
|
||||
"Unmute": "Ton ein",
|
||||
"Playback Rate": "Wiedergabegeschwindigkeit",
|
||||
"Subtitles": "Untertitel",
|
||||
"subtitles off": "Untertitel aus",
|
||||
@@ -22,5 +22,13 @@
|
||||
"A network error caused the media download to fail part-way.": "Der Videodownload ist aufgrund eines Netzwerkfehlers fehlgeschlagen.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Das Video konnte nicht geladen werden, da entweder ein Server- oder Netzwerkfehler auftrat oder das Format nicht unterstützt wird.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Die Videowiedergabe wurde entweder wegen eines Problems mit einem beschädigten Video oder wegen verwendeten Funktionen, die vom Browser nicht unterstützt werden, abgebrochen.",
|
||||
"No compatible source was found for this media.": "Für dieses Video wurde keine kompatible Quelle gefunden."
|
||||
"No compatible source was found for this media.": "Für dieses Video wurde keine kompatible Quelle gefunden.",
|
||||
"Play video": "Video abspielen",
|
||||
"Close": "Schließen",
|
||||
"Modal Window": "Modales Fenster",
|
||||
"This is a modal window": "Dies ist ein modales Fenster",
|
||||
"This modal can be closed by pressing the Escape key or activating the close button.": "Durch Drücken der Esc-Taste bzw. Betätigung der Schaltfläche \"Schließen\" wird dieses modale Fenster geschlossen.",
|
||||
", opens captions settings dialog": ", öffnet Einstellungen für Untertitel",
|
||||
", opens subtitles settings dialog": ", öffnet Einstellungen für Untertitel",
|
||||
", selected": " (ausgewählt)"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"Play": "Play",
|
||||
"Pause": "Pause",
|
||||
"Current Time": "Current Time",
|
||||
"Duration Time": "Duration Time",
|
||||
"Remaining Time": "Remaining Time",
|
||||
"Stream Type": "Stream Type",
|
||||
"LIVE": "LIVE",
|
||||
"Loaded": "Loaded",
|
||||
"Progress": "Progress",
|
||||
"Fullscreen": "Fullscreen",
|
||||
"Non-Fullscreen": "Non-Fullscreen",
|
||||
"Mute": "Mute",
|
||||
"Unmute": "Unmute",
|
||||
"Playback Rate": "Playback Rate",
|
||||
"Subtitles": "Subtitles",
|
||||
"subtitles off": "subtitles off",
|
||||
"Captions": "Captions",
|
||||
"captions off": "captions off",
|
||||
"Chapters": "Chapters",
|
||||
"You aborted the media playback": "You aborted the media playback",
|
||||
"A network error caused the media download to fail part-way.": "A network error caused the media download to fail part-way.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "The media could not be loaded, either because the server or network failed or because the format is not supported.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.",
|
||||
"No compatible source was found for this media.": "No compatible source was found for this media.",
|
||||
"Play video": "Play video",
|
||||
"Close": "Close",
|
||||
"Modal Window": "Modal Window",
|
||||
"This is a modal window": "This is a modal window",
|
||||
"This modal can be closed by pressing the Escape key or activating the close button.": "This modal can be closed by pressing the Escape key or activating the close button.",
|
||||
", opens captions settings dialog": ", opens captions settings dialog",
|
||||
", opens subtitles settings dialog": ", opens subtitles settings dialog",
|
||||
", selected": ", selected"
|
||||
}
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Pantalla completa",
|
||||
"Non-Fullscreen": "Pantalla no completa",
|
||||
"Mute": "Silenciar",
|
||||
"Unmuted": "No silenciado",
|
||||
"Unmute": "No silenciado",
|
||||
"Playback Rate": "Velocidad de reproducción",
|
||||
"Subtitles": "Subtítulos",
|
||||
"subtitles off": "Subtítulos desactivados",
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "پخش",
|
||||
"Pause": "وقفه",
|
||||
"Current Time": "زمان کنونی",
|
||||
"Duration Time": "مدت زمان",
|
||||
"Remaining Time": "زمان باقیمانده",
|
||||
"Stream Type": "نوع استریم",
|
||||
"LIVE": "زنده",
|
||||
"Loaded": "فراخوانی شده",
|
||||
"Progress": "پیشرفت",
|
||||
"Fullscreen": "تمام صفحه",
|
||||
"Non-Fullscreen": "نمایش عادی",
|
||||
"Mute": "بی صدا",
|
||||
"Unmute": "بهمراه صدا",
|
||||
"Playback Rate": "سرعت پخش",
|
||||
"Subtitles": "زیرنویس",
|
||||
"subtitles off": "بدون زیرنویس",
|
||||
"Captions": "عنوان",
|
||||
"captions off": "بدون عنوان",
|
||||
"Chapters": "فصل",
|
||||
"You aborted the media playback": "شما پخش را متوقف کردید.",
|
||||
"A network error caused the media download to fail part-way.": "مشکل در دریافت ویدئو ...",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "فرمت پشتیبانی نمیشود یا خطایی روی داده است.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "مشکل در دریافت ویدئو ...",
|
||||
"No compatible source was found for this media.": "هیچ ورودی ای برای این رسانه شناسایی نشد."
|
||||
}
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Koko näyttö",
|
||||
"Non-Fullscreen": "Koko näyttö pois",
|
||||
"Mute": "Ääni pois",
|
||||
"Unmuted": "Ääni päällä",
|
||||
"Unmute": "Ääni päällä",
|
||||
"Playback Rate": "Toistonopeus",
|
||||
"Subtitles": "Tekstitys",
|
||||
"subtitles off": "Tekstitys pois",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Plein écran",
|
||||
"Non-Fullscreen": "Fenêtré",
|
||||
"Mute": "Sourdine",
|
||||
"Unmuted": "Son activé",
|
||||
"Unmute": "Son activé",
|
||||
"Playback Rate": "Vitesse de lecture",
|
||||
"Subtitles": "Sous-titres",
|
||||
"subtitles off": "Sous-titres désactivés",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Puni ekran",
|
||||
"Non-Fullscreen": "Mali ekran",
|
||||
"Mute": "Prigušen",
|
||||
"Unmuted": "Ne-prigušen",
|
||||
"Unmute": "Ne-prigušen",
|
||||
"Playback Rate": "Stopa reprodukcije",
|
||||
"Subtitles": "Podnaslov",
|
||||
"subtitles off": "Podnaslov deaktiviran",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Teljes képernyő",
|
||||
"Non-Fullscreen": "Normál méret",
|
||||
"Mute": "Némítás",
|
||||
"Unmuted": "Némítás kikapcsolva",
|
||||
"Unmute": "Némítás kikapcsolva",
|
||||
"Playback Rate": "Lejátszási sebesség",
|
||||
"Subtitles": "Feliratok",
|
||||
"subtitles off": "Feliratok kikapcsolva",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Schermo intero",
|
||||
"Non-Fullscreen": "Chiudi schermo intero",
|
||||
"Mute": "Muto",
|
||||
"Unmuted": "Audio",
|
||||
"Unmute": "Audio",
|
||||
"Playback Rate": "Tasso di riproduzione",
|
||||
"Subtitles": "Sottotitoli",
|
||||
"subtitles off": "Senza sottotitoli",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "フルスクリーン",
|
||||
"Non-Fullscreen": "フルスクリーン以外",
|
||||
"Mute": "ミュート",
|
||||
"Unmuted": "ミュート解除",
|
||||
"Unmute": "ミュート解除",
|
||||
"Playback Rate": "再生レート",
|
||||
"Subtitles": "サブタイトル",
|
||||
"subtitles off": "サブタイトル オフ",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "전체 화면",
|
||||
"Non-Fullscreen": "전체 화면 해제",
|
||||
"Mute": "음소거",
|
||||
"Unmuted": "음소거 해제",
|
||||
"Unmute": "음소거 해제",
|
||||
"Playback Rate": "재생 비율",
|
||||
"Subtitles": "서브타이틀",
|
||||
"subtitles off": "서브타이틀 끄기",
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Spill",
|
||||
"Pause": "Pause",
|
||||
"Current Time": "Aktuell tid",
|
||||
"Duration Time": "Varighet",
|
||||
"Remaining Time": "Gjenstående tid",
|
||||
"Stream Type": "Type strøm",
|
||||
"LIVE": "DIREKTE",
|
||||
"Loaded": "Lastet inn",
|
||||
"Progress": "Status",
|
||||
"Fullscreen": "Fullskjerm",
|
||||
"Non-Fullscreen": "Lukk fullskjerm",
|
||||
"Mute": "Lyd av",
|
||||
"Unmute": "Lyd på",
|
||||
"Playback Rate": "Avspillingsrate",
|
||||
"Subtitles": "Undertekst på",
|
||||
"subtitles off": "Undertekst av",
|
||||
"Captions": "Undertekst for hørselshemmede på",
|
||||
"captions off": "Undertekst for hørselshemmede av",
|
||||
"Chapters": "Kapitler",
|
||||
"You aborted the media playback": "Du avbrøt avspillingen.",
|
||||
"A network error caused the media download to fail part-way.": "En nettverksfeil avbrøt nedlasting av videoen.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Videoen kunne ikke lastes ned, på grunn av nettverksfeil eller serverfeil, eller fordi formatet ikke er støttet.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Videoavspillingen ble avbrudt på grunn av ødelagte data eller fordi videoen ville gjøre noe som nettleseren din ikke har støtte for.",
|
||||
"No compatible source was found for this media.": "Fant ikke en kompatibel kilde for dette mediainnholdet."
|
||||
}
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Volledig scherm",
|
||||
"Non-Fullscreen": "Geen volledig scherm",
|
||||
"Mute": "Geluid uit",
|
||||
"Unmuted": "Geluid aan",
|
||||
"Unmute": "Geluid aan",
|
||||
"Playback Rate": "Weergavesnelheid",
|
||||
"Subtitles": "Ondertiteling",
|
||||
"subtitles off": "Ondertiteling uit",
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Spel",
|
||||
"Pause": "Pause",
|
||||
"Current Time": "Aktuell tid",
|
||||
"Duration Time": "Varigheit",
|
||||
"Remaining Time": "Tid attende",
|
||||
"Stream Type": "Type straum",
|
||||
"LIVE": "DIREKTE",
|
||||
"Loaded": "Lasta inn",
|
||||
"Progress": "Status",
|
||||
"Fullscreen": "Fullskjerm",
|
||||
"Non-Fullscreen": "Stenga fullskjerm",
|
||||
"Mute": "Ljod av",
|
||||
"Unmute": "Ljod på",
|
||||
"Playback Rate": "Avspelingsrate",
|
||||
"Subtitles": "Teksting på",
|
||||
"subtitles off": "Teksting av",
|
||||
"Captions": "Teksting for høyrselshemma på",
|
||||
"captions off": "Teksting for høyrselshemma av",
|
||||
"Chapters": "Kapitel",
|
||||
"You aborted the media playback": "Du avbraut avspelinga.",
|
||||
"A network error caused the media download to fail part-way.": "Ein nettverksfeil avbraut nedlasting av videoen.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Videoen kunne ikkje lastas ned, på grunn av ein nettverksfeil eller serverfeil, eller av di formatet ikkje er stoda.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Videoavspelinga blei broten på grunn av øydelagde data eller av di videoen ville gjera noe som nettlesaren din ikkje stodar.",
|
||||
"No compatible source was found for this media.": "Fant ikke en kompatibel kilde for dette mediainnholdet."
|
||||
}
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Tela Cheia",
|
||||
"Non-Fullscreen": "Tela Normal",
|
||||
"Mute": "Mudo",
|
||||
"Unmuted": "Habilitar Som",
|
||||
"Unmute": "Habilitar Som",
|
||||
"Playback Rate": "Velocidade",
|
||||
"Subtitles": "Legendas",
|
||||
"subtitles off": "Sem Legendas",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Полноэкранный режим",
|
||||
"Non-Fullscreen": "Неполноэкранный режим",
|
||||
"Mute": "Без звука",
|
||||
"Unmuted": "Со звуком",
|
||||
"Unmute": "Со звуком",
|
||||
"Playback Rate": "Скорость воспроизведения",
|
||||
"Subtitles": "Субтитры",
|
||||
"subtitles off": "Субтитры выкл.",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Puni ekran",
|
||||
"Non-Fullscreen": "Mali ekran",
|
||||
"Mute": "Prigušen",
|
||||
"Unmuted": "Ne-prigušen",
|
||||
"Unmute": "Ne-prigušen",
|
||||
"Playback Rate": "Stopa reprodukcije",
|
||||
"Subtitles": "Podnaslov",
|
||||
"subtitles off": "Podnaslov deaktiviran",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Fullskärm",
|
||||
"Non-Fullscreen": "Ej fullskärm",
|
||||
"Mute": "Ljud av",
|
||||
"Unmuted": "Ljud på",
|
||||
"Unmute": "Ljud på",
|
||||
"Playback Rate": "Uppspelningshastighet",
|
||||
"Subtitles": "Text på",
|
||||
"subtitles off": "Text av",
|
||||
|
||||
+11
-3
@@ -11,10 +11,10 @@
|
||||
"Fullscreen": "Tam Ekran",
|
||||
"Non-Fullscreen": "Küçük Ekran",
|
||||
"Mute": "Ses Kapa",
|
||||
"Unmuted": "Ses Aç",
|
||||
"Unmute": "Ses Aç",
|
||||
"Playback Rate": "Oynatma Hızı",
|
||||
"Subtitles": "Altyazı",
|
||||
"subtitles off": "Altyazı Kapat",
|
||||
"subtitles off": "Altyazı Kapalı",
|
||||
"Captions": "Ek Açıklamalar",
|
||||
"captions off": "Ek Açıklamalar Kapalı",
|
||||
"Chapters": "Bölümler",
|
||||
@@ -22,5 +22,13 @@
|
||||
"A network error caused the media download to fail part-way.": "Video indirilirken bağlantı sorunu oluştu.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video oynatılamadı, ağ ya da sunucu hatası veya belirtilen format desteklenmiyor.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Tarayıcınız desteklemediği için videoda hata oluştu.",
|
||||
"No compatible source was found for this media.": "Video için kaynak bulunamadı."
|
||||
"No compatible source was found for this media.": "Video için kaynak bulunamadı.",
|
||||
"Play video": "Videoyu Oynat",
|
||||
"Close": "Kapat",
|
||||
"Modal Window": "Modal Penceresi",
|
||||
"This is a modal window": "Bu bir modal penceresidir",
|
||||
"This modal can be closed by pressing the Escape key or activating the close button.": "Bu modal ESC tuşuna basarak ya da kapata tıklanarak kapatılabilir.",
|
||||
", opens captions settings dialog": ", ek açıklama ayarları menüsünü açar",
|
||||
", opens subtitles settings dialog": ", altyazı ayarları menüsünü açar",
|
||||
", selected": ", seçildi"
|
||||
}
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Повноекранний режим",
|
||||
"Non-Fullscreen": "Неповноекранний режим",
|
||||
"Mute": "Без звуку",
|
||||
"Unmuted": "Зі звуком",
|
||||
"Unmute": "Зі звуком",
|
||||
"Playback Rate": "Швидкість відтворення",
|
||||
"Subtitles": "Субтитри",
|
||||
"subtitles off": "Без субтитрів",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "Toàn màn hình",
|
||||
"Non-Fullscreen": "Thoát toàn màn hình",
|
||||
"Mute": "Tắt tiếng",
|
||||
"Unmuted": "Bật âm thanh",
|
||||
"Unmute": "Bật âm thanh",
|
||||
"Playback Rate": "Tốc độ phát",
|
||||
"Subtitles": "Phụ đề",
|
||||
"subtitles off": "Tắt phụ đề",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "全屏",
|
||||
"Non-Fullscreen": "退出全屏",
|
||||
"Mute": "静音",
|
||||
"Unmuted": "取消静音",
|
||||
"Unmute": "取消静音",
|
||||
"Playback Rate": "播放码率",
|
||||
"Subtitles": "字幕",
|
||||
"subtitles off": "字幕关闭",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"Fullscreen": "全螢幕",
|
||||
"Non-Fullscreen": "退出全螢幕",
|
||||
"Mute": "靜音",
|
||||
"Unmuted": "取消靜音",
|
||||
"Unmute": "取消靜音",
|
||||
"Playback Rate": " 播放速率",
|
||||
"Subtitles": "字幕",
|
||||
"subtitles off": "關閉字幕",
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "video.js",
|
||||
"description": "An HTML5 and Flash video player with a common API and skin for both.",
|
||||
"version": "5.5.2",
|
||||
"version": "5.8.1",
|
||||
"copyright": "Copyright Brightcove, Inc. <https://www.brightcove.com/>",
|
||||
"license": "Apache-2.0",
|
||||
"keywords": [
|
||||
@@ -29,7 +29,7 @@
|
||||
"safe-json-parse": "^4.0.0",
|
||||
"tsml": "1.0.1",
|
||||
"videojs-font": "1.5.1",
|
||||
"videojs-ie8": "1.1.1",
|
||||
"videojs-ie8": "1.1.2",
|
||||
"videojs-swf": "5.0.1",
|
||||
"videojs-vtt.js": "^0.12.1",
|
||||
"xhr": "~2.2.0"
|
||||
|
||||
@@ -29,15 +29,15 @@
|
||||
<video id="vid1" class="video-js vjs-default-skin" controls preload="auto" 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'>
|
||||
<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>
|
||||
|
||||
<script>
|
||||
vid = document.getElementById("vid1");
|
||||
var vid = document.getElementById("vid1");
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"Fullscreen": "Pantalla Completa",
|
||||
"Non-Fullscreen": "No Pantalla Completa",
|
||||
"Mute": "Mudo",
|
||||
"Unmuted": "Activar sonido",
|
||||
"Unmute": "Activar sonido",
|
||||
"Playback Rate": "Reproduccion Cambio",
|
||||
"Subtitles": "Subtitulos",
|
||||
"subtitles off": "subtitulos fuera",
|
||||
|
||||
@@ -21,9 +21,9 @@
|
||||
<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://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'>
|
||||
<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,5 +1,5 @@
|
||||
// Text, icons, hover states
|
||||
$primary-foreground-color: #fff;
|
||||
$primary-foreground-color: #fff !default;
|
||||
|
||||
// Control backgrounds (control bar, big play, menus)
|
||||
$primary-background-color: #2B333F !default;
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
.vjs-custom-control-spacer { @include flex(auto); }
|
||||
&.vjs-no-flex .vjs-custom-control-spacer { width: auto; }
|
||||
|
||||
.vjs-current-time, .vjs-captions-button, .vjs-time-divider,
|
||||
.vjs-progress-control, .vjs-duration, .vjs-remaining-time, .vjs-playback-rate,
|
||||
.vjs-mute-control, .vjs-volume-control, .vjs-chapters-button, .vjs-captions-button,
|
||||
.vjs-subtitles-button, .vjs-volume-menu-button { display: none; }
|
||||
.vjs-current-time, .vjs-time-divider, .vjs-duration, .vjs-remaining-time,
|
||||
.vjs-playback-rate, .vjs-progress-control,
|
||||
.vjs-mute-control, .vjs-volume-control, .vjs-volume-menu-button,
|
||||
.vjs-chapters-button, .vjs-captions-button, .vjs-subtitles-button { display: none; }
|
||||
}
|
||||
|
||||
// When the player is x-small, display nothing but:
|
||||
@@ -16,10 +16,10 @@
|
||||
// - Progress bar
|
||||
// - Fullscreen Button
|
||||
.video-js.vjs-layout-x-small:not(.vjs-fullscreen) {
|
||||
.vjs-current-time, .vjs-captions-button, .vjs-time-divider,
|
||||
.vjs-duration, .vjs-remaining-time, .vjs-playback-rate, .vjs-captions-button,
|
||||
.vjs-mute-control, .vjs-volume-control, .vjs-chapters-button,
|
||||
.vjs-subtitles-button, .vjs-volume-button, .vjs-fullscreen-control { display: none; }
|
||||
.vjs-current-time, .vjs-time-divider, .vjs-duration, .vjs-remaining-time,
|
||||
.vjs-playback-rate,
|
||||
.vjs-mute-control, .vjs-volume-control, .vjs-volume-menu-button,
|
||||
.vjs-chapters-button, .vjs-captions-button, .vjs-subtitles-button { display: none; }
|
||||
}
|
||||
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
// - Captions Button
|
||||
// - Fullscreen button
|
||||
.video-js.vjs-layout-small:not(.vjs-fullscreen) {
|
||||
.vjs-current-time, .vjs-captions-button, .vjs-time-divider,
|
||||
.vjs-duration, .vjs-remaining-time, .vjs-playback-rate,
|
||||
.vjs-mute-control, .vjs-volume-control, .vjs-chapters-button,
|
||||
.vjs-subtitles-button { display: none; }
|
||||
.vjs-current-time, .vjs-time-divider, .vjs-duration, .vjs-remaining-time,
|
||||
.vjs-playback-rate,
|
||||
.vjs-mute-control, .vjs-volume-control,
|
||||
.vjs-chapters-button, .vjs-captions-button, .vjs-subtitles-button { display: none; }
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
.video-js .vjs-fullscreen-control {
|
||||
width: 3.8em;
|
||||
cursor: pointer;
|
||||
@include flex(none);
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
.video-js .vjs-progress-control {
|
||||
@include flex(auto);
|
||||
@include display-flex(center);
|
||||
min-width: 4em;
|
||||
}
|
||||
|
||||
.vjs-live .vjs-progress-control {
|
||||
@@ -86,12 +87,12 @@
|
||||
.video-js .vjs-play-progress:after {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: -2.4em;
|
||||
top: -3.4em;
|
||||
right: -1.5em;
|
||||
font-size: 0.9em;
|
||||
color: #000;
|
||||
content: attr(data-current-time);
|
||||
padding: 0.2em 0.5em;
|
||||
padding: 6px 8px 8px 8px;
|
||||
@include background-color-with-alpha(#fff, 0.8);
|
||||
@include border-radius(0.3em);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
@include flex(none);
|
||||
font-size: 1em;
|
||||
line-height: 3em;
|
||||
min-width: 2em;
|
||||
width: auto;
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
}
|
||||
|
||||
.vjs-live .vjs-time-control {
|
||||
|
||||
@@ -113,12 +113,16 @@
|
||||
}
|
||||
|
||||
.vjs-volume-menu-button-vertical:hover .vjs-menu-content,
|
||||
.vjs-volume-menu-button-vertical:focus .vjs-menu-content,
|
||||
.vjs-volume-menu-button-vertical.vjs-slider-active .vjs-menu-content,
|
||||
.vjs-volume-menu-button-vertical .vjs-lock-showing .vjs-menu-content {
|
||||
height: 8em;
|
||||
width: 2.9em;
|
||||
}
|
||||
|
||||
.vjs-volume-menu-button-horizontal:hover .vjs-menu-content,
|
||||
.vjs-volume-menu-button-horizontal:focus .vjs-menu-content,
|
||||
.vjs-volume-menu-button-horizontal .vjs-slider-active .vjs-menu-content,
|
||||
.vjs-volume-menu-button-horizontal .vjs-lock-showing .vjs-menu-content {
|
||||
height: 2.9em;
|
||||
width: 8em;
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
max-height: 15em;
|
||||
}
|
||||
|
||||
.vjs-menu-button-popup:hover .vjs-menu,
|
||||
.vjs-workinghover .vjs-menu-button-popup:hover .vjs-menu,
|
||||
.vjs-menu-button-popup .vjs-menu.vjs-lock-showing {
|
||||
display: block;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
$icon-font-path: '//vjs.zencdn.net/font/1.5.1';
|
||||
|
||||
@import 'video-js';
|
||||
+29
-73
@@ -1,10 +1,11 @@
|
||||
/**
|
||||
* @file button.js
|
||||
*/
|
||||
import ClickableComponent from './clickable-component.js';
|
||||
import Component from './component';
|
||||
import * as Dom from './utils/dom.js';
|
||||
import * as Events from './utils/events.js';
|
||||
import * as Fn from './utils/fn.js';
|
||||
import log from './utils/log.js';
|
||||
import document from 'global/document';
|
||||
import assign from 'object.assign';
|
||||
|
||||
@@ -13,122 +14,77 @@ import assign from 'object.assign';
|
||||
*
|
||||
* @param {Object} player Main Player
|
||||
* @param {Object=} options Object of option names and values
|
||||
* @extends Component
|
||||
* @extends ClickableComponent
|
||||
* @class Button
|
||||
*/
|
||||
class Button extends Component {
|
||||
class Button extends ClickableComponent {
|
||||
|
||||
constructor(player, options) {
|
||||
super(player, options);
|
||||
|
||||
this.emitTapEvents();
|
||||
|
||||
this.on('tap', this.handleClick);
|
||||
this.on('click', this.handleClick);
|
||||
this.on('focus', this.handleFocus);
|
||||
this.on('blur', this.handleBlur);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the component's DOM element
|
||||
*
|
||||
* @param {String=} type Element's node type. e.g. 'div'
|
||||
* @param {Object=} props An object of element attributes that should be set on the element Tag name
|
||||
* @param {Object=} props An object of properties that should be set on the element
|
||||
* @param {Object=} attributes An object of attributes that should be set on the element
|
||||
* @return {Element}
|
||||
* @method createEl
|
||||
*/
|
||||
createEl(tag='button', props={}, attributes={}) {
|
||||
props = assign({
|
||||
className: this.buildCSSClass(),
|
||||
tabIndex: 0
|
||||
className: this.buildCSSClass()
|
||||
}, props);
|
||||
|
||||
// Add standard Aria info
|
||||
if (tag !== 'button') {
|
||||
log.warn(`Creating a Button with an HTML element of ${tag} is deprecated; use ClickableComponent instead.`);
|
||||
}
|
||||
|
||||
// Add attributes for button element
|
||||
attributes = assign({
|
||||
role: 'button',
|
||||
type: 'button', // Necessary since the default button type is "submit"
|
||||
'aria-live': 'polite' // let the screen reader user know that the text of the button may change
|
||||
}, attributes);
|
||||
|
||||
let el = super.createEl(tag, props, attributes);
|
||||
let el = Component.prototype.createEl.call(this, tag, props, attributes);
|
||||
|
||||
this.controlTextEl_ = Dom.createEl('span', {
|
||||
className: 'vjs-control-text'
|
||||
});
|
||||
|
||||
el.appendChild(this.controlTextEl_);
|
||||
|
||||
this.controlText(this.controlText_);
|
||||
this.createControlTextEl(el);
|
||||
|
||||
return el;
|
||||
}
|
||||
|
||||
/**
|
||||
* Controls text - both request and localize
|
||||
* Adds a child component inside this button
|
||||
*
|
||||
* @param {String} text Text for button
|
||||
* @return {String}
|
||||
* @method controlText
|
||||
* @param {String|Component} child The class name or instance of a child to add
|
||||
* @param {Object=} options Options, including options to be passed to children of the child.
|
||||
* @return {Component} The child component (created by this process if a string was used)
|
||||
* @deprecated
|
||||
* @method addChild
|
||||
*/
|
||||
controlText(text) {
|
||||
if (!text) return this.controlText_ || 'Need Text';
|
||||
addChild(child, options={}) {
|
||||
let className = this.constructor.name;
|
||||
log.warn(`Adding an actionable (user controllable) child to a Button (${className}) is not supported; use a ClickableComponent instead.`);
|
||||
|
||||
this.controlText_ = text;
|
||||
this.controlTextEl_.innerHTML = this.localize(this.controlText_);
|
||||
|
||||
return this;
|
||||
// Avoid the error message generated by ClickableComponent's addChild method
|
||||
return Component.prototype.addChild.call(this, child, options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows sub components to stack CSS class names
|
||||
*
|
||||
* @return {String}
|
||||
* @method buildCSSClass
|
||||
*/
|
||||
buildCSSClass() {
|
||||
return `vjs-control vjs-button ${super.buildCSSClass()}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle Click - Override with specific functionality for button
|
||||
*
|
||||
* @method handleClick
|
||||
*/
|
||||
handleClick() {}
|
||||
|
||||
/**
|
||||
* Handle Focus - Add keyboard functionality to element
|
||||
*
|
||||
* @method handleFocus
|
||||
*/
|
||||
handleFocus() {
|
||||
Events.on(document, 'keydown', Fn.bind(this, this.handleKeyPress));
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle KeyPress (document level) - Trigger click when keys are pressed
|
||||
* Handle KeyPress (document level) - Extend with specific functionality for button
|
||||
*
|
||||
* @method handleKeyPress
|
||||
*/
|
||||
handleKeyPress(event) {
|
||||
// Check for space bar (32) or enter (13) keys
|
||||
// Ignore Space (32) or Enter (13) key operation, which is handled by the browser for a button.
|
||||
if (event.which === 32 || event.which === 13) {
|
||||
event.preventDefault();
|
||||
this.handleClick(event);
|
||||
} else {
|
||||
super.handleKeyPress(event); // Pass keypress handling up for unsupported keys
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle Blur - Remove keyboard triggers
|
||||
*
|
||||
* @method handleBlur
|
||||
*/
|
||||
handleBlur() {
|
||||
Events.off(document, 'keydown', Fn.bind(this, this.handleKeyPress));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Component.registerComponent('Button', Button);
|
||||
export default Button;
|
||||
|
||||
Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais
Referência em uma Nova Issue
Bloquear um usuário