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: [ - , - , -