/*! * SplitText 3.13.0 * https://gsap.com * * @license Copyright 2025, GreenSock. All rights reserved. Subject to the terms at https://gsap.com/standard-license. * @author: Jack Doyle */ (function (B, A) { typeof exports == "object" && typeof module != "undefined" ? A(exports) : typeof define == "function" && define.amd ? define(["exports"], A) : (B = typeof globalThis != "undefined" ? globalThis : B || self, A(B.window = B.window || {})) })(this, function (B) { "use strict"; let A, _, G, re = () => G || U.register(window.gsap), V = typeof Intl != "undefined" ? new Intl.Segmenter : 0, P = e => typeof e == "string" ? P(document.querySelectorAll(e)) : "length" in e ? Array.from(e) : [e], X = e => P(e).filter(t => t instanceof HTMLElement), J = [], K = function () { }, oe = /\s+/g, Y = new RegExp("\\p{RI}\\p{RI}|\\p{Emoji}(\\p{EMod}|\\u{FE0F}\\u{20E3}?|[\\u{E0020}-\\u{E007E}]+\\u{E007F})?(\\u{200D}\\p{Emoji}(\\p{EMod}|\\u{FE0F}\\u{20E3}?|[\\u{E0020}-\\u{E007E}]+\\u{E007F})?)*|.", "gu"), Z = { left: 0, top: 0, width: 0, height: 0 }, ee = (e, t) => { if (t) { let s = new Set(e.join("").match(t) || J), i = e.length, o, c, n, a; if (s.size) for (; --i > -1;) { c = e[i]; for (n of s) if (n.startsWith(c) && n.length > c.length) { for (o = 0, a = c; n.startsWith(a += e[i + ++o]) && a.length < n.length;); if (o && a.length === n.length) { e[i] = n, e.splice(i + 1, o); break } } } } return e }, te = e => window.getComputedStyle(e).display === "inline" && (e.style.display = "inline-block"), z = (e, t, s) => t.insertBefore(typeof e == "string" ? document.createTextNode(e) : e, s), Q = (e, t, s) => { let i = t[e + "sClass"] || "", { tag: o = "div", aria: c = "auto", propIndex: n = !1 } = t, a = e === "line" ? "block" : "inline-block", h = i.indexOf("++") > -1, b = x => { let g = document.createElement(o), C = s.length + 1; return i && (g.className = i + (h ? " " + i + C : "")), n && g.style.setProperty("--" + e, C + ""), c !== "none" && g.setAttribute("aria-hidden", "true"), o !== "span" && (g.style.position = "relative", g.style.display = a), g.textContent = x, s.push(g), g }; return h && (i = i.replace("++", "")), b.collection = s, b }, ae = (e, t, s, i) => { let o = Q("line", s, i), c = window.getComputedStyle(e).textAlign || "left"; return (n, a) => { let h = o(""); for (h.style.textAlign = c, e.insertBefore(h, t[n]); n < a; n++)h.appendChild(t[n]); h.normalize() } }, ie = (e, t, s, i, o, c, n, a, h, b) => { var x; let g = Array.from(e.childNodes), C = 0, { wordDelimiter: R, reduceWhiteSpace: L = !0, prepareText: $ } = t, q = e.getBoundingClientRect(), j = q, D = !L && window.getComputedStyle(e).whiteSpace.substring(0, 3) === "pre", E = 0, v = s.collection, r, f, H, l, m, y, I, d, u, W, S, O, T, F, w, p, k, N; for (typeof R == "object" ? (H = R.delimiter || R, f = R.replaceWith || "") : f = R === "" ? "" : R || " ", r = f !== " "; C < g.length; C++)if (l = g[C], l.nodeType === 3) { for (w = l.textContent || "", L ? w = w.replace(oe, " ") : D && (w = w.replace(/\n/g, f + ` `)), $ && (w = $(w, e)), l.textContent = w, m = f || H ? w.split(H || f) : w.match(a) || J, k = m[m.length - 1], d = r ? k.slice(-1) === " " : !k, k || m.pop(), j = q, I = r ? m[0].charAt(0) === " " : !m[0], I && z(" ", e, l), m[0] || m.shift(), ee(m, h), c && b || (l.textContent = ""), u = 1; u <= m.length; u++)if (p = m[u - 1], !L && D && p.charAt(0) === ` `&& ((x = l.previousSibling) == null || x.remove(), z(document.createElement("br"), e, l), p = p.slice(1)), !L && p === "") z(f, e, l); else if (p === " ") e.insertBefore(document.createTextNode(" "), l); else { if (r && p.charAt(0) === " " && z(" ", e, l), E && u === 1 && !I && v.indexOf(E.parentNode) > -1 ? (y = v[v.length - 1], y.appendChild(document.createTextNode(i ? "" : p))) : (y = s(i ? "" : p), z(y, e, l), E && u === 1 && !I && y.insertBefore(E, y.firstChild)), i) for (S = V ? ee([...V.segment(p)].map(M => M.segment), h) : p.match(a) || J, N = 0; N < S.length; N++)y.appendChild(S[N] === " " ? document.createTextNode(" ") : i(S[N])); if (c && b) { if (w = l.textContent = w.substring(p.length + 1, w.length), W = y.getBoundingClientRect(), W.top > j.top && W.left <= j.left) { for (O = e.cloneNode(), T = e.childNodes[0]; T && T !== y;)F = T, T = T.nextSibling, O.appendChild(F); e.parentNode.insertBefore(O, e), o && te(O) } j = W } (u < m.length || d) && z(u >= m.length ? " " : r && p.slice(-1) === " " ? " " + f : f, e, l) } e.removeChild(l), E = 0 } else l.nodeType === 1 && (n && n.indexOf(l) > -1 ? (v.indexOf(l.previousSibling) > -1 && v[v.length - 1].appendChild(l), E = l) : (ie(l, t, s, i, o, c, n, a, h, !0), E = 0), o && te(l)) }; const ne = class se { constructor(t, s) { this.isSplit = !1, re(), this.elements = X(t), this.chars = [], this.words = [], this.lines = [], this.masks = [], this.vars = s, this._split = () => this.isSplit && this.split(this.vars); let i = [], o, c = () => { let n = i.length, a; for (; n--;) { a = i[n]; let h = a.element.offsetWidth; if (h !== a.width) { a.width = h, this._split(); return } } }; this._data = { orig: i, obs: typeof ResizeObserver != "undefined" && new ResizeObserver(() => { clearTimeout(o), o = setTimeout(c, 200) }) }, K(this), this.split(s) } split(t) { this.isSplit && this.revert(), this.vars = t = t || this.vars || {}; let { type: s = "chars,words,lines", aria: i = "auto", deepSlice: o = !0, smartWrap: c, onSplit: n, autoSplit: a = !1, specialChars: h, mask: b } = this.vars, x = s.indexOf("lines") > -1, g = s.indexOf("chars") > -1, C = s.indexOf("words") > -1, R = g && !C && !x, L = h && ("push" in h ? new RegExp("(?:" + h.join("|") + ")", "gu") : h), $ = L ? new RegExp(L.source + "|" + Y.source, "gu") : Y, q = !!t.ignore && X(t.ignore), { orig: j, animTime: D, obs: E } = this._data, v; return (g || C || x) && (this.elements.forEach((r, f) => { j[f] = { element: r, html: r.innerHTML, ariaL: r.getAttribute("aria-label"), ariaH: r.getAttribute("aria-hidden") }, i === "auto" ? r.setAttribute("aria-label", (r.textContent || "").trim()) : i === "hidden" && r.setAttribute("aria-hidden", "true"); let H = [], l = [], m = [], y = g ? Q("char", t, H) : null, I = Q("word", t, l), d, u, W, S; if (ie(r, t, I, y, R, o && (x || R), q, $, L, !1), x) { let O = P(r.childNodes), T = ae(r, O, t, m), F, w = [], p = 0, k = O.map(M => M.nodeType === 1 ? M.getBoundingClientRect() : Z), N = Z; for (d = 0; d < O.length; d++)F = O[d], F.nodeType === 1 && (F.nodeName === "BR" ? (w.push(F), T(p, d + 1), p = d + 1, N = k[p]) : (d && k[d].top > N.top && k[d].left <= N.left && (T(p, d), p = d), N = k[d])); p < d && T(p, d), w.forEach(M => { var le; return (le = M.parentNode) == null ? void 0 : le.removeChild(M) }) } if (!C) { for (d = 0; d < l.length; d++)if (u = l[d], g || !u.nextSibling || u.nextSibling.nodeType !== 3) if (c && !x) { for (W = document.createElement("span"), W.style.whiteSpace = "nowrap"; u.firstChild;)W.appendChild(u.firstChild); u.replaceWith(W) } else u.replaceWith(...u.childNodes); else S = u.nextSibling, S && S.nodeType === 3 && (S.textContent = (u.textContent || "") + (S.textContent || ""), u.remove()); l.length = 0, r.normalize() } this.lines.push(...m), this.words.push(...l), this.chars.push(...H) }), b && this[b] && this.masks.push(...this[b].map(r => { let f = r.cloneNode(); return r.replaceWith(f), f.appendChild(r), r.className && (f.className = r.className.replace(/(\b\w+\b)/g, "$1-mask")), f.style.overflow = "clip", f }))), this.isSplit = !0, _ && (a ? _.addEventListener("loadingdone", this._split) : _.status === "loading" && console.warn("SplitText called before fonts loaded")), (v = n && n(this)) && v.totalTime && (this._data.anim = D ? v.totalTime(D) : v), x && a && this.elements.forEach((r, f) => { j[f].width = r.offsetWidth, E && E.observe(r) }), this } revert() { var t, s; let { orig: i, anim: o, obs: c } = this._data; return c && c.disconnect(), i.forEach(({ element: n, html: a, ariaL: h, ariaH: b }) => { n.innerHTML = a, h ? n.setAttribute("aria-label", h) : n.removeAttribute("aria-label"), b ? n.setAttribute("aria-hidden", b) : n.removeAttribute("aria-hidden") }), this.chars.length = this.words.length = this.lines.length = i.length = this.masks.length = 0, this.isSplit = !1, _ == null || _.removeEventListener("loadingdone", this._split), o && (this._data.animTime = o.totalTime(), o.revert()), (s = (t = this.vars).onRevert) == null || s.call(t, this), this } static create(t, s) { return new se(t, s) } static register(t) { A = A || t || window.gsap, A && (P = A.utils.toArray, K = A.core.context || K), !G && window.innerWidth > 0 && (_ = document.fonts, G = !0) } }; ne.version = "3.13.0"; let U = ne; B.SplitText = U, B.default = U, Object.defineProperty(B, "__esModule", { value: !0 }) });