react-h5-audio-player
Version:
A customizable React audio player. Written in TypeScript. Mobile compatible. Keyboard friendly
78 lines (60 loc) • 2.71 kB
JavaScript
import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import { PureComponent } from 'react';
import { getDisplayTimeBySeconds } from './utils';
var Duration = function (_PureComponent) {
_inheritsLoose(Duration, _PureComponent);
function Duration(props) {
var _this;
_this = _PureComponent.call(this, props) || this;
_defineProperty(_assertThisInitialized(_this), "audio", void 0);
_defineProperty(_assertThisInitialized(_this), "hasAddedAudioEventListener", false);
_defineProperty(_assertThisInitialized(_this), "state", {
duration: _this.props.audio ? getDisplayTimeBySeconds(_this.props.audio.duration, _this.props.audio.duration, _this.props.timeFormat) : _this.props.defaultDuration
});
_defineProperty(_assertThisInitialized(_this), "handleAudioDurationChange", function (e) {
var audio = e.target;
var _this$props = _this.props,
timeFormat = _this$props.timeFormat,
defaultDuration = _this$props.defaultDuration;
_this.setState({
duration: getDisplayTimeBySeconds(audio.duration, audio.duration, timeFormat) || defaultDuration
});
});
_defineProperty(_assertThisInitialized(_this), "addAudioEventListeners", function () {
var audio = _this.props.audio;
if (audio && !_this.hasAddedAudioEventListener) {
_this.audio = audio;
_this.hasAddedAudioEventListener = true;
audio.addEventListener('durationchange', _this.handleAudioDurationChange);
audio.addEventListener('abort', _this.handleAudioDurationChange);
}
});
var _audio = props.audio,
_timeFormat = props.timeFormat,
_defaultDuration = props.defaultDuration;
_this.state = {
duration: _audio ? getDisplayTimeBySeconds(_audio.duration, _audio.duration, _timeFormat) : _defaultDuration
};
return _this;
}
var _proto = Duration.prototype;
_proto.componentDidMount = function componentDidMount() {
this.addAudioEventListeners();
};
_proto.componentDidUpdate = function componentDidUpdate() {
this.addAudioEventListeners();
};
_proto.componentWillUnmount = function componentWillUnmount() {
if (this.audio && this.hasAddedAudioEventListener) {
this.audio.removeEventListener('durationchange', this.handleAudioDurationChange);
this.audio.removeEventListener('abort', this.handleAudioDurationChange);
}
};
_proto.render = function render() {
return this.state.duration;
};
return Duration;
}(PureComponent);
export default Duration;