vue3-translate-select
Version:
🚀 The package offer vue3 library for @google-translate-select!
164 lines (163 loc) • 5.4 kB
JavaScript
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