waveform-playlist-nartj
Version:
Multiple track web audio editor and player with waveform preview
52 lines (40 loc) • 1.72 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _conversions = require("../utils/conversions");
/*
* virtual-dom hook for scrolling the track container.
*/
var _default = /*#__PURE__*/function () {
function _default(playlist) {
(0, _classCallCheck2["default"])(this, _default);
this.playlist = playlist;
}
(0, _createClass2["default"])(_default, [{
key: "hook",
value: function hook(node) {
var playlist = this.playlist;
if (!playlist.isScrolling) {
var el = node;
if (playlist.isAutomaticScroll && node.querySelector('.cursor')) {
var rect = node.getBoundingClientRect();
var cursorRect = node.querySelector('.cursor').getBoundingClientRect();
if (cursorRect.right > rect.right || cursorRect.right < 0) {
var controlWidth = playlist.controls.show ? playlist.controls.width : 0;
var width = (0, _conversions.pixelsToSeconds)(rect.right - rect.left, playlist.samplesPerPixel, playlist.sampleRate);
playlist.scrollLeft = Math.min(playlist.playbackSeconds, playlist.duration - (width - controlWidth));
}
}
var left = (0, _conversions.secondsToPixels)(playlist.scrollLeft, playlist.samplesPerPixel, playlist.sampleRate);
el.scrollLeft = left;
}
}
}]);
return _default;
}();
exports["default"] = _default;