@mhmo91/schmancy 0.0.291 → 0.0.292
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/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/consume-DSKPc5vj.js +38 -0
- package/dist/consume-DSKPc5vj.js.map +1 -0
- package/dist/consume-Di0U0iBU.cjs +2 -0
- package/dist/consume-Di0U0iBU.cjs.map +1 -0
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/delay-CqrzARsM.cjs +10 -0
- package/dist/delay-CqrzARsM.cjs.map +1 -0
- package/dist/delay-DGHDipnV.js +301 -0
- package/dist/delay-DGHDipnV.js.map +1 -0
- package/dist/delay.cjs +2 -0
- package/dist/delay.cjs.map +1 -0
- package/dist/delay.js +6 -0
- package/dist/delay.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +50 -47
- package/dist/index.js.map +1 -1
- package/dist/intersection-CJxzz8c-.js +15 -0
- package/dist/intersection-CJxzz8c-.js.map +1 -0
- package/dist/intersection-CVvaDv96.cjs +2 -0
- package/dist/intersection-CVvaDv96.cjs.map +1 -0
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/tabs-group-Bijey97W.js +110 -0
- package/dist/tabs-group-Bijey97W.js.map +1 -0
- package/dist/tabs-group-fV6A7jOd.cjs +41 -0
- package/dist/tabs-group-fV6A7jOd.cjs.map +1 -0
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{theme-button-DzFDka_m.js → theme-button-BTQaux2v.js} +9 -7
- package/dist/{theme-button-DzFDka_m.js.map → theme-button-BTQaux2v.js.map} +1 -1
- package/dist/{theme-button-puqIJC3M.cjs → theme-button-lS8U2Zia.cjs} +2 -2
- package/dist/{theme-button-puqIJC3M.cjs.map → theme-button-lS8U2Zia.cjs.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/typewriter-B5nruGbg.cjs +21 -0
- package/dist/typewriter-B5nruGbg.cjs.map +1 -0
- package/dist/typewriter-m577B5AD.js +436 -0
- package/dist/typewriter-m577B5AD.js.map +1 -0
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/utils.cjs +2 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.js +5 -0
- package/dist/utils.js.map +1 -0
- package/package.json +1 -1
- package/types/src/delay/delay.d.ts +29 -0
- package/types/src/delay/index.d.ts +1 -0
- package/types/src/index.d.ts +1 -0
- package/types/src/typewriter/typewriter.d.ts +5 -5
- package/types/src/utils/hashContent.d.ts +1 -0
- package/types/src/utils/index.d.ts +2 -0
- package/types/src/utils/intersection.d.ts +4 -0
- package/dist/tabs-group-BtUOhq-i.cjs +0 -41
- package/dist/tabs-group-BtUOhq-i.cjs.map +0 -1
- package/dist/tabs-group-D-TEYc2v.js +0 -145
- package/dist/tabs-group-D-TEYc2v.js.map +0 -1
- package/dist/typewriter-CM8Islpn.js +0 -419
- package/dist/typewriter-CM8Islpn.js.map +0 -1
- package/dist/typewriter-D0yYoTg6.cjs +0 -19
- package/dist/typewriter-D0yYoTg6.cjs.map +0 -1
|
@@ -1,419 +0,0 @@
|
|
|
1
|
-
var St = Object.defineProperty;
|
|
2
|
-
var it = (s) => {
|
|
3
|
-
throw TypeError(s);
|
|
4
|
-
};
|
|
5
|
-
var Nt = (s, t, e) => t in s ? St(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e;
|
|
6
|
-
var m = (s, t, e) => Nt(s, typeof t != "symbol" ? t + "" : t, e), rt = (s, t, e) => t.has(s) || it("Cannot " + e);
|
|
7
|
-
var d = (s, t, e) => (rt(s, t, "read from private field"), e ? e.call(s) : t.get(s)), Q = (s, t, e) => t.has(s) ? it("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(s) : t.set(s, e);
|
|
8
|
-
var a = (s, t, e) => (rt(s, t, "access private method"), e);
|
|
9
|
-
import "rxjs";
|
|
10
|
-
import "lit/directives/class-map.js";
|
|
11
|
-
import "lit/directives/style-map.js";
|
|
12
|
-
import { $ as qt } from "./litElement.mixin-kW4tqV-x.js";
|
|
13
|
-
import "./tailwind.mixin-D6m-sJmB.js";
|
|
14
|
-
import { css as Dt, html as Lt } from "lit";
|
|
15
|
-
import { property as T, query as xt, queryAssignedNodes as kt, customElement as Mt } from "lit/decorators.js";
|
|
16
|
-
const dt = (s) => Array.isArray(s), nt = (s) => dt(s) ? s : [s], yt = "data-typeit-id", P = "ti-cursor", At = { started: !1, completed: !1, frozen: !1, destroyed: !1 }, v = { breakLines: !0, cursor: { autoPause: !0, autoPauseDelay: 500, animation: { frames: [0, 0, 1].map((s) => ({ opacity: s })), options: { iterations: 1 / 0, easing: "steps(2, start)", fill: "forwards" } } }, cursorChar: "|", cursorSpeed: 1e3, deleteSpeed: null, html: !0, lifeLike: !0, loop: !1, loopDelay: 750, nextStringDelay: 750, speed: 100, startDelay: 250, startDelete: !1, strings: [], waitUntilVisible: !1, beforeString: () => {
|
|
17
|
-
}, afterString: () => {
|
|
18
|
-
}, beforeStep: () => {
|
|
19
|
-
}, afterStep: () => {
|
|
20
|
-
}, afterComplete: () => {
|
|
21
|
-
} }, $t = `[${yt}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`, _ = (s) => document.createElement(s), Y = (s) => document.createTextNode(s), ot = (s, t = "") => {
|
|
22
|
-
let e = _("style");
|
|
23
|
-
e.id = t, e.appendChild(Y(s)), document.head.appendChild(e);
|
|
24
|
-
}, at = (s) => (dt(s) || (s = [s / 2, s / 2]), s), ut = (s, t) => Math.abs(Math.random() * (s + t - (s - t)) + (s - t));
|
|
25
|
-
let lt = (s) => s / 2;
|
|
26
|
-
const mt = (s) => Array.from(s);
|
|
27
|
-
let Z = (s) => ([...s.childNodes].forEach((t) => {
|
|
28
|
-
if (t.nodeValue) return [...t.nodeValue].forEach((e) => {
|
|
29
|
-
t.parentNode.insertBefore(Y(e), t);
|
|
30
|
-
}), void t.remove();
|
|
31
|
-
Z(t);
|
|
32
|
-
}), s);
|
|
33
|
-
const ft = (s) => {
|
|
34
|
-
let t = document.implementation.createHTMLDocument();
|
|
35
|
-
return t.body.innerHTML = s, Z(t.body);
|
|
36
|
-
};
|
|
37
|
-
function gt(s, t = !1, e = !1) {
|
|
38
|
-
let r, n = s.querySelector(`.${P}`), o = document.createTreeWalker(s, NodeFilter.SHOW_ALL, { acceptNode: (l) => {
|
|
39
|
-
var h, p;
|
|
40
|
-
if (n && e) {
|
|
41
|
-
if ((h = l.classList) != null && h.contains(P)) return NodeFilter.FILTER_ACCEPT;
|
|
42
|
-
if (n.contains(l)) return NodeFilter.FILTER_REJECT;
|
|
43
|
-
}
|
|
44
|
-
return (p = l.classList) != null && p.contains(P) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;
|
|
45
|
-
} }), u = [];
|
|
46
|
-
for (; r = o.nextNode(); ) r.originalParent || (r.originalParent = r.parentNode), u.push(r);
|
|
47
|
-
return t ? u.reverse() : u;
|
|
48
|
-
}
|
|
49
|
-
function Ot(s, t = !0) {
|
|
50
|
-
return t ? gt(ft(s)) : mt(s).map(Y);
|
|
51
|
-
}
|
|
52
|
-
const _t = ({ index: s, newIndex: t, queueItems: e, cleanUp: r }) => {
|
|
53
|
-
for (let n = s + 1; n < t + 1; n++) r(e[n][0]);
|
|
54
|
-
}, bt = (s) => Number.isInteger(s), ht = ({ queueItems: s, selector: t, cursorPosition: e, to: r }) => {
|
|
55
|
-
if (bt(t)) return -1 * t;
|
|
56
|
-
let n = new RegExp("END", "i").test(r), o = t ? [...s].reverse().findIndex(({ char: u }) => {
|
|
57
|
-
let l = u.parentElement, h = l.matches(t);
|
|
58
|
-
return !(!n || !h) || h && l.firstChild.isSameNode(u);
|
|
59
|
-
}) : -1;
|
|
60
|
-
return o < 0 && (o = n ? 0 : s.length - 1), o - e + (n ? 0 : 1);
|
|
61
|
-
}, $ = (s, t) => new Array(t).fill(s);
|
|
62
|
-
let R = (s) => new Promise((t) => {
|
|
63
|
-
requestAnimationFrame(async () => {
|
|
64
|
-
t(await s());
|
|
65
|
-
});
|
|
66
|
-
}), ct = (s) => s == null ? void 0 : s.getAnimations().find((t) => t.id === s.dataset.tiAnimationId), wt = ({ cursor: s, frames: t, options: e }) => {
|
|
67
|
-
let r = s.animate(t, e);
|
|
68
|
-
return r.pause(), r.id = s.dataset.tiAnimationId, R(() => {
|
|
69
|
-
R(() => {
|
|
70
|
-
r.play();
|
|
71
|
-
});
|
|
72
|
-
}), r;
|
|
73
|
-
}, pt = (s) => {
|
|
74
|
-
var t;
|
|
75
|
-
return (t = s.func) == null ? void 0 : t.call(null);
|
|
76
|
-
}, Ht = async ({ index: s, queueItems: t, wait: e, cursor: r, cursorOptions: n }) => {
|
|
77
|
-
let o = t[s][1], u = [], l = s, h = o, p = () => h && !h.delay, c = o.shouldPauseCursor() && n.autoPause;
|
|
78
|
-
for (; p(); ) u.push(h), p() && l++, h = t[l] ? t[l][1] : null;
|
|
79
|
-
if (u.length) return await R(async () => {
|
|
80
|
-
for (let S of u) await pt(S);
|
|
81
|
-
}), l - 1;
|
|
82
|
-
let y, g = ct(r);
|
|
83
|
-
return g && (y = { ...g.effect.getComputedTiming(), delay: c ? n.autoPauseDelay : 0 }), await e(async () => {
|
|
84
|
-
g && c && g.cancel(), await R(() => {
|
|
85
|
-
pt(o);
|
|
86
|
-
});
|
|
87
|
-
}, o.delay), await (({ cursor: S, options: tt, cursorOptions: et }) => {
|
|
88
|
-
if (!S || !et) return;
|
|
89
|
-
let j, A = ct(S);
|
|
90
|
-
A && (tt.delay = A.effect.getComputedTiming().delay, j = A.currentTime, A.cancel());
|
|
91
|
-
let st = wt({ cursor: S, frames: et.animation.frames, options: tt });
|
|
92
|
-
return j && (st.currentTime = j), st;
|
|
93
|
-
})({ cursor: r, options: y, cursorOptions: n }), s;
|
|
94
|
-
};
|
|
95
|
-
const O = (s) => "value" in s;
|
|
96
|
-
let E = (s) => typeof s == "function" ? s() : s, U = (s, t = document, e = !1) => t["querySelector" + (e ? "All" : "")](s);
|
|
97
|
-
const N = (s, t) => Object.assign({}, s, t);
|
|
98
|
-
let zt = { "font-family": "", "font-weight": "", "font-size": "", "font-style": "", "line-height": "", color: "", transform: "translateX(-.125em)" };
|
|
99
|
-
var i, It, q, V, Ct, X, J, W, H, w, Pt, D, L, Tt, B, vt, Et, G, z, x, F, C, k, M, K, I;
|
|
100
|
-
class Ft {
|
|
101
|
-
constructor(t, e = {}) {
|
|
102
|
-
Q(this, i);
|
|
103
|
-
m(this, "element");
|
|
104
|
-
m(this, "timeouts");
|
|
105
|
-
m(this, "cursorPosition");
|
|
106
|
-
m(this, "predictedCursorPosition");
|
|
107
|
-
m(this, "statuses", { started: !1, completed: !1, frozen: !1, destroyed: !1, firing: !1 });
|
|
108
|
-
m(this, "opts");
|
|
109
|
-
m(this, "id");
|
|
110
|
-
m(this, "queue");
|
|
111
|
-
m(this, "cursor");
|
|
112
|
-
m(this, "flushCallback", null);
|
|
113
|
-
m(this, "unfreeze", () => {
|
|
114
|
-
});
|
|
115
|
-
m(this, "is", function(t) {
|
|
116
|
-
return this.statuses[t];
|
|
117
|
-
});
|
|
118
|
-
Q(this, B, (t) => {
|
|
119
|
-
this.opts.cursor = ((e) => {
|
|
120
|
-
var r, n;
|
|
121
|
-
if (typeof e == "object") {
|
|
122
|
-
let o = {}, { frames: u, options: l } = v.cursor.animation;
|
|
123
|
-
return o.animation = e.animation || {}, o.animation.frames = ((r = e.animation) == null ? void 0 : r.frames) || u, o.animation.options = N(l, ((n = e.animation) == null ? void 0 : n.options) || {}), o.autoPause = e.autoPause ?? v.cursor.autoPause, o.autoPauseDelay = e.autoPauseDelay || v.cursor.autoPauseDelay, o;
|
|
124
|
-
}
|
|
125
|
-
return e === !0 ? v.cursor : e;
|
|
126
|
-
})(t.cursor ?? v.cursor), this.opts.strings = a(this, i, vt).call(this, nt(this.opts.strings)), this.opts = N(this.opts, { html: !d(this, i, M) && this.opts.html, nextStringDelay: at(this.opts.nextStringDelay), loopDelay: at(this.opts.loopDelay) });
|
|
127
|
-
});
|
|
128
|
-
var r;
|
|
129
|
-
this.opts = N(v, e), this.element = typeof (r = t) == "string" ? U(r) : r, this.timeouts = [], this.cursorPosition = 0, this.unfreeze = () => {
|
|
130
|
-
}, this.predictedCursorPosition = null, this.statuses = N({}, At), this.id = Math.random().toString().substring(2, 9), this.queue = function(n) {
|
|
131
|
-
let o = function(c) {
|
|
132
|
-
return nt(c).forEach((y) => {
|
|
133
|
-
var g;
|
|
134
|
-
return p.set(Symbol((g = y.char) == null ? void 0 : g.innerText), u({ ...y }));
|
|
135
|
-
}), this;
|
|
136
|
-
}, u = (c) => (c.shouldPauseCursor = function() {
|
|
137
|
-
return !!(this.typeable || this.cursorable || this.deletable);
|
|
138
|
-
}, c), l = () => p, h = () => Array.from(p.values()), p = /* @__PURE__ */ new Map();
|
|
139
|
-
return o(n), { add: o, set: function(c, y) {
|
|
140
|
-
let g = [...p.keys()];
|
|
141
|
-
p.set(g[c], u(y));
|
|
142
|
-
}, wipe: function() {
|
|
143
|
-
p = /* @__PURE__ */ new Map(), o(n);
|
|
144
|
-
}, done: (c, y = !1) => y ? p.delete(c) : p.get(c).done = !0, reset: function() {
|
|
145
|
-
p.forEach((c) => delete c.done);
|
|
146
|
-
}, destroy: (c) => p.delete(c), getItems: (c = !1) => c ? h() : h().filter((y) => !y.done), getQueue: l, getTypeable: () => h().filter((c) => c.typeable), getPendingQueueItems: () => {
|
|
147
|
-
const c = [];
|
|
148
|
-
for (let [, y] of l()) y.done || c.push(y);
|
|
149
|
-
return c;
|
|
150
|
-
} };
|
|
151
|
-
}([{ delay: this.opts.startDelay }]), d(this, B).call(this, e), this.cursor = a(this, i, Et).call(this), this.element.dataset.typeitId = this.id, ot($t), this.opts.strings.length && a(this, i, Tt).call(this);
|
|
152
|
-
}
|
|
153
|
-
go() {
|
|
154
|
-
return this.statuses.started ? this : (a(this, i, W).call(this), this.opts.waitUntilVisible ? (t = this.element, e = a(this, i, q).bind(this), new IntersectionObserver((r, n) => {
|
|
155
|
-
r.forEach((o) => {
|
|
156
|
-
o.isIntersecting && (e(), n.unobserve(t));
|
|
157
|
-
});
|
|
158
|
-
}, { threshold: 1 }).observe(t), this) : (a(this, i, q).call(this), this));
|
|
159
|
-
var t, e;
|
|
160
|
-
}
|
|
161
|
-
destroy(t = !0) {
|
|
162
|
-
this.timeouts = (this.timeouts.forEach(clearTimeout), []), E(t) && this.cursor && a(this, i, F).call(this, this.cursor), this.statuses.destroyed = !0;
|
|
163
|
-
}
|
|
164
|
-
reset(t) {
|
|
165
|
-
!this.is("destroyed") && this.destroy(), t ? (this.queue.wipe(), t(this)) : this.queue.reset(), this.cursorPosition = 0;
|
|
166
|
-
for (let e in this.statuses) this.statuses[e] = !1;
|
|
167
|
-
return this.element[a(this, i, H).call(this) ? "value" : "innerHTML"] = "", this;
|
|
168
|
-
}
|
|
169
|
-
type(t, e = {}) {
|
|
170
|
-
t = E(t);
|
|
171
|
-
let { instant: r } = e, n = a(this, i, D).call(this, e), o = Ot(t, this.opts.html).map((l) => {
|
|
172
|
-
return { func: () => a(this, i, z).call(this, l), char: l, delay: r || (h = l, /<(.+)>(.*?)<\/(.+)>/.test(h.outerHTML)) ? 0 : a(this, i, C).call(this), typeable: l.nodeType === Node.TEXT_NODE };
|
|
173
|
-
var h;
|
|
174
|
-
}), u = [n[0], { func: async () => await this.opts.beforeString(t, this) }, ...o, { func: async () => await this.opts.afterString(t, this) }, n[1]];
|
|
175
|
-
return a(this, i, w).call(this, u, e);
|
|
176
|
-
}
|
|
177
|
-
break(t = {}) {
|
|
178
|
-
return a(this, i, w).call(this, { func: () => a(this, i, z).call(this, _("BR")), typeable: !0 }, t);
|
|
179
|
-
}
|
|
180
|
-
move(t, e = {}) {
|
|
181
|
-
t = E(t);
|
|
182
|
-
let r = a(this, i, D).call(this, e), { instant: n, to: o } = e, u = ht({ queueItems: this.queue.getTypeable(), selector: t === null ? "" : t, to: o, cursorPosition: d(this, i, k) }), l = u < 0 ? -1 : 1;
|
|
183
|
-
return this.predictedCursorPosition = d(this, i, k) + u, a(this, i, w).call(this, [r[0], ...$({ func: () => a(this, i, V).call(this, l), delay: n ? 0 : a(this, i, C).call(this), cursorable: !0 }, Math.abs(u)), r[1]], e);
|
|
184
|
-
}
|
|
185
|
-
exec(t, e = {}) {
|
|
186
|
-
let r = a(this, i, D).call(this, e);
|
|
187
|
-
return a(this, i, w).call(this, [r[0], { func: () => t(this) }, r[1]], e);
|
|
188
|
-
}
|
|
189
|
-
options(t, e = {}) {
|
|
190
|
-
return t = E(t), a(this, i, L).call(this, t), a(this, i, w).call(this, {}, e);
|
|
191
|
-
}
|
|
192
|
-
pause(t, e = {}) {
|
|
193
|
-
return a(this, i, w).call(this, { delay: E(t) }, e);
|
|
194
|
-
}
|
|
195
|
-
delete(t = null, e = {}) {
|
|
196
|
-
t = E(t);
|
|
197
|
-
let r = a(this, i, D).call(this, e), n = t, { instant: o, to: u } = e, l = this.queue.getTypeable(), h = n === null ? l.length : bt(n) ? n : ht({ queueItems: l, selector: n, cursorPosition: d(this, i, k), to: u });
|
|
198
|
-
return a(this, i, w).call(this, [r[0], ...$({ func: a(this, i, x).bind(this), delay: o ? 0 : a(this, i, C).call(this, 1), deletable: !0 }, h), r[1]], e);
|
|
199
|
-
}
|
|
200
|
-
freeze() {
|
|
201
|
-
this.statuses.frozen = !0;
|
|
202
|
-
}
|
|
203
|
-
flush(t = null) {
|
|
204
|
-
return this.flushCallback = t || this.flushCallback, this.statuses.firing || (a(this, i, W).call(this), a(this, i, q).call(this, !1).then(() => {
|
|
205
|
-
if (this.queue.getPendingQueueItems().length > 0) return this.flush();
|
|
206
|
-
this.flushCallback(), this.flushCallback = null;
|
|
207
|
-
})), this;
|
|
208
|
-
}
|
|
209
|
-
getQueue() {
|
|
210
|
-
return this.queue;
|
|
211
|
-
}
|
|
212
|
-
getOptions() {
|
|
213
|
-
return this.opts;
|
|
214
|
-
}
|
|
215
|
-
updateOptions(t) {
|
|
216
|
-
return a(this, i, L).call(this, t);
|
|
217
|
-
}
|
|
218
|
-
getElement() {
|
|
219
|
-
return this.element;
|
|
220
|
-
}
|
|
221
|
-
empty(t = {}) {
|
|
222
|
-
return a(this, i, w).call(this, { func: a(this, i, It).bind(this) }, t);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
i = new WeakSet(), It = async function() {
|
|
226
|
-
a(this, i, H).call(this) ? this.element.value = "" : d(this, i, I).forEach(a(this, i, F).bind(this));
|
|
227
|
-
}, q = async function(t = !0) {
|
|
228
|
-
this.statuses.started = !0, this.statuses.firing = !0;
|
|
229
|
-
let e = (r) => {
|
|
230
|
-
this.queue.done(r, !t);
|
|
231
|
-
};
|
|
232
|
-
try {
|
|
233
|
-
let r = [...this.queue.getQueue()];
|
|
234
|
-
for (let o = 0; o < r.length; o++) {
|
|
235
|
-
let [u, l] = r[o];
|
|
236
|
-
if (!l.done) {
|
|
237
|
-
if (!l.deletable || l.deletable && d(this, i, I).length) {
|
|
238
|
-
let h = await a(this, i, X).call(this, o, r);
|
|
239
|
-
_t({ index: o, newIndex: h, queueItems: r, cleanUp: e }), o = h;
|
|
240
|
-
}
|
|
241
|
-
e(u);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
if (!t) return this.statuses.firing = !1, this;
|
|
245
|
-
if (this.statuses.completed = !0, this.statuses.firing = !1, await this.opts.afterComplete(this), !this.opts.loop) throw "";
|
|
246
|
-
let n = this.opts.loopDelay;
|
|
247
|
-
a(this, i, J).call(this, async () => {
|
|
248
|
-
await a(this, i, Ct).call(this, n[0]), a(this, i, q).call(this);
|
|
249
|
-
}, n[1]);
|
|
250
|
-
} catch {
|
|
251
|
-
}
|
|
252
|
-
return this.statuses.firing = !1, this;
|
|
253
|
-
}, V = async function(t) {
|
|
254
|
-
var e, r, n;
|
|
255
|
-
this.cursorPosition = (e = t, r = this.cursorPosition, n = d(this, i, I), Math.min(Math.max(r + e, 0), n.length)), ((o, u, l) => {
|
|
256
|
-
let h = u[l - 1], p = U(`.${P}`, o);
|
|
257
|
-
(o = (h == null ? void 0 : h.parentNode) || o).insertBefore(p, h || null);
|
|
258
|
-
})(this.element, d(this, i, I), this.cursorPosition);
|
|
259
|
-
}, Ct = async function(t) {
|
|
260
|
-
let e = d(this, i, k);
|
|
261
|
-
e && await a(this, i, V).call(this, { value: e });
|
|
262
|
-
let r = d(this, i, I).map((n) => [Symbol(), { func: a(this, i, x).bind(this), delay: a(this, i, C).call(this, 1), deletable: !0, shouldPauseCursor: () => !0 }]);
|
|
263
|
-
for (let n = 0; n < r.length; n++) await a(this, i, X).call(this, n, r);
|
|
264
|
-
this.queue.reset(), this.queue.set(0, { delay: t });
|
|
265
|
-
}, X = function(t, e) {
|
|
266
|
-
return Ht({ index: t, queueItems: e, wait: a(this, i, J).bind(this), cursor: this.cursor, cursorOptions: this.opts.cursor });
|
|
267
|
-
}, J = async function(t, e, r = !1) {
|
|
268
|
-
this.statuses.frozen && await new Promise((n) => {
|
|
269
|
-
this.unfreeze = () => {
|
|
270
|
-
this.statuses.frozen = !1, n();
|
|
271
|
-
};
|
|
272
|
-
}), r || await this.opts.beforeStep(this), await ((n, o, u) => new Promise((l) => {
|
|
273
|
-
u.push(setTimeout(async () => {
|
|
274
|
-
await n(), l();
|
|
275
|
-
}, o || 0));
|
|
276
|
-
}))(t, e, this.timeouts), r || await this.opts.afterStep(this);
|
|
277
|
-
}, W = async function() {
|
|
278
|
-
if (!a(this, i, H).call(this) && this.cursor && this.element.appendChild(this.cursor), d(this, i, K)) {
|
|
279
|
-
((n, o) => {
|
|
280
|
-
let u = `[${yt}='${n}'] .${P}`, l = getComputedStyle(o), h = Object.entries(zt).reduce((p, [c, y]) => `${p} ${c}: var(--ti-cursor-${c}, ${y || l[c]});`, "");
|
|
281
|
-
ot(`${u} { display: inline-block; width: 0; ${h} }`, n);
|
|
282
|
-
})(this.id, this.element), this.cursor.dataset.tiAnimationId = this.id;
|
|
283
|
-
let { animation: t } = this.opts.cursor, { frames: e, options: r } = t;
|
|
284
|
-
wt({ frames: e, cursor: this.cursor, options: { duration: this.opts.cursorSpeed, ...r } });
|
|
285
|
-
}
|
|
286
|
-
}, H = function() {
|
|
287
|
-
return O(this.element);
|
|
288
|
-
}, w = function(t, e) {
|
|
289
|
-
return this.queue.add(t), a(this, i, Pt).call(this, e), this;
|
|
290
|
-
}, Pt = function(t = {}) {
|
|
291
|
-
let e = t.delay;
|
|
292
|
-
e && this.queue.add({ delay: e });
|
|
293
|
-
}, D = function(t = {}) {
|
|
294
|
-
return [{ func: () => a(this, i, L).call(this, t) }, { func: () => a(this, i, L).call(this, this.opts) }];
|
|
295
|
-
}, L = async function(t) {
|
|
296
|
-
this.opts = N(this.opts, t);
|
|
297
|
-
}, Tt = function() {
|
|
298
|
-
let t = this.opts.strings.filter((e) => !!e);
|
|
299
|
-
t.forEach((e, r) => {
|
|
300
|
-
if (this.type(e), r + 1 === t.length) return;
|
|
301
|
-
let n = this.opts.breakLines ? [{ func: () => a(this, i, z).call(this, _("BR")), typeable: !0 }] : $({ func: a(this, i, x).bind(this), delay: a(this, i, C).call(this, 1) }, this.queue.getTypeable().length);
|
|
302
|
-
a(this, i, G).call(this, n);
|
|
303
|
-
});
|
|
304
|
-
}, B = new WeakMap(), vt = function(t) {
|
|
305
|
-
let e = this.element.innerHTML;
|
|
306
|
-
return e ? (this.element.innerHTML = "", this.opts.startDelete ? (this.element.innerHTML = e, Z(this.element), a(this, i, G).call(this, $({ func: a(this, i, x).bind(this), delay: a(this, i, C).call(this, 1), deletable: !0 }, d(this, i, I).length)), t) : (r = e, r.replace(/<!--(.+?)-->/g, "").trim().split(/<br(?:\s*?)(?:\/)?>/)).concat(t)) : t;
|
|
307
|
-
var r;
|
|
308
|
-
}, Et = function() {
|
|
309
|
-
if (d(this, i, M)) return null;
|
|
310
|
-
let t = _("span");
|
|
311
|
-
return t.className = P, d(this, i, K) ? (t.innerHTML = ft(this.opts.cursorChar).innerHTML, t) : (t.style.visibility = "hidden", t);
|
|
312
|
-
}, G = function(t) {
|
|
313
|
-
let e = this.opts.nextStringDelay;
|
|
314
|
-
this.queue.add([{ delay: e[0] }, ...t, { delay: e[1] }]);
|
|
315
|
-
}, z = function(t) {
|
|
316
|
-
((e, r) => {
|
|
317
|
-
if (O(e)) return void (e.value = `${e.value}${r.textContent}`);
|
|
318
|
-
r.innerHTML = "";
|
|
319
|
-
let n = (o = r.originalParent, /body/i.test(o == null ? void 0 : o.tagName) ? e : r.originalParent || e);
|
|
320
|
-
var o;
|
|
321
|
-
let u = U("." + P, n) || null;
|
|
322
|
-
u && u.parentElement !== n && (n = u.parentElement), n.insertBefore(r, u);
|
|
323
|
-
})(this.element, t);
|
|
324
|
-
}, x = function() {
|
|
325
|
-
d(this, i, I).length && (d(this, i, M) ? this.element.value = this.element.value.slice(0, -1) : a(this, i, F).call(this, d(this, i, I)[this.cursorPosition]));
|
|
326
|
-
}, F = function(t) {
|
|
327
|
-
((e, r) => {
|
|
328
|
-
if (!e) return;
|
|
329
|
-
let n = e.parentNode;
|
|
330
|
-
(n.childNodes.length > 1 || n.isSameNode(r) ? e : n).remove();
|
|
331
|
-
})(t, this.element);
|
|
332
|
-
}, C = function(t = 0) {
|
|
333
|
-
return function(e) {
|
|
334
|
-
let { speed: r, deleteSpeed: n, lifeLike: o } = e;
|
|
335
|
-
return n = n !== null ? n : r / 3, o ? [ut(r, lt(r)), ut(n, lt(n))] : [r, n];
|
|
336
|
-
}(this.opts)[t];
|
|
337
|
-
}, k = function() {
|
|
338
|
-
return this.predictedCursorPosition ?? this.cursorPosition;
|
|
339
|
-
}, M = function() {
|
|
340
|
-
return O(this.element);
|
|
341
|
-
}, K = function() {
|
|
342
|
-
return !!this.opts.cursor && !d(this, i, M);
|
|
343
|
-
}, I = function() {
|
|
344
|
-
return t = this.element, O(t) ? mt(t.value) : gt(t, !0).filter((e) => !(e.childNodes.length > 0));
|
|
345
|
-
var t;
|
|
346
|
-
};
|
|
347
|
-
var Rt = Object.defineProperty, Bt = Object.getOwnPropertyDescriptor, b = (s, t, e, r) => {
|
|
348
|
-
for (var n, o = r > 1 ? void 0 : r ? Bt(t, e) : t, u = s.length - 1; u >= 0; u--) (n = s[u]) && (o = (r ? n(t, e, o) : n(o)) || o);
|
|
349
|
-
return r && o && Rt(t, e, o), o;
|
|
350
|
-
};
|
|
351
|
-
let f = class extends qt(Dt`
|
|
352
|
-
:host {
|
|
353
|
-
display: inherit;
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
#typewriter {
|
|
357
|
-
--ti-cursor-display: initial;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
#typewriter .ti-cursor {
|
|
361
|
-
display: var(--ti-cursor-display);
|
|
362
|
-
}
|
|
363
|
-
`) {
|
|
364
|
-
constructor() {
|
|
365
|
-
super(...arguments), this.speed = 60, this.startDelay = 0, this.autoStart = !0, this.cursor = !0, this.cursorChar = "", this.deleteSpeed = 30, this.typeItInstance = null;
|
|
366
|
-
}
|
|
367
|
-
disconnectedCallback() {
|
|
368
|
-
super.disconnectedCallback(), this._destroyTypeIt();
|
|
369
|
-
}
|
|
370
|
-
_startTyping() {
|
|
371
|
-
var t;
|
|
372
|
-
if (this._destroyTypeIt(), !this.typewriterContainer) return;
|
|
373
|
-
const s = { speed: this.speed, startDelay: this.startDelay, cursor: this.cursor, cursorChar: this.cursorChar, deleteSpeed: this.deleteSpeed, afterComplete: () => {
|
|
374
|
-
this.dispatchEvent(new CustomEvent("typeit-complete", { bubbles: !0, composed: !0 })), this.typewriterContainer.style.setProperty("--ti-cursor-display", "none");
|
|
375
|
-
} };
|
|
376
|
-
this.typeItInstance = new Ft(this.typewriterContainer, s), this._getSlottedNodes.forEach((e) => {
|
|
377
|
-
var r;
|
|
378
|
-
e.nodeType === Node.TEXT_NODE ? (r = this.typeItInstance) == null || r.type(e.textContent || "") : e instanceof HTMLElement && this._processCustomElement(e);
|
|
379
|
-
}), this.autoStart && ((t = this.typeItInstance) == null || t.go());
|
|
380
|
-
}
|
|
381
|
-
_destroyTypeIt() {
|
|
382
|
-
if (this.typeItInstance) {
|
|
383
|
-
try {
|
|
384
|
-
this.typeItInstance.destroy();
|
|
385
|
-
} catch {
|
|
386
|
-
}
|
|
387
|
-
this.typeItInstance = null;
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
_processCustomElement(s) {
|
|
391
|
-
var r, n, o;
|
|
392
|
-
const t = s.getAttribute("action"), e = s.getAttribute("value");
|
|
393
|
-
switch (t) {
|
|
394
|
-
case "pause":
|
|
395
|
-
(r = this.typeItInstance) == null || r.pause(parseInt(e || "0", 10));
|
|
396
|
-
break;
|
|
397
|
-
case "delete":
|
|
398
|
-
(n = this.typeItInstance) == null || n.delete(parseInt(e || "0", 10));
|
|
399
|
-
break;
|
|
400
|
-
default:
|
|
401
|
-
s.tagName === "P" && this.typeItInstance.break(), (o = this.typeItInstance) == null || o.type(s.textContent || "");
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
render() {
|
|
405
|
-
return Lt`<div id="typewriter" aria-live="polite"></div>
|
|
406
|
-
|
|
407
|
-
<slot
|
|
408
|
-
hidden
|
|
409
|
-
@slotchange=${() => {
|
|
410
|
-
this._startTyping();
|
|
411
|
-
}}
|
|
412
|
-
></slot> `;
|
|
413
|
-
}
|
|
414
|
-
};
|
|
415
|
-
b([T({ type: Number })], f.prototype, "speed", 2), b([T({ type: Number })], f.prototype, "startDelay", 2), b([T({ type: Boolean })], f.prototype, "autoStart", 2), b([T({ type: Boolean })], f.prototype, "cursor", 2), b([T({ type: String })], f.prototype, "cursorChar", 2), b([T({ type: Number })], f.prototype, "deleteSpeed", 2), b([xt("#typewriter")], f.prototype, "typewriterContainer", 2), b([kt({ flatten: !0 })], f.prototype, "_getSlottedNodes", 2), f = b([Mt("schmancy-typewriter")], f);
|
|
416
|
-
export {
|
|
417
|
-
f as T
|
|
418
|
-
};
|
|
419
|
-
//# sourceMappingURL=typewriter-CM8Islpn.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typewriter-CM8Islpn.js","sources":["../node_modules/typeit/dist/index.es.js","../src/typewriter/typewriter.ts"],"sourcesContent":["// TypeIt by Alex MacArthur - https://typeitjs.com\nconst isArray = (thing) => Array.isArray(thing);\n\nconst asArray = (value) => isArray(value) ? value : [value];\n\nlet Queue = function(initialItems) {\n let add = function(steps) {\n asArray(steps).forEach((step) => {\n return _q.set(Symbol(step.char?.innerText), buildQueueItem({ ...step }));\n });\n return this;\n };\n let getTypeable = () => rawValues().filter((value) => value.typeable);\n let set = function(index, item) {\n let keys = [..._q.keys()];\n _q.set(keys[index], buildQueueItem(item));\n };\n let buildQueueItem = (queueItem) => {\n queueItem.shouldPauseCursor = function() {\n return Boolean(this.typeable || this.cursorable || this.deletable);\n };\n return queueItem;\n };\n let reset = function() {\n _q.forEach((item) => delete item.done);\n };\n let wipe = function() {\n _q = /* @__PURE__ */ new Map();\n add(initialItems);\n };\n let getQueue = () => _q;\n let rawValues = () => Array.from(_q.values());\n let destroy = (key) => _q.delete(key);\n let getPendingQueueItems = () => {\n const pending = [];\n for (let [, value] of getQueue()) {\n if (!value.done) {\n pending.push(value);\n }\n }\n return pending;\n };\n let getItems = (all = false) => all ? rawValues() : rawValues().filter((i) => !i.done);\n let done = (key, shouldDestroy = false) => shouldDestroy ? _q.delete(key) : _q.get(key).done = true;\n let _q = /* @__PURE__ */ new Map();\n add(initialItems);\n return {\n add,\n set,\n wipe,\n done,\n reset,\n destroy,\n getItems,\n getQueue,\n getTypeable,\n getPendingQueueItems\n };\n};\n\nconst DATA_ATTRIBUTE = \"data-typeit-id\";\nconst CURSOR_CLASS = \"ti-cursor\";\nconst END = \"END\";\nconst DEFAULT_STATUSES = {\n started: false,\n completed: false,\n frozen: false,\n destroyed: false\n};\nconst DEFAULT_OPTIONS = {\n breakLines: true,\n cursor: {\n autoPause: true,\n autoPauseDelay: 500,\n animation: {\n frames: [0, 0, 1].map((n) => {\n return { opacity: n };\n }),\n options: {\n iterations: Infinity,\n easing: \"steps(2, start)\",\n fill: \"forwards\"\n }\n }\n },\n cursorChar: \"|\",\n cursorSpeed: 1e3,\n deleteSpeed: null,\n html: true,\n lifeLike: true,\n loop: false,\n loopDelay: 750,\n nextStringDelay: 750,\n speed: 100,\n startDelay: 250,\n startDelete: false,\n strings: [],\n waitUntilVisible: false,\n beforeString: () => {\n },\n afterString: () => {\n },\n beforeStep: () => {\n },\n afterStep: () => {\n },\n afterComplete: () => {\n }\n};\nconst PLACEHOLDER_CSS = `[${DATA_ATTRIBUTE}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`;\n\nconst createElement = (el) => document.createElement(el);\n\nconst createTextNode = (content) => document.createTextNode(content);\n\nconst appendStyleBlock = (styles, id = \"\") => {\n let styleBlock = createElement(\"style\");\n styleBlock.id = id;\n styleBlock.appendChild(createTextNode(styles));\n document.head.appendChild(styleBlock);\n};\n\nconst calculateDelay = (delayArg) => {\n if (!isArray(delayArg)) {\n delayArg = [delayArg / 2, delayArg / 2];\n }\n return delayArg;\n};\n\nconst randomInRange = (value, range) => {\n return Math.abs(\n Math.random() * (value + range - (value - range)) + (value - range)\n );\n};\n\nlet range = (val) => val / 2;\nfunction calculatePace(options) {\n let { speed, deleteSpeed, lifeLike } = options;\n deleteSpeed = deleteSpeed !== null ? deleteSpeed : speed / 3;\n return lifeLike ? [\n randomInRange(speed, range(speed)),\n randomInRange(deleteSpeed, range(deleteSpeed))\n ] : [speed, deleteSpeed];\n}\n\nconst toArray = (val) => Array.from(val);\n\nlet expandTextNodes = (element) => {\n [...element.childNodes].forEach((child) => {\n if (child.nodeValue) {\n [...child.nodeValue].forEach((c) => {\n child.parentNode.insertBefore(createTextNode(c), child);\n });\n child.remove();\n return;\n }\n expandTextNodes(child);\n });\n return element;\n};\n\nconst getParsedBody = (content) => {\n let doc = document.implementation.createHTMLDocument();\n doc.body.innerHTML = content;\n return expandTextNodes(doc.body);\n};\n\nfunction walkElementNodes(element, shouldReverse = false, shouldIncludeCursor = false) {\n let cursor = element.querySelector(`.${CURSOR_CLASS}`);\n let walker = document.createTreeWalker(element, NodeFilter.SHOW_ALL, {\n acceptNode: (node) => {\n if (cursor && shouldIncludeCursor) {\n if (node.classList?.contains(CURSOR_CLASS)) {\n return NodeFilter.FILTER_ACCEPT;\n }\n if (cursor.contains(node)) {\n return NodeFilter.FILTER_REJECT;\n }\n }\n return node.classList?.contains(CURSOR_CLASS) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n }\n });\n let nextNode;\n let nodes = [];\n while (nextNode = walker.nextNode()) {\n if (!nextNode.originalParent) {\n nextNode.originalParent = nextNode.parentNode;\n }\n nodes.push(nextNode);\n }\n return shouldReverse ? nodes.reverse() : nodes;\n}\nfunction chunkStringAsHtml(string) {\n return walkElementNodes(getParsedBody(string));\n}\nfunction maybeChunkStringAsHtml(str, asHtml = true) {\n return asHtml ? chunkStringAsHtml(str) : toArray(str).map(createTextNode);\n}\n\nconst cleanUpSkipped = ({\n index,\n newIndex,\n queueItems,\n cleanUp\n}) => {\n for (let i = index + 1; i < newIndex + 1; i++) {\n cleanUp(queueItems[i][0]);\n }\n};\n\nconst isNumber = (value) => Number.isInteger(value);\n\nconst countStepsToSelector = ({\n queueItems,\n selector,\n cursorPosition,\n to\n}) => {\n if (isNumber(selector)) {\n return selector * -1;\n }\n let isMovingToEnd = new RegExp(END, \"i\").test(to);\n let selectorIndex = selector ? [...queueItems].reverse().findIndex(({ char }) => {\n let parentElement = char.parentElement;\n let parentMatches = parentElement.matches(selector);\n if (isMovingToEnd && parentMatches) {\n return true;\n }\n return parentMatches && parentElement.firstChild.isSameNode(char);\n }) : -1;\n if (selectorIndex < 0) {\n selectorIndex = isMovingToEnd ? 0 : queueItems.length - 1;\n }\n let offset = isMovingToEnd ? 0 : 1;\n return selectorIndex - cursorPosition + offset;\n};\n\nconst destroyTimeouts = (timeouts) => {\n timeouts.forEach(clearTimeout);\n return [];\n};\n\nconst duplicate = (value, times) => new Array(times).fill(value);\n\nlet beforePaint = (cb) => {\n return new Promise((resolve) => {\n requestAnimationFrame(async () => {\n resolve(await cb());\n });\n });\n};\n\nlet getAnimationFromElement = (element) => {\n return element?.getAnimations().find((animation) => {\n return animation.id === element.dataset.tiAnimationId;\n });\n};\n\nlet setCursorAnimation = ({\n cursor,\n frames,\n options\n}) => {\n let animation = cursor.animate(frames, options);\n animation.pause();\n animation.id = cursor.dataset.tiAnimationId;\n beforePaint(() => {\n beforePaint(() => {\n animation.play();\n });\n });\n return animation;\n};\n\nlet rebuildCursorAnimation = ({\n cursor,\n options,\n cursorOptions\n}) => {\n if (!cursor || !cursorOptions) return;\n let animation = getAnimationFromElement(cursor);\n let oldCurrentTime;\n if (animation) {\n options.delay = animation.effect.getComputedTiming().delay;\n oldCurrentTime = animation.currentTime;\n animation.cancel();\n }\n let newAnimation = setCursorAnimation({\n cursor,\n frames: cursorOptions.animation.frames,\n options\n });\n if (oldCurrentTime) {\n newAnimation.currentTime = oldCurrentTime;\n }\n return newAnimation;\n};\n\nlet execute = (queueItem) => queueItem.func?.call(null);\nlet fireItem = async ({\n index,\n queueItems,\n wait,\n cursor,\n cursorOptions\n}) => {\n let queueItem = queueItems[index][1];\n let instantQueue = [];\n let tempIndex = index;\n let futureItem = queueItem;\n let shouldBeGrouped = () => futureItem && !futureItem.delay;\n let shouldPauseCursor = queueItem.shouldPauseCursor() && cursorOptions.autoPause;\n while (shouldBeGrouped()) {\n instantQueue.push(futureItem);\n shouldBeGrouped() && tempIndex++;\n futureItem = queueItems[tempIndex] ? queueItems[tempIndex][1] : null;\n }\n if (instantQueue.length) {\n await beforePaint(async () => {\n for (let q of instantQueue) {\n await execute(q);\n }\n });\n return tempIndex - 1;\n }\n let animation = getAnimationFromElement(cursor);\n let options;\n if (animation) {\n options = {\n ...animation.effect.getComputedTiming(),\n delay: shouldPauseCursor ? cursorOptions.autoPauseDelay : 0\n };\n }\n await wait(async () => {\n if (animation && shouldPauseCursor) {\n animation.cancel();\n }\n await beforePaint(() => {\n execute(queueItem);\n });\n }, queueItem.delay);\n await rebuildCursorAnimation({\n cursor,\n options,\n cursorOptions\n });\n return index;\n};\n\nconst fireWhenVisible = (element, func) => {\n let observer = new IntersectionObserver(\n (entries, observer2) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n func();\n observer2.unobserve(element);\n }\n });\n },\n { threshold: 1 }\n );\n observer.observe(element);\n};\n\nconst generateHash = () => Math.random().toString().substring(2, 9);\n\nconst isInput = (el) => {\n return \"value\" in el;\n};\n\nlet getAllChars = (element) => {\n if (isInput(element)) {\n return toArray(element.value);\n }\n return walkElementNodes(element, true).filter(\n (c) => !(c.childNodes.length > 0)\n );\n};\n\nlet handleFunctionalArg = (arg) => {\n return typeof arg === \"function\" ? arg() : arg;\n};\n\nlet select = (selector, element = document, all = false) => {\n return element[`querySelector${all ? \"All\" : \"\"}`](selector);\n};\n\nlet isBodyElement = (node) => /body/i.test(node?.tagName);\n\nlet insertIntoElement = (originalTarget, character) => {\n if (isInput(originalTarget)) {\n originalTarget.value = `${originalTarget.value}${character.textContent}`;\n return;\n }\n character.innerHTML = \"\";\n let target = isBodyElement(character.originalParent) ? originalTarget : (\n // If we add one-off fresh elements, there will be no\n // \"originalParent\", so always fall back to the default target.\n character.originalParent || originalTarget\n );\n let cursorNode = select(\".\" + CURSOR_CLASS, target) || null;\n if (cursorNode && cursorNode.parentElement !== target) {\n target = cursorNode.parentElement;\n }\n target.insertBefore(character, cursorNode);\n};\n\nconst isNonVoidElement = (el) => /<(.+)>(.*?)<\\/(.+)>/.test(el.outerHTML);\n\nconst merge = (originalObj, newObj) => Object.assign({}, originalObj, newObj);\n\nlet processCursorOptions = (cursorOptions) => {\n if (typeof cursorOptions === \"object\") {\n let newOptions = {};\n let { frames: defaultFrames, options: defaultOptions } = DEFAULT_OPTIONS.cursor.animation;\n newOptions.animation = cursorOptions.animation || {};\n newOptions.animation.frames = cursorOptions.animation?.frames || defaultFrames;\n newOptions.animation.options = merge(\n defaultOptions,\n cursorOptions.animation?.options || {}\n );\n newOptions.autoPause = cursorOptions.autoPause ?? DEFAULT_OPTIONS.cursor.autoPause;\n newOptions.autoPauseDelay = cursorOptions.autoPauseDelay || DEFAULT_OPTIONS.cursor.autoPauseDelay;\n return newOptions;\n }\n if (cursorOptions === true) {\n return DEFAULT_OPTIONS.cursor;\n }\n return cursorOptions;\n};\n\nconst removeNode = (node, rootElement) => {\n if (!node) return;\n let nodeParent = node.parentNode;\n let nodeToRemove = nodeParent.childNodes.length > 1 || nodeParent.isSameNode(rootElement) ? (\n // This parent still needs to exist.\n node\n ) : (\n // There's nothing else in there, so just delete the entire thing.\n // By doing this, we clean up markup as we go along.\n nodeParent\n );\n nodeToRemove.remove();\n};\n\nconst repositionCursor = (element, allChars, newCursorPosition) => {\n let nodeToInsertBefore = allChars[newCursorPosition - 1];\n let cursor = select(`.${CURSOR_CLASS}`, element);\n element = nodeToInsertBefore?.parentNode || element;\n element.insertBefore(cursor, nodeToInsertBefore || null);\n};\n\nfunction selectorToElement(thing) {\n return typeof thing === \"string\" ? select(thing) : thing;\n}\n\nlet cursorFontStyles = {\n \"font-family\": \"\",\n \"font-weight\": \"\",\n \"font-size\": \"\",\n \"font-style\": \"\",\n \"line-height\": \"\",\n color: \"\",\n transform: \"translateX(-.125em)\"\n};\nlet setCursorStyles = (id, element) => {\n let rootSelector = `[${DATA_ATTRIBUTE}='${id}']`;\n let cursorSelector = `${rootSelector} .${CURSOR_CLASS}`;\n let computedStyles = getComputedStyle(element);\n let customProperties = Object.entries(cursorFontStyles).reduce(\n (accumulator, [item, value]) => {\n return `${accumulator} ${item}: var(--ti-cursor-${item}, ${value || computedStyles[item]});`;\n },\n \"\"\n );\n appendStyleBlock(\n `${cursorSelector} { display: inline-block; width: 0; ${customProperties} }`,\n id\n );\n};\n\nfunction splitOnBreak(str) {\n return str.replace(/<!--(.+?)-->/g, \"\").trim().split(/<br(?:\\s*?)(?:\\/)?>/);\n}\n\nlet updateCursorPosition = (steps, cursorPosition, printedCharacters) => {\n return Math.min(\n Math.max(cursorPosition + steps, 0),\n printedCharacters.length\n );\n};\n\nlet wait = (callback, delay, timeouts) => {\n return new Promise((resolve) => {\n let cb = async () => {\n await callback();\n resolve();\n };\n timeouts.push(setTimeout(cb, delay || 0));\n });\n};\n\nclass TypeIt {\n element;\n timeouts;\n cursorPosition;\n predictedCursorPosition;\n statuses = {\n started: false,\n completed: false,\n frozen: false,\n destroyed: false,\n firing: false\n };\n opts;\n id;\n queue;\n cursor;\n flushCallback = null;\n unfreeze = () => {\n };\n constructor(element, options = {}) {\n this.opts = merge(DEFAULT_OPTIONS, options);\n this.element = selectorToElement(element);\n this.timeouts = [];\n this.cursorPosition = 0;\n this.unfreeze = () => {\n };\n this.predictedCursorPosition = null;\n this.statuses = merge({}, DEFAULT_STATUSES);\n this.id = generateHash();\n this.queue = Queue([{ delay: this.opts.startDelay }]);\n this.#buildOptions(options);\n this.cursor = this.#setUpCursor();\n this.element.dataset.typeitId = this.id;\n appendStyleBlock(PLACEHOLDER_CSS);\n if (this.opts.strings.length) {\n this.#generateQueue();\n }\n }\n /**\n * Can only be called once.\n */\n go() {\n if (this.statuses.started) {\n return this;\n }\n this.#attachCursor();\n if (!this.opts.waitUntilVisible) {\n this.#fire();\n return this;\n }\n fireWhenVisible(this.element, this.#fire.bind(this));\n return this;\n }\n destroy(shouldRemoveCursor = true) {\n this.timeouts = destroyTimeouts(this.timeouts);\n handleFunctionalArg(shouldRemoveCursor) && this.cursor && this.#removeNode(this.cursor);\n this.statuses.destroyed = true;\n }\n reset(rebuild) {\n !this.is(\"destroyed\") && this.destroy();\n if (rebuild) {\n this.queue.wipe();\n rebuild(this);\n } else {\n this.queue.reset();\n }\n this.cursorPosition = 0;\n for (let property in this.statuses) {\n this.statuses[property] = false;\n }\n this.element[this.#elementIsInput() ? \"value\" : \"innerHTML\"] = \"\";\n return this;\n }\n is = function(key) {\n return this.statuses[key];\n };\n type(string, actionOpts = {}) {\n string = handleFunctionalArg(string);\n let { instant } = actionOpts;\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let chars = maybeChunkStringAsHtml(string, this.opts.html);\n let charsAsQueueItems = chars.map((char) => {\n return {\n func: () => this.#type(char),\n char,\n delay: instant || isNonVoidElement(char) ? 0 : this.#getPace(),\n typeable: char.nodeType === Node.TEXT_NODE\n };\n });\n let itemsToQueue = [\n bookEndQueueItems[0],\n { func: async () => await this.opts.beforeString(string, this) },\n ...charsAsQueueItems,\n { func: async () => await this.opts.afterString(string, this) },\n bookEndQueueItems[1]\n ];\n return this.#queueAndReturn(itemsToQueue, actionOpts);\n }\n break(actionOpts = {}) {\n return this.#queueAndReturn(\n {\n func: () => this.#type(createElement(\"BR\")),\n typeable: true\n },\n actionOpts\n );\n }\n move(movementArg, actionOpts = {}) {\n movementArg = handleFunctionalArg(movementArg);\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let { instant, to } = actionOpts;\n let numberOfSteps = countStepsToSelector({\n queueItems: this.queue.getTypeable(),\n selector: movementArg === null ? \"\" : movementArg,\n to,\n cursorPosition: this.#derivedCursorPosition\n });\n let directionalStep = numberOfSteps < 0 ? -1 : 1;\n this.predictedCursorPosition = this.#derivedCursorPosition + numberOfSteps;\n return this.#queueAndReturn(\n [\n bookEndQueueItems[0],\n ...duplicate(\n {\n func: () => this.#move(directionalStep),\n delay: instant ? 0 : this.#getPace(),\n cursorable: true\n },\n Math.abs(numberOfSteps)\n ),\n bookEndQueueItems[1]\n ],\n actionOpts\n );\n }\n exec(func, actionOpts = {}) {\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n return this.#queueAndReturn(\n [bookEndQueueItems[0], { func: () => func(this) }, bookEndQueueItems[1]],\n actionOpts\n );\n }\n options(opts, actionOpts = {}) {\n opts = handleFunctionalArg(opts);\n this.#updateOptions(opts);\n return this.#queueAndReturn({}, actionOpts);\n }\n pause(milliseconds, actionOpts = {}) {\n return this.#queueAndReturn(\n { delay: handleFunctionalArg(milliseconds) },\n actionOpts\n );\n }\n delete(numCharacters = null, actionOpts = {}) {\n numCharacters = handleFunctionalArg(numCharacters);\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let num = numCharacters;\n let { instant, to } = actionOpts;\n let typeableQueueItems = this.queue.getTypeable();\n let rounds = (() => {\n if (num === null) {\n return typeableQueueItems.length;\n }\n if (isNumber(num)) {\n return num;\n }\n return countStepsToSelector({\n queueItems: typeableQueueItems,\n selector: num,\n cursorPosition: this.#derivedCursorPosition,\n to\n });\n })();\n return this.#queueAndReturn(\n [\n bookEndQueueItems[0],\n ...duplicate(\n {\n func: this.#delete.bind(this),\n delay: instant ? 0 : this.#getPace(1),\n deletable: true\n },\n rounds\n ),\n bookEndQueueItems[1]\n ],\n actionOpts\n );\n }\n freeze() {\n this.statuses.frozen = true;\n }\n /**\n * Like `.go()`, but more... \"off the grid.\"\n *\n * - won't trigger `afterComplete` callback\n * - items won't be replayed after `.reset()`\n *\n * When called, all non-done items will be \"flushed\" --\n * that is, executed, but not remembered.\n */\n flush(cb = null) {\n this.flushCallback = cb || this.flushCallback;\n if (this.statuses.firing) {\n return this;\n }\n this.#attachCursor();\n this.#fire(false).then(() => {\n if (this.queue.getPendingQueueItems().length > 0) {\n return this.flush();\n }\n this.flushCallback();\n this.flushCallback = null;\n });\n return this;\n }\n getQueue() {\n return this.queue;\n }\n getOptions() {\n return this.opts;\n }\n updateOptions(options) {\n return this.#updateOptions(options);\n }\n getElement() {\n return this.element;\n }\n empty(actionOpts = {}) {\n return this.#queueAndReturn({ func: this.#empty.bind(this) }, actionOpts);\n }\n async #empty() {\n if (this.#elementIsInput()) {\n this.element.value = \"\";\n return;\n }\n this.#allChars.forEach(this.#removeNode.bind(this));\n return;\n }\n /**\n * Execute items in the queue.\n *\n * @param remember If false, each queue item will be destroyed once executed.\n * @returns\n */\n async #fire(remember = true) {\n this.statuses.started = true;\n this.statuses.firing = true;\n let cleanUp = (qKey) => {\n this.queue.done(qKey, !remember);\n };\n try {\n let queueItems = [...this.queue.getQueue()];\n for (let index = 0; index < queueItems.length; index++) {\n let [queueKey, queueItem] = queueItems[index];\n if (queueItem.done) continue;\n if (!queueItem.deletable || queueItem.deletable && this.#allChars.length) {\n let newIndex = await this.#fireItemWithContext(index, queueItems);\n cleanUpSkipped({\n index,\n newIndex,\n queueItems,\n cleanUp\n });\n index = newIndex;\n }\n cleanUp(queueKey);\n }\n if (!remember) {\n this.statuses.firing = false;\n return this;\n }\n this.statuses.completed = true;\n this.statuses.firing = false;\n await this.opts.afterComplete(this);\n if (!this.opts.loop) {\n throw \"\";\n }\n let delay = this.opts.loopDelay;\n this.#wait(async () => {\n await this.#prepLoop(delay[0]);\n this.#fire();\n }, delay[1]);\n } catch (e) {\n }\n this.statuses.firing = false;\n return this;\n }\n async #move(step) {\n this.cursorPosition = updateCursorPosition(\n step,\n this.cursorPosition,\n this.#allChars\n );\n repositionCursor(this.element, this.#allChars, this.cursorPosition);\n }\n /**\n * 1. Reset queue.\n * 2. Reset initial pause.\n */\n async #prepLoop(delay) {\n let derivedCursorPosition = this.#derivedCursorPosition;\n derivedCursorPosition && await this.#move({ value: derivedCursorPosition });\n let queueItems = this.#allChars.map((c) => {\n return [\n Symbol(),\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1),\n deletable: true,\n shouldPauseCursor: () => true\n }\n ];\n });\n for (let index = 0; index < queueItems.length; index++) {\n await this.#fireItemWithContext(index, queueItems);\n }\n this.queue.reset();\n this.queue.set(0, { delay });\n }\n #fireItemWithContext(index, queueItems) {\n return fireItem({\n index,\n queueItems,\n wait: this.#wait.bind(this),\n cursor: this.cursor,\n cursorOptions: this.opts.cursor\n });\n }\n async #wait(callback, delay, silent = false) {\n if (this.statuses.frozen) {\n await new Promise((resolve) => {\n this.unfreeze = () => {\n this.statuses.frozen = false;\n resolve();\n };\n });\n }\n silent || await this.opts.beforeStep(this);\n await wait(callback, delay, this.timeouts);\n silent || await this.opts.afterStep(this);\n }\n /**\n * Attach it to the DOM so, along with the required CSS transition.\n */\n async #attachCursor() {\n !this.#elementIsInput() && this.cursor && this.element.appendChild(this.cursor);\n if (this.#shouldRenderCursor) {\n setCursorStyles(this.id, this.element);\n this.cursor.dataset.tiAnimationId = this.id;\n let { animation } = this.opts.cursor;\n let { frames, options } = animation;\n setCursorAnimation({\n frames,\n cursor: this.cursor,\n options: {\n duration: this.opts.cursorSpeed,\n ...options\n }\n });\n }\n }\n #elementIsInput() {\n return isInput(this.element);\n }\n #queueAndReturn(steps, opts) {\n this.queue.add(steps);\n this.#maybeAppendPause(opts);\n return this;\n }\n #maybeAppendPause(opts = {}) {\n let delay = opts.delay;\n delay && this.queue.add({ delay });\n }\n #generateTemporaryOptionQueueItems(newOptions = {}) {\n return [\n { func: () => this.#updateOptions(newOptions) },\n { func: () => this.#updateOptions(this.opts) }\n ];\n }\n async #updateOptions(opts) {\n this.opts = merge(this.opts, opts);\n }\n /**\n * Based on provided strings, generate a TypeIt queue\n * to be fired for each character in the string.\n */\n #generateQueue() {\n let strings = this.opts.strings.filter((string) => !!string);\n strings.forEach((string, index) => {\n this.type(string);\n if (index + 1 === strings.length) {\n return;\n }\n let splitItems = this.opts.breakLines ? [{ func: () => this.#type(createElement(\"BR\")), typeable: true }] : duplicate(\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1)\n },\n this.queue.getTypeable().length\n );\n this.#addSplitPause(splitItems);\n });\n }\n #buildOptions = (options) => {\n this.opts.cursor = processCursorOptions(\n options.cursor ?? DEFAULT_OPTIONS.cursor\n );\n this.opts.strings = this.#prependHardcodedStrings(\n asArray(this.opts.strings)\n );\n this.opts = merge(this.opts, {\n html: !this.#isInput && this.opts.html,\n nextStringDelay: calculateDelay(this.opts.nextStringDelay),\n loopDelay: calculateDelay(this.opts.loopDelay)\n });\n };\n #prependHardcodedStrings(strings) {\n let existingMarkup = this.element.innerHTML;\n if (!existingMarkup) {\n return strings;\n }\n this.element.innerHTML = \"\";\n if (this.opts.startDelete) {\n this.element.innerHTML = existingMarkup;\n expandTextNodes(this.element);\n this.#addSplitPause(\n duplicate(\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1),\n deletable: true\n },\n this.#allChars.length\n )\n );\n return strings;\n }\n return splitOnBreak(existingMarkup).concat(strings);\n }\n /**\n * Provided it's a non-form element and the options is provided,\n * set up the cursor element for the animation.\n */\n #setUpCursor() {\n if (this.#isInput) {\n return null;\n }\n let cursor = createElement(\"span\");\n cursor.className = CURSOR_CLASS;\n if (!this.#shouldRenderCursor) {\n cursor.style.visibility = \"hidden\";\n return cursor;\n }\n cursor.innerHTML = getParsedBody(this.opts.cursorChar).innerHTML;\n return cursor;\n }\n #addSplitPause(items) {\n let delay = this.opts.nextStringDelay;\n this.queue.add([{ delay: delay[0] }, ...items, { delay: delay[1] }]);\n }\n #type(char) {\n insertIntoElement(this.element, char);\n }\n #delete() {\n if (!this.#allChars.length) return;\n if (this.#isInput) {\n this.element.value = this.element.value.slice(0, -1);\n } else {\n this.#removeNode(this.#allChars[this.cursorPosition]);\n }\n }\n #removeNode(node) {\n removeNode(node, this.element);\n }\n #getPace(index = 0) {\n return calculatePace(this.opts)[index];\n }\n get #derivedCursorPosition() {\n return this.predictedCursorPosition ?? this.cursorPosition;\n }\n get #isInput() {\n return isInput(this.element);\n }\n get #shouldRenderCursor() {\n return !!this.opts.cursor && !this.#isInput;\n }\n get #allChars() {\n return getAllChars(this.element);\n }\n}\n\nexport { TypeIt as default };\n","import { $LitElement } from '@mixins/index'\nimport { css, html, TemplateResult } from 'lit'\nimport { customElement, property, query, queryAssignedNodes } from 'lit/decorators.js'\nimport TypeIt, { Options as TypeItOptions } from 'typeit'\n\n@customElement('schmancy-typewriter')\nexport class TypewriterElement extends $LitElement(css`\n\t:host {\n\t\tdisplay: inherit;\n\t}\n\n\t#typewriter {\n\t\t--ti-cursor-display: initial;\n\t}\n\n\t#typewriter .ti-cursor {\n\t\tdisplay: var(--ti-cursor-display);\n\t}\n`) {\n\t/**\n\t * Typing speed in milliseconds per character.\n\t */\n\t@property({ type: Number })\n\tspeed: number = 60\n\n\t/**\n\t * Delay before typing starts (ms).\n\t */\n\t@property({ type: Number })\n\tstartDelay: number = 0\n\n\t/**\n\t * Automatically start typing on initialization.\n\t */\n\t@property({ type: Boolean })\n\tautoStart: boolean = true\n\n\t/**\n\t * Whether to show the cursor.\n\t */\n\t@property({ type: Boolean })\n\tcursor: boolean = true\n\n\t/**\n\t * The cursor character.\n\t */\n\t@property({ type: String })\n\tcursorChar: string = ''\n\n\t/**\n\t * Typing speed for deletions (ms per character).\n\t */\n\t@property({ type: Number })\n\tdeleteSpeed: number = 30\n\n\t/**\n\t * TypeIt instance.\n\t */\n\tprivate typeItInstance: TypeIt | null = null\n\n\t/**\n\t * Reference to the typewriter container.\n\t */\n\t@query('#typewriter')\n\tprivate typewriterContainer!: HTMLElement\n\n\t@queryAssignedNodes({\n\t\tflatten: true,\n\t})\n\tprivate _getSlottedNodes!: Node[]\n\t/**\n\t * Lifecycle method called when the component is disconnected from the DOM.\n\t * Ensures that TypeIt instances are properly cleaned up.\n\t */\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._destroyTypeIt()\n\t}\n\n\t/**\n\t * Initializes the TypeIt instance with the provided slotted content.\n\t */\n\tprivate _startTyping() {\n\t\t// Destroy any existing TypeIt instance\n\t\tthis._destroyTypeIt()\n\n\t\tif (!this.typewriterContainer) {\n\t\t\tconsole.warn('Typewriter container not found.')\n\t\t\treturn\n\t\t}\n\n\t\t// Configure TypeIt options\n\t\tconst typeItOptions: TypeItOptions = {\n\t\t\tspeed: this.speed,\n\t\t\tstartDelay: this.startDelay,\n\t\t\tcursor: this.cursor,\n\t\t\tcursorChar: this.cursorChar,\n\t\t\tdeleteSpeed: this.deleteSpeed,\n\t\t\tafterComplete: () => {\n\t\t\t\t// Dispatch the custom event\n\t\t\t\tthis.dispatchEvent(new CustomEvent('typeit-complete', { bubbles: true, composed: true }))\n\n\t\t\t\t// Hide the cursor\n\t\t\t\tthis.typewriterContainer.style.setProperty('--ti-cursor-display', 'none')\n\t\t\t},\n\t\t}\n\n\t\t// Initialize TypeIt\n\t\tthis.typeItInstance = new TypeIt(this.typewriterContainer, typeItOptions)\n\n\t\t// Process slotted content as actions\n\t\tconst slottedNodes = this._getSlottedNodes\n\t\tslottedNodes.forEach(node => {\n\t\t\tif (node.nodeType === Node.TEXT_NODE) {\n\t\t\t\t// Handle plain text\n\t\t\t\tthis.typeItInstance?.type(node.textContent || '')\n\t\t\t} else if (node instanceof HTMLElement) {\n\t\t\t\t// Handle custom element\n\t\t\t\tthis._processCustomElement(node)\n\t\t\t}\n\t\t})\n\n\t\t// Start the typing animation if autoStart is enabled\n\t\tif (this.autoStart) {\n\t\t\tthis.typeItInstance?.go()\n\t\t}\n\t}\n\n\t/**\n\t * Destroys the current TypeIt instance if it exists.\n\t */\n\tprivate _destroyTypeIt() {\n\t\tif (this.typeItInstance) {\n\t\t\ttry {\n\t\t\t\tthis.typeItInstance.destroy()\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error destroying TypeIt instance:', error)\n\t\t\t}\n\t\t\tthis.typeItInstance = null\n\t\t}\n\t}\n\n\t/**\n\t * Processes a custom element for its typing behavior.\n\t */\n\tprivate _processCustomElement(element: HTMLElement) {\n\t\tconst action = element.getAttribute('action')\n\t\tconst value = element.getAttribute('value')\n\t\tswitch (action) {\n\t\t\tcase 'pause':\n\t\t\t\tthis.typeItInstance?.pause(parseInt(value || '0', 10))\n\t\t\t\tbreak\n\t\t\tcase 'delete':\n\t\t\t\tthis.typeItInstance?.delete(parseInt(value || '0', 10))\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (element.tagName === 'P') {\n\t\t\t\t\tthis.typeItInstance.break()\n\t\t\t\t}\n\t\t\t\t// Treat as text if no action is defined\n\t\t\t\tthis.typeItInstance?.type(element.textContent || '')\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Renders the component's HTML.\n\t */\n\trender(): TemplateResult {\n\t\treturn html`<div id=\"typewriter\" aria-live=\"polite\"></div>\n\n\t\t\t<slot\n\t\t\t\thidden\n\t\t\t\t@slotchange=${() => {\n\t\t\t\t\tthis._startTyping()\n\t\t\t\t}}\n\t\t\t></slot> `\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-typewriter': TypewriterElement\n\t}\n}\n"],"names":["isArray","thing","Array","asArray","value","DATA_ATTRIBUTE","CURSOR_CLASS","DEFAULT_STATUSES","started","completed","frozen","destroyed","DEFAULT_OPTIONS","breakLines","cursor","autoPause","autoPauseDelay","animation","frames","map","n","opacity","options","iterations","Infinity","easing","fill","cursorChar","cursorSpeed","deleteSpeed","html","lifeLike","loop","loopDelay","nextStringDelay","speed","startDelay","startDelete","strings","waitUntilVisible","beforeString","afterString","beforeStep","afterStep","afterComplete","PLACEHOLDER_CSS","createElement","el","document","createTextNode","content","appendStyleBlock","styles","id","styleBlock","appendChild","head","calculateDelay","delayArg","randomInRange","range","Math","abs","random","val","toArray","from","expandTextNodes","element","childNodes","forEach","child","nodeValue","c","parentNode","insertBefore","remove","getParsedBody","doc","implementation","createHTMLDocument","body","innerHTML","walkElementNodes","shouldReverse","shouldIncludeCursor","nextNode","querySelector","walker","createTreeWalker","NodeFilter","SHOW_ALL","acceptNode","node","classList","contains","FILTER_ACCEPT","FILTER_REJECT","nodes","originalParent","push","reverse","maybeChunkStringAsHtml","str","asHtml","cleanUpSkipped","index","newIndex","queueItems","cleanUp","s","i","isNumber","Number","isInteger","countStepsToSelector","selector","cursorPosition","to","isMovingToEnd","RegExp","test","selectorIndex","findIndex","char","t","parentElement","parentMatches","matches","firstChild","isSameNode","length","duplicate","times","beforePaint","cb","Promise","resolve","requestAnimationFrame","async","getAnimationFromElement","getAnimations","find","dataset","tiAnimationId","setCursorAnimation","animate","pause","play","execute","queueItem","func","call","fireItem","wait","cursorOptions","r","instantQueue","tempIndex","futureItem","shouldBeGrouped","delay","shouldPauseCursor","q","effect","getComputedTiming","cancel","oldCurrentTime","currentTime","newAnimation","isInput","handleFunctionalArg","arg","select","all","merge","originalObj","newObj","Object","assign","cursorFontStyles","color","transform","TypeIt","__privateAdd","_B_instances","timeouts","predictedCursorPosition","statuses","firing","opts","queue","flushCallback","unfreeze","is","key","this","buildOptions","newOptions","defaultFrames","defaultOptions","toString","substring","initialItems","add","steps","step","_q","set","Symbol","innerText","buildQueueItem","Boolean","typeable","cursorable","deletable","getQueue","rawValues","values","Map","item","keys","wipe","done","shouldDestroy","delete","get","reset","destroy","getItems","filter","getTypeable","getPendingQueueItems","pending","setUpCursor","typeitId","bind","IntersectionObserver","entries","observer2","entry","isIntersecting","unobserve","threshold","observe","shouldRemoveCursor","clearTimeout","rebuild","property","elementIsInput","string","actionOpts","instant","bookEndQueueItems","generateTemporaryOptionQueueItems","charsAsQueueItems","outerHTML","getPace","nodeType","Node","TEXT_NODE","itemsToQueue","queueAndReturn","movementArg","numberOfSteps","directionalStep","derivedCursorPosition","move","updateOptions","milliseconds","numCharacters","num","typeableQueueItems","rounds","freeze","fire","then","flush","getOptions","getElement","y_fn","empty","remember","qKey","queueKey","fireItemWithContext","prepLoop","d_fn","printedCharacters","min","max","allChars","newCursorPosition","nodeToInsertBefore","g_fn","w_fn","callback","silent","setTimeout","attachCursor","cursorSelector","computedStyles","getComputedStyle","customProperties","reduce","accumulator","duration","n_fn","u_fn","I_fn","maybeAppendPause","o_fn","i_fn","generateQueue","type","splitItems","C_fn","prependHardcodedStrings","existingMarkup","replace","trim","split","concat","e_fn","className","shouldRenderCursor","style","visibility","S_fn","addSplitPause","items","a_fn","originalTarget","character","textContent","target","tagName","cursorNode","f_fn","slice","h_fn","removeNode","rootElement","nodeParent","l_fn","v_get","TypewriterElement","$LitElement","css","super","arguments","autoStart","typeItInstance","disconnectedCallback","_destroyTypeIt","typewriterContainer","typeItOptions","dispatchEvent","CustomEvent","bubbles","composed","setProperty","_getSlottedNodes","HTMLElement","_processCustomElement","go","action","getAttribute","parseInt","break","render","_startTyping","__decorateClass","prototype","String","query","queryAssignedNodes","flatten","customElement"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";var Se=Object.defineProperty;var se=s=>{throw TypeError(s)};var qe=(s,e,t)=>e in s?Se(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var m=(s,e,t)=>qe(s,typeof e!="symbol"?e+"":e,t),ie=(s,e,t)=>e.has(s)||se("Cannot "+t);var d=(s,e,t)=>(ie(s,e,"read from private field"),t?t.call(s):e.get(s)),j=(s,e,t)=>e.has(s)?se("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t);var a=(s,e,t)=>(ie(s,e,"access private method"),t);require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const Ne=require("./litElement.mixin-dosTHO0i.cjs");require("./tailwind.mixin-Dts5Uk3L.cjs");const re=require("lit"),g=require("lit/decorators.js"),de=s=>Array.isArray(s),ne=s=>de(s)?s:[s],ye="data-typeit-id",E="ti-cursor",De={started:!1,completed:!1,frozen:!1,destroyed:!1},C={breakLines:!0,cursor:{autoPause:!0,autoPauseDelay:500,animation:{frames:[0,0,1].map(s=>({opacity:s})),options:{iterations:1/0,easing:"steps(2, start)",fill:"forwards"}}},cursorChar:"|",cursorSpeed:1e3,deleteSpeed:null,html:!0,lifeLike:!0,loop:!1,loopDelay:750,nextStringDelay:750,speed:100,startDelay:250,startDelete:!1,strings:[],waitUntilVisible:!1,beforeString:()=>{},afterString:()=>{},beforeStep:()=>{},afterStep:()=>{},afterComplete:()=>{}},Le=`[${ye}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`,O=s=>document.createElement(s),K=s=>document.createTextNode(s),oe=(s,e="")=>{let t=O("style");t.id=e,t.appendChild(K(s)),document.head.appendChild(t)},ae=s=>(de(s)||(s=[s/2,s/2]),s),le=(s,e)=>Math.abs(Math.random()*(s+e-(s-e))+(s-e));let ue=s=>s/2;const me=s=>Array.from(s);let Y=s=>([...s.childNodes].forEach(e=>{if(e.nodeValue)return[...e.nodeValue].forEach(t=>{e.parentNode.insertBefore(K(t),e)}),void e.remove();Y(e)}),s);const fe=s=>{let e=document.implementation.createHTMLDocument();return e.body.innerHTML=s,Y(e.body)};function ge(s,e=!1,t=!1){let r,n=s.querySelector(`.${E}`),o=document.createTreeWalker(s,NodeFilter.SHOW_ALL,{acceptNode:u=>{var h,c;if(n&&t){if((h=u.classList)!=null&&h.contains(E))return NodeFilter.FILTER_ACCEPT;if(n.contains(u))return NodeFilter.FILTER_REJECT}return(c=u.classList)!=null&&c.contains(E)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),l=[];for(;r=o.nextNode();)r.originalParent||(r.originalParent=r.parentNode),l.push(r);return e?l.reverse():l}function xe(s,e=!0){return e?ge(fe(s)):me(s).map(K)}const ke=({index:s,newIndex:e,queueItems:t,cleanUp:r})=>{for(let n=s+1;n<e+1;n++)r(t[n][0])},be=s=>Number.isInteger(s),he=({queueItems:s,selector:e,cursorPosition:t,to:r})=>{if(be(e))return-1*e;let n=new RegExp("END","i").test(r),o=e?[...s].reverse().findIndex(({char:l})=>{let u=l.parentElement,h=u.matches(e);return!(!n||!h)||h&&u.firstChild.isSameNode(l)}):-1;return o<0&&(o=n?0:s.length-1),o-t+(n?0:1)},A=(s,e)=>new Array(e).fill(s);let F=s=>new Promise(e=>{requestAnimationFrame(async()=>{e(await s())})}),pe=s=>s==null?void 0:s.getAnimations().find(e=>e.id===s.dataset.tiAnimationId),we=({cursor:s,frames:e,options:t})=>{let r=s.animate(e,t);return r.pause(),r.id=s.dataset.tiAnimationId,F(()=>{F(()=>{r.play()})}),r},ce=s=>{var e;return(e=s.func)==null?void 0:e.call(null)},Me=async({index:s,queueItems:e,wait:t,cursor:r,cursorOptions:n})=>{let o=e[s][1],l=[],u=s,h=o,c=()=>h&&!h.delay,p=o.shouldPauseCursor()&&n.autoPause;for(;c();)l.push(h),c()&&u++,h=e[u]?e[u][1]:null;if(l.length)return await F(async()=>{for(let v of l)await ce(v)}),u-1;let y,f=pe(r);return f&&(y={...f.effect.getComputedTiming(),delay:p?n.autoPauseDelay:0}),await t(async()=>{f&&p&&f.cancel(),await F(()=>{ce(o)})},o.delay),await(({cursor:v,options:Z,cursorOptions:ee})=>{if(!v||!ee)return;let B,M=pe(v);M&&(Z.delay=M.effect.getComputedTiming().delay,B=M.currentTime,M.cancel());let te=we({cursor:v,frames:ee.animation.frames,options:Z});return B&&(te.currentTime=B),te})({cursor:r,options:y,cursorOptions:n}),s};const $=s=>"value"in s;let P=s=>typeof s=="function"?s():s,Q=(s,e=document,t=!1)=>e["querySelector"+(t?"All":"")](s);const S=(s,e)=>Object.assign({},s,e);let Ae={"font-family":"","font-weight":"","font-size":"","font-style":"","line-height":"",color:"",transform:"translateX(-.125em)"};var i,Te,q,U,Ie,V,X,J,_,w,Ee,N,D,Ce,R,Pe,ve,W,H,L,z,I,x,k,G,T;class $e{constructor(e,t={}){j(this,i);m(this,"element");m(this,"timeouts");m(this,"cursorPosition");m(this,"predictedCursorPosition");m(this,"statuses",{started:!1,completed:!1,frozen:!1,destroyed:!1,firing:!1});m(this,"opts");m(this,"id");m(this,"queue");m(this,"cursor");m(this,"flushCallback",null);m(this,"unfreeze",()=>{});m(this,"is",function(e){return this.statuses[e]});j(this,R,e=>{this.opts.cursor=(t=>{var r,n;if(typeof t=="object"){let o={},{frames:l,options:u}=C.cursor.animation;return o.animation=t.animation||{},o.animation.frames=((r=t.animation)==null?void 0:r.frames)||l,o.animation.options=S(u,((n=t.animation)==null?void 0:n.options)||{}),o.autoPause=t.autoPause??C.cursor.autoPause,o.autoPauseDelay=t.autoPauseDelay||C.cursor.autoPauseDelay,o}return t===!0?C.cursor:t})(e.cursor??C.cursor),this.opts.strings=a(this,i,Pe).call(this,ne(this.opts.strings)),this.opts=S(this.opts,{html:!d(this,i,k)&&this.opts.html,nextStringDelay:ae(this.opts.nextStringDelay),loopDelay:ae(this.opts.loopDelay)})});var r;this.opts=S(C,t),this.element=typeof(r=e)=="string"?Q(r):r,this.timeouts=[],this.cursorPosition=0,this.unfreeze=()=>{},this.predictedCursorPosition=null,this.statuses=S({},De),this.id=Math.random().toString().substring(2,9),this.queue=function(n){let o=function(p){return ne(p).forEach(y=>{var f;return c.set(Symbol((f=y.char)==null?void 0:f.innerText),l({...y}))}),this},l=p=>(p.shouldPauseCursor=function(){return!!(this.typeable||this.cursorable||this.deletable)},p),u=()=>c,h=()=>Array.from(c.values()),c=new Map;return o(n),{add:o,set:function(p,y){let f=[...c.keys()];c.set(f[p],l(y))},wipe:function(){c=new Map,o(n)},done:(p,y=!1)=>y?c.delete(p):c.get(p).done=!0,reset:function(){c.forEach(p=>delete p.done)},destroy:p=>c.delete(p),getItems:(p=!1)=>p?h():h().filter(y=>!y.done),getQueue:u,getTypeable:()=>h().filter(p=>p.typeable),getPendingQueueItems:()=>{const p=[];for(let[,y]of u())y.done||p.push(y);return p}}}([{delay:this.opts.startDelay}]),d(this,R).call(this,t),this.cursor=a(this,i,ve).call(this),this.element.dataset.typeitId=this.id,oe(Le),this.opts.strings.length&&a(this,i,Ce).call(this)}go(){return this.statuses.started?this:(a(this,i,J).call(this),this.opts.waitUntilVisible?(e=this.element,t=a(this,i,q).bind(this),new IntersectionObserver((r,n)=>{r.forEach(o=>{o.isIntersecting&&(t(),n.unobserve(e))})},{threshold:1}).observe(e),this):(a(this,i,q).call(this),this));var e,t}destroy(e=!0){this.timeouts=(this.timeouts.forEach(clearTimeout),[]),P(e)&&this.cursor&&a(this,i,z).call(this,this.cursor),this.statuses.destroyed=!0}reset(e){!this.is("destroyed")&&this.destroy(),e?(this.queue.wipe(),e(this)):this.queue.reset(),this.cursorPosition=0;for(let t in this.statuses)this.statuses[t]=!1;return this.element[a(this,i,_).call(this)?"value":"innerHTML"]="",this}type(e,t={}){e=P(e);let{instant:r}=t,n=a(this,i,N).call(this,t),o=xe(e,this.opts.html).map(u=>{return{func:()=>a(this,i,H).call(this,u),char:u,delay:r||(h=u,/<(.+)>(.*?)<\/(.+)>/.test(h.outerHTML))?0:a(this,i,I).call(this),typeable:u.nodeType===Node.TEXT_NODE};var h}),l=[n[0],{func:async()=>await this.opts.beforeString(e,this)},...o,{func:async()=>await this.opts.afterString(e,this)},n[1]];return a(this,i,w).call(this,l,t)}break(e={}){return a(this,i,w).call(this,{func:()=>a(this,i,H).call(this,O("BR")),typeable:!0},e)}move(e,t={}){e=P(e);let r=a(this,i,N).call(this,t),{instant:n,to:o}=t,l=he({queueItems:this.queue.getTypeable(),selector:e===null?"":e,to:o,cursorPosition:d(this,i,x)}),u=l<0?-1:1;return this.predictedCursorPosition=d(this,i,x)+l,a(this,i,w).call(this,[r[0],...A({func:()=>a(this,i,U).call(this,u),delay:n?0:a(this,i,I).call(this),cursorable:!0},Math.abs(l)),r[1]],t)}exec(e,t={}){let r=a(this,i,N).call(this,t);return a(this,i,w).call(this,[r[0],{func:()=>e(this)},r[1]],t)}options(e,t={}){return e=P(e),a(this,i,D).call(this,e),a(this,i,w).call(this,{},t)}pause(e,t={}){return a(this,i,w).call(this,{delay:P(e)},t)}delete(e=null,t={}){e=P(e);let r=a(this,i,N).call(this,t),n=e,{instant:o,to:l}=t,u=this.queue.getTypeable(),h=n===null?u.length:be(n)?n:he({queueItems:u,selector:n,cursorPosition:d(this,i,x),to:l});return a(this,i,w).call(this,[r[0],...A({func:a(this,i,L).bind(this),delay:o?0:a(this,i,I).call(this,1),deletable:!0},h),r[1]],t)}freeze(){this.statuses.frozen=!0}flush(e=null){return this.flushCallback=e||this.flushCallback,this.statuses.firing||(a(this,i,J).call(this),a(this,i,q).call(this,!1).then(()=>{if(this.queue.getPendingQueueItems().length>0)return this.flush();this.flushCallback(),this.flushCallback=null})),this}getQueue(){return this.queue}getOptions(){return this.opts}updateOptions(e){return a(this,i,D).call(this,e)}getElement(){return this.element}empty(e={}){return a(this,i,w).call(this,{func:a(this,i,Te).bind(this)},e)}}i=new WeakSet,Te=async function(){a(this,i,_).call(this)?this.element.value="":d(this,i,T).forEach(a(this,i,z).bind(this))},q=async function(e=!0){this.statuses.started=!0,this.statuses.firing=!0;let t=r=>{this.queue.done(r,!e)};try{let r=[...this.queue.getQueue()];for(let o=0;o<r.length;o++){let[l,u]=r[o];if(!u.done){if(!u.deletable||u.deletable&&d(this,i,T).length){let h=await a(this,i,V).call(this,o,r);ke({index:o,newIndex:h,queueItems:r,cleanUp:t}),o=h}t(l)}}if(!e)return this.statuses.firing=!1,this;if(this.statuses.completed=!0,this.statuses.firing=!1,await this.opts.afterComplete(this),!this.opts.loop)throw"";let n=this.opts.loopDelay;a(this,i,X).call(this,async()=>{await a(this,i,Ie).call(this,n[0]),a(this,i,q).call(this)},n[1])}catch{}return this.statuses.firing=!1,this},U=async function(e){var t,r,n;this.cursorPosition=(t=e,r=this.cursorPosition,n=d(this,i,T),Math.min(Math.max(r+t,0),n.length)),((o,l,u)=>{let h=l[u-1],c=Q(`.${E}`,o);(o=(h==null?void 0:h.parentNode)||o).insertBefore(c,h||null)})(this.element,d(this,i,T),this.cursorPosition)},Ie=async function(e){let t=d(this,i,x);t&&await a(this,i,U).call(this,{value:t});let r=d(this,i,T).map(n=>[Symbol(),{func:a(this,i,L).bind(this),delay:a(this,i,I).call(this,1),deletable:!0,shouldPauseCursor:()=>!0}]);for(let n=0;n<r.length;n++)await a(this,i,V).call(this,n,r);this.queue.reset(),this.queue.set(0,{delay:e})},V=function(e,t){return Me({index:e,queueItems:t,wait:a(this,i,X).bind(this),cursor:this.cursor,cursorOptions:this.opts.cursor})},X=async function(e,t,r=!1){this.statuses.frozen&&await new Promise(n=>{this.unfreeze=()=>{this.statuses.frozen=!1,n()}}),r||await this.opts.beforeStep(this),await((n,o,l)=>new Promise(u=>{l.push(setTimeout(async()=>{await n(),u()},o||0))}))(e,t,this.timeouts),r||await this.opts.afterStep(this)},J=async function(){if(!a(this,i,_).call(this)&&this.cursor&&this.element.appendChild(this.cursor),d(this,i,G)){((n,o)=>{let l=`[${ye}='${n}'] .${E}`,u=getComputedStyle(o),h=Object.entries(Ae).reduce((c,[p,y])=>`${c} ${p}: var(--ti-cursor-${p}, ${y||u[p]});`,"");oe(`${l} { display: inline-block; width: 0; ${h} }`,n)})(this.id,this.element),this.cursor.dataset.tiAnimationId=this.id;let{animation:e}=this.opts.cursor,{frames:t,options:r}=e;we({frames:t,cursor:this.cursor,options:{duration:this.opts.cursorSpeed,...r}})}},_=function(){return $(this.element)},w=function(e,t){return this.queue.add(e),a(this,i,Ee).call(this,t),this},Ee=function(e={}){let t=e.delay;t&&this.queue.add({delay:t})},N=function(e={}){return[{func:()=>a(this,i,D).call(this,e)},{func:()=>a(this,i,D).call(this,this.opts)}]},D=async function(e){this.opts=S(this.opts,e)},Ce=function(){let e=this.opts.strings.filter(t=>!!t);e.forEach((t,r)=>{if(this.type(t),r+1===e.length)return;let n=this.opts.breakLines?[{func:()=>a(this,i,H).call(this,O("BR")),typeable:!0}]:A({func:a(this,i,L).bind(this),delay:a(this,i,I).call(this,1)},this.queue.getTypeable().length);a(this,i,W).call(this,n)})},R=new WeakMap,Pe=function(e){let t=this.element.innerHTML;return t?(this.element.innerHTML="",this.opts.startDelete?(this.element.innerHTML=t,Y(this.element),a(this,i,W).call(this,A({func:a(this,i,L).bind(this),delay:a(this,i,I).call(this,1),deletable:!0},d(this,i,T).length)),e):(r=t,r.replace(/<!--(.+?)-->/g,"").trim().split(/<br(?:\s*?)(?:\/)?>/)).concat(e)):e;var r},ve=function(){if(d(this,i,k))return null;let e=O("span");return e.className=E,d(this,i,G)?(e.innerHTML=fe(this.opts.cursorChar).innerHTML,e):(e.style.visibility="hidden",e)},W=function(e){let t=this.opts.nextStringDelay;this.queue.add([{delay:t[0]},...e,{delay:t[1]}])},H=function(e){((t,r)=>{if($(t))return void(t.value=`${t.value}${r.textContent}`);r.innerHTML="";let n=(o=r.originalParent,/body/i.test(o==null?void 0:o.tagName)?t:r.originalParent||t);var o;let l=Q("."+E,n)||null;l&&l.parentElement!==n&&(n=l.parentElement),n.insertBefore(r,l)})(this.element,e)},L=function(){d(this,i,T).length&&(d(this,i,k)?this.element.value=this.element.value.slice(0,-1):a(this,i,z).call(this,d(this,i,T)[this.cursorPosition]))},z=function(e){((t,r)=>{if(!t)return;let n=t.parentNode;(n.childNodes.length>1||n.isSameNode(r)?t:n).remove()})(e,this.element)},I=function(e=0){return function(t){let{speed:r,deleteSpeed:n,lifeLike:o}=t;return n=n!==null?n:r/3,o?[le(r,ue(r)),le(n,ue(n))]:[r,n]}(this.opts)[e]},x=function(){return this.predictedCursorPosition??this.cursorPosition},k=function(){return $(this.element)},G=function(){return!!this.opts.cursor&&!d(this,i,k)},T=function(){return e=this.element,$(e)?me(e.value):ge(e,!0).filter(t=>!(t.childNodes.length>0));var e};var Oe=Object.defineProperty,_e=Object.getOwnPropertyDescriptor,b=(s,e,t,r)=>{for(var n,o=r>1?void 0:r?_e(e,t):e,l=s.length-1;l>=0;l--)(n=s[l])&&(o=(r?n(e,t,o):n(o))||o);return r&&o&&Oe(e,t,o),o};exports.TypewriterElement=class extends Ne.$LitElement(re.css`
|
|
2
|
-
:host {
|
|
3
|
-
display: inherit;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
#typewriter {
|
|
7
|
-
--ti-cursor-display: initial;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
#typewriter .ti-cursor {
|
|
11
|
-
display: var(--ti-cursor-display);
|
|
12
|
-
}
|
|
13
|
-
`){constructor(){super(...arguments),this.speed=60,this.startDelay=0,this.autoStart=!0,this.cursor=!0,this.cursorChar="",this.deleteSpeed=30,this.typeItInstance=null}disconnectedCallback(){super.disconnectedCallback(),this._destroyTypeIt()}_startTyping(){var e;if(this._destroyTypeIt(),!this.typewriterContainer)return;const s={speed:this.speed,startDelay:this.startDelay,cursor:this.cursor,cursorChar:this.cursorChar,deleteSpeed:this.deleteSpeed,afterComplete:()=>{this.dispatchEvent(new CustomEvent("typeit-complete",{bubbles:!0,composed:!0})),this.typewriterContainer.style.setProperty("--ti-cursor-display","none")}};this.typeItInstance=new $e(this.typewriterContainer,s),this._getSlottedNodes.forEach(t=>{var r;t.nodeType===Node.TEXT_NODE?(r=this.typeItInstance)==null||r.type(t.textContent||""):t instanceof HTMLElement&&this._processCustomElement(t)}),this.autoStart&&((e=this.typeItInstance)==null||e.go())}_destroyTypeIt(){if(this.typeItInstance){try{this.typeItInstance.destroy()}catch{}this.typeItInstance=null}}_processCustomElement(s){var r,n,o;const e=s.getAttribute("action"),t=s.getAttribute("value");switch(e){case"pause":(r=this.typeItInstance)==null||r.pause(parseInt(t||"0",10));break;case"delete":(n=this.typeItInstance)==null||n.delete(parseInt(t||"0",10));break;default:s.tagName==="P"&&this.typeItInstance.break(),(o=this.typeItInstance)==null||o.type(s.textContent||"")}}render(){return re.html`<div id="typewriter" aria-live="polite"></div>
|
|
14
|
-
|
|
15
|
-
<slot
|
|
16
|
-
hidden
|
|
17
|
-
@slotchange=${()=>{this._startTyping()}}
|
|
18
|
-
></slot> `}},b([g.property({type:Number})],exports.TypewriterElement.prototype,"speed",2),b([g.property({type:Number})],exports.TypewriterElement.prototype,"startDelay",2),b([g.property({type:Boolean})],exports.TypewriterElement.prototype,"autoStart",2),b([g.property({type:Boolean})],exports.TypewriterElement.prototype,"cursor",2),b([g.property({type:String})],exports.TypewriterElement.prototype,"cursorChar",2),b([g.property({type:Number})],exports.TypewriterElement.prototype,"deleteSpeed",2),b([g.query("#typewriter")],exports.TypewriterElement.prototype,"typewriterContainer",2),b([g.queryAssignedNodes({flatten:!0})],exports.TypewriterElement.prototype,"_getSlottedNodes",2),exports.TypewriterElement=b([g.customElement("schmancy-typewriter")],exports.TypewriterElement);
|
|
19
|
-
//# sourceMappingURL=typewriter-D0yYoTg6.cjs.map
|