@44-audio/components 0.1.0-dev.15 → 0.1.0-dev.18

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