├── .babelrc ├── index.js ├── example ├── app.css ├── app.js └── index.html ├── webpack.config.js ├── README.md ├── .gitignore ├── LICENSE ├── src └── index.js ├── dist └── index.js └── package.json /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "react"] 3 | } 4 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./dist/index'); 2 | -------------------------------------------------------------------------------- /example/app.css: -------------------------------------------------------------------------------- 1 | *, *:before, *:after { 2 | box-sizing: border-box; 3 | } 4 | 5 | .app { 6 | max-width: 400px; 7 | margin: 0 auto; 8 | } -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | entry: './example/app.js', 3 | output: { 4 | path: __dirname + '/example', 5 | filename: 'bundle.js', 6 | publicPath: "/example/", 7 | }, 8 | module: { 9 | loaders: [ 10 | {test: /\.js$/, loader: 'babel-loader'}, 11 | {test: /\.json$/, loader: 'json-loader'} 12 | ] 13 | }, 14 | externals: { 15 | 'react': 'React', 16 | 'react-dom': 'ReactDOM' 17 | }, 18 | devtool: "source-map" 19 | }; 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # react-videojs 2 | react videojs wrapper 3 | 4 | ### Installtion 5 | ``` sh 6 | npm install react-videojs --save 7 | ``` 8 | 9 | ### Demo 10 | http://esportsguy.github.io/react-videojs/ 11 | 12 | ### Usage 13 | 14 | Video.js should be loaded globally. 15 | 16 | ``` html 17 | 18 | ``` 19 | 20 | ``` javascript 21 | 26 | ``` 27 | 28 | ### License 29 | ISC 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # node-waf configuration 20 | .lock-wscript 21 | 22 | # Compiled binary addons (http://nodejs.org/api/addons.html) 23 | build/Release 24 | 25 | # Dependency directory 26 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git 27 | node_modules 28 | 29 | example/bundle* 30 | .publish 31 | -------------------------------------------------------------------------------- /example/app.js: -------------------------------------------------------------------------------- 1 | var React = require('react'); 2 | var ReactDOM = require('react-dom'); 3 | var Video = require('../src/'); 4 | var _package = require('../package.json'); 5 | 6 | var App = React.createClass({ 7 | displayName: 'App', 8 | 9 | handlePlay(player) { 10 | console.log('onPlay', player); 11 | }, 12 | 13 | render() { 14 | return ( 15 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | var assign = require('object-assign');
2 | var cx = require('classnames');
3 | var blacklist = require('blacklist');
4 | var React = require('react');
5 |
6 | module.exports = React.createClass({
7 | displayName: 'VideoJS',
8 |
9 | componentDidMount() {
10 | var self = this;
11 | var player = videojs(this.refs.video, this.props.options).ready(function() {
12 | self.player = this
13 | self.player.on('play', self.handlePlay);
14 | });
15 | if(this.props.onPlayerInit) this.props.onPlayerInit(player);
16 | },
17 |
18 | handlePlay: function() {
19 | if(this.props.onPlay) this.props.onPlay(this.player);
20 | },
21 |
22 | render() {
23 | var props = blacklist(this.props, 'children', 'className', 'src', 'type', 'onPlay', 'onPlayerInit');
24 | props.className = cx(this.props.className, 'videojs', 'video-js vjs-default-skin');
25 |
26 | assign(props, {
27 | ref: 'video',
28 | controls: true
29 | });
30 |
31 | return (
32 |