UNPKG

@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 (97 loc) 3.62 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); 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 = { manager: _propTypes2.default.object, className: _propTypes2.default.string }; var Bezel = function (_Component) { (0, _inherits3.default)(Bezel, _Component); function Bezel(props, context) { (0, _classCallCheck3.default)(this, Bezel); var _this = (0, _possibleConstructorReturn3.default)(this, (Bezel.__proto__ || (0, _getPrototypeOf2.default)(Bezel)).call(this, props, context)); _this.timer = null; props.manager.subscribeToOperationStateChange(_this.handleStateChange.bind(_this)); _this.state = { hidden: true, operation: {} }; return _this; } (0, _createClass3.default)(Bezel, [{ key: 'handleStateChange', value: function handleStateChange(state, prevState) { var _this2 = this; if (state.count !== prevState.count && state.operation.source === 'shortcut') { if (this.timer) { // previous animation is not finished clearTimeout(this.timer); // cancel it this.timer = null; } // show it // update operation this.setState({ hidden: false, count: state.count, operation: state.operation }); // hide it after 0.5s this.timer = setTimeout(function () { _this2.setState({ hidden: true }); _this2.timer = null; }, 500); } } }, { key: 'render', value: function render() { // only displays for shortcut so far if (this.state.operation.source !== 'shortcut') { return null; } var style = this.state.hidden ? { display: 'none' } : null; return _react2.default.createElement( 'div', { className: (0, _classnames2.default)({ 'video-react-bezel': true, 'video-react-bezel-animation': this.state.count % 2 === 0, 'video-react-bezel-animation-alt': this.state.count % 2 === 1 }, this.props.className), style: style, role: 'status', 'aria-label': this.state.operation.action }, _react2.default.createElement('div', { className: (0, _classnames2.default)('video-react-bezel-icon', 'video-react-bezel-icon-' + this.state.operation.action) }) ); } }]); return Bezel; }(_react.Component); exports.default = Bezel; Bezel.propTypes = propTypes; Bezel.displayName = 'Bezel';