wavesurfer.js 6.5.1 → 7.0.0-alpha.1

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.
Files changed (132) hide show
  1. package/.eslintrc.json +24 -0
  2. package/.prettierrc +8 -0
  3. package/README.md +26 -117
  4. package/dist/base-plugin.d.ts +10 -0
  5. package/dist/base-plugin.js +13 -0
  6. package/dist/decoder.d.ts +10 -0
  7. package/dist/decoder.js +43 -0
  8. package/dist/event-emitter.d.ts +11 -0
  9. package/dist/event-emitter.js +21 -0
  10. package/dist/fetcher.d.ts +4 -0
  11. package/dist/fetcher.js +17 -0
  12. package/dist/index.d.ts +92 -0
  13. package/dist/index.js +166 -0
  14. package/dist/player-webaudio.d.ts +8 -0
  15. package/dist/player-webaudio.js +31 -0
  16. package/dist/player.d.ts +16 -0
  17. package/dist/player.js +40 -0
  18. package/dist/plugins/regions.d.ts +48 -0
  19. package/dist/plugins/regions.js +183 -0
  20. package/dist/renderer.d.ts +34 -0
  21. package/dist/renderer.js +193 -0
  22. package/dist/timer.d.ts +10 -0
  23. package/dist/timer.js +17 -0
  24. package/examples/audio.ogg +0 -0
  25. package/examples/bars.js +19 -0
  26. package/examples/basic.js +8 -0
  27. package/examples/gradient.js +28 -0
  28. package/examples/regions.js +63 -0
  29. package/examples/video.js +19 -0
  30. package/examples/webaudio.js +14 -0
  31. package/package.json +19 -99
  32. package/src/base-plugin.ts +20 -0
  33. package/src/decoder.ts +41 -0
  34. package/src/event-emitter.ts +35 -0
  35. package/src/fetcher.ts +7 -0
  36. package/src/index.ts +252 -0
  37. package/src/player-webaudio.ts +34 -0
  38. package/src/player.ts +50 -0
  39. package/src/plugins/regions.ts +240 -0
  40. package/src/renderer.ts +250 -0
  41. package/src/timer.ts +27 -0
  42. package/tsconfig.json +105 -0
  43. package/tutorial/index.html +47 -0
  44. package/tutorial/src/editor.js +70 -0
  45. package/tutorial/src/init.js +66 -0
  46. package/tutorial/src/url.js +25 -0
  47. package/tutorial/style.css +211 -0
  48. package/yarn-error.log +1049 -0
  49. package/LICENSE +0 -29
  50. package/dist/plugin/wavesurfer.cursor.js +0 -418
  51. package/dist/plugin/wavesurfer.cursor.js.map +0 -1
  52. package/dist/plugin/wavesurfer.cursor.min.js +0 -7
  53. package/dist/plugin/wavesurfer.cursor.min.js.map +0 -1
  54. package/dist/plugin/wavesurfer.elan.js +0 -381
  55. package/dist/plugin/wavesurfer.elan.js.map +0 -1
  56. package/dist/plugin/wavesurfer.elan.min.js +0 -7
  57. package/dist/plugin/wavesurfer.elan.min.js.map +0 -1
  58. package/dist/plugin/wavesurfer.markers.js +0 -520
  59. package/dist/plugin/wavesurfer.markers.js.map +0 -1
  60. package/dist/plugin/wavesurfer.markers.min.js +0 -7
  61. package/dist/plugin/wavesurfer.markers.min.js.map +0 -1
  62. package/dist/plugin/wavesurfer.mediasession.js +0 -181
  63. package/dist/plugin/wavesurfer.mediasession.js.map +0 -1
  64. package/dist/plugin/wavesurfer.mediasession.min.js +0 -7
  65. package/dist/plugin/wavesurfer.mediasession.min.js.map +0 -1
  66. package/dist/plugin/wavesurfer.microphone.js +0 -466
  67. package/dist/plugin/wavesurfer.microphone.js.map +0 -1
  68. package/dist/plugin/wavesurfer.microphone.min.js +0 -7
  69. package/dist/plugin/wavesurfer.microphone.min.js.map +0 -1
  70. package/dist/plugin/wavesurfer.minimap.js +0 -440
  71. package/dist/plugin/wavesurfer.minimap.js.map +0 -1
  72. package/dist/plugin/wavesurfer.minimap.min.js +0 -7
  73. package/dist/plugin/wavesurfer.minimap.min.js.map +0 -1
  74. package/dist/plugin/wavesurfer.playhead.js +0 -300
  75. package/dist/plugin/wavesurfer.playhead.js.map +0 -1
  76. package/dist/plugin/wavesurfer.playhead.min.js +0 -7
  77. package/dist/plugin/wavesurfer.playhead.min.js.map +0 -1
  78. package/dist/plugin/wavesurfer.regions.js +0 -1335
  79. package/dist/plugin/wavesurfer.regions.js.map +0 -1
  80. package/dist/plugin/wavesurfer.regions.min.js +0 -7
  81. package/dist/plugin/wavesurfer.regions.min.js.map +0 -1
  82. package/dist/plugin/wavesurfer.spectrogram.js +0 -736
  83. package/dist/plugin/wavesurfer.spectrogram.js.map +0 -1
  84. package/dist/plugin/wavesurfer.spectrogram.min.js +0 -7
  85. package/dist/plugin/wavesurfer.spectrogram.min.js.map +0 -1
  86. package/dist/plugin/wavesurfer.timeline.js +0 -649
  87. package/dist/plugin/wavesurfer.timeline.js.map +0 -1
  88. package/dist/plugin/wavesurfer.timeline.min.js +0 -7
  89. package/dist/plugin/wavesurfer.timeline.min.js.map +0 -1
  90. package/dist/wavesurfer-html-init.js +0 -381
  91. package/dist/wavesurfer-html-init.js.map +0 -1
  92. package/dist/wavesurfer-html-init.min.js +0 -7
  93. package/dist/wavesurfer-html-init.min.js.map +0 -1
  94. package/dist/wavesurfer.js +0 -6145
  95. package/dist/wavesurfer.js.map +0 -1
  96. package/dist/wavesurfer.min.js +0 -7
  97. package/dist/wavesurfer.min.js.map +0 -1
  98. package/src/drawer.canvasentry.js +0 -427
  99. package/src/drawer.js +0 -413
  100. package/src/drawer.multicanvas.js +0 -617
  101. package/src/html-init.js +0 -241
  102. package/src/mediaelement-webaudio.js +0 -77
  103. package/src/mediaelement.js +0 -443
  104. package/src/peakcache.js +0 -127
  105. package/src/plugin/cursor/index.js +0 -350
  106. package/src/plugin/elan/index.js +0 -307
  107. package/src/plugin/markers/index.js +0 -436
  108. package/src/plugin/mediasession/index.js +0 -94
  109. package/src/plugin/microphone/index.js +0 -415
  110. package/src/plugin/minimap/index.js +0 -403
  111. package/src/plugin/playhead/index.js +0 -226
  112. package/src/plugin/regions/index.js +0 -478
  113. package/src/plugin/regions/region.js +0 -875
  114. package/src/plugin/spectrogram/fft.js +0 -222
  115. package/src/plugin/spectrogram/index.js +0 -522
  116. package/src/plugin/timeline/index.js +0 -600
  117. package/src/util/absMax.js +0 -16
  118. package/src/util/clamp.js +0 -11
  119. package/src/util/fetch.js +0 -222
  120. package/src/util/frame.js +0 -13
  121. package/src/util/get-id.js +0 -22
  122. package/src/util/index.js +0 -14
  123. package/src/util/max.js +0 -16
  124. package/src/util/min.js +0 -16
  125. package/src/util/observer.js +0 -144
  126. package/src/util/orientation.js +0 -98
  127. package/src/util/prevent-click.js +0 -19
  128. package/src/util/request-animation-frame.js +0 -15
  129. package/src/util/silence-mode.js +0 -42
  130. package/src/util/style.js +0 -16
  131. package/src/wavesurfer.js +0 -1797
  132. package/src/webaudio.js +0 -779
@@ -1 +0,0 @@
1
- {"version":3,"file":"wavesurfer.regions.js","mappings":"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","sources":["webpack://WaveSurfer/webpack/universalModuleDefinition","webpack://WaveSurfer/./src/plugin/regions/index.js","webpack://WaveSurfer/./src/plugin/regions/region.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\"][\"regions\"] = factory();\n})(self, () => {\nreturn ","/**\n * @since 4.0.0 This class has been split\n *\n * @typedef {Object} RegionsPluginParams\n * @property {?boolean} dragSelection Enable creating regions by dragging with\n * the mouse\n * @property {?boolean} contentEditable=false Allow/disallow editing content of the region\n * @property {?boolean} removeButton=false adds remove region button\n * @property {?RegionParams[]} regions Regions that should be added upon\n * initialisation\n * @property {number} slop=2 The sensitivity of the mouse dragging\n * @property {?number} snapToGridInterval Snap the regions to a grid of the specified multiples in seconds\n * @property {?number} snapToGridOffset Shift the snap-to-grid by the specified seconds. May also be negative.\n * @property {?boolean} deferInit Set to true to manually call\n * @property {number} maxRegions Maximum number of regions that may be created by the user at one time.\n * `initPlugin('regions')`\n * @property {function} formatTimeCallback Allows custom formating for region tooltip.\n * @property {?number} edgeScrollWidth='5% from container edges' Optional width for edgeScroll to start\n */\n\n/**\n * @typedef {Object} RegionParams\n * @desc The parameters used to describe a region.\n * @example wavesurfer.addRegion(regionParams);\n * @property {string} id=→random The id of the region\n * @property {number} start=0 The start position of the region (in seconds).\n * @property {number} end=0 The end position of the region (in seconds).\n * @property {?boolean} loop Whether to loop the region when played back.\n * @property {boolean} drag=true Allow/disallow dragging the region.\n * @property {boolean} resize=true Allow/disallow resizing the region.\n * @property {string} [color='rgba(0, 0, 0, 0.1)'] HTML color code.\n * @property {?number} channelIdx Select channel to draw the region on (if there are multiple channel waveforms).\n * @property {?object} handleStyle A set of CSS properties used to style the left and right handle.\n * @property {?boolean} preventContextMenu=false Determines whether the context menu is prevented from being opened.\n * @property {boolean} showTooltip=true Enable/disable tooltip displaying start and end times when hovering over region.\n */\n\nimport {Region} from \"./region.js\";\n\n/**\n * Regions are visual overlays on waveform that can be used to play and loop\n * portions of audio. Regions can be dragged and resized.\n *\n * Visual customization is possible via CSS (using the selectors\n * `.wavesurfer-region` and `.wavesurfer-handle`).\n *\n * @implements {PluginClass}\n * @extends {Observer}\n *\n * @example\n * // es6\n * import RegionsPlugin from 'wavesurfer.regions.js';\n *\n * // commonjs\n * var RegionsPlugin = require('wavesurfer.regions.js');\n *\n * // if you are using <script> tags\n * var RegionsPlugin = window.WaveSurfer.regions;\n *\n * // ... initialising wavesurfer with the plugin\n * var wavesurfer = WaveSurfer.create({\n * // wavesurfer options ...\n * plugins: [\n * RegionsPlugin.create({\n * // plugin options ...\n * })\n * ]\n * });\n */\nexport default class RegionsPlugin {\n /**\n * Regions 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 {RegionsPluginParams} params parameters use to initialise the plugin\n * @return {PluginDefinition} an object representing the plugin\n */\n static create(params) {\n return {\n name: 'regions',\n deferInit: params && params.deferInit ? params.deferInit : false,\n params: params,\n staticProps: {\n addRegion(options) {\n if (!this.initialisedPluginList.regions) {\n this.initPlugin('regions');\n }\n return this.regions.add(options);\n },\n\n clearRegions() {\n this.regions && this.regions.clear();\n },\n\n enableDragSelection(options) {\n if (!this.initialisedPluginList.regions) {\n this.initPlugin('regions');\n }\n this.regions.enableDragSelection(options);\n },\n\n disableDragSelection() {\n this.regions.disableDragSelection();\n }\n },\n instance: RegionsPlugin\n };\n }\n\n constructor(params, ws) {\n this.params = params;\n this.wavesurfer = ws;\n this.util = {\n ...ws.util,\n getRegionSnapToGridValue: value => {\n return this.getRegionSnapToGridValue(value, params);\n }\n };\n this.maxRegions = params.maxRegions;\n this.regionsMinLength = params.regionsMinLength || null;\n\n // turn the plugin instance into an observer\n const observerPrototypeKeys = Object.getOwnPropertyNames(\n this.util.Observer.prototype\n );\n observerPrototypeKeys.forEach(key => {\n Region.prototype[key] = this.util.Observer.prototype[key];\n });\n this.wavesurfer.Region = Region;\n\n // By default, scroll the container if the user drags a region\n // within 5% (based on its initial size) of its edge\n const scrollWidthProportion = 0.05;\n this._onBackendCreated = () => {\n this.wrapper = this.wavesurfer.drawer.wrapper;\n this.orientation = this.wavesurfer.drawer.orientation;\n this.defaultEdgeScrollWidth = this.wrapper.clientWidth * scrollWidthProportion;\n if (this.params.regions) {\n this.params.regions.forEach(region => {\n this.add(region);\n });\n }\n };\n\n // Id-based hash of regions\n this.list = {};\n this._onReady = () => {\n this.wrapper = this.wavesurfer.drawer.wrapper;\n this.vertical = this.wavesurfer.drawer.params.vertical;\n if (this.params.dragSelection) {\n this.enableDragSelection(this.params);\n }\n Object.keys(this.list).forEach(id => {\n this.list[id].updateRender();\n });\n };\n }\n\n init() {\n // Check if ws is ready\n if (this.wavesurfer.isReady) {\n this._onBackendCreated();\n this._onReady();\n } else {\n this.wavesurfer.once('ready', this._onReady);\n this.wavesurfer.once('backend-created', this._onBackendCreated);\n }\n }\n\n destroy() {\n this.wavesurfer.un('ready', this._onReady);\n this.wavesurfer.un('backend-created', this._onBackendCreated);\n // Disabling `region-removed' because destroying the plugin calls\n // the Region.remove() method that is also used to remove regions based\n // on user input. This can cause confusion since teardown is not a\n // user event, but would emit `region-removed` as if it was.\n this.wavesurfer.setDisabledEventEmissions(['region-removed']);\n this.disableDragSelection();\n this.clear();\n }\n\n /**\n * check to see if adding a new region would exceed maxRegions\n * @return {boolean} whether we should proceed and create a region\n * @private\n */\n wouldExceedMaxRegions() {\n return (\n this.maxRegions && Object.keys(this.list).length >= this.maxRegions\n );\n }\n\n /**\n * Add a region\n *\n * @param {object} params Region parameters\n * @return {Region} The created region\n */\n add(params) {\n if (this.wouldExceedMaxRegions()) {\n return null;\n }\n\n params = {\n edgeScrollWidth: this.params.edgeScrollWidth || this.defaultEdgeScrollWidth,\n contentEditable: this.params.contentEditable,\n removeButton: this.params.removeButton,\n ...params\n };\n\n // Take formatTimeCallback from plugin params if not already set\n if (!params.formatTimeCallback && this.params.formatTimeCallback) {\n params = {...params, formatTimeCallback: this.params.formatTimeCallback};\n }\n\n if (!params.minLength && this.regionsMinLength) {\n params = {...params, minLength: this.regionsMinLength};\n }\n\n const region = new this.wavesurfer.Region(params, this.util, this.wavesurfer);\n\n this.list[region.id] = region;\n\n region.on('remove', () => {\n delete this.list[region.id];\n });\n\n return region;\n }\n\n /**\n * Remove all regions\n */\n clear() {\n Object.keys(this.list).forEach(id => {\n this.list[id].remove();\n });\n }\n\n enableDragSelection(params) {\n this.disableDragSelection();\n\n const slop = params.slop || 2;\n const container = this.wavesurfer.drawer.container;\n const scroll =\n params.scroll !== false && this.wavesurfer.params.scrollParent;\n const scrollSpeed = params.scrollSpeed || 1;\n const scrollThreshold = params.scrollThreshold || 10;\n let drag;\n let duration = this.wavesurfer.getDuration();\n let maxScroll;\n let start;\n let region;\n let touchId;\n let pxMove = 0;\n let scrollDirection;\n let wrapperRect;\n\n // Scroll when the user is dragging within the threshold\n const edgeScroll = e => {\n if (!region || !scrollDirection) {\n return;\n }\n\n // Update scroll position\n let scrollLeft =\n this.wrapper.scrollLeft + scrollSpeed * scrollDirection;\n this.wrapper.scrollLeft = scrollLeft = Math.min(\n maxScroll,\n Math.max(0, scrollLeft)\n );\n\n // Update range\n const end = this.wavesurfer.drawer.handleEvent(e);\n region.update({\n start: Math.min(end * duration, start * duration),\n end: Math.max(end * duration, start * duration)\n });\n\n // Check that there is more to scroll and repeat\n if (scrollLeft < maxScroll && scrollLeft > 0) {\n window.requestAnimationFrame(() => {\n edgeScroll(e);\n });\n }\n };\n\n const eventDown = e => {\n if (e.touches && e.touches.length > 1) {\n return;\n }\n duration = this.wavesurfer.getDuration();\n touchId = e.targetTouches ? e.targetTouches[0].identifier : null;\n\n // Store for scroll calculations\n maxScroll = this.wrapper.scrollWidth -\n this.wrapper.clientWidth;\n wrapperRect = this.util.withOrientation(\n this.wrapper.getBoundingClientRect(),\n this.vertical\n );\n\n // set the region channel index based on the clicked area\n if (this.wavesurfer.params.splitChannels && this.wavesurfer.params.splitChannelsOptions.splitDragSelection) {\n const y = (e.touches ? e.touches[0].clientY : e.clientY) - wrapperRect.top;\n const channelCount = this.wavesurfer.backend.buffer != null ? this.wavesurfer.backend.buffer.numberOfChannels : 1;\n const channelHeight = this.wrapper.clientHeight / channelCount;\n const channelIdx = Math.floor(y / channelHeight);\n params.channelIdx = channelIdx;\n const channelColors = this.wavesurfer.params.splitChannelsOptions.channelColors[channelIdx];\n if (channelColors && channelColors.dragColor) {\n params.color = channelColors.dragColor;\n }\n }\n\n drag = true;\n start = this.wavesurfer.drawer.handleEvent(e, true);\n region = null;\n scrollDirection = null;\n };\n this.wrapper.addEventListener('mousedown', eventDown);\n this.wrapper.addEventListener('touchstart', eventDown);\n this.on('disable-drag-selection', () => {\n this.wrapper.removeEventListener('touchstart', eventDown);\n this.wrapper.removeEventListener('mousedown', eventDown);\n });\n\n const eventUp = e => {\n if (e.touches && e.touches.length > 1) {\n return;\n }\n\n drag = false;\n pxMove = 0;\n scrollDirection = null;\n\n if (region) {\n this.util.preventClick();\n region.fireEvent('update-end', e);\n this.wavesurfer.fireEvent('region-update-end', region, e);\n }\n\n region = null;\n };\n this.wrapper.addEventListener('mouseleave', eventUp);\n this.wrapper.addEventListener('mouseup', eventUp);\n this.wrapper.addEventListener('touchend', eventUp);\n\n document.body.addEventListener('mouseup', eventUp);\n document.body.addEventListener('touchend', eventUp);\n this.on('disable-drag-selection', () => {\n document.body.removeEventListener('mouseup', eventUp);\n document.body.removeEventListener('touchend', eventUp);\n this.wrapper.removeEventListener('touchend', eventUp);\n this.wrapper.removeEventListener('mouseup', eventUp);\n this.wrapper.removeEventListener('mouseleave', eventUp);\n });\n\n const eventMove = event => {\n if (!drag) {\n return;\n }\n if (++pxMove <= slop) {\n return;\n }\n\n if (event.touches && event.touches.length > 1) {\n return;\n }\n if (event.targetTouches && event.targetTouches[0].identifier != touchId) {\n return;\n }\n\n // auto-create a region during mouse drag, unless region-count would exceed \"maxRegions\"\n if (!region) {\n region = this.add(params || {});\n if (!region) {\n return;\n }\n }\n\n const end = this.wavesurfer.drawer.handleEvent(event);\n const startUpdate = this.wavesurfer.regions.util.getRegionSnapToGridValue(\n start * duration\n );\n const endUpdate = this.wavesurfer.regions.util.getRegionSnapToGridValue(\n end * duration\n );\n region.update({\n start: Math.min(endUpdate, startUpdate),\n end: Math.max(endUpdate, startUpdate)\n });\n\n let orientedEvent = this.util.withOrientation(event, this.vertical);\n\n // If scrolling is enabled\n if (scroll && container.clientWidth < this.wrapper.scrollWidth) {\n // Check threshold based on mouse\n const x = orientedEvent.clientX - wrapperRect.left;\n if (x <= scrollThreshold) {\n scrollDirection = -1;\n } else if (x >= wrapperRect.right - scrollThreshold) {\n scrollDirection = 1;\n } else {\n scrollDirection = null;\n }\n scrollDirection && edgeScroll(event);\n }\n };\n this.wrapper.addEventListener('mousemove', eventMove);\n this.wrapper.addEventListener('touchmove', eventMove);\n this.on('disable-drag-selection', () => {\n this.wrapper.removeEventListener('touchmove', eventMove);\n this.wrapper.removeEventListener('mousemove', eventMove);\n });\n\n this.wavesurfer.on('region-created', region => {\n if (this.regionsMinLength) {\n region.minLength = this.regionsMinLength;\n }\n });\n }\n\n disableDragSelection() {\n this.fireEvent('disable-drag-selection');\n }\n\n /**\n * Get current region\n *\n * The smallest region that contains the current time. If several such\n * regions exist, take the first. Return `null` if none exist.\n *\n * @returns {Region} The current region\n */\n getCurrentRegion() {\n const time = this.wavesurfer.getCurrentTime();\n let min = null;\n Object.keys(this.list).forEach(id => {\n const cur = this.list[id];\n if (cur.start <= time && cur.end >= time) {\n if (!min || cur.end - cur.start < min.end - min.start) {\n min = cur;\n }\n }\n });\n\n return min;\n }\n\n /**\n * Match the value to the grid, if required\n *\n * If the regions plugin params have a snapToGridInterval set, return the\n * value matching the nearest grid interval. If no snapToGridInterval is set,\n * the passed value will be returned without modification.\n *\n * @param {number} value the value to snap to the grid, if needed\n * @param {Object} params the regions plugin params\n * @returns {number} value\n */\n getRegionSnapToGridValue(value, params) {\n if (params.snapToGridInterval) {\n // the regions should snap to a grid\n const offset = params.snapToGridOffset || 0;\n return (\n Math.round((value - offset) / params.snapToGridInterval) *\n params.snapToGridInterval +\n offset\n );\n }\n\n // no snap-to-grid\n return value;\n }\n}\n","/**\n * @since 4.0.0\n *\n * (Single) Region plugin class\n *\n * Must be turned into an observer before instantiating. This is done in\n * `RegionsPlugin` (main plugin class).\n *\n * @extends {Observer}\n */\nexport class Region {\n constructor(params, regionsUtils, ws) {\n this.wavesurfer = ws;\n this.wrapper = ws.drawer.wrapper;\n this.util = ws.util;\n this.style = this.util.style;\n this.regionsUtil = regionsUtils;\n this.vertical = ws.drawer.params.vertical;\n\n this.id = params.id == null ? ws.util.getId() : params.id;\n this.start = Number(params.start) || 0;\n this.end =\n params.end == null\n ? // small marker-like region\n this.start +\n (4 / this.wrapper.scrollWidth) * this.wavesurfer.getDuration()\n : Number(params.end);\n this.resize =\n params.resize === undefined ? true : Boolean(params.resize);\n this.drag = params.drag === undefined ? true : Boolean(params.drag);\n this.contentEditable = Boolean(params.contentEditable);\n this.removeButton = Boolean(params.removeButton);\n // reflect resize and drag state of region for region-updated listener\n this.isResizing = false;\n this.isDragging = false;\n this.loop = Boolean(params.loop);\n this.color = params.color || 'rgba(0, 0, 0, 0.1)';\n // The left and right handleStyle properties can be set to 'none' for\n // no styling or can be assigned an object containing CSS properties.\n this.handleStyle = params.handleStyle || {\n left: {},\n right: {}\n };\n this.handleLeftEl = null;\n this.handleRightEl = null;\n this.data = params.data || {};\n this.attributes = params.attributes || {};\n this.showTooltip = params.showTooltip ?? true;\n\n this.maxLength = params.maxLength;\n // It assumes the minLength parameter value, or the regionsMinLength parameter value, if the first one not provided\n this.minLength = params.minLength;\n this._onRedraw = () => this.updateRender();\n\n this.scroll = params.scroll !== false && ws.params.scrollParent;\n this.scrollSpeed = params.scrollSpeed || 1;\n this.scrollThreshold = params.scrollThreshold || 10;\n // Determines whether the context menu is prevented from being opened.\n this.preventContextMenu =\n params.preventContextMenu === undefined\n ? false\n : Boolean(params.preventContextMenu);\n\n // select channel ID to set region\n let channelIdx =\n params.channelIdx == null ? -1 : parseInt(params.channelIdx);\n this.channelIdx = channelIdx;\n this.regionHeight = '100%';\n this.marginTop = '0px';\n\n if (channelIdx !== -1) {\n let channelCount =\n this.wavesurfer.backend.buffer != null\n ? this.wavesurfer.backend.buffer.numberOfChannels\n : -1;\n if (channelCount >= 0 && channelIdx < channelCount) {\n this.regionHeight = Math.floor((1 / channelCount) * 100) + '%';\n this.marginTop =\n this.wavesurfer.getHeight() * channelIdx + 'px';\n }\n }\n\n this.formatTimeCallback = params.formatTimeCallback;\n this.edgeScrollWidth = params.edgeScrollWidth;\n this.bindInOut();\n this.render();\n this.wavesurfer.on('zoom', this._onRedraw);\n this.wavesurfer.on('redraw', this._onRedraw);\n this.wavesurfer.fireEvent('region-created', this);\n }\n\n /* Update region params. */\n update(params, eventParams) {\n if (params.start != null) {\n this.start = Number(params.start);\n }\n if (params.end != null) {\n this.end = Number(params.end);\n }\n if (params.loop != null) {\n this.loop = Boolean(params.loop);\n }\n if (params.color != null) {\n this.color = params.color;\n }\n if (params.handleStyle != null) {\n this.handleStyle = params.handleStyle;\n }\n if (params.data != null) {\n this.data = params.data;\n }\n if (params.resize != null) {\n this.resize = Boolean(params.resize);\n this.updateHandlesResize(this.resize);\n }\n if (params.drag != null) {\n this.drag = Boolean(params.drag);\n }\n if (params.maxLength != null) {\n this.maxLength = Number(params.maxLength);\n }\n if (params.minLength != null) {\n this.minLength = Number(params.minLength);\n }\n if (params.attributes != null) {\n this.attributes = params.attributes;\n }\n\n this.updateRender();\n this.fireEvent('update');\n this.wavesurfer.fireEvent('region-updated', this, eventParams);\n }\n\n /* Remove a single region. */\n remove() {\n if (this.element) {\n this.element.remove();\n this.element = null;\n this.fireEvent('remove');\n this.wavesurfer.un('zoom', this._onRedraw);\n this.wavesurfer.un('redraw', this._onRedraw);\n this.wavesurfer.fireEvent('region-removed', this);\n }\n }\n\n /**\n * Play the audio region.\n * @param {number} start Optional offset to start playing at\n */\n play(start) {\n const s = start || this.start;\n this.wavesurfer.play(s, this.end);\n this.fireEvent('play');\n this.wavesurfer.fireEvent('region-play', this);\n }\n\n /**\n * Play the audio region in a loop.\n * @param {number} start Optional offset to start playing at\n * */\n playLoop(start) {\n this.loop = true;\n this.play(start);\n }\n\n /**\n * Set looping on/off.\n * @param {boolean} loop True if should play in loop\n */\n setLoop(loop) {\n this.loop = loop;\n }\n\n /* Render a region as a DOM element. */\n render() {\n this.element = this.util.withOrientation(\n this.wrapper.appendChild(document.createElement('region')),\n this.vertical\n );\n\n this.element.className = 'wavesurfer-region';\n if (this.showTooltip) {\n this.element.title = this.formatTime(this.start, this.end);\n }\n this.element.setAttribute('data-id', this.id);\n\n for (const attrname in this.attributes) {\n this.element.setAttribute(\n 'data-region-' + attrname,\n this.attributes[attrname]\n );\n }\n\n this.style(this.element, {\n position: 'absolute',\n zIndex: 3,\n height: this.regionHeight,\n top: this.marginTop\n });\n\n /* Button Remove Region */\n if (this.removeButton){\n const removeButtonEl = document.createElement('div');\n removeButtonEl.className = 'remove-region-button';\n removeButtonEl.textContent = '⨯';\n this.removeButtonEl = this.element.appendChild(removeButtonEl);\n const css = {\n zIndex: 4,\n position: 'absolute',\n bottom: 0,\n right: '4px',\n cursor:'pointer',\n fontSize: '20px',\n lineHeight: '21px',\n color: 'grey'\n };\n this.style(this.removeButtonEl, css);\n }\n\n /* Edit content */\n if (this.contentEditable){\n const contentEl = document.createElement('div');\n contentEl.className = 'region-content';\n contentEl.contentEditable = 'true';\n contentEl.innerText = this.data.text || '';\n this.contentEl = this.element.appendChild(contentEl);\n const css = {\n zIndex: 4,\n padding: '2px 5px',\n cursor:'text'};\n this.style(this.contentEl, css);\n }\n\n /* Resize handles */\n if (this.resize) {\n this.handleLeftEl = this.util.withOrientation(\n this.element.appendChild(document.createElement('handle')),\n this.vertical\n );\n this.handleRightEl = this.util.withOrientation(\n this.element.appendChild(document.createElement('handle')),\n this.vertical\n );\n\n this.handleLeftEl.className = 'wavesurfer-handle wavesurfer-handle-start';\n this.handleRightEl.className = 'wavesurfer-handle wavesurfer-handle-end';\n\n // Default CSS properties for both handles.\n const css = {\n cursor: this.vertical ? 'row-resize' : 'col-resize',\n position: 'absolute',\n top: '0px',\n width: '2px',\n height: '100%',\n backgroundColor: 'rgba(0, 0, 0, 1)'\n };\n\n // Merge CSS properties per handle.\n const handleLeftCss =\n this.handleStyle.left !== 'none'\n ? Object.assign(\n { left: '0px' },\n css,\n this.handleStyle.left\n )\n : null;\n const handleRightCss =\n this.handleStyle.right !== 'none'\n ? Object.assign(\n { right: '0px' },\n css,\n this.handleStyle.right\n )\n : null;\n\n if (handleLeftCss) {\n this.style(this.handleLeftEl, handleLeftCss);\n }\n\n if (handleRightCss) {\n this.style(this.handleRightEl, handleRightCss);\n }\n }\n\n this.updateRender();\n this.bindEvents();\n }\n\n formatTime(start, end) {\n if (this.formatTimeCallback) {\n return this.formatTimeCallback(start, end);\n }\n return (start == end ? [start] : [start, end])\n .map((time) =>\n [\n Math.floor((time % 3600) / 60), // minutes\n ('00' + Math.floor(time % 60)).slice(-2) // seconds\n ].join(':')\n )\n .join('-');\n }\n\n getWidth() {\n return this.wavesurfer.drawer.width / this.wavesurfer.params.pixelRatio;\n }\n\n /* Update element's position, width, color. */\n updateRender() {\n // duration varies during loading process, so don't overwrite important data\n const dur = this.wavesurfer.getDuration();\n const width = this.getWidth();\n\n let startLimited = this.start;\n let endLimited = this.end;\n if (startLimited < 0) {\n startLimited = 0;\n endLimited = endLimited - startLimited;\n }\n if (endLimited > dur) {\n endLimited = dur;\n startLimited = dur - (endLimited - startLimited);\n }\n\n if (this.minLength != null) {\n endLimited = Math.max(startLimited + this.minLength, endLimited);\n }\n\n if (this.maxLength != null) {\n endLimited = Math.min(startLimited + this.maxLength, endLimited);\n }\n\n if (this.element != null) {\n // Calculate the left and width values of the region such that\n // no gaps appear between regions.\n const left = Math.round((startLimited / dur) * width);\n const regionWidth = Math.round((endLimited / dur) * width) - left;\n\n this.style(this.element, {\n left: left + 'px',\n width: regionWidth + 'px',\n backgroundColor: this.color,\n cursor: this.drag ? 'move' : 'default'\n });\n\n for (const attrname in this.attributes) {\n this.element.setAttribute(\n 'data-region-' + attrname,\n this.attributes[attrname]\n );\n }\n\n if (this.showTooltip) {\n this.element.title = this.formatTime(this.start, this.end);\n }\n }\n }\n\n /* Bind audio events. */\n bindInOut() {\n this.firedIn = false;\n this.firedOut = false;\n\n const onProcess = (time) => {\n let start = Math.round(this.start * 10) / 10;\n let end = Math.round(this.end * 10) / 10;\n time = Math.round(time * 10) / 10;\n\n if (\n !this.firedOut &&\n this.firedIn &&\n (start > time || end <= time)\n ) {\n this.firedOut = true;\n this.firedIn = false;\n this.fireEvent('out');\n this.wavesurfer.fireEvent('region-out', this);\n }\n if (!this.firedIn && start <= time && end > time) {\n this.firedIn = true;\n this.firedOut = false;\n this.fireEvent('in');\n this.wavesurfer.fireEvent('region-in', this);\n }\n };\n\n this.wavesurfer.backend.on('audioprocess', onProcess);\n\n this.on('remove', () => {\n this.wavesurfer.backend.un('audioprocess', onProcess);\n });\n\n /* Loop playback. */\n this.on('out', () => {\n if (this.loop) {\n const realTime = this.wavesurfer.getCurrentTime();\n if (realTime >= this.start && realTime <= this.end) {\n this.wavesurfer.play(this.start);\n }\n }\n });\n }\n\n /* Bind DOM events. */\n bindEvents() {\n const preventContextMenu = this.preventContextMenu;\n\n this.element.addEventListener('mouseenter', (e) => {\n this.fireEvent('mouseenter', e);\n this.wavesurfer.fireEvent('region-mouseenter', this, e);\n });\n\n this.element.addEventListener('mouseleave', (e) => {\n this.fireEvent('mouseleave', e);\n this.wavesurfer.fireEvent('region-mouseleave', this, e);\n });\n\n this.element.addEventListener('click', (e) => {\n e.preventDefault();\n this.fireEvent('click', e);\n this.wavesurfer.fireEvent('region-click', this, e);\n });\n\n this.element.addEventListener('dblclick', (e) => {\n e.stopPropagation();\n e.preventDefault();\n this.fireEvent('dblclick', e);\n this.wavesurfer.fireEvent('region-dblclick', this, e);\n });\n\n this.element.addEventListener('contextmenu', (e) => {\n if (preventContextMenu) {\n e.preventDefault();\n }\n this.fireEvent('contextmenu', e);\n this.wavesurfer.fireEvent('region-contextmenu', this, e);\n });\n\n /* Drag or resize on mousemove. */\n if (this.drag || this.resize) {\n this.bindDragEvents();\n }\n\n /* Edit content */\n if (this.contentEditable){\n this.contentEl.addEventListener('blur', this.onContentBlur.bind(this));\n this.contentEl.addEventListener('click', this.onContentClick.bind(this));\n }\n /* Remove button */\n if (this.removeButton){\n this.removeButtonEl.addEventListener('click', this.onRemove.bind(this));\n }\n }\n\n bindDragEvents() {\n const container = this.wavesurfer.drawer.container;\n const scrollSpeed = this.scrollSpeed;\n let startTime;\n let touchId;\n let drag;\n let maxScroll;\n let resize;\n let updated = false;\n let scrollDirection;\n let wrapperRect;\n let regionLeftHalfTime;\n let regionRightHalfTime;\n\n // Scroll when the user is dragging within the threshold\n const edgeScroll = (event) => {\n let orientedEvent = this.util.withOrientation(event, this.vertical);\n const duration = this.wavesurfer.getDuration();\n if (!scrollDirection || (!drag && !resize)) {\n return;\n }\n\n const x = orientedEvent.clientX;\n let distanceBetweenCursorAndWrapperEdge = 0;\n let regionHalfTimeWidth = 0;\n let adjustment = 0;\n\n // Get the currently selected time according to the mouse position\n let time = this.regionsUtil.getRegionSnapToGridValue(\n this.wavesurfer.drawer.handleEvent(event) * duration\n );\n\n if (drag) {\n // Considering the point of contact with the region while edgescrolling\n if (scrollDirection === -1) {\n regionHalfTimeWidth = regionLeftHalfTime * this.wavesurfer.params.minPxPerSec;\n distanceBetweenCursorAndWrapperEdge = x - wrapperRect.left;\n } else {\n regionHalfTimeWidth = regionRightHalfTime * this.wavesurfer.params.minPxPerSec;\n distanceBetweenCursorAndWrapperEdge = wrapperRect.right - x;\n }\n } else {\n // Considering minLength while edgescroll\n let minLength = this.minLength;\n if (!minLength) {\n minLength = 0;\n }\n\n if (resize === 'start') {\n if (time > this.end - minLength) {\n time = this.end - minLength;\n adjustment = scrollSpeed * scrollDirection;\n }\n\n if (time < 0) {\n time = 0;\n }\n } else if (resize === 'end') {\n if (time < this.start + minLength) {\n time = this.start + minLength;\n adjustment = scrollSpeed * scrollDirection;\n }\n\n if (time > duration) {\n time = duration;\n }\n }\n }\n\n // Don't edgescroll if region has reached min or max limit\n const wrapperScrollLeft = this.wrapper.scrollLeft;\n\n if (scrollDirection === -1) {\n if (Math.round(wrapperScrollLeft) === 0) {\n return;\n }\n\n if (Math.round(wrapperScrollLeft - regionHalfTimeWidth + distanceBetweenCursorAndWrapperEdge) <= 0) {\n return;\n }\n } else {\n if (Math.round(wrapperScrollLeft) === maxScroll) {\n return;\n }\n\n if (Math.round(wrapperScrollLeft + regionHalfTimeWidth - distanceBetweenCursorAndWrapperEdge) >= maxScroll) {\n return;\n }\n }\n\n // Update scroll position\n let scrollLeft = wrapperScrollLeft - adjustment + scrollSpeed * scrollDirection;\n\n if (scrollDirection === -1) {\n const calculatedLeft = Math.max(0 + regionHalfTimeWidth - distanceBetweenCursorAndWrapperEdge, scrollLeft);\n this.wrapper.scrollLeft = scrollLeft = calculatedLeft;\n } else {\n const calculatedRight = Math.min(maxScroll - regionHalfTimeWidth + distanceBetweenCursorAndWrapperEdge, scrollLeft);\n this.wrapper.scrollLeft = scrollLeft = calculatedRight;\n }\n\n const delta = time - startTime;\n startTime = time;\n\n // Continue dragging or resizing\n drag ? this.onDrag(delta) : this.onResize(delta, resize);\n\n // Repeat\n window.requestAnimationFrame(() => {\n edgeScroll(event);\n });\n };\n\n const onDown = (event) => {\n const duration = this.wavesurfer.getDuration();\n if (event.touches && event.touches.length > 1) {\n return;\n }\n touchId = event.targetTouches ? event.targetTouches[0].identifier : null;\n\n // stop the event propagation, if this region is resizable or draggable\n // and the event is therefore handled here.\n if (this.drag || this.resize) {\n event.stopPropagation();\n }\n\n // Store the selected startTime we begun dragging or resizing\n startTime = this.regionsUtil.getRegionSnapToGridValue(\n this.wavesurfer.drawer.handleEvent(event, true) * duration\n );\n\n // Store the selected point of contact when we begin dragging\n regionLeftHalfTime = startTime - this.start;\n regionRightHalfTime = this.end - startTime;\n\n // Store for scroll calculations\n maxScroll = this.wrapper.scrollWidth - this.wrapper.clientWidth;\n\n wrapperRect = this.util.withOrientation(\n this.wrapper.getBoundingClientRect(),\n this.vertical\n );\n\n this.isResizing = false;\n this.isDragging = false;\n if (event.target.tagName.toLowerCase() === 'handle') {\n this.isResizing = true;\n resize = event.target.classList.contains('wavesurfer-handle-start')\n ? 'start'\n : 'end';\n } else {\n this.isDragging = true;\n drag = true;\n resize = false;\n }\n };\n const onUp = (event) => {\n if (event.touches && event.touches.length > 1) {\n return;\n }\n\n if (drag || resize) {\n this.isDragging = false;\n this.isResizing = false;\n drag = false;\n scrollDirection = null;\n resize = false;\n }\n\n if (updated) {\n updated = false;\n this.util.preventClick();\n this.fireEvent('update-end', event);\n this.wavesurfer.fireEvent('region-update-end', this, event);\n }\n };\n const onMove = (event) => {\n const duration = this.wavesurfer.getDuration();\n let orientedEvent = this.util.withOrientation(event, this.vertical);\n let delta = null;\n\n if (event.touches && event.touches.length > 1) {\n return;\n }\n if (event.targetTouches && event.targetTouches[0].identifier != touchId) {\n return;\n }\n if (!drag && !resize) {\n return;\n }\n\n const oldTime = startTime;\n let time = this.regionsUtil.getRegionSnapToGridValue(\n this.wavesurfer.drawer.handleEvent(event) * duration\n );\n\n if (drag) {\n // To maintain relative cursor start point while dragging\n const maxEnd = this.wavesurfer.getDuration();\n if (time > maxEnd - regionRightHalfTime) {\n time = maxEnd - regionRightHalfTime;\n }\n\n if (time - regionLeftHalfTime < 0) {\n time = regionLeftHalfTime;\n }\n }\n\n if (resize) {\n // To maintain relative cursor start point while resizing\n // we have to handle for minLength\n let minLength = this.minLength;\n if (!minLength) {\n minLength = 0;\n }\n\n if (resize === 'start') {\n if (time > this.end - minLength) {\n time = this.end - minLength;\n }\n\n if (time < 0) {\n time = 0;\n }\n } else if (resize === 'end') {\n if (time < this.start + minLength) {\n // Calculate the end time based on the min length of the region.\n time = this.start + minLength;\n delta = time - (this.end + (time - startTime));\n }\n\n if (time > duration) {\n time = duration;\n }\n }\n }\n\n if (!delta) {\n delta = time - startTime;\n }\n\n startTime = time;\n\n // Drag\n if (this.drag && drag) {\n updated = updated || !!delta;\n this.onDrag(delta);\n }\n\n // Resize\n if (this.resize && resize) {\n updated = updated || !!delta;\n this.onResize(delta, resize);\n }\n\n if (\n this.scroll && container.clientWidth < this.wrapper.scrollWidth\n ) {\n // Triggering edgescroll from within edgeScrollWidth\n let x = orientedEvent.clientX;\n\n // Check direction\n if (x < wrapperRect.left + this.edgeScrollWidth) {\n scrollDirection = -1;\n } else if (x > wrapperRect.right - this.edgeScrollWidth) {\n scrollDirection = 1;\n } else {\n scrollDirection = null;\n }\n\n if (scrollDirection) {\n edgeScroll(event);\n }\n }\n };\n\n this.element.addEventListener('mousedown', onDown);\n this.element.addEventListener('touchstart', onDown);\n\n document.body.addEventListener('mousemove', onMove);\n document.body.addEventListener('touchmove', onMove, {passive: false});\n\n document.addEventListener('mouseup', onUp);\n document.body.addEventListener('touchend', onUp);\n\n this.on('remove', () => {\n document.removeEventListener('mouseup', onUp);\n document.body.removeEventListener('touchend', onUp);\n document.body.removeEventListener('mousemove', onMove);\n document.body.removeEventListener('touchmove', onMove);\n });\n\n this.wavesurfer.on('destroy', () => {\n document.removeEventListener('mouseup', onUp);\n document.body.removeEventListener('touchend', onUp);\n });\n }\n\n onDrag(delta) {\n const maxEnd = this.wavesurfer.getDuration();\n if (this.end + delta > maxEnd) {\n delta = maxEnd - this.end;\n }\n\n if (this.start + delta < 0) {\n delta = this.start * -1;\n }\n\n const eventParams = {\n direction: this._getDragDirection(delta),\n action: 'drag'\n };\n\n this.update({\n start: this.start + delta,\n end: this.end + delta\n }, eventParams);\n }\n\n /**\n * Returns the direction of dragging region based on delta\n * Negative delta means region is moving to the left\n * Positive - to the right\n * For zero delta the direction is not defined\n * @param {number} delta Drag offset\n * @returns {string|null} Direction 'left', 'right' or null\n */\n _getDragDirection(delta) {\n if (delta < 0) {\n return 'left';\n }\n if (delta > 0) {\n return 'right';\n }\n return null;\n }\n\n /**\n * @example\n * onResize(-5, 'start') // Moves the start point 5 seconds back\n * onResize(0.5, 'end') // Moves the end point 0.5 seconds forward\n *\n * @param {number} delta How much to add or subtract, given in seconds\n * @param {string} direction 'start 'or 'end'\n */\n onResize(delta, direction) {\n const duration = this.wavesurfer.getDuration();\n const eventParams = {\n action: 'resize',\n direction: direction === 'start' ? 'left' : 'right'\n };\n\n if (direction === 'start') {\n // Check if changing the start by the given delta would result in the region being smaller than minLength\n if (delta > 0 && this.end - (this.start + delta) < this.minLength) {\n delta = this.end - this.minLength - this.start;\n }\n\n // Check if changing the start by the given delta would result in the region being larger than maxLength\n if (delta < 0 && this.end - (this.start + delta) > this.maxLength) {\n delta = this.end - this.start - this.maxLength;\n }\n\n if (delta < 0 && (this.start + delta) < 0) {\n delta = this.start * -1;\n }\n\n this.update({\n start: Math.min(this.start + delta, this.end),\n end: Math.max(this.start + delta, this.end)\n }, eventParams);\n } else {\n // Check if changing the end by the given delta would result in the region being smaller than minLength\n if (delta < 0 && this.end + delta - this.start < this.minLength) {\n delta = this.start + this.minLength - this.end;\n }\n\n // Check if changing the end by the given delta would result in the region being larger than maxLength\n if (delta > 0 && this.end + delta - this.start > this.maxLength) {\n delta = this.maxLength - (this.end - this.start);\n }\n\n if (delta > 0 && (this.end + delta) > duration) {\n delta = duration - this.end;\n }\n\n this.update({\n start: Math.min(this.end + delta, this.start),\n end: Math.max(this.end + delta, this.start)\n }, eventParams);\n }\n }\n\n onContentBlur(event){\n const {text: oldText} = this.data || {};\n const text = event.target.innerText;\n const data = {...this.data, text };\n const eventParams = {action: 'contentEdited', oldText, text};\n this.update({data}, eventParams);\n }\n\n onContentClick(event){\n event.stopPropagation();\n }\n\n onRemove(event){\n event.stopPropagation();\n this.remove();\n }\n\n updateHandlesResize(resize) {\n let cursorStyle;\n if (resize) {\n cursorStyle = this.vertical ? 'row-resize' : 'col-resize';\n } else {\n cursorStyle = 'auto';\n }\n\n this.handleLeftEl && this.style(this.handleLeftEl, { cursor: cursorStyle });\n this.handleRightEl && this.style(this.handleRightEl, { cursor: cursorStyle });\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/regions/index.js\");\n",""],"names":["_region","require","_typeof","obj","Symbol","iterator","constructor","prototype","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","call","Number","RegionsPlugin","params","ws","_this","wavesurfer","util","getRegionSnapToGridValue","maxRegions","regionsMinLength","observerPrototypeKeys","getOwnPropertyNames","Observer","Region","scrollWidthProportion","_onBackendCreated","wrapper","drawer","orientation","defaultEdgeScrollWidth","clientWidth","regions","region","add","list","_onReady","vertical","dragSelection","enableDragSelection","id","updateRender","init","isReady","once","destroy","un","setDisabledEventEmissions","disableDragSelection","clear","wouldExceedMaxRegions","_this2","edgeScrollWidth","contentEditable","removeButton","formatTimeCallback","minLength","on","_this3","remove","_this4","slop","container","scroll","scrollParent","scrollSpeed","scrollThreshold","drag","duration","getDuration","maxScroll","start","touchId","pxMove","scrollDirection","wrapperRect","edgeScroll","e","scrollLeft","Math","min","max","end","handleEvent","update","window","requestAnimationFrame","eventDown","touches","targetTouches","identifier","scrollWidth","withOrientation","getBoundingClientRect","splitChannels","splitChannelsOptions","splitDragSelection","y","clientY","top","channelCount","backend","buffer","numberOfChannels","channelHeight","clientHeight","channelIdx","floor","channelColors","dragColor","color","addEventListener","removeEventListener","eventUp","preventClick","fireEvent","document","body","eventMove","event","startUpdate","endUpdate","orientedEvent","x","clientX","left","right","getCurrentRegion","_this5","time","getCurrentTime","cur","snapToGridInterval","offset","snapToGridOffset","round","create","name","deferInit","addRegion","options","initialisedPluginList","initPlugin","clearRegions","exports","default","module","regionsUtils","_params$showTooltip","style","regionsUtil","getId","resize","Boolean","isResizing","isDragging","loop","handleStyle","handleLeftEl","handleRightEl","data","attributes","showTooltip","maxLength","_onRedraw","preventContextMenu","parseInt","regionHeight","marginTop","getHeight","bindInOut","render","eventParams","updateHandlesResize","element","play","s","playLoop","setLoop","appendChild","createElement","className","title","formatTime","setAttribute","attrname","position","zIndex","height","removeButtonEl","textContent","css","bottom","cursor","fontSize","lineHeight","contentEl","innerText","text","padding","width","backgroundColor","handleLeftCss","assign","handleRightCss","bindEvents","map","slice","join","getWidth","pixelRatio","dur","startLimited","endLimited","regionWidth","firedIn","firedOut","onProcess","realTime","preventDefault","stopPropagation","bindDragEvents","onContentBlur","bind","onContentClick","onRemove","startTime","updated","regionLeftHalfTime","regionRightHalfTime","distanceBetweenCursorAndWrapperEdge","regionHalfTimeWidth","adjustment","minPxPerSec","wrapperScrollLeft","calculatedLeft","calculatedRight","delta","onDrag","onResize","onDown","tagName","toLowerCase","classList","contains","onUp","onMove","oldTime","maxEnd","passive","direction","_getDragDirection","action","_ref","oldText","cursorStyle"],"sourceRoot":""}
@@ -1,7 +0,0 @@
1
- /*!
2
- * wavesurfer.js regions plugin 6.5.1 (2023-03-12)
3
- * https://wavesurfer-js.org
4
- * @license BSD-3-Clause
5
- */
6
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("WaveSurfer",[],t):"object"==typeof exports?exports.WaveSurfer=t():(e.WaveSurfer=e.WaveSurfer||{},e.WaveSurfer.regions=t())}(self,(()=>(()=>{"use strict";var e={23:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(638);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 a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t,r){return(t=u(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,u(n.key),n)}}function u(e){var t=function(e,t){if("object"!==i(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===i(t)?t:String(t)}var h=function(){function e(t,r){var i=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.params=t,this.wavesurfer=r,this.util=s(s({},r.util),{},{getRegionSnapToGridValue:function(e){return i.getRegionSnapToGridValue(e,t)}}),this.maxRegions=t.maxRegions,this.regionsMinLength=t.regionsMinLength||null,Object.getOwnPropertyNames(this.util.Observer.prototype).forEach((function(e){n.Region.prototype[e]=i.util.Observer.prototype[e]})),this.wavesurfer.Region=n.Region;this._onBackendCreated=function(){i.wrapper=i.wavesurfer.drawer.wrapper,i.orientation=i.wavesurfer.drawer.orientation,i.defaultEdgeScrollWidth=.05*i.wrapper.clientWidth,i.params.regions&&i.params.regions.forEach((function(e){i.add(e)}))},this.list={},this._onReady=function(){i.wrapper=i.wavesurfer.drawer.wrapper,i.vertical=i.wavesurfer.drawer.params.vertical,i.params.dragSelection&&i.enableDragSelection(i.params),Object.keys(i.list).forEach((function(e){i.list[e].updateRender()}))}}var t,r,i;return t=e,i=[{key:"create",value:function(t){return{name:"regions",deferInit:!(!t||!t.deferInit)&&t.deferInit,params:t,staticProps:{addRegion:function(e){return this.initialisedPluginList.regions||this.initPlugin("regions"),this.regions.add(e)},clearRegions:function(){this.regions&&this.regions.clear()},enableDragSelection:function(e){this.initialisedPluginList.regions||this.initPlugin("regions"),this.regions.enableDragSelection(e)},disableDragSelection:function(){this.regions.disableDragSelection()}},instance:e}}}],(r=[{key:"init",value:function(){this.wavesurfer.isReady?(this._onBackendCreated(),this._onReady()):(this.wavesurfer.once("ready",this._onReady),this.wavesurfer.once("backend-created",this._onBackendCreated))}},{key:"destroy",value:function(){this.wavesurfer.un("ready",this._onReady),this.wavesurfer.un("backend-created",this._onBackendCreated),this.wavesurfer.setDisabledEventEmissions(["region-removed"]),this.disableDragSelection(),this.clear()}},{key:"wouldExceedMaxRegions",value:function(){return this.maxRegions&&Object.keys(this.list).length>=this.maxRegions}},{key:"add",value:function(e){var t=this;if(this.wouldExceedMaxRegions())return null;!(e=s({edgeScrollWidth:this.params.edgeScrollWidth||this.defaultEdgeScrollWidth,contentEditable:this.params.contentEditable,removeButton:this.params.removeButton},e)).formatTimeCallback&&this.params.formatTimeCallback&&(e=s(s({},e),{},{formatTimeCallback:this.params.formatTimeCallback})),!e.minLength&&this.regionsMinLength&&(e=s(s({},e),{},{minLength:this.regionsMinLength}));var r=new this.wavesurfer.Region(e,this.util,this.wavesurfer);return this.list[r.id]=r,r.on("remove",(function(){delete t.list[r.id]})),r}},{key:"clear",value:function(){var e=this;Object.keys(this.list).forEach((function(t){e.list[t].remove()}))}},{key:"enableDragSelection",value:function(e){var t=this;this.disableDragSelection();var r,n,i,a,s,o,l,u=e.slop||2,h=this.wavesurfer.drawer.container,d=!1!==e.scroll&&this.wavesurfer.params.scrollParent,c=e.scrollSpeed||1,f=e.scrollThreshold||10,v=this.wavesurfer.getDuration(),p=0,g=function e(r){if(a&&o){var s=t.wrapper.scrollLeft+c*o;t.wrapper.scrollLeft=s=Math.min(n,Math.max(0,s));var l=t.wavesurfer.drawer.handleEvent(r);a.update({start:Math.min(l*v,i*v),end:Math.max(l*v,i*v)}),s<n&&s>0&&window.requestAnimationFrame((function(){e(r)}))}},m=function(u){if(!(u.touches&&u.touches.length>1)){if(v=t.wavesurfer.getDuration(),s=u.targetTouches?u.targetTouches[0].identifier:null,n=t.wrapper.scrollWidth-t.wrapper.clientWidth,l=t.util.withOrientation(t.wrapper.getBoundingClientRect(),t.vertical),t.wavesurfer.params.splitChannels&&t.wavesurfer.params.splitChannelsOptions.splitDragSelection){var h=(u.touches?u.touches[0].clientY:u.clientY)-l.top,d=null!=t.wavesurfer.backend.buffer?t.wavesurfer.backend.buffer.numberOfChannels:1,c=t.wrapper.clientHeight/d,f=Math.floor(h/c);e.channelIdx=f;var p=t.wavesurfer.params.splitChannelsOptions.channelColors[f];p&&p.dragColor&&(e.color=p.dragColor)}r=!0,i=t.wavesurfer.drawer.handleEvent(u,!0),a=null,o=null}};this.wrapper.addEventListener("mousedown",m),this.wrapper.addEventListener("touchstart",m),this.on("disable-drag-selection",(function(){t.wrapper.removeEventListener("touchstart",m),t.wrapper.removeEventListener("mousedown",m)}));var w=function(e){e.touches&&e.touches.length>1||(r=!1,p=0,o=null,a&&(t.util.preventClick(),a.fireEvent("update-end",e),t.wavesurfer.fireEvent("region-update-end",a,e)),a=null)};this.wrapper.addEventListener("mouseleave",w),this.wrapper.addEventListener("mouseup",w),this.wrapper.addEventListener("touchend",w),document.body.addEventListener("mouseup",w),document.body.addEventListener("touchend",w),this.on("disable-drag-selection",(function(){document.body.removeEventListener("mouseup",w),document.body.removeEventListener("touchend",w),t.wrapper.removeEventListener("touchend",w),t.wrapper.removeEventListener("mouseup",w),t.wrapper.removeEventListener("mouseleave",w)}));var b=function(n){if(r&&!(++p<=u)&&!(n.touches&&n.touches.length>1)&&(!n.targetTouches||n.targetTouches[0].identifier==s)&&(a||(a=t.add(e||{})))){var c=t.wavesurfer.drawer.handleEvent(n),m=t.wavesurfer.regions.util.getRegionSnapToGridValue(i*v),w=t.wavesurfer.regions.util.getRegionSnapToGridValue(c*v);a.update({start:Math.min(w,m),end:Math.max(w,m)});var b=t.util.withOrientation(n,t.vertical);if(d&&h.clientWidth<t.wrapper.scrollWidth){var y=b.clientX-l.left;(o=y<=f?-1:y>=l.right-f?1:null)&&g(n)}}};this.wrapper.addEventListener("mousemove",b),this.wrapper.addEventListener("touchmove",b),this.on("disable-drag-selection",(function(){t.wrapper.removeEventListener("touchmove",b),t.wrapper.removeEventListener("mousemove",b)})),this.wavesurfer.on("region-created",(function(e){t.regionsMinLength&&(e.minLength=t.regionsMinLength)}))}},{key:"disableDragSelection",value:function(){this.fireEvent("disable-drag-selection")}},{key:"getCurrentRegion",value:function(){var e=this,t=this.wavesurfer.getCurrentTime(),r=null;return Object.keys(this.list).forEach((function(n){var i=e.list[n];i.start<=t&&i.end>=t&&(!r||i.end-i.start<r.end-r.start)&&(r=i)})),r}},{key:"getRegionSnapToGridValue",value:function(e,t){if(t.snapToGridInterval){var r=t.snapToGridOffset||0;return Math.round((e-r)/t.snapToGridInterval)*t.snapToGridInterval+r}return e}}])&&l(t.prototype,r),i&&l(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.default=h,e.exports=t.default},638:(e,t)=>{function r(e){return r="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},r(e)}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function a(e,t,r){return(t=o(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,o(n.key),n)}}function o(e){var t=function(e,t){if("object"!==r(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!==r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===r(t)?t:String(t)}Object.defineProperty(t,"__esModule",{value:!0}),t.Region=void 0;var l=function(){function e(t,r,n){var i,a=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.wavesurfer=n,this.wrapper=n.drawer.wrapper,this.util=n.util,this.style=this.util.style,this.regionsUtil=r,this.vertical=n.drawer.params.vertical,this.id=null==t.id?n.util.getId():t.id,this.start=Number(t.start)||0,this.end=null==t.end?this.start+4/this.wrapper.scrollWidth*this.wavesurfer.getDuration():Number(t.end),this.resize=void 0===t.resize||Boolean(t.resize),this.drag=void 0===t.drag||Boolean(t.drag),this.contentEditable=Boolean(t.contentEditable),this.removeButton=Boolean(t.removeButton),this.isResizing=!1,this.isDragging=!1,this.loop=Boolean(t.loop),this.color=t.color||"rgba(0, 0, 0, 0.1)",this.handleStyle=t.handleStyle||{left:{},right:{}},this.handleLeftEl=null,this.handleRightEl=null,this.data=t.data||{},this.attributes=t.attributes||{},this.showTooltip=null===(i=t.showTooltip)||void 0===i||i,this.maxLength=t.maxLength,this.minLength=t.minLength,this._onRedraw=function(){return a.updateRender()},this.scroll=!1!==t.scroll&&n.params.scrollParent,this.scrollSpeed=t.scrollSpeed||1,this.scrollThreshold=t.scrollThreshold||10,this.preventContextMenu=void 0!==t.preventContextMenu&&Boolean(t.preventContextMenu);var s=null==t.channelIdx?-1:parseInt(t.channelIdx);if(this.channelIdx=s,this.regionHeight="100%",this.marginTop="0px",-1!==s){var o=null!=this.wavesurfer.backend.buffer?this.wavesurfer.backend.buffer.numberOfChannels:-1;o>=0&&s<o&&(this.regionHeight=Math.floor(1/o*100)+"%",this.marginTop=this.wavesurfer.getHeight()*s+"px")}this.formatTimeCallback=t.formatTimeCallback,this.edgeScrollWidth=t.edgeScrollWidth,this.bindInOut(),this.render(),this.wavesurfer.on("zoom",this._onRedraw),this.wavesurfer.on("redraw",this._onRedraw),this.wavesurfer.fireEvent("region-created",this)}var t,r,n;return t=e,(r=[{key:"update",value:function(e,t){null!=e.start&&(this.start=Number(e.start)),null!=e.end&&(this.end=Number(e.end)),null!=e.loop&&(this.loop=Boolean(e.loop)),null!=e.color&&(this.color=e.color),null!=e.handleStyle&&(this.handleStyle=e.handleStyle),null!=e.data&&(this.data=e.data),null!=e.resize&&(this.resize=Boolean(e.resize),this.updateHandlesResize(this.resize)),null!=e.drag&&(this.drag=Boolean(e.drag)),null!=e.maxLength&&(this.maxLength=Number(e.maxLength)),null!=e.minLength&&(this.minLength=Number(e.minLength)),null!=e.attributes&&(this.attributes=e.attributes),this.updateRender(),this.fireEvent("update"),this.wavesurfer.fireEvent("region-updated",this,t)}},{key:"remove",value:function(){this.element&&(this.element.remove(),this.element=null,this.fireEvent("remove"),this.wavesurfer.un("zoom",this._onRedraw),this.wavesurfer.un("redraw",this._onRedraw),this.wavesurfer.fireEvent("region-removed",this))}},{key:"play",value:function(e){var t=e||this.start;this.wavesurfer.play(t,this.end),this.fireEvent("play"),this.wavesurfer.fireEvent("region-play",this)}},{key:"playLoop",value:function(e){this.loop=!0,this.play(e)}},{key:"setLoop",value:function(e){this.loop=e}},{key:"render",value:function(){for(var e in this.element=this.util.withOrientation(this.wrapper.appendChild(document.createElement("region")),this.vertical),this.element.className="wavesurfer-region",this.showTooltip&&(this.element.title=this.formatTime(this.start,this.end)),this.element.setAttribute("data-id",this.id),this.attributes)this.element.setAttribute("data-region-"+e,this.attributes[e]);if(this.style(this.element,{position:"absolute",zIndex:3,height:this.regionHeight,top:this.marginTop}),this.removeButton){var t=document.createElement("div");t.className="remove-region-button",t.textContent="⨯",this.removeButtonEl=this.element.appendChild(t),this.style(this.removeButtonEl,{zIndex:4,position:"absolute",bottom:0,right:"4px",cursor:"pointer",fontSize:"20px",lineHeight:"21px",color:"grey"})}if(this.contentEditable){var r=document.createElement("div");r.className="region-content",r.contentEditable="true",r.innerText=this.data.text||"",this.contentEl=this.element.appendChild(r),this.style(this.contentEl,{zIndex:4,padding:"2px 5px",cursor:"text"})}if(this.resize){this.handleLeftEl=this.util.withOrientation(this.element.appendChild(document.createElement("handle")),this.vertical),this.handleRightEl=this.util.withOrientation(this.element.appendChild(document.createElement("handle")),this.vertical),this.handleLeftEl.className="wavesurfer-handle wavesurfer-handle-start",this.handleRightEl.className="wavesurfer-handle wavesurfer-handle-end";var n={cursor:this.vertical?"row-resize":"col-resize",position:"absolute",top:"0px",width:"2px",height:"100%",backgroundColor:"rgba(0, 0, 0, 1)"},i="none"!==this.handleStyle.left?Object.assign({left:"0px"},n,this.handleStyle.left):null,a="none"!==this.handleStyle.right?Object.assign({right:"0px"},n,this.handleStyle.right):null;i&&this.style(this.handleLeftEl,i),a&&this.style(this.handleRightEl,a)}this.updateRender(),this.bindEvents()}},{key:"formatTime",value:function(e,t){return this.formatTimeCallback?this.formatTimeCallback(e,t):(e==t?[e]:[e,t]).map((function(e){return[Math.floor(e%3600/60),("00"+Math.floor(e%60)).slice(-2)].join(":")})).join("-")}},{key:"getWidth",value:function(){return this.wavesurfer.drawer.width/this.wavesurfer.params.pixelRatio}},{key:"updateRender",value:function(){var e=this.wavesurfer.getDuration(),t=this.getWidth(),r=this.start,n=this.end;if(r<0&&(n-=r=0),n>e&&(r=e-((n=e)-r)),null!=this.minLength&&(n=Math.max(r+this.minLength,n)),null!=this.maxLength&&(n=Math.min(r+this.maxLength,n)),null!=this.element){var i=Math.round(r/e*t),a=Math.round(n/e*t)-i;for(var s in this.style(this.element,{left:i+"px",width:a+"px",backgroundColor:this.color,cursor:this.drag?"move":"default"}),this.attributes)this.element.setAttribute("data-region-"+s,this.attributes[s]);this.showTooltip&&(this.element.title=this.formatTime(this.start,this.end))}}},{key:"bindInOut",value:function(){var e=this;this.firedIn=!1,this.firedOut=!1;var t=function(t){var r=Math.round(10*e.start)/10,n=Math.round(10*e.end)/10;t=Math.round(10*t)/10,!e.firedOut&&e.firedIn&&(r>t||n<=t)&&(e.firedOut=!0,e.firedIn=!1,e.fireEvent("out"),e.wavesurfer.fireEvent("region-out",e)),!e.firedIn&&r<=t&&n>t&&(e.firedIn=!0,e.firedOut=!1,e.fireEvent("in"),e.wavesurfer.fireEvent("region-in",e))};this.wavesurfer.backend.on("audioprocess",t),this.on("remove",(function(){e.wavesurfer.backend.un("audioprocess",t)})),this.on("out",(function(){if(e.loop){var t=e.wavesurfer.getCurrentTime();t>=e.start&&t<=e.end&&e.wavesurfer.play(e.start)}}))}},{key:"bindEvents",value:function(){var e=this,t=this.preventContextMenu;this.element.addEventListener("mouseenter",(function(t){e.fireEvent("mouseenter",t),e.wavesurfer.fireEvent("region-mouseenter",e,t)})),this.element.addEventListener("mouseleave",(function(t){e.fireEvent("mouseleave",t),e.wavesurfer.fireEvent("region-mouseleave",e,t)})),this.element.addEventListener("click",(function(t){t.preventDefault(),e.fireEvent("click",t),e.wavesurfer.fireEvent("region-click",e,t)})),this.element.addEventListener("dblclick",(function(t){t.stopPropagation(),t.preventDefault(),e.fireEvent("dblclick",t),e.wavesurfer.fireEvent("region-dblclick",e,t)})),this.element.addEventListener("contextmenu",(function(r){t&&r.preventDefault(),e.fireEvent("contextmenu",r),e.wavesurfer.fireEvent("region-contextmenu",e,r)})),(this.drag||this.resize)&&this.bindDragEvents(),this.contentEditable&&(this.contentEl.addEventListener("blur",this.onContentBlur.bind(this)),this.contentEl.addEventListener("click",this.onContentClick.bind(this))),this.removeButton&&this.removeButtonEl.addEventListener("click",this.onRemove.bind(this))}},{key:"bindDragEvents",value:function(){var e,t,r,n,i,a,s,o,l,u=this,h=this.wavesurfer.drawer.container,d=this.scrollSpeed,c=!1,f=function t(h){var c=u.util.withOrientation(h,u.vertical),f=u.wavesurfer.getDuration();if(a&&(r||i)){var v=c.clientX,p=0,g=0,m=0,w=u.regionsUtil.getRegionSnapToGridValue(u.wavesurfer.drawer.handleEvent(h)*f);if(r)-1===a?(g=o*u.wavesurfer.params.minPxPerSec,p=v-s.left):(g=l*u.wavesurfer.params.minPxPerSec,p=s.right-v);else{var b=u.minLength;b||(b=0),"start"===i?(w>u.end-b&&(w=u.end-b,m=d*a),w<0&&(w=0)):"end"===i&&(w<u.start+b&&(w=u.start+b,m=d*a),w>f&&(w=f))}var y=u.wrapper.scrollLeft;if(-1===a){if(0===Math.round(y))return;if(Math.round(y-g+p)<=0)return}else{if(Math.round(y)===n)return;if(Math.round(y+g-p)>=n)return}var E=y-m+d*a;if(-1===a){var L=Math.max(0+g-p,E);u.wrapper.scrollLeft=E=L}else{var x=Math.min(n-g+p,E);u.wrapper.scrollLeft=E=x}var k=w-e;e=w,r?u.onDrag(k):u.onResize(k,i),window.requestAnimationFrame((function(){t(h)}))}},v=function(a){var h=u.wavesurfer.getDuration();a.touches&&a.touches.length>1||(t=a.targetTouches?a.targetTouches[0].identifier:null,(u.drag||u.resize)&&a.stopPropagation(),e=u.regionsUtil.getRegionSnapToGridValue(u.wavesurfer.drawer.handleEvent(a,!0)*h),o=e-u.start,l=u.end-e,n=u.wrapper.scrollWidth-u.wrapper.clientWidth,s=u.util.withOrientation(u.wrapper.getBoundingClientRect(),u.vertical),u.isResizing=!1,u.isDragging=!1,"handle"===a.target.tagName.toLowerCase()?(u.isResizing=!0,i=a.target.classList.contains("wavesurfer-handle-start")?"start":"end"):(u.isDragging=!0,r=!0,i=!1))},p=function(e){e.touches&&e.touches.length>1||((r||i)&&(u.isDragging=!1,u.isResizing=!1,r=!1,a=null,i=!1),c&&(c=!1,u.util.preventClick(),u.fireEvent("update-end",e),u.wavesurfer.fireEvent("region-update-end",u,e)))},g=function(n){var d=u.wavesurfer.getDuration(),v=u.util.withOrientation(n,u.vertical),p=null;if(!(n.touches&&n.touches.length>1)&&(!n.targetTouches||n.targetTouches[0].identifier==t)&&(r||i)){var g=u.regionsUtil.getRegionSnapToGridValue(u.wavesurfer.drawer.handleEvent(n)*d);if(r){var m=u.wavesurfer.getDuration();g>m-l&&(g=m-l),g-o<0&&(g=o)}if(i){var w=u.minLength;w||(w=0),"start"===i?(g>u.end-w&&(g=u.end-w),g<0&&(g=0)):"end"===i&&(g<u.start+w&&(p=(g=u.start+w)-(u.end+(g-e))),g>d&&(g=d))}if(p||(p=g-e),e=g,u.drag&&r&&(c=c||!!p,u.onDrag(p)),u.resize&&i&&(c=c||!!p,u.onResize(p,i)),u.scroll&&h.clientWidth<u.wrapper.scrollWidth){var b=v.clientX;(a=b<s.left+u.edgeScrollWidth?-1:b>s.right-u.edgeScrollWidth?1:null)&&f(n)}}};this.element.addEventListener("mousedown",v),this.element.addEventListener("touchstart",v),document.body.addEventListener("mousemove",g),document.body.addEventListener("touchmove",g,{passive:!1}),document.addEventListener("mouseup",p),document.body.addEventListener("touchend",p),this.on("remove",(function(){document.removeEventListener("mouseup",p),document.body.removeEventListener("touchend",p),document.body.removeEventListener("mousemove",g),document.body.removeEventListener("touchmove",g)})),this.wavesurfer.on("destroy",(function(){document.removeEventListener("mouseup",p),document.body.removeEventListener("touchend",p)}))}},{key:"onDrag",value:function(e){var t=this.wavesurfer.getDuration();this.end+e>t&&(e=t-this.end),this.start+e<0&&(e=-1*this.start);var r={direction:this._getDragDirection(e),action:"drag"};this.update({start:this.start+e,end:this.end+e},r)}},{key:"_getDragDirection",value:function(e){return e<0?"left":e>0?"right":null}},{key:"onResize",value:function(e,t){var r=this.wavesurfer.getDuration(),n={action:"resize",direction:"start"===t?"left":"right"};"start"===t?(e>0&&this.end-(this.start+e)<this.minLength&&(e=this.end-this.minLength-this.start),e<0&&this.end-(this.start+e)>this.maxLength&&(e=this.end-this.start-this.maxLength),e<0&&this.start+e<0&&(e=-1*this.start),this.update({start:Math.min(this.start+e,this.end),end:Math.max(this.start+e,this.end)},n)):(e<0&&this.end+e-this.start<this.minLength&&(e=this.start+this.minLength-this.end),e>0&&this.end+e-this.start>this.maxLength&&(e=this.maxLength-(this.end-this.start)),e>0&&this.end+e>r&&(e=r-this.end),this.update({start:Math.min(this.end+e,this.start),end:Math.max(this.end+e,this.start)},n))}},{key:"onContentBlur",value:function(e){var t=(this.data||{}).text,r=e.target.innerText,n=i(i({},this.data),{},{text:r}),a={action:"contentEdited",oldText:t,text:r};this.update({data:n},a)}},{key:"onContentClick",value:function(e){e.stopPropagation()}},{key:"onRemove",value:function(e){e.stopPropagation(),this.remove()}},{key:"updateHandlesResize",value:function(e){var t;t=e?this.vertical?"row-resize":"col-resize":"auto",this.handleLeftEl&&this.style(this.handleLeftEl,{cursor:t}),this.handleRightEl&&this.style(this.handleRightEl,{cursor:t})}}])&&s(t.prototype,r),n&&s(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.Region=l}},t={};var r=function r(n){var i=t[n];if(void 0!==i)return i.exports;var a=t[n]={exports:{}};return e[n](a,a.exports,r),a.exports}(23);return r})()));
7
- //# sourceMappingURL=wavesurfer.regions.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wavesurfer.regions.min.js","mappings":"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","sources":["webpack://WaveSurfer/webpack/universalModuleDefinition","webpack://WaveSurfer/./src/plugin/regions/index.js","webpack://WaveSurfer/./src/plugin/regions/region.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\"][\"regions\"] = factory();\n})(self, () => {\nreturn ","/**\n * @since 4.0.0 This class has been split\n *\n * @typedef {Object} RegionsPluginParams\n * @property {?boolean} dragSelection Enable creating regions by dragging with\n * the mouse\n * @property {?boolean} contentEditable=false Allow/disallow editing content of the region\n * @property {?boolean} removeButton=false adds remove region button\n * @property {?RegionParams[]} regions Regions that should be added upon\n * initialisation\n * @property {number} slop=2 The sensitivity of the mouse dragging\n * @property {?number} snapToGridInterval Snap the regions to a grid of the specified multiples in seconds\n * @property {?number} snapToGridOffset Shift the snap-to-grid by the specified seconds. May also be negative.\n * @property {?boolean} deferInit Set to true to manually call\n * @property {number} maxRegions Maximum number of regions that may be created by the user at one time.\n * `initPlugin('regions')`\n * @property {function} formatTimeCallback Allows custom formating for region tooltip.\n * @property {?number} edgeScrollWidth='5% from container edges' Optional width for edgeScroll to start\n */\n\n/**\n * @typedef {Object} RegionParams\n * @desc The parameters used to describe a region.\n * @example wavesurfer.addRegion(regionParams);\n * @property {string} id=→random The id of the region\n * @property {number} start=0 The start position of the region (in seconds).\n * @property {number} end=0 The end position of the region (in seconds).\n * @property {?boolean} loop Whether to loop the region when played back.\n * @property {boolean} drag=true Allow/disallow dragging the region.\n * @property {boolean} resize=true Allow/disallow resizing the region.\n * @property {string} [color='rgba(0, 0, 0, 0.1)'] HTML color code.\n * @property {?number} channelIdx Select channel to draw the region on (if there are multiple channel waveforms).\n * @property {?object} handleStyle A set of CSS properties used to style the left and right handle.\n * @property {?boolean} preventContextMenu=false Determines whether the context menu is prevented from being opened.\n * @property {boolean} showTooltip=true Enable/disable tooltip displaying start and end times when hovering over region.\n */\n\nimport {Region} from \"./region.js\";\n\n/**\n * Regions are visual overlays on waveform that can be used to play and loop\n * portions of audio. Regions can be dragged and resized.\n *\n * Visual customization is possible via CSS (using the selectors\n * `.wavesurfer-region` and `.wavesurfer-handle`).\n *\n * @implements {PluginClass}\n * @extends {Observer}\n *\n * @example\n * // es6\n * import RegionsPlugin from 'wavesurfer.regions.js';\n *\n * // commonjs\n * var RegionsPlugin = require('wavesurfer.regions.js');\n *\n * // if you are using <script> tags\n * var RegionsPlugin = window.WaveSurfer.regions;\n *\n * // ... initialising wavesurfer with the plugin\n * var wavesurfer = WaveSurfer.create({\n * // wavesurfer options ...\n * plugins: [\n * RegionsPlugin.create({\n * // plugin options ...\n * })\n * ]\n * });\n */\nexport default class RegionsPlugin {\n /**\n * Regions 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 {RegionsPluginParams} params parameters use to initialise the plugin\n * @return {PluginDefinition} an object representing the plugin\n */\n static create(params) {\n return {\n name: 'regions',\n deferInit: params && params.deferInit ? params.deferInit : false,\n params: params,\n staticProps: {\n addRegion(options) {\n if (!this.initialisedPluginList.regions) {\n this.initPlugin('regions');\n }\n return this.regions.add(options);\n },\n\n clearRegions() {\n this.regions && this.regions.clear();\n },\n\n enableDragSelection(options) {\n if (!this.initialisedPluginList.regions) {\n this.initPlugin('regions');\n }\n this.regions.enableDragSelection(options);\n },\n\n disableDragSelection() {\n this.regions.disableDragSelection();\n }\n },\n instance: RegionsPlugin\n };\n }\n\n constructor(params, ws) {\n this.params = params;\n this.wavesurfer = ws;\n this.util = {\n ...ws.util,\n getRegionSnapToGridValue: value => {\n return this.getRegionSnapToGridValue(value, params);\n }\n };\n this.maxRegions = params.maxRegions;\n this.regionsMinLength = params.regionsMinLength || null;\n\n // turn the plugin instance into an observer\n const observerPrototypeKeys = Object.getOwnPropertyNames(\n this.util.Observer.prototype\n );\n observerPrototypeKeys.forEach(key => {\n Region.prototype[key] = this.util.Observer.prototype[key];\n });\n this.wavesurfer.Region = Region;\n\n // By default, scroll the container if the user drags a region\n // within 5% (based on its initial size) of its edge\n const scrollWidthProportion = 0.05;\n this._onBackendCreated = () => {\n this.wrapper = this.wavesurfer.drawer.wrapper;\n this.orientation = this.wavesurfer.drawer.orientation;\n this.defaultEdgeScrollWidth = this.wrapper.clientWidth * scrollWidthProportion;\n if (this.params.regions) {\n this.params.regions.forEach(region => {\n this.add(region);\n });\n }\n };\n\n // Id-based hash of regions\n this.list = {};\n this._onReady = () => {\n this.wrapper = this.wavesurfer.drawer.wrapper;\n this.vertical = this.wavesurfer.drawer.params.vertical;\n if (this.params.dragSelection) {\n this.enableDragSelection(this.params);\n }\n Object.keys(this.list).forEach(id => {\n this.list[id].updateRender();\n });\n };\n }\n\n init() {\n // Check if ws is ready\n if (this.wavesurfer.isReady) {\n this._onBackendCreated();\n this._onReady();\n } else {\n this.wavesurfer.once('ready', this._onReady);\n this.wavesurfer.once('backend-created', this._onBackendCreated);\n }\n }\n\n destroy() {\n this.wavesurfer.un('ready', this._onReady);\n this.wavesurfer.un('backend-created', this._onBackendCreated);\n // Disabling `region-removed' because destroying the plugin calls\n // the Region.remove() method that is also used to remove regions based\n // on user input. This can cause confusion since teardown is not a\n // user event, but would emit `region-removed` as if it was.\n this.wavesurfer.setDisabledEventEmissions(['region-removed']);\n this.disableDragSelection();\n this.clear();\n }\n\n /**\n * check to see if adding a new region would exceed maxRegions\n * @return {boolean} whether we should proceed and create a region\n * @private\n */\n wouldExceedMaxRegions() {\n return (\n this.maxRegions && Object.keys(this.list).length >= this.maxRegions\n );\n }\n\n /**\n * Add a region\n *\n * @param {object} params Region parameters\n * @return {Region} The created region\n */\n add(params) {\n if (this.wouldExceedMaxRegions()) {\n return null;\n }\n\n params = {\n edgeScrollWidth: this.params.edgeScrollWidth || this.defaultEdgeScrollWidth,\n contentEditable: this.params.contentEditable,\n removeButton: this.params.removeButton,\n ...params\n };\n\n // Take formatTimeCallback from plugin params if not already set\n if (!params.formatTimeCallback && this.params.formatTimeCallback) {\n params = {...params, formatTimeCallback: this.params.formatTimeCallback};\n }\n\n if (!params.minLength && this.regionsMinLength) {\n params = {...params, minLength: this.regionsMinLength};\n }\n\n const region = new this.wavesurfer.Region(params, this.util, this.wavesurfer);\n\n this.list[region.id] = region;\n\n region.on('remove', () => {\n delete this.list[region.id];\n });\n\n return region;\n }\n\n /**\n * Remove all regions\n */\n clear() {\n Object.keys(this.list).forEach(id => {\n this.list[id].remove();\n });\n }\n\n enableDragSelection(params) {\n this.disableDragSelection();\n\n const slop = params.slop || 2;\n const container = this.wavesurfer.drawer.container;\n const scroll =\n params.scroll !== false && this.wavesurfer.params.scrollParent;\n const scrollSpeed = params.scrollSpeed || 1;\n const scrollThreshold = params.scrollThreshold || 10;\n let drag;\n let duration = this.wavesurfer.getDuration();\n let maxScroll;\n let start;\n let region;\n let touchId;\n let pxMove = 0;\n let scrollDirection;\n let wrapperRect;\n\n // Scroll when the user is dragging within the threshold\n const edgeScroll = e => {\n if (!region || !scrollDirection) {\n return;\n }\n\n // Update scroll position\n let scrollLeft =\n this.wrapper.scrollLeft + scrollSpeed * scrollDirection;\n this.wrapper.scrollLeft = scrollLeft = Math.min(\n maxScroll,\n Math.max(0, scrollLeft)\n );\n\n // Update range\n const end = this.wavesurfer.drawer.handleEvent(e);\n region.update({\n start: Math.min(end * duration, start * duration),\n end: Math.max(end * duration, start * duration)\n });\n\n // Check that there is more to scroll and repeat\n if (scrollLeft < maxScroll && scrollLeft > 0) {\n window.requestAnimationFrame(() => {\n edgeScroll(e);\n });\n }\n };\n\n const eventDown = e => {\n if (e.touches && e.touches.length > 1) {\n return;\n }\n duration = this.wavesurfer.getDuration();\n touchId = e.targetTouches ? e.targetTouches[0].identifier : null;\n\n // Store for scroll calculations\n maxScroll = this.wrapper.scrollWidth -\n this.wrapper.clientWidth;\n wrapperRect = this.util.withOrientation(\n this.wrapper.getBoundingClientRect(),\n this.vertical\n );\n\n // set the region channel index based on the clicked area\n if (this.wavesurfer.params.splitChannels && this.wavesurfer.params.splitChannelsOptions.splitDragSelection) {\n const y = (e.touches ? e.touches[0].clientY : e.clientY) - wrapperRect.top;\n const channelCount = this.wavesurfer.backend.buffer != null ? this.wavesurfer.backend.buffer.numberOfChannels : 1;\n const channelHeight = this.wrapper.clientHeight / channelCount;\n const channelIdx = Math.floor(y / channelHeight);\n params.channelIdx = channelIdx;\n const channelColors = this.wavesurfer.params.splitChannelsOptions.channelColors[channelIdx];\n if (channelColors && channelColors.dragColor) {\n params.color = channelColors.dragColor;\n }\n }\n\n drag = true;\n start = this.wavesurfer.drawer.handleEvent(e, true);\n region = null;\n scrollDirection = null;\n };\n this.wrapper.addEventListener('mousedown', eventDown);\n this.wrapper.addEventListener('touchstart', eventDown);\n this.on('disable-drag-selection', () => {\n this.wrapper.removeEventListener('touchstart', eventDown);\n this.wrapper.removeEventListener('mousedown', eventDown);\n });\n\n const eventUp = e => {\n if (e.touches && e.touches.length > 1) {\n return;\n }\n\n drag = false;\n pxMove = 0;\n scrollDirection = null;\n\n if (region) {\n this.util.preventClick();\n region.fireEvent('update-end', e);\n this.wavesurfer.fireEvent('region-update-end', region, e);\n }\n\n region = null;\n };\n this.wrapper.addEventListener('mouseleave', eventUp);\n this.wrapper.addEventListener('mouseup', eventUp);\n this.wrapper.addEventListener('touchend', eventUp);\n\n document.body.addEventListener('mouseup', eventUp);\n document.body.addEventListener('touchend', eventUp);\n this.on('disable-drag-selection', () => {\n document.body.removeEventListener('mouseup', eventUp);\n document.body.removeEventListener('touchend', eventUp);\n this.wrapper.removeEventListener('touchend', eventUp);\n this.wrapper.removeEventListener('mouseup', eventUp);\n this.wrapper.removeEventListener('mouseleave', eventUp);\n });\n\n const eventMove = event => {\n if (!drag) {\n return;\n }\n if (++pxMove <= slop) {\n return;\n }\n\n if (event.touches && event.touches.length > 1) {\n return;\n }\n if (event.targetTouches && event.targetTouches[0].identifier != touchId) {\n return;\n }\n\n // auto-create a region during mouse drag, unless region-count would exceed \"maxRegions\"\n if (!region) {\n region = this.add(params || {});\n if (!region) {\n return;\n }\n }\n\n const end = this.wavesurfer.drawer.handleEvent(event);\n const startUpdate = this.wavesurfer.regions.util.getRegionSnapToGridValue(\n start * duration\n );\n const endUpdate = this.wavesurfer.regions.util.getRegionSnapToGridValue(\n end * duration\n );\n region.update({\n start: Math.min(endUpdate, startUpdate),\n end: Math.max(endUpdate, startUpdate)\n });\n\n let orientedEvent = this.util.withOrientation(event, this.vertical);\n\n // If scrolling is enabled\n if (scroll && container.clientWidth < this.wrapper.scrollWidth) {\n // Check threshold based on mouse\n const x = orientedEvent.clientX - wrapperRect.left;\n if (x <= scrollThreshold) {\n scrollDirection = -1;\n } else if (x >= wrapperRect.right - scrollThreshold) {\n scrollDirection = 1;\n } else {\n scrollDirection = null;\n }\n scrollDirection && edgeScroll(event);\n }\n };\n this.wrapper.addEventListener('mousemove', eventMove);\n this.wrapper.addEventListener('touchmove', eventMove);\n this.on('disable-drag-selection', () => {\n this.wrapper.removeEventListener('touchmove', eventMove);\n this.wrapper.removeEventListener('mousemove', eventMove);\n });\n\n this.wavesurfer.on('region-created', region => {\n if (this.regionsMinLength) {\n region.minLength = this.regionsMinLength;\n }\n });\n }\n\n disableDragSelection() {\n this.fireEvent('disable-drag-selection');\n }\n\n /**\n * Get current region\n *\n * The smallest region that contains the current time. If several such\n * regions exist, take the first. Return `null` if none exist.\n *\n * @returns {Region} The current region\n */\n getCurrentRegion() {\n const time = this.wavesurfer.getCurrentTime();\n let min = null;\n Object.keys(this.list).forEach(id => {\n const cur = this.list[id];\n if (cur.start <= time && cur.end >= time) {\n if (!min || cur.end - cur.start < min.end - min.start) {\n min = cur;\n }\n }\n });\n\n return min;\n }\n\n /**\n * Match the value to the grid, if required\n *\n * If the regions plugin params have a snapToGridInterval set, return the\n * value matching the nearest grid interval. If no snapToGridInterval is set,\n * the passed value will be returned without modification.\n *\n * @param {number} value the value to snap to the grid, if needed\n * @param {Object} params the regions plugin params\n * @returns {number} value\n */\n getRegionSnapToGridValue(value, params) {\n if (params.snapToGridInterval) {\n // the regions should snap to a grid\n const offset = params.snapToGridOffset || 0;\n return (\n Math.round((value - offset) / params.snapToGridInterval) *\n params.snapToGridInterval +\n offset\n );\n }\n\n // no snap-to-grid\n return value;\n }\n}\n","/**\n * @since 4.0.0\n *\n * (Single) Region plugin class\n *\n * Must be turned into an observer before instantiating. This is done in\n * `RegionsPlugin` (main plugin class).\n *\n * @extends {Observer}\n */\nexport class Region {\n constructor(params, regionsUtils, ws) {\n this.wavesurfer = ws;\n this.wrapper = ws.drawer.wrapper;\n this.util = ws.util;\n this.style = this.util.style;\n this.regionsUtil = regionsUtils;\n this.vertical = ws.drawer.params.vertical;\n\n this.id = params.id == null ? ws.util.getId() : params.id;\n this.start = Number(params.start) || 0;\n this.end =\n params.end == null\n ? // small marker-like region\n this.start +\n (4 / this.wrapper.scrollWidth) * this.wavesurfer.getDuration()\n : Number(params.end);\n this.resize =\n params.resize === undefined ? true : Boolean(params.resize);\n this.drag = params.drag === undefined ? true : Boolean(params.drag);\n this.contentEditable = Boolean(params.contentEditable);\n this.removeButton = Boolean(params.removeButton);\n // reflect resize and drag state of region for region-updated listener\n this.isResizing = false;\n this.isDragging = false;\n this.loop = Boolean(params.loop);\n this.color = params.color || 'rgba(0, 0, 0, 0.1)';\n // The left and right handleStyle properties can be set to 'none' for\n // no styling or can be assigned an object containing CSS properties.\n this.handleStyle = params.handleStyle || {\n left: {},\n right: {}\n };\n this.handleLeftEl = null;\n this.handleRightEl = null;\n this.data = params.data || {};\n this.attributes = params.attributes || {};\n this.showTooltip = params.showTooltip ?? true;\n\n this.maxLength = params.maxLength;\n // It assumes the minLength parameter value, or the regionsMinLength parameter value, if the first one not provided\n this.minLength = params.minLength;\n this._onRedraw = () => this.updateRender();\n\n this.scroll = params.scroll !== false && ws.params.scrollParent;\n this.scrollSpeed = params.scrollSpeed || 1;\n this.scrollThreshold = params.scrollThreshold || 10;\n // Determines whether the context menu is prevented from being opened.\n this.preventContextMenu =\n params.preventContextMenu === undefined\n ? false\n : Boolean(params.preventContextMenu);\n\n // select channel ID to set region\n let channelIdx =\n params.channelIdx == null ? -1 : parseInt(params.channelIdx);\n this.channelIdx = channelIdx;\n this.regionHeight = '100%';\n this.marginTop = '0px';\n\n if (channelIdx !== -1) {\n let channelCount =\n this.wavesurfer.backend.buffer != null\n ? this.wavesurfer.backend.buffer.numberOfChannels\n : -1;\n if (channelCount >= 0 && channelIdx < channelCount) {\n this.regionHeight = Math.floor((1 / channelCount) * 100) + '%';\n this.marginTop =\n this.wavesurfer.getHeight() * channelIdx + 'px';\n }\n }\n\n this.formatTimeCallback = params.formatTimeCallback;\n this.edgeScrollWidth = params.edgeScrollWidth;\n this.bindInOut();\n this.render();\n this.wavesurfer.on('zoom', this._onRedraw);\n this.wavesurfer.on('redraw', this._onRedraw);\n this.wavesurfer.fireEvent('region-created', this);\n }\n\n /* Update region params. */\n update(params, eventParams) {\n if (params.start != null) {\n this.start = Number(params.start);\n }\n if (params.end != null) {\n this.end = Number(params.end);\n }\n if (params.loop != null) {\n this.loop = Boolean(params.loop);\n }\n if (params.color != null) {\n this.color = params.color;\n }\n if (params.handleStyle != null) {\n this.handleStyle = params.handleStyle;\n }\n if (params.data != null) {\n this.data = params.data;\n }\n if (params.resize != null) {\n this.resize = Boolean(params.resize);\n this.updateHandlesResize(this.resize);\n }\n if (params.drag != null) {\n this.drag = Boolean(params.drag);\n }\n if (params.maxLength != null) {\n this.maxLength = Number(params.maxLength);\n }\n if (params.minLength != null) {\n this.minLength = Number(params.minLength);\n }\n if (params.attributes != null) {\n this.attributes = params.attributes;\n }\n\n this.updateRender();\n this.fireEvent('update');\n this.wavesurfer.fireEvent('region-updated', this, eventParams);\n }\n\n /* Remove a single region. */\n remove() {\n if (this.element) {\n this.element.remove();\n this.element = null;\n this.fireEvent('remove');\n this.wavesurfer.un('zoom', this._onRedraw);\n this.wavesurfer.un('redraw', this._onRedraw);\n this.wavesurfer.fireEvent('region-removed', this);\n }\n }\n\n /**\n * Play the audio region.\n * @param {number} start Optional offset to start playing at\n */\n play(start) {\n const s = start || this.start;\n this.wavesurfer.play(s, this.end);\n this.fireEvent('play');\n this.wavesurfer.fireEvent('region-play', this);\n }\n\n /**\n * Play the audio region in a loop.\n * @param {number} start Optional offset to start playing at\n * */\n playLoop(start) {\n this.loop = true;\n this.play(start);\n }\n\n /**\n * Set looping on/off.\n * @param {boolean} loop True if should play in loop\n */\n setLoop(loop) {\n this.loop = loop;\n }\n\n /* Render a region as a DOM element. */\n render() {\n this.element = this.util.withOrientation(\n this.wrapper.appendChild(document.createElement('region')),\n this.vertical\n );\n\n this.element.className = 'wavesurfer-region';\n if (this.showTooltip) {\n this.element.title = this.formatTime(this.start, this.end);\n }\n this.element.setAttribute('data-id', this.id);\n\n for (const attrname in this.attributes) {\n this.element.setAttribute(\n 'data-region-' + attrname,\n this.attributes[attrname]\n );\n }\n\n this.style(this.element, {\n position: 'absolute',\n zIndex: 3,\n height: this.regionHeight,\n top: this.marginTop\n });\n\n /* Button Remove Region */\n if (this.removeButton){\n const removeButtonEl = document.createElement('div');\n removeButtonEl.className = 'remove-region-button';\n removeButtonEl.textContent = '⨯';\n this.removeButtonEl = this.element.appendChild(removeButtonEl);\n const css = {\n zIndex: 4,\n position: 'absolute',\n bottom: 0,\n right: '4px',\n cursor:'pointer',\n fontSize: '20px',\n lineHeight: '21px',\n color: 'grey'\n };\n this.style(this.removeButtonEl, css);\n }\n\n /* Edit content */\n if (this.contentEditable){\n const contentEl = document.createElement('div');\n contentEl.className = 'region-content';\n contentEl.contentEditable = 'true';\n contentEl.innerText = this.data.text || '';\n this.contentEl = this.element.appendChild(contentEl);\n const css = {\n zIndex: 4,\n padding: '2px 5px',\n cursor:'text'};\n this.style(this.contentEl, css);\n }\n\n /* Resize handles */\n if (this.resize) {\n this.handleLeftEl = this.util.withOrientation(\n this.element.appendChild(document.createElement('handle')),\n this.vertical\n );\n this.handleRightEl = this.util.withOrientation(\n this.element.appendChild(document.createElement('handle')),\n this.vertical\n );\n\n this.handleLeftEl.className = 'wavesurfer-handle wavesurfer-handle-start';\n this.handleRightEl.className = 'wavesurfer-handle wavesurfer-handle-end';\n\n // Default CSS properties for both handles.\n const css = {\n cursor: this.vertical ? 'row-resize' : 'col-resize',\n position: 'absolute',\n top: '0px',\n width: '2px',\n height: '100%',\n backgroundColor: 'rgba(0, 0, 0, 1)'\n };\n\n // Merge CSS properties per handle.\n const handleLeftCss =\n this.handleStyle.left !== 'none'\n ? Object.assign(\n { left: '0px' },\n css,\n this.handleStyle.left\n )\n : null;\n const handleRightCss =\n this.handleStyle.right !== 'none'\n ? Object.assign(\n { right: '0px' },\n css,\n this.handleStyle.right\n )\n : null;\n\n if (handleLeftCss) {\n this.style(this.handleLeftEl, handleLeftCss);\n }\n\n if (handleRightCss) {\n this.style(this.handleRightEl, handleRightCss);\n }\n }\n\n this.updateRender();\n this.bindEvents();\n }\n\n formatTime(start, end) {\n if (this.formatTimeCallback) {\n return this.formatTimeCallback(start, end);\n }\n return (start == end ? [start] : [start, end])\n .map((time) =>\n [\n Math.floor((time % 3600) / 60), // minutes\n ('00' + Math.floor(time % 60)).slice(-2) // seconds\n ].join(':')\n )\n .join('-');\n }\n\n getWidth() {\n return this.wavesurfer.drawer.width / this.wavesurfer.params.pixelRatio;\n }\n\n /* Update element's position, width, color. */\n updateRender() {\n // duration varies during loading process, so don't overwrite important data\n const dur = this.wavesurfer.getDuration();\n const width = this.getWidth();\n\n let startLimited = this.start;\n let endLimited = this.end;\n if (startLimited < 0) {\n startLimited = 0;\n endLimited = endLimited - startLimited;\n }\n if (endLimited > dur) {\n endLimited = dur;\n startLimited = dur - (endLimited - startLimited);\n }\n\n if (this.minLength != null) {\n endLimited = Math.max(startLimited + this.minLength, endLimited);\n }\n\n if (this.maxLength != null) {\n endLimited = Math.min(startLimited + this.maxLength, endLimited);\n }\n\n if (this.element != null) {\n // Calculate the left and width values of the region such that\n // no gaps appear between regions.\n const left = Math.round((startLimited / dur) * width);\n const regionWidth = Math.round((endLimited / dur) * width) - left;\n\n this.style(this.element, {\n left: left + 'px',\n width: regionWidth + 'px',\n backgroundColor: this.color,\n cursor: this.drag ? 'move' : 'default'\n });\n\n for (const attrname in this.attributes) {\n this.element.setAttribute(\n 'data-region-' + attrname,\n this.attributes[attrname]\n );\n }\n\n if (this.showTooltip) {\n this.element.title = this.formatTime(this.start, this.end);\n }\n }\n }\n\n /* Bind audio events. */\n bindInOut() {\n this.firedIn = false;\n this.firedOut = false;\n\n const onProcess = (time) => {\n let start = Math.round(this.start * 10) / 10;\n let end = Math.round(this.end * 10) / 10;\n time = Math.round(time * 10) / 10;\n\n if (\n !this.firedOut &&\n this.firedIn &&\n (start > time || end <= time)\n ) {\n this.firedOut = true;\n this.firedIn = false;\n this.fireEvent('out');\n this.wavesurfer.fireEvent('region-out', this);\n }\n if (!this.firedIn && start <= time && end > time) {\n this.firedIn = true;\n this.firedOut = false;\n this.fireEvent('in');\n this.wavesurfer.fireEvent('region-in', this);\n }\n };\n\n this.wavesurfer.backend.on('audioprocess', onProcess);\n\n this.on('remove', () => {\n this.wavesurfer.backend.un('audioprocess', onProcess);\n });\n\n /* Loop playback. */\n this.on('out', () => {\n if (this.loop) {\n const realTime = this.wavesurfer.getCurrentTime();\n if (realTime >= this.start && realTime <= this.end) {\n this.wavesurfer.play(this.start);\n }\n }\n });\n }\n\n /* Bind DOM events. */\n bindEvents() {\n const preventContextMenu = this.preventContextMenu;\n\n this.element.addEventListener('mouseenter', (e) => {\n this.fireEvent('mouseenter', e);\n this.wavesurfer.fireEvent('region-mouseenter', this, e);\n });\n\n this.element.addEventListener('mouseleave', (e) => {\n this.fireEvent('mouseleave', e);\n this.wavesurfer.fireEvent('region-mouseleave', this, e);\n });\n\n this.element.addEventListener('click', (e) => {\n e.preventDefault();\n this.fireEvent('click', e);\n this.wavesurfer.fireEvent('region-click', this, e);\n });\n\n this.element.addEventListener('dblclick', (e) => {\n e.stopPropagation();\n e.preventDefault();\n this.fireEvent('dblclick', e);\n this.wavesurfer.fireEvent('region-dblclick', this, e);\n });\n\n this.element.addEventListener('contextmenu', (e) => {\n if (preventContextMenu) {\n e.preventDefault();\n }\n this.fireEvent('contextmenu', e);\n this.wavesurfer.fireEvent('region-contextmenu', this, e);\n });\n\n /* Drag or resize on mousemove. */\n if (this.drag || this.resize) {\n this.bindDragEvents();\n }\n\n /* Edit content */\n if (this.contentEditable){\n this.contentEl.addEventListener('blur', this.onContentBlur.bind(this));\n this.contentEl.addEventListener('click', this.onContentClick.bind(this));\n }\n /* Remove button */\n if (this.removeButton){\n this.removeButtonEl.addEventListener('click', this.onRemove.bind(this));\n }\n }\n\n bindDragEvents() {\n const container = this.wavesurfer.drawer.container;\n const scrollSpeed = this.scrollSpeed;\n let startTime;\n let touchId;\n let drag;\n let maxScroll;\n let resize;\n let updated = false;\n let scrollDirection;\n let wrapperRect;\n let regionLeftHalfTime;\n let regionRightHalfTime;\n\n // Scroll when the user is dragging within the threshold\n const edgeScroll = (event) => {\n let orientedEvent = this.util.withOrientation(event, this.vertical);\n const duration = this.wavesurfer.getDuration();\n if (!scrollDirection || (!drag && !resize)) {\n return;\n }\n\n const x = orientedEvent.clientX;\n let distanceBetweenCursorAndWrapperEdge = 0;\n let regionHalfTimeWidth = 0;\n let adjustment = 0;\n\n // Get the currently selected time according to the mouse position\n let time = this.regionsUtil.getRegionSnapToGridValue(\n this.wavesurfer.drawer.handleEvent(event) * duration\n );\n\n if (drag) {\n // Considering the point of contact with the region while edgescrolling\n if (scrollDirection === -1) {\n regionHalfTimeWidth = regionLeftHalfTime * this.wavesurfer.params.minPxPerSec;\n distanceBetweenCursorAndWrapperEdge = x - wrapperRect.left;\n } else {\n regionHalfTimeWidth = regionRightHalfTime * this.wavesurfer.params.minPxPerSec;\n distanceBetweenCursorAndWrapperEdge = wrapperRect.right - x;\n }\n } else {\n // Considering minLength while edgescroll\n let minLength = this.minLength;\n if (!minLength) {\n minLength = 0;\n }\n\n if (resize === 'start') {\n if (time > this.end - minLength) {\n time = this.end - minLength;\n adjustment = scrollSpeed * scrollDirection;\n }\n\n if (time < 0) {\n time = 0;\n }\n } else if (resize === 'end') {\n if (time < this.start + minLength) {\n time = this.start + minLength;\n adjustment = scrollSpeed * scrollDirection;\n }\n\n if (time > duration) {\n time = duration;\n }\n }\n }\n\n // Don't edgescroll if region has reached min or max limit\n const wrapperScrollLeft = this.wrapper.scrollLeft;\n\n if (scrollDirection === -1) {\n if (Math.round(wrapperScrollLeft) === 0) {\n return;\n }\n\n if (Math.round(wrapperScrollLeft - regionHalfTimeWidth + distanceBetweenCursorAndWrapperEdge) <= 0) {\n return;\n }\n } else {\n if (Math.round(wrapperScrollLeft) === maxScroll) {\n return;\n }\n\n if (Math.round(wrapperScrollLeft + regionHalfTimeWidth - distanceBetweenCursorAndWrapperEdge) >= maxScroll) {\n return;\n }\n }\n\n // Update scroll position\n let scrollLeft = wrapperScrollLeft - adjustment + scrollSpeed * scrollDirection;\n\n if (scrollDirection === -1) {\n const calculatedLeft = Math.max(0 + regionHalfTimeWidth - distanceBetweenCursorAndWrapperEdge, scrollLeft);\n this.wrapper.scrollLeft = scrollLeft = calculatedLeft;\n } else {\n const calculatedRight = Math.min(maxScroll - regionHalfTimeWidth + distanceBetweenCursorAndWrapperEdge, scrollLeft);\n this.wrapper.scrollLeft = scrollLeft = calculatedRight;\n }\n\n const delta = time - startTime;\n startTime = time;\n\n // Continue dragging or resizing\n drag ? this.onDrag(delta) : this.onResize(delta, resize);\n\n // Repeat\n window.requestAnimationFrame(() => {\n edgeScroll(event);\n });\n };\n\n const onDown = (event) => {\n const duration = this.wavesurfer.getDuration();\n if (event.touches && event.touches.length > 1) {\n return;\n }\n touchId = event.targetTouches ? event.targetTouches[0].identifier : null;\n\n // stop the event propagation, if this region is resizable or draggable\n // and the event is therefore handled here.\n if (this.drag || this.resize) {\n event.stopPropagation();\n }\n\n // Store the selected startTime we begun dragging or resizing\n startTime = this.regionsUtil.getRegionSnapToGridValue(\n this.wavesurfer.drawer.handleEvent(event, true) * duration\n );\n\n // Store the selected point of contact when we begin dragging\n regionLeftHalfTime = startTime - this.start;\n regionRightHalfTime = this.end - startTime;\n\n // Store for scroll calculations\n maxScroll = this.wrapper.scrollWidth - this.wrapper.clientWidth;\n\n wrapperRect = this.util.withOrientation(\n this.wrapper.getBoundingClientRect(),\n this.vertical\n );\n\n this.isResizing = false;\n this.isDragging = false;\n if (event.target.tagName.toLowerCase() === 'handle') {\n this.isResizing = true;\n resize = event.target.classList.contains('wavesurfer-handle-start')\n ? 'start'\n : 'end';\n } else {\n this.isDragging = true;\n drag = true;\n resize = false;\n }\n };\n const onUp = (event) => {\n if (event.touches && event.touches.length > 1) {\n return;\n }\n\n if (drag || resize) {\n this.isDragging = false;\n this.isResizing = false;\n drag = false;\n scrollDirection = null;\n resize = false;\n }\n\n if (updated) {\n updated = false;\n this.util.preventClick();\n this.fireEvent('update-end', event);\n this.wavesurfer.fireEvent('region-update-end', this, event);\n }\n };\n const onMove = (event) => {\n const duration = this.wavesurfer.getDuration();\n let orientedEvent = this.util.withOrientation(event, this.vertical);\n let delta = null;\n\n if (event.touches && event.touches.length > 1) {\n return;\n }\n if (event.targetTouches && event.targetTouches[0].identifier != touchId) {\n return;\n }\n if (!drag && !resize) {\n return;\n }\n\n const oldTime = startTime;\n let time = this.regionsUtil.getRegionSnapToGridValue(\n this.wavesurfer.drawer.handleEvent(event) * duration\n );\n\n if (drag) {\n // To maintain relative cursor start point while dragging\n const maxEnd = this.wavesurfer.getDuration();\n if (time > maxEnd - regionRightHalfTime) {\n time = maxEnd - regionRightHalfTime;\n }\n\n if (time - regionLeftHalfTime < 0) {\n time = regionLeftHalfTime;\n }\n }\n\n if (resize) {\n // To maintain relative cursor start point while resizing\n // we have to handle for minLength\n let minLength = this.minLength;\n if (!minLength) {\n minLength = 0;\n }\n\n if (resize === 'start') {\n if (time > this.end - minLength) {\n time = this.end - minLength;\n }\n\n if (time < 0) {\n time = 0;\n }\n } else if (resize === 'end') {\n if (time < this.start + minLength) {\n // Calculate the end time based on the min length of the region.\n time = this.start + minLength;\n delta = time - (this.end + (time - startTime));\n }\n\n if (time > duration) {\n time = duration;\n }\n }\n }\n\n if (!delta) {\n delta = time - startTime;\n }\n\n startTime = time;\n\n // Drag\n if (this.drag && drag) {\n updated = updated || !!delta;\n this.onDrag(delta);\n }\n\n // Resize\n if (this.resize && resize) {\n updated = updated || !!delta;\n this.onResize(delta, resize);\n }\n\n if (\n this.scroll && container.clientWidth < this.wrapper.scrollWidth\n ) {\n // Triggering edgescroll from within edgeScrollWidth\n let x = orientedEvent.clientX;\n\n // Check direction\n if (x < wrapperRect.left + this.edgeScrollWidth) {\n scrollDirection = -1;\n } else if (x > wrapperRect.right - this.edgeScrollWidth) {\n scrollDirection = 1;\n } else {\n scrollDirection = null;\n }\n\n if (scrollDirection) {\n edgeScroll(event);\n }\n }\n };\n\n this.element.addEventListener('mousedown', onDown);\n this.element.addEventListener('touchstart', onDown);\n\n document.body.addEventListener('mousemove', onMove);\n document.body.addEventListener('touchmove', onMove, {passive: false});\n\n document.addEventListener('mouseup', onUp);\n document.body.addEventListener('touchend', onUp);\n\n this.on('remove', () => {\n document.removeEventListener('mouseup', onUp);\n document.body.removeEventListener('touchend', onUp);\n document.body.removeEventListener('mousemove', onMove);\n document.body.removeEventListener('touchmove', onMove);\n });\n\n this.wavesurfer.on('destroy', () => {\n document.removeEventListener('mouseup', onUp);\n document.body.removeEventListener('touchend', onUp);\n });\n }\n\n onDrag(delta) {\n const maxEnd = this.wavesurfer.getDuration();\n if (this.end + delta > maxEnd) {\n delta = maxEnd - this.end;\n }\n\n if (this.start + delta < 0) {\n delta = this.start * -1;\n }\n\n const eventParams = {\n direction: this._getDragDirection(delta),\n action: 'drag'\n };\n\n this.update({\n start: this.start + delta,\n end: this.end + delta\n }, eventParams);\n }\n\n /**\n * Returns the direction of dragging region based on delta\n * Negative delta means region is moving to the left\n * Positive - to the right\n * For zero delta the direction is not defined\n * @param {number} delta Drag offset\n * @returns {string|null} Direction 'left', 'right' or null\n */\n _getDragDirection(delta) {\n if (delta < 0) {\n return 'left';\n }\n if (delta > 0) {\n return 'right';\n }\n return null;\n }\n\n /**\n * @example\n * onResize(-5, 'start') // Moves the start point 5 seconds back\n * onResize(0.5, 'end') // Moves the end point 0.5 seconds forward\n *\n * @param {number} delta How much to add or subtract, given in seconds\n * @param {string} direction 'start 'or 'end'\n */\n onResize(delta, direction) {\n const duration = this.wavesurfer.getDuration();\n const eventParams = {\n action: 'resize',\n direction: direction === 'start' ? 'left' : 'right'\n };\n\n if (direction === 'start') {\n // Check if changing the start by the given delta would result in the region being smaller than minLength\n if (delta > 0 && this.end - (this.start + delta) < this.minLength) {\n delta = this.end - this.minLength - this.start;\n }\n\n // Check if changing the start by the given delta would result in the region being larger than maxLength\n if (delta < 0 && this.end - (this.start + delta) > this.maxLength) {\n delta = this.end - this.start - this.maxLength;\n }\n\n if (delta < 0 && (this.start + delta) < 0) {\n delta = this.start * -1;\n }\n\n this.update({\n start: Math.min(this.start + delta, this.end),\n end: Math.max(this.start + delta, this.end)\n }, eventParams);\n } else {\n // Check if changing the end by the given delta would result in the region being smaller than minLength\n if (delta < 0 && this.end + delta - this.start < this.minLength) {\n delta = this.start + this.minLength - this.end;\n }\n\n // Check if changing the end by the given delta would result in the region being larger than maxLength\n if (delta > 0 && this.end + delta - this.start > this.maxLength) {\n delta = this.maxLength - (this.end - this.start);\n }\n\n if (delta > 0 && (this.end + delta) > duration) {\n delta = duration - this.end;\n }\n\n this.update({\n start: Math.min(this.end + delta, this.start),\n end: Math.max(this.end + delta, this.start)\n }, eventParams);\n }\n }\n\n onContentBlur(event){\n const {text: oldText} = this.data || {};\n const text = event.target.innerText;\n const data = {...this.data, text };\n const eventParams = {action: 'contentEdited', oldText, text};\n this.update({data}, eventParams);\n }\n\n onContentClick(event){\n event.stopPropagation();\n }\n\n onRemove(event){\n event.stopPropagation();\n this.remove();\n }\n\n updateHandlesResize(resize) {\n let cursorStyle;\n if (resize) {\n cursorStyle = this.vertical ? 'row-resize' : 'col-resize';\n } else {\n cursorStyle = 'auto';\n }\n\n this.handleLeftEl && this.style(this.handleLeftEl, { cursor: cursorStyle });\n this.handleRightEl && this.style(this.handleRightEl, { cursor: cursorStyle });\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__(23);\n"],"names":["root","factory","exports","module","define","amd","self","_region","require","_typeof","obj","Symbol","iterator","constructor","prototype","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","_defineProperties","props","descriptor","arg","input","hint","prim","toPrimitive","undefined","res","call","TypeError","String","Number","_toPrimitive","RegionsPlugin","params","ws","_this","instance","Constructor","_classCallCheck","this","wavesurfer","util","getRegionSnapToGridValue","maxRegions","regionsMinLength","getOwnPropertyNames","Observer","Region","_onBackendCreated","wrapper","drawer","orientation","defaultEdgeScrollWidth","clientWidth","regions","region","add","list","_onReady","vertical","dragSelection","enableDragSelection","id","updateRender","protoProps","staticProps","name","deferInit","addRegion","options","initialisedPluginList","initPlugin","clearRegions","clear","disableDragSelection","isReady","once","un","setDisabledEventEmissions","_this2","wouldExceedMaxRegions","edgeScrollWidth","contentEditable","removeButton","formatTimeCallback","minLength","on","_this3","remove","_this4","drag","maxScroll","start","touchId","scrollDirection","wrapperRect","slop","container","scroll","scrollParent","scrollSpeed","scrollThreshold","duration","getDuration","pxMove","edgeScroll","e","scrollLeft","Math","min","max","end","handleEvent","update","window","requestAnimationFrame","eventDown","touches","targetTouches","identifier","scrollWidth","withOrientation","getBoundingClientRect","splitChannels","splitChannelsOptions","splitDragSelection","y","clientY","top","channelCount","backend","buffer","numberOfChannels","channelHeight","clientHeight","channelIdx","floor","channelColors","dragColor","color","addEventListener","removeEventListener","eventUp","preventClick","fireEvent","document","body","eventMove","event","startUpdate","endUpdate","orientedEvent","x","clientX","left","right","_this5","time","getCurrentTime","cur","snapToGridInterval","offset","snapToGridOffset","round","default","regionsUtils","_params$showTooltip","style","regionsUtil","getId","resize","Boolean","isResizing","isDragging","loop","handleStyle","handleLeftEl","handleRightEl","data","attributes","showTooltip","maxLength","_onRedraw","preventContextMenu","parseInt","regionHeight","marginTop","getHeight","bindInOut","render","eventParams","updateHandlesResize","element","s","play","attrname","appendChild","createElement","className","title","formatTime","setAttribute","position","zIndex","height","removeButtonEl","textContent","bottom","cursor","fontSize","lineHeight","contentEl","innerText","text","padding","css","width","backgroundColor","handleLeftCss","assign","handleRightCss","bindEvents","map","slice","join","pixelRatio","dur","getWidth","startLimited","endLimited","regionWidth","firedIn","firedOut","onProcess","realTime","preventDefault","stopPropagation","bindDragEvents","onContentBlur","bind","onContentClick","onRemove","startTime","regionLeftHalfTime","regionRightHalfTime","updated","distanceBetweenCursorAndWrapperEdge","regionHalfTimeWidth","adjustment","minPxPerSec","wrapperScrollLeft","calculatedLeft","calculatedRight","delta","onDrag","onResize","onDown","tagName","toLowerCase","classList","contains","onUp","onMove","maxEnd","passive","direction","_getDragDirection","action","oldText","cursorStyle","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}