vue3-translate-select
Version:
🚀 The package offer vue3 library for @google-translate-select!
3 lines (2 loc) • 3.86 kB
JavaScript
;const n=require("vue"),u=require("./index9.cjs"),s=require("./index8.cjs");require("./index10.cjs");const j=require("./index4.cjs"),S=u.createNamespace("select"),z=n.defineComponent({name:S.n,inheritAttrs:!1,props:j.googleTranslateProps,emits:["select"],setup(o,{emit:G,attrs:N}){const i=n.ref(null),c=n.ref(!1),l=n.ref(""),b=n.ref(""),f=n.ref(-1),T=n.ref(""),O=n.ref(null),g=n.ref({}),d=n.ref({}),I=n.computed(()=>[S.b(),s.GOOGLE_TRANSLATE_STOP_TRANSLATE_CLASSNAME,N.class]),k=n.computed(()=>o.languages&&o.languages.length),w=n.computed(()=>C());function C(){const e=o.languages.find(t=>t.code===n.unref(l));return e||o.languages.find(a=>a.code===o.defaultLanguageCode)}function R(){return u.createStyleTag("body { top: 0 !important; } .skiptranslate { display: none !important; }")}function y(){const e=o.defaultPageLanguageCode,{jsonpCallbackName:t}=u.createGoogleTranslateJsonpCallback({pageLanguage:e},V);T.value=t}function B(){return u.createScriptTag(o.googleScriptUrl.length?`${o.googleScriptUrl}?cb=${n.unref(T)}`:`${s.GOOGLE_TRANSLATE_JSSDK_URL}?cb=${n.unref(T)}`)}function M(){R(),y(),O.value=B()}function q(){g.value=u.useMutationObserver(document.querySelector(s.GOOGLE_TRANSLATE_ORIGINAL_SELECT_CLASSNAME),e=>{e.forEach(t=>{t.addedNodes[0]&&t.addedNodes[0].value&&l.value===t.addedNodes[0].value&&A(t.addedNodes[0].value)})},{childList:!0,subtree:!0}),n.unref(g).start()}function D(){d.value=u.useMutationObserver(document.querySelector("html"),e=>{e.forEach(t=>{if(t.attributeName==="lang"){const a=t.target.getAttribute("lang"),r=t.oldValue;r!==a&&r&&r!=="auto"&&a==="auto"&&L(n.unref(l))}}),u.removeIcon()},{attributes:!0,attributeOldValue:!0}),n.unref(d).start()}function A(e){if(!e)return;const t=u.isString(e)?e:e.value??"",a=document.querySelector(s.GOOGLE_TRANSLATE_ORIGINAL_SELECT_CLASSNAME),r=document.querySelector(`.${S.b()}`);t==o.defaultLanguageCode&&l.value&&t!=l.value&&(console.log("reload"),o.reload()),!r||!a||r.innerHTML.length===0||a.options.length===0?q():(a.value=t,u.GoogleTranslateFireEvent(a,"change"),n.unref(g)&&n.unref(g).stop())}function x(e){return o.languages.find(a=>a.code===e)?e:"en"}function H(){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 $(){const e=u.getCookie(s.GOOGLE_TRANSLATE_COOKIE_NAME);if(e){const t=e.split("/");return t[2]?t[2]:"en"}else return""}function V(){const e=o.fetchBrowserLanguage,t=e?x(H()):"",a=$(),r=!!a,v=()=>o.defaultLanguageCode?o.defaultLanguageCode:"en",F=()=>o.languages.find(E=>E.code===t)?t:v(),J=()=>o.languages.find(E=>E.code===a)?a:v();let m=v();r?m=J():e&&(m=F()),L(m)}function L(e){A(e),l.value=e,G("select",C())}function h(){clearTimeout(n.unref(f)),f.value=-1}function U(e){o.trigger==="hover"&&(h(),f.value=window.setTimeout(()=>{var a;const t=e.target;n.unref(i)&&((a=n.unref(i))!=null&&a.contains(t))&&(c.value=!0)},0))}function p(){o.trigger==="hover"&&(h(),f.value=window.setTimeout(()=>{c.value=!1},o.animateTimeout))}function _(e){var a;const t=e.target;n.unref(i)&&((a=n.unref(i))!=null&&a.contains(t))?c.value=!0:c.value=!1}return n.onMounted(()=>{M(),D(),o.trigger==="click"&&document.addEventListener("click",_)}),n.onBeforeUnmount(()=>{var e,t,a;(e=n.unref(g))!=null&&e.stop&&n.unref(g).stop(),(t=n.unref(d))!=null&&t.stop&&n.unref(d).stop(),(a=n.unref(O))!=null&&a.unload&&n.unref(O).unload(),o.trigger==="click"&&document.removeEventListener("click",_)}),n.defineExpose({handleTranslate:L}),{ns:S,googleTranslateSelectEl:i,visible:c,selectedLanguageCode:l,hoveredLanguageCode:b,getClass:I,hasLanguages:k,selectedLanguageOption:w,handleTranslate:L,handleDropdownShowByHover:U,handleDropdownHideByHover:p,GOOGLE_TRANSLATE_ORIGINAL_DOM_ID:s.GOOGLE_TRANSLATE_ORIGINAL_DOM_ID}}});module.exports=z;
//# sourceMappingURL=index5.cjs.map