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
|
@@ -1,381 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* wavesurfer.js elan 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"]["elan"] = factory();
|
|
15
|
-
})(self, () => {
|
|
16
|
-
return /******/ (() => { // webpackBootstrap
|
|
17
|
-
/******/ "use strict";
|
|
18
|
-
/******/ var __webpack_modules__ = ({
|
|
19
|
-
|
|
20
|
-
/***/ "./src/plugin/elan/index.js":
|
|
21
|
-
/*!**********************************!*\
|
|
22
|
-
!*** ./src/plugin/elan/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} ElanPluginParams
|
|
41
|
-
* @property {string|HTMLElement} container CSS selector or HTML element where
|
|
42
|
-
* the ELAN information should be rendered.
|
|
43
|
-
* @property {string} url The location of ELAN XML data
|
|
44
|
-
* @property {?boolean} deferInit Set to true to manually call
|
|
45
|
-
* @property {?Object} tiers If set only shows the data tiers with the `TIER_ID`
|
|
46
|
-
* in this map.
|
|
47
|
-
*/
|
|
48
|
-
/**
|
|
49
|
-
* Downloads and renders ELAN audio transcription documents alongside the
|
|
50
|
-
* waveform.
|
|
51
|
-
*
|
|
52
|
-
* @implements {PluginClass}
|
|
53
|
-
* @extends {Observer}
|
|
54
|
-
* @example
|
|
55
|
-
* // es6
|
|
56
|
-
* import ElanPlugin from 'wavesurfer.elan.js';
|
|
57
|
-
*
|
|
58
|
-
* // commonjs
|
|
59
|
-
* var ElanPlugin = require('wavesurfer.elan.js');
|
|
60
|
-
*
|
|
61
|
-
* // if you are using <script> tags
|
|
62
|
-
* var ElanPlugin = window.WaveSurfer.elan;
|
|
63
|
-
*
|
|
64
|
-
* // ... initialising wavesurfer with the plugin
|
|
65
|
-
* var wavesurfer = WaveSurfer.create({
|
|
66
|
-
* // wavesurfer options ...
|
|
67
|
-
* plugins: [
|
|
68
|
-
* ElanPlugin.create({
|
|
69
|
-
* // plugin options ...
|
|
70
|
-
* })
|
|
71
|
-
* ]
|
|
72
|
-
* });
|
|
73
|
-
*/
|
|
74
|
-
var ElanPlugin = /*#__PURE__*/function () {
|
|
75
|
-
function ElanPlugin(params, ws) {
|
|
76
|
-
_classCallCheck(this, ElanPlugin);
|
|
77
|
-
_defineProperty(this, "Types", {
|
|
78
|
-
ALIGNABLE_ANNOTATION: 'ALIGNABLE_ANNOTATION',
|
|
79
|
-
REF_ANNOTATION: 'REF_ANNOTATION'
|
|
80
|
-
});
|
|
81
|
-
this.data = null;
|
|
82
|
-
this.params = params;
|
|
83
|
-
this.container = 'string' == typeof params.container ? document.querySelector(params.container) : params.container;
|
|
84
|
-
if (!this.container) {
|
|
85
|
-
throw Error('No container for ELAN');
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
_createClass(ElanPlugin, [{
|
|
89
|
-
key: "init",
|
|
90
|
-
value: function init() {
|
|
91
|
-
this.bindClick();
|
|
92
|
-
if (this.params.url) {
|
|
93
|
-
this.load(this.params.url);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}, {
|
|
97
|
-
key: "destroy",
|
|
98
|
-
value: function destroy() {
|
|
99
|
-
this.container.removeEventListener('click', this._onClick);
|
|
100
|
-
this.container.removeChild(this.table);
|
|
101
|
-
}
|
|
102
|
-
}, {
|
|
103
|
-
key: "load",
|
|
104
|
-
value: function load(url) {
|
|
105
|
-
var _this = this;
|
|
106
|
-
this.loadXML(url, function (xml) {
|
|
107
|
-
_this.data = _this.parseElan(xml);
|
|
108
|
-
_this.render();
|
|
109
|
-
_this.fireEvent('ready', _this.data);
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
}, {
|
|
113
|
-
key: "loadXML",
|
|
114
|
-
value: function loadXML(url, callback) {
|
|
115
|
-
var xhr = new XMLHttpRequest();
|
|
116
|
-
xhr.open('GET', url, true);
|
|
117
|
-
xhr.responseType = 'document';
|
|
118
|
-
xhr.send();
|
|
119
|
-
xhr.addEventListener('load', function (e) {
|
|
120
|
-
callback && callback(e.target.responseXML);
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}, {
|
|
124
|
-
key: "parseElan",
|
|
125
|
-
value: function parseElan(xml) {
|
|
126
|
-
var _this2 = this;
|
|
127
|
-
var _forEach = Array.prototype.forEach;
|
|
128
|
-
var _map = Array.prototype.map;
|
|
129
|
-
var data = {
|
|
130
|
-
media: {},
|
|
131
|
-
timeOrder: {},
|
|
132
|
-
tiers: [],
|
|
133
|
-
annotations: {},
|
|
134
|
-
alignableAnnotations: []
|
|
135
|
-
};
|
|
136
|
-
var header = xml.querySelector('HEADER');
|
|
137
|
-
var inMilliseconds = header.getAttribute('TIME_UNITS') == 'milliseconds';
|
|
138
|
-
var media = header.querySelector('MEDIA_DESCRIPTOR');
|
|
139
|
-
data.media.url = media.getAttribute('MEDIA_URL');
|
|
140
|
-
data.media.type = media.getAttribute('MIME_TYPE');
|
|
141
|
-
var timeSlots = xml.querySelectorAll('TIME_ORDER TIME_SLOT');
|
|
142
|
-
var timeOrder = {};
|
|
143
|
-
_forEach.call(timeSlots, function (slot) {
|
|
144
|
-
var value = parseFloat(slot.getAttribute('TIME_VALUE'));
|
|
145
|
-
// If in milliseconds, convert to seconds with rounding
|
|
146
|
-
if (inMilliseconds) {
|
|
147
|
-
value = Math.round(value * 1e2) / 1e5;
|
|
148
|
-
}
|
|
149
|
-
timeOrder[slot.getAttribute('TIME_SLOT_ID')] = value;
|
|
150
|
-
});
|
|
151
|
-
data.tiers = _map.call(xml.querySelectorAll('TIER'), function (tier) {
|
|
152
|
-
return {
|
|
153
|
-
id: tier.getAttribute('TIER_ID'),
|
|
154
|
-
linguisticTypeRef: tier.getAttribute('LINGUISTIC_TYPE_REF'),
|
|
155
|
-
defaultLocale: tier.getAttribute('DEFAULT_LOCALE'),
|
|
156
|
-
annotations: _map.call(tier.querySelectorAll('REF_ANNOTATION, ALIGNABLE_ANNOTATION'), function (node) {
|
|
157
|
-
var annot = {
|
|
158
|
-
type: node.nodeName,
|
|
159
|
-
id: node.getAttribute('ANNOTATION_ID'),
|
|
160
|
-
ref: node.getAttribute('ANNOTATION_REF'),
|
|
161
|
-
value: node.querySelector('ANNOTATION_VALUE').textContent.trim()
|
|
162
|
-
};
|
|
163
|
-
if (_this2.Types.ALIGNABLE_ANNOTATION == annot.type) {
|
|
164
|
-
// Add start & end to alignable annotation
|
|
165
|
-
annot.start = timeOrder[node.getAttribute('TIME_SLOT_REF1')];
|
|
166
|
-
annot.end = timeOrder[node.getAttribute('TIME_SLOT_REF2')];
|
|
167
|
-
// Add to the list of alignable annotations
|
|
168
|
-
data.alignableAnnotations.push(annot);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
// Additionally, put into the flat map of all annotations
|
|
172
|
-
data.annotations[annot.id] = annot;
|
|
173
|
-
return annot;
|
|
174
|
-
})
|
|
175
|
-
};
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
// Create JavaScript references between annotations
|
|
179
|
-
data.tiers.forEach(function (tier) {
|
|
180
|
-
tier.annotations.forEach(function (annot) {
|
|
181
|
-
if (null != annot.ref) {
|
|
182
|
-
annot.reference = data.annotations[annot.ref];
|
|
183
|
-
}
|
|
184
|
-
});
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
// Sort alignable annotations by start & end
|
|
188
|
-
data.alignableAnnotations.sort(function (a, b) {
|
|
189
|
-
var d = a.start - b.start;
|
|
190
|
-
if (d == 0) {
|
|
191
|
-
d = b.end - a.end;
|
|
192
|
-
}
|
|
193
|
-
return d;
|
|
194
|
-
});
|
|
195
|
-
data.length = data.alignableAnnotations.length;
|
|
196
|
-
return data;
|
|
197
|
-
}
|
|
198
|
-
}, {
|
|
199
|
-
key: "render",
|
|
200
|
-
value: function render() {
|
|
201
|
-
var _this3 = this;
|
|
202
|
-
// apply tiers filter
|
|
203
|
-
var tiers = this.data.tiers;
|
|
204
|
-
if (this.params.tiers) {
|
|
205
|
-
tiers = tiers.filter(function (tier) {
|
|
206
|
-
return tier.id in _this3.params.tiers;
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
// denormalize references to alignable annotations
|
|
211
|
-
var backRefs = {};
|
|
212
|
-
var indeces = {};
|
|
213
|
-
tiers.forEach(function (tier, index) {
|
|
214
|
-
tier.annotations.forEach(function (annot) {
|
|
215
|
-
if (annot.reference && annot.reference.type == _this3.Types.ALIGNABLE_ANNOTATION) {
|
|
216
|
-
if (!(annot.reference.id in backRefs)) {
|
|
217
|
-
backRefs[annot.ref] = {};
|
|
218
|
-
}
|
|
219
|
-
backRefs[annot.ref][index] = annot;
|
|
220
|
-
indeces[index] = true;
|
|
221
|
-
}
|
|
222
|
-
});
|
|
223
|
-
});
|
|
224
|
-
indeces = Object.keys(indeces).sort();
|
|
225
|
-
this.renderedAlignable = this.data.alignableAnnotations.filter(function (alignable) {
|
|
226
|
-
return backRefs[alignable.id];
|
|
227
|
-
});
|
|
228
|
-
|
|
229
|
-
// table
|
|
230
|
-
var table = this.table = document.createElement('table');
|
|
231
|
-
table.className = 'wavesurfer-annotations';
|
|
232
|
-
|
|
233
|
-
// head
|
|
234
|
-
var thead = document.createElement('thead');
|
|
235
|
-
var headRow = document.createElement('tr');
|
|
236
|
-
thead.appendChild(headRow);
|
|
237
|
-
table.appendChild(thead);
|
|
238
|
-
var th = document.createElement('th');
|
|
239
|
-
th.textContent = 'Time';
|
|
240
|
-
th.className = 'wavesurfer-time';
|
|
241
|
-
headRow.appendChild(th);
|
|
242
|
-
indeces.forEach(function (index) {
|
|
243
|
-
var tier = tiers[index];
|
|
244
|
-
var th = document.createElement('th');
|
|
245
|
-
th.className = 'wavesurfer-tier-' + tier.id;
|
|
246
|
-
th.textContent = tier.id;
|
|
247
|
-
if (_this3.params.tiers) {
|
|
248
|
-
th.style.width = _this3.params.tiers[tier.id];
|
|
249
|
-
}
|
|
250
|
-
headRow.appendChild(th);
|
|
251
|
-
});
|
|
252
|
-
|
|
253
|
-
// body
|
|
254
|
-
var tbody = document.createElement('tbody');
|
|
255
|
-
table.appendChild(tbody);
|
|
256
|
-
this.renderedAlignable.forEach(function (alignable) {
|
|
257
|
-
var row = document.createElement('tr');
|
|
258
|
-
row.id = 'wavesurfer-alignable-' + alignable.id;
|
|
259
|
-
tbody.appendChild(row);
|
|
260
|
-
var td = document.createElement('td');
|
|
261
|
-
td.className = 'wavesurfer-time';
|
|
262
|
-
td.textContent = alignable.start.toFixed(1) + '–' + alignable.end.toFixed(1);
|
|
263
|
-
row.appendChild(td);
|
|
264
|
-
var backRef = backRefs[alignable.id];
|
|
265
|
-
indeces.forEach(function (index) {
|
|
266
|
-
var tier = tiers[index];
|
|
267
|
-
var td = document.createElement('td');
|
|
268
|
-
var annotation = backRef[index];
|
|
269
|
-
if (annotation) {
|
|
270
|
-
td.id = 'wavesurfer-annotation-' + annotation.id;
|
|
271
|
-
td.dataset.ref = alignable.id;
|
|
272
|
-
td.dataset.start = alignable.start;
|
|
273
|
-
td.dataset.end = alignable.end;
|
|
274
|
-
td.textContent = annotation.value;
|
|
275
|
-
}
|
|
276
|
-
td.className = 'wavesurfer-tier-' + tier.id;
|
|
277
|
-
row.appendChild(td);
|
|
278
|
-
});
|
|
279
|
-
});
|
|
280
|
-
this.container.innerHTML = '';
|
|
281
|
-
this.container.appendChild(table);
|
|
282
|
-
}
|
|
283
|
-
}, {
|
|
284
|
-
key: "bindClick",
|
|
285
|
-
value: function bindClick() {
|
|
286
|
-
var _this4 = this;
|
|
287
|
-
this._onClick = function (e) {
|
|
288
|
-
var ref = e.target.dataset.ref;
|
|
289
|
-
if (null != ref) {
|
|
290
|
-
var annot = _this4.data.annotations[ref];
|
|
291
|
-
if (annot) {
|
|
292
|
-
_this4.fireEvent('select', annot.start, annot.end);
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
};
|
|
296
|
-
this.container.addEventListener('click', this._onClick);
|
|
297
|
-
}
|
|
298
|
-
}, {
|
|
299
|
-
key: "getRenderedAnnotation",
|
|
300
|
-
value: function getRenderedAnnotation(time) {
|
|
301
|
-
var result;
|
|
302
|
-
this.renderedAlignable.some(function (annotation) {
|
|
303
|
-
if (annotation.start <= time && annotation.end >= time) {
|
|
304
|
-
result = annotation;
|
|
305
|
-
return true;
|
|
306
|
-
}
|
|
307
|
-
return false;
|
|
308
|
-
});
|
|
309
|
-
return result;
|
|
310
|
-
}
|
|
311
|
-
}, {
|
|
312
|
-
key: "getAnnotationNode",
|
|
313
|
-
value: function getAnnotationNode(annotation) {
|
|
314
|
-
return document.getElementById('wavesurfer-alignable-' + annotation.id);
|
|
315
|
-
}
|
|
316
|
-
}], [{
|
|
317
|
-
key: "create",
|
|
318
|
-
value:
|
|
319
|
-
/**
|
|
320
|
-
* Elan plugin definition factory
|
|
321
|
-
*
|
|
322
|
-
* This function must be used to create a plugin definition which can be
|
|
323
|
-
* used by wavesurfer to correctly instantiate the plugin.
|
|
324
|
-
*
|
|
325
|
-
* @param {ElanPluginParams} params parameters use to initialise the plugin
|
|
326
|
-
* @return {PluginDefinition} an object representing the plugin
|
|
327
|
-
*/
|
|
328
|
-
function create(params) {
|
|
329
|
-
return {
|
|
330
|
-
name: 'elan',
|
|
331
|
-
deferInit: params && params.deferInit ? params.deferInit : false,
|
|
332
|
-
params: params,
|
|
333
|
-
instance: ElanPlugin
|
|
334
|
-
};
|
|
335
|
-
}
|
|
336
|
-
}]);
|
|
337
|
-
return ElanPlugin;
|
|
338
|
-
}();
|
|
339
|
-
exports["default"] = ElanPlugin;
|
|
340
|
-
module.exports = exports.default;
|
|
341
|
-
|
|
342
|
-
/***/ })
|
|
343
|
-
|
|
344
|
-
/******/ });
|
|
345
|
-
/************************************************************************/
|
|
346
|
-
/******/ // The module cache
|
|
347
|
-
/******/ var __webpack_module_cache__ = {};
|
|
348
|
-
/******/
|
|
349
|
-
/******/ // The require function
|
|
350
|
-
/******/ function __webpack_require__(moduleId) {
|
|
351
|
-
/******/ // Check if module is in cache
|
|
352
|
-
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
353
|
-
/******/ if (cachedModule !== undefined) {
|
|
354
|
-
/******/ return cachedModule.exports;
|
|
355
|
-
/******/ }
|
|
356
|
-
/******/ // Create a new module (and put it into the cache)
|
|
357
|
-
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
358
|
-
/******/ // no module.id needed
|
|
359
|
-
/******/ // no module.loaded needed
|
|
360
|
-
/******/ exports: {}
|
|
361
|
-
/******/ };
|
|
362
|
-
/******/
|
|
363
|
-
/******/ // Execute the module function
|
|
364
|
-
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
365
|
-
/******/
|
|
366
|
-
/******/ // Return the exports of the module
|
|
367
|
-
/******/ return module.exports;
|
|
368
|
-
/******/ }
|
|
369
|
-
/******/
|
|
370
|
-
/************************************************************************/
|
|
371
|
-
/******/
|
|
372
|
-
/******/ // startup
|
|
373
|
-
/******/ // Load entry module and return exports
|
|
374
|
-
/******/ // This entry module is referenced by other modules so it can't be inlined
|
|
375
|
-
/******/ var __webpack_exports__ = __webpack_require__("./src/plugin/elan/index.js");
|
|
376
|
-
/******/
|
|
377
|
-
/******/ return __webpack_exports__;
|
|
378
|
-
/******/ })()
|
|
379
|
-
;
|
|
380
|
-
});
|
|
381
|
-
//# sourceMappingURL=wavesurfer.elan.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wavesurfer.elan.js","mappings":"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","sources":["webpack://WaveSurfer/webpack/universalModuleDefinition","webpack://WaveSurfer/./src/plugin/elan/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\"][\"elan\"] = factory();\n})(self, () => {\nreturn ","/**\n * @typedef {Object} ElanPluginParams\n * @property {string|HTMLElement} container CSS selector or HTML element where\n * the ELAN information should be rendered.\n * @property {string} url The location of ELAN XML data\n * @property {?boolean} deferInit Set to true to manually call\n * @property {?Object} tiers If set only shows the data tiers with the `TIER_ID`\n * in this map.\n */\n\n/**\n * Downloads and renders ELAN audio transcription documents alongside the\n * waveform.\n *\n * @implements {PluginClass}\n * @extends {Observer}\n * @example\n * // es6\n * import ElanPlugin from 'wavesurfer.elan.js';\n *\n * // commonjs\n * var ElanPlugin = require('wavesurfer.elan.js');\n *\n * // if you are using <script> tags\n * var ElanPlugin = window.WaveSurfer.elan;\n *\n * // ... initialising wavesurfer with the plugin\n * var wavesurfer = WaveSurfer.create({\n * // wavesurfer options ...\n * plugins: [\n * ElanPlugin.create({\n * // plugin options ...\n * })\n * ]\n * });\n */\nexport default class ElanPlugin {\n /**\n * Elan 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 {ElanPluginParams} params parameters use to initialise the plugin\n * @return {PluginDefinition} an object representing the plugin\n */\n static create(params) {\n return {\n name: 'elan',\n deferInit: params && params.deferInit ? params.deferInit : false,\n params: params,\n instance: ElanPlugin\n };\n }\n\n Types = {\n ALIGNABLE_ANNOTATION: 'ALIGNABLE_ANNOTATION',\n REF_ANNOTATION: 'REF_ANNOTATION'\n };\n\n constructor(params, ws) {\n this.data = null;\n this.params = params;\n this.container =\n 'string' == typeof params.container\n ? document.querySelector(params.container)\n : params.container;\n\n if (!this.container) {\n throw Error('No container for ELAN');\n }\n }\n\n init() {\n this.bindClick();\n\n if (this.params.url) {\n this.load(this.params.url);\n }\n }\n\n destroy() {\n this.container.removeEventListener('click', this._onClick);\n this.container.removeChild(this.table);\n }\n\n load(url) {\n this.loadXML(url, xml => {\n this.data = this.parseElan(xml);\n this.render();\n this.fireEvent('ready', this.data);\n });\n }\n\n loadXML(url, callback) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'document';\n xhr.send();\n xhr.addEventListener('load', e => {\n callback && callback(e.target.responseXML);\n });\n }\n\n parseElan(xml) {\n const _forEach = Array.prototype.forEach;\n const _map = Array.prototype.map;\n\n const data = {\n media: {},\n timeOrder: {},\n tiers: [],\n annotations: {},\n alignableAnnotations: []\n };\n\n const header = xml.querySelector('HEADER');\n const inMilliseconds =\n header.getAttribute('TIME_UNITS') == 'milliseconds';\n const media = header.querySelector('MEDIA_DESCRIPTOR');\n data.media.url = media.getAttribute('MEDIA_URL');\n data.media.type = media.getAttribute('MIME_TYPE');\n\n const timeSlots = xml.querySelectorAll('TIME_ORDER TIME_SLOT');\n const timeOrder = {};\n _forEach.call(timeSlots, slot => {\n let value = parseFloat(slot.getAttribute('TIME_VALUE'));\n // If in milliseconds, convert to seconds with rounding\n if (inMilliseconds) {\n value = Math.round(value * 1e2) / 1e5;\n }\n timeOrder[slot.getAttribute('TIME_SLOT_ID')] = value;\n });\n\n data.tiers = _map.call(xml.querySelectorAll('TIER'), tier => ({\n id: tier.getAttribute('TIER_ID'),\n linguisticTypeRef: tier.getAttribute('LINGUISTIC_TYPE_REF'),\n defaultLocale: tier.getAttribute('DEFAULT_LOCALE'),\n annotations: _map.call(\n tier.querySelectorAll('REF_ANNOTATION, ALIGNABLE_ANNOTATION'),\n node => {\n const annot = {\n type: node.nodeName,\n id: node.getAttribute('ANNOTATION_ID'),\n ref: node.getAttribute('ANNOTATION_REF'),\n value: node\n .querySelector('ANNOTATION_VALUE')\n .textContent.trim()\n };\n\n if (this.Types.ALIGNABLE_ANNOTATION == annot.type) {\n // Add start & end to alignable annotation\n annot.start =\n timeOrder[node.getAttribute('TIME_SLOT_REF1')];\n annot.end =\n timeOrder[node.getAttribute('TIME_SLOT_REF2')];\n // Add to the list of alignable annotations\n data.alignableAnnotations.push(annot);\n }\n\n // Additionally, put into the flat map of all annotations\n data.annotations[annot.id] = annot;\n\n return annot;\n }\n )\n }));\n\n // Create JavaScript references between annotations\n data.tiers.forEach(tier => {\n tier.annotations.forEach(annot => {\n if (null != annot.ref) {\n annot.reference = data.annotations[annot.ref];\n }\n });\n });\n\n // Sort alignable annotations by start & end\n data.alignableAnnotations.sort((a, b) => {\n let d = a.start - b.start;\n if (d == 0) {\n d = b.end - a.end;\n }\n return d;\n });\n\n data.length = data.alignableAnnotations.length;\n\n return data;\n }\n\n render() {\n // apply tiers filter\n let tiers = this.data.tiers;\n if (this.params.tiers) {\n tiers = tiers.filter(tier => tier.id in this.params.tiers);\n }\n\n // denormalize references to alignable annotations\n const backRefs = {};\n let indeces = {};\n tiers.forEach((tier, index) => {\n tier.annotations.forEach(annot => {\n if (\n annot.reference &&\n annot.reference.type == this.Types.ALIGNABLE_ANNOTATION\n ) {\n if (!(annot.reference.id in backRefs)) {\n backRefs[annot.ref] = {};\n }\n backRefs[annot.ref][index] = annot;\n indeces[index] = true;\n }\n });\n });\n indeces = Object.keys(indeces).sort();\n\n this.renderedAlignable = this.data.alignableAnnotations.filter(\n alignable => backRefs[alignable.id]\n );\n\n // table\n const table = (this.table = document.createElement('table'));\n table.className = 'wavesurfer-annotations';\n\n // head\n const thead = document.createElement('thead');\n const headRow = document.createElement('tr');\n thead.appendChild(headRow);\n table.appendChild(thead);\n const th = document.createElement('th');\n th.textContent = 'Time';\n th.className = 'wavesurfer-time';\n headRow.appendChild(th);\n indeces.forEach(index => {\n const tier = tiers[index];\n const th = document.createElement('th');\n th.className = 'wavesurfer-tier-' + tier.id;\n th.textContent = tier.id;\n if (this.params.tiers) { th.style.width = this.params.tiers[tier.id]; }\n headRow.appendChild(th);\n });\n\n // body\n const tbody = document.createElement('tbody');\n table.appendChild(tbody);\n this.renderedAlignable.forEach(alignable => {\n const row = document.createElement('tr');\n row.id = 'wavesurfer-alignable-' + alignable.id;\n tbody.appendChild(row);\n\n const td = document.createElement('td');\n td.className = 'wavesurfer-time';\n td.textContent =\n alignable.start.toFixed(1) + '–' + alignable.end.toFixed(1);\n row.appendChild(td);\n\n const backRef = backRefs[alignable.id];\n indeces.forEach(index => {\n const tier = tiers[index];\n const td = document.createElement('td');\n const annotation = backRef[index];\n if (annotation) {\n td.id = 'wavesurfer-annotation-' + annotation.id;\n td.dataset.ref = alignable.id;\n td.dataset.start = alignable.start;\n td.dataset.end = alignable.end;\n td.textContent = annotation.value;\n }\n td.className = 'wavesurfer-tier-' + tier.id;\n row.appendChild(td);\n });\n });\n\n this.container.innerHTML = '';\n this.container.appendChild(table);\n }\n\n bindClick() {\n this._onClick = e => {\n const ref = e.target.dataset.ref;\n if (null != ref) {\n const annot = this.data.annotations[ref];\n if (annot) {\n this.fireEvent('select', annot.start, annot.end);\n }\n }\n };\n this.container.addEventListener('click', this._onClick);\n }\n\n getRenderedAnnotation(time) {\n let result;\n this.renderedAlignable.some(annotation => {\n if (annotation.start <= time && annotation.end >= time) {\n result = annotation;\n return true;\n }\n return false;\n });\n return result;\n }\n\n getAnnotationNode(annotation) {\n return document.getElementById('wavesurfer-alignable-' + annotation.id);\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/elan/index.js\");\n",""],"names":["ElanPlugin","params","ws","_classCallCheck","_defineProperty","ALIGNABLE_ANNOTATION","REF_ANNOTATION","data","container","document","querySelector","Error","_createClass","key","value","init","bindClick","url","load","destroy","removeEventListener","_onClick","removeChild","table","_this","loadXML","xml","parseElan","render","fireEvent","callback","xhr","XMLHttpRequest","open","responseType","send","addEventListener","e","target","responseXML","_this2","_forEach","Array","prototype","forEach","_map","map","media","timeOrder","tiers","annotations","alignableAnnotations","header","inMilliseconds","getAttribute","type","timeSlots","querySelectorAll","call","slot","parseFloat","Math","round","tier","id","linguisticTypeRef","defaultLocale","node","annot","nodeName","ref","textContent","trim","Types","start","end","push","reference","sort","a","b","d","length","_this3","filter","backRefs","indeces","index","Object","keys","renderedAlignable","alignable","createElement","className","thead","headRow","appendChild","th","style","width","tbody","row","td","toFixed","backRef","annotation","dataset","innerHTML","_this4","getRenderedAnnotation","time","result","some","getAnnotationNode","getElementById","create","name","deferInit","instance","exports","default","module"],"sourceRoot":""}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* wavesurfer.js elan 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.elan=t())}(self,(()=>(()=>{"use strict";var e={375:(e,t)=>{function n(e){return n="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},n(e)}function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,a(r.key),r)}}function a(e){var t=function(e,t){if("object"!==n(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var a=r.call(e,t||"default");if("object"!==n(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===n(t)?t:String(t)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=function(){function e(t,n){var r,i,o;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r=this,o={ALIGNABLE_ANNOTATION:"ALIGNABLE_ANNOTATION",REF_ANNOTATION:"REF_ANNOTATION"},(i=a(i="Types"))in r?Object.defineProperty(r,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[i]=o,this.data=null,this.params=t,this.container="string"==typeof t.container?document.querySelector(t.container):t.container,!this.container)throw Error("No container for ELAN")}var t,n,i;return t=e,i=[{key:"create",value:function(t){return{name:"elan",deferInit:!(!t||!t.deferInit)&&t.deferInit,params:t,instance:e}}}],(n=[{key:"init",value:function(){this.bindClick(),this.params.url&&this.load(this.params.url)}},{key:"destroy",value:function(){this.container.removeEventListener("click",this._onClick),this.container.removeChild(this.table)}},{key:"load",value:function(e){var t=this;this.loadXML(e,(function(e){t.data=t.parseElan(e),t.render(),t.fireEvent("ready",t.data)}))}},{key:"loadXML",value:function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="document",n.send(),n.addEventListener("load",(function(e){t&&t(e.target.responseXML)}))}},{key:"parseElan",value:function(e){var t=this,n=Array.prototype.forEach,r=Array.prototype.map,a={media:{},timeOrder:{},tiers:[],annotations:{},alignableAnnotations:[]},i=e.querySelector("HEADER"),o="milliseconds"==i.getAttribute("TIME_UNITS"),l=i.querySelector("MEDIA_DESCRIPTOR");a.media.url=l.getAttribute("MEDIA_URL"),a.media.type=l.getAttribute("MIME_TYPE");var u=e.querySelectorAll("TIME_ORDER TIME_SLOT"),s={};return n.call(u,(function(e){var t=parseFloat(e.getAttribute("TIME_VALUE"));o&&(t=Math.round(100*t)/1e5),s[e.getAttribute("TIME_SLOT_ID")]=t})),a.tiers=r.call(e.querySelectorAll("TIER"),(function(e){return{id:e.getAttribute("TIER_ID"),linguisticTypeRef:e.getAttribute("LINGUISTIC_TYPE_REF"),defaultLocale:e.getAttribute("DEFAULT_LOCALE"),annotations:r.call(e.querySelectorAll("REF_ANNOTATION, ALIGNABLE_ANNOTATION"),(function(e){var n={type:e.nodeName,id:e.getAttribute("ANNOTATION_ID"),ref:e.getAttribute("ANNOTATION_REF"),value:e.querySelector("ANNOTATION_VALUE").textContent.trim()};return t.Types.ALIGNABLE_ANNOTATION==n.type&&(n.start=s[e.getAttribute("TIME_SLOT_REF1")],n.end=s[e.getAttribute("TIME_SLOT_REF2")],a.alignableAnnotations.push(n)),a.annotations[n.id]=n,n}))}})),a.tiers.forEach((function(e){e.annotations.forEach((function(e){null!=e.ref&&(e.reference=a.annotations[e.ref])}))})),a.alignableAnnotations.sort((function(e,t){var n=e.start-t.start;return 0==n&&(n=t.end-e.end),n})),a.length=a.alignableAnnotations.length,a}},{key:"render",value:function(){var e=this,t=this.data.tiers;this.params.tiers&&(t=t.filter((function(t){return t.id in e.params.tiers})));var n={},r={};t.forEach((function(t,a){t.annotations.forEach((function(t){t.reference&&t.reference.type==e.Types.ALIGNABLE_ANNOTATION&&(t.reference.id in n||(n[t.ref]={}),n[t.ref][a]=t,r[a]=!0)}))})),r=Object.keys(r).sort(),this.renderedAlignable=this.data.alignableAnnotations.filter((function(e){return n[e.id]}));var a=this.table=document.createElement("table");a.className="wavesurfer-annotations";var i=document.createElement("thead"),o=document.createElement("tr");i.appendChild(o),a.appendChild(i);var l=document.createElement("th");l.textContent="Time",l.className="wavesurfer-time",o.appendChild(l),r.forEach((function(n){var r=t[n],a=document.createElement("th");a.className="wavesurfer-tier-"+r.id,a.textContent=r.id,e.params.tiers&&(a.style.width=e.params.tiers[r.id]),o.appendChild(a)}));var u=document.createElement("tbody");a.appendChild(u),this.renderedAlignable.forEach((function(e){var a=document.createElement("tr");a.id="wavesurfer-alignable-"+e.id,u.appendChild(a);var i=document.createElement("td");i.className="wavesurfer-time",i.textContent=e.start.toFixed(1)+"–"+e.end.toFixed(1),a.appendChild(i);var o=n[e.id];r.forEach((function(n){var r=t[n],i=document.createElement("td"),l=o[n];l&&(i.id="wavesurfer-annotation-"+l.id,i.dataset.ref=e.id,i.dataset.start=e.start,i.dataset.end=e.end,i.textContent=l.value),i.className="wavesurfer-tier-"+r.id,a.appendChild(i)}))})),this.container.innerHTML="",this.container.appendChild(a)}},{key:"bindClick",value:function(){var e=this;this._onClick=function(t){var n=t.target.dataset.ref;if(null!=n){var r=e.data.annotations[n];r&&e.fireEvent("select",r.start,r.end)}},this.container.addEventListener("click",this._onClick)}},{key:"getRenderedAnnotation",value:function(e){var t;return this.renderedAlignable.some((function(n){return n.start<=e&&n.end>=e&&(t=n,!0)})),t}},{key:"getAnnotationNode",value:function(e){return document.getElementById("wavesurfer-alignable-"+e.id)}}])&&r(t.prototype,n),i&&r(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.default=i,e.exports=t.default}},t={};var n=function n(r){var a=t[r];if(void 0!==a)return a.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}(375);return n})()));
|
|
7
|
-
//# sourceMappingURL=wavesurfer.elan.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wavesurfer.elan.min.js","mappings":"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","sources":["webpack://WaveSurfer/webpack/universalModuleDefinition","webpack://WaveSurfer/./src/plugin/elan/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\"][\"elan\"] = factory();\n})(self, () => {\nreturn ","/**\n * @typedef {Object} ElanPluginParams\n * @property {string|HTMLElement} container CSS selector or HTML element where\n * the ELAN information should be rendered.\n * @property {string} url The location of ELAN XML data\n * @property {?boolean} deferInit Set to true to manually call\n * @property {?Object} tiers If set only shows the data tiers with the `TIER_ID`\n * in this map.\n */\n\n/**\n * Downloads and renders ELAN audio transcription documents alongside the\n * waveform.\n *\n * @implements {PluginClass}\n * @extends {Observer}\n * @example\n * // es6\n * import ElanPlugin from 'wavesurfer.elan.js';\n *\n * // commonjs\n * var ElanPlugin = require('wavesurfer.elan.js');\n *\n * // if you are using <script> tags\n * var ElanPlugin = window.WaveSurfer.elan;\n *\n * // ... initialising wavesurfer with the plugin\n * var wavesurfer = WaveSurfer.create({\n * // wavesurfer options ...\n * plugins: [\n * ElanPlugin.create({\n * // plugin options ...\n * })\n * ]\n * });\n */\nexport default class ElanPlugin {\n /**\n * Elan 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 {ElanPluginParams} params parameters use to initialise the plugin\n * @return {PluginDefinition} an object representing the plugin\n */\n static create(params) {\n return {\n name: 'elan',\n deferInit: params && params.deferInit ? params.deferInit : false,\n params: params,\n instance: ElanPlugin\n };\n }\n\n Types = {\n ALIGNABLE_ANNOTATION: 'ALIGNABLE_ANNOTATION',\n REF_ANNOTATION: 'REF_ANNOTATION'\n };\n\n constructor(params, ws) {\n this.data = null;\n this.params = params;\n this.container =\n 'string' == typeof params.container\n ? document.querySelector(params.container)\n : params.container;\n\n if (!this.container) {\n throw Error('No container for ELAN');\n }\n }\n\n init() {\n this.bindClick();\n\n if (this.params.url) {\n this.load(this.params.url);\n }\n }\n\n destroy() {\n this.container.removeEventListener('click', this._onClick);\n this.container.removeChild(this.table);\n }\n\n load(url) {\n this.loadXML(url, xml => {\n this.data = this.parseElan(xml);\n this.render();\n this.fireEvent('ready', this.data);\n });\n }\n\n loadXML(url, callback) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'document';\n xhr.send();\n xhr.addEventListener('load', e => {\n callback && callback(e.target.responseXML);\n });\n }\n\n parseElan(xml) {\n const _forEach = Array.prototype.forEach;\n const _map = Array.prototype.map;\n\n const data = {\n media: {},\n timeOrder: {},\n tiers: [],\n annotations: {},\n alignableAnnotations: []\n };\n\n const header = xml.querySelector('HEADER');\n const inMilliseconds =\n header.getAttribute('TIME_UNITS') == 'milliseconds';\n const media = header.querySelector('MEDIA_DESCRIPTOR');\n data.media.url = media.getAttribute('MEDIA_URL');\n data.media.type = media.getAttribute('MIME_TYPE');\n\n const timeSlots = xml.querySelectorAll('TIME_ORDER TIME_SLOT');\n const timeOrder = {};\n _forEach.call(timeSlots, slot => {\n let value = parseFloat(slot.getAttribute('TIME_VALUE'));\n // If in milliseconds, convert to seconds with rounding\n if (inMilliseconds) {\n value = Math.round(value * 1e2) / 1e5;\n }\n timeOrder[slot.getAttribute('TIME_SLOT_ID')] = value;\n });\n\n data.tiers = _map.call(xml.querySelectorAll('TIER'), tier => ({\n id: tier.getAttribute('TIER_ID'),\n linguisticTypeRef: tier.getAttribute('LINGUISTIC_TYPE_REF'),\n defaultLocale: tier.getAttribute('DEFAULT_LOCALE'),\n annotations: _map.call(\n tier.querySelectorAll('REF_ANNOTATION, ALIGNABLE_ANNOTATION'),\n node => {\n const annot = {\n type: node.nodeName,\n id: node.getAttribute('ANNOTATION_ID'),\n ref: node.getAttribute('ANNOTATION_REF'),\n value: node\n .querySelector('ANNOTATION_VALUE')\n .textContent.trim()\n };\n\n if (this.Types.ALIGNABLE_ANNOTATION == annot.type) {\n // Add start & end to alignable annotation\n annot.start =\n timeOrder[node.getAttribute('TIME_SLOT_REF1')];\n annot.end =\n timeOrder[node.getAttribute('TIME_SLOT_REF2')];\n // Add to the list of alignable annotations\n data.alignableAnnotations.push(annot);\n }\n\n // Additionally, put into the flat map of all annotations\n data.annotations[annot.id] = annot;\n\n return annot;\n }\n )\n }));\n\n // Create JavaScript references between annotations\n data.tiers.forEach(tier => {\n tier.annotations.forEach(annot => {\n if (null != annot.ref) {\n annot.reference = data.annotations[annot.ref];\n }\n });\n });\n\n // Sort alignable annotations by start & end\n data.alignableAnnotations.sort((a, b) => {\n let d = a.start - b.start;\n if (d == 0) {\n d = b.end - a.end;\n }\n return d;\n });\n\n data.length = data.alignableAnnotations.length;\n\n return data;\n }\n\n render() {\n // apply tiers filter\n let tiers = this.data.tiers;\n if (this.params.tiers) {\n tiers = tiers.filter(tier => tier.id in this.params.tiers);\n }\n\n // denormalize references to alignable annotations\n const backRefs = {};\n let indeces = {};\n tiers.forEach((tier, index) => {\n tier.annotations.forEach(annot => {\n if (\n annot.reference &&\n annot.reference.type == this.Types.ALIGNABLE_ANNOTATION\n ) {\n if (!(annot.reference.id in backRefs)) {\n backRefs[annot.ref] = {};\n }\n backRefs[annot.ref][index] = annot;\n indeces[index] = true;\n }\n });\n });\n indeces = Object.keys(indeces).sort();\n\n this.renderedAlignable = this.data.alignableAnnotations.filter(\n alignable => backRefs[alignable.id]\n );\n\n // table\n const table = (this.table = document.createElement('table'));\n table.className = 'wavesurfer-annotations';\n\n // head\n const thead = document.createElement('thead');\n const headRow = document.createElement('tr');\n thead.appendChild(headRow);\n table.appendChild(thead);\n const th = document.createElement('th');\n th.textContent = 'Time';\n th.className = 'wavesurfer-time';\n headRow.appendChild(th);\n indeces.forEach(index => {\n const tier = tiers[index];\n const th = document.createElement('th');\n th.className = 'wavesurfer-tier-' + tier.id;\n th.textContent = tier.id;\n if (this.params.tiers) { th.style.width = this.params.tiers[tier.id]; }\n headRow.appendChild(th);\n });\n\n // body\n const tbody = document.createElement('tbody');\n table.appendChild(tbody);\n this.renderedAlignable.forEach(alignable => {\n const row = document.createElement('tr');\n row.id = 'wavesurfer-alignable-' + alignable.id;\n tbody.appendChild(row);\n\n const td = document.createElement('td');\n td.className = 'wavesurfer-time';\n td.textContent =\n alignable.start.toFixed(1) + '–' + alignable.end.toFixed(1);\n row.appendChild(td);\n\n const backRef = backRefs[alignable.id];\n indeces.forEach(index => {\n const tier = tiers[index];\n const td = document.createElement('td');\n const annotation = backRef[index];\n if (annotation) {\n td.id = 'wavesurfer-annotation-' + annotation.id;\n td.dataset.ref = alignable.id;\n td.dataset.start = alignable.start;\n td.dataset.end = alignable.end;\n td.textContent = annotation.value;\n }\n td.className = 'wavesurfer-tier-' + tier.id;\n row.appendChild(td);\n });\n });\n\n this.container.innerHTML = '';\n this.container.appendChild(table);\n }\n\n bindClick() {\n this._onClick = e => {\n const ref = e.target.dataset.ref;\n if (null != ref) {\n const annot = this.data.annotations[ref];\n if (annot) {\n this.fireEvent('select', annot.start, annot.end);\n }\n }\n };\n this.container.addEventListener('click', this._onClick);\n }\n\n getRenderedAnnotation(time) {\n let result;\n this.renderedAlignable.some(annotation => {\n if (annotation.start <= time && annotation.end >= time) {\n result = annotation;\n return true;\n }\n return false;\n });\n return result;\n }\n\n getAnnotationNode(annotation) {\n return document.getElementById('wavesurfer-alignable-' + annotation.id);\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__(375);\n"],"names":["root","factory","exports","module","define","amd","self","ElanPlugin","params","ws","_classCallCheck","ALIGNABLE_ANNOTATION","REF_ANNOTATION","this","data","container","document","querySelector","Error","key","value","name","deferInit","instance","bindClick","url","load","removeEventListener","_onClick","removeChild","table","_this","loadXML","xml","parseElan","render","fireEvent","callback","xhr","XMLHttpRequest","open","responseType","send","addEventListener","e","target","responseXML","_this2","_forEach","Array","prototype","forEach","_map","map","media","timeOrder","tiers","annotations","alignableAnnotations","header","inMilliseconds","getAttribute","type","timeSlots","querySelectorAll","call","slot","parseFloat","Math","round","tier","id","linguisticTypeRef","defaultLocale","node","annot","nodeName","ref","textContent","trim","Types","start","end","push","reference","sort","a","b","d","length","_this3","filter","backRefs","indeces","index","Object","keys","renderedAlignable","alignable","createElement","className","thead","headRow","appendChild","th","style","width","tbody","row","td","toFixed","backRef","annotation","dataset","innerHTML","_this4","time","result","some","getElementById","default","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__"],"sourceRoot":""}
|