@lahzenegar/video-react
Version:
Video-React is a web video player built from the ground up for an HTML5 world using React library.
217 lines (164 loc) • 7.27 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _ProgressControl = require('./ProgressControl');
var _ProgressControl2 = _interopRequireDefault(_ProgressControl);
var _PlayToggle = require('./PlayToggle');
var _PlayToggle2 = _interopRequireDefault(_PlayToggle);
var _AudioOnly = require('./AudioOnly');
var _AudioOnly2 = _interopRequireDefault(_AudioOnly);
var _Live = require('./Live');
var _Live2 = _interopRequireDefault(_Live);
var _SettingMenu = require('./SettingMenu');
var _SettingMenu2 = _interopRequireDefault(_SettingMenu);
var _FullscreenToggle = require('./FullscreenToggle');
var _FullscreenToggle2 = _interopRequireDefault(_FullscreenToggle);
var _CurrentTimeDisplay = require('../time-controls/CurrentTimeDisplay');
var _CurrentTimeDisplay2 = _interopRequireDefault(_CurrentTimeDisplay);
var _DurationDisplay = require('../time-controls/DurationDisplay');
var _DurationDisplay2 = _interopRequireDefault(_DurationDisplay);
var _TimeDivider = require('../time-controls/TimeDivider');
var _TimeDivider2 = _interopRequireDefault(_TimeDivider);
var _VolumeMenuButton = require('./VolumeMenuButton');
var _VolumeMenuButton2 = _interopRequireDefault(_VolumeMenuButton);
var _PlaybackRateMenuButton = require('./PlaybackRateMenuButton');
var _PlaybackRateMenuButton2 = _interopRequireDefault(_PlaybackRateMenuButton);
var _utils = require('../../utils');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var propTypes = {
children: _propTypes2.default.any,
autoHide: _propTypes2.default.bool,
className: _propTypes2.default.string
};
var defaultProps = {
autoHide: true
};
var ControlBar = function (_Component) {
(0, _inherits3.default)(ControlBar, _Component);
function ControlBar(props) {
(0, _classCallCheck3.default)(this, ControlBar);
return (0, _possibleConstructorReturn3.default)(this, (ControlBar.__proto__ || (0, _getPrototypeOf2.default)(ControlBar)).call(this, props));
}
(0, _createClass3.default)(ControlBar, [{
key: 'getChildren',
value: function getChildren() {
var children = _react2.default.Children.toArray(this.props.children);
return (0, _utils.mergeAndSortChildren)([], children, this.props);
}
}, {
key: 'render',
value: function render() {
var _props = this.props,
autoHide = _props.autoHide,
className = _props.className,
_props$player = _props.player,
hasDVR = _props$player.hasDVR,
isLive = _props$player.isLive,
tracks = _props$player.tracks,
switchingTrack = _props$player.switchingTrack,
activeTrack = _props$player.activeTrack,
realActiveTrack = _props$player.realActiveTrack,
playbackRate = _props$player.playbackRate;
var children = this.getChildren();
return _react2.default.createElement(
'div',
{
className: (0, _classnames2.default)('video-react-control-bar', {
'video-react-control-bar-auto-hide': autoHide
}, className)
},
(!isLive || hasDVR) && _react2.default.createElement(
'div',
{ className: 'video-react-control-bar-progress-bar' },
_react2.default.createElement(_ProgressControl2.default, (0, _extends3.default)({}, this.props, {
key: 'progress-control',
order: 1
}))
),
_react2.default.createElement(
'div',
{ className: 'video-react-control-bar-buttons' },
_react2.default.createElement(
'div',
{ className: 'video-react-control-left' },
_react2.default.createElement(_PlayToggle2.default, (0, _extends3.default)({}, this.props, {
key: 'play-toggle',
order: 2
})),
_react2.default.createElement(_VolumeMenuButton2.default, (0, _extends3.default)({}, this.props, {
key: 'volume-menu-button',
order: 3
})),
!isLive ? _react2.default.createElement(
'div',
{ className: 'video-react-control-time-display' },
_react2.default.createElement(_CurrentTimeDisplay2.default, (0, _extends3.default)({}, this.props, {
key: 'current-time-display',
order: 4
})),
_react2.default.createElement(_TimeDivider2.default, (0, _extends3.default)({}, this.props, {
key: 'time-divider',
order: 5
})),
_react2.default.createElement(_DurationDisplay2.default, (0, _extends3.default)({}, this.props, {
key: 'duration-display',
order: 6
}))
) : _react2.default.createElement(_Live2.default, (0, _extends3.default)({}, this.props, {
key: 'live-indicator',
order: 7
}))
),
_react2.default.createElement(
'div',
{ className: 'video-react-control-right' },
children,
_react2.default.createElement(_AudioOnly2.default, (0, _extends3.default)({}, this.props, {
key: 'audio-only',
order: 8
})),
_react2.default.createElement(_SettingMenu2.default, (0, _extends3.default)({}, this.props, {
rates: [0.5, 0.75, 1, 1.25, 1.5],
activeTrack: activeTrack,
switchingTrack: switchingTrack,
realActiveTrack: realActiveTrack,
tracks: tracks,
isLive: isLive,
playbackRate: playbackRate,
key: 'settings',
order: 10
})),
_react2.default.createElement(_FullscreenToggle2.default, (0, _extends3.default)({}, this.props, {
key: 'fullscreen-toggle',
order: 11
}))
)
)
);
}
}]);
return ControlBar;
}(_react.Component);
exports.default = ControlBar;
ControlBar.propTypes = propTypes;
ControlBar.defaultProps = defaultProps;
ControlBar.displayName = 'ControlBar';