matrix-react-sdk
Version:
SDK for matrix.org using React
63 lines (50 loc) • 6.94 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 _VoiceRecording = require("../../../voice/VoiceRecording");
var _replaceableComponent = require("../../../utils/replaceableComponent");
var _arrays = require("../../../utils/arrays");
var _numbers = require("../../../utils/numbers");
var _Waveform = _interopRequireDefault(require("./Waveform"));
var _dec, _class, _temp;
let LiveRecordingWaveform = (
/**
* A waveform which shows the waveform of a live recording
*/
_dec = (0, _replaceableComponent.replaceableComponent)("views.voice_messages.LiveRecordingWaveform"), _dec(_class = (_temp = class LiveRecordingWaveform extends _react.default.PureComponent
/*:: <IProps, IState>*/
{
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "onRecordingUpdate", (update
/*: IRecordingUpdate*/
) => {
// The waveform and the downsample target are pretty close, so we should be fine to
// do this, despite the docs on arrayFastResample.
const bars = (0, _arrays.arrayFastResample)(Array.from(update.waveform), _VoiceRecording.RECORDING_PLAYBACK_SAMPLES);
this.setState({
// The incoming data is between zero and one, but typically even screaming into a
// microphone won't send you over 0.6, so we artificially adjust the gain for the
// waveform. This results in a slightly more cinematic/animated waveform for the
// user.
heights: bars.map(b => (0, _numbers.percentageOf)(b, 0, 0.50))
});
});
this.state = {
heights: (0, _arrays.arraySeed)(0, _VoiceRecording.RECORDING_PLAYBACK_SAMPLES)
};
this.props.recorder.liveData.onUpdate(this.onRecordingUpdate);
}
render() {
return /*#__PURE__*/_react.default.createElement(_Waveform.default, {
relHeights: this.state.heights
});
}
}, _temp)) || _class);
exports.default = LiveRecordingWaveform;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL3ZvaWNlX21lc3NhZ2VzL0xpdmVSZWNvcmRpbmdXYXZlZm9ybS50c3giXSwibmFtZXMiOlsiTGl2ZVJlY29yZGluZ1dhdmVmb3JtIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInVwZGF0ZSIsImJhcnMiLCJBcnJheSIsImZyb20iLCJ3YXZlZm9ybSIsIlJFQ09SRElOR19QTEFZQkFDS19TQU1QTEVTIiwic2V0U3RhdGUiLCJoZWlnaHRzIiwibWFwIiwiYiIsInN0YXRlIiwicmVjb3JkZXIiLCJsaXZlRGF0YSIsIm9uVXBkYXRlIiwib25SZWNvcmRpbmdVcGRhdGUiLCJyZW5kZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBZ0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0lBY3FCQSxxQjtBQUpyQjtBQUNBO0FBQ0E7T0FDQyxnREFBcUIsNENBQXJCLEMseUJBQUQsTUFDcUJBLHFCQURyQixTQUNtREMsZUFBTUM7QUFEekQ7QUFDdUY7QUFDNUVDLEVBQUFBLFdBQVAsQ0FBbUJDLEtBQW5CLEVBQTBCO0FBQ3RCLFVBQU1BLEtBQU47QUFEc0IsNkRBT0UsQ0FBQ0M7QUFBRDtBQUFBLFNBQThCO0FBQ3REO0FBQ0E7QUFDQSxZQUFNQyxJQUFJLEdBQUcsK0JBQWtCQyxLQUFLLENBQUNDLElBQU4sQ0FBV0gsTUFBTSxDQUFDSSxRQUFsQixDQUFsQixFQUErQ0MsMENBQS9DLENBQWI7QUFDQSxXQUFLQyxRQUFMLENBQWM7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBQyxRQUFBQSxPQUFPLEVBQUVOLElBQUksQ0FBQ08sR0FBTCxDQUFTQyxDQUFDLElBQUksMkJBQWFBLENBQWIsRUFBZ0IsQ0FBaEIsRUFBbUIsSUFBbkIsQ0FBZDtBQUxDLE9BQWQ7QUFPSCxLQWxCeUI7QUFHdEIsU0FBS0MsS0FBTCxHQUFhO0FBQUNILE1BQUFBLE9BQU8sRUFBRSx1QkFBVSxDQUFWLEVBQWFGLDBDQUFiO0FBQVYsS0FBYjtBQUNBLFNBQUtOLEtBQUwsQ0FBV1ksUUFBWCxDQUFvQkMsUUFBcEIsQ0FBNkJDLFFBQTdCLENBQXNDLEtBQUtDLGlCQUEzQztBQUNIOztBQWVNQyxFQUFBQSxNQUFQLEdBQWdCO0FBQ1osd0JBQU8sNkJBQUMsaUJBQUQ7QUFBVSxNQUFBLFVBQVUsRUFBRSxLQUFLTCxLQUFMLENBQVdIO0FBQWpDLE1BQVA7QUFDSDs7QUF2QmtGLEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge0lSZWNvcmRpbmdVcGRhdGUsIFJFQ09SRElOR19QTEFZQkFDS19TQU1QTEVTLCBWb2ljZVJlY29yZGluZ30gZnJvbSBcIi4uLy4uLy4uL3ZvaWNlL1ZvaWNlUmVjb3JkaW5nXCI7XG5pbXBvcnQge3JlcGxhY2VhYmxlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvcmVwbGFjZWFibGVDb21wb25lbnRcIjtcbmltcG9ydCB7YXJyYXlGYXN0UmVzYW1wbGUsIGFycmF5U2VlZH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2FycmF5c1wiO1xuaW1wb3J0IHtwZXJjZW50YWdlT2Z9IGZyb20gXCIuLi8uLi8uLi91dGlscy9udW1iZXJzXCI7XG5pbXBvcnQgV2F2ZWZvcm0gZnJvbSBcIi4vV2F2ZWZvcm1cIjtcblxuaW50ZXJmYWNlIElQcm9wcyB7XG4gICAgcmVjb3JkZXI6IFZvaWNlUmVjb3JkaW5nO1xufVxuXG5pbnRlcmZhY2UgSVN0YXRlIHtcbiAgICBoZWlnaHRzOiBudW1iZXJbXTtcbn1cblxuLyoqXG4gKiBBIHdhdmVmb3JtIHdoaWNoIHNob3dzIHRoZSB3YXZlZm9ybSBvZiBhIGxpdmUgcmVjb3JkaW5nXG4gKi9cbkByZXBsYWNlYWJsZUNvbXBvbmVudChcInZpZXdzLnZvaWNlX21lc3NhZ2VzLkxpdmVSZWNvcmRpbmdXYXZlZm9ybVwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGl2ZVJlY29yZGluZ1dhdmVmb3JtIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxJUHJvcHMsIElTdGF0ZT4ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtoZWlnaHRzOiBhcnJheVNlZWQoMCwgUkVDT1JESU5HX1BMQVlCQUNLX1NBTVBMRVMpfTtcbiAgICAgICAgdGhpcy5wcm9wcy5yZWNvcmRlci5saXZlRGF0YS5vblVwZGF0ZSh0aGlzLm9uUmVjb3JkaW5nVXBkYXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uUmVjb3JkaW5nVXBkYXRlID0gKHVwZGF0ZTogSVJlY29yZGluZ1VwZGF0ZSkgPT4ge1xuICAgICAgICAvLyBUaGUgd2F2ZWZvcm0gYW5kIHRoZSBkb3duc2FtcGxlIHRhcmdldCBhcmUgcHJldHR5IGNsb3NlLCBzbyB3ZSBzaG91bGQgYmUgZmluZSB0b1xuICAgICAgICAvLyBkbyB0aGlzLCBkZXNwaXRlIHRoZSBkb2NzIG9uIGFycmF5RmFzdFJlc2FtcGxlLlxuICAgICAgICBjb25zdCBiYXJzID0gYXJyYXlGYXN0UmVzYW1wbGUoQXJyYXkuZnJvbSh1cGRhdGUud2F2ZWZvcm0pLCBSRUNPUkRJTkdfUExBWUJBQ0tfU0FNUExFUyk7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLy8gVGhlIGluY29taW5nIGRhdGEgaXMgYmV0d2VlbiB6ZXJvIGFuZCBvbmUsIGJ1dCB0eXBpY2FsbHkgZXZlbiBzY3JlYW1pbmcgaW50byBhXG4gICAgICAgICAgICAvLyBtaWNyb3Bob25lIHdvbid0IHNlbmQgeW91IG92ZXIgMC42LCBzbyB3ZSBhcnRpZmljaWFsbHkgYWRqdXN0IHRoZSBnYWluIGZvciB0aGVcbiAgICAgICAgICAgIC8vIHdhdmVmb3JtLiBUaGlzIHJlc3VsdHMgaW4gYSBzbGlnaHRseSBtb3JlIGNpbmVtYXRpYy9hbmltYXRlZCB3YXZlZm9ybSBmb3IgdGhlXG4gICAgICAgICAgICAvLyB1c2VyLlxuICAgICAgICAgICAgaGVpZ2h0czogYmFycy5tYXAoYiA9PiBwZXJjZW50YWdlT2YoYiwgMCwgMC41MCkpLFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHVibGljIHJlbmRlcigpIHtcbiAgICAgICAgcmV0dXJuIDxXYXZlZm9ybSByZWxIZWlnaHRzPXt0aGlzLnN0YXRlLmhlaWdodHN9IC8+O1xuICAgIH1cbn1cbiJdfQ==