UNPKG

vue3-translate-select

Version:

🚀 The package offer vue3 library for @google-translate-select!

164 lines (163 loc) • 5.4 kB
import { defineComponent as K, ref as l, computed as C, unref as o, onMounted as W, onBeforeUnmount as Q, defineExpose as X } from "vue"; import { createNamespace as Y, useMutationObserver as _, createStyleTag as Z, createGoogleTranslateJsonpCallback as ee, createScriptTag as te, removeIcon as ae, isString as ne, GoogleTranslateFireEvent as oe, getCookie as le } from "./index9.mjs"; import { GOOGLE_TRANSLATE_STOP_TRANSLATE_CLASSNAME as ge, GOOGLE_TRANSLATE_ORIGINAL_DOM_ID as ue, GOOGLE_TRANSLATE_JSSDK_URL as se, GOOGLE_TRANSLATE_ORIGINAL_SELECT_CLASSNAME as b, GOOGLE_TRANSLATE_COOKIE_NAME as re } from "./index8.mjs"; import "./index10.mjs"; import { googleTranslateProps as ie } from "./index4.mjs"; const L = Y("select"), Te = K({ name: L.n, inheritAttrs: !1, props: ie, emits: ["select"], setup(n, { emit: N, attrs: k }) { const r = l(null), i = l(!1), u = l(""), w = l(""), c = l(-1), m = l(""), T = l(null), s = l({}), d = l( {} ), I = C(() => [L.b(), ge, k.class]), y = C( () => n.languages && n.languages.length ), R = C(() => E()); function E() { const e = n.languages.find( (t) => t.code === o(u) ); return e || n.languages.find( (a) => a.code === n.defaultLanguageCode ); } function B() { return Z( "body { top: 0 !important; } .skiptranslate { display: none !important; }" ); } function D() { const e = n.defaultPageLanguageCode, { jsonpCallbackName: t } = ee( { pageLanguage: e }, x ); m.value = t; } function M() { return te( n.googleScriptUrl.length ? `${n.googleScriptUrl}?cb=${o(m)}` : `${se}?cb=${o(m)}` ); } function H() { B(), D(), T.value = M(); } function U() { s.value = _( document.querySelector(b), (e) => { e.forEach((t) => { t.addedNodes[0] && t.addedNodes[0].value && u.value === t.addedNodes[0].value && h( t.addedNodes[0].value ); }); }, { childList: !0, subtree: !0 } ), o(s).start(); } function V() { d.value = _( document.querySelector("html"), (e) => { e.forEach((t) => { if (t.attributeName === "lang") { const a = t.target.getAttribute( "lang" ), g = t.oldValue; g !== a && g && g !== "auto" && a === "auto" && f(o(u)); } }), ae(); }, { attributes: !0, attributeOldValue: !0 } ), o(d).start(); } function h(e) { if (!e) return; const t = ne(e) ? e : e.value ?? "", a = document.querySelector( b ), g = document.querySelector(`.${L.b()}`); t == n.defaultLanguageCode && u.value && t != u.value && (console.log("reload"), n.reload()), !g || !a || g.innerHTML.length === 0 || a.options.length === 0 ? U() : (a.value = t, oe(a, "change"), o(s) && o(s).stop()); } function $(e) { return n.languages.find((a) => a.code === e) ? e : "en"; } function p() { const e = window.navigator.language || document.documentElement.lang || "en"; return ["zh-CN", "zh-TW"].every((a) => a !== e) && e.indexOf("-") > -1 ? e.split("-")[0] : e; } function q() { const e = le(re); if (e) { const t = e.split("/"); return t[2] ? t[2] : "en"; } else return ""; } function x() { const e = n.fetchBrowserLanguage, t = e ? $(p()) : "", a = q(), g = !!a, S = () => n.defaultLanguageCode ? n.defaultLanguageCode : "en", P = () => n.languages.find( (O) => O.code === t ) ? t : S(), j = () => n.languages.find( (O) => O.code === a ) ? a : S(); let v = S(); g ? v = j() : e && (v = P()), f(v); } function f(e) { h(e), u.value = e, N("select", E()); } function A() { clearTimeout(o(c)), c.value = -1; } function F(e) { n.trigger === "hover" && (A(), c.value = window.setTimeout(() => { var a; const t = e.target; o(r) && ((a = o(r)) != null && a.contains(t)) && (i.value = !0); }, 0)); } function J() { n.trigger === "hover" && (A(), c.value = window.setTimeout(() => { i.value = !1; }, n.animateTimeout)); } function G(e) { var a; const t = e.target; o(r) && ((a = o(r)) != null && a.contains(t)) ? i.value = !0 : i.value = !1; } return W(() => { H(), V(), n.trigger === "click" && document.addEventListener("click", G); }), Q(() => { var e, t, a; (e = o(s)) != null && e.stop && o(s).stop(), (t = o(d)) != null && t.stop && o(d).stop(), (a = o(T)) != null && a.unload && o(T).unload(), n.trigger === "click" && document.removeEventListener("click", G); }), X({ handleTranslate: f }), { ns: L, googleTranslateSelectEl: r, visible: i, selectedLanguageCode: u, hoveredLanguageCode: w, getClass: I, hasLanguages: y, selectedLanguageOption: R, handleTranslate: f, handleDropdownShowByHover: F, handleDropdownHideByHover: J, GOOGLE_TRANSLATE_ORIGINAL_DOM_ID: ue }; } }); export { Te as default }; //# sourceMappingURL=index5.mjs.map