var C = (e) => { throw TypeError(e); }; var L = (e, t, r) => t.has(e) || C("Cannot " + r); var g = (e, t, r) => (L(e, t, "read from private field"), r ? r.call(e) : t.get(e)), T = (e, t, r) => t.has(e) ? C("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, r), h = (e, t, r, a) => (L(e, t, "write to private field"), a ? a.call(e, r) : t.set(e, r), r); import { t as i } from "./tokens.CKbL8mrq.js"; import { i as f } from "./i18next.CGqvJKt7.js"; var c, m; const o = class o { constructor() { T(this, m, {}); } static getInstance() { return g(o, c) || h(o, c, new o()), g(o, c); } setDict(t) { h(this, m, t); } get dict() { return g(this, m); } convertText(t) { let r = t; for (const [a, n] of Object.entries(this.dict)) { const s = new RegExp(a, "g"); r = r.replace(s, n); } return r; } }; c = new WeakMap(), m = new WeakMap(), T(o, c); let d = o; const E = d.getInstance(), _ = { ja: "ja-JP", en: "en-US", zh: "zh-CN", zh_TW: "zh-TW", ko: "ko-KR", es: "es-ES", vi: "vi-VN", ar: "ar-SA", pt: "pt-PT", de: "de-DE", fr: "fr-FR", ru: "ru-RU", th: "th-TH", hi: "hi-IN", bn: "bn-BD", bg: "bg-BG", tr: "tr-TR", el: "el-GR", hu: "hu-HU", it: "it-IT", az: "az-AZ", ca: "ca-ES", ceb: "ceb-PH", cs: "cs-CZ", da: "da-DK", eu: "eu-ES", fa: "fa-IR", fi: "fi-FI", gl: "gl-ES", gu: "gu-IN", he: "he-IL", hr: "hr-HR", ht: "ht-HT", id: "id-ID", jv: "jv-ID", ka: "ka-GE", km: "km-KH", kn: "kn-IN", lt: "lt-LT", lv: "lv-LV", mn: "mn-MN", ml: "ml-IN", mr: "mr-IN", ms: "ms-MY", my: "my-MM", nl: "nl-NL", ne: "ne-NP", no: "no-NO", pa: "pa-IN", pl: "pl-PL", ro: "ro-RO", si: "si-LK", sk: "sk-SK", sl: "sl-SI", sr: "sr-RS", su: "su-ID", sv: "sv-SE", sw: "sw-KE", ta: "ta-IN", te: "te-IN", tl: "tl-PH", uk: "uk-UA", ur: "ur-PK", uz: "uz-UZ" }, P = (e) => { var n; const t = (n = window.speechSynthesis) == null ? void 0 : n.getVoices(), r = _[e]; return t.some((s) => s.lang === r) ? r : "en-US"; }, H = { page: i.libraries.elementSpeaker_ariaCurrent_page, step: i.libraries.elementSpeaker_ariaCurrent_step, location: i.libraries.elementSpeaker_ariaCurrent_location, date: i.libraries.elementSpeaker_ariaCurrent_date, time: i.libraries.elementSpeaker_ariaCurrent_time, true: i.libraries.elementSpeaker_ariaCurrent_true, false: i.libraries.elementSpeaker_ariaCurrent_false }, z = (e, t) => { const { interval: r = 1e3, skipLink: a = !1, readSpeed: n = 1, lang: s = "ja" } = t || {}; return new Promise((p, u) => { var x; const N = R(e, s, a); if (N === "") return p(); const l = new SpeechSynthesisUtterance(N); l.lang = P(s), l.rate = n, e.classList.add(S); const b = () => { e.classList.remove(S); }; l.onend = () => { setTimeout(() => (b(), p()), r); }, l.onerror = (I) => (b(), I.error === "interrupted" ? p() : u(I)), (x = window.speechSynthesis) == null || x.speak(l); }); }, R = (e, t, r) => { if (r && (e.tagName === "A" || e.tagName === "BUTTON")) return ""; let a = []; const n = e.ariaLabel && e.ariaLabel !== ""; return ["A", "BUTTON"].includes(e.tagName) && !n ? a.push(...w(e)) : a.push(k(e)), a.length > 0 && (a = a.map((u) => U(u))), [y(e, t), ...a].filter((u) => !!u).join("、"); }, w = (e) => { var a; const t = [], r = (n) => !!(n && typeof n == "object" && "tagName" in n); for (const n of e.childNodes) if (!v(e)) { if (n.nodeType === Node.TEXT_NODE && t.push(((a = n.textContent) == null ? void 0 : a.trim()) || ""), r(n)) { t.push(k(n)); continue; } n instanceof HTMLElement && t.push(k(n)); } return t.filter((n) => !!n); }, k = (e) => { var t; return v(e) ? "" : e.ariaLabel && e.ariaLabel !== "" ? e.ariaLabel : e.tagName === "IMG" ? e.alt : e.tagName === "SVG" ? ((t = e.querySelector("title")) == null ? void 0 : t.textContent) || "" : e.textContent || e.innerText || ""; }, y = (e, t) => { let r = ""; if (e.ariaCurrent && e.ariaCurrent !== "") { const a = H[e.ariaCurrent]; a !== void 0 && (r += f.t(i.libraries.elementSpeaker_ariaCurrent_textPrefix, { lng: t }) + f.t(a, { lng: t })); } return e.tagName === "A" ? r + f.t(i.libraries.elementSpeaker_link, { lng: t }) : e.tagName === "BUTTON" ? r + f.t(i.libraries.elementSpeaker_button, { lng: t }) : r; }, v = (e) => ["NOSCRIPT", "SCRIPT", "STYLE"].includes(e.tagName), U = (e) => E.convertText(e), S = "uniweb--speaking-highlight", D = ` .${S} { color: rgb(0, 0, 0) !important; background-color: rgb(255, 255, 0) !important; } `; export { E as P, z as e, P as l, D as s };