dictate-button 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dictate-button.js +373 -365
- package/package.json +2 -2
package/dist/dictate-button.js
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
const
|
|
2
|
-
equals:
|
|
1
|
+
const Mt = (t, n) => t === n, q = {
|
|
2
|
+
equals: Mt
|
|
3
3
|
};
|
|
4
|
-
let
|
|
5
|
-
const T = 1, H = 2,
|
|
4
|
+
let yt = Ct;
|
|
5
|
+
const T = 1, H = 2, _t = {
|
|
6
6
|
owned: null,
|
|
7
7
|
cleanups: null,
|
|
8
8
|
context: null,
|
|
9
9
|
owner: null
|
|
10
10
|
};
|
|
11
11
|
var y = null;
|
|
12
|
-
let
|
|
13
|
-
function
|
|
14
|
-
const
|
|
12
|
+
let nt = null, Ot = null, b = null, w = null, E = null, Q = 0;
|
|
13
|
+
function $t(t, n) {
|
|
14
|
+
const e = b, i = y, r = t.length === 0, o = n === void 0 ? i : n, l = r ? _t : {
|
|
15
15
|
owned: null,
|
|
16
16
|
cleanups: null,
|
|
17
17
|
context: o ? o.context : null,
|
|
18
18
|
owner: o
|
|
19
|
-
},
|
|
19
|
+
}, s = r ? t : () => t(() => Y(() => j(l)));
|
|
20
20
|
y = l, b = null;
|
|
21
21
|
try {
|
|
22
|
-
return B(
|
|
22
|
+
return B(s, !0);
|
|
23
23
|
} finally {
|
|
24
|
-
b =
|
|
24
|
+
b = e, y = i;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
function
|
|
28
|
-
|
|
29
|
-
const
|
|
27
|
+
function wt(t, n) {
|
|
28
|
+
n = n ? Object.assign({}, q, n) : q;
|
|
29
|
+
const e = {
|
|
30
30
|
value: t,
|
|
31
31
|
observers: null,
|
|
32
32
|
observerSlots: null,
|
|
33
|
-
comparator:
|
|
34
|
-
},
|
|
35
|
-
return [
|
|
33
|
+
comparator: n.equals || void 0
|
|
34
|
+
}, i = (r) => (typeof r == "function" && (r = r(e.value)), mt(e, r));
|
|
35
|
+
return [vt.bind(e), i];
|
|
36
36
|
}
|
|
37
|
-
function J(t,
|
|
38
|
-
const
|
|
39
|
-
I(
|
|
37
|
+
function J(t, n, e) {
|
|
38
|
+
const i = ot(t, n, !1, T);
|
|
39
|
+
I(i);
|
|
40
40
|
}
|
|
41
|
-
function
|
|
42
|
-
|
|
43
|
-
const
|
|
44
|
-
|
|
41
|
+
function Rt(t, n, e) {
|
|
42
|
+
yt = Bt;
|
|
43
|
+
const i = ot(t, n, !1, T);
|
|
44
|
+
i.user = !0, E ? E.push(i) : I(i);
|
|
45
45
|
}
|
|
46
|
-
function
|
|
47
|
-
|
|
48
|
-
const
|
|
49
|
-
return
|
|
46
|
+
function Nt(t, n, e) {
|
|
47
|
+
e = e ? Object.assign({}, q, e) : q;
|
|
48
|
+
const i = ot(t, n, !0, 0);
|
|
49
|
+
return i.observers = null, i.observerSlots = null, i.comparator = e.equals || void 0, I(i), vt.bind(i);
|
|
50
50
|
}
|
|
51
51
|
function Y(t) {
|
|
52
52
|
if (b === null) return t();
|
|
53
|
-
const
|
|
53
|
+
const n = b;
|
|
54
54
|
b = null;
|
|
55
55
|
try {
|
|
56
56
|
return t();
|
|
57
57
|
} finally {
|
|
58
|
-
b =
|
|
58
|
+
b = n;
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
function
|
|
61
|
+
function ft(t) {
|
|
62
62
|
return y === null || (y.cleanups === null ? y.cleanups = [t] : y.cleanups.push(t)), t;
|
|
63
63
|
}
|
|
64
|
-
function
|
|
64
|
+
function vt() {
|
|
65
65
|
if (this.sources && this.state)
|
|
66
66
|
if (this.state === T) I(this);
|
|
67
67
|
else {
|
|
@@ -74,330 +74,330 @@ function _t() {
|
|
|
74
74
|
}
|
|
75
75
|
return this.value;
|
|
76
76
|
}
|
|
77
|
-
function
|
|
78
|
-
let
|
|
79
|
-
return (!t.comparator || !t.comparator(
|
|
77
|
+
function mt(t, n, e) {
|
|
78
|
+
let i = t.value;
|
|
79
|
+
return (!t.comparator || !t.comparator(i, n)) && (t.value = n, t.observers && t.observers.length && B(() => {
|
|
80
80
|
for (let r = 0; r < t.observers.length; r += 1) {
|
|
81
|
-
const o = t.observers[r], l =
|
|
82
|
-
l &&
|
|
81
|
+
const o = t.observers[r], l = nt && nt.running;
|
|
82
|
+
l && nt.disposed.has(o), (l ? !o.tState : !o.state) && (o.pure ? w.push(o) : E.push(o), o.observers && xt(o)), l || (o.state = T);
|
|
83
83
|
}
|
|
84
84
|
if (w.length > 1e6)
|
|
85
85
|
throw w = [], new Error();
|
|
86
|
-
}, !1)),
|
|
86
|
+
}, !1)), n;
|
|
87
87
|
}
|
|
88
88
|
function I(t) {
|
|
89
89
|
if (!t.fn) return;
|
|
90
90
|
j(t);
|
|
91
|
-
const
|
|
92
|
-
|
|
91
|
+
const n = Q;
|
|
92
|
+
jt(t, t.value, n);
|
|
93
93
|
}
|
|
94
|
-
function
|
|
95
|
-
let
|
|
94
|
+
function jt(t, n, e) {
|
|
95
|
+
let i;
|
|
96
96
|
const r = y, o = b;
|
|
97
97
|
b = y = t;
|
|
98
98
|
try {
|
|
99
|
-
|
|
99
|
+
i = t.fn(n);
|
|
100
100
|
} catch (l) {
|
|
101
|
-
return t.pure && (t.state = T, t.owned && t.owned.forEach(j), t.owned = null), t.updatedAt =
|
|
101
|
+
return t.pure && (t.state = T, t.owned && t.owned.forEach(j), t.owned = null), t.updatedAt = e + 1, Et(l);
|
|
102
102
|
} finally {
|
|
103
103
|
b = o, y = r;
|
|
104
104
|
}
|
|
105
|
-
(!t.updatedAt || t.updatedAt <=
|
|
105
|
+
(!t.updatedAt || t.updatedAt <= e) && (t.updatedAt != null && "observers" in t ? mt(t, i) : t.value = i, t.updatedAt = e);
|
|
106
106
|
}
|
|
107
|
-
function
|
|
107
|
+
function ot(t, n, e, i = T, r) {
|
|
108
108
|
const o = {
|
|
109
109
|
fn: t,
|
|
110
|
-
state:
|
|
110
|
+
state: i,
|
|
111
111
|
updatedAt: null,
|
|
112
112
|
owned: null,
|
|
113
113
|
sources: null,
|
|
114
114
|
sourceSlots: null,
|
|
115
115
|
cleanups: null,
|
|
116
|
-
value:
|
|
116
|
+
value: n,
|
|
117
117
|
owner: y,
|
|
118
118
|
context: y ? y.context : null,
|
|
119
|
-
pure:
|
|
119
|
+
pure: e
|
|
120
120
|
};
|
|
121
|
-
return y === null || y !==
|
|
121
|
+
return y === null || y !== _t && (y.owned ? y.owned.push(o) : y.owned = [o]), o;
|
|
122
122
|
}
|
|
123
123
|
function G(t) {
|
|
124
124
|
if (t.state === 0) return;
|
|
125
125
|
if (t.state === H) return X(t);
|
|
126
126
|
if (t.suspense && Y(t.suspense.inFallback)) return t.suspense.effects.push(t);
|
|
127
|
-
const
|
|
127
|
+
const n = [t];
|
|
128
128
|
for (; (t = t.owner) && (!t.updatedAt || t.updatedAt < Q); )
|
|
129
|
-
t.state &&
|
|
130
|
-
for (let
|
|
131
|
-
if (t = e
|
|
129
|
+
t.state && n.push(t);
|
|
130
|
+
for (let e = n.length - 1; e >= 0; e--)
|
|
131
|
+
if (t = n[e], t.state === T)
|
|
132
132
|
I(t);
|
|
133
133
|
else if (t.state === H) {
|
|
134
|
-
const
|
|
135
|
-
w = null, B(() => X(t,
|
|
134
|
+
const i = w;
|
|
135
|
+
w = null, B(() => X(t, n[0]), !1), w = i;
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
|
-
function B(t,
|
|
138
|
+
function B(t, n) {
|
|
139
139
|
if (w) return t();
|
|
140
|
-
let
|
|
141
|
-
|
|
140
|
+
let e = !1;
|
|
141
|
+
n || (w = []), E ? e = !0 : E = [], Q++;
|
|
142
142
|
try {
|
|
143
|
-
const
|
|
144
|
-
return
|
|
145
|
-
} catch (
|
|
146
|
-
|
|
143
|
+
const i = t();
|
|
144
|
+
return It(e), i;
|
|
145
|
+
} catch (i) {
|
|
146
|
+
e || (E = null), w = null, Et(i);
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
|
-
function
|
|
150
|
-
if (w && (
|
|
151
|
-
const
|
|
152
|
-
|
|
149
|
+
function It(t) {
|
|
150
|
+
if (w && (Ct(w), w = null), t) return;
|
|
151
|
+
const n = E;
|
|
152
|
+
E = null, n.length && B(() => yt(n), !1);
|
|
153
153
|
}
|
|
154
|
-
function
|
|
155
|
-
for (let
|
|
154
|
+
function Ct(t) {
|
|
155
|
+
for (let n = 0; n < t.length; n++) G(t[n]);
|
|
156
156
|
}
|
|
157
|
-
function
|
|
158
|
-
let
|
|
159
|
-
for (
|
|
160
|
-
const
|
|
161
|
-
|
|
157
|
+
function Bt(t) {
|
|
158
|
+
let n, e = 0;
|
|
159
|
+
for (n = 0; n < t.length; n++) {
|
|
160
|
+
const i = t[n];
|
|
161
|
+
i.user ? t[e++] = i : G(i);
|
|
162
162
|
}
|
|
163
|
-
for (
|
|
163
|
+
for (n = 0; n < e; n++) G(t[n]);
|
|
164
164
|
}
|
|
165
|
-
function X(t,
|
|
165
|
+
function X(t, n) {
|
|
166
166
|
t.state = 0;
|
|
167
|
-
for (let
|
|
168
|
-
const
|
|
169
|
-
if (
|
|
170
|
-
const r =
|
|
171
|
-
r === T ?
|
|
167
|
+
for (let e = 0; e < t.sources.length; e += 1) {
|
|
168
|
+
const i = t.sources[e];
|
|
169
|
+
if (i.sources) {
|
|
170
|
+
const r = i.state;
|
|
171
|
+
r === T ? i !== n && (!i.updatedAt || i.updatedAt < Q) && G(i) : r === H && X(i, n);
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
|
-
function
|
|
176
|
-
for (let
|
|
177
|
-
const
|
|
178
|
-
|
|
175
|
+
function xt(t) {
|
|
176
|
+
for (let n = 0; n < t.observers.length; n += 1) {
|
|
177
|
+
const e = t.observers[n];
|
|
178
|
+
e.state || (e.state = H, e.pure ? w.push(e) : E.push(e), e.observers && xt(e));
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
181
|
function j(t) {
|
|
182
|
-
let
|
|
182
|
+
let n;
|
|
183
183
|
if (t.sources)
|
|
184
184
|
for (; t.sources.length; ) {
|
|
185
|
-
const
|
|
185
|
+
const e = t.sources.pop(), i = t.sourceSlots.pop(), r = e.observers;
|
|
186
186
|
if (r && r.length) {
|
|
187
|
-
const o = r.pop(), l =
|
|
188
|
-
|
|
187
|
+
const o = r.pop(), l = e.observerSlots.pop();
|
|
188
|
+
i < r.length && (o.sourceSlots[l] = i, r[i] = o, e.observerSlots[i] = l);
|
|
189
189
|
}
|
|
190
190
|
}
|
|
191
191
|
if (t.tOwned) {
|
|
192
|
-
for (
|
|
192
|
+
for (n = t.tOwned.length - 1; n >= 0; n--) j(t.tOwned[n]);
|
|
193
193
|
delete t.tOwned;
|
|
194
194
|
}
|
|
195
195
|
if (t.owned) {
|
|
196
|
-
for (
|
|
196
|
+
for (n = t.owned.length - 1; n >= 0; n--) j(t.owned[n]);
|
|
197
197
|
t.owned = null;
|
|
198
198
|
}
|
|
199
199
|
if (t.cleanups) {
|
|
200
|
-
for (
|
|
200
|
+
for (n = t.cleanups.length - 1; n >= 0; n--) t.cleanups[n]();
|
|
201
201
|
t.cleanups = null;
|
|
202
202
|
}
|
|
203
203
|
t.state = 0;
|
|
204
204
|
}
|
|
205
|
-
function
|
|
205
|
+
function Dt(t) {
|
|
206
206
|
return t instanceof Error ? t : new Error(typeof t == "string" ? t : "Unknown error", {
|
|
207
207
|
cause: t
|
|
208
208
|
});
|
|
209
209
|
}
|
|
210
|
-
function
|
|
211
|
-
throw
|
|
210
|
+
function Et(t, n = y) {
|
|
211
|
+
throw Dt(t);
|
|
212
212
|
}
|
|
213
|
-
function K(t,
|
|
214
|
-
return Y(() => t(
|
|
213
|
+
function K(t, n) {
|
|
214
|
+
return Y(() => t(n || {}));
|
|
215
215
|
}
|
|
216
|
-
const V = (t) =>
|
|
217
|
-
function
|
|
218
|
-
let
|
|
219
|
-
for (; l < r ||
|
|
220
|
-
if (
|
|
221
|
-
l++,
|
|
216
|
+
const V = (t) => Nt(() => t());
|
|
217
|
+
function Ut(t, n, e) {
|
|
218
|
+
let i = e.length, r = n.length, o = i, l = 0, s = 0, a = n[r - 1].nextSibling, g = null;
|
|
219
|
+
for (; l < r || s < o; ) {
|
|
220
|
+
if (n[l] === e[s]) {
|
|
221
|
+
l++, s++;
|
|
222
222
|
continue;
|
|
223
223
|
}
|
|
224
|
-
for (;
|
|
224
|
+
for (; n[r - 1] === e[o - 1]; )
|
|
225
225
|
r--, o--;
|
|
226
226
|
if (r === l) {
|
|
227
|
-
const f = o <
|
|
228
|
-
for (;
|
|
229
|
-
} else if (o ===
|
|
227
|
+
const f = o < i ? s ? e[s - 1].nextSibling : e[o - s] : a;
|
|
228
|
+
for (; s < o; ) t.insertBefore(e[s++], f);
|
|
229
|
+
} else if (o === s)
|
|
230
230
|
for (; l < r; )
|
|
231
|
-
(!g || !g.has(
|
|
232
|
-
else if (
|
|
233
|
-
const f =
|
|
234
|
-
t.insertBefore(
|
|
231
|
+
(!g || !g.has(n[l])) && n[l].remove(), l++;
|
|
232
|
+
else if (n[l] === e[o - 1] && e[s] === n[r - 1]) {
|
|
233
|
+
const f = n[--r].nextSibling;
|
|
234
|
+
t.insertBefore(e[s++], n[l++].nextSibling), t.insertBefore(e[--o], f), n[r] = e[o];
|
|
235
235
|
} else {
|
|
236
236
|
if (!g) {
|
|
237
237
|
g = /* @__PURE__ */ new Map();
|
|
238
|
-
let d =
|
|
239
|
-
for (; d < o; ) g.set(
|
|
238
|
+
let d = s;
|
|
239
|
+
for (; d < o; ) g.set(e[d], d++);
|
|
240
240
|
}
|
|
241
|
-
const f = g.get(
|
|
241
|
+
const f = g.get(n[l]);
|
|
242
242
|
if (f != null)
|
|
243
|
-
if (
|
|
244
|
-
let d = l, m = 1,
|
|
245
|
-
for (; ++d < r && d < o && !((
|
|
243
|
+
if (s < f && f < o) {
|
|
244
|
+
let d = l, m = 1, c;
|
|
245
|
+
for (; ++d < r && d < o && !((c = g.get(n[d])) == null || c !== f + m); )
|
|
246
246
|
m++;
|
|
247
|
-
if (m > f -
|
|
248
|
-
const P =
|
|
249
|
-
for (;
|
|
250
|
-
} else t.replaceChild(
|
|
247
|
+
if (m > f - s) {
|
|
248
|
+
const P = n[l];
|
|
249
|
+
for (; s < f; ) t.insertBefore(e[s++], P);
|
|
250
|
+
} else t.replaceChild(e[s++], n[l++]);
|
|
251
251
|
} else l++;
|
|
252
|
-
else
|
|
252
|
+
else n[l++].remove();
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
255
|
}
|
|
256
|
-
function D(t,
|
|
256
|
+
function D(t, n, e, i) {
|
|
257
257
|
let r;
|
|
258
258
|
const o = () => {
|
|
259
|
-
const
|
|
260
|
-
return
|
|
259
|
+
const s = document.createElement("template");
|
|
260
|
+
return s.innerHTML = t, s.content.firstChild;
|
|
261
261
|
}, l = () => (r || (r = o())).cloneNode(!0);
|
|
262
262
|
return l.cloneNode = l, l;
|
|
263
263
|
}
|
|
264
|
-
function N(t,
|
|
265
|
-
|
|
264
|
+
function N(t, n, e) {
|
|
265
|
+
e == null ? t.removeAttribute(n) : t.setAttribute(n, e);
|
|
266
266
|
}
|
|
267
|
-
function
|
|
268
|
-
if (!
|
|
269
|
-
const
|
|
270
|
-
if (typeof
|
|
271
|
-
typeof
|
|
267
|
+
function zt(t, n, e) {
|
|
268
|
+
if (!n) return e ? N(t, "style") : n;
|
|
269
|
+
const i = t.style;
|
|
270
|
+
if (typeof n == "string") return i.cssText = n;
|
|
271
|
+
typeof e == "string" && (i.cssText = e = void 0), e || (e = {}), n || (n = {});
|
|
272
272
|
let r, o;
|
|
273
|
-
for (o in n)
|
|
274
|
-
e[o] == null && s.removeProperty(o), delete n[o];
|
|
275
273
|
for (o in e)
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
if (
|
|
291
|
-
|
|
292
|
-
|
|
274
|
+
n[o] == null && i.removeProperty(o), delete e[o];
|
|
275
|
+
for (o in n)
|
|
276
|
+
r = n[o], r !== e[o] && (i.setProperty(o, r), e[o] = r);
|
|
277
|
+
return e;
|
|
278
|
+
}
|
|
279
|
+
function Ft(t, n, e) {
|
|
280
|
+
return Y(() => t(n, e));
|
|
281
|
+
}
|
|
282
|
+
function M(t, n, e, i) {
|
|
283
|
+
if (e !== void 0 && !i && (i = []), typeof n != "function") return Z(t, n, i, e);
|
|
284
|
+
J((r) => Z(t, n(), r, e), i);
|
|
285
|
+
}
|
|
286
|
+
function Z(t, n, e, i, r) {
|
|
287
|
+
for (; typeof e == "function"; ) e = e();
|
|
288
|
+
if (n === e) return e;
|
|
289
|
+
const o = typeof n, l = i !== void 0;
|
|
290
|
+
if (t = l && e[0] && e[0].parentNode || t, o === "string" || o === "number") {
|
|
291
|
+
if (o === "number" && (n = n.toString(), n === e))
|
|
292
|
+
return e;
|
|
293
293
|
if (l) {
|
|
294
|
-
let
|
|
295
|
-
|
|
294
|
+
let s = e[0];
|
|
295
|
+
s && s.nodeType === 3 ? s.data !== n && (s.data = n) : s = document.createTextNode(n), e = $(t, e, i, s);
|
|
296
296
|
} else
|
|
297
|
-
|
|
298
|
-
} else if (
|
|
299
|
-
|
|
297
|
+
e !== "" && typeof e == "string" ? e = t.firstChild.data = n : e = t.textContent = n;
|
|
298
|
+
} else if (n == null || o === "boolean")
|
|
299
|
+
e = $(t, e, i);
|
|
300
300
|
else {
|
|
301
301
|
if (o === "function")
|
|
302
302
|
return J(() => {
|
|
303
|
-
let
|
|
304
|
-
for (; typeof
|
|
305
|
-
|
|
306
|
-
}), () =>
|
|
307
|
-
if (Array.isArray(
|
|
308
|
-
const
|
|
309
|
-
if (st(
|
|
310
|
-
return J(() =>
|
|
311
|
-
if (
|
|
312
|
-
if (
|
|
313
|
-
} else a ?
|
|
314
|
-
|
|
315
|
-
} else if (
|
|
316
|
-
if (Array.isArray(
|
|
317
|
-
if (l) return
|
|
318
|
-
$(t,
|
|
319
|
-
} else
|
|
320
|
-
|
|
303
|
+
let s = n();
|
|
304
|
+
for (; typeof s == "function"; ) s = s();
|
|
305
|
+
e = Z(t, s, e, i);
|
|
306
|
+
}), () => e;
|
|
307
|
+
if (Array.isArray(n)) {
|
|
308
|
+
const s = [], a = e && Array.isArray(e);
|
|
309
|
+
if (st(s, n, e, r))
|
|
310
|
+
return J(() => e = Z(t, s, e, i, !0)), () => e;
|
|
311
|
+
if (s.length === 0) {
|
|
312
|
+
if (e = $(t, e, i), l) return e;
|
|
313
|
+
} else a ? e.length === 0 ? dt(t, s, i) : Ut(t, e, s) : (e && $(t), dt(t, s));
|
|
314
|
+
e = s;
|
|
315
|
+
} else if (n.nodeType) {
|
|
316
|
+
if (Array.isArray(e)) {
|
|
317
|
+
if (l) return e = $(t, e, i, n);
|
|
318
|
+
$(t, e, null, n);
|
|
319
|
+
} else e == null || e === "" || !t.firstChild ? t.appendChild(n) : t.replaceChild(n, t.firstChild);
|
|
320
|
+
e = n;
|
|
321
321
|
}
|
|
322
322
|
}
|
|
323
|
-
return
|
|
323
|
+
return e;
|
|
324
324
|
}
|
|
325
|
-
function st(t,
|
|
325
|
+
function st(t, n, e, i) {
|
|
326
326
|
let r = !1;
|
|
327
|
-
for (let o = 0, l =
|
|
328
|
-
let
|
|
329
|
-
if (!(
|
|
330
|
-
t.push(
|
|
331
|
-
else if (Array.isArray(
|
|
332
|
-
r = st(t,
|
|
327
|
+
for (let o = 0, l = n.length; o < l; o++) {
|
|
328
|
+
let s = n[o], a = e && e[t.length], g;
|
|
329
|
+
if (!(s == null || s === !0 || s === !1)) if ((g = typeof s) == "object" && s.nodeType)
|
|
330
|
+
t.push(s);
|
|
331
|
+
else if (Array.isArray(s))
|
|
332
|
+
r = st(t, s, a) || r;
|
|
333
333
|
else if (g === "function")
|
|
334
|
-
if (
|
|
335
|
-
for (; typeof
|
|
336
|
-
r = st(t, Array.isArray(
|
|
334
|
+
if (i) {
|
|
335
|
+
for (; typeof s == "function"; ) s = s();
|
|
336
|
+
r = st(t, Array.isArray(s) ? s : [s], Array.isArray(a) ? a : [a]) || r;
|
|
337
337
|
} else
|
|
338
|
-
t.push(
|
|
338
|
+
t.push(s), r = !0;
|
|
339
339
|
else {
|
|
340
|
-
const f = String(
|
|
340
|
+
const f = String(s);
|
|
341
341
|
a && a.nodeType === 3 && a.data === f ? t.push(a) : t.push(document.createTextNode(f));
|
|
342
342
|
}
|
|
343
343
|
}
|
|
344
344
|
return r;
|
|
345
345
|
}
|
|
346
|
-
function
|
|
347
|
-
for (let
|
|
346
|
+
function dt(t, n, e = null) {
|
|
347
|
+
for (let i = 0, r = n.length; i < r; i++) t.insertBefore(n[i], e);
|
|
348
348
|
}
|
|
349
|
-
function $(t,
|
|
350
|
-
if (
|
|
351
|
-
const r =
|
|
352
|
-
if (
|
|
349
|
+
function $(t, n, e, i) {
|
|
350
|
+
if (e === void 0) return t.textContent = "";
|
|
351
|
+
const r = i || document.createTextNode("");
|
|
352
|
+
if (n.length) {
|
|
353
353
|
let o = !1;
|
|
354
|
-
for (let l =
|
|
355
|
-
const
|
|
356
|
-
if (r !==
|
|
357
|
-
const a =
|
|
358
|
-
!o && !l ? a ? t.replaceChild(r,
|
|
354
|
+
for (let l = n.length - 1; l >= 0; l--) {
|
|
355
|
+
const s = n[l];
|
|
356
|
+
if (r !== s) {
|
|
357
|
+
const a = s.parentNode === t;
|
|
358
|
+
!o && !l ? a ? t.replaceChild(r, s) : t.insertBefore(r, e) : a && s.remove();
|
|
359
359
|
} else o = !0;
|
|
360
360
|
}
|
|
361
|
-
} else t.insertBefore(r,
|
|
361
|
+
} else t.insertBefore(r, e);
|
|
362
362
|
return [r];
|
|
363
363
|
}
|
|
364
|
-
function
|
|
365
|
-
return Object.keys(t).reduce((
|
|
366
|
-
const r = t[
|
|
367
|
-
return
|
|
364
|
+
function Wt(t) {
|
|
365
|
+
return Object.keys(t).reduce((e, i) => {
|
|
366
|
+
const r = t[i];
|
|
367
|
+
return e[i] = Object.assign({}, r), At(r.value) && !Jt(r.value) && !Array.isArray(r.value) && (e[i].value = Object.assign({}, r.value)), Array.isArray(r.value) && (e[i].value = r.value.slice(0)), e;
|
|
368
368
|
}, {});
|
|
369
369
|
}
|
|
370
|
-
function
|
|
371
|
-
return t ? Object.keys(t).reduce((
|
|
372
|
-
const r = t[
|
|
373
|
-
return
|
|
370
|
+
function Kt(t) {
|
|
371
|
+
return t ? Object.keys(t).reduce((e, i) => {
|
|
372
|
+
const r = t[i];
|
|
373
|
+
return e[i] = At(r) && "value" in r ? r : {
|
|
374
374
|
value: r
|
|
375
|
-
},
|
|
375
|
+
}, e[i].attribute || (e[i].attribute = Ht(i)), e[i].parse = "parse" in e[i] ? e[i].parse : typeof e[i].value != "string", e;
|
|
376
376
|
}, {}) : {};
|
|
377
377
|
}
|
|
378
|
-
function
|
|
379
|
-
return Object.keys(t).reduce((
|
|
378
|
+
function Vt(t) {
|
|
379
|
+
return Object.keys(t).reduce((e, i) => (e[i] = t[i].value, e), {});
|
|
380
380
|
}
|
|
381
|
-
function
|
|
382
|
-
const
|
|
383
|
-
return Object.keys(
|
|
384
|
-
const o =
|
|
385
|
-
l != null && (o.value = o.parse ?
|
|
381
|
+
function qt(t, n) {
|
|
382
|
+
const e = Wt(n);
|
|
383
|
+
return Object.keys(n).forEach((r) => {
|
|
384
|
+
const o = e[r], l = t.getAttribute(o.attribute), s = t[r];
|
|
385
|
+
l != null && (o.value = o.parse ? St(l) : l), s != null && (o.value = Array.isArray(s) ? s.slice(0) : s), o.reflect && pt(t, o.attribute, o.value, !!o.parse), Object.defineProperty(t, r, {
|
|
386
386
|
get() {
|
|
387
387
|
return o.value;
|
|
388
388
|
},
|
|
389
389
|
set(a) {
|
|
390
390
|
const g = o.value;
|
|
391
|
-
o.value = a, o.reflect &&
|
|
391
|
+
o.value = a, o.reflect && pt(this, o.attribute, o.value, !!o.parse);
|
|
392
392
|
for (let f = 0, d = this.__propertyChangedCallbacks.length; f < d; f++)
|
|
393
393
|
this.__propertyChangedCallbacks[f](r, a, g);
|
|
394
394
|
},
|
|
395
395
|
enumerable: !0,
|
|
396
396
|
configurable: !0
|
|
397
397
|
});
|
|
398
|
-
}),
|
|
398
|
+
}), e;
|
|
399
399
|
}
|
|
400
|
-
function
|
|
400
|
+
function St(t) {
|
|
401
401
|
if (t)
|
|
402
402
|
try {
|
|
403
403
|
return JSON.parse(t);
|
|
@@ -405,47 +405,47 @@ function xt(t) {
|
|
|
405
405
|
return t;
|
|
406
406
|
}
|
|
407
407
|
}
|
|
408
|
-
function
|
|
409
|
-
if (
|
|
410
|
-
let r =
|
|
411
|
-
t.__updating[
|
|
408
|
+
function pt(t, n, e, i) {
|
|
409
|
+
if (e == null || e === !1) return t.removeAttribute(n);
|
|
410
|
+
let r = i ? JSON.stringify(e) : e;
|
|
411
|
+
t.__updating[n] = !0, r === "true" && (r = ""), t.setAttribute(n, r), Promise.resolve().then(() => delete t.__updating[n]);
|
|
412
412
|
}
|
|
413
|
-
function
|
|
414
|
-
return t.replace(/\.?([A-Z]+)/g, (
|
|
413
|
+
function Ht(t) {
|
|
414
|
+
return t.replace(/\.?([A-Z]+)/g, (n, e) => "-" + e.toLowerCase()).replace("_", "-").replace(/^-/, "");
|
|
415
415
|
}
|
|
416
|
-
function
|
|
416
|
+
function At(t) {
|
|
417
417
|
return t != null && (typeof t == "object" || typeof t == "function");
|
|
418
418
|
}
|
|
419
|
-
function
|
|
419
|
+
function Jt(t) {
|
|
420
420
|
return Object.prototype.toString.call(t) === "[object Function]";
|
|
421
421
|
}
|
|
422
|
-
function
|
|
422
|
+
function Gt(t) {
|
|
423
423
|
return typeof t == "function" && t.toString().indexOf("class") === 0;
|
|
424
424
|
}
|
|
425
|
-
let
|
|
426
|
-
function
|
|
427
|
-
const
|
|
425
|
+
let rt;
|
|
426
|
+
function Xt(t, n) {
|
|
427
|
+
const e = Object.keys(n);
|
|
428
428
|
return class extends t {
|
|
429
429
|
static get observedAttributes() {
|
|
430
|
-
return
|
|
430
|
+
return e.map((r) => n[r].attribute);
|
|
431
431
|
}
|
|
432
432
|
constructor() {
|
|
433
433
|
super(), this.__initialized = !1, this.__released = !1, this.__releaseCallbacks = [], this.__propertyChangedCallbacks = [], this.__updating = {}, this.props = {};
|
|
434
|
-
for (let r of
|
|
434
|
+
for (let r of e)
|
|
435
435
|
this[r] = void 0;
|
|
436
436
|
}
|
|
437
437
|
connectedCallback() {
|
|
438
438
|
if (this.__initialized) return;
|
|
439
|
-
this.__releaseCallbacks = [], this.__propertyChangedCallbacks = [], this.__updating = {}, this.props =
|
|
440
|
-
const r =
|
|
439
|
+
this.__releaseCallbacks = [], this.__propertyChangedCallbacks = [], this.__updating = {}, this.props = qt(this, n);
|
|
440
|
+
const r = Vt(this.props), o = this.Component, l = rt;
|
|
441
441
|
try {
|
|
442
|
-
|
|
442
|
+
rt = this, this.__initialized = !0, Gt(o) ? new o(r, {
|
|
443
443
|
element: this
|
|
444
444
|
}) : o(r, {
|
|
445
445
|
element: this
|
|
446
446
|
});
|
|
447
447
|
} finally {
|
|
448
|
-
|
|
448
|
+
rt = l;
|
|
449
449
|
}
|
|
450
450
|
}
|
|
451
451
|
async disconnectedCallback() {
|
|
@@ -456,14 +456,14 @@ function Gt(t, e) {
|
|
|
456
456
|
delete this.__initialized, this.__released = !0;
|
|
457
457
|
}
|
|
458
458
|
attributeChangedCallback(r, o, l) {
|
|
459
|
-
if (this.__initialized && !this.__updating[r] && (r = this.lookupProp(r), r in
|
|
459
|
+
if (this.__initialized && !this.__updating[r] && (r = this.lookupProp(r), r in n)) {
|
|
460
460
|
if (l == null && !this[r]) return;
|
|
461
|
-
this[r] =
|
|
461
|
+
this[r] = n[r].parse ? St(l) : l;
|
|
462
462
|
}
|
|
463
463
|
}
|
|
464
464
|
lookupProp(r) {
|
|
465
|
-
if (
|
|
466
|
-
return
|
|
465
|
+
if (n)
|
|
466
|
+
return e.find((o) => r === o || r === n[o].attribute);
|
|
467
467
|
}
|
|
468
468
|
get renderRoot() {
|
|
469
469
|
return this.shadowRoot || this.attachShadow({
|
|
@@ -478,54 +478,54 @@ function Gt(t, e) {
|
|
|
478
478
|
}
|
|
479
479
|
};
|
|
480
480
|
}
|
|
481
|
-
function
|
|
481
|
+
function Zt(t, n = {}, e = {}) {
|
|
482
482
|
const {
|
|
483
|
-
BaseElement:
|
|
483
|
+
BaseElement: i = HTMLElement,
|
|
484
484
|
extension: r,
|
|
485
485
|
customElements: o = window.customElements
|
|
486
|
-
} =
|
|
486
|
+
} = e;
|
|
487
487
|
return (l) => {
|
|
488
|
-
let
|
|
489
|
-
return
|
|
488
|
+
let s = o.get(t);
|
|
489
|
+
return s ? (s.prototype.Component = l, s) : (s = Xt(i, Kt(n)), s.prototype.Component = l, s.prototype.registeredTag = t, o.define(t, s, r), s);
|
|
490
490
|
};
|
|
491
491
|
}
|
|
492
|
-
function
|
|
493
|
-
const
|
|
494
|
-
for (let
|
|
495
|
-
const [r, o] =
|
|
496
|
-
Object.defineProperty(
|
|
492
|
+
function Qt(t) {
|
|
493
|
+
const n = Object.keys(t), e = {};
|
|
494
|
+
for (let i = 0; i < n.length; i++) {
|
|
495
|
+
const [r, o] = wt(t[n[i]]);
|
|
496
|
+
Object.defineProperty(e, n[i], {
|
|
497
497
|
get: r,
|
|
498
498
|
set(l) {
|
|
499
499
|
o(() => l);
|
|
500
500
|
}
|
|
501
501
|
});
|
|
502
502
|
}
|
|
503
|
-
return
|
|
504
|
-
}
|
|
505
|
-
function Qt(t) {
|
|
506
|
-
if (t.assignedSlot && t.assignedSlot._$owner) return t.assignedSlot._$owner;
|
|
507
|
-
let e = t.parentNode;
|
|
508
|
-
for (; e && !e._$owner && !(e.assignedSlot && e.assignedSlot._$owner); )
|
|
509
|
-
e = e.parentNode;
|
|
510
|
-
return e && e.assignedSlot ? e.assignedSlot._$owner : t._$owner;
|
|
503
|
+
return e;
|
|
511
504
|
}
|
|
512
505
|
function Yt(t) {
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
506
|
+
if (t.assignedSlot && t.assignedSlot._$owner) return t.assignedSlot._$owner;
|
|
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 te(t) {
|
|
513
|
+
return (n, e) => {
|
|
514
|
+
const { element: i } = e;
|
|
515
|
+
return $t((r) => {
|
|
516
|
+
const o = Qt(n);
|
|
517
|
+
i.addPropertyChangedCallback((s, a) => o[s] = a), i.addReleaseCallback(() => {
|
|
518
|
+
i.renderRoot.textContent = "", r();
|
|
519
519
|
});
|
|
520
|
-
const l = t(o,
|
|
521
|
-
return
|
|
522
|
-
},
|
|
520
|
+
const l = t(o, e);
|
|
521
|
+
return M(i.renderRoot, l);
|
|
522
|
+
}, Yt(i));
|
|
523
523
|
};
|
|
524
524
|
}
|
|
525
|
-
function
|
|
526
|
-
return arguments.length === 2 && (
|
|
525
|
+
function ee(t, n, e) {
|
|
526
|
+
return arguments.length === 2 && (e = n, n = {}), Zt(t, n)(te(e));
|
|
527
527
|
}
|
|
528
|
-
const
|
|
528
|
+
const ne = `
|
|
529
529
|
:host([theme="dark"]) {
|
|
530
530
|
color-scheme: only dark;
|
|
531
531
|
}
|
|
@@ -583,44 +583,50 @@ const ee = `
|
|
|
583
583
|
}
|
|
584
584
|
}
|
|
585
585
|
`;
|
|
586
|
-
var
|
|
587
|
-
console.debug("[dictate-button] version:", "2.
|
|
588
|
-
const
|
|
589
|
-
customElements.get("dictate-button") ? console.debug("[dictate-button] We don't require importing the dictate-button component separately anymore, so you may remove the script tag which imports https://cdn.dictate-button.io/dictate-button.js from the HTML head.") :
|
|
586
|
+
var re = /* @__PURE__ */ D('<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>'), ie = /* @__PURE__ */ D('<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">'), se = /* @__PURE__ */ D('<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>'), oe = /* @__PURE__ */ D('<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>'), le = /* @__PURE__ */ D('<svg part=icon class="dictate-button__icon dictate-button__icon--processing"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round role=img aria-hidden=true><path d="M12 2v4"></path><path d="M12 18v4"></path><path d="M4.93 4.93l2.83 2.83"></path><path d="M16.24 16.24l2.83 2.83"></path><path d="M2 12h4"></path><path d="M18 12h4"></path><path d="M4.93 19.07l2.83-2.83"></path><path d="M16.24 7.76l2.83-2.83">');
|
|
587
|
+
console.debug("[dictate-button] version:", "2.1.0");
|
|
588
|
+
const ae = "wss://api.dictate-button.io/v2/transcribe", k = "dictate-button.io", it = -70, ht = -10, gt = 0, ce = 4, ue = 0.25, fe = 0.05;
|
|
589
|
+
customElements.get("dictate-button") ? console.debug("[dictate-button] We don't require importing the dictate-button component separately anymore, so you may remove the script tag which imports https://cdn.dictate-button.io/dictate-button.js from the HTML head.") : ee("dictate-button", {
|
|
590
590
|
size: 30,
|
|
591
|
-
apiEndpoint:
|
|
591
|
+
apiEndpoint: ae,
|
|
592
592
|
language: "en"
|
|
593
593
|
}, (t, {
|
|
594
|
-
element:
|
|
594
|
+
element: n
|
|
595
595
|
}) => {
|
|
596
596
|
console.debug("[dictate-button] api:", t.apiEndpoint);
|
|
597
|
-
const [
|
|
598
|
-
let r = null, o = null, l = null,
|
|
599
|
-
const
|
|
597
|
+
const [e, i] = wt("idle");
|
|
598
|
+
let r = null, o = null, l = null, s = "", a = "", g = -1, f = "", d = null, m = null, c = null, P = null, U = !1, R = 0;
|
|
599
|
+
const kt = (u) => u <= it ? 0 : u >= ht ? 1 : (u - it) / (ht - it), Tt = (u) => {
|
|
600
600
|
let _ = 0;
|
|
601
|
-
for (let C = 0; C <
|
|
602
|
-
const p = (
|
|
601
|
+
for (let C = 0; C < u.length; C++) {
|
|
602
|
+
const p = (u[C] - 128) / 128;
|
|
603
603
|
_ += p * p;
|
|
604
604
|
}
|
|
605
|
-
return Math.sqrt(_ /
|
|
606
|
-
},
|
|
607
|
-
const _ =
|
|
605
|
+
return Math.sqrt(_ / u.length);
|
|
606
|
+
}, Pt = (u) => 20 * Math.log10(Math.max(u, 1e-8)), lt = (u) => {
|
|
607
|
+
const _ = n.shadowRoot.querySelector(".dictate-button__button");
|
|
608
608
|
if (!_)
|
|
609
609
|
return;
|
|
610
|
-
const C =
|
|
610
|
+
const C = gt + u * (ce - gt), p = 0 + u * 0.4;
|
|
611
611
|
_.style.boxShadow = `0 0 0 ${C}px light-dark(rgba(0, 0, 0, ${p}), rgba(255, 255, 255, ${p}))`;
|
|
612
|
-
},
|
|
612
|
+
}, at = () => {
|
|
613
613
|
if (!U || !m || !P) return;
|
|
614
614
|
m.getByteTimeDomainData(P);
|
|
615
|
-
const
|
|
616
|
-
R = p * C + (1 - p) * R,
|
|
615
|
+
const u = Tt(P), _ = Pt(u), C = kt(_), p = C > R ? ue : fe;
|
|
616
|
+
R = p * C + (1 - p) * R, lt(R), requestAnimationFrame(at);
|
|
617
617
|
}, O = () => {
|
|
618
|
-
r && (r.close(), r = null),
|
|
618
|
+
r && (r.close(), r = null), c && (c.disconnect(), c = null), o && (o.getTracks().forEach((u) => u.stop()), o = null), l = null, s = "", a = "", g = -1, f = "", U = !1, d && d.state !== "closed" && d.close(), d = null, m = null, P = null, R = 0, lt(0);
|
|
619
619
|
};
|
|
620
|
-
|
|
621
|
-
const
|
|
622
|
-
|
|
623
|
-
|
|
620
|
+
n.addEventListener("disconnected", O);
|
|
621
|
+
const ct = () => {
|
|
622
|
+
document.visibilityState === "hidden" && e() === "transcribing" && tt();
|
|
623
|
+
};
|
|
624
|
+
document.addEventListener("visibilitychange", ct), ft(() => {
|
|
625
|
+
document.removeEventListener("visibilitychange", ct);
|
|
626
|
+
});
|
|
627
|
+
const ut = async (u) => {
|
|
628
|
+
if (e() === "idle") {
|
|
629
|
+
l = u, s = "", a = "", g = -1, f = "";
|
|
624
630
|
try {
|
|
625
631
|
const _ = await navigator.mediaDevices.getUserMedia({
|
|
626
632
|
audio: {
|
|
@@ -655,94 +661,94 @@ customElements.get("dictate-button") ? console.debug("[dictate-button] We don't
|
|
|
655
661
|
`, F = new Blob([p], {
|
|
656
662
|
type: "application/javascript"
|
|
657
663
|
}), h = URL.createObjectURL(F);
|
|
658
|
-
await d.audioWorklet.addModule(h), URL.revokeObjectURL(h),
|
|
664
|
+
await d.audioWorklet.addModule(h), URL.revokeObjectURL(h), c = new AudioWorkletNode(d, "pcm-processor"), C.connect(c);
|
|
659
665
|
const W = new URL(t.apiEndpoint);
|
|
660
|
-
t.language && W.searchParams.set("language", t.language), r = new WebSocket(W.toString()), r.onmessage = (
|
|
666
|
+
t.language && W.searchParams.set("language", t.language), r = new WebSocket(W.toString()), r.onmessage = (S) => {
|
|
661
667
|
try {
|
|
662
|
-
const v = JSON.parse(
|
|
668
|
+
const v = JSON.parse(S.data);
|
|
663
669
|
if (v.type === "interim_transcript" && v.text) {
|
|
664
670
|
f = v.text;
|
|
665
|
-
const
|
|
666
|
-
A(
|
|
671
|
+
const L = [a, s, f].filter(Boolean).join(" ");
|
|
672
|
+
A(n, "dictate-text", L);
|
|
667
673
|
} else if (v.type === "transcript" && v.text) {
|
|
668
|
-
const
|
|
669
|
-
f = "",
|
|
670
|
-
const
|
|
671
|
-
A(
|
|
672
|
-
} else v.type === "error" && (console.error("[dictate-button] Server error:", v.error), A(
|
|
674
|
+
const L = v.turn_order ?? 0, x = v.text;
|
|
675
|
+
f = "", L > g ? (s && (a = a ? a + " " + s : s), g = L, s = x) : x.length > s.length && x.startsWith(s.substring(0, Math.min(10, s.length))) ? s = x : s = s ? s + " " + x : x;
|
|
676
|
+
const Lt = a ? a + " " + s : s;
|
|
677
|
+
A(n, "dictate-text", Lt);
|
|
678
|
+
} else v.type === "error" && (console.error("[dictate-button] Server error:", v.error), A(n, "dictate-error", v.error), et(), O());
|
|
673
679
|
} catch (v) {
|
|
674
680
|
console.error("[dictate-button] Error parsing message:", v);
|
|
675
681
|
}
|
|
676
|
-
}, r.onerror = (
|
|
677
|
-
console.error("[dictate-button] WebSocket error:",
|
|
682
|
+
}, r.onerror = (S) => {
|
|
683
|
+
console.error("[dictate-button] WebSocket error:", S), A(n, "dictate-error", "Connection error"), et(), O();
|
|
678
684
|
}, r.onclose = () => {
|
|
679
|
-
},
|
|
680
|
-
r && r.readyState === WebSocket.OPEN && r.send(
|
|
681
|
-
}, A(
|
|
685
|
+
}, c.port.onmessage = (S) => {
|
|
686
|
+
r && r.readyState === WebSocket.OPEN && r.send(S.data);
|
|
687
|
+
}, A(n, "dictate-start", "Started transcribing"), U = !0, at(), i("transcribing");
|
|
682
688
|
} catch (_) {
|
|
683
|
-
console.error("[dictate-button] Failed to start:", _), A(
|
|
689
|
+
console.error("[dictate-button] Failed to start:", _), A(n, "dictate-error", "Failed to start transcription"), et(), O();
|
|
684
690
|
}
|
|
685
691
|
}
|
|
686
|
-
},
|
|
687
|
-
if (
|
|
688
|
-
if (U = !1,
|
|
692
|
+
}, tt = () => {
|
|
693
|
+
if (e() === "transcribing")
|
|
694
|
+
if (U = !1, i("finalizing"), r && r.readyState === WebSocket.OPEN)
|
|
689
695
|
r.send(JSON.stringify({
|
|
690
696
|
type: "close"
|
|
691
697
|
})), setTimeout(() => {
|
|
692
|
-
const
|
|
693
|
-
|
|
698
|
+
const u = a ? a + (s ? " " + s : "") : s;
|
|
699
|
+
u && A(n, "dictate-end", u), O(), i("idle");
|
|
694
700
|
}, 500);
|
|
695
701
|
else {
|
|
696
|
-
const
|
|
697
|
-
|
|
702
|
+
const u = a ? a + (s ? " " + s : "") : s;
|
|
703
|
+
u && A(n, "dictate-end", u), O(), i("idle");
|
|
698
704
|
}
|
|
699
|
-
},
|
|
700
|
-
|
|
705
|
+
}, et = () => {
|
|
706
|
+
i("error"), setTimeout(() => i("idle"), 2e3);
|
|
701
707
|
};
|
|
702
708
|
let z;
|
|
703
|
-
return
|
|
709
|
+
return Rt(() => {
|
|
704
710
|
if (!z) return;
|
|
705
|
-
const
|
|
711
|
+
const u = ye(z, {
|
|
706
712
|
onShortTap: () => {
|
|
707
|
-
|
|
713
|
+
e() === "idle" ? ut("short-tap") : e() === "transcribing" && l === "short-tap" && tt();
|
|
708
714
|
},
|
|
709
715
|
onLongPressStart: () => {
|
|
710
|
-
|
|
716
|
+
e() === "idle" && ut("long-press");
|
|
711
717
|
},
|
|
712
718
|
onLongPressEnd: () => {
|
|
713
|
-
|
|
719
|
+
e() === "transcribing" && l === "long-press" && tt();
|
|
714
720
|
}
|
|
715
721
|
});
|
|
716
|
-
|
|
722
|
+
ft(u);
|
|
717
723
|
}), (() => {
|
|
718
|
-
var
|
|
719
|
-
|
|
724
|
+
var u = re(), _ = u.firstChild, C = _.nextSibling, p = C.nextSibling;
|
|
725
|
+
M(_, ne), M(C, () => bt(e()));
|
|
720
726
|
var F = z;
|
|
721
|
-
return typeof F == "function" ?
|
|
722
|
-
var h = V(() =>
|
|
723
|
-
return () => h() && K(de, {});
|
|
724
|
-
})(), null), L(p, (() => {
|
|
725
|
-
var h = V(() => n() === "transcribing");
|
|
727
|
+
return typeof F == "function" ? Ft(F, p) : z = p, M(p, (() => {
|
|
728
|
+
var h = V(() => e() === "idle");
|
|
726
729
|
return () => h() && K(pe, {});
|
|
727
|
-
})(), null),
|
|
728
|
-
var h = V(() =>
|
|
729
|
-
return () => h() && K(ge, {});
|
|
730
|
-
})(), null), L(p, (() => {
|
|
731
|
-
var h = V(() => n() === "error");
|
|
730
|
+
})(), null), M(p, (() => {
|
|
731
|
+
var h = V(() => e() === "transcribing");
|
|
732
732
|
return () => h() && K(he, {});
|
|
733
|
+
})(), null), M(p, (() => {
|
|
734
|
+
var h = V(() => e() === "finalizing");
|
|
735
|
+
return () => h() && K(be, {});
|
|
736
|
+
})(), null), M(p, (() => {
|
|
737
|
+
var h = V(() => e() === "error");
|
|
738
|
+
return () => h() && K(ge, {});
|
|
733
739
|
})(), null), J((h) => {
|
|
734
|
-
var W = `width:${t.size}px;height:${t.size}px"`,
|
|
735
|
-
return h.e =
|
|
740
|
+
var W = `width:${t.size}px;height:${t.size}px"`, S = de(e()), v = bt(e()), L = e() === "transcribing", x = e() === "transcribing" || e() === "finalizing";
|
|
741
|
+
return h.e = zt(p, W, h.e), S !== h.t && N(p, "title", h.t = S), v !== h.a && N(p, "aria-label", h.a = v), L !== h.o && N(p, "aria-pressed", h.o = L), x !== h.i && N(p, "aria-busy", h.i = x), h;
|
|
736
742
|
}, {
|
|
737
743
|
e: void 0,
|
|
738
744
|
t: void 0,
|
|
739
745
|
a: void 0,
|
|
740
746
|
o: void 0,
|
|
741
747
|
i: void 0
|
|
742
|
-
}),
|
|
748
|
+
}), u;
|
|
743
749
|
})();
|
|
744
750
|
});
|
|
745
|
-
const
|
|
751
|
+
const de = (t) => {
|
|
746
752
|
switch (t) {
|
|
747
753
|
case "idle":
|
|
748
754
|
return `Start dictation (${k})`;
|
|
@@ -753,7 +759,7 @@ const fe = (t) => {
|
|
|
753
759
|
case "error":
|
|
754
760
|
return `Click to reset (${k})`;
|
|
755
761
|
}
|
|
756
|
-
},
|
|
762
|
+
}, bt = (t) => {
|
|
757
763
|
switch (t) {
|
|
758
764
|
case "idle":
|
|
759
765
|
return `Start dictation (${k})`;
|
|
@@ -764,39 +770,41 @@ const fe = (t) => {
|
|
|
764
770
|
case "error":
|
|
765
771
|
return `Dictation error. Click to reset (${k})`;
|
|
766
772
|
}
|
|
767
|
-
}, A = (t,
|
|
768
|
-
t.dispatchEvent(new CustomEvent(
|
|
769
|
-
detail:
|
|
773
|
+
}, A = (t, n, e) => {
|
|
774
|
+
t.dispatchEvent(new CustomEvent(n, {
|
|
775
|
+
detail: e,
|
|
770
776
|
bubbles: !0,
|
|
771
777
|
composed: !0
|
|
772
778
|
}));
|
|
773
|
-
},
|
|
774
|
-
function
|
|
775
|
-
threshold:
|
|
776
|
-
preventScroll:
|
|
777
|
-
onShortTap:
|
|
779
|
+
}, pe = () => ie(), he = () => se(), ge = () => oe(), be = () => le();
|
|
780
|
+
function ye(t, {
|
|
781
|
+
threshold: n = 500,
|
|
782
|
+
preventScroll: e = !0,
|
|
783
|
+
onShortTap: i,
|
|
778
784
|
onLongPressStart: r,
|
|
779
785
|
onLongPressEnd: o
|
|
780
786
|
} = {}) {
|
|
781
|
-
let l,
|
|
782
|
-
const a = (
|
|
783
|
-
l && clearTimeout(l),
|
|
784
|
-
|
|
785
|
-
detail:
|
|
787
|
+
let l, s = !1;
|
|
788
|
+
const a = (c) => c.preventDefault(), g = (c) => {
|
|
789
|
+
l && clearTimeout(l), s = !1, c.preventDefault(), t.setPointerCapture(c.pointerId), l = window.setTimeout(() => {
|
|
790
|
+
s = !0, r?.(c), t.dispatchEvent(new CustomEvent("longpress", {
|
|
791
|
+
detail: c
|
|
786
792
|
}));
|
|
787
|
-
},
|
|
788
|
-
}, f = (
|
|
789
|
-
l && clearTimeout(l), t.releasePointerCapture(
|
|
790
|
-
detail:
|
|
791
|
-
}))) : (
|
|
792
|
-
detail:
|
|
793
|
+
}, n);
|
|
794
|
+
}, f = (c) => {
|
|
795
|
+
l && clearTimeout(l), t.releasePointerCapture(c.pointerId), s ? (o?.(c), t.dispatchEvent(new CustomEvent("longpressend", {
|
|
796
|
+
detail: c
|
|
797
|
+
}))) : (i?.(c), t.dispatchEvent(new CustomEvent("shorttap", {
|
|
798
|
+
detail: c
|
|
793
799
|
})));
|
|
794
|
-
}, d = (
|
|
795
|
-
l && clearTimeout(l), t.releasePointerCapture(
|
|
796
|
-
|
|
797
|
-
|
|
800
|
+
}, d = (c) => {
|
|
801
|
+
l && clearTimeout(l), t.releasePointerCapture(c.pointerId), s && (o?.(c), t.dispatchEvent(new CustomEvent("longpressend", {
|
|
802
|
+
detail: c
|
|
803
|
+
}))), s = !1;
|
|
804
|
+
}, m = (c) => {
|
|
805
|
+
c.preventDefault(), c.stopPropagation();
|
|
798
806
|
};
|
|
799
|
-
return
|
|
800
|
-
|
|
807
|
+
return e && (t.style.touchAction = "none", t.addEventListener("contextmenu", a)), t.addEventListener("pointerdown", g), t.addEventListener("pointerup", f), t.addEventListener("pointercancel", d), t.addEventListener("click", m), () => {
|
|
808
|
+
e && t.removeEventListener("contextmenu", a), t.removeEventListener("pointerdown", g), t.removeEventListener("pointerup", f), t.removeEventListener("pointercancel", d), t.removeEventListener("click", m);
|
|
801
809
|
};
|
|
802
810
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dictate-button",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Customizable Web Component that adds speech-to-text dictation capabilities to text fields",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"custom-element",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"vite": "^7.3.1",
|
|
73
73
|
"vite-plugin-dts": "^4.5.4",
|
|
74
74
|
"vite-plugin-solid": "^2.11.10",
|
|
75
|
-
"vite-plugin-static-copy": "^3.1.
|
|
75
|
+
"vite-plugin-static-copy": "^3.1.5",
|
|
76
76
|
"vitest": "^4.0.17"
|
|
77
77
|
},
|
|
78
78
|
"homepage": "https://github.com/dictate-button/dictate-button",
|