diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000..161d8a6
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,7 @@
+{
+ "presets": [
+ "env",
+ "react"
+ ],
+ "plugins": ["transform-class-properties", "transform-object-rest-spread"]
+}
\ No newline at end of file
diff --git a/demo/.babelrc b/demo/.babelrc
new file mode 100644
index 0000000..161d8a6
--- /dev/null
+++ b/demo/.babelrc
@@ -0,0 +1,7 @@
+{
+ "presets": [
+ "env",
+ "react"
+ ],
+ "plugins": ["transform-class-properties", "transform-object-rest-spread"]
+}
\ No newline at end of file
diff --git a/demo/package.json b/demo/package.json
index 19f7cd6..c5b65d8 100644
--- a/demo/package.json
+++ b/demo/package.json
@@ -12,20 +12,24 @@
"dependencies": {
"css-reset": "git+https://github.com/60frames/css-reset.git",
"lodash.throttle": "^3.0.4",
- "react": "^15.2.0",
- "react-dom": "^15.2.0"
+ "prop-types": "^15.6.0",
+ "react": "^16.0.0",
+ "react-dom": "^16.0.0"
},
"devDependencies": {
- "babel-core": "^5.8.25",
- "babel-loader": "^5.3.2",
- "babel-runtime": "^6.3.13",
- "coding-standards": "git+ssh://git@github.com/60frames/coding-standards.git#1.0.5",
+ "babel-core": "^6.26.0",
+ "babel-loader": "^6.4.1",
+ "babel-plugin-transform-class-properties": "^6.24.1",
+ "babel-plugin-transform-object-rest-spread": "^6.26.0",
+ "babel-preset-env": "^1.6.1",
+ "babel-preset-react": "^6.24.1",
"css-loader": "^0.21.0",
"eslint": "^1.8.0",
"eslint-plugin-react": "^3.6.3",
"file-loader": "^0.8.4",
"react-hot-loader": "^1.3.0",
"style-loader": "^0.13.0",
+ "url-loader": "^0.6.2",
"webpack": "^1.12.2",
"webpack-dev-server": "^1.12.1"
}
diff --git a/demo/src/components/button/Button.js b/demo/src/components/button/Button.js
index a609b31..882a045 100644
--- a/demo/src/components/button/Button.js
+++ b/demo/src/components/button/Button.js
@@ -1,24 +1,18 @@
+import PropTypes from 'prop-types';
import React from 'react';
-var Button = React.createClass({
+class Button extends React.Component {
+ static propTypes = {
+ active: PropTypes.bool,
+ children: PropTypes.string,
+ onClick: PropTypes.func
+ };
- propTypes: {
- active: React.PropTypes.bool,
- children: React.PropTypes.string,
- onClick: React.PropTypes.func
- },
-
- getDefaultProps() {
- return {
- active: false,
- onClick: this.onClick,
- text: 'A button'
- };
- },
-
- onClick(e) {
- e.preventDefault();
- },
+ static defaultProps = {
+ active: false,
+ onClick: (e) => { e.preventDefault(); },
+ text: 'A button'
+ };
render() {
return (
@@ -27,7 +21,6 @@ var Button = React.createClass({
);
}
-
-});
+}
export default Button;
diff --git a/demo/src/components/icon/Icon.js b/demo/src/components/icon/Icon.js
index e29410a..f2f1685 100644
--- a/demo/src/components/icon/Icon.js
+++ b/demo/src/components/icon/Icon.js
@@ -2,32 +2,30 @@
/*
* Generated by the 'fontello-react' Grunt task.
*/
-import React from 'react';
+import PropTypes from 'prop-types';
-var Icon = React.createClass({
+import React from 'react';
- propTypes: {
- name: React.PropTypes.oneOf([
+class Icon extends React.Component {
+ static propTypes = {
+ name: PropTypes.oneOf([
'github-circled-alt2'
])
- },
+ };
/**
* Default the icon to the first one just to show something
* @return {Object} The default props
*/
- getDefaultProps() {
- return {
- name: 'github-circled-alt2'
- };
- },
+ static defaultProps = {
+ name: 'github-circled-alt2'
+ };
render() {
return (
);
}
-
-});
+}
export default Icon;
diff --git a/demo/src/components/index/Index.js b/demo/src/components/index/Index.js
index e6e3404..e5aacce 100644
--- a/demo/src/components/index/Index.js
+++ b/demo/src/components/index/Index.js
@@ -2,8 +2,7 @@ import React from 'react';
import Header from './header/Header';
import Main from './main/Main';
-var Index = React.createClass({
-
+class Index extends React.Component {
render() {
return (
@@ -12,6 +11,6 @@ var Index = React.createClass({
);
}
-});
+}
export default Index;
diff --git a/demo/src/components/index/header/Header.js b/demo/src/components/index/header/Header.js
index 49491f5..845c257 100644
--- a/demo/src/components/index/header/Header.js
+++ b/demo/src/components/index/header/Header.js
@@ -1,8 +1,7 @@
import React from 'react';
import Icon from './../../icon/Icon';
-var Header = React.createClass({
-
+class Header extends React.Component {
render() {
return (
@@ -13,7 +12,6 @@ var Header = React.createClass({
);
}
-
-});
+}
export default Header;
diff --git a/demo/src/components/index/main/Main.js b/demo/src/components/index/main/Main.js
index 880e43d..1ea3ec6 100644
--- a/demo/src/components/index/main/Main.js
+++ b/demo/src/components/index/main/Main.js
@@ -2,7 +2,7 @@ import React from 'react';
import ReactDOM from 'react-dom';
import Button from './../../button/Button';
import browserStackLogo from './../../../../browserstack.png';
-import {default as Video, Controls, Overlay} from './../../../../../src/components/video/Video';
+import { default as Video, Controls, Overlay } from './../../../../../src/components/video/Video';
var videos = [
// TODO: Don't hot link these. upload them somewhere.
@@ -13,76 +13,76 @@ var videos = [
'https://github.com/mderrick/react-html5video'
];
-var Main = React.createClass({
-
- getInitialState() {
- return {
+class Main extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
videoId: 0
};
- },
+ }
- showVideo(id) {
+ showVideo = (id) => {
this.setState({
videoId: id
}, this.reloadVideo);
- },
+ };
- reloadVideo() {
+ reloadVideo = () => {
// When changing a HTML5 video, you have to reload it.
this.refs.video.load();
this.refs.video.play();
- },
+ };
- togglePlay() {
+ togglePlay = () => {
this.refs.video.togglePlay();
- },
+ };
- toggleMute() {
+ toggleMute = () => {
this.refs.video.toggleMute()
- },
+ };
- fullscreen() {
+ fullscreen = () => {
this.refs.video.fullscreen();
- },
+ };
- load() {
+ load = () => {
this.refs.video.load();
- },
+ };
- play() {
+ play = () => {
this.refs.video.play();
- },
+ };
- pause() {
+ pause = () => {
this.refs.video.pause();
- },
+ };
- unmute() {
+ unmute = () => {
this.refs.video.unmute();
- },
+ };
- mute() {
+ mute = () => {
this.refs.video.mute();
- },
+ };
- seek() {
+ seek = () => {
this.refs.video.seek(this._seekInput.valueAsNumber);
- },
+ };
- setVolume() {
+ setVolume = () => {
this.refs.video.setVolume(this._volumeInput.valueAsNumber);
- },
+ };
- setPlaybackRate() {
+ setPlaybackRate = () => {
this.refs.video.setPlaybackRate(this._playbackRateInput.valueAsNumber);
- },
+ };
- onProgress() {
+ onProgress = () => {
var el = ReactDOM.findDOMNode(this.refs.video).getElementsByTagName('video')[0];
this.setState({
percentageLoaded: el.buffered.length && el.buffered.end(el.buffered.length - 1) / el.duration * 100
});
- },
+ };
render() {
return (
@@ -143,11 +143,11 @@ var Main = React.createClass({
- this._volumeInput = c} type="number" min="0" max="1" step="0.1"/>
+ this._volumeInput = c} type="number" min="0" max="1" step="0.1" />
- this._playbackRateInput = c} type="number" min="0.5" max="2" step="0.25"/>
+ this._playbackRateInput = c} type="number" min="0.5" max="2" step="0.25" />
@@ -161,6 +161,6 @@ var Main = React.createClass({
);
}
-});
+}
export default Main;
diff --git a/demo/webpack.config.js b/demo/webpack.config.js
index 53a2e61..b243e1f 100644
--- a/demo/webpack.config.js
+++ b/demo/webpack.config.js
@@ -30,7 +30,7 @@ module.exports = {
loaders: [{
test: /\.js$/,
// Must be an array as server.js adds 'react-hot' loader
- loaders: ['babel?optional=runtime'],
+ loaders: ['babel-loader'],
exclude: /node_modules/
}, {
test: /\.css$/,
diff --git a/dist/ReactHtml5Video.css b/dist/ReactHtml5Video.css
index b3adc9c..70f0596 100644
--- a/dist/ReactHtml5Video.css
+++ b/dist/ReactHtml5Video.css
@@ -86,7 +86,7 @@
src: url(data:application/vnd.ms-fontobject;base64,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sE8ssgABQistsFAssgEAQistsFEssgEBQistsFIssgAAPistsFMssgABPistsFQssgEAPistsFUssgEBPistsFYssgAAQCstsFcssgABQCstsFgssgEAQCstsFkssgEBQCstsFossgAAQystsFsssgABQystsFwssgEAQystsF0ssgEBQystsF4ssgAAPystsF8ssgABPystsGAssgEAPystsGEssgEBPystsGIssDcrLrErARQrLbBjLLA3K7A7Ky2wZCywNyuwPCstsGUssAAWsDcrsD0rLbBmLLA4Ky6xKwEUKy2wZyywOCuwOystsGgssDgrsDwrLbBpLLA4K7A9Ky2waiywOSsusSsBFCstsGsssDkrsDsrLbBsLLA5K7A8Ky2wbSywOSuwPSstsG4ssDorLrErARQrLbBvLLA6K7A7Ky2wcCywOiuwPCstsHEssDorsD0rLbByLLMJBAIDRVghGyMhWUIrsAhlsAMkUHiwARUwLQBLuADIUlixAQGOWbABuQgACABjcLEABUKxAAAqsQAFQrEACCqxAAVCsQAIKrEABUK5AAAACSqxAAVCuQAAAAkqsQMARLEkAYhRWLBAiFixA2REsSYBiFFYugiAAAEEQIhjVFixAwBEWVlZWbEADCq4Af+FsASNsQIARAA=#iefix) format('embedded-opentype'),
url(data:application/font-woff;base64,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) format('woff'),
url(data:application/x-font-ttf;base64,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ICAgsAUmIC5HI0cjYSM8OC2wOCywABYgsAgjQiAgIEYjR7ABKyNhOC2wOSywABawAyWwAiVHI0cjYbAAVFguIDwjIRuwAiWwAiVHI0cjYSCwBSWwBCVHI0cjYbAGJbAFJUmwAiVhuQgACABjYyMgWGIbIVljuAQAYiCwAFBYsEBgWWawAWNgIy4jICA8ijgjIVktsDossAAWILAIQyAuRyNHI2EgYLAgYGawAmIgsABQWLBAYFlmsAFjIyAgPIo4LbA7LCMgLkawAiVGUlggPFkusSsBFCstsDwsIyAuRrACJUZQWCA8WS6xKwEUKy2wPSwjIC5GsAIlRlJYIDxZIyAuRrACJUZQWCA8WS6xKwEUKy2wPiywNSsjIC5GsAIlRlJYIDxZLrErARQrLbA/LLA2K4ogIDywBCNCijgjIC5GsAIlRlJYIDxZLrErARQrsARDLrArKy2wQCywABawBCWwBCYgLkcjRyNhsAlDKyMgPCAuIzixKwEUKy2wQSyxCAQlQrAAFrAEJbAEJSAuRyNHI2EgsAQjQrAJQysgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjIEewBEOwAmIgsABQWLBAYFlmsAFjYCCwASsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsAJiILAAUFiwQGBZZrABY2GwAiVGYTgjIDwjOBshICBGI0ewASsjYTghWbErARQrLbBCLLA1Ky6xKwEUKy2wQyywNishIyAgPLAEI0IjOLErARQrsARDLrArKy2wRCywABUgR7AAI0KyAAEBFRQTLrAxKi2wRSywABUgR7AAI0KyAAEBFRQTLrAxKi2wRiyxAAEUE7AyKi2wRyywNCotsEgssAAWRSMgLiBGiiNhOLErARQrLbBJLLAII0KwSCstsEossgAAQSstsEsssgABQSstsEwssgEAQSstsE0ssgEBQSstsE4ssgAAQistsE8ssgABQistsFAssgEAQistsFEssgEBQistsFIssgAAPistsFMssgABPistsFQssgEAPistsFUssgEBPistsFYssgAAQCstsFcssgABQCstsFgssgEAQCstsFkssgEBQCstsFossgAAQystsFsssgABQystsFwssgEAQystsF0ssgEBQystsF4ssgAAPystsF8ssgABPystsGAssgEAPystsGEssgEBPystsGIssDcrLrErARQrLbBjLLA3K7A7Ky2wZCywNyuwPCstsGUssAAWsDcrsD0rLbBmLLA4Ky6xKwEUKy2wZyywOCuwOystsGgssDgrsDwrLbBpLLA4K7A9Ky2waiywOSsusSsBFCstsGsssDkrsDsrLbBsLLA5K7A8Ky2wbSywOSuwPSstsG4ssDorLrErARQrLbBvLLA6K7A7Ky2wcCywOiuwPCstsHEssDorsD0rLbByLLMJBAIDRVghGyMhWUIrsAhlsAMkUHiwARUwLQBLuADIUlixAQGOWbABuQgACABjcLEABUKxAAAqsQAFQrEACCqxAAVCsQAIKrEABUK5AAAACSqxAAVCuQAAAAkqsQMARLEkAYhRWLBAiFixA2REsSYBiFFYugiAAAEEQIhjVFixAwBEWVlZWbEADCq4Af+FsASNsQIARAA=) format('truetype'),
- url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxtZXRhZGF0YT5Db3B5cmlnaHQgKEMpIDIwMTUgYnkgb3JpZ2luYWwgYXV0aG9ycyBAIGZvbnRlbGxvLmNvbTwvbWV0YWRhdGE+CjxkZWZzPgo8Zm9udCBpZD0idmlkZW8tZm9udGVsbG8iIGhvcml6LWFkdi14PSIxMDAwIiA+Cjxmb250LWZhY2UgZm9udC1mYW1pbHk9InZpZGVvLWZvbnRlbGxvIiBmb250LXdlaWdodD0iNDAwIiBmb250LXN0cmV0Y2g9Im5vcm1hbCIgdW5pdHMtcGVyLWVtPSIxMDAwIiBhc2NlbnQ9Ijg1MCIgZGVzY2VudD0iLTE1MCIgLz4KPG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjEwMDAiIC8+CjxnbHlwaCBnbHlwaC1uYW1lPSJwbGF5LTEiIHVuaWNvZGU9IiYjeGU4MDA7IiBkPSJtMC0yNWwwIDc1MCA2MjUtMzc1eiIgaG9yaXotYWR2LXg9IjYyNSIgLz4KPGdseXBoIGdseXBoLW5hbWU9InZvbHVtZS1vZmYiIHVuaWNvZGU9IiYjeGU4MDE7IiBkPSJtNDI5IDY1NHYtNjA4cTAtMTQtMTEtMjV0LTI1LTEwLTI1IDEwbC0xODYgMTg2aC0xNDZxLTE1IDAtMjUgMTF0LTExIDI1djIxNHEwIDE1IDExIDI1dDI1IDExaDE0NmwxODYgMTg2cTEwIDEwIDI1IDEwdDI1LTEwIDExLTI1eiIgaG9yaXotYWR2LXg9IjQyOC42IiAvPgo8Z2x5cGggZ2x5cGgtbmFtZT0idm9sdW1lLWRvd24iIHVuaWNvZGU9IiYjeGU4MDI7IiBkPSJtNDI5IDY1NHYtNjA4cTAtMTQtMTEtMjV0LTI1LTEwLTI1IDEwbC0xODYgMTg2aC0xNDZxLTE1IDAtMjUgMTF0LTExIDI1djIxNHEwIDE1IDExIDI1dDI1IDExaDE0NmwxODYgMTg2cTEwIDEwIDI1IDEwdDI1LTEwIDExLTI1eiBtMjE0LTMwNHEwLTQyLTI0LTc5dC02My01MnEtNS0zLTE0LTMtMTQgMC0yNSAxMHQtMTAgMjZxMCAxMiA2IDIwdDE3IDE0IDE5IDEyIDE2IDIwIDYgMzItNiAzMi0xNiAyMC0xOSAxMi0xNyAxNC02IDIwcTAgMTUgMTAgMjZ0MjUgMTBxOSAwIDE0LTMgMzktMTUgNjMtNTJ0MjQtNzl6IiBob3Jpei1hZHYteD0iNjQyLjkiIC8+CjxnbHlwaCBnbHlwaC1uYW1lPSJ2b2x1bWUtdXAiIHVuaWNvZGU9IiYjeGU4MDM7IiBkPSJtNDI5IDY1NHYtNjA4cTAtMTQtMTEtMjV0LTI1LTEwLTI1IDEwbC0xODYgMTg2aC0xNDZxLTE1IDAtMjUgMTF0LTExIDI1djIxNHEwIDE1IDExIDI1dDI1IDExaDE0NmwxODYgMTg2cTEwIDEwIDI1IDEwdDI1LTEwIDExLTI1eiBtMjE0LTMwNHEwLTQyLTI0LTc5dC02My01MnEtNS0zLTE0LTMtMTQgMC0yNSAxMHQtMTAgMjZxMCAxMiA2IDIwdDE3IDE0IDE5IDEyIDE2IDIwIDYgMzItNiAzMi0xNiAyMC0xOSAxMi0xNyAxNC02IDIwcTAgMTUgMTAgMjZ0MjUgMTBxOSAwIDE0LTMgMzktMTUgNjMtNTJ0MjQtNzl6IG0xNDMgMHEwLTg1LTQ4LTE1OHQtMTI1LTEwNXEtOC0zLTE0LTMtMTUgMC0yNiAxMXQtMTAgMjVxMCAyMiAyMSAzMyAzMiAxNiA0MyAyNSA0MSAzMCA2NCA3NXQyMyA5Ny0yMyA5Ny02NCA3NXEtMTEgOS00MyAyNS0yMSAxMS0yMSAzMyAwIDE0IDEwIDI1dDI1IDExcTcgMCAxNS0zIDc4LTMzIDEyNS0xMDV0NDgtMTU4eiBtMTQzIDBxMC0xMjgtNzEtMjM2dC0xODktMTU4cS03LTMtMTQtMy0xNSAwLTI2IDExdC0xMCAyNXEwIDIwIDIyIDMzIDQgMiAxMiA2dDEzIDZxMjUgMTQgNDUgMjggNjkgNTEgMTA4IDEyN3QzOCAxNjEtMzggMTYxLTEwOCAxMjdxLTIwIDE0LTQ1IDI4LTQgMy0xMyA2dC0xMiA2cS0yMiAxMy0yMiAzMyAwIDE0IDEwIDI1dDI2IDExcTcgMCAxNC0zIDExOC01MSAxODktMTU4dDcxLTIzNnoiIGhvcml6LWFkdi14PSI5MjguNiIgLz4KPGdseXBoIGdseXBoLW5hbWU9InJlc2l6ZS1mdWxsIiB1bmljb2RlPSImI3hlODA0OyIgZD0ibTQyMSAyNjFxMC04LTUtMTNsLTE4NS0xODUgODAtODFxMTAtMTAgMTAtMjV0LTEwLTI1LTI1LTExaC0yNTBxLTE1IDAtMjUgMTF0LTExIDI1djI1MHEwIDE1IDExIDI1dDI1IDExIDI1LTExbDgwLTgwIDE4NSAxODVxNiA2IDEzIDZ0MTMtNmw2NC02M3E1LTYgNS0xM3ogbTQzNiA0ODJ2LTI1MHEwLTE1LTEwLTI1dC0yNi0xMS0yNSAxMWwtODAgODAtMTg1LTE4NXEtNi02LTEzLTZ0LTEzIDZsLTY0IDYzcS01IDYtNSAxM3Q1IDEzbDE4NiAxODUtODEgODFxLTEwIDEwLTEwIDI1dDEwIDI1IDI1IDExaDI1MHExNSAwIDI2LTExdDEwLTI1eiIgaG9yaXotYWR2LXg9Ijg1Ny4xIiAvPgo8Z2x5cGggZ2x5cGgtbmFtZT0icmVzaXplLXNtYWxsIiB1bmljb2RlPSImI3hlODA1OyIgZD0ibTQyOSAzMTR2LTI1MHEwLTE0LTExLTI1dC0yNS0xMC0yNSAxMGwtODEgODEtMTg1LTE4NnEtNS01LTEzLTV0LTEzIDVsLTYzIDY0cS02IDUtNiAxM3Q2IDEzbDE4NSAxODUtODAgODBxLTExIDExLTExIDI1dDExIDI1IDI1IDExaDI1MHExNCAwIDI1LTExdDExLTI1eiBtNDIxIDM3NXEwLTctNi0xM2wtMTg1LTE4NSA4MC04MHExMS0xMSAxMS0yNXQtMTEtMjUtMjUtMTFoLTI1MHEtMTQgMC0yNSAxMXQtMTAgMjV2MjUwcTAgMTQgMTAgMjV0MjUgMTAgMjUtMTBsODEtODEgMTg1IDE4NnE2IDUgMTMgNXQxMy01bDYzLTY0cTYtNSA2LTEzeiIgaG9yaXotYWR2LXg9Ijg1Ny4xIiAvPgo8Z2x5cGggZ2x5cGgtbmFtZT0icGF1c2UtMSIgdW5pY29kZT0iJiN4ZTgwYjsiIGQ9Im0wLTI1bDAgNzUwIDMxMyAwIDAtNzUwLTMxMyAweiBtNDM4IDBsMCA3NTAgMzEyIDAgMC03NTAtMzEyIDB6IiBob3Jpei1hZHYteD0iNzUwIiAvPgo8L2ZvbnQ+CjwvZGVmcz4KPC9zdmc+#fontello) format('svg');
+ url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxtZXRhZGF0YT5Db3B5cmlnaHQgKEMpIDIwMTUgYnkgb3JpZ2luYWwgYXV0aG9ycyBAIGZvbnRlbGxvLmNvbTwvbWV0YWRhdGE+DQo8ZGVmcz4NCjxmb250IGlkPSJ2aWRlby1mb250ZWxsbyIgaG9yaXotYWR2LXg9IjEwMDAiID4NCjxmb250LWZhY2UgZm9udC1mYW1pbHk9InZpZGVvLWZvbnRlbGxvIiBmb250LXdlaWdodD0iNDAwIiBmb250LXN0cmV0Y2g9Im5vcm1hbCIgdW5pdHMtcGVyLWVtPSIxMDAwIiBhc2NlbnQ9Ijg1MCIgZGVzY2VudD0iLTE1MCIgLz4NCjxtaXNzaW5nLWdseXBoIGhvcml6LWFkdi14PSIxMDAwIiAvPg0KPGdseXBoIGdseXBoLW5hbWU9InBsYXktMSIgdW5pY29kZT0iJiN4ZTgwMDsiIGQ9Im0wLTI1bDAgNzUwIDYyNS0zNzV6IiBob3Jpei1hZHYteD0iNjI1IiAvPg0KPGdseXBoIGdseXBoLW5hbWU9InZvbHVtZS1vZmYiIHVuaWNvZGU9IiYjeGU4MDE7IiBkPSJtNDI5IDY1NHYtNjA4cTAtMTQtMTEtMjV0LTI1LTEwLTI1IDEwbC0xODYgMTg2aC0xNDZxLTE1IDAtMjUgMTF0LTExIDI1djIxNHEwIDE1IDExIDI1dDI1IDExaDE0NmwxODYgMTg2cTEwIDEwIDI1IDEwdDI1LTEwIDExLTI1eiIgaG9yaXotYWR2LXg9IjQyOC42IiAvPg0KPGdseXBoIGdseXBoLW5hbWU9InZvbHVtZS1kb3duIiB1bmljb2RlPSImI3hlODAyOyIgZD0ibTQyOSA2NTR2LTYwOHEwLTE0LTExLTI1dC0yNS0xMC0yNSAxMGwtMTg2IDE4NmgtMTQ2cS0xNSAwLTI1IDExdC0xMSAyNXYyMTRxMCAxNSAxMSAyNXQyNSAxMWgxNDZsMTg2IDE4NnExMCAxMCAyNSAxMHQyNS0xMCAxMS0yNXogbTIxNC0zMDRxMC00Mi0yNC03OXQtNjMtNTJxLTUtMy0xNC0zLTE0IDAtMjUgMTB0LTEwIDI2cTAgMTIgNiAyMHQxNyAxNCAxOSAxMiAxNiAyMCA2IDMyLTYgMzItMTYgMjAtMTkgMTItMTcgMTQtNiAyMHEwIDE1IDEwIDI2dDI1IDEwcTkgMCAxNC0zIDM5LTE1IDYzLTUydDI0LTc5eiIgaG9yaXotYWR2LXg9IjY0Mi45IiAvPg0KPGdseXBoIGdseXBoLW5hbWU9InZvbHVtZS11cCIgdW5pY29kZT0iJiN4ZTgwMzsiIGQ9Im00MjkgNjU0di02MDhxMC0xNC0xMS0yNXQtMjUtMTAtMjUgMTBsLTE4NiAxODZoLTE0NnEtMTUgMC0yNSAxMXQtMTEgMjV2MjE0cTAgMTUgMTEgMjV0MjUgMTFoMTQ2bDE4NiAxODZxMTAgMTAgMjUgMTB0MjUtMTAgMTEtMjV6IG0yMTQtMzA0cTAtNDItMjQtNzl0LTYzLTUycS01LTMtMTQtMy0xNCAwLTI1IDEwdC0xMCAyNnEwIDEyIDYgMjB0MTcgMTQgMTkgMTIgMTYgMjAgNiAzMi02IDMyLTE2IDIwLTE5IDEyLTE3IDE0LTYgMjBxMCAxNSAxMCAyNnQyNSAxMHE5IDAgMTQtMyAzOS0xNSA2My01MnQyNC03OXogbTE0MyAwcTAtODUtNDgtMTU4dC0xMjUtMTA1cS04LTMtMTQtMy0xNSAwLTI2IDExdC0xMCAyNXEwIDIyIDIxIDMzIDMyIDE2IDQzIDI1IDQxIDMwIDY0IDc1dDIzIDk3LTIzIDk3LTY0IDc1cS0xMSA5LTQzIDI1LTIxIDExLTIxIDMzIDAgMTQgMTAgMjV0MjUgMTFxNyAwIDE1LTMgNzgtMzMgMTI1LTEwNXQ0OC0xNTh6IG0xNDMgMHEwLTEyOC03MS0yMzZ0LTE4OS0xNThxLTctMy0xNC0zLTE1IDAtMjYgMTF0LTEwIDI1cTAgMjAgMjIgMzMgNCAyIDEyIDZ0MTMgNnEyNSAxNCA0NSAyOCA2OSA1MSAxMDggMTI3dDM4IDE2MS0zOCAxNjEtMTA4IDEyN3EtMjAgMTQtNDUgMjgtNCAzLTEzIDZ0LTEyIDZxLTIyIDEzLTIyIDMzIDAgMTQgMTAgMjV0MjYgMTFxNyAwIDE0LTMgMTE4LTUxIDE4OS0xNTh0NzEtMjM2eiIgaG9yaXotYWR2LXg9IjkyOC42IiAvPg0KPGdseXBoIGdseXBoLW5hbWU9InJlc2l6ZS1mdWxsIiB1bmljb2RlPSImI3hlODA0OyIgZD0ibTQyMSAyNjFxMC04LTUtMTNsLTE4NS0xODUgODAtODFxMTAtMTAgMTAtMjV0LTEwLTI1LTI1LTExaC0yNTBxLTE1IDAtMjUgMTF0LTExIDI1djI1MHEwIDE1IDExIDI1dDI1IDExIDI1LTExbDgwLTgwIDE4NSAxODVxNiA2IDEzIDZ0MTMtNmw2NC02M3E1LTYgNS0xM3ogbTQzNiA0ODJ2LTI1MHEwLTE1LTEwLTI1dC0yNi0xMS0yNSAxMWwtODAgODAtMTg1LTE4NXEtNi02LTEzLTZ0LTEzIDZsLTY0IDYzcS01IDYtNSAxM3Q1IDEzbDE4NiAxODUtODEgODFxLTEwIDEwLTEwIDI1dDEwIDI1IDI1IDExaDI1MHExNSAwIDI2LTExdDEwLTI1eiIgaG9yaXotYWR2LXg9Ijg1Ny4xIiAvPg0KPGdseXBoIGdseXBoLW5hbWU9InJlc2l6ZS1zbWFsbCIgdW5pY29kZT0iJiN4ZTgwNTsiIGQ9Im00MjkgMzE0di0yNTBxMC0xNC0xMS0yNXQtMjUtMTAtMjUgMTBsLTgxIDgxLTE4NS0xODZxLTUtNS0xMy01dC0xMyA1bC02MyA2NHEtNiA1LTYgMTN0NiAxM2wxODUgMTg1LTgwIDgwcS0xMSAxMS0xMSAyNXQxMSAyNSAyNSAxMWgyNTBxMTQgMCAyNS0xMXQxMS0yNXogbTQyMSAzNzVxMC03LTYtMTNsLTE4NS0xODUgODAtODBxMTEtMTEgMTEtMjV0LTExLTI1LTI1LTExaC0yNTBxLTE0IDAtMjUgMTF0LTEwIDI1djI1MHEwIDE0IDEwIDI1dDI1IDEwIDI1LTEwbDgxLTgxIDE4NSAxODZxNiA1IDEzIDV0MTMtNWw2My02NHE2LTUgNi0xM3oiIGhvcml6LWFkdi14PSI4NTcuMSIgLz4NCjxnbHlwaCBnbHlwaC1uYW1lPSJwYXVzZS0xIiB1bmljb2RlPSImI3hlODBiOyIgZD0ibTAtMjVsMCA3NTAgMzEzIDAgMC03NTAtMzEzIDB6IG00MzggMGwwIDc1MCAzMTIgMCAwLTc1MC0zMTIgMHoiIGhvcml6LWFkdi14PSI3NTAiIC8+DQo8L2ZvbnQ+DQo8L2RlZnM+DQo8L3N2Zz4=#fontello) format('svg');
font-weight: normal;
font-style: normal;
}
diff --git a/dist/ReactHtml5Video.js b/dist/ReactHtml5Video.js
index 38bc76e..d97ef8b 100644
--- a/dist/ReactHtml5Video.js
+++ b/dist/ReactHtml5Video.js
@@ -7,7 +7,7 @@
exports["ReactHtml5Video"] = factory(require("react"));
else
root["ReactHtml5Video"] = factory(root["React"]);
-})(this, function(__WEBPACK_EXTERNAL_MODULE_63__) {
+})(this, function(__WEBPACK_EXTERNAL_MODULE_31__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
@@ -52,19 +52,19 @@ return /******/ (function(modules) { // webpackBootstrap
/************************************************************************/
/******/ ([
/* 0 */
-/***/ function(module, exports, __webpack_require__) {
+/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(1);
module.exports = __webpack_require__(20);
-/***/ },
+/***/ }),
/* 1 */
-/***/ function(module, exports) {
+/***/ (function(module, exports) {
// removed by extract-text-webpack-plugin
-/***/ },
+/***/ }),
/* 2 */,
/* 3 */,
/* 4 */,
@@ -84,1241 +84,1984 @@ return /******/ (function(modules) { // webpackBootstrap
/* 18 */,
/* 19 */,
/* 20 */
-/***/ function(module, exports, __webpack_require__) {
+/***/ (function(module, exports, __webpack_require__) {
'use strict';
- var _objectWithoutProperties = __webpack_require__(21)['default'];
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.Overlay = exports.Time = exports.Fullscreen = exports.Mute = exports.Play = exports.Seek = exports.Controls = exports.default = undefined;
- var _extends = __webpack_require__(23)['default'];
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
- var _Object$assign = __webpack_require__(24)['default'];
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
- var _interopRequireDefault = __webpack_require__(61)['default'];
+ var _propTypes = __webpack_require__(21);
- Object.defineProperty(exports, '__esModule', {
- value: true
- });
+ var _propTypes2 = _interopRequireDefault(_propTypes);
- var _react = __webpack_require__(63);
+ var _react = __webpack_require__(31);
var _react2 = _interopRequireDefault(_react);
- var _overlayOverlay = __webpack_require__(64);
+ var _Overlay = __webpack_require__(32);
+
+ var _Overlay2 = _interopRequireDefault(_Overlay);
+
+ var _Controls = __webpack_require__(35);
+
+ var _Controls2 = _interopRequireDefault(_Controls);
- var _overlayOverlay2 = _interopRequireDefault(_overlayOverlay);
+ var _Seek = __webpack_require__(37);
- var _controlsControls = __webpack_require__(67);
+ var _Seek2 = _interopRequireDefault(_Seek);
- var _controlsControls2 = _interopRequireDefault(_controlsControls);
+ var _Play = __webpack_require__(36);
- var _controlsSeekSeek = __webpack_require__(69);
+ var _Play2 = _interopRequireDefault(_Play);
- var _controlsSeekSeek2 = _interopRequireDefault(_controlsSeekSeek);
+ var _Mute = __webpack_require__(39);
- var _controlsPlayPlay = __webpack_require__(68);
+ var _Mute2 = _interopRequireDefault(_Mute);
- var _controlsPlayPlay2 = _interopRequireDefault(_controlsPlayPlay);
+ var _Fullscreen = __webpack_require__(41);
- var _controlsMuteMute = __webpack_require__(76);
+ var _Fullscreen2 = _interopRequireDefault(_Fullscreen);
- var _controlsMuteMute2 = _interopRequireDefault(_controlsMuteMute);
+ var _Time = __webpack_require__(40);
- var _controlsFullscreenFullscreen = __webpack_require__(78);
+ var _Time2 = _interopRequireDefault(_Time);
- var _controlsFullscreenFullscreen2 = _interopRequireDefault(_controlsFullscreenFullscreen);
+ var _lodash = __webpack_require__(42);
- var _controlsTimeTime = __webpack_require__(77);
+ var _lodash2 = _interopRequireDefault(_lodash);
- var _controlsTimeTime2 = _interopRequireDefault(_controlsTimeTime);
+ var _copy = __webpack_require__(45);
- var _lodashThrottle = __webpack_require__(79);
+ var _copy2 = _interopRequireDefault(_copy);
- var _lodashThrottle2 = _interopRequireDefault(_lodashThrottle);
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+ function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
- var _assetsCopy = __webpack_require__(82);
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- var _assetsCopy2 = _interopRequireDefault(_assetsCopy);
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var EVENTS = ['onAbort', 'onCanPlay', 'onCanPlayThrough', 'onDurationChange', 'onEmptied', 'onEncrypted', 'onEnded', 'onError', 'onLoadedData', 'onLoadedMetadata', 'onLoadStart', 'onPause', 'onPlay', 'onPlaying', 'onProgress', 'onRateChange', 'onSeeked', 'onSeeking', 'onStalled', 'onSuspend', 'onTimeUpdate', 'onVolumeChange', 'onWaiting'];
- var Video = _react2['default'].createClass({
- displayName: 'Video',
+ var Video = function (_React$Component) {
+ _inherits(Video, _React$Component);
+
+ function Video(props) {
+ _classCallCheck(this, Video);
+
+ var _this = _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).call(this, props));
+
+ _this.togglePlay = function () {
+ if (_this.state.paused) {
+ _this.play();
+ } else {
+ _this.pause();
+ }
+ };
+
+ _this.toggleMute = function () {
+ if (_this.state.muted) {
+ _this.unmute();
+ } else {
+ _this.mute();
+ }
+ };
+
+ _this.load = function () {
+ _this.videoEl.load();
+ };
+
+ _this.fullscreen = function () {
+ if (_this.videoEl.requestFullscreen) {
+ _this.videoEl.requestFullscreen();
+ } else if (_this.videoEl.msRequestFullscreen) {
+ _this.videoEl.msRequestFullscreen();
+ } else if (_this.videoEl.mozRequestFullScreen) {
+ _this.videoEl.mozRequestFullScreen();
+ } else if (_this.videoEl.webkitRequestFullscreen) {
+ _this.videoEl.webkitRequestFullscreen();
+ }
+ };
+
+ _this.play = function () {
+ _this.videoEl.play();
+ };
+
+ _this.pause = function () {
+ _this.videoEl.pause();
+ };
- propTypes: {
- // Non-standard props
- copyKeys: _react2['default'].PropTypes.object,
- children: _react2['default'].PropTypes.node,
- className: _react2['default'].PropTypes.string,
+ _this.unmute = function () {
+ _this.videoEl.muted = false;
+ };
- // HTML5 Video standard attributes
- autoPlay: _react2['default'].PropTypes.bool,
- muted: _react2['default'].PropTypes.bool,
- controls: _react2['default'].PropTypes.bool
- },
+ _this.mute = function () {
+ _this.videoEl.muted = true;
+ };
- getDefaultProps: function getDefaultProps() {
- return {
- copyKeys: _assetsCopy2['default']
+ _this.seek = function (time, forceUpdate) {
+ _this.videoEl.currentTime = time;
+ // In some use cases, we wish not to wait for `onSeeked` or `onSeeking`
+ // throttled event to update state so we force it. This is because
+ // this method is often triggered when dragging a bar and can feel janky.
+ // See https://github.com/mderrick/react-html5video/issues/43
+ if (forceUpdate) {
+ _this.updateStateFromVideo();
+ }
};
- },
-
- getInitialState: function getInitialState() {
- // Set state from props and always use these
- // to check state of video as they will update
- // on the video events. Changing this state however will not
- // change the video. The API methods must be used.
- return {
+
+ _this.setVolume = function (volume, forceUpdate) {
+ _this.videoEl.volume = volume;
+ // In some use cases, we wish not to wait for `onVolumeChange`
+ // throttled event to update state so we force it. This is because
+ // this method is often triggered when dragging a bar and can feel janky.
+ // See https://github.com/mderrick/react-html5video/issues/43
+ if (forceUpdate) {
+ _this.updateStateFromVideo();
+ }
+ };
+
+ _this.setPlaybackRate = function (rate) {
+ _this.videoEl.playbackRate = rate;
+ _this.updateStateFromVideo();
+ };
+
+ _this.updateStateFromVideo = function () {
+ _this.setState({
+ // Standard video properties
+ duration: _this.videoEl.duration,
+ currentTime: _this.videoEl.currentTime,
+ buffered: _this.videoEl.buffered,
+ paused: _this.videoEl.paused,
+ muted: _this.videoEl.muted,
+ volume: _this.videoEl.volume,
+ playbackRate: _this.videoEl.playbackRate,
+ readyState: _this.videoEl.readyState,
+
+ // Non-standard state computed from properties
+ percentageBuffered: _this.videoEl.buffered.length && _this.videoEl.buffered.end(_this.videoEl.buffered.length - 1) / _this.videoEl.duration * 100,
+ percentagePlayed: _this.videoEl.currentTime / _this.videoEl.duration * 100,
+ error: _this.videoEl.networkState === _this.videoEl.NETWORK_NO_SOURCE,
+ loading: _this.videoEl.readyState < _this.videoEl.HAVE_ENOUGH_DATA
+ });
+ };
+
+ _this.renderControls = function () {
+ var extendedProps = Object.assign({
+ // The public methods that all controls should be able to
+ // use.
+ togglePlay: _this.togglePlay,
+ toggleMute: _this.toggleMute,
+ play: _this.play,
+ pause: _this.pause,
+ mute: _this.mute,
+ unmute: _this.unmute,
+ seek: _this.seek,
+ fullscreen: _this.fullscreen,
+ setVolume: _this.setVolume,
+ setPlaybackRate: _this.setPlaybackRate
+ }, _this.state, { copyKeys: _this.props.copyKeys });
+
+ var controls = _react2.default.Children.map(_this.props.children, function (child) {
+ if (child.type === 'source') {
+ return void 0;
+ }
+ return _react2.default.cloneElement(child, extendedProps);
+ });
+
+ if (!controls.length) {
+ controls = _react2.default.createElement(
+ 'div',
+ null,
+ _react2.default.createElement(_Overlay2.default, extendedProps),
+ _react2.default.createElement(_Controls2.default, extendedProps)
+ );
+ }
+ return controls;
+ };
+
+ _this.renderSources = function () {
+ return _react2.default.Children.map(_this.props.children, function (child) {
+ if (child.type !== 'source') {
+ return void 0;
+ }
+ return child;
+ });
+ };
+
+ _this.getVideoClassName = function () {
+ var className = _this.props.className;
+
+ var classString = 'video';
+
+ if (_this.state.error) {
+ classString += ' video--error';
+ } else if (_this.state.loading) {
+ classString += ' video--loading';
+ } else if (_this.state.paused) {
+ classString += ' video--paused';
+ } else {
+ classString += ' video--playing';
+ }
+
+ if (_this.state.focused) {
+ classString += ' video--focused';
+ }
+ if (className) {
+ classString += ' ' + className;
+ }
+ return classString;
+ };
+
+ _this.onFocus = function () {
+ _this.setState({
+ focused: true
+ });
+ };
+
+ _this.onBlur = function () {
+ _this.setState({
+ focused: false
+ });
+ };
+
+ _this.state = {
networkState: 0,
- paused: !this.props.autoPlay,
- muted: !!this.props.muted,
+ paused: !_this.props.autoPlay,
+ muted: !!_this.props.muted,
volume: 1,
playbackRate: 1,
error: false,
loading: false
};
- },
+ return _this;
+ }
/**
* Creates a throttle update method.
* @return {undefined}
*/
- componentWillMount: function componentWillMount() {
- var _this = this;
-
- this._updateStateFromVideo = (0, _lodashThrottle2['default'])(this.updateStateFromVideo, 100);
- // Set up all React media events and call method
- // on props if provided.
- this.mediaEventProps = EVENTS.reduce(function (p, c) {
- p[c] = function (e) {
- if (c in _this.props && typeof _this.props[c] === 'function') {
- // A prop exists for this mediaEvent, call it.
- _this.props[c](e);
- }
- _this._updateStateFromVideo();
- };
- return p;
- }, {});
- },
- /**
- * Bind eventlisteners not supported by React's synthetic events
- * https://facebook.github.io/react/docs/events.html
- * @return {undefined}
- */
- componentDidMount: function componentDidMount() {
- // Listen to error of last source.
- this.videoEl.children[this.videoEl.children.length - 1].addEventListener('error', this._updateStateFromVideo);
- },
- /**
- * Removes event listeners bound outside of React's synthetic events
- * @return {undefined}
- */
- componentWillUnmount: function componentWillUnmount() {
- // Remove event listener from video.
- this.videoEl.children[this.videoEl.children.length - 1].removeEventListener('error', this._updateStateFromVideo);
- // Cancel the throttled function from being called once
- // the video has been unmounted.
- // https://github.com/mderrick/react-html5video/issues/35
- this._updateStateFromVideo.cancel();
- },
+ _createClass(Video, [{
+ key: 'componentWillMount',
+ value: function componentWillMount() {
+ var _this2 = this;
- /**
- * Toggles the video to play and pause.
- * @return {undefined}
- */
- togglePlay: function togglePlay() {
- if (this.state.paused) {
- this.play();
- } else {
- this.pause();
+ this._updateStateFromVideo = (0, _lodash2.default)(this.updateStateFromVideo, 100);
+ // Set up all React media events and call method
+ // on props if provided.
+ this.mediaEventProps = EVENTS.reduce(function (p, c) {
+ p[c] = function (e) {
+ if (c in _this2.props && typeof _this2.props[c] === 'function') {
+ // A prop exists for this mediaEvent, call it.
+ _this2.props[c](e);
+ }
+ _this2._updateStateFromVideo();
+ };
+ return p;
+ }, {});
}
- },
- /**
- * Toggles the video to mute and unmute.
- * @return {undefined}
- */
- toggleMute: function toggleMute() {
- if (this.state.muted) {
- this.unmute();
- } else {
- this.mute();
+ /**
+ * Bind eventlisteners not supported by React's synthetic events
+ * https://facebook.github.io/react/docs/events.html
+ * @return {undefined}
+ */
+
+ }, {
+ key: 'componentDidMount',
+ value: function componentDidMount() {
+ // Listen to error of last source.
+ this.videoEl.children[this.videoEl.children.length - 1].addEventListener('error', this._updateStateFromVideo);
}
- },
- /**
- * Loads video.
- * @return {undefined}
- */
- load: function load() {
- this.videoEl.load();
- },
-
- /**
- * Sets the video to fullscreen.
- * @return {undefined}
- */
- fullscreen: function fullscreen() {
- if (this.videoEl.requestFullscreen) {
- this.videoEl.requestFullscreen();
- } else if (this.videoEl.msRequestFullscreen) {
- this.videoEl.msRequestFullscreen();
- } else if (this.videoEl.mozRequestFullScreen) {
- this.videoEl.mozRequestFullScreen();
- } else if (this.videoEl.webkitRequestFullscreen) {
- this.videoEl.webkitRequestFullscreen();
+ /**
+ * Removes event listeners bound outside of React's synthetic events
+ * @return {undefined}
+ */
+
+ }, {
+ key: 'componentWillUnmount',
+ value: function componentWillUnmount() {
+ // Remove event listener from video.
+ this.videoEl.children[this.videoEl.children.length - 1].removeEventListener('error', this._updateStateFromVideo);
+ // Cancel the throttled function from being called once
+ // the video has been unmounted.
+ // https://github.com/mderrick/react-html5video/issues/35
+ this._updateStateFromVideo.cancel();
}
- },
- /**
- * Plays the video.
- * @return {undefined}
- */
- play: function play() {
- this.videoEl.play();
- },
+ /**
+ * Toggles the video to play and pause.
+ * @return {undefined}
+ */
- /**
- * Pauses the video.
- * @return {undefined}
- */
- pause: function pause() {
- this.videoEl.pause();
- },
- /**
- * Unmutes video.
- * @return {undefined}
- */
- unmute: function unmute() {
- this.videoEl.muted = false;
- },
+ /**
+ * Toggles the video to mute and unmute.
+ * @return {undefined}
+ */
- /**
- * Mutes the video.
- * @return {undefined}
- */
- mute: function mute() {
- this.videoEl.muted = true;
- },
- /**
- * Seeks the video timeline.
- * @param {number} time The value in seconds to seek to
- * @param {bool} forceUpdate Forces a state update without waiting for
- * throttled event.
- * @return {undefined}
- */
- seek: function seek(time, forceUpdate) {
- this.videoEl.currentTime = time;
- // In some use cases, we wish not to wait for `onSeeked` or `onSeeking`
- // throttled event to update state so we force it. This is because
- // this method is often triggered when dragging a bar and can feel janky.
- // See https://github.com/mderrick/react-html5video/issues/43
- if (forceUpdate) {
- this.updateStateFromVideo();
- }
- },
+ /**
+ * Loads video.
+ * @return {undefined}
+ */
- /**
- * Sets the video volume.
- * @param {number} volume The volume level between 0 and 1.
- * @param {bool} forceUpdate Forces a state update without waiting for
- * throttled event.
- * @return {undefined}
- */
- setVolume: function setVolume(volume, forceUpdate) {
- this.videoEl.volume = volume;
- // In some use cases, we wish not to wait for `onVolumeChange`
- // throttled event to update state so we force it. This is because
- // this method is often triggered when dragging a bar and can feel janky.
- // See https://github.com/mderrick/react-html5video/issues/43
- if (forceUpdate) {
- this.updateStateFromVideo();
- }
- },
- /**
- * Sets the video playback rate.
- * @param {number} rate The playback rate (default 1.0).
- * @return {undefined}
- */
- setPlaybackRate: function setPlaybackRate(rate) {
- this.videoEl.playbackRate = rate;
- this.updateStateFromVideo();
- },
+ /**
+ * Sets the video to fullscreen.
+ * @return {undefined}
+ */
- /**
- * Updates the React component state from the DOM video properties.
- * This is where the magic happens.
- * @return {undefined}
- */
- updateStateFromVideo: function updateStateFromVideo() {
- this.setState({
- // Standard video properties
- duration: this.videoEl.duration,
- currentTime: this.videoEl.currentTime,
- buffered: this.videoEl.buffered,
- paused: this.videoEl.paused,
- muted: this.videoEl.muted,
- volume: this.videoEl.volume,
- playbackRate: this.videoEl.playbackRate,
- readyState: this.videoEl.readyState,
-
- // Non-standard state computed from properties
- percentageBuffered: this.videoEl.buffered.length && this.videoEl.buffered.end(this.videoEl.buffered.length - 1) / this.videoEl.duration * 100,
- percentagePlayed: this.videoEl.currentTime / this.videoEl.duration * 100,
- error: this.videoEl.networkState === this.videoEl.NETWORK_NO_SOURCE,
- loading: this.videoEl.readyState < this.videoEl.HAVE_ENOUGH_DATA
- });
- },
- /**
- * Returns everything but 'source' nodes from children
- * and extends props so all children have access to Video API and state.
- * If there are no controls provided, returns default Controls.
- * @return {Array.} An array of components.
- */
- renderControls: function renderControls() {
- var extendedProps = _Object$assign({
- // The public methods that all controls should be able to
- // use.
- togglePlay: this.togglePlay,
- toggleMute: this.toggleMute,
- play: this.play,
- pause: this.pause,
- mute: this.mute,
- unmute: this.unmute,
- seek: this.seek,
- fullscreen: this.fullscreen,
- setVolume: this.setVolume,
- setPlaybackRate: this.setPlaybackRate
- }, this.state, { copyKeys: this.props.copyKeys });
-
- var controls = _react2['default'].Children.map(this.props.children, function (child) {
- if (child.type === 'source') {
- return void 0;
- }
- return _react2['default'].cloneElement(child, extendedProps);
- });
+ /**
+ * Plays the video.
+ * @return {undefined}
+ */
+
+
+ /**
+ * Pauses the video.
+ * @return {undefined}
+ */
+
+
+ /**
+ * Unmutes video.
+ * @return {undefined}
+ */
+
+
+ /**
+ * Mutes the video.
+ * @return {undefined}
+ */
+
+
+ /**
+ * Seeks the video timeline.
+ * @param {number} time The value in seconds to seek to
+ * @param {bool} forceUpdate Forces a state update without waiting for
+ * throttled event.
+ * @return {undefined}
+ */
+
+
+ /**
+ * Sets the video volume.
+ * @param {number} volume The volume level between 0 and 1.
+ * @param {bool} forceUpdate Forces a state update without waiting for
+ * throttled event.
+ * @return {undefined}
+ */
+
- if (!controls.length) {
- controls = _react2['default'].createElement(
+ /**
+ * Sets the video playback rate.
+ * @param {number} rate The playback rate (default 1.0).
+ * @return {undefined}
+ */
+
+
+ /**
+ * Updates the React component state from the DOM video properties.
+ * This is where the magic happens.
+ * @return {undefined}
+ */
+
+
+ /**
+ * Returns everything but 'source' nodes from children
+ * and extends props so all children have access to Video API and state.
+ * If there are no controls provided, returns default Controls.
+ * @return {Array.} An array of components.
+ */
+
+
+ /**
+ * Returns video 'source' nodes from children.
+ * @return {Array.} An array of components.
+ */
+
+
+ /**
+ * Gets the video class name based on its state
+ * @return {string} Class string
+ */
+
+
+ /**
+ * Sets state to show focused class on video player.
+ * @return {undefined}
+ */
+
+
+ /**
+ * Sets state to not be focused to remove class form video
+ * player.
+ * @return {undefined}
+ */
+
+ }, {
+ key: 'render',
+ value: function render() {
+ var _this3 = this;
+
+ // If controls prop is provided remove it
+ // and use our own controls.
+ // Leave `copyKeys` here even though not used
+ // as per issue #36.
+ var _props = this.props,
+ controls = _props.controls,
+ copyKeys = _props.copyKeys,
+ style = _props.style,
+ otherProps = _objectWithoutProperties(_props, ['controls', 'copyKeys', 'style']);
+
+ return _react2.default.createElement(
'div',
- null,
- _react2['default'].createElement(_overlayOverlay2['default'], extendedProps),
- _react2['default'].createElement(_controlsControls2['default'], extendedProps)
+ { className: this.getVideoClassName(),
+ tabIndex: '0',
+ onFocus: this.onFocus,
+ onBlur: this.onBlur,
+ style: style },
+ _react2.default.createElement(
+ 'video',
+ _extends({}, otherProps, {
+ className: 'video__el',
+ ref: function ref(el) {
+ _this3.videoEl = el;
+ }
+ // We have throttled `_updateStateFromVideo` so listen to
+ // every available Media event that React allows and
+ // infer the Video state in that method from the Video properties.
+ }, this.mediaEventProps),
+ this.renderSources()
+ ),
+ controls ? this.renderControls() : ''
);
}
- return controls;
- },
+ }]);
- /**
- * Returns video 'source' nodes from children.
- * @return {Array.} An array of components.
- */
- renderSources: function renderSources() {
- return _react2['default'].Children.map(this.props.children, function (child) {
- if (child.type !== 'source') {
- return void 0;
- }
- return child;
- });
- },
+ return Video;
+ }(_react2.default.Component);
- /**
- * Gets the video class name based on its state
- * @return {string} Class string
- */
- getVideoClassName: function getVideoClassName() {
- var className = this.props.className;
+ Video.propTypes = {
+ // Non-standard props
+ copyKeys: _propTypes2.default.object,
+ children: _propTypes2.default.node,
+ className: _propTypes2.default.string,
+
+ // HTML5 Video standard attributes
+ autoPlay: _propTypes2.default.bool,
+ muted: _propTypes2.default.bool,
+ controls: _propTypes2.default.bool
+ };
+ Video.defaultProps = {
+ copyKeys: _copy2.default
+ };
+ exports.default = Video;
+ exports.Controls = _Controls2.default;
+ exports.Seek = _Seek2.default;
+ exports.Play = _Play2.default;
+ exports.Mute = _Mute2.default;
+ exports.Fullscreen = _Fullscreen2.default;
+ exports.Time = _Time2.default;
+ exports.Overlay = _Overlay2.default;
+
+/***/ }),
+/* 21 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(process) {/**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
- var classString = 'video';
+ if (process.env.NODE_ENV !== 'production') {
+ var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&
+ Symbol.for &&
+ Symbol.for('react.element')) ||
+ 0xeac7;
+
+ var isValidElement = function(object) {
+ return typeof object === 'object' &&
+ object !== null &&
+ object.$$typeof === REACT_ELEMENT_TYPE;
+ };
- if (this.state.error) {
- classString += ' video--error';
- } else if (this.state.loading) {
- classString += ' video--loading';
- } else if (this.state.paused) {
- classString += ' video--paused';
+ // By explicitly using `prop-types` you are opting into new development behavior.
+ // http://fb.me/prop-types-in-prod
+ var throwOnDirectAccess = true;
+ module.exports = __webpack_require__(23)(isValidElement, throwOnDirectAccess);
+ } else {
+ // By explicitly using `prop-types` you are opting into new production behavior.
+ // http://fb.me/prop-types-in-prod
+ module.exports = __webpack_require__(30)();
+ }
+
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(22)))
+
+/***/ }),
+/* 22 */
+/***/ (function(module, exports) {
+
+ // shim for using process in browser
+ var process = module.exports = {};
+
+ // cached from whatever global is present so that test runners that stub it
+ // don't break things. But we need to wrap it in a try catch in case it is
+ // wrapped in strict mode code which doesn't define any globals. It's inside a
+ // function because try/catches deoptimize in certain engines.
+
+ var cachedSetTimeout;
+ var cachedClearTimeout;
+
+ function defaultSetTimout() {
+ throw new Error('setTimeout has not been defined');
+ }
+ function defaultClearTimeout () {
+ throw new Error('clearTimeout has not been defined');
+ }
+ (function () {
+ try {
+ if (typeof setTimeout === 'function') {
+ cachedSetTimeout = setTimeout;
} else {
- classString += ' video--playing';
+ cachedSetTimeout = defaultSetTimout;
}
-
- if (this.state.focused) {
- classString += ' video--focused';
+ } catch (e) {
+ cachedSetTimeout = defaultSetTimout;
+ }
+ try {
+ if (typeof clearTimeout === 'function') {
+ cachedClearTimeout = clearTimeout;
+ } else {
+ cachedClearTimeout = defaultClearTimeout;
}
- if (className) {
- classString += ' ' + className;
+ } catch (e) {
+ cachedClearTimeout = defaultClearTimeout;
+ }
+ } ())
+ function runTimeout(fun) {
+ if (cachedSetTimeout === setTimeout) {
+ //normal enviroments in sane situations
+ return setTimeout(fun, 0);
+ }
+ // if setTimeout wasn't available but was latter defined
+ if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
+ cachedSetTimeout = setTimeout;
+ return setTimeout(fun, 0);
+ }
+ try {
+ // when when somebody has screwed with setTimeout but no I.E. maddness
+ return cachedSetTimeout(fun, 0);
+ } catch(e){
+ try {
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+ return cachedSetTimeout.call(null, fun, 0);
+ } catch(e){
+ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
+ return cachedSetTimeout.call(this, fun, 0);
}
- return classString;
- },
-
- /**
- * Sets state to show focused class on video player.
- * @return {undefined}
- */
- onFocus: function onFocus() {
- this.setState({
- focused: true
- });
- },
-
- /**
- * Sets state to not be focused to remove class form video
- * player.
- * @return {undefined}
- */
- onBlur: function onBlur() {
- this.setState({
- focused: false
- });
- },
-
- render: function render() {
- var _this2 = this;
-
- // If controls prop is provided remove it
- // and use our own controls.
- // Leave `copyKeys` here even though not used
- // as per issue #36.
- var _props = this.props;
- var controls = _props.controls;
- var copyKeys = _props.copyKeys;
- var style = _props.style;
-
- var otherProps = _objectWithoutProperties(_props, ['controls', 'copyKeys', 'style']);
-
- return _react2['default'].createElement(
- 'div',
- { className: this.getVideoClassName(),
- tabIndex: '0',
- onFocus: this.onFocus,
- onBlur: this.onBlur,
- style: style },
- _react2['default'].createElement(
- 'video',
- _extends({}, otherProps, {
- className: 'video__el',
- ref: function (el) {
- _this2.videoEl = el;
- }
- // We have throttled `_updateStateFromVideo` so listen to
- // every available Media event that React allows and
- // infer the Video state in that method from the Video properties.
- }, this.mediaEventProps),
- this.renderSources()
- ),
- controls ? this.renderControls() : ''
- );
}
- });
- exports['default'] = Video;
- exports.Controls = _controlsControls2['default'];
- exports.Seek = _controlsSeekSeek2['default'];
- exports.Play = _controlsPlayPlay2['default'];
- exports.Mute = _controlsMuteMute2['default'];
- exports.Fullscreen = _controlsFullscreenFullscreen2['default'];
- exports.Time = _controlsTimeTime2['default'];
- exports.Overlay = _overlayOverlay2['default'];
-/***/ },
-/* 21 */
-/***/ function(module, exports, __webpack_require__) {
+ }
+ function runClearTimeout(marker) {
+ if (cachedClearTimeout === clearTimeout) {
+ //normal enviroments in sane situations
+ return clearTimeout(marker);
+ }
+ // if clearTimeout wasn't available but was latter defined
+ if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
+ cachedClearTimeout = clearTimeout;
+ return clearTimeout(marker);
+ }
+ try {
+ // when when somebody has screwed with setTimeout but no I.E. maddness
+ return cachedClearTimeout(marker);
+ } catch (e){
+ try {
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+ return cachedClearTimeout.call(null, marker);
+ } catch (e){
+ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
+ // Some versions of I.E. have different rules for clearTimeout vs setTimeout
+ return cachedClearTimeout.call(this, marker);
+ }
+ }
- module.exports = __webpack_require__(22);
-/***/ },
-/* 22 */
-/***/ function(module, exports) {
- "use strict";
+ }
+ var queue = [];
+ var draining = false;
+ var currentQueue;
+ var queueIndex = -1;
+
+ function cleanUpNextTick() {
+ if (!draining || !currentQueue) {
+ return;
+ }
+ draining = false;
+ if (currentQueue.length) {
+ queue = currentQueue.concat(queue);
+ } else {
+ queueIndex = -1;
+ }
+ if (queue.length) {
+ drainQueue();
+ }
+ }
- exports.__esModule = true;
+ function drainQueue() {
+ if (draining) {
+ return;
+ }
+ var timeout = runTimeout(cleanUpNextTick);
+ draining = true;
+
+ var len = queue.length;
+ while(len) {
+ currentQueue = queue;
+ queue = [];
+ while (++queueIndex < len) {
+ if (currentQueue) {
+ currentQueue[queueIndex].run();
+ }
+ }
+ queueIndex = -1;
+ len = queue.length;
+ }
+ currentQueue = null;
+ draining = false;
+ runClearTimeout(timeout);
+ }
- exports.default = function (obj, keys) {
- var target = {};
+ process.nextTick = function (fun) {
+ var args = new Array(arguments.length - 1);
+ if (arguments.length > 1) {
+ for (var i = 1; i < arguments.length; i++) {
+ args[i - 1] = arguments[i];
+ }
+ }
+ queue.push(new Item(fun, args));
+ if (queue.length === 1 && !draining) {
+ runTimeout(drainQueue);
+ }
+ };
- for (var i in obj) {
- if (keys.indexOf(i) >= 0) continue;
- if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;
- target[i] = obj[i];
- }
+ // v8 likes predictible objects
+ function Item(fun, array) {
+ this.fun = fun;
+ this.array = array;
+ }
+ Item.prototype.run = function () {
+ this.fun.apply(null, this.array);
+ };
+ process.title = 'browser';
+ process.browser = true;
+ process.env = {};
+ process.argv = [];
+ process.version = ''; // empty string to avoid regexp issues
+ process.versions = {};
+
+ function noop() {}
+
+ process.on = noop;
+ process.addListener = noop;
+ process.once = noop;
+ process.off = noop;
+ process.removeListener = noop;
+ process.removeAllListeners = noop;
+ process.emit = noop;
+ process.prependListener = noop;
+ process.prependOnceListener = noop;
+
+ process.listeners = function (name) { return [] }
+
+ process.binding = function (name) {
+ throw new Error('process.binding is not supported');
+ };
- return target;
+ process.cwd = function () { return '/' };
+ process.chdir = function (dir) {
+ throw new Error('process.chdir is not supported');
};
+ process.umask = function() { return 0; };
-/***/ },
-/* 23 */
-/***/ function(module, exports, __webpack_require__) {
- "use strict";
+/***/ }),
+/* 23 */
+/***/ (function(module, exports, __webpack_require__) {
- exports.__esModule = true;
+ /* WEBPACK VAR INJECTION */(function(process) {/**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
- var _assign = __webpack_require__(24);
+ 'use strict';
- var _assign2 = _interopRequireDefault(_assign);
+ var emptyFunction = __webpack_require__(24);
+ var invariant = __webpack_require__(25);
+ var warning = __webpack_require__(26);
+ var assign = __webpack_require__(27);
+
+ var ReactPropTypesSecret = __webpack_require__(28);
+ var checkPropTypes = __webpack_require__(29);
+
+ module.exports = function(isValidElement, throwOnDirectAccess) {
+ /* global Symbol */
+ var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
+ var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
+
+ /**
+ * Returns the iterator method function contained on the iterable object.
+ *
+ * Be sure to invoke the function with the iterable as context:
+ *
+ * var iteratorFn = getIteratorFn(myIterable);
+ * if (iteratorFn) {
+ * var iterator = iteratorFn.call(myIterable);
+ * ...
+ * }
+ *
+ * @param {?object} maybeIterable
+ * @return {?function}
+ */
+ function getIteratorFn(maybeIterable) {
+ var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
+ if (typeof iteratorFn === 'function') {
+ return iteratorFn;
+ }
+ }
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+ /**
+ * Collection of methods that allow declaration and validation of props that are
+ * supplied to React components. Example usage:
+ *
+ * var Props = require('ReactPropTypes');
+ * var MyArticle = React.createClass({
+ * propTypes: {
+ * // An optional string prop named "description".
+ * description: Props.string,
+ *
+ * // A required enum prop named "category".
+ * category: Props.oneOf(['News','Photos']).isRequired,
+ *
+ * // A prop named "dialog" that requires an instance of Dialog.
+ * dialog: Props.instanceOf(Dialog).isRequired
+ * },
+ * render: function() { ... }
+ * });
+ *
+ * A more formal specification of how these methods are used:
+ *
+ * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
+ * decl := ReactPropTypes.{type}(.isRequired)?
+ *
+ * Each and every declaration produces a function with the same signature. This
+ * allows the creation of custom validation functions. For example:
+ *
+ * var MyLink = React.createClass({
+ * propTypes: {
+ * // An optional string or URI prop named "href".
+ * href: function(props, propName, componentName) {
+ * var propValue = props[propName];
+ * if (propValue != null && typeof propValue !== 'string' &&
+ * !(propValue instanceof URI)) {
+ * return new Error(
+ * 'Expected a string or an URI for ' + propName + ' in ' +
+ * componentName
+ * );
+ * }
+ * }
+ * },
+ * render: function() {...}
+ * });
+ *
+ * @internal
+ */
+
+ var ANONYMOUS = '<>';
+
+ // Important!
+ // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
+ var ReactPropTypes = {
+ array: createPrimitiveTypeChecker('array'),
+ bool: createPrimitiveTypeChecker('boolean'),
+ func: createPrimitiveTypeChecker('function'),
+ number: createPrimitiveTypeChecker('number'),
+ object: createPrimitiveTypeChecker('object'),
+ string: createPrimitiveTypeChecker('string'),
+ symbol: createPrimitiveTypeChecker('symbol'),
+
+ any: createAnyTypeChecker(),
+ arrayOf: createArrayOfTypeChecker,
+ element: createElementTypeChecker(),
+ instanceOf: createInstanceTypeChecker,
+ node: createNodeChecker(),
+ objectOf: createObjectOfTypeChecker,
+ oneOf: createEnumTypeChecker,
+ oneOfType: createUnionTypeChecker,
+ shape: createShapeTypeChecker,
+ exact: createStrictShapeTypeChecker,
+ };
- exports.default = _assign2.default || function (target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i];
+ /**
+ * inlined Object.is polyfill to avoid requiring consumers ship their own
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
+ */
+ /*eslint-disable no-self-compare*/
+ function is(x, y) {
+ // SameValue algorithm
+ if (x === y) {
+ // Steps 1-5, 7-10
+ // Steps 6.b-6.e: +0 != -0
+ return x !== 0 || 1 / x === 1 / y;
+ } else {
+ // Step 6.a: NaN == NaN
+ return x !== x && y !== y;
+ }
+ }
+ /*eslint-enable no-self-compare*/
+
+ /**
+ * We use an Error-like object for backward compatibility as people may call
+ * PropTypes directly and inspect their output. However, we don't use real
+ * Errors anymore. We don't inspect their stack anyway, and creating them
+ * is prohibitively expensive if they are created too often, such as what
+ * happens in oneOfType() for any type before the one that matched.
+ */
+ function PropTypeError(message) {
+ this.message = message;
+ this.stack = '';
+ }
+ // Make `instanceof Error` still work for returned errors.
+ PropTypeError.prototype = Error.prototype;
- for (var key in source) {
- if (Object.prototype.hasOwnProperty.call(source, key)) {
- target[key] = source[key];
+ function createChainableTypeChecker(validate) {
+ if (process.env.NODE_ENV !== 'production') {
+ var manualPropTypeCallCache = {};
+ var manualPropTypeWarningCount = 0;
+ }
+ function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
+ componentName = componentName || ANONYMOUS;
+ propFullName = propFullName || propName;
+
+ if (secret !== ReactPropTypesSecret) {
+ if (throwOnDirectAccess) {
+ // New behavior only for users of `prop-types` package
+ invariant(
+ false,
+ 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
+ 'Use `PropTypes.checkPropTypes()` to call them. ' +
+ 'Read more at http://fb.me/use-check-prop-types'
+ );
+ } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {
+ // Old behavior for people using React.PropTypes
+ var cacheKey = componentName + ':' + propName;
+ if (
+ !manualPropTypeCallCache[cacheKey] &&
+ // Avoid spamming the console because they are often not actionable except for lib authors
+ manualPropTypeWarningCount < 3
+ ) {
+ warning(
+ false,
+ 'You are manually calling a React.PropTypes validation ' +
+ 'function for the `%s` prop on `%s`. This is deprecated ' +
+ 'and will throw in the standalone `prop-types` package. ' +
+ 'You may be seeing this warning due to a third-party PropTypes ' +
+ 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',
+ propFullName,
+ componentName
+ );
+ manualPropTypeCallCache[cacheKey] = true;
+ manualPropTypeWarningCount++;
+ }
+ }
+ }
+ if (props[propName] == null) {
+ if (isRequired) {
+ if (props[propName] === null) {
+ return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
+ }
+ return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
+ }
+ return null;
+ } else {
+ return validate(props, propName, componentName, location, propFullName);
}
}
+
+ var chainedCheckType = checkType.bind(null, false);
+ chainedCheckType.isRequired = checkType.bind(null, true);
+
+ return chainedCheckType;
}
- return target;
- };
+ function createPrimitiveTypeChecker(expectedType) {
+ function validate(props, propName, componentName, location, propFullName, secret) {
+ var propValue = props[propName];
+ var propType = getPropType(propValue);
+ if (propType !== expectedType) {
+ // `propValue` being instance of, say, date/regexp, pass the 'object'
+ // check, but we can offer a more precise error message here rather than
+ // 'of type `object`'.
+ var preciseType = getPreciseType(propValue);
+
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
+ }
+ return null;
+ }
+ return createChainableTypeChecker(validate);
+ }
-/***/ },
-/* 24 */
-/***/ function(module, exports, __webpack_require__) {
+ function createAnyTypeChecker() {
+ return createChainableTypeChecker(emptyFunction.thatReturnsNull);
+ }
- module.exports = { "default": __webpack_require__(25), __esModule: true };
+ function createArrayOfTypeChecker(typeChecker) {
+ function validate(props, propName, componentName, location, propFullName) {
+ if (typeof typeChecker !== 'function') {
+ return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
+ }
+ var propValue = props[propName];
+ if (!Array.isArray(propValue)) {
+ var propType = getPropType(propValue);
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
+ }
+ for (var i = 0; i < propValue.length; i++) {
+ var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
+ if (error instanceof Error) {
+ return error;
+ }
+ }
+ return null;
+ }
+ return createChainableTypeChecker(validate);
+ }
-/***/ },
-/* 25 */
-/***/ function(module, exports, __webpack_require__) {
+ function createElementTypeChecker() {
+ function validate(props, propName, componentName, location, propFullName) {
+ var propValue = props[propName];
+ if (!isValidElement(propValue)) {
+ var propType = getPropType(propValue);
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
+ }
+ return null;
+ }
+ return createChainableTypeChecker(validate);
+ }
- __webpack_require__(26);
- module.exports = __webpack_require__(29).Object.assign;
+ function createInstanceTypeChecker(expectedClass) {
+ function validate(props, propName, componentName, location, propFullName) {
+ if (!(props[propName] instanceof expectedClass)) {
+ var expectedClassName = expectedClass.name || ANONYMOUS;
+ var actualClassName = getClassName(props[propName]);
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
+ }
+ return null;
+ }
+ return createChainableTypeChecker(validate);
+ }
-/***/ },
-/* 26 */
-/***/ function(module, exports, __webpack_require__) {
+ function createEnumTypeChecker(expectedValues) {
+ if (!Array.isArray(expectedValues)) {
+ process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;
+ return emptyFunction.thatReturnsNull;
+ }
- // 19.1.3.1 Object.assign(target, source)
- var $export = __webpack_require__(27);
+ function validate(props, propName, componentName, location, propFullName) {
+ var propValue = props[propName];
+ for (var i = 0; i < expectedValues.length; i++) {
+ if (is(propValue, expectedValues[i])) {
+ return null;
+ }
+ }
- $export($export.S + $export.F, 'Object', {assign: __webpack_require__(42)});
+ var valuesString = JSON.stringify(expectedValues);
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
+ }
+ return createChainableTypeChecker(validate);
+ }
-/***/ },
-/* 27 */
-/***/ function(module, exports, __webpack_require__) {
-
- var global = __webpack_require__(28)
- , core = __webpack_require__(29)
- , ctx = __webpack_require__(30)
- , hide = __webpack_require__(32)
- , PROTOTYPE = 'prototype';
-
- var $export = function(type, name, source){
- var IS_FORCED = type & $export.F
- , IS_GLOBAL = type & $export.G
- , IS_STATIC = type & $export.S
- , IS_PROTO = type & $export.P
- , IS_BIND = type & $export.B
- , IS_WRAP = type & $export.W
- , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
- , expProto = exports[PROTOTYPE]
- , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
- , key, own, out;
- if(IS_GLOBAL)source = name;
- for(key in source){
- // contains in native
- own = !IS_FORCED && target && target[key] !== undefined;
- if(own && key in exports)continue;
- // export native or passed
- out = own ? target[key] : source[key];
- // prevent global pollution for namespaces
- exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
- // bind timers to global for call from export context
- : IS_BIND && own ? ctx(out, global)
- // wrap global constructors for prevent change them in library
- : IS_WRAP && target[key] == out ? (function(C){
- var F = function(a, b, c){
- if(this instanceof C){
- switch(arguments.length){
- case 0: return new C;
- case 1: return new C(a);
- case 2: return new C(a, b);
- } return new C(a, b, c);
- } return C.apply(this, arguments);
- };
- F[PROTOTYPE] = C[PROTOTYPE];
- return F;
- // make static versions for prototype methods
- })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
- // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
- if(IS_PROTO){
- (exports.virtual || (exports.virtual = {}))[key] = out;
- // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
- if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);
+ function createObjectOfTypeChecker(typeChecker) {
+ function validate(props, propName, componentName, location, propFullName) {
+ if (typeof typeChecker !== 'function') {
+ return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
+ }
+ var propValue = props[propName];
+ var propType = getPropType(propValue);
+ if (propType !== 'object') {
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
+ }
+ for (var key in propValue) {
+ if (propValue.hasOwnProperty(key)) {
+ var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
+ if (error instanceof Error) {
+ return error;
+ }
+ }
+ }
+ return null;
}
+ return createChainableTypeChecker(validate);
}
- };
- // type bitmap
- $export.F = 1; // forced
- $export.G = 2; // global
- $export.S = 4; // static
- $export.P = 8; // proto
- $export.B = 16; // bind
- $export.W = 32; // wrap
- $export.U = 64; // safe
- $export.R = 128; // real proto method for `library`
- module.exports = $export;
-
-/***/ },
-/* 28 */
-/***/ function(module, exports) {
- // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
- var global = module.exports = typeof window != 'undefined' && window.Math == Math
- ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
- if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
+ function createUnionTypeChecker(arrayOfTypeCheckers) {
+ if (!Array.isArray(arrayOfTypeCheckers)) {
+ process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;
+ return emptyFunction.thatReturnsNull;
+ }
-/***/ },
-/* 29 */
-/***/ function(module, exports) {
+ for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
+ var checker = arrayOfTypeCheckers[i];
+ if (typeof checker !== 'function') {
+ warning(
+ false,
+ 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +
+ 'received %s at index %s.',
+ getPostfixForTypeWarning(checker),
+ i
+ );
+ return emptyFunction.thatReturnsNull;
+ }
+ }
- var core = module.exports = {version: '2.4.0'};
- if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
+ function validate(props, propName, componentName, location, propFullName) {
+ for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
+ var checker = arrayOfTypeCheckers[i];
+ if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
+ return null;
+ }
+ }
-/***/ },
-/* 30 */
-/***/ function(module, exports, __webpack_require__) {
-
- // optional / simple context binding
- var aFunction = __webpack_require__(31);
- module.exports = function(fn, that, length){
- aFunction(fn);
- if(that === undefined)return fn;
- switch(length){
- case 1: return function(a){
- return fn.call(that, a);
- };
- case 2: return function(a, b){
- return fn.call(that, a, b);
- };
- case 3: return function(a, b, c){
- return fn.call(that, a, b, c);
- };
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
+ }
+ return createChainableTypeChecker(validate);
}
- return function(/* ...args */){
- return fn.apply(that, arguments);
- };
- };
-/***/ },
-/* 31 */
-/***/ function(module, exports) {
+ function createNodeChecker() {
+ function validate(props, propName, componentName, location, propFullName) {
+ if (!isNode(props[propName])) {
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
+ }
+ return null;
+ }
+ return createChainableTypeChecker(validate);
+ }
- module.exports = function(it){
- if(typeof it != 'function')throw TypeError(it + ' is not a function!');
- return it;
- };
+ function createShapeTypeChecker(shapeTypes) {
+ function validate(props, propName, componentName, location, propFullName) {
+ var propValue = props[propName];
+ var propType = getPropType(propValue);
+ if (propType !== 'object') {
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
+ }
+ for (var key in shapeTypes) {
+ var checker = shapeTypes[key];
+ if (!checker) {
+ continue;
+ }
+ var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
+ if (error) {
+ return error;
+ }
+ }
+ return null;
+ }
+ return createChainableTypeChecker(validate);
+ }
-/***/ },
-/* 32 */
-/***/ function(module, exports, __webpack_require__) {
-
- var dP = __webpack_require__(33)
- , createDesc = __webpack_require__(41);
- module.exports = __webpack_require__(37) ? function(object, key, value){
- return dP.f(object, key, createDesc(1, value));
- } : function(object, key, value){
- object[key] = value;
- return object;
- };
+ function createStrictShapeTypeChecker(shapeTypes) {
+ function validate(props, propName, componentName, location, propFullName) {
+ var propValue = props[propName];
+ var propType = getPropType(propValue);
+ if (propType !== 'object') {
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
+ }
+ // We need to check all keys in case some are required but missing from
+ // props.
+ var allKeys = assign({}, props[propName], shapeTypes);
+ for (var key in allKeys) {
+ var checker = shapeTypes[key];
+ if (!checker) {
+ return new PropTypeError(
+ 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +
+ '\nBad object: ' + JSON.stringify(props[propName], null, ' ') +
+ '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')
+ );
+ }
+ var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
+ if (error) {
+ return error;
+ }
+ }
+ return null;
+ }
-/***/ },
-/* 33 */
-/***/ function(module, exports, __webpack_require__) {
-
- var anObject = __webpack_require__(34)
- , IE8_DOM_DEFINE = __webpack_require__(36)
- , toPrimitive = __webpack_require__(40)
- , dP = Object.defineProperty;
-
- exports.f = __webpack_require__(37) ? Object.defineProperty : function defineProperty(O, P, Attributes){
- anObject(O);
- P = toPrimitive(P, true);
- anObject(Attributes);
- if(IE8_DOM_DEFINE)try {
- return dP(O, P, Attributes);
- } catch(e){ /* empty */ }
- if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
- if('value' in Attributes)O[P] = Attributes.value;
- return O;
- };
+ return createChainableTypeChecker(validate);
+ }
-/***/ },
-/* 34 */
-/***/ function(module, exports, __webpack_require__) {
+ function isNode(propValue) {
+ switch (typeof propValue) {
+ case 'number':
+ case 'string':
+ case 'undefined':
+ return true;
+ case 'boolean':
+ return !propValue;
+ case 'object':
+ if (Array.isArray(propValue)) {
+ return propValue.every(isNode);
+ }
+ if (propValue === null || isValidElement(propValue)) {
+ return true;
+ }
- var isObject = __webpack_require__(35);
- module.exports = function(it){
- if(!isObject(it))throw TypeError(it + ' is not an object!');
- return it;
- };
+ var iteratorFn = getIteratorFn(propValue);
+ if (iteratorFn) {
+ var iterator = iteratorFn.call(propValue);
+ var step;
+ if (iteratorFn !== propValue.entries) {
+ while (!(step = iterator.next()).done) {
+ if (!isNode(step.value)) {
+ return false;
+ }
+ }
+ } else {
+ // Iterator will provide entry [k,v] tuples rather than values.
+ while (!(step = iterator.next()).done) {
+ var entry = step.value;
+ if (entry) {
+ if (!isNode(entry[1])) {
+ return false;
+ }
+ }
+ }
+ }
+ } else {
+ return false;
+ }
-/***/ },
-/* 35 */
-/***/ function(module, exports) {
+ return true;
+ default:
+ return false;
+ }
+ }
- module.exports = function(it){
- return typeof it === 'object' ? it !== null : typeof it === 'function';
- };
+ function isSymbol(propType, propValue) {
+ // Native Symbol.
+ if (propType === 'symbol') {
+ return true;
+ }
-/***/ },
-/* 36 */
-/***/ function(module, exports, __webpack_require__) {
+ // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
+ if (propValue['@@toStringTag'] === 'Symbol') {
+ return true;
+ }
- module.exports = !__webpack_require__(37) && !__webpack_require__(38)(function(){
- return Object.defineProperty(__webpack_require__(39)('div'), 'a', {get: function(){ return 7; }}).a != 7;
- });
+ // Fallback for non-spec compliant Symbols which are polyfilled.
+ if (typeof Symbol === 'function' && propValue instanceof Symbol) {
+ return true;
+ }
-/***/ },
-/* 37 */
-/***/ function(module, exports, __webpack_require__) {
+ return false;
+ }
- // Thank's IE8 for his funny defineProperty
- module.exports = !__webpack_require__(38)(function(){
- return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
- });
+ // Equivalent of `typeof` but with special handling for array and regexp.
+ function getPropType(propValue) {
+ var propType = typeof propValue;
+ if (Array.isArray(propValue)) {
+ return 'array';
+ }
+ if (propValue instanceof RegExp) {
+ // Old webkits (at least until Android 4.0) return 'function' rather than
+ // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
+ // passes PropTypes.object.
+ return 'object';
+ }
+ if (isSymbol(propType, propValue)) {
+ return 'symbol';
+ }
+ return propType;
+ }
-/***/ },
-/* 38 */
-/***/ function(module, exports) {
+ // This handles more types than `getPropType`. Only used for error messages.
+ // See `createPrimitiveTypeChecker`.
+ function getPreciseType(propValue) {
+ if (typeof propValue === 'undefined' || propValue === null) {
+ return '' + propValue;
+ }
+ var propType = getPropType(propValue);
+ if (propType === 'object') {
+ if (propValue instanceof Date) {
+ return 'date';
+ } else if (propValue instanceof RegExp) {
+ return 'regexp';
+ }
+ }
+ return propType;
+ }
- module.exports = function(exec){
- try {
- return !!exec();
- } catch(e){
- return true;
+ // Returns a string that is postfixed to a warning about an invalid type.
+ // For example, "undefined" or "of type array"
+ function getPostfixForTypeWarning(value) {
+ var type = getPreciseType(value);
+ switch (type) {
+ case 'array':
+ case 'object':
+ return 'an ' + type;
+ case 'boolean':
+ case 'date':
+ case 'regexp':
+ return 'a ' + type;
+ default:
+ return type;
+ }
}
- };
-/***/ },
-/* 39 */
-/***/ function(module, exports, __webpack_require__) {
-
- var isObject = __webpack_require__(35)
- , document = __webpack_require__(28).document
- // in old IE typeof document.createElement is 'object'
- , is = isObject(document) && isObject(document.createElement);
- module.exports = function(it){
- return is ? document.createElement(it) : {};
- };
+ // Returns class name of the object, if any.
+ function getClassName(propValue) {
+ if (!propValue.constructor || !propValue.constructor.name) {
+ return ANONYMOUS;
+ }
+ return propValue.constructor.name;
+ }
-/***/ },
-/* 40 */
-/***/ function(module, exports, __webpack_require__) {
-
- // 7.1.1 ToPrimitive(input [, PreferredType])
- var isObject = __webpack_require__(35);
- // instead of the ES6 spec version, we didn't implement @@toPrimitive case
- // and the second argument - flag - preferred type is a string
- module.exports = function(it, S){
- if(!isObject(it))return it;
- var fn, val;
- if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
- if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
- if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
- throw TypeError("Can't convert object to primitive value");
+ ReactPropTypes.checkPropTypes = checkPropTypes;
+ ReactPropTypes.PropTypes = ReactPropTypes;
+
+ return ReactPropTypes;
};
-/***/ },
-/* 41 */
-/***/ function(module, exports) {
-
- module.exports = function(bitmap, value){
- return {
- enumerable : !(bitmap & 1),
- configurable: !(bitmap & 2),
- writable : !(bitmap & 4),
- value : value
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(22)))
+
+/***/ }),
+/* 24 */
+/***/ (function(module, exports) {
+
+ "use strict";
+
+ /**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ *
+ */
+
+ function makeEmptyFunction(arg) {
+ return function () {
+ return arg;
};
+ }
+
+ /**
+ * This function accepts and discards inputs; it has no side effects. This is
+ * primarily useful idiomatically for overridable function endpoints which
+ * always need to be callable, since JS lacks a null-call idiom ala Cocoa.
+ */
+ var emptyFunction = function emptyFunction() {};
+
+ emptyFunction.thatReturns = makeEmptyFunction;
+ emptyFunction.thatReturnsFalse = makeEmptyFunction(false);
+ emptyFunction.thatReturnsTrue = makeEmptyFunction(true);
+ emptyFunction.thatReturnsNull = makeEmptyFunction(null);
+ emptyFunction.thatReturnsThis = function () {
+ return this;
+ };
+ emptyFunction.thatReturnsArgument = function (arg) {
+ return arg;
};
-/***/ },
-/* 42 */
-/***/ function(module, exports, __webpack_require__) {
+ module.exports = emptyFunction;
+
+/***/ }),
+/* 25 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(process) {/**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
'use strict';
- // 19.1.2.1 Object.assign(target, source, ...)
- var getKeys = __webpack_require__(43)
- , gOPS = __webpack_require__(58)
- , pIE = __webpack_require__(59)
- , toObject = __webpack_require__(60)
- , IObject = __webpack_require__(47)
- , $assign = Object.assign;
-
- // should work with symbols and should have deterministic property order (V8 bug)
- module.exports = !$assign || __webpack_require__(38)(function(){
- var A = {}
- , B = {}
- , S = Symbol()
- , K = 'abcdefghijklmnopqrst';
- A[S] = 7;
- K.split('').forEach(function(k){ B[k] = k; });
- return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
- }) ? function assign(target, source){ // eslint-disable-line no-unused-vars
- var T = toObject(target)
- , aLen = arguments.length
- , index = 1
- , getSymbols = gOPS.f
- , isEnum = pIE.f;
- while(aLen > index){
- var S = IObject(arguments[index++])
- , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
- , length = keys.length
- , j = 0
- , key;
- while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
- } return T;
- } : $assign;
-
-/***/ },
-/* 43 */
-/***/ function(module, exports, __webpack_require__) {
- // 19.1.2.14 / 15.2.3.14 Object.keys(O)
- var $keys = __webpack_require__(44)
- , enumBugKeys = __webpack_require__(57);
+ /**
+ * Use invariant() to assert state which your program assumes to be true.
+ *
+ * Provide sprintf-style format (only %s is supported) and arguments
+ * to provide information about what broke and what you were
+ * expecting.
+ *
+ * The invariant message will be stripped in production, but the invariant
+ * will remain to ensure logic does not differ in production.
+ */
- module.exports = Object.keys || function keys(O){
- return $keys(O, enumBugKeys);
- };
+ var validateFormat = function validateFormat(format) {};
-/***/ },
-/* 44 */
-/***/ function(module, exports, __webpack_require__) {
-
- var has = __webpack_require__(45)
- , toIObject = __webpack_require__(46)
- , arrayIndexOf = __webpack_require__(50)(false)
- , IE_PROTO = __webpack_require__(54)('IE_PROTO');
-
- module.exports = function(object, names){
- var O = toIObject(object)
- , i = 0
- , result = []
- , key;
- for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);
- // Don't enum bug & hidden keys
- while(names.length > i)if(has(O, key = names[i++])){
- ~arrayIndexOf(result, key) || result.push(key);
+ if (process.env.NODE_ENV !== 'production') {
+ validateFormat = function validateFormat(format) {
+ if (format === undefined) {
+ throw new Error('invariant requires an error message argument');
+ }
+ };
+ }
+
+ function invariant(condition, format, a, b, c, d, e, f) {
+ validateFormat(format);
+
+ if (!condition) {
+ var error;
+ if (format === undefined) {
+ error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
+ } else {
+ var args = [a, b, c, d, e, f];
+ var argIndex = 0;
+ error = new Error(format.replace(/%s/g, function () {
+ return args[argIndex++];
+ }));
+ error.name = 'Invariant Violation';
+ }
+
+ error.framesToPop = 1; // we don't care about invariant's own frame
+ throw error;
}
- return result;
- };
+ }
-/***/ },
-/* 45 */
-/***/ function(module, exports) {
+ module.exports = invariant;
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(22)))
- var hasOwnProperty = {}.hasOwnProperty;
- module.exports = function(it, key){
- return hasOwnProperty.call(it, key);
- };
+/***/ }),
+/* 26 */
+/***/ (function(module, exports, __webpack_require__) {
-/***/ },
-/* 46 */
-/***/ function(module, exports, __webpack_require__) {
+ /* WEBPACK VAR INJECTION */(function(process) {/**
+ * Copyright (c) 2014-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
- // to indexed object, toObject with fallback for non-array-like ES3 strings
- var IObject = __webpack_require__(47)
- , defined = __webpack_require__(49);
- module.exports = function(it){
- return IObject(defined(it));
- };
+ 'use strict';
-/***/ },
-/* 47 */
-/***/ function(module, exports, __webpack_require__) {
+ var emptyFunction = __webpack_require__(24);
- // fallback for non-array-like ES3 and non-enumerable old V8 strings
- var cof = __webpack_require__(48);
- module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
- return cof(it) == 'String' ? it.split('') : Object(it);
- };
+ /**
+ * Similar to invariant but only logs a warning if the condition is not met.
+ * This can be used to log issues in development environments in critical
+ * paths. Removing the logging code for production environments will keep the
+ * same logic and follow the same code paths.
+ */
-/***/ },
-/* 48 */
-/***/ function(module, exports) {
+ var warning = emptyFunction;
- var toString = {}.toString;
+ if (process.env.NODE_ENV !== 'production') {
+ var printWarning = function printWarning(format) {
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ }
- module.exports = function(it){
- return toString.call(it).slice(8, -1);
- };
+ var argIndex = 0;
+ var message = 'Warning: ' + format.replace(/%s/g, function () {
+ return args[argIndex++];
+ });
+ if (typeof console !== 'undefined') {
+ console.error(message);
+ }
+ try {
+ // --- Welcome to debugging React ---
+ // This error was thrown as a convenience so that you can use this stack
+ // to find the callsite that caused this warning to fire.
+ throw new Error(message);
+ } catch (x) {}
+ };
-/***/ },
-/* 49 */
-/***/ function(module, exports) {
+ warning = function warning(condition, format) {
+ if (format === undefined) {
+ throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');
+ }
- // 7.2.1 RequireObjectCoercible(argument)
- module.exports = function(it){
- if(it == undefined)throw TypeError("Can't call method on " + it);
- return it;
- };
+ if (format.indexOf('Failed Composite propType: ') === 0) {
+ return; // Ignore CompositeComponent proptype check.
+ }
-/***/ },
-/* 50 */
-/***/ function(module, exports, __webpack_require__) {
-
- // false -> Array#indexOf
- // true -> Array#includes
- var toIObject = __webpack_require__(46)
- , toLength = __webpack_require__(51)
- , toIndex = __webpack_require__(53);
- module.exports = function(IS_INCLUDES){
- return function($this, el, fromIndex){
- var O = toIObject($this)
- , length = toLength(O.length)
- , index = toIndex(fromIndex, length)
- , value;
- // Array#includes uses SameValueZero equality algorithm
- if(IS_INCLUDES && el != el)while(length > index){
- value = O[index++];
- if(value != value)return true;
- // Array#toIndex ignores holes, Array#includes - not
- } else for(;length > index; index++)if(IS_INCLUDES || index in O){
- if(O[index] === el)return IS_INCLUDES || index || 0;
- } return !IS_INCLUDES && -1;
+ if (!condition) {
+ for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
+ args[_key2 - 2] = arguments[_key2];
+ }
+
+ printWarning.apply(undefined, [format].concat(args));
+ }
};
- };
+ }
-/***/ },
-/* 51 */
-/***/ function(module, exports, __webpack_require__) {
+ module.exports = warning;
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(22)))
- // 7.1.15 ToLength
- var toInteger = __webpack_require__(52)
- , min = Math.min;
- module.exports = function(it){
- return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
- };
+/***/ }),
+/* 27 */
+/***/ (function(module, exports) {
-/***/ },
-/* 52 */
-/***/ function(module, exports) {
+ /*
+ object-assign
+ (c) Sindre Sorhus
+ @license MIT
+ */
- // 7.1.4 ToInteger
- var ceil = Math.ceil
- , floor = Math.floor;
- module.exports = function(it){
- return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
- };
+ 'use strict';
+ /* eslint-disable no-unused-vars */
+ var getOwnPropertySymbols = Object.getOwnPropertySymbols;
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ var propIsEnumerable = Object.prototype.propertyIsEnumerable;
-/***/ },
-/* 53 */
-/***/ function(module, exports, __webpack_require__) {
+ function toObject(val) {
+ if (val === null || val === undefined) {
+ throw new TypeError('Object.assign cannot be called with null or undefined');
+ }
- var toInteger = __webpack_require__(52)
- , max = Math.max
- , min = Math.min;
- module.exports = function(index, length){
- index = toInteger(index);
- return index < 0 ? max(index + length, 0) : min(index, length);
- };
+ return Object(val);
+ }
-/***/ },
-/* 54 */
-/***/ function(module, exports, __webpack_require__) {
+ function shouldUseNative() {
+ try {
+ if (!Object.assign) {
+ return false;
+ }
+
+ // Detect buggy property enumeration order in older V8 versions.
+
+ // https://bugs.chromium.org/p/v8/issues/detail?id=4118
+ var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
+ test1[5] = 'de';
+ if (Object.getOwnPropertyNames(test1)[0] === '5') {
+ return false;
+ }
+
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3056
+ var test2 = {};
+ for (var i = 0; i < 10; i++) {
+ test2['_' + String.fromCharCode(i)] = i;
+ }
+ var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
+ return test2[n];
+ });
+ if (order2.join('') !== '0123456789') {
+ return false;
+ }
+
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3056
+ var test3 = {};
+ 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
+ test3[letter] = letter;
+ });
+ if (Object.keys(Object.assign({}, test3)).join('') !==
+ 'abcdefghijklmnopqrst') {
+ return false;
+ }
+
+ return true;
+ } catch (err) {
+ // We don't expect any of the above to throw, but better to be safe.
+ return false;
+ }
+ }
- var shared = __webpack_require__(55)('keys')
- , uid = __webpack_require__(56);
- module.exports = function(key){
- return shared[key] || (shared[key] = uid(key));
+ module.exports = shouldUseNative() ? Object.assign : function (target, source) {
+ var from;
+ var to = toObject(target);
+ var symbols;
+
+ for (var s = 1; s < arguments.length; s++) {
+ from = Object(arguments[s]);
+
+ for (var key in from) {
+ if (hasOwnProperty.call(from, key)) {
+ to[key] = from[key];
+ }
+ }
+
+ if (getOwnPropertySymbols) {
+ symbols = getOwnPropertySymbols(from);
+ for (var i = 0; i < symbols.length; i++) {
+ if (propIsEnumerable.call(from, symbols[i])) {
+ to[symbols[i]] = from[symbols[i]];
+ }
+ }
+ }
+ }
+
+ return to;
};
-/***/ },
-/* 55 */
-/***/ function(module, exports, __webpack_require__) {
- var global = __webpack_require__(28)
- , SHARED = '__core-js_shared__'
- , store = global[SHARED] || (global[SHARED] = {});
- module.exports = function(key){
- return store[key] || (store[key] = {});
- };
+/***/ }),
+/* 28 */
+/***/ (function(module, exports) {
-/***/ },
-/* 56 */
-/***/ function(module, exports) {
+ /**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
- var id = 0
- , px = Math.random();
- module.exports = function(key){
- return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
- };
+ 'use strict';
-/***/ },
-/* 57 */
-/***/ function(module, exports) {
+ var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
- // IE 8- don't enum bug keys
- module.exports = (
- 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
- ).split(',');
+ module.exports = ReactPropTypesSecret;
-/***/ },
-/* 58 */
-/***/ function(module, exports) {
- exports.f = Object.getOwnPropertySymbols;
+/***/ }),
+/* 29 */
+/***/ (function(module, exports, __webpack_require__) {
-/***/ },
-/* 59 */
-/***/ function(module, exports) {
+ /* WEBPACK VAR INJECTION */(function(process) {/**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
- exports.f = {}.propertyIsEnumerable;
+ 'use strict';
-/***/ },
-/* 60 */
-/***/ function(module, exports, __webpack_require__) {
+ if (process.env.NODE_ENV !== 'production') {
+ var invariant = __webpack_require__(25);
+ var warning = __webpack_require__(26);
+ var ReactPropTypesSecret = __webpack_require__(28);
+ var loggedTypeFailures = {};
+ }
- // 7.1.13 ToObject(argument)
- var defined = __webpack_require__(49);
- module.exports = function(it){
- return Object(defined(it));
- };
+ /**
+ * Assert that the values match with the type specs.
+ * Error messages are memorized and will only be shown once.
+ *
+ * @param {object} typeSpecs Map of name to a ReactPropType
+ * @param {object} values Runtime values that need to be type-checked
+ * @param {string} location e.g. "prop", "context", "child context"
+ * @param {string} componentName Name of the component for error messages.
+ * @param {?Function} getStack Returns the component stack.
+ * @private
+ */
+ function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
+ if (process.env.NODE_ENV !== 'production') {
+ for (var typeSpecName in typeSpecs) {
+ if (typeSpecs.hasOwnProperty(typeSpecName)) {
+ var error;
+ // Prop type validation may throw. In case they do, we don't want to
+ // fail the render phase where it didn't fail before. So we log it.
+ // After these have been cleaned up, we'll let them throw.
+ try {
+ // This is intentionally an invariant that gets caught. It's the same
+ // behavior as without this statement except with a better message.
+ invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);
+ error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
+ } catch (ex) {
+ error = ex;
+ }
+ warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);
+ if (error instanceof Error && !(error.message in loggedTypeFailures)) {
+ // Only monitor this failure once because there tends to be a lot of the
+ // same error.
+ loggedTypeFailures[error.message] = true;
-/***/ },
-/* 61 */
-/***/ function(module, exports, __webpack_require__) {
+ var stack = getStack ? getStack() : '';
- module.exports = __webpack_require__(62);
+ warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');
+ }
+ }
+ }
+ }
+ }
-/***/ },
-/* 62 */
-/***/ function(module, exports) {
+ module.exports = checkPropTypes;
- "use strict";
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(22)))
+
+/***/ }),
+/* 30 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+ 'use strict';
- exports.__esModule = true;
+ var emptyFunction = __webpack_require__(24);
+ var invariant = __webpack_require__(25);
+ var ReactPropTypesSecret = __webpack_require__(28);
- exports.default = function (obj) {
- return obj && obj.__esModule ? obj : {
- default: obj
+ module.exports = function() {
+ function shim(props, propName, componentName, location, propFullName, secret) {
+ if (secret === ReactPropTypesSecret) {
+ // It is still safe when called from React.
+ return;
+ }
+ invariant(
+ false,
+ 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
+ 'Use PropTypes.checkPropTypes() to call them. ' +
+ 'Read more at http://fb.me/use-check-prop-types'
+ );
};
+ shim.isRequired = shim;
+ function getShim() {
+ return shim;
+ };
+ // Important!
+ // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
+ var ReactPropTypes = {
+ array: shim,
+ bool: shim,
+ func: shim,
+ number: shim,
+ object: shim,
+ string: shim,
+ symbol: shim,
+
+ any: shim,
+ arrayOf: getShim,
+ element: shim,
+ instanceOf: getShim,
+ node: shim,
+ objectOf: getShim,
+ oneOf: getShim,
+ oneOfType: getShim,
+ shape: getShim,
+ exact: getShim
+ };
+
+ ReactPropTypes.checkPropTypes = emptyFunction;
+ ReactPropTypes.PropTypes = ReactPropTypes;
+
+ return ReactPropTypes;
};
-/***/ },
-/* 63 */
-/***/ function(module, exports) {
- module.exports = __WEBPACK_EXTERNAL_MODULE_63__;
+/***/ }),
+/* 31 */
+/***/ (function(module, exports) {
+
+ module.exports = __WEBPACK_EXTERNAL_MODULE_31__;
-/***/ },
-/* 64 */
-/***/ function(module, exports, __webpack_require__) {
+/***/ }),
+/* 32 */
+/***/ (function(module, exports, __webpack_require__) {
'use strict';
- var _interopRequireDefault = __webpack_require__(61)['default'];
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+ var _propTypes = __webpack_require__(21);
+
+ var _propTypes2 = _interopRequireDefault(_propTypes);
+
+ var _react = __webpack_require__(31);
+
+ var _react2 = _interopRequireDefault(_react);
+
+ var _Icon = __webpack_require__(33);
+
+ var _Icon2 = _interopRequireDefault(_Icon);
+
+ var _Spinner = __webpack_require__(34);
+
+ var _Spinner2 = _interopRequireDefault(_Spinner);
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+ var Overlay = function (_React$Component) {
+ _inherits(Overlay, _React$Component);
+
+ function Overlay() {
+ var _ref;
- Object.defineProperty(exports, '__esModule', {
+ var _temp, _this, _ret;
+
+ _classCallCheck(this, Overlay);
+
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Overlay.__proto__ || Object.getPrototypeOf(Overlay)).call.apply(_ref, [this].concat(args))), _this), _this.renderContent = function () {
+ var content;
+ if (_this.props.error) {
+ content = _react2.default.createElement(
+ 'div',
+ { className: 'video-overlay__error' },
+ _react2.default.createElement(
+ 'p',
+ { className: 'video-overlay__error-text' },
+ _this.props.copyKeys.sourceError
+ )
+ );
+ } else if (_this.props.loading) {
+ content = _react2.default.createElement(
+ 'div',
+ { className: 'video-overlay__loader' },
+ _react2.default.createElement(_Spinner2.default, null)
+ );
+ } else {
+ content = _react2.default.createElement(
+ 'div',
+ { className: 'video-overlay__play', onClick: _this.props.togglePlay },
+ _this.props.paused ? _react2.default.createElement(_Icon2.default, { name: 'play-1' }) : ''
+ );
+ }
+ return content;
+ }, _temp), _possibleConstructorReturn(_this, _ret);
+ }
+
+ _createClass(Overlay, [{
+ key: 'render',
+ value: function render() {
+ return _react2.default.createElement(
+ 'div',
+ { className: 'video-overlay' },
+ this.renderContent()
+ );
+ }
+ }]);
+
+ return Overlay;
+ }(_react2.default.Component);
+
+ Overlay.propTypes = {
+ error: _propTypes2.default.bool,
+ togglePlay: _propTypes2.default.func,
+ paused: _propTypes2.default.bool,
+ copyKeys: _propTypes2.default.object,
+ loading: _propTypes2.default.bool
+ };
+ exports.default = Overlay;
+
+/***/ }),
+/* 33 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
value: true
});
- var _react = __webpack_require__(63);
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+ var _propTypes = __webpack_require__(21);
+
+ var _propTypes2 = _interopRequireDefault(_propTypes);
+
+ var _react = __webpack_require__(31);
var _react2 = _interopRequireDefault(_react);
- var _iconIcon = __webpack_require__(65);
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
- var _iconIcon2 = _interopRequireDefault(_iconIcon);
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /*eslint-disable */
+ /*
+ * Generated by the 'fontello-react' Grunt task.
+ */
- var _spinnerSpinner = __webpack_require__(66);
- var _spinnerSpinner2 = _interopRequireDefault(_spinnerSpinner);
+ var Icon = function (_React$Component) {
+ _inherits(Icon, _React$Component);
- var Overlay = _react2['default'].createClass({
- displayName: 'Overlay',
+ function Icon() {
+ _classCallCheck(this, Icon);
- propTypes: {
- error: _react2['default'].PropTypes.bool,
- togglePlay: _react2['default'].PropTypes.func,
- paused: _react2['default'].PropTypes.bool,
- copyKeys: _react2['default'].PropTypes.object,
- loading: _react2['default'].PropTypes.bool
- },
+ return _possibleConstructorReturn(this, (Icon.__proto__ || Object.getPrototypeOf(Icon)).apply(this, arguments));
+ }
- renderContent: function renderContent() {
- var content;
- if (this.props.error) {
- content = _react2['default'].createElement(
- 'div',
- { className: 'video-overlay__error' },
- _react2['default'].createElement(
- 'p',
- { className: 'video-overlay__error-text' },
- this.props.copyKeys.sourceError
- )
- );
- } else if (this.props.loading) {
- content = _react2['default'].createElement(
- 'div',
- { className: 'video-overlay__loader' },
- _react2['default'].createElement(_spinnerSpinner2['default'], null)
- );
- } else {
- content = _react2['default'].createElement(
- 'div',
- { className: 'video-overlay__play', onClick: this.props.togglePlay },
- this.props.paused ? _react2['default'].createElement(_iconIcon2['default'], { name: 'play-1' }) : ''
- );
+ _createClass(Icon, [{
+ key: 'render',
+ value: function render() {
+ return _react2.default.createElement('span', { className: 'video-icon video-icon--' + this.props.name });
}
- return content;
- },
-
- render: function render() {
- return _react2['default'].createElement(
- 'div',
- { className: 'video-overlay' },
- this.renderContent()
- );
- }
- });
+ /**
+ * Default the icon to the first one just to show something
+ * @return {Object} The default props
+ */
- exports['default'] = Overlay;
- module.exports = exports['default'];
+ }]);
-/***/ },
-/* 65 */
-/***/ function(module, exports, __webpack_require__) {
+ return Icon;
+ }(_react2.default.Component);
- /*eslint-disable */
- /*
- * Generated by the 'fontello-react' Grunt task.
- */
- 'use strict';
+ Icon.propTypes = {
+ name: _propTypes2.default.oneOf(['play-1', 'volume-off', 'volume-down', 'volume-up', 'resize-full', 'resize-small', 'pause-1'])
+ };
+ Icon.defaultProps = {
+ name: 'play-1'
+ };
+ exports.default = Icon;
+
+/***/ }),
+/* 34 */
+/***/ (function(module, exports, __webpack_require__) {
- var _interopRequireDefault = __webpack_require__(61)['default'];
+ "use strict";
- Object.defineProperty(exports, '__esModule', {
+ Object.defineProperty(exports, "__esModule", {
value: true
});
- var _react = __webpack_require__(63);
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+ var _react = __webpack_require__(31);
var _react2 = _interopRequireDefault(_react);
- var Icon = _react2['default'].createClass({
- displayName: 'Icon',
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- propTypes: {
- name: _react2['default'].PropTypes.oneOf(['play-1', 'volume-off', 'volume-down', 'volume-up', 'resize-full', 'resize-small', 'pause-1'])
- },
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
- /**
- * Default the icon to the first one just to show something
- * @return {Object} The default props
- */
- getDefaultProps: function getDefaultProps() {
- return {
- name: 'play-1'
- };
- },
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
- render: function render() {
- return _react2['default'].createElement('span', { className: 'video-icon video-icon--' + this.props.name });
+ var Spinner = function (_React$Component) {
+ _inherits(Spinner, _React$Component);
+
+ function Spinner() {
+ _classCallCheck(this, Spinner);
+
+ return _possibleConstructorReturn(this, (Spinner.__proto__ || Object.getPrototypeOf(Spinner)).apply(this, arguments));
}
- });
+ _createClass(Spinner, [{
+ key: "render",
+ value: function render() {
+ return _react2.default.createElement(
+ "div",
+ { className: "video-spinner" },
+ _react2.default.createElement("div", { className: "video-spinner__rect1" }),
+ _react2.default.createElement("div", { className: "video-spinner__rect2" }),
+ _react2.default.createElement("div", { className: "video-spinner__rect3" }),
+ _react2.default.createElement("div", { className: "video-spinner__rect4" }),
+ _react2.default.createElement("div", { className: "video-spinner__rect5" })
+ );
+ }
+ }]);
- exports['default'] = Icon;
- module.exports = exports['default'];
+ return Spinner;
+ }(_react2.default.Component);
-/***/ },
-/* 66 */
-/***/ function(module, exports, __webpack_require__) {
+ exports.default = Spinner;
- "use strict";
+/***/ }),
+/* 35 */
+/***/ (function(module, exports, __webpack_require__) {
- var _interopRequireDefault = __webpack_require__(61)["default"];
+ 'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
- var _react = __webpack_require__(63);
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
- var _react2 = _interopRequireDefault(_react);
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
- var Spinner = _react2["default"].createClass({
- displayName: "Spinner",
-
- render: function render() {
- return _react2["default"].createElement(
- "div",
- { className: "video-spinner" },
- _react2["default"].createElement("div", { className: "video-spinner__rect1" }),
- _react2["default"].createElement("div", { className: "video-spinner__rect2" }),
- _react2["default"].createElement("div", { className: "video-spinner__rect3" }),
- _react2["default"].createElement("div", { className: "video-spinner__rect4" }),
- _react2["default"].createElement("div", { className: "video-spinner__rect5" })
- );
- }
+ var _propTypes = __webpack_require__(21);
- });
+ var _propTypes2 = _interopRequireDefault(_propTypes);
- exports["default"] = Spinner;
- module.exports = exports["default"];
+ var _react = __webpack_require__(31);
-/***/ },
-/* 67 */
-/***/ function(module, exports, __webpack_require__) {
+ var _react2 = _interopRequireDefault(_react);
- 'use strict';
+ var _Play = __webpack_require__(36);
- var _extends = __webpack_require__(23)['default'];
+ var _Play2 = _interopRequireDefault(_Play);
- var _interopRequireDefault = __webpack_require__(61)['default'];
+ var _Seek = __webpack_require__(37);
- Object.defineProperty(exports, '__esModule', {
- value: true
- });
+ var _Seek2 = _interopRequireDefault(_Seek);
- var _react = __webpack_require__(63);
+ var _Mute = __webpack_require__(39);
- var _react2 = _interopRequireDefault(_react);
+ var _Mute2 = _interopRequireDefault(_Mute);
- var _playPlay = __webpack_require__(68);
+ var _Time = __webpack_require__(40);
- var _playPlay2 = _interopRequireDefault(_playPlay);
+ var _Time2 = _interopRequireDefault(_Time);
- var _seekSeek = __webpack_require__(69);
+ var _Fullscreen = __webpack_require__(41);
- var _seekSeek2 = _interopRequireDefault(_seekSeek);
+ var _Fullscreen2 = _interopRequireDefault(_Fullscreen);
- var _muteMute = __webpack_require__(76);
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- var _muteMute2 = _interopRequireDefault(_muteMute);
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- var _timeTime = __webpack_require__(77);
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
- var _timeTime2 = _interopRequireDefault(_timeTime);
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
- var _fullscreenFullscreen = __webpack_require__(78);
+ var Controls = function (_React$Component) {
+ _inherits(Controls, _React$Component);
- var _fullscreenFullscreen2 = _interopRequireDefault(_fullscreenFullscreen);
+ function Controls() {
+ var _ref;
- var Controls = _react2['default'].createClass({
- displayName: 'Controls',
+ var _temp, _this, _ret;
- propTypes: {
- error: _react2['default'].PropTypes.bool,
- children: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.arrayOf(_react2['default'].PropTypes.node), _react2['default'].PropTypes.node])
- },
+ _classCallCheck(this, Controls);
- getDefaultProps: function getDefaultProps() {
- return {
- children: [_react2['default'].createElement(_playPlay2['default'], null), _react2['default'].createElement(_seekSeek2['default'], null), _react2['default'].createElement(_timeTime2['default'], null), _react2['default'].createElement(_muteMute2['default'], null), _react2['default'].createElement(_fullscreenFullscreen2['default'], null)]
- };
- },
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Controls.__proto__ || Object.getPrototypeOf(Controls)).call.apply(_ref, [this].concat(args))), _this), _this.renderChildren = function () {
+ return _react2.default.Children.map(_this.props.children, function (child) {
+ return _react2.default.cloneElement(child, _extends({}, _this.props));
+ });
+ }, _temp), _possibleConstructorReturn(_this, _ret);
+ }
/**
* Returns children components with props
@@ -1326,120 +2069,174 @@ return /******/ (function(modules) { // webpackBootstrap
* for when custom React components are used.
* @return {Array.} An array of components.
*/
- renderChildren: function renderChildren() {
- var _this = this;
- return _react2['default'].Children.map(this.props.children, function (child) {
- return _react2['default'].cloneElement(child, _extends({}, _this.props));
- });
- },
- render: function render() {
- return !this.props.error ? _react2['default'].createElement(
- 'div',
- { className: 'video-controls video__controls' },
- this.renderChildren()
- ) : null;
- }
- });
+ _createClass(Controls, [{
+ key: 'render',
+ value: function render() {
+ return !this.props.error ? _react2.default.createElement(
+ 'div',
+ { className: 'video-controls video__controls' },
+ this.renderChildren()
+ ) : null;
+ }
+ }]);
- exports['default'] = Controls;
- module.exports = exports['default'];
+ return Controls;
+ }(_react2.default.Component);
+
+ Controls.propTypes = {
+ error: _propTypes2.default.bool,
+ children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.node), _propTypes2.default.node])
+ };
+ Controls.defaultProps = {
+ children: [_react2.default.createElement(_Play2.default, null), _react2.default.createElement(_Seek2.default, null), _react2.default.createElement(_Time2.default, null), _react2.default.createElement(_Mute2.default, null), _react2.default.createElement(_Fullscreen2.default, null)]
+ };
+ exports.default = Controls;
-/***/ },
-/* 68 */
-/***/ function(module, exports, __webpack_require__) {
+/***/ }),
+/* 36 */
+/***/ (function(module, exports, __webpack_require__) {
'use strict';
- var _interopRequireDefault = __webpack_require__(61)['default'];
-
- Object.defineProperty(exports, '__esModule', {
+ Object.defineProperty(exports, "__esModule", {
value: true
});
- var _react = __webpack_require__(63);
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+ var _propTypes = __webpack_require__(21);
+
+ var _propTypes2 = _interopRequireDefault(_propTypes);
+
+ var _react = __webpack_require__(31);
var _react2 = _interopRequireDefault(_react);
- var _iconIcon = __webpack_require__(65);
+ var _Icon = __webpack_require__(33);
+
+ var _Icon2 = _interopRequireDefault(_Icon);
- var _iconIcon2 = _interopRequireDefault(_iconIcon);
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- var Play = _react2['default'].createClass({
- displayName: 'Play',
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- propTypes: {
- copyKeys: _react2['default'].PropTypes.object,
- togglePlay: _react2['default'].PropTypes.func,
- paused: _react2['default'].PropTypes.bool
- },
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
- /**
- * As controls receive all props for extensibility, we do a quick
- * check and make sure only the props we care about have changed.
- * @param {object} nextProps The next props from parent
- * @return {boolean} Whether we re-render or not
- */
- shouldComponentUpdate: function shouldComponentUpdate(nextProps) {
- return this.props.paused !== nextProps.paused || this.props.togglePlay !== nextProps.togglePlay;
- },
-
- render: function render() {
- return _react2['default'].createElement(
- 'button',
- {
- className: 'video-play video__control',
- onClick: this.props.togglePlay,
- 'aria-label': this.props.paused ? this.props.copyKeys.play : this.props.copyKeys.pause },
- this.props.paused ? _react2['default'].createElement(_iconIcon2['default'], { name: 'play-1' }) : _react2['default'].createElement(_iconIcon2['default'], { name: 'pause-1' })
- );
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+ var Play = function (_React$Component) {
+ _inherits(Play, _React$Component);
+
+ function Play() {
+ _classCallCheck(this, Play);
+
+ return _possibleConstructorReturn(this, (Play.__proto__ || Object.getPrototypeOf(Play)).apply(this, arguments));
}
- });
- exports['default'] = Play;
- module.exports = exports['default'];
+ _createClass(Play, [{
+ key: 'shouldComponentUpdate',
-/***/ },
-/* 69 */
-/***/ function(module, exports, __webpack_require__) {
- 'use strict';
+ /**
+ * As controls receive all props for extensibility, we do a quick
+ * check and make sure only the props we care about have changed.
+ * @param {object} nextProps The next props from parent
+ * @return {boolean} Whether we re-render or not
+ */
+ value: function shouldComponentUpdate(nextProps) {
+ return this.props.paused !== nextProps.paused || this.props.togglePlay !== nextProps.togglePlay;
+ }
+ }, {
+ key: 'render',
+ value: function render() {
+ return _react2.default.createElement(
+ 'button',
+ {
+ className: 'video-play video__control',
+ onClick: this.props.togglePlay,
+ 'aria-label': this.props.paused ? this.props.copyKeys.play : this.props.copyKeys.pause },
+ this.props.paused ? _react2.default.createElement(_Icon2.default, { name: 'play-1' }) : _react2.default.createElement(_Icon2.default, { name: 'pause-1' })
+ );
+ }
+ }]);
+
+ return Play;
+ }(_react2.default.Component);
+
+ Play.propTypes = {
+ copyKeys: _propTypes2.default.object,
+ togglePlay: _propTypes2.default.func,
+ paused: _propTypes2.default.bool
+ };
+ exports.default = Play;
+
+/***/ }),
+/* 37 */
+/***/ (function(module, exports, __webpack_require__) {
- var _interopRequireDefault = __webpack_require__(61)['default'];
+ 'use strict';
- Object.defineProperty(exports, '__esModule', {
+ Object.defineProperty(exports, "__esModule", {
value: true
});
- var _react = __webpack_require__(63);
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+ var _propTypes = __webpack_require__(21);
+
+ var _propTypes2 = _interopRequireDefault(_propTypes);
+
+ var _react = __webpack_require__(31);
var _react2 = _interopRequireDefault(_react);
- var _progressbarProgressBar = __webpack_require__(70);
+ var _ProgressBar = __webpack_require__(38);
+
+ var _ProgressBar2 = _interopRequireDefault(_ProgressBar);
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- var _progressbarProgressBar2 = _interopRequireDefault(_progressbarProgressBar);
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
- var Seek = _react2['default'].createClass({
- displayName: 'Seek',
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
- propTypes: {
- copyKeys: _react2['default'].PropTypes.object,
- seek: _react2['default'].PropTypes.func,
- percentageBuffered: _react2['default'].PropTypes.number,
- percentagePlayed: _react2['default'].PropTypes.number,
- duration: _react2['default'].PropTypes.number
- },
+ var Seek = function (_React$Component) {
+ _inherits(Seek, _React$Component);
- getInitialState: function getInitialState() {
- return {
+ function Seek(props) {
+ _classCallCheck(this, Seek);
+
+ var _this = _possibleConstructorReturn(this, (Seek.__proto__ || Object.getPrototypeOf(Seek)).call(this, props));
+
+ _this.seek = function (e) {
+ _this.props.seek(e.target.value * _this.props.duration / 100, true);
+ };
+
+ _this.onFocus = function () {
+ _this.setState({
+ focused: true
+ });
+ };
+
+ _this.onBlur = function () {
+ _this.setState({
+ focused: false
+ });
+ };
+
+ _this.state = {
// When the child range input becomes focused,
// we need to set this custom seek bar to look
// 'focused' with the correct styles. Need to
// do this via a class.
focused: false
};
- },
+ return _this;
+ }
/**
* As controls receive all props for extensibility, we do a quick
@@ -1447,423 +2244,457 @@ return /******/ (function(modules) { // webpackBootstrap
* @param {object} nextProps The next props from parent
* @return {boolean} Whether we re-render or not
*/
- shouldComponentUpdate: function shouldComponentUpdate(nextProps) {
- return this.props.seek !== nextProps.seek || this.props.percentageBuffered !== nextProps.percentageBuffered || this.props.percentagePlayed !== nextProps.percentagePlayed || this.props.duration !== nextProps.duration;
- },
- /**
- * Calculates the seek time based on change of input.
- * @param {object} e Event object
- * @return {undefined}
- */
- seek: function seek(e) {
- this.props.seek(e.target.value * this.props.duration / 100, true);
- },
-
- onFocus: function onFocus() {
- this.setState({
- focused: true
- });
- },
-
- onBlur: function onBlur() {
- this.setState({
- focused: false
- });
- },
-
- render: function render() {
- return _react2['default'].createElement(
- 'div',
- {
- className: 'video-seek video__control' + (this.state.focused ? ' video__control--focused' : ''),
- 'aria-label': this.props.copyKeys.seek },
- _react2['default'].createElement(
- 'div',
- { className: 'video-seek__container' },
- _react2['default'].createElement('div', { style: {
- width: this.props.percentageBuffered + '%'
- }, className: 'video-seek__buffer-bar' }),
- _react2['default'].createElement(_progressbarProgressBar2['default'], {
- onBlur: this.onBlur,
- onFocus: this.onFocus,
- onChange: this.seek,
- progress: this.props.percentagePlayed })
- )
- );
- }
- });
- exports['default'] = Seek;
- module.exports = exports['default'];
+ _createClass(Seek, [{
+ key: 'shouldComponentUpdate',
+ value: function shouldComponentUpdate(nextProps) {
+ return this.props.seek !== nextProps.seek || this.props.percentageBuffered !== nextProps.percentageBuffered || this.props.percentagePlayed !== nextProps.percentagePlayed || this.props.duration !== nextProps.duration;
+ }
-/***/ },
-/* 70 */
-/***/ function(module, exports, __webpack_require__) {
+ /**
+ * Calculates the seek time based on change of input.
+ * @param {object} e Event object
+ * @return {undefined}
+ */
- 'use strict';
+ }, {
+ key: 'render',
+ value: function render() {
+ return _react2.default.createElement(
+ 'div',
+ {
+ className: 'video-seek video__control' + (this.state.focused ? ' video__control--focused' : ''),
+ 'aria-label': this.props.copyKeys.seek },
+ _react2.default.createElement(
+ 'div',
+ { className: 'video-seek__container' },
+ _react2.default.createElement('div', { style: {
+ width: this.props.percentageBuffered + '%'
+ }, className: 'video-seek__buffer-bar' }),
+ _react2.default.createElement(_ProgressBar2.default, {
+ onBlur: this.onBlur,
+ onFocus: this.onFocus,
+ onChange: this.seek,
+ progress: this.props.percentagePlayed })
+ )
+ );
+ }
+ }]);
+
+ return Seek;
+ }(_react2.default.Component);
- var _defineProperty = __webpack_require__(71)['default'];
+ Seek.propTypes = {
+ copyKeys: _propTypes2.default.object,
+ seek: _propTypes2.default.func,
+ percentageBuffered: _propTypes2.default.number,
+ percentagePlayed: _propTypes2.default.number,
+ duration: _propTypes2.default.number
+ };
+ exports.default = Seek;
+
+/***/ }),
+/* 38 */
+/***/ (function(module, exports, __webpack_require__) {
- var _interopRequireDefault = __webpack_require__(61)['default'];
+ 'use strict';
- Object.defineProperty(exports, '__esModule', {
+ Object.defineProperty(exports, "__esModule", {
value: true
});
- var _react = __webpack_require__(63);
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
- var _react2 = _interopRequireDefault(_react);
+ var _propTypes = __webpack_require__(21);
- var ProgressBar = _react2['default'].createClass({
- displayName: 'ProgressBar',
-
- propTypes: {
- orientation: _react2['default'].PropTypes.string,
- step: _react2['default'].PropTypes.number,
- progress: _react2['default'].PropTypes.number,
- onChange: _react2['default'].PropTypes.func,
- onFocus: _react2['default'].PropTypes.func,
- onBlur: _react2['default'].PropTypes.func
- },
-
- getDefaultProps: function getDefaultProps() {
- return {
- orientation: 'horizontal',
- step: 0.1,
- progress: 0,
- onChange: this.onChange,
- onFocus: this.onFocus,
- onBlur: this.onBlur
- };
- },
-
- componentDidMount: function componentDidMount() {
- // 'orient' is not supported by React but
- // is required for Firefox. Setting manually.
- // https://github.com/facebook/react/issues/2453
- this.refs.input.setAttribute('orient', this.props.orientation);
- },
-
- onChange: function onChange() {
- // Placeholder
- },
-
- onFocus: function onFocus() {
- // Placeholder
- },
-
- onBlur: function onBlur() {
- // Placeholder
- },
-
- render: function render() {
- return _react2['default'].createElement(
- 'div',
- { className: 'video-progress-bar ' + (this.props.orientation === 'horizontal' ? 'video-progress-bar--horizontal' : 'video-progress-bar--vertical') },
- _react2['default'].createElement('div', { className: 'video-progress-bar__fill', style: _defineProperty({}, this.props.orientation === 'horizontal' ? 'width' : 'height', this.props.progress + '%') }),
- _react2['default'].createElement('input', { className: 'video-progress-bar__input',
- onBlur: this.props.onBlur,
- onFocus: this.props.onFocus,
- ref: 'input',
- onChange: this.props.onChange,
- type: 'range',
- min: '0',
- max: '100',
- value: this.props.progress,
- step: this.props.step })
- );
- }
- });
+ var _propTypes2 = _interopRequireDefault(_propTypes);
- exports['default'] = ProgressBar;
- module.exports = exports['default'];
+ var _react = __webpack_require__(31);
-/***/ },
-/* 71 */
-/***/ function(module, exports, __webpack_require__) {
+ var _react2 = _interopRequireDefault(_react);
- module.exports = __webpack_require__(72);
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-/***/ },
-/* 72 */
-/***/ function(module, exports, __webpack_require__) {
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
- "use strict";
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- exports.__esModule = true;
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
- var _defineProperty = __webpack_require__(73);
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
- var _defineProperty2 = _interopRequireDefault(_defineProperty);
+ var ProgressBar = function (_React$Component) {
+ _inherits(ProgressBar, _React$Component);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+ function ProgressBar() {
+ _classCallCheck(this, ProgressBar);
- exports.default = function (obj, key, value) {
- if (key in obj) {
- (0, _defineProperty2.default)(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
+ return _possibleConstructorReturn(this, (ProgressBar.__proto__ || Object.getPrototypeOf(ProgressBar)).apply(this, arguments));
+ }
- return obj;
+ _createClass(ProgressBar, [{
+ key: 'componentDidMount',
+ value: function componentDidMount() {
+ // 'orient' is not supported by React but
+ // is required for Firefox. Setting manually.
+ // https://github.com/facebook/react/issues/2453
+ this.refs.input.setAttribute('orient', this.props.orientation);
+ }
+ }, {
+ key: 'render',
+ value: function render() {
+ return _react2.default.createElement(
+ 'div',
+ { className: 'video-progress-bar ' + (this.props.orientation === 'horizontal' ? 'video-progress-bar--horizontal' : 'video-progress-bar--vertical') },
+ _react2.default.createElement('div', { className: 'video-progress-bar__fill', style: _defineProperty({}, this.props.orientation === 'horizontal' ? 'width' : 'height', this.props.progress + '%') }),
+ _react2.default.createElement('input', { className: 'video-progress-bar__input',
+ onBlur: this.props.onBlur,
+ onFocus: this.props.onFocus,
+ ref: 'input',
+ onChange: this.props.onChange,
+ type: 'range',
+ min: '0',
+ max: '100',
+ value: this.props.progress,
+ step: this.props.step })
+ );
+ }
+ }]);
+
+ return ProgressBar;
+ }(_react2.default.Component);
+
+ ProgressBar.propTypes = {
+ orientation: _propTypes2.default.string,
+ step: _propTypes2.default.number,
+ progress: _propTypes2.default.number,
+ onChange: _propTypes2.default.func,
+ onFocus: _propTypes2.default.func,
+ onBlur: _propTypes2.default.func
+ };
+ ProgressBar.defaultProps = {
+ orientation: 'horizontal',
+ step: 0.1,
+ progress: 0,
+ onChange: function onChange() {},
+ onFocus: function onFocus() {},
+ onBlur: function onBlur() {}
};
+ exports.default = ProgressBar;
-/***/ },
-/* 73 */
-/***/ function(module, exports, __webpack_require__) {
+/***/ }),
+/* 39 */
+/***/ (function(module, exports, __webpack_require__) {
- module.exports = { "default": __webpack_require__(74), __esModule: true };
+ 'use strict';
-/***/ },
-/* 74 */
-/***/ function(module, exports, __webpack_require__) {
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
- __webpack_require__(75);
- var $Object = __webpack_require__(29).Object;
- module.exports = function defineProperty(it, key, desc){
- return $Object.defineProperty(it, key, desc);
- };
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-/***/ },
-/* 75 */
-/***/ function(module, exports, __webpack_require__) {
+ var _propTypes = __webpack_require__(21);
- var $export = __webpack_require__(27);
- // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
- $export($export.S + $export.F * !__webpack_require__(37), 'Object', {defineProperty: __webpack_require__(33).f});
+ var _propTypes2 = _interopRequireDefault(_propTypes);
-/***/ },
-/* 76 */
-/***/ function(module, exports, __webpack_require__) {
+ var _react = __webpack_require__(31);
- 'use strict';
+ var _react2 = _interopRequireDefault(_react);
- var _interopRequireDefault = __webpack_require__(61)['default'];
+ var _Icon = __webpack_require__(33);
- Object.defineProperty(exports, '__esModule', {
- value: true
- });
+ var _Icon2 = _interopRequireDefault(_Icon);
- var _react = __webpack_require__(63);
+ var _ProgressBar = __webpack_require__(38);
- var _react2 = _interopRequireDefault(_react);
+ var _ProgressBar2 = _interopRequireDefault(_ProgressBar);
- var _iconIcon = __webpack_require__(65);
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- var _iconIcon2 = _interopRequireDefault(_iconIcon);
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- var _progressbarProgressBar = __webpack_require__(70);
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
- var _progressbarProgressBar2 = _interopRequireDefault(_progressbarProgressBar);
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
- var Mute = _react2['default'].createClass({
- displayName: 'Mute',
+ var Mute = function (_React$Component) {
+ _inherits(Mute, _React$Component);
- propTypes: {
- copyKeys: _react2['default'].PropTypes.object,
- volume: _react2['default'].PropTypes.number,
- unmute: _react2['default'].PropTypes.func,
- setVolume: _react2['default'].PropTypes.func,
- toggleMute: _react2['default'].PropTypes.func,
- muted: _react2['default'].PropTypes.bool
- },
+ function Mute() {
+ var _ref;
- /**
- * As controls receive all props for extensibility, we do a quick
- * check and make sure only the props we care about have changed.
- * @param {object} nextProps The next props from parent
- * @return {boolean} Whether we re-render or not
- */
- shouldComponentUpdate: function shouldComponentUpdate(nextProps) {
- return this.props.muted !== nextProps.muted || this.props.toggleMute !== nextProps.toggleMute || this.props.volume !== nextProps.volume || this.props.setVolume !== nextProps.setVolume || this.props.unmute !== nextProps.unmute;
- },
+ var _temp, _this, _ret;
- /**
- * Calculates the seek time based on click position and element offset.
- * @param {object} e Event object
- * @return {undefined}
- */
- changeVolume: function changeVolume(e) {
- this.props.setVolume(e.target.value / 100, true);
- this.props.unmute();
- },
-
- toggleMute: function toggleMute() {
- // If we volume has been dragged to 0, assume it is in
- // a muted state and then toggle to full volume.
- if (this.props.volume <= 0) {
- this.props.setVolume(1);
- } else {
- this.props.toggleMute();
+ _classCallCheck(this, Mute);
+
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
}
- },
- render: function render() {
- return _react2['default'].createElement(
- 'div',
- { className: 'video-mute video__control' },
- _react2['default'].createElement(
- 'button',
- {
- className: 'video-mute__inner',
- onClick: this.toggleMute,
- 'aria-label': this.props.muted || this.props.volume <= 0 ? this.props.copyKeys.unmute : this.props.copyKeys.mute },
- this.props.muted || this.props.volume <= 0 ? _react2['default'].createElement(_iconIcon2['default'], { name: 'volume-off' }) : _react2['default'].createElement(_iconIcon2['default'], { name: 'volume-up' })
- ),
- _react2['default'].createElement(
+ return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Mute.__proto__ || Object.getPrototypeOf(Mute)).call.apply(_ref, [this].concat(args))), _this), _this.changeVolume = function (e) {
+ _this.props.setVolume(e.target.value / 100, true);
+ _this.props.unmute();
+ }, _this.toggleMute = function () {
+ // If we volume has been dragged to 0, assume it is in
+ // a muted state and then toggle to full volume.
+ if (_this.props.volume <= 0) {
+ _this.props.setVolume(1);
+ } else {
+ _this.props.toggleMute();
+ }
+ }, _temp), _possibleConstructorReturn(_this, _ret);
+ }
+
+ _createClass(Mute, [{
+ key: 'shouldComponentUpdate',
+
+
+ /**
+ * As controls receive all props for extensibility, we do a quick
+ * check and make sure only the props we care about have changed.
+ * @param {object} nextProps The next props from parent
+ * @return {boolean} Whether we re-render or not
+ */
+ value: function shouldComponentUpdate(nextProps) {
+ return this.props.muted !== nextProps.muted || this.props.toggleMute !== nextProps.toggleMute || this.props.volume !== nextProps.volume || this.props.setVolume !== nextProps.setVolume || this.props.unmute !== nextProps.unmute;
+ }
+
+ /**
+ * Calculates the seek time based on click position and element offset.
+ * @param {object} e Event object
+ * @return {undefined}
+ */
+
+ }, {
+ key: 'render',
+ value: function render() {
+ return _react2.default.createElement(
'div',
- { className: 'video-mute__volume' },
- _react2['default'].createElement(
+ { className: 'video-mute video__control' },
+ _react2.default.createElement(
+ 'button',
+ {
+ className: 'video-mute__inner',
+ onClick: this.toggleMute,
+ 'aria-label': this.props.muted || this.props.volume <= 0 ? this.props.copyKeys.unmute : this.props.copyKeys.mute },
+ this.props.muted || this.props.volume <= 0 ? _react2.default.createElement(_Icon2.default, { name: 'volume-off' }) : _react2.default.createElement(_Icon2.default, { name: 'volume-up' })
+ ),
+ _react2.default.createElement(
'div',
- { className: 'video-mute__track' },
- _react2['default'].createElement(_progressbarProgressBar2['default'], {
- orientation: 'vertical',
- onChange: this.changeVolume,
- progress: this.props.muted ? 0 : this.props.volume * 100
- })
+ { className: 'video-mute__volume' },
+ _react2.default.createElement(
+ 'div',
+ { className: 'video-mute__track' },
+ _react2.default.createElement(_ProgressBar2.default, {
+ orientation: 'vertical',
+ onChange: this.changeVolume,
+ progress: this.props.muted ? 0 : this.props.volume * 100
+ })
+ )
)
- )
- );
- }
- });
-
- exports['default'] = Mute;
- module.exports = exports['default'];
+ );
+ }
+ }]);
+
+ return Mute;
+ }(_react2.default.Component);
+
+ Mute.propTypes = {
+ copyKeys: _propTypes2.default.object,
+ volume: _propTypes2.default.number,
+ unmute: _propTypes2.default.func,
+ setVolume: _propTypes2.default.func,
+ toggleMute: _propTypes2.default.func,
+ muted: _propTypes2.default.bool
+ };
+ exports.default = Mute;
-/***/ },
-/* 77 */
-/***/ function(module, exports, __webpack_require__) {
+/***/ }),
+/* 40 */
+/***/ (function(module, exports, __webpack_require__) {
'use strict';
- var _interopRequireDefault = __webpack_require__(61)['default'];
-
- Object.defineProperty(exports, '__esModule', {
+ Object.defineProperty(exports, "__esModule", {
value: true
});
- var _react = __webpack_require__(63);
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+ var _propTypes = __webpack_require__(21);
+
+ var _propTypes2 = _interopRequireDefault(_propTypes);
+
+ var _react = __webpack_require__(31);
var _react2 = _interopRequireDefault(_react);
- var _iconIcon = __webpack_require__(65);
+ var _Icon = __webpack_require__(33);
- var _iconIcon2 = _interopRequireDefault(_iconIcon);
+ var _Icon2 = _interopRequireDefault(_Icon);
- var Time = _react2['default'].createClass({
- displayName: 'Time',
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- propTypes: {
- currentTime: _react2['default'].PropTypes.number,
- duration: _react2['default'].PropTypes.number
- },
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- /**
- * As controls receive all props for extensibility, we do a quick
- * check and make sure only the props we care about have changed.
- * @param {object} nextProps The next props from parent
- * @return {boolean} Whether we re-render or not
- */
- shouldComponentUpdate: function shouldComponentUpdate(nextProps) {
- return this.props.currentTime !== nextProps.currentTime || this.props.duration !== nextProps.duration;
- },
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
- /**
- * Formats time into a friendlier format
- * @param {number} seconds Time in seconds
- * @return {string} Timestamp in the format of HH:MM:SS
- */
- formatTime: function formatTime(seconds) {
- var date = new Date(Date.UTC(1970, 1, 1, 0, 0, 0, 0));
- seconds = isNaN(seconds) ? 0 : Math.floor(seconds);
- date.setSeconds(seconds);
- return date.toISOString().substr(11, 8);
- },
-
- render: function render() {
- return _react2['default'].createElement(
- 'div',
- { className: 'video-time video__control' },
- _react2['default'].createElement(
- 'span',
- { className: 'video-time__current' },
- this.formatTime(this.props.currentTime)
- ),
- '/',
- _react2['default'].createElement(
- 'span',
- { className: 'video-time__duration' },
- this.formatTime(this.props.duration)
- )
- );
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+ var Time = function (_React$Component) {
+ _inherits(Time, _React$Component);
+
+ function Time() {
+ var _ref;
+
+ var _temp, _this, _ret;
+
+ _classCallCheck(this, Time);
+
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Time.__proto__ || Object.getPrototypeOf(Time)).call.apply(_ref, [this].concat(args))), _this), _this.formatTime = function (seconds) {
+ var date = new Date(Date.UTC(1970, 1, 1, 0, 0, 0, 0));
+ seconds = isNaN(seconds) ? 0 : Math.floor(seconds);
+ date.setSeconds(seconds);
+ return date.toISOString().substr(11, 8);
+ }, _temp), _possibleConstructorReturn(_this, _ret);
}
- });
- exports['default'] = Time;
- module.exports = exports['default'];
+ _createClass(Time, [{
+ key: 'shouldComponentUpdate',
-/***/ },
-/* 78 */
-/***/ function(module, exports, __webpack_require__) {
- 'use strict';
+ /**
+ * As controls receive all props for extensibility, we do a quick
+ * check and make sure only the props we care about have changed.
+ * @param {object} nextProps The next props from parent
+ * @return {boolean} Whether we re-render or not
+ */
+ value: function shouldComponentUpdate(nextProps) {
+ return this.props.currentTime !== nextProps.currentTime || this.props.duration !== nextProps.duration;
+ }
+
+ /**
+ * Formats time into a friendlier format
+ * @param {number} seconds Time in seconds
+ * @return {string} Timestamp in the format of HH:MM:SS
+ */
+
+ }, {
+ key: 'render',
+ value: function render() {
+ return _react2.default.createElement(
+ 'div',
+ { className: 'video-time video__control' },
+ _react2.default.createElement(
+ 'span',
+ { className: 'video-time__current' },
+ this.formatTime(this.props.currentTime)
+ ),
+ '/',
+ _react2.default.createElement(
+ 'span',
+ { className: 'video-time__duration' },
+ this.formatTime(this.props.duration)
+ )
+ );
+ }
+ }]);
+
+ return Time;
+ }(_react2.default.Component);
+
+ Time.propTypes = {
+ currentTime: _propTypes2.default.number,
+ duration: _propTypes2.default.number
+ };
+ exports.default = Time;
+
+/***/ }),
+/* 41 */
+/***/ (function(module, exports, __webpack_require__) {
- var _interopRequireDefault = __webpack_require__(61)['default'];
+ 'use strict';
- Object.defineProperty(exports, '__esModule', {
+ Object.defineProperty(exports, "__esModule", {
value: true
});
- var _react = __webpack_require__(63);
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+ var _propTypes = __webpack_require__(21);
+
+ var _propTypes2 = _interopRequireDefault(_propTypes);
+
+ var _react = __webpack_require__(31);
var _react2 = _interopRequireDefault(_react);
- var _iconIcon = __webpack_require__(65);
+ var _Icon = __webpack_require__(33);
- var _iconIcon2 = _interopRequireDefault(_iconIcon);
+ var _Icon2 = _interopRequireDefault(_Icon);
- var Fullscreen = _react2['default'].createClass({
- displayName: 'Fullscreen',
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- propTypes: {
- copyKeys: _react2['default'].PropTypes.object,
- fullscreen: _react2['default'].PropTypes.func
- },
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- /**
- * As controls receive all props for extensibility, we do a quick
- * check and make sure only the props we care about have changed.
- * @param {object} nextProps The next props from parent
- * @return {boolean} Whether we re-render or not
- */
- shouldComponentUpdate: function shouldComponentUpdate(nextProps) {
- return this.props.fullscreen !== nextProps.fullscreen;
- },
-
- render: function render() {
- return _react2['default'].createElement(
- 'button',
- {
- onClick: this.props.fullscreen,
- className: 'video-fullscreen video__control',
- 'aria-label': this.props.copyKeys.fullscreen },
- _react2['default'].createElement(_iconIcon2['default'], { name: 'resize-full' })
- );
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+ var Fullscreen = function (_React$Component) {
+ _inherits(Fullscreen, _React$Component);
+
+ function Fullscreen() {
+ _classCallCheck(this, Fullscreen);
+
+ return _possibleConstructorReturn(this, (Fullscreen.__proto__ || Object.getPrototypeOf(Fullscreen)).apply(this, arguments));
}
- });
- exports['default'] = Fullscreen;
- module.exports = exports['default'];
+ _createClass(Fullscreen, [{
+ key: 'shouldComponentUpdate',
+
+
+ /**
+ * As controls receive all props for extensibility, we do a quick
+ * check and make sure only the props we care about have changed.
+ * @param {object} nextProps The next props from parent
+ * @return {boolean} Whether we re-render or not
+ */
+ value: function shouldComponentUpdate(nextProps) {
+ return this.props.fullscreen !== nextProps.fullscreen;
+ }
+ }, {
+ key: 'render',
+ value: function render() {
+ return _react2.default.createElement(
+ 'button',
+ {
+ onClick: this.props.fullscreen,
+ className: 'video-fullscreen video__control',
+ 'aria-label': this.props.copyKeys.fullscreen },
+ _react2.default.createElement(_Icon2.default, { name: 'resize-full' })
+ );
+ }
+ }]);
+
+ return Fullscreen;
+ }(_react2.default.Component);
+
+ Fullscreen.propTypes = {
+ copyKeys: _propTypes2.default.object,
+ fullscreen: _propTypes2.default.func
+ };
+ exports.default = Fullscreen;
-/***/ },
-/* 79 */
-/***/ function(module, exports, __webpack_require__) {
+/***/ }),
+/* 42 */
+/***/ (function(module, exports, __webpack_require__) {
/**
* lodash 3.0.4 (Custom Build)
@@ -1873,7 +2704,7 @@ return /******/ (function(modules) { // webpackBootstrap
* Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
* Available under MIT license
*/
- var debounce = __webpack_require__(80);
+ var debounce = __webpack_require__(43);
/** Used as the `TypeError` message for "Functions" methods. */
var FUNC_ERROR_TEXT = 'Expected a function';
@@ -1963,9 +2794,9 @@ return /******/ (function(modules) { // webpackBootstrap
module.exports = throttle;
-/***/ },
-/* 80 */
-/***/ function(module, exports, __webpack_require__) {
+/***/ }),
+/* 43 */
+/***/ (function(module, exports, __webpack_require__) {
/**
* lodash 3.1.1 (Custom Build)
@@ -1975,7 +2806,7 @@ return /******/ (function(modules) { // webpackBootstrap
* Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
* Available under MIT license
*/
- var getNative = __webpack_require__(81);
+ var getNative = __webpack_require__(44);
/** Used as the `TypeError` message for "Functions" methods. */
var FUNC_ERROR_TEXT = 'Expected a function';
@@ -2203,9 +3034,9 @@ return /******/ (function(modules) { // webpackBootstrap
module.exports = debounce;
-/***/ },
-/* 81 */
-/***/ function(module, exports) {
+/***/ }),
+/* 44 */
+/***/ (function(module, exports) {
/**
* lodash 3.9.1 (Custom Build)
@@ -2346,13 +3177,13 @@ return /******/ (function(modules) { // webpackBootstrap
module.exports = getNative;
-/***/ },
-/* 82 */
-/***/ function(module, exports) {
+/***/ }),
+/* 45 */
+/***/ (function(module, exports) {
'use strict';
- Object.defineProperty(exports, '__esModule', {
+ Object.defineProperty(exports, "__esModule", {
value: true
});
var copy = {
@@ -2364,10 +3195,9 @@ return /******/ (function(modules) { // webpackBootstrap
fullscreen: 'View video fullscreen',
seek: 'Seek video'
};
- exports['default'] = copy;
- module.exports = exports['default'];
+ exports.default = copy;
-/***/ }
+/***/ })
/******/ ])
});
;
\ No newline at end of file
diff --git a/package.json b/package.json
index 0aed2c5..0573cfd 100644
--- a/package.json
+++ b/package.json
@@ -21,14 +21,16 @@
},
"license": "MIT",
"dependencies": {
- "lodash.throttle": "^3.0.4"
+ "lodash.throttle": "^3.0.4",
+ "prop-types": "^15.6.0"
},
"devDependencies": {
- "babel-core": "^5.8.25",
- "babel-eslint": "^4.1.3",
- "babel-loader": "^5.3.2",
- "babel-runtime": "^6.3.13",
- "coding-standards": "git+ssh://git@github.com:60frames/coding-standards.git#1.0.5",
+ "babel-core": "^6.26.0",
+ "babel-loader": "^6.4.1",
+ "babel-plugin-transform-class-properties": "^6.24.1",
+ "babel-plugin-transform-object-rest-spread": "^6.26.0",
+ "babel-preset-env": "^1.6.1",
+ "babel-preset-react": "^6.24.1",
"css-loader": "^0.21.0",
"eslint": "^1.7.3",
"eslint-plugin-react": "^3.6.3",
@@ -37,11 +39,11 @@
"grunt": "^0.4.5",
"grunt-fontello-react": "^3.0.0",
"grunt-gh-pages": "^0.10.0",
+ "react": "^0.14.0",
+ "react-dom": "^0.14.0",
"style-loader": "^0.13.0",
"url-loader": "^0.5.6",
- "webpack": "^1.12.2",
- "react": "^0.14.0",
- "react-dom": "^0.14.0"
+ "webpack": "^1.12.2"
},
"peerDependencies": {
"react": ">=0.14.0"
diff --git a/src/components/controls/Controls.js b/src/components/controls/Controls.js
index 22052ad..6f6e24b 100644
--- a/src/components/controls/Controls.js
+++ b/src/components/controls/Controls.js
@@ -1,3 +1,4 @@
+import PropTypes from 'prop-types';
import React from 'react';
import Play from './play/Play';
import Seek from './seek/Seek';
@@ -5,27 +6,24 @@ import Mute from './mute/Mute';
import Time from './time/Time';
import Fullscreen from './fullscreen/Fullscreen';
-var Controls = React.createClass({
-
- propTypes: {
- error: React.PropTypes.bool,
- children: React.PropTypes.oneOfType([
- React.PropTypes.arrayOf(React.PropTypes.node),
- React.PropTypes.node
+class Controls extends React.Component {
+ static propTypes = {
+ error: PropTypes.bool,
+ children: PropTypes.oneOfType([
+ PropTypes.arrayOf(PropTypes.node),
+ PropTypes.node
])
- },
+ };
- getDefaultProps() {
- return {
- children: [
- ,
- ,
- ,
- ,
-
- ]
- };
- },
+ static defaultProps = {
+ children: [
+ ,
+ ,
+ ,
+ ,
+
+ ]
+ };
/**
* Returns children components with props
@@ -33,11 +31,11 @@ var Controls = React.createClass({
* for when custom React components are used.
* @return {Array.} An array of components.
*/
- renderChildren() {
+ renderChildren = () => {
return React.Children.map(this.props.children, child => {
return React.cloneElement(child, {...this.props});
});
- },
+ };
render() {
return (
@@ -48,6 +46,6 @@ var Controls = React.createClass({
) : null
);
}
-});
+}
export default Controls;
diff --git a/src/components/controls/fullscreen/Fullscreen.js b/src/components/controls/fullscreen/Fullscreen.js
index 961c337..d126bba 100644
--- a/src/components/controls/fullscreen/Fullscreen.js
+++ b/src/components/controls/fullscreen/Fullscreen.js
@@ -1,12 +1,12 @@
+import PropTypes from 'prop-types';
import React from 'react';
import Icon from './../../icon/Icon';
-var Fullscreen = React.createClass({
-
- propTypes: {
- copyKeys: React.PropTypes.object,
- fullscreen: React.PropTypes.func
- },
+class Fullscreen extends React.Component {
+ static propTypes = {
+ copyKeys: PropTypes.object,
+ fullscreen: PropTypes.func
+ };
/**
* As controls receive all props for extensibility, we do a quick
@@ -16,7 +16,7 @@ var Fullscreen = React.createClass({
*/
shouldComponentUpdate(nextProps) {
return this.props.fullscreen !== nextProps.fullscreen;
- },
+ }
render() {
return (
@@ -28,6 +28,6 @@ var Fullscreen = React.createClass({
);
}
-});
+}
export default Fullscreen;
diff --git a/src/components/controls/mute/Mute.js b/src/components/controls/mute/Mute.js
index aa92e4b..c5605e8 100644
--- a/src/components/controls/mute/Mute.js
+++ b/src/components/controls/mute/Mute.js
@@ -1,17 +1,17 @@
+import PropTypes from 'prop-types';
import React from 'react';
import Icon from './../../icon/Icon';
import ProgressBar from './../../progressbar/ProgressBar';
-var Mute = React.createClass({
-
- propTypes: {
- copyKeys: React.PropTypes.object,
- volume: React.PropTypes.number,
- unmute: React.PropTypes.func,
- setVolume: React.PropTypes.func,
- toggleMute: React.PropTypes.func,
- muted: React.PropTypes.bool
- },
+class Mute extends React.Component {
+ static propTypes = {
+ copyKeys: PropTypes.object,
+ volume: PropTypes.number,
+ unmute: PropTypes.func,
+ setVolume: PropTypes.func,
+ toggleMute: PropTypes.func,
+ muted: PropTypes.bool
+ };
/**
* As controls receive all props for extensibility, we do a quick
@@ -25,19 +25,19 @@ var Mute = React.createClass({
this.props.volume !== nextProps.volume ||
this.props.setVolume !== nextProps.setVolume ||
this.props.unmute !== nextProps.unmute;
- },
+ }
/**
* Calculates the seek time based on click position and element offset.
* @param {object} e Event object
* @return {undefined}
*/
- changeVolume(e) {
+ changeVolume = (e) => {
this.props.setVolume(e.target.value / 100, true);
this.props.unmute();
- },
+ };
- toggleMute() {
+ toggleMute = () => {
// If we volume has been dragged to 0, assume it is in
// a muted state and then toggle to full volume.
if (this.props.volume <= 0) {
@@ -45,7 +45,7 @@ var Mute = React.createClass({
} else {
this.props.toggleMute();
}
- },
+ };
render() {
return (
@@ -73,6 +73,6 @@ var Mute = React.createClass({
);
}
-});
+}
export default Mute;
diff --git a/src/components/controls/play/Play.js b/src/components/controls/play/Play.js
index 54f9688..1535360 100644
--- a/src/components/controls/play/Play.js
+++ b/src/components/controls/play/Play.js
@@ -1,13 +1,13 @@
+import PropTypes from 'prop-types';
import React from 'react';
import Icon from './../../icon/Icon';
-var Play = React.createClass({
-
- propTypes: {
- copyKeys: React.PropTypes.object,
- togglePlay: React.PropTypes.func,
- paused: React.PropTypes.bool
- },
+class Play extends React.Component {
+ static propTypes = {
+ copyKeys: PropTypes.object,
+ togglePlay: PropTypes.func,
+ paused: PropTypes.bool
+ };
/**
* As controls receive all props for extensibility, we do a quick
@@ -18,7 +18,7 @@ var Play = React.createClass({
shouldComponentUpdate(nextProps) {
return this.props.paused !== nextProps.paused ||
this.props.togglePlay !== nextProps.togglePlay;
- },
+ }
render() {
return (
@@ -31,6 +31,6 @@ var Play = React.createClass({
);
}
-});
+}
export default Play;
diff --git a/src/components/controls/seek/Seek.js b/src/components/controls/seek/Seek.js
index e5c1834..251060c 100644
--- a/src/components/controls/seek/Seek.js
+++ b/src/components/controls/seek/Seek.js
@@ -1,25 +1,25 @@
+import PropTypes from 'prop-types';
import React from 'react';
import ProgressBar from './../../progressbar/ProgressBar';
-var Seek = React.createClass({
-
- propTypes: {
- copyKeys: React.PropTypes.object,
- seek: React.PropTypes.func,
- percentageBuffered: React.PropTypes.number,
- percentagePlayed: React.PropTypes.number,
- duration: React.PropTypes.number
- },
-
- getInitialState() {
- return {
+class Seek extends React.Component {
+ static propTypes = {
+ copyKeys: PropTypes.object,
+ seek: PropTypes.func,
+ percentageBuffered: PropTypes.number,
+ percentagePlayed: PropTypes.number,
+ duration: PropTypes.number
+ };
+ constructor(props) {
+ super(props);
+ this.state = {
// When the child range input becomes focused,
// we need to set this custom seek bar to look
// 'focused' with the correct styles. Need to
// do this via a class.
focused: false
};
- },
+ }
/**
* As controls receive all props for extensibility, we do a quick
@@ -29,31 +29,31 @@ var Seek = React.createClass({
*/
shouldComponentUpdate(nextProps) {
return this.props.seek !== nextProps.seek ||
- this.props.percentageBuffered !== nextProps.percentageBuffered ||
- this.props.percentagePlayed !== nextProps.percentagePlayed ||
- this.props.duration !== nextProps.duration;
- },
+ this.props.percentageBuffered !== nextProps.percentageBuffered ||
+ this.props.percentagePlayed !== nextProps.percentagePlayed ||
+ this.props.duration !== nextProps.duration;
+ }
/**
* Calculates the seek time based on change of input.
* @param {object} e Event object
* @return {undefined}
*/
- seek(e) {
+ seek = (e) => {
this.props.seek(e.target.value * this.props.duration / 100, true);
- },
+ };
- onFocus() {
+ onFocus = () => {
this.setState({
focused: true
});
- },
+ };
- onBlur() {
+ onBlur = () => {
this.setState({
focused: false
});
- },
+ };
render() {
return (
@@ -75,6 +75,6 @@ var Seek = React.createClass({
);
}
-});
+}
export default Seek;
diff --git a/src/components/controls/time/Time.js b/src/components/controls/time/Time.js
index b3d5141..50ef24f 100644
--- a/src/components/controls/time/Time.js
+++ b/src/components/controls/time/Time.js
@@ -1,12 +1,12 @@
+import PropTypes from 'prop-types';
import React from 'react';
import Icon from './../../icon/Icon';
-var Time = React.createClass({
-
- propTypes: {
- currentTime: React.PropTypes.number,
- duration: React.PropTypes.number
- },
+class Time extends React.Component {
+ static propTypes = {
+ currentTime: PropTypes.number,
+ duration: PropTypes.number
+ };
/**
* As controls receive all props for extensibility, we do a quick
@@ -17,19 +17,19 @@ var Time = React.createClass({
shouldComponentUpdate(nextProps) {
return this.props.currentTime !== nextProps.currentTime ||
this.props.duration !== nextProps.duration;
- },
+ }
/**
* Formats time into a friendlier format
* @param {number} seconds Time in seconds
* @return {string} Timestamp in the format of HH:MM:SS
*/
- formatTime(seconds) {
+ formatTime = (seconds) => {
var date = new Date(Date.UTC(1970,1,1,0,0,0,0));
seconds = isNaN(seconds) ? 0 : Math.floor(seconds);
date.setSeconds(seconds);
return date.toISOString().substr(11, 8);
- },
+ };
render() {
return (
@@ -44,6 +44,6 @@ var Time = React.createClass({
);
}
-});
+}
export default Time;
diff --git a/src/components/icon/Icon.js b/src/components/icon/Icon.js
index 495162a..1bee836 100644
--- a/src/components/icon/Icon.js
+++ b/src/components/icon/Icon.js
@@ -2,12 +2,13 @@
/*
* Generated by the 'fontello-react' Grunt task.
*/
-import React from 'react';
+import PropTypes from 'prop-types';
-var Icon = React.createClass({
+import React from 'react';
- propTypes: {
- name: React.PropTypes.oneOf([
+class Icon extends React.Component {
+ static propTypes = {
+ name: PropTypes.oneOf([
'play-1',
'volume-off',
'volume-down',
@@ -16,24 +17,21 @@ var Icon = React.createClass({
'resize-small',
'pause-1'
])
- },
+ };
/**
* Default the icon to the first one just to show something
* @return {Object} The default props
*/
- getDefaultProps() {
- return {
- name: 'play-1'
- };
- },
+ static defaultProps = {
+ name: 'play-1'
+ };
render() {
return (
);
}
-
-});
+}
export default Icon;
diff --git a/src/components/progressbar/ProgressBar.js b/src/components/progressbar/ProgressBar.js
index a0683af..2846331 100644
--- a/src/components/progressbar/ProgressBar.js
+++ b/src/components/progressbar/ProgressBar.js
@@ -1,45 +1,31 @@
+import PropTypes from 'prop-types';
import React from 'react';
-var ProgressBar = React.createClass({
-
- propTypes: {
- orientation: React.PropTypes.string,
- step: React.PropTypes.number,
- progress: React.PropTypes.number,
- onChange: React.PropTypes.func,
- onFocus: React.PropTypes.func,
- onBlur: React.PropTypes.func
- },
-
- getDefaultProps() {
- return {
- orientation: 'horizontal',
- step: 0.1,
- progress: 0,
- onChange: this.onChange,
- onFocus: this.onFocus,
- onBlur: this.onBlur
- };
- },
+class ProgressBar extends React.Component {
+ static propTypes = {
+ orientation: PropTypes.string,
+ step: PropTypes.number,
+ progress: PropTypes.number,
+ onChange: PropTypes.func,
+ onFocus: PropTypes.func,
+ onBlur: PropTypes.func
+ };
+
+ static defaultProps = {
+ orientation: 'horizontal',
+ step: 0.1,
+ progress: 0,
+ onChange: ()=>{},
+ onFocus: ()=>{},
+ onBlur: ()=>{},
+ };
componentDidMount() {
// 'orient' is not supported by React but
// is required for Firefox. Setting manually.
// https://github.com/facebook/react/issues/2453
this.refs.input.setAttribute('orient', this.props.orientation);
- },
-
- onChange() {
- // Placeholder
- },
-
- onFocus() {
- // Placeholder
- },
-
- onBlur() {
- // Placeholder
- },
+ }
render() {
return (
@@ -56,11 +42,11 @@ var ProgressBar = React.createClass({
type="range"
min="0"
max="100"
- value={this.props.progress}
+ value={this.props.progress || 0}
step={this.props.step} />
);
}
-});
+}
export default ProgressBar;
diff --git a/src/components/spinner/Spinner.js b/src/components/spinner/Spinner.js
index bf49892..dc53577 100644
--- a/src/components/spinner/Spinner.js
+++ b/src/components/spinner/Spinner.js
@@ -1,7 +1,6 @@
import React from 'react';
-var Spinner = React.createClass({
-
+class Spinner extends React.Component {
render() {
return (
@@ -13,7 +12,6 @@ var Spinner = React.createClass({
);
}
-
-});
+}
export default Spinner;
diff --git a/src/components/video/Video.js b/src/components/video/Video.js
index 0b53a0d..a73c733 100644
--- a/src/components/video/Video.js
+++ b/src/components/video/Video.js
@@ -1,3 +1,4 @@
+import PropTypes from 'prop-types';
import React from 'react';
import Overlay from './overlay/Overlay';
import Controls from './../controls/Controls';
@@ -35,32 +36,26 @@ var EVENTS = [
'onWaiting'
];
-var Video = React.createClass({
-
- propTypes: {
+class Video extends React.Component {
+ static propTypes = {
// Non-standard props
- copyKeys: React.PropTypes.object,
- children: React.PropTypes.node,
- className: React.PropTypes.string,
+ copyKeys: PropTypes.object,
+ children: PropTypes.node,
+ className: PropTypes.string,
// HTML5 Video standard attributes
- autoPlay: React.PropTypes.bool,
- muted: React.PropTypes.bool,
- controls: React.PropTypes.bool
- },
-
- getDefaultProps() {
- return {
- copyKeys: copy
- };
- },
-
- getInitialState() {
- // Set state from props and always use these
- // to check state of video as they will update
- // on the video events. Changing this state however will not
- // change the video. The API methods must be used.
- return {
+ autoPlay: PropTypes.bool,
+ muted: PropTypes.bool,
+ controls: PropTypes.bool
+ };
+
+ static defaultProps = {
+ copyKeys: copy
+ };
+
+ constructor(props) {
+ super(props);
+ this.state = {
networkState: 0,
paused: !this.props.autoPlay,
muted: !!this.props.muted,
@@ -69,7 +64,7 @@ var Video = React.createClass({
error: false,
loading: false
};
- },
+ }
/**
* Creates a throttle update method.
@@ -89,7 +84,7 @@ var Video = React.createClass({
};
return p;
}, {});
- },
+ }
/**
* Bind eventlisteners not supported by React's synthetic events
@@ -100,7 +95,7 @@ var Video = React.createClass({
// Listen to error of last source.
this.videoEl.children[this.videoEl.children.length - 1]
.addEventListener('error', this._updateStateFromVideo);
- },
+ }
/**
* Removes event listeners bound outside of React's synthetic events
@@ -114,45 +109,45 @@ var Video = React.createClass({
// the video has been unmounted.
// https://github.com/mderrick/react-html5video/issues/35
this._updateStateFromVideo.cancel();
- },
+ }
/**
* Toggles the video to play and pause.
* @return {undefined}
*/
- togglePlay() {
+ togglePlay = () => {
if (this.state.paused) {
this.play();
} else {
this.pause();
}
- },
+ };
/**
* Toggles the video to mute and unmute.
* @return {undefined}
*/
- toggleMute() {
+ toggleMute = () => {
if (this.state.muted) {
this.unmute();
} else {
this.mute();
}
- },
+ };
/**
* Loads video.
* @return {undefined}
*/
- load() {
+ load = () => {
this.videoEl.load();
- },
+ };
/**
* Sets the video to fullscreen.
* @return {undefined}
*/
- fullscreen() {
+ fullscreen = () => {
if (this.videoEl.requestFullscreen) {
this.videoEl.requestFullscreen();
} else if (this.videoEl.msRequestFullscreen) {
@@ -162,39 +157,39 @@ var Video = React.createClass({
} else if (this.videoEl.webkitRequestFullscreen) {
this.videoEl.webkitRequestFullscreen();
}
- },
+ };
/**
* Plays the video.
* @return {undefined}
*/
- play() {
+ play = () => {
this.videoEl.play();
- },
+ };
/**
* Pauses the video.
* @return {undefined}
*/
- pause() {
+ pause = () => {
this.videoEl.pause();
- },
+ };
/**
* Unmutes video.
* @return {undefined}
*/
- unmute() {
+ unmute = () => {
this.videoEl.muted = false;
- },
+ };
/**
* Mutes the video.
* @return {undefined}
*/
- mute() {
+ mute = () => {
this.videoEl.muted = true;
- },
+ };
/**
* Seeks the video timeline.
@@ -203,7 +198,7 @@ var Video = React.createClass({
* throttled event.
* @return {undefined}
*/
- seek(time, forceUpdate) {
+ seek = (time, forceUpdate) => {
this.videoEl.currentTime = time;
// In some use cases, we wish not to wait for `onSeeked` or `onSeeking`
// throttled event to update state so we force it. This is because
@@ -212,7 +207,7 @@ var Video = React.createClass({
if (forceUpdate) {
this.updateStateFromVideo();
}
- },
+ };
/**
* Sets the video volume.
@@ -221,7 +216,7 @@ var Video = React.createClass({
* throttled event.
* @return {undefined}
*/
- setVolume(volume, forceUpdate) {
+ setVolume = (volume, forceUpdate) => {
this.videoEl.volume = volume;
// In some use cases, we wish not to wait for `onVolumeChange`
// throttled event to update state so we force it. This is because
@@ -230,24 +225,24 @@ var Video = React.createClass({
if (forceUpdate) {
this.updateStateFromVideo();
}
- },
+ };
/**
* Sets the video playback rate.
* @param {number} rate The playback rate (default 1.0).
* @return {undefined}
*/
- setPlaybackRate(rate) {
+ setPlaybackRate = (rate) => {
this.videoEl.playbackRate = rate;
this.updateStateFromVideo();
- },
+ };
/**
* Updates the React component state from the DOM video properties.
* This is where the magic happens.
* @return {undefined}
*/
- updateStateFromVideo() {
+ updateStateFromVideo = () => {
this.setState({
// Standard video properties
duration: this.videoEl.duration,
@@ -265,7 +260,7 @@ var Video = React.createClass({
error: this.videoEl.networkState === this.videoEl.NETWORK_NO_SOURCE,
loading: this.videoEl.readyState < this.videoEl.HAVE_ENOUGH_DATA
});
- },
+ };
/**
* Returns everything but 'source' nodes from children
@@ -273,7 +268,7 @@ var Video = React.createClass({
* If there are no controls provided, returns default Controls.
* @return {Array.} An array of components.
*/
- renderControls() {
+ renderControls = () => {
var extendedProps = Object.assign({
// The public methods that all controls should be able to
// use.
@@ -287,7 +282,7 @@ var Video = React.createClass({
fullscreen: this.fullscreen,
setVolume: this.setVolume,
setPlaybackRate: this.setPlaybackRate,
- }, this.state, {copyKeys: this.props.copyKeys});
+ }, this.state, { copyKeys: this.props.copyKeys });
var controls = React.Children.map(this.props.children, (child) => {
if (child.type === 'source') {
@@ -305,27 +300,27 @@ var Video = React.createClass({
);
}
return controls;
- },
+ };
/**
* Returns video 'source' nodes from children.
* @return {Array.} An array of components.
*/
- renderSources() {
+ renderSources = () => {
return React.Children.map(this.props.children, (child) => {
if (child.type !== 'source') {
return void 0;
}
return child;
});
- },
+ };
/**
* Gets the video class name based on its state
* @return {string} Class string
*/
- getVideoClassName() {
- var {className} = this.props;
+ getVideoClassName = () => {
+ var { className } = this.props;
var classString = 'video';
if (this.state.error) {
@@ -345,35 +340,35 @@ var Video = React.createClass({
classString += ' ' + className;
}
return classString;
- },
+ };
/**
* Sets state to show focused class on video player.
* @return {undefined}
*/
- onFocus() {
+ onFocus = () => {
this.setState({
focused: true
});
- },
+ };
/**
* Sets state to not be focused to remove class form video
* player.
* @return {undefined}
*/
- onBlur() {
+ onBlur = () => {
this.setState({
focused: false
});
- },
+ };
render() {
// If controls prop is provided remove it
// and use our own controls.
// Leave `copyKeys` here even though not used
// as per issue #36.
- var {controls, copyKeys, style, ...otherProps} = this.props;
+ var { controls, copyKeys, style, ...otherProps } = this.props;
return (
- {this.renderSources()}
+ {this.renderSources()}
{controls ? this.renderControls() : ''}
);
}
-});
+}
-export {Video as default, Controls, Seek, Play, Mute, Fullscreen, Time, Overlay};
+export { Video as default, Controls, Seek, Play, Mute, Fullscreen, Time, Overlay };
diff --git a/src/components/video/overlay/Overlay.js b/src/components/video/overlay/Overlay.js
index 0d58b26..4865fec 100644
--- a/src/components/video/overlay/Overlay.js
+++ b/src/components/video/overlay/Overlay.js
@@ -1,18 +1,18 @@
+import PropTypes from 'prop-types';
import React from 'react';
import Icon from './../../icon/Icon';
import Spinner from './../../spinner/Spinner';
-var Overlay = React.createClass({
+class Overlay extends React.Component {
+ static propTypes = {
+ error: PropTypes.bool,
+ togglePlay: PropTypes.func,
+ paused: PropTypes.bool,
+ copyKeys: PropTypes.object,
+ loading: PropTypes.bool
+ };
- propTypes: {
- error: React.PropTypes.bool,
- togglePlay: React.PropTypes.func,
- paused: React.PropTypes.bool,
- copyKeys: React.PropTypes.object,
- loading: React.PropTypes.bool
- },
-
- renderContent() {
+ renderContent = () => {
var content;
if (this.props.error) {
content = (
@@ -34,7 +34,7 @@ var Overlay = React.createClass({
);
}
return content;
- },
+ };
render() {
return (
@@ -43,7 +43,6 @@ var Overlay = React.createClass({
);
}
-
-});
+}
export default Overlay;
diff --git a/webpack.config.js b/webpack.config.js
index 145ee1d..f48c89b 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -27,7 +27,7 @@ module.exports = {
loaders: [{
test: /\.js$/,
exclude: /node_modules/,
- loader: 'babel?optional=runtime'
+ loader: 'babel-loader'
}, {
test: /\.(svg|woff([\?]?.*)|ttf([\?]?.*)|eot([\?]?.*)|svg([\?]?.*))$/i,
loader: 'url-loader?limit=10000'