{"version":3,"file":"js/vendors~application-18f7efc92afe37b4282c.js","mappings":"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","sources":["webpack://marmosetmusic/./node_modules/backbone/backbone.js","webpack://marmosetmusic/./node_modules/wavesurfer.js/dist/wavesurfer.js","webpack://marmosetmusic/./node_modules/core-js/internals/array-includes.js","webpack://marmosetmusic/./node_modules/core-js/internals/array-slice.js","webpack://marmosetmusic/./node_modules/core-js/internals/classof-raw.js","webpack://marmosetmusic/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://marmosetmusic/./node_modules/core-js/internals/define-built-in.js","webpack://marmosetmusic/./node_modules/core-js/internals/engine-is-bun.js","webpack://marmosetmusic/./node_modules/core-js/internals/engine-is-ios.js","webpack://marmosetmusic/./node_modules/core-js/internals/engine-is-node.js","webpack://marmosetmusic/./node_modules/core-js/internals/enum-bug-keys.js","webpack://marmosetmusic/./node_modules/core-js/internals/export.js","webpack://marmosetmusic/./node_modules/core-js/internals/function-apply.js","webpack://marmosetmusic/./node_modules/core-js/internals/function-bind-context.js","webpack://marmosetmusic/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://marmosetmusic/./node_modules/core-js/internals/html.js","webpack://marmosetmusic/./node_modules/core-js/internals/indexed-object.js","webpack://marmosetmusic/./node_modules/core-js/internals/is-forced.js","webpack://marmosetmusic/./node_modules/core-js/internals/length-of-array-like.js","webpack://marmosetmusic/./node_modules/core-js/internals/math-trunc.js","webpack://marmosetmusic/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://marmosetmusic/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://marmosetmusic/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://marmosetmusic/./node_modules/core-js/internals/object-keys-internal.js","webpack://marmosetmusic/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://marmosetmusic/./node_modules/core-js/internals/own-keys.js","webpack://marmosetmusic/./node_modules/core-js/internals/schedulers-fix.js","webpack://marmosetmusic/./node_modules/core-js/internals/task.js","webpack://marmosetmusic/./node_modules/core-js/internals/to-absolute-index.js","webpack://marmosetmusic/./node_modules/core-js/internals/to-indexed-object.js","webpack://marmosetmusic/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://marmosetmusic/./node_modules/core-js/internals/to-length.js","webpack://marmosetmusic/./node_modules/core-js/internals/validate-arguments-length.js","webpack://marmosetmusic/./node_modules/core-js/modules/web.clear-immediate.js","webpack://marmosetmusic/./node_modules/core-js/modules/web.immediate.js","webpack://marmosetmusic/./node_modules/core-js/modules/web.set-immediate.js"],"sourcesContent":["// Backbone.js 1.5.0\n\n// (c) 2010-2022 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global;\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, root.jQuery || root.Zepto || root.ender || root.$);\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.5.0';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // A private global variable to share between listeners and listenees.\n var _listening;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening;\n // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n _listening.interop = false;\n }\n\n return this;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n }\n\n // Bind callbacks on obj.\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n\n if (error) throw error;\n // If the target obj is not Backbone.Events, track events manually.\n if (listening.interop) listening.on(name, callback);\n\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n var tryCatchOn = function(obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var context = options.context, listeners = options.listeners;\n var i = 0, names;\n\n // Delete all event listeners and \"drop\" events.\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n return;\n }\n\n names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Find any remaining events.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n }\n\n // Replace events if there are any remaining. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n var Listening = function(listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on;\n\n // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n Listening.prototype.off = function(name, callback) {\n var cleanup;\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n if (cleanup) this.cleanup();\n };\n\n // Cleans up memory bindings between the listener and the listenee.\n Listening.prototype.cleanup = function() {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n\n // Just _.defaults would work fine, but the additional _.extends\n // is in there for historical reasons. See #3843.\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) {\n var prevId = this.id;\n this.id = this.get(this.idAttribute);\n this.trigger('changeId', this, prevId, options);\n }\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n return hasChanged ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj, obj.idAttribute)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) {\n m.off('error', this._forwardPristineError, this);\n collection.add(m, callbackOpts);\n }\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n // In case of wait:true, our collection is not listening to any\n // of the model's events yet, so it will not forward the error\n // event. In this special case, we need to listen for it\n // separately and handle the event just once.\n // (The reason we don't need to do this for the sync event is\n // in the success handler above: we add the model first, which\n // causes the collection to listen, and then invoke the callback\n // that triggers the event.)\n if (wait) {\n model.once('error', this._forwardPristineError, this);\n }\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs, idAttribute) {\n return attrs[idAttribute || this.model.prototype.idAttribute || 'id'];\n },\n\n // Get an iterator of all models in this collection.\n values: function() {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n\n // Get an iterator of all model IDs in this collection.\n keys: function() {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function() {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n\n var model;\n if (this.model.prototype) {\n model = new this.model(attrs, options);\n } else {\n // ES class methods didn't have prototype\n model = this.model(attrs, options);\n }\n\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n if (models.length > 0 && !options.silent) delete options.index;\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'changeId') {\n var prevId = this.modelId(model.previousAttributes(), model.idAttribute);\n var id = this.modelId(model.attributes, model.idAttribute);\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n this.trigger.apply(this, arguments);\n },\n\n // Internal callback method used in `create`. It serves as a\n // stand-in for the `_onModelEvent` method, which is not yet bound\n // during the `wait` period of the `create` call. We still want to\n // forward any `'error'` event at the end of the `wait` period,\n // hence a customized callback.\n _forwardPristineError: function(model, collection, options) {\n // Prevent double forward if the model was already in the\n // collection before the call to `create`.\n if (this.has(model)) return;\n this._onModelEvent('error', model, collection, options);\n }\n });\n\n // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n /* global Symbol */\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n }\n\n // CollectionIterator\n // ------------------\n\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n var CollectionIterator = function(collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n };\n\n // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3;\n\n // All Iterators should themselves be Iterable.\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function() {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function() {\n if (this._collection) {\n\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n this._index++;\n\n // Construct a value depending on what kind of values should be iterated.\n var value;\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes, model.idAttribute);\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else { // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n return {value: value, done: false};\n }\n\n // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n this._collection = void 0;\n }\n\n return {value: void 0, done: true};\n };\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(base, length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return base[method](this[attribute]);\n };\n case 2: return function(value) {\n return base[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function(Class, base, methods, attribute) {\n _.each(methods, function(length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([\n [Collection, collectionMethods, 'models'],\n [Model, modelMethods, 'attributes']\n ], function(config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function(obj) {\n var mappings = _.reduce(_.functions(obj), function(memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._trailingSlash = this.options.trailingSlash;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) return false;\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return false;\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n });\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Strip trailing slash on the root unless _trailingSlash is true\n var rootPath = this.root;\n if (!this._trailingSlash && (fragment === '' || fragment.charAt(0) === '?')) {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the fragment of the query and hash for matching.\n fragment = fragment.replace(pathStripper, '');\n\n // Decode for matching.\n var decodedFragment = this.decodeFragment(fragment);\n\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n return Backbone;\n});\n","/*!\n * wavesurfer.js 6.6.4 (2023-06-10)\n * https://wavesurfer-js.org\n * @license BSD-3-Clause\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"WaveSurfer\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"WaveSurfer\"] = factory();\n\telse\n\t\troot[\"WaveSurfer\"] = factory();\n})(self, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./src/drawer.canvasentry.js\":\n/*!***********************************!*\\\n !*** ./src/drawer.canvasentry.js ***!\n \\***********************************/\n/***/ ((module, exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\nvar _style = _interopRequireDefault(__webpack_require__(/*! ./util/style */ \"./src/util/style.js\"));\nvar _getId = _interopRequireDefault(__webpack_require__(/*! ./util/get-id */ \"./src/util/get-id.js\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * The `CanvasEntry` class represents an element consisting of a wave `canvas`\n * and an (optional) progress wave `canvas`.\n *\n * The `MultiCanvas` renderer uses one or more `CanvasEntry` instances to\n * render a waveform, depending on the zoom level.\n */\nvar CanvasEntry = /*#__PURE__*/function () {\n function CanvasEntry() {\n _classCallCheck(this, CanvasEntry);\n /**\n * The wave node\n *\n * @type {HTMLCanvasElement}\n */\n this.wave = null;\n /**\n * The wave canvas rendering context\n *\n * @type {CanvasRenderingContext2D}\n */\n this.waveCtx = null;\n /**\n * The (optional) progress wave node\n *\n * @type {HTMLCanvasElement}\n */\n this.progress = null;\n /**\n * The (optional) progress wave canvas rendering context\n *\n * @type {CanvasRenderingContext2D}\n */\n this.progressCtx = null;\n /**\n * Start of the area the canvas should render, between 0 and 1\n *\n * @type {number}\n */\n this.start = 0;\n /**\n * End of the area the canvas should render, between 0 and 1\n *\n * @type {number}\n */\n this.end = 1;\n /**\n * Unique identifier for this entry\n *\n * @type {string}\n */\n this.id = (0, _getId.default)(typeof this.constructor.name !== 'undefined' ? this.constructor.name.toLowerCase() + '_' : 'canvasentry_');\n /**\n * Canvas 2d context attributes\n *\n * @type {object}\n */\n this.canvasContextAttributes = {};\n }\n\n /**\n * Store the wave canvas element and create the 2D rendering context\n *\n * @param {HTMLCanvasElement} element The wave `canvas` element.\n */\n _createClass(CanvasEntry, [{\n key: \"initWave\",\n value: function initWave(element) {\n this.wave = element;\n this.waveCtx = this.wave.getContext('2d', this.canvasContextAttributes);\n }\n\n /**\n * Store the progress wave canvas element and create the 2D rendering\n * context\n *\n * @param {HTMLCanvasElement} element The progress wave `canvas` element.\n */\n }, {\n key: \"initProgress\",\n value: function initProgress(element) {\n this.progress = element;\n this.progressCtx = this.progress.getContext('2d', this.canvasContextAttributes);\n }\n\n /**\n * Update the dimensions\n *\n * @param {number} elementWidth Width of the entry\n * @param {number} totalWidth Total width of the multi canvas renderer\n * @param {number} width The new width of the element\n * @param {number} height The new height of the element\n */\n }, {\n key: \"updateDimensions\",\n value: function updateDimensions(elementWidth, totalWidth, width, height) {\n // where the canvas starts and ends in the waveform, represented as a\n // decimal between 0 and 1\n this.start = this.wave.offsetLeft / totalWidth || 0;\n this.end = this.start + elementWidth / totalWidth;\n\n // set wave canvas dimensions\n this.wave.width = width;\n this.wave.height = height;\n var elementSize = {\n width: elementWidth + 'px'\n };\n (0, _style.default)(this.wave, elementSize);\n if (this.hasProgressCanvas) {\n // set progress canvas dimensions\n this.progress.width = width;\n this.progress.height = height;\n (0, _style.default)(this.progress, elementSize);\n }\n }\n\n /**\n * Clear the wave and progress rendering contexts\n */\n }, {\n key: \"clearWave\",\n value: function clearWave() {\n // wave\n this.waveCtx.clearRect(0, 0, this.waveCtx.canvas.width, this.waveCtx.canvas.height);\n\n // progress\n if (this.hasProgressCanvas) {\n this.progressCtx.clearRect(0, 0, this.progressCtx.canvas.width, this.progressCtx.canvas.height);\n }\n }\n\n /**\n * Set the fill styles for wave and progress\n * @param {string|string[]} waveColor Fill color for the wave canvas,\n * or an array of colors to apply as a gradient\n * @param {?string|string[]} progressColor Fill color for the progress canvas,\n * or an array of colors to apply as a gradient\n */\n }, {\n key: \"setFillStyles\",\n value: function setFillStyles(waveColor, progressColor) {\n this.waveCtx.fillStyle = this.getFillStyle(this.waveCtx, waveColor);\n if (this.hasProgressCanvas) {\n this.progressCtx.fillStyle = this.getFillStyle(this.progressCtx, progressColor);\n }\n }\n\n /**\n * Utility function to handle wave color arguments\n *\n * When the color argument type is a string or CanvasGradient instance,\n * it will be returned as is. Otherwise, it will be treated as an array,\n * and a new CanvasGradient will be returned\n *\n * @since 6.0.0\n * @param {CanvasRenderingContext2D} ctx Rendering context of target canvas\n * @param {string|string[]|CanvasGradient} color Either a single fill color\n * for the wave canvas, an existing CanvasGradient instance, or an array\n * of colors to apply as a gradient\n * @returns {string|CanvasGradient} Returns a string fillstyle value, or a\n * canvas gradient\n */\n }, {\n key: \"getFillStyle\",\n value: function getFillStyle(ctx, color) {\n if (typeof color == 'string' || color instanceof CanvasGradient) {\n return color;\n }\n var waveGradient = ctx.createLinearGradient(0, 0, 0, ctx.canvas.height);\n color.forEach(function (value, index) {\n return waveGradient.addColorStop(index / color.length, value);\n });\n return waveGradient;\n }\n\n /**\n * Set the canvas transforms for wave and progress\n *\n * @param {boolean} vertical Whether to render vertically\n */\n }, {\n key: \"applyCanvasTransforms\",\n value: function applyCanvasTransforms(vertical) {\n if (vertical) {\n // Reflect the waveform across the line y = -x\n this.waveCtx.setTransform(0, 1, 1, 0, 0, 0);\n if (this.hasProgressCanvas) {\n this.progressCtx.setTransform(0, 1, 1, 0, 0, 0);\n }\n }\n }\n\n /**\n * Draw a rectangle for wave and progress\n *\n * @param {number} x X start position\n * @param {number} y Y start position\n * @param {number} width Width of the rectangle\n * @param {number} height Height of the rectangle\n * @param {number} radius Radius of the rectangle\n */\n }, {\n key: \"fillRects\",\n value: function fillRects(x, y, width, height, radius) {\n this.fillRectToContext(this.waveCtx, x, y, width, height, radius);\n if (this.hasProgressCanvas) {\n this.fillRectToContext(this.progressCtx, x, y, width, height, radius);\n }\n }\n\n /**\n * Draw the actual rectangle on a `canvas` element\n *\n * @param {CanvasRenderingContext2D} ctx Rendering context of target canvas\n * @param {number} x X start position\n * @param {number} y Y start position\n * @param {number} width Width of the rectangle\n * @param {number} height Height of the rectangle\n * @param {number} radius Radius of the rectangle\n */\n }, {\n key: \"fillRectToContext\",\n value: function fillRectToContext(ctx, x, y, width, height, radius) {\n if (!ctx) {\n return;\n }\n if (radius) {\n this.drawRoundedRect(ctx, x, y, width, height, radius);\n } else {\n ctx.fillRect(x, y, width, height);\n }\n }\n\n /**\n * Draw a rounded rectangle on Canvas\n *\n * @param {CanvasRenderingContext2D} ctx Canvas context\n * @param {number} x X-position of the rectangle\n * @param {number} y Y-position of the rectangle\n * @param {number} width Width of the rectangle\n * @param {number} height Height of the rectangle\n * @param {number} radius Radius of the rectangle\n *\n * @return {void}\n * @example drawRoundedRect(ctx, 50, 50, 5, 10, 3)\n */\n }, {\n key: \"drawRoundedRect\",\n value: function drawRoundedRect(ctx, x, y, width, height, radius) {\n if (height === 0) {\n return;\n }\n // peaks are float values from -1 to 1. Use absolute height values in\n // order to correctly calculate rounded rectangle coordinates\n if (height < 0) {\n height *= -1;\n y -= height;\n }\n ctx.beginPath();\n ctx.moveTo(x + radius, y);\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n ctx.lineTo(x + width, y + height - radius);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n ctx.lineTo(x + radius, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n ctx.closePath();\n ctx.fill();\n }\n\n /**\n * Render the actual wave and progress lines\n *\n * @param {number[]} peaks Array with peaks data\n * @param {number} absmax Maximum peak value (absolute)\n * @param {number} halfH Half the height of the waveform\n * @param {number} offsetY Offset to the top\n * @param {number} start The x-offset of the beginning of the area that\n * should be rendered\n * @param {number} end The x-offset of the end of the area that\n * should be rendered\n */\n }, {\n key: \"drawLines\",\n value: function drawLines(peaks, absmax, halfH, offsetY, start, end) {\n this.drawLineToContext(this.waveCtx, peaks, absmax, halfH, offsetY, start, end);\n if (this.hasProgressCanvas) {\n this.drawLineToContext(this.progressCtx, peaks, absmax, halfH, offsetY, start, end);\n }\n }\n\n /**\n * Render the actual waveform line on a `canvas` element\n *\n * @param {CanvasRenderingContext2D} ctx Rendering context of target canvas\n * @param {number[]} peaks Array with peaks data\n * @param {number} absmax Maximum peak value (absolute)\n * @param {number} halfH Half the height of the waveform\n * @param {number} offsetY Offset to the top\n * @param {number} start The x-offset of the beginning of the area that\n * should be rendered\n * @param {number} end The x-offset of the end of the area that\n * should be rendered\n */\n }, {\n key: \"drawLineToContext\",\n value: function drawLineToContext(ctx, peaks, absmax, halfH, offsetY, start, end) {\n if (!ctx) {\n return;\n }\n var length = peaks.length / 2;\n var first = Math.round(length * this.start);\n\n // use one more peak value to make sure we join peaks at ends -- unless,\n // of course, this is the last canvas\n var last = Math.round(length * this.end) + 1;\n var canvasStart = first;\n var canvasEnd = last;\n var scale = this.wave.width / (canvasEnd - canvasStart - 1);\n\n // optimization\n var halfOffset = halfH + offsetY;\n var absmaxHalf = absmax / halfH;\n ctx.beginPath();\n ctx.moveTo((canvasStart - first) * scale, halfOffset);\n ctx.lineTo((canvasStart - first) * scale, halfOffset - Math.round((peaks[2 * canvasStart] || 0) / absmaxHalf));\n var i, peak, h;\n for (i = canvasStart; i < canvasEnd; i++) {\n peak = peaks[2 * i] || 0;\n h = Math.round(peak / absmaxHalf);\n ctx.lineTo((i - first) * scale + this.halfPixel, halfOffset - h);\n }\n\n // draw the bottom edge going backwards, to make a single\n // closed hull to fill\n var j = canvasEnd - 1;\n for (j; j >= canvasStart; j--) {\n peak = peaks[2 * j + 1] || 0;\n h = Math.round(peak / absmaxHalf);\n ctx.lineTo((j - first) * scale + this.halfPixel, halfOffset - h);\n }\n ctx.lineTo((canvasStart - first) * scale, halfOffset - Math.round((peaks[2 * canvasStart + 1] || 0) / absmaxHalf));\n ctx.closePath();\n ctx.fill();\n }\n\n /**\n * Destroys this entry\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.waveCtx = null;\n this.wave = null;\n this.progressCtx = null;\n this.progress = null;\n }\n\n /**\n * Return image data of the wave `canvas` element\n *\n * When using a `type` of `'blob'`, this will return a `Promise` that\n * resolves with a `Blob` instance.\n *\n * @param {string} format='image/png' An optional value of a format type.\n * @param {number} quality=0.92 An optional value between 0 and 1.\n * @param {string} type='dataURL' Either 'dataURL' or 'blob'.\n * @return {string|Promise} When using the default `'dataURL'` `type` this\n * returns a data URL. When using the `'blob'` `type` this returns a\n * `Promise` that resolves with a `Blob` instance.\n */\n }, {\n key: \"getImage\",\n value: function getImage(format, quality, type) {\n var _this = this;\n if (type === 'blob') {\n return new Promise(function (resolve) {\n _this.wave.toBlob(resolve, format, quality);\n });\n } else if (type === 'dataURL') {\n return this.wave.toDataURL(format, quality);\n }\n }\n }]);\n return CanvasEntry;\n}();\nexports[\"default\"] = CanvasEntry;\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./src/drawer.js\":\n/*!***********************!*\\\n !*** ./src/drawer.js ***!\n \\***********************/\n/***/ ((module, exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\nvar util = _interopRequireWildcard(__webpack_require__(/*! ./util */ \"./src/util/index.js\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n/**\n * Parent class for renderers\n *\n * @extends {Observer}\n */\nvar Drawer = /*#__PURE__*/function (_util$Observer) {\n _inherits(Drawer, _util$Observer);\n var _super = _createSuper(Drawer);\n /**\n * @param {HTMLElement} container The container node of the wavesurfer instance\n * @param {WavesurferParams} params The wavesurfer initialisation options\n */\n function Drawer(container, params) {\n var _this;\n _classCallCheck(this, Drawer);\n _this = _super.call(this);\n _this.container = util.withOrientation(container, params.vertical);\n /**\n * @type {WavesurferParams}\n */\n _this.params = params;\n /**\n * The width of the renderer\n * @type {number}\n */\n _this.width = 0;\n /**\n * The height of the renderer\n * @type {number}\n */\n _this.height = params.height * _this.params.pixelRatio;\n _this.lastPos = 0;\n /**\n * The `` element which is added to the container\n * @type {HTMLElement}\n */\n _this.wrapper = null;\n return _this;\n }\n\n /**\n * Alias of `util.style`\n *\n * @param {HTMLElement} el The element that the styles will be applied to\n * @param {Object} styles The map of propName: attribute, both are used as-is\n * @return {HTMLElement} el\n */\n _createClass(Drawer, [{\n key: \"style\",\n value: function style(el, styles) {\n return util.style(el, styles);\n }\n\n /**\n * Create the wrapper `` element, style it and set up the events for\n * interaction\n */\n }, {\n key: \"createWrapper\",\n value: function createWrapper() {\n this.wrapper = util.withOrientation(this.container.appendChild(document.createElement('wave')), this.params.vertical);\n this.style(this.wrapper, {\n display: 'block',\n position: 'relative',\n userSelect: 'none',\n webkitUserSelect: 'none',\n height: this.params.height + 'px'\n });\n if (this.params.fillParent || this.params.scrollParent) {\n this.style(this.wrapper, {\n width: '100%',\n cursor: this.params.hideCursor ? 'none' : 'auto',\n overflowX: this.params.hideScrollbar ? 'hidden' : 'auto',\n overflowY: 'hidden'\n });\n }\n this.setupWrapperEvents();\n }\n\n /**\n * Handle click event\n *\n * @param {Event} e Click event\n * @param {?boolean} noPrevent Set to true to not call `e.preventDefault()`\n * @return {number} Playback position from 0 to 1\n */\n }, {\n key: \"handleEvent\",\n value: function handleEvent(e, noPrevent) {\n !noPrevent && e.preventDefault();\n var clientX = util.withOrientation(e.targetTouches ? e.targetTouches[0] : e, this.params.vertical).clientX;\n var bbox = this.wrapper.getBoundingClientRect();\n var nominalWidth = this.width;\n var parentWidth = this.getWidth();\n var progressPixels = this.getProgressPixels(bbox, clientX);\n var progress;\n if (!this.params.fillParent && nominalWidth < parentWidth) {\n progress = progressPixels * (this.params.pixelRatio / nominalWidth) || 0;\n } else {\n progress = (progressPixels + this.wrapper.scrollLeft) / this.wrapper.scrollWidth || 0;\n }\n return util.clamp(progress, 0, 1);\n }\n }, {\n key: \"getProgressPixels\",\n value: function getProgressPixels(wrapperBbox, clientX) {\n if (this.params.rtl) {\n return wrapperBbox.right - clientX;\n } else {\n return clientX - wrapperBbox.left;\n }\n }\n }, {\n key: \"setupWrapperEvents\",\n value: function setupWrapperEvents() {\n var _this2 = this;\n this.wrapper.addEventListener('click', function (e) {\n var orientedEvent = util.withOrientation(e, _this2.params.vertical);\n var scrollbarHeight = _this2.wrapper.offsetHeight - _this2.wrapper.clientHeight;\n if (scrollbarHeight !== 0) {\n // scrollbar is visible. Check if click was on it\n var bbox = _this2.wrapper.getBoundingClientRect();\n if (orientedEvent.clientY >= bbox.bottom - scrollbarHeight) {\n // ignore mousedown as it was on the scrollbar\n return;\n }\n }\n if (_this2.params.interact) {\n _this2.fireEvent('click', e, _this2.handleEvent(e));\n }\n });\n this.wrapper.addEventListener('dblclick', function (e) {\n if (_this2.params.interact) {\n _this2.fireEvent('dblclick', e, _this2.handleEvent(e));\n }\n });\n this.wrapper.addEventListener('scroll', function (e) {\n return _this2.fireEvent('scroll', e);\n });\n }\n\n /**\n * Draw peaks on the canvas\n *\n * @param {number[]|Number.} peaks Can also be an array of arrays\n * for split channel rendering\n * @param {number} length The width of the area that should be drawn\n * @param {number} start The x-offset of the beginning of the area that\n * should be rendered\n * @param {number} end The x-offset of the end of the area that should be\n * rendered\n */\n }, {\n key: \"drawPeaks\",\n value: function drawPeaks(peaks, length, start, end) {\n if (!this.setWidth(length)) {\n this.clearWave();\n }\n this.params.barWidth ? this.drawBars(peaks, 0, start, end) : this.drawWave(peaks, 0, start, end);\n }\n\n /**\n * Scroll to the beginning\n */\n }, {\n key: \"resetScroll\",\n value: function resetScroll() {\n if (this.wrapper !== null) {\n this.wrapper.scrollLeft = 0;\n }\n }\n\n /**\n * Recenter the view-port at a certain percent of the waveform\n *\n * @param {number} percent Value from 0 to 1 on the waveform\n */\n }, {\n key: \"recenter\",\n value: function recenter(percent) {\n var position = this.wrapper.scrollWidth * percent;\n this.recenterOnPosition(position, true);\n }\n\n /**\n * Recenter the view-port on a position, either scroll there immediately or\n * in steps of 5 pixels\n *\n * @param {number} position X-offset in pixels\n * @param {boolean} immediate Set to true to immediately scroll somewhere\n */\n }, {\n key: \"recenterOnPosition\",\n value: function recenterOnPosition(position, immediate) {\n var scrollLeft = this.wrapper.scrollLeft;\n var half = ~~(this.wrapper.clientWidth / 2);\n var maxScroll = this.wrapper.scrollWidth - this.wrapper.clientWidth;\n var target = position - half;\n var offset = target - scrollLeft;\n if (maxScroll == 0) {\n // no need to continue if scrollbar is not there\n return;\n }\n\n // if the cursor is currently visible...\n if (!immediate && -half <= offset && offset < half) {\n // set rate at which waveform is centered\n var rate = this.params.autoCenterRate;\n\n // make rate depend on width of view and length of waveform\n rate /= half;\n rate *= maxScroll;\n offset = Math.max(-rate, Math.min(rate, offset));\n target = scrollLeft + offset;\n }\n\n // limit target to valid range (0 to maxScroll)\n target = Math.max(0, Math.min(maxScroll, target));\n // no use attempting to scroll if we're not moving\n if (target != scrollLeft) {\n this.wrapper.scrollLeft = target;\n }\n }\n\n /**\n * Get the current scroll position in pixels\n *\n * @return {number} Horizontal scroll position in pixels\n */\n }, {\n key: \"getScrollX\",\n value: function getScrollX() {\n var x = 0;\n if (this.wrapper) {\n var pixelRatio = this.params.pixelRatio;\n x = Math.round(this.wrapper.scrollLeft * pixelRatio);\n\n // In cases of elastic scroll (safari with mouse wheel) you can\n // scroll beyond the limits of the container\n // Calculate and floor the scrollable extent to make sure an out\n // of bounds value is not returned\n // Ticket #1312\n if (this.params.scrollParent) {\n var maxScroll = ~~(this.wrapper.scrollWidth * pixelRatio - this.getWidth());\n x = Math.min(maxScroll, Math.max(0, x));\n }\n }\n return x;\n }\n\n /**\n * Get the width of the container\n *\n * @return {number} The width of the container\n */\n }, {\n key: \"getWidth\",\n value: function getWidth() {\n return Math.round(this.container.clientWidth * this.params.pixelRatio);\n }\n\n /**\n * Set the width of the container\n *\n * @param {number} width The new width of the container\n * @return {boolean} Whether the width of the container was updated or not\n */\n }, {\n key: \"setWidth\",\n value: function setWidth(width) {\n if (this.width == width) {\n return false;\n }\n this.width = width;\n if (this.params.fillParent || this.params.scrollParent) {\n this.style(this.wrapper, {\n width: ''\n });\n } else {\n var newWidth = ~~(this.width / this.params.pixelRatio) + 'px';\n this.style(this.wrapper, {\n width: newWidth\n });\n }\n this.updateSize();\n return true;\n }\n\n /**\n * Set the height of the container\n *\n * @param {number} height The new height of the container.\n * @return {boolean} Whether the height of the container was updated or not\n */\n }, {\n key: \"setHeight\",\n value: function setHeight(height) {\n if (height == this.height) {\n return false;\n }\n this.height = height;\n this.style(this.wrapper, {\n height: ~~(this.height / this.params.pixelRatio) + 'px'\n });\n this.updateSize();\n return true;\n }\n\n /**\n * Called by wavesurfer when progress should be rendered\n *\n * @param {number} progress From 0 to 1\n */\n }, {\n key: \"progress\",\n value: function progress(_progress) {\n var minPxDelta = 1 / this.params.pixelRatio;\n var pos = Math.round(_progress * this.width) * minPxDelta;\n if (pos < this.lastPos || pos - this.lastPos >= minPxDelta) {\n this.lastPos = pos;\n if (this.params.scrollParent && this.params.autoCenter) {\n var newPos = ~~(this.wrapper.scrollWidth * _progress);\n this.recenterOnPosition(newPos, this.params.autoCenterImmediately);\n }\n this.updateProgress(pos);\n }\n }\n\n /**\n * This is called when wavesurfer is destroyed\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unAll();\n if (this.wrapper) {\n if (this.wrapper.parentNode == this.container.domElement) {\n this.container.removeChild(this.wrapper.domElement);\n }\n this.wrapper = null;\n }\n }\n\n /* Renderer-specific methods */\n\n /**\n * Called after cursor related params have changed.\n *\n * @abstract\n */\n }, {\n key: \"updateCursor\",\n value: function updateCursor() {}\n\n /**\n * Called when the size of the container changes so the renderer can adjust\n *\n * @abstract\n */\n }, {\n key: \"updateSize\",\n value: function updateSize() {}\n\n /**\n * Draw a waveform with bars\n *\n * @abstract\n * @param {number[]|Number.} peaks Can also be an array of arrays for split channel\n * rendering\n * @param {number} channelIndex The index of the current channel. Normally\n * should be 0\n * @param {number} start The x-offset of the beginning of the area that\n * should be rendered\n * @param {number} end The x-offset of the end of the area that should be\n * rendered\n */\n }, {\n key: \"drawBars\",\n value: function drawBars(peaks, channelIndex, start, end) {}\n\n /**\n * Draw a waveform\n *\n * @abstract\n * @param {number[]|Number.} peaks Can also be an array of arrays for split channel\n * rendering\n * @param {number} channelIndex The index of the current channel. Normally\n * should be 0\n * @param {number} start The x-offset of the beginning of the area that\n * should be rendered\n * @param {number} end The x-offset of the end of the area that should be\n * rendered\n */\n }, {\n key: \"drawWave\",\n value: function drawWave(peaks, channelIndex, start, end) {}\n\n /**\n * Clear the waveform\n *\n * @abstract\n */\n }, {\n key: \"clearWave\",\n value: function clearWave() {}\n\n /**\n * Render the new progress\n *\n * @abstract\n * @param {number} position X-Offset of progress position in pixels\n */\n }, {\n key: \"updateProgress\",\n value: function updateProgress(position) {}\n }]);\n return Drawer;\n}(util.Observer);\nexports[\"default\"] = Drawer;\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./src/drawer.multicanvas.js\":\n/*!***********************************!*\\\n !*** ./src/drawer.multicanvas.js ***!\n \\***********************************/\n/***/ ((module, exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\nvar _drawer = _interopRequireDefault(__webpack_require__(/*! ./drawer */ \"./src/drawer.js\"));\nvar util = _interopRequireWildcard(__webpack_require__(/*! ./util */ \"./src/util/index.js\"));\nvar _drawer2 = _interopRequireDefault(__webpack_require__(/*! ./drawer.canvasentry */ \"./src/drawer.canvasentry.js\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n/**\n * MultiCanvas renderer for wavesurfer. Is currently the default and sole\n * builtin renderer.\n *\n * A `MultiCanvas` consists of one or more `CanvasEntry` instances, depending\n * on the zoom level.\n */\nvar MultiCanvas = /*#__PURE__*/function (_Drawer) {\n _inherits(MultiCanvas, _Drawer);\n var _super = _createSuper(MultiCanvas);\n /**\n * @param {HTMLElement} container The container node of the wavesurfer instance\n * @param {WavesurferParams} params The wavesurfer initialisation options\n */\n function MultiCanvas(container, params) {\n var _this;\n _classCallCheck(this, MultiCanvas);\n _this = _super.call(this, container, params);\n\n /**\n * @type {number}\n */\n _this.maxCanvasWidth = params.maxCanvasWidth;\n\n /**\n * @type {number}\n */\n _this.maxCanvasElementWidth = Math.round(params.maxCanvasWidth / params.pixelRatio);\n\n /**\n * Whether or not the progress wave is rendered. If the `waveColor`\n * and `progressColor` are the same color it is not.\n *\n * @type {boolean}\n */\n _this.hasProgressCanvas = params.waveColor != params.progressColor;\n\n /**\n * @type {number}\n */\n _this.halfPixel = 0.5 / params.pixelRatio;\n\n /**\n * List of `CanvasEntry` instances.\n *\n * @type {Array}\n */\n _this.canvases = [];\n\n /**\n * @type {HTMLElement}\n */\n _this.progressWave = null;\n\n /**\n * Class used to generate entries.\n *\n * @type {function}\n */\n _this.EntryClass = _drawer2.default;\n\n /**\n * Canvas 2d context attributes.\n *\n * @type {object}\n */\n _this.canvasContextAttributes = params.drawingContextAttributes;\n\n /**\n * Overlap added between entries to prevent vertical white stripes\n * between `canvas` elements.\n *\n * @type {number}\n */\n _this.overlap = 2 * Math.ceil(params.pixelRatio / 2);\n\n /**\n * The radius of the wave bars. Makes bars rounded\n *\n * @type {number}\n */\n _this.barRadius = params.barRadius || 0;\n\n /**\n * Whether to render the waveform vertically. Defaults to false.\n *\n * @type {boolean}\n */\n _this.vertical = params.vertical;\n return _this;\n }\n\n /**\n * Initialize the drawer\n */\n _createClass(MultiCanvas, [{\n key: \"init\",\n value: function init() {\n this.createWrapper();\n this.createElements();\n }\n\n /**\n * Create the canvas elements and style them\n *\n */\n }, {\n key: \"createElements\",\n value: function createElements() {\n this.progressWave = util.withOrientation(this.wrapper.appendChild(document.createElement('wave')), this.params.vertical);\n this.style(this.progressWave, {\n position: 'absolute',\n zIndex: 3,\n left: 0,\n top: 0,\n bottom: 0,\n overflow: 'hidden',\n width: '0',\n display: 'none',\n boxSizing: 'border-box',\n borderRightStyle: 'solid',\n pointerEvents: 'none'\n });\n this.addCanvas();\n this.updateCursor();\n }\n\n /**\n * Update cursor style\n */\n }, {\n key: \"updateCursor\",\n value: function updateCursor() {\n this.style(this.progressWave, {\n borderRightWidth: this.params.cursorWidth + 'px',\n borderRightColor: this.params.cursorColor\n });\n }\n\n /**\n * Adjust to the updated size by adding or removing canvases\n */\n }, {\n key: \"updateSize\",\n value: function updateSize() {\n var _this2 = this;\n var totalWidth = Math.round(this.width / this.params.pixelRatio);\n var requiredCanvases = Math.ceil(totalWidth / (this.maxCanvasElementWidth + this.overlap));\n\n // add required canvases\n while (this.canvases.length < requiredCanvases) {\n this.addCanvas();\n }\n\n // remove older existing canvases, if any\n while (this.canvases.length > requiredCanvases) {\n this.removeCanvas();\n }\n var canvasWidth = this.maxCanvasWidth + this.overlap;\n var lastCanvas = this.canvases.length - 1;\n this.canvases.forEach(function (entry, i) {\n if (i == lastCanvas) {\n canvasWidth = _this2.width - _this2.maxCanvasWidth * lastCanvas;\n }\n _this2.updateDimensions(entry, canvasWidth, _this2.height);\n entry.clearWave();\n });\n }\n\n /**\n * Add a canvas to the canvas list\n *\n */\n }, {\n key: \"addCanvas\",\n value: function addCanvas() {\n var entry = new this.EntryClass();\n entry.canvasContextAttributes = this.canvasContextAttributes;\n entry.hasProgressCanvas = this.hasProgressCanvas;\n entry.halfPixel = this.halfPixel;\n var leftOffset = this.maxCanvasElementWidth * this.canvases.length;\n\n // wave\n var wave = util.withOrientation(this.wrapper.appendChild(document.createElement('canvas')), this.params.vertical);\n this.style(wave, {\n position: 'absolute',\n zIndex: 2,\n left: leftOffset + 'px',\n top: 0,\n bottom: 0,\n height: '100%',\n pointerEvents: 'none'\n });\n entry.initWave(wave);\n\n // progress\n if (this.hasProgressCanvas) {\n var progress = util.withOrientation(this.progressWave.appendChild(document.createElement('canvas')), this.params.vertical);\n this.style(progress, {\n position: 'absolute',\n left: leftOffset + 'px',\n top: 0,\n bottom: 0,\n height: '100%'\n });\n entry.initProgress(progress);\n }\n this.canvases.push(entry);\n }\n\n /**\n * Pop single canvas from the list\n *\n */\n }, {\n key: \"removeCanvas\",\n value: function removeCanvas() {\n var lastEntry = this.canvases[this.canvases.length - 1];\n\n // wave\n lastEntry.wave.parentElement.removeChild(lastEntry.wave.domElement);\n\n // progress\n if (this.hasProgressCanvas) {\n lastEntry.progress.parentElement.removeChild(lastEntry.progress.domElement);\n }\n\n // cleanup\n if (lastEntry) {\n lastEntry.destroy();\n lastEntry = null;\n }\n this.canvases.pop();\n }\n\n /**\n * Update the dimensions of a canvas element\n *\n * @param {CanvasEntry} entry Target entry\n * @param {number} width The new width of the element\n * @param {number} height The new height of the element\n */\n }, {\n key: \"updateDimensions\",\n value: function updateDimensions(entry, width, height) {\n var elementWidth = Math.round(width / this.params.pixelRatio);\n var totalWidth = Math.round(this.width / this.params.pixelRatio);\n\n // update canvas dimensions\n entry.updateDimensions(elementWidth, totalWidth, width, height);\n\n // style element\n this.style(this.progressWave, {\n display: 'block'\n });\n }\n\n /**\n * Clear the whole multi-canvas\n */\n }, {\n key: \"clearWave\",\n value: function clearWave() {\n var _this3 = this;\n util.frame(function () {\n _this3.canvases.forEach(function (entry) {\n return entry.clearWave();\n });\n })();\n }\n\n /**\n * Draw a waveform with bars\n *\n * @param {number[]|Number.} peaks Can also be an array of arrays\n * for split channel rendering\n * @param {number} channelIndex The index of the current channel. Normally\n * should be 0. Must be an integer.\n * @param {number} start The x-offset of the beginning of the area that\n * should be rendered\n * @param {number} end The x-offset of the end of the area that should be\n * rendered\n * @returns {void}\n */\n }, {\n key: \"drawBars\",\n value: function drawBars(peaks, channelIndex, start, end) {\n var _this4 = this;\n return this.prepareDraw(peaks, channelIndex, start, end, function (_ref) {\n var absmax = _ref.absmax,\n hasMinVals = _ref.hasMinVals,\n height = _ref.height,\n offsetY = _ref.offsetY,\n halfH = _ref.halfH,\n peaks = _ref.peaks,\n ch = _ref.channelIndex;\n // if drawBars was called within ws.empty we don't pass a start and\n // don't want anything to happen\n if (start === undefined) {\n return;\n }\n // Skip every other value if there are negatives.\n var peakIndexScale = hasMinVals ? 2 : 1;\n var length = peaks.length / peakIndexScale;\n var bar = _this4.params.barWidth * _this4.params.pixelRatio;\n var gap = _this4.params.barGap === null ? Math.max(_this4.params.pixelRatio, ~~(bar / 2)) : Math.max(_this4.params.pixelRatio, _this4.params.barGap * _this4.params.pixelRatio);\n var step = bar + gap;\n var scale = length / _this4.width;\n var first = start;\n var last = end;\n var peakIndex = first;\n for (peakIndex; peakIndex < last; peakIndex += step) {\n // search for the highest peak in the range this bar falls into\n var peak = 0;\n var peakIndexRange = Math.floor(peakIndex * scale) * peakIndexScale; // start index\n var peakIndexEnd = Math.floor((peakIndex + step) * scale) * peakIndexScale;\n do {\n // do..while makes sure at least one peak is always evaluated\n var newPeak = Math.abs(peaks[peakIndexRange]); // for arrays starting with negative values\n if (newPeak > peak) {\n peak = newPeak; // higher\n }\n\n peakIndexRange += peakIndexScale; // skip every other value for negatives\n } while (peakIndexRange < peakIndexEnd);\n\n // calculate the height of this bar according to the highest peak found\n var h = Math.round(peak / absmax * halfH);\n\n // raise the bar height to the specified minimum height\n // Math.max is used to replace any value smaller than barMinHeight (not just 0) with barMinHeight\n if (_this4.params.barMinHeight) {\n h = Math.max(h, _this4.params.barMinHeight);\n }\n _this4.fillRect(peakIndex + _this4.halfPixel, halfH - h + offsetY, bar + _this4.halfPixel, h * 2, _this4.barRadius, ch);\n }\n });\n }\n\n /**\n * Draw a waveform\n *\n * @param {number[]|Number.} peaks Can also be an array of arrays\n * for split channel rendering\n * @param {number} channelIndex The index of the current channel. Normally\n * should be 0\n * @param {number?} start The x-offset of the beginning of the area that\n * should be rendered (If this isn't set only a flat line is rendered)\n * @param {number?} end The x-offset of the end of the area that should be\n * rendered\n * @returns {void}\n */\n }, {\n key: \"drawWave\",\n value: function drawWave(peaks, channelIndex, start, end) {\n var _this5 = this;\n return this.prepareDraw(peaks, channelIndex, start, end, function (_ref2) {\n var absmax = _ref2.absmax,\n hasMinVals = _ref2.hasMinVals,\n height = _ref2.height,\n offsetY = _ref2.offsetY,\n halfH = _ref2.halfH,\n peaks = _ref2.peaks,\n channelIndex = _ref2.channelIndex;\n if (!hasMinVals) {\n var reflectedPeaks = [];\n var len = peaks.length;\n var i = 0;\n for (i; i < len; i++) {\n reflectedPeaks[2 * i] = peaks[i];\n reflectedPeaks[2 * i + 1] = -peaks[i];\n }\n peaks = reflectedPeaks;\n }\n\n // if drawWave was called within ws.empty we don't pass a start and\n // end and simply want a flat line\n if (start !== undefined) {\n _this5.drawLine(peaks, absmax, halfH, offsetY, start, end, channelIndex);\n }\n\n // always draw a median line\n _this5.fillRect(0, halfH + offsetY - _this5.halfPixel, _this5.width, _this5.halfPixel, _this5.barRadius, channelIndex);\n });\n }\n\n /**\n * Tell the canvas entries to render their portion of the waveform\n *\n * @param {number[]} peaks Peaks data\n * @param {number} absmax Maximum peak value (absolute)\n * @param {number} halfH Half the height of the waveform\n * @param {number} offsetY Offset to the top\n * @param {number} start The x-offset of the beginning of the area that\n * should be rendered\n * @param {number} end The x-offset of the end of the area that\n * should be rendered\n * @param {channelIndex} channelIndex The channel index of the line drawn\n */\n }, {\n key: \"drawLine\",\n value: function drawLine(peaks, absmax, halfH, offsetY, start, end, channelIndex) {\n var _this6 = this;\n var _ref3 = this.params.splitChannelsOptions.channelColors[channelIndex] || {},\n waveColor = _ref3.waveColor,\n progressColor = _ref3.progressColor;\n this.canvases.forEach(function (entry, i) {\n _this6.setFillStyles(entry, waveColor, progressColor);\n _this6.applyCanvasTransforms(entry, _this6.params.vertical);\n entry.drawLines(peaks, absmax, halfH, offsetY, start, end);\n });\n }\n\n /**\n * Draw a rectangle on the multi-canvas\n *\n * @param {number} x X-position of the rectangle\n * @param {number} y Y-position of the rectangle\n * @param {number} width Width of the rectangle\n * @param {number} height Height of the rectangle\n * @param {number} radius Radius of the rectangle\n * @param {channelIndex} channelIndex The channel index of the bar drawn\n */\n }, {\n key: \"fillRect\",\n value: function fillRect(x, y, width, height, radius, channelIndex) {\n var startCanvas = Math.floor(x / this.maxCanvasWidth);\n var endCanvas = Math.min(Math.ceil((x + width) / this.maxCanvasWidth) + 1, this.canvases.length);\n var i = startCanvas;\n for (i; i < endCanvas; i++) {\n var entry = this.canvases[i];\n var leftOffset = i * this.maxCanvasWidth;\n var intersection = {\n x1: Math.max(x, i * this.maxCanvasWidth),\n y1: y,\n x2: Math.min(x + width, i * this.maxCanvasWidth + entry.wave.width),\n y2: y + height\n };\n if (intersection.x1 < intersection.x2) {\n var _ref4 = this.params.splitChannelsOptions.channelColors[channelIndex] || {},\n waveColor = _ref4.waveColor,\n progressColor = _ref4.progressColor;\n this.setFillStyles(entry, waveColor, progressColor);\n this.applyCanvasTransforms(entry, this.params.vertical);\n entry.fillRects(intersection.x1 - leftOffset, intersection.y1, intersection.x2 - intersection.x1, intersection.y2 - intersection.y1, radius);\n }\n }\n }\n\n /**\n * Returns whether to hide the channel from being drawn based on params.\n *\n * @param {number} channelIndex The index of the current channel.\n * @returns {bool} True to hide the channel, false to draw.\n */\n }, {\n key: \"hideChannel\",\n value: function hideChannel(channelIndex) {\n return this.params.splitChannels && this.params.splitChannelsOptions.filterChannels.includes(channelIndex);\n }\n\n /**\n * Performs preparation tasks and calculations which are shared by `drawBars`\n * and `drawWave`\n *\n * @param {number[]|Number.} peaks Can also be an array of arrays for\n * split channel rendering\n * @param {number} channelIndex The index of the current channel. Normally\n * should be 0\n * @param {number?} start The x-offset of the beginning of the area that\n * should be rendered. If this isn't set only a flat line is rendered\n * @param {number?} end The x-offset of the end of the area that should be\n * rendered\n * @param {function} fn The render function to call, e.g. `drawWave`\n * @param {number} drawIndex The index of the current channel after filtering.\n * @param {number?} normalizedMax Maximum modulation value across channels for use with relativeNormalization. Ignored when undefined\n * @returns {void}\n */\n }, {\n key: \"prepareDraw\",\n value: function prepareDraw(peaks, channelIndex, start, end, fn, drawIndex, normalizedMax) {\n var _this7 = this;\n return util.frame(function () {\n // Split channels and call this function with the channelIndex set\n if (peaks[0] instanceof Array) {\n var channels = peaks;\n if (_this7.params.splitChannels) {\n var filteredChannels = channels.filter(function (c, i) {\n return !_this7.hideChannel(i);\n });\n if (!_this7.params.splitChannelsOptions.overlay) {\n _this7.setHeight(Math.max(filteredChannels.length, 1) * _this7.params.height * _this7.params.pixelRatio);\n }\n var overallAbsMax;\n if (_this7.params.splitChannelsOptions && _this7.params.splitChannelsOptions.relativeNormalization) {\n // calculate maximum peak across channels to use for normalization\n overallAbsMax = util.max(channels.map(function (channelPeaks) {\n return util.absMax(channelPeaks);\n }));\n }\n return channels.forEach(function (channelPeaks, i) {\n return _this7.prepareDraw(channelPeaks, i, start, end, fn, filteredChannels.indexOf(channelPeaks), overallAbsMax);\n });\n }\n peaks = channels[0];\n }\n\n // Return and do not draw channel peaks if hidden.\n if (_this7.hideChannel(channelIndex)) {\n return;\n }\n\n // calculate maximum modulation value, either from the barHeight\n // parameter or if normalize=true from the largest value in the peak\n // set\n var absmax = 1 / _this7.params.barHeight;\n if (_this7.params.normalize) {\n absmax = normalizedMax === undefined ? util.absMax(peaks) : normalizedMax;\n }\n\n // Bar wave draws the bottom only as a reflection of the top,\n // so we don't need negative values\n var hasMinVals = [].some.call(peaks, function (val) {\n return val < 0;\n });\n var height = _this7.params.height * _this7.params.pixelRatio;\n var halfH = height / 2;\n var offsetY = height * drawIndex || 0;\n\n // Override offsetY if overlay is true\n if (_this7.params.splitChannelsOptions && _this7.params.splitChannelsOptions.overlay) {\n offsetY = 0;\n }\n return fn({\n absmax: absmax,\n hasMinVals: hasMinVals,\n height: height,\n offsetY: offsetY,\n halfH: halfH,\n peaks: peaks,\n channelIndex: channelIndex\n });\n })();\n }\n\n /**\n * Set the fill styles for a certain entry (wave and progress)\n *\n * @param {CanvasEntry} entry Target entry\n * @param {string} waveColor Wave color to draw this entry\n * @param {string} progressColor Progress color to draw this entry\n */\n }, {\n key: \"setFillStyles\",\n value: function setFillStyles(entry) {\n var waveColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.params.waveColor;\n var progressColor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.params.progressColor;\n entry.setFillStyles(waveColor, progressColor);\n }\n\n /**\n * Set the canvas transforms for a certain entry (wave and progress)\n *\n * @param {CanvasEntry} entry Target entry\n * @param {boolean} vertical Whether to render the waveform vertically\n */\n }, {\n key: \"applyCanvasTransforms\",\n value: function applyCanvasTransforms(entry) {\n var vertical = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n entry.applyCanvasTransforms(vertical);\n }\n\n /**\n * Return image data of the multi-canvas\n *\n * When using a `type` of `'blob'`, this will return a `Promise`.\n *\n * @param {string} format='image/png' An optional value of a format type.\n * @param {number} quality=0.92 An optional value between 0 and 1.\n * @param {string} type='dataURL' Either 'dataURL' or 'blob'.\n * @return {string|string[]|Promise} When using the default `'dataURL'`\n * `type` this returns a single data URL or an array of data URLs,\n * one for each canvas. When using the `'blob'` `type` this returns a\n * `Promise` that resolves with an array of `Blob` instances, one for each\n * canvas.\n */\n }, {\n key: \"getImage\",\n value: function getImage(format, quality, type) {\n if (type === 'blob') {\n return Promise.all(this.canvases.map(function (entry) {\n return entry.getImage(format, quality, type);\n }));\n } else if (type === 'dataURL') {\n var images = this.canvases.map(function (entry) {\n return entry.getImage(format, quality, type);\n });\n return images.length > 1 ? images : images[0];\n }\n }\n\n /**\n * Render the new progress\n *\n * @param {number} position X-offset of progress position in pixels\n */\n }, {\n key: \"updateProgress\",\n value: function updateProgress(position) {\n this.style(this.progressWave, {\n width: position + 'px'\n });\n }\n }]);\n return MultiCanvas;\n}(_drawer.default);\nexports[\"default\"] = MultiCanvas;\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./src/mediaelement-webaudio.js\":\n/*!**************************************!*\\\n !*** ./src/mediaelement-webaudio.js ***!\n \\**************************************/\n/***/ ((module, exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\nvar _mediaelement = _interopRequireDefault(__webpack_require__(/*! ./mediaelement */ \"./src/mediaelement.js\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n/**\n * MediaElementWebAudio backend: load audio via an HTML5 audio tag, but playback with the WebAudio API.\n * The advantage here is that the html5