@lahzenegar/video-react
Version:
Video-React is a web video player built from the ground up for an HTML5 world using React library.
163 lines (127 loc) • 4.81 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 _PopupButton = require('../popup/PopupButton');
var _PopupButton2 = _interopRequireDefault(_PopupButton);
var _VolumeBar = require('../volume-control/VolumeBar');
var _VolumeBar2 = _interopRequireDefault(_VolumeBar);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var propTypes = {
player: _propTypes2.default.object,
actions: _propTypes2.default.object,
vertical: _propTypes2.default.bool,
className: _propTypes2.default.string,
alwaysShowVolume: _propTypes2.default.bool
};
var defaultProps = {
vertical: false
};
var VolumeMenuButton = function (_Component) {
(0, _inherits3.default)(VolumeMenuButton, _Component);
function VolumeMenuButton(props, context) {
(0, _classCallCheck3.default)(this, VolumeMenuButton);
var _this = (0, _possibleConstructorReturn3.default)(this, (VolumeMenuButton.__proto__ || (0, _getPrototypeOf2.default)(VolumeMenuButton)).call(this, props, context));
_this.state = {
active: false
};
_this.handleClick = _this.handleClick.bind(_this);
_this.handleFocus = _this.handleFocus.bind(_this);
_this.handleBlur = _this.handleBlur.bind(_this);
return _this;
}
(0, _createClass3.default)(VolumeMenuButton, [{
key: 'handleClick',
value: function handleClick() {
var _props = this.props,
player = _props.player,
actions = _props.actions;
actions.mute(!player.muted);
}
}, {
key: 'handleFocus',
value: function handleFocus() {
this.setState({
active: true
});
}
}, {
key: 'handleBlur',
value: function handleBlur() {
this.setState({
active: false
});
}
}, {
key: 'render',
value: function render() {
var _props2 = this.props,
vertical = _props2.vertical,
player = _props2.player,
className = _props2.className;
var inline = !vertical;
var level = this.volumeLevel;
return _react2.default.createElement(
_PopupButton2.default,
{
className: (0, _classnames2.default)(className, {
'video-react-volume-menu-button-vertical': vertical,
'video-react-volume-menu-button-horizontal': !vertical,
'video-react-vol-muted': player.muted,
'video-react-vol-0': level === 0 && !player.muted,
'video-react-vol-1': level === 1,
'video-react-vol-2': level === 2,
'video-react-vol-3': level === 3,
'video-react-slider-active': this.props.alwaysShowVolume || this.state.active,
'video-react-lock-showing': this.props.alwaysShowVolume || this.state.active
}, 'video-react-volume-menu-button'),
onClick: this.handleClick,
inline: inline
},
_react2.default.createElement(_VolumeBar2.default, (0, _extends3.default)({
onFocus: this.handleFocus,
onBlur: this.handleBlur
}, this.props))
);
}
}, {
key: 'volumeLevel',
get: function get() {
var _props$player = this.props.player,
volume = _props$player.volume,
muted = _props$player.muted;
var level = 3;
if (volume === 0 || muted) {
level = 0;
} else if (volume < 0.33) {
level = 1;
} else if (volume < 0.67) {
level = 2;
}
return level;
}
}]);
return VolumeMenuButton;
}(_react.Component);
VolumeMenuButton.propTypes = propTypes;
VolumeMenuButton.defaultProps = defaultProps;
VolumeMenuButton.displayName = 'VolumeMenuButton';
exports.default = VolumeMenuButton;