audio-mixer-ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +205 -0
- package/dist/choir-mixer-ui.js +1640 -0
- package/dist/choir-mixer-ui.umd.cjs +1 -0
- package/dist/style.css +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,1640 @@
|
|
|
1
|
+
import { ref as T, watch as D, unref as C, onScopeDispose as Fe, readonly as Se, mergeModels as me, useCssVars as F, computed as g, useTemplateRef as U, useModel as z, createElementBlock as _, openBlock as y, normalizeClass as w, createElementVNode as m, createCommentVNode as pe, Fragment as ve, renderList as fe, normalizeStyle as Ue, renderSlot as be, toDisplayString as I, onUnmounted as ge, watchEffect as ke, onMounted as Ve, createVNode as k, withCtx as N, createTextVNode as ye, resolveDirective as qe, withDirectives as re, withKeys as We, vModelText as Oe, createBlock as _e } from "vue";
|
|
2
|
+
import { defineStore as Me } from "pinia";
|
|
3
|
+
var Ie = function() {
|
|
4
|
+
if (typeof Map < "u")
|
|
5
|
+
return Map;
|
|
6
|
+
function e(t, a) {
|
|
7
|
+
var n = -1;
|
|
8
|
+
return t.some(function(s, i) {
|
|
9
|
+
return s[0] === a ? (n = i, !0) : !1;
|
|
10
|
+
}), n;
|
|
11
|
+
}
|
|
12
|
+
return (
|
|
13
|
+
/** @class */
|
|
14
|
+
function() {
|
|
15
|
+
function t() {
|
|
16
|
+
this.__entries__ = [];
|
|
17
|
+
}
|
|
18
|
+
return Object.defineProperty(t.prototype, "size", {
|
|
19
|
+
/**
|
|
20
|
+
* @returns {boolean}
|
|
21
|
+
*/
|
|
22
|
+
get: function() {
|
|
23
|
+
return this.__entries__.length;
|
|
24
|
+
},
|
|
25
|
+
enumerable: !0,
|
|
26
|
+
configurable: !0
|
|
27
|
+
}), t.prototype.get = function(a) {
|
|
28
|
+
var n = e(this.__entries__, a), s = this.__entries__[n];
|
|
29
|
+
return s && s[1];
|
|
30
|
+
}, t.prototype.set = function(a, n) {
|
|
31
|
+
var s = e(this.__entries__, a);
|
|
32
|
+
~s ? this.__entries__[s][1] = n : this.__entries__.push([a, n]);
|
|
33
|
+
}, t.prototype.delete = function(a) {
|
|
34
|
+
var n = this.__entries__, s = e(n, a);
|
|
35
|
+
~s && n.splice(s, 1);
|
|
36
|
+
}, t.prototype.has = function(a) {
|
|
37
|
+
return !!~e(this.__entries__, a);
|
|
38
|
+
}, t.prototype.clear = function() {
|
|
39
|
+
this.__entries__.splice(0);
|
|
40
|
+
}, t.prototype.forEach = function(a, n) {
|
|
41
|
+
n === void 0 && (n = null);
|
|
42
|
+
for (var s = 0, i = this.__entries__; s < i.length; s++) {
|
|
43
|
+
var l = i[s];
|
|
44
|
+
a.call(n, l[1], l[0]);
|
|
45
|
+
}
|
|
46
|
+
}, t;
|
|
47
|
+
}()
|
|
48
|
+
);
|
|
49
|
+
}(), de = typeof window < "u" && typeof document < "u" && window.document === document, ie = function() {
|
|
50
|
+
return typeof global < "u" && global.Math === Math ? global : typeof self < "u" && self.Math === Math ? self : typeof window < "u" && window.Math === Math ? window : Function("return this")();
|
|
51
|
+
}(), He = function() {
|
|
52
|
+
return typeof requestAnimationFrame == "function" ? requestAnimationFrame.bind(ie) : function(e) {
|
|
53
|
+
return setTimeout(function() {
|
|
54
|
+
return e(Date.now());
|
|
55
|
+
}, 1e3 / 60);
|
|
56
|
+
};
|
|
57
|
+
}(), je = 2;
|
|
58
|
+
function Ge(e, t) {
|
|
59
|
+
var a = !1, n = !1, s = 0;
|
|
60
|
+
function i() {
|
|
61
|
+
a && (a = !1, e()), n && h();
|
|
62
|
+
}
|
|
63
|
+
function l() {
|
|
64
|
+
He(i);
|
|
65
|
+
}
|
|
66
|
+
function h() {
|
|
67
|
+
var u = Date.now();
|
|
68
|
+
if (a) {
|
|
69
|
+
if (u - s < je)
|
|
70
|
+
return;
|
|
71
|
+
n = !0;
|
|
72
|
+
} else
|
|
73
|
+
a = !0, n = !1, setTimeout(l, t);
|
|
74
|
+
s = u;
|
|
75
|
+
}
|
|
76
|
+
return h;
|
|
77
|
+
}
|
|
78
|
+
var Ze = 20, Ke = ["top", "right", "bottom", "left", "width", "height", "size", "weight"], Ye = typeof MutationObserver < "u", Qe = (
|
|
79
|
+
/** @class */
|
|
80
|
+
function() {
|
|
81
|
+
function e() {
|
|
82
|
+
this.connected_ = !1, this.mutationEventsAdded_ = !1, this.mutationsObserver_ = null, this.observers_ = [], this.onTransitionEnd_ = this.onTransitionEnd_.bind(this), this.refresh = Ge(this.refresh.bind(this), Ze);
|
|
83
|
+
}
|
|
84
|
+
return e.prototype.addObserver = function(t) {
|
|
85
|
+
~this.observers_.indexOf(t) || this.observers_.push(t), this.connected_ || this.connect_();
|
|
86
|
+
}, e.prototype.removeObserver = function(t) {
|
|
87
|
+
var a = this.observers_, n = a.indexOf(t);
|
|
88
|
+
~n && a.splice(n, 1), !a.length && this.connected_ && this.disconnect_();
|
|
89
|
+
}, e.prototype.refresh = function() {
|
|
90
|
+
var t = this.updateObservers_();
|
|
91
|
+
t && this.refresh();
|
|
92
|
+
}, e.prototype.updateObservers_ = function() {
|
|
93
|
+
var t = this.observers_.filter(function(a) {
|
|
94
|
+
return a.gatherActive(), a.hasActive();
|
|
95
|
+
});
|
|
96
|
+
return t.forEach(function(a) {
|
|
97
|
+
return a.broadcastActive();
|
|
98
|
+
}), t.length > 0;
|
|
99
|
+
}, e.prototype.connect_ = function() {
|
|
100
|
+
!de || this.connected_ || (document.addEventListener("transitionend", this.onTransitionEnd_), window.addEventListener("resize", this.refresh), Ye ? (this.mutationsObserver_ = new MutationObserver(this.refresh), this.mutationsObserver_.observe(document, {
|
|
101
|
+
attributes: !0,
|
|
102
|
+
childList: !0,
|
|
103
|
+
characterData: !0,
|
|
104
|
+
subtree: !0
|
|
105
|
+
})) : (document.addEventListener("DOMSubtreeModified", this.refresh), this.mutationEventsAdded_ = !0), this.connected_ = !0);
|
|
106
|
+
}, e.prototype.disconnect_ = function() {
|
|
107
|
+
!de || !this.connected_ || (document.removeEventListener("transitionend", this.onTransitionEnd_), window.removeEventListener("resize", this.refresh), this.mutationsObserver_ && this.mutationsObserver_.disconnect(), this.mutationEventsAdded_ && document.removeEventListener("DOMSubtreeModified", this.refresh), this.mutationsObserver_ = null, this.mutationEventsAdded_ = !1, this.connected_ = !1);
|
|
108
|
+
}, e.prototype.onTransitionEnd_ = function(t) {
|
|
109
|
+
var a = t.propertyName, n = a === void 0 ? "" : a, s = Ke.some(function(i) {
|
|
110
|
+
return !!~n.indexOf(i);
|
|
111
|
+
});
|
|
112
|
+
s && this.refresh();
|
|
113
|
+
}, e.getInstance = function() {
|
|
114
|
+
return this.instance_ || (this.instance_ = new e()), this.instance_;
|
|
115
|
+
}, e.instance_ = null, e;
|
|
116
|
+
}()
|
|
117
|
+
), Le = function(e, t) {
|
|
118
|
+
for (var a = 0, n = Object.keys(t); a < n.length; a++) {
|
|
119
|
+
var s = n[a];
|
|
120
|
+
Object.defineProperty(e, s, {
|
|
121
|
+
value: t[s],
|
|
122
|
+
enumerable: !1,
|
|
123
|
+
writable: !1,
|
|
124
|
+
configurable: !0
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return e;
|
|
128
|
+
}, Q = function(e) {
|
|
129
|
+
var t = e && e.ownerDocument && e.ownerDocument.defaultView;
|
|
130
|
+
return t || ie;
|
|
131
|
+
}, Ae = ue(0, 0, 0, 0);
|
|
132
|
+
function oe(e) {
|
|
133
|
+
return parseFloat(e) || 0;
|
|
134
|
+
}
|
|
135
|
+
function xe(e) {
|
|
136
|
+
for (var t = [], a = 1; a < arguments.length; a++)
|
|
137
|
+
t[a - 1] = arguments[a];
|
|
138
|
+
return t.reduce(function(n, s) {
|
|
139
|
+
var i = e["border-" + s + "-width"];
|
|
140
|
+
return n + oe(i);
|
|
141
|
+
}, 0);
|
|
142
|
+
}
|
|
143
|
+
function Xe(e) {
|
|
144
|
+
for (var t = ["top", "right", "bottom", "left"], a = {}, n = 0, s = t; n < s.length; n++) {
|
|
145
|
+
var i = s[n], l = e["padding-" + i];
|
|
146
|
+
a[i] = oe(l);
|
|
147
|
+
}
|
|
148
|
+
return a;
|
|
149
|
+
}
|
|
150
|
+
function Je(e) {
|
|
151
|
+
var t = e.getBBox();
|
|
152
|
+
return ue(0, 0, t.width, t.height);
|
|
153
|
+
}
|
|
154
|
+
function et(e) {
|
|
155
|
+
var t = e.clientWidth, a = e.clientHeight;
|
|
156
|
+
if (!t && !a)
|
|
157
|
+
return Ae;
|
|
158
|
+
var n = Q(e).getComputedStyle(e), s = Xe(n), i = s.left + s.right, l = s.top + s.bottom, h = oe(n.width), u = oe(n.height);
|
|
159
|
+
if (n.boxSizing === "border-box" && (Math.round(h + i) !== t && (h -= xe(n, "left", "right") + i), Math.round(u + l) !== a && (u -= xe(n, "top", "bottom") + l)), !at(e)) {
|
|
160
|
+
var r = Math.round(h + i) - t, c = Math.round(u + l) - a;
|
|
161
|
+
Math.abs(r) !== 1 && (h -= r), Math.abs(c) !== 1 && (u -= c);
|
|
162
|
+
}
|
|
163
|
+
return ue(s.left, s.top, h, u);
|
|
164
|
+
}
|
|
165
|
+
var tt = /* @__PURE__ */ function() {
|
|
166
|
+
return typeof SVGGraphicsElement < "u" ? function(e) {
|
|
167
|
+
return e instanceof Q(e).SVGGraphicsElement;
|
|
168
|
+
} : function(e) {
|
|
169
|
+
return e instanceof Q(e).SVGElement && typeof e.getBBox == "function";
|
|
170
|
+
};
|
|
171
|
+
}();
|
|
172
|
+
function at(e) {
|
|
173
|
+
return e === Q(e).document.documentElement;
|
|
174
|
+
}
|
|
175
|
+
function nt(e) {
|
|
176
|
+
return de ? tt(e) ? Je(e) : et(e) : Ae;
|
|
177
|
+
}
|
|
178
|
+
function st(e) {
|
|
179
|
+
var t = e.x, a = e.y, n = e.width, s = e.height, i = typeof DOMRectReadOnly < "u" ? DOMRectReadOnly : Object, l = Object.create(i.prototype);
|
|
180
|
+
return Le(l, {
|
|
181
|
+
x: t,
|
|
182
|
+
y: a,
|
|
183
|
+
width: n,
|
|
184
|
+
height: s,
|
|
185
|
+
top: a,
|
|
186
|
+
right: t + n,
|
|
187
|
+
bottom: s + a,
|
|
188
|
+
left: t
|
|
189
|
+
}), l;
|
|
190
|
+
}
|
|
191
|
+
function ue(e, t, a, n) {
|
|
192
|
+
return { x: e, y: t, width: a, height: n };
|
|
193
|
+
}
|
|
194
|
+
var rt = (
|
|
195
|
+
/** @class */
|
|
196
|
+
function() {
|
|
197
|
+
function e(t) {
|
|
198
|
+
this.broadcastWidth = 0, this.broadcastHeight = 0, this.contentRect_ = ue(0, 0, 0, 0), this.target = t;
|
|
199
|
+
}
|
|
200
|
+
return e.prototype.isActive = function() {
|
|
201
|
+
var t = nt(this.target);
|
|
202
|
+
return this.contentRect_ = t, t.width !== this.broadcastWidth || t.height !== this.broadcastHeight;
|
|
203
|
+
}, e.prototype.broadcastRect = function() {
|
|
204
|
+
var t = this.contentRect_;
|
|
205
|
+
return this.broadcastWidth = t.width, this.broadcastHeight = t.height, t;
|
|
206
|
+
}, e;
|
|
207
|
+
}()
|
|
208
|
+
), it = (
|
|
209
|
+
/** @class */
|
|
210
|
+
/* @__PURE__ */ function() {
|
|
211
|
+
function e(t, a) {
|
|
212
|
+
var n = st(a);
|
|
213
|
+
Le(this, { target: t, contentRect: n });
|
|
214
|
+
}
|
|
215
|
+
return e;
|
|
216
|
+
}()
|
|
217
|
+
), ot = (
|
|
218
|
+
/** @class */
|
|
219
|
+
function() {
|
|
220
|
+
function e(t, a, n) {
|
|
221
|
+
if (this.activeObservations_ = [], this.observations_ = new Ie(), typeof t != "function")
|
|
222
|
+
throw new TypeError("The callback provided as parameter 1 is not a function.");
|
|
223
|
+
this.callback_ = t, this.controller_ = a, this.callbackCtx_ = n;
|
|
224
|
+
}
|
|
225
|
+
return e.prototype.observe = function(t) {
|
|
226
|
+
if (!arguments.length)
|
|
227
|
+
throw new TypeError("1 argument required, but only 0 present.");
|
|
228
|
+
if (!(typeof Element > "u" || !(Element instanceof Object))) {
|
|
229
|
+
if (!(t instanceof Q(t).Element))
|
|
230
|
+
throw new TypeError('parameter 1 is not of type "Element".');
|
|
231
|
+
var a = this.observations_;
|
|
232
|
+
a.has(t) || (a.set(t, new rt(t)), this.controller_.addObserver(this), this.controller_.refresh());
|
|
233
|
+
}
|
|
234
|
+
}, e.prototype.unobserve = function(t) {
|
|
235
|
+
if (!arguments.length)
|
|
236
|
+
throw new TypeError("1 argument required, but only 0 present.");
|
|
237
|
+
if (!(typeof Element > "u" || !(Element instanceof Object))) {
|
|
238
|
+
if (!(t instanceof Q(t).Element))
|
|
239
|
+
throw new TypeError('parameter 1 is not of type "Element".');
|
|
240
|
+
var a = this.observations_;
|
|
241
|
+
a.has(t) && (a.delete(t), a.size || this.controller_.removeObserver(this));
|
|
242
|
+
}
|
|
243
|
+
}, e.prototype.disconnect = function() {
|
|
244
|
+
this.clearActive(), this.observations_.clear(), this.controller_.removeObserver(this);
|
|
245
|
+
}, e.prototype.gatherActive = function() {
|
|
246
|
+
var t = this;
|
|
247
|
+
this.clearActive(), this.observations_.forEach(function(a) {
|
|
248
|
+
a.isActive() && t.activeObservations_.push(a);
|
|
249
|
+
});
|
|
250
|
+
}, e.prototype.broadcastActive = function() {
|
|
251
|
+
if (this.hasActive()) {
|
|
252
|
+
var t = this.callbackCtx_, a = this.activeObservations_.map(function(n) {
|
|
253
|
+
return new it(n.target, n.broadcastRect());
|
|
254
|
+
});
|
|
255
|
+
this.callback_.call(t, a, t), this.clearActive();
|
|
256
|
+
}
|
|
257
|
+
}, e.prototype.clearActive = function() {
|
|
258
|
+
this.activeObservations_.splice(0);
|
|
259
|
+
}, e.prototype.hasActive = function() {
|
|
260
|
+
return this.activeObservations_.length > 0;
|
|
261
|
+
}, e;
|
|
262
|
+
}()
|
|
263
|
+
), Re = typeof WeakMap < "u" ? /* @__PURE__ */ new WeakMap() : new Ie(), Ne = (
|
|
264
|
+
/** @class */
|
|
265
|
+
/* @__PURE__ */ function() {
|
|
266
|
+
function e(t) {
|
|
267
|
+
if (!(this instanceof e))
|
|
268
|
+
throw new TypeError("Cannot call a class as a function.");
|
|
269
|
+
if (!arguments.length)
|
|
270
|
+
throw new TypeError("1 argument required, but only 0 present.");
|
|
271
|
+
var a = Qe.getInstance(), n = new ot(t, a, this);
|
|
272
|
+
Re.set(this, n);
|
|
273
|
+
}
|
|
274
|
+
return e;
|
|
275
|
+
}()
|
|
276
|
+
);
|
|
277
|
+
[
|
|
278
|
+
"observe",
|
|
279
|
+
"unobserve",
|
|
280
|
+
"disconnect"
|
|
281
|
+
].forEach(function(e) {
|
|
282
|
+
Ne.prototype[e] = function() {
|
|
283
|
+
var t;
|
|
284
|
+
return (t = Re.get(this))[e].apply(t, arguments);
|
|
285
|
+
};
|
|
286
|
+
});
|
|
287
|
+
var lt = function() {
|
|
288
|
+
return typeof ie.ResizeObserver < "u" ? ie.ResizeObserver : Ne;
|
|
289
|
+
}();
|
|
290
|
+
function q(e) {
|
|
291
|
+
const t = T(0), a = T(0);
|
|
292
|
+
let n = null;
|
|
293
|
+
const s = () => {
|
|
294
|
+
n && (n.disconnect(), n = null);
|
|
295
|
+
};
|
|
296
|
+
return D(() => C(e), () => {
|
|
297
|
+
s();
|
|
298
|
+
const l = C(e);
|
|
299
|
+
if (!l) return;
|
|
300
|
+
n = new lt((u) => {
|
|
301
|
+
const r = u[0];
|
|
302
|
+
r && (t.value = r.contentRect.width, a.value = r.contentRect.height);
|
|
303
|
+
}), n.observe(l);
|
|
304
|
+
const h = l.getBoundingClientRect();
|
|
305
|
+
t.value = h.width, a.value = h.height;
|
|
306
|
+
}, { immediate: !0 }), Fe(s), {
|
|
307
|
+
width: Se(t),
|
|
308
|
+
height: Se(a)
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
const L = (e, t) => {
|
|
312
|
+
const a = e.__vccOpts || e;
|
|
313
|
+
for (const [n, s] of t)
|
|
314
|
+
a[n] = s;
|
|
315
|
+
return a;
|
|
316
|
+
}, ut = {
|
|
317
|
+
key: 0,
|
|
318
|
+
class: "level"
|
|
319
|
+
}, ct = {
|
|
320
|
+
__name: "AudioSlider",
|
|
321
|
+
props: /* @__PURE__ */ me({
|
|
322
|
+
min: { type: Number, default: 0 },
|
|
323
|
+
max: { type: Number, default: 1 },
|
|
324
|
+
step: { type: Number, default: 0.01 },
|
|
325
|
+
colour: { type: String, default: "grey" },
|
|
326
|
+
style: { type: String, default: "volume" },
|
|
327
|
+
thumbLength: { type: Number, default: 1 },
|
|
328
|
+
showLevel: { type: Boolean, default: !1 },
|
|
329
|
+
level: { type: Number, default: 0.5 }
|
|
330
|
+
}, {
|
|
331
|
+
value: { default: 0.75 },
|
|
332
|
+
valueModifiers: {}
|
|
333
|
+
}),
|
|
334
|
+
emits: ["update:value"],
|
|
335
|
+
setup(e) {
|
|
336
|
+
F((v) => ({
|
|
337
|
+
"3d436468": f.value,
|
|
338
|
+
"345b6e65": b.value,
|
|
339
|
+
"3327b972": W.value,
|
|
340
|
+
"5ae48cf2": x.value,
|
|
341
|
+
"01a7bd27": P.value
|
|
342
|
+
}));
|
|
343
|
+
const t = e, a = U("root"), { width: n, height: s } = q(a), i = g(() => Math.min(n.value, s.value)), l = g(() => Math.max(n.value, s.value)), h = g(() => n.value > s.value), u = g(() => h.value ? "h-slide" : "v-slide"), r = z(e, "value"), c = g(() => i.value * 0.8), p = g(() => i.value * t.thumbLength * 0.8), b = g(() => (h.value ? p : c).value + "px"), f = g(() => (h.value ? c : p).value + "px"), x = g(() => i.value * 0.1 + "px"), P = g(() => (l.value - p.value) * (r.value - t.min) / (t.max - t.min) + "px"), W = g(() => h.value ? "90deg" : "0deg"), B = T(!1), H = T(0), R = (v) => {
|
|
344
|
+
if (!a.value) return r.value;
|
|
345
|
+
const O = a.value.getBoundingClientRect(), G = v.touches ? v.touches[0].clientX : v.clientX, ce = v.touches ? v.touches[0].clientY : v.clientY;
|
|
346
|
+
let Z;
|
|
347
|
+
if (h.value) {
|
|
348
|
+
const K = G - O.left - c.value / 2, ee = O.width - c.value;
|
|
349
|
+
Z = Math.max(0, Math.min(1, K / ee));
|
|
350
|
+
} else {
|
|
351
|
+
const K = O.bottom - ce - c.value / 2, ee = O.height - c.value;
|
|
352
|
+
Z = Math.max(0, Math.min(1, K / ee));
|
|
353
|
+
}
|
|
354
|
+
const se = t.min + Z * (t.max - t.min);
|
|
355
|
+
return t.step > 0 ? Math.round(se / t.step) * t.step : se;
|
|
356
|
+
}, J = (v) => {
|
|
357
|
+
v.preventDefault(), B.value = !0, H.value = r.value, r.value = R(v), a.value && a.value.setPointerCapture && a.value.setPointerCapture(v.pointerId), document.addEventListener("mousemove", $), document.addEventListener("mouseup", j);
|
|
358
|
+
}, $ = (v) => {
|
|
359
|
+
B.value && (v.preventDefault(), r.value = R(v));
|
|
360
|
+
}, j = (v) => {
|
|
361
|
+
if (B.value) {
|
|
362
|
+
if (v.preventDefault(), B.value = !1, a.value && a.value.releasePointerCapture)
|
|
363
|
+
try {
|
|
364
|
+
a.value.releasePointerCapture(v.pointerId);
|
|
365
|
+
} catch {
|
|
366
|
+
}
|
|
367
|
+
document.removeEventListener("mousemove", $), document.removeEventListener("mouseup", j);
|
|
368
|
+
}
|
|
369
|
+
}, M = (v) => {
|
|
370
|
+
v.preventDefault(), v.touches.length === 1 && (B.value = !0, H.value = r.value, r.value = R(v), document.addEventListener("touchmove", S, { passive: !1 }), document.addEventListener("touchend", V), document.addEventListener("touchcancel", V));
|
|
371
|
+
}, S = (v) => {
|
|
372
|
+
B.value && (v.preventDefault(), v.touches.length === 1 && (r.value = R(v)));
|
|
373
|
+
}, V = (v) => {
|
|
374
|
+
B.value && (v.preventDefault(), B.value = !1, document.removeEventListener("touchmove", S), document.removeEventListener("touchend", V), document.removeEventListener("touchcancel", V));
|
|
375
|
+
}, A = (v) => Math.min(1, Math.max(0, t.level * 10 - v + 1));
|
|
376
|
+
return (v, O) => (y(), _("div", {
|
|
377
|
+
class: w(u.value),
|
|
378
|
+
ref_key: "root",
|
|
379
|
+
ref: a,
|
|
380
|
+
onMousedown: J,
|
|
381
|
+
onTouchstart: M,
|
|
382
|
+
style: { userSelect: "none", touchAction: "none" }
|
|
383
|
+
}, [
|
|
384
|
+
O[0] || (O[0] = m("div", { class: "track" }, null, -1)),
|
|
385
|
+
e.showLevel ? (y(), _("div", ut, [
|
|
386
|
+
(y(), _(ve, null, fe(10, (G) => m("div", {
|
|
387
|
+
class: w(["led", "led" + G])
|
|
388
|
+
}, [
|
|
389
|
+
m("div", {
|
|
390
|
+
class: "on",
|
|
391
|
+
style: Ue({ opacity: A(G) })
|
|
392
|
+
}, null, 4)
|
|
393
|
+
], 2)), 64))
|
|
394
|
+
])) : pe("", !0),
|
|
395
|
+
m("div", {
|
|
396
|
+
class: w(["thumb", { dragging: B.value, [e.colour]: !0, [e.style]: !0 }])
|
|
397
|
+
}, null, 2)
|
|
398
|
+
], 34));
|
|
399
|
+
}
|
|
400
|
+
}, le = /* @__PURE__ */ L(ct, [["__scopeId", "data-v-1580ed15"]]), dt = {
|
|
401
|
+
__name: "TitleText",
|
|
402
|
+
props: {
|
|
403
|
+
align: {
|
|
404
|
+
type: String,
|
|
405
|
+
default: "left"
|
|
406
|
+
}
|
|
407
|
+
},
|
|
408
|
+
setup(e) {
|
|
409
|
+
F((h) => ({
|
|
410
|
+
"5fddb56d": l.value
|
|
411
|
+
}));
|
|
412
|
+
const t = U("el"), { width: a, height: n } = q(t), s = g(() => Math.min(a.value, n.value)), i = g(() => a.value > n.value ? "h-text" : "v-text"), l = g(() => s.value * 3 / 4 + "px");
|
|
413
|
+
return (h, u) => (y(), _("div", {
|
|
414
|
+
ref_key: "el",
|
|
415
|
+
ref: t,
|
|
416
|
+
class: "outer"
|
|
417
|
+
}, [
|
|
418
|
+
m("div", {
|
|
419
|
+
class: w({ [i.value]: !0, [e.align]: !0 })
|
|
420
|
+
}, [
|
|
421
|
+
be(h.$slots, "default", {}, void 0, !0)
|
|
422
|
+
], 2)
|
|
423
|
+
], 512));
|
|
424
|
+
}
|
|
425
|
+
}, De = /* @__PURE__ */ L(dt, [["__scopeId", "data-v-3ce29e77"]]), ht = {
|
|
426
|
+
__name: "TriState",
|
|
427
|
+
props: {
|
|
428
|
+
mute: { default: !1 },
|
|
429
|
+
muteModifiers: {},
|
|
430
|
+
solo: { default: !1 },
|
|
431
|
+
soloModifiers: {}
|
|
432
|
+
},
|
|
433
|
+
emits: ["update:mute", "update:solo"],
|
|
434
|
+
setup(e) {
|
|
435
|
+
const t = z(e, "mute"), a = z(e, "solo"), n = U("outer"), { width: s, height: i } = q(n), l = g(() => s.value > i.value * 1.9);
|
|
436
|
+
function h() {
|
|
437
|
+
t.value = !t.value, a.value = !1;
|
|
438
|
+
}
|
|
439
|
+
function u() {
|
|
440
|
+
a.value = !a.value, t.value = !1;
|
|
441
|
+
}
|
|
442
|
+
return (r, c) => (y(), _("div", {
|
|
443
|
+
class: "outer",
|
|
444
|
+
ref_key: "outer",
|
|
445
|
+
ref: n
|
|
446
|
+
}, [
|
|
447
|
+
m("div", {
|
|
448
|
+
class: w(["solo", { on: a.value }]),
|
|
449
|
+
onClick: u
|
|
450
|
+
}, null, 2),
|
|
451
|
+
m("div", {
|
|
452
|
+
class: "s-label",
|
|
453
|
+
onClick: u
|
|
454
|
+
}, I(l.value ? "SOLO" : "S"), 1),
|
|
455
|
+
m("div", {
|
|
456
|
+
class: w(["mute", { on: t.value }]),
|
|
457
|
+
onClick: h
|
|
458
|
+
}, null, 2),
|
|
459
|
+
m("div", {
|
|
460
|
+
class: "m-label",
|
|
461
|
+
onClick: h
|
|
462
|
+
}, I(l.value ? "MUTE" : "M"), 1)
|
|
463
|
+
], 512));
|
|
464
|
+
}
|
|
465
|
+
}, mt = /* @__PURE__ */ L(ht, [["__scopeId", "data-v-143eade0"]]), he = {
|
|
466
|
+
// Enable development UI features (animations, random data, etc.)
|
|
467
|
+
enabled: !1,
|
|
468
|
+
// Specific feature flags
|
|
469
|
+
features: {
|
|
470
|
+
// Show beat animation in BarInput component
|
|
471
|
+
beatAnimation: !0,
|
|
472
|
+
// Show random level indicators on part controls
|
|
473
|
+
randomLevelIndicators: !0,
|
|
474
|
+
// Enable other debug/dev features as needed
|
|
475
|
+
debugMode: !1
|
|
476
|
+
}
|
|
477
|
+
}, ea = () => he.enabled, $e = (e) => he.enabled && he.features[e], X = Me("audioState", {
|
|
478
|
+
state: () => ({
|
|
479
|
+
// Playback state
|
|
480
|
+
isPlaying: !1,
|
|
481
|
+
currentTime: 0,
|
|
482
|
+
playbackSpeed: 1,
|
|
483
|
+
// Musical position
|
|
484
|
+
currentBar: 1,
|
|
485
|
+
currentBeat: 1,
|
|
486
|
+
currentRepeat: 0,
|
|
487
|
+
// Volume controls
|
|
488
|
+
masterVolume: 0.75,
|
|
489
|
+
partVolumes: {},
|
|
490
|
+
partMuted: {},
|
|
491
|
+
// Transport features
|
|
492
|
+
isLeadInActive: !1,
|
|
493
|
+
isStartingNotesActive: !1,
|
|
494
|
+
leadInBars: 1
|
|
495
|
+
}),
|
|
496
|
+
getters: {
|
|
497
|
+
// Format current time as MM:SS
|
|
498
|
+
formattedTime: (e) => {
|
|
499
|
+
const t = Math.floor(e.currentTime / 60), a = Math.floor(e.currentTime % 60);
|
|
500
|
+
return `${t}:${a.toString().padStart(2, "0")}`;
|
|
501
|
+
},
|
|
502
|
+
// Get volume for a specific part
|
|
503
|
+
getPartVolume: (e) => (t) => e.partVolumes[t] ?? 0.75,
|
|
504
|
+
// Check if part is muted
|
|
505
|
+
isPartMuted: (e) => (t) => e.partMuted[t] ?? !1,
|
|
506
|
+
// Current musical position as string
|
|
507
|
+
currentPosition: (e) => {
|
|
508
|
+
let t = `${e.currentBar}.${e.currentBeat}`;
|
|
509
|
+
return e.currentRepeat > 0 && (t += ` (R${e.currentRepeat})`), t;
|
|
510
|
+
}
|
|
511
|
+
},
|
|
512
|
+
actions: {
|
|
513
|
+
// Playback state updates
|
|
514
|
+
setPlaybackState(e) {
|
|
515
|
+
this.isPlaying = e;
|
|
516
|
+
},
|
|
517
|
+
setCurrentTime(e) {
|
|
518
|
+
this.currentTime = e;
|
|
519
|
+
},
|
|
520
|
+
setPlaybackSpeed(e) {
|
|
521
|
+
this.playbackSpeed = e;
|
|
522
|
+
},
|
|
523
|
+
// Musical position updates
|
|
524
|
+
setCurrentBar(e, t = 1, a = 0) {
|
|
525
|
+
this.currentBar = e, this.currentBeat = t, this.currentRepeat = a;
|
|
526
|
+
},
|
|
527
|
+
// Volume controls
|
|
528
|
+
setMasterVolume(e) {
|
|
529
|
+
this.masterVolume = Math.max(0, Math.min(1, e));
|
|
530
|
+
},
|
|
531
|
+
setPartVolume(e, t) {
|
|
532
|
+
this.partVolumes[e] = Math.max(0, Math.min(1, t));
|
|
533
|
+
},
|
|
534
|
+
setPartMuted(e, t) {
|
|
535
|
+
this.partMuted[e] = t;
|
|
536
|
+
},
|
|
537
|
+
// Transport features
|
|
538
|
+
setLeadInActive(e, t = 1) {
|
|
539
|
+
this.isLeadInActive = e, this.leadInBars = t;
|
|
540
|
+
},
|
|
541
|
+
setStartingNotesActive(e) {
|
|
542
|
+
this.isStartingNotesActive = e;
|
|
543
|
+
},
|
|
544
|
+
// Initialize part states
|
|
545
|
+
initializeParts(e) {
|
|
546
|
+
e.forEach((t) => {
|
|
547
|
+
t.name in this.partVolumes || (this.partVolumes[t.name] = t.volume || 0.75), t.name in this.partMuted || (this.partMuted[t.name] = !1);
|
|
548
|
+
});
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
}), ae = Me("musicData", {
|
|
552
|
+
state: () => ({
|
|
553
|
+
// Musical structure
|
|
554
|
+
beats: [],
|
|
555
|
+
practiceMarks: {},
|
|
556
|
+
parts: [],
|
|
557
|
+
title: "",
|
|
558
|
+
// Timing calculations
|
|
559
|
+
totalDuration: 0,
|
|
560
|
+
maxBar: 0,
|
|
561
|
+
// Metadata
|
|
562
|
+
timeSignature: 4,
|
|
563
|
+
baseTempo: 80
|
|
564
|
+
}),
|
|
565
|
+
getters: {
|
|
566
|
+
// Get time for a specific bar and repeat
|
|
567
|
+
getTimeFromBar: (e) => (t, a = 0) => {
|
|
568
|
+
const n = e.beats.find(
|
|
569
|
+
(s) => s.bar === t && s.beat === 1 && s.repeat === a
|
|
570
|
+
);
|
|
571
|
+
return n ? n.time : null;
|
|
572
|
+
},
|
|
573
|
+
// Get bar info from time
|
|
574
|
+
getBarFromTime: (e) => (t) => {
|
|
575
|
+
if (!e.beats || e.beats.length === 0) return null;
|
|
576
|
+
let a = null;
|
|
577
|
+
for (let n = e.beats.length - 1; n >= 0; n--)
|
|
578
|
+
if (e.beats[n].time <= t) {
|
|
579
|
+
a = e.beats[n];
|
|
580
|
+
break;
|
|
581
|
+
}
|
|
582
|
+
return a ? {
|
|
583
|
+
bar: a.bar,
|
|
584
|
+
beat: a.beat,
|
|
585
|
+
repeat: a.repeat,
|
|
586
|
+
tempo: a.tempo,
|
|
587
|
+
timeSig: a.timeSig
|
|
588
|
+
} : null;
|
|
589
|
+
},
|
|
590
|
+
// Get practice mark letters as array
|
|
591
|
+
practiceMarkLetters: (e) => Object.keys(e.practiceMarks).sort(),
|
|
592
|
+
// Get bar number for practice mark
|
|
593
|
+
getBarForMark: (e) => (t) => e.practiceMarks[t],
|
|
594
|
+
// Get all unique bar numbers
|
|
595
|
+
allBars: (e) => {
|
|
596
|
+
const t = /* @__PURE__ */ new Set();
|
|
597
|
+
return e.beats.forEach((a) => {
|
|
598
|
+
a.beat === 1 && t.add(a.bar);
|
|
599
|
+
}), Array.from(t).sort((a, n) => a - n);
|
|
600
|
+
},
|
|
601
|
+
// Check if a bar has repeats
|
|
602
|
+
hasRepeats: (e) => (t) => e.beats.some((a) => a.bar === t && a.repeat > 0)
|
|
603
|
+
},
|
|
604
|
+
actions: {
|
|
605
|
+
// Load musical data
|
|
606
|
+
loadMusicData(e) {
|
|
607
|
+
this.title = e.title || "Untitled", this.beats = e.beats || [], this.practiceMarks = e.practiceMarks || e.marks || {}, this.parts = e.parts || [], this.calculateDuration(), this.calculateMaxBar(), this.extractTimeSignature();
|
|
608
|
+
},
|
|
609
|
+
// Calculate total duration from beats
|
|
610
|
+
calculateDuration() {
|
|
611
|
+
this.beats.length > 0 && (this.totalDuration = Math.max(...this.beats.map((e) => e.time)));
|
|
612
|
+
},
|
|
613
|
+
// Find the highest bar number
|
|
614
|
+
calculateMaxBar() {
|
|
615
|
+
this.beats.length > 0 && (this.maxBar = Math.max(...this.beats.map((e) => e.bar)));
|
|
616
|
+
},
|
|
617
|
+
// Extract time signature from first beat
|
|
618
|
+
extractTimeSignature() {
|
|
619
|
+
this.beats.length > 0 && this.beats[0].timeSig && (this.timeSignature = this.beats[0].timeSig), this.beats.length > 0 && this.beats[0].tempo && (this.baseTempo = this.beats[0].tempo);
|
|
620
|
+
},
|
|
621
|
+
// Update practice marks
|
|
622
|
+
setPracticeMark(e, t) {
|
|
623
|
+
this.practiceMarks[e] = t;
|
|
624
|
+
},
|
|
625
|
+
removePracticeMark(e) {
|
|
626
|
+
delete this.practiceMarks[e];
|
|
627
|
+
},
|
|
628
|
+
// Validate bar number
|
|
629
|
+
isValidBar(e, t = 0) {
|
|
630
|
+
return this.beats.some((a) => a.bar === e && a.repeat === t);
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
}), pt = Me("playbackState", {
|
|
634
|
+
state: () => ({
|
|
635
|
+
// Transport state
|
|
636
|
+
transportState: "stopped",
|
|
637
|
+
// 'stopped', 'playing', 'paused'
|
|
638
|
+
// Navigation preferences
|
|
639
|
+
autoPlay: !1,
|
|
640
|
+
loopEnabled: !1,
|
|
641
|
+
loopStart: 1,
|
|
642
|
+
loopEnd: null,
|
|
643
|
+
// Lead-in settings
|
|
644
|
+
leadInEnabled: !0,
|
|
645
|
+
leadInBars: 1,
|
|
646
|
+
// Starting notes settings
|
|
647
|
+
startingNotesEnabled: !0,
|
|
648
|
+
startingNotesSequential: !0,
|
|
649
|
+
// Metronome settings
|
|
650
|
+
metronomeEnabled: !1,
|
|
651
|
+
metronomeVolume: 0.5,
|
|
652
|
+
// UI state
|
|
653
|
+
showTransportControls: !0,
|
|
654
|
+
showPartControls: !0,
|
|
655
|
+
showNavigationControls: !0,
|
|
656
|
+
// Last positions for convenience
|
|
657
|
+
lastBarPosition: 1,
|
|
658
|
+
lastPracticeMarkUsed: null
|
|
659
|
+
}),
|
|
660
|
+
getters: {
|
|
661
|
+
// Check if currently playing
|
|
662
|
+
isPlaying: (e) => e.transportState === "playing",
|
|
663
|
+
// Check if paused
|
|
664
|
+
isPaused: (e) => e.transportState === "paused",
|
|
665
|
+
// Check if stopped
|
|
666
|
+
isStopped: (e) => e.transportState === "stopped",
|
|
667
|
+
// Check if loop is configured
|
|
668
|
+
isLoopConfigured: (e) => e.loopEnabled && e.loopStart && e.loopEnd && e.loopEnd > e.loopStart,
|
|
669
|
+
// Get loop range as string
|
|
670
|
+
loopRange: (e) => !e.loopEnabled || !e.loopStart || !e.loopEnd ? null : `${e.loopStart}-${e.loopEnd}`
|
|
671
|
+
},
|
|
672
|
+
actions: {
|
|
673
|
+
// Transport controls
|
|
674
|
+
setTransportState(e) {
|
|
675
|
+
["stopped", "playing", "paused"].includes(e) && (this.transportState = e);
|
|
676
|
+
},
|
|
677
|
+
play() {
|
|
678
|
+
this.setTransportState("playing");
|
|
679
|
+
},
|
|
680
|
+
pause() {
|
|
681
|
+
this.setTransportState("paused");
|
|
682
|
+
},
|
|
683
|
+
stop() {
|
|
684
|
+
this.setTransportState("stopped");
|
|
685
|
+
},
|
|
686
|
+
// Navigation settings
|
|
687
|
+
setAutoPlay(e) {
|
|
688
|
+
this.autoPlay = e;
|
|
689
|
+
},
|
|
690
|
+
setLoop(e, t = null, a = null) {
|
|
691
|
+
this.loopEnabled = e, t !== null && (this.loopStart = t), a !== null && (this.loopEnd = a);
|
|
692
|
+
},
|
|
693
|
+
setLoopStart(e) {
|
|
694
|
+
this.loopStart = e, this.loopEnd && this.loopEnd <= e && (this.loopEnd = e + 4);
|
|
695
|
+
},
|
|
696
|
+
setLoopEnd(e) {
|
|
697
|
+
this.loopEnd = e, this.loopStart && this.loopStart >= e && (this.loopStart = Math.max(1, e - 4));
|
|
698
|
+
},
|
|
699
|
+
// Lead-in settings
|
|
700
|
+
setLeadInEnabled(e) {
|
|
701
|
+
this.leadInEnabled = e;
|
|
702
|
+
},
|
|
703
|
+
setLeadInBars(e) {
|
|
704
|
+
this.leadInBars = Math.max(1, Math.min(4, e));
|
|
705
|
+
},
|
|
706
|
+
// Starting notes settings
|
|
707
|
+
setStartingNotesEnabled(e) {
|
|
708
|
+
this.startingNotesEnabled = e;
|
|
709
|
+
},
|
|
710
|
+
setStartingNotesSequential(e) {
|
|
711
|
+
this.startingNotesSequential = e;
|
|
712
|
+
},
|
|
713
|
+
// Metronome settings
|
|
714
|
+
setMetronomeEnabled(e) {
|
|
715
|
+
this.metronomeEnabled = e;
|
|
716
|
+
},
|
|
717
|
+
setMetronomeVolume(e) {
|
|
718
|
+
this.metronomeVolume = Math.max(0, Math.min(1, e));
|
|
719
|
+
},
|
|
720
|
+
// UI visibility controls
|
|
721
|
+
setTransportControlsVisible(e) {
|
|
722
|
+
this.showTransportControls = e;
|
|
723
|
+
},
|
|
724
|
+
setPartControlsVisible(e) {
|
|
725
|
+
this.showPartControls = e;
|
|
726
|
+
},
|
|
727
|
+
setNavigationControlsVisible(e) {
|
|
728
|
+
this.showNavigationControls = e;
|
|
729
|
+
},
|
|
730
|
+
// Position tracking
|
|
731
|
+
updateLastBarPosition(e) {
|
|
732
|
+
this.lastBarPosition = e;
|
|
733
|
+
},
|
|
734
|
+
updateLastPracticeMarkUsed(e) {
|
|
735
|
+
this.lastPracticeMarkUsed = e;
|
|
736
|
+
},
|
|
737
|
+
// Reset to defaults
|
|
738
|
+
resetToDefaults() {
|
|
739
|
+
this.transportState = "stopped", this.autoPlay = !1, this.loopEnabled = !1, this.loopStart = 1, this.loopEnd = null, this.leadInEnabled = !0, this.leadInBars = 1, this.startingNotesEnabled = !0, this.startingNotesSequential = !0, this.metronomeEnabled = !1, this.metronomeVolume = 0.5;
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
});
|
|
743
|
+
function vt(e) {
|
|
744
|
+
return { all: e = e || /* @__PURE__ */ new Map(), on: function(t, a) {
|
|
745
|
+
var n = e.get(t);
|
|
746
|
+
n ? n.push(a) : e.set(t, [a]);
|
|
747
|
+
}, off: function(t, a) {
|
|
748
|
+
var n = e.get(t);
|
|
749
|
+
n && (a ? n.splice(n.indexOf(a) >>> 0, 1) : e.set(t, []));
|
|
750
|
+
}, emit: function(t, a) {
|
|
751
|
+
var n = e.get(t);
|
|
752
|
+
n && n.slice().map(function(s) {
|
|
753
|
+
s(a);
|
|
754
|
+
}), (n = e.get("*")) && n.slice().map(function(s) {
|
|
755
|
+
s(t, a);
|
|
756
|
+
});
|
|
757
|
+
} };
|
|
758
|
+
}
|
|
759
|
+
class ft {
|
|
760
|
+
constructor() {
|
|
761
|
+
this.eventBus = vt(), this.currentTime = 0, this.isPlaying = !1, this.playbackSpeed = 1, this.masterVolume = 0.75, this.parts = /* @__PURE__ */ new Map(), this.playbackTimer = null, this.lastTimestamp = 0;
|
|
762
|
+
}
|
|
763
|
+
// Initialize with musical data
|
|
764
|
+
initialize(t) {
|
|
765
|
+
if (this.musicData = t, this.beats = t.beats || [], this.practiceMarks = t.practiceMarks || {}, this.beats.length > 0) {
|
|
766
|
+
const a = this.beats[this.beats.length - 1], n = a.tempo > 0 ? 60 / a.tempo : 0.75;
|
|
767
|
+
this.songDuration = a.time + n, this.maxBar = Math.max(...this.beats.map((s) => s.bar));
|
|
768
|
+
} else
|
|
769
|
+
this.songDuration = 0, this.maxBar = 0;
|
|
770
|
+
t.parts && t.parts.forEach((a) => {
|
|
771
|
+
this.parts.set(a.name, {
|
|
772
|
+
name: a.name,
|
|
773
|
+
volume: a.volume || 0.75,
|
|
774
|
+
muted: !1
|
|
775
|
+
});
|
|
776
|
+
}), this.eventBus.emit("initialized", { parts: Array.from(this.parts.values()) });
|
|
777
|
+
}
|
|
778
|
+
// Transport controls
|
|
779
|
+
play() {
|
|
780
|
+
this.isPlaying || (this.isPlaying = !0, this.lastTimestamp = performance.now(), this.startPlaybackTimer(), this.eventBus.emit("playbackStateChanged", {
|
|
781
|
+
isPlaying: !0,
|
|
782
|
+
currentTime: this.currentTime
|
|
783
|
+
}));
|
|
784
|
+
}
|
|
785
|
+
stop() {
|
|
786
|
+
this.isPlaying && (this.isPlaying = !1, this.stopPlaybackTimer(), this.eventBus.emit("playbackStateChanged", {
|
|
787
|
+
isPlaying: !1,
|
|
788
|
+
currentTime: this.currentTime
|
|
789
|
+
}));
|
|
790
|
+
}
|
|
791
|
+
pause() {
|
|
792
|
+
this.stop();
|
|
793
|
+
}
|
|
794
|
+
// Time controls
|
|
795
|
+
setTime(t) {
|
|
796
|
+
this.currentTime = Math.max(0, t), this.eventBus.emit("timeChanged", { currentTime: this.currentTime });
|
|
797
|
+
const a = this.getBarFromTime(this.currentTime);
|
|
798
|
+
a && this.eventBus.emit("barChanged", a);
|
|
799
|
+
}
|
|
800
|
+
getCurrentTime() {
|
|
801
|
+
return this.currentTime;
|
|
802
|
+
}
|
|
803
|
+
// Musical navigation
|
|
804
|
+
setBar(t, a = 0) {
|
|
805
|
+
const n = this.getTimeFromBar(t, a);
|
|
806
|
+
n !== null && this.setTime(n);
|
|
807
|
+
}
|
|
808
|
+
goToPracticeMark(t) {
|
|
809
|
+
const a = this.practiceMarks[t];
|
|
810
|
+
a !== void 0 && (this.setBar(a), this.eventBus.emit("practiceMarkChanged", { mark: t, bar: a }));
|
|
811
|
+
}
|
|
812
|
+
// Speed control
|
|
813
|
+
setPlaybackSpeed(t) {
|
|
814
|
+
this.playbackSpeed = Math.max(0.25, Math.min(2, t)), this.eventBus.emit("speedChanged", { speed: this.playbackSpeed });
|
|
815
|
+
}
|
|
816
|
+
getPlaybackSpeed() {
|
|
817
|
+
return this.playbackSpeed;
|
|
818
|
+
}
|
|
819
|
+
// Volume controls
|
|
820
|
+
setMasterVolume(t) {
|
|
821
|
+
this.masterVolume = Math.max(0, Math.min(1, t)), this.eventBus.emit("masterVolumeChanged", { volume: this.masterVolume });
|
|
822
|
+
}
|
|
823
|
+
getMasterVolume() {
|
|
824
|
+
return this.masterVolume;
|
|
825
|
+
}
|
|
826
|
+
setPartVolume(t, a) {
|
|
827
|
+
const n = this.parts.get(t);
|
|
828
|
+
n && (n.volume = Math.max(0, Math.min(1, a)), this.eventBus.emit("partVolumeChanged", { partName: t, volume: n.volume }));
|
|
829
|
+
}
|
|
830
|
+
setPartMuted(t, a) {
|
|
831
|
+
const n = this.parts.get(t);
|
|
832
|
+
n && (n.muted = a, this.eventBus.emit("partMutedChanged", { partName: t, muted: a }));
|
|
833
|
+
}
|
|
834
|
+
getParts() {
|
|
835
|
+
return Array.from(this.parts.values());
|
|
836
|
+
}
|
|
837
|
+
// Special features (no-op for UI testing)
|
|
838
|
+
playLeadIn(t = 1) {
|
|
839
|
+
this.eventBus.emit("leadInStarted", { bars: t }), setTimeout(() => {
|
|
840
|
+
this.eventBus.emit("leadInCompleted");
|
|
841
|
+
}, 1e3 * t);
|
|
842
|
+
}
|
|
843
|
+
playStartingNotes() {
|
|
844
|
+
this.eventBus.emit("startingNotesStarted"), setTimeout(() => {
|
|
845
|
+
this.eventBus.emit("startingNotesCompleted");
|
|
846
|
+
}, 2e3);
|
|
847
|
+
}
|
|
848
|
+
// Event bus access
|
|
849
|
+
on(t, a) {
|
|
850
|
+
this.eventBus.on(t, a);
|
|
851
|
+
}
|
|
852
|
+
off(t, a) {
|
|
853
|
+
this.eventBus.off(t, a);
|
|
854
|
+
}
|
|
855
|
+
// Private methods
|
|
856
|
+
startPlaybackTimer() {
|
|
857
|
+
const t = () => {
|
|
858
|
+
if (!this.isPlaying) return;
|
|
859
|
+
const a = performance.now(), n = (a - this.lastTimestamp) / 1e3;
|
|
860
|
+
if (this.lastTimestamp = a, this.currentTime += n * this.playbackSpeed, this.songDuration > 0 && this.currentTime >= this.songDuration) {
|
|
861
|
+
this.stop(), this.eventBus.emit("songEnded", { finalTime: this.currentTime });
|
|
862
|
+
return;
|
|
863
|
+
}
|
|
864
|
+
this.eventBus.emit("timeChanged", { currentTime: this.currentTime });
|
|
865
|
+
const s = this.getBarFromTime(this.currentTime);
|
|
866
|
+
if (s && (this.eventBus.emit("barChanged", s), this.maxBar > 0 && s.bar > this.maxBar)) {
|
|
867
|
+
this.stop(), this.eventBus.emit("songEnded", { finalTime: this.currentTime });
|
|
868
|
+
return;
|
|
869
|
+
}
|
|
870
|
+
this.playbackTimer = requestAnimationFrame(t);
|
|
871
|
+
};
|
|
872
|
+
this.playbackTimer = requestAnimationFrame(t);
|
|
873
|
+
}
|
|
874
|
+
stopPlaybackTimer() {
|
|
875
|
+
this.playbackTimer && (cancelAnimationFrame(this.playbackTimer), this.playbackTimer = null);
|
|
876
|
+
}
|
|
877
|
+
getBarFromTime(t) {
|
|
878
|
+
if (!this.beats || this.beats.length === 0) return null;
|
|
879
|
+
let a = null;
|
|
880
|
+
for (let n = this.beats.length - 1; n >= 0; n--)
|
|
881
|
+
if (this.beats[n].time <= t) {
|
|
882
|
+
a = this.beats[n];
|
|
883
|
+
break;
|
|
884
|
+
}
|
|
885
|
+
return a ? {
|
|
886
|
+
bar: a.bar,
|
|
887
|
+
beat: a.beat,
|
|
888
|
+
repeat: a.repeat,
|
|
889
|
+
time: a.time
|
|
890
|
+
} : null;
|
|
891
|
+
}
|
|
892
|
+
getTimeFromBar(t, a = 0) {
|
|
893
|
+
if (!this.beats || this.beats.length === 0) return null;
|
|
894
|
+
let n = this.beats.find(
|
|
895
|
+
(s) => s.bar === t && s.beat === 1 && s.repeat === a
|
|
896
|
+
);
|
|
897
|
+
return !n && a === 0 && (n = this.beats.find(
|
|
898
|
+
(s) => s.bar === t && s.beat === 1
|
|
899
|
+
)), n ? n.time : null;
|
|
900
|
+
}
|
|
901
|
+
destroy() {
|
|
902
|
+
this.stop(), this.eventBus.all.clear(), this.parts.clear();
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
const d = new ft();
|
|
906
|
+
function ne() {
|
|
907
|
+
const e = X(), t = ae(), a = pt(), n = ({ currentTime: o }) => {
|
|
908
|
+
e.setCurrentTime(o);
|
|
909
|
+
}, s = ({ isPlaying: o }) => {
|
|
910
|
+
e.setPlaybackState(o), a.setTransportState(o ? "playing" : "stopped");
|
|
911
|
+
}, i = (o) => {
|
|
912
|
+
o && (e.setCurrentBar(o.bar, o.beat, o.repeat), a.updateLastBarPosition(o.bar));
|
|
913
|
+
}, l = ({ speed: o }) => {
|
|
914
|
+
e.setPlaybackSpeed(o);
|
|
915
|
+
}, h = ({ volume: o }) => {
|
|
916
|
+
e.setMasterVolume(o);
|
|
917
|
+
}, u = ({ partName: o, volume: E }) => {
|
|
918
|
+
e.setPartVolume(o, E);
|
|
919
|
+
}, r = ({ partName: o, muted: E }) => {
|
|
920
|
+
e.setPartMuted(o, E);
|
|
921
|
+
}, c = ({ bars: o }) => {
|
|
922
|
+
e.setLeadInActive(!0, o);
|
|
923
|
+
}, p = () => {
|
|
924
|
+
e.setLeadInActive(!1);
|
|
925
|
+
}, b = () => {
|
|
926
|
+
e.setStartingNotesActive(!0);
|
|
927
|
+
}, f = () => {
|
|
928
|
+
e.setStartingNotesActive(!1);
|
|
929
|
+
}, x = ({ mark: o }) => {
|
|
930
|
+
a.updateLastPracticeMarkUsed(o);
|
|
931
|
+
}, P = ({ parts: o }) => {
|
|
932
|
+
e.initializeParts(o);
|
|
933
|
+
}, W = ({ finalTime: o }) => {
|
|
934
|
+
e.setPlaybackState(!1), a.setTransportState("stopped"), console.log(`Song ended at time: ${o}`);
|
|
935
|
+
}, B = () => {
|
|
936
|
+
d.on("timeChanged", n), d.on("playbackStateChanged", s), d.on("barChanged", i), d.on("speedChanged", l), d.on("masterVolumeChanged", h), d.on("partVolumeChanged", u), d.on("partMutedChanged", r), d.on("leadInStarted", c), d.on("leadInCompleted", p), d.on("startingNotesStarted", b), d.on("startingNotesCompleted", f), d.on("practiceMarkChanged", x), d.on("initialized", P), d.on("songEnded", W);
|
|
937
|
+
}, H = () => {
|
|
938
|
+
d.off("timeChanged", n), d.off("playbackStateChanged", s), d.off("barChanged", i), d.off("speedChanged", l), d.off("masterVolumeChanged", h), d.off("partVolumeChanged", u), d.off("partMutedChanged", r), d.off("leadInStarted", c), d.off("leadInCompleted", p), d.off("startingNotesStarted", b), d.off("startingNotesCompleted", f), d.off("practiceMarkChanged", x), d.off("initialized", P), d.off("songEnded", W);
|
|
939
|
+
}, R = () => {
|
|
940
|
+
ke(() => {
|
|
941
|
+
const o = e.masterVolume;
|
|
942
|
+
d.getMasterVolume() !== o && d.setMasterVolume(o);
|
|
943
|
+
}), ke(() => {
|
|
944
|
+
const o = e.playbackSpeed;
|
|
945
|
+
d.getPlaybackSpeed() !== o && d.setPlaybackSpeed(o);
|
|
946
|
+
});
|
|
947
|
+
}, J = (o) => {
|
|
948
|
+
t.loadMusicData(o), d.initialize({
|
|
949
|
+
beats: o.beats,
|
|
950
|
+
practiceMarks: o.marks || o.practiceMarks,
|
|
951
|
+
parts: o.parts
|
|
952
|
+
}), B(), R();
|
|
953
|
+
}, $ = () => {
|
|
954
|
+
d.play();
|
|
955
|
+
}, j = () => {
|
|
956
|
+
d.stop();
|
|
957
|
+
}, M = () => {
|
|
958
|
+
d.pause();
|
|
959
|
+
}, S = (o) => {
|
|
960
|
+
d.setTime(o);
|
|
961
|
+
}, V = (o, E = 0) => {
|
|
962
|
+
d.setBar(o, E);
|
|
963
|
+
}, A = (o) => {
|
|
964
|
+
d.goToPracticeMark(o);
|
|
965
|
+
}, v = (o) => {
|
|
966
|
+
d.setPlaybackSpeed(o);
|
|
967
|
+
}, O = (o) => {
|
|
968
|
+
d.setMasterVolume(o);
|
|
969
|
+
}, G = (o, E) => {
|
|
970
|
+
d.setPartVolume(o, E);
|
|
971
|
+
}, ce = (o, E) => {
|
|
972
|
+
d.setPartMuted(o, E);
|
|
973
|
+
}, Z = (o = 1) => {
|
|
974
|
+
d.playLeadIn(o);
|
|
975
|
+
}, se = () => {
|
|
976
|
+
d.playStartingNotes();
|
|
977
|
+
}, K = (o, E = !0, te = 0) => {
|
|
978
|
+
E && a.leadInEnabled ? (V(o, te), Z(a.leadInBars)) : (V(o, te), $());
|
|
979
|
+
}, ee = (o, E = !0) => {
|
|
980
|
+
const te = t.getBarForMark(o);
|
|
981
|
+
te && K(te, E);
|
|
982
|
+
};
|
|
983
|
+
return ge(() => {
|
|
984
|
+
H();
|
|
985
|
+
}), {
|
|
986
|
+
// Initialization
|
|
987
|
+
initialize: J,
|
|
988
|
+
// Transport controls
|
|
989
|
+
play: $,
|
|
990
|
+
stop: j,
|
|
991
|
+
pause: M,
|
|
992
|
+
// Time controls
|
|
993
|
+
setTime: S,
|
|
994
|
+
setBar: V,
|
|
995
|
+
// Navigation
|
|
996
|
+
goToPracticeMark: A,
|
|
997
|
+
setPlaybackSpeed: v,
|
|
998
|
+
// Volume controls
|
|
999
|
+
setMasterVolume: O,
|
|
1000
|
+
setPartVolume: G,
|
|
1001
|
+
setPartMuted: ce,
|
|
1002
|
+
// Special features
|
|
1003
|
+
playLeadIn: Z,
|
|
1004
|
+
playStartingNotes: se,
|
|
1005
|
+
// Complex operations
|
|
1006
|
+
playFromBar: K,
|
|
1007
|
+
playFromMark: ee,
|
|
1008
|
+
// Access to stores for components
|
|
1009
|
+
audioState: e,
|
|
1010
|
+
musicData: t,
|
|
1011
|
+
playbackState: a,
|
|
1012
|
+
// Direct access to engine for advanced use
|
|
1013
|
+
audioEngine: d
|
|
1014
|
+
};
|
|
1015
|
+
}
|
|
1016
|
+
const bt = {
|
|
1017
|
+
__name: "PartControl",
|
|
1018
|
+
props: /* @__PURE__ */ me({
|
|
1019
|
+
name: {
|
|
1020
|
+
type: String,
|
|
1021
|
+
required: !0
|
|
1022
|
+
},
|
|
1023
|
+
level: {
|
|
1024
|
+
type: Number,
|
|
1025
|
+
default: 0,
|
|
1026
|
+
validator: (e) => e >= 0 && e <= 1
|
|
1027
|
+
}
|
|
1028
|
+
}, {
|
|
1029
|
+
volume: { default: 0.75 },
|
|
1030
|
+
volumeModifiers: {},
|
|
1031
|
+
mute: { default: !1 },
|
|
1032
|
+
muteModifiers: {},
|
|
1033
|
+
solo: { default: !1 },
|
|
1034
|
+
soloModifiers: {}
|
|
1035
|
+
}),
|
|
1036
|
+
emits: ["update:volume", "update:mute", "update:solo"],
|
|
1037
|
+
setup(e) {
|
|
1038
|
+
F((f) => ({
|
|
1039
|
+
"34cdae44": r.value
|
|
1040
|
+
}));
|
|
1041
|
+
const t = e;
|
|
1042
|
+
X();
|
|
1043
|
+
const a = ne(), n = z(e, "volume"), s = z(e, "mute"), i = z(e, "solo");
|
|
1044
|
+
D(n, (f) => {
|
|
1045
|
+
a.setPartVolume(t.name, f);
|
|
1046
|
+
}), D(s, (f) => {
|
|
1047
|
+
a.setPartMuted(t.name, f);
|
|
1048
|
+
});
|
|
1049
|
+
const l = U("el"), { width: h, height: u } = q(l), r = g(() => Math.min(h.value, u.value) + "px"), c = g(
|
|
1050
|
+
() => h.value > u.value ? "mobile" : h.value < 60 ? "tablet" : "desktop"
|
|
1051
|
+
);
|
|
1052
|
+
let p = null;
|
|
1053
|
+
const b = T(0);
|
|
1054
|
+
return Ve(() => {
|
|
1055
|
+
$e("randomLevelIndicators") && (p = setInterval(() => {
|
|
1056
|
+
b.value = s.value ? 0 : Math.random() * n.value;
|
|
1057
|
+
}, 100));
|
|
1058
|
+
}), ge(() => {
|
|
1059
|
+
p && (clearInterval(p), p = null);
|
|
1060
|
+
}), (f, x) => (y(), _("div", {
|
|
1061
|
+
ref_key: "el",
|
|
1062
|
+
ref: l,
|
|
1063
|
+
class: w([c.value, "part"])
|
|
1064
|
+
}, [
|
|
1065
|
+
k(mt, {
|
|
1066
|
+
class: "tri",
|
|
1067
|
+
mute: s.value,
|
|
1068
|
+
"onUpdate:mute": x[0] || (x[0] = (P) => s.value = P),
|
|
1069
|
+
solo: i.value,
|
|
1070
|
+
"onUpdate:solo": x[1] || (x[1] = (P) => i.value = P)
|
|
1071
|
+
}, null, 8, ["mute", "solo"]),
|
|
1072
|
+
k(De, {
|
|
1073
|
+
align: "left",
|
|
1074
|
+
class: "name"
|
|
1075
|
+
}, {
|
|
1076
|
+
default: N(() => [
|
|
1077
|
+
ye(I(e.name), 1)
|
|
1078
|
+
]),
|
|
1079
|
+
_: 1
|
|
1080
|
+
}),
|
|
1081
|
+
k(le, {
|
|
1082
|
+
level: b.value,
|
|
1083
|
+
"show-level": !0,
|
|
1084
|
+
class: "vol",
|
|
1085
|
+
value: n.value,
|
|
1086
|
+
"onUpdate:value": x[2] || (x[2] = (P) => n.value = P)
|
|
1087
|
+
}, null, 8, ["level", "value"])
|
|
1088
|
+
], 2));
|
|
1089
|
+
}
|
|
1090
|
+
}, gt = /* @__PURE__ */ L(bt, [["__scopeId", "data-v-510493b1"]]), yt = { class: "mark" }, _t = {
|
|
1091
|
+
key: 0,
|
|
1092
|
+
class: "mark-dropdown"
|
|
1093
|
+
}, Mt = ["onClick"], St = { class: "rpt" }, kt = { class: "beat-ind" }, xt = { class: "beat" }, Tt = {
|
|
1094
|
+
__name: "BarInput",
|
|
1095
|
+
setup(e) {
|
|
1096
|
+
F((M) => ({
|
|
1097
|
+
"8ea05ab6": x.value,
|
|
1098
|
+
"1a3336d8": P.value
|
|
1099
|
+
}));
|
|
1100
|
+
const t = U("el"), { width: a, height: n } = q(t), s = ae(), i = X(), l = ne(), h = T(!0);
|
|
1101
|
+
D(() => i.currentBeat, () => {
|
|
1102
|
+
h.value = !0, setTimeout(() => {
|
|
1103
|
+
h.value = !1;
|
|
1104
|
+
}, 50);
|
|
1105
|
+
});
|
|
1106
|
+
let u = null;
|
|
1107
|
+
Ve(() => {
|
|
1108
|
+
$e("beatAnimation") && (u = setInterval(() => {
|
|
1109
|
+
const M = i.currentBeat % s.timeSignature + 1;
|
|
1110
|
+
i.setCurrentBar(i.currentBar, M, i.currentRepeat);
|
|
1111
|
+
}, 800));
|
|
1112
|
+
}), ge(() => {
|
|
1113
|
+
u && (clearInterval(u), u = null);
|
|
1114
|
+
});
|
|
1115
|
+
const r = T(i.currentBar.toString()), c = T("A");
|
|
1116
|
+
T(i.currentRepeat);
|
|
1117
|
+
const p = T(!1), b = T(!1);
|
|
1118
|
+
D(r, () => {
|
|
1119
|
+
r.value = r.value.replace(/\D/g, ""), r.value.length > 3 && (r.value = r.value.slice(0, 3));
|
|
1120
|
+
}), D(() => i.currentBar, (M) => {
|
|
1121
|
+
r.value = M.toString();
|
|
1122
|
+
});
|
|
1123
|
+
function f() {
|
|
1124
|
+
const M = parseInt(r.value);
|
|
1125
|
+
M && M > 0 && $(M);
|
|
1126
|
+
}
|
|
1127
|
+
const x = g(() => Math.min(n.value / 2.25, a.value / 4.5) + "px"), P = g(() => Math.min(a.value / 15, n.value / 6.4) + "px");
|
|
1128
|
+
function W() {
|
|
1129
|
+
p.value = !p.value;
|
|
1130
|
+
}
|
|
1131
|
+
function B() {
|
|
1132
|
+
p.value = !1;
|
|
1133
|
+
}
|
|
1134
|
+
function H() {
|
|
1135
|
+
b.value = !b.value;
|
|
1136
|
+
}
|
|
1137
|
+
function R() {
|
|
1138
|
+
b.value = !1;
|
|
1139
|
+
}
|
|
1140
|
+
const J = g(() => Object.keys(s.practiceMarks).sort());
|
|
1141
|
+
function $(M) {
|
|
1142
|
+
l.setBar(M, i.currentRepeat);
|
|
1143
|
+
}
|
|
1144
|
+
function j(M) {
|
|
1145
|
+
c.value = M, p.value = !1, l.goToPracticeMark(M);
|
|
1146
|
+
}
|
|
1147
|
+
return (M, S) => {
|
|
1148
|
+
const V = qe("click-outside");
|
|
1149
|
+
return y(), _("div", {
|
|
1150
|
+
ref_key: "el",
|
|
1151
|
+
ref: t,
|
|
1152
|
+
class: w(["outer", { pulse: h.value }])
|
|
1153
|
+
}, [
|
|
1154
|
+
S[1] || (S[1] = m("div", { class: "frame" }, null, -1)),
|
|
1155
|
+
re((y(), _("div", {
|
|
1156
|
+
class: w(["mark-input", { empty: !c.value, edit: p.value }]),
|
|
1157
|
+
onClick: W
|
|
1158
|
+
}, [
|
|
1159
|
+
m("div", yt, I(c.value), 1)
|
|
1160
|
+
], 2)), [
|
|
1161
|
+
[V, B]
|
|
1162
|
+
]),
|
|
1163
|
+
p.value ? (y(), _("div", _t, [
|
|
1164
|
+
(y(!0), _(ve, null, fe(J.value, (A) => (y(), _("div", {
|
|
1165
|
+
key: A,
|
|
1166
|
+
class: "mark-option",
|
|
1167
|
+
onClick: (v) => j(A)
|
|
1168
|
+
}, I(A), 9, Mt))), 128))
|
|
1169
|
+
])) : pe("", !0),
|
|
1170
|
+
S[2] || (S[2] = m("div", { class: "mark-title" }, "Mark", -1)),
|
|
1171
|
+
re(m("input", {
|
|
1172
|
+
type: "text",
|
|
1173
|
+
class: "bar-input",
|
|
1174
|
+
"onUpdate:modelValue": S[0] || (S[0] = (A) => r.value = A),
|
|
1175
|
+
inputmode: "decimal",
|
|
1176
|
+
pattern: "\\d*",
|
|
1177
|
+
onChange: f,
|
|
1178
|
+
onKeyup: We(f, ["enter"])
|
|
1179
|
+
}, null, 544), [
|
|
1180
|
+
[Oe, r.value]
|
|
1181
|
+
]),
|
|
1182
|
+
S[3] || (S[3] = m("div", { class: "bar-title" }, "Bar", -1)),
|
|
1183
|
+
re((y(), _("div", {
|
|
1184
|
+
class: w(["rpt-input", { edit: b.value }]),
|
|
1185
|
+
onClick: H
|
|
1186
|
+
}, [
|
|
1187
|
+
m("div", St, I(C(i).currentRepeat || "-"), 1)
|
|
1188
|
+
], 2)), [
|
|
1189
|
+
[V, R]
|
|
1190
|
+
]),
|
|
1191
|
+
S[4] || (S[4] = m("div", { class: "rpt-title" }, "Rpt", -1)),
|
|
1192
|
+
m("div", kt, [
|
|
1193
|
+
m("div", xt, I(C(i).currentBeat), 1)
|
|
1194
|
+
]),
|
|
1195
|
+
S[5] || (S[5] = m("div", { class: "beat-title" }, "Beat", -1))
|
|
1196
|
+
], 2);
|
|
1197
|
+
};
|
|
1198
|
+
}
|
|
1199
|
+
}, Ct = /* @__PURE__ */ L(Tt, [["__scopeId", "data-v-3043e562"]]), wt = { class: "title" }, Bt = {
|
|
1200
|
+
__name: "BaseNumericInput",
|
|
1201
|
+
props: /* @__PURE__ */ me({
|
|
1202
|
+
title: {
|
|
1203
|
+
type: String,
|
|
1204
|
+
required: !0
|
|
1205
|
+
},
|
|
1206
|
+
color: {
|
|
1207
|
+
type: String,
|
|
1208
|
+
default: "#336"
|
|
1209
|
+
},
|
|
1210
|
+
focusColor: {
|
|
1211
|
+
type: String,
|
|
1212
|
+
default: "#558"
|
|
1213
|
+
},
|
|
1214
|
+
textColor: {
|
|
1215
|
+
type: String,
|
|
1216
|
+
default: "#aad"
|
|
1217
|
+
},
|
|
1218
|
+
backgroundColor: {
|
|
1219
|
+
type: String,
|
|
1220
|
+
default: "#111117"
|
|
1221
|
+
},
|
|
1222
|
+
sliderMax: {
|
|
1223
|
+
type: Number,
|
|
1224
|
+
default: 1
|
|
1225
|
+
},
|
|
1226
|
+
sliderMin: {
|
|
1227
|
+
type: Number,
|
|
1228
|
+
default: 0
|
|
1229
|
+
},
|
|
1230
|
+
thumbLength: {
|
|
1231
|
+
type: Number,
|
|
1232
|
+
default: 2
|
|
1233
|
+
},
|
|
1234
|
+
formatValue: {
|
|
1235
|
+
type: Function,
|
|
1236
|
+
default: (e) => e.toString()
|
|
1237
|
+
},
|
|
1238
|
+
parseValue: {
|
|
1239
|
+
type: Function,
|
|
1240
|
+
default: (e) => parseFloat(e)
|
|
1241
|
+
},
|
|
1242
|
+
validateInput: {
|
|
1243
|
+
type: Function,
|
|
1244
|
+
default: (e) => e.replace(/[^0-9.]/g, "")
|
|
1245
|
+
},
|
|
1246
|
+
transformSliderToDisplay: {
|
|
1247
|
+
type: Function,
|
|
1248
|
+
default: (e) => e
|
|
1249
|
+
},
|
|
1250
|
+
transformDisplayToSlider: {
|
|
1251
|
+
type: Function,
|
|
1252
|
+
default: (e) => e
|
|
1253
|
+
},
|
|
1254
|
+
maxChars: {
|
|
1255
|
+
type: Number,
|
|
1256
|
+
default: null
|
|
1257
|
+
}
|
|
1258
|
+
}, {
|
|
1259
|
+
value: { default: 0.5 },
|
|
1260
|
+
valueModifiers: {}
|
|
1261
|
+
}),
|
|
1262
|
+
emits: ["update:value"],
|
|
1263
|
+
setup(e) {
|
|
1264
|
+
F((c) => ({
|
|
1265
|
+
"0d0963e0": e.textColor,
|
|
1266
|
+
"4ad34b2f": e.backgroundColor,
|
|
1267
|
+
"02156786": e.color,
|
|
1268
|
+
"715a9528": u.value,
|
|
1269
|
+
"30d64f7d": h.value,
|
|
1270
|
+
b8fbe65e: e.focusColor
|
|
1271
|
+
}));
|
|
1272
|
+
const t = e, a = U("el"), { width: n, height: s } = q(a), i = z(e, "value"), l = T(t.formatValue(t.transformSliderToDisplay(i.value)));
|
|
1273
|
+
D(i, () => {
|
|
1274
|
+
const c = t.transformSliderToDisplay(i.value);
|
|
1275
|
+
l.value = t.formatValue(c);
|
|
1276
|
+
}), D(l, () => {
|
|
1277
|
+
l.value = t.validateInput(l.value), t.maxChars && l.value.length > t.maxChars && (l.value = l.value.slice(0, t.maxChars));
|
|
1278
|
+
});
|
|
1279
|
+
const h = g(() => Math.min(s.value / 2.25, n.value / 2.2) + "px"), u = g(() => Math.min(n.value / 3, s.value / 6.4) + "px");
|
|
1280
|
+
function r() {
|
|
1281
|
+
const c = t.parseValue(l.value), p = t.transformDisplayToSlider(c);
|
|
1282
|
+
i.value = Math.min(Math.max(p, t.sliderMin), t.sliderMax);
|
|
1283
|
+
}
|
|
1284
|
+
return (c, p) => (y(), _("div", {
|
|
1285
|
+
class: "outer",
|
|
1286
|
+
ref_key: "el",
|
|
1287
|
+
ref: a
|
|
1288
|
+
}, [
|
|
1289
|
+
p[2] || (p[2] = m("div", { class: "frame" }, null, -1)),
|
|
1290
|
+
re(m("input", {
|
|
1291
|
+
type: "text",
|
|
1292
|
+
class: "input",
|
|
1293
|
+
"onUpdate:modelValue": p[0] || (p[0] = (b) => l.value = b),
|
|
1294
|
+
inputmode: "decimal",
|
|
1295
|
+
pattern: "\\d*",
|
|
1296
|
+
onChange: r
|
|
1297
|
+
}, null, 544), [
|
|
1298
|
+
[Oe, l.value]
|
|
1299
|
+
]),
|
|
1300
|
+
m("div", wt, I(e.title), 1),
|
|
1301
|
+
k(le, {
|
|
1302
|
+
class: "slider",
|
|
1303
|
+
value: i.value,
|
|
1304
|
+
"onUpdate:value": p[1] || (p[1] = (b) => i.value = b),
|
|
1305
|
+
"thumb-length": e.thumbLength,
|
|
1306
|
+
max: e.sliderMax,
|
|
1307
|
+
min: e.sliderMin
|
|
1308
|
+
}, null, 8, ["value", "thumb-length", "max", "min"])
|
|
1309
|
+
], 512));
|
|
1310
|
+
}
|
|
1311
|
+
}, ze = /* @__PURE__ */ L(Bt, [["__scopeId", "data-v-79c7a539"]]), Et = {
|
|
1312
|
+
__name: "SpeedInput",
|
|
1313
|
+
setup(e) {
|
|
1314
|
+
const t = X(), a = ne(), n = g({
|
|
1315
|
+
get: () => Math.log2(t.playbackSpeed) * 0.5 + 0.5,
|
|
1316
|
+
set: (r) => {
|
|
1317
|
+
const c = Math.pow(2, r * 2 - 1);
|
|
1318
|
+
a.setPlaybackSpeed(c);
|
|
1319
|
+
}
|
|
1320
|
+
}), s = (r) => Math.floor(Math.pow(2, r * 2 - 1) * 100 + 0.5) + "", i = (r) => parseFloat(r), l = (r) => r.replace(/\D/g, ""), h = (r) => r, u = (r) => {
|
|
1321
|
+
const c = Math.log2(r / 100) * 0.5 + 0.5;
|
|
1322
|
+
return Math.min(Math.max(c, 0), 1);
|
|
1323
|
+
};
|
|
1324
|
+
return (r, c) => (y(), _e(ze, {
|
|
1325
|
+
value: n.value,
|
|
1326
|
+
"onUpdate:value": c[0] || (c[0] = (p) => n.value = p),
|
|
1327
|
+
title: "Speed",
|
|
1328
|
+
color: "#336",
|
|
1329
|
+
"text-color": "#aad",
|
|
1330
|
+
"format-value": s,
|
|
1331
|
+
"parse-value": i,
|
|
1332
|
+
"validate-input": l,
|
|
1333
|
+
"transform-slider-to-display": h,
|
|
1334
|
+
"transform-display-to-slider": u,
|
|
1335
|
+
"thumb-length": 2,
|
|
1336
|
+
"max-chars": 3
|
|
1337
|
+
}, null, 8, ["value"]));
|
|
1338
|
+
}
|
|
1339
|
+
}, Pt = {
|
|
1340
|
+
__name: "TimeInput",
|
|
1341
|
+
setup(e) {
|
|
1342
|
+
const t = X(), a = ae(), n = ne(), s = (r) => r.toFixed(1), i = (r) => parseFloat(r), l = (r) => r.replace(/[^0-9.]/g, ""), h = (r) => r, u = (r) => r;
|
|
1343
|
+
return (r, c) => (y(), _e(ze, {
|
|
1344
|
+
value: C(t).currentTime,
|
|
1345
|
+
"onUpdate:value": [
|
|
1346
|
+
c[0] || (c[0] = (p) => C(t).currentTime = p),
|
|
1347
|
+
C(n).setTime
|
|
1348
|
+
],
|
|
1349
|
+
title: "Time",
|
|
1350
|
+
color: "#344",
|
|
1351
|
+
"focus-color": "#556868",
|
|
1352
|
+
"text-color": "#acc",
|
|
1353
|
+
"background-color": "#111117",
|
|
1354
|
+
"slider-max": C(a).totalDuration,
|
|
1355
|
+
"slider-min": 0,
|
|
1356
|
+
"format-value": s,
|
|
1357
|
+
"parse-value": i,
|
|
1358
|
+
"validate-input": l,
|
|
1359
|
+
"transform-slider-to-display": h,
|
|
1360
|
+
"transform-display-to-slider": u,
|
|
1361
|
+
"thumb-length": 2
|
|
1362
|
+
}, null, 8, ["value", "onUpdate:value", "slider-max"]));
|
|
1363
|
+
}
|
|
1364
|
+
}, Vt = { class: "inner" }, Ot = {
|
|
1365
|
+
__name: "AudioButton",
|
|
1366
|
+
setup(e) {
|
|
1367
|
+
const t = T(!1), a = () => t.value = !0, n = () => t.value = !1;
|
|
1368
|
+
return (s, i) => (y(), _("div", {
|
|
1369
|
+
class: w(["button-outer", { down: t.value }]),
|
|
1370
|
+
onPointerdown: a,
|
|
1371
|
+
onPointerup: n,
|
|
1372
|
+
onPointerleave: n
|
|
1373
|
+
}, [
|
|
1374
|
+
m("div", Vt, [
|
|
1375
|
+
be(s.$slots, "default", {}, void 0, !0)
|
|
1376
|
+
])
|
|
1377
|
+
], 34));
|
|
1378
|
+
}
|
|
1379
|
+
}, Y = /* @__PURE__ */ L(Ot, [["__scopeId", "data-v-0d7af06e"]]), It = { class: "outer" }, Lt = { class: "buttons" }, At = {
|
|
1380
|
+
class: "icon",
|
|
1381
|
+
viewBox: "0 0 48 48"
|
|
1382
|
+
}, Rt = ["d"], Nt = {
|
|
1383
|
+
__name: "MixerControls",
|
|
1384
|
+
setup(e) {
|
|
1385
|
+
const t = ae(), a = X(), n = ne();
|
|
1386
|
+
function s() {
|
|
1387
|
+
a.isPlaying ? n.stop() : n.play();
|
|
1388
|
+
}
|
|
1389
|
+
function i() {
|
|
1390
|
+
const b = Math.max(1, a.currentBar - 1);
|
|
1391
|
+
n.setBar(b);
|
|
1392
|
+
}
|
|
1393
|
+
function l() {
|
|
1394
|
+
const b = a.currentBar + 1;
|
|
1395
|
+
n.setBar(b);
|
|
1396
|
+
}
|
|
1397
|
+
function h() {
|
|
1398
|
+
n.playStartingNotes();
|
|
1399
|
+
}
|
|
1400
|
+
const u = T(!1), r = T(!0);
|
|
1401
|
+
function c() {
|
|
1402
|
+
u.value = !u.value;
|
|
1403
|
+
}
|
|
1404
|
+
function p() {
|
|
1405
|
+
r.value = !r.value;
|
|
1406
|
+
}
|
|
1407
|
+
return (b, f) => (y(), _("div", It, [
|
|
1408
|
+
k(De, {
|
|
1409
|
+
class: "title",
|
|
1410
|
+
align: "centre"
|
|
1411
|
+
}, {
|
|
1412
|
+
default: N(() => [
|
|
1413
|
+
ye(I(C(t).title), 1)
|
|
1414
|
+
]),
|
|
1415
|
+
_: 1
|
|
1416
|
+
}),
|
|
1417
|
+
k(le, {
|
|
1418
|
+
class: "main",
|
|
1419
|
+
colour: "red",
|
|
1420
|
+
modelValue: C(a).masterVolume,
|
|
1421
|
+
"onUpdate:modelValue": f[0] || (f[0] = (x) => C(a).masterVolume = x)
|
|
1422
|
+
}, null, 8, ["modelValue"]),
|
|
1423
|
+
k(le, {
|
|
1424
|
+
class: "tick",
|
|
1425
|
+
colour: "blue"
|
|
1426
|
+
}),
|
|
1427
|
+
f[6] || (f[6] = m("div", { class: "main-t" }, "Main", -1)),
|
|
1428
|
+
f[7] || (f[7] = m("div", { class: "tick-t" }, "Tick", -1)),
|
|
1429
|
+
k(Ct, { class: "bar" }),
|
|
1430
|
+
k(Pt, { class: "time" }),
|
|
1431
|
+
k(Et, { class: "speed" }),
|
|
1432
|
+
m("div", Lt, [
|
|
1433
|
+
k(Y, {
|
|
1434
|
+
class: "button",
|
|
1435
|
+
onClick: i
|
|
1436
|
+
}, {
|
|
1437
|
+
default: N(() => f[1] || (f[1] = [
|
|
1438
|
+
m("svg", {
|
|
1439
|
+
class: "icon",
|
|
1440
|
+
viewBox: "0 0 48 48"
|
|
1441
|
+
}, [
|
|
1442
|
+
m("path", { d: "M11 36V12h3v24Zm26 0L19.7 24 37 12Z" })
|
|
1443
|
+
], -1)
|
|
1444
|
+
])),
|
|
1445
|
+
_: 1,
|
|
1446
|
+
__: [1]
|
|
1447
|
+
}),
|
|
1448
|
+
k(Y, {
|
|
1449
|
+
class: "button",
|
|
1450
|
+
onClick: s
|
|
1451
|
+
}, {
|
|
1452
|
+
default: N(() => [
|
|
1453
|
+
(y(), _("svg", At, [
|
|
1454
|
+
m("path", {
|
|
1455
|
+
d: C(a).isPlaying ? "M27.4 35.4V12.6h8v22.8Zm-14.8 0V12.6h8.05v22.8Z" : "M16 37.85v-28l22 14Z"
|
|
1456
|
+
}, null, 8, Rt)
|
|
1457
|
+
]))
|
|
1458
|
+
]),
|
|
1459
|
+
_: 1
|
|
1460
|
+
}),
|
|
1461
|
+
k(Y, {
|
|
1462
|
+
class: "button",
|
|
1463
|
+
onClick: l
|
|
1464
|
+
}, {
|
|
1465
|
+
default: N(() => f[2] || (f[2] = [
|
|
1466
|
+
m("svg", {
|
|
1467
|
+
class: "icon",
|
|
1468
|
+
viewBox: "0 0 48 48"
|
|
1469
|
+
}, [
|
|
1470
|
+
m("path", { d: "M34 36V12h3v24Zm-23 0V12l17.3 12Z" })
|
|
1471
|
+
], -1)
|
|
1472
|
+
])),
|
|
1473
|
+
_: 1,
|
|
1474
|
+
__: [2]
|
|
1475
|
+
}),
|
|
1476
|
+
k(Y, {
|
|
1477
|
+
class: "button",
|
|
1478
|
+
onClick: c
|
|
1479
|
+
}, {
|
|
1480
|
+
default: N(() => [
|
|
1481
|
+
(y(), _("svg", {
|
|
1482
|
+
class: w(["icon", u.value ? "on" : "off"]),
|
|
1483
|
+
viewBox: "-128 -128 768 768"
|
|
1484
|
+
}, f[3] || (f[3] = [
|
|
1485
|
+
m("path", { d: "m 463.84136,154.89339 c -6.42,-6.42 -16.83,-6.42 -23.251,0 -71.31197,70.35135 -136.61146,132.25426 -208.741,199.7 h -105.82 c 23.35495,-140.1063 67.13099,-217.59716 120.727,-318.357996 0.86,-0.803 2.209,-0.801 3.067,-10e-4 20.50653,37.383983 48.51152,88.812606 72.26194,147.190756 1.186,9.002 12.2214,17.4338 23.3242,11.71391 9.002,-1.186 11.1594,-12.2324 9.9724,-21.2344 -21.69905,-53.89113 -30.43965,-85.078342 -83.11454,-161.702266 -13.446,-12.55299965 -34.508,-12.55699965 -47.954,10e-4 C 126.80877,149.30021 96.099465,324.74626 77.091365,474.25139 c -2.829,21.473 13.907,40.535 35.543995,40.535 h 271.311 c 21.661,0 38.373,-19.087 35.544,-40.535 -8.26237,-52.34207 -14.88466,-100.7074 -24.7871,-157.02622 -6.40949,-11.78839 -8.3911,-14.9907 -17.4031,-13.8037 -9.002,1.186 -13.59751,8.0528 -12.41051,17.0548 l 5.66371,34.11712 h -83.159 c 64.35441,-63.86663 129.29308,-130.29894 176.448,-176.449 6.42,-6.42 6.42,-16.83 -10e-4,-23.251 z m -88.956,232.582 12.004,91.074 c 0.112,0.846 -0.148,1.701 -0.708,2.341 -0.566,0.645 -1.38,1.014 -2.235,1.014 h -271.311 c -0.855,0 -1.668,-0.369 -2.231,-1.011 -0.564,-0.643 -0.824,-1.499 -0.712,-2.347 l 12.003,-91.072 h 253.19 z" }, null, -1)
|
|
1486
|
+
]), 2))
|
|
1487
|
+
]),
|
|
1488
|
+
_: 1
|
|
1489
|
+
}),
|
|
1490
|
+
k(Y, {
|
|
1491
|
+
class: "button",
|
|
1492
|
+
onClick: p
|
|
1493
|
+
}, {
|
|
1494
|
+
default: N(() => [
|
|
1495
|
+
(y(), _("svg", {
|
|
1496
|
+
class: w(["icon", r.value ? "on" : "off"]),
|
|
1497
|
+
viewBox: "-2 -2 28 28"
|
|
1498
|
+
}, f[4] || (f[4] = [
|
|
1499
|
+
m("path", { d: "m 8.9838564,1.5166215 v 2 h 5.9999996 v -2 z m 2.9999996,3 c -4.9699996,0 -8.9999996,4.0299999 -8.9999996,8.9999995 0,4.97 4.02,9 8.9999996,9 4.98,0 9,-4.03 9,-9 0,-2.12 -0.740703,-4.0693745 -1.970703,-5.6093745 l 1.419922,-1.421875 c -0.43,-0.51 -0.900156,-0.9882031 -1.410156,-1.4082031 l -1.419922,1.4199219 c -1.55,-1.24 -3.499141,-1.9804688 -5.619141,-1.9804688 z m -1.789062,4.7480469 6,4.4999996 -6,4.5 z" }, null, -1)
|
|
1500
|
+
]), 2))
|
|
1501
|
+
]),
|
|
1502
|
+
_: 1
|
|
1503
|
+
}),
|
|
1504
|
+
k(Y, {
|
|
1505
|
+
class: "button",
|
|
1506
|
+
onClick: h
|
|
1507
|
+
}, {
|
|
1508
|
+
default: N(() => f[5] || (f[5] = [
|
|
1509
|
+
m("svg", {
|
|
1510
|
+
class: "icon",
|
|
1511
|
+
viewBox: "0 -960 960 960"
|
|
1512
|
+
}, [
|
|
1513
|
+
m("path", { d: "m 306.66667,-360 q -44,0 -75.33334,-31.33333 Q 200,-422.66667 200,-466.66667 q 0,-44 31.33333,-75.33333 31.33334,-31.33333 75.33334,-31.33333 15.33333,0 28.33333,3.66666 13,3.66667 25,11 V -840 h 160 v 106.66667 H 413.33333 v 266.66666 q 0,44 -31.33333,75.33334 Q 350.66667,-360 306.66667,-360 Z" }),
|
|
1514
|
+
m("path", { d: "m 546.66667,-120 q -44,0 -75.33334,-31.33333 Q 440,-182.66667 440,-226.66667 q 0,-44 31.33333,-75.33333 31.33334,-31.33333 75.33334,-31.33333 15.33333,0 28.33333,3.66666 13,3.66667 25,11 V -600 h 160 v 106.66667 H 653.33333 v 266.66666 q 0,44 -31.33333,75.33334 Q 590.66667,-120 546.66667,-120 Z" })
|
|
1515
|
+
], -1)
|
|
1516
|
+
])),
|
|
1517
|
+
_: 1,
|
|
1518
|
+
__: [5]
|
|
1519
|
+
})
|
|
1520
|
+
])
|
|
1521
|
+
]));
|
|
1522
|
+
}
|
|
1523
|
+
}, Dt = /* @__PURE__ */ L(Nt, [["__scopeId", "data-v-fc2b877e"]]), $t = { class: "container" }, zt = { class: "panel" }, Te = 40, Ce = 40, we = 100, Ft = 50, Be = 400, Ee = 570, Pe = 570, Ut = 350, qt = 330, Wt = 360, Ht = 360, jt = {
|
|
1524
|
+
__name: "MixerLayout",
|
|
1525
|
+
setup(e) {
|
|
1526
|
+
F((u) => ({
|
|
1527
|
+
"2540622b": i.value,
|
|
1528
|
+
"25398f45": l.value,
|
|
1529
|
+
fc452918: h.value
|
|
1530
|
+
}));
|
|
1531
|
+
const t = ae(), a = U("container"), { width: n } = q(a), s = g(() => {
|
|
1532
|
+
const u = n.value, r = t.parts.length;
|
|
1533
|
+
return u < 640 || u < Te * r + Be ? 0 : u < Ce * r + Ee ? 1 : u < we * r + Pe ? 2 : 3;
|
|
1534
|
+
}), i = g(() => {
|
|
1535
|
+
switch (s.value) {
|
|
1536
|
+
case 0:
|
|
1537
|
+
return `${Ut}px ` + `${Ft}px `.repeat(t.parts.length);
|
|
1538
|
+
case 1:
|
|
1539
|
+
return `${qt}px`;
|
|
1540
|
+
case 2:
|
|
1541
|
+
return `${Wt}px`;
|
|
1542
|
+
default:
|
|
1543
|
+
return `${Ht}px`;
|
|
1544
|
+
}
|
|
1545
|
+
}), l = g(() => {
|
|
1546
|
+
switch (s.value) {
|
|
1547
|
+
case 0:
|
|
1548
|
+
return "100vw";
|
|
1549
|
+
case 1:
|
|
1550
|
+
return `${Te}px `.repeat(t.parts.length) + `${Be}px`;
|
|
1551
|
+
case 2:
|
|
1552
|
+
return `${Ce}px `.repeat(t.parts.length) + `${Ee}px`;
|
|
1553
|
+
default:
|
|
1554
|
+
return `${we}px `.repeat(t.parts.length) + `${Pe}px`;
|
|
1555
|
+
}
|
|
1556
|
+
}), h = g(() => {
|
|
1557
|
+
const u = [...t.parts.keys()];
|
|
1558
|
+
return s.value > 0 ? '"' + u.map((r) => "part" + r).join(" ") + ' controls"' : '"controls" ' + u.map((r) => '"part' + r + '"').join(" ");
|
|
1559
|
+
});
|
|
1560
|
+
return (u, r) => (y(), _("div", {
|
|
1561
|
+
class: "outer",
|
|
1562
|
+
ref_key: "container",
|
|
1563
|
+
ref: a
|
|
1564
|
+
}, [
|
|
1565
|
+
m("div", $t, [
|
|
1566
|
+
m("div", zt, [
|
|
1567
|
+
(y(!0), _(ve, null, fe(C(t).parts, (c, p) => (y(), _e(gt, {
|
|
1568
|
+
key: c.name,
|
|
1569
|
+
class: w("part" + p),
|
|
1570
|
+
name: c.name,
|
|
1571
|
+
volume: c.volume,
|
|
1572
|
+
"onUpdate:volume": (b) => c.volume = b,
|
|
1573
|
+
solo: c.solo,
|
|
1574
|
+
"onUpdate:solo": (b) => c.solo = b,
|
|
1575
|
+
mute: c.mute,
|
|
1576
|
+
"onUpdate:mute": (b) => c.mute = b,
|
|
1577
|
+
ref_for: !0,
|
|
1578
|
+
ref: "parts"
|
|
1579
|
+
}, null, 8, ["class", "name", "volume", "onUpdate:volume", "solo", "onUpdate:solo", "mute", "onUpdate:mute"]))), 128)),
|
|
1580
|
+
k(Dt, {
|
|
1581
|
+
title: C(t).title,
|
|
1582
|
+
class: "controls"
|
|
1583
|
+
}, null, 8, ["title"])
|
|
1584
|
+
])
|
|
1585
|
+
])
|
|
1586
|
+
], 512));
|
|
1587
|
+
}
|
|
1588
|
+
}, ta = /* @__PURE__ */ L(jt, [["__scopeId", "data-v-03258471"]]), Gt = { class: "outer" }, Zt = { class: "mid" }, Kt = { class: "inner" }, Yt = {
|
|
1589
|
+
key: 0,
|
|
1590
|
+
class: "content"
|
|
1591
|
+
}, Qt = {
|
|
1592
|
+
__name: "Placeholder",
|
|
1593
|
+
props: {
|
|
1594
|
+
colour: {
|
|
1595
|
+
type: String,
|
|
1596
|
+
default: "red"
|
|
1597
|
+
},
|
|
1598
|
+
text: {
|
|
1599
|
+
type: String,
|
|
1600
|
+
default: ""
|
|
1601
|
+
}
|
|
1602
|
+
},
|
|
1603
|
+
setup(e) {
|
|
1604
|
+
return F((t) => ({
|
|
1605
|
+
"66bea586": e.colour
|
|
1606
|
+
})), (t, a) => (y(), _("div", Gt, [
|
|
1607
|
+
m("div", Zt, [
|
|
1608
|
+
m("div", Kt, [
|
|
1609
|
+
e.text || t.$slots.default ? (y(), _("div", Yt, [
|
|
1610
|
+
ye(I(e.text) + " ", 1),
|
|
1611
|
+
be(t.$slots, "default", {}, void 0, !0)
|
|
1612
|
+
])) : pe("", !0)
|
|
1613
|
+
])
|
|
1614
|
+
])
|
|
1615
|
+
]));
|
|
1616
|
+
}
|
|
1617
|
+
}, aa = /* @__PURE__ */ L(Qt, [["__scopeId", "data-v-dff76c48"]]);
|
|
1618
|
+
export {
|
|
1619
|
+
Y as AudioButton,
|
|
1620
|
+
le as AudioSlider,
|
|
1621
|
+
Ct as BarInput,
|
|
1622
|
+
ze as BaseNumericInput,
|
|
1623
|
+
he as DEV_MODE,
|
|
1624
|
+
ft as DummyAudioEngine,
|
|
1625
|
+
Dt as MixerControls,
|
|
1626
|
+
ta as MixerLayout,
|
|
1627
|
+
gt as PartControl,
|
|
1628
|
+
aa as Placeholder,
|
|
1629
|
+
Et as SpeedInput,
|
|
1630
|
+
Pt as TimeInput,
|
|
1631
|
+
De as TitleText,
|
|
1632
|
+
mt as TriState,
|
|
1633
|
+
$e as isDevFeature,
|
|
1634
|
+
ea as isDevMode,
|
|
1635
|
+
X as useAudioStateStore,
|
|
1636
|
+
q as useElementSize,
|
|
1637
|
+
ne as useMasterAudioControl,
|
|
1638
|
+
ae as useMusicDataStore,
|
|
1639
|
+
pt as usePlaybackStateStore
|
|
1640
|
+
};
|