UNPKG

matrix-react-sdk

Version:
59 lines (56 loc) 7.55 kB
"use strict"; 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