vue-audio-ui 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,1189 +0,0 @@
1
- import { defineComponent as w, resolveComponent as G, createElementBlock as p, openBlock as c, createVNode as k, ref as y, watch as W, computed as H, onMounted as I, onUnmounted as R, createStaticVNode as V, createElementVNode as n, Fragment as O, normalizeStyle as S, toDisplayString as m, renderSlot as U, reactive as F, normalizeClass as L } from "vue";
2
- const N = w({
3
- name: "VAAnalogMeterStereo",
4
- props: {
5
- leftInput: {
6
- required: !1,
7
- type: AudioNode
8
- },
9
- rightInput: {
10
- required: !1,
11
- type: AudioNode
12
- },
13
- type: {
14
- required: !1,
15
- type: String,
16
- default: "peak"
17
- },
18
- fftSize: {
19
- required: !1,
20
- type: Number,
21
- default: 2048
22
- },
23
- width: {
24
- required: !1,
25
- type: Number,
26
- default: 300
27
- }
28
- }
29
- }), u = (t, e) => {
30
- const a = t.__vccOpts || t;
31
- for (const [r, i] of e)
32
- a[r] = i;
33
- return a;
34
- }, E = { class: "stereo-meter-container" };
35
- function B(t, e, a, r, i, s) {
36
- const o = G("v-a-analog-meter");
37
- return c(), p("div", E, [
38
- k(o, {
39
- class: "meter-channel",
40
- input: t.leftInput,
41
- fftSize: t.fftSize,
42
- type: t.type,
43
- width: t.width
44
- }, null, 8, ["input", "fftSize", "type", "width"]),
45
- k(o, {
46
- class: "meter-channel",
47
- input: t.rightInput,
48
- fftSize: t.fftSize,
49
- type: t.type,
50
- width: t.width
51
- }, null, 8, ["input", "fftSize", "type", "width"])
52
- ]);
53
- }
54
- const _ = /* @__PURE__ */ u(N, [["render", B], ["__scopeId", "data-v-b2b883c7"]]);
55
- function T(t, e) {
56
- let a, r;
57
- e && i(e);
58
- function i(l) {
59
- a = l.context.createAnalyser(), a.fftSize = t, r = new Float32Array(a.frequencyBinCount), l.connect(a);
60
- }
61
- function s(l, d) {
62
- l && i(l);
63
- }
64
- function o() {
65
- return a?.getFloatTimeDomainData(r), r;
66
- }
67
- function h() {
68
- return a?.getFloatFrequencyData(r), r;
69
- }
70
- function g(l) {
71
- let d = 0, f;
72
- for (let x = 0; x < l.length; x++)
73
- f = Math.abs(l[x]), f > d && (d = f);
74
- return 20 * Math.log10(d);
75
- }
76
- function D(l) {
77
- let d = 0, f;
78
- for (let x = 0; x < l.length; x++)
79
- f = Math.abs(l[x]), d += f * f;
80
- return 20 * Math.log10(Math.sqrt(d / l.length));
81
- }
82
- return {
83
- getPeakDb: g,
84
- getRmsDb: D,
85
- getFloatTimeDomainData: o,
86
- getFloatFrequencyData: h,
87
- onInputChanged: s
88
- };
89
- }
90
- function P() {
91
- const t = y(!1);
92
- function e(i) {
93
- try {
94
- i();
95
- } catch (s) {
96
- t.value = !1, console.log(`error in render callback - ${s}`);
97
- }
98
- t.value && window.requestAnimationFrame(() => e(i));
99
- }
100
- function a(i) {
101
- t.value = !0, e(i);
102
- }
103
- function r() {
104
- t.value = !1;
105
- }
106
- return { startRendering: a, stopRendering: r };
107
- }
108
- const Y = w({
109
- name: "VAAnalogMeter",
110
- props: {
111
- input: {
112
- required: !1,
113
- type: AudioNode,
114
- default: void 0
115
- },
116
- type: {
117
- required: !1,
118
- type: String,
119
- default: "peak"
120
- },
121
- fftSize: {
122
- required: !1,
123
- type: Number,
124
- default: 2048
125
- },
126
- width: {
127
- required: !1,
128
- type: Number,
129
- default: 300
130
- }
131
- },
132
- setup(t) {
133
- const { getPeakDb: e, getRmsDb: a, getFloatTimeDomainData: r, onInputChanged: i } = T(t.fftSize, t.input);
134
- W(() => t.input, i);
135
- const { startRendering: s, stopRendering: o } = P(), h = y(-1), g = y("black"), D = H(() => isNaN(h.value) ? "rotate(0 160 150)" : `rotate(${50 * h.value} 160 150)`);
136
- return I(() => {
137
- s(() => {
138
- const l = r();
139
- let d = 0;
140
- t.type === "peak" && l ? d = e(l) : t.type === "rms" && l && (d = a(l));
141
- const f = 80;
142
- d = d < -f ? -f : d;
143
- const x = (f + d) / f;
144
- h.value = x * 2 - 1;
145
- });
146
- }), R(() => {
147
- o();
148
- }), {
149
- color: g,
150
- rotation: D,
151
- value: h
152
- };
153
- }
154
- }), K = { class: "meter-container" }, X = ["width"], Z = ["transform"];
155
- function j(t, e, a, r, i, s) {
156
- return c(), p("div", K, [
157
- (c(), p("svg", {
158
- width: `${t.width}px`,
159
- viewBox: "0 0 320 220",
160
- xmlns: "http://www.w3.org/2000/svg"
161
- }, [
162
- e[1] || (e[1] = V('<defs data-v-a00b48f0><linearGradient id="frameGrad" x1="0" y1="0" x2="0" y2="1" data-v-a00b48f0><stop offset="0%" stop-color="#f0f0f0" data-v-a00b48f0></stop><stop offset="50%" stop-color="#b5b5b5" data-v-a00b48f0></stop><stop offset="100%" stop-color="#8a8a8a" data-v-a00b48f0></stop></linearGradient><linearGradient id="faceGrad" x1="0" y1="0" x2="0" y2="1" data-v-a00b48f0><stop offset="0%" stop-color="#fffdf7" data-v-a00b48f0></stop><stop offset="100%" stop-color="#e9e2d3" data-v-a00b48f0></stop></linearGradient><radialGradient id="glassGrad" cx="50%" cy="0%" r="80%" data-v-a00b48f0><stop offset="0%" stop-color="white" stop-opacity="0.7" data-v-a00b48f0></stop><stop offset="60%" stop-color="white" stop-opacity="0.15" data-v-a00b48f0></stop><stop offset="100%" stop-color="white" stop-opacity="0" data-v-a00b48f0></stop></radialGradient><filter id="shadow" x="-20%" y="-20%" width="140%" height="140%" data-v-a00b48f0><feDropShadow dx="0" dy="3" stdDeviation="4" flood-opacity="0.4" data-v-a00b48f0></feDropShadow></filter><filter id="needleShadow" data-v-a00b48f0><feDropShadow dx="1" dy="1" stdDeviation="1" flood-opacity="0.5" data-v-a00b48f0></feDropShadow></filter></defs><rect x="10" y="10" rx="18" ry="18" width="300" height="200" fill="url(#frameGrad)" filter="url(#shadow)" data-v-a00b48f0></rect><rect x="24" y="24" rx="12" ry="12" width="272" height="172" fill="url(#faceGrad)" stroke="#777" stroke-width="1" data-v-a00b48f0></rect><path d="M 60 90 A 130 70 0 0 1 260 90" fill="none" stroke="#222" stroke-width="2" data-v-a00b48f0></path><g stroke="#222" stroke-width="2" data-v-a00b48f0><line x1="100" y1="120" x2="105" y2="130" data-v-a00b48f0></line><line x1="160" y1="110" x2="160" y2="122" data-v-a00b48f0></line><line x1="220" y1="120" x2="215" y2="130" data-v-a00b48f0></line></g>', 5)),
163
- n("g", {
164
- id: "needle",
165
- transform: t.rotation
166
- }, [...e[0] || (e[0] = [
167
- n("polygon", {
168
- points: "160,70 158,150 162,150",
169
- fill: "#c62828"
170
- }, null, -1),
171
- n("circle", {
172
- cx: "160",
173
- cy: "150",
174
- r: "6",
175
- fill: "#333"
176
- }, null, -1),
177
- n("circle", {
178
- cx: "160",
179
- cy: "150",
180
- r: "3",
181
- fill: "#777"
182
- }, null, -1)
183
- ])], 8, Z),
184
- e[2] || (e[2] = n("rect", {
185
- x: "24",
186
- y: "24",
187
- rx: "12",
188
- ry: "12",
189
- width: "272",
190
- height: "172",
191
- fill: "url(#glassGrad)"
192
- }, null, -1)),
193
- e[3] || (e[3] = n("text", {
194
- x: "160",
195
- y: "185",
196
- "text-anchor": "middle",
197
- "font-size": "16",
198
- "font-weight": "bold",
199
- "font-family": "Arial, Helvetica, sans-serif",
200
- fill: "#333"
201
- }, null, -1))
202
- ], 8, X))
203
- ]);
204
- }
205
- const J = /* @__PURE__ */ u(Y, [["render", j], ["__scopeId", "data-v-a00b48f0"]]);
206
- function z(t, e, a) {
207
- return t < e ? e : t > a ? a : t;
208
- }
209
- class A {
210
- min;
211
- max;
212
- constructor(e, a) {
213
- this.min = e, this.max = a;
214
- }
215
- getCurvedValue(e) {
216
- throw "getCurvedValue must be overriden in child class";
217
- }
218
- getLinearValue(e) {
219
- throw "getLinearValue must be overriden in child class";
220
- }
221
- validateInput(e) {
222
- if (e < this.min)
223
- throw `given value ${e} is less than min value ${this.min}`;
224
- if (e > this.max)
225
- throw `given value ${e} is greater than max value ${this.max}`;
226
- }
227
- }
228
- function $(t) {
229
- return Math.pow(Math.E, t);
230
- }
231
- function Q(t, e, a, r, i, s) {
232
- return ($(((t - e) / (a - e) - 1) * s) - 1) / ($(-s) - 1) * (r - i) + i;
233
- }
234
- function tt(t, e, a, r, i, s) {
235
- return (Math.log((t - i) * ($(-s) - 1) / (r - i) + 1) / s + 1) * (a - e) + e;
236
- }
237
- class q extends A {
238
- curveAmount;
239
- constructor(e, a, r) {
240
- super(e, a), this.curveAmount = r;
241
- }
242
- getCurvedValue(e) {
243
- return this.validateInput(e), Q(e, this.min, this.max, this.min, this.max, this.curveAmount);
244
- }
245
- getLinearValue(e) {
246
- return this.validateInput(e), tt(e, this.min, this.max, this.min, this.max, this.curveAmount);
247
- }
248
- }
249
- class M extends A {
250
- constructor(e, a) {
251
- super(e, a);
252
- }
253
- getCurvedValue(e) {
254
- return this.validateInput(e), e;
255
- }
256
- getLinearValue(e) {
257
- return this.validateInput(e), e;
258
- }
259
- }
260
- const et = 3, at = 300, rt = w({
261
- name: "VAAudioFileVisualizer",
262
- data() {
263
- return {
264
- canvas: null,
265
- canvasContext: null,
266
- amplitudeData: new Float32Array(),
267
- markerPosition: 0,
268
- markerIndex: 0,
269
- zoomWindowStartIndex: 0,
270
- zoomWindowEndIndex: 0,
271
- zoom: 1,
272
- prevY: -1,
273
- prevX: -1,
274
- curedRange: new q(0, 1, 8)
275
- // todo: adjust curve based on sample length?,
276
- };
277
- },
278
- props: {
279
- lineColor: {
280
- required: !1,
281
- type: String,
282
- default: "white"
283
- },
284
- backgroundColor: {
285
- required: !1,
286
- type: String,
287
- default: "black"
288
- },
289
- width: {
290
- required: !1,
291
- type: Number,
292
- default: 800
293
- },
294
- height: {
295
- required: !1,
296
- type: Number,
297
- default: -1
298
- }
299
- },
300
- computed: {
301
- cssVars() {
302
- return {
303
- "--line-color": `${this.lineColor}`,
304
- "--background-color": `${this.backgroundColor}`
305
- };
306
- },
307
- graphWidth() {
308
- return this.width;
309
- },
310
- graphHeight() {
311
- return this.width / et;
312
- },
313
- zoomMult() {
314
- const t = this.curedRange.getCurvedValue(this.zoom);
315
- return Math.max(t, 16 / this.amplitudeData.length);
316
- },
317
- zoomWindowLength() {
318
- return this.zoomWindowEndIndex - this.zoomWindowStartIndex;
319
- }
320
- },
321
- mounted() {
322
- this.canvas = this.$refs.visualizer, this.canvasContext = this.canvas.getContext("2d");
323
- },
324
- methods: {
325
- loadAudioFromAmplitudeData(t) {
326
- this.amplitudeData = t, window.requestAnimationFrame(this.drawZoom);
327
- },
328
- shiftZoomWindow(t) {
329
- this.zoomWindowStartIndex += t, this.zoomWindowEndIndex += t;
330
- },
331
- setZoomWindow() {
332
- this.zoomWindowStartIndex = this.markerIndex - Math.round(this.amplitudeData.length * this.zoomMult / 2), this.zoomWindowEndIndex = this.markerIndex + Math.round(this.amplitudeData.length * this.zoomMult / 2);
333
- const e = (this.graphWidth / 2 - this.markerPosition) / this.graphWidth, a = Math.round(
334
- e * this.zoomWindowLength
335
- );
336
- this.shiftZoomWindow(a);
337
- let r = 0;
338
- r += this.zoomWindowStartIndex < 0 ? -this.zoomWindowStartIndex : 0, r += this.zoomWindowEndIndex > this.amplitudeData.length ? this.amplitudeData.length - this.zoomWindowEndIndex : 0, this.shiftZoomWindow(r);
339
- },
340
- drawZoom() {
341
- this.setZoomWindow(), this.drawAmplitude();
342
- },
343
- getMaxSampleValue(t, e, a) {
344
- let r = Number.MIN_VALUE;
345
- for (let i = e; i < a; i++)
346
- r = Math.max(r, t[i]);
347
- return r;
348
- },
349
- getMinSampleValue(t, e, a) {
350
- let r = Number.MAX_VALUE;
351
- for (let i = e; i < a; i++)
352
- r = Math.min(r, t[i]);
353
- return r;
354
- },
355
- getAvgSampleValue(t, e, a) {
356
- let r = 0;
357
- for (let i = e; i < a; i++)
358
- r += Math.abs(t[i]);
359
- return r / (a - e);
360
- },
361
- drawAmplitudeSamples() {
362
- const t = Math.max(
363
- Math.ceil(this.zoomWindowLength / this.graphWidth),
364
- 1
365
- ), e = this.graphWidth / (this.zoomWindowEndIndex - this.zoomWindowStartIndex);
366
- this.canvasContext?.clearRect(0, 0, this.graphWidth, this.graphHeight), this.canvasContext.fillStyle = this.backgroundColor, this.canvasContext?.fillRect(0, 0, this.graphWidth, this.graphHeight), this.canvasContext.strokeStyle = this.lineColor, this.canvasContext?.beginPath();
367
- let a = 0, r = 0, i = 0;
368
- for (let s = this.zoomWindowStartIndex; s < this.zoomWindowEndIndex; s += t)
369
- i = this.amplitudeData[s], a = (s - this.zoomWindowStartIndex) * e, r = this.graphHeight - (this.graphHeight / 2 + i * this.graphHeight / 2), this.canvasContext?.lineTo(a, r);
370
- this.canvasContext?.lineTo(this.graphWidth, this.graphHeight / 2), this.canvasContext?.stroke(), this.canvasContext?.beginPath(), this.canvasContext.strokeStyle = "red", this.canvasContext?.moveTo(this.markerPosition, 0), this.canvasContext?.lineTo(this.markerPosition, this.graphHeight), this.canvasContext?.stroke();
371
- },
372
- drawAmplitudeAvg() {
373
- const t = Math.max(
374
- Math.floor(this.zoomWindowLength / this.graphWidth),
375
- 1
376
- );
377
- this.canvasContext?.clearRect(0, 0, this.graphWidth, this.graphHeight), this.canvasContext.fillStyle = this.backgroundColor, this.canvasContext?.fillRect(0, 0, this.graphWidth, this.graphHeight), this.canvasContext.strokeStyle = this.lineColor, this.canvasContext?.beginPath();
378
- let e = 0, a = 0, r = 0;
379
- for (let i = 0; i < this.graphWidth; i++)
380
- e = i, r = this.getAvgSampleValue(
381
- this.amplitudeData,
382
- this.zoomWindowStartIndex + i * t,
383
- this.zoomWindowStartIndex + (i + 1) * t
384
- ), a = this.graphHeight - (this.graphHeight / 2 + r * this.graphHeight / 2), this.canvasContext?.moveTo(e, a), a = this.graphHeight - (this.graphHeight / 2 + -r * this.graphHeight / 2), this.canvasContext?.lineTo(e, a);
385
- this.canvasContext?.lineTo(this.graphWidth, this.graphHeight / 2), this.canvasContext?.stroke(), this.canvasContext?.beginPath(), this.canvasContext.strokeStyle = "red", this.canvasContext?.moveTo(this.markerPosition, 0), this.canvasContext?.lineTo(this.markerPosition, this.graphHeight), this.canvasContext?.stroke();
386
- },
387
- drawAmplitudeMinMax() {
388
- const t = Math.max(
389
- Math.floor(this.zoomWindowLength / this.graphWidth),
390
- 1
391
- );
392
- this.canvasContext?.clearRect(0, 0, this.graphWidth, this.graphHeight), this.canvasContext.fillStyle = this.backgroundColor, this.canvasContext?.fillRect(0, 0, this.graphWidth, this.graphHeight), this.canvasContext.strokeStyle = this.lineColor, this.canvasContext?.beginPath();
393
- let e = 0, a = 0, r = 0, i = 0;
394
- for (let s = 0; s < this.graphWidth; s++)
395
- e = s, r = this.getMinSampleValue(
396
- this.amplitudeData,
397
- this.zoomWindowStartIndex + s * t,
398
- this.zoomWindowStartIndex + (s + 1) * t
399
- ), i = this.getMaxSampleValue(
400
- this.amplitudeData,
401
- this.zoomWindowStartIndex + s * t,
402
- this.zoomWindowStartIndex + (s + 1) * t
403
- ), a = this.graphHeight - (this.graphHeight / 2 + r * this.graphHeight / 2), this.canvasContext?.moveTo(e, a), a = this.graphHeight - (this.graphHeight / 2 + i * this.graphHeight / 2), this.canvasContext?.lineTo(e, a);
404
- this.canvasContext?.lineTo(this.graphWidth, this.graphHeight / 2), this.canvasContext?.stroke(), this.canvasContext?.beginPath(), this.canvasContext.strokeStyle = "red", this.canvasContext?.moveTo(this.markerPosition, 0), this.canvasContext?.lineTo(this.markerPosition, this.graphHeight), this.canvasContext?.stroke();
405
- },
406
- drawAmplitude() {
407
- this.zoomWindowLength > this.graphWidth ? this.drawAmplitudeAvg() : this.drawAmplitudeSamples();
408
- },
409
- onCanvasDoubleClick() {
410
- this.markerIndex = 0, this.markerPosition = 0, this.zoom = 1, this.zoomWindowStartIndex = 0, this.zoomWindowEndIndex = this.amplitudeData.length;
411
- },
412
- onCanvasMouseDown(t) {
413
- document.getElementsByTagName("body")[0].classList.add("--no-text-select");
414
- const e = this.canvas?.getBoundingClientRect()?.x, a = t.clientX - e;
415
- this.markerIndex = Math.round(a / this.graphWidth * this.zoomWindowLength) + this.zoomWindowStartIndex, this.markerPosition = a, window.requestAnimationFrame(this.drawAmplitude), window.addEventListener("mousemove", this.onClickDrag), window.addEventListener("mouseup", this.endDrag);
416
- },
417
- endDrag() {
418
- window.removeEventListener("mousemove", this.onClickDrag), this.prevY = -1, this.prevX = -1, document.getElementsByTagName("body")[0].classList.remove("--no-text-select");
419
- },
420
- onClickDrag(t) {
421
- const e = t.pageY, a = t.pageX, r = a - this.prevX, i = e - this.prevY;
422
- if (Math.abs(r) >= Math.abs(i)) {
423
- if (this.prevX >= 0) {
424
- let s = Math.round(
425
- r / this.graphWidth * this.zoomWindowLength
426
- );
427
- const o = -this.zoomWindowStartIndex, h = this.amplitudeData.length - this.zoomWindowEndIndex;
428
- s = z(s, o, h), this.shiftZoomWindow(-s), this.markerIndex -= s;
429
- }
430
- } else
431
- this.prevY >= 0 && (this.zoom = z(this.zoom - i / at * 1, 0, 1), this.setZoomWindow());
432
- this.markerPosition = Math.round(
433
- (this.markerIndex - this.zoomWindowStartIndex) / this.zoomWindowLength * this.graphWidth
434
- ), window.requestAnimationFrame(this.drawAmplitude), this.prevY = e, this.prevX = a;
435
- }
436
- }
437
- }), it = ["width", "height"];
438
- function st(t, e, a, r, i, s) {
439
- return c(), p(O, null, [
440
- n("canvas", {
441
- width: t.graphWidth,
442
- height: t.graphHeight,
443
- ref: "visualizer",
444
- class: "visualizer-canvas",
445
- style: S(t.cssVars),
446
- onMousedown: e[0] || (e[0] = (...o) => t.onCanvasMouseDown && t.onCanvasMouseDown(...o)),
447
- onDblclick: e[1] || (e[1] = (...o) => t.onCanvasDoubleClick && t.onCanvasDoubleClick(...o))
448
- }, null, 44, it),
449
- n("p", null, "zoom: " + m(t.zoom), 1),
450
- n("p", null, "zoomWindowStartIndex: " + m(t.zoomWindowStartIndex), 1),
451
- n("p", null, "zoomWindowEndIndex: " + m(t.zoomWindowEndIndex), 1),
452
- n("p", null, "zoomWindowLength: " + m(t.zoomWindowLength), 1),
453
- n("p", null, "totalSamples: " + m(t.amplitudeData.length), 1),
454
- n("p", null, "markerIndex: " + m(t.markerIndex), 1),
455
- n("p", null, "markerPosition: " + m(t.markerPosition), 1),
456
- n("p", null, "graphWidth: " + m(t.graphWidth), 1),
457
- n("p", null, " binSize: " + m(Math.max(Math.floor(t.zoomWindowLength / t.graphWidth), 1)), 1),
458
- n("p", null, " binSize (raw): " + m(Math.max(t.zoomWindowLength / t.graphWidth, 1)), 1)
459
- ], 64);
460
- }
461
- const ot = /* @__PURE__ */ u(rt, [["render", st], ["__scopeId", "data-v-41d0c9ce"]]), nt = w({
462
- name: "VADigitalMeterStereo",
463
- props: {
464
- leftInput: {
465
- required: !1,
466
- type: AudioNode
467
- },
468
- rightInput: {
469
- required: !1,
470
- type: AudioNode
471
- },
472
- type: {
473
- required: !1,
474
- type: String,
475
- default: "peak"
476
- },
477
- fftSize: {
478
- required: !1,
479
- type: Number,
480
- default: 2048
481
- },
482
- clippingColor: {
483
- required: !1,
484
- type: String,
485
- default: "#e64a19"
486
- },
487
- barColor: {
488
- required: !1,
489
- type: String,
490
- default: "#4caf50"
491
- },
492
- backgroundColor: {
493
- required: !1,
494
- type: String,
495
- default: "#e0e0e0"
496
- },
497
- markerColor: {
498
- required: !1,
499
- type: String,
500
- default: "gray"
501
- },
502
- drawMarkers: {
503
- required: !1,
504
- type: Boolean,
505
- default: !1
506
- },
507
- height: {
508
- required: !1,
509
- type: Number,
510
- default: 200
511
- },
512
- width: {
513
- required: !1,
514
- type: Number,
515
- default: 20
516
- },
517
- font: {
518
- required: !1,
519
- type: String,
520
- default: "Helvetica, sans-serif"
521
- }
522
- }
523
- }), ht = { class: "stereo-meter-container" };
524
- function lt(t, e, a, r, i, s) {
525
- const o = G("v-a-digital-meter");
526
- return c(), p("div", ht, [
527
- k(o, {
528
- class: "meter-channel",
529
- input: t.leftInput,
530
- fftSize: t.fftSize,
531
- type: t.type,
532
- height: t.height,
533
- width: t.width,
534
- barColor: t.barColor,
535
- backgroundColor: t.backgroundColor,
536
- markerColor: t.markerColor,
537
- font: t.font,
538
- clippingColor: t.clippingColor,
539
- drawMarkers: !1
540
- }, null, 8, ["input", "fftSize", "type", "height", "width", "barColor", "backgroundColor", "markerColor", "font", "clippingColor"]),
541
- k(o, {
542
- class: "meter-channel",
543
- input: t.rightInput,
544
- fftSize: t.fftSize,
545
- type: t.type,
546
- height: t.height,
547
- width: t.width,
548
- barColor: t.barColor,
549
- backgroundColor: t.backgroundColor,
550
- markerColor: t.markerColor,
551
- font: t.font,
552
- clippingColor: t.clippingColor,
553
- drawMarkers: t.drawMarkers
554
- }, null, 8, ["input", "fftSize", "type", "height", "width", "barColor", "backgroundColor", "markerColor", "font", "clippingColor", "drawMarkers"])
555
- ]);
556
- }
557
- const dt = /* @__PURE__ */ u(nt, [["render", lt], ["__scopeId", "data-v-0ed3d04a"]]), v = 90, pt = new q(0, v, 2), ct = w({
558
- name: "VADigitalMeter",
559
- props: {
560
- input: {
561
- required: !1,
562
- type: AudioNode,
563
- default: void 0
564
- },
565
- type: {
566
- required: !1,
567
- type: String,
568
- default: "peak"
569
- },
570
- fftSize: {
571
- required: !1,
572
- type: Number,
573
- default: 2048
574
- },
575
- clippingColor: {
576
- required: !1,
577
- type: String,
578
- default: "#e64a19"
579
- },
580
- barColor: {
581
- required: !1,
582
- type: String,
583
- default: "#4caf50"
584
- },
585
- backgroundColor: {
586
- required: !1,
587
- type: String,
588
- default: "#e0e0e0"
589
- },
590
- markerColor: {
591
- required: !1,
592
- type: String,
593
- default: "gray"
594
- },
595
- drawMarkers: {
596
- required: !1,
597
- type: Boolean,
598
- default: !1
599
- },
600
- height: {
601
- required: !1,
602
- type: Number,
603
- default: 200
604
- },
605
- width: {
606
- required: !1,
607
- type: Number,
608
- default: 20
609
- },
610
- font: {
611
- required: !1,
612
- type: String,
613
- default: "Helvetica, sans-serif"
614
- }
615
- },
616
- computed: {
617
- canvasWidth() {
618
- return this.width + (this.drawMarkers ? 30 : 0);
619
- }
620
- },
621
- setup(t) {
622
- const e = T(t.fftSize, t.input);
623
- return W(() => t.input, e.onInputChanged), {
624
- ...e,
625
- ...P()
626
- };
627
- },
628
- data() {
629
- return {
630
- canvasCxt: null
631
- };
632
- },
633
- mounted() {
634
- const t = this.$refs.meterCanvas;
635
- this.canvasCxt = t.getContext("2d"), this.startRendering(this.draw);
636
- },
637
- methods: {
638
- getMeterHeight(t) {
639
- return this.height * ((v + t) / v) * (v / (v + 10));
640
- },
641
- scaleY(t) {
642
- return pt.getCurvedValue(t + v) - v;
643
- },
644
- draw() {
645
- if (this.canvasCxt) {
646
- const t = this.getFloatTimeDomainData();
647
- let e = -v;
648
- this.type === "peak" && t ? e = this.getPeakDb(t) : this.type === "rms" && t && (e = this.getRmsDb(t));
649
- const a = e > 0;
650
- e = z(e, -v, 0);
651
- const r = this.getMeterHeight(this.scaleY(e));
652
- this.canvasCxt.clearRect(0, 0, this.canvasWidth, this.height), this.canvasCxt.fillStyle = this.backgroundColor, this.canvasCxt.beginPath(), this.canvasCxt.fillRect(0, 0, this.width, this.height), this.canvasCxt.stroke(), this.canvasCxt.fillStyle = a ? this.clippingColor : this.barColor, this.canvasCxt.beginPath(), this.canvasCxt.fillRect(
653
- 0,
654
- this.height - r,
655
- this.width,
656
- r
657
- ), this.canvasCxt.stroke(), this.drawMarkers && this.drawDbMarkers();
658
- }
659
- },
660
- drawDbMarkers() {
661
- this.drawDbMarker(0), this.drawDbMarker(-10), this.drawDbMarker(-20), this.drawDbMarker(-30), this.drawDbMarker(-40), this.drawDbMarker(-60);
662
- },
663
- drawDbMarker(t) {
664
- const e = this.height - this.getMeterHeight(this.scaleY(t)), a = this.width + 4;
665
- this.canvasCxt.lineWidth = 1, this.canvasCxt.strokeStyle = this.markerColor, this.canvasCxt?.beginPath(), this.canvasCxt?.moveTo(a, e), this.canvasCxt?.lineTo(a + 4, e), this.canvasCxt?.stroke(), this.canvasCxt.font = `10px ${this.font}`, this.canvasCxt.fillStyle = this.markerColor, this.canvasCxt.fillText(`${Math.abs(t)}`, a + 8, e + 3);
666
- }
667
- }
668
- }), ft = ["height", "width"];
669
- function ut(t, e, a, r, i, s) {
670
- return c(), p("canvas", {
671
- class: "meter",
672
- ref: "meterCanvas",
673
- height: t.height,
674
- width: t.canvasWidth
675
- }, null, 8, ft);
676
- }
677
- const mt = /* @__PURE__ */ u(ct, [["render", ut]]), gt = {}, yt = {
678
- version: "1.1",
679
- viewBox: "0 0 62.143 129.29",
680
- xmlns: "http://www.w3.org/2000/svg",
681
- width: "27"
682
- };
683
- function xt(t, e) {
684
- return c(), p("svg", yt, [...e[0] || (e[0] = [
685
- V('<defs><filter id="filter4165" x="-.18715" y="-.046414" width="1.3743" height="1.0928" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="2.4419414"></feGaussianBlur></filter><filter id="filter4165-1" x="-.18715" y="-.046414" width="1.3743" height="1.0928" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="2.4419414"></feGaussianBlur></filter><filter id="filter4165-4" x="-.18715" y="-.046414" width="1.3743" height="1.0928" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="2.4419414"></feGaussianBlur></filter><linearGradient id="linearGradient7341" x1="678.43" x2="668.76" y1="597.36" y2="597.36" gradientTransform="translate(406.7,-14.18)" gradientUnits="userSpaceOnUse"><stop stop-color="#9a9a9a" offset="0"></stop><stop offset="1"></stop></linearGradient><linearGradient id="linearGradient7468" x1="678.43" x2="668.76" y1="597.36" y2="597.36" gradientTransform="translate(203.35,-14.18)" gradientUnits="userSpaceOnUse"><stop stop-color="#9a9a9a" offset="0"></stop><stop offset="1"></stop></linearGradient><linearGradient id="linearGradient7595" x1="678.43" x2="668.76" y1="597.36" y2="597.36" gradientTransform="translate(0,-14.18)" gradientUnits="userSpaceOnUse"><stop stop-color="#9a9a9a" offset="0"></stop><stop offset="1"></stop></linearGradient><linearGradient id="linearGradient7698" x1="87.866" x2="87.866" y1="516.83" y2="528.75" gradientTransform="matrix(1.0278,0,0,1,582.85,121.43)" gradientUnits="userSpaceOnUse"><stop stop-color="#999" offset="0"></stop><stop stop-color="#999" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7700" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0235,0,0,1,37.712,-1157.9)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7702" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1 0 0 .50643 51.792 414.75)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7704" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1 0 0 .42746 51.792 466.71)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7706" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1 0 0 .26952 51.792 554.43)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7708" x1="87.866" x2="87.866" y1="516.83" y2="521.42" gradientTransform="matrix(1.0364 0 0 .96441 581.97 -1263.8)" gradientUnits="userSpaceOnUse"><stop stop-color="#999" offset="0"></stop><stop stop-color="#333" offset="1"></stop></linearGradient><linearGradient id="linearGradient7710" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0364 0 0 .96441 29.714 -1226.1)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7712" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0274 0 0 .48841 35.581 -982.83)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7714" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0213 0 0 .41225 39.183 -932.97)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7716" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0122 0 0 .25993 44.587 -848)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient></defs><g transform="translate(-642.36 -637.36)"><rect x="642.36" y="637.36" width="62.143" height="129.29" rx="3" ry="3" fill="#4d4d4d"></rect><rect x="643.3" y="701.75" width="60.419" height="3.5355" fill="#e6e6e6"></rect><rect x="643.05" y="638.08" width="60.613" height="21.071" rx="2.1483" ry="2" fill="url(#linearGradient7698)"></rect><rect x="643.25" y="689.59" width="58.811" height="10.119" fill="#333"></rect><rect x="642.36" y="680.23" width="61.133" height="8.7929" fill="#333"></rect><rect x="642.36" y="661.81" width="61.133" height="4.5457" fill="#1a1a1a"></rect><rect x="642.36" y="667.58" width="61.133" height="11.364" fill="#1a1a1a"></rect><rect transform="scale(1,-1)" x="643.05" y="-661.09" width="60.012" height="2.2612" rx="1.0235" ry=".63958" fill="url(#linearGradient7700)"></rect><rect x="643.22" y="666.37" width="58.633" height="1.1452" rx="1" ry=".3239" fill="url(#linearGradient7702)"></rect><rect x="643.22" y="679.09" width="58.633" height=".9666" rx="1" ry=".2734" fill="url(#linearGradient7704)"></rect><rect x="643.22" y="688.34" width="58.633" height=".60946" rx="1" ry=".17238" fill="url(#linearGradient7706)"></rect><rect transform="scale(1,-1)" x="642.67" y="-765.57" width="61.118" height="20.321" rx="2.1662" ry="1.9288" fill="url(#linearGradient7708)"></rect><rect transform="scale(1,-1)" x="643.25" y="-717.26" width="58.811" height="9.7593" fill="#333"></rect><rect transform="scale(1,-1)" x="642.36" y="-726.3" width="61.133" height="8.4799" fill="#666"></rect><rect transform="scale(1,-1)" x="642.36" y="-744.06" width="61.133" height="4.3839" fill="#808080"></rect><rect transform="scale(1,-1)" x="642.36" y="-738.49" width="61.133" height="10.96" fill="#808080"></rect><rect transform="scale(1,-1)" x="642.67" y="-746.93" width="60.767" height="2.1808" rx="1.0364" ry=".61681" fill="url(#linearGradient7710)"></rect><rect transform="scale(1,-1)" x="643.22" y="-740.17" width="60.24" height="1.1044" rx="1.0274" ry=".31237" fill="url(#linearGradient7712)"></rect><rect transform="scale(1,-1)" x="643.22" y="-728.15" width="59.883" height=".9322" rx="1.0213" ry=".26366" fill="url(#linearGradient7714)"></rect><rect transform="scale(1,-1)" x="643.22" y="-718.85" width="59.347" height=".58776" rx="1.0122" ry=".16624" fill="url(#linearGradient7716)"></rect></g>', 2)
686
- ])]);
687
- }
688
- const vt = /* @__PURE__ */ u(gt, [["render", xt]]), wt = {}, kt = {
689
- version: "1.1",
690
- viewBox: "0 0 104 460",
691
- xmlns: "http://www.w3.org/2000/svg"
692
- };
693
- function bt(t, e) {
694
- return c(), p("svg", kt, [...e[0] || (e[0] = [
695
- V('<defs><filter id="filter4165" x="-.18715" y="-.046414" width="1.3743" height="1.0928" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="2.4419414"></feGaussianBlur></filter><filter id="filter4165-1" x="-.18715" y="-.046414" width="1.3743" height="1.0928" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="2.4419414"></feGaussianBlur></filter><filter id="filter4165-4" x="-.18715" y="-.046414" width="1.3743" height="1.0928" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="2.4419414"></feGaussianBlur></filter><linearGradient id="linearGradient7341" x1="678.43" x2="668.76" y1="597.36" y2="597.36" gradientTransform="translate(406.7,-14.18)" gradientUnits="userSpaceOnUse"><stop stop-color="#9a9a9a" offset="0"></stop><stop offset="1"></stop></linearGradient><linearGradient id="linearGradient7468" x1="678.43" x2="668.76" y1="597.36" y2="597.36" gradientTransform="translate(203.35,-14.18)" gradientUnits="userSpaceOnUse"><stop stop-color="#9a9a9a" offset="0"></stop><stop offset="1"></stop></linearGradient><linearGradient id="linearGradient7595" x1="678.43" x2="668.76" y1="597.36" y2="597.36" gradientTransform="translate(0,-14.18)" gradientUnits="userSpaceOnUse"><stop stop-color="#9a9a9a" offset="0"></stop><stop offset="1"></stop></linearGradient><linearGradient id="linearGradient7698" x1="87.866" x2="87.866" y1="516.83" y2="528.75" gradientTransform="matrix(1.0278,0,0,1,582.85,121.43)" gradientUnits="userSpaceOnUse"><stop stop-color="#999" offset="0"></stop><stop stop-color="#999" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7700" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0235,0,0,1,37.712,-1157.9)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7702" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1 0 0 .50643 51.792 414.75)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7704" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1 0 0 .42746 51.792 466.71)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7706" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1 0 0 .26952 51.792 554.43)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7708" x1="87.866" x2="87.866" y1="516.83" y2="521.42" gradientTransform="matrix(1.0364 0 0 .96441 581.97 -1263.8)" gradientUnits="userSpaceOnUse"><stop stop-color="#999" offset="0"></stop><stop stop-color="#333" offset="1"></stop></linearGradient><linearGradient id="linearGradient7710" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0364 0 0 .96441 29.714 -1226.1)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7712" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0274 0 0 .48841 35.581 -982.83)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7714" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0213 0 0 .41225 39.183 -932.97)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7716" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0122 0 0 .25993 44.587 -848)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7718" x1="87.866" x2="87.866" y1="516.83" y2="528.75" gradientTransform="matrix(1.0278,0,0,1,787.52,-27.904)" gradientUnits="userSpaceOnUse"><stop stop-color="#999" offset="0"></stop><stop stop-color="#999" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7720" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0235,0,0,1,242.38,-1008.6)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7722" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1 0 0 .50643 256.46 265.42)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7724" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1 0 0 .42746 256.46 317.38)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7726" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1 0 0 .26952 256.46 405.1)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7728" x1="87.866" x2="87.866" y1="516.83" y2="521.42" gradientTransform="matrix(1.0364 0 0 .96441 786.64 -1114.5)" gradientUnits="userSpaceOnUse"><stop stop-color="#999" offset="0"></stop><stop stop-color="#333" offset="1"></stop></linearGradient><linearGradient id="linearGradient7730" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0364 0 0 .96441 234.39 -1076.7)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7732" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0274 0 0 .48841 240.25 -833.5)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7734" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0213 0 0 .41225 243.85 -783.64)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7736" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0122 0 0 .25993 249.26 -698.66)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7738" x1="87.866" x2="87.866" y1="516.83" y2="528.75" gradientTransform="matrix(1.0278,0,0,1,989.55,-112.75)" gradientUnits="userSpaceOnUse"><stop stop-color="#999" offset="0"></stop><stop stop-color="#999" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7740" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0235,0,0,1,444.41,-923.75)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7742" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1 0 0 .50643 458.49 180.57)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7744" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1 0 0 .42746 458.49 232.53)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7746" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1 0 0 .26952 458.49 320.25)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7748" x1="87.866" x2="87.866" y1="516.83" y2="521.42" gradientTransform="matrix(1.0364 0 0 .96441 988.67 -1029.6)" gradientUnits="userSpaceOnUse"><stop stop-color="#999" offset="0"></stop><stop stop-color="#333" offset="1"></stop></linearGradient><linearGradient id="linearGradient7750" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0364 0 0 .96441 436.42 -991.9)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7752" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0274 0 0 .48841 442.28 -748.65)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7754" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0213 0 0 .41225 445.88 -698.79)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><linearGradient id="linearGradient7756" x1="618.49" x2="618.49" y1="496.57" y2="499.1" gradientTransform="matrix(1.0122 0 0 .25993 451.29 -613.82)" gradientUnits="userSpaceOnUse"><stop stop-color="#ccc" offset="0"></stop><stop stop-color="#ccc" stop-opacity="0" offset="1"></stop></linearGradient><clipPath id="clipPath1318"><rect x="618.68" y="336.2" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1322"><rect x="618.68" y="336.2" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1326"><rect x="618.68" y="336.2" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1330"><rect x="618.68" y="336.2" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1334"><rect x="211.98" y="350.38" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1338"><rect x="620" y="321.05" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1342"><rect x="618.68" y="336.2" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1346"><rect x="618.68" y="336.2" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1350"><rect x="618.68" y="336.2" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1354"><rect x="415.33" y="350.38" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1358"><rect x="415.33" y="350.38" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1362"><rect x="618.68" y="350.38" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1366"><rect x="618.68" y="336.2" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1370"><rect x="618.68" y="336.2" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1374"><rect x="618.68" y="336.2" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1378"><rect x="618.68" y="350.38" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath><clipPath id="clipPath1382"><rect x="618.68" y="350.38" width="107.89" height="491.49" rx="1" ry="112.86" fill="#0d0000" fill-opacity=".14859" stroke-opacity="0" style="paint-order:fill markers stroke;"></rect></clipPath></defs><g transform="translate(-621.34 -349.25)"><g transform="translate(0,-14.18)" clip-path="url(#clipPath1382)" fill="#b3b3b3"><g stroke="#b4b4b4" stroke-linecap="round"><g stroke-width="2.2535"><path d="m686.4 383.13h34.461"></path><path d="m686.4 434.78h34.461"></path><path d="m686.4 602.64h34.461"></path><path d="m686.4 654.29h34.461"></path><path d="m686.4 705.94h34.461"></path><path d="m686.4 757.59h34.461"></path><path d="m686.4 809.24h34.461"></path></g><g stroke-width="1.4468"><path d="m707.72 396.04h13.549"></path><path d="m707.72 408.95h13.549"></path><path d="m707.72 421.86h13.549"></path><path d="m707.72 447.69h13.549"></path><path d="m707.72 460.6h13.549"></path><path d="m707.72 473.51h13.549"></path><path d="m707.72 615.55h13.549"></path><path d="m707.72 628.46h13.549"></path><path d="m707.72 641.38h13.549"></path><path d="m707.72 667.2h13.549"></path><path d="m707.72 680.11h13.549"></path><path d="m707.72 693.03h13.549"></path><path d="m707.72 718.85h13.549"></path><path d="m707.72 731.76h13.549"></path><path d="m707.72 744.68h13.549"></path><path d="m707.72 770.5h13.549"></path><path d="m707.72 783.41h13.549"></path></g><path d="m686.4 538.08h34.461" stroke-width="2.2535"></path><g stroke-width="1.4468"><path d="m707.72 563.9h13.549"></path><path d="m707.72 576.81h13.549"></path><path d="m707.72 589.73h13.549"></path><path d="m707.72 499.34h13.549"></path><path d="m707.72 512.25h13.549"></path><path d="m707.72 525.16h13.549"></path></g></g><g font-family="Sawasdee" font-size="20px" letter-spacing="0px" word-spacing="0px"><text x="732.51788" y="816.73883" style="line-height:125%;" xml:space="preserve"><tspan x="732.51788" y="816.73883">60</tspan></text><text x="732.48859" y="764.85846" style="line-height:125%;" xml:space="preserve"><tspan x="732.48859" y="764.85846">50</tspan></text><text x="732.9671" y="713.24292" style="line-height:125%;" xml:space="preserve"><tspan x="732.9671" y="713.24292">40</tspan></text><text x="732.29816" y="661.56879" style="line-height:125%;" xml:space="preserve"><tspan x="732.29816" y="661.56879">30</tspan></text><text x="732.47394" y="609.91901" style="line-height:125%;" xml:space="preserve"><tspan x="732.47394" y="609.91901">20</tspan></text><text x="731.29718" y="545.35681" style="line-height:125%;" xml:space="preserve"><tspan x="731.29718" y="545.35681">10</tspan></text><text x="738.29425" y="493.71683" style="line-height:125%;" xml:space="preserve"><tspan x="738.29425" y="493.71683">0</tspan></text><text x="738.29913" y="441.98407" style="line-height:125%;" xml:space="preserve"><tspan x="738.29913" y="441.98407">5</tspan></text><text x="731.29718" y="390.41727" style="line-height:125%;" xml:space="preserve"><tspan x="731.29718" y="390.41727">10</tspan></text></g><path d="m708.23 796.33h13.549" stroke="#b4b4b4" stroke-linecap="round" stroke-width="1.4468"></path><g transform="translate(0,3.0785)" stroke="#b4b4b4" stroke-linecap="round"><path d="m657.43 380.16h-34.461" stroke-width="2.2535"></path><path d="m657.43 431.81h-34.461" stroke-width="2.2535"></path><path d="m658.06 483.46h-34.461" stroke-width="3.5"></path><g stroke-width="2.2535"><path d="m657.43 599.68h-34.461"></path><path d="m657.43 651.33h-34.461"></path><path d="m657.43 702.98h-34.461"></path><path d="m657.43 754.62h-34.461"></path><path d="m657.43 806.27h-34.461"></path></g><g stroke-width="1.4468"><path d="m636.12 393.08h-13.549"></path><path d="m636.12 405.99h-13.549"></path><path d="m636.12 418.9h-13.549"></path><path d="m636.12 444.73h-13.549"></path><path d="m636.12 457.64h-13.549"></path><path d="m636.12 470.55h-13.549"></path><path d="m636.12 612.59h-13.549"></path><path d="m636.12 625.5h-13.549"></path><path d="m636.12 638.41h-13.549"></path><path d="m636.12 664.24h-13.549"></path><path d="m636.12 677.15h-13.549"></path><path d="m636.12 690.06h-13.549"></path><path d="m636.12 715.89h-13.549"></path><path d="m636.12 728.8h-13.549"></path><path d="m636.12 741.71h-13.549"></path><path d="m636.12 767.54h-13.549"></path><path d="m636.12 780.45h-13.549"></path></g><path d="m657.43 535.11h-34.461" stroke-width="2.2535"></path><g stroke-width="1.4468"><path d="m636.12 560.94h-13.549"></path><path d="m636.12 573.85h-13.549"></path><path d="m636.12 586.76h-13.549"></path><path d="m636.12 496.38h-13.549"></path><path d="m636.12 509.29h-13.549"></path><path d="m636.12 522.2h-13.549"></path><path d="m635.61 793.36h-13.549"></path></g></g></g><g transform="translate(0,-14.18)" clip-path="url(#clipPath1378)" stroke-linecap="round"><path d="m673.43 370.93v445.71" fill="#333" stroke="#414141" stroke-width="15"></path><path d="m673.43 370.93v445.71" fill="#454545" stroke="#494949" stroke-width="14.545"></path><path d="m673.43 370.93v445.71" fill="#585858" stroke="#515151" stroke-width="14.091"></path><path d="m673.43 370.93v445.71" fill="#6a6a6a" stroke="#595959" stroke-width="13.636"></path><path d="m673.43 370.93v445.71" fill="#7d7d7d" stroke="#616161" stroke-width="13.182"></path><path d="m673.43 370.93v445.71" fill="#8f8f8f" stroke="#696969" stroke-width="12.727"></path><path d="m673.43 370.93v445.71" fill="#a2a2a2" stroke="#717171" stroke-width="12.273"></path><path d="m673.43 370.93v445.71" fill="#b4b4b4" stroke="#797979" stroke-width="11.818"></path><path d="m673.43 370.93v445.71" fill="#c7c7c7" stroke="#818181" stroke-width="11.364"></path><path d="m673.43 370.93v445.71" fill="#d9d9d9" stroke="#898989" stroke-width="10.909"></path><path d="m673.43 370.93v445.71" fill="#ececec" stroke="#919191" stroke-width="10.455"></path><path d="m673.43 370.93v445.71" fill="#fff" stroke="#9a9a9a" stroke-width="10"></path></g><g stroke-linecap="round"><path d="m673.43 356.75v445.71" clip-path="url(#clipPath1374)" fill="#333" stroke="#414141" stroke-width="15"></path><path d="m679.64 802.47v-445.18" clip-path="url(#clipPath1370)" fill="#999" stroke="#b1b1b1" stroke-width=".6"></path><path d="m673.43 356.75v445.71" clip-path="url(#clipPath1366)" fill="#fff" opacity=".50896" stroke="url(#linearGradient7595)" stroke-width="12"></path></g><g transform="translate(203.35,-14.18)" clip-path="url(#clipPath1358)" fill="#b3b3b3"><g stroke="#b4b4b4" stroke-linecap="round"><g stroke-width="2.2535"><path d="m686.4 383.13h34.461"></path><path d="m686.4 434.78h34.461"></path><path d="m686.4 602.64h34.461"></path><path d="m686.4 654.29h34.461"></path><path d="m686.4 705.94h34.461"></path><path d="m686.4 757.59h34.461"></path><path d="m686.4 809.24h34.461"></path></g><g stroke-width="1.4468"><path d="m707.72 396.04h13.549"></path><path d="m707.72 408.95h13.549"></path><path d="m707.72 421.86h13.549"></path><path d="m707.72 447.69h13.549"></path><path d="m707.72 460.6h13.549"></path><path d="m707.72 473.51h13.549"></path><path d="m707.72 615.55h13.549"></path><path d="m707.72 628.46h13.549"></path><path d="m707.72 641.38h13.549"></path><path d="m707.72 667.2h13.549"></path><path d="m707.72 680.11h13.549"></path><path d="m707.72 693.03h13.549"></path><path d="m707.72 718.85h13.549"></path><path d="m707.72 731.76h13.549"></path><path d="m707.72 744.68h13.549"></path><path d="m707.72 770.5h13.549"></path><path d="m707.72 783.41h13.549"></path></g><path d="m686.4 538.08h34.461" stroke-width="2.2535"></path><g stroke-width="1.4468"><path d="m707.72 563.9h13.549"></path><path d="m707.72 576.81h13.549"></path><path d="m707.72 589.73h13.549"></path><path d="m707.72 499.34h13.549"></path><path d="m707.72 512.25h13.549"></path><path d="m707.72 525.16h13.549"></path></g></g><g font-family="Sawasdee" font-size="20px" letter-spacing="0px" word-spacing="0px"><text x="732.51788" y="816.73883" style="line-height:125%;" xml:space="preserve"><tspan x="732.51788" y="816.73883">60</tspan></text><text x="732.48859" y="764.85846" style="line-height:125%;" xml:space="preserve"><tspan x="732.48859" y="764.85846">50</tspan></text><text x="732.9671" y="713.24292" style="line-height:125%;" xml:space="preserve"><tspan x="732.9671" y="713.24292">40</tspan></text><text x="732.29816" y="661.56879" style="line-height:125%;" xml:space="preserve"><tspan x="732.29816" y="661.56879">30</tspan></text><text x="732.47394" y="609.91901" style="line-height:125%;" xml:space="preserve"><tspan x="732.47394" y="609.91901">20</tspan></text><text x="731.29718" y="545.35681" style="line-height:125%;" xml:space="preserve"><tspan x="731.29718" y="545.35681">10</tspan></text><text x="738.29425" y="493.71683" style="line-height:125%;" xml:space="preserve"><tspan x="738.29425" y="493.71683">0</tspan></text><text x="738.29913" y="441.98407" style="line-height:125%;" xml:space="preserve"><tspan x="738.29913" y="441.98407">5</tspan></text><text x="731.29718" y="390.41727" style="line-height:125%;" xml:space="preserve"><tspan x="731.29718" y="390.41727">10</tspan></text></g><path d="m708.23 796.33h13.549" stroke="#b4b4b4" stroke-linecap="round" stroke-width="1.4468"></path><g transform="translate(0,3.0785)" stroke="#b4b4b4" stroke-linecap="round"><path d="m657.43 380.16h-34.461" stroke-width="2.2535"></path><path d="m657.43 431.81h-34.461" stroke-width="2.2535"></path><path d="m658.06 483.46h-34.461" stroke-width="3.5"></path><g stroke-width="2.2535"><path d="m657.43 599.68h-34.461"></path><path d="m657.43 651.33h-34.461"></path><path d="m657.43 702.98h-34.461"></path><path d="m657.43 754.62h-34.461"></path><path d="m657.43 806.27h-34.461"></path></g><g stroke-width="1.4468"><path d="m636.12 393.08h-13.549"></path><path d="m636.12 405.99h-13.549"></path><path d="m636.12 418.9h-13.549"></path><path d="m636.12 444.73h-13.549"></path><path d="m636.12 457.64h-13.549"></path><path d="m636.12 470.55h-13.549"></path><path d="m636.12 612.59h-13.549"></path><path d="m636.12 625.5h-13.549"></path><path d="m636.12 638.41h-13.549"></path><path d="m636.12 664.24h-13.549"></path><path d="m636.12 677.15h-13.549"></path><path d="m636.12 690.06h-13.549"></path><path d="m636.12 715.89h-13.549"></path><path d="m636.12 728.8h-13.549"></path><path d="m636.12 741.71h-13.549"></path><path d="m636.12 767.54h-13.549"></path><path d="m636.12 780.45h-13.549"></path></g><path d="m657.43 535.11h-34.461" stroke-width="2.2535"></path><g stroke-width="1.4468"><path d="m636.12 560.94h-13.549"></path><path d="m636.12 573.85h-13.549"></path><path d="m636.12 586.76h-13.549"></path><path d="m636.12 496.38h-13.549"></path><path d="m636.12 509.29h-13.549"></path><path d="m636.12 522.2h-13.549"></path><path d="m635.61 793.36h-13.549"></path></g></g></g><g transform="translate(203.35,-14.18)" clip-path="url(#clipPath1354)" stroke-linecap="round"><path d="m673.43 370.93v445.71" fill="#333" stroke="#414141" stroke-width="15"></path><path d="m673.43 370.93v445.71" fill="#454545" stroke="#494949" stroke-width="14.545"></path><path d="m673.43 370.93v445.71" fill="#585858" stroke="#515151" stroke-width="14.091"></path><path d="m673.43 370.93v445.71" fill="#6a6a6a" stroke="#595959" stroke-width="13.636"></path><path d="m673.43 370.93v445.71" fill="#7d7d7d" stroke="#616161" stroke-width="13.182"></path><path d="m673.43 370.93v445.71" fill="#8f8f8f" stroke="#696969" stroke-width="12.727"></path><path d="m673.43 370.93v445.71" fill="#a2a2a2" stroke="#717171" stroke-width="12.273"></path><path d="m673.43 370.93v445.71" fill="#b4b4b4" stroke="#797979" stroke-width="11.818"></path><path d="m673.43 370.93v445.71" fill="#c7c7c7" stroke="#818181" stroke-width="11.364"></path><path d="m673.43 370.93v445.71" fill="#d9d9d9" stroke="#898989" stroke-width="10.909"></path><path d="m673.43 370.93v445.71" fill="#ececec" stroke="#919191" stroke-width="10.455"></path><path d="m673.43 370.93v445.71" fill="#fff" stroke="#9a9a9a" stroke-width="10"></path></g><g stroke-linecap="round"><path d="m876.78 356.75v445.71" clip-path="url(#clipPath1350)" fill="#333" stroke="#414141" stroke-width="15"></path><path d="m882.99 802.47v-445.18" clip-path="url(#clipPath1346)" fill="#999" stroke="#b1b1b1" stroke-width=".6"></path><path d="m876.78 356.75v445.71" clip-path="url(#clipPath1342)" fill="#fff" opacity=".50896" stroke="url(#linearGradient7468)" stroke-width="12"></path></g><g transform="translate(-1.3202,15.152)" clip-path="url(#clipPath1338)"><path transform="matrix(.53231 0 0 .99811 560.96 12.701)" d="m649.84 478.85v126.27l31.315-18.94s-35.355-47.982 0-83.338c-27.779-21.466-31.315-23.991-31.315-23.991z" fill="#a1a1a1" filter="url(#filter4165-1)"></path><path d="m890.45 497.09h34.461" fill="#e6e6e6" stroke="#b4b4b4" stroke-linecap="round" stroke-width="3.5"></path><rect x="847.03" y="488.03" width="62.143" height="129.29" rx="3" ry="3" fill="#4d4d4d"></rect><rect x="847.97" y="552.42" width="60.419" height="3.5355" fill="#e6e6e6"></rect><rect x="847.72" y="488.74" width="60.613" height="21.071" rx="2.1483" ry="2" fill="url(#linearGradient7718)"></rect><rect x="847.92" y="540.26" width="58.811" height="10.119" fill="#333"></rect><rect x="847.03" y="530.89" width="61.133" height="8.7929" fill="#333"></rect><rect x="847.03" y="512.48" width="61.133" height="4.5457" fill="#1a1a1a"></rect><rect x="847.03" y="518.25" width="61.133" height="11.364" fill="#1a1a1a"></rect><rect transform="scale(1,-1)" x="847.72" y="-511.76" width="60.012" height="2.2612" rx="1.0235" ry=".63958" fill="url(#linearGradient7720)"></rect><rect x="847.89" y="517.03" width="58.633" height="1.1452" rx="1" ry=".3239" fill="url(#linearGradient7722)"></rect><rect x="847.89" y="529.76" width="58.633" height=".9666" rx="1" ry=".2734" fill="url(#linearGradient7724)"></rect><rect x="847.89" y="539.01" width="58.633" height=".60946" rx="1" ry=".17238" fill="url(#linearGradient7726)"></rect><rect transform="scale(1,-1)" x="847.34" y="-616.24" width="61.118" height="20.321" rx="2.1662" ry="1.9288" fill="url(#linearGradient7728)"></rect><rect transform="scale(1,-1)" x="847.92" y="-567.93" width="58.811" height="9.7593" fill="#333"></rect><rect transform="scale(1,-1)" x="847.03" y="-576.96" width="61.133" height="8.4799" fill="#666"></rect><rect transform="scale(1,-1)" x="847.03" y="-594.72" width="61.133" height="4.3839" fill="#808080"></rect><rect transform="scale(1,-1)" x="847.03" y="-589.16" width="61.133" height="10.96" fill="#808080"></rect><rect transform="scale(1,-1)" x="847.34" y="-597.6" width="60.767" height="2.1808" rx="1.0364" ry=".61681" fill="url(#linearGradient7730)"></rect><rect transform="scale(1,-1)" x="847.89" y="-590.84" width="60.24" height="1.1044" rx="1.0274" ry=".31237" fill="url(#linearGradient7732)"></rect><rect transform="scale(1,-1)" x="847.89" y="-578.82" width="59.883" height=".9322" rx="1.0213" ry=".26366" fill="url(#linearGradient7734)"></rect><rect transform="scale(1,-1)" x="847.89" y="-569.52" width="59.347" height=".58776" rx="1.0122" ry=".16624" fill="url(#linearGradient7736)"></rect></g><g transform="translate(406.7,-14.18)" clip-path="url(#clipPath1334)" stroke-linecap="round"><path d="m673.43 370.93v445.71" fill="#333" stroke="#414141" stroke-width="15"></path><path d="m673.43 370.93v445.71" fill="#454545" stroke="#494949" stroke-width="14.545"></path><path d="m673.43 370.93v445.71" fill="#585858" stroke="#515151" stroke-width="14.091"></path><path d="m673.43 370.93v445.71" fill="#6a6a6a" stroke="#595959" stroke-width="13.636"></path><path d="m673.43 370.93v445.71" fill="#7d7d7d" stroke="#616161" stroke-width="13.182"></path><path d="m673.43 370.93v445.71" fill="#8f8f8f" stroke="#696969" stroke-width="12.727"></path><path d="m673.43 370.93v445.71" fill="#a2a2a2" stroke="#717171" stroke-width="12.273"></path><path d="m673.43 370.93v445.71" fill="#b4b4b4" stroke="#797979" stroke-width="11.818"></path><path d="m673.43 370.93v445.71" fill="#c7c7c7" stroke="#818181" stroke-width="11.364"></path><path d="m673.43 370.93v445.71" fill="#d9d9d9" stroke="#898989" stroke-width="10.909"></path><path d="m673.43 370.93v445.71" fill="#ececec" stroke="#919191" stroke-width="10.455"></path><path d="m673.43 370.93v445.71" fill="#fff" stroke="#9a9a9a" stroke-width="10"></path></g><g stroke-linecap="round"><path d="m1080.1 356.75v445.71" clip-path="url(#clipPath1330)" fill="#333" stroke="#414141" stroke-width="15"></path><path d="m1086.3 802.47v-445.18" clip-path="url(#clipPath1326)" fill="#999" stroke="#b1b1b1" stroke-width=".6"></path><path d="m1080.1 356.75v445.71" clip-path="url(#clipPath1322)" fill="#fff" opacity=".50896" stroke="url(#linearGradient7341)" stroke-width="12"></path></g><g clip-path="url(#clipPath1318)"><path transform="matrix(.53231 0 0 .99811 762.99 -72.147)" d="m649.84 478.85v126.27l31.315-18.94s-35.355-47.982 0-83.338c-27.779-21.466-31.315-23.991-31.315-23.991z" fill="#a1a1a1" filter="url(#filter4165-4)"></path><path d="m1092.5 412.25h34.461" fill="#e6e6e6" stroke="#b4b4b4" stroke-linecap="round" stroke-width="3.5"></path><rect x="1049.1" y="403.18" width="62.143" height="129.29" rx="3" ry="3" fill="#4d4d4d"></rect><rect x="1050" y="467.57" width="60.419" height="3.5355" fill="#e6e6e6"></rect><rect x="1049.8" y="403.9" width="60.613" height="21.071" rx="2.1483" ry="2" fill="url(#linearGradient7738)"></rect><rect x="1050" y="455.41" width="58.811" height="10.119" fill="#333"></rect><rect x="1049.1" y="446.05" width="61.133" height="8.7929" fill="#333"></rect><rect x="1049.1" y="427.63" width="61.133" height="4.5457" fill="#1a1a1a"></rect><rect x="1049.1" y="433.4" width="61.133" height="11.364" fill="#1a1a1a"></rect><rect transform="scale(1,-1)" x="1049.8" y="-426.91" width="60.012" height="2.2612" rx="1.0235" ry=".63958" fill="url(#linearGradient7740)"></rect><rect x="1049.9" y="432.19" width="58.633" height="1.1452" rx="1" ry=".3239" fill="url(#linearGradient7742)"></rect><rect x="1049.9" y="444.91" width="58.633" height=".9666" rx="1" ry=".2734" fill="url(#linearGradient7744)"></rect><rect x="1049.9" y="454.16" width="58.633" height=".60946" rx="1" ry=".17238" fill="url(#linearGradient7746)"></rect><rect transform="scale(1,-1)" x="1049.4" y="-531.39" width="61.118" height="20.321" rx="2.1662" ry="1.9288" fill="url(#linearGradient7748)"></rect><rect transform="scale(1,-1)" x="1050" y="-483.08" width="58.811" height="9.7593" fill="#333"></rect><rect transform="scale(1,-1)" x="1049.1" y="-492.12" width="61.133" height="8.4799" fill="#666"></rect><rect transform="scale(1,-1)" x="1049.1" y="-509.88" width="61.133" height="4.3839" fill="#808080"></rect><rect transform="scale(1,-1)" x="1049.1" y="-504.31" width="61.133" height="10.96" fill="#808080"></rect><rect transform="scale(1,-1)" x="1049.4" y="-512.75" width="60.767" height="2.1808" rx="1.0364" ry=".61681" fill="url(#linearGradient7750)"></rect><rect transform="scale(1,-1)" x="1049.9" y="-505.99" width="60.24" height="1.1044" rx="1.0274" ry=".31237" fill="url(#linearGradient7752)"></rect><rect transform="scale(1,-1)" x="1049.9" y="-493.97" width="59.883" height=".9322" rx="1.0213" ry=".26366" fill="url(#linearGradient7754)"></rect><rect transform="scale(1,-1)" x="1049.9" y="-484.67" width="59.347" height=".58776" rx="1.0122" ry=".16624" fill="url(#linearGradient7756)"></rect></g></g>', 2)
696
- ])]);
697
- }
698
- const Ct = /* @__PURE__ */ u(wt, [["render", bt]]), Gt = w({
699
- name: "VAFader",
700
- components: {
701
- defaultFaderHead: vt,
702
- defaultFaderBackground: Ct
703
- },
704
- emits: ["update:modelValue"],
705
- setup(t) {
706
- const e = y(new M(t.minValue, t.maxValue)), a = y(0), r = y(t.modelValue), i = y(e.value.getCurvedValue(t.modelValue)), s = y(0), o = y(void 0);
707
- return {
708
- valueCurve: e,
709
- faderContainerY: a,
710
- linearValue: r,
711
- curvedValue: i,
712
- // faderContainer,
713
- // faderBackground,
714
- // faderHead,
715
- faderHeadHeight: s,
716
- resizeObserver: o
717
- };
718
- },
719
- props: {
720
- modelValue: {
721
- required: !0,
722
- type: Number
723
- },
724
- minValue: {
725
- required: !0,
726
- type: Number
727
- },
728
- maxValue: {
729
- required: !0,
730
- type: Number
731
- },
732
- height: {
733
- required: !1,
734
- type: Number,
735
- default: 200
736
- },
737
- width: {
738
- required: !1,
739
- type: Number,
740
- default: 46
741
- },
742
- default: {
743
- required: !1,
744
- type: Number
745
- }
746
- },
747
- computed: {
748
- midValue() {
749
- return this.minValue + this.valueRange / 2;
750
- },
751
- valueRange() {
752
- return this.maxValue - this.minValue;
753
- },
754
- faderDragRange() {
755
- return Math.abs(this.height - this.faderHeadHeight);
756
- },
757
- faderHeadTop() {
758
- const t = (this.linearValue - this.minValue) / (this.maxValue - this.minValue);
759
- return this.faderDragRange - t * this.faderDragRange;
760
- },
761
- cssVars() {
762
- return {
763
- "--fader-height": `${this.height}px`,
764
- "--fader-width": `${this.width}px`,
765
- "--fader-head-top": `${this.faderHeadTop}px`
766
- };
767
- }
768
- },
769
- mounted() {
770
- this.resizeObserver = new ResizeObserver((t, e) => {
771
- this.faderHeadHeight = this.getFaderHeadHeight();
772
- }), this.resizeObserver.observe(this.$refs.faderHead);
773
- },
774
- unmounted() {
775
- this.resizeObserver?.disconnect();
776
- },
777
- methods: {
778
- getContainedImgOrSvg(t) {
779
- if (t.children.length == 1) {
780
- if (t.children.item(0) instanceof SVGElement)
781
- return t.children.item(0);
782
- if (t.children.item(0) instanceof HTMLImageElement)
783
- return t.children.item(0);
784
- }
785
- },
786
- getFaderHeadHeight() {
787
- const t = this.$refs.faderHead, e = this.getContainedImgOrSvg(t);
788
- return e ? e.getBoundingClientRect().height : t.getBoundingClientRect().height;
789
- },
790
- onHeadMouseDown(t) {
791
- t.preventDefault(), this.faderContainerY = this.$refs.faderContainer.getBoundingClientRect().y, this.faderHeadHeight = this.getFaderHeadHeight(), document.addEventListener("mousemove", this.onHeadMouseDrag), document.addEventListener("touchmove", this.onHeadTouchDrag), document.addEventListener("mouseup", this.onDocumentMouseUp), document.addEventListener("touchend", this.onDocumentMouseUp);
792
- },
793
- onDocumentMouseUp() {
794
- document.removeEventListener("mousemove", this.onHeadMouseDrag), document.removeEventListener("touchmove", this.onHeadTouchDrag), document.removeEventListener("mouseup", this.onDocumentMouseUp), document.removeEventListener("touchend", this.onDocumentMouseUp);
795
- },
796
- onHeadDblClick() {
797
- const t = typeof this.default > "u" ? this.midValue : this.default;
798
- this.$emit("update:modelValue", this.valueCurve.getCurvedValue(t));
799
- },
800
- onHeadDrag(t) {
801
- let e = t - this.faderContainerY;
802
- e > this.height ? e = this.height : e < 0 && (e = 0);
803
- const r = (this.height - e) / this.height * this.valueRange + this.minValue;
804
- this.$emit(
805
- "update:modelValue",
806
- this.valueCurve.getCurvedValue(r)
807
- );
808
- },
809
- onHeadTouchDrag(t) {
810
- t.touches[0] && this.onHeadDrag(t.touches[0].clientY);
811
- },
812
- onHeadMouseDrag(t) {
813
- this.onHeadDrag(t.clientY);
814
- }
815
- },
816
- watch: {
817
- modelValue(t) {
818
- this.curvedValue = t, this.linearValue = this.valueCurve.getLinearValue(this.curvedValue);
819
- },
820
- minValue(t) {
821
- this.valueCurve = new M(t, this.maxValue);
822
- },
823
- maxValue(t) {
824
- this.valueCurve = new M(this.minValue, t);
825
- }
826
- }
827
- }), St = {
828
- ref: "faderBackground",
829
- class: "fader-background"
830
- };
831
- function Mt(t, e, a, r, i, s) {
832
- const o = G("defaultFaderBackground"), h = G("defaultFaderHead");
833
- return c(), p("div", {
834
- ref: "faderContainer",
835
- class: "fader-container",
836
- style: S(t.cssVars)
837
- }, [
838
- n("div", St, [
839
- U(t.$slots, "faderBackground", {}, () => [
840
- k(o)
841
- ], !0)
842
- ], 512),
843
- n("div", {
844
- ref: "faderHead",
845
- class: "fader-head",
846
- onMousedown: e[0] || (e[0] = (...g) => t.onHeadMouseDown && t.onHeadMouseDown(...g)),
847
- onTouchstart: e[1] || (e[1] = (...g) => t.onHeadMouseDown && t.onHeadMouseDown(...g)),
848
- onDblclick: e[2] || (e[2] = (...g) => t.onHeadDblClick && t.onHeadDblClick(...g))
849
- }, [
850
- U(t.$slots, "faderHead", {}, () => [
851
- k(h)
852
- ], !0)
853
- ], 544)
854
- ], 4);
855
- }
856
- const Vt = /* @__PURE__ */ u(Gt, [["render", Mt], ["__scopeId", "data-v-9d74edfd"]]), Dt = {}, Ut = {
857
- width: "50",
858
- height: "50",
859
- viewBox: "0 0 100 100"
860
- };
861
- function zt(t, e) {
862
- return c(), p("svg", Ut, [...e[0] || (e[0] = [
863
- V(`<g data-v-3cef4f4a><g data-v-3cef4f4a><circle class="st0" cx="50%" cy="50%" r="50%" data-v-3cef4f4a></circle><g transform="translate(-20 -20)" data-v-3cef4f4a><g transform="translate(0 -6)" data-v-3cef4f4a><path d="M109.4,78.2c-2.3-2.5-4-5.6-4.6-9c-0.7-3.5-0.5-6.9,0.6-10.2c-2.2-4.6-5.3-8.6-9.2-11.9c-3.3,0.2-6.8-0.4-10-2
864
- s-5.8-4-7.7-6.7c-5.1-1-10.2-1.1-15-0.2c-1.9,2.8-4.6,5.1-7.8,6.6s-6.7,2.1-10.1,1.7c-3.8,3.1-7.1,7.1-9.5,11.6
865
- c0.9,3.2,1.1,6.7,0.4,10.2c-0.9,3.5-2.6,6.5-5,8.9c0.1,5.1,1.1,10.1,3.1,14.6c3.1,1.2,5.9,3.2,8.2,6.2c2.2,2.8,3.5,6.2,4,9.4
866
- c4,3,8.4,5.3,13.5,6.7c2.9-1.6,6.3-2.6,9.9-2.6s6.9,1,9.9,2.8c4.8-1.1,9.5-3.3,13.6-6.4c0.6-3.3,1.9-6.5,4.2-9.3
867
- c2.3-2.8,5.2-4.7,8.4-5.9c1-2.2,1.9-4.6,2.5-7.1C109.1,83.4,109.3,80.7,109.4,78.2z" data-v-3cef4f4a></path></g><ellipse class="st1" cx="70.4" cy="70.4" rx="26.7" ry="26.7" data-v-3cef4f4a></ellipse><g transform="translate(0 -8)" data-v-3cef4f4a><path class="st2" d="M71.5,28.5c-0.4,0-0.9,0-1.1,0c-0.3,0-0.9,0-1.1,0v31h2.5v-31H71.5z" data-v-3cef4f4a></path></g></g></g></g>`, 1)
868
- ])]);
869
- }
870
- const $t = /* @__PURE__ */ u(Dt, [["render", zt], ["__scopeId", "data-v-3cef4f4a"]]), Wt = w({
871
- components: {
872
- defaultKnob: $t
873
- },
874
- setup(t) {
875
- const e = {
876
- curvedValue: 0,
877
- linearValue: 0,
878
- unsteppedValue: 0,
879
- rotationMax: 3 * Math.PI / 4,
880
- dragRange: 70,
881
- prevY: -1,
882
- valueCurve: new M(t.minValue, t.maxValue)
883
- // audioParamValue: null as AudioParam | null
884
- };
885
- return t.modelValue instanceof Number && (e.linearValue = t.modelValue, e.curvedValue = e.valueCurve.getCurvedValue(t.modelValue), e.unsteppedValue = e.curvedValue), F(e);
886
- },
887
- props: {
888
- modelValue: {
889
- required: !0,
890
- type: Number
891
- },
892
- minValue: {
893
- required: !0,
894
- type: Number
895
- },
896
- maxValue: {
897
- required: !0,
898
- type: Number
899
- },
900
- step: {
901
- required: !1,
902
- type: Number,
903
- default: 0
904
- },
905
- size: {
906
- required: !1,
907
- type: Number,
908
- default: 60
909
- },
910
- default: {
911
- required: !1,
912
- type: Number
913
- }
914
- },
915
- computed: {
916
- knobRotation() {
917
- return (this.linearValue - this.midValue) / (this.valueRange / 2) * this.rotationMax;
918
- },
919
- midValue() {
920
- return this.minValue + this.valueRange / 2;
921
- },
922
- valueRange() {
923
- return this.maxValue - this.minValue;
924
- }
925
- },
926
- methods: {
927
- onKnobMouseDown(t) {
928
- t.preventDefault(), document.addEventListener("mousemove", this.onKnobMouseDrag), document.addEventListener("touchmove", this.onKnobTouchDrag), document.addEventListener("mouseup", this.onDocumentMouseUp), document.addEventListener("touchend", this.onDocumentMouseUp);
929
- },
930
- onDocumentMouseUp() {
931
- document.removeEventListener("mousemove", this.onKnobMouseDrag), document.removeEventListener("touchmove", this.onKnobTouchDrag), document.removeEventListener("mouseup", this.onDocumentMouseUp), document.removeEventListener("touchend", this.onDocumentMouseUp), this.prevY = -1;
932
- },
933
- onKnobDblClick() {
934
- const t = typeof this.default > "u" ? this.midValue : this.default;
935
- this.unsteppedValue = t, this.$emit("update:modelValue", this.valueCurve.getCurvedValue(t));
936
- },
937
- roundToStep(t) {
938
- if (this.step === 0)
939
- throw "step is zero or undefined";
940
- const e = Math.round(t / this.step) * this.step;
941
- return e < this.minValue ? this.minValue : e > this.maxValue ? this.maxValue : e;
942
- },
943
- onKnobDrag(t) {
944
- if (this.prevY >= 0) {
945
- const e = this.prevY - t;
946
- let a = this.unsteppedValue + e / this.dragRange * (this.valueRange / 2);
947
- a = a > this.maxValue ? this.maxValue : a < this.minValue ? this.minValue : a, this.unsteppedValue = a;
948
- const r = this.step === 0 ? this.unsteppedValue : this.roundToStep(this.unsteppedValue);
949
- this.$emit(
950
- "update:modelValue",
951
- this.valueCurve.getCurvedValue(r)
952
- );
953
- }
954
- },
955
- onKnobTouchDrag(t) {
956
- t.touches[0] && (this.onKnobDrag(t.touches[0].pageY), this.prevY = t.touches[0].pageY);
957
- },
958
- onKnobMouseDrag(t) {
959
- this.onKnobDrag(t.pageY), this.prevY = t.pageY;
960
- }
961
- },
962
- watch: {
963
- modelValue(t) {
964
- this.curvedValue = t, this.unsteppedValue = this.valueCurve.getLinearValue(this.curvedValue), this.linearValue = this.step === 0 ? this.unsteppedValue : this.roundToStep(this.unsteppedValue);
965
- }
966
- }
967
- }), Tt = { class: "control-container" }, Pt = { class: "knob-row" };
968
- function Ht(t, e, a, r, i, s) {
969
- const o = G("default-knob");
970
- return c(), p("div", Tt, [
971
- n("div", Pt, [
972
- n("span", {
973
- onMousedown: e[0] || (e[0] = (...h) => t.onKnobMouseDown && t.onKnobMouseDown(...h)),
974
- onTouchstart: e[1] || (e[1] = (...h) => t.onKnobMouseDown && t.onKnobMouseDown(...h)),
975
- onDblclick: e[2] || (e[2] = (...h) => t.onKnobDblClick && t.onKnobDblClick(...h)),
976
- class: "knob-container",
977
- style: S(`transform: rotate(${t.knobRotation}rad); width: ${t.size}px; height: ${t.size}px;`)
978
- }, [
979
- U(t.$slots, "default", {}, () => [
980
- k(o)
981
- ], !0)
982
- ], 36)
983
- ])
984
- ]);
985
- }
986
- const At = /* @__PURE__ */ u(Wt, [["render", Ht], ["__scopeId", "data-v-775457f1"]]), b = 20, C = -120, qt = 3, It = w({
987
- name: "VASpectrumAnalyzer",
988
- data() {
989
- return {
990
- continueDrawing: !1,
991
- canvas: null,
992
- canvasContext: null
993
- };
994
- },
995
- props: {
996
- input: {
997
- required: !1,
998
- type: AudioNode
999
- },
1000
- fftSize: {
1001
- type: Number,
1002
- required: !1,
1003
- default: 1024
1004
- },
1005
- fillStyle: {
1006
- type: String,
1007
- required: !1,
1008
- default: "none"
1009
- },
1010
- lineColor: {
1011
- type: String,
1012
- required: !1,
1013
- default: "black"
1014
- },
1015
- backgroundColor: {
1016
- type: String,
1017
- required: !1,
1018
- default: "white"
1019
- },
1020
- gridColor: {
1021
- type: String,
1022
- required: !1,
1023
- default: "gray"
1024
- },
1025
- borderColor: {
1026
- type: String,
1027
- required: !1,
1028
- default: "black"
1029
- },
1030
- height: {
1031
- type: Number,
1032
- required: !1,
1033
- default: -1
1034
- },
1035
- width: {
1036
- type: Number,
1037
- required: !1,
1038
- default: 1200
1039
- },
1040
- font: {
1041
- required: !1,
1042
- type: String,
1043
- default: "Helvetica, sans-serif"
1044
- }
1045
- },
1046
- setup(t) {
1047
- const e = T(t.fftSize, t.input);
1048
- return W(() => t.input, e.onInputChanged), {
1049
- ...e,
1050
- ...P()
1051
- };
1052
- },
1053
- computed: {
1054
- graphWidth() {
1055
- return this.width;
1056
- },
1057
- graphHeight() {
1058
- return this.height < 0 ? this.width / qt : this.height;
1059
- },
1060
- cssVars() {
1061
- return {
1062
- "--border-color": `${this.borderColor}`
1063
- };
1064
- }
1065
- },
1066
- mounted() {
1067
- this.canvasContext = this.$refs.analyserCanvas.getContext("2d"), this.startRendering(this.drawFrequencyDomain);
1068
- },
1069
- methods: {
1070
- scaleX(t, e, a, r) {
1071
- const i = 0.30111412225233364;
1072
- let s = (a - e) / a;
1073
- s *= 1 - i, s = 1 - s;
1074
- let o = (t - e) / (a - e);
1075
- return o = Math.pow(o, s), o < 1 && (o *= r), o;
1076
- },
1077
- scaleXLegacy(t, e, a, r) {
1078
- return Math.floor(
1079
- Math.log2(t - e) / Math.log2(a - e) * r
1080
- );
1081
- },
1082
- drawFrequencyDomain() {
1083
- if (this.canvasContext) {
1084
- const t = 0 - C, e = this.input ? this.input.context.sampleRate / 2 : 24e3, a = this.getFloatFrequencyData();
1085
- if (this.canvasContext.clearRect(0, 0, this.graphWidth, this.graphHeight), this.canvasContext.fillStyle = this.backgroundColor, this.canvasContext.fillRect(0, 0, this.graphWidth, this.graphHeight), a) {
1086
- this.canvasContext.beginPath(), this.canvasContext.lineWidth = 1, this.canvasContext.strokeStyle = this.lineColor, this.canvasContext.fillStyle = this.lineColor, this.canvasContext.moveTo(0, this.graphHeight);
1087
- let r = 0, i = this.graphHeight - (a[0] - C) / t * this.graphHeight;
1088
- for (let s = 0; s < a.length; s++) {
1089
- const o = (a[s] - C) / t * this.graphHeight, h = s * (e / a.length);
1090
- this.canvasContext.lineTo(r, i), h >= b && (r = this.scaleX(h, b, e, this.graphWidth), i = this.graphHeight - o, this.fillStyle === "lines" && this.canvasContext.fillRect(r, i, 1, o)), this.canvasContext.lineTo(r, i);
1091
- }
1092
- this.canvasContext.lineTo(this.graphWidth, this.graphHeight), this.canvasContext.closePath(), this.canvasContext.stroke(), this.fillStyle === "solid" && this.canvasContext.fill();
1093
- }
1094
- this.drawDbMarkers(), this.drawFrequencyMarkers(e);
1095
- }
1096
- },
1097
- drawDbMarkers() {
1098
- this.drawDbMarker(-20), this.drawDbMarker(-40), this.drawDbMarker(-60), this.drawDbMarker(-80), this.drawDbMarker(-100);
1099
- },
1100
- drawDbMarker(t) {
1101
- if (this.canvasContext) {
1102
- const e = this.graphHeight - (C - t) / C * this.graphHeight;
1103
- this.canvasContext.strokeStyle = this.gridColor, this.canvasContext.beginPath(), this.canvasContext.moveTo(0, e), this.canvasContext.lineTo(this.graphWidth, e), this.canvasContext.stroke(), this.canvasContext.font = `12px ${this.font}`, this.canvasContext.fillStyle = this.gridColor, this.canvasContext.fillText(`${t}db`, 10, e);
1104
- }
1105
- },
1106
- drawFrequencyMarkers(t) {
1107
- this.drawFrequencyMarker(
1108
- b,
1109
- t,
1110
- this.graphWidth > 300,
1111
- !1
1112
- ), this.drawFrequencyMarker(25, t), this.drawFrequencyMarker(50, t, !0), this.drawFrequencyMarker(100, t), this.drawFrequencyMarker(200, t, this.graphWidth > 600), this.drawFrequencyMarker(500, t, this.graphWidth > 300), this.drawFrequencyMarker(1e3, t, this.graphWidth > 600), this.drawFrequencyMarker(1500, t), this.drawFrequencyMarker(2e3, t, !0), this.drawFrequencyMarker(3e3, t, this.graphWidth > 600), this.drawFrequencyMarker(5e3, t, this.graphWidth > 300), this.drawFrequencyMarker(7e3, t, this.graphWidth > 600), this.drawFrequencyMarker(1e4, t, !0), this.drawFrequencyMarker(15e3, t, this.graphWidth > 600), this.drawFrequencyMarker(2e4, t, this.graphWidth > 800);
1113
- },
1114
- drawFrequencyMarker(t, e, a = !1, r = !0) {
1115
- if (this.canvasContext && t >= b) {
1116
- const i = this.scaleX(t, b, e, this.graphWidth);
1117
- r && (this.canvasContext.strokeStyle = this.gridColor, this.canvasContext.beginPath(), this.canvasContext.moveTo(i, 0), this.canvasContext.lineTo(i, this.graphWidth), this.canvasContext.stroke()), a && (this.canvasContext.font = `14px ${this.font}`, this.canvasContext.fillStyle = this.lineColor, t < 1e3 ? this.canvasContext.fillText(`${t}hz`, i, 50) : this.canvasContext.fillText(`${t / 1e3}khz`, i, 50));
1118
- }
1119
- }
1120
- }
1121
- }), Rt = ["width", "height"];
1122
- function Ot(t, e, a, r, i, s) {
1123
- return c(), p("canvas", {
1124
- width: t.graphWidth,
1125
- height: t.graphHeight,
1126
- ref: "analyserCanvas",
1127
- class: "analyser-canvas",
1128
- style: S(t.cssVars)
1129
- }, null, 12, Rt);
1130
- }
1131
- const Ft = /* @__PURE__ */ u(It, [["render", Ot], ["__scopeId", "data-v-8be4064b"]]), Lt = w({
1132
- Name: "VAToggleButton",
1133
- props: {
1134
- color: {
1135
- required: !1,
1136
- type: String,
1137
- default: "red"
1138
- },
1139
- label: {
1140
- require: !1,
1141
- type: String,
1142
- default: ""
1143
- }
1144
- },
1145
- setup(t) {
1146
- const e = y(!1), a = H(() => ({
1147
- "--on-color": `${t.color}`
1148
- }));
1149
- function r() {
1150
- e.value = !e.value;
1151
- }
1152
- return { on: e, cssVars: a, onButtonClick: r };
1153
- }
1154
- });
1155
- function Nt(t, e, a, r, i, s) {
1156
- return c(), p("button", {
1157
- onClick: e[0] || (e[0] = (...o) => t.onButtonClick && t.onButtonClick(...o)),
1158
- class: L([t.on ? "button-on" : "button-off", "button"]),
1159
- style: S(t.cssVars)
1160
- }, m(t.label), 7);
1161
- }
1162
- const Et = /* @__PURE__ */ u(Lt, [["render", Nt], ["__scopeId", "data-v-87a8a5ae"]]), Bt = {
1163
- // test,
1164
- VAAnalogMeterStereo: _,
1165
- VAAnalogMeter: J,
1166
- VAAudioFileVisualizer: ot,
1167
- VADigitalMeterStereo: dt,
1168
- VADigitalMeter: mt,
1169
- VAFader: Vt,
1170
- VAKnob: At,
1171
- VASpectrumAnalyzer: Ft,
1172
- VAToggleButton: Et
1173
- }, Yt = function(e) {
1174
- Object.entries(Bt).forEach(([a, r]) => {
1175
- e.component(a, r);
1176
- });
1177
- };
1178
- export {
1179
- J as VAAnalogMeter,
1180
- _ as VAAnalogMeterStereo,
1181
- ot as VAAudioFileVisualizer,
1182
- mt as VADigitalMeter,
1183
- dt as VADigitalMeterStereo,
1184
- Vt as VAFader,
1185
- At as VAKnob,
1186
- Ft as VASpectrumAnalyzer,
1187
- Et as VAToggleButton,
1188
- Yt as default
1189
- };