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