@44-audio/components 0.1.0-dev.1 → 0.1.0-dev.13

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,375 +1,367 @@
1
- import { h as Dr, C as Tr, D as qr, E as zr, F as Rr, G as $r, H as Lr, I as Ar, J as Fr, T as Or, K as _r, L as jr, M as Ur, N as J, O as Nr, P as Pr, d as cr, c as Z, p as rr, a as er, b as P, l as j, Q as ir, y as wr, f as $, g as T, e as L, i as G, z as kr, q as N, j as k, k as tr, s as I, n as t, m as B, r as S, B as ar, R as lr, u as fr, S as X, U as sr, v as Y, V as ur, W as Br, o as Q, w as vr, x as pr, X as xr, A as Hr, Y as Gr } from "./AudioPlayer-bUgQMAfs.mjs";
2
- function Kr(e, r, i, s, o) {
3
- Dr && Tr();
4
- var n = r.$$slots?.[i], u = !1;
5
- n === !0 && (n = r.children, u = !0), n === void 0 || n(e, u ? () => s : s);
1
+ import { B as Pr, C as Or, D as Ur, E as Br, F as Hr, G as jr, H as Gr, I as Vr, J as Wr, T as Jr, K as Er, L as Kr, M as Xr, N as Z, O as Qr, P as Yr, d as Lr, c as lr, p as fr, a as vr, b as B, h as P, Q as Sr, w as Tr, f as T, k as C, m as O, i as F, x as Zr, t as G, e as m, g as ur, s as b, l as t, j as H, r as $, z as re, R as ee, S as te, U as tr, u as nr, V as cr, o as _r, W as oe, n as X, q as dr, v as rr, X as ae, Y as xr, A as se, Z as ie } from "./AudioPlayer-DW6UJXCt.mjs";
2
+ function ne(o, r, a, s, d) {
3
+ Pr && Or();
4
+ var e = r.$$slots?.[a], v = !1;
5
+ e === !0 && (e = r.children, v = !0), e === void 0 || e(o, v ? () => s : s);
6
6
  }
7
- const Vr = () => performance.now(), H = {
7
+ const ce = () => performance.now(), U = {
8
8
  // don't access requestAnimationFrame eagerly outside method
9
9
  // this allows basic testing of user code without JSDOM
10
10
  // bunder will eval and remove ternary when the user's app is built
11
11
  tick: (
12
12
  /** @param {any} _ */
13
- (e) => requestAnimationFrame(e)
13
+ (o) => requestAnimationFrame(o)
14
14
  ),
15
- now: () => Vr(),
15
+ now: () => ce(),
16
16
  tasks: /* @__PURE__ */ new Set()
17
17
  };
18
- function Ir() {
19
- const e = H.now();
20
- H.tasks.forEach((r) => {
21
- r.c(e) || (H.tasks.delete(r), r.f());
22
- }), H.tasks.size !== 0 && H.tick(Ir);
18
+ function Cr() {
19
+ const o = U.now();
20
+ U.tasks.forEach((r) => {
21
+ r.c(o) || (U.tasks.delete(r), r.f());
22
+ }), U.tasks.size !== 0 && U.tick(Cr);
23
23
  }
24
- function Wr(e) {
24
+ function de(o) {
25
25
  let r;
26
- return H.tasks.size === 0 && H.tick(Ir), {
27
- promise: new Promise((i) => {
28
- H.tasks.add(r = { c: e, f: i });
26
+ return U.tasks.size === 0 && U.tick(Cr), {
27
+ promise: new Promise((a) => {
28
+ U.tasks.add(r = { c: o, f: a });
29
29
  }),
30
30
  abort() {
31
- H.tasks.delete(r);
31
+ U.tasks.delete(r);
32
32
  }
33
33
  };
34
34
  }
35
- function or(e, r) {
36
- _r(() => {
37
- e.dispatchEvent(new CustomEvent(r));
35
+ function ir(o, r) {
36
+ Er(() => {
37
+ o.dispatchEvent(new CustomEvent(r));
38
38
  });
39
39
  }
40
- function Jr(e) {
41
- if (e === "float") return "cssFloat";
42
- if (e === "offset") return "cssOffset";
43
- if (e.startsWith("--")) return e;
44
- const r = e.split("-");
40
+ function le(o) {
41
+ if (o === "float") return "cssFloat";
42
+ if (o === "offset") return "cssOffset";
43
+ if (o.startsWith("--")) return o;
44
+ const r = o.split("-");
45
45
  return r.length === 1 ? r[0] : r[0] + r.slice(1).map(
46
46
  /** @param {any} word */
47
- (i) => i[0].toUpperCase() + i.slice(1)
47
+ (a) => a[0].toUpperCase() + a.slice(1)
48
48
  ).join("");
49
49
  }
50
- function br(e) {
51
- const r = {}, i = e.split(";");
52
- for (const s of i) {
53
- const [o, n] = s.split(":");
54
- if (!o || n === void 0) break;
55
- const u = Jr(o.trim());
56
- r[u] = n.trim();
50
+ function kr(o) {
51
+ const r = {}, a = o.split(";");
52
+ for (const s of a) {
53
+ const [d, e] = s.split(":");
54
+ if (!d || e === void 0) break;
55
+ const v = le(d.trim());
56
+ r[v] = e.trim();
57
57
  }
58
58
  return r;
59
59
  }
60
- const Qr = (e) => e;
61
- function gr(e, r, i, s) {
62
- var o = (e & Nr) !== 0, n = (e & Pr) !== 0, u = o && n, f = (e & Or) !== 0, q = u ? "both" : o ? "in" : "out", x, _ = r.inert, M = r.style.overflow, w, C;
63
- function E() {
64
- return _r(() => x ??= i()(r, s?.() ?? /** @type {P} */
60
+ const fe = (o) => o;
61
+ function br(o, r, a, s) {
62
+ var d = (o & Qr) !== 0, e = (o & Yr) !== 0, v = d && e, g = (o & Jr) !== 0, D = v ? "both" : d ? "in" : "out", u, _ = r.inert, w = r.style.overflow, y, q;
63
+ function I() {
64
+ return Er(() => u ??= a()(r, s?.() ?? /** @type {P} */
65
65
  {}, {
66
- direction: q
66
+ direction: D
67
67
  }));
68
68
  }
69
- var a = {
70
- is_global: f,
69
+ var n = {
70
+ is_global: g,
71
71
  in() {
72
- if (r.inert = _, !o) {
73
- C?.abort(), C?.reset?.();
72
+ if (r.inert = _, !d) {
73
+ q?.abort(), q?.reset?.();
74
74
  return;
75
75
  }
76
- n || w?.abort(), or(r, "introstart"), w = yr(r, E(), C, 1, () => {
77
- or(r, "introend"), w?.abort(), w = x = void 0, r.style.overflow = M;
76
+ e || y?.abort(), ir(r, "introstart"), y = hr(r, I(), q, 1, () => {
77
+ ir(r, "introend"), y?.abort(), y = u = void 0, r.style.overflow = w;
78
78
  });
79
79
  },
80
- out(g) {
81
- if (!n) {
82
- g?.(), x = void 0;
80
+ out(x) {
81
+ if (!e) {
82
+ x?.(), u = void 0;
83
83
  return;
84
84
  }
85
- r.inert = !0, or(r, "outrostart"), C = yr(r, E(), w, 0, () => {
86
- or(r, "outroend"), g?.();
85
+ r.inert = !0, ir(r, "outrostart"), q = hr(r, I(), y, 0, () => {
86
+ ir(r, "outroend"), x?.();
87
87
  });
88
88
  },
89
89
  stop: () => {
90
- w?.abort(), C?.abort();
90
+ y?.abort(), q?.abort();
91
91
  }
92
- }, c = (
92
+ }, f = (
93
93
  /** @type {Effect} */
94
- qr
94
+ Ur
95
95
  );
96
- if ((c.transitions ??= []).push(a), o && zr) {
97
- var m = f;
98
- if (!m) {
99
- for (var d = (
96
+ if ((f.transitions ??= []).push(n), d && Br) {
97
+ var l = g;
98
+ if (!l) {
99
+ for (var p = (
100
100
  /** @type {Effect | null} */
101
- c.parent
102
- ); d && (d.f & Rr) !== 0; )
103
- for (; (d = d.parent) && (d.f & $r) === 0; )
101
+ f.parent
102
+ ); p && (p.f & Hr) !== 0; )
103
+ for (; (p = p.parent) && (p.f & jr) === 0; )
104
104
  ;
105
- m = !d || (d.f & Lr) !== 0;
105
+ l = !p || (p.f & Gr) !== 0;
106
106
  }
107
- m && Ar(() => {
108
- Fr(() => a.in());
107
+ l && Vr(() => {
108
+ Wr(() => n.in());
109
109
  });
110
110
  }
111
111
  }
112
- function yr(e, r, i, s, o) {
113
- var n = s === 1;
114
- if (jr(r)) {
115
- var u, f = !1;
116
- return Ur(() => {
117
- if (!f) {
118
- var c = r({ direction: n ? "in" : "out" });
119
- u = yr(e, c, i, s, o);
112
+ function hr(o, r, a, s, d) {
113
+ var e = s === 1;
114
+ if (Kr(r)) {
115
+ var v, g = !1;
116
+ return Xr(() => {
117
+ if (!g) {
118
+ var f = r({ direction: e ? "in" : "out" });
119
+ v = hr(o, f, a, s, d);
120
120
  }
121
121
  }), {
122
122
  abort: () => {
123
- f = !0, u?.abort();
123
+ g = !0, v?.abort();
124
124
  },
125
- deactivate: () => u.deactivate(),
126
- reset: () => u.reset(),
127
- t: () => u.t()
125
+ deactivate: () => v.deactivate(),
126
+ reset: () => v.reset(),
127
+ t: () => v.t()
128
128
  };
129
129
  }
130
- if (i?.deactivate(), !r?.duration)
131
- return o(), {
132
- abort: J,
133
- deactivate: J,
134
- reset: J,
130
+ if (a?.deactivate(), !r?.duration)
131
+ return d(), {
132
+ abort: Z,
133
+ deactivate: Z,
134
+ reset: Z,
135
135
  t: () => s
136
136
  };
137
- const { delay: q = 0, css: x, tick: _, easing: M = Qr } = r;
138
- var w = [];
139
- if (n && i === void 0 && (_ && _(0, 1), x)) {
140
- var C = br(x(0, 1));
141
- w.push(C, C);
137
+ const { delay: D = 0, css: u, tick: _, easing: w = fe } = r;
138
+ var y = [];
139
+ if (e && a === void 0 && (_ && _(0, 1), u)) {
140
+ var q = kr(u(0, 1));
141
+ y.push(q, q);
142
142
  }
143
- var E = () => 1 - s, a = e.animate(w, { duration: q, fill: "forwards" });
144
- return a.onfinish = () => {
145
- a.cancel();
146
- var c = i?.t() ?? 1 - s;
147
- i?.abort();
148
- var m = s - c, d = (
143
+ var I = () => 1 - s, n = o.animate(y, { duration: D, fill: "forwards" });
144
+ return n.onfinish = () => {
145
+ n.cancel();
146
+ var f = a?.t() ?? 1 - s;
147
+ a?.abort();
148
+ var l = s - f, p = (
149
149
  /** @type {number} */
150
- r.duration * Math.abs(m)
151
- ), g = [];
152
- if (d > 0) {
153
- var l = !1;
154
- if (x)
155
- for (var p = Math.ceil(d / 16.666666666666668), v = 0; v <= p; v += 1) {
156
- var y = c + m * M(v / p), b = br(x(y, 1 - y));
157
- g.push(b), l ||= b.overflow === "hidden";
150
+ r.duration * Math.abs(l)
151
+ ), x = [];
152
+ if (p > 0) {
153
+ var A = !1;
154
+ if (u)
155
+ for (var E = Math.ceil(p / 16.666666666666668), h = 0; h <= E; h += 1) {
156
+ var k = f + l * w(h / E), i = kr(u(k, 1 - k));
157
+ x.push(i), A ||= i.overflow === "hidden";
158
158
  }
159
- l && (e.style.overflow = "hidden"), E = () => {
160
- var h = (
159
+ A && (o.style.overflow = "hidden"), I = () => {
160
+ var c = (
161
161
  /** @type {number} */
162
162
  /** @type {globalThis.Animation} */
163
- a.currentTime
163
+ n.currentTime
164
164
  );
165
- return c + m * M(h / d);
166
- }, _ && Wr(() => {
167
- if (a.playState !== "running") return !1;
168
- var h = E();
169
- return _(h, 1 - h), !0;
165
+ return f + l * w(c / p);
166
+ }, _ && de(() => {
167
+ if (n.playState !== "running") return !1;
168
+ var c = I();
169
+ return _(c, 1 - c), !0;
170
170
  });
171
171
  }
172
- a = e.animate(g, { duration: d, fill: "forwards" }), a.onfinish = () => {
173
- E = () => s, _?.(s, 1 - s), o();
172
+ n = o.animate(x, { duration: p, fill: "forwards" }), n.onfinish = () => {
173
+ I = () => s, _?.(s, 1 - s), d();
174
174
  };
175
175
  }, {
176
176
  abort: () => {
177
- a && (a.cancel(), a.effect = null, a.onfinish = J);
177
+ n && (n.cancel(), n.effect = null, n.onfinish = Z);
178
178
  },
179
179
  deactivate: () => {
180
- o = J;
180
+ d = Z;
181
181
  },
182
182
  reset: () => {
183
183
  s === 0 && _?.(1, 0);
184
184
  },
185
- t: () => E()
185
+ t: () => I()
186
186
  };
187
187
  }
188
- const Xr = (e) => e;
189
- function Yr(e) {
190
- const r = e - 1;
188
+ const ve = (o) => o;
189
+ function ue(o) {
190
+ const r = o - 1;
191
191
  return r * r * r + 1;
192
192
  }
193
- function mr(e) {
194
- const r = typeof e == "string" && e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);
193
+ function qr(o) {
194
+ const r = typeof o == "string" && o.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);
195
195
  return r ? [parseFloat(r[1]), r[2] || "px"] : [
196
196
  /** @type {number} */
197
- e,
197
+ o,
198
198
  "px"
199
199
  ];
200
200
  }
201
- function Zr(e, { delay: r = 0, duration: i = 400, easing: s = Xr } = {}) {
202
- const o = +getComputedStyle(e).opacity;
201
+ function pe(o, { delay: r = 0, duration: a = 400, easing: s = ve } = {}) {
202
+ const d = +getComputedStyle(o).opacity;
203
203
  return {
204
204
  delay: r,
205
- duration: i,
205
+ duration: a,
206
206
  easing: s,
207
- css: (n) => `opacity: ${n * o}`
207
+ css: (e) => `opacity: ${e * d}`
208
208
  };
209
209
  }
210
- function hr(e, { delay: r = 0, duration: i = 400, easing: s = Yr, x: o = 0, y: n = 0, opacity: u = 0 } = {}) {
211
- const f = getComputedStyle(e), q = +f.opacity, x = f.transform === "none" ? "" : f.transform, _ = q * (1 - u), [M, w] = mr(o), [C, E] = mr(n);
210
+ function Ir(o, { delay: r = 0, duration: a = 400, easing: s = ue, x: d = 0, y: e = 0, opacity: v = 0 } = {}) {
211
+ const g = getComputedStyle(o), D = +g.opacity, u = g.transform === "none" ? "" : g.transform, _ = D * (1 - v), [w, y] = qr(d), [q, I] = qr(e);
212
212
  return {
213
213
  delay: r,
214
- duration: i,
214
+ duration: a,
215
215
  easing: s,
216
- css: (a, c) => `
217
- transform: ${x} translate(${(1 - a) * M}${w}, ${(1 - a) * C}${E});
218
- opacity: ${q - _ * c}`
216
+ css: (n, f) => `
217
+ transform: ${u} translate(${(1 - n) * w}${y}, ${(1 - n) * q}${I});
218
+ opacity: ${D - _ * f}`
219
219
  };
220
220
  }
221
- async function Mr(e = !1) {
222
- e && (await navigator.mediaDevices.getUserMedia({ audio: !0 })).getTracks().forEach((o) => o.stop());
223
- const r = await navigator.mediaDevices.enumerateDevices(), i = r.filter((s) => s.deviceId).filter((s) => s.kind === "audioinput").map((s) => ({
224
- id: s.deviceId,
225
- label: s.label || `Microphone ${r.indexOf(s) + 1}`
226
- }));
227
- return i.length === 0 ? Mr(!0) : i;
221
+ async function ge(o, r, a, s) {
222
+ b(r, !t(r)), t(a).length || await s();
228
223
  }
229
- async function re(e, r, i, s) {
230
- I(r, !t(r)), t(i).length || await s();
231
- }
232
- var ee = $("<li><button> </button></li>"), te = $('<li><button class="devices-select__option svelte-q87ygv" disabled>No microphones found</button></li>'), oe = $('<li><button class="devices-select__option svelte-q87ygv" disabled>Loading Microphones...</button></li>'), ae = $('<ul role="listbox" aria-label="Select microphone"><!> <!> <!></ul>'), ie = $('<div class="container" role="group" aria-label="Audio recorder"><button class="devices-btn svelte-q87ygv" aria-haspopup="listbox"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" class="devices-btn__icon svelte-q87ygv"><path d="M201.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 338.7 54.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"></path></svg></button> <!></div>');
233
- const se = {
224
+ var ye = T("<li><button> </button></li>"), me = T('<li><button class="devices-select__option svelte-q87ygv" disabled>No microphones found</button></li>'), be = T('<li><button class="devices-select__option svelte-q87ygv" disabled>Loading Microphones...</button></li>'), he = T('<ul role="listbox" aria-label="Select microphone"><!> <!> <!></ul>'), _e = T('<div class="container" role="group" aria-label="Audio recorder"><button class="devices-btn svelte-q87ygv" aria-haspopup="listbox"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" class="devices-btn__icon svelte-q87ygv"><path d="M201.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 338.7 54.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"></path></svg></button> <!></div>');
225
+ const we = {
234
226
  hash: "svelte-q87ygv",
235
227
  code: '.devices-btn.svelte-q87ygv {background:none;border:none;font-size:inherit;cursor:pointer;color:inherit;}.devices-btn__icon.svelte-q87ygv {width:0.75rem;height:0.75rem;fill:var(--fortyfour-recorder-btn-color);}.devices-select.svelte-q87ygv {display:none;flex-direction:column;list-style:none;margin:0;padding:0;border:var(--fortyfour-recorder-select-border);box-shadow:var(--fortyfour-recorder-select-shadow);border-radius:var(--fortyfour-recorder-select-radius);background:var(--fortyfour-recorder-select-bg);position:absolute;z-index:2147483647;overflow-y:auto;width:11rem;max-height:12rem;}.devices-select--is-open.svelte-q87ygv {display:flex;}.devices-select__option.svelte-q87ygv {padding:0.5rem 1rem;padding-left:0;background:none;border:none;text-align:left;cursor:pointer;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background 0.1s;font:inherit;font-size:var(--fortyfour-recorder-select-font-size);color:var(--fortyfour-recorder-select-color);}.devices-select__option.svelte-q87ygv:hover {background:var(--fortyfour-recorder-select-bg-hover);}.devices-select__option.svelte-q87ygv::before {content:"";display:inline-block;width:2ch;text-align:center;padding:0 0.25rem;}.devices-select__option--is-selected.svelte-q87ygv::before {content:"✓";}.devices-select__option.svelte-q87ygv:disabled {opacity:0.5;cursor:inherit;}.devices-select__option.svelte-q87ygv:disabled:hover {background:inherit;}'
236
228
  };
237
- function Sr(e, r) {
238
- rr(r, !0), er(e, se);
239
- let i = P(r, "deviceId", 15, ""), s = P(r, "disabled", 7, !1), o = j(ir([])), n = j(!1), u = j(!1), f;
240
- wr(() => {
241
- function a(c) {
242
- c.composedPath().includes(f) || t(n) && I(n, !1);
229
+ function $r(o, r) {
230
+ fr(r, !0), vr(o, we);
231
+ let a = B(r, "deviceId", 15, ""), s = B(r, "disabled", 7, !1), d = P(Sr([])), e = P(!1), v = P(!1), g;
232
+ Tr(() => {
233
+ function n(f) {
234
+ f.composedPath().includes(g) || t(e) && b(e, !1);
243
235
  }
244
- return document.addEventListener("pointerdown", a), () => {
245
- document.removeEventListener("pointerdown", a);
236
+ return document.addEventListener("pointerdown", n), () => {
237
+ document.removeEventListener("pointerdown", n);
246
238
  };
247
239
  });
248
- async function q() {
240
+ async function D() {
249
241
  try {
250
- I(u, !0), (await navigator.mediaDevices.getUserMedia({ audio: !0 })).getTracks().forEach((c) => c.stop()), I(o, await navigator.mediaDevices.enumerateDevices(), !0), I(
251
- o,
252
- t(o).filter((c) => c.deviceId).filter((c) => c.kind === "audioinput").map((c, m) => ({
253
- deviceId: c.deviceId,
254
- label: c.label || `Microphone ${m + 1}`
242
+ b(v, !0), (await navigator.mediaDevices.getUserMedia({ audio: !0 })).getTracks().forEach((f) => f.stop()), b(d, await navigator.mediaDevices.enumerateDevices(), !0), b(
243
+ d,
244
+ t(d).filter((f) => f.deviceId).filter((f) => f.kind === "audioinput").map((f, l) => ({
245
+ deviceId: f.deviceId,
246
+ label: f.label || `Microphone ${l + 1}`
255
247
  })),
256
248
  !0
257
- ), !i() && t(o).length && i(t(o)[0].deviceId), t(o).sort((c, m) => c.label.localeCompare(m.label)), I(u, !1);
258
- } catch (a) {
259
- console.error("Error accessing microphones:", a);
249
+ ), !a() && t(d).length && a(t(d)[0].deviceId), t(d).sort((f, l) => f.label.localeCompare(l.label)), b(v, !1);
250
+ } catch (n) {
251
+ console.error("Error accessing microphones:", n);
260
252
  }
261
253
  }
262
- function x(a) {
254
+ function u(n) {
263
255
  return () => {
264
- i(a), I(n, !1);
256
+ a(n), b(e, !1);
265
257
  };
266
258
  }
267
259
  var _ = {
268
260
  get deviceId() {
269
- return i();
261
+ return a();
270
262
  },
271
- set deviceId(a = "") {
272
- i(a), B();
263
+ set deviceId(n = "") {
264
+ a(n), H();
273
265
  },
274
266
  get disabled() {
275
267
  return s();
276
268
  },
277
- set disabled(a = !1) {
278
- s(a), B();
269
+ set disabled(n = !1) {
270
+ s(n), H();
279
271
  }
280
- }, M = ie(), w = T(M);
281
- w.__click = [re, n, o, q];
282
- var C = L(w, 2);
272
+ }, w = _e(), y = C(w);
273
+ y.__click = [ge, e, d, D];
274
+ var q = O(y, 2);
283
275
  {
284
- var E = (a) => {
285
- var c = ae(), m = T(c);
286
- lr(m, 17, () => t(o), ur, (v, y) => {
287
- var b = ee(), h = T(b), D = fr(() => x(t(y).deviceId));
288
- h.__click = function(...K) {
289
- t(D)?.apply(this, K);
276
+ var I = (n) => {
277
+ var f = he(), l = C(f);
278
+ ee(l, 17, () => t(d), te, (h, k) => {
279
+ var i = ye(), c = C(i), L = nr(() => u(t(k).deviceId));
280
+ c.__click = function(...z) {
281
+ t(L)?.apply(this, z);
290
282
  };
291
- var A = T(h, !0);
292
- S(h), S(b), N(() => {
293
- X(
294
- h,
283
+ var R = C(c, !0);
284
+ $(c), $(i), G(() => {
285
+ tr(
286
+ c,
295
287
  1,
296
- sr([
288
+ cr([
297
289
  "devices-select__option",
298
- t(y).deviceId === i() && "devices-select__option--is-selected"
290
+ t(k).deviceId === a() && "devices-select__option--is-selected"
299
291
  ]),
300
292
  "svelte-q87ygv"
301
- ), h.disabled = s(), Y(A, t(y).label);
302
- }), k(v, b);
293
+ ), c.disabled = s(), _r(R, t(k).label);
294
+ }), m(h, i);
303
295
  });
304
- var d = L(m, 2);
296
+ var p = O(l, 2);
305
297
  {
306
- var g = (v) => {
307
- var y = te();
308
- k(v, y);
298
+ var x = (h) => {
299
+ var k = me();
300
+ m(h, k);
309
301
  };
310
- G(d, (v) => {
311
- !t(o).length && !t(u) && v(g);
302
+ F(p, (h) => {
303
+ !t(d).length && !t(v) && h(x);
312
304
  });
313
305
  }
314
- var l = L(d, 2);
306
+ var A = O(p, 2);
315
307
  {
316
- var p = (v) => {
317
- var y = oe();
318
- k(v, y);
308
+ var E = (h) => {
309
+ var k = be();
310
+ m(h, k);
319
311
  };
320
- G(l, (v) => {
321
- t(u) && v(p);
312
+ F(A, (h) => {
313
+ t(v) && h(E);
322
314
  });
323
315
  }
324
- S(c), N(() => X(c, 1, `devices-select ${t(n) ? "devices-select--is-open" : ""}`, "svelte-q87ygv")), gr(3, c, () => Zr, () => ({ duration: 100 })), k(a, c);
316
+ $(f), G(() => tr(f, 1, `devices-select ${t(e) ? "devices-select--is-open" : ""}`, "svelte-q87ygv")), br(3, f, () => pe, () => ({ duration: 100 })), m(n, f);
325
317
  };
326
- G(C, (a) => {
327
- t(n) && a(E);
318
+ F(q, (n) => {
319
+ t(e) && n(I);
328
320
  });
329
321
  }
330
- return S(M), kr(M, (a) => f = a, () => f), N(() => ar(w, "aria-expanded", t(n))), k(e, M), tr(_);
322
+ return $(w), Zr(w, (n) => g = n, () => g), G(() => re(y, "aria-expanded", t(e))), m(o, w), ur(_);
331
323
  }
332
- cr(["click"]);
333
- Z(Sr, { deviceId: {}, disabled: {} }, [], [], !0);
334
- var ne = $("<button><!></button>");
335
- const ce = {
324
+ Lr(["click"]);
325
+ lr($r, { deviceId: {}, disabled: {} }, [], [], !0);
326
+ var xe = T("<button><!></button>");
327
+ const ke = {
336
328
  hash: "svelte-f3ispq",
337
329
  code: ".btn.svelte-f3ispq {display:flex;align-items:center;gap:var(--fortyfour-recorder-btn-gap);font:inherit;border:none;padding:var(--fortyfour-recorder-btn-padding);border-radius:var(--fortyfour-recorder-btn-radius);background:var(--fortyfour-recorder-btn-bg);color:var(--fortyfour-recorder-btn-color);cursor:pointer;}.btn.svelte-f3ispq:hover {background:var(--fortyfour-recorder-btn-bg-hover);color:var(--fortyfour-recorder-btn-color-hover);}.btn.btn--recording.svelte-f3ispq {background:var(--fortyfour-recorder-red-bg);color:var(--fortyfour-recorder-red-color);}.btn.btn--primary.svelte-f3ispq {background:var(--fortyfour-recorder-btn-primary-bg);color:var(--fortyfour-recorder-btn-primary-color);}.btn.btn--primary.svelte-f3ispq:hover {background:var(--fortyfour-recorder-btn-primary-bg-hover);color:var(--fortyfour-recorder-btn-primary-color-hover);}"
338
330
  };
339
- function nr(e, r) {
340
- rr(r, !0), er(e, ce);
341
- const i = P(r, "type", 7), s = P(r, "onclick", 7, () => {
331
+ function er(o, r) {
332
+ fr(r, !0), vr(o, ke);
333
+ const a = B(r, "type", 7), s = B(r, "onclick", 7, () => {
342
334
  });
343
- var o = {
335
+ var d = {
344
336
  get type() {
345
- return i();
337
+ return a();
346
338
  },
347
- set type(f) {
348
- i(f), B();
339
+ set type(g) {
340
+ a(g), H();
349
341
  },
350
342
  get onclick() {
351
343
  return s();
352
344
  },
353
- set onclick(f = () => {
345
+ set onclick(g = () => {
354
346
  }) {
355
- s(f), B();
347
+ s(g), H();
356
348
  }
357
- }, n = ne();
358
- n.__click = function(...f) {
359
- s()?.apply(this, f);
349
+ }, e = xe();
350
+ e.__click = function(...g) {
351
+ s()?.apply(this, g);
360
352
  };
361
- var u = T(n);
362
- return Kr(u, r, "default", {}), S(n), N(() => X(n, 1, sr(["btn", i() && `btn--${i()}`]), "svelte-f3ispq")), k(e, n), tr(o);
353
+ var v = C(e);
354
+ return ne(v, r, "default", {}), $(e), G(() => tr(e, 1, cr(["btn", a() && `btn--${a()}`]), "svelte-f3ispq")), m(o, e), ur(d);
363
355
  }
364
- cr(["click"]);
365
- Z(nr, { type: {}, onclick: {} }, ["default"], [], !0);
366
- var de = $("<div></div> <!>", 1), le = $('<div class="time-elapsed svelte-11ls49v"> </div>'), fe = $('<div role="group" aria-label="Audio recorder"><!> <!> <!></div>');
367
- const ue = {
368
- hash: "svelte-11ls49v",
369
- code: `.container.svelte-11ls49v {display:flex;align-items:center;gap:1rem;}.record-icon.svelte-11ls49v {width:1.25rem;height:1.25rem;background:var(--fortyfour-recorder-red-bg);border-radius:50%;}.record-icon--is-recording.svelte-11ls49v {background:var(--fortyfour-recorder-red-color);
370
- animation: svelte-11ls49v-pulse 2s infinite ease-out;}.time-elapsed.svelte-11ls49v {font-variant-numeric:tabular-nums;}
356
+ Lr(["click"]);
357
+ lr(er, { type: {}, onclick: {} }, ["default"], [], !0);
358
+ var qe = T("<div></div> <!>", 1), Ie = T('<div class="recording-info svelte-fc16qh"><div class="live-waveform svelte-fc16qh"><!></div> <div class="time-elapsed svelte-fc16qh"> </div></div>'), Ee = T('<div role="group" aria-label="Audio recorder"><!> <!> <!></div>');
359
+ const Le = {
360
+ hash: "svelte-fc16qh",
361
+ code: `.container.svelte-fc16qh {display:flex;align-items:center;gap:1rem;min-height:56px;}.record-icon.svelte-fc16qh {width:1.25rem;height:1.25rem;background:var(--fortyfour-recorder-red-bg);border-radius:50%;}.record-icon--is-recording.svelte-fc16qh {background:var(--fortyfour-recorder-red-color);
362
+ animation: svelte-fc16qh-pulse 2s infinite ease-out;}.recording-info.svelte-fc16qh {display:flex;align-items:center;gap:0.5rem;flex:1;min-width:0;}.live-waveform.svelte-fc16qh {flex:1;min-width:0;}.time-elapsed.svelte-fc16qh {font-variant-numeric:tabular-nums;flex-shrink:0;}
371
363
 
372
- @keyframes svelte-11ls49v-pulse {
364
+ @keyframes svelte-fc16qh-pulse {
373
365
  0% {
374
366
  transform: scale(1);
375
367
  box-shadow: 0 0 0 0 hsla(0, 100%, 100%, 0.7);
@@ -383,396 +375,385 @@ const ue = {
383
375
  }
384
376
  }`
385
377
  };
386
- function Er(e, r) {
387
- rr(r, !0), er(e, ue);
388
- let i = P(r, "deviceId", 15, ""), s = P(r, "onDone", 7), o = j(ir({
378
+ function Ar(o, r) {
379
+ fr(r, !0), vr(o, Le);
380
+ let a = B(r, "deviceId", 15, ""), s = B(r, "onDone", 7);
381
+ const d = 100;
382
+ let e = P(Sr({
389
383
  state: "ready",
390
384
  // "ready", "recording"
391
385
  timeElapsed: 0,
392
- error: null
393
- })), n;
394
- Br(() => {
395
- n?.stop();
386
+ error: null,
387
+ waveformSamples: []
388
+ })), v, g;
389
+ oe(() => {
390
+ v?.stop();
391
+ }), Tr(() => {
392
+ function l() {
393
+ document.hidden && t(e).state === "recording" && _();
394
+ }
395
+ return document.addEventListener("visibilitychange", l), () => {
396
+ document.removeEventListener("visibilitychange", l);
397
+ };
396
398
  });
397
- function u() {
398
- t(o).state === "ready" ? f() : t(o).state === "recording" && q();
399
+ function D() {
400
+ t(e).state === "ready" ? u() : t(e).state === "recording" && _();
399
401
  }
400
- async function f() {
401
- const a = await navigator.mediaDevices.getUserMedia({
402
- audio: { deviceId: i() ? { exact: i() } : void 0 }
403
- }), c = [];
404
- n = new MediaRecorder(a), n.ondataavailable = (d) => c.push(d.data), n.onstop = () => {
405
- t(o).state === "recording" && (a.getTracks().forEach((d) => d.stop()), s()(URL.createObjectURL(new Blob(c, { type: n.mimeType }))), t(o).state = "ready");
406
- }, n.start();
407
- const m = () => {
408
- t(o).state === "recording" && (t(o).timeElapsed += 1, setTimeout(m, 1e3));
402
+ async function u() {
403
+ const l = await navigator.mediaDevices.getUserMedia({
404
+ audio: {
405
+ deviceId: a() ? { exact: a() } : void 0,
406
+ autoGainControl: !0,
407
+ noiseSuppression: !0
408
+ }
409
+ }), p = [];
410
+ v = new MediaRecorder(l), v.ondataavailable = (c) => p.push(c.data), g = new AudioContext();
411
+ const x = g.createAnalyser();
412
+ x.fftSize = 256, g.createMediaStreamSource(l).connect(x);
413
+ const E = new Uint8Array(x.frequencyBinCount);
414
+ let h = 0;
415
+ function k(c) {
416
+ if (t(e).state !== "recording") return;
417
+ x.getByteTimeDomainData(E);
418
+ let L = 0;
419
+ for (let S = 0; S < E.length; S++) {
420
+ const M = (E[S] - 128) / 128;
421
+ L += M * M;
422
+ }
423
+ const R = Math.sqrt(L / E.length), z = Math.min(1, R * 4);
424
+ c - h >= d && (t(e).waveformSamples = [...t(e).waveformSamples, Math.round(z * 100)], h = c), requestAnimationFrame(k);
425
+ }
426
+ v.onstop = () => {
427
+ if (t(e).state !== "recording")
428
+ return;
429
+ l.getTracks().forEach((L) => L.stop()), g?.close();
430
+ const c = t(e).waveformSamples;
431
+ t(e).waveformSamples = [], s()({
432
+ url: URL.createObjectURL(new Blob(p, { type: v.mimeType })),
433
+ waveform: c
434
+ }), t(e).state = "ready";
435
+ }, v.start();
436
+ const i = () => {
437
+ t(e).state === "recording" && (t(e).timeElapsed += 1, setTimeout(i, 1e3));
409
438
  };
410
- setTimeout(m, 1e3), t(o).state = "recording";
439
+ setTimeout(i, 1e3), t(e).state = "recording", k();
411
440
  }
412
- function q() {
413
- n?.stop();
441
+ function _() {
442
+ v?.stop();
414
443
  }
415
- var x = {
444
+ var w = {
416
445
  get deviceId() {
417
- return i();
446
+ return a();
418
447
  },
419
- set deviceId(a = "") {
420
- i(a), B();
448
+ set deviceId(l = "") {
449
+ a(l), H();
421
450
  },
422
451
  get onDone() {
423
452
  return s();
424
453
  },
425
- set onDone(a) {
426
- s(a), B();
454
+ set onDone(l) {
455
+ s(l), H();
427
456
  }
428
- }, _ = fe(), M = T(_);
457
+ }, y = Ee(), q = C(y);
429
458
  {
430
- let a = fr(() => t(o).state === "recording" && "recording");
431
- nr(M, {
432
- onclick: u,
459
+ let l = nr(() => t(e).state === "recording" && "recording");
460
+ er(q, {
461
+ onclick: D,
433
462
  get type() {
434
- return t(a);
463
+ return t(l);
435
464
  },
436
- children: (c, m) => {
437
- var d = de(), g = Q(d), l = L(g, 2);
465
+ children: (p, x) => {
466
+ var A = qe(), E = X(A), h = O(E, 2);
438
467
  {
439
- var p = (y) => {
440
- var b = vr("Record");
441
- k(y, b);
442
- }, v = (y) => {
443
- var b = pr(), h = Q(b);
468
+ var k = (c) => {
469
+ var L = dr("Record");
470
+ m(c, L);
471
+ }, i = (c) => {
472
+ var L = rr(), R = X(L);
444
473
  {
445
- var D = (A) => {
446
- var K = vr("Recording");
447
- k(A, K);
474
+ var z = (S) => {
475
+ var M = dr("Recording");
476
+ m(S, M);
448
477
  };
449
- G(
450
- h,
451
- (A) => {
452
- t(o).state === "recording" && A(D);
478
+ F(
479
+ R,
480
+ (S) => {
481
+ t(e).state === "recording" && S(z);
453
482
  },
454
483
  !0
455
484
  );
456
485
  }
457
- k(y, b);
486
+ m(c, L);
458
487
  };
459
- G(l, (y) => {
460
- t(o).state === "ready" ? y(p) : y(v, !1);
488
+ F(h, (c) => {
489
+ t(e).state === "ready" ? c(k) : c(i, !1);
461
490
  });
462
491
  }
463
- N(() => X(
464
- g,
492
+ G(() => tr(
493
+ E,
465
494
  1,
466
- sr([
495
+ cr([
467
496
  "record-icon",
468
- t(o).state === "recording" && "record-icon--is-recording"
497
+ t(e).state === "recording" && "record-icon--is-recording"
469
498
  ]),
470
- "svelte-11ls49v"
471
- )), k(c, d);
499
+ "svelte-fc16qh"
500
+ )), m(p, A);
472
501
  },
473
502
  $$slots: { default: !0 }
474
503
  });
475
504
  }
476
- var w = L(M, 2);
505
+ var I = O(q, 2);
477
506
  {
478
- let a = fr(() => t(o).state === "recording");
479
- Sr(w, {
507
+ let l = nr(() => t(e).state === "recording");
508
+ $r(I, {
480
509
  get disabled() {
481
- return t(a);
510
+ return t(l);
482
511
  },
483
512
  get deviceId() {
484
- return i();
513
+ return a();
485
514
  },
486
- set deviceId(c) {
487
- i(c);
515
+ set deviceId(p) {
516
+ a(p);
488
517
  }
489
518
  });
490
519
  }
491
- var C = L(w, 2);
520
+ var n = O(I, 2);
492
521
  {
493
- var E = (a) => {
494
- var c = le(), m = T(c);
495
- S(c), N((d, g) => Y(m, `${d ?? ""}:${g ?? ""}`), [
496
- () => Math.floor(t(o).timeElapsed / 60).toString(),
497
- () => (t(o).timeElapsed % 60).toString().padStart(2, "0")
498
- ]), k(a, c);
522
+ var f = (l) => {
523
+ var p = Ie(), x = C(p), A = C(x);
524
+ ae(A, {
525
+ get data() {
526
+ return t(e).waveformSamples;
527
+ }
528
+ }), $(x);
529
+ var E = O(x, 2), h = C(E);
530
+ $(E), $(p), G((k, i) => _r(h, `${k ?? ""}:${i ?? ""}`), [
531
+ () => Math.floor(t(e).timeElapsed / 60).toString(),
532
+ () => (t(e).timeElapsed % 60).toString().padStart(2, "0")
533
+ ]), m(l, p);
499
534
  };
500
- G(C, (a) => {
501
- t(o).state === "recording" && a(E);
535
+ F(n, (l) => {
536
+ t(e).state === "recording" && l(f);
502
537
  });
503
538
  }
504
- return S(_), N(() => X(
505
- _,
539
+ return $(y), G(() => tr(
540
+ y,
506
541
  1,
507
- sr([
542
+ cr([
508
543
  "container",
509
- t(o).state === "recording" && "is-recording"
544
+ t(e).state === "recording" && "is-recording"
510
545
  ]),
511
- "svelte-11ls49v"
512
- )), k(e, _), tr(x);
513
- }
514
- Z(Er, { deviceId: {}, onDone: {} }, [], [], !0);
515
- function ve(e, r, i) {
516
- I(r, e.target.value, !0), i()(e.target.value);
546
+ "svelte-fc16qh"
547
+ )), m(o, y), ur(w);
517
548
  }
518
- var pe = $("<option> </option>"), ge = xr('<rect width="10" fill="#4A90E2"></rect>'), ye = $(`<div><label for="mic-select" class="svelte-zkiuts">Input Device</label> <select id="mic-select" class="svelte-zkiuts"></select> <div><div>Mic Test</div> <div>Having mic issues? Start a test and say something fun and see if it picks up your voice.</div> <div><button> </button> <audio></audio> <svg style="vertical-align: middle; margin-left: 1em; border: 1px solid #ccc; background:
519
- #f9f9f9;" fill="none" xmlns="http://www.w3.org/2000/svg"></svg></div></div></div>`);
520
- const be = {
521
- hash: "svelte-zkiuts",
522
- code: "label.svelte-zkiuts {display:block;margin-bottom:0.5em;}select.svelte-zkiuts {display:block;font-size:inherit;}"
523
- };
524
- function me(e, r) {
525
- rr(r, !0), er(e, be);
526
- const i = P(r, "onSelectMic", 7);
527
- let s = j(ir([])), o = j(null), n = null, u = j(!1), f = j(ir(Array(15).fill(1)));
528
- wr(() => {
529
- const d = async () => I(s, await Mr(), !0);
530
- navigator.mediaDevices.ondevicechange = d, d();
531
- });
532
- async function q() {
533
- if (n) {
534
- if (t(u)) {
535
- n.srcObject.getTracks().forEach((d) => d.stop()), I(u, !1);
536
- return;
537
- }
538
- I(f, Array(15).fill(1), !0), I(u, !0);
539
- try {
540
- let A = function(F) {
541
- if (!t(u)) {
542
- v.close();
543
- return;
544
- }
545
- const R = new Uint8Array(b.fftSize);
546
- b.getByteTimeDomainData(R);
547
- let z = 0;
548
- for (let U = 0; U < R.length; U++) {
549
- const V = (R[U] - 128) / 128;
550
- z += V * V;
551
- }
552
- const O = Math.sqrt(z / R.length);
553
- D.push(O), requestAnimationFrame(A);
554
- };
555
- const d = await navigator.mediaDevices.getUserMedia({
556
- audio: {
557
- deviceId: t(o) ? { exact: t(o) } : void 0
558
- }
559
- }), g = new MediaRecorder(d), l = [];
560
- let p;
561
- g.ondataavailable = (F) => F.data.size && l.push(F.data), g.onstop = () => {
562
- const F = new Blob(l, { type: g.mimeType }), R = URL.createObjectURL(F);
563
- n.src = R, n.play(), d.getTracks().forEach((z) => z.stop()), I(u, !1), clearInterval(p);
564
- }, g.start(), setTimeout(() => g.stop(), 5e3);
565
- const v = new (window.AudioContext || window.webkitAudioContext)(), y = v.createMediaStreamSource(d), b = v.createAnalyser();
566
- y.connect(b), b.fftSize = 2048;
567
- const h = (F, R) => {
568
- if (F <= 0) return 0;
569
- const z = 20 * Math.log10(F), O = -50, U = -10, W = (Math.min(U, Math.max(O, z)) - O) / (U - O);
570
- return Math.round(W * R);
571
- };
572
- let D = [];
573
- A(0);
574
- let K = 0;
575
- p = setInterval(
576
- () => {
577
- const F = D.reduce((z, O) => z + O, 0) / D.length, R = h(F, 100);
578
- t(f)[K++] = R, D = [];
579
- },
580
- 300
581
- );
582
- } catch (d) {
583
- console.error("Error during mic check:", d);
584
- }
585
- }
586
- }
587
- var x = {
588
- get onSelectMic() {
589
- return i();
590
- },
591
- set onSelectMic(d) {
592
- i(d), B();
593
- }
594
- }, _ = ye(), M = L(T(_), 2);
595
- M.__change = [ve, o, i], lr(M, 21, () => t(s), ur, (d, g) => {
596
- var l = pe(), p = T(l, !0);
597
- S(l);
598
- var v = {};
599
- N(() => {
600
- Y(p, t(g).label), v !== (v = t(g).id) && (l.value = (l.__value = t(g).id) ?? "");
601
- }), k(d, l);
602
- }), S(M);
603
- var w = L(M, 2), C = L(T(w), 4), E = T(C);
604
- E.__click = q;
605
- var a = T(E, !0);
606
- S(E);
607
- var c = L(E, 2);
608
- kr(c, (d) => n = d, () => n);
609
- var m = L(c, 2);
610
- return lr(m, 21, () => t(f), ur, (d, g, l) => {
611
- var p = ge();
612
- ar(p, "x", l * 12), N(() => {
613
- ar(p, "y", 100 - t(g)), ar(p, "height", t(g));
614
- }), k(d, p);
615
- }), S(m), S(C), S(w), S(_), N(() => Y(a, t(u) ? "Stop Testing" : "Let's Check")), k(e, _), tr(x);
616
- }
617
- cr(["change", "click"]);
618
- Z(me, { onSelectMic: {} }, [], [], !0);
619
- var he = $('<div><p>Recording saved! ID:</p> <code><pre> </pre></code></div> <p><button class="primary">Record Again</button></p>', 1), _e = $("<p>Processing your recording…</p>"), we = xr('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" style="fill: currentColor; width: 1em; height: 1em;"><path d="M232.7 69.9L224 96L128 96C110.3 96 96 110.3 96 128C96 145.7 110.3 160 128 160L512 160C529.7 160 544 145.7 544 128C544 110.3 529.7 96 512 96L416 96L407.3 69.9C402.9 56.8 390.7 48 376.9 48L263.1 48C249.3 48 237.1 56.8 232.7 69.9zM512 208L128 208L149.1 531.1C150.7 556.4 171.7 576 197 576L443 576C468.3 576 489.3 556.4 490.9 531.1L512 208z"></path></svg>'), ke = $('<div class="confirm svelte-1i5eb1b"><!> <!> <!></div>'), xe = $('<div class="row"><!></div>'), Ie = $('<div class="recorder svelte-1i5eb1b" role="group" aria-label="44 audio recorder"><!></div>');
620
- const Me = {
621
- hash: "svelte-1i5eb1b",
549
+ lr(Ar, { deviceId: {}, onDone: {} }, [], [], !0);
550
+ var Se = T('<p class="status-message svelte-14spe77">Recording saved successfully!</p>'), Te = T('<p class="status-message svelte-14spe77">Uploading...</p>'), Ce = T('<p class="status-message svelte-14spe77">Processing...</p>'), $e = T('<div class="error svelte-14spe77"><p class="svelte-14spe77"> </p> <!></div>'), Ae = ie('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" style="fill: currentColor; width: 1em; height: 1em;"><path d="M232.7 69.9L224 96L128 96C110.3 96 96 110.3 96 128C96 145.7 110.3 160 128 160L512 160C529.7 160 544 145.7 544 128C544 110.3 529.7 96 512 96L416 96L407.3 69.9C402.9 56.8 390.7 48 376.9 48L263.1 48C249.3 48 237.1 56.8 232.7 69.9zM512 208L128 208L149.1 531.1C150.7 556.4 171.7 576 197 576L443 576C468.3 576 489.3 556.4 490.9 531.1L512 208z"></path></svg>'), Re = T('<div class="confirm svelte-14spe77"><!> <div class="confirm-actions svelte-14spe77"><!> <!></div></div>'), Me = T('<div class="row"><!></div>'), De = T('<div class="recorder svelte-14spe77" role="group" aria-label="44 audio recorder"><!></div>');
551
+ const ze = {
552
+ hash: "svelte-14spe77",
622
553
  code: `:host {--fortyfour-recorder-bg-0: #2d2d2d;--fortyfour-recorder-bg-1: #393939;--fortyfour-recorder-bg-2: #515151;--fortyfour-recorder-bg-primary: hsla(210, 50%, 60%, 1);--fortyfour-recorder-bg-primary-light: hsla(210, 55%, 64%, 1);--fortyfour-recorder-color-0: #d3d0c8;--fortyfour-recorder-color-primary: hsla(0, 0%, 100%, 0.9);--fortyfour-recorder-red-bg: #f2777a;--fortyfour-recorder-red-color: #ffffff;--fortyfour-recorder-font-size-lg: 1.25rem;--fortyfour-recorder-font-size-md: 1rem;--fortyfour-recorder-font-size-sm: 0.875rem;--fortyfour-recorder-font-size-xs: 0.6825rem;--fortyfour-recorder-radius-xl: 3rem;--fortyfour-recorder-radius-lg: 1rem;--fortyfour-recorder-radius-md: 0.5rem;--fortyfour-recorder-spacing-md: 1rem;--fortyfour-recorder-spacing-sm-1: 0.85rem;--fortyfour-recorder-spacing-sm: 0.5rem;--fortyfour-recorder-radius: var(--fortyfour-recorder-radius-lg);--fortyfour-recorder-bg: var(--fortyfour-recorder-bg-0);--fortyfour-recorder-color: var(--fortyfour-recorder-color-0);--fortyfour-recorder-btn-radius: var(--fortyfour-recorder-radius-xl);--fortyfour-recorder-btn-padding: var(--fortyfour-recorder-spacing-sm)
623
- var(--fortyfour-recorder-spacing-sm-1);--fortyfour-recorder-btn-gap: var(--fortyfour-recorder-spacing-sm);--fortyfour-recorder-btn-bg: var(--fortyfour-recorder-bg-1);--fortyfour-recorder-btn-bg-hover: var(--fortyfour-recorder-bg-2);--fortyfour-recorder-btn-color: var(--fortyfour-recorder-color-0);--fortyfour-recorder-btn-color-hover: var(--fortyfour-recorder-color-0);--fortyfour-recorder-btn-primary-bg: var(--fortyfour-recorder-bg-primary);--fortyfour-recorder-btn-primary-bg-hover: var(--fortyfour-recorder-bg-primary-light);--fortyfour-recorder-btn-primary-color: var(--fortyfour-recorder-color-primary);--fortyfour-recorder-btn-primary-color-hover: var(--fortyfour-recorder-color-primary);--fortyfour-recorder-select-bg: var(--fortyfour-recorder-bg-0);--fortyfour-recorder-select-bg-hover: var(--fortyfour-recorder-bg-1);--fortyfour-recorder-select-border: 1px solid var(--fortyfour-recorder-bg-1);--fortyfour-recorder-select-radius: var(--fortyfour-recorder-radius-md);--fortyfour-recorder-select-shadow: 0 4px 8px hsla(0, 0%, 0%, 0.1);--fortyfour-recorder-select-color: var(--fortyfour-recorder-color-0);--fortyfour-recorder-select-font-size: var(--fortyfour-recorder-font-size-xs);}.recorder.svelte-1i5eb1b {padding:var(--fortyfour-recorder-spacing-md);border-radius:var(--fortyfour-recorder-radius);background:var(--fortyfour-recorder-bg);color:var(--fortyfour-recorder-color);}.confirm.svelte-1i5eb1b {display:flex;align-items:stretch;gap:var(--fortyfour-recorder-spacing-sm);}`
554
+ var(--fortyfour-recorder-spacing-sm-1);--fortyfour-recorder-btn-gap: var(--fortyfour-recorder-spacing-sm);--fortyfour-recorder-btn-bg: var(--fortyfour-recorder-bg-1);--fortyfour-recorder-btn-bg-hover: var(--fortyfour-recorder-bg-2);--fortyfour-recorder-btn-color: var(--fortyfour-recorder-color-0);--fortyfour-recorder-btn-color-hover: var(--fortyfour-recorder-color-0);--fortyfour-recorder-btn-primary-bg: var(--fortyfour-recorder-bg-primary);--fortyfour-recorder-btn-primary-bg-hover: var(--fortyfour-recorder-bg-primary-light);--fortyfour-recorder-btn-primary-color: var(--fortyfour-recorder-color-primary);--fortyfour-recorder-btn-primary-color-hover: var(--fortyfour-recorder-color-primary);--fortyfour-recorder-select-bg: var(--fortyfour-recorder-bg-0);--fortyfour-recorder-select-bg-hover: var(--fortyfour-recorder-bg-1);--fortyfour-recorder-select-border: 1px solid var(--fortyfour-recorder-bg-1);--fortyfour-recorder-select-radius: var(--fortyfour-recorder-radius-md);--fortyfour-recorder-select-shadow: 0 4px 8px hsla(0, 0%, 0%, 0.1);--fortyfour-recorder-select-color: var(--fortyfour-recorder-color-0);--fortyfour-recorder-select-font-size: var(--fortyfour-recorder-font-size-xs);}.recorder.svelte-14spe77 {padding:var(--fortyfour-recorder-spacing-md);border-radius:var(--fortyfour-recorder-radius);background:var(--fortyfour-recorder-bg);color:var(--fortyfour-recorder-color);}.confirm.svelte-14spe77 {display:flex;align-items:center;gap:var(--fortyfour-recorder-spacing-sm);}.confirm-actions.svelte-14spe77 {display:flex;gap:var(--fortyfour-recorder-spacing-sm);flex-shrink:0;}.error.svelte-14spe77 {display:flex;flex-direction:column;gap:var(--fortyfour-recorder-spacing-sm);}.error.svelte-14spe77 p:where(.svelte-14spe77) {color:var(--fortyfour-recorder-red-bg);margin:0;}.status-message.svelte-14spe77 {margin:0;text-align:center;}`
624
555
  };
625
- function Se(e, r) {
626
- rr(r, !0), er(e, Me);
627
- const i = r.$$host;
628
- let s = P(r, "projectId", 7), o = P(r, "labelsStr", 7, ""), n = P(r, "apiHost", 7, "api.44.audio");
629
- const u = o() ? o().split(",").map((l) => l.trim()) : [];
630
- let f = j(
556
+ function Fe(o, r) {
557
+ fr(r, !0), vr(o, ze);
558
+ const a = r.$$host;
559
+ let s = B(r, "sessionId", 7), d = B(r, "labels", 7, ""), e = B(r, "apiHost", 7, "api.44.audio");
560
+ const v = nr(() => d() ? d().split(",").map((i) => i.trim()).filter(Boolean) : []), g = 2e3, D = 30;
561
+ let u = P(
631
562
  "ready"
632
- // "ready", "recording", "confirm", "processing", "done"
633
- ), q = j(null), x = j(null), _ = j("");
634
- async function M() {
635
- if (t(f) !== "confirm" || !t(x))
636
- return;
637
- const l = new FormData();
638
- l.append("projectId", s()), u.forEach((b) => l.append("labels", b));
639
- const v = await (await fetch(t(x))).blob(), y = new File([v], "recording.audio", { type: v.type });
640
- l.append("audioFile", y);
641
- try {
642
- const h = await (await fetch(`https://${n()}/recordings`, { method: "POST", body: l })).json();
643
- I(q, h.recordingId, !0), I(f, "processing");
644
- let D = !1;
645
- for (; !D; )
646
- await new Promise((A) => setTimeout(A, 2e3)), D = await C(t(q));
647
- i.dispatchEvent(new CustomEvent("recording-complete", { detail: { recordingId: t(q) } })), I(f, "done");
648
- } catch (b) {
649
- console.error("Error saving recording:", b), I(f, "ready");
563
+ // "ready", "recording", "confirm", "uploading", "processing", "done", "error"
564
+ ), _ = P(null), w = P(null), y = P(null), q = P(""), I = P(null);
565
+ async function n() {
566
+ if (!(t(u) !== "confirm" || !t(w))) {
567
+ b(u, "uploading");
568
+ try {
569
+ const i = await fetch(t(w));
570
+ if (!i.ok)
571
+ throw new Error("Failed to load audio data");
572
+ const c = await i.blob(), L = new File([c], "recording.audio", { type: c.type }), R = new FormData();
573
+ R.append("sessionId", s()), t(v).forEach((Q) => R.append("labels", Q)), R.append("audioFile", L), t(y) && R.append("waveform", JSON.stringify(t(y)));
574
+ const z = await fetch(`https://${e()}/v1/recordings`, { method: "POST", body: R });
575
+ if (!z.ok)
576
+ throw new Error(`Upload failed: ${z.status}`);
577
+ const S = await z.json();
578
+ b(_, S.recordingId, !0), b(u, "processing");
579
+ let M = !1, or = 0;
580
+ for (; !M && or < D; )
581
+ await new Promise((Q) => setTimeout(Q, g)), M = await l(t(_)), or++;
582
+ if (!M) {
583
+ b(I, "Recording processing timeout. Please try again."), b(u, "error");
584
+ return;
585
+ }
586
+ a.dispatchEvent(new CustomEvent("recording-complete", { detail: { recordingId: t(_) } })), b(u, "done");
587
+ } catch (i) {
588
+ console.error("Error saving recording:", i), b(I, i.message || "Failed to save recording", !0), b(u, "error");
589
+ }
650
590
  }
651
591
  }
652
- function w() {
653
- I(x, null), I(f, "ready");
592
+ function f() {
593
+ b(w, null), b(y, null), b(u, "ready");
654
594
  }
655
- async function C(l) {
595
+ async function l(i) {
656
596
  try {
657
- const p = await fetch(`https://44hz.zuuu.us/recordings/${l}/status`);
658
- if (!p.ok)
597
+ const c = await fetch(`https://${e()}/v1/recordings/${i}/status`);
598
+ if (!c.ok)
659
599
  throw new Error("Failed to fetch data");
660
- return (await p.json()).status === "ready";
661
- } catch (p) {
662
- return console.error(p), !1;
600
+ return (await c.json()).status === "ready";
601
+ } catch (c) {
602
+ return console.error(c), !1;
663
603
  }
664
604
  }
665
- function E(l) {
666
- I(x, l, !0), I(f, "confirm");
605
+ function p(i) {
606
+ b(w, i.url, !0), b(y, i.waveform, !0), b(u, "confirm");
667
607
  }
668
- var a = {
669
- get projectId() {
608
+ var x = {
609
+ get sessionId() {
670
610
  return s();
671
611
  },
672
- set projectId(l) {
673
- s(l), B();
612
+ set sessionId(i) {
613
+ s(i), H();
674
614
  },
675
- get labelsStr() {
676
- return o();
615
+ get labels() {
616
+ return d();
677
617
  },
678
- set labelsStr(l = "") {
679
- o(l), B();
618
+ set labels(i = "") {
619
+ d(i), H();
680
620
  },
681
621
  get apiHost() {
682
- return n();
622
+ return e();
683
623
  },
684
- set apiHost(l = "api.44.audio") {
685
- n(l), B();
624
+ set apiHost(i = "api.44.audio") {
625
+ e(i), H();
686
626
  }
687
- }, c = Ie(), m = T(c);
627
+ }, A = De(), E = C(A);
688
628
  {
689
- var d = (l) => {
690
- var p = he(), v = Q(p), y = L(T(v), 2), b = T(y), h = T(b, !0);
691
- S(b), S(y), S(v);
692
- var D = L(v, 2), A = T(D);
693
- A.__click = w, S(D), N(() => Y(h, t(q))), k(l, p);
694
- }, g = (l) => {
695
- var p = pr(), v = Q(p);
629
+ var h = (i) => {
630
+ var c = Se();
631
+ m(i, c);
632
+ }, k = (i) => {
633
+ var c = rr(), L = X(c);
696
634
  {
697
- var y = (h) => {
698
- var D = _e();
699
- k(h, D);
700
- }, b = (h) => {
701
- var D = pr(), A = Q(D);
635
+ var R = (S) => {
636
+ var M = Te();
637
+ m(S, M);
638
+ }, z = (S) => {
639
+ var M = rr(), or = X(M);
702
640
  {
703
- var K = (R) => {
704
- var z = ke(), O = T(z);
705
- Hr(O, {
706
- get audioURL() {
707
- return t(x);
708
- }
709
- });
710
- var U = L(O, 2);
711
- nr(U, {
712
- onclick: w,
713
- children: (W, Cr) => {
714
- var dr = we();
715
- k(W, dr);
716
- },
717
- $$slots: { default: !0 }
718
- });
719
- var V = L(U, 2);
720
- nr(V, {
721
- type: "primary",
722
- onclick: M,
723
- children: (W, Cr) => {
724
- Gr();
725
- var dr = vr("Save");
726
- k(W, dr);
727
- },
728
- $$slots: { default: !0 }
729
- }), S(z), gr(1, z, () => hr, () => ({ y: 20, duration: 700 })), k(R, z);
730
- }, F = (R) => {
731
- var z = xe(), O = T(z);
732
- Er(O, {
733
- onDone: E,
734
- get deviceId() {
735
- return t(_);
736
- },
737
- set deviceId(U) {
738
- I(_, U, !0);
739
- }
740
- }), S(z), gr(1, z, () => hr, () => ({ y: -20, duration: 700 })), k(R, z);
641
+ var Q = (V) => {
642
+ var ar = Ce();
643
+ m(V, ar);
644
+ }, Rr = (V) => {
645
+ var ar = rr(), Mr = X(ar);
646
+ {
647
+ var Dr = (W) => {
648
+ var J = $e(), Y = C(J), pr = C(Y);
649
+ $(Y);
650
+ var gr = O(Y, 2);
651
+ er(gr, {
652
+ onclick: () => b(u, "confirm"),
653
+ children: (j, N) => {
654
+ xr();
655
+ var K = dr("Try Again");
656
+ m(j, K);
657
+ },
658
+ $$slots: { default: !0 }
659
+ }), $(J), G(() => _r(pr, `Error: ${t(I) ?? ""}`)), m(W, J);
660
+ }, zr = (W) => {
661
+ var J = rr(), Y = X(J);
662
+ {
663
+ var pr = (j) => {
664
+ var N = Re(), K = C(N);
665
+ se(K, {
666
+ get audioURL() {
667
+ return t(w);
668
+ },
669
+ get waveform() {
670
+ return t(y);
671
+ }
672
+ });
673
+ var sr = O(K, 2), wr = C(sr);
674
+ er(wr, {
675
+ onclick: f,
676
+ children: (yr, Nr) => {
677
+ var mr = Ae();
678
+ m(yr, mr);
679
+ },
680
+ $$slots: { default: !0 }
681
+ });
682
+ var Fr = O(wr, 2);
683
+ er(Fr, {
684
+ type: "primary",
685
+ onclick: n,
686
+ children: (yr, Nr) => {
687
+ xr();
688
+ var mr = dr("Save");
689
+ m(yr, mr);
690
+ },
691
+ $$slots: { default: !0 }
692
+ }), $(sr), $(N), br(1, N, () => Ir, () => ({ y: 20, duration: 700 })), m(j, N);
693
+ }, gr = (j) => {
694
+ var N = Me(), K = C(N);
695
+ Ar(K, {
696
+ onDone: p,
697
+ get deviceId() {
698
+ return t(q);
699
+ },
700
+ set deviceId(sr) {
701
+ b(q, sr, !0);
702
+ }
703
+ }), $(N), br(1, N, () => Ir, () => ({ y: -20, duration: 700 })), m(j, N);
704
+ };
705
+ F(
706
+ Y,
707
+ (j) => {
708
+ t(u) === "confirm" ? j(pr) : j(gr, !1);
709
+ },
710
+ !0
711
+ );
712
+ }
713
+ m(W, J);
714
+ };
715
+ F(
716
+ Mr,
717
+ (W) => {
718
+ t(u) === "error" ? W(Dr) : W(zr, !1);
719
+ },
720
+ !0
721
+ );
722
+ }
723
+ m(V, ar);
741
724
  };
742
- G(
743
- A,
744
- (R) => {
745
- t(f) === "confirm" ? R(K) : R(F, !1);
725
+ F(
726
+ or,
727
+ (V) => {
728
+ t(u) === "processing" ? V(Q) : V(Rr, !1);
746
729
  },
747
730
  !0
748
731
  );
749
732
  }
750
- k(h, D);
733
+ m(S, M);
751
734
  };
752
- G(
753
- v,
754
- (h) => {
755
- t(f) === "processing" ? h(y) : h(b, !1);
735
+ F(
736
+ L,
737
+ (S) => {
738
+ t(u) === "uploading" ? S(R) : S(z, !1);
756
739
  },
757
740
  !0
758
741
  );
759
742
  }
760
- k(l, p);
743
+ m(i, c);
761
744
  };
762
- G(m, (l) => {
763
- t(f) === "done" && t(q) ? l(d) : l(g, !1);
745
+ F(E, (i) => {
746
+ t(u) === "done" ? i(h) : i(k, !1);
764
747
  });
765
748
  }
766
- return S(c), k(e, c), tr(a);
749
+ return $(A), m(o, A), ur(x);
767
750
  }
768
- cr(["click"]);
769
- customElements.define("fortyfour-audio-recorder", Z(
770
- Se,
751
+ customElements.define("fortyfour-audio-recorder", lr(
752
+ Fe,
771
753
  {
772
754
  apiHost: { attribute: "api-host" },
773
- projectId: { attribute: "project-id" },
774
- labels: { attribute: "labels" },
775
- labelsStr: {}
755
+ sessionId: { attribute: "session-id" },
756
+ labels: { attribute: "labels" }
776
757
  },
777
758
  [],
778
759
  [],