UNPKG

waveform-playlist-nartj

Version:

Multiple track web audio editor and player with waveform preview

105 lines (90 loc) 3.44 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.init = init; exports["default"] = _default; var _lodash = _interopRequireDefault(require("lodash.assign")); var _createElement = _interopRequireDefault(require("virtual-dom/create-element")); var _eventEmitter = _interopRequireDefault(require("event-emitter")); var _Playlist = _interopRequireDefault(require("./Playlist")); require("regenerator-runtime"); require("regenerator-runtime/runtime.js"); function init() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var ee = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _eventEmitter["default"])(); if (options.container === undefined) { throw new Error('DOM element container must be given.'); } window.OfflineAudioContext = window.OfflineAudioContext || window.webkitOfflineAudioContext; window.AudioContext = window.AudioContext || window.webkitAudioContext; var audioContext = new window.AudioContext(); var defaults = { ac: audioContext, sampleRate: audioContext.sampleRate, samplesPerPixel: 4096, mono: true, fadeType: 'logarithmic', exclSolo: false, timescale: false, controls: { show: false, width: 150 }, colors: { waveOutlineColor: 'white', timeColor: 'grey', fadeColor: 'black' }, seekStyle: 'line', waveHeight: 128, state: 'cursor', zoomLevels: [512, 1024, 2048, 4096], annotationList: { annotations: [], controls: [], editable: false, linkEndpoints: false, isContinuousPlay: false }, isAutomaticScroll: false }; var config = (0, _lodash["default"])(defaults, options); var zoomIndex = config.zoomLevels.indexOf(config.samplesPerPixel); if (zoomIndex === -1) { throw new Error('initial samplesPerPixel must be included in array zoomLevels'); } var playlist = new _Playlist["default"](); playlist.setSampleRate(config.sampleRate); playlist.setSamplesPerPixel(config.samplesPerPixel); playlist.setAudioContext(config.ac); playlist.setEventEmitter(ee); playlist.setUpEventEmitter(); playlist.setTimeSelection(0, 0); playlist.setState(config.state); playlist.setControlOptions(config.controls); playlist.setWaveHeight(config.waveHeight); playlist.setColors(config.colors); playlist.setZoomLevels(config.zoomLevels); playlist.setZoomIndex(zoomIndex); playlist.setMono(config.mono); playlist.setExclSolo(config.exclSolo); playlist.setShowTimeScale(config.timescale); playlist.setSeekStyle(config.seekStyle); playlist.setAnnotations(config.annotationList); playlist.isAutomaticScroll = config.isAutomaticScroll; playlist.isContinuousPlay = config.isContinuousPlay; playlist.linkedEndpoints = config.linkedEndpoints; // take care of initial virtual dom rendering. var tree = playlist.render(); var rootNode = (0, _createElement["default"])(tree); config.container.appendChild(rootNode); playlist.tree = tree; playlist.rootNode = rootNode; return playlist; } function _default() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var ee = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _eventEmitter["default"])(); return init(options, ee); }