in js/rough-notation.js [241:434]
function p(t, s, h, a, c, u) {
const f = [];
let l = h.strokeWidth || 2;
const g = (function (t) {
const e = t.padding;
if (e || 0 === e) {
if ("number" == typeof e) return [e, e, e, e];
if (Array.isArray(e)) {
const t = e;
if (t.length)
switch (t.length) {
case 4:
return [...t];
case 1:
return [t[0], t[0], t[0], t[0]];
case 2:
return [...t, ...t];
case 3:
return [...t, t[1]];
default:
return [t[0], t[1], t[2], t[3]];
}
}
}
return [5, 5, 5, 5];
})(h),
p = void 0 === h.animate || !!h.animate,
_ = h.iterations || 2,
m = h.rtl ? 1 : 0,
w = d("single", u);
switch (h.type) {
case "underline": {
const t = s.y + s.h + g[2];
for (let e = m; e < _ + m; e++)
e % 2
? f.push(i(s.x + s.w, t, s.x, t, w))
: f.push(i(s.x, t, s.x + s.w, t, w));
break;
}
case "strike-through": {
const t = s.y + s.h / 2;
for (let e = m; e < _ + m; e++)
e % 2
? f.push(i(s.x + s.w, t, s.x, t, w))
: f.push(i(s.x, t, s.x + s.w, t, w));
break;
}
case "box": {
const t = s.x - g[3],
e = s.y - g[0],
i = s.w + (g[1] + g[3]),
n = s.h + (g[0] + g[2]);
for (let s = 0; s < _; s++) f.push(o(t, e, i, n, w));
break;
}
case "bracket": {
const t = Array.isArray(h.brackets)
? h.brackets
: h.brackets
? [h.brackets]
: ["right"],
e = s.x - 2 * g[3],
i = s.x + s.w + 2 * g[1],
o = s.y - 2 * g[0],
r = s.y + s.h + 2 * g[2];
for (const h of t) {
let t;
switch (h) {
case "bottom":
t = [
[e, s.y + s.h],
[e, r],
[i, r],
[i, s.y + s.h],
];
break;
case "top":
t = [
[e, s.y],
[e, o],
[i, o],
[i, s.y],
];
break;
case "left":
t = [
[s.x, o],
[e, o],
[e, r],
[s.x, r],
];
break;
case "right":
t = [
[s.x + s.w, o],
[i, o],
[i, r],
[s.x + s.w, r],
];
}
t && f.push(n(t, !1, w));
}
break;
}
case "crossed-off": {
const t = s.x,
e = s.y,
n = t + s.w,
o = e + s.h;
for (let s = m; s < _ + m; s++)
s % 2 ? f.push(i(n, o, t, e, w)) : f.push(i(t, e, n, o, w));
for (let s = m; s < _ + m; s++)
s % 2 ? f.push(i(t, o, n, e, w)) : f.push(i(n, e, t, o, w));
break;
}
case "circle": {
const t = d("double", u),
e = s.w + (g[1] + g[3]),
i = s.h + (g[0] + g[2]),
n = s.x - g[3] + e / 2,
o = s.y - g[0] + i / 2,
h = Math.floor(_ / 2),
a = _ - 2 * h;
for (let s = 0; s < h; s++) f.push(r(n, o, e, i, t));
for (let t = 0; t < a; t++) f.push(r(n, o, e, i, w));
break;
}
case "highlight": {
const t = d("highlight", u);
l = 0.95 * s.h;
const e = s.y + s.h / 2;
for (let n = m; n < _ + m; n++)
n % 2
? f.push(i(s.x + s.w, e, s.x, e, t))
: f.push(i(s.x, e, s.x + s.w, e, t));
break;
}
}
if (f.length) {
const s = (function (t) {
const e = [];
for (const s of t) {
let t = "";
for (const i of s.ops) {
const s = i.data;
switch (i.op) {
case "move":
t.trim() && e.push(t.trim()), (t = `M${s[0]} ${s[1]} `);
break;
case "bcurveTo":
t += `C${s[0]} ${s[1]}, ${s[2]} ${s[3]}, ${s[4]} ${s[5]} `;
break;
case "lineTo":
t += `L${s[0]} ${s[1]} `;
}
}
t.trim() && e.push(t.trim());
}
return e;
})(f),
i = [],
n = [];
let o = 0;
const r = (t, e, s) => t.setAttribute(e, s);
for (const a of s) {
const s = document.createElementNS(e, "path");
if (
(r(s, "d", a),
r(s, "fill", "none"),
r(s, "stroke", h.color || "currentColor"),
r(s, "stroke-width", "" + l),
p)
) {
const t = s.getTotalLength();
i.push(t), (o += t);
}
t.appendChild(s), n.push(s);
}
if (p) {
let t = 0;
for (let e = 0; e < n.length; e++) {
const s = n[e],
r = i[e],
h = o ? c * (r / o) : 0,
u = a + t,
f = s.style;
(f.strokeDashoffset = "" + r),
(f.strokeDasharray = "" + r),
(f.animation = `rough-notation-dash ${h}ms ease-out ${u}ms forwards`),
(t += h);
}
}
}
}