wavesurfer.js 6.3.0 → 6.5.0
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/LICENSE +1 -1
- package/README.md +36 -47
- package/dist/plugin/wavesurfer.cursor.js +45 -54
- 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 +24 -51
- 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 +62 -74
- 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 +8 -16
- 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 +48 -63
- 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 +20 -69
- 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 +6 -30
- 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 +203 -260
- 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 +55 -147
- 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 +53 -88
- 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 +34 -54
- 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 +490 -1003
- 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 +11 -11
- package/src/mediaelement.js +3 -0
- package/src/plugin/cursor/index.js +15 -3
- package/src/plugin/markers/index.js +40 -1
- package/src/plugin/regions/index.js +4 -0
- package/src/plugin/regions/region.js +76 -1
- package/src/util/silence-mode.js +7 -0
- package/src/wavesurfer.js +4 -0
- package/CHANGES.md +0 -482
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wavesurfer.microphone.min.js","mappings":"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","sources":["webpack://WaveSurfer/webpack/universalModuleDefinition","webpack://WaveSurfer/./src/plugin/microphone/index.js","webpack://WaveSurfer/webpack/bootstrap","webpack://WaveSurfer/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, () => {\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
|
+
{"version":3,"file":"wavesurfer.microphone.min.js","mappings":"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","sources":["webpack://WaveSurfer/webpack/universalModuleDefinition","webpack://WaveSurfer/./src/plugin/microphone/index.js","webpack://WaveSurfer/webpack/bootstrap","webpack://WaveSurfer/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, () => {\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","_classCallCheck","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","key","value","name","deferInit","instance","on","un","stop","_this2","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","default","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* wavesurfer.js minimap plugin 6.
|
|
2
|
+
* wavesurfer.js minimap plugin 6.5.0 (2023-03-11)
|
|
3
3
|
* https://wavesurfer-js.org
|
|
4
4
|
* @license BSD-3-Clause
|
|
5
5
|
*/
|
|
@@ -29,15 +29,13 @@ Object.defineProperty(exports, "__esModule", ({
|
|
|
29
29
|
value: true
|
|
30
30
|
}));
|
|
31
31
|
exports["default"] = void 0;
|
|
32
|
-
|
|
32
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
33
33
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
34
|
-
|
|
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
|
-
|
|
34
|
+
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, _toPropertyKey(descriptor.key), descriptor); } }
|
|
37
35
|
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
|
-
|
|
36
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
37
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
39
38
|
/*eslint no-console: ["error", { allow: ["warn"] }] */
|
|
40
|
-
|
|
41
39
|
/**
|
|
42
40
|
* @typedef {Object} MinimapPluginParams
|
|
43
41
|
* @desc Extends the `WavesurferParams` wavesurfer was initialised with
|
|
@@ -47,7 +45,6 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
|
|
|
47
45
|
* @property {?boolean} deferInit Set to true to manually call
|
|
48
46
|
* `initPlugin('minimap')`
|
|
49
47
|
*/
|
|
50
|
-
|
|
51
48
|
/**
|
|
52
49
|
* Renders a smaller version waveform as a minimap of the main waveform.
|
|
53
50
|
*
|
|
@@ -76,9 +73,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
|
|
|
76
73
|
var MinimapPlugin = /*#__PURE__*/function () {
|
|
77
74
|
function MinimapPlugin(params, ws) {
|
|
78
75
|
var _this = this;
|
|
79
|
-
|
|
80
76
|
_classCallCheck(this, MinimapPlugin);
|
|
81
|
-
|
|
82
77
|
this.params = Object.assign({}, ws.params, {
|
|
83
78
|
showRegions: false,
|
|
84
79
|
regionsPluginName: params.regionsPluginName || 'regions',
|
|
@@ -91,25 +86,21 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
91
86
|
}, params, {
|
|
92
87
|
scrollParent: false,
|
|
93
88
|
fillParent: true
|
|
94
|
-
});
|
|
95
|
-
|
|
89
|
+
});
|
|
90
|
+
// if container is a selector, get the element
|
|
96
91
|
if (typeof params.container === 'string') {
|
|
97
92
|
var el = document.querySelector(params.container);
|
|
98
|
-
|
|
99
93
|
if (!el) {
|
|
100
94
|
console.warn("Wavesurfer minimap container ".concat(params.container, " was not found! The minimap will be automatically appended below the waveform."));
|
|
101
95
|
}
|
|
102
|
-
|
|
103
96
|
this.params.container = el;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
|
|
97
|
+
}
|
|
98
|
+
// if no container is specified add a new element and insert it
|
|
107
99
|
if (!params.container) {
|
|
108
100
|
this.params.container = ws.util.style(document.createElement('minimap'), {
|
|
109
101
|
display: 'block'
|
|
110
102
|
});
|
|
111
103
|
}
|
|
112
|
-
|
|
113
104
|
this.drawer = new ws.Drawer(this.params.container, this.params);
|
|
114
105
|
this.wavesurfer = ws;
|
|
115
106
|
this.util = ws.util;
|
|
@@ -119,97 +110,78 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
119
110
|
this.regionsPlugin = this.wavesurfer[this.params.regionsPluginName];
|
|
120
111
|
this.drawer.createWrapper();
|
|
121
112
|
this.createElements();
|
|
122
|
-
var isInitialised = false;
|
|
113
|
+
var isInitialised = false;
|
|
123
114
|
|
|
115
|
+
// ws ready event listener
|
|
124
116
|
this._onShouldRender = function () {
|
|
125
117
|
// only bind the events in the first run
|
|
126
118
|
if (!isInitialised) {
|
|
127
119
|
_this.bindWavesurferEvents();
|
|
128
|
-
|
|
129
120
|
_this.bindMinimapEvents();
|
|
130
|
-
|
|
131
121
|
isInitialised = true;
|
|
132
|
-
}
|
|
122
|
+
}
|
|
123
|
+
// if there is no such element, append it to the container (below
|
|
133
124
|
// the waveform)
|
|
134
|
-
|
|
135
|
-
|
|
136
125
|
if (!document.body.contains(_this.params.container)) {
|
|
137
126
|
ws.container.insertBefore(_this.params.container, null);
|
|
138
127
|
}
|
|
139
|
-
|
|
140
128
|
if (_this.regionsPlugin && _this.params.showRegions) {
|
|
141
129
|
_this.drawRegions();
|
|
142
130
|
}
|
|
143
|
-
|
|
144
131
|
_this.render();
|
|
145
132
|
};
|
|
146
|
-
|
|
147
133
|
this._onAudioprocess = function (currentTime) {
|
|
148
134
|
_this.drawer.progress(_this.wavesurfer.backend.getPlayedPercents());
|
|
149
|
-
};
|
|
150
|
-
|
|
135
|
+
};
|
|
151
136
|
|
|
137
|
+
// ws seek event listener
|
|
152
138
|
this._onSeek = function () {
|
|
153
139
|
return _this.drawer.progress(ws.backend.getPlayedPercents());
|
|
154
|
-
};
|
|
155
|
-
|
|
140
|
+
};
|
|
156
141
|
|
|
142
|
+
// event listeners for the overview region
|
|
157
143
|
this._onScroll = function (e) {
|
|
158
144
|
if (!_this.draggingOverview) {
|
|
159
145
|
var orientedTarget = _this.util.withOrientation(e.target, _this.wavesurfer.params.vertical);
|
|
160
|
-
|
|
161
146
|
_this.moveOverviewRegion(orientedTarget.scrollLeft / _this.ratio);
|
|
162
147
|
}
|
|
163
148
|
};
|
|
164
|
-
|
|
165
149
|
this._onMouseover = function (e) {
|
|
166
150
|
if (_this.draggingOverview) {
|
|
167
151
|
_this.draggingOverview = false;
|
|
168
152
|
}
|
|
169
153
|
};
|
|
170
|
-
|
|
171
154
|
var prevWidth = 0;
|
|
172
155
|
this._onResize = ws.util.debounce(function () {
|
|
173
156
|
if (prevWidth != _this.drawer.wrapper.clientWidth) {
|
|
174
157
|
prevWidth = _this.drawer.wrapper.clientWidth;
|
|
175
|
-
|
|
176
158
|
_this.render();
|
|
177
|
-
|
|
178
159
|
_this.drawer.progress(_this.wavesurfer.backend.getPlayedPercents());
|
|
179
160
|
}
|
|
180
161
|
});
|
|
181
|
-
|
|
182
162
|
this._onLoading = function (percent) {
|
|
183
163
|
if (percent >= 100) {
|
|
184
164
|
_this.cleared = false;
|
|
185
165
|
return;
|
|
186
166
|
}
|
|
187
|
-
|
|
188
167
|
if (_this.cleared === true) {
|
|
189
168
|
return;
|
|
190
169
|
}
|
|
191
|
-
|
|
192
170
|
var len = _this.drawer.getWidth();
|
|
193
|
-
|
|
194
171
|
_this.drawer.drawPeaks([0], len, 0, len);
|
|
195
|
-
|
|
196
172
|
_this.cleared = true;
|
|
197
173
|
};
|
|
198
|
-
|
|
199
174
|
this._onZoom = function (e) {
|
|
200
175
|
_this.render();
|
|
201
176
|
};
|
|
202
|
-
|
|
203
177
|
this.wavesurfer.on('zoom', this._onZoom);
|
|
204
178
|
}
|
|
205
|
-
|
|
206
179
|
_createClass(MinimapPlugin, [{
|
|
207
180
|
key: "init",
|
|
208
181
|
value: function init() {
|
|
209
182
|
if (this.wavesurfer.isReady) {
|
|
210
183
|
this._onShouldRender();
|
|
211
184
|
}
|
|
212
|
-
|
|
213
185
|
this.wavesurfer.on(this.renderEvent, this._onShouldRender);
|
|
214
186
|
}
|
|
215
187
|
}, {
|
|
@@ -232,7 +204,6 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
232
204
|
key: "drawRegions",
|
|
233
205
|
value: function drawRegions() {
|
|
234
206
|
var _this2 = this;
|
|
235
|
-
|
|
236
207
|
this.regions = {};
|
|
237
208
|
this.wavesurfer.on('region-created', function (region) {
|
|
238
209
|
_this2.regions[region.id] = region;
|
|
@@ -251,21 +222,15 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
251
222
|
key: "renderRegions",
|
|
252
223
|
value: function renderRegions() {
|
|
253
224
|
var _this3 = this;
|
|
254
|
-
|
|
255
225
|
var regionElements = this.drawer.wrapper.querySelectorAll('region');
|
|
256
226
|
var i;
|
|
257
|
-
|
|
258
227
|
for (i = 0; i < regionElements.length; ++i) {
|
|
259
228
|
this.drawer.wrapper.removeChild(regionElements[i]);
|
|
260
229
|
}
|
|
261
|
-
|
|
262
230
|
Object.keys(this.regions).forEach(function (id) {
|
|
263
231
|
var region = _this3.regions[id];
|
|
264
|
-
|
|
265
232
|
var width = _this3.getWidth() * ((region.end - region.start) / _this3.wavesurfer.getDuration());
|
|
266
|
-
|
|
267
233
|
var left = _this3.getWidth() * (region.start / _this3.wavesurfer.getDuration());
|
|
268
|
-
|
|
269
234
|
var regionElement = _this3.util.style(document.createElement('region'), {
|
|
270
235
|
height: 'inherit',
|
|
271
236
|
backgroundColor: region.color,
|
|
@@ -274,9 +239,7 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
274
239
|
display: 'block',
|
|
275
240
|
position: 'absolute'
|
|
276
241
|
});
|
|
277
|
-
|
|
278
242
|
regionElement.classList.add(id);
|
|
279
|
-
|
|
280
243
|
_this3.drawer.wrapper.appendChild(regionElement);
|
|
281
244
|
});
|
|
282
245
|
}
|
|
@@ -284,7 +247,6 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
284
247
|
key: "createElements",
|
|
285
248
|
value: function createElements() {
|
|
286
249
|
this.drawer.createElements();
|
|
287
|
-
|
|
288
250
|
if (this.params.showOverview) {
|
|
289
251
|
this.overviewRegion = this.util.withOrientation(this.drawer.wrapper.appendChild(document.createElement('overview')), this.wavesurfer.params.vertical);
|
|
290
252
|
this.util.style(this.overviewRegion, {
|
|
@@ -308,7 +270,6 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
308
270
|
this.wavesurfer.on('audioprocess', this._onAudioprocess);
|
|
309
271
|
this.wavesurfer.on('seek', this._onSeek);
|
|
310
272
|
this.wavesurfer.on('loading', this._onLoading);
|
|
311
|
-
|
|
312
273
|
if (this.params.showOverview) {
|
|
313
274
|
this.wavesurfer.on('scroll', this._onScroll);
|
|
314
275
|
this.wavesurfer.drawer.wrapper.addEventListener('mouseover', this._onMouseover);
|
|
@@ -318,16 +279,16 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
318
279
|
key: "bindMinimapEvents",
|
|
319
280
|
value: function bindMinimapEvents() {
|
|
320
281
|
var _this4 = this;
|
|
321
|
-
|
|
322
282
|
var positionMouseDown = {
|
|
323
283
|
clientX: 0,
|
|
324
284
|
clientY: 0
|
|
325
285
|
};
|
|
326
286
|
var relativePositionX = 0;
|
|
327
|
-
var seek = true;
|
|
287
|
+
var seek = true;
|
|
288
|
+
|
|
289
|
+
// the following event listeners will be destroyed by using
|
|
328
290
|
// this.unAll() and nullifying the DOM node references after
|
|
329
291
|
// removing them
|
|
330
|
-
|
|
331
292
|
if (this.params.interact) {
|
|
332
293
|
this.drawer.wrapper.addEventListener('click', function (event) {
|
|
333
294
|
_this4.fireEvent('click', event, _this4.drawer.handleEvent(event));
|
|
@@ -335,18 +296,15 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
335
296
|
this.on('click', function (event, position) {
|
|
336
297
|
if (seek) {
|
|
337
298
|
_this4.drawer.progress(position);
|
|
338
|
-
|
|
339
299
|
_this4.wavesurfer.seekAndCenter(position);
|
|
340
300
|
} else {
|
|
341
301
|
seek = true;
|
|
342
302
|
}
|
|
343
303
|
});
|
|
344
304
|
}
|
|
345
|
-
|
|
346
305
|
if (this.params.showOverview) {
|
|
347
306
|
this.overviewRegion.domElement.addEventListener('mousedown', function (e) {
|
|
348
307
|
var event = _this4.util.withOrientation(e, _this4.wavesurfer.params.vertical);
|
|
349
|
-
|
|
350
308
|
_this4.draggingOverview = true;
|
|
351
309
|
relativePositionX = event.layerX;
|
|
352
310
|
positionMouseDown.clientX = event.clientX;
|
|
@@ -355,13 +313,11 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
355
313
|
this.drawer.wrapper.addEventListener('mousemove', function (e) {
|
|
356
314
|
if (_this4.draggingOverview) {
|
|
357
315
|
var event = _this4.util.withOrientation(e, _this4.wavesurfer.params.vertical);
|
|
358
|
-
|
|
359
316
|
_this4.moveOverviewRegion(event.clientX - _this4.drawer.container.getBoundingClientRect().left - relativePositionX);
|
|
360
317
|
}
|
|
361
318
|
});
|
|
362
319
|
this.drawer.wrapper.addEventListener('mouseup', function (e) {
|
|
363
320
|
var event = _this4.util.withOrientation(e, _this4.wavesurfer.params.vertical);
|
|
364
|
-
|
|
365
321
|
if (positionMouseDown.clientX - event.clientX === 0 && positionMouseDown.clientX - event.clientX === 0) {
|
|
366
322
|
seek = true;
|
|
367
323
|
_this4.draggingOverview = false;
|
|
@@ -379,7 +335,6 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
379
335
|
var peaks = this.wavesurfer.backend.getPeaks(len, 0, len);
|
|
380
336
|
this.drawer.drawPeaks(peaks, len, 0, len);
|
|
381
337
|
this.drawer.progress(this.wavesurfer.backend.getPlayedPercents());
|
|
382
|
-
|
|
383
338
|
if (this.params.showOverview) {
|
|
384
339
|
//get proportional width of overview region considering the respective
|
|
385
340
|
//width of the drawers
|
|
@@ -404,11 +359,9 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
404
359
|
} else {
|
|
405
360
|
this.overviewPosition = this.drawer.container.offsetWidth - this.overviewWidth;
|
|
406
361
|
}
|
|
407
|
-
|
|
408
362
|
this.util.style(this.overviewRegion, {
|
|
409
363
|
left: this.overviewPosition + 'px'
|
|
410
364
|
});
|
|
411
|
-
|
|
412
365
|
if (this.draggingOverview) {
|
|
413
366
|
this.wavesurfer.drawer.wrapper.scrollLeft = this.overviewPosition * this.ratio;
|
|
414
367
|
}
|
|
@@ -440,10 +393,8 @@ var MinimapPlugin = /*#__PURE__*/function () {
|
|
|
440
393
|
};
|
|
441
394
|
}
|
|
442
395
|
}]);
|
|
443
|
-
|
|
444
396
|
return MinimapPlugin;
|
|
445
397
|
}();
|
|
446
|
-
|
|
447
398
|
exports["default"] = MinimapPlugin;
|
|
448
399
|
module.exports = exports.default;
|
|
449
400
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wavesurfer.minimap.js","mappings":"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","sources":["webpack://WaveSurfer/webpack/universalModuleDefinition","webpack://WaveSurfer/./src/plugin/minimap/index.js","webpack://WaveSurfer/webpack/bootstrap","webpack://WaveSurfer/webpack/before-startup","webpack://WaveSurfer/webpack/startup","webpack://WaveSurfer/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, () => {\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.cleared = false;\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.drawRegions();\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._onLoading = percent => {\n if (percent >= 100) {\n this.cleared = false;\n return;\n }\n if (this.cleared === true) {\n return;\n }\n const len = this.drawer.getWidth();\n this.drawer.drawPeaks([0], len, 0, len);\n this.cleared = true;\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.wavesurfer.un('loading', this._onLoading);\n this.drawer.destroy();\n this.overviewRegion = null;\n this.unAll();\n }\n\n drawRegions() {\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 this.wavesurfer.on('loading', this._onLoading);\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","cleared","renderEvent","overviewRegion","regionsPlugin","createWrapper","createElements","isInitialised","_onShouldRender","bindWavesurferEvents","bindMinimapEvents","body","contains","insertBefore","drawRegions","render","_onAudioprocess","currentTime","progress","backend","getPlayedPercents","_onSeek","_onScroll","e","draggingOverview","orientedTarget","withOrientation","target","vertical","moveOverviewRegion","scrollLeft","ratio","_onMouseover","prevWidth","_onResize","debounce","wrapper","clientWidth","_onLoading","percent","len","getWidth","drawPeaks","_onZoom","on","isReady","window","removeEventListener","un","destroy","unAll","regions","region","id","renderRegions","regionElements","querySelectorAll","i","length","removeChild","keys","forEach","width","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","peaks","getPeaks","waveShowedWidth","waveWidth","overviewWidth","offsetWidth","overviewPosition","pixels","pixelRatio","name","deferInit","staticProps","instance"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"wavesurfer.minimap.js","mappings":"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","sources":["webpack://WaveSurfer/webpack/universalModuleDefinition","webpack://WaveSurfer/./src/plugin/minimap/index.js","webpack://WaveSurfer/webpack/bootstrap","webpack://WaveSurfer/webpack/before-startup","webpack://WaveSurfer/webpack/startup","webpack://WaveSurfer/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, () => {\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.cleared = false;\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.drawRegions();\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._onLoading = percent => {\n if (percent >= 100) {\n this.cleared = false;\n return;\n }\n if (this.cleared === true) {\n return;\n }\n const len = this.drawer.getWidth();\n this.drawer.drawPeaks([0], len, 0, len);\n this.cleared = true;\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.wavesurfer.un('loading', this._onLoading);\n this.drawer.destroy();\n this.overviewRegion = null;\n this.unAll();\n }\n\n drawRegions() {\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 this.wavesurfer.on('loading', this._onLoading);\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","_this","_classCallCheck","Object","assign","showRegions","regionsPluginName","showOverview","overviewBorderColor","overviewBorderSize","container","height","Math","max","round","scrollParent","fillParent","el","document","querySelector","console","warn","concat","util","style","createElement","display","drawer","Drawer","wavesurfer","cleared","renderEvent","overviewRegion","regionsPlugin","createWrapper","createElements","isInitialised","_onShouldRender","bindWavesurferEvents","bindMinimapEvents","body","contains","insertBefore","drawRegions","render","_onAudioprocess","currentTime","progress","backend","getPlayedPercents","_onSeek","_onScroll","e","draggingOverview","orientedTarget","withOrientation","target","vertical","moveOverviewRegion","scrollLeft","ratio","_onMouseover","prevWidth","_onResize","debounce","wrapper","clientWidth","_onLoading","percent","len","getWidth","drawPeaks","_onZoom","on","_createClass","key","value","init","isReady","destroy","window","removeEventListener","un","unAll","_this2","regions","region","id","renderRegions","_this3","regionElements","querySelectorAll","i","length","removeChild","keys","forEach","width","end","start","getDuration","left","regionElement","backgroundColor","color","position","classList","add","appendChild","top","bottom","cursor","border","zIndex","opacity","overviewOpacity","addEventListener","_this4","positionMouseDown","clientX","clientY","relativePositionX","seek","interact","event","fireEvent","handleEvent","seekAndCenter","domElement","layerX","getBoundingClientRect","peaks","getPeaks","waveShowedWidth","waveWidth","overviewWidth","offsetWidth","overviewPosition","pixels","pixelRatio","create","name","deferInit","staticProps","instance","exports","default","module"],"sourceRoot":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* wavesurfer.js minimap plugin 6.
|
|
2
|
+
* wavesurfer.js minimap plugin 6.5.0 (2023-03-11)
|
|
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())}(self,(()=>(()=>{"use strict";var e={521:(e,r)=>{function i(e,r){for(var
|
|
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,(()=>(()=>{"use strict";var e={521:(e,r)=>{function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function t(e,r){for(var t=0;t<r.length;t++){var n=r[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,(o=n.key,s=void 0,s=function(e,r){if("object"!==i(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,r||"default");if("object"!==i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}(o,"string"),"symbol"===i(s)?s:String(s)),n)}var o,s}Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var n=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.cleared=!1,this.renderEvent="redraw",this.overviewRegion=null,this.regionsPlugin=this.wavesurfer[this.params.regionsPluginName],this.drawer.createWrapper(),this.createElements();var o=!1;this._onShouldRender=function(){o||(t.bindWavesurferEvents(),t.bindMinimapEvents(),o=!0),document.body.contains(t.params.container)||i.container.insertBefore(t.params.container,null),t.regionsPlugin&&t.params.showRegions&&t.drawRegions(),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 s=0;this._onResize=i.util.debounce((function(){s!=t.drawer.wrapper.clientWidth&&(s=t.drawer.wrapper.clientWidth,t.render(),t.drawer.progress(t.wavesurfer.backend.getPlayedPercents()))})),this._onLoading=function(e){if(e>=100)t.cleared=!1;else if(!0!==t.cleared){var r=t.drawer.getWidth();t.drawer.drawPeaks([0],r,0,r),t.cleared=!0}},this._onZoom=function(e){t.render()},this.wavesurfer.on("zoom",this._onZoom)}var r,i,n;return r=e,n=[{key:"create",value:function(r){return{name:"minimap",deferInit:!(!r||!r.deferInit)&&r.deferInit,params:r,staticProps:{},instance:e}}}],(i=[{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.wavesurfer.un("loading",this._onLoading),this.drawer.destroy(),this.overviewRegion=null,this.unAll()}},{key:"drawRegions",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()),o=r.util.style(document.createElement("region"),{height:"inherit",backgroundColor:i.color,width:t+"px",left:n+"px",display:"block",position:"absolute"});o.classList.add(e),r.drawer.wrapper.appendChild(o)}))}},{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.wavesurfer.on("loading",this._onLoading),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}}])&&t(r.prototype,i),n&&t(r,n),Object.defineProperty(r,"prototype",{writable:!1}),e}();r.default=n,e.exports=r.default}},r={};var i=function i(t){var n=r[t];if(void 0!==n)return n.exports;var o=r[t]={exports:{}};return e[t](o,o.exports,i),o.exports}(521);return i})()));
|
|
7
7
|
//# sourceMappingURL=wavesurfer.minimap.min.js.map
|