UNPKG

waveform-playlist-nartj

Version:

Multiple track web audio editor and player with waveform preview

84 lines (69 loc) 2.58 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.STATE_FINISHED = exports.STATE_DECODING = exports.STATE_LOADING = exports.STATE_UNINITIALIZED = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _eventEmitter = _interopRequireDefault(require("event-emitter")); var STATE_UNINITIALIZED = 0; exports.STATE_UNINITIALIZED = STATE_UNINITIALIZED; var STATE_LOADING = 1; exports.STATE_LOADING = STATE_LOADING; var STATE_DECODING = 2; exports.STATE_DECODING = STATE_DECODING; var STATE_FINISHED = 3; exports.STATE_FINISHED = STATE_FINISHED; var _default = /*#__PURE__*/function () { function _default(src, audioContext) { var ee = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : (0, _eventEmitter["default"])(); (0, _classCallCheck2["default"])(this, _default); this.src = src; this.ac = audioContext; this.audioRequestState = STATE_UNINITIALIZED; this.ee = ee; } (0, _createClass2["default"])(_default, [{ key: "setStateChange", value: function setStateChange(state) { this.audioRequestState = state; this.ee.emit('audiorequeststatechange', this.audioRequestState, this.src); } }, { key: "fileProgress", value: function fileProgress(e) { var percentComplete = 0; if (this.audioRequestState === STATE_UNINITIALIZED) { this.setStateChange(STATE_LOADING); } if (e.lengthComputable) { percentComplete = e.loaded / e.total * 100; } this.ee.emit('loadprogress', percentComplete, this.src); } }, { key: "fileLoad", value: function fileLoad(e) { var _this = this; var audioData = e.target.response || e.target.result; this.setStateChange(STATE_DECODING); return new Promise(function (resolve, reject) { _this.ac.decodeAudioData(audioData, function (audioBuffer) { _this.audioBuffer = audioBuffer; _this.setStateChange(STATE_FINISHED); resolve(audioBuffer); }, function (err) { if (err === null) { // Safari issues with null error reject(Error('MediaDecodeAudioDataUnknownContentType')); } else { reject(err); } }); }); } }]); return _default; }(); exports["default"] = _default;