dictate-button 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,3 +12,12 @@ declare module 'solid-js' {
12
12
  }
13
13
  }
14
14
  }
15
+ type AddButtonEventListenersOptions = {
16
+ threshold?: number;
17
+ preventScroll?: boolean;
18
+ onShortTap?: (e: PointerEvent) => void;
19
+ onLongPressStart?: (e: PointerEvent) => void;
20
+ onLongPressEnd?: (e: PointerEvent) => void;
21
+ };
22
+ export declare function addButtonEventListeners(element: HTMLButtonElement, { threshold, preventScroll, onShortTap, onLongPressStart, onLongPressEnd, }?: AddButtonEventListenersOptions): () => void;
23
+ export {};
@@ -1,102 +1,110 @@
1
- const wt = (t, e) => t === e, B = {
2
- equals: wt
1
+ const St = (t, n) => t === n, j = {
2
+ equals: St
3
3
  };
4
- let vt = ht;
5
- const S = 1, R = 2, lt = {
4
+ let pt = _t;
5
+ const x = 1, N = 2, ht = {
6
6
  owned: null,
7
7
  cleanups: null,
8
8
  context: null,
9
9
  owner: null
10
10
  };
11
- var y = null;
12
- let V = null, Ct = null, p = null, g = null, m = null, L = 0;
13
- function mt(t, e) {
14
- const n = p, o = y, r = t.length === 0, i = e === void 0 ? o : e, l = r ? lt : {
11
+ var b = null;
12
+ let W = null, xt = null, g = null, w = null, E = null, z = 0;
13
+ function At(t, n) {
14
+ const e = g, o = b, r = t.length === 0, i = n === void 0 ? o : n, l = r ? ht : {
15
15
  owned: null,
16
16
  cleanups: null,
17
17
  context: i ? i.context : null,
18
18
  owner: i
19
- }, s = r ? t : () => t(() => W(() => $(l)));
20
- y = l, p = null;
19
+ }, s = r ? t : () => t(() => V(() => $(l)));
20
+ b = l, g = null;
21
21
  try {
22
- return T(s, !0);
22
+ return M(s, !0);
23
23
  } finally {
24
- p = n, y = o;
24
+ g = e, b = o;
25
25
  }
26
26
  }
27
- function at(t, e) {
28
- e = e ? Object.assign({}, B, e) : B;
29
- const n = {
27
+ function gt(t, n) {
28
+ n = n ? Object.assign({}, j, n) : j;
29
+ const e = {
30
30
  value: t,
31
31
  observers: null,
32
32
  observerSlots: null,
33
- comparator: e.equals || void 0
34
- }, o = (r) => (typeof r == "function" && (r = r(n.value)), ut(n, r));
35
- return [ct.bind(n), o];
36
- }
37
- function I(t, e, n) {
38
- const o = dt(t, e, !1, S);
39
- K(o);
40
- }
41
- function St(t, e, n) {
42
- n = n ? Object.assign({}, B, n) : B;
43
- const o = dt(t, e, !0, 0);
44
- return o.observers = null, o.observerSlots = null, o.comparator = n.equals || void 0, K(o), ct.bind(o);
45
- }
46
- function W(t) {
47
- if (p === null) return t();
48
- const e = p;
49
- p = null;
33
+ comparator: n.equals || void 0
34
+ }, o = (r) => (typeof r == "function" && (r = r(e.value)), yt(e, r));
35
+ return [bt.bind(e), o];
36
+ }
37
+ function D(t, n, e) {
38
+ const o = Z(t, n, !1, x);
39
+ L(o);
40
+ }
41
+ function kt(t, n, e) {
42
+ pt = Mt;
43
+ const o = Z(t, n, !1, x);
44
+ o.user = !0, E ? E.push(o) : L(o);
45
+ }
46
+ function Tt(t, n, e) {
47
+ e = e ? Object.assign({}, j, e) : j;
48
+ const o = Z(t, n, !0, 0);
49
+ return o.observers = null, o.observerSlots = null, o.comparator = e.equals || void 0, L(o), bt.bind(o);
50
+ }
51
+ function V(t) {
52
+ if (g === null) return t();
53
+ const n = g;
54
+ g = null;
50
55
  try {
51
56
  return t();
52
57
  } finally {
53
- p = e;
58
+ g = n;
54
59
  }
55
60
  }
56
- function ct() {
61
+ function Pt(t) {
62
+ return b === null || (b.cleanups === null ? b.cleanups = [t] : b.cleanups.push(t)), t;
63
+ }
64
+ function bt() {
57
65
  if (this.sources && this.state)
58
- if (this.state === S) K(this);
66
+ if (this.state === x) L(this);
59
67
  else {
60
- const t = g;
61
- g = null, T(() => D(this), !1), g = t;
68
+ const t = w;
69
+ w = null, M(() => K(this), !1), w = t;
62
70
  }
63
- if (p) {
71
+ if (g) {
64
72
  const t = this.observers ? this.observers.length : 0;
65
- p.sources ? (p.sources.push(this), p.sourceSlots.push(t)) : (p.sources = [this], p.sourceSlots = [t]), this.observers ? (this.observers.push(p), this.observerSlots.push(p.sources.length - 1)) : (this.observers = [p], this.observerSlots = [p.sources.length - 1]);
73
+ g.sources ? (g.sources.push(this), g.sourceSlots.push(t)) : (g.sources = [this], g.sourceSlots = [t]), this.observers ? (this.observers.push(g), this.observerSlots.push(g.sources.length - 1)) : (this.observers = [g], this.observerSlots = [g.sources.length - 1]);
66
74
  }
67
75
  return this.value;
68
76
  }
69
- function ut(t, e, n) {
77
+ function yt(t, n, e) {
70
78
  let o = t.value;
71
- return (!t.comparator || !t.comparator(o, e)) && (t.value = e, t.observers && t.observers.length && T(() => {
79
+ return (!t.comparator || !t.comparator(o, n)) && (t.value = n, t.observers && t.observers.length && M(() => {
72
80
  for (let r = 0; r < t.observers.length; r += 1) {
73
- const i = t.observers[r], l = V && V.running;
74
- l && V.disposed.has(i), (l ? !i.tState : !i.state) && (i.pure ? g.push(i) : m.push(i), i.observers && pt(i)), l || (i.state = S);
81
+ const i = t.observers[r], l = W && W.running;
82
+ l && W.disposed.has(i), (l ? !i.tState : !i.state) && (i.pure ? w.push(i) : E.push(i), i.observers && wt(i)), l || (i.state = x);
75
83
  }
76
- if (g.length > 1e6)
77
- throw g = [], new Error();
78
- }, !1)), e;
84
+ if (w.length > 1e6)
85
+ throw w = [], new Error();
86
+ }, !1)), n;
79
87
  }
80
- function K(t) {
88
+ function L(t) {
81
89
  if (!t.fn) return;
82
90
  $(t);
83
- const e = L;
84
- xt(t, t.value, e);
91
+ const n = z;
92
+ $t(t, t.value, n);
85
93
  }
86
- function xt(t, e, n) {
94
+ function $t(t, n, e) {
87
95
  let o;
88
- const r = y, i = p;
89
- p = y = t;
96
+ const r = b, i = g;
97
+ g = b = t;
90
98
  try {
91
- o = t.fn(e);
99
+ o = t.fn(n);
92
100
  } catch (l) {
93
- return t.pure && (t.state = S, t.owned && t.owned.forEach($), t.owned = null), t.updatedAt = n + 1, gt(l);
101
+ return t.pure && (t.state = x, t.owned && t.owned.forEach($), t.owned = null), t.updatedAt = e + 1, vt(l);
94
102
  } finally {
95
- p = i, y = r;
103
+ g = i, b = r;
96
104
  }
97
- (!t.updatedAt || t.updatedAt <= n) && (t.updatedAt != null && "observers" in t ? ut(t, o) : t.value = o, t.updatedAt = n);
105
+ (!t.updatedAt || t.updatedAt <= e) && (t.updatedAt != null && "observers" in t ? yt(t, o) : t.value = o, t.updatedAt = e);
98
106
  }
99
- function dt(t, e, n, o = S, r) {
107
+ function Z(t, n, e, o = x, r) {
100
108
  const i = {
101
109
  fn: t,
102
110
  state: o,
@@ -105,140 +113,147 @@ function dt(t, e, n, o = S, r) {
105
113
  sources: null,
106
114
  sourceSlots: null,
107
115
  cleanups: null,
108
- value: e,
109
- owner: y,
110
- context: y ? y.context : null,
111
- pure: n
116
+ value: n,
117
+ owner: b,
118
+ context: b ? b.context : null,
119
+ pure: e
112
120
  };
113
- return y === null || y !== lt && (y.owned ? y.owned.push(i) : y.owned = [i]), i;
121
+ return b === null || b !== ht && (b.owned ? b.owned.push(i) : b.owned = [i]), i;
114
122
  }
115
- function ft(t) {
123
+ function F(t) {
116
124
  if (t.state === 0) return;
117
- if (t.state === R) return D(t);
118
- if (t.suspense && W(t.suspense.inFallback)) return t.suspense.effects.push(t);
119
- const e = [t];
120
- for (; (t = t.owner) && (!t.updatedAt || t.updatedAt < L); )
121
- t.state && e.push(t);
122
- for (let n = e.length - 1; n >= 0; n--)
123
- if (t = e[n], t.state === S)
124
- K(t);
125
- else if (t.state === R) {
126
- const o = g;
127
- g = null, T(() => D(t, e[0]), !1), g = o;
125
+ if (t.state === N) return K(t);
126
+ if (t.suspense && V(t.suspense.inFallback)) return t.suspense.effects.push(t);
127
+ const n = [t];
128
+ for (; (t = t.owner) && (!t.updatedAt || t.updatedAt < z); )
129
+ t.state && n.push(t);
130
+ for (let e = n.length - 1; e >= 0; e--)
131
+ if (t = n[e], t.state === x)
132
+ L(t);
133
+ else if (t.state === N) {
134
+ const o = w;
135
+ w = null, M(() => K(t, n[0]), !1), w = o;
128
136
  }
129
137
  }
130
- function T(t, e) {
131
- if (g) return t();
132
- let n = !1;
133
- e || (g = []), m ? n = !0 : m = [], L++;
138
+ function M(t, n) {
139
+ if (w) return t();
140
+ let e = !1;
141
+ n || (w = []), E ? e = !0 : E = [], z++;
134
142
  try {
135
143
  const o = t();
136
- return At(n), o;
144
+ return Lt(e), o;
137
145
  } catch (o) {
138
- n || (m = null), g = null, gt(o);
146
+ e || (E = null), w = null, vt(o);
139
147
  }
140
148
  }
141
- function At(t) {
142
- if (g && (ht(g), g = null), t) return;
143
- const e = m;
144
- m = null, e.length && T(() => vt(e), !1);
149
+ function Lt(t) {
150
+ if (w && (_t(w), w = null), t) return;
151
+ const n = E;
152
+ E = null, n.length && M(() => pt(n), !1);
145
153
  }
146
- function ht(t) {
147
- for (let e = 0; e < t.length; e++) ft(t[e]);
154
+ function _t(t) {
155
+ for (let n = 0; n < t.length; n++) F(t[n]);
156
+ }
157
+ function Mt(t) {
158
+ let n, e = 0;
159
+ for (n = 0; n < t.length; n++) {
160
+ const o = t[n];
161
+ o.user ? t[e++] = o : F(o);
162
+ }
163
+ for (n = 0; n < e; n++) F(t[n]);
148
164
  }
149
- function D(t, e) {
165
+ function K(t, n) {
150
166
  t.state = 0;
151
- for (let n = 0; n < t.sources.length; n += 1) {
152
- const o = t.sources[n];
167
+ for (let e = 0; e < t.sources.length; e += 1) {
168
+ const o = t.sources[e];
153
169
  if (o.sources) {
154
170
  const r = o.state;
155
- r === S ? o !== e && (!o.updatedAt || o.updatedAt < L) && ft(o) : r === R && D(o, e);
171
+ r === x ? o !== n && (!o.updatedAt || o.updatedAt < z) && F(o) : r === N && K(o, n);
156
172
  }
157
173
  }
158
174
  }
159
- function pt(t) {
160
- for (let e = 0; e < t.observers.length; e += 1) {
161
- const n = t.observers[e];
162
- n.state || (n.state = R, n.pure ? g.push(n) : m.push(n), n.observers && pt(n));
175
+ function wt(t) {
176
+ for (let n = 0; n < t.observers.length; n += 1) {
177
+ const e = t.observers[n];
178
+ e.state || (e.state = N, e.pure ? w.push(e) : E.push(e), e.observers && wt(e));
163
179
  }
164
180
  }
165
181
  function $(t) {
166
- let e;
182
+ let n;
167
183
  if (t.sources)
168
184
  for (; t.sources.length; ) {
169
- const n = t.sources.pop(), o = t.sourceSlots.pop(), r = n.observers;
185
+ const e = t.sources.pop(), o = t.sourceSlots.pop(), r = e.observers;
170
186
  if (r && r.length) {
171
- const i = r.pop(), l = n.observerSlots.pop();
172
- o < r.length && (i.sourceSlots[l] = o, r[o] = i, n.observerSlots[o] = l);
187
+ const i = r.pop(), l = e.observerSlots.pop();
188
+ o < r.length && (i.sourceSlots[l] = o, r[o] = i, e.observerSlots[o] = l);
173
189
  }
174
190
  }
175
191
  if (t.tOwned) {
176
- for (e = t.tOwned.length - 1; e >= 0; e--) $(t.tOwned[e]);
192
+ for (n = t.tOwned.length - 1; n >= 0; n--) $(t.tOwned[n]);
177
193
  delete t.tOwned;
178
194
  }
179
195
  if (t.owned) {
180
- for (e = t.owned.length - 1; e >= 0; e--) $(t.owned[e]);
196
+ for (n = t.owned.length - 1; n >= 0; n--) $(t.owned[n]);
181
197
  t.owned = null;
182
198
  }
183
199
  if (t.cleanups) {
184
- for (e = t.cleanups.length - 1; e >= 0; e--) t.cleanups[e]();
200
+ for (n = t.cleanups.length - 1; n >= 0; n--) t.cleanups[n]();
185
201
  t.cleanups = null;
186
202
  }
187
203
  t.state = 0;
188
204
  }
189
- function Et(t) {
205
+ function Ot(t) {
190
206
  return t instanceof Error ? t : new Error(typeof t == "string" ? t : "Unknown error", {
191
207
  cause: t
192
208
  });
193
209
  }
194
- function gt(t, e = y) {
195
- throw Et(t);
210
+ function vt(t, n = b) {
211
+ throw Ot(t);
196
212
  }
197
- function N(t, e) {
198
- return W(() => t(e || {}));
213
+ function B(t, n) {
214
+ return V(() => t(n || {}));
199
215
  }
200
- const j = (t) => St(() => t());
201
- function kt(t, e, n) {
202
- let o = n.length, r = e.length, i = o, l = 0, s = 0, a = e[r - 1].nextSibling, u = null;
216
+ const I = (t) => Tt(() => t());
217
+ function Rt(t, n, e) {
218
+ let o = e.length, r = n.length, i = o, l = 0, s = 0, a = n[r - 1].nextSibling, d = null;
203
219
  for (; l < r || s < i; ) {
204
- if (e[l] === n[s]) {
220
+ if (n[l] === e[s]) {
205
221
  l++, s++;
206
222
  continue;
207
223
  }
208
- for (; e[r - 1] === n[i - 1]; )
224
+ for (; n[r - 1] === e[i - 1]; )
209
225
  r--, i--;
210
226
  if (r === l) {
211
- const d = i < o ? s ? n[s - 1].nextSibling : n[i - s] : a;
212
- for (; s < i; ) t.insertBefore(n[s++], d);
227
+ const c = i < o ? s ? e[s - 1].nextSibling : e[i - s] : a;
228
+ for (; s < i; ) t.insertBefore(e[s++], c);
213
229
  } else if (i === s)
214
230
  for (; l < r; )
215
- (!u || !u.has(e[l])) && e[l].remove(), l++;
216
- else if (e[l] === n[i - 1] && n[s] === e[r - 1]) {
217
- const d = e[--r].nextSibling;
218
- t.insertBefore(n[s++], e[l++].nextSibling), t.insertBefore(n[--i], d), e[r] = n[i];
231
+ (!d || !d.has(n[l])) && n[l].remove(), l++;
232
+ else if (n[l] === e[i - 1] && e[s] === n[r - 1]) {
233
+ const c = n[--r].nextSibling;
234
+ t.insertBefore(e[s++], n[l++].nextSibling), t.insertBefore(e[--i], c), n[r] = e[i];
219
235
  } else {
220
- if (!u) {
221
- u = /* @__PURE__ */ new Map();
222
- let w = s;
223
- for (; w < i; ) u.set(n[w], w++);
236
+ if (!d) {
237
+ d = /* @__PURE__ */ new Map();
238
+ let y = s;
239
+ for (; y < i; ) d.set(e[y], y++);
224
240
  }
225
- const d = u.get(e[l]);
226
- if (d != null)
227
- if (s < d && d < i) {
228
- let w = l, E = 1, P;
229
- for (; ++w < r && w < i && !((P = u.get(e[w])) == null || P !== d + E); )
230
- E++;
231
- if (E > d - s) {
232
- const M = e[l];
233
- for (; s < d; ) t.insertBefore(n[s++], M);
234
- } else t.replaceChild(n[s++], e[l++]);
241
+ const c = d.get(n[l]);
242
+ if (c != null)
243
+ if (s < c && c < i) {
244
+ let y = l, C = 1, p;
245
+ for (; ++y < r && y < i && !((p = d.get(n[y])) == null || p !== c + C); )
246
+ C++;
247
+ if (C > c - s) {
248
+ const q = n[l];
249
+ for (; s < c; ) t.insertBefore(e[s++], q);
250
+ } else t.replaceChild(e[s++], n[l++]);
235
251
  } else l++;
236
- else e[l++].remove();
252
+ else n[l++].remove();
237
253
  }
238
254
  }
239
255
  }
240
- const et = "_$DX_DELEGATE";
241
- function O(t, e, n, o) {
256
+ function O(t, n, e, o) {
242
257
  let r;
243
258
  const i = () => {
244
259
  const s = document.createElement("template");
@@ -246,181 +261,143 @@ function O(t, e, n, o) {
246
261
  }, l = () => (r || (r = i())).cloneNode(!0);
247
262
  return l.cloneNode = l, l;
248
263
  }
249
- function $t(t, e = window.document) {
250
- const n = e[et] || (e[et] = /* @__PURE__ */ new Set());
251
- for (let o = 0, r = t.length; o < r; o++) {
252
- const i = t[o];
253
- n.has(i) || (n.add(i), e.addEventListener(i, Ot));
254
- }
264
+ function P(t, n, e) {
265
+ e == null ? t.removeAttribute(n) : t.setAttribute(n, e);
255
266
  }
256
- function k(t, e, n) {
257
- n == null ? t.removeAttribute(e) : t.setAttribute(e, n);
258
- }
259
- function Tt(t, e, n) {
260
- if (!e) return n ? k(t, "style") : e;
267
+ function Bt(t, n, e) {
268
+ if (!n) return e ? P(t, "style") : n;
261
269
  const o = t.style;
262
- if (typeof e == "string") return o.cssText = e;
263
- typeof n == "string" && (o.cssText = n = void 0), n || (n = {}), e || (e = {});
270
+ if (typeof n == "string") return o.cssText = n;
271
+ typeof e == "string" && (o.cssText = e = void 0), e || (e = {}), n || (n = {});
264
272
  let r, i;
265
- for (i in n)
266
- e[i] == null && o.removeProperty(i), delete n[i];
267
273
  for (i in e)
268
- r = e[i], r !== n[i] && (o.setProperty(i, r), n[i] = r);
269
- return n;
270
- }
271
- function C(t, e, n, o) {
272
- if (n !== void 0 && !o && (o = []), typeof e != "function") return F(t, e, o, n);
273
- I((r) => F(t, e(), r, n), o);
274
- }
275
- function Ot(t) {
276
- let e = t.target;
277
- const n = `$$${t.type}`, o = t.target, r = t.currentTarget, i = (a) => Object.defineProperty(t, "target", {
278
- configurable: !0,
279
- value: a
280
- }), l = () => {
281
- const a = e[n];
282
- if (a && !e.disabled) {
283
- const u = e[`${n}Data`];
284
- if (u !== void 0 ? a.call(e, u, t) : a.call(e, t), t.cancelBubble) return;
285
- }
286
- return e.host && typeof e.host != "string" && !e.host._$host && e.contains(t.target) && i(e.host), !0;
287
- }, s = () => {
288
- for (; l() && (e = e._$host || e.parentNode || e.host); ) ;
289
- };
290
- if (Object.defineProperty(t, "currentTarget", {
291
- configurable: !0,
292
- get() {
293
- return e || document;
294
- }
295
- }), t.composedPath) {
296
- const a = t.composedPath();
297
- i(a[0]);
298
- for (let u = 0; u < a.length - 2 && (e = a[u], !!l()); u++) {
299
- if (e._$host) {
300
- e = e._$host, s();
301
- break;
302
- }
303
- if (e.parentNode === r)
304
- break;
305
- }
306
- } else s();
307
- i(o);
308
- }
309
- function F(t, e, n, o, r) {
310
- for (; typeof n == "function"; ) n = n();
311
- if (e === n) return n;
312
- const i = typeof e, l = o !== void 0;
313
- if (t = l && n[0] && n[0].parentNode || t, i === "string" || i === "number") {
314
- if (i === "number" && (e = e.toString(), e === n))
315
- return n;
274
+ n[i] == null && o.removeProperty(i), delete e[i];
275
+ for (i in n)
276
+ r = n[i], r !== e[i] && (o.setProperty(i, r), e[i] = r);
277
+ return e;
278
+ }
279
+ function It(t, n, e) {
280
+ return V(() => t(n, e));
281
+ }
282
+ function A(t, n, e, o) {
283
+ if (e !== void 0 && !o && (o = []), typeof n != "function") return U(t, n, o, e);
284
+ D((r) => U(t, n(), r, e), o);
285
+ }
286
+ function U(t, n, e, o, r) {
287
+ for (; typeof e == "function"; ) e = e();
288
+ if (n === e) return e;
289
+ const i = typeof n, l = o !== void 0;
290
+ if (t = l && e[0] && e[0].parentNode || t, i === "string" || i === "number") {
291
+ if (i === "number" && (n = n.toString(), n === e))
292
+ return e;
316
293
  if (l) {
317
- let s = n[0];
318
- s && s.nodeType === 3 ? s.data !== e && (s.data = e) : s = document.createTextNode(e), n = x(t, n, o, s);
294
+ let s = e[0];
295
+ s && s.nodeType === 3 ? s.data !== n && (s.data = n) : s = document.createTextNode(n), e = k(t, e, o, s);
319
296
  } else
320
- n !== "" && typeof n == "string" ? n = t.firstChild.data = e : n = t.textContent = e;
321
- } else if (e == null || i === "boolean")
322
- n = x(t, n, o);
297
+ e !== "" && typeof e == "string" ? e = t.firstChild.data = n : e = t.textContent = n;
298
+ } else if (n == null || i === "boolean")
299
+ e = k(t, e, o);
323
300
  else {
324
301
  if (i === "function")
325
- return I(() => {
326
- let s = e();
302
+ return D(() => {
303
+ let s = n();
327
304
  for (; typeof s == "function"; ) s = s();
328
- n = F(t, s, n, o);
329
- }), () => n;
330
- if (Array.isArray(e)) {
331
- const s = [], a = n && Array.isArray(n);
332
- if (G(s, e, n, r))
333
- return I(() => n = F(t, s, n, o, !0)), () => n;
305
+ e = U(t, s, e, o);
306
+ }), () => e;
307
+ if (Array.isArray(n)) {
308
+ const s = [], a = e && Array.isArray(e);
309
+ if (X(s, n, e, r))
310
+ return D(() => e = U(t, s, e, o, !0)), () => e;
334
311
  if (s.length === 0) {
335
- if (n = x(t, n, o), l) return n;
336
- } else a ? n.length === 0 ? nt(t, s, o) : kt(t, n, s) : (n && x(t), nt(t, s));
337
- n = s;
338
- } else if (e.nodeType) {
339
- if (Array.isArray(n)) {
340
- if (l) return n = x(t, n, o, e);
341
- x(t, n, null, e);
342
- } else n == null || n === "" || !t.firstChild ? t.appendChild(e) : t.replaceChild(e, t.firstChild);
343
- n = e;
312
+ if (e = k(t, e, o), l) return e;
313
+ } else a ? e.length === 0 ? at(t, s, o) : Rt(t, e, s) : (e && k(t), at(t, s));
314
+ e = s;
315
+ } else if (n.nodeType) {
316
+ if (Array.isArray(e)) {
317
+ if (l) return e = k(t, e, o, n);
318
+ k(t, e, null, n);
319
+ } else e == null || e === "" || !t.firstChild ? t.appendChild(n) : t.replaceChild(n, t.firstChild);
320
+ e = n;
344
321
  }
345
322
  }
346
- return n;
323
+ return e;
347
324
  }
348
- function G(t, e, n, o) {
325
+ function X(t, n, e, o) {
349
326
  let r = !1;
350
- for (let i = 0, l = e.length; i < l; i++) {
351
- let s = e[i], a = n && n[t.length], u;
352
- if (!(s == null || s === !0 || s === !1)) if ((u = typeof s) == "object" && s.nodeType)
327
+ for (let i = 0, l = n.length; i < l; i++) {
328
+ let s = n[i], a = e && e[t.length], d;
329
+ if (!(s == null || s === !0 || s === !1)) if ((d = typeof s) == "object" && s.nodeType)
353
330
  t.push(s);
354
331
  else if (Array.isArray(s))
355
- r = G(t, s, a) || r;
356
- else if (u === "function")
332
+ r = X(t, s, a) || r;
333
+ else if (d === "function")
357
334
  if (o) {
358
335
  for (; typeof s == "function"; ) s = s();
359
- r = G(t, Array.isArray(s) ? s : [s], Array.isArray(a) ? a : [a]) || r;
336
+ r = X(t, Array.isArray(s) ? s : [s], Array.isArray(a) ? a : [a]) || r;
360
337
  } else
361
338
  t.push(s), r = !0;
362
339
  else {
363
- const d = String(s);
364
- a && a.nodeType === 3 && a.data === d ? t.push(a) : t.push(document.createTextNode(d));
340
+ const c = String(s);
341
+ a && a.nodeType === 3 && a.data === c ? t.push(a) : t.push(document.createTextNode(c));
365
342
  }
366
343
  }
367
344
  return r;
368
345
  }
369
- function nt(t, e, n = null) {
370
- for (let o = 0, r = e.length; o < r; o++) t.insertBefore(e[o], n);
346
+ function at(t, n, e = null) {
347
+ for (let o = 0, r = n.length; o < r; o++) t.insertBefore(n[o], e);
371
348
  }
372
- function x(t, e, n, o) {
373
- if (n === void 0) return t.textContent = "";
349
+ function k(t, n, e, o) {
350
+ if (e === void 0) return t.textContent = "";
374
351
  const r = o || document.createTextNode("");
375
- if (e.length) {
352
+ if (n.length) {
376
353
  let i = !1;
377
- for (let l = e.length - 1; l >= 0; l--) {
378
- const s = e[l];
354
+ for (let l = n.length - 1; l >= 0; l--) {
355
+ const s = n[l];
379
356
  if (r !== s) {
380
357
  const a = s.parentNode === t;
381
- !i && !l ? a ? t.replaceChild(r, s) : t.insertBefore(r, n) : a && s.remove();
358
+ !i && !l ? a ? t.replaceChild(r, s) : t.insertBefore(r, e) : a && s.remove();
382
359
  } else i = !0;
383
360
  }
384
- } else t.insertBefore(r, n);
361
+ } else t.insertBefore(r, e);
385
362
  return [r];
386
363
  }
387
- function Pt(t) {
388
- return Object.keys(t).reduce((n, o) => {
364
+ function jt(t) {
365
+ return Object.keys(t).reduce((e, o) => {
389
366
  const r = t[o];
390
- return n[o] = Object.assign({}, r), yt(r.value) && !Rt(r.value) && !Array.isArray(r.value) && (n[o].value = Object.assign({}, r.value)), Array.isArray(r.value) && (n[o].value = r.value.slice(0)), n;
367
+ return e[o] = Object.assign({}, r), mt(r.value) && !Ut(r.value) && !Array.isArray(r.value) && (e[o].value = Object.assign({}, r.value)), Array.isArray(r.value) && (e[o].value = r.value.slice(0)), e;
391
368
  }, {});
392
369
  }
393
- function Mt(t) {
394
- return t ? Object.keys(t).reduce((n, o) => {
370
+ function Nt(t) {
371
+ return t ? Object.keys(t).reduce((e, o) => {
395
372
  const r = t[o];
396
- return n[o] = yt(r) && "value" in r ? r : {
373
+ return e[o] = mt(r) && "value" in r ? r : {
397
374
  value: r
398
- }, n[o].attribute || (n[o].attribute = Bt(o)), n[o].parse = "parse" in n[o] ? n[o].parse : typeof n[o].value != "string", n;
375
+ }, e[o].attribute || (e[o].attribute = Kt(o)), e[o].parse = "parse" in e[o] ? e[o].parse : typeof e[o].value != "string", e;
399
376
  }, {}) : {};
400
377
  }
401
- function Nt(t) {
402
- return Object.keys(t).reduce((n, o) => (n[o] = t[o].value, n), {});
378
+ function Dt(t) {
379
+ return Object.keys(t).reduce((e, o) => (e[o] = t[o].value, e), {});
403
380
  }
404
- function jt(t, e) {
405
- const n = Pt(e);
406
- return Object.keys(e).forEach((r) => {
407
- const i = n[r], l = t.getAttribute(i.attribute), s = t[r];
408
- l != null && (i.value = i.parse ? bt(l) : l), s != null && (i.value = Array.isArray(s) ? s.slice(0) : s), i.reflect && rt(t, i.attribute, i.value, !!i.parse), Object.defineProperty(t, r, {
381
+ function Ft(t, n) {
382
+ const e = jt(n);
383
+ return Object.keys(n).forEach((r) => {
384
+ const i = e[r], l = t.getAttribute(i.attribute), s = t[r];
385
+ l != null && (i.value = i.parse ? Ct(l) : l), s != null && (i.value = Array.isArray(s) ? s.slice(0) : s), i.reflect && ct(t, i.attribute, i.value, !!i.parse), Object.defineProperty(t, r, {
409
386
  get() {
410
387
  return i.value;
411
388
  },
412
389
  set(a) {
413
- const u = i.value;
414
- i.value = a, i.reflect && rt(this, i.attribute, i.value, !!i.parse);
415
- for (let d = 0, w = this.__propertyChangedCallbacks.length; d < w; d++)
416
- this.__propertyChangedCallbacks[d](r, a, u);
390
+ const d = i.value;
391
+ i.value = a, i.reflect && ct(this, i.attribute, i.value, !!i.parse);
392
+ for (let c = 0, y = this.__propertyChangedCallbacks.length; c < y; c++)
393
+ this.__propertyChangedCallbacks[c](r, a, d);
417
394
  },
418
395
  enumerable: !0,
419
396
  configurable: !0
420
397
  });
421
- }), n;
398
+ }), e;
422
399
  }
423
- function bt(t) {
400
+ function Ct(t) {
424
401
  if (t)
425
402
  try {
426
403
  return JSON.parse(t);
@@ -428,47 +405,47 @@ function bt(t) {
428
405
  return t;
429
406
  }
430
407
  }
431
- function rt(t, e, n, o) {
432
- if (n == null || n === !1) return t.removeAttribute(e);
433
- let r = o ? JSON.stringify(n) : n;
434
- t.__updating[e] = !0, r === "true" && (r = ""), t.setAttribute(e, r), Promise.resolve().then(() => delete t.__updating[e]);
408
+ function ct(t, n, e, o) {
409
+ if (e == null || e === !1) return t.removeAttribute(n);
410
+ let r = o ? JSON.stringify(e) : e;
411
+ t.__updating[n] = !0, r === "true" && (r = ""), t.setAttribute(n, r), Promise.resolve().then(() => delete t.__updating[n]);
435
412
  }
436
- function Bt(t) {
437
- return t.replace(/\.?([A-Z]+)/g, (e, n) => "-" + n.toLowerCase()).replace("_", "-").replace(/^-/, "");
413
+ function Kt(t) {
414
+ return t.replace(/\.?([A-Z]+)/g, (n, e) => "-" + e.toLowerCase()).replace("_", "-").replace(/^-/, "");
438
415
  }
439
- function yt(t) {
416
+ function mt(t) {
440
417
  return t != null && (typeof t == "object" || typeof t == "function");
441
418
  }
442
- function Rt(t) {
419
+ function Ut(t) {
443
420
  return Object.prototype.toString.call(t) === "[object Function]";
444
421
  }
445
- function It(t) {
422
+ function zt(t) {
446
423
  return typeof t == "function" && t.toString().indexOf("class") === 0;
447
424
  }
448
- let q;
449
- function Dt(t, e) {
450
- const n = Object.keys(e);
425
+ let G;
426
+ function Vt(t, n) {
427
+ const e = Object.keys(n);
451
428
  return class extends t {
452
429
  static get observedAttributes() {
453
- return n.map((r) => e[r].attribute);
430
+ return e.map((r) => n[r].attribute);
454
431
  }
455
432
  constructor() {
456
433
  super(), this.__initialized = !1, this.__released = !1, this.__releaseCallbacks = [], this.__propertyChangedCallbacks = [], this.__updating = {}, this.props = {};
457
- for (let r of n)
434
+ for (let r of e)
458
435
  this[r] = void 0;
459
436
  }
460
437
  connectedCallback() {
461
438
  if (this.__initialized) return;
462
- this.__releaseCallbacks = [], this.__propertyChangedCallbacks = [], this.__updating = {}, this.props = jt(this, e);
463
- const r = Nt(this.props), i = this.Component, l = q;
439
+ this.__releaseCallbacks = [], this.__propertyChangedCallbacks = [], this.__updating = {}, this.props = Ft(this, n);
440
+ const r = Dt(this.props), i = this.Component, l = G;
464
441
  try {
465
- q = this, this.__initialized = !0, It(i) ? new i(r, {
442
+ G = this, this.__initialized = !0, zt(i) ? new i(r, {
466
443
  element: this
467
444
  }) : i(r, {
468
445
  element: this
469
446
  });
470
447
  } finally {
471
- q = l;
448
+ G = l;
472
449
  }
473
450
  }
474
451
  async disconnectedCallback() {
@@ -479,14 +456,14 @@ function Dt(t, e) {
479
456
  delete this.__initialized, this.__released = !0;
480
457
  }
481
458
  attributeChangedCallback(r, i, l) {
482
- if (this.__initialized && !this.__updating[r] && (r = this.lookupProp(r), r in e)) {
459
+ if (this.__initialized && !this.__updating[r] && (r = this.lookupProp(r), r in n)) {
483
460
  if (l == null && !this[r]) return;
484
- this[r] = e[r].parse ? bt(l) : l;
461
+ this[r] = n[r].parse ? Ct(l) : l;
485
462
  }
486
463
  }
487
464
  lookupProp(r) {
488
- if (e)
489
- return n.find((i) => r === i || r === e[i].attribute);
465
+ if (n)
466
+ return e.find((i) => r === i || r === n[i].attribute);
490
467
  }
491
468
  get renderRoot() {
492
469
  return this.shadowRoot || this.attachShadow({
@@ -501,54 +478,54 @@ function Dt(t, e) {
501
478
  }
502
479
  };
503
480
  }
504
- function Ft(t, e = {}, n = {}) {
481
+ function qt(t, n = {}, e = {}) {
505
482
  const {
506
483
  BaseElement: o = HTMLElement,
507
484
  extension: r,
508
485
  customElements: i = window.customElements
509
- } = n;
486
+ } = e;
510
487
  return (l) => {
511
488
  let s = i.get(t);
512
- return s ? (s.prototype.Component = l, s) : (s = Dt(o, Mt(e)), s.prototype.Component = l, s.prototype.registeredTag = t, i.define(t, s, r), s);
489
+ return s ? (s.prototype.Component = l, s) : (s = Vt(o, Nt(n)), s.prototype.Component = l, s.prototype.registeredTag = t, i.define(t, s, r), s);
513
490
  };
514
491
  }
515
- function Lt(t) {
516
- const e = Object.keys(t), n = {};
517
- for (let o = 0; o < e.length; o++) {
518
- const [r, i] = at(t[e[o]]);
519
- Object.defineProperty(n, e[o], {
492
+ function Ht(t) {
493
+ const n = Object.keys(t), e = {};
494
+ for (let o = 0; o < n.length; o++) {
495
+ const [r, i] = gt(t[n[o]]);
496
+ Object.defineProperty(e, n[o], {
520
497
  get: r,
521
498
  set(l) {
522
499
  i(() => l);
523
500
  }
524
501
  });
525
502
  }
526
- return n;
503
+ return e;
527
504
  }
528
- function Kt(t) {
505
+ function Wt(t) {
529
506
  if (t.assignedSlot && t.assignedSlot._$owner) return t.assignedSlot._$owner;
530
- let e = t.parentNode;
531
- for (; e && !e._$owner && !(e.assignedSlot && e.assignedSlot._$owner); )
532
- e = e.parentNode;
533
- return e && e.assignedSlot ? e.assignedSlot._$owner : t._$owner;
534
- }
535
- function Ut(t) {
536
- return (e, n) => {
537
- const { element: o } = n;
538
- return mt((r) => {
539
- const i = Lt(e);
507
+ let n = t.parentNode;
508
+ for (; n && !n._$owner && !(n.assignedSlot && n.assignedSlot._$owner); )
509
+ n = n.parentNode;
510
+ return n && n.assignedSlot ? n.assignedSlot._$owner : t._$owner;
511
+ }
512
+ function Gt(t) {
513
+ return (n, e) => {
514
+ const { element: o } = e;
515
+ return At((r) => {
516
+ const i = Ht(n);
540
517
  o.addPropertyChangedCallback((s, a) => i[s] = a), o.addReleaseCallback(() => {
541
518
  o.renderRoot.textContent = "", r();
542
519
  });
543
- const l = t(i, n);
544
- return C(o.renderRoot, l);
545
- }, Kt(o));
520
+ const l = t(i, e);
521
+ return A(o.renderRoot, l);
522
+ }, Wt(o));
546
523
  };
547
524
  }
548
- function zt(t, e, n) {
549
- return arguments.length === 2 && (n = e, e = {}), Ft(t, e)(Ut(n));
525
+ function Jt(t, n, e) {
526
+ return arguments.length === 2 && (e = n, n = {}), qt(t, n)(Gt(e));
550
527
  }
551
- const Vt = `
528
+ const Xt = `
552
529
  :host([theme="dark"]) {
553
530
  color-scheme: only dark;
554
531
  }
@@ -606,98 +583,117 @@ const Vt = `
606
583
  }
607
584
  }
608
585
  `;
609
- var qt = /* @__PURE__ */ O('<div part=container class=dictate-button__container><style></style><div aria-live=polite class=dictate-button__status-announcer style="position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0"></div><button part=button class=dictate-button__button>'), Ht = /* @__PURE__ */ O('<svg part=icon class="dictate-button__icon dictate-button__icon--idle"fill=none viewBox="0 0 24 24"stroke-width=1.5 stroke=currentColor role=img aria-hidden=true><path stroke-linecap=round stroke-linejoin=round d="M12 18.75a6 6 0 0 0 6-6v-1.5m-6 7.5a6 6 0 0 1-6-6v-1.5m6 7.5v3.75m-3.75 0h7.5M12 15.75a3 3 0 0 1-3-3V4.5a3 3 0 1 1 6 0v8.25a3 3 0 0 1-3 3Z">'), Gt = /* @__PURE__ */ O('<svg part=icon class="dictate-button__icon dictate-button__icon--recording"viewBox="0 0 24 24"fill=currentColor role=img aria-hidden=true><circle cx=12 cy=12 r=10>'), Wt = /* @__PURE__ */ O('<svg part=icon class="dictate-button__icon dictate-button__icon--processing"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round role=img aria-hidden=true><path d="M12 2v4"></path><path d="m16.2 7.8 2.9-2.9"></path><path d="M18 12h4"></path><path d="m16.2 16.2 2.9 2.9"></path><path d="M12 18v4"></path><path d="m4.9 19.1 2.9-2.9"></path><path d="M2 12h4"></path><path d="m4.9 4.9 2.9 2.9">'), Xt = /* @__PURE__ */ O('<svg part=icon class="dictate-button__icon dictate-button__icon--error"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=4 stroke-linecap=round stroke-linejoin=round role=img aria-hidden=true><line x1=12 x2=12 y1=4 y2=14></line><line x1=12 x2=12.01 y1=20 y2=20>');
610
- console.debug("dictate-button version:", "1.5.0");
611
- const Jt = "https://api.dictate-button.io/transcribe", v = "dictate-button.io", H = -70, ot = -10, it = 0, Zt = 4, Qt = 0.25, Yt = 0.05;
612
- zt("dictate-button", {
586
+ var Zt = /* @__PURE__ */ O('<div part=container class=dictate-button__container><style></style><div aria-live=polite class=dictate-button__status-announcer style="position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0"></div><button part=button class=dictate-button__button>'), Qt = /* @__PURE__ */ O('<svg part=icon class="dictate-button__icon dictate-button__icon--idle"fill=none viewBox="0 0 24 24"stroke-width=1.5 stroke=currentColor role=img aria-hidden=true><path stroke-linecap=round stroke-linejoin=round d="M12 18.75a6 6 0 0 0 6-6v-1.5m-6 7.5a6 6 0 0 1-6-6v-1.5m6 7.5v3.75m-3.75 0h7.5M12 15.75a3 3 0 0 1-3-3V4.5a3 3 0 1 1 6 0v8.25a3 3 0 0 1-3 3Z">'), Yt = /* @__PURE__ */ O('<svg part=icon class="dictate-button__icon dictate-button__icon--recording"viewBox="0 0 24 24"fill=currentColor role=img aria-hidden=true><circle cx=12 cy=12 r=10>'), te = /* @__PURE__ */ O('<svg part=icon class="dictate-button__icon dictate-button__icon--processing"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round role=img aria-hidden=true><path d="M12 2v4"></path><path d="m16.2 7.8 2.9-2.9"></path><path d="M18 12h4"></path><path d="m16.2 16.2 2.9 2.9"></path><path d="M12 18v4"></path><path d="m4.9 19.1 2.9-2.9"></path><path d="M2 12h4"></path><path d="m4.9 4.9 2.9 2.9">'), ee = /* @__PURE__ */ O('<svg part=icon class="dictate-button__icon dictate-button__icon--error"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=4 stroke-linecap=round stroke-linejoin=round role=img aria-hidden=true><line x1=12 x2=12 y1=4 y2=14></line><line x1=12 x2=12.01 y1=20 y2=20>');
587
+ console.debug("dictate-button version:", "1.6.0");
588
+ const ne = "https://api.dictate-button.io/transcribe", S = "dictate-button.io", J = -70, ut = -10, dt = 0, re = 4, oe = 0.25, ie = 0.05;
589
+ Jt("dictate-button", {
613
590
  size: 30,
614
- apiEndpoint: Jt,
591
+ apiEndpoint: ne,
615
592
  language: void 0
616
593
  }, (t, {
617
- element: e
594
+ element: n
618
595
  }) => {
619
596
  console.debug("api", t.apiEndpoint);
620
- const [n, o] = at("idle");
621
- let r = null, i = [], l = null, s = null, a = null, u = !1, d = 0;
622
- const w = (f) => f <= H ? 0 : f >= ot ? 1 : (f - H) / (ot - H), E = (f) => {
597
+ const [e, o] = gt("idle");
598
+ let r = null, i = null, l = [], s = null, a = null, d = null, c = null, y = !1, C = 0;
599
+ const p = (f) => f <= J ? 0 : f >= ut ? 1 : (f - J) / (ut - J), q = (f) => {
623
600
  let _ = 0;
624
- for (let b = 0; b < f.length; b++) {
625
- const c = (f[b] - 128) / 128;
626
- _ += c * c;
601
+ for (let v = 0; v < f.length; v++) {
602
+ const u = (f[v] - 128) / 128;
603
+ _ += u * u;
627
604
  }
628
605
  return Math.sqrt(_ / f.length);
629
- }, P = (f) => 20 * Math.log10(Math.max(f, 1e-8)), M = (f) => {
630
- const _ = e.shadowRoot.querySelector(".dictate-button__button");
606
+ }, Et = (f) => 20 * Math.log10(Math.max(f, 1e-8)), Q = (f) => {
607
+ const _ = n.shadowRoot.querySelector(".dictate-button__button");
631
608
  if (!_)
632
609
  return;
633
- const b = it + f * (Zt - it), c = 0 + f * 0.4;
634
- _.style.boxShadow = `0 0 0 ${b}px light-dark(rgba(0, 0, 0, ${c}), rgba(255, 255, 255, ${c}))`;
635
- }, X = () => {
636
- if (!u || !s || !a) return;
637
- s.getByteTimeDomainData(a);
638
- const f = E(a), _ = P(f), b = w(_), c = b > d ? Qt : Yt;
639
- d = c * b + (1 - c) * d, M(d), requestAnimationFrame(X);
640
- }, U = () => {
641
- r && r.state !== "inactive" && r.stop(), i = [], u = !1, l && l.state !== "closed" && l.close(), l = null, s = null, a = null, d = 0, M(0);
610
+ const v = dt + f * (re - dt), u = 0 + f * 0.4;
611
+ _.style.boxShadow = `0 0 0 ${v}px light-dark(rgba(0, 0, 0, ${u}), rgba(255, 255, 255, ${u}))`;
612
+ }, Y = () => {
613
+ if (!y || !d || !c) return;
614
+ d.getByteTimeDomainData(c);
615
+ const f = q(c), _ = Et(f), v = p(_), u = v > C ? oe : ie;
616
+ C = u * v + (1 - u) * C, Q(C), requestAnimationFrame(Y);
617
+ }, tt = () => {
618
+ r && r.state !== "inactive" && r.stop(), i && (i.getTracks().forEach((f) => f.stop()), i = null), l = [], s = null, y = !1, a && a.state !== "closed" && a.close(), a = null, d = null, c = null, C = 0, Q(0);
642
619
  };
643
- e.addEventListener("disconnected", U);
644
- const _t = async () => {
645
- if (U(), n() === "idle")
620
+ n.addEventListener("disconnected", tt);
621
+ const et = async (f) => {
622
+ if (e() === "idle") {
623
+ s = f;
646
624
  try {
647
- const f = await navigator.mediaDevices.getUserMedia({
625
+ const _ = await navigator.mediaDevices.getUserMedia({
648
626
  audio: !0
649
627
  });
650
- l = new (window.AudioContext || window.webkitAudioContext)();
651
- const _ = l.createMediaStreamSource(f);
652
- s = l.createAnalyser(), s.fftSize = 2048, _.connect(s), a = new Uint8Array(s.fftSize), r = new MediaRecorder(f, {
628
+ i = _, a = new (window.AudioContext || window.webkitAudioContext)();
629
+ const v = a.createMediaStreamSource(_);
630
+ d = a.createAnalyser(), d.fftSize = 2048, v.connect(d), c = new Uint8Array(d.fftSize), r = new MediaRecorder(_, {
653
631
  mimeType: "audio/webm"
654
- }), i = [], r.ondataavailable = (b) => {
655
- i.push(b.data);
632
+ }), l = [], r.ondataavailable = (u) => {
633
+ l.push(u.data);
656
634
  }, r.onstop = async () => {
657
- u = !1, o("processing"), A(e, "transcribing:started", "Started transcribing");
658
- const b = new Blob(i, {
635
+ y = !1, o("processing"), T(n, "transcribing:started", "Started transcribing");
636
+ const u = new Blob(l, {
659
637
  type: "audio/webm"
660
638
  });
661
639
  try {
662
- const c = new FormData();
663
- c.append("audio", b, "recording.webm"), c.append("origin", window?.location?.origin), t.language && c.append("language", t.language);
640
+ const m = new FormData();
641
+ m.append("audio", u, "recording.webm"), m.append("origin", window?.location?.origin), t.language && m.append("language", t.language);
664
642
  const h = await fetch(t.apiEndpoint, {
665
643
  method: "POST",
666
- body: c
644
+ body: m
667
645
  });
668
646
  if (!h.ok) throw new Error("Failed to transcribe audio");
669
- const z = await h.json();
670
- if (n() !== "processing") return;
671
- A(e, "transcribing:finished", z.text), o("idle");
672
- } catch (c) {
673
- console.error("Failed to transcribe audio:", c), A(e, "transcribing:failed", "Failed to transcribe audio"), J();
647
+ const H = await h.json();
648
+ if (e() !== "processing") return;
649
+ T(n, "transcribing:finished", H.text), o("idle");
650
+ } catch (m) {
651
+ console.error("Failed to transcribe audio:", m), T(n, "transcribing:failed", "Failed to transcribe audio"), rt();
674
652
  }
675
- }, r.start(), A(e, "recording:started", "Started recording"), u = !0, X(), o("recording");
676
- } catch (f) {
677
- console.error("Failed to start recording:", f), A(e, "recording:failed", "Failed to start recording"), J();
653
+ }, r.start(), T(n, "recording:started", "Started recording"), y = !0, Y(), o("recording");
654
+ } catch (_) {
655
+ console.error("Failed to start recording:", _), T(n, "recording:failed", "Failed to start recording"), rt();
678
656
  }
679
- else
680
- A(e, "recording:stopped", "Stopped recording"), o("idle"), U();
681
- }, J = () => {
657
+ }
658
+ }, nt = () => {
659
+ e() === "recording" && (T(n, "recording:stopped", "Stopped recording"), o("idle"), tt());
660
+ }, rt = () => {
682
661
  o("error"), setTimeout(() => o("idle"), 2e3);
683
662
  };
684
- return (() => {
685
- var f = qt(), _ = f.firstChild, b = _.nextSibling, c = b.nextSibling;
686
- return C(_, Vt), C(b, () => st(n())), c.$$click = _t, C(c, (() => {
687
- var h = j(() => n() === "idle");
688
- return () => h() && N(ee, {});
689
- })(), null), C(c, (() => {
690
- var h = j(() => n() === "recording");
691
- return () => h() && N(ne, {});
692
- })(), null), C(c, (() => {
693
- var h = j(() => n() === "processing");
694
- return () => h() && N(re, {});
695
- })(), null), C(c, (() => {
696
- var h = j(() => n() === "error");
697
- return () => h() && N(oe, {});
698
- })(), null), I((h) => {
699
- var z = `width:${t.size}px;height:${t.size}px"`, Z = te(n()), Q = st(n()), Y = n() === "recording", tt = n() === "processing";
700
- return h.e = Tt(c, z, h.e), Z !== h.t && k(c, "title", h.t = Z), Q !== h.a && k(c, "aria-label", h.a = Q), Y !== h.o && k(c, "aria-pressed", h.o = Y), tt !== h.i && k(c, "aria-busy", h.i = tt), h;
663
+ let R;
664
+ return kt(() => {
665
+ if (!R) return;
666
+ const f = de(R, {
667
+ onShortTap: () => {
668
+ e() === "idle" ? et("short-tap") : e() === "recording" && s === "short-tap" && nt();
669
+ },
670
+ onLongPressStart: () => {
671
+ e() === "idle" && et("long-press");
672
+ },
673
+ onLongPressEnd: () => {
674
+ e() === "recording" && s === "long-press" && nt();
675
+ }
676
+ });
677
+ Pt(f);
678
+ }), (() => {
679
+ var f = Zt(), _ = f.firstChild, v = _.nextSibling, u = v.nextSibling;
680
+ A(_, Xt), A(v, () => ft(e()));
681
+ var m = R;
682
+ return typeof m == "function" ? It(m, u) : R = u, A(u, (() => {
683
+ var h = I(() => e() === "idle");
684
+ return () => h() && B(le, {});
685
+ })(), null), A(u, (() => {
686
+ var h = I(() => e() === "recording");
687
+ return () => h() && B(ae, {});
688
+ })(), null), A(u, (() => {
689
+ var h = I(() => e() === "processing");
690
+ return () => h() && B(ce, {});
691
+ })(), null), A(u, (() => {
692
+ var h = I(() => e() === "error");
693
+ return () => h() && B(ue, {});
694
+ })(), null), D((h) => {
695
+ var H = `width:${t.size}px;height:${t.size}px"`, ot = se(e()), it = ft(e()), st = e() === "recording", lt = e() === "processing";
696
+ return h.e = Bt(u, H, h.e), ot !== h.t && P(u, "title", h.t = ot), it !== h.a && P(u, "aria-label", h.a = it), st !== h.o && P(u, "aria-pressed", h.o = st), lt !== h.i && P(u, "aria-busy", h.i = lt), h;
701
697
  }, {
702
698
  e: void 0,
703
699
  t: void 0,
@@ -707,33 +703,64 @@ zt("dictate-button", {
707
703
  }), f;
708
704
  })();
709
705
  });
710
- const te = (t) => {
706
+ const se = (t) => {
711
707
  switch (t) {
712
708
  case "idle":
713
- return `Start dictation (${v})`;
709
+ return `Start dictation (${S})`;
714
710
  case "recording":
715
- return `Stop dictation (${v})`;
711
+ return `Stop dictation (${S})`;
716
712
  case "processing":
717
- return `Stop processing (${v})`;
713
+ return `Stop processing (${S})`;
718
714
  case "error":
719
- return `Click to reset (${v})`;
715
+ return `Click to reset (${S})`;
720
716
  }
721
- }, st = (t) => {
717
+ }, ft = (t) => {
722
718
  switch (t) {
723
719
  case "idle":
724
- return `Start dictation (${v})`;
720
+ return `Start dictation (${S})`;
725
721
  case "recording":
726
- return `Dictation in progress. Click to stop it (${v})`;
722
+ return `Dictation in progress. Click to stop it (${S})`;
727
723
  case "processing":
728
- return `Processing dictation. Click to cancel it (${v})`;
724
+ return `Processing dictation. Click to cancel it (${S})`;
729
725
  case "error":
730
- return `Dictation error. Click to reset (${v})`;
726
+ return `Dictation error. Click to reset (${S})`;
731
727
  }
732
- }, A = (t, e, n) => {
733
- t.dispatchEvent(new CustomEvent(e, {
734
- detail: n,
728
+ }, T = (t, n, e) => {
729
+ t.dispatchEvent(new CustomEvent(n, {
730
+ detail: e,
735
731
  bubbles: !0,
736
732
  composed: !0
737
733
  }));
738
- }, ee = () => Ht(), ne = () => Gt(), re = () => Wt(), oe = () => Xt();
739
- $t(["click"]);
734
+ }, le = () => Qt(), ae = () => Yt(), ce = () => te(), ue = () => ee();
735
+ function de(t, {
736
+ threshold: n = 500,
737
+ preventScroll: e = !0,
738
+ onShortTap: o,
739
+ onLongPressStart: r,
740
+ onLongPressEnd: i
741
+ } = {}) {
742
+ let l, s = !1;
743
+ const a = (p) => p.preventDefault(), d = (p) => {
744
+ l && clearTimeout(l), s = !1, p.preventDefault(), t.setPointerCapture(p.pointerId), l = window.setTimeout(() => {
745
+ s = !0, r?.(p), t.dispatchEvent(new CustomEvent("longpress", {
746
+ detail: p
747
+ }));
748
+ }, n);
749
+ }, c = (p) => {
750
+ l && clearTimeout(l), t.releasePointerCapture(p.pointerId), s ? (i?.(p), t.dispatchEvent(new CustomEvent("longpressend", {
751
+ detail: p
752
+ }))) : (o?.(p), t.dispatchEvent(new CustomEvent("shorttap", {
753
+ detail: p
754
+ })));
755
+ }, y = (p) => {
756
+ l && clearTimeout(l), t.releasePointerCapture(p.pointerId), s = !1;
757
+ }, C = (p) => {
758
+ p.preventDefault(), p.stopPropagation();
759
+ };
760
+ return e && (t.style.touchAction = "none", t.addEventListener("contextmenu", a)), t.addEventListener("pointerdown", d), t.addEventListener("pointerup", c), t.addEventListener("pointercancel", y), t.addEventListener("click", C), () => {
761
+ e && t.removeEventListener("contextmenu", a), t.removeEventListener("pointerdown", d), t.removeEventListener("pointerup", c), t.removeEventListener("pointercancel", y), t.removeEventListener("click", C);
762
+ };
763
+ }
764
+ export {
765
+ de as addButtonEventListeners
766
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dictate-button",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "Dictate Button (Web Component)",
5
5
  "keywords": [
6
6
  "custom-element",
@@ -64,11 +64,11 @@
64
64
  },
65
65
  "devDependencies": {
66
66
  "prettier": "^3.6.2",
67
- "typescript": "^5.9.2",
68
- "vite": "^7.1.7",
67
+ "typescript": "^5.9.3",
68
+ "vite": "^7.1.10",
69
69
  "vite-plugin-dts": "^4.5.4",
70
- "vite-plugin-solid": "^2.11.8",
71
- "vite-plugin-static-copy": "^3.1.2"
70
+ "vite-plugin-solid": "^2.11.9",
71
+ "vite-plugin-static-copy": "^3.1.4"
72
72
  },
73
73
  "homepage": "https://github.com/dictate-button/dictate-button",
74
74
  "repository": {