@makefully/notefully 0.1.0 → 0.1.2
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/README.md +71 -44
- package/dist/notefully.iife.js +19 -18
- package/dist/notefully.js +534 -472
- package/package.json +47 -47
package/dist/notefully.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function
|
|
1
|
+
function ae(t, e) {
|
|
2
2
|
if (t.match(/^[a-z]+:\/\//i))
|
|
3
3
|
return t;
|
|
4
4
|
if (t.match(/^\/\//))
|
|
@@ -8,7 +8,7 @@ function te(t, e) {
|
|
|
8
8
|
const r = document.implementation.createHTMLDocument(), n = r.createElement("base"), i = r.createElement("a");
|
|
9
9
|
return r.head.appendChild(n), r.body.appendChild(i), e && (n.href = e), i.href = t, i.href;
|
|
10
10
|
}
|
|
11
|
-
const
|
|
11
|
+
const se = /* @__PURE__ */ (() => {
|
|
12
12
|
let t = 0;
|
|
13
13
|
const e = () => (
|
|
14
14
|
// eslint-disable-next-line no-bitwise
|
|
@@ -16,33 +16,33 @@ const ee = /* @__PURE__ */ (() => {
|
|
|
16
16
|
);
|
|
17
17
|
return () => (t += 1, `u${e()}${t}`);
|
|
18
18
|
})();
|
|
19
|
-
function
|
|
19
|
+
function H(t) {
|
|
20
20
|
const e = [];
|
|
21
21
|
for (let r = 0, n = t.length; r < n; r++)
|
|
22
22
|
e.push(t[r]);
|
|
23
23
|
return e;
|
|
24
24
|
}
|
|
25
|
-
let
|
|
26
|
-
function
|
|
27
|
-
return
|
|
25
|
+
let N = null;
|
|
26
|
+
function Ht(t = {}) {
|
|
27
|
+
return N || (t.includeStyleProperties ? (N = t.includeStyleProperties, N) : (N = H(window.getComputedStyle(document.documentElement)), N));
|
|
28
28
|
}
|
|
29
|
-
function
|
|
29
|
+
function X(t, e) {
|
|
30
30
|
const n = (t.ownerDocument.defaultView || window).getComputedStyle(t).getPropertyValue(e);
|
|
31
31
|
return n ? parseFloat(n.replace("px", "")) : 0;
|
|
32
32
|
}
|
|
33
|
-
function
|
|
34
|
-
const e =
|
|
33
|
+
function ce(t) {
|
|
34
|
+
const e = X(t, "border-left-width"), r = X(t, "border-right-width");
|
|
35
35
|
return t.clientWidth + e + r;
|
|
36
36
|
}
|
|
37
|
-
function
|
|
38
|
-
const e =
|
|
37
|
+
function le(t) {
|
|
38
|
+
const e = X(t, "border-top-width"), r = X(t, "border-bottom-width");
|
|
39
39
|
return t.clientHeight + e + r;
|
|
40
40
|
}
|
|
41
|
-
function
|
|
42
|
-
const r = e.width ||
|
|
41
|
+
function Ut(t, e = {}) {
|
|
42
|
+
const r = e.width || ce(t), n = e.height || le(t);
|
|
43
43
|
return { width: r, height: n };
|
|
44
44
|
}
|
|
45
|
-
function
|
|
45
|
+
function ue() {
|
|
46
46
|
let t, e;
|
|
47
47
|
try {
|
|
48
48
|
e = process;
|
|
@@ -52,10 +52,10 @@ function ie() {
|
|
|
52
52
|
return r && (t = parseInt(r, 10), Number.isNaN(t) && (t = 1)), t || window.devicePixelRatio || 1;
|
|
53
53
|
}
|
|
54
54
|
const M = 16384;
|
|
55
|
-
function
|
|
55
|
+
function de(t) {
|
|
56
56
|
(t.width > M || t.height > M) && (t.width > M && t.height > M ? t.width > t.height ? (t.height *= M / t.width, t.width = M) : (t.width *= M / t.height, t.height = M) : t.width > M ? (t.height *= M / t.width, t.width = M) : (t.width *= M / t.height, t.height = M));
|
|
57
57
|
}
|
|
58
|
-
function
|
|
58
|
+
function Y(t) {
|
|
59
59
|
return new Promise((e, r) => {
|
|
60
60
|
const n = new Image();
|
|
61
61
|
n.onload = () => {
|
|
@@ -65,12 +65,12 @@ function K(t) {
|
|
|
65
65
|
}, n.onerror = r, n.crossOrigin = "anonymous", n.decoding = "async", n.src = t;
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
|
-
async function
|
|
68
|
+
async function fe(t) {
|
|
69
69
|
return Promise.resolve().then(() => new XMLSerializer().serializeToString(t)).then(encodeURIComponent).then((e) => `data:image/svg+xml;charset=utf-8,${e}`);
|
|
70
70
|
}
|
|
71
|
-
async function
|
|
72
|
-
const n = "http://www.w3.org/2000/svg", i = document.createElementNS(n, "svg"),
|
|
73
|
-
return i.setAttribute("width", `${e}`), i.setAttribute("height", `${r}`), i.setAttribute("viewBox", `0 0 ${e} ${r}`),
|
|
71
|
+
async function he(t, e, r) {
|
|
72
|
+
const n = "http://www.w3.org/2000/svg", i = document.createElementNS(n, "svg"), o = document.createElementNS(n, "foreignObject");
|
|
73
|
+
return i.setAttribute("width", `${e}`), i.setAttribute("height", `${r}`), i.setAttribute("viewBox", `0 0 ${e} ${r}`), o.setAttribute("width", "100%"), o.setAttribute("height", "100%"), o.setAttribute("x", "0"), o.setAttribute("y", "0"), o.setAttribute("externalResourcesRequired", "true"), i.appendChild(o), o.appendChild(t), fe(i);
|
|
74
74
|
}
|
|
75
75
|
const C = (t, e) => {
|
|
76
76
|
if (t instanceof e)
|
|
@@ -78,210 +78,210 @@ const C = (t, e) => {
|
|
|
78
78
|
const r = Object.getPrototypeOf(t);
|
|
79
79
|
return r === null ? !1 : r.constructor.name === e.name || C(r, e);
|
|
80
80
|
};
|
|
81
|
-
function
|
|
81
|
+
function pe(t) {
|
|
82
82
|
const e = t.getPropertyValue("content");
|
|
83
83
|
return `${t.cssText} content: '${e.replace(/'|"/g, "")}';`;
|
|
84
84
|
}
|
|
85
|
-
function
|
|
86
|
-
return
|
|
85
|
+
function me(t, e) {
|
|
86
|
+
return Ht(e).map((r) => {
|
|
87
87
|
const n = t.getPropertyValue(r), i = t.getPropertyPriority(r);
|
|
88
88
|
return `${r}: ${n}${i ? " !important" : ""};`;
|
|
89
89
|
}).join(" ");
|
|
90
90
|
}
|
|
91
|
-
function
|
|
92
|
-
const i = `.${t}:${e}`,
|
|
93
|
-
return document.createTextNode(`${i}{${
|
|
91
|
+
function ye(t, e, r, n) {
|
|
92
|
+
const i = `.${t}:${e}`, o = r.cssText ? pe(r) : me(r, n);
|
|
93
|
+
return document.createTextNode(`${i}{${o}}`);
|
|
94
94
|
}
|
|
95
|
-
function
|
|
96
|
-
const i = window.getComputedStyle(t, r),
|
|
97
|
-
if (
|
|
95
|
+
function Et(t, e, r, n) {
|
|
96
|
+
const i = window.getComputedStyle(t, r), o = i.getPropertyValue("content");
|
|
97
|
+
if (o === "" || o === "none")
|
|
98
98
|
return;
|
|
99
|
-
const
|
|
99
|
+
const a = se();
|
|
100
100
|
try {
|
|
101
|
-
e.className = `${e.className} ${
|
|
101
|
+
e.className = `${e.className} ${a}`;
|
|
102
102
|
} catch {
|
|
103
103
|
return;
|
|
104
104
|
}
|
|
105
105
|
const s = document.createElement("style");
|
|
106
|
-
s.appendChild(
|
|
106
|
+
s.appendChild(ye(a, r, i, n)), e.appendChild(s);
|
|
107
107
|
}
|
|
108
|
-
function
|
|
109
|
-
|
|
108
|
+
function ge(t, e, r) {
|
|
109
|
+
Et(t, e, ":before", r), Et(t, e, ":after", r);
|
|
110
110
|
}
|
|
111
|
-
const
|
|
112
|
-
woff:
|
|
113
|
-
woff2:
|
|
111
|
+
const Ct = "application/font-woff", Mt = "image/jpeg", we = {
|
|
112
|
+
woff: Ct,
|
|
113
|
+
woff2: Ct,
|
|
114
114
|
ttf: "application/font-truetype",
|
|
115
115
|
eot: "application/vnd.ms-fontobject",
|
|
116
116
|
png: "image/png",
|
|
117
|
-
jpg:
|
|
118
|
-
jpeg:
|
|
117
|
+
jpg: Mt,
|
|
118
|
+
jpeg: Mt,
|
|
119
119
|
gif: "image/gif",
|
|
120
120
|
tiff: "image/tiff",
|
|
121
121
|
svg: "image/svg+xml",
|
|
122
122
|
webp: "image/webp"
|
|
123
123
|
};
|
|
124
|
-
function
|
|
124
|
+
function be(t) {
|
|
125
125
|
const e = /\.([^./]*?)$/g.exec(t);
|
|
126
126
|
return e ? e[1] : "";
|
|
127
127
|
}
|
|
128
|
-
function
|
|
129
|
-
const e =
|
|
130
|
-
return
|
|
128
|
+
function wt(t) {
|
|
129
|
+
const e = be(t).toLowerCase();
|
|
130
|
+
return we[e] || "";
|
|
131
131
|
}
|
|
132
|
-
function
|
|
132
|
+
function ve(t) {
|
|
133
133
|
return t.split(/,/)[1];
|
|
134
134
|
}
|
|
135
|
-
function
|
|
135
|
+
function ct(t) {
|
|
136
136
|
return t.search(/^(data:)/) !== -1;
|
|
137
137
|
}
|
|
138
|
-
function
|
|
138
|
+
function xe(t, e) {
|
|
139
139
|
return `data:${e};base64,${t}`;
|
|
140
140
|
}
|
|
141
|
-
async function
|
|
141
|
+
async function Vt(t, e, r) {
|
|
142
142
|
const n = await fetch(t, e);
|
|
143
143
|
if (n.status === 404)
|
|
144
144
|
throw new Error(`Resource "${n.url}" not found`);
|
|
145
145
|
const i = await n.blob();
|
|
146
|
-
return new Promise((
|
|
146
|
+
return new Promise((o, a) => {
|
|
147
147
|
const s = new FileReader();
|
|
148
|
-
s.onerror =
|
|
148
|
+
s.onerror = a, s.onloadend = () => {
|
|
149
149
|
try {
|
|
150
|
-
|
|
150
|
+
o(r({ res: n, result: s.result }));
|
|
151
151
|
} catch (l) {
|
|
152
|
-
|
|
152
|
+
a(l);
|
|
153
153
|
}
|
|
154
154
|
}, s.readAsDataURL(i);
|
|
155
155
|
});
|
|
156
156
|
}
|
|
157
|
-
const
|
|
158
|
-
function
|
|
157
|
+
const ot = {};
|
|
158
|
+
function Se(t, e, r) {
|
|
159
159
|
let n = t.replace(/\?.*/, "");
|
|
160
160
|
return r && (n = t), /ttf|otf|eot|woff2?/i.test(n) && (n = n.replace(/.*\//, "")), e ? `[${e}]${n}` : n;
|
|
161
161
|
}
|
|
162
|
-
async function
|
|
163
|
-
const n =
|
|
164
|
-
if (
|
|
165
|
-
return
|
|
162
|
+
async function bt(t, e, r) {
|
|
163
|
+
const n = Se(t, e, r.includeQueryParams);
|
|
164
|
+
if (ot[n] != null)
|
|
165
|
+
return ot[n];
|
|
166
166
|
r.cacheBust && (t += (/\?/.test(t) ? "&" : "?") + (/* @__PURE__ */ new Date()).getTime());
|
|
167
167
|
let i;
|
|
168
168
|
try {
|
|
169
|
-
const
|
|
170
|
-
i =
|
|
171
|
-
} catch (
|
|
169
|
+
const o = await Vt(t, r.fetchRequestInit, ({ res: a, result: s }) => (e || (e = a.headers.get("Content-Type") || ""), ve(s)));
|
|
170
|
+
i = xe(o, e);
|
|
171
|
+
} catch (o) {
|
|
172
172
|
i = r.imagePlaceholder || "";
|
|
173
|
-
let
|
|
174
|
-
|
|
173
|
+
let a = `Failed to fetch resource: ${t}`;
|
|
174
|
+
o && (a = typeof o == "string" ? o : o.message), a && console.warn(a);
|
|
175
175
|
}
|
|
176
|
-
return
|
|
176
|
+
return ot[n] = i, i;
|
|
177
177
|
}
|
|
178
|
-
async function
|
|
178
|
+
async function Ee(t) {
|
|
179
179
|
const e = t.toDataURL();
|
|
180
|
-
return e === "data:," ? t.cloneNode(!1) :
|
|
180
|
+
return e === "data:," ? t.cloneNode(!1) : Y(e);
|
|
181
181
|
}
|
|
182
|
-
async function
|
|
182
|
+
async function Ce(t, e) {
|
|
183
183
|
if (t.currentSrc) {
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
const s =
|
|
187
|
-
return
|
|
184
|
+
const o = document.createElement("canvas"), a = o.getContext("2d");
|
|
185
|
+
o.width = t.clientWidth, o.height = t.clientHeight, a == null || a.drawImage(t, 0, 0, o.width, o.height);
|
|
186
|
+
const s = o.toDataURL();
|
|
187
|
+
return Y(s);
|
|
188
188
|
}
|
|
189
|
-
const r = t.poster, n =
|
|
190
|
-
return
|
|
189
|
+
const r = t.poster, n = wt(r), i = await bt(r, n, e);
|
|
190
|
+
return Y(i);
|
|
191
191
|
}
|
|
192
|
-
async function
|
|
192
|
+
async function Me(t, e) {
|
|
193
193
|
var r;
|
|
194
194
|
try {
|
|
195
195
|
if (!((r = t == null ? void 0 : t.contentDocument) === null || r === void 0) && r.body)
|
|
196
|
-
return await
|
|
196
|
+
return await tt(t.contentDocument.body, e, !0);
|
|
197
197
|
} catch {
|
|
198
198
|
}
|
|
199
199
|
return t.cloneNode(!1);
|
|
200
200
|
}
|
|
201
|
-
async function
|
|
202
|
-
return C(t, HTMLCanvasElement) ?
|
|
201
|
+
async function $e(t, e) {
|
|
202
|
+
return C(t, HTMLCanvasElement) ? Ee(t) : C(t, HTMLVideoElement) ? Ce(t, e) : C(t, HTMLIFrameElement) ? Me(t, e) : t.cloneNode(Bt(t));
|
|
203
203
|
}
|
|
204
|
-
const
|
|
205
|
-
async function
|
|
204
|
+
const Re = (t) => t.tagName != null && t.tagName.toUpperCase() === "SLOT", Bt = (t) => t.tagName != null && t.tagName.toUpperCase() === "SVG";
|
|
205
|
+
async function Le(t, e, r) {
|
|
206
206
|
var n, i;
|
|
207
|
-
if (
|
|
207
|
+
if (Bt(e))
|
|
208
208
|
return e;
|
|
209
|
-
let
|
|
210
|
-
return
|
|
209
|
+
let o = [];
|
|
210
|
+
return Re(t) && t.assignedNodes ? o = H(t.assignedNodes()) : C(t, HTMLIFrameElement) && (!((n = t.contentDocument) === null || n === void 0) && n.body) ? o = H(t.contentDocument.body.childNodes) : o = H(((i = t.shadowRoot) !== null && i !== void 0 ? i : t).childNodes), o.length === 0 || C(t, HTMLVideoElement) || await o.reduce((a, s) => a.then(() => tt(s, r)).then((l) => {
|
|
211
211
|
l && e.appendChild(l);
|
|
212
212
|
}), Promise.resolve()), e;
|
|
213
213
|
}
|
|
214
|
-
function
|
|
214
|
+
function Pe(t, e, r) {
|
|
215
215
|
const n = e.style;
|
|
216
216
|
if (!n)
|
|
217
217
|
return;
|
|
218
218
|
const i = window.getComputedStyle(t);
|
|
219
|
-
i.cssText ? (n.cssText = i.cssText, n.transformOrigin = i.transformOrigin) :
|
|
220
|
-
let
|
|
221
|
-
|
|
219
|
+
i.cssText ? (n.cssText = i.cssText, n.transformOrigin = i.transformOrigin) : Ht(r).forEach((o) => {
|
|
220
|
+
let a = i.getPropertyValue(o);
|
|
221
|
+
o === "font-size" && a.endsWith("px") && (a = `${Math.floor(parseFloat(a.substring(0, a.length - 2))) - 0.1}px`), C(t, HTMLIFrameElement) && o === "display" && a === "inline" && (a = "block"), o === "d" && e.getAttribute("d") && (a = `path(${e.getAttribute("d")})`), n.setProperty(o, a, i.getPropertyPriority(o));
|
|
222
222
|
});
|
|
223
223
|
}
|
|
224
|
-
function
|
|
224
|
+
function ke(t, e) {
|
|
225
225
|
C(t, HTMLTextAreaElement) && (e.innerHTML = t.value), C(t, HTMLInputElement) && e.setAttribute("value", t.value);
|
|
226
226
|
}
|
|
227
|
-
function
|
|
227
|
+
function Te(t, e) {
|
|
228
228
|
if (C(t, HTMLSelectElement)) {
|
|
229
229
|
const n = Array.from(e.children).find((i) => t.value === i.getAttribute("value"));
|
|
230
230
|
n && n.setAttribute("selected", "");
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
|
-
function
|
|
234
|
-
return C(e, Element) && (
|
|
233
|
+
function Ae(t, e, r) {
|
|
234
|
+
return C(e, Element) && (Pe(t, e, r), ge(t, e, r), ke(t, e), Te(t, e)), e;
|
|
235
235
|
}
|
|
236
|
-
async function
|
|
236
|
+
async function Ie(t, e) {
|
|
237
237
|
const r = t.querySelectorAll ? t.querySelectorAll("use") : [];
|
|
238
238
|
if (r.length === 0)
|
|
239
239
|
return t;
|
|
240
240
|
const n = {};
|
|
241
|
-
for (let
|
|
242
|
-
const s = r[
|
|
241
|
+
for (let o = 0; o < r.length; o++) {
|
|
242
|
+
const s = r[o].getAttribute("xlink:href");
|
|
243
243
|
if (s) {
|
|
244
|
-
const l = t.querySelector(s),
|
|
245
|
-
!l &&
|
|
244
|
+
const l = t.querySelector(s), v = document.querySelector(s);
|
|
245
|
+
!l && v && !n[s] && (n[s] = await tt(v, e, !0));
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
248
|
const i = Object.values(n);
|
|
249
249
|
if (i.length) {
|
|
250
|
-
const
|
|
251
|
-
|
|
252
|
-
const s = document.createElementNS(
|
|
253
|
-
|
|
250
|
+
const o = "http://www.w3.org/1999/xhtml", a = document.createElementNS(o, "svg");
|
|
251
|
+
a.setAttribute("xmlns", o), a.style.position = "absolute", a.style.width = "0", a.style.height = "0", a.style.overflow = "hidden", a.style.display = "none";
|
|
252
|
+
const s = document.createElementNS(o, "defs");
|
|
253
|
+
a.appendChild(s);
|
|
254
254
|
for (let l = 0; l < i.length; l++)
|
|
255
255
|
s.appendChild(i[l]);
|
|
256
|
-
t.appendChild(
|
|
256
|
+
t.appendChild(a);
|
|
257
257
|
}
|
|
258
258
|
return t;
|
|
259
259
|
}
|
|
260
|
-
async function
|
|
261
|
-
return !r && e.filter && !e.filter(t) ? null : Promise.resolve(t).then((n) =>
|
|
260
|
+
async function tt(t, e, r) {
|
|
261
|
+
return !r && e.filter && !e.filter(t) ? null : Promise.resolve(t).then((n) => $e(n, e)).then((n) => Le(t, n, e)).then((n) => Ae(t, n, e)).then((n) => Ie(n, e));
|
|
262
262
|
}
|
|
263
|
-
const
|
|
264
|
-
function
|
|
263
|
+
const Nt = /url\((['"]?)([^'"]+?)\1\)/g, De = /url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g, je = /src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;
|
|
264
|
+
function Fe(t) {
|
|
265
265
|
const e = t.replace(/([.*+?^${}()|\[\]\/\\])/g, "\\$1");
|
|
266
266
|
return new RegExp(`(url\\(['"]?)(${e})(['"]?\\))`, "g");
|
|
267
267
|
}
|
|
268
|
-
function
|
|
268
|
+
function Oe(t) {
|
|
269
269
|
const e = [];
|
|
270
|
-
return t.replace(
|
|
270
|
+
return t.replace(Nt, (r, n, i) => (e.push(i), r)), e.filter((r) => !ct(r));
|
|
271
271
|
}
|
|
272
|
-
async function
|
|
272
|
+
async function He(t, e, r, n, i) {
|
|
273
273
|
try {
|
|
274
|
-
const
|
|
274
|
+
const o = r ? ae(e, r) : e, a = wt(e);
|
|
275
275
|
let s;
|
|
276
|
-
return i || (s = await
|
|
276
|
+
return i || (s = await bt(o, a, n)), t.replace(Fe(e), `$1${s}$3`);
|
|
277
277
|
} catch {
|
|
278
278
|
}
|
|
279
279
|
return t;
|
|
280
280
|
}
|
|
281
|
-
function
|
|
282
|
-
return e ? t.replace(
|
|
281
|
+
function Ue(t, { preferredFontFormat: e }) {
|
|
282
|
+
return e ? t.replace(je, (r) => {
|
|
283
283
|
for (; ; ) {
|
|
284
|
-
const [n, , i] =
|
|
284
|
+
const [n, , i] = De.exec(r) || [];
|
|
285
285
|
if (!i)
|
|
286
286
|
return "";
|
|
287
287
|
if (i === e)
|
|
@@ -289,52 +289,52 @@ function Ie(t, { preferredFontFormat: e }) {
|
|
|
289
289
|
}
|
|
290
290
|
}) : t;
|
|
291
291
|
}
|
|
292
|
-
function
|
|
293
|
-
return t.search(
|
|
292
|
+
function _t(t) {
|
|
293
|
+
return t.search(Nt) !== -1;
|
|
294
294
|
}
|
|
295
|
-
async function
|
|
296
|
-
if (!
|
|
295
|
+
async function Wt(t, e, r) {
|
|
296
|
+
if (!_t(t))
|
|
297
297
|
return t;
|
|
298
|
-
const n =
|
|
299
|
-
return
|
|
298
|
+
const n = Ue(t, r);
|
|
299
|
+
return Oe(n).reduce((o, a) => o.then((s) => He(s, a, e, r)), Promise.resolve(n));
|
|
300
300
|
}
|
|
301
|
-
async function
|
|
301
|
+
async function _(t, e, r) {
|
|
302
302
|
var n;
|
|
303
303
|
const i = (n = e.style) === null || n === void 0 ? void 0 : n.getPropertyValue(t);
|
|
304
304
|
if (i) {
|
|
305
|
-
const
|
|
306
|
-
return e.style.setProperty(t,
|
|
305
|
+
const o = await Wt(i, null, r);
|
|
306
|
+
return e.style.setProperty(t, o, e.style.getPropertyPriority(t)), !0;
|
|
307
307
|
}
|
|
308
308
|
return !1;
|
|
309
309
|
}
|
|
310
|
-
async function
|
|
311
|
-
await
|
|
310
|
+
async function Ve(t, e) {
|
|
311
|
+
await _("background", t, e) || await _("background-image", t, e), await _("mask", t, e) || await _("-webkit-mask", t, e) || await _("mask-image", t, e) || await _("-webkit-mask-image", t, e);
|
|
312
312
|
}
|
|
313
|
-
async function
|
|
313
|
+
async function Be(t, e) {
|
|
314
314
|
const r = C(t, HTMLImageElement);
|
|
315
|
-
if (!(r && !
|
|
315
|
+
if (!(r && !ct(t.src)) && !(C(t, SVGImageElement) && !ct(t.href.baseVal)))
|
|
316
316
|
return;
|
|
317
|
-
const n = r ? t.src : t.href.baseVal, i = await
|
|
318
|
-
await new Promise((
|
|
319
|
-
t.onload =
|
|
317
|
+
const n = r ? t.src : t.href.baseVal, i = await bt(n, wt(n), e);
|
|
318
|
+
await new Promise((o, a) => {
|
|
319
|
+
t.onload = o, t.onerror = e.onImageErrorHandler ? (...l) => {
|
|
320
320
|
try {
|
|
321
|
-
|
|
322
|
-
} catch (
|
|
323
|
-
|
|
321
|
+
o(e.onImageErrorHandler(...l));
|
|
322
|
+
} catch (v) {
|
|
323
|
+
a(v);
|
|
324
324
|
}
|
|
325
|
-
} :
|
|
325
|
+
} : a;
|
|
326
326
|
const s = t;
|
|
327
|
-
s.decode && (s.decode =
|
|
327
|
+
s.decode && (s.decode = o), s.loading === "lazy" && (s.loading = "eager"), r ? (t.srcset = "", t.src = i) : t.href.baseVal = i;
|
|
328
328
|
});
|
|
329
329
|
}
|
|
330
|
-
async function
|
|
331
|
-
const n =
|
|
330
|
+
async function Ne(t, e) {
|
|
331
|
+
const n = H(t.childNodes).map((i) => qt(i, e));
|
|
332
332
|
await Promise.all(n).then(() => t);
|
|
333
333
|
}
|
|
334
|
-
async function
|
|
335
|
-
C(t, Element) && (await
|
|
334
|
+
async function qt(t, e) {
|
|
335
|
+
C(t, Element) && (await Ve(t, e), await Be(t, e), await Ne(t, e));
|
|
336
336
|
}
|
|
337
|
-
function
|
|
337
|
+
function _e(t, e) {
|
|
338
338
|
const { style: r } = t;
|
|
339
339
|
e.backgroundColor && (r.backgroundColor = e.backgroundColor), e.width && (r.width = `${e.width}px`), e.height && (r.height = `${e.height}px`);
|
|
340
340
|
const n = e.style;
|
|
@@ -342,23 +342,23 @@ function Ue(t, e) {
|
|
|
342
342
|
r[i] = n[i];
|
|
343
343
|
}), t;
|
|
344
344
|
}
|
|
345
|
-
const
|
|
345
|
+
const $t = {};
|
|
346
346
|
async function Rt(t) {
|
|
347
|
-
let e =
|
|
347
|
+
let e = $t[t];
|
|
348
348
|
if (e != null)
|
|
349
349
|
return e;
|
|
350
350
|
const n = await (await fetch(t)).text();
|
|
351
|
-
return e = { url: t, cssText: n },
|
|
351
|
+
return e = { url: t, cssText: n }, $t[t] = e, e;
|
|
352
352
|
}
|
|
353
|
-
async function
|
|
353
|
+
async function Lt(t, e) {
|
|
354
354
|
let r = t.cssText;
|
|
355
|
-
const n = /url\(["']?([^"')]+)["']?\)/g,
|
|
356
|
-
let s =
|
|
357
|
-
return s.startsWith("https://") || (s = new URL(s, t.url).href),
|
|
355
|
+
const n = /url\(["']?([^"')]+)["']?\)/g, o = (r.match(/url\([^)]+\)/g) || []).map(async (a) => {
|
|
356
|
+
let s = a.replace(n, "$1");
|
|
357
|
+
return s.startsWith("https://") || (s = new URL(s, t.url).href), Vt(s, e.fetchRequestInit, ({ result: l }) => (r = r.replace(a, `url(${l})`), [a, l]));
|
|
358
358
|
});
|
|
359
|
-
return Promise.all(
|
|
359
|
+
return Promise.all(o).then(() => r);
|
|
360
360
|
}
|
|
361
|
-
function
|
|
361
|
+
function Pt(t) {
|
|
362
362
|
if (t == null)
|
|
363
363
|
return [];
|
|
364
364
|
const e = [], r = /(\/\*[\s\S]*?\*\/)/gi;
|
|
@@ -371,28 +371,28 @@ function Lt(t) {
|
|
|
371
371
|
e.push(l[0]);
|
|
372
372
|
}
|
|
373
373
|
n = n.replace(i, "");
|
|
374
|
-
const
|
|
374
|
+
const o = /@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi, a = "((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})", s = new RegExp(a, "gi");
|
|
375
375
|
for (; ; ) {
|
|
376
|
-
let l =
|
|
376
|
+
let l = o.exec(n);
|
|
377
377
|
if (l === null) {
|
|
378
378
|
if (l = s.exec(n), l === null)
|
|
379
379
|
break;
|
|
380
|
-
|
|
380
|
+
o.lastIndex = s.lastIndex;
|
|
381
381
|
} else
|
|
382
|
-
s.lastIndex =
|
|
382
|
+
s.lastIndex = o.lastIndex;
|
|
383
383
|
e.push(l[0]);
|
|
384
384
|
}
|
|
385
385
|
return e;
|
|
386
386
|
}
|
|
387
|
-
async function
|
|
387
|
+
async function We(t, e) {
|
|
388
388
|
const r = [], n = [];
|
|
389
389
|
return t.forEach((i) => {
|
|
390
390
|
if ("cssRules" in i)
|
|
391
391
|
try {
|
|
392
|
-
|
|
393
|
-
if (
|
|
394
|
-
let s =
|
|
395
|
-
const l =
|
|
392
|
+
H(i.cssRules || []).forEach((o, a) => {
|
|
393
|
+
if (o.type === CSSRule.IMPORT_RULE) {
|
|
394
|
+
let s = a + 1;
|
|
395
|
+
const l = o.href, v = Rt(l).then((y) => Lt(y, e)).then((y) => Pt(y).forEach((h) => {
|
|
396
396
|
try {
|
|
397
397
|
i.insertRule(h, h.startsWith("@import") ? s += 1 : i.cssRules.length);
|
|
398
398
|
} catch (g) {
|
|
@@ -401,81 +401,81 @@ async function Oe(t, e) {
|
|
|
401
401
|
error: g
|
|
402
402
|
});
|
|
403
403
|
}
|
|
404
|
-
})).catch((
|
|
405
|
-
console.error("Error loading remote css",
|
|
404
|
+
})).catch((y) => {
|
|
405
|
+
console.error("Error loading remote css", y.toString());
|
|
406
406
|
});
|
|
407
|
-
n.push(
|
|
407
|
+
n.push(v);
|
|
408
408
|
}
|
|
409
409
|
});
|
|
410
|
-
} catch (
|
|
411
|
-
const
|
|
412
|
-
i.href != null && n.push(Rt(i.href).then((s) =>
|
|
413
|
-
|
|
410
|
+
} catch (o) {
|
|
411
|
+
const a = t.find((s) => s.href == null) || document.styleSheets[0];
|
|
412
|
+
i.href != null && n.push(Rt(i.href).then((s) => Lt(s, e)).then((s) => Pt(s).forEach((l) => {
|
|
413
|
+
a.insertRule(l, a.cssRules.length);
|
|
414
414
|
})).catch((s) => {
|
|
415
415
|
console.error("Error loading remote stylesheet", s);
|
|
416
|
-
})), console.error("Error inlining remote css file",
|
|
416
|
+
})), console.error("Error inlining remote css file", o);
|
|
417
417
|
}
|
|
418
418
|
}), Promise.all(n).then(() => (t.forEach((i) => {
|
|
419
419
|
if ("cssRules" in i)
|
|
420
420
|
try {
|
|
421
|
-
|
|
422
|
-
r.push(
|
|
421
|
+
H(i.cssRules || []).forEach((o) => {
|
|
422
|
+
r.push(o);
|
|
423
423
|
});
|
|
424
|
-
} catch (
|
|
425
|
-
console.error(`Error while reading CSS rules from ${i.href}`,
|
|
424
|
+
} catch (o) {
|
|
425
|
+
console.error(`Error while reading CSS rules from ${i.href}`, o);
|
|
426
426
|
}
|
|
427
427
|
}), r));
|
|
428
428
|
}
|
|
429
|
-
function
|
|
430
|
-
return t.filter((e) => e.type === CSSRule.FONT_FACE_RULE).filter((e) =>
|
|
429
|
+
function qe(t) {
|
|
430
|
+
return t.filter((e) => e.type === CSSRule.FONT_FACE_RULE).filter((e) => _t(e.style.getPropertyValue("src")));
|
|
431
431
|
}
|
|
432
|
-
async function
|
|
432
|
+
async function ze(t, e) {
|
|
433
433
|
if (t.ownerDocument == null)
|
|
434
434
|
throw new Error("Provided element is not within a Document");
|
|
435
|
-
const r =
|
|
436
|
-
return
|
|
435
|
+
const r = H(t.ownerDocument.styleSheets), n = await We(r, e);
|
|
436
|
+
return qe(n);
|
|
437
437
|
}
|
|
438
|
-
function
|
|
438
|
+
function zt(t) {
|
|
439
439
|
return t.trim().replace(/["']/g, "");
|
|
440
440
|
}
|
|
441
|
-
function
|
|
441
|
+
function Ke(t) {
|
|
442
442
|
const e = /* @__PURE__ */ new Set();
|
|
443
443
|
function r(n) {
|
|
444
|
-
(n.style.fontFamily || getComputedStyle(n).fontFamily).split(",").forEach((
|
|
445
|
-
e.add(
|
|
446
|
-
}), Array.from(n.children).forEach((
|
|
447
|
-
|
|
444
|
+
(n.style.fontFamily || getComputedStyle(n).fontFamily).split(",").forEach((o) => {
|
|
445
|
+
e.add(zt(o));
|
|
446
|
+
}), Array.from(n.children).forEach((o) => {
|
|
447
|
+
o instanceof HTMLElement && r(o);
|
|
448
448
|
});
|
|
449
449
|
}
|
|
450
450
|
return r(t), e;
|
|
451
451
|
}
|
|
452
|
-
async function
|
|
453
|
-
const r = await
|
|
454
|
-
return (await Promise.all(r.filter((
|
|
455
|
-
const
|
|
456
|
-
return
|
|
452
|
+
async function Xe(t, e) {
|
|
453
|
+
const r = await ze(t, e), n = Ke(t);
|
|
454
|
+
return (await Promise.all(r.filter((o) => n.has(zt(o.style.fontFamily))).map((o) => {
|
|
455
|
+
const a = o.parentStyleSheet ? o.parentStyleSheet.href : null;
|
|
456
|
+
return Wt(o.cssText, a, e);
|
|
457
457
|
}))).join(`
|
|
458
458
|
`);
|
|
459
459
|
}
|
|
460
|
-
async function
|
|
461
|
-
const r = e.fontEmbedCSS != null ? e.fontEmbedCSS : e.skipFonts ? null : await
|
|
460
|
+
async function Ye(t, e) {
|
|
461
|
+
const r = e.fontEmbedCSS != null ? e.fontEmbedCSS : e.skipFonts ? null : await Xe(t, e);
|
|
462
462
|
if (r) {
|
|
463
463
|
const n = document.createElement("style"), i = document.createTextNode(r);
|
|
464
464
|
n.appendChild(i), t.firstChild ? t.insertBefore(n, t.firstChild) : t.appendChild(n);
|
|
465
465
|
}
|
|
466
466
|
}
|
|
467
|
-
async function
|
|
468
|
-
const { width: r, height: n } =
|
|
469
|
-
return await
|
|
467
|
+
async function Ge(t, e = {}) {
|
|
468
|
+
const { width: r, height: n } = Ut(t, e), i = await tt(t, e, !0);
|
|
469
|
+
return await Ye(i, e), await qt(i, e), _e(i, e), await he(i, r, n);
|
|
470
470
|
}
|
|
471
|
-
async function
|
|
472
|
-
const { width: r, height: n } =
|
|
473
|
-
return
|
|
471
|
+
async function Je(t, e = {}) {
|
|
472
|
+
const { width: r, height: n } = Ut(t, e), i = await Ge(t, e), o = await Y(i), a = document.createElement("canvas"), s = a.getContext("2d"), l = e.pixelRatio || ue(), v = e.canvasWidth || r, y = e.canvasHeight || n;
|
|
473
|
+
return a.width = v * l, a.height = y * l, e.skipAutoScale || de(a), a.style.width = `${v}`, a.style.height = `${y}`, e.backgroundColor && (s.fillStyle = e.backgroundColor, s.fillRect(0, 0, a.width, a.height)), s.drawImage(o, 0, 0, a.width, a.height), a;
|
|
474
474
|
}
|
|
475
|
-
async function
|
|
476
|
-
return (await
|
|
475
|
+
async function Ze(t, e = {}) {
|
|
476
|
+
return (await Je(t, e)).toDataURL();
|
|
477
477
|
}
|
|
478
|
-
function
|
|
478
|
+
function Qe() {
|
|
479
479
|
const t = [];
|
|
480
480
|
return document.querySelectorAll('input[type="password"], [data-notefully-mask]').forEach((r) => {
|
|
481
481
|
const n = r.getBoundingClientRect(), i = document.createElement("div");
|
|
@@ -491,13 +491,13 @@ function Ge() {
|
|
|
491
491
|
].join(";"), document.body.appendChild(i), t.push(i);
|
|
492
492
|
}), () => t.forEach((r) => r.remove());
|
|
493
493
|
}
|
|
494
|
-
async function
|
|
494
|
+
async function tn() {
|
|
495
495
|
const t = document.getElementById("notefully"), e = t ? t.style.display : "";
|
|
496
496
|
t && (t.style.display = "none");
|
|
497
|
-
const r =
|
|
497
|
+
const r = Qe();
|
|
498
498
|
await new Promise((n) => requestAnimationFrame(() => requestAnimationFrame(n)));
|
|
499
499
|
try {
|
|
500
|
-
return await
|
|
500
|
+
return await Ze(document.body, {
|
|
501
501
|
cacheBust: !0,
|
|
502
502
|
pixelRatio: Math.min(window.devicePixelRatio || 1, 2),
|
|
503
503
|
filter: (n) => n instanceof Element ? n.id !== "notefully" && !n.hasAttribute("data-nf-mask-cover") : !0
|
|
@@ -506,7 +506,7 @@ async function Ye() {
|
|
|
506
506
|
r(), t && (t.style.display = e);
|
|
507
507
|
}
|
|
508
508
|
}
|
|
509
|
-
function
|
|
509
|
+
function en(t = {}) {
|
|
510
510
|
return {
|
|
511
511
|
url: location.href,
|
|
512
512
|
title: document.title,
|
|
@@ -525,33 +525,87 @@ function Ke(t = {}) {
|
|
|
525
525
|
}
|
|
526
526
|
};
|
|
527
527
|
}
|
|
528
|
-
const
|
|
529
|
-
|
|
528
|
+
const kt = /* @__PURE__ */ new Set(["userId", "email", "displayName"]), Tt = {
|
|
529
|
+
id: "userId",
|
|
530
|
+
username: "displayName",
|
|
531
|
+
name: "displayName"
|
|
532
|
+
}, At = /* @__PURE__ */ new Set([
|
|
533
|
+
"endpoint",
|
|
534
|
+
"projectKey",
|
|
535
|
+
"version",
|
|
536
|
+
"targets",
|
|
537
|
+
"hideLauncher",
|
|
538
|
+
"theme",
|
|
539
|
+
"video"
|
|
540
|
+
]), It = {
|
|
541
|
+
slug: "Project slug comes from the relay project tied to your projectKey (Showfully Notefully settings) — it is not a widget init option.",
|
|
542
|
+
projectSlug: "Project slug comes from the relay project tied to your projectKey (Showfully Notefully settings) — it is not a widget init option.",
|
|
543
|
+
project: "Pass projectKey (nfk_…) from Showfully Notefully settings — there is no project slug/name option on the widget.",
|
|
544
|
+
username: "Pass people via Notefully.identify({ displayName }) (username is an identify alias), not init().",
|
|
545
|
+
userId: "Pass people via Notefully.identify({ userId, email, displayName }), not init().",
|
|
546
|
+
email: "Pass people via Notefully.identify({ userId, email, displayName }), not init().",
|
|
547
|
+
displayName: "Pass people via Notefully.identify({ userId, email, displayName }), not init().",
|
|
548
|
+
name: "Pass people via Notefully.identify({ displayName }) (name is an identify alias), not init()."
|
|
549
|
+
};
|
|
550
|
+
function nn(t = {}, e = {}) {
|
|
551
|
+
const r = e.warn || Kt, n = t && typeof t == "object" ? t : {}, i = {}, o = [];
|
|
552
|
+
for (const a of kt)
|
|
553
|
+
Object.prototype.hasOwnProperty.call(n, a) && (i[a] = n[a]);
|
|
554
|
+
for (const [a, s] of Object.entries(Tt))
|
|
555
|
+
Object.prototype.hasOwnProperty.call(n, a) && (Object.prototype.hasOwnProperty.call(i, s) || (i[s] = n[a]));
|
|
556
|
+
for (const a of Object.keys(n))
|
|
557
|
+
kt.has(a) || Object.prototype.hasOwnProperty.call(Tt, a) || o.push(a);
|
|
558
|
+
if (o.length) {
|
|
559
|
+
const a = o.some((s) => s === "slug" || s === "projectSlug") ? " Project slug is relay/dashboard config from the project key, not identify()." : "";
|
|
560
|
+
r(
|
|
561
|
+
`Notefully.identify: ignoring unknown key(s): ${o.join(", ")}. Supported: userId, email, displayName (aliases: id → userId; username/name → displayName).` + a
|
|
562
|
+
);
|
|
563
|
+
}
|
|
564
|
+
return i;
|
|
565
|
+
}
|
|
566
|
+
function rn(t = {}, e = {}) {
|
|
567
|
+
const r = e.warn || Kt, n = t && typeof t == "object" ? t : {}, i = Object.keys(n).filter((o) => !At.has(o));
|
|
568
|
+
if (i.length)
|
|
569
|
+
for (const o of i) {
|
|
570
|
+
if (It[o]) {
|
|
571
|
+
r(`Notefully.init: ignoring "${o}". ${It[o]}`);
|
|
572
|
+
continue;
|
|
573
|
+
}
|
|
574
|
+
r(
|
|
575
|
+
`Notefully.init: ignoring unknown key "${o}". Supported: ${[...At].join(", ")}.`
|
|
576
|
+
);
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
function Kt(t) {
|
|
580
|
+
typeof console < "u" && typeof console.warn == "function" && console.warn(t);
|
|
581
|
+
}
|
|
582
|
+
const on = 80;
|
|
583
|
+
function an() {
|
|
530
584
|
const t = [], e = {};
|
|
531
585
|
let r = !1;
|
|
532
|
-
const n = (
|
|
586
|
+
const n = (o, a) => {
|
|
533
587
|
let s = "";
|
|
534
588
|
try {
|
|
535
|
-
s =
|
|
589
|
+
s = a.map((l) => l instanceof Error ? l.stack || l.message : typeof l == "string" ? l : JSON.stringify(l)).join(" ");
|
|
536
590
|
} catch {
|
|
537
|
-
s = String(
|
|
591
|
+
s = String(a[0]);
|
|
538
592
|
}
|
|
539
593
|
t.push({
|
|
540
|
-
level:
|
|
594
|
+
level: o,
|
|
541
595
|
text: s.slice(0, 2e3),
|
|
542
596
|
at: Date.now()
|
|
543
|
-
}), t.length >
|
|
597
|
+
}), t.length > on && t.shift();
|
|
544
598
|
};
|
|
545
599
|
return {
|
|
546
600
|
hook: () => {
|
|
547
|
-
r || typeof window > "u" || (r = !0, ["log", "info", "warn", "error"].forEach((
|
|
548
|
-
e[
|
|
549
|
-
n(
|
|
601
|
+
r || typeof window > "u" || (r = !0, ["log", "info", "warn", "error"].forEach((o) => {
|
|
602
|
+
e[o] = console[o].bind(console), console[o] = (...a) => {
|
|
603
|
+
n(o, a), e[o](...a);
|
|
550
604
|
};
|
|
551
|
-
}), window.addEventListener("error", (
|
|
552
|
-
n("error", [
|
|
553
|
-
}), window.addEventListener("unhandledrejection", (
|
|
554
|
-
n("error", [
|
|
605
|
+
}), window.addEventListener("error", (o) => {
|
|
606
|
+
n("error", [o.message || "window.error"]);
|
|
607
|
+
}), window.addEventListener("unhandledrejection", (o) => {
|
|
608
|
+
n("error", [o.reason || "unhandledrejection"]);
|
|
555
609
|
}));
|
|
556
610
|
},
|
|
557
611
|
snapshot() {
|
|
@@ -559,7 +613,7 @@ function Ze() {
|
|
|
559
613
|
}
|
|
560
614
|
};
|
|
561
615
|
}
|
|
562
|
-
function
|
|
616
|
+
function sn(t) {
|
|
563
617
|
const e = window.SpeechRecognition || window.webkitSpeechRecognition;
|
|
564
618
|
let r = null, n = !1;
|
|
565
619
|
const i = () => {
|
|
@@ -573,10 +627,10 @@ function Ne(t) {
|
|
|
573
627
|
start: () => {
|
|
574
628
|
if (!e)
|
|
575
629
|
throw new Error("Speech recognition is not supported in this browser.");
|
|
576
|
-
return n ? (i(), !1) : (r = new e(), r.continuous = !0, r.interimResults = !0, r.lang = navigator.language || "en-US", r.onresult = (
|
|
630
|
+
return n ? (i(), !1) : (r = new e(), r.continuous = !0, r.interimResults = !0, r.lang = navigator.language || "en-US", r.onresult = (a) => {
|
|
577
631
|
let s = "";
|
|
578
|
-
for (let l =
|
|
579
|
-
|
|
632
|
+
for (let l = a.resultIndex; l < a.results.length; l += 1)
|
|
633
|
+
a.results[l].isFinal && (s += a.results[l][0].transcript);
|
|
580
634
|
s && t(s);
|
|
581
635
|
}, r.onerror = () => {
|
|
582
636
|
n = !1;
|
|
@@ -589,16 +643,16 @@ function Ne(t) {
|
|
|
589
643
|
isActive: () => n
|
|
590
644
|
};
|
|
591
645
|
}
|
|
592
|
-
const
|
|
593
|
-
function
|
|
594
|
-
let n = null, i = null,
|
|
646
|
+
const cn = 60 * 1e3;
|
|
647
|
+
function ln({ onStart: t, onStop: e, onError: r }) {
|
|
648
|
+
let n = null, i = null, o = [], a = null;
|
|
595
649
|
const s = () => {
|
|
596
|
-
if (
|
|
650
|
+
if (a && (clearTimeout(a), a = null), i && i.state !== "inactive")
|
|
597
651
|
try {
|
|
598
652
|
i.stop();
|
|
599
653
|
} catch {
|
|
600
654
|
}
|
|
601
|
-
n && (n.getTracks().forEach((
|
|
655
|
+
n && (n.getTracks().forEach((y) => y.stop()), n = null);
|
|
602
656
|
}, l = () => {
|
|
603
657
|
if (i && i.state === "recording") {
|
|
604
658
|
i.stop();
|
|
@@ -607,25 +661,25 @@ function tn({ onStart: t, onStop: e, onError: r }) {
|
|
|
607
661
|
s(), e(null);
|
|
608
662
|
};
|
|
609
663
|
return { start: async () => {
|
|
610
|
-
var
|
|
611
|
-
if (!((
|
|
664
|
+
var y, h;
|
|
665
|
+
if (!((y = navigator.mediaDevices) != null && y.getDisplayMedia))
|
|
612
666
|
throw new Error("Screen recording is not supported in this browser.");
|
|
613
667
|
n = await navigator.mediaDevices.getDisplayMedia({
|
|
614
668
|
video: { displaySurface: "browser" },
|
|
615
669
|
audio: !1,
|
|
616
670
|
preferCurrentTab: !0,
|
|
617
671
|
selfBrowserSurface: "include"
|
|
618
|
-
}),
|
|
672
|
+
}), o = [], i = new MediaRecorder(n, {
|
|
619
673
|
mimeType: MediaRecorder.isTypeSupported("video/webm;codecs=vp9") ? "video/webm;codecs=vp9" : "video/webm"
|
|
620
674
|
}), i.ondataavailable = (g) => {
|
|
621
|
-
g.data && g.data.size &&
|
|
675
|
+
g.data && g.data.size && o.push(g.data);
|
|
622
676
|
}, i.onstop = () => {
|
|
623
|
-
const g =
|
|
677
|
+
const g = o.length ? new Blob(o, { type: i.mimeType || "video/webm" }) : null;
|
|
624
678
|
s(), e(g);
|
|
625
|
-
}, (h = n.getVideoTracks()[0]) == null || h.addEventListener("ended", () => l()), i.start(),
|
|
679
|
+
}, (h = n.getVideoTracks()[0]) == null || h.addEventListener("ended", () => l()), i.start(), a = setTimeout(l, cn);
|
|
626
680
|
}, stop: l };
|
|
627
681
|
}
|
|
628
|
-
function
|
|
682
|
+
function un() {
|
|
629
683
|
const t = /* @__PURE__ */ new Set();
|
|
630
684
|
return {
|
|
631
685
|
alloc() {
|
|
@@ -644,15 +698,15 @@ function en() {
|
|
|
644
698
|
};
|
|
645
699
|
}
|
|
646
700
|
const at = { x: 0, y: 0, w: 1, h: 1 };
|
|
647
|
-
function
|
|
648
|
-
const t =
|
|
701
|
+
function Xt() {
|
|
702
|
+
const t = un();
|
|
649
703
|
let e = [], r = { ...at }, n = 1;
|
|
650
704
|
return {
|
|
651
|
-
list: () => e.filter((
|
|
705
|
+
list: () => e.filter((o) => fn(o, r)),
|
|
652
706
|
all: () => e.slice(),
|
|
653
707
|
crop: () => ({ ...r }),
|
|
654
|
-
setCrop(
|
|
655
|
-
return r =
|
|
708
|
+
setCrop(o) {
|
|
709
|
+
return r = dn(o), r;
|
|
656
710
|
},
|
|
657
711
|
resetCrop() {
|
|
658
712
|
return r = { ...at }, r;
|
|
@@ -660,30 +714,30 @@ function _t() {
|
|
|
660
714
|
isCropped() {
|
|
661
715
|
return r.x > 1e-6 || r.y > 1e-6 || r.w < 1 - 1e-6 || r.h < 1 - 1e-6;
|
|
662
716
|
},
|
|
663
|
-
add(
|
|
717
|
+
add(o, a) {
|
|
664
718
|
const s = {
|
|
665
719
|
id: `s${n++}`,
|
|
666
|
-
type:
|
|
720
|
+
type: o,
|
|
667
721
|
number: t.alloc(),
|
|
668
722
|
x: 0.2,
|
|
669
723
|
y: 0.2,
|
|
670
|
-
w:
|
|
671
|
-
h:
|
|
724
|
+
w: o === "arrow" ? 0.2 : 0.22,
|
|
725
|
+
h: o === "arrow" ? 0.05 : 0.16,
|
|
672
726
|
x2: 0.4,
|
|
673
727
|
y2: 0.28,
|
|
674
|
-
...
|
|
728
|
+
...a
|
|
675
729
|
};
|
|
676
730
|
return e.push(s), s;
|
|
677
731
|
},
|
|
678
|
-
update(
|
|
679
|
-
const s = e.find((l) => l.id ===
|
|
680
|
-
return s ? (Object.assign(s,
|
|
732
|
+
update(o, a) {
|
|
733
|
+
const s = e.find((l) => l.id === o);
|
|
734
|
+
return s ? (Object.assign(s, a), s) : null;
|
|
681
735
|
},
|
|
682
|
-
remove(
|
|
683
|
-
const
|
|
684
|
-
if (
|
|
736
|
+
remove(o) {
|
|
737
|
+
const a = e.findIndex((l) => l.id === o);
|
|
738
|
+
if (a < 0)
|
|
685
739
|
return null;
|
|
686
|
-
const [s] = e.splice(
|
|
740
|
+
const [s] = e.splice(a, 1);
|
|
687
741
|
return t.free(s.number), s;
|
|
688
742
|
},
|
|
689
743
|
reset() {
|
|
@@ -692,73 +746,74 @@ function _t() {
|
|
|
692
746
|
}
|
|
693
747
|
};
|
|
694
748
|
}
|
|
695
|
-
function
|
|
749
|
+
function dn(t) {
|
|
696
750
|
const e = Math.min(Math.max(t.x, 0), 0.95), r = Math.min(Math.max(t.y, 0), 0.95), n = Math.min(Math.max(t.w, 0.05), 1 - e), i = Math.min(Math.max(t.h, 0.05), 1 - r);
|
|
697
751
|
return { x: e, y: r, w: n, h: i };
|
|
698
752
|
}
|
|
699
|
-
function
|
|
753
|
+
function fn(t, e) {
|
|
700
754
|
const r = t.type === "arrow" ? (t.x + (t.x2 ?? t.x)) / 2 : t.x + (t.w || 0) / 2, n = t.type === "arrow" ? (t.y + (t.y2 ?? t.y)) / 2 : t.y + (t.h || 0) / 2;
|
|
701
755
|
return r >= e.x && n >= e.y && r <= e.x + e.w && n <= e.y + e.h;
|
|
702
756
|
}
|
|
703
|
-
function
|
|
704
|
-
const i = n.mark || "#fdd341",
|
|
705
|
-
return new Promise((
|
|
757
|
+
function hn(t, e, r, n = {}) {
|
|
758
|
+
const i = n.mark || "#fdd341", o = n.markText || "#2a2140";
|
|
759
|
+
return new Promise((a, s) => {
|
|
706
760
|
const l = new Image();
|
|
707
761
|
l.onload = () => {
|
|
708
|
-
const
|
|
762
|
+
const v = Math.round(e.x * l.width), y = Math.round(e.y * l.height), h = Math.max(1, Math.round(e.w * l.width)), g = Math.max(1, Math.round(e.h * l.height)), P = document.createElement("canvas");
|
|
709
763
|
P.width = h, P.height = g;
|
|
710
764
|
const d = P.getContext("2d");
|
|
711
|
-
d.drawImage(l,
|
|
712
|
-
const
|
|
713
|
-
if (
|
|
714
|
-
d.strokeRect(T, A,
|
|
715
|
-
else if (
|
|
716
|
-
d.beginPath(), d.ellipse(
|
|
717
|
-
else if (
|
|
718
|
-
const
|
|
719
|
-
|
|
765
|
+
d.drawImage(l, v, y, h, g, 0, 0, h, g), d.lineWidth = Math.max(3, Math.round(h / 400)), d.strokeStyle = i, d.fillStyle = i, d.font = `700 ${Math.max(14, Math.round(h / 40))}px sans-serif`, r.forEach((p) => {
|
|
766
|
+
const k = lt(p.x, e, h), T = ut(p.y, e, g), A = p.w / e.w * h, U = p.h / e.h * g;
|
|
767
|
+
if (p.type === "rect")
|
|
768
|
+
d.strokeRect(k, T, A, U);
|
|
769
|
+
else if (p.type === "circle")
|
|
770
|
+
d.beginPath(), d.ellipse(k + A / 2, T + U / 2, A / 2, U / 2, 0, 0, Math.PI * 2), d.stroke();
|
|
771
|
+
else if (p.type === "arrow") {
|
|
772
|
+
const ie = lt(p.x2 ?? p.x + p.w, e, h), oe = ut(p.y2 ?? p.y, e, g);
|
|
773
|
+
mn(d, k, T, ie, oe);
|
|
720
774
|
}
|
|
721
|
-
const
|
|
722
|
-
d.beginPath(), d.arc(
|
|
723
|
-
}), P.toBlob((
|
|
724
|
-
if (!
|
|
775
|
+
const V = pn(p, e, h, g, k, T, A), I = String(p.number);
|
|
776
|
+
d.beginPath(), d.arc(V.x, V.y, 11, 0, Math.PI * 2), d.fill(), d.fillStyle = o, d.textAlign = "center", d.textBaseline = "middle", d.fillText(I, V.x, V.y), d.fillStyle = i;
|
|
777
|
+
}), P.toBlob((p) => {
|
|
778
|
+
if (!p) {
|
|
725
779
|
s(new Error("Could not encode screenshot"));
|
|
726
780
|
return;
|
|
727
781
|
}
|
|
728
|
-
|
|
782
|
+
a(p);
|
|
729
783
|
}, "image/png");
|
|
730
784
|
}, l.onerror = () => s(new Error("Could not load screenshot")), l.src = t;
|
|
731
785
|
});
|
|
732
786
|
}
|
|
733
|
-
function
|
|
787
|
+
function lt(t, e, r) {
|
|
734
788
|
return (t - e.x) / e.w * r;
|
|
735
789
|
}
|
|
736
|
-
function
|
|
790
|
+
function ut(t, e, r) {
|
|
737
791
|
return (t - e.y) / e.h * r;
|
|
738
792
|
}
|
|
739
|
-
function
|
|
793
|
+
function pn(t, e, r, n, i, o, a) {
|
|
740
794
|
if (t.type === "arrow") {
|
|
741
|
-
const s =
|
|
795
|
+
const s = lt(t.x2 ?? t.x + t.w, e, r), l = ut(t.y2 ?? t.y, e, n);
|
|
742
796
|
return {
|
|
743
797
|
x: (i + s) / 2,
|
|
744
|
-
y: (
|
|
798
|
+
y: (o + l) / 2
|
|
745
799
|
};
|
|
746
800
|
}
|
|
747
|
-
return { x: i +
|
|
801
|
+
return { x: i + a / 2, y: o };
|
|
748
802
|
}
|
|
749
|
-
function
|
|
750
|
-
const
|
|
751
|
-
t.beginPath(), t.moveTo(e, r), t.lineTo(l,
|
|
803
|
+
function mn(t, e, r, n, i) {
|
|
804
|
+
const o = Math.atan2(i - r, n - e), a = 14, s = 2, l = n - Math.cos(o) * s, v = i - Math.sin(o) * s;
|
|
805
|
+
t.beginPath(), t.moveTo(e, r), t.lineTo(l, v), t.stroke(), t.beginPath(), t.moveTo(n, i), t.lineTo(n - a * Math.cos(o - 0.4), i - a * Math.sin(o - 0.4)), t.lineTo(n - a * Math.cos(o + 0.4), i - a * Math.sin(o + 0.4)), t.closePath(), t.fill();
|
|
752
806
|
}
|
|
753
|
-
const
|
|
807
|
+
const yn = ["bug", "idea", "other"], gn = ["maker", "all-business", "brighter-day", "quiet-night"], Yt = "maker", wn = /* @__PURE__ */ new Set(["crop", "arrow", "rect", "circle"]), dt = 0.02, Dt = 0.05, bn = `
|
|
754
808
|
<svg class="nf-launcher-icon" viewBox="0 0 24 24" aria-hidden="true">
|
|
755
|
-
<path fill="currentColor" d="
|
|
809
|
+
<path fill="currentColor" d="M5.2 2.8h9.1A2.7 2.7 0 0 1 17 5.5v8.2c0 .4-.3.7-.7.7h-.1a.7.7 0 0 1-.7-.7V5.5c0-.7-.6-1.3-1.3-1.3H5.2c-.7 0-1.3.6-1.3 1.3v12.2c0 .7.6 1.3 1.3 1.3h6.4a.7.7 0 0 1 0 1.4H5.2A2.7 2.7 0 0 1 2.5 17.7V5.5A2.7 2.7 0 0 1 5.2 2.8zm1.6 4.2a.7.7 0 0 0 0 1.4h6.2a.7.7 0 0 0 0-1.4H6.8zm0 3.2a.7.7 0 0 0 0 1.4h6.2a.7.7 0 0 0 0-1.4H6.8zm0 3.2a.7.7 0 0 0 0 1.4h3.6a.7.7 0 0 0 0-1.4H6.8z"/>
|
|
810
|
+
<path fill="currentColor" d="M14.7 13.05 20.2 7.55a1.55 1.55 0 0 1 2.2 2.2l-5.5 5.5-.45 1.9a.6.6 0 0 1-.72.45l-1.9-.45.87-1.9z"/>
|
|
756
811
|
</svg>
|
|
757
812
|
`;
|
|
758
813
|
function D(t) {
|
|
759
814
|
return `<svg class="nf-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${t}</svg>`;
|
|
760
815
|
}
|
|
761
|
-
const
|
|
816
|
+
const j = {
|
|
762
817
|
crop: D('<path d="M6 3v5H1M18 21v-5h5M8 5h8a2 2 0 0 1 2 2v8M16 19H8a2 2 0 0 1-2-2V8"/>'),
|
|
763
818
|
resetCrop: D('<path d="M3 12a9 9 0 1 0 3-6.7L3 8"/><path d="M3 3v5h5"/>'),
|
|
764
819
|
arrow: D('<path d="M5 19 19 5"/><path d="M9 5h10v10"/>'),
|
|
@@ -767,44 +822,44 @@ const F = {
|
|
|
767
822
|
discard: D('<path d="M4 7h16"/><path d="M9 7V5h6v2"/><path d="M6 7l1 13h10l1-13"/>'),
|
|
768
823
|
audio: D('<rect x="9" y="3" width="6" height="11" rx="3"/><path d="M5 11a7 7 0 0 0 14 0"/><path d="M12 18v3"/>'),
|
|
769
824
|
video: D('<rect x="3" y="7" width="13" height="10" rx="2"/><path d="M16 10.5 21 8v8l-5-2.5z"/>')
|
|
770
|
-
},
|
|
771
|
-
|
|
772
|
-
let
|
|
825
|
+
}, Gt = an();
|
|
826
|
+
Gt.hook();
|
|
827
|
+
let m = {
|
|
773
828
|
endpoint: "",
|
|
774
829
|
projectKey: "",
|
|
775
830
|
version: "0.0.0",
|
|
776
831
|
targets: null,
|
|
777
832
|
hideLauncher: !1,
|
|
778
|
-
theme:
|
|
833
|
+
theme: Yt,
|
|
779
834
|
video: !1
|
|
780
|
-
},
|
|
835
|
+
}, ft = {}, u = null, c = {}, f = Xt(), S = "", q = "", L = null, G = "bug", O = null, R = null, b = null, w = null, K = null, B = null, W = null, F = { w: 0, h: 0 };
|
|
781
836
|
function E(t) {
|
|
782
837
|
return u.querySelector(t);
|
|
783
838
|
}
|
|
784
|
-
function
|
|
839
|
+
function Jt(t) {
|
|
785
840
|
const e = String(t || "").trim().toLowerCase().replace(/\s+/g, "-");
|
|
786
|
-
return
|
|
841
|
+
return gn.includes(e) ? e : Yt;
|
|
787
842
|
}
|
|
788
|
-
function
|
|
843
|
+
function jt(t, e) {
|
|
789
844
|
return u && getComputedStyle(u).getPropertyValue(t).trim() || e;
|
|
790
845
|
}
|
|
791
|
-
function
|
|
792
|
-
c.status && (c.status.textContent = t || "",
|
|
846
|
+
function x(t, e = !1) {
|
|
847
|
+
c.status && (c.status.textContent = t || "", K && (clearTimeout(K), K = null), t && !e && (K = setTimeout(() => {
|
|
793
848
|
c.status.textContent = "";
|
|
794
849
|
}, 4e3)));
|
|
795
850
|
}
|
|
796
|
-
function
|
|
851
|
+
function vt() {
|
|
797
852
|
return u && document.body.contains(u) || (u = document.createElement("div"), u.id = "notefully", u.innerHTML = `
|
|
798
|
-
<button class="nf-launcher" type="button" title="
|
|
853
|
+
<button class="nf-launcher" type="button" title="Leave a note…" aria-label="Leave a note…">${bn}</button>
|
|
799
854
|
<div class="nf-dialog" hidden>
|
|
800
855
|
<div class="nf-panel">
|
|
801
856
|
<div class="nf-stage">
|
|
802
857
|
<div class="nf-palette">
|
|
803
|
-
<button class="nf-tool nf-icon-btn" type="button" data-tool="crop" title="Crop" aria-label="Crop">${
|
|
804
|
-
<button class="nf-reset-crop nf-icon-btn" type="button" title="Reset crop" aria-label="Reset crop" hidden>${
|
|
805
|
-
<button class="nf-tool nf-icon-btn" type="button" data-tool="arrow" title="Arrow" aria-label="Arrow">${
|
|
806
|
-
<button class="nf-tool nf-icon-btn" type="button" data-tool="rect" title="Rectangle" aria-label="Rectangle">${
|
|
807
|
-
<button class="nf-tool nf-icon-btn" type="button" data-tool="circle" title="Circle" aria-label="Circle">${
|
|
858
|
+
<button class="nf-tool nf-icon-btn" type="button" data-tool="crop" title="Crop" aria-label="Crop">${j.crop}</button>
|
|
859
|
+
<button class="nf-reset-crop nf-icon-btn" type="button" title="Reset crop" aria-label="Reset crop" hidden>${j.resetCrop}</button>
|
|
860
|
+
<button class="nf-tool nf-icon-btn" type="button" data-tool="arrow" title="Arrow" aria-label="Arrow">${j.arrow}</button>
|
|
861
|
+
<button class="nf-tool nf-icon-btn" type="button" data-tool="rect" title="Rectangle" aria-label="Rectangle">${j.rect}</button>
|
|
862
|
+
<button class="nf-tool nf-icon-btn" type="button" data-tool="circle" title="Circle" aria-label="Circle">${j.circle}</button>
|
|
808
863
|
</div>
|
|
809
864
|
<div class="nf-canvas"></div>
|
|
810
865
|
</div>
|
|
@@ -815,9 +870,9 @@ function bt() {
|
|
|
815
870
|
<button type="button" data-kind="other">Other</button>
|
|
816
871
|
</div>
|
|
817
872
|
<div class="nf-actions">
|
|
818
|
-
<button class="nf-discard-shot nf-icon-btn" type="button" title="Discard screenshot" aria-label="Discard screenshot">${
|
|
819
|
-
<button class="nf-audio nf-icon-btn" type="button" title="Record audio" aria-label="Record audio">${
|
|
820
|
-
<button class="nf-video nf-icon-btn" type="button" title="Record video" aria-label="Record video">${
|
|
873
|
+
<button class="nf-discard-shot nf-icon-btn" type="button" title="Discard screenshot" aria-label="Discard screenshot">${j.discard}</button>
|
|
874
|
+
<button class="nf-audio nf-icon-btn" type="button" title="Record audio" aria-label="Record audio">${j.audio}</button>
|
|
875
|
+
<button class="nf-video nf-icon-btn" type="button" title="Record video" aria-label="Record video">${j.video}</button>
|
|
821
876
|
<button class="nf-submit" type="button">Submit</button>
|
|
822
877
|
</div>
|
|
823
878
|
<button class="nf-restore" type="button" hidden>Restore screenshot</button>
|
|
@@ -839,112 +894,116 @@ function bt() {
|
|
|
839
894
|
stop: E(".nf-stop-video"),
|
|
840
895
|
resetCrop: E(".nf-reset-crop"),
|
|
841
896
|
shot: null
|
|
842
|
-
},
|
|
897
|
+
}, vn(), et()), u;
|
|
843
898
|
}
|
|
844
|
-
function
|
|
845
|
-
|
|
899
|
+
function et() {
|
|
900
|
+
var t;
|
|
901
|
+
u && (u.dataset.theme = Jt(m.theme), m.hideLauncher ? u.setAttribute("data-nf-hidden-launcher", "") : u.removeAttribute("data-nf-hidden-launcher"), c.video && (c.video.hidden = !m.video), (t = c.dialog) != null && t.hidden && J());
|
|
846
902
|
}
|
|
847
|
-
function
|
|
848
|
-
c.launcher
|
|
849
|
-
|
|
903
|
+
function J() {
|
|
904
|
+
c.launcher && (c.launcher.hidden = !!m.hideLauncher);
|
|
905
|
+
}
|
|
906
|
+
function vn() {
|
|
907
|
+
c.launcher.addEventListener("click", () => ee()), E(".nf-dialog").addEventListener("click", (t) => {
|
|
908
|
+
t.target === c.dialog && it();
|
|
850
909
|
}), u.querySelectorAll(".nf-tool").forEach((t) => {
|
|
851
|
-
t.addEventListener("click", () =>
|
|
852
|
-
}), c.resetCrop.addEventListener("click",
|
|
853
|
-
t.addEventListener("click", () =>
|
|
854
|
-
}), c.discard.addEventListener("click",
|
|
855
|
-
|
|
856
|
-
}),
|
|
857
|
-
}
|
|
858
|
-
function ft(t) {
|
|
859
|
-
J = cn.includes(t) ? t : "bug", u.querySelectorAll("[data-kind]").forEach((e) => {
|
|
860
|
-
e.dataset.active = String(e.dataset.kind === J);
|
|
861
|
-
});
|
|
910
|
+
t.addEventListener("click", () => pt(t.dataset.tool));
|
|
911
|
+
}), c.resetCrop.addEventListener("click", Rn), c.canvas.addEventListener("pointerdown", Sn), c.canvas.addEventListener("dragstart", (t) => t.preventDefault()), u.querySelectorAll("[data-kind]").forEach((t) => {
|
|
912
|
+
t.addEventListener("click", () => ht(t.dataset.kind));
|
|
913
|
+
}), c.discard.addEventListener("click", Ln), c.restore.addEventListener("click", Pn), c.audio.addEventListener("click", kn), c.video.addEventListener("click", Tn), c.stop.addEventListener("click", () => W == null ? void 0 : W.stop()), E(".nf-submit").addEventListener("click", () => {
|
|
914
|
+
ne().catch((t) => x(t.message || "Submit failed."));
|
|
915
|
+
}), ht("bug"), pt(null);
|
|
862
916
|
}
|
|
863
917
|
function ht(t) {
|
|
864
|
-
|
|
865
|
-
e.dataset.active = String(e.dataset.
|
|
866
|
-
})
|
|
918
|
+
G = yn.includes(t) ? t : "bug", u.querySelectorAll("[data-kind]").forEach((e) => {
|
|
919
|
+
e.dataset.active = String(e.dataset.kind === G);
|
|
920
|
+
});
|
|
867
921
|
}
|
|
868
|
-
function
|
|
922
|
+
function pt(t) {
|
|
923
|
+
O = wn.has(t) ? t : null, R = null, u.querySelectorAll(".nf-tool").forEach((e) => {
|
|
924
|
+
e.dataset.active = String(e.dataset.tool === O);
|
|
925
|
+
}), c.canvas && (c.canvas.dataset.draw = O ? "true" : "false"), S && $();
|
|
926
|
+
}
|
|
927
|
+
function Ft(t) {
|
|
869
928
|
return Math.min(1, Math.max(0, t));
|
|
870
929
|
}
|
|
871
|
-
function
|
|
930
|
+
function nt() {
|
|
872
931
|
return c.shot || c.canvas;
|
|
873
932
|
}
|
|
874
933
|
function Z(t) {
|
|
875
|
-
const e =
|
|
934
|
+
const e = nt().getBoundingClientRect();
|
|
876
935
|
return {
|
|
877
|
-
x:
|
|
878
|
-
y:
|
|
936
|
+
x: Ft((t.clientX - e.left) / Math.max(e.width, 1)),
|
|
937
|
+
y: Ft((t.clientY - e.top) / Math.max(e.height, 1))
|
|
879
938
|
};
|
|
880
939
|
}
|
|
881
|
-
function
|
|
882
|
-
const e =
|
|
940
|
+
function xn(t) {
|
|
941
|
+
const e = nt().getBoundingClientRect();
|
|
883
942
|
return t.clientX >= e.left && t.clientX <= e.right && t.clientY >= e.top && t.clientY <= e.bottom;
|
|
884
943
|
}
|
|
885
|
-
function
|
|
944
|
+
function Zt(t) {
|
|
886
945
|
const e = Z(t), r = f.crop();
|
|
887
946
|
return {
|
|
888
947
|
x: r.x + e.x * r.w,
|
|
889
948
|
y: r.y + e.y * r.h
|
|
890
949
|
};
|
|
891
950
|
}
|
|
892
|
-
function
|
|
951
|
+
function rt(t, e) {
|
|
893
952
|
const r = Math.min(t.x, e.x), n = Math.min(t.y, e.y);
|
|
894
953
|
return {
|
|
895
954
|
x: r,
|
|
896
955
|
y: n,
|
|
897
|
-
w: Math.max(
|
|
898
|
-
h: Math.max(
|
|
956
|
+
w: Math.max(dt, Math.abs(e.x - t.x)),
|
|
957
|
+
h: Math.max(dt, Math.abs(e.y - t.y))
|
|
899
958
|
};
|
|
900
959
|
}
|
|
901
960
|
function xt(t) {
|
|
902
961
|
u && (t ? u.dataset.grabbing = "true" : delete u.dataset.grabbing);
|
|
903
962
|
}
|
|
904
|
-
function
|
|
963
|
+
function st(t) {
|
|
905
964
|
try {
|
|
906
965
|
c.canvas.setPointerCapture(t.pointerId);
|
|
907
966
|
} catch {
|
|
908
967
|
}
|
|
909
968
|
}
|
|
910
969
|
function mt() {
|
|
911
|
-
window.addEventListener("pointermove",
|
|
970
|
+
window.addEventListener("pointermove", te), window.addEventListener("pointerup", Q), window.addEventListener("pointercancel", Q);
|
|
912
971
|
}
|
|
913
|
-
function
|
|
914
|
-
window.removeEventListener("pointermove",
|
|
972
|
+
function Qt() {
|
|
973
|
+
window.removeEventListener("pointermove", te), window.removeEventListener("pointerup", Q), window.removeEventListener("pointercancel", Q);
|
|
915
974
|
}
|
|
916
|
-
function
|
|
975
|
+
function Sn(t) {
|
|
917
976
|
if (t.button !== 0 || !S)
|
|
918
977
|
return;
|
|
919
|
-
if (!t.target.closest(".nf-sticker") && !
|
|
920
|
-
|
|
978
|
+
if (!t.target.closest(".nf-sticker") && !xn(t)) {
|
|
979
|
+
R = null, $();
|
|
921
980
|
return;
|
|
922
981
|
}
|
|
923
982
|
const e = t.target.closest(".nf-handle"), r = t.target.closest(".nf-sticker");
|
|
924
983
|
if (r && r.dataset.preview !== "true") {
|
|
925
|
-
t.preventDefault(), t.stopPropagation(),
|
|
984
|
+
t.preventDefault(), t.stopPropagation(), R = r.dataset.id, st(t), En({
|
|
926
985
|
kind: "sticker",
|
|
927
|
-
id:
|
|
986
|
+
id: R,
|
|
928
987
|
dir: (e == null ? void 0 : e.dataset.dir) || "move"
|
|
929
|
-
}, t),
|
|
988
|
+
}, t), $();
|
|
930
989
|
return;
|
|
931
990
|
}
|
|
932
|
-
if (
|
|
933
|
-
t.preventDefault(),
|
|
991
|
+
if (R = null, O === "crop") {
|
|
992
|
+
t.preventDefault(), st(t), b = { kind: "crop", start: Z(t), current: Z(t) }, mt(), $();
|
|
934
993
|
return;
|
|
935
994
|
}
|
|
936
|
-
if (
|
|
937
|
-
t.preventDefault(),
|
|
938
|
-
const n =
|
|
939
|
-
|
|
995
|
+
if (O === "arrow" || O === "rect" || O === "circle") {
|
|
996
|
+
t.preventDefault(), st(t);
|
|
997
|
+
const n = Zt(t);
|
|
998
|
+
b = { kind: "sticker", type: O, start: n, current: n }, mt(), $();
|
|
940
999
|
return;
|
|
941
1000
|
}
|
|
942
|
-
|
|
1001
|
+
$();
|
|
943
1002
|
}
|
|
944
|
-
function
|
|
1003
|
+
function En(t, e) {
|
|
945
1004
|
e.preventDefault(), e.stopPropagation();
|
|
946
|
-
const r =
|
|
947
|
-
|
|
1005
|
+
const r = nt().getBoundingClientRect(), n = f.list().find((i) => i.id === t.id);
|
|
1006
|
+
w = {
|
|
948
1007
|
...t,
|
|
949
1008
|
startX: e.clientX,
|
|
950
1009
|
startY: e.clientY,
|
|
@@ -953,26 +1012,26 @@ function pn(t, e) {
|
|
|
953
1012
|
rect: r
|
|
954
1013
|
}, xt(t.dir === "move" || t.dir === "start" || t.dir === "end"), mt();
|
|
955
1014
|
}
|
|
956
|
-
function
|
|
957
|
-
if (
|
|
958
|
-
|
|
1015
|
+
function te(t) {
|
|
1016
|
+
if (b) {
|
|
1017
|
+
b.current = b.kind === "crop" ? Z(t) : Zt(t), $();
|
|
959
1018
|
return;
|
|
960
1019
|
}
|
|
961
|
-
if (!
|
|
1020
|
+
if (!w)
|
|
962
1021
|
return;
|
|
963
|
-
const e = (t.clientX -
|
|
1022
|
+
const e = (t.clientX - w.startX) / w.rect.width * w.crop.w, r = (t.clientY - w.startY) / w.rect.height * w.crop.h, n = w.sticker;
|
|
964
1023
|
if (n) {
|
|
965
|
-
if (
|
|
1024
|
+
if (w.dir === "end")
|
|
966
1025
|
f.update(n.id, {
|
|
967
1026
|
x2: n.x2 + e,
|
|
968
1027
|
y2: n.y2 + r
|
|
969
1028
|
});
|
|
970
|
-
else if (
|
|
1029
|
+
else if (w.dir === "start")
|
|
971
1030
|
f.update(n.id, {
|
|
972
1031
|
x: n.x + e,
|
|
973
1032
|
y: n.y + r
|
|
974
1033
|
});
|
|
975
|
-
else if (
|
|
1034
|
+
else if (w.dir === "move")
|
|
976
1035
|
f.update(n.id, {
|
|
977
1036
|
x: n.x + e,
|
|
978
1037
|
y: n.y + r,
|
|
@@ -981,12 +1040,12 @@ function Yt(t) {
|
|
|
981
1040
|
});
|
|
982
1041
|
else {
|
|
983
1042
|
const i = { x: n.x, y: n.y, w: n.w, h: n.h };
|
|
984
|
-
|
|
1043
|
+
Cn(i, w.dir, e, r), f.update(n.id, i);
|
|
985
1044
|
}
|
|
986
|
-
|
|
1045
|
+
$();
|
|
987
1046
|
}
|
|
988
1047
|
}
|
|
989
|
-
function
|
|
1048
|
+
function Cn(t, e, r, n) {
|
|
990
1049
|
if (e.includes("e") && (t.w = Math.max(0.04, t.w + r)), e.includes("s") && (t.h = Math.max(0.04, t.h + n)), e.includes("w")) {
|
|
991
1050
|
const i = Math.max(0.04, t.w - r);
|
|
992
1051
|
t.x += t.w - i, t.w = i;
|
|
@@ -996,27 +1055,27 @@ function gn(t, e, r, n) {
|
|
|
996
1055
|
t.y += t.h - i, t.h = i;
|
|
997
1056
|
}
|
|
998
1057
|
}
|
|
999
|
-
function
|
|
1000
|
-
if (
|
|
1001
|
-
|
|
1058
|
+
function Q(t) {
|
|
1059
|
+
if (Qt(), xt(!1), b) {
|
|
1060
|
+
Mn();
|
|
1002
1061
|
return;
|
|
1003
1062
|
}
|
|
1004
|
-
if (
|
|
1005
|
-
if (
|
|
1063
|
+
if (w) {
|
|
1064
|
+
if (w.kind === "sticker") {
|
|
1006
1065
|
const e = c.canvas.getBoundingClientRect();
|
|
1007
|
-
(t.clientX < e.left - 24 || t.clientX > e.right + 24 || t.clientY < e.top - 24 || t.clientY > e.bottom + 24) && (f.remove(
|
|
1066
|
+
(t.clientX < e.left - 24 || t.clientX > e.right + 24 || t.clientY < e.top - 24 || t.clientY > e.bottom + 24) && (f.remove(w.id), R = null);
|
|
1008
1067
|
}
|
|
1009
|
-
|
|
1068
|
+
w = null, $();
|
|
1010
1069
|
}
|
|
1011
1070
|
}
|
|
1012
|
-
function
|
|
1013
|
-
const t =
|
|
1014
|
-
if (
|
|
1071
|
+
function Mn() {
|
|
1072
|
+
const t = b;
|
|
1073
|
+
if (b = null, !t)
|
|
1015
1074
|
return;
|
|
1016
1075
|
if (t.kind === "crop") {
|
|
1017
|
-
const r =
|
|
1018
|
-
if (Math.abs(t.current.x - t.start.x) <
|
|
1019
|
-
|
|
1076
|
+
const r = rt(t.start, t.current);
|
|
1077
|
+
if (Math.abs(t.current.x - t.start.x) < Dt || Math.abs(t.current.y - t.start.y) < Dt) {
|
|
1078
|
+
$();
|
|
1020
1079
|
return;
|
|
1021
1080
|
}
|
|
1022
1081
|
const i = f.crop();
|
|
@@ -1028,13 +1087,13 @@ function yn() {
|
|
|
1028
1087
|
}), z();
|
|
1029
1088
|
return;
|
|
1030
1089
|
}
|
|
1031
|
-
const e =
|
|
1032
|
-
e && (
|
|
1090
|
+
const e = $n(t);
|
|
1091
|
+
e && (R = e.id), $();
|
|
1033
1092
|
}
|
|
1034
|
-
function
|
|
1093
|
+
function $n(t) {
|
|
1035
1094
|
if (t.type === "arrow") {
|
|
1036
1095
|
const e = t.current.x - t.start.x, r = t.current.y - t.start.y;
|
|
1037
|
-
return Math.hypot(e, r) <
|
|
1096
|
+
return Math.hypot(e, r) < dt ? f.add("arrow", {
|
|
1038
1097
|
x: t.start.x,
|
|
1039
1098
|
y: t.start.y,
|
|
1040
1099
|
x2: t.start.x + 0.12,
|
|
@@ -1050,83 +1109,83 @@ function wn(t) {
|
|
|
1050
1109
|
h: Math.abs(r)
|
|
1051
1110
|
});
|
|
1052
1111
|
}
|
|
1053
|
-
return f.add(t.type,
|
|
1112
|
+
return f.add(t.type, rt(t.start, t.current));
|
|
1054
1113
|
}
|
|
1055
|
-
function
|
|
1056
|
-
f.resetCrop(),
|
|
1114
|
+
function Rn() {
|
|
1115
|
+
f.resetCrop(), R = null, z();
|
|
1057
1116
|
}
|
|
1058
|
-
function
|
|
1117
|
+
function yt() {
|
|
1059
1118
|
c.resetCrop && (c.resetCrop.hidden = !f.isCropped());
|
|
1060
1119
|
}
|
|
1061
|
-
function
|
|
1120
|
+
function St(t) {
|
|
1062
1121
|
if (!c.audio)
|
|
1063
1122
|
return;
|
|
1064
1123
|
const e = t ? "Stop audio" : "Record audio";
|
|
1065
1124
|
c.audio.title = e, c.audio.setAttribute("aria-label", e), c.audio.dataset.active = String(!!t);
|
|
1066
1125
|
}
|
|
1067
|
-
function
|
|
1068
|
-
S && (
|
|
1126
|
+
function Ln() {
|
|
1127
|
+
S && (q = S), S = "", c.stage.hidden = !0, c.restore.hidden = !q;
|
|
1069
1128
|
}
|
|
1070
|
-
function
|
|
1071
|
-
|
|
1129
|
+
function Pn() {
|
|
1130
|
+
q && (S = q, c.stage.hidden = !1, c.restore.hidden = !0, z());
|
|
1072
1131
|
}
|
|
1073
|
-
function
|
|
1132
|
+
function kn() {
|
|
1074
1133
|
try {
|
|
1075
|
-
if (
|
|
1134
|
+
if (B || (B = sn((e) => {
|
|
1076
1135
|
const r = c.text.value.trim();
|
|
1077
1136
|
c.text.value = r ? `${r} ${e}` : e;
|
|
1078
|
-
})), !
|
|
1079
|
-
|
|
1137
|
+
})), !B.isSupported()) {
|
|
1138
|
+
x("Audio-to-text is not supported in this browser.");
|
|
1080
1139
|
return;
|
|
1081
1140
|
}
|
|
1082
|
-
const t =
|
|
1083
|
-
|
|
1141
|
+
const t = B.start();
|
|
1142
|
+
St(t), x(t ? "Listening…" : "");
|
|
1084
1143
|
} catch (t) {
|
|
1085
|
-
|
|
1144
|
+
x(t.message);
|
|
1086
1145
|
}
|
|
1087
1146
|
}
|
|
1088
|
-
async function
|
|
1089
|
-
if (!
|
|
1090
|
-
|
|
1147
|
+
async function Tn() {
|
|
1148
|
+
if (!m.video) {
|
|
1149
|
+
x("Video is disabled on this host.");
|
|
1091
1150
|
return;
|
|
1092
1151
|
}
|
|
1093
|
-
c.dialog.hidden = !0, c.stop.hidden = !1,
|
|
1152
|
+
c.dialog.hidden = !0, c.stop.hidden = !1, et(), c.launcher.hidden = !0, W = ln({
|
|
1094
1153
|
onStart() {
|
|
1095
1154
|
},
|
|
1096
1155
|
onStop(t) {
|
|
1097
|
-
L = t, c.stop.hidden = !0,
|
|
1156
|
+
L = t, c.stop.hidden = !0, J(), c.dialog.hidden = !1, z(), x(t ? "Video attached." : "Recording cancelled.");
|
|
1098
1157
|
},
|
|
1099
1158
|
onError(t) {
|
|
1100
|
-
|
|
1159
|
+
x(t.message);
|
|
1101
1160
|
}
|
|
1102
1161
|
});
|
|
1103
1162
|
try {
|
|
1104
|
-
await
|
|
1163
|
+
await W.start();
|
|
1105
1164
|
} catch (t) {
|
|
1106
|
-
c.stop.hidden = !0,
|
|
1165
|
+
c.stop.hidden = !0, J(), c.dialog.hidden = !1, x(t.message);
|
|
1107
1166
|
}
|
|
1108
1167
|
}
|
|
1109
1168
|
function z() {
|
|
1110
1169
|
if (c.shot = null, !S) {
|
|
1111
|
-
c.canvas.style.removeProperty("--nf-shot-aspect"), c.canvas.style.removeProperty("aspect-ratio"), c.canvas.innerHTML = L ? `<video class="nf-recording-preview" controls src="${URL.createObjectURL(L)}"></video>` : "",
|
|
1170
|
+
c.canvas.style.removeProperty("--nf-shot-aspect"), c.canvas.style.removeProperty("aspect-ratio"), c.canvas.innerHTML = L ? `<video class="nf-recording-preview" controls src="${URL.createObjectURL(L)}"></video>` : "", yt();
|
|
1112
1171
|
return;
|
|
1113
1172
|
}
|
|
1114
1173
|
c.canvas.innerHTML = `<div class="nf-shot"><img alt="Screenshot" src="${S}" draggable="false"></div>`, c.shot = c.canvas.querySelector(".nf-shot");
|
|
1115
1174
|
const t = c.shot.querySelector("img");
|
|
1116
1175
|
t.draggable = !1, t.addEventListener("dragstart", (r) => r.preventDefault());
|
|
1117
1176
|
const e = () => {
|
|
1118
|
-
|
|
1177
|
+
An(t), $();
|
|
1119
1178
|
};
|
|
1120
1179
|
t.addEventListener("load", e), t.complete && t.naturalWidth && e();
|
|
1121
1180
|
}
|
|
1122
|
-
function
|
|
1123
|
-
const e = t.naturalWidth ||
|
|
1124
|
-
if (e && r && (
|
|
1181
|
+
function An(t) {
|
|
1182
|
+
const e = t.naturalWidth || F.w, r = t.naturalHeight || F.h;
|
|
1183
|
+
if (e && r && (F = { w: e, h: r }, c.canvas.style.setProperty("--nf-shot-aspect", String(e / r)), c.canvas.style.aspectRatio = `${e} / ${r}`), !c.shot || !F.w || !F.h)
|
|
1125
1184
|
return;
|
|
1126
|
-
const n = f.crop(), i =
|
|
1127
|
-
c.shot.style.left = `${(1 -
|
|
1185
|
+
const n = f.crop(), i = F.w / F.h, o = n.w / n.h * i, a = Math.min(1, o / i), s = Math.min(1, i / o);
|
|
1186
|
+
c.shot.style.left = `${(1 - a) / 2 * 100}%`, c.shot.style.top = `${(1 - s) / 2 * 100}%`, c.shot.style.width = `${a * 100}%`, c.shot.style.height = `${s * 100}%`, t.style.width = `${100 / n.w}%`, t.style.height = `${100 / n.h}%`, t.style.left = `${-n.x / n.w * 100}%`, t.style.top = `${-n.y / n.h * 100}%`;
|
|
1128
1187
|
}
|
|
1129
|
-
function
|
|
1188
|
+
function In(t) {
|
|
1130
1189
|
return t.type === "arrow" ? {
|
|
1131
1190
|
id: "preview",
|
|
1132
1191
|
type: "arrow",
|
|
@@ -1141,105 +1200,108 @@ function Mn(t) {
|
|
|
1141
1200
|
id: "preview",
|
|
1142
1201
|
type: t.type,
|
|
1143
1202
|
number: "",
|
|
1144
|
-
...
|
|
1203
|
+
...rt(t.start, t.current)
|
|
1145
1204
|
};
|
|
1146
1205
|
}
|
|
1147
|
-
function
|
|
1206
|
+
function $() {
|
|
1148
1207
|
if ((c.shot || c.canvas).querySelectorAll(".nf-sticker, .nf-crop").forEach((n) => n.remove()), !S || !c.shot) {
|
|
1149
|
-
|
|
1208
|
+
yt();
|
|
1150
1209
|
return;
|
|
1151
1210
|
}
|
|
1152
1211
|
const e = f.crop();
|
|
1153
|
-
if ((
|
|
1212
|
+
if ((b == null ? void 0 : b.kind) === "crop") {
|
|
1154
1213
|
const n = document.createElement("div");
|
|
1155
|
-
n.className = "nf-crop",
|
|
1214
|
+
n.className = "nf-crop", Ot(n, rt(b.start, b.current), { x: 0, y: 0, w: 1, h: 1 }), c.shot.appendChild(n);
|
|
1156
1215
|
}
|
|
1157
1216
|
const r = f.list().slice();
|
|
1158
|
-
if ((
|
|
1159
|
-
const i = n.id === "preview",
|
|
1160
|
-
if (
|
|
1217
|
+
if ((b == null ? void 0 : b.kind) === "sticker" && r.push(In(b)), r.forEach((n) => {
|
|
1218
|
+
const i = n.id === "preview", o = !i && n.id === R, a = document.createElement("div");
|
|
1219
|
+
if (a.className = `nf-sticker nf-${n.type}`, a.dataset.id = n.id, o && (a.dataset.selected = "true"), i && (a.dataset.preview = "true"), n.type === "arrow" ? Dn(a, n, e, o) : (Ot(a, n, e), o && ["nw", "ne", "sw", "se"].forEach((s) => gt(a, s))), !i && n.number) {
|
|
1161
1220
|
const s = document.createElement("span");
|
|
1162
|
-
s.className = "nf-badge", s.textContent = String(n.number),
|
|
1221
|
+
s.className = "nf-badge", s.textContent = String(n.number), a.appendChild(s);
|
|
1163
1222
|
}
|
|
1164
|
-
c.shot.appendChild(
|
|
1223
|
+
c.shot.appendChild(a);
|
|
1165
1224
|
}), c.canvas.querySelectorAll(":scope > .nf-recording-preview").forEach((n) => n.remove()), L) {
|
|
1166
1225
|
const n = document.createElement("video");
|
|
1167
1226
|
n.className = "nf-recording-preview", n.controls = !0, n.src = URL.createObjectURL(L), n.style.position = "absolute", n.style.right = "8px", n.style.bottom = "8px", n.style.width = "160px", c.canvas.appendChild(n);
|
|
1168
1227
|
}
|
|
1169
|
-
|
|
1228
|
+
yt();
|
|
1170
1229
|
}
|
|
1171
|
-
function
|
|
1172
|
-
const i =
|
|
1173
|
-
t.style.left = `${g}px`, t.style.top = `${P}px`, t.style.width = `${d}px`, t.style.height = `${
|
|
1230
|
+
function Dn(t, e, r, n) {
|
|
1231
|
+
const i = nt(), o = i.clientWidth, a = i.clientHeight, s = (e.x - r.x) / r.w * o, l = (e.y - r.y) / r.h * a, v = ((e.x2 ?? e.x + e.w) - r.x) / r.w * o, y = ((e.y2 ?? e.y) - r.y) / r.h * a, h = 18, g = Math.min(s, v) - h, P = Math.min(l, y) - h, d = Math.max(2, Math.abs(v - s)) + h * 2, p = Math.max(2, Math.abs(y - l)) + h * 2, k = s - g, T = l - P, A = v - g, U = y - P, V = `nf-ah-${e.id}`, I = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
1232
|
+
t.style.left = `${g}px`, t.style.top = `${P}px`, t.style.width = `${d}px`, t.style.height = `${p}px`, I.setAttribute("class", "nf-arrow-svg"), I.setAttribute("viewBox", `0 0 ${d} ${p}`), I.setAttribute("width", String(d)), I.setAttribute("height", String(p)), I.innerHTML = `
|
|
1174
1233
|
<defs>
|
|
1175
|
-
<marker id="${
|
|
1234
|
+
<marker id="${V}" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto">
|
|
1176
1235
|
<path d="M0,0 L10,5 L0,10 Z" fill="currentColor" />
|
|
1177
1236
|
</marker>
|
|
1178
1237
|
</defs>
|
|
1179
|
-
<line class="nf-arrow-hit" x1="${
|
|
1180
|
-
<line class="nf-arrow-shaft" x1="${
|
|
1181
|
-
`, t.appendChild(I), n && (gt(t, "start", { left:
|
|
1238
|
+
<line class="nf-arrow-hit" x1="${k}" y1="${T}" x2="${A}" y2="${U}" />
|
|
1239
|
+
<line class="nf-arrow-shaft" x1="${k}" y1="${T}" x2="${A}" y2="${U}" marker-end="url(#${V})" />
|
|
1240
|
+
`, t.appendChild(I), n && (gt(t, "start", { left: k - 5, top: T - 5 }), gt(t, "end", { left: A - 5, top: U - 5 }));
|
|
1182
1241
|
}
|
|
1183
1242
|
function gt(t, e, r) {
|
|
1184
1243
|
const n = document.createElement("span");
|
|
1185
1244
|
n.className = "nf-handle", n.dataset.dir = e, r && (n.style.left = `${r.left}px`, n.style.top = `${r.top}px`), t.appendChild(n);
|
|
1186
1245
|
}
|
|
1187
|
-
function
|
|
1246
|
+
function Ot(t, e, r) {
|
|
1188
1247
|
t.style.left = `${(e.x - r.x) / r.w * 100}%`, t.style.top = `${(e.y - r.y) / r.h * 100}%`, t.style.width = `${e.w / r.w * 100}%`, t.style.height = `${e.h / r.h * 100}%`;
|
|
1189
1248
|
}
|
|
1190
|
-
function
|
|
1191
|
-
return
|
|
1192
|
-
...
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1249
|
+
function jn(t = {}) {
|
|
1250
|
+
return rn(t), m = {
|
|
1251
|
+
...m,
|
|
1252
|
+
endpoint: String(t.endpoint || m.endpoint || "").replace(/\/$/, ""),
|
|
1253
|
+
projectKey: t.projectKey == null ? m.projectKey : String(t.projectKey),
|
|
1254
|
+
version: t.version == null ? m.version : String(t.version),
|
|
1255
|
+
targets: t.targets === void 0 ? m.targets : t.targets,
|
|
1256
|
+
hideLauncher: t.hideLauncher == null ? m.hideLauncher : !!t.hideLauncher,
|
|
1257
|
+
theme: Jt(t.theme ?? m.theme),
|
|
1258
|
+
video: t.video == null ? m.video : !!t.video
|
|
1259
|
+
}, vt(), et(), re;
|
|
1260
|
+
}
|
|
1261
|
+
async function ee() {
|
|
1262
|
+
vt(), et(), c.launcher.hidden = !0, f = Xt(), F = { w: 0, h: 0 }, L = null, R = null, b = null, w = null, G = "bug", ht("bug"), pt(null), St(!1), c.text.value = "", x("Capturing…");
|
|
1201
1263
|
try {
|
|
1202
|
-
S = await
|
|
1264
|
+
S = await tn(), q = S, c.stage.hidden = !1, c.restore.hidden = !0;
|
|
1203
1265
|
} catch {
|
|
1204
|
-
S = "",
|
|
1266
|
+
S = "", x("Screenshot failed; you can still send text.");
|
|
1205
1267
|
}
|
|
1206
1268
|
c.dialog.hidden = !1, z(), c.text.focus();
|
|
1207
1269
|
}
|
|
1208
|
-
function
|
|
1209
|
-
u && (
|
|
1270
|
+
function it() {
|
|
1271
|
+
u && (B == null || B.stop(), St(!1), Qt(), b = null, w = null, xt(!1), c.dialog.hidden = !0, c.stop.hidden = !0, J());
|
|
1210
1272
|
}
|
|
1211
|
-
function
|
|
1212
|
-
|
|
1273
|
+
function Fn(t = {}) {
|
|
1274
|
+
ft = { ...ft, ...nn(t) };
|
|
1213
1275
|
}
|
|
1214
|
-
async function
|
|
1215
|
-
|
|
1276
|
+
async function ne() {
|
|
1277
|
+
vt();
|
|
1216
1278
|
const t = c.text.value.trim();
|
|
1217
1279
|
if (!t && !S && !L)
|
|
1218
|
-
return
|
|
1219
|
-
if (!
|
|
1220
|
-
return
|
|
1221
|
-
|
|
1280
|
+
return x("Add a note, screenshot, or video first."), null;
|
|
1281
|
+
if (!m.endpoint || !m.projectKey)
|
|
1282
|
+
return x("Notefully is missing endpoint or projectKey."), null;
|
|
1283
|
+
x("Submitting…", !0);
|
|
1222
1284
|
const e = new FormData();
|
|
1223
|
-
if (e.append("message", t), e.append("kind",
|
|
1224
|
-
...
|
|
1225
|
-
console:
|
|
1226
|
-
})), e.append("annotations", JSON.stringify(f.list())), Array.isArray(
|
|
1227
|
-
const i = await
|
|
1285
|
+
if (e.append("message", t), e.append("kind", G), e.append("version", m.version || "0.0.0"), e.append("context", JSON.stringify({
|
|
1286
|
+
...en(ft),
|
|
1287
|
+
console: Gt.snapshot()
|
|
1288
|
+
})), e.append("annotations", JSON.stringify(f.list())), Array.isArray(m.targets) && e.append("targets", JSON.stringify(m.targets)), S) {
|
|
1289
|
+
const i = await hn(
|
|
1228
1290
|
S,
|
|
1229
1291
|
f.crop(),
|
|
1230
1292
|
f.list(),
|
|
1231
1293
|
{
|
|
1232
|
-
mark:
|
|
1233
|
-
markText:
|
|
1294
|
+
mark: jt("--nf-mark", "#fdd341"),
|
|
1295
|
+
markText: jt("--nf-mark-text", "#2a2140")
|
|
1234
1296
|
}
|
|
1235
1297
|
);
|
|
1236
1298
|
e.append("screenshot", i, "screenshot.png");
|
|
1237
1299
|
}
|
|
1238
1300
|
L && e.append("recording", L, "recording.webm");
|
|
1239
|
-
const r = await fetch(`${
|
|
1301
|
+
const r = await fetch(`${m.endpoint}/v1/reports`, {
|
|
1240
1302
|
method: "POST",
|
|
1241
1303
|
headers: {
|
|
1242
|
-
"X-Notefully-Key":
|
|
1304
|
+
"X-Notefully-Key": m.projectKey
|
|
1243
1305
|
},
|
|
1244
1306
|
body: e
|
|
1245
1307
|
});
|
|
@@ -1250,20 +1312,20 @@ async function Jt() {
|
|
|
1250
1312
|
n = null;
|
|
1251
1313
|
}
|
|
1252
1314
|
if (!r.ok)
|
|
1253
|
-
throw
|
|
1254
|
-
return
|
|
1315
|
+
throw x((n == null ? void 0 : n.error) || "Submit failed."), new Error((n == null ? void 0 : n.error) || `Submit failed (${r.status})`);
|
|
1316
|
+
return x("Sent. Thank you."), it(), n;
|
|
1255
1317
|
}
|
|
1256
|
-
function
|
|
1257
|
-
|
|
1318
|
+
function On() {
|
|
1319
|
+
it(), u == null || u.remove(), u = null, c = {};
|
|
1258
1320
|
}
|
|
1259
|
-
const
|
|
1260
|
-
typeof window < "u" && (window.Notefully =
|
|
1321
|
+
const re = { init: jn, open: ee, close: it, identify: Fn, submit: ne, destroy: On };
|
|
1322
|
+
typeof window < "u" && (window.Notefully = re);
|
|
1261
1323
|
export {
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1324
|
+
it as close,
|
|
1325
|
+
re as default,
|
|
1326
|
+
On as destroy,
|
|
1327
|
+
Fn as identify,
|
|
1328
|
+
jn as init,
|
|
1329
|
+
ee as open,
|
|
1330
|
+
ne as submit
|
|
1269
1331
|
};
|