react-audio-visualizers
Version:
<h1 align="center">React Audio Visualizers</h1>
50 lines (49 loc) • 3.1 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.WaveformVisualizer = exports.WaveformVisualizerTheme = exports.DEFAULT_REFRESH_RATE = exports.MIN_BAR_HEIGHT = exports.REFERENCE_SPECTRUM_WIDTH = exports.MAX_DECIBEL = exports.MIN_DECIBEL = exports.OFF_SCREEN_OFFSET = exports.DEFAULT_BAR_MARGIN = exports.DEFAULT_BAR_WIDTH = exports.DEFAULT_MARGIN_HEIGHT_TOP = exports.DEFAULT_MARGIN_HEIGHT_BOTTOM = exports.DEFAULT_COLOR = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_audio_visualizers_core_1 = require("react-audio-visualizers-core");
var LineWaveformVisualizer_1 = require("./LineWaveformVisualizer");
var SquareBarsWaveformVisualizer_1 = require("./SquareBarsWaveformVisualizer");
exports.DEFAULT_COLOR = 'white';
exports.DEFAULT_MARGIN_HEIGHT_BOTTOM = 2;
exports.DEFAULT_MARGIN_HEIGHT_TOP = 10;
exports.DEFAULT_BAR_WIDTH = 10;
exports.DEFAULT_BAR_MARGIN = 2.5;
exports.OFF_SCREEN_OFFSET = 20;
exports.MIN_DECIBEL = 128;
exports.MAX_DECIBEL = 255;
// in world units
exports.REFERENCE_SPECTRUM_WIDTH = 1280;
exports.MIN_BAR_HEIGHT = 10;
// time in seconds to draw
exports.DEFAULT_REFRESH_RATE = 0.025;
var WaveformVisualizerTheme;
(function (WaveformVisualizerTheme) {
WaveformVisualizerTheme["squaredBars"] = "SQUARED_BARS";
WaveformVisualizerTheme["line"] = "LINE";
})(WaveformVisualizerTheme = exports.WaveformVisualizerTheme || (exports.WaveformVisualizerTheme = {}));
var WaveformVisualizerThemeComponent = function (_a) {
var theme = _a.theme, _b = _a.barWidth, barWidth = _b === void 0 ? exports.DEFAULT_BAR_WIDTH : _b, _c = _a.barMargin, barMargin = _c === void 0 ? exports.DEFAULT_BAR_MARGIN : _c, _d = _a.refreshRate, refreshRate = _d === void 0 ? exports.DEFAULT_REFRESH_RATE : _d, _e = _a.colors, colors = _e === void 0 ? [exports.DEFAULT_COLOR] : _e;
switch (theme) {
case WaveformVisualizerTheme.squaredBars:
return (0, jsx_runtime_1.jsx)(SquareBarsWaveformVisualizer_1.SquaredBarsWaveformVisualizer, { colors: colors, barWidth: barWidth, barMargin: barMargin, refreshRate: refreshRate }, void 0);
case WaveformVisualizerTheme.line:
return (0, jsx_runtime_1.jsx)(LineWaveformVisualizer_1.LineWaveformVisualizer, { color: colors[0], pointSpacing: barWidth, refreshRate: refreshRate }, void 0);
default:
return null;
}
};
var WaveformVisualizer = function (props) { return ((0, jsx_runtime_1.jsx)(react_audio_visualizers_core_1.AudioVisualizer, __assign({ canvasProps: { orthographic: true } }, props, { children: (0, jsx_runtime_1.jsx)(WaveformVisualizerThemeComponent, __assign({}, props), void 0) }), void 0)); };
exports.WaveformVisualizer = WaveformVisualizer;