wavesurfer.js 6.5.0 → 7.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +24 -0
- package/.prettierrc +8 -0
- package/README.md +26 -117
- package/dist/base-plugin.d.ts +10 -0
- package/dist/base-plugin.js +13 -0
- package/dist/decoder.d.ts +10 -0
- package/dist/decoder.js +43 -0
- package/dist/event-emitter.d.ts +11 -0
- package/dist/event-emitter.js +21 -0
- package/dist/fetcher.d.ts +4 -0
- package/dist/fetcher.js +17 -0
- package/dist/index.d.ts +92 -0
- package/dist/index.js +166 -0
- package/dist/player-webaudio.d.ts +8 -0
- package/dist/player-webaudio.js +31 -0
- package/dist/player.d.ts +16 -0
- package/dist/player.js +40 -0
- package/dist/plugins/regions.d.ts +48 -0
- package/dist/plugins/regions.js +183 -0
- package/dist/renderer.d.ts +34 -0
- package/dist/renderer.js +193 -0
- package/dist/timer.d.ts +10 -0
- package/dist/timer.js +17 -0
- package/examples/audio.ogg +0 -0
- package/examples/bars.js +19 -0
- package/examples/basic.js +8 -0
- package/examples/gradient.js +28 -0
- package/examples/regions.js +63 -0
- package/examples/video.js +19 -0
- package/examples/webaudio.js +14 -0
- package/package.json +19 -99
- package/src/base-plugin.ts +20 -0
- package/src/decoder.ts +41 -0
- package/src/event-emitter.ts +35 -0
- package/src/fetcher.ts +7 -0
- package/src/index.ts +252 -0
- package/src/player-webaudio.ts +34 -0
- package/src/player.ts +50 -0
- package/src/plugins/regions.ts +240 -0
- package/src/renderer.ts +250 -0
- package/src/timer.ts +27 -0
- package/tsconfig.json +105 -0
- package/tutorial/index.html +47 -0
- package/tutorial/src/editor.js +70 -0
- package/tutorial/src/init.js +66 -0
- package/tutorial/src/url.js +25 -0
- package/tutorial/style.css +211 -0
- package/yarn-error.log +1049 -0
- package/LICENSE +0 -29
- package/dist/plugin/wavesurfer.cursor.js +0 -418
- package/dist/plugin/wavesurfer.cursor.js.map +0 -1
- package/dist/plugin/wavesurfer.cursor.min.js +0 -7
- package/dist/plugin/wavesurfer.cursor.min.js.map +0 -1
- package/dist/plugin/wavesurfer.elan.js +0 -381
- package/dist/plugin/wavesurfer.elan.js.map +0 -1
- package/dist/plugin/wavesurfer.elan.min.js +0 -7
- package/dist/plugin/wavesurfer.elan.min.js.map +0 -1
- package/dist/plugin/wavesurfer.markers.js +0 -520
- package/dist/plugin/wavesurfer.markers.js.map +0 -1
- package/dist/plugin/wavesurfer.markers.min.js +0 -7
- package/dist/plugin/wavesurfer.markers.min.js.map +0 -1
- package/dist/plugin/wavesurfer.mediasession.js +0 -181
- package/dist/plugin/wavesurfer.mediasession.js.map +0 -1
- package/dist/plugin/wavesurfer.mediasession.min.js +0 -7
- package/dist/plugin/wavesurfer.mediasession.min.js.map +0 -1
- package/dist/plugin/wavesurfer.microphone.js +0 -466
- package/dist/plugin/wavesurfer.microphone.js.map +0 -1
- package/dist/plugin/wavesurfer.microphone.min.js +0 -7
- package/dist/plugin/wavesurfer.microphone.min.js.map +0 -1
- package/dist/plugin/wavesurfer.minimap.js +0 -440
- package/dist/plugin/wavesurfer.minimap.js.map +0 -1
- package/dist/plugin/wavesurfer.minimap.min.js +0 -7
- package/dist/plugin/wavesurfer.minimap.min.js.map +0 -1
- package/dist/plugin/wavesurfer.playhead.js +0 -300
- package/dist/plugin/wavesurfer.playhead.js.map +0 -1
- package/dist/plugin/wavesurfer.playhead.min.js +0 -7
- package/dist/plugin/wavesurfer.playhead.min.js.map +0 -1
- package/dist/plugin/wavesurfer.regions.js +0 -1342
- package/dist/plugin/wavesurfer.regions.js.map +0 -1
- package/dist/plugin/wavesurfer.regions.min.js +0 -7
- package/dist/plugin/wavesurfer.regions.min.js.map +0 -1
- package/dist/plugin/wavesurfer.spectrogram.js +0 -736
- package/dist/plugin/wavesurfer.spectrogram.js.map +0 -1
- package/dist/plugin/wavesurfer.spectrogram.min.js +0 -7
- package/dist/plugin/wavesurfer.spectrogram.min.js.map +0 -1
- package/dist/plugin/wavesurfer.timeline.js +0 -649
- package/dist/plugin/wavesurfer.timeline.js.map +0 -1
- package/dist/plugin/wavesurfer.timeline.min.js +0 -7
- package/dist/plugin/wavesurfer.timeline.min.js.map +0 -1
- package/dist/wavesurfer-html-init.js +0 -381
- package/dist/wavesurfer-html-init.js.map +0 -1
- package/dist/wavesurfer-html-init.min.js +0 -7
- package/dist/wavesurfer-html-init.min.js.map +0 -1
- package/dist/wavesurfer.js +0 -6145
- package/dist/wavesurfer.js.map +0 -1
- package/dist/wavesurfer.min.js +0 -7
- package/dist/wavesurfer.min.js.map +0 -1
- package/src/drawer.canvasentry.js +0 -427
- package/src/drawer.js +0 -413
- package/src/drawer.multicanvas.js +0 -617
- package/src/html-init.js +0 -241
- package/src/mediaelement-webaudio.js +0 -77
- package/src/mediaelement.js +0 -443
- package/src/peakcache.js +0 -127
- package/src/plugin/cursor/index.js +0 -350
- package/src/plugin/elan/index.js +0 -307
- package/src/plugin/markers/index.js +0 -436
- package/src/plugin/mediasession/index.js +0 -94
- package/src/plugin/microphone/index.js +0 -415
- package/src/plugin/minimap/index.js +0 -403
- package/src/plugin/playhead/index.js +0 -226
- package/src/plugin/regions/index.js +0 -478
- package/src/plugin/regions/region.js +0 -883
- package/src/plugin/spectrogram/fft.js +0 -222
- package/src/plugin/spectrogram/index.js +0 -522
- package/src/plugin/timeline/index.js +0 -600
- package/src/util/absMax.js +0 -16
- package/src/util/clamp.js +0 -11
- package/src/util/fetch.js +0 -222
- package/src/util/frame.js +0 -13
- package/src/util/get-id.js +0 -22
- package/src/util/index.js +0 -14
- package/src/util/max.js +0 -16
- package/src/util/min.js +0 -16
- package/src/util/observer.js +0 -144
- package/src/util/orientation.js +0 -98
- package/src/util/prevent-click.js +0 -19
- package/src/util/request-animation-frame.js +0 -15
- package/src/util/silence-mode.js +0 -42
- package/src/util/style.js +0 -16
- package/src/wavesurfer.js +0 -1797
- package/src/webaudio.js +0 -779
package/LICENSE
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
BSD 3-Clause License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2012-2023, katspaugh and contributors
|
|
4
|
-
All rights reserved.
|
|
5
|
-
|
|
6
|
-
Redistribution and use in source and binary forms, with or without
|
|
7
|
-
modification, are permitted provided that the following conditions are met:
|
|
8
|
-
|
|
9
|
-
* Redistributions of source code must retain the above copyright notice, this
|
|
10
|
-
list of conditions and the following disclaimer.
|
|
11
|
-
|
|
12
|
-
* Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
-
this list of conditions and the following disclaimer in the documentation
|
|
14
|
-
and/or other materials provided with the distribution.
|
|
15
|
-
|
|
16
|
-
* Neither the name of the copyright holder nor the names of its
|
|
17
|
-
contributors may be used to endorse or promote products derived from
|
|
18
|
-
this software without specific prior written permission.
|
|
19
|
-
|
|
20
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
21
|
-
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
22
|
-
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
-
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
24
|
-
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25
|
-
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
26
|
-
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
27
|
-
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
28
|
-
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -1,418 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* wavesurfer.js cursor plugin 6.5.0 (2023-03-11)
|
|
3
|
-
* https://wavesurfer-js.org
|
|
4
|
-
* @license BSD-3-Clause
|
|
5
|
-
*/
|
|
6
|
-
(function webpackUniversalModuleDefinition(root, factory) {
|
|
7
|
-
if(typeof exports === 'object' && typeof module === 'object')
|
|
8
|
-
module.exports = factory();
|
|
9
|
-
else if(typeof define === 'function' && define.amd)
|
|
10
|
-
define("WaveSurfer", [], factory);
|
|
11
|
-
else if(typeof exports === 'object')
|
|
12
|
-
exports["WaveSurfer"] = factory();
|
|
13
|
-
else
|
|
14
|
-
root["WaveSurfer"] = root["WaveSurfer"] || {}, root["WaveSurfer"]["cursor"] = factory();
|
|
15
|
-
})(self, () => {
|
|
16
|
-
return /******/ (() => { // webpackBootstrap
|
|
17
|
-
/******/ "use strict";
|
|
18
|
-
/******/ var __webpack_modules__ = ({
|
|
19
|
-
|
|
20
|
-
/***/ "./src/plugin/cursor/index.js":
|
|
21
|
-
/*!************************************!*\
|
|
22
|
-
!*** ./src/plugin/cursor/index.js ***!
|
|
23
|
-
\************************************/
|
|
24
|
-
/***/ ((module, exports) => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
Object.defineProperty(exports, "__esModule", ({
|
|
29
|
-
value: true
|
|
30
|
-
}));
|
|
31
|
-
exports["default"] = void 0;
|
|
32
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
33
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
34
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
35
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
36
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
37
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
38
|
-
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
39
|
-
/**
|
|
40
|
-
* @typedef {Object} CursorPluginParams
|
|
41
|
-
* @property {?boolean} deferInit Set to true to stop auto init in `addPlugin()`
|
|
42
|
-
* @property {boolean} hideOnBlur=true Hide the cursor when the mouse leaves the
|
|
43
|
-
* waveform
|
|
44
|
-
* @property {string} width='1px' The width of the cursor
|
|
45
|
-
* @property {string} color='black' The color of the cursor
|
|
46
|
-
* @property {number|string} opacity='0.25' The opacity of the cursor
|
|
47
|
-
* @property {string} style='solid' The border style of the cursor
|
|
48
|
-
* @property {number} zIndex=3 The z-index of the cursor element
|
|
49
|
-
* @property {object} customStyle An object with custom styles which are applied
|
|
50
|
-
* to the cursor element
|
|
51
|
-
* @property {boolean} showTime=false Show the time on the cursor.
|
|
52
|
-
* @property {object} customShowTimeStyle An object with custom styles which are
|
|
53
|
-
* applied to the cursor time element.
|
|
54
|
-
* @property {boolean} followCursorY=false Use `true` to make the time on
|
|
55
|
-
* the cursor follow the x and the y-position of the mouse. Use `false` to make the
|
|
56
|
-
* it only follow the x-position of the mouse.
|
|
57
|
-
* @property {function} formatTimeCallback Formats the timestamp on the cursor.
|
|
58
|
-
* @property {boolean} isDestroyCalled true if called destroy before the ready event fired
|
|
59
|
-
*/
|
|
60
|
-
/**
|
|
61
|
-
* Displays a thin line at the position of the cursor on the waveform.
|
|
62
|
-
*
|
|
63
|
-
* @implements {PluginClass}
|
|
64
|
-
* @extends {Observer}
|
|
65
|
-
* @example
|
|
66
|
-
* // es6
|
|
67
|
-
* import CursorPlugin from 'wavesurfer.cursor.js';
|
|
68
|
-
*
|
|
69
|
-
* // commonjs
|
|
70
|
-
* var CursorPlugin = require('wavesurfer.cursor.js');
|
|
71
|
-
*
|
|
72
|
-
* // if you are using <script> tags
|
|
73
|
-
* var CursorPlugin = window.WaveSurfer.cursor;
|
|
74
|
-
*
|
|
75
|
-
* // ... initialising wavesurfer with the plugin
|
|
76
|
-
* var wavesurfer = WaveSurfer.create({
|
|
77
|
-
* // wavesurfer options ...
|
|
78
|
-
* plugins: [
|
|
79
|
-
* CursorPlugin.create({
|
|
80
|
-
* // plugin options ...
|
|
81
|
-
* })
|
|
82
|
-
* ]
|
|
83
|
-
* });
|
|
84
|
-
*/
|
|
85
|
-
var CursorPlugin = /*#__PURE__*/function () {
|
|
86
|
-
/**
|
|
87
|
-
* Construct the plugin class. You probably want to use `CursorPlugin.create`
|
|
88
|
-
* instead.
|
|
89
|
-
*
|
|
90
|
-
* @param {CursorPluginParams} params Plugin parameters
|
|
91
|
-
* @param {object} ws Wavesurfer instance
|
|
92
|
-
*/
|
|
93
|
-
function CursorPlugin(params, ws) {
|
|
94
|
-
var _this = this;
|
|
95
|
-
_classCallCheck(this, CursorPlugin);
|
|
96
|
-
/**
|
|
97
|
-
* @type {CursorPluginParams}
|
|
98
|
-
*/
|
|
99
|
-
_defineProperty(this, "defaultParams", {
|
|
100
|
-
hideOnBlur: true,
|
|
101
|
-
width: '1px',
|
|
102
|
-
color: 'black',
|
|
103
|
-
opacity: '0.25',
|
|
104
|
-
style: 'solid',
|
|
105
|
-
zIndex: 4,
|
|
106
|
-
customStyle: {},
|
|
107
|
-
customShowTimeStyle: {},
|
|
108
|
-
showTime: false,
|
|
109
|
-
followCursorY: false,
|
|
110
|
-
formatTimeCallback: null
|
|
111
|
-
});
|
|
112
|
-
/**
|
|
113
|
-
* @param {object} e Mouse move event
|
|
114
|
-
*/
|
|
115
|
-
_defineProperty(this, "_onMousemove", function (e) {
|
|
116
|
-
var event = _this.util.withOrientation(e, _this.wavesurfer.params.vertical);
|
|
117
|
-
var bbox = _this.wrapper.getBoundingClientRect();
|
|
118
|
-
var y = 0;
|
|
119
|
-
var x = _this.wrapper.scrollLeft + event.clientX - bbox.left;
|
|
120
|
-
var displayTimeWidth = _this.displayTime ? _this.displayTime.getBoundingClientRect().width : 0;
|
|
121
|
-
var flip = bbox.right < event.clientX + displayTimeWidth;
|
|
122
|
-
if (_this.params.showTime && _this.params.followCursorY) {
|
|
123
|
-
// follow y-position of the mouse
|
|
124
|
-
y = event.clientY - (bbox.top + bbox.height / 2);
|
|
125
|
-
}
|
|
126
|
-
_this.updateCursorPosition(x, y, flip);
|
|
127
|
-
});
|
|
128
|
-
/**
|
|
129
|
-
* @returns {void}
|
|
130
|
-
*/
|
|
131
|
-
_defineProperty(this, "_onMouseenter", function () {
|
|
132
|
-
return _this.showCursor();
|
|
133
|
-
});
|
|
134
|
-
/**
|
|
135
|
-
* @returns {void}
|
|
136
|
-
*/
|
|
137
|
-
_defineProperty(this, "_onMouseleave", function () {
|
|
138
|
-
return _this.hideCursor();
|
|
139
|
-
});
|
|
140
|
-
this.wavesurfer = ws;
|
|
141
|
-
this.style = ws.util.style;
|
|
142
|
-
this.util = ws.util;
|
|
143
|
-
/**
|
|
144
|
-
* The cursor HTML element
|
|
145
|
-
*
|
|
146
|
-
* @type {?HTMLElement}
|
|
147
|
-
*/
|
|
148
|
-
this.cursor = null;
|
|
149
|
-
/**
|
|
150
|
-
* displays the time next to the cursor
|
|
151
|
-
*
|
|
152
|
-
* @type {?HTMLElement}
|
|
153
|
-
*/
|
|
154
|
-
this.showTime = null;
|
|
155
|
-
/**
|
|
156
|
-
* The html container that will display the time
|
|
157
|
-
*
|
|
158
|
-
* @type {?HTMLElement}
|
|
159
|
-
*/
|
|
160
|
-
this.displayTime = null;
|
|
161
|
-
/**
|
|
162
|
-
* true when `destroy` was called before `ready` event
|
|
163
|
-
* @type {boolean}
|
|
164
|
-
*/
|
|
165
|
-
this.isDestroyCalled = false;
|
|
166
|
-
this.params = Object.assign({}, this.defaultParams, params);
|
|
167
|
-
}
|
|
168
|
-
_createClass(CursorPlugin, [{
|
|
169
|
-
key: "_onReady",
|
|
170
|
-
value: function _onReady() {
|
|
171
|
-
if (this.isDestroyCalled) {
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
this.wrapper = this.wavesurfer.drawer.wrapper;
|
|
175
|
-
this.cursor = this.util.withOrientation(this.wrapper.appendChild(document.createElement('cursor')), this.wavesurfer.params.vertical);
|
|
176
|
-
this.style(this.cursor, Object.assign({
|
|
177
|
-
position: 'absolute',
|
|
178
|
-
zIndex: this.params.zIndex,
|
|
179
|
-
left: 0,
|
|
180
|
-
top: 0,
|
|
181
|
-
bottom: 0,
|
|
182
|
-
width: '0',
|
|
183
|
-
display: 'flex',
|
|
184
|
-
borderRightStyle: this.params.style,
|
|
185
|
-
borderRightWidth: this.params.width,
|
|
186
|
-
borderRightColor: this.params.color,
|
|
187
|
-
opacity: this.params.opacity,
|
|
188
|
-
pointerEvents: 'none'
|
|
189
|
-
}, this.params.customStyle));
|
|
190
|
-
if (this.params.showTime) {
|
|
191
|
-
this.showTime = this.util.withOrientation(this.wrapper.appendChild(document.createElement('showTitle')), this.wavesurfer.params.vertical);
|
|
192
|
-
this.style(this.showTime, Object.assign({
|
|
193
|
-
position: 'absolute',
|
|
194
|
-
zIndex: this.params.zIndex,
|
|
195
|
-
left: 0,
|
|
196
|
-
top: 0,
|
|
197
|
-
bottom: 0,
|
|
198
|
-
width: 'auto',
|
|
199
|
-
display: 'flex',
|
|
200
|
-
opacity: this.params.opacity,
|
|
201
|
-
pointerEvents: 'none',
|
|
202
|
-
height: '100%'
|
|
203
|
-
}, this.params.customStyle));
|
|
204
|
-
this.displayTime = this.util.withOrientation(this.showTime.appendChild(document.createElement('div')), this.wavesurfer.params.vertical);
|
|
205
|
-
this.style(this.displayTime, Object.assign({
|
|
206
|
-
display: 'inline',
|
|
207
|
-
pointerEvents: 'none',
|
|
208
|
-
margin: 'auto',
|
|
209
|
-
visibility: 'hidden' // initial value will be hidden just for measuring purpose
|
|
210
|
-
}, this.params.customShowTimeStyle));
|
|
211
|
-
|
|
212
|
-
// initial value to measure display width
|
|
213
|
-
this.displayTime.innerHTML = this.formatTime(0);
|
|
214
|
-
}
|
|
215
|
-
this.wrapper.addEventListener('mousemove', this._onMousemove);
|
|
216
|
-
if (this.params.hideOnBlur) {
|
|
217
|
-
// ensure elements are hidden initially
|
|
218
|
-
this.hideCursor();
|
|
219
|
-
this.wrapper.addEventListener('mouseenter', this._onMouseenter);
|
|
220
|
-
this.wrapper.addEventListener('mouseleave', this._onMouseleave);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* Initialise the plugin (used by the Plugin API)
|
|
226
|
-
*/
|
|
227
|
-
}, {
|
|
228
|
-
key: "init",
|
|
229
|
-
value: function init() {
|
|
230
|
-
var _this2 = this;
|
|
231
|
-
if (this.wavesurfer.isReady) {
|
|
232
|
-
this._onReady();
|
|
233
|
-
} else {
|
|
234
|
-
this.wavesurfer.once('ready', function () {
|
|
235
|
-
return _this2._onReady();
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* Destroy the plugin (used by the Plugin API)
|
|
242
|
-
*/
|
|
243
|
-
}, {
|
|
244
|
-
key: "destroy",
|
|
245
|
-
value: function destroy() {
|
|
246
|
-
if (!this.cursorTime || !this.showTime) {
|
|
247
|
-
this.isDestroyCalled = true;
|
|
248
|
-
return;
|
|
249
|
-
}
|
|
250
|
-
if (this.params.showTime) {
|
|
251
|
-
this.showTime && this.showTime.remove();
|
|
252
|
-
}
|
|
253
|
-
this.cursor && this.cursor.remove();
|
|
254
|
-
this.wrapper.removeEventListener('mousemove', this._onMousemove);
|
|
255
|
-
if (this.params.hideOnBlur) {
|
|
256
|
-
this.wrapper.removeEventListener('mouseenter', this._onMouseenter);
|
|
257
|
-
this.wrapper.removeEventListener('mouseleave', this._onMouseleave);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
/**
|
|
262
|
-
* Update the cursor position
|
|
263
|
-
*
|
|
264
|
-
* @param {number} xpos The x offset of the cursor in pixels
|
|
265
|
-
* @param {number} ypos The y offset of the cursor in pixels
|
|
266
|
-
* @param {boolean} flip Flag to flip duration text from right to left
|
|
267
|
-
*/
|
|
268
|
-
}, {
|
|
269
|
-
key: "updateCursorPosition",
|
|
270
|
-
value: function updateCursorPosition(xpos, ypos) {
|
|
271
|
-
var flip = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
272
|
-
this.style(this.cursor, {
|
|
273
|
-
left: "".concat(xpos, "px")
|
|
274
|
-
});
|
|
275
|
-
if (this.params.showTime) {
|
|
276
|
-
var duration = this.wavesurfer.getDuration();
|
|
277
|
-
var elementWidth = this.wavesurfer.drawer.width / this.wavesurfer.params.pixelRatio;
|
|
278
|
-
var scrollWidth = this.wavesurfer.drawer.getScrollX();
|
|
279
|
-
var scrollTime = duration / this.wavesurfer.drawer.width * scrollWidth;
|
|
280
|
-
var timeValue = Math.max(0, (xpos - this.wrapper.scrollLeft) / elementWidth * duration) + scrollTime;
|
|
281
|
-
var formatValue = this.formatTime(timeValue);
|
|
282
|
-
if (flip) {
|
|
283
|
-
var textOffset = this.displayTime.getBoundingClientRect().width;
|
|
284
|
-
xpos -= textOffset;
|
|
285
|
-
}
|
|
286
|
-
this.style(this.showTime, {
|
|
287
|
-
left: "".concat(xpos, "px"),
|
|
288
|
-
top: "".concat(ypos, "px")
|
|
289
|
-
});
|
|
290
|
-
this.style(this.displayTime, {
|
|
291
|
-
visibility: 'visible'
|
|
292
|
-
});
|
|
293
|
-
this.displayTime.innerHTML = "".concat(formatValue);
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
/**
|
|
298
|
-
* Show the cursor
|
|
299
|
-
*/
|
|
300
|
-
}, {
|
|
301
|
-
key: "showCursor",
|
|
302
|
-
value: function showCursor() {
|
|
303
|
-
this.style(this.cursor, {
|
|
304
|
-
display: 'flex'
|
|
305
|
-
});
|
|
306
|
-
if (this.params.showTime) {
|
|
307
|
-
this.style(this.showTime, {
|
|
308
|
-
display: 'flex'
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
/**
|
|
314
|
-
* Hide the cursor
|
|
315
|
-
*/
|
|
316
|
-
}, {
|
|
317
|
-
key: "hideCursor",
|
|
318
|
-
value: function hideCursor() {
|
|
319
|
-
this.style(this.cursor, {
|
|
320
|
-
display: 'none'
|
|
321
|
-
});
|
|
322
|
-
if (this.params.showTime) {
|
|
323
|
-
this.style(this.showTime, {
|
|
324
|
-
display: 'none'
|
|
325
|
-
});
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
/**
|
|
330
|
-
* Format the timestamp for `cursorTime`.
|
|
331
|
-
*
|
|
332
|
-
* @param {number} cursorTime Time in seconds
|
|
333
|
-
* @returns {string} Formatted timestamp
|
|
334
|
-
*/
|
|
335
|
-
}, {
|
|
336
|
-
key: "formatTime",
|
|
337
|
-
value: function formatTime(cursorTime) {
|
|
338
|
-
cursorTime = isNaN(cursorTime) ? 0 : cursorTime;
|
|
339
|
-
if (this.params.formatTimeCallback) {
|
|
340
|
-
return this.params.formatTimeCallback(cursorTime);
|
|
341
|
-
}
|
|
342
|
-
return [cursorTime].map(function (time) {
|
|
343
|
-
return [Math.floor(time % 3600 / 60),
|
|
344
|
-
// minutes
|
|
345
|
-
('00' + Math.floor(time % 60)).slice(-2),
|
|
346
|
-
// seconds
|
|
347
|
-
('000' + Math.floor(time % 1 * 1000)).slice(-3) // milliseconds
|
|
348
|
-
].join(':');
|
|
349
|
-
});
|
|
350
|
-
}
|
|
351
|
-
}], [{
|
|
352
|
-
key: "create",
|
|
353
|
-
value:
|
|
354
|
-
/**
|
|
355
|
-
* Cursor plugin definition factory
|
|
356
|
-
*
|
|
357
|
-
* This function must be used to create a plugin definition which can be
|
|
358
|
-
* used by wavesurfer to correctly instantiate the plugin.
|
|
359
|
-
*
|
|
360
|
-
* @param {CursorPluginParams} params parameters use to initialise the
|
|
361
|
-
* plugin
|
|
362
|
-
* @return {PluginDefinition} an object representing the plugin
|
|
363
|
-
*/
|
|
364
|
-
function create(params) {
|
|
365
|
-
return {
|
|
366
|
-
name: 'cursor',
|
|
367
|
-
deferInit: params && params.deferInit ? params.deferInit : false,
|
|
368
|
-
params: params,
|
|
369
|
-
staticProps: {},
|
|
370
|
-
instance: CursorPlugin
|
|
371
|
-
};
|
|
372
|
-
}
|
|
373
|
-
}]);
|
|
374
|
-
return CursorPlugin;
|
|
375
|
-
}();
|
|
376
|
-
exports["default"] = CursorPlugin;
|
|
377
|
-
module.exports = exports.default;
|
|
378
|
-
|
|
379
|
-
/***/ })
|
|
380
|
-
|
|
381
|
-
/******/ });
|
|
382
|
-
/************************************************************************/
|
|
383
|
-
/******/ // The module cache
|
|
384
|
-
/******/ var __webpack_module_cache__ = {};
|
|
385
|
-
/******/
|
|
386
|
-
/******/ // The require function
|
|
387
|
-
/******/ function __webpack_require__(moduleId) {
|
|
388
|
-
/******/ // Check if module is in cache
|
|
389
|
-
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
390
|
-
/******/ if (cachedModule !== undefined) {
|
|
391
|
-
/******/ return cachedModule.exports;
|
|
392
|
-
/******/ }
|
|
393
|
-
/******/ // Create a new module (and put it into the cache)
|
|
394
|
-
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
395
|
-
/******/ // no module.id needed
|
|
396
|
-
/******/ // no module.loaded needed
|
|
397
|
-
/******/ exports: {}
|
|
398
|
-
/******/ };
|
|
399
|
-
/******/
|
|
400
|
-
/******/ // Execute the module function
|
|
401
|
-
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
402
|
-
/******/
|
|
403
|
-
/******/ // Return the exports of the module
|
|
404
|
-
/******/ return module.exports;
|
|
405
|
-
/******/ }
|
|
406
|
-
/******/
|
|
407
|
-
/************************************************************************/
|
|
408
|
-
/******/
|
|
409
|
-
/******/ // startup
|
|
410
|
-
/******/ // Load entry module and return exports
|
|
411
|
-
/******/ // This entry module is referenced by other modules so it can't be inlined
|
|
412
|
-
/******/ var __webpack_exports__ = __webpack_require__("./src/plugin/cursor/index.js");
|
|
413
|
-
/******/
|
|
414
|
-
/******/ return __webpack_exports__;
|
|
415
|
-
/******/ })()
|
|
416
|
-
;
|
|
417
|
-
});
|
|
418
|
-
//# sourceMappingURL=wavesurfer.cursor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wavesurfer.cursor.js","mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,CAAC;AACD;;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAxBA,IAyBqBA,YAAY;EAmE7B;AACJ;AACA;AACA;AACA;AACA;AACA;EACI,SAAAA,aAAYC,MAAM,EAAEC,EAAE,EAAE;IAAA,IAAAC,KAAA;IAAAC,eAAA,OAAAJ,YAAA;IArDxB;AACJ;AACA;IAFIK,eAAA,wBAGgB;MACZC,UAAU,EAAE,IAAI;MAChBC,KAAK,EAAE,KAAK;MACZC,KAAK,EAAE,OAAO;MACdC,OAAO,EAAE,MAAM;MACfC,KAAK,EAAE,OAAO;MACdC,MAAM,EAAE,CAAC;MACTC,WAAW,EAAE,CAAC,CAAC;MACfC,mBAAmB,EAAE,CAAC,CAAC;MACvBC,QAAQ,EAAE,KAAK;MACfC,aAAa,EAAE,KAAK;MACpBC,kBAAkB,EAAE;IACxB,CAAC;IAED;AACJ;AACA;IAFIX,eAAA,uBAGe,UAAAY,CAAC,EAAI;MAChB,IAAMC,KAAK,GAAGf,KAAI,CAACgB,IAAI,CAACC,eAAe,CAACH,CAAC,EAAEd,KAAI,CAACkB,UAAU,CAACpB,MAAM,CAACqB,QAAQ,CAAC;MAC3E,IAAMC,IAAI,GAAGpB,KAAI,CAACqB,OAAO,CAACC,qBAAqB,EAAE;MACjD,IAAIC,CAAC,GAAG,CAAC;MACT,IAAIC,CAAC,GAAGxB,KAAI,CAACqB,OAAO,CAACI,UAAU,GAAGV,KAAK,CAACW,OAAO,GAAGN,IAAI,CAACO,IAAI;MAC3D,IAAMC,gBAAgB,GAAG5B,KAAI,CAAC6B,WAAW,GAAG7B,KAAI,CAAC6B,WAAW,CAACP,qBAAqB,EAAE,CAAClB,KAAK,GAAG,CAAC;MAC9F,IAAI0B,IAAI,GAAGV,IAAI,CAACW,KAAK,GAAGhB,KAAK,CAACW,OAAO,GAAGE,gBAAgB;MAExD,IAAI5B,KAAI,CAACF,MAAM,CAACa,QAAQ,IAAIX,KAAI,CAACF,MAAM,CAACc,aAAa,EAAE;QACnD;QACAW,CAAC,GAAGR,KAAK,CAACiB,OAAO,IAAIZ,IAAI,CAACa,GAAG,GAAGb,IAAI,CAACc,MAAM,GAAG,CAAC,CAAC;MACpD;MAEAlC,KAAI,CAACmC,oBAAoB,CAACX,CAAC,EAAED,CAAC,EAAEO,IAAI,CAAC;IACzC,CAAC;IAED;AACJ;AACA;IAFI5B,eAAA,wBAGgB;MAAA,OAAMF,KAAI,CAACoC,UAAU,EAAE;IAAA;IAEvC;AACJ;AACA;IAFIlC,eAAA,wBAGgB;MAAA,OAAMF,KAAI,CAACqC,UAAU,EAAE;IAAA;IAUnC,IAAI,CAACnB,UAAU,GAAGnB,EAAE;IACpB,IAAI,CAACQ,KAAK,GAAGR,EAAE,CAACiB,IAAI,CAACT,KAAK;IAC1B,IAAI,CAACS,IAAI,GAAGjB,EAAE,CAACiB,IAAI;IACnB;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACsB,MAAM,GAAG,IAAI;IAClB;AACR;AACA;AACA;AACA;IACQ,IAAI,CAAC3B,QAAQ,GAAG,IAAI;IACpB;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACkB,WAAW,GAAG,IAAI;IACvB;AACR;AACA;AACA;IACQ,IAAI,CAACU,eAAe,GAAG,KAAK;IAE5B,IAAI,CAACzC,MAAM,GAAG0C,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAACC,aAAa,EAAE5C,MAAM,CAAC;EAC/D;EAAC6C,YAAA,CAAA9C,YAAA;IAAA+C,GAAA;IAAAC,KAAA,EAED,SAAAC,SAAA,EAAW;MACP,IAAI,IAAI,CAACP,eAAe,EAAE;QACtB;MACJ;MACA,IAAI,CAAClB,OAAO,GAAG,IAAI,CAACH,UAAU,CAAC6B,MAAM,CAAC1B,OAAO;MAC7C,IAAI,CAACiB,MAAM,GAAG,IAAI,CAACtB,IAAI,CAACC,eAAe,CAAC,IAAI,CAACI,OAAO,CAAC2B,WAAW,CAC5DC,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC,CACnC,EAAE,IAAI,CAAChC,UAAU,CAACpB,MAAM,CAACqB,QAAQ,CAAC;MAEnC,IAAI,CAACZ,KAAK,CAAC,IAAI,CAAC+B,MAAM,EAClBE,MAAM,CAACC,MAAM,CACT;QACIU,QAAQ,EAAE,UAAU;QACpB3C,MAAM,EAAE,IAAI,CAACV,MAAM,CAACU,MAAM;QAC1BmB,IAAI,EAAE,CAAC;QACPM,GAAG,EAAE,CAAC;QACNmB,MAAM,EAAE,CAAC;QACThD,KAAK,EAAE,GAAG;QACViD,OAAO,EAAE,MAAM;QACfC,gBAAgB,EAAE,IAAI,CAACxD,MAAM,CAACS,KAAK;QACnCgD,gBAAgB,EAAE,IAAI,CAACzD,MAAM,CAACM,KAAK;QACnCoD,gBAAgB,EAAE,IAAI,CAAC1D,MAAM,CAACO,KAAK;QACnCC,OAAO,EAAE,IAAI,CAACR,MAAM,CAACQ,OAAO;QAC5BmD,aAAa,EAAE;MACnB,CAAC,EACD,IAAI,CAAC3D,MAAM,CAACW,WAAW,CAC1B,CACJ;MAED,IAAI,IAAI,CAACX,MAAM,CAACa,QAAQ,EAAE;QACtB,IAAI,CAACA,QAAQ,GAAG,IAAI,CAACK,IAAI,CAACC,eAAe,CAAC,IAAI,CAACI,OAAO,CAAC2B,WAAW,CAC9DC,QAAQ,CAACC,aAAa,CAAC,WAAW,CAAC,CACtC,EAAE,IAAI,CAAChC,UAAU,CAACpB,MAAM,CAACqB,QAAQ,CAAC;QACnC,IAAI,CAACZ,KAAK,CACN,IAAI,CAACI,QAAQ,EACb6B,MAAM,CAACC,MAAM,CACT;UACIU,QAAQ,EAAE,UAAU;UACpB3C,MAAM,EAAE,IAAI,CAACV,MAAM,CAACU,MAAM;UAC1BmB,IAAI,EAAE,CAAC;UACPM,GAAG,EAAE,CAAC;UACNmB,MAAM,EAAE,CAAC;UACThD,KAAK,EAAE,MAAM;UACbiD,OAAO,EAAE,MAAM;UACf/C,OAAO,EAAE,IAAI,CAACR,MAAM,CAACQ,OAAO;UAC5BmD,aAAa,EAAE,MAAM;UACrBvB,MAAM,EAAE;QACZ,CAAC,EACD,IAAI,CAACpC,MAAM,CAACW,WAAW,CAC1B,CACJ;QAED,IAAI,CAACoB,WAAW,GAAG,IAAI,CAACb,IAAI,CAACC,eAAe,CAAC,IAAI,CAACN,QAAQ,CAACqC,WAAW,CAClEC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC,CAChC,EAAE,IAAI,CAAChC,UAAU,CAACpB,MAAM,CAACqB,QAAQ,CAAC;QAEnC,IAAI,CAACZ,KAAK,CAAC,IAAI,CAACsB,WAAW,EACvBW,MAAM,CAACC,MAAM,CACT;UACIY,OAAO,EAAE,QAAQ;UACjBI,aAAa,EAAE,MAAM;UACrBC,MAAM,EAAE,MAAM;UACdC,UAAU,EAAE,QAAQ,CAAC;QACzB,CAAC,EACD,IAAI,CAAC7D,MAAM,CAACY,mBAAmB,CAClC,CACJ;;QAED;QACA,IAAI,CAACmB,WAAW,CAAC+B,SAAS,GAAG,IAAI,CAACC,UAAU,CAAC,CAAC,CAAC;MACnD;MAEA,IAAI,CAACxC,OAAO,CAACyC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACC,YAAY,CAAC;MAC7D,IAAI,IAAI,CAACjE,MAAM,CAACK,UAAU,EAAE;QACxB;QACA,IAAI,CAACkC,UAAU,EAAE;QACjB,IAAI,CAAChB,OAAO,CAACyC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAACE,aAAa,CAAC;QAC/D,IAAI,CAAC3C,OAAO,CAACyC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAACG,aAAa,CAAC;MACnE;IACJ;;IAEA;AACJ;AACA;EAFI;IAAArB,GAAA;IAAAC,KAAA,EAGA,SAAAqB,KAAA,EAAO;MAAA,IAAAC,MAAA;MACH,IAAI,IAAI,CAACjD,UAAU,CAACkD,OAAO,EAAE;QACzB,IAAI,CAACtB,QAAQ,EAAE;MACnB,CAAC,MAAM;QACH,IAAI,CAAC5B,UAAU,CAACmD,IAAI,CAAC,OAAO,EAAE;UAAA,OAAMF,MAAI,CAACrB,QAAQ,EAAE;QAAA,EAAC;MACxD;IACJ;;IAEA;AACJ;AACA;EAFI;IAAAF,GAAA;IAAAC,KAAA,EAGA,SAAAyB,QAAA,EAAU;MACN,IAAI,CAAC,IAAI,CAACC,UAAU,IAAI,CAAC,IAAI,CAAC5D,QAAQ,EAAC;QACnC,IAAI,CAAC4B,eAAe,GAAG,IAAI;QAC3B;MACJ;MACA,IAAI,IAAI,CAACzC,MAAM,CAACa,QAAQ,EAAE;QACtB,IAAI,CAACA,QAAQ,IAAI,IAAI,CAACA,QAAQ,CAAC6D,MAAM,EAAE;MAC3C;MACA,IAAI,CAAClC,MAAM,IAAI,IAAI,CAACA,MAAM,CAACkC,MAAM,EAAE;MACnC,IAAI,CAACnD,OAAO,CAACoD,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACV,YAAY,CAAC;MAChE,IAAI,IAAI,CAACjE,MAAM,CAACK,UAAU,EAAE;QACxB,IAAI,CAACkB,OAAO,CAACoD,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAACT,aAAa,CAAC;QAClE,IAAI,CAAC3C,OAAO,CAACoD,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAACR,aAAa,CAAC;MACtE;IACJ;;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EANI;IAAArB,GAAA;IAAAC,KAAA,EAOA,SAAAV,qBAAqBuC,IAAI,EAAEC,IAAI,EAAgB;MAAA,IAAd7C,IAAI,GAAA8C,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;MACzC,IAAI,CAACrE,KAAK,CAAC,IAAI,CAAC+B,MAAM,EAAE;QACpBX,IAAI,KAAAoD,MAAA,CAAKL,IAAI;MACjB,CAAC,CAAC;MACF,IAAI,IAAI,CAAC5E,MAAM,CAACa,QAAQ,EAAE;QACtB,IAAMqE,QAAQ,GAAG,IAAI,CAAC9D,UAAU,CAAC+D,WAAW,EAAE;QAC9C,IAAMC,YAAY,GACd,IAAI,CAAChE,UAAU,CAAC6B,MAAM,CAAC3C,KAAK,GAC5B,IAAI,CAACc,UAAU,CAACpB,MAAM,CAACqF,UAAU;QACrC,IAAMC,WAAW,GAAG,IAAI,CAAClE,UAAU,CAAC6B,MAAM,CAACsC,UAAU,EAAE;QAEvD,IAAMC,UAAU,GACXN,QAAQ,GAAG,IAAI,CAAC9D,UAAU,CAAC6B,MAAM,CAAC3C,KAAK,GAAIgF,WAAW;QAE3D,IAAMG,SAAS,GACXC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAG,CAACf,IAAI,GAAG,IAAI,CAACrD,OAAO,CAACI,UAAU,IAAIyD,YAAY,GAAIF,QAAQ,CAAC,GAAGM,UAAU;QAC1F,IAAMI,WAAW,GAAG,IAAI,CAAC7B,UAAU,CAAC0B,SAAS,CAAC;QAC9C,IAAIzD,IAAI,EAAE;UACN,IAAM6D,UAAU,GAAG,IAAI,CAAC9D,WAAW,CAACP,qBAAqB,EAAE,CAAClB,KAAK;UACjEsE,IAAI,IAAIiB,UAAU;QACtB;QACA,IAAI,CAACpF,KAAK,CAAC,IAAI,CAACI,QAAQ,EAAE;UACtBgB,IAAI,KAAAoD,MAAA,CAAKL,IAAI,OAAI;UACjBzC,GAAG,KAAA8C,MAAA,CAAKJ,IAAI;QAChB,CAAC,CAAC;QACF,IAAI,CAACpE,KAAK,CAAC,IAAI,CAACsB,WAAW,EAAE;UACzB8B,UAAU,EAAE;QAChB,CAAC,CAAC;QACF,IAAI,CAAC9B,WAAW,CAAC+B,SAAS,MAAAmB,MAAA,CAAMW,WAAW,CAAE;MACjD;IACJ;;IAEA;AACJ;AACA;EAFI;IAAA9C,GAAA;IAAAC,KAAA,EAGA,SAAAT,WAAA,EAAa;MACT,IAAI,CAAC7B,KAAK,CAAC,IAAI,CAAC+B,MAAM,EAAE;QACpBe,OAAO,EAAE;MACb,CAAC,CAAC;MACF,IAAI,IAAI,CAACvD,MAAM,CAACa,QAAQ,EAAE;QACtB,IAAI,CAACJ,KAAK,CAAC,IAAI,CAACI,QAAQ,EAAE;UACtB0C,OAAO,EAAE;QACb,CAAC,CAAC;MACN;IACJ;;IAEA;AACJ;AACA;EAFI;IAAAT,GAAA;IAAAC,KAAA,EAGA,SAAAR,WAAA,EAAa;MACT,IAAI,CAAC9B,KAAK,CAAC,IAAI,CAAC+B,MAAM,EAAE;QACpBe,OAAO,EAAE;MACb,CAAC,CAAC;MACF,IAAI,IAAI,CAACvD,MAAM,CAACa,QAAQ,EAAE;QACtB,IAAI,CAACJ,KAAK,CAAC,IAAI,CAACI,QAAQ,EAAE;UACtB0C,OAAO,EAAE;QACb,CAAC,CAAC;MACN;IACJ;;IAEA;AACJ;AACA;AACA;AACA;AACA;EALI;IAAAT,GAAA;IAAAC,KAAA,EAMA,SAAAgB,WAAWU,UAAU,EAAE;MACnBA,UAAU,GAAGqB,KAAK,CAACrB,UAAU,CAAC,GAAG,CAAC,GAAGA,UAAU;MAC/C,IAAI,IAAI,CAACzE,MAAM,CAACe,kBAAkB,EAAE;QAChC,OAAO,IAAI,CAACf,MAAM,CAACe,kBAAkB,CAAC0D,UAAU,CAAC;MACrD;MACA,OAAO,CAACA,UAAU,CAAC,CAACsB,GAAG,CAAC,UAAAC,IAAI;QAAA,OACxB,CACIN,IAAI,CAACO,KAAK,CAAED,IAAI,GAAG,IAAI,GAAI,EAAE,CAAC;QAAE;QAChC,CAAC,IAAI,GAAGN,IAAI,CAACO,KAAK,CAACD,IAAI,GAAG,EAAE,CAAC,EAAEE,KAAK,CAAC,CAAC,CAAC,CAAC;QAAE;QAC1C,CAAC,KAAK,GAAGR,IAAI,CAACO,KAAK,CAAED,IAAI,GAAG,CAAC,GAAI,IAAI,CAAC,EAAEE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAAA,CACrD,CAACC,IAAI,CAAC,GAAG,CAAC;MAAA,EACd;IACL;EAAC;IAAArD,GAAA;IAAAC,KAAA;IA5SD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI,SAAAqD,OAAcpG,MAAM,EAAE;MAClB,OAAO;QACHqG,IAAI,EAAE,QAAQ;QACdC,SAAS,EAAEtG,MAAM,IAAIA,MAAM,CAACsG,SAAS,GAAGtG,MAAM,CAACsG,SAAS,GAAG,KAAK;QAChEtG,MAAM,EAAEA,MAAM;QACduG,WAAW,EAAE,CAAC,CAAC;QACfC,QAAQ,EAAEzG;MACd,CAAC;IACL;EAAC;EAAA,OAAAA,YAAA;AAAA;AAAA0G,kBAAA,GAAA1G,YAAA;AAAA4G,MAAA,CAAAF,OAAA,GAAAA,OAAA,CAAAC,OAAA;;;;;;UClEL;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;UEtBA;UACA;UACA;UACA","sources":["webpack://WaveSurfer/webpack/universalModuleDefinition","webpack://WaveSurfer/./src/plugin/cursor/index.js","webpack://WaveSurfer/webpack/bootstrap","webpack://WaveSurfer/webpack/before-startup","webpack://WaveSurfer/webpack/startup","webpack://WaveSurfer/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"WaveSurfer\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"WaveSurfer\"] = factory();\n\telse\n\t\troot[\"WaveSurfer\"] = root[\"WaveSurfer\"] || {}, root[\"WaveSurfer\"][\"cursor\"] = factory();\n})(self, () => {\nreturn ","/**\n * @typedef {Object} CursorPluginParams\n * @property {?boolean} deferInit Set to true to stop auto init in `addPlugin()`\n * @property {boolean} hideOnBlur=true Hide the cursor when the mouse leaves the\n * waveform\n * @property {string} width='1px' The width of the cursor\n * @property {string} color='black' The color of the cursor\n * @property {number|string} opacity='0.25' The opacity of the cursor\n * @property {string} style='solid' The border style of the cursor\n * @property {number} zIndex=3 The z-index of the cursor element\n * @property {object} customStyle An object with custom styles which are applied\n * to the cursor element\n * @property {boolean} showTime=false Show the time on the cursor.\n * @property {object} customShowTimeStyle An object with custom styles which are\n * applied to the cursor time element.\n * @property {boolean} followCursorY=false Use `true` to make the time on\n * the cursor follow the x and the y-position of the mouse. Use `false` to make the\n * it only follow the x-position of the mouse.\n * @property {function} formatTimeCallback Formats the timestamp on the cursor.\n * @property {boolean} isDestroyCalled true if called destroy before the ready event fired\n */\n\n/**\n * Displays a thin line at the position of the cursor on the waveform.\n *\n * @implements {PluginClass}\n * @extends {Observer}\n * @example\n * // es6\n * import CursorPlugin from 'wavesurfer.cursor.js';\n *\n * // commonjs\n * var CursorPlugin = require('wavesurfer.cursor.js');\n *\n * // if you are using <script> tags\n * var CursorPlugin = window.WaveSurfer.cursor;\n *\n * // ... initialising wavesurfer with the plugin\n * var wavesurfer = WaveSurfer.create({\n * // wavesurfer options ...\n * plugins: [\n * CursorPlugin.create({\n * // plugin options ...\n * })\n * ]\n * });\n */\nexport default class CursorPlugin {\n /**\n * Cursor 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 {CursorPluginParams} params parameters use to initialise the\n * plugin\n * @return {PluginDefinition} an object representing the plugin\n */\n static create(params) {\n return {\n name: 'cursor',\n deferInit: params && params.deferInit ? params.deferInit : false,\n params: params,\n staticProps: {},\n instance: CursorPlugin\n };\n }\n\n /**\n * @type {CursorPluginParams}\n */\n defaultParams = {\n hideOnBlur: true,\n width: '1px',\n color: 'black',\n opacity: '0.25',\n style: 'solid',\n zIndex: 4,\n customStyle: {},\n customShowTimeStyle: {},\n showTime: false,\n followCursorY: false,\n formatTimeCallback: null\n };\n\n /**\n * @param {object} e Mouse move event\n */\n _onMousemove = e => {\n const event = this.util.withOrientation(e, this.wavesurfer.params.vertical);\n const bbox = this.wrapper.getBoundingClientRect();\n let y = 0;\n let x = this.wrapper.scrollLeft + event.clientX - bbox.left;\n const displayTimeWidth = this.displayTime ? this.displayTime.getBoundingClientRect().width : 0;\n let flip = bbox.right < event.clientX + displayTimeWidth;\n\n if (this.params.showTime && this.params.followCursorY) {\n // follow y-position of the mouse\n y = event.clientY - (bbox.top + bbox.height / 2);\n }\n\n this.updateCursorPosition(x, y, flip);\n };\n\n /**\n * @returns {void}\n */\n _onMouseenter = () => this.showCursor();\n\n /**\n * @returns {void}\n */\n _onMouseleave = () => this.hideCursor();\n\n /**\n * Construct the plugin class. You probably want to use `CursorPlugin.create`\n * instead.\n *\n * @param {CursorPluginParams} params Plugin parameters\n * @param {object} ws Wavesurfer instance\n */\n constructor(params, ws) {\n this.wavesurfer = ws;\n this.style = ws.util.style;\n this.util = ws.util;\n /**\n * The cursor HTML element\n *\n * @type {?HTMLElement}\n */\n this.cursor = null;\n /**\n * displays the time next to the cursor\n *\n * @type {?HTMLElement}\n */\n this.showTime = null;\n /**\n * The html container that will display the time\n *\n * @type {?HTMLElement}\n */\n this.displayTime = null;\n /**\n * true when `destroy` was called before `ready` event\n * @type {boolean}\n */\n this.isDestroyCalled = false;\n\n this.params = Object.assign({}, this.defaultParams, params);\n }\n\n _onReady() {\n if (this.isDestroyCalled) {\n return;\n }\n this.wrapper = this.wavesurfer.drawer.wrapper;\n this.cursor = this.util.withOrientation(this.wrapper.appendChild(\n document.createElement('cursor'),\n ), this.wavesurfer.params.vertical);\n\n this.style(this.cursor,\n Object.assign(\n {\n position: 'absolute',\n zIndex: this.params.zIndex,\n left: 0,\n top: 0,\n bottom: 0,\n width: '0',\n display: 'flex',\n borderRightStyle: this.params.style,\n borderRightWidth: this.params.width,\n borderRightColor: this.params.color,\n opacity: this.params.opacity,\n pointerEvents: 'none'\n },\n this.params.customStyle\n )\n );\n\n if (this.params.showTime) {\n this.showTime = this.util.withOrientation(this.wrapper.appendChild(\n document.createElement('showTitle')\n ), this.wavesurfer.params.vertical);\n this.style(\n this.showTime,\n Object.assign(\n {\n position: 'absolute',\n zIndex: this.params.zIndex,\n left: 0,\n top: 0,\n bottom: 0,\n width: 'auto',\n display: 'flex',\n opacity: this.params.opacity,\n pointerEvents: 'none',\n height: '100%'\n },\n this.params.customStyle\n )\n );\n\n this.displayTime = this.util.withOrientation(this.showTime.appendChild(\n document.createElement('div'),\n ), this.wavesurfer.params.vertical);\n\n this.style(this.displayTime,\n Object.assign(\n {\n display: 'inline',\n pointerEvents: 'none',\n margin: 'auto',\n visibility: 'hidden' // initial value will be hidden just for measuring purpose\n },\n this.params.customShowTimeStyle\n )\n );\n\n // initial value to measure display width\n this.displayTime.innerHTML = this.formatTime(0);\n }\n\n this.wrapper.addEventListener('mousemove', this._onMousemove);\n if (this.params.hideOnBlur) {\n // ensure elements are hidden initially\n this.hideCursor();\n this.wrapper.addEventListener('mouseenter', this._onMouseenter);\n this.wrapper.addEventListener('mouseleave', this._onMouseleave);\n }\n }\n\n /**\n * Initialise the plugin (used by the Plugin API)\n */\n init() {\n if (this.wavesurfer.isReady) {\n this._onReady();\n } else {\n this.wavesurfer.once('ready', () => this._onReady());\n }\n }\n\n /**\n * Destroy the plugin (used by the Plugin API)\n */\n destroy() {\n if (!this.cursorTime || !this.showTime){\n this.isDestroyCalled = true;\n return;\n }\n if (this.params.showTime) {\n this.showTime && this.showTime.remove();\n }\n this.cursor && this.cursor.remove();\n this.wrapper.removeEventListener('mousemove', this._onMousemove);\n if (this.params.hideOnBlur) {\n this.wrapper.removeEventListener('mouseenter', this._onMouseenter);\n this.wrapper.removeEventListener('mouseleave', this._onMouseleave);\n }\n }\n\n /**\n * Update the cursor position\n *\n * @param {number} xpos The x offset of the cursor in pixels\n * @param {number} ypos The y offset of the cursor in pixels\n * @param {boolean} flip Flag to flip duration text from right to left\n */\n updateCursorPosition(xpos, ypos, flip = false) {\n this.style(this.cursor, {\n left: `${xpos}px`\n });\n if (this.params.showTime) {\n const duration = this.wavesurfer.getDuration();\n const elementWidth =\n this.wavesurfer.drawer.width /\n this.wavesurfer.params.pixelRatio;\n const scrollWidth = this.wavesurfer.drawer.getScrollX();\n\n const scrollTime =\n (duration / this.wavesurfer.drawer.width) * scrollWidth;\n\n const timeValue =\n Math.max(0, ((xpos - this.wrapper.scrollLeft) / elementWidth) * duration) + scrollTime;\n const formatValue = this.formatTime(timeValue);\n if (flip) {\n const textOffset = this.displayTime.getBoundingClientRect().width;\n xpos -= textOffset;\n }\n this.style(this.showTime, {\n left: `${xpos}px`,\n top: `${ypos}px`\n });\n this.style(this.displayTime, {\n visibility: 'visible'\n });\n this.displayTime.innerHTML = `${formatValue}`;\n }\n }\n\n /**\n * Show the cursor\n */\n showCursor() {\n this.style(this.cursor, {\n display: 'flex'\n });\n if (this.params.showTime) {\n this.style(this.showTime, {\n display: 'flex'\n });\n }\n }\n\n /**\n * Hide the cursor\n */\n hideCursor() {\n this.style(this.cursor, {\n display: 'none'\n });\n if (this.params.showTime) {\n this.style(this.showTime, {\n display: 'none'\n });\n }\n }\n\n /**\n * Format the timestamp for `cursorTime`.\n *\n * @param {number} cursorTime Time in seconds\n * @returns {string} Formatted timestamp\n */\n formatTime(cursorTime) {\n cursorTime = isNaN(cursorTime) ? 0 : cursorTime;\n if (this.params.formatTimeCallback) {\n return this.params.formatTimeCallback(cursorTime);\n }\n return [cursorTime].map(time =>\n [\n Math.floor((time % 3600) / 60), // minutes\n ('00' + Math.floor(time % 60)).slice(-2), // seconds\n ('000' + Math.floor((time % 1) * 1000)).slice(-3) // milliseconds\n ].join(':')\n );\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/cursor/index.js\");\n",""],"names":["CursorPlugin","params","ws","_this","_classCallCheck","_defineProperty","hideOnBlur","width","color","opacity","style","zIndex","customStyle","customShowTimeStyle","showTime","followCursorY","formatTimeCallback","e","event","util","withOrientation","wavesurfer","vertical","bbox","wrapper","getBoundingClientRect","y","x","scrollLeft","clientX","left","displayTimeWidth","displayTime","flip","right","clientY","top","height","updateCursorPosition","showCursor","hideCursor","cursor","isDestroyCalled","Object","assign","defaultParams","_createClass","key","value","_onReady","drawer","appendChild","document","createElement","position","bottom","display","borderRightStyle","borderRightWidth","borderRightColor","pointerEvents","margin","visibility","innerHTML","formatTime","addEventListener","_onMousemove","_onMouseenter","_onMouseleave","init","_this2","isReady","once","destroy","cursorTime","remove","removeEventListener","xpos","ypos","arguments","length","undefined","concat","duration","getDuration","elementWidth","pixelRatio","scrollWidth","getScrollX","scrollTime","timeValue","Math","max","formatValue","textOffset","isNaN","map","time","floor","slice","join","create","name","deferInit","staticProps","instance","exports","default","module"],"sourceRoot":""}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* wavesurfer.js cursor plugin 6.5.0 (2023-03-11)
|
|
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.cursor=t())}(self,(()=>(()=>{"use strict";var e={178:(e,t)=>{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 r(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,o(r.key),r)}}function s(e,t,i){return(t=o(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e){var t=function(e,t){if("object"!==i(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var s=r.call(e,t||"default");if("object"!==i(s))return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===i(t)?t:String(t)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=function(){function e(t,i){var r=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),s(this,"defaultParams",{hideOnBlur:!0,width:"1px",color:"black",opacity:"0.25",style:"solid",zIndex:4,customStyle:{},customShowTimeStyle:{},showTime:!1,followCursorY:!1,formatTimeCallback:null}),s(this,"_onMousemove",(function(e){var t=r.util.withOrientation(e,r.wavesurfer.params.vertical),i=r.wrapper.getBoundingClientRect(),s=0,o=r.wrapper.scrollLeft+t.clientX-i.left,a=r.displayTime?r.displayTime.getBoundingClientRect().width:0,n=i.right<t.clientX+a;r.params.showTime&&r.params.followCursorY&&(s=t.clientY-(i.top+i.height/2)),r.updateCursorPosition(o,s,n)})),s(this,"_onMouseenter",(function(){return r.showCursor()})),s(this,"_onMouseleave",(function(){return r.hideCursor()})),this.wavesurfer=i,this.style=i.util.style,this.util=i.util,this.cursor=null,this.showTime=null,this.displayTime=null,this.isDestroyCalled=!1,this.params=Object.assign({},this.defaultParams,t)}var t,i,o;return t=e,i=[{key:"_onReady",value:function(){this.isDestroyCalled||(this.wrapper=this.wavesurfer.drawer.wrapper,this.cursor=this.util.withOrientation(this.wrapper.appendChild(document.createElement("cursor")),this.wavesurfer.params.vertical),this.style(this.cursor,Object.assign({position:"absolute",zIndex:this.params.zIndex,left:0,top:0,bottom:0,width:"0",display:"flex",borderRightStyle:this.params.style,borderRightWidth:this.params.width,borderRightColor:this.params.color,opacity:this.params.opacity,pointerEvents:"none"},this.params.customStyle)),this.params.showTime&&(this.showTime=this.util.withOrientation(this.wrapper.appendChild(document.createElement("showTitle")),this.wavesurfer.params.vertical),this.style(this.showTime,Object.assign({position:"absolute",zIndex:this.params.zIndex,left:0,top:0,bottom:0,width:"auto",display:"flex",opacity:this.params.opacity,pointerEvents:"none",height:"100%"},this.params.customStyle)),this.displayTime=this.util.withOrientation(this.showTime.appendChild(document.createElement("div")),this.wavesurfer.params.vertical),this.style(this.displayTime,Object.assign({display:"inline",pointerEvents:"none",margin:"auto",visibility:"hidden"},this.params.customShowTimeStyle)),this.displayTime.innerHTML=this.formatTime(0)),this.wrapper.addEventListener("mousemove",this._onMousemove),this.params.hideOnBlur&&(this.hideCursor(),this.wrapper.addEventListener("mouseenter",this._onMouseenter),this.wrapper.addEventListener("mouseleave",this._onMouseleave)))}},{key:"init",value:function(){var e=this;this.wavesurfer.isReady?this._onReady():this.wavesurfer.once("ready",(function(){return e._onReady()}))}},{key:"destroy",value:function(){this.cursorTime&&this.showTime?(this.params.showTime&&this.showTime&&this.showTime.remove(),this.cursor&&this.cursor.remove(),this.wrapper.removeEventListener("mousemove",this._onMousemove),this.params.hideOnBlur&&(this.wrapper.removeEventListener("mouseenter",this._onMouseenter),this.wrapper.removeEventListener("mouseleave",this._onMouseleave))):this.isDestroyCalled=!0}},{key:"updateCursorPosition",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.style(this.cursor,{left:"".concat(e,"px")}),this.params.showTime){var r=this.wavesurfer.getDuration(),s=this.wavesurfer.drawer.width/this.wavesurfer.params.pixelRatio,o=this.wavesurfer.drawer.getScrollX(),a=r/this.wavesurfer.drawer.width*o,n=Math.max(0,(e-this.wrapper.scrollLeft)/s*r)+a,l=this.formatTime(n);i&&(e-=this.displayTime.getBoundingClientRect().width),this.style(this.showTime,{left:"".concat(e,"px"),top:"".concat(t,"px")}),this.style(this.displayTime,{visibility:"visible"}),this.displayTime.innerHTML="".concat(l)}}},{key:"showCursor",value:function(){this.style(this.cursor,{display:"flex"}),this.params.showTime&&this.style(this.showTime,{display:"flex"})}},{key:"hideCursor",value:function(){this.style(this.cursor,{display:"none"}),this.params.showTime&&this.style(this.showTime,{display:"none"})}},{key:"formatTime",value:function(e){return e=isNaN(e)?0:e,this.params.formatTimeCallback?this.params.formatTimeCallback(e):[e].map((function(e){return[Math.floor(e%3600/60),("00"+Math.floor(e%60)).slice(-2),("000"+Math.floor(e%1*1e3)).slice(-3)].join(":")}))}}],o=[{key:"create",value:function(t){return{name:"cursor",deferInit:!(!t||!t.deferInit)&&t.deferInit,params:t,staticProps:{},instance:e}}}],i&&r(t.prototype,i),o&&r(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.default=a,e.exports=t.default}},t={};var i=function i(r){var s=t[r];if(void 0!==s)return s.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,i),o.exports}(178);return i})()));
|
|
7
|
-
//# sourceMappingURL=wavesurfer.cursor.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wavesurfer.cursor.min.js","mappings":"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","sources":["webpack://WaveSurfer/webpack/universalModuleDefinition","webpack://WaveSurfer/./src/plugin/cursor/index.js","webpack://WaveSurfer/webpack/bootstrap","webpack://WaveSurfer/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"WaveSurfer\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"WaveSurfer\"] = factory();\n\telse\n\t\troot[\"WaveSurfer\"] = root[\"WaveSurfer\"] || {}, root[\"WaveSurfer\"][\"cursor\"] = factory();\n})(self, () => {\nreturn ","/**\n * @typedef {Object} CursorPluginParams\n * @property {?boolean} deferInit Set to true to stop auto init in `addPlugin()`\n * @property {boolean} hideOnBlur=true Hide the cursor when the mouse leaves the\n * waveform\n * @property {string} width='1px' The width of the cursor\n * @property {string} color='black' The color of the cursor\n * @property {number|string} opacity='0.25' The opacity of the cursor\n * @property {string} style='solid' The border style of the cursor\n * @property {number} zIndex=3 The z-index of the cursor element\n * @property {object} customStyle An object with custom styles which are applied\n * to the cursor element\n * @property {boolean} showTime=false Show the time on the cursor.\n * @property {object} customShowTimeStyle An object with custom styles which are\n * applied to the cursor time element.\n * @property {boolean} followCursorY=false Use `true` to make the time on\n * the cursor follow the x and the y-position of the mouse. Use `false` to make the\n * it only follow the x-position of the mouse.\n * @property {function} formatTimeCallback Formats the timestamp on the cursor.\n * @property {boolean} isDestroyCalled true if called destroy before the ready event fired\n */\n\n/**\n * Displays a thin line at the position of the cursor on the waveform.\n *\n * @implements {PluginClass}\n * @extends {Observer}\n * @example\n * // es6\n * import CursorPlugin from 'wavesurfer.cursor.js';\n *\n * // commonjs\n * var CursorPlugin = require('wavesurfer.cursor.js');\n *\n * // if you are using <script> tags\n * var CursorPlugin = window.WaveSurfer.cursor;\n *\n * // ... initialising wavesurfer with the plugin\n * var wavesurfer = WaveSurfer.create({\n * // wavesurfer options ...\n * plugins: [\n * CursorPlugin.create({\n * // plugin options ...\n * })\n * ]\n * });\n */\nexport default class CursorPlugin {\n /**\n * Cursor 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 {CursorPluginParams} params parameters use to initialise the\n * plugin\n * @return {PluginDefinition} an object representing the plugin\n */\n static create(params) {\n return {\n name: 'cursor',\n deferInit: params && params.deferInit ? params.deferInit : false,\n params: params,\n staticProps: {},\n instance: CursorPlugin\n };\n }\n\n /**\n * @type {CursorPluginParams}\n */\n defaultParams = {\n hideOnBlur: true,\n width: '1px',\n color: 'black',\n opacity: '0.25',\n style: 'solid',\n zIndex: 4,\n customStyle: {},\n customShowTimeStyle: {},\n showTime: false,\n followCursorY: false,\n formatTimeCallback: null\n };\n\n /**\n * @param {object} e Mouse move event\n */\n _onMousemove = e => {\n const event = this.util.withOrientation(e, this.wavesurfer.params.vertical);\n const bbox = this.wrapper.getBoundingClientRect();\n let y = 0;\n let x = this.wrapper.scrollLeft + event.clientX - bbox.left;\n const displayTimeWidth = this.displayTime ? this.displayTime.getBoundingClientRect().width : 0;\n let flip = bbox.right < event.clientX + displayTimeWidth;\n\n if (this.params.showTime && this.params.followCursorY) {\n // follow y-position of the mouse\n y = event.clientY - (bbox.top + bbox.height / 2);\n }\n\n this.updateCursorPosition(x, y, flip);\n };\n\n /**\n * @returns {void}\n */\n _onMouseenter = () => this.showCursor();\n\n /**\n * @returns {void}\n */\n _onMouseleave = () => this.hideCursor();\n\n /**\n * Construct the plugin class. You probably want to use `CursorPlugin.create`\n * instead.\n *\n * @param {CursorPluginParams} params Plugin parameters\n * @param {object} ws Wavesurfer instance\n */\n constructor(params, ws) {\n this.wavesurfer = ws;\n this.style = ws.util.style;\n this.util = ws.util;\n /**\n * The cursor HTML element\n *\n * @type {?HTMLElement}\n */\n this.cursor = null;\n /**\n * displays the time next to the cursor\n *\n * @type {?HTMLElement}\n */\n this.showTime = null;\n /**\n * The html container that will display the time\n *\n * @type {?HTMLElement}\n */\n this.displayTime = null;\n /**\n * true when `destroy` was called before `ready` event\n * @type {boolean}\n */\n this.isDestroyCalled = false;\n\n this.params = Object.assign({}, this.defaultParams, params);\n }\n\n _onReady() {\n if (this.isDestroyCalled) {\n return;\n }\n this.wrapper = this.wavesurfer.drawer.wrapper;\n this.cursor = this.util.withOrientation(this.wrapper.appendChild(\n document.createElement('cursor'),\n ), this.wavesurfer.params.vertical);\n\n this.style(this.cursor,\n Object.assign(\n {\n position: 'absolute',\n zIndex: this.params.zIndex,\n left: 0,\n top: 0,\n bottom: 0,\n width: '0',\n display: 'flex',\n borderRightStyle: this.params.style,\n borderRightWidth: this.params.width,\n borderRightColor: this.params.color,\n opacity: this.params.opacity,\n pointerEvents: 'none'\n },\n this.params.customStyle\n )\n );\n\n if (this.params.showTime) {\n this.showTime = this.util.withOrientation(this.wrapper.appendChild(\n document.createElement('showTitle')\n ), this.wavesurfer.params.vertical);\n this.style(\n this.showTime,\n Object.assign(\n {\n position: 'absolute',\n zIndex: this.params.zIndex,\n left: 0,\n top: 0,\n bottom: 0,\n width: 'auto',\n display: 'flex',\n opacity: this.params.opacity,\n pointerEvents: 'none',\n height: '100%'\n },\n this.params.customStyle\n )\n );\n\n this.displayTime = this.util.withOrientation(this.showTime.appendChild(\n document.createElement('div'),\n ), this.wavesurfer.params.vertical);\n\n this.style(this.displayTime,\n Object.assign(\n {\n display: 'inline',\n pointerEvents: 'none',\n margin: 'auto',\n visibility: 'hidden' // initial value will be hidden just for measuring purpose\n },\n this.params.customShowTimeStyle\n )\n );\n\n // initial value to measure display width\n this.displayTime.innerHTML = this.formatTime(0);\n }\n\n this.wrapper.addEventListener('mousemove', this._onMousemove);\n if (this.params.hideOnBlur) {\n // ensure elements are hidden initially\n this.hideCursor();\n this.wrapper.addEventListener('mouseenter', this._onMouseenter);\n this.wrapper.addEventListener('mouseleave', this._onMouseleave);\n }\n }\n\n /**\n * Initialise the plugin (used by the Plugin API)\n */\n init() {\n if (this.wavesurfer.isReady) {\n this._onReady();\n } else {\n this.wavesurfer.once('ready', () => this._onReady());\n }\n }\n\n /**\n * Destroy the plugin (used by the Plugin API)\n */\n destroy() {\n if (!this.cursorTime || !this.showTime){\n this.isDestroyCalled = true;\n return;\n }\n if (this.params.showTime) {\n this.showTime && this.showTime.remove();\n }\n this.cursor && this.cursor.remove();\n this.wrapper.removeEventListener('mousemove', this._onMousemove);\n if (this.params.hideOnBlur) {\n this.wrapper.removeEventListener('mouseenter', this._onMouseenter);\n this.wrapper.removeEventListener('mouseleave', this._onMouseleave);\n }\n }\n\n /**\n * Update the cursor position\n *\n * @param {number} xpos The x offset of the cursor in pixels\n * @param {number} ypos The y offset of the cursor in pixels\n * @param {boolean} flip Flag to flip duration text from right to left\n */\n updateCursorPosition(xpos, ypos, flip = false) {\n this.style(this.cursor, {\n left: `${xpos}px`\n });\n if (this.params.showTime) {\n const duration = this.wavesurfer.getDuration();\n const elementWidth =\n this.wavesurfer.drawer.width /\n this.wavesurfer.params.pixelRatio;\n const scrollWidth = this.wavesurfer.drawer.getScrollX();\n\n const scrollTime =\n (duration / this.wavesurfer.drawer.width) * scrollWidth;\n\n const timeValue =\n Math.max(0, ((xpos - this.wrapper.scrollLeft) / elementWidth) * duration) + scrollTime;\n const formatValue = this.formatTime(timeValue);\n if (flip) {\n const textOffset = this.displayTime.getBoundingClientRect().width;\n xpos -= textOffset;\n }\n this.style(this.showTime, {\n left: `${xpos}px`,\n top: `${ypos}px`\n });\n this.style(this.displayTime, {\n visibility: 'visible'\n });\n this.displayTime.innerHTML = `${formatValue}`;\n }\n }\n\n /**\n * Show the cursor\n */\n showCursor() {\n this.style(this.cursor, {\n display: 'flex'\n });\n if (this.params.showTime) {\n this.style(this.showTime, {\n display: 'flex'\n });\n }\n }\n\n /**\n * Hide the cursor\n */\n hideCursor() {\n this.style(this.cursor, {\n display: 'none'\n });\n if (this.params.showTime) {\n this.style(this.showTime, {\n display: 'none'\n });\n }\n }\n\n /**\n * Format the timestamp for `cursorTime`.\n *\n * @param {number} cursorTime Time in seconds\n * @returns {string} Formatted timestamp\n */\n formatTime(cursorTime) {\n cursorTime = isNaN(cursorTime) ? 0 : cursorTime;\n if (this.params.formatTimeCallback) {\n return this.params.formatTimeCallback(cursorTime);\n }\n return [cursorTime].map(time =>\n [\n Math.floor((time % 3600) / 60), // minutes\n ('00' + Math.floor(time % 60)).slice(-2), // seconds\n ('000' + Math.floor((time % 1) * 1000)).slice(-3) // milliseconds\n ].join(':')\n );\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__(178);\n"],"names":["root","factory","exports","module","define","amd","self","CursorPlugin","params","ws","_this","_classCallCheck","_defineProperty","hideOnBlur","width","color","opacity","style","zIndex","customStyle","customShowTimeStyle","showTime","followCursorY","formatTimeCallback","e","event","util","withOrientation","wavesurfer","vertical","bbox","wrapper","getBoundingClientRect","y","x","scrollLeft","clientX","left","displayTimeWidth","displayTime","flip","right","clientY","top","height","updateCursorPosition","showCursor","hideCursor","this","cursor","isDestroyCalled","Object","assign","defaultParams","key","value","drawer","appendChild","document","createElement","position","bottom","display","borderRightStyle","borderRightWidth","borderRightColor","pointerEvents","margin","visibility","innerHTML","formatTime","addEventListener","_onMousemove","_onMouseenter","_onMouseleave","_this2","isReady","_onReady","once","cursorTime","remove","removeEventListener","xpos","ypos","arguments","length","undefined","concat","duration","getDuration","elementWidth","pixelRatio","scrollWidth","getScrollX","scrollTime","timeValue","Math","max","formatValue","isNaN","map","time","floor","slice","join","name","deferInit","staticProps","instance","default","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
|