@lahzenegar/video-react
Version:
Video-React is a web video player built from the ground up for an HTML5 world using React library.
129 lines (98 loc) • 3.84 kB
JavaScript
;
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);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var propTypes = {
tagName: _propTypes2.default.string,
onClick: _propTypes2.default.func.isRequired,
onFocus: _propTypes2.default.func,
onBlur: _propTypes2.default.func,
className: _propTypes2.default.string
};
var defaultProps = {
tagName: 'div'
};
var ClickableComponent = function (_Component) {
(0, _inherits3.default)(ClickableComponent, _Component);
function ClickableComponent(props, context) {
(0, _classCallCheck3.default)(this, ClickableComponent);
var _this = (0, _possibleConstructorReturn3.default)(this, (ClickableComponent.__proto__ || (0, _getPrototypeOf2.default)(ClickableComponent)).call(this, props, context));
_this.handleClick = _this.handleClick.bind(_this);
_this.handleFocus = _this.handleFocus.bind(_this);
_this.handleBlur = _this.handleBlur.bind(_this);
_this.handleKeypress = _this.handleKeypress.bind(_this);
return _this;
}
(0, _createClass3.default)(ClickableComponent, [{
key: 'handleKeypress',
value: function handleKeypress(event) {
// Support Space (32) or Enter (13) key operation to fire a click event
if (event.which === 32 || event.which === 13) {
event.preventDefault();
this.handleClick(event);
}
}
}, {
key: 'handleClick',
value: function handleClick(event) {
var onClick = this.props.onClick;
onClick(event);
}
}, {
key: 'handleFocus',
value: function handleFocus(e) {
document.addEventListener('keydown', this.handleKeypress);
if (this.props.onFocus) {
this.props.onFocus(e);
}
}
}, {
key: 'handleBlur',
value: function handleBlur(e) {
document.removeEventListener('keydown', this.handleKeypress);
if (this.props.onBlur) {
this.props.onBlur(e);
}
}
}, {
key: 'render',
value: function render() {
var Tag = this.props.tagName;
var props = (0, _extends3.default)({}, this.props);
delete props.tagName;
delete props.className;
return _react2.default.createElement(Tag, (0, _extends3.default)({
className: (0, _classnames2.default)(this.props.className),
role: 'button',
tabIndex: '0',
onClick: this.handleClick,
onFocus: this.handleFocus,
onBlur: this.handleBlur
}, props));
}
}]);
return ClickableComponent;
}(_react.Component);
exports.default = ClickableComponent;
ClickableComponent.propTypes = propTypes;
ClickableComponent.defaultProps = defaultProps;
ClickableComponent.displayName = 'ClickableComponent';