matrix-react-sdk
Version:
SDK for matrix.org using React
59 lines (56 loc) • 7.55 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _arrays = require("../../../utils/arrays");
var _Waveform = _interopRequireDefault(require("./Waveform"));
var _numbers = require("../../../utils/numbers");
var _consts = require("../../../audio/consts");
/*
Copyright 2024 New Vector Ltd.
Copyright 2021 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
/**
* A waveform which shows the waveform of a previously recorded recording
*/
class PlaybackWaveform extends _react.default.PureComponent {
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "onWaveformUpdate", waveform => {
this.setState({
heights: this.toHeights(waveform)
});
});
(0, _defineProperty2.default)(this, "onTimeUpdate", time => {
// Track percentages to a general precision to avoid over-waking the component.
const progress = Number((0, _numbers.percentageOf)(time[0], 0, time[1]).toFixed(3));
this.setState({
progress
});
});
this.state = {
heights: this.toHeights(this.props.playback.waveform),
progress: 0 // default no progress
};
this.props.playback.waveformData.onUpdate(this.onWaveformUpdate);
this.props.playback.clockInfo.liveData.onUpdate(this.onTimeUpdate);
}
toHeights(waveform) {
const seed = (0, _arrays.arraySeed)(0, _consts.PLAYBACK_WAVEFORM_SAMPLES);
return (0, _arrays.arrayTrimFill)(waveform, _consts.PLAYBACK_WAVEFORM_SAMPLES, seed);
}
render() {
return /*#__PURE__*/_react.default.createElement(_Waveform.default, {
relHeights: this.state.heights,
progress: this.state.progress
});
}
}
exports.default = PlaybackWaveform;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9hcnJheXMiLCJfV2F2ZWZvcm0iLCJfbnVtYmVycyIsIl9jb25zdHMiLCJQbGF5YmFja1dhdmVmb3JtIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkZWZhdWx0Iiwid2F2ZWZvcm0iLCJzZXRTdGF0ZSIsImhlaWdodHMiLCJ0b0hlaWdodHMiLCJ0aW1lIiwicHJvZ3Jlc3MiLCJOdW1iZXIiLCJwZXJjZW50YWdlT2YiLCJ0b0ZpeGVkIiwic3RhdGUiLCJwbGF5YmFjayIsIndhdmVmb3JtRGF0YSIsIm9uVXBkYXRlIiwib25XYXZlZm9ybVVwZGF0ZSIsImNsb2NrSW5mbyIsImxpdmVEYXRhIiwib25UaW1lVXBkYXRlIiwic2VlZCIsImFycmF5U2VlZCIsIlBMQVlCQUNLX1dBVkVGT1JNX1NBTVBMRVMiLCJhcnJheVRyaW1GaWxsIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsInJlbEhlaWdodHMiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3MvYXVkaW9fbWVzc2FnZXMvUGxheWJhY2tXYXZlZm9ybS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBhcnJheVNlZWQsIGFycmF5VHJpbUZpbGwgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvYXJyYXlzXCI7XG5pbXBvcnQgV2F2ZWZvcm0gZnJvbSBcIi4vV2F2ZWZvcm1cIjtcbmltcG9ydCB7IFBsYXliYWNrIH0gZnJvbSBcIi4uLy4uLy4uL2F1ZGlvL1BsYXliYWNrXCI7XG5pbXBvcnQgeyBwZXJjZW50YWdlT2YgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvbnVtYmVyc1wiO1xuaW1wb3J0IHsgUExBWUJBQ0tfV0FWRUZPUk1fU0FNUExFUyB9IGZyb20gXCIuLi8uLi8uLi9hdWRpby9jb25zdHNcIjtcblxuaW50ZXJmYWNlIElQcm9wcyB7XG4gICAgcGxheWJhY2s6IFBsYXliYWNrO1xufVxuXG5pbnRlcmZhY2UgSVN0YXRlIHtcbiAgICBoZWlnaHRzOiBudW1iZXJbXTtcbiAgICBwcm9ncmVzczogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgd2F2ZWZvcm0gd2hpY2ggc2hvd3MgdGhlIHdhdmVmb3JtIG9mIGEgcHJldmlvdXNseSByZWNvcmRlZCByZWNvcmRpbmdcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGxheWJhY2tXYXZlZm9ybSBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJvcHM6IElQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGhlaWdodHM6IHRoaXMudG9IZWlnaHRzKHRoaXMucHJvcHMucGxheWJhY2sud2F2ZWZvcm0pLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6IDAsIC8vIGRlZmF1bHQgbm8gcHJvZ3Jlc3NcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnByb3BzLnBsYXliYWNrLndhdmVmb3JtRGF0YS5vblVwZGF0ZSh0aGlzLm9uV2F2ZWZvcm1VcGRhdGUpO1xuICAgICAgICB0aGlzLnByb3BzLnBsYXliYWNrLmNsb2NrSW5mby5saXZlRGF0YS5vblVwZGF0ZSh0aGlzLm9uVGltZVVwZGF0ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b0hlaWdodHMod2F2ZWZvcm06IG51bWJlcltdKTogbnVtYmVyW10ge1xuICAgICAgICBjb25zdCBzZWVkID0gYXJyYXlTZWVkKDAsIFBMQVlCQUNLX1dBVkVGT1JNX1NBTVBMRVMpO1xuICAgICAgICByZXR1cm4gYXJyYXlUcmltRmlsbCh3YXZlZm9ybSwgUExBWUJBQ0tfV0FWRUZPUk1fU0FNUExFUywgc2VlZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbldhdmVmb3JtVXBkYXRlID0gKHdhdmVmb3JtOiBudW1iZXJbXSk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgaGVpZ2h0czogdGhpcy50b0hlaWdodHMod2F2ZWZvcm0pIH0pO1xuICAgIH07XG5cbiAgICBwcml2YXRlIG9uVGltZVVwZGF0ZSA9ICh0aW1lOiBudW1iZXJbXSk6IHZvaWQgPT4ge1xuICAgICAgICAvLyBUcmFjayBwZXJjZW50YWdlcyB0byBhIGdlbmVyYWwgcHJlY2lzaW9uIHRvIGF2b2lkIG92ZXItd2FraW5nIHRoZSBjb21wb25lbnQuXG4gICAgICAgIGNvbnN0IHByb2dyZXNzID0gTnVtYmVyKHBlcmNlbnRhZ2VPZih0aW1lWzBdLCAwLCB0aW1lWzFdKS50b0ZpeGVkKDMpKTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHByb2dyZXNzIH0pO1xuICAgIH07XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIHJldHVybiA8V2F2ZWZvcm0gcmVsSGVpZ2h0cz17dGhpcy5zdGF0ZS5oZWlnaHRzfSBwcm9ncmVzcz17dGhpcy5zdGF0ZS5wcm9ncmVzc30gLz47XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFNBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQWRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQW1CQTtBQUNBO0FBQ0E7QUFDZSxNQUFNSyxnQkFBZ0IsU0FBU0MsY0FBSyxDQUFDQyxhQUFhLENBQWlCO0VBQ3ZFQyxXQUFXQSxDQUFDQyxLQUFhLEVBQUU7SUFDOUIsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFBQyxJQUFBQyxnQkFBQSxDQUFBQyxPQUFBLDRCQWdCV0MsUUFBa0IsSUFBVztNQUNyRCxJQUFJLENBQUNDLFFBQVEsQ0FBQztRQUFFQyxPQUFPLEVBQUUsSUFBSSxDQUFDQyxTQUFTLENBQUNILFFBQVE7TUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUFBLElBQUFGLGdCQUFBLENBQUFDLE9BQUEsd0JBRXVCSyxJQUFjLElBQVc7TUFDN0M7TUFDQSxNQUFNQyxRQUFRLEdBQUdDLE1BQU0sQ0FBQyxJQUFBQyxxQkFBWSxFQUFDSCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFQSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0ksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ3JFLElBQUksQ0FBQ1AsUUFBUSxDQUFDO1FBQUVJO01BQVMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUF0QkcsSUFBSSxDQUFDSSxLQUFLLEdBQUc7TUFDVFAsT0FBTyxFQUFFLElBQUksQ0FBQ0MsU0FBUyxDQUFDLElBQUksQ0FBQ04sS0FBSyxDQUFDYSxRQUFRLENBQUNWLFFBQVEsQ0FBQztNQUNyREssUUFBUSxFQUFFLENBQUMsQ0FBRTtJQUNqQixDQUFDO0lBRUQsSUFBSSxDQUFDUixLQUFLLENBQUNhLFFBQVEsQ0FBQ0MsWUFBWSxDQUFDQyxRQUFRLENBQUMsSUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQztJQUNoRSxJQUFJLENBQUNoQixLQUFLLENBQUNhLFFBQVEsQ0FBQ0ksU0FBUyxDQUFDQyxRQUFRLENBQUNILFFBQVEsQ0FBQyxJQUFJLENBQUNJLFlBQVksQ0FBQztFQUN0RTtFQUVRYixTQUFTQSxDQUFDSCxRQUFrQixFQUFZO0lBQzVDLE1BQU1pQixJQUFJLEdBQUcsSUFBQUMsaUJBQVMsRUFBQyxDQUFDLEVBQUVDLGlDQUF5QixDQUFDO0lBQ3BELE9BQU8sSUFBQUMscUJBQWEsRUFBQ3BCLFFBQVEsRUFBRW1CLGlDQUF5QixFQUFFRixJQUFJLENBQUM7RUFDbkU7RUFZT0ksTUFBTUEsQ0FBQSxFQUFvQjtJQUM3QixvQkFBT25DLE1BQUEsQ0FBQWEsT0FBQSxDQUFBdUIsYUFBQSxDQUFDaEMsU0FBQSxDQUFBUyxPQUFRO01BQUN3QixVQUFVLEVBQUUsSUFBSSxDQUFDZCxLQUFLLENBQUNQLE9BQVE7TUFBQ0csUUFBUSxFQUFFLElBQUksQ0FBQ0ksS0FBSyxDQUFDSjtJQUFTLENBQUUsQ0FBQztFQUN0RjtBQUNKO0FBQUNtQixPQUFBLENBQUF6QixPQUFBLEdBQUFOLGdCQUFBIiwiaWdub3JlTGlzdCI6W119