wavesurfer.js 5.1.0 → 6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGES.md +47 -0
- package/README.md +10 -0
- package/dist/plugin/wavesurfer.cursor.js +53 -51
- package/dist/plugin/wavesurfer.cursor.js.map +1 -1
- package/dist/plugin/wavesurfer.cursor.min.js +2 -2
- package/dist/plugin/wavesurfer.cursor.min.js.map +1 -1
- package/dist/plugin/wavesurfer.elan.js +10 -7
- package/dist/plugin/wavesurfer.elan.js.map +1 -1
- package/dist/plugin/wavesurfer.elan.min.js +2 -2
- package/dist/plugin/wavesurfer.elan.min.js.map +1 -1
- package/dist/plugin/wavesurfer.markers.js +142 -26
- package/dist/plugin/wavesurfer.markers.js.map +1 -1
- package/dist/plugin/wavesurfer.markers.min.js +2 -2
- package/dist/plugin/wavesurfer.markers.min.js.map +1 -1
- package/dist/plugin/wavesurfer.mediasession.js +6 -6
- package/dist/plugin/wavesurfer.mediasession.js.map +1 -1
- package/dist/plugin/wavesurfer.mediasession.min.js +2 -2
- package/dist/plugin/wavesurfer.mediasession.min.js.map +1 -1
- package/dist/plugin/wavesurfer.microphone.js +5 -5
- package/dist/plugin/wavesurfer.microphone.js.map +1 -1
- package/dist/plugin/wavesurfer.microphone.min.js +2 -2
- package/dist/plugin/wavesurfer.microphone.min.js.map +1 -1
- package/dist/plugin/wavesurfer.minimap.js +26 -23
- package/dist/plugin/wavesurfer.minimap.js.map +1 -1
- package/dist/plugin/wavesurfer.minimap.min.js +2 -2
- package/dist/plugin/wavesurfer.minimap.min.js.map +1 -1
- package/dist/plugin/wavesurfer.playhead.js +5 -5
- package/dist/plugin/wavesurfer.playhead.js.map +1 -1
- package/dist/plugin/wavesurfer.playhead.min.js +2 -2
- package/dist/plugin/wavesurfer.playhead.min.js.map +1 -1
- package/dist/plugin/wavesurfer.regions.js +88 -21
- package/dist/plugin/wavesurfer.regions.js.map +1 -1
- package/dist/plugin/wavesurfer.regions.min.js +2 -2
- package/dist/plugin/wavesurfer.regions.min.js.map +1 -1
- package/dist/plugin/wavesurfer.spectrogram.js +71 -58
- package/dist/plugin/wavesurfer.spectrogram.js.map +1 -1
- package/dist/plugin/wavesurfer.spectrogram.min.js +2 -2
- package/dist/plugin/wavesurfer.spectrogram.min.js.map +1 -1
- package/dist/plugin/wavesurfer.timeline.js +52 -54
- package/dist/plugin/wavesurfer.timeline.js.map +1 -1
- package/dist/plugin/wavesurfer.timeline.min.js +2 -2
- package/dist/plugin/wavesurfer.timeline.min.js.map +1 -1
- package/dist/wavesurfer-html-init.js +6 -6
- package/dist/wavesurfer-html-init.js.map +1 -1
- package/dist/wavesurfer-html-init.min.js +2 -2
- package/dist/wavesurfer-html-init.min.js.map +1 -1
- package/dist/wavesurfer.js +302 -133
- package/dist/wavesurfer.js.map +1 -1
- package/dist/wavesurfer.min.js +2 -2
- package/dist/wavesurfer.min.js.map +1 -1
- package/package.json +23 -23
- package/src/drawer.canvasentry.js +33 -6
- package/src/drawer.js +1 -0
- package/src/drawer.multicanvas.js +19 -8
- package/src/mediaelement.js +1 -1
- package/src/plugin/cursor/index.js +68 -70
- package/src/plugin/markers/index.js +112 -23
- package/src/plugin/minimap/index.js +24 -21
- package/src/plugin/regions/index.js +31 -4
- package/src/plugin/regions/region.js +45 -8
- package/src/plugin/spectrogram/index.js +65 -50
- package/src/plugin/timeline/index.js +11 -9
- package/src/util/index.js +1 -0
- package/src/util/silence-mode.js +35 -0
- package/src/wavesurfer.js +54 -23
- package/src/webaudio.js +10 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://WaveSurfer.[name]/webpack/universalModuleDefinition","webpack://WaveSurfer.[name]/./src/plugin/microphone/index.js","webpack://WaveSurfer.[name]/webpack/bootstrap","webpack://WaveSurfer.[name]/webpack/startup"],"names":["root","factory","exports","module","define","amd","this","MicrophonePlugin","params","ws","wavesurfer","active","paused","browser","detectBrowser","reloadBufferFunction","e","reloadBuffer","undefined","navigator","mediaDevices","getUserMedia","constraints","successCallback","errorCallback","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","Promise","call","reject","Error","video","audio","bufferSize","numberOfInputChannels","numberOfOutputChannels","_onBackendCreated","micContext","backend","getAudioContext","name","deferInit","instance","on","un","stop","then","data","gotStream","catch","deviceError","pause","play","start","connect","disconnect","stopDevice","empty","stream","getTracks","forEach","localAudioBuffer","createBuffer","sampleRate","mediaStreamSource","createMediaStreamSource","levelChecker","createScriptProcessor","destination","onaudioprocess","event","channel","l","Math","min","numberOfChannels","inputBuffer","getChannelData","set","loadDecodedBuffer","fireEvent","code","uastring","expr","pos","match","length","parseInt","result","window","version","extractVersion","userAgent","minVersion","RTCPeerConnection","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"mappings":"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","file":"wavesurfer.microphone.min.js","sourcesContent":["(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\"] = root[\"WaveSurfer\"] || {}, root[\"WaveSurfer\"][\"microphone\"] = factory();\n})(this, function() {\nreturn ","/**\n * @typedef {Object} MicrophonePluginParams\n * @property {MediaStreamConstraints} constraints The constraints parameter is a\n * MediaStreamConstaints object with two members: video and audio, describing\n * the media types requested. Either or both must be specified.\n * @property {number} bufferSize=4096 The buffer size in units of sample-frames.\n * If specified, the bufferSize must be one of the following values: `256`,\n * `512`, `1024`, `2048`, `4096`, `8192`, `16384`\n * @property {number} numberOfInputChannels=1 Integer specifying the number of\n * channels for this node's input. Values of up to 32 are supported.\n * @property {number} numberOfOutputChannels=1 Integer specifying the number of\n * channels for this node's output.\n * @property {?boolean} deferInit Set to true to manually call\n * `initPlugin('microphone')`\n */\n\n/**\n * Visualize microphone input in a wavesurfer instance.\n *\n * @implements {PluginClass}\n * @extends {Observer}\n * @example\n * // es6\n * import MicrophonePlugin from 'wavesurfer.microphone.js';\n *\n * // commonjs\n * var MicrophonePlugin = require('wavesurfer.microphone.js');\n *\n * // if you are using <script> tags\n * var MicrophonePlugin = window.WaveSurfer.microphone;\n *\n * // ... initialising wavesurfer with the plugin\n * var wavesurfer = WaveSurfer.create({\n * // wavesurfer options ...\n * plugins: [\n * MicrophonePlugin.create({\n * // plugin options ...\n * })\n * ]\n * });\n */\nexport default class MicrophonePlugin {\n /**\n * Microphone plugin definition factory\n *\n * This function must be used to create a plugin definition which can be\n * used by wavesurfer to correctly instantiate the plugin.\n *\n * @param {MicrophonePluginParams} params parameters use to initialise the plugin\n * @return {PluginDefinition} an object representing the plugin\n */\n static create(params) {\n return {\n name: 'microphone',\n deferInit: params && params.deferInit ? params.deferInit : false,\n params: params,\n instance: MicrophonePlugin\n };\n }\n\n constructor(params, ws) {\n this.params = params;\n this.wavesurfer = ws;\n\n this.active = false;\n this.paused = false;\n this.browser = this.detectBrowser();\n this.reloadBufferFunction = e => this.reloadBuffer(e);\n\n // cross-browser getUserMedia\n const promisifiedOldGUM = (\n constraints,\n successCallback,\n errorCallback\n ) => {\n // get a hold of getUserMedia, if present\n const getUserMedia =\n navigator.getUserMedia ||\n navigator.webkitGetUserMedia ||\n navigator.mozGetUserMedia ||\n navigator.msGetUserMedia;\n // Some browsers just don't implement it - return a rejected\n // promise with an error to keep a consistent interface\n if (!getUserMedia) {\n return Promise.reject(\n new Error('getUserMedia is not implemented in this browser')\n );\n }\n // otherwise, wrap the call to the old navigator.getUserMedia with\n // a Promise\n return new Promise((successCallback, errorCallback) => {\n getUserMedia.call(\n navigator,\n constraints,\n successCallback,\n errorCallback\n );\n });\n };\n // Older browsers might not implement mediaDevices at all, so we set an\n // empty object first\n if (navigator.mediaDevices === undefined) {\n navigator.mediaDevices = {};\n }\n // Some browsers partially implement mediaDevices. We can't just assign\n // an object with getUserMedia as it would overwrite existing\n // properties. Here, we will just add the getUserMedia property if it's\n // missing.\n if (navigator.mediaDevices.getUserMedia === undefined) {\n navigator.mediaDevices.getUserMedia = promisifiedOldGUM;\n }\n this.constraints = this.params.constraints || {\n video: false,\n audio: true\n };\n this.bufferSize = this.params.bufferSize || 4096;\n this.numberOfInputChannels = this.params.numberOfInputChannels || 1;\n this.numberOfOutputChannels = this.params.numberOfOutputChannels || 1;\n\n this._onBackendCreated = () => {\n // wavesurfer's AudioContext where we'll route the mic signal to\n this.micContext = this.wavesurfer.backend.getAudioContext();\n };\n }\n\n init() {\n this.wavesurfer.on('backend-created', this._onBackendCreated);\n if (this.wavesurfer.backend) {\n this._onBackendCreated();\n }\n }\n\n /**\n * Destroy the microphone plugin.\n */\n destroy() {\n // make sure the buffer is not redrawn during\n // cleanup and demolition of this plugin.\n this.paused = true;\n\n this.wavesurfer.un('backend-created', this._onBackendCreated);\n this.stop();\n }\n\n /**\n * Allow user to select audio input device, e.g. microphone, and\n * start the visualization.\n */\n start() {\n navigator.mediaDevices\n .getUserMedia(this.constraints)\n .then(data => this.gotStream(data))\n .catch(data => this.deviceError(data));\n }\n\n /**\n * Pause/resume visualization.\n */\n togglePlay() {\n if (!this.active) {\n // start it first\n this.start();\n } else {\n // toggle paused\n this.paused = !this.paused;\n\n if (this.paused) {\n this.pause();\n } else {\n this.play();\n }\n }\n }\n\n /**\n * Play visualization.\n */\n play() {\n this.paused = false;\n\n this.connect();\n }\n\n /**\n * Pause visualization.\n */\n pause() {\n this.paused = true;\n\n // disconnect sources so they can be used elsewhere\n // (eg. during audio playback)\n this.disconnect();\n }\n\n /**\n * Stop the device stream and remove any remaining waveform drawing from\n * the wavesurfer canvas.\n */\n stop() {\n if (this.active) {\n // stop visualization and device\n this.stopDevice();\n\n // empty last frame\n this.wavesurfer.empty();\n }\n }\n\n /**\n * Stop the device and the visualization.\n */\n stopDevice() {\n this.active = false;\n\n // stop visualization\n this.disconnect();\n\n // stop stream from device\n if (this.stream && this.stream.getTracks) {\n this.stream.getTracks().forEach(stream => stream.stop());\n }\n }\n\n /**\n * Connect the media sources that feed the visualization.\n */\n connect() {\n if (this.stream !== undefined) {\n // Create a local buffer for data to be copied to the Wavesurfer buffer for Edge\n if (this.browser.browser === 'edge') {\n this.localAudioBuffer = this.micContext.createBuffer(\n this.numberOfInputChannels,\n this.bufferSize,\n this.micContext.sampleRate\n );\n }\n\n // Create an AudioNode from the stream.\n this.mediaStreamSource = this.micContext.createMediaStreamSource(\n this.stream\n );\n\n this.levelChecker = this.micContext.createScriptProcessor(\n this.bufferSize,\n this.numberOfInputChannels,\n this.numberOfOutputChannels\n );\n this.mediaStreamSource.connect(this.levelChecker);\n\n this.levelChecker.connect(this.micContext.destination);\n this.levelChecker.onaudioprocess = this.reloadBufferFunction;\n }\n }\n\n /**\n * Disconnect the media sources that feed the visualization.\n */\n disconnect() {\n if (this.mediaStreamSource !== undefined) {\n this.mediaStreamSource.disconnect();\n }\n\n if (this.levelChecker !== undefined) {\n this.levelChecker.disconnect();\n this.levelChecker.onaudioprocess = undefined;\n }\n\n if (this.localAudioBuffer !== undefined) {\n this.localAudioBuffer = undefined;\n }\n }\n\n /**\n * Redraw the waveform.\n *\n * @param {object} event Audioprocess event\n */\n reloadBuffer(event) {\n if (!this.paused) {\n this.wavesurfer.empty();\n\n if (this.browser.browser === 'edge') {\n // copy audio data to a local audio buffer,\n // from https://github.com/audiojs/audio-buffer-utils\n let channel, l;\n for (\n channel = 0,\n l = Math.min(\n this.localAudioBuffer.numberOfChannels,\n event.inputBuffer.numberOfChannels\n );\n channel < l;\n channel++\n ) {\n this.localAudioBuffer\n .getChannelData(channel)\n .set(event.inputBuffer.getChannelData(channel));\n }\n\n this.wavesurfer.loadDecodedBuffer(this.localAudioBuffer);\n } else {\n this.wavesurfer.loadDecodedBuffer(event.inputBuffer);\n }\n }\n }\n\n /**\n * Audio input device is ready.\n *\n * @param {MediaStream} stream The microphone's media stream.\n */\n gotStream(stream) {\n this.stream = stream;\n this.active = true;\n\n // start visualization\n this.play();\n\n // notify listeners\n this.fireEvent('deviceReady', stream);\n }\n\n /**\n * Device error callback.\n *\n * @param {string} code Error message\n */\n deviceError(code) {\n // notify listeners\n this.fireEvent('deviceError', code);\n }\n\n /**\n * Extract browser version out of the provided user agent string.\n * @param {!string} uastring userAgent string.\n * @param {!string} expr Regular expression used as match criteria.\n * @param {!number} pos position in the version string to be returned.\n * @return {!number} browser version.\n */\n extractVersion(uastring, expr, pos) {\n const match = uastring.match(expr);\n return match && match.length >= pos && parseInt(match[pos], 10);\n }\n\n /**\n * Browser detector.\n * @return {object} result containing browser, version and minVersion\n * properties.\n */\n detectBrowser() {\n // Returned result object.\n const result = {};\n result.browser = null;\n result.version = null;\n result.minVersion = null;\n\n // Non supported browser.\n if (typeof window === 'undefined' || !window.navigator) {\n result.browser = 'Not a supported browser.';\n return result;\n }\n\n if (navigator.mozGetUserMedia) {\n // Firefox\n result.browser = 'firefox';\n result.version = this.extractVersion(\n navigator.userAgent,\n /Firefox\\/(\\d+)\\./,\n 1\n );\n result.minVersion = 31;\n return result;\n } else if (navigator.webkitGetUserMedia) {\n // Chrome/Chromium/Webview/Opera\n result.browser = 'chrome';\n result.version = this.extractVersion(\n navigator.userAgent,\n /Chrom(e|ium)\\/(\\d+)\\./,\n 2\n );\n result.minVersion = 38;\n return result;\n } else if (\n navigator.mediaDevices &&\n navigator.userAgent.match(/Edge\\/(\\d+).(\\d+)$/)\n ) {\n // Edge\n result.browser = 'edge';\n result.version = this.extractVersion(\n navigator.userAgent,\n /Edge\\/(\\d+).(\\d+)$/,\n 2\n );\n result.minVersion = 10547;\n return result;\n } else if (\n window.RTCPeerConnection &&\n navigator.userAgent.match(/AppleWebKit\\/(\\d+)\\./)\n ) {\n // Safari\n result.browser = 'safari';\n result.minVersion = 11;\n result.version = this.extractVersion(\n navigator.userAgent,\n /AppleWebKit\\/(\\d+)\\./,\n 1\n );\n return result;\n }\n\n // Non supported browser default.\n result.browser = 'Not a supported browser.';\n return result;\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(872);\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"wavesurfer.microphone.min.js","mappings":";;;;;CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,aAAc,GAAIH,GACC,iBAAZC,QACdA,QAAoB,WAAID,KAExBD,EAAiB,WAAIA,EAAiB,YAAK,GAAIA,EAAiB,WAAc,WAAIC,KARpF,CASGK,MAAM,WACT,Y,4QC+BqBC,EAAAA,WAmBjB,WAAYC,EAAQC,GAAI,Y,4FAAA,SACpBC,KAAKF,OAASA,EACdE,KAAKC,WAAaF,EAElBC,KAAKE,QAAS,EACdF,KAAKG,QAAS,EACdH,KAAKI,QAAUJ,KAAKK,gBACpBL,KAAKM,qBAAuB,SAAAC,GAAC,OAAI,EAAKC,aAAaD,SAkCpBE,IAA3BC,UAAUC,eACVD,UAAUC,aAAe,SAMeF,IAAxCC,UAAUC,aAAaC,eACvBF,UAAUC,aAAaC,aAvCD,SACtBC,EACAC,EACAC,GAGA,IAAMH,EACFF,UAAUE,cACVF,UAAUM,oBACVN,UAAUO,iBACVP,UAAUQ,eAGd,OAAKN,EAOE,IAAIO,SAAQ,SAACL,EAAiBC,GACjCH,EAAaQ,KACTV,UACAG,EACAC,EACAC,MAXGI,QAAQE,OACX,IAAIC,MAAM,sDA0BtBtB,KAAKa,YAAcb,KAAKF,OAAOe,aAAe,CAC1CU,OAAO,EACPC,OAAO,GAEXxB,KAAKyB,WAAazB,KAAKF,OAAO2B,YAAc,KAC5CzB,KAAK0B,sBAAwB1B,KAAKF,OAAO4B,uBAAyB,EAClE1B,KAAK2B,uBAAyB3B,KAAKF,OAAO6B,wBAA0B,EAEpE3B,KAAK4B,kBAAoB,WAErB,EAAKC,WAAa,EAAK5B,WAAW6B,QAAQC,mB,4CAtElD,SAAcjC,GACV,MAAO,CACHkC,KAAM,aACNC,aAAWnC,IAAUA,EAAOmC,YAAYnC,EAAOmC,UAC/CnC,OAAQA,EACRoC,SAAUrC,O,qBAqElB,WACIG,KAAKC,WAAWkC,GAAG,kBAAmBnC,KAAK4B,mBACvC5B,KAAKC,WAAW6B,SAChB9B,KAAK4B,sB,qBAOb,WAGI5B,KAAKG,QAAS,EAEdH,KAAKC,WAAWmC,GAAG,kBAAmBpC,KAAK4B,mBAC3C5B,KAAKqC,S,mBAOT,WAAQ,WACJ3B,UAAUC,aACLC,aAAaZ,KAAKa,aAClByB,MAAK,SAAAC,GAAI,OAAI,EAAKC,UAAUD,MAC5BE,OAAM,SAAAF,GAAI,OAAI,EAAKG,YAAYH,Q,wBAMxC,WACSvC,KAAKE,QAKNF,KAAKG,QAAUH,KAAKG,OAEhBH,KAAKG,OACLH,KAAK2C,QAEL3C,KAAK4C,QART5C,KAAK6C,U,kBAgBb,WACI7C,KAAKG,QAAS,EAEdH,KAAK8C,Y,mBAMT,WACI9C,KAAKG,QAAS,EAIdH,KAAK+C,e,kBAOT,WACQ/C,KAAKE,SAELF,KAAKgD,aAGLhD,KAAKC,WAAWgD,W,wBAOxB,WACIjD,KAAKE,QAAS,EAGdF,KAAK+C,aAGD/C,KAAKkD,QAAUlD,KAAKkD,OAAOC,WAC3BnD,KAAKkD,OAAOC,YAAYC,SAAQ,SAAAF,GAAM,OAAIA,EAAOb,Y,qBAOzD,gBACwB5B,IAAhBT,KAAKkD,SAEwB,SAAzBlD,KAAKI,QAAQA,UACbJ,KAAKqD,iBAAmBrD,KAAK6B,WAAWyB,aACpCtD,KAAK0B,sBACL1B,KAAKyB,WACLzB,KAAK6B,WAAW0B,aAKxBvD,KAAKwD,kBAAoBxD,KAAK6B,WAAW4B,wBACrCzD,KAAKkD,QAGTlD,KAAK0D,aAAe1D,KAAK6B,WAAW8B,sBAChC3D,KAAKyB,WACLzB,KAAK0B,sBACL1B,KAAK2B,wBAET3B,KAAKwD,kBAAkBV,QAAQ9C,KAAK0D,cAEpC1D,KAAK0D,aAAaZ,QAAQ9C,KAAK6B,WAAW+B,aAC1C5D,KAAK0D,aAAaG,eAAiB7D,KAAKM,wB,wBAOhD,gBACmCG,IAA3BT,KAAKwD,mBACLxD,KAAKwD,kBAAkBT,kBAGDtC,IAAtBT,KAAK0D,eACL1D,KAAK0D,aAAaX,aAClB/C,KAAK0D,aAAaG,oBAAiBpD,QAGTA,IAA1BT,KAAKqD,mBACLrD,KAAKqD,sBAAmB5C,K,0BAShC,SAAaqD,GACT,IAAK9D,KAAKG,OAGN,GAFAH,KAAKC,WAAWgD,QAEa,SAAzBjD,KAAKI,QAAQA,QAAoB,CAGjC,IAAI2D,EAASC,EACb,IACID,EAAU,EACVC,EAAIC,KAAKC,IACLlE,KAAKqD,iBAAiBc,iBACtBL,EAAMM,YAAYD,kBAEtBJ,EAAUC,EACVD,IAEA/D,KAAKqD,iBACAgB,eAAeN,GACfO,IAAIR,EAAMM,YAAYC,eAAeN,IAG9C/D,KAAKC,WAAWsE,kBAAkBvE,KAAKqD,uBAEvCrD,KAAKC,WAAWsE,kBAAkBT,EAAMM,e,uBAUpD,SAAUlB,GACNlD,KAAKkD,OAASA,EACdlD,KAAKE,QAAS,EAGdF,KAAK4C,OAGL5C,KAAKwE,UAAU,cAAetB,K,yBAQlC,SAAYuB,GAERzE,KAAKwE,UAAU,cAAeC,K,4BAUlC,SAAeC,EAAUC,EAAMC,GAC3B,IAAMC,EAAQH,EAASG,MAAMF,GAC7B,OAAOE,GAASA,EAAMC,QAAUF,GAAOG,SAASF,EAAMD,GAAM,M,2BAQhE,WAEI,IAAMI,EAAS,CACfA,QAAiB,KACjBA,QAAiB,KACjBA,WAAoB,MAGpB,MAAsB,oBAAXC,QAA2BA,OAAOvE,UAKzCA,UAAUO,iBAEV+D,EAAO5E,QAAU,UACjB4E,EAAOE,QAAUlF,KAAKmF,eAClBzE,UAAU0E,UACV,mBACA,GAEJJ,EAAOK,WAAa,GACbL,GACAtE,UAAUM,oBAEjBgE,EAAO5E,QAAU,SACjB4E,EAAOE,QAAUlF,KAAKmF,eAClBzE,UAAU0E,UACV,wBACA,GAEJJ,EAAOK,WAAa,GACbL,GAEPtE,UAAUC,cACVD,UAAU0E,UAAUP,MAAM,uBAG1BG,EAAO5E,QAAU,OACjB4E,EAAOE,QAAUlF,KAAKmF,eAClBzE,UAAU0E,UACV,qBACA,GAEJJ,EAAOK,WAAa,MACbL,GAEPC,OAAOK,mBACP5E,UAAU0E,UAAUP,MAAM,yBAG1BG,EAAO5E,QAAU,SACjB4E,EAAOK,WAAa,GACpBL,EAAOE,QAAUlF,KAAKmF,eAClBzE,UAAU0E,UACV,uBACA,GAEGJ,IAIXA,EAAO5E,QAAU,2BACV4E,IAtDHA,EAAO5E,QAAU,2BACV4E,Q,gFA9TEnF,G,kCCxCjB0F,EAA2B,GCE/B,IAAIC,EDCJ,SAASC,EAAoBC,GAE5B,IAAIC,EAAeJ,EAAyBG,GAC5C,QAAqBjF,IAAjBkF,EACH,OAAOA,EAAanG,QAGrB,IAAIC,EAAS8F,EAAyBG,GAAY,CAGjDlG,QAAS,IAOV,OAHAoG,EAAoBF,GAAUjG,EAAQA,EAAOD,QAASiG,GAG/ChG,EAAOD,QClBWiG,CAAoB,K,UHO9C","sources":["webpack://WaveSurfer.[name]/webpack/universalModuleDefinition","webpack://WaveSurfer.[name]/./src/plugin/microphone/index.js","webpack://WaveSurfer.[name]/webpack/bootstrap","webpack://WaveSurfer.[name]/webpack/startup"],"sourcesContent":["(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\"] = root[\"WaveSurfer\"] || {}, root[\"WaveSurfer\"][\"microphone\"] = factory();\n})(self, function() {\nreturn ","/**\n * @typedef {Object} MicrophonePluginParams\n * @property {MediaStreamConstraints} constraints The constraints parameter is a\n * MediaStreamConstaints object with two members: video and audio, describing\n * the media types requested. Either or both must be specified.\n * @property {number} bufferSize=4096 The buffer size in units of sample-frames.\n * If specified, the bufferSize must be one of the following values: `256`,\n * `512`, `1024`, `2048`, `4096`, `8192`, `16384`\n * @property {number} numberOfInputChannels=1 Integer specifying the number of\n * channels for this node's input. Values of up to 32 are supported.\n * @property {number} numberOfOutputChannels=1 Integer specifying the number of\n * channels for this node's output.\n * @property {?boolean} deferInit Set to true to manually call\n * `initPlugin('microphone')`\n */\n\n/**\n * Visualize microphone input in a wavesurfer instance.\n *\n * @implements {PluginClass}\n * @extends {Observer}\n * @example\n * // es6\n * import MicrophonePlugin from 'wavesurfer.microphone.js';\n *\n * // commonjs\n * var MicrophonePlugin = require('wavesurfer.microphone.js');\n *\n * // if you are using <script> tags\n * var MicrophonePlugin = window.WaveSurfer.microphone;\n *\n * // ... initialising wavesurfer with the plugin\n * var wavesurfer = WaveSurfer.create({\n * // wavesurfer options ...\n * plugins: [\n * MicrophonePlugin.create({\n * // plugin options ...\n * })\n * ]\n * });\n */\nexport default class MicrophonePlugin {\n /**\n * Microphone plugin definition factory\n *\n * This function must be used to create a plugin definition which can be\n * used by wavesurfer to correctly instantiate the plugin.\n *\n * @param {MicrophonePluginParams} params parameters use to initialise the plugin\n * @return {PluginDefinition} an object representing the plugin\n */\n static create(params) {\n return {\n name: 'microphone',\n deferInit: params && params.deferInit ? params.deferInit : false,\n params: params,\n instance: MicrophonePlugin\n };\n }\n\n constructor(params, ws) {\n this.params = params;\n this.wavesurfer = ws;\n\n this.active = false;\n this.paused = false;\n this.browser = this.detectBrowser();\n this.reloadBufferFunction = e => this.reloadBuffer(e);\n\n // cross-browser getUserMedia\n const promisifiedOldGUM = (\n constraints,\n successCallback,\n errorCallback\n ) => {\n // get a hold of getUserMedia, if present\n const getUserMedia =\n navigator.getUserMedia ||\n navigator.webkitGetUserMedia ||\n navigator.mozGetUserMedia ||\n navigator.msGetUserMedia;\n // Some browsers just don't implement it - return a rejected\n // promise with an error to keep a consistent interface\n if (!getUserMedia) {\n return Promise.reject(\n new Error('getUserMedia is not implemented in this browser')\n );\n }\n // otherwise, wrap the call to the old navigator.getUserMedia with\n // a Promise\n return new Promise((successCallback, errorCallback) => {\n getUserMedia.call(\n navigator,\n constraints,\n successCallback,\n errorCallback\n );\n });\n };\n // Older browsers might not implement mediaDevices at all, so we set an\n // empty object first\n if (navigator.mediaDevices === undefined) {\n navigator.mediaDevices = {};\n }\n // Some browsers partially implement mediaDevices. We can't just assign\n // an object with getUserMedia as it would overwrite existing\n // properties. Here, we will just add the getUserMedia property if it's\n // missing.\n if (navigator.mediaDevices.getUserMedia === undefined) {\n navigator.mediaDevices.getUserMedia = promisifiedOldGUM;\n }\n this.constraints = this.params.constraints || {\n video: false,\n audio: true\n };\n this.bufferSize = this.params.bufferSize || 4096;\n this.numberOfInputChannels = this.params.numberOfInputChannels || 1;\n this.numberOfOutputChannels = this.params.numberOfOutputChannels || 1;\n\n this._onBackendCreated = () => {\n // wavesurfer's AudioContext where we'll route the mic signal to\n this.micContext = this.wavesurfer.backend.getAudioContext();\n };\n }\n\n init() {\n this.wavesurfer.on('backend-created', this._onBackendCreated);\n if (this.wavesurfer.backend) {\n this._onBackendCreated();\n }\n }\n\n /**\n * Destroy the microphone plugin.\n */\n destroy() {\n // make sure the buffer is not redrawn during\n // cleanup and demolition of this plugin.\n this.paused = true;\n\n this.wavesurfer.un('backend-created', this._onBackendCreated);\n this.stop();\n }\n\n /**\n * Allow user to select audio input device, e.g. microphone, and\n * start the visualization.\n */\n start() {\n navigator.mediaDevices\n .getUserMedia(this.constraints)\n .then(data => this.gotStream(data))\n .catch(data => this.deviceError(data));\n }\n\n /**\n * Pause/resume visualization.\n */\n togglePlay() {\n if (!this.active) {\n // start it first\n this.start();\n } else {\n // toggle paused\n this.paused = !this.paused;\n\n if (this.paused) {\n this.pause();\n } else {\n this.play();\n }\n }\n }\n\n /**\n * Play visualization.\n */\n play() {\n this.paused = false;\n\n this.connect();\n }\n\n /**\n * Pause visualization.\n */\n pause() {\n this.paused = true;\n\n // disconnect sources so they can be used elsewhere\n // (eg. during audio playback)\n this.disconnect();\n }\n\n /**\n * Stop the device stream and remove any remaining waveform drawing from\n * the wavesurfer canvas.\n */\n stop() {\n if (this.active) {\n // stop visualization and device\n this.stopDevice();\n\n // empty last frame\n this.wavesurfer.empty();\n }\n }\n\n /**\n * Stop the device and the visualization.\n */\n stopDevice() {\n this.active = false;\n\n // stop visualization\n this.disconnect();\n\n // stop stream from device\n if (this.stream && this.stream.getTracks) {\n this.stream.getTracks().forEach(stream => stream.stop());\n }\n }\n\n /**\n * Connect the media sources that feed the visualization.\n */\n connect() {\n if (this.stream !== undefined) {\n // Create a local buffer for data to be copied to the Wavesurfer buffer for Edge\n if (this.browser.browser === 'edge') {\n this.localAudioBuffer = this.micContext.createBuffer(\n this.numberOfInputChannels,\n this.bufferSize,\n this.micContext.sampleRate\n );\n }\n\n // Create an AudioNode from the stream.\n this.mediaStreamSource = this.micContext.createMediaStreamSource(\n this.stream\n );\n\n this.levelChecker = this.micContext.createScriptProcessor(\n this.bufferSize,\n this.numberOfInputChannels,\n this.numberOfOutputChannels\n );\n this.mediaStreamSource.connect(this.levelChecker);\n\n this.levelChecker.connect(this.micContext.destination);\n this.levelChecker.onaudioprocess = this.reloadBufferFunction;\n }\n }\n\n /**\n * Disconnect the media sources that feed the visualization.\n */\n disconnect() {\n if (this.mediaStreamSource !== undefined) {\n this.mediaStreamSource.disconnect();\n }\n\n if (this.levelChecker !== undefined) {\n this.levelChecker.disconnect();\n this.levelChecker.onaudioprocess = undefined;\n }\n\n if (this.localAudioBuffer !== undefined) {\n this.localAudioBuffer = undefined;\n }\n }\n\n /**\n * Redraw the waveform.\n *\n * @param {object} event Audioprocess event\n */\n reloadBuffer(event) {\n if (!this.paused) {\n this.wavesurfer.empty();\n\n if (this.browser.browser === 'edge') {\n // copy audio data to a local audio buffer,\n // from https://github.com/audiojs/audio-buffer-utils\n let channel, l;\n for (\n channel = 0,\n l = Math.min(\n this.localAudioBuffer.numberOfChannels,\n event.inputBuffer.numberOfChannels\n );\n channel < l;\n channel++\n ) {\n this.localAudioBuffer\n .getChannelData(channel)\n .set(event.inputBuffer.getChannelData(channel));\n }\n\n this.wavesurfer.loadDecodedBuffer(this.localAudioBuffer);\n } else {\n this.wavesurfer.loadDecodedBuffer(event.inputBuffer);\n }\n }\n }\n\n /**\n * Audio input device is ready.\n *\n * @param {MediaStream} stream The microphone's media stream.\n */\n gotStream(stream) {\n this.stream = stream;\n this.active = true;\n\n // start visualization\n this.play();\n\n // notify listeners\n this.fireEvent('deviceReady', stream);\n }\n\n /**\n * Device error callback.\n *\n * @param {string} code Error message\n */\n deviceError(code) {\n // notify listeners\n this.fireEvent('deviceError', code);\n }\n\n /**\n * Extract browser version out of the provided user agent string.\n * @param {!string} uastring userAgent string.\n * @param {!string} expr Regular expression used as match criteria.\n * @param {!number} pos position in the version string to be returned.\n * @return {!number} browser version.\n */\n extractVersion(uastring, expr, pos) {\n const match = uastring.match(expr);\n return match && match.length >= pos && parseInt(match[pos], 10);\n }\n\n /**\n * Browser detector.\n * @return {object} result containing browser, version and minVersion\n * properties.\n */\n detectBrowser() {\n // Returned result object.\n const result = {};\n result.browser = null;\n result.version = null;\n result.minVersion = null;\n\n // Non supported browser.\n if (typeof window === 'undefined' || !window.navigator) {\n result.browser = 'Not a supported browser.';\n return result;\n }\n\n if (navigator.mozGetUserMedia) {\n // Firefox\n result.browser = 'firefox';\n result.version = this.extractVersion(\n navigator.userAgent,\n /Firefox\\/(\\d+)\\./,\n 1\n );\n result.minVersion = 31;\n return result;\n } else if (navigator.webkitGetUserMedia) {\n // Chrome/Chromium/Webview/Opera\n result.browser = 'chrome';\n result.version = this.extractVersion(\n navigator.userAgent,\n /Chrom(e|ium)\\/(\\d+)\\./,\n 2\n );\n result.minVersion = 38;\n return result;\n } else if (\n navigator.mediaDevices &&\n navigator.userAgent.match(/Edge\\/(\\d+).(\\d+)$/)\n ) {\n // Edge\n result.browser = 'edge';\n result.version = this.extractVersion(\n navigator.userAgent,\n /Edge\\/(\\d+).(\\d+)$/,\n 2\n );\n result.minVersion = 10547;\n return result;\n } else if (\n window.RTCPeerConnection &&\n navigator.userAgent.match(/AppleWebKit\\/(\\d+)\\./)\n ) {\n // Safari\n result.browser = 'safari';\n result.minVersion = 11;\n result.version = this.extractVersion(\n navigator.userAgent,\n /AppleWebKit\\/(\\d+)\\./,\n 1\n );\n return result;\n }\n\n // Non supported browser default.\n result.browser = 'Not a supported browser.';\n return result;\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(872);\n"],"names":["root","factory","exports","module","define","amd","self","MicrophonePlugin","params","ws","this","wavesurfer","active","paused","browser","detectBrowser","reloadBufferFunction","e","reloadBuffer","undefined","navigator","mediaDevices","getUserMedia","constraints","successCallback","errorCallback","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","Promise","call","reject","Error","video","audio","bufferSize","numberOfInputChannels","numberOfOutputChannels","_onBackendCreated","micContext","backend","getAudioContext","name","deferInit","instance","on","un","stop","then","data","gotStream","catch","deviceError","pause","play","start","connect","disconnect","stopDevice","empty","stream","getTracks","forEach","localAudioBuffer","createBuffer","sampleRate","mediaStreamSource","createMediaStreamSource","levelChecker","createScriptProcessor","destination","onaudioprocess","event","channel","l","Math","min","numberOfChannels","inputBuffer","getChannelData","set","loadDecodedBuffer","fireEvent","code","uastring","expr","pos","match","length","parseInt","result","window","version","extractVersion","userAgent","minVersion","RTCPeerConnection","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* wavesurfer.js minimap plugin
|
|
2
|
+
* wavesurfer.js minimap plugin 6.0.2 (2022-02-20)
|
|
3
3
|
* https://wavesurfer-js.org
|
|
4
4
|
* @license BSD-3-Clause
|
|
5
5
|
*/
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
exports["WaveSurfer"] = factory();
|
|
13
13
|
else
|
|
14
14
|
root["WaveSurfer"] = root["WaveSurfer"] || {}, root["WaveSurfer"]["minimap"] = factory();
|
|
15
|
-
})(
|
|
15
|
+
})(self, function() {
|
|
16
16
|
return /******/ (() => { // webpackBootstrap
|
|
17
17
|
/******/ "use strict";
|
|
18
18
|
/******/ var __webpack_modules__ = ({
|
|
@@ -28,13 +28,13 @@ return /******/ (() => { // webpackBootstrap
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", ({
|
|
29
29
|
value: true
|
|
30
30
|
}));
|
|
31
|
-
exports
|
|
31
|
+
exports["default"] = void 0;
|
|
32
32
|
|
|
33
33
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
34
34
|
|
|
35
35
|
function _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, descriptor.key, descriptor); } }
|
|
36
36
|
|
|
37
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
37
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
38
38
|
|
|
39
39
|
/*eslint no-console: ["error", { allow: ["warn"] }] */
|
|
40
40
|
|
|
@@ -113,16 +113,7 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
113
113
|
this.drawer = new ws.Drawer(this.params.container, this.params);
|
|
114
114
|
this.wavesurfer = ws;
|
|
115
115
|
this.util = ws.util;
|
|
116
|
-
|
|
117
|
-
* Minimap needs to listen for the `ready` and `waveform-ready` events
|
|
118
|
-
* to work with the `MediaElement` backend. The moment the `ready` event
|
|
119
|
-
* is called is different (and peaks would not load).
|
|
120
|
-
*
|
|
121
|
-
* @type {string}
|
|
122
|
-
* @see https://github.com/katspaugh/wavesurfer.js/issues/736
|
|
123
|
-
*/
|
|
124
|
-
|
|
125
|
-
this.renderEvent = ws.params.backend === 'MediaElement' ? 'waveform-ready' : 'ready';
|
|
116
|
+
this.renderEvent = 'redraw';
|
|
126
117
|
this.overviewRegion = null;
|
|
127
118
|
this.regionsPlugin = this.wavesurfer[this.params.regionsPluginName];
|
|
128
119
|
this.drawer.createWrapper();
|
|
@@ -164,7 +155,9 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
164
155
|
|
|
165
156
|
this._onScroll = function (e) {
|
|
166
157
|
if (!_this.draggingOverview) {
|
|
167
|
-
_this.
|
|
158
|
+
var orientedTarget = _this.util.withOrientation(e.target, _this.wavesurfer.params.vertical);
|
|
159
|
+
|
|
160
|
+
_this.moveOverviewRegion(orientedTarget.scrollLeft / _this.ratio);
|
|
168
161
|
}
|
|
169
162
|
};
|
|
170
163
|
|
|
@@ -274,7 +267,8 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
274
267
|
this.drawer.createElements();
|
|
275
268
|
|
|
276
269
|
if (this.params.showOverview) {
|
|
277
|
-
this.overviewRegion = this.util.
|
|
270
|
+
this.overviewRegion = this.util.withOrientation(this.drawer.wrapper.appendChild(document.createElement('overview')), this.wavesurfer.params.vertical);
|
|
271
|
+
this.util.style(this.overviewRegion, {
|
|
278
272
|
top: 0,
|
|
279
273
|
bottom: 0,
|
|
280
274
|
width: '0px',
|
|
@@ -285,7 +279,6 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
285
279
|
zIndex: 2,
|
|
286
280
|
opacity: this.params.overviewOpacity
|
|
287
281
|
});
|
|
288
|
-
this.drawer.wrapper.appendChild(this.overviewRegion);
|
|
289
282
|
}
|
|
290
283
|
}
|
|
291
284
|
}, {
|
|
@@ -331,18 +324,24 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
331
324
|
}
|
|
332
325
|
|
|
333
326
|
if (this.params.showOverview) {
|
|
334
|
-
this.overviewRegion.addEventListener('mousedown', function (
|
|
327
|
+
this.overviewRegion.domElement.addEventListener('mousedown', function (e) {
|
|
328
|
+
var event = _this4.util.withOrientation(e, _this4.wavesurfer.params.vertical);
|
|
329
|
+
|
|
335
330
|
_this4.draggingOverview = true;
|
|
336
331
|
relativePositionX = event.layerX;
|
|
337
332
|
positionMouseDown.clientX = event.clientX;
|
|
338
333
|
positionMouseDown.clientY = event.clientY;
|
|
339
334
|
});
|
|
340
|
-
this.drawer.wrapper.addEventListener('mousemove', function (
|
|
335
|
+
this.drawer.wrapper.addEventListener('mousemove', function (e) {
|
|
341
336
|
if (_this4.draggingOverview) {
|
|
337
|
+
var event = _this4.util.withOrientation(e, _this4.wavesurfer.params.vertical);
|
|
338
|
+
|
|
342
339
|
_this4.moveOverviewRegion(event.clientX - _this4.drawer.container.getBoundingClientRect().left - relativePositionX);
|
|
343
340
|
}
|
|
344
341
|
});
|
|
345
|
-
this.drawer.wrapper.addEventListener('mouseup', function (
|
|
342
|
+
this.drawer.wrapper.addEventListener('mouseup', function (e) {
|
|
343
|
+
var event = _this4.util.withOrientation(e, _this4.wavesurfer.params.vertical);
|
|
344
|
+
|
|
346
345
|
if (positionMouseDown.clientX - event.clientX === 0 && positionMouseDown.clientX - event.clientX === 0) {
|
|
347
346
|
seek = true;
|
|
348
347
|
_this4.draggingOverview = false;
|
|
@@ -370,7 +369,9 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
370
369
|
this.overviewWidth = this.drawer.container.offsetWidth / this.ratio;
|
|
371
370
|
this.overviewPosition = 0;
|
|
372
371
|
this.moveOverviewRegion(this.wavesurfer.drawer.wrapper.scrollLeft / this.ratio);
|
|
373
|
-
this.
|
|
372
|
+
this.util.style(this.overviewRegion, {
|
|
373
|
+
width: this.overviewWidth + 'px'
|
|
374
|
+
});
|
|
374
375
|
}
|
|
375
376
|
}
|
|
376
377
|
}, {
|
|
@@ -384,7 +385,9 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
384
385
|
this.overviewPosition = this.drawer.container.offsetWidth - this.overviewWidth;
|
|
385
386
|
}
|
|
386
387
|
|
|
387
|
-
this.
|
|
388
|
+
this.util.style(this.overviewRegion, {
|
|
389
|
+
left: this.overviewPosition + 'px'
|
|
390
|
+
});
|
|
388
391
|
|
|
389
392
|
if (this.draggingOverview) {
|
|
390
393
|
this.wavesurfer.drawer.wrapper.scrollLeft = this.overviewPosition * this.ratio;
|
|
@@ -421,7 +424,7 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
421
424
|
return MinimapPlugin;
|
|
422
425
|
}();
|
|
423
426
|
|
|
424
|
-
exports
|
|
427
|
+
exports["default"] = MinimapPlugin;
|
|
425
428
|
module.exports = exports.default;
|
|
426
429
|
|
|
427
430
|
/***/ })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://WaveSurfer.[name]/webpack/universalModuleDefinition","webpack://WaveSurfer.[name]/./src/plugin/minimap/index.js","webpack://WaveSurfer.[name]/webpack/bootstrap","webpack://WaveSurfer.[name]/webpack/startup"],"names":["MinimapPlugin","params","ws","Object","assign","showRegions","regionsPluginName","showOverview","overviewBorderColor","overviewBorderSize","container","height","Math","max","round","scrollParent","fillParent","el","document","querySelector","console","warn","util","style","createElement","display","drawer","Drawer","wavesurfer","renderEvent","backend","overviewRegion","regionsPlugin","createWrapper","createElements","isInitialised","_onShouldRender","bindWavesurferEvents","bindMinimapEvents","body","contains","insertBefore","regions","render","_onAudioprocess","currentTime","progress","getPlayedPercents","_onSeek","_onScroll","e","draggingOverview","moveOverviewRegion","target","scrollLeft","ratio","_onMouseover","prevWidth","_onResize","debounce","wrapper","clientWidth","_onZoom","on","isReady","window","removeEventListener","un","destroy","unAll","region","id","renderRegions","regionElements","querySelectorAll","i","length","removeChild","keys","forEach","width","getWidth","end","start","getDuration","left","regionElement","backgroundColor","color","position","classList","add","appendChild","top","bottom","cursor","border","zIndex","opacity","overviewOpacity","addEventListener","positionMouseDown","clientX","clientY","relativePositionX","seek","interact","event","fireEvent","handleEvent","seekAndCenter","layerX","getBoundingClientRect","len","peaks","getPeaks","drawPeaks","waveShowedWidth","waveWidth","overviewWidth","offsetWidth","overviewPosition","pixels","pixelRatio","name","deferInit","staticProps","instance"],"mappings":"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","file":"wavesurfer.minimap.js","sourcesContent":["(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\"] = root[\"WaveSurfer\"] || {}, root[\"WaveSurfer\"][\"minimap\"] = factory();\n})(this, function() {\nreturn ","/*eslint no-console: [\"error\", { allow: [\"warn\"] }] */\n/**\n * @typedef {Object} MinimapPluginParams\n * @desc Extends the `WavesurferParams` wavesurfer was initialised with\n * @property {?string|HTMLElement} container CSS selector or HTML element where\n * the map should be rendered. By default it is simply appended\n * after the waveform.\n * @property {?boolean} deferInit Set to true to manually call\n * `initPlugin('minimap')`\n */\n\n/**\n * Renders a smaller version waveform as a minimap of the main waveform.\n *\n * @implements {PluginClass}\n * @extends {Observer}\n * @example\n * // es6\n * import MinimapPlugin from 'wavesurfer.minimap.js';\n *\n * // commonjs\n * var MinimapPlugin = require('wavesurfer.minimap.js');\n *\n * // if you are using <script> tags\n * var MinimapPlugin = window.WaveSurfer.minimap;\n *\n * // ... initialising wavesurfer with the plugin\n * var wavesurfer = WaveSurfer.create({\n * // wavesurfer options ...\n * plugins: [\n * MinimapPlugin.create({\n * // plugin options ...\n * })\n * ]\n * });\n */\nexport default class MinimapPlugin {\n /**\n * Minimap plugin definition factory\n *\n * This function must be used to create a plugin definition which can be\n * used by wavesurfer to correctly instantiate the plugin.\n *\n * @param {MinimapPluginParams} params parameters use to initialise the plugin\n * @return {PluginDefinition} an object representing the plugin\n */\n static create(params) {\n return {\n name: 'minimap',\n deferInit: params && params.deferInit ? params.deferInit : false,\n params: params,\n staticProps: {},\n instance: MinimapPlugin\n };\n }\n\n constructor(params, ws) {\n this.params = Object.assign(\n {},\n ws.params,\n {\n showRegions: false,\n regionsPluginName: params.regionsPluginName || 'regions',\n showOverview: false,\n overviewBorderColor: 'green',\n overviewBorderSize: 2,\n // the container should be different\n container: false,\n height: Math.max(Math.round(ws.params.height / 4), 20)\n },\n params,\n {\n scrollParent: false,\n fillParent: true\n }\n );\n // if container is a selector, get the element\n if (typeof params.container === 'string') {\n const el = document.querySelector(params.container);\n if (!el) {\n console.warn(\n `Wavesurfer minimap container ${params.container} was not found! The minimap will be automatically appended below the waveform.`\n );\n }\n this.params.container = el;\n }\n // if no container is specified add a new element and insert it\n if (!params.container) {\n this.params.container = ws.util.style(\n document.createElement('minimap'),\n {\n display: 'block'\n }\n );\n }\n this.drawer = new ws.Drawer(this.params.container, this.params);\n this.wavesurfer = ws;\n this.util = ws.util;\n /**\n * Minimap needs to listen for the `ready` and `waveform-ready` events\n * to work with the `MediaElement` backend. The moment the `ready` event\n * is called is different (and peaks would not load).\n *\n * @type {string}\n * @see https://github.com/katspaugh/wavesurfer.js/issues/736\n */\n this.renderEvent =\n ws.params.backend === 'MediaElement' ? 'waveform-ready' : 'ready';\n this.overviewRegion = null;\n this.regionsPlugin = this.wavesurfer[this.params.regionsPluginName];\n\n this.drawer.createWrapper();\n this.createElements();\n let isInitialised = false;\n\n // ws ready event listener\n this._onShouldRender = () => {\n // only bind the events in the first run\n if (!isInitialised) {\n this.bindWavesurferEvents();\n this.bindMinimapEvents();\n isInitialised = true;\n }\n // if there is no such element, append it to the container (below\n // the waveform)\n if (!document.body.contains(this.params.container)) {\n ws.container.insertBefore(this.params.container, null);\n }\n\n if (this.regionsPlugin && this.params.showRegions) {\n this.regions();\n }\n this.render();\n };\n\n this._onAudioprocess = currentTime => {\n this.drawer.progress(this.wavesurfer.backend.getPlayedPercents());\n };\n\n // ws seek event listener\n this._onSeek = () =>\n this.drawer.progress(ws.backend.getPlayedPercents());\n\n // event listeners for the overview region\n this._onScroll = e => {\n if (!this.draggingOverview) {\n this.moveOverviewRegion(e.target.scrollLeft / this.ratio);\n }\n };\n this._onMouseover = e => {\n if (this.draggingOverview) {\n this.draggingOverview = false;\n }\n };\n let prevWidth = 0;\n this._onResize = ws.util.debounce(() => {\n if (prevWidth != this.drawer.wrapper.clientWidth) {\n prevWidth = this.drawer.wrapper.clientWidth;\n this.render();\n this.drawer.progress(\n this.wavesurfer.backend.getPlayedPercents()\n );\n }\n });\n this._onZoom = e => {\n this.render();\n };\n this.wavesurfer.on('zoom', this._onZoom);\n }\n\n init() {\n if (this.wavesurfer.isReady) {\n this._onShouldRender();\n }\n this.wavesurfer.on(this.renderEvent, this._onShouldRender);\n }\n\n destroy() {\n window.removeEventListener('resize', this._onResize, true);\n window.removeEventListener('orientationchange', this._onResize, true);\n this.wavesurfer.drawer.wrapper.removeEventListener(\n 'mouseover',\n this._onMouseover\n );\n this.wavesurfer.un(this.renderEvent, this._onShouldRender);\n this.wavesurfer.un('seek', this._onSeek);\n this.wavesurfer.un('scroll', this._onScroll);\n this.wavesurfer.un('audioprocess', this._onAudioprocess);\n this.wavesurfer.un('zoom', this._onZoom);\n this.drawer.destroy();\n this.overviewRegion = null;\n this.unAll();\n }\n\n regions() {\n this.regions = {};\n\n this.wavesurfer.on('region-created', region => {\n this.regions[region.id] = region;\n this.drawer.wrapper && this.renderRegions();\n });\n\n this.wavesurfer.on('region-updated', region => {\n this.regions[region.id] = region;\n this.drawer.wrapper && this.renderRegions();\n });\n\n this.wavesurfer.on('region-removed', region => {\n delete this.regions[region.id];\n this.drawer.wrapper && this.renderRegions();\n });\n }\n\n renderRegions() {\n const regionElements = this.drawer.wrapper.querySelectorAll('region');\n let i;\n for (i = 0; i < regionElements.length; ++i) {\n this.drawer.wrapper.removeChild(regionElements[i]);\n }\n\n Object.keys(this.regions).forEach(id => {\n const region = this.regions[id];\n const width =\n this.getWidth() *\n ((region.end - region.start) / this.wavesurfer.getDuration());\n const left =\n this.getWidth() *\n (region.start / this.wavesurfer.getDuration());\n const regionElement = this.util.style(\n document.createElement('region'),\n {\n height: 'inherit',\n backgroundColor: region.color,\n width: width + 'px',\n left: left + 'px',\n display: 'block',\n position: 'absolute'\n }\n );\n regionElement.classList.add(id);\n this.drawer.wrapper.appendChild(regionElement);\n });\n }\n\n createElements() {\n this.drawer.createElements();\n if (this.params.showOverview) {\n this.overviewRegion = this.util.style(\n document.createElement('overview'),\n {\n top: 0,\n bottom: 0,\n width: '0px',\n display: 'block',\n position: 'absolute',\n cursor: 'move',\n border:\n this.params.overviewBorderSize +\n 'px solid ' +\n this.params.overviewBorderColor,\n zIndex: 2,\n opacity: this.params.overviewOpacity\n }\n );\n this.drawer.wrapper.appendChild(this.overviewRegion);\n }\n }\n\n bindWavesurferEvents() {\n window.addEventListener('resize', this._onResize, true);\n window.addEventListener('orientationchange', this._onResize, true);\n this.wavesurfer.on('audioprocess', this._onAudioprocess);\n this.wavesurfer.on('seek', this._onSeek);\n if (this.params.showOverview) {\n this.wavesurfer.on('scroll', this._onScroll);\n this.wavesurfer.drawer.wrapper.addEventListener(\n 'mouseover',\n this._onMouseover\n );\n }\n }\n\n bindMinimapEvents() {\n const positionMouseDown = {\n clientX: 0,\n clientY: 0\n };\n let relativePositionX = 0;\n let seek = true;\n\n // the following event listeners will be destroyed by using\n // this.unAll() and nullifying the DOM node references after\n // removing them\n if (this.params.interact) {\n this.drawer.wrapper.addEventListener('click', event => {\n this.fireEvent('click', event, this.drawer.handleEvent(event));\n });\n\n this.on('click', (event, position) => {\n if (seek) {\n this.drawer.progress(position);\n this.wavesurfer.seekAndCenter(position);\n } else {\n seek = true;\n }\n });\n }\n\n if (this.params.showOverview) {\n this.overviewRegion.addEventListener('mousedown', event => {\n this.draggingOverview = true;\n relativePositionX = event.layerX;\n positionMouseDown.clientX = event.clientX;\n positionMouseDown.clientY = event.clientY;\n });\n\n this.drawer.wrapper.addEventListener('mousemove', event => {\n if (this.draggingOverview) {\n this.moveOverviewRegion(\n event.clientX -\n this.drawer.container.getBoundingClientRect().left -\n relativePositionX\n );\n }\n });\n\n this.drawer.wrapper.addEventListener('mouseup', event => {\n if (\n positionMouseDown.clientX - event.clientX === 0 &&\n positionMouseDown.clientX - event.clientX === 0\n ) {\n seek = true;\n this.draggingOverview = false;\n } else if (this.draggingOverview) {\n seek = false;\n this.draggingOverview = false;\n }\n });\n }\n }\n\n render() {\n const len = this.drawer.getWidth();\n const peaks = this.wavesurfer.backend.getPeaks(len, 0, len);\n this.drawer.drawPeaks(peaks, len, 0, len);\n this.drawer.progress(this.wavesurfer.backend.getPlayedPercents());\n\n if (this.params.showOverview) {\n //get proportional width of overview region considering the respective\n //width of the drawers\n this.ratio = this.wavesurfer.drawer.width / this.drawer.width;\n this.waveShowedWidth = this.wavesurfer.drawer.width / this.ratio;\n this.waveWidth = this.wavesurfer.drawer.width;\n this.overviewWidth = this.drawer.container.offsetWidth / this.ratio;\n this.overviewPosition = 0;\n this.moveOverviewRegion(\n this.wavesurfer.drawer.wrapper.scrollLeft / this.ratio\n );\n this.overviewRegion.style.width = this.overviewWidth + 'px';\n }\n }\n\n moveOverviewRegion(pixels) {\n if (pixels < 0) {\n this.overviewPosition = 0;\n } else if (\n pixels + this.overviewWidth <\n this.drawer.container.offsetWidth\n ) {\n this.overviewPosition = pixels;\n } else {\n this.overviewPosition =\n this.drawer.container.offsetWidth - this.overviewWidth;\n }\n this.overviewRegion.style.left = this.overviewPosition + 'px';\n if (this.draggingOverview) {\n this.wavesurfer.drawer.wrapper.scrollLeft =\n this.overviewPosition * this.ratio;\n }\n }\n\n getWidth() {\n return this.drawer.width / this.params.pixelRatio;\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/plugin/minimap/index.js\");\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"wavesurfer.minimap.js","mappings":"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","sources":["webpack://WaveSurfer.[name]/webpack/universalModuleDefinition","webpack://WaveSurfer.[name]/./src/plugin/minimap/index.js","webpack://WaveSurfer.[name]/webpack/bootstrap","webpack://WaveSurfer.[name]/webpack/before-startup","webpack://WaveSurfer.[name]/webpack/startup","webpack://WaveSurfer.[name]/webpack/after-startup"],"sourcesContent":["(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\"] = root[\"WaveSurfer\"] || {}, root[\"WaveSurfer\"][\"minimap\"] = factory();\n})(self, function() {\nreturn ","/*eslint no-console: [\"error\", { allow: [\"warn\"] }] */\n/**\n * @typedef {Object} MinimapPluginParams\n * @desc Extends the `WavesurferParams` wavesurfer was initialised with\n * @property {?string|HTMLElement} container CSS selector or HTML element where\n * the map should be rendered. By default it is simply appended\n * after the waveform.\n * @property {?boolean} deferInit Set to true to manually call\n * `initPlugin('minimap')`\n */\n\n/**\n * Renders a smaller version waveform as a minimap of the main waveform.\n *\n * @implements {PluginClass}\n * @extends {Observer}\n * @example\n * // es6\n * import MinimapPlugin from 'wavesurfer.minimap.js';\n *\n * // commonjs\n * var MinimapPlugin = require('wavesurfer.minimap.js');\n *\n * // if you are using <script> tags\n * var MinimapPlugin = window.WaveSurfer.minimap;\n *\n * // ... initialising wavesurfer with the plugin\n * var wavesurfer = WaveSurfer.create({\n * // wavesurfer options ...\n * plugins: [\n * MinimapPlugin.create({\n * // plugin options ...\n * })\n * ]\n * });\n */\nexport default class MinimapPlugin {\n /**\n * Minimap plugin definition factory\n *\n * This function must be used to create a plugin definition which can be\n * used by wavesurfer to correctly instantiate the plugin.\n *\n * @param {MinimapPluginParams} params parameters use to initialise the plugin\n * @return {PluginDefinition} an object representing the plugin\n */\n static create(params) {\n return {\n name: 'minimap',\n deferInit: params && params.deferInit ? params.deferInit : false,\n params: params,\n staticProps: {},\n instance: MinimapPlugin\n };\n }\n\n constructor(params, ws) {\n this.params = Object.assign(\n {},\n ws.params,\n {\n showRegions: false,\n regionsPluginName: params.regionsPluginName || 'regions',\n showOverview: false,\n overviewBorderColor: 'green',\n overviewBorderSize: 2,\n // the container should be different\n container: false,\n height: Math.max(Math.round(ws.params.height / 4), 20)\n },\n params,\n {\n scrollParent: false,\n fillParent: true\n }\n );\n // if container is a selector, get the element\n if (typeof params.container === 'string') {\n const el = document.querySelector(params.container);\n if (!el) {\n console.warn(\n `Wavesurfer minimap container ${params.container} was not found! The minimap will be automatically appended below the waveform.`\n );\n }\n this.params.container = el;\n }\n // if no container is specified add a new element and insert it\n if (!params.container) {\n this.params.container = ws.util.style(\n document.createElement('minimap'),\n {\n display: 'block'\n }\n );\n }\n this.drawer = new ws.Drawer(this.params.container, this.params);\n this.wavesurfer = ws;\n this.util = ws.util;\n this.renderEvent = 'redraw';\n this.overviewRegion = null;\n this.regionsPlugin = this.wavesurfer[this.params.regionsPluginName];\n\n this.drawer.createWrapper();\n this.createElements();\n let isInitialised = false;\n\n // ws ready event listener\n this._onShouldRender = () => {\n // only bind the events in the first run\n if (!isInitialised) {\n this.bindWavesurferEvents();\n this.bindMinimapEvents();\n isInitialised = true;\n }\n // if there is no such element, append it to the container (below\n // the waveform)\n if (!document.body.contains(this.params.container)) {\n ws.container.insertBefore(this.params.container, null);\n }\n\n if (this.regionsPlugin && this.params.showRegions) {\n this.regions();\n }\n this.render();\n };\n\n this._onAudioprocess = currentTime => {\n this.drawer.progress(this.wavesurfer.backend.getPlayedPercents());\n };\n\n // ws seek event listener\n this._onSeek = () =>\n this.drawer.progress(ws.backend.getPlayedPercents());\n\n // event listeners for the overview region\n this._onScroll = e => {\n if (!this.draggingOverview) {\n const orientedTarget = this.util.withOrientation(e.target, this.wavesurfer.params.vertical);\n this.moveOverviewRegion(orientedTarget.scrollLeft / this.ratio);\n }\n };\n this._onMouseover = e => {\n if (this.draggingOverview) {\n this.draggingOverview = false;\n }\n };\n let prevWidth = 0;\n this._onResize = ws.util.debounce(() => {\n if (prevWidth != this.drawer.wrapper.clientWidth) {\n prevWidth = this.drawer.wrapper.clientWidth;\n this.render();\n this.drawer.progress(\n this.wavesurfer.backend.getPlayedPercents()\n );\n }\n });\n this._onZoom = e => {\n this.render();\n };\n this.wavesurfer.on('zoom', this._onZoom);\n }\n\n init() {\n if (this.wavesurfer.isReady) {\n this._onShouldRender();\n }\n this.wavesurfer.on(this.renderEvent, this._onShouldRender);\n }\n\n destroy() {\n window.removeEventListener('resize', this._onResize, true);\n window.removeEventListener('orientationchange', this._onResize, true);\n this.wavesurfer.drawer.wrapper.removeEventListener(\n 'mouseover',\n this._onMouseover\n );\n this.wavesurfer.un(this.renderEvent, this._onShouldRender);\n this.wavesurfer.un('seek', this._onSeek);\n this.wavesurfer.un('scroll', this._onScroll);\n this.wavesurfer.un('audioprocess', this._onAudioprocess);\n this.wavesurfer.un('zoom', this._onZoom);\n this.drawer.destroy();\n this.overviewRegion = null;\n this.unAll();\n }\n\n regions() {\n this.regions = {};\n\n this.wavesurfer.on('region-created', region => {\n this.regions[region.id] = region;\n this.drawer.wrapper && this.renderRegions();\n });\n\n this.wavesurfer.on('region-updated', region => {\n this.regions[region.id] = region;\n this.drawer.wrapper && this.renderRegions();\n });\n\n this.wavesurfer.on('region-removed', region => {\n delete this.regions[region.id];\n this.drawer.wrapper && this.renderRegions();\n });\n }\n\n renderRegions() {\n const regionElements = this.drawer.wrapper.querySelectorAll('region');\n let i;\n for (i = 0; i < regionElements.length; ++i) {\n this.drawer.wrapper.removeChild(regionElements[i]);\n }\n\n Object.keys(this.regions).forEach(id => {\n const region = this.regions[id];\n const width =\n this.getWidth() *\n ((region.end - region.start) / this.wavesurfer.getDuration());\n const left =\n this.getWidth() *\n (region.start / this.wavesurfer.getDuration());\n const regionElement = this.util.style(\n document.createElement('region'),\n {\n height: 'inherit',\n backgroundColor: region.color,\n width: width + 'px',\n left: left + 'px',\n display: 'block',\n position: 'absolute'\n }\n );\n regionElement.classList.add(id);\n this.drawer.wrapper.appendChild(regionElement);\n });\n }\n\n createElements() {\n this.drawer.createElements();\n if (this.params.showOverview) {\n this.overviewRegion = this.util.withOrientation(\n this.drawer.wrapper.appendChild(document.createElement('overview')),\n this.wavesurfer.params.vertical\n );\n\n this.util.style(\n this.overviewRegion,\n {\n top: 0,\n bottom: 0,\n width: '0px',\n display: 'block',\n position: 'absolute',\n cursor: 'move',\n border:\n this.params.overviewBorderSize +\n 'px solid ' +\n this.params.overviewBorderColor,\n zIndex: 2,\n opacity: this.params.overviewOpacity\n }\n );\n }\n }\n\n bindWavesurferEvents() {\n window.addEventListener('resize', this._onResize, true);\n window.addEventListener('orientationchange', this._onResize, true);\n this.wavesurfer.on('audioprocess', this._onAudioprocess);\n this.wavesurfer.on('seek', this._onSeek);\n if (this.params.showOverview) {\n this.wavesurfer.on('scroll', this._onScroll);\n this.wavesurfer.drawer.wrapper.addEventListener(\n 'mouseover',\n this._onMouseover\n );\n }\n }\n\n bindMinimapEvents() {\n const positionMouseDown = {\n clientX: 0,\n clientY: 0\n };\n let relativePositionX = 0;\n let seek = true;\n\n // the following event listeners will be destroyed by using\n // this.unAll() and nullifying the DOM node references after\n // removing them\n if (this.params.interact) {\n this.drawer.wrapper.addEventListener('click', event => {\n this.fireEvent('click', event, this.drawer.handleEvent(event));\n });\n\n this.on('click', (event, position) => {\n if (seek) {\n this.drawer.progress(position);\n this.wavesurfer.seekAndCenter(position);\n } else {\n seek = true;\n }\n });\n }\n\n if (this.params.showOverview) {\n this.overviewRegion.domElement.addEventListener('mousedown', e => {\n const event = this.util.withOrientation(e, this.wavesurfer.params.vertical);\n this.draggingOverview = true;\n relativePositionX = event.layerX;\n positionMouseDown.clientX = event.clientX;\n positionMouseDown.clientY = event.clientY;\n });\n\n this.drawer.wrapper.addEventListener('mousemove', e => {\n if (this.draggingOverview) {\n const event = this.util.withOrientation(e, this.wavesurfer.params.vertical);\n this.moveOverviewRegion(\n event.clientX -\n this.drawer.container.getBoundingClientRect().left -\n relativePositionX\n );\n }\n });\n\n this.drawer.wrapper.addEventListener('mouseup', e => {\n const event = this.util.withOrientation(e, this.wavesurfer.params.vertical);\n if (\n positionMouseDown.clientX - event.clientX === 0 &&\n positionMouseDown.clientX - event.clientX === 0\n ) {\n seek = true;\n this.draggingOverview = false;\n } else if (this.draggingOverview) {\n seek = false;\n this.draggingOverview = false;\n }\n });\n }\n }\n\n render() {\n const len = this.drawer.getWidth();\n const peaks = this.wavesurfer.backend.getPeaks(len, 0, len);\n this.drawer.drawPeaks(peaks, len, 0, len);\n this.drawer.progress(this.wavesurfer.backend.getPlayedPercents());\n\n if (this.params.showOverview) {\n //get proportional width of overview region considering the respective\n //width of the drawers\n this.ratio = this.wavesurfer.drawer.width / this.drawer.width;\n this.waveShowedWidth = this.wavesurfer.drawer.width / this.ratio;\n this.waveWidth = this.wavesurfer.drawer.width;\n this.overviewWidth = this.drawer.container.offsetWidth / this.ratio;\n this.overviewPosition = 0;\n this.moveOverviewRegion(\n this.wavesurfer.drawer.wrapper.scrollLeft / this.ratio\n );\n this.util.style(this.overviewRegion, {\n width: this.overviewWidth + 'px'\n });\n }\n }\n\n moveOverviewRegion(pixels) {\n if (pixels < 0) {\n this.overviewPosition = 0;\n } else if (\n pixels + this.overviewWidth <\n this.drawer.container.offsetWidth\n ) {\n this.overviewPosition = pixels;\n } else {\n this.overviewPosition =\n this.drawer.container.offsetWidth - this.overviewWidth;\n }\n this.util.style(this.overviewRegion, {\n left: this.overviewPosition + 'px'\n });\n if (this.draggingOverview) {\n this.wavesurfer.drawer.wrapper.scrollLeft =\n this.overviewPosition * this.ratio;\n }\n }\n\n getWidth() {\n return this.drawer.width / this.params.pixelRatio;\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/plugin/minimap/index.js\");\n",""],"names":["MinimapPlugin","params","ws","Object","assign","showRegions","regionsPluginName","showOverview","overviewBorderColor","overviewBorderSize","container","height","Math","max","round","scrollParent","fillParent","el","document","querySelector","console","warn","util","style","createElement","display","drawer","Drawer","wavesurfer","renderEvent","overviewRegion","regionsPlugin","createWrapper","createElements","isInitialised","_onShouldRender","bindWavesurferEvents","bindMinimapEvents","body","contains","insertBefore","regions","render","_onAudioprocess","currentTime","progress","backend","getPlayedPercents","_onSeek","_onScroll","e","draggingOverview","orientedTarget","withOrientation","target","vertical","moveOverviewRegion","scrollLeft","ratio","_onMouseover","prevWidth","_onResize","debounce","wrapper","clientWidth","_onZoom","on","isReady","window","removeEventListener","un","destroy","unAll","region","id","renderRegions","regionElements","querySelectorAll","i","length","removeChild","keys","forEach","width","getWidth","end","start","getDuration","left","regionElement","backgroundColor","color","position","classList","add","appendChild","top","bottom","cursor","border","zIndex","opacity","overviewOpacity","addEventListener","positionMouseDown","clientX","clientY","relativePositionX","seek","interact","event","fireEvent","handleEvent","seekAndCenter","domElement","layerX","getBoundingClientRect","len","peaks","getPeaks","drawPeaks","waveShowedWidth","waveWidth","overviewWidth","offsetWidth","overviewPosition","pixels","pixelRatio","name","deferInit","staticProps","instance"],"sourceRoot":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* wavesurfer.js minimap plugin
|
|
2
|
+
* wavesurfer.js minimap plugin 6.0.2 (2022-02-20)
|
|
3
3
|
* https://wavesurfer-js.org
|
|
4
4
|
* @license BSD-3-Clause
|
|
5
5
|
*/
|
|
6
|
-
!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define("WaveSurfer",[],r):"object"==typeof exports?exports.WaveSurfer=r():(e.WaveSurfer=e.WaveSurfer||{},e.WaveSurfer.minimap=r())}(
|
|
6
|
+
!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define("WaveSurfer",[],r):"object"==typeof exports?exports.WaveSurfer=r():(e.WaveSurfer=e.WaveSurfer||{},e.WaveSurfer.minimap=r())}(self,(function(){return(()=>{"use strict";var e={521:(e,r)=>{function i(e,r){for(var i=0;i<r.length;i++){var t=r[i];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(e,t.key,t)}}Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var t=function(){function e(r,i){var t=this;if(function(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}(this,e),this.params=Object.assign({},i.params,{showRegions:!1,regionsPluginName:r.regionsPluginName||"regions",showOverview:!1,overviewBorderColor:"green",overviewBorderSize:2,container:!1,height:Math.max(Math.round(i.params.height/4),20)},r,{scrollParent:!1,fillParent:!0}),"string"==typeof r.container){var n=document.querySelector(r.container);n||console.warn("Wavesurfer minimap container ".concat(r.container," was not found! The minimap will be automatically appended below the waveform.")),this.params.container=n}r.container||(this.params.container=i.util.style(document.createElement("minimap"),{display:"block"})),this.drawer=new i.Drawer(this.params.container,this.params),this.wavesurfer=i,this.util=i.util,this.renderEvent="redraw",this.overviewRegion=null,this.regionsPlugin=this.wavesurfer[this.params.regionsPluginName],this.drawer.createWrapper(),this.createElements();var s=!1;this._onShouldRender=function(){s||(t.bindWavesurferEvents(),t.bindMinimapEvents(),s=!0),document.body.contains(t.params.container)||i.container.insertBefore(t.params.container,null),t.regionsPlugin&&t.params.showRegions&&t.regions(),t.render()},this._onAudioprocess=function(e){t.drawer.progress(t.wavesurfer.backend.getPlayedPercents())},this._onSeek=function(){return t.drawer.progress(i.backend.getPlayedPercents())},this._onScroll=function(e){if(!t.draggingOverview){var r=t.util.withOrientation(e.target,t.wavesurfer.params.vertical);t.moveOverviewRegion(r.scrollLeft/t.ratio)}},this._onMouseover=function(e){t.draggingOverview&&(t.draggingOverview=!1)};var o=0;this._onResize=i.util.debounce((function(){o!=t.drawer.wrapper.clientWidth&&(o=t.drawer.wrapper.clientWidth,t.render(),t.drawer.progress(t.wavesurfer.backend.getPlayedPercents()))})),this._onZoom=function(e){t.render()},this.wavesurfer.on("zoom",this._onZoom)}var r,t,n;return r=e,n=[{key:"create",value:function(r){return{name:"minimap",deferInit:!(!r||!r.deferInit)&&r.deferInit,params:r,staticProps:{},instance:e}}}],(t=[{key:"init",value:function(){this.wavesurfer.isReady&&this._onShouldRender(),this.wavesurfer.on(this.renderEvent,this._onShouldRender)}},{key:"destroy",value:function(){window.removeEventListener("resize",this._onResize,!0),window.removeEventListener("orientationchange",this._onResize,!0),this.wavesurfer.drawer.wrapper.removeEventListener("mouseover",this._onMouseover),this.wavesurfer.un(this.renderEvent,this._onShouldRender),this.wavesurfer.un("seek",this._onSeek),this.wavesurfer.un("scroll",this._onScroll),this.wavesurfer.un("audioprocess",this._onAudioprocess),this.wavesurfer.un("zoom",this._onZoom),this.drawer.destroy(),this.overviewRegion=null,this.unAll()}},{key:"regions",value:function(){var e=this;this.regions={},this.wavesurfer.on("region-created",(function(r){e.regions[r.id]=r,e.drawer.wrapper&&e.renderRegions()})),this.wavesurfer.on("region-updated",(function(r){e.regions[r.id]=r,e.drawer.wrapper&&e.renderRegions()})),this.wavesurfer.on("region-removed",(function(r){delete e.regions[r.id],e.drawer.wrapper&&e.renderRegions()}))}},{key:"renderRegions",value:function(){var e,r=this,i=this.drawer.wrapper.querySelectorAll("region");for(e=0;e<i.length;++e)this.drawer.wrapper.removeChild(i[e]);Object.keys(this.regions).forEach((function(e){var i=r.regions[e],t=r.getWidth()*((i.end-i.start)/r.wavesurfer.getDuration()),n=r.getWidth()*(i.start/r.wavesurfer.getDuration()),s=r.util.style(document.createElement("region"),{height:"inherit",backgroundColor:i.color,width:t+"px",left:n+"px",display:"block",position:"absolute"});s.classList.add(e),r.drawer.wrapper.appendChild(s)}))}},{key:"createElements",value:function(){this.drawer.createElements(),this.params.showOverview&&(this.overviewRegion=this.util.withOrientation(this.drawer.wrapper.appendChild(document.createElement("overview")),this.wavesurfer.params.vertical),this.util.style(this.overviewRegion,{top:0,bottom:0,width:"0px",display:"block",position:"absolute",cursor:"move",border:this.params.overviewBorderSize+"px solid "+this.params.overviewBorderColor,zIndex:2,opacity:this.params.overviewOpacity}))}},{key:"bindWavesurferEvents",value:function(){window.addEventListener("resize",this._onResize,!0),window.addEventListener("orientationchange",this._onResize,!0),this.wavesurfer.on("audioprocess",this._onAudioprocess),this.wavesurfer.on("seek",this._onSeek),this.params.showOverview&&(this.wavesurfer.on("scroll",this._onScroll),this.wavesurfer.drawer.wrapper.addEventListener("mouseover",this._onMouseover))}},{key:"bindMinimapEvents",value:function(){var e=this,r={clientX:0,clientY:0},i=0,t=!0;this.params.interact&&(this.drawer.wrapper.addEventListener("click",(function(r){e.fireEvent("click",r,e.drawer.handleEvent(r))})),this.on("click",(function(r,i){t?(e.drawer.progress(i),e.wavesurfer.seekAndCenter(i)):t=!0}))),this.params.showOverview&&(this.overviewRegion.domElement.addEventListener("mousedown",(function(t){var n=e.util.withOrientation(t,e.wavesurfer.params.vertical);e.draggingOverview=!0,i=n.layerX,r.clientX=n.clientX,r.clientY=n.clientY})),this.drawer.wrapper.addEventListener("mousemove",(function(r){if(e.draggingOverview){var t=e.util.withOrientation(r,e.wavesurfer.params.vertical);e.moveOverviewRegion(t.clientX-e.drawer.container.getBoundingClientRect().left-i)}})),this.drawer.wrapper.addEventListener("mouseup",(function(i){var n=e.util.withOrientation(i,e.wavesurfer.params.vertical);r.clientX-n.clientX==0&&r.clientX-n.clientX==0?(t=!0,e.draggingOverview=!1):e.draggingOverview&&(t=!1,e.draggingOverview=!1)})))}},{key:"render",value:function(){var e=this.drawer.getWidth(),r=this.wavesurfer.backend.getPeaks(e,0,e);this.drawer.drawPeaks(r,e,0,e),this.drawer.progress(this.wavesurfer.backend.getPlayedPercents()),this.params.showOverview&&(this.ratio=this.wavesurfer.drawer.width/this.drawer.width,this.waveShowedWidth=this.wavesurfer.drawer.width/this.ratio,this.waveWidth=this.wavesurfer.drawer.width,this.overviewWidth=this.drawer.container.offsetWidth/this.ratio,this.overviewPosition=0,this.moveOverviewRegion(this.wavesurfer.drawer.wrapper.scrollLeft/this.ratio),this.util.style(this.overviewRegion,{width:this.overviewWidth+"px"}))}},{key:"moveOverviewRegion",value:function(e){e<0?this.overviewPosition=0:e+this.overviewWidth<this.drawer.container.offsetWidth?this.overviewPosition=e:this.overviewPosition=this.drawer.container.offsetWidth-this.overviewWidth,this.util.style(this.overviewRegion,{left:this.overviewPosition+"px"}),this.draggingOverview&&(this.wavesurfer.drawer.wrapper.scrollLeft=this.overviewPosition*this.ratio)}},{key:"getWidth",value:function(){return this.drawer.width/this.params.pixelRatio}}])&&i(r.prototype,t),n&&i(r,n),Object.defineProperty(r,"prototype",{writable:!1}),e}();r.default=t,e.exports=r.default}},r={};var i=function i(t){var n=r[t];if(void 0!==n)return n.exports;var s=r[t]={exports:{}};return e[t](s,s.exports,i),s.exports}(521);return i})()}));
|
|
7
7
|
//# sourceMappingURL=wavesurfer.minimap.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://WaveSurfer.[name]/webpack/universalModuleDefinition","webpack://WaveSurfer.[name]/./src/plugin/minimap/index.js","webpack://WaveSurfer.[name]/webpack/bootstrap","webpack://WaveSurfer.[name]/webpack/startup"],"names":["root","factory","exports","module","define","amd","this","MinimapPlugin","params","ws","Object","assign","showRegions","regionsPluginName","showOverview","overviewBorderColor","overviewBorderSize","container","height","Math","max","round","scrollParent","fillParent","el","document","querySelector","console","warn","util","style","createElement","display","drawer","Drawer","wavesurfer","renderEvent","backend","overviewRegion","regionsPlugin","createWrapper","createElements","isInitialised","_onShouldRender","bindWavesurferEvents","bindMinimapEvents","body","contains","insertBefore","regions","render","_onAudioprocess","currentTime","progress","getPlayedPercents","_onSeek","_onScroll","e","draggingOverview","moveOverviewRegion","target","scrollLeft","ratio","_onMouseover","prevWidth","_onResize","debounce","wrapper","clientWidth","_onZoom","on","name","deferInit","staticProps","instance","isReady","window","removeEventListener","un","destroy","unAll","region","id","renderRegions","i","regionElements","querySelectorAll","length","removeChild","keys","forEach","width","getWidth","end","start","getDuration","left","regionElement","backgroundColor","color","position","classList","add","appendChild","top","bottom","cursor","border","zIndex","opacity","overviewOpacity","addEventListener","positionMouseDown","clientX","clientY","relativePositionX","seek","interact","event","fireEvent","handleEvent","seekAndCenter","layerX","getBoundingClientRect","len","peaks","getPeaks","drawPeaks","waveShowedWidth","waveWidth","overviewWidth","offsetWidth","overviewPosition","pixels","pixelRatio","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__"],"mappings":"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","file":"wavesurfer.minimap.min.js","sourcesContent":["(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\"] = root[\"WaveSurfer\"] || {}, root[\"WaveSurfer\"][\"minimap\"] = factory();\n})(this, function() {\nreturn ","/*eslint no-console: [\"error\", { allow: [\"warn\"] }] */\n/**\n * @typedef {Object} MinimapPluginParams\n * @desc Extends the `WavesurferParams` wavesurfer was initialised with\n * @property {?string|HTMLElement} container CSS selector or HTML element where\n * the map should be rendered. By default it is simply appended\n * after the waveform.\n * @property {?boolean} deferInit Set to true to manually call\n * `initPlugin('minimap')`\n */\n\n/**\n * Renders a smaller version waveform as a minimap of the main waveform.\n *\n * @implements {PluginClass}\n * @extends {Observer}\n * @example\n * // es6\n * import MinimapPlugin from 'wavesurfer.minimap.js';\n *\n * // commonjs\n * var MinimapPlugin = require('wavesurfer.minimap.js');\n *\n * // if you are using <script> tags\n * var MinimapPlugin = window.WaveSurfer.minimap;\n *\n * // ... initialising wavesurfer with the plugin\n * var wavesurfer = WaveSurfer.create({\n * // wavesurfer options ...\n * plugins: [\n * MinimapPlugin.create({\n * // plugin options ...\n * })\n * ]\n * });\n */\nexport default class MinimapPlugin {\n /**\n * Minimap plugin definition factory\n *\n * This function must be used to create a plugin definition which can be\n * used by wavesurfer to correctly instantiate the plugin.\n *\n * @param {MinimapPluginParams} params parameters use to initialise the plugin\n * @return {PluginDefinition} an object representing the plugin\n */\n static create(params) {\n return {\n name: 'minimap',\n deferInit: params && params.deferInit ? params.deferInit : false,\n params: params,\n staticProps: {},\n instance: MinimapPlugin\n };\n }\n\n constructor(params, ws) {\n this.params = Object.assign(\n {},\n ws.params,\n {\n showRegions: false,\n regionsPluginName: params.regionsPluginName || 'regions',\n showOverview: false,\n overviewBorderColor: 'green',\n overviewBorderSize: 2,\n // the container should be different\n container: false,\n height: Math.max(Math.round(ws.params.height / 4), 20)\n },\n params,\n {\n scrollParent: false,\n fillParent: true\n }\n );\n // if container is a selector, get the element\n if (typeof params.container === 'string') {\n const el = document.querySelector(params.container);\n if (!el) {\n console.warn(\n `Wavesurfer minimap container ${params.container} was not found! The minimap will be automatically appended below the waveform.`\n );\n }\n this.params.container = el;\n }\n // if no container is specified add a new element and insert it\n if (!params.container) {\n this.params.container = ws.util.style(\n document.createElement('minimap'),\n {\n display: 'block'\n }\n );\n }\n this.drawer = new ws.Drawer(this.params.container, this.params);\n this.wavesurfer = ws;\n this.util = ws.util;\n /**\n * Minimap needs to listen for the `ready` and `waveform-ready` events\n * to work with the `MediaElement` backend. The moment the `ready` event\n * is called is different (and peaks would not load).\n *\n * @type {string}\n * @see https://github.com/katspaugh/wavesurfer.js/issues/736\n */\n this.renderEvent =\n ws.params.backend === 'MediaElement' ? 'waveform-ready' : 'ready';\n this.overviewRegion = null;\n this.regionsPlugin = this.wavesurfer[this.params.regionsPluginName];\n\n this.drawer.createWrapper();\n this.createElements();\n let isInitialised = false;\n\n // ws ready event listener\n this._onShouldRender = () => {\n // only bind the events in the first run\n if (!isInitialised) {\n this.bindWavesurferEvents();\n this.bindMinimapEvents();\n isInitialised = true;\n }\n // if there is no such element, append it to the container (below\n // the waveform)\n if (!document.body.contains(this.params.container)) {\n ws.container.insertBefore(this.params.container, null);\n }\n\n if (this.regionsPlugin && this.params.showRegions) {\n this.regions();\n }\n this.render();\n };\n\n this._onAudioprocess = currentTime => {\n this.drawer.progress(this.wavesurfer.backend.getPlayedPercents());\n };\n\n // ws seek event listener\n this._onSeek = () =>\n this.drawer.progress(ws.backend.getPlayedPercents());\n\n // event listeners for the overview region\n this._onScroll = e => {\n if (!this.draggingOverview) {\n this.moveOverviewRegion(e.target.scrollLeft / this.ratio);\n }\n };\n this._onMouseover = e => {\n if (this.draggingOverview) {\n this.draggingOverview = false;\n }\n };\n let prevWidth = 0;\n this._onResize = ws.util.debounce(() => {\n if (prevWidth != this.drawer.wrapper.clientWidth) {\n prevWidth = this.drawer.wrapper.clientWidth;\n this.render();\n this.drawer.progress(\n this.wavesurfer.backend.getPlayedPercents()\n );\n }\n });\n this._onZoom = e => {\n this.render();\n };\n this.wavesurfer.on('zoom', this._onZoom);\n }\n\n init() {\n if (this.wavesurfer.isReady) {\n this._onShouldRender();\n }\n this.wavesurfer.on(this.renderEvent, this._onShouldRender);\n }\n\n destroy() {\n window.removeEventListener('resize', this._onResize, true);\n window.removeEventListener('orientationchange', this._onResize, true);\n this.wavesurfer.drawer.wrapper.removeEventListener(\n 'mouseover',\n this._onMouseover\n );\n this.wavesurfer.un(this.renderEvent, this._onShouldRender);\n this.wavesurfer.un('seek', this._onSeek);\n this.wavesurfer.un('scroll', this._onScroll);\n this.wavesurfer.un('audioprocess', this._onAudioprocess);\n this.wavesurfer.un('zoom', this._onZoom);\n this.drawer.destroy();\n this.overviewRegion = null;\n this.unAll();\n }\n\n regions() {\n this.regions = {};\n\n this.wavesurfer.on('region-created', region => {\n this.regions[region.id] = region;\n this.drawer.wrapper && this.renderRegions();\n });\n\n this.wavesurfer.on('region-updated', region => {\n this.regions[region.id] = region;\n this.drawer.wrapper && this.renderRegions();\n });\n\n this.wavesurfer.on('region-removed', region => {\n delete this.regions[region.id];\n this.drawer.wrapper && this.renderRegions();\n });\n }\n\n renderRegions() {\n const regionElements = this.drawer.wrapper.querySelectorAll('region');\n let i;\n for (i = 0; i < regionElements.length; ++i) {\n this.drawer.wrapper.removeChild(regionElements[i]);\n }\n\n Object.keys(this.regions).forEach(id => {\n const region = this.regions[id];\n const width =\n this.getWidth() *\n ((region.end - region.start) / this.wavesurfer.getDuration());\n const left =\n this.getWidth() *\n (region.start / this.wavesurfer.getDuration());\n const regionElement = this.util.style(\n document.createElement('region'),\n {\n height: 'inherit',\n backgroundColor: region.color,\n width: width + 'px',\n left: left + 'px',\n display: 'block',\n position: 'absolute'\n }\n );\n regionElement.classList.add(id);\n this.drawer.wrapper.appendChild(regionElement);\n });\n }\n\n createElements() {\n this.drawer.createElements();\n if (this.params.showOverview) {\n this.overviewRegion = this.util.style(\n document.createElement('overview'),\n {\n top: 0,\n bottom: 0,\n width: '0px',\n display: 'block',\n position: 'absolute',\n cursor: 'move',\n border:\n this.params.overviewBorderSize +\n 'px solid ' +\n this.params.overviewBorderColor,\n zIndex: 2,\n opacity: this.params.overviewOpacity\n }\n );\n this.drawer.wrapper.appendChild(this.overviewRegion);\n }\n }\n\n bindWavesurferEvents() {\n window.addEventListener('resize', this._onResize, true);\n window.addEventListener('orientationchange', this._onResize, true);\n this.wavesurfer.on('audioprocess', this._onAudioprocess);\n this.wavesurfer.on('seek', this._onSeek);\n if (this.params.showOverview) {\n this.wavesurfer.on('scroll', this._onScroll);\n this.wavesurfer.drawer.wrapper.addEventListener(\n 'mouseover',\n this._onMouseover\n );\n }\n }\n\n bindMinimapEvents() {\n const positionMouseDown = {\n clientX: 0,\n clientY: 0\n };\n let relativePositionX = 0;\n let seek = true;\n\n // the following event listeners will be destroyed by using\n // this.unAll() and nullifying the DOM node references after\n // removing them\n if (this.params.interact) {\n this.drawer.wrapper.addEventListener('click', event => {\n this.fireEvent('click', event, this.drawer.handleEvent(event));\n });\n\n this.on('click', (event, position) => {\n if (seek) {\n this.drawer.progress(position);\n this.wavesurfer.seekAndCenter(position);\n } else {\n seek = true;\n }\n });\n }\n\n if (this.params.showOverview) {\n this.overviewRegion.addEventListener('mousedown', event => {\n this.draggingOverview = true;\n relativePositionX = event.layerX;\n positionMouseDown.clientX = event.clientX;\n positionMouseDown.clientY = event.clientY;\n });\n\n this.drawer.wrapper.addEventListener('mousemove', event => {\n if (this.draggingOverview) {\n this.moveOverviewRegion(\n event.clientX -\n this.drawer.container.getBoundingClientRect().left -\n relativePositionX\n );\n }\n });\n\n this.drawer.wrapper.addEventListener('mouseup', event => {\n if (\n positionMouseDown.clientX - event.clientX === 0 &&\n positionMouseDown.clientX - event.clientX === 0\n ) {\n seek = true;\n this.draggingOverview = false;\n } else if (this.draggingOverview) {\n seek = false;\n this.draggingOverview = false;\n }\n });\n }\n }\n\n render() {\n const len = this.drawer.getWidth();\n const peaks = this.wavesurfer.backend.getPeaks(len, 0, len);\n this.drawer.drawPeaks(peaks, len, 0, len);\n this.drawer.progress(this.wavesurfer.backend.getPlayedPercents());\n\n if (this.params.showOverview) {\n //get proportional width of overview region considering the respective\n //width of the drawers\n this.ratio = this.wavesurfer.drawer.width / this.drawer.width;\n this.waveShowedWidth = this.wavesurfer.drawer.width / this.ratio;\n this.waveWidth = this.wavesurfer.drawer.width;\n this.overviewWidth = this.drawer.container.offsetWidth / this.ratio;\n this.overviewPosition = 0;\n this.moveOverviewRegion(\n this.wavesurfer.drawer.wrapper.scrollLeft / this.ratio\n );\n this.overviewRegion.style.width = this.overviewWidth + 'px';\n }\n }\n\n moveOverviewRegion(pixels) {\n if (pixels < 0) {\n this.overviewPosition = 0;\n } else if (\n pixels + this.overviewWidth <\n this.drawer.container.offsetWidth\n ) {\n this.overviewPosition = pixels;\n } else {\n this.overviewPosition =\n this.drawer.container.offsetWidth - this.overviewWidth;\n }\n this.overviewRegion.style.left = this.overviewPosition + 'px';\n if (this.draggingOverview) {\n this.wavesurfer.drawer.wrapper.scrollLeft =\n this.overviewPosition * this.ratio;\n }\n }\n\n getWidth() {\n return this.drawer.width / this.params.pixelRatio;\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(521);\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"wavesurfer.minimap.min.js","mappings":"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","sources":["webpack://WaveSurfer.[name]/webpack/universalModuleDefinition","webpack://WaveSurfer.[name]/./src/plugin/minimap/index.js","webpack://WaveSurfer.[name]/webpack/bootstrap","webpack://WaveSurfer.[name]/webpack/startup"],"sourcesContent":["(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\"] = root[\"WaveSurfer\"] || {}, root[\"WaveSurfer\"][\"minimap\"] = factory();\n})(self, function() {\nreturn ","/*eslint no-console: [\"error\", { allow: [\"warn\"] }] */\n/**\n * @typedef {Object} MinimapPluginParams\n * @desc Extends the `WavesurferParams` wavesurfer was initialised with\n * @property {?string|HTMLElement} container CSS selector or HTML element where\n * the map should be rendered. By default it is simply appended\n * after the waveform.\n * @property {?boolean} deferInit Set to true to manually call\n * `initPlugin('minimap')`\n */\n\n/**\n * Renders a smaller version waveform as a minimap of the main waveform.\n *\n * @implements {PluginClass}\n * @extends {Observer}\n * @example\n * // es6\n * import MinimapPlugin from 'wavesurfer.minimap.js';\n *\n * // commonjs\n * var MinimapPlugin = require('wavesurfer.minimap.js');\n *\n * // if you are using <script> tags\n * var MinimapPlugin = window.WaveSurfer.minimap;\n *\n * // ... initialising wavesurfer with the plugin\n * var wavesurfer = WaveSurfer.create({\n * // wavesurfer options ...\n * plugins: [\n * MinimapPlugin.create({\n * // plugin options ...\n * })\n * ]\n * });\n */\nexport default class MinimapPlugin {\n /**\n * Minimap plugin definition factory\n *\n * This function must be used to create a plugin definition which can be\n * used by wavesurfer to correctly instantiate the plugin.\n *\n * @param {MinimapPluginParams} params parameters use to initialise the plugin\n * @return {PluginDefinition} an object representing the plugin\n */\n static create(params) {\n return {\n name: 'minimap',\n deferInit: params && params.deferInit ? params.deferInit : false,\n params: params,\n staticProps: {},\n instance: MinimapPlugin\n };\n }\n\n constructor(params, ws) {\n this.params = Object.assign(\n {},\n ws.params,\n {\n showRegions: false,\n regionsPluginName: params.regionsPluginName || 'regions',\n showOverview: false,\n overviewBorderColor: 'green',\n overviewBorderSize: 2,\n // the container should be different\n container: false,\n height: Math.max(Math.round(ws.params.height / 4), 20)\n },\n params,\n {\n scrollParent: false,\n fillParent: true\n }\n );\n // if container is a selector, get the element\n if (typeof params.container === 'string') {\n const el = document.querySelector(params.container);\n if (!el) {\n console.warn(\n `Wavesurfer minimap container ${params.container} was not found! The minimap will be automatically appended below the waveform.`\n );\n }\n this.params.container = el;\n }\n // if no container is specified add a new element and insert it\n if (!params.container) {\n this.params.container = ws.util.style(\n document.createElement('minimap'),\n {\n display: 'block'\n }\n );\n }\n this.drawer = new ws.Drawer(this.params.container, this.params);\n this.wavesurfer = ws;\n this.util = ws.util;\n this.renderEvent = 'redraw';\n this.overviewRegion = null;\n this.regionsPlugin = this.wavesurfer[this.params.regionsPluginName];\n\n this.drawer.createWrapper();\n this.createElements();\n let isInitialised = false;\n\n // ws ready event listener\n this._onShouldRender = () => {\n // only bind the events in the first run\n if (!isInitialised) {\n this.bindWavesurferEvents();\n this.bindMinimapEvents();\n isInitialised = true;\n }\n // if there is no such element, append it to the container (below\n // the waveform)\n if (!document.body.contains(this.params.container)) {\n ws.container.insertBefore(this.params.container, null);\n }\n\n if (this.regionsPlugin && this.params.showRegions) {\n this.regions();\n }\n this.render();\n };\n\n this._onAudioprocess = currentTime => {\n this.drawer.progress(this.wavesurfer.backend.getPlayedPercents());\n };\n\n // ws seek event listener\n this._onSeek = () =>\n this.drawer.progress(ws.backend.getPlayedPercents());\n\n // event listeners for the overview region\n this._onScroll = e => {\n if (!this.draggingOverview) {\n const orientedTarget = this.util.withOrientation(e.target, this.wavesurfer.params.vertical);\n this.moveOverviewRegion(orientedTarget.scrollLeft / this.ratio);\n }\n };\n this._onMouseover = e => {\n if (this.draggingOverview) {\n this.draggingOverview = false;\n }\n };\n let prevWidth = 0;\n this._onResize = ws.util.debounce(() => {\n if (prevWidth != this.drawer.wrapper.clientWidth) {\n prevWidth = this.drawer.wrapper.clientWidth;\n this.render();\n this.drawer.progress(\n this.wavesurfer.backend.getPlayedPercents()\n );\n }\n });\n this._onZoom = e => {\n this.render();\n };\n this.wavesurfer.on('zoom', this._onZoom);\n }\n\n init() {\n if (this.wavesurfer.isReady) {\n this._onShouldRender();\n }\n this.wavesurfer.on(this.renderEvent, this._onShouldRender);\n }\n\n destroy() {\n window.removeEventListener('resize', this._onResize, true);\n window.removeEventListener('orientationchange', this._onResize, true);\n this.wavesurfer.drawer.wrapper.removeEventListener(\n 'mouseover',\n this._onMouseover\n );\n this.wavesurfer.un(this.renderEvent, this._onShouldRender);\n this.wavesurfer.un('seek', this._onSeek);\n this.wavesurfer.un('scroll', this._onScroll);\n this.wavesurfer.un('audioprocess', this._onAudioprocess);\n this.wavesurfer.un('zoom', this._onZoom);\n this.drawer.destroy();\n this.overviewRegion = null;\n this.unAll();\n }\n\n regions() {\n this.regions = {};\n\n this.wavesurfer.on('region-created', region => {\n this.regions[region.id] = region;\n this.drawer.wrapper && this.renderRegions();\n });\n\n this.wavesurfer.on('region-updated', region => {\n this.regions[region.id] = region;\n this.drawer.wrapper && this.renderRegions();\n });\n\n this.wavesurfer.on('region-removed', region => {\n delete this.regions[region.id];\n this.drawer.wrapper && this.renderRegions();\n });\n }\n\n renderRegions() {\n const regionElements = this.drawer.wrapper.querySelectorAll('region');\n let i;\n for (i = 0; i < regionElements.length; ++i) {\n this.drawer.wrapper.removeChild(regionElements[i]);\n }\n\n Object.keys(this.regions).forEach(id => {\n const region = this.regions[id];\n const width =\n this.getWidth() *\n ((region.end - region.start) / this.wavesurfer.getDuration());\n const left =\n this.getWidth() *\n (region.start / this.wavesurfer.getDuration());\n const regionElement = this.util.style(\n document.createElement('region'),\n {\n height: 'inherit',\n backgroundColor: region.color,\n width: width + 'px',\n left: left + 'px',\n display: 'block',\n position: 'absolute'\n }\n );\n regionElement.classList.add(id);\n this.drawer.wrapper.appendChild(regionElement);\n });\n }\n\n createElements() {\n this.drawer.createElements();\n if (this.params.showOverview) {\n this.overviewRegion = this.util.withOrientation(\n this.drawer.wrapper.appendChild(document.createElement('overview')),\n this.wavesurfer.params.vertical\n );\n\n this.util.style(\n this.overviewRegion,\n {\n top: 0,\n bottom: 0,\n width: '0px',\n display: 'block',\n position: 'absolute',\n cursor: 'move',\n border:\n this.params.overviewBorderSize +\n 'px solid ' +\n this.params.overviewBorderColor,\n zIndex: 2,\n opacity: this.params.overviewOpacity\n }\n );\n }\n }\n\n bindWavesurferEvents() {\n window.addEventListener('resize', this._onResize, true);\n window.addEventListener('orientationchange', this._onResize, true);\n this.wavesurfer.on('audioprocess', this._onAudioprocess);\n this.wavesurfer.on('seek', this._onSeek);\n if (this.params.showOverview) {\n this.wavesurfer.on('scroll', this._onScroll);\n this.wavesurfer.drawer.wrapper.addEventListener(\n 'mouseover',\n this._onMouseover\n );\n }\n }\n\n bindMinimapEvents() {\n const positionMouseDown = {\n clientX: 0,\n clientY: 0\n };\n let relativePositionX = 0;\n let seek = true;\n\n // the following event listeners will be destroyed by using\n // this.unAll() and nullifying the DOM node references after\n // removing them\n if (this.params.interact) {\n this.drawer.wrapper.addEventListener('click', event => {\n this.fireEvent('click', event, this.drawer.handleEvent(event));\n });\n\n this.on('click', (event, position) => {\n if (seek) {\n this.drawer.progress(position);\n this.wavesurfer.seekAndCenter(position);\n } else {\n seek = true;\n }\n });\n }\n\n if (this.params.showOverview) {\n this.overviewRegion.domElement.addEventListener('mousedown', e => {\n const event = this.util.withOrientation(e, this.wavesurfer.params.vertical);\n this.draggingOverview = true;\n relativePositionX = event.layerX;\n positionMouseDown.clientX = event.clientX;\n positionMouseDown.clientY = event.clientY;\n });\n\n this.drawer.wrapper.addEventListener('mousemove', e => {\n if (this.draggingOverview) {\n const event = this.util.withOrientation(e, this.wavesurfer.params.vertical);\n this.moveOverviewRegion(\n event.clientX -\n this.drawer.container.getBoundingClientRect().left -\n relativePositionX\n );\n }\n });\n\n this.drawer.wrapper.addEventListener('mouseup', e => {\n const event = this.util.withOrientation(e, this.wavesurfer.params.vertical);\n if (\n positionMouseDown.clientX - event.clientX === 0 &&\n positionMouseDown.clientX - event.clientX === 0\n ) {\n seek = true;\n this.draggingOverview = false;\n } else if (this.draggingOverview) {\n seek = false;\n this.draggingOverview = false;\n }\n });\n }\n }\n\n render() {\n const len = this.drawer.getWidth();\n const peaks = this.wavesurfer.backend.getPeaks(len, 0, len);\n this.drawer.drawPeaks(peaks, len, 0, len);\n this.drawer.progress(this.wavesurfer.backend.getPlayedPercents());\n\n if (this.params.showOverview) {\n //get proportional width of overview region considering the respective\n //width of the drawers\n this.ratio = this.wavesurfer.drawer.width / this.drawer.width;\n this.waveShowedWidth = this.wavesurfer.drawer.width / this.ratio;\n this.waveWidth = this.wavesurfer.drawer.width;\n this.overviewWidth = this.drawer.container.offsetWidth / this.ratio;\n this.overviewPosition = 0;\n this.moveOverviewRegion(\n this.wavesurfer.drawer.wrapper.scrollLeft / this.ratio\n );\n this.util.style(this.overviewRegion, {\n width: this.overviewWidth + 'px'\n });\n }\n }\n\n moveOverviewRegion(pixels) {\n if (pixels < 0) {\n this.overviewPosition = 0;\n } else if (\n pixels + this.overviewWidth <\n this.drawer.container.offsetWidth\n ) {\n this.overviewPosition = pixels;\n } else {\n this.overviewPosition =\n this.drawer.container.offsetWidth - this.overviewWidth;\n }\n this.util.style(this.overviewRegion, {\n left: this.overviewPosition + 'px'\n });\n if (this.draggingOverview) {\n this.wavesurfer.drawer.wrapper.scrollLeft =\n this.overviewPosition * this.ratio;\n }\n }\n\n getWidth() {\n return this.drawer.width / this.params.pixelRatio;\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(521);\n"],"names":["root","factory","exports","module","define","amd","self","MinimapPlugin","params","ws","this","Object","assign","showRegions","regionsPluginName","showOverview","overviewBorderColor","overviewBorderSize","container","height","Math","max","round","scrollParent","fillParent","el","document","querySelector","console","warn","util","style","createElement","display","drawer","Drawer","wavesurfer","renderEvent","overviewRegion","regionsPlugin","createWrapper","createElements","isInitialised","_onShouldRender","bindWavesurferEvents","bindMinimapEvents","body","contains","insertBefore","regions","render","_onAudioprocess","currentTime","progress","backend","getPlayedPercents","_onSeek","_onScroll","e","draggingOverview","orientedTarget","withOrientation","target","vertical","moveOverviewRegion","scrollLeft","ratio","_onMouseover","prevWidth","_onResize","debounce","wrapper","clientWidth","_onZoom","on","name","deferInit","staticProps","instance","isReady","window","removeEventListener","un","destroy","unAll","region","id","renderRegions","i","regionElements","querySelectorAll","length","removeChild","keys","forEach","width","getWidth","end","start","getDuration","left","regionElement","backgroundColor","color","position","classList","add","appendChild","top","bottom","cursor","border","zIndex","opacity","overviewOpacity","addEventListener","positionMouseDown","clientX","clientY","relativePositionX","seek","interact","event","fireEvent","handleEvent","seekAndCenter","domElement","layerX","getBoundingClientRect","len","peaks","getPeaks","drawPeaks","waveShowedWidth","waveWidth","overviewWidth","offsetWidth","overviewPosition","pixels","pixelRatio","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__"],"sourceRoot":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* wavesurfer.js playhead plugin
|
|
2
|
+
* wavesurfer.js playhead plugin 6.0.2 (2022-02-20)
|
|
3
3
|
* https://wavesurfer-js.org
|
|
4
4
|
* @license BSD-3-Clause
|
|
5
5
|
*/
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
exports["WaveSurfer"] = factory();
|
|
13
13
|
else
|
|
14
14
|
root["WaveSurfer"] = root["WaveSurfer"] || {}, root["WaveSurfer"]["playhead"] = factory();
|
|
15
|
-
})(
|
|
15
|
+
})(self, function() {
|
|
16
16
|
return /******/ (() => { // webpackBootstrap
|
|
17
17
|
/******/ "use strict";
|
|
18
18
|
/******/ var __webpack_modules__ = ({
|
|
@@ -28,13 +28,13 @@ return /******/ (() => { // webpackBootstrap
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", ({
|
|
29
29
|
value: true
|
|
30
30
|
}));
|
|
31
|
-
exports
|
|
31
|
+
exports["default"] = void 0;
|
|
32
32
|
|
|
33
33
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
34
34
|
|
|
35
35
|
function _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, descriptor.key, descriptor); } }
|
|
36
36
|
|
|
37
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
37
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
40
|
* The playhead plugin separates the notion of the currently playing position from
|
|
@@ -279,7 +279,7 @@ var PlayheadPlugin = /*#__PURE__*/function () {
|
|
|
279
279
|
return PlayheadPlugin;
|
|
280
280
|
}();
|
|
281
281
|
|
|
282
|
-
exports
|
|
282
|
+
exports["default"] = PlayheadPlugin;
|
|
283
283
|
module.exports = exports.default;
|
|
284
284
|
|
|
285
285
|
/***/ })
|