@lahzenegar/video-react
Version:
Video-React is a web video player built from the ground up for an HTML5 world using React library.
101 lines (74 loc) • 3.74 kB
JavaScript
;
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 _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 PreviewThumbnail = function (_React$Component) {
(0, _inherits3.default)(PreviewThumbnail, _React$Component);
function PreviewThumbnail() {
(0, _classCallCheck3.default)(this, PreviewThumbnail);
return (0, _possibleConstructorReturn3.default)(this, (PreviewThumbnail.__proto__ || (0, _getPrototypeOf2.default)(PreviewThumbnail)).apply(this, arguments));
}
(0, _createClass3.default)(PreviewThumbnail, [{
key: 'getTrimOffset',
value: function getTrimOffset(streamURL) {
var parsedStreamURL = new URL(streamURL);
var paths = parsedStreamURL.pathname.split('/');
var streamID = paths[paths.length - 2];
return streamID ? parseInt(streamID.split('-')[1]) || 0 : 0;
}
}, {
key: 'render',
value: function render() {
var _props = this.props,
mouseTime = _props.mouseTime,
className = _props.className,
storyboard = _props.storyboard,
isLive = _props.isLive,
player = _props.player;
var trimOffset = player && player.hls && player.hls.url ? this.getTrimOffset(player.hls.url) : 0;
if (!mouseTime.time) return null;
if (isLive) return null;
if (typeof storyboard === 'undefined') return null;
var tileHeight = storyboard.tileHeight,
tileWidth = storyboard.tileWidth,
filePathFormat = storyboard.filePathFormat,
columnsPerRow = storyboard.columnsPerRow,
rowsPerFile = storyboard.rowsPerFile,
tileInterval = storyboard.tileInterval;
var storyboardDuration = rowsPerFile * columnsPerRow * tileInterval;
var storyboardIndex = Math.ceil((mouseTime.time + trimOffset) / storyboardDuration);
var tileIndex = Math.floor((mouseTime.time + trimOffset - (storyboardIndex - 1) * storyboardDuration) / tileInterval);
var columnTop = Math.floor(tileIndex / columnsPerRow) * -tileHeight;
var columnLeft = Math.floor(tileIndex % columnsPerRow) * -tileWidth;
return !!storyboard && _react2.default.createElement('div', {
className: (0, _classnames2.default)('video-react-thumbnail-preview', className),
style: {
left: mouseTime.position + 'px',
height: tileHeight + 'px',
width: tileWidth + 'px',
transform: 'translate(' + -tileWidth / 2 + 'px, ' + -tileHeight + 'px)',
backgroundImage: 'url(' + filePathFormat.replace('%d', storyboardIndex) + ')',
backgroundRepeat: 'no-repeat',
backgroundPosition: columnLeft + 'px ' + columnTop + 'px'
}
});
}
}]);
return PreviewThumbnail;
}(_react2.default.Component);
exports.default = PreviewThumbnail;