UNPKG

@google-translate-select/react

Version:

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

3 lines (2 loc) • 4.25 kB
"use strict";const n=require("./index3.cjs"),c=require("react"),m=require("./index4.cjs"),d=require("./index5.cjs"),l=require("./index6.cjs");require("./index7.cjs");const o=l.createNamespace("select");function ae(y){const{languages:i=d.GOOGLE_TRANSLATE_SELECT_LANGUAGES,defaultLanguageCode:p="en",defaultPageLanguageCode:q="en",fetchBrowserLanguage:C=!0,animateTimeout:v=150,dropdownClassName:$="",dropdownStyles:D={},showArrow:F=!0,trigger:S="hover",className:V="",select:b}=y,[A,E]=c.useState(!1),[L,B]=c.useState(""),[N,H]=c.useState(""),[r,J]=c.useState({}),[u,z]=c.useState({}),[w,K]=c.useState(!0),[G,_]=c.useState(-1),x=e=>{const s=i.find(a=>a.code===e),t=i.find(a=>a.code===p);return s||t},g=c.useMemo(()=>x(L),[L]);c.useEffect(()=>{U(),P()},[]),c.useEffect(()=>{W()},[N]),c.useEffect(()=>(u!=null&&u.start&&u.start(),()=>{u!=null&&u.stop&&u.stop()}),[u]),c.useEffect(()=>(r!=null&&r.start&&r.start(),()=>{r!=null&&r.stop&&r.stop()}),[r]),c.useEffect(()=>{r!=null&&r.stop&&r.stop()},[w]);const P=()=>{const e=l.useMutationObserver(document.querySelector("html"),s=>{s.forEach(t=>{if(t.attributeName==="lang"){const a=t.target.getAttribute("lang"),f=t.oldValue;f!==a&&f&&f!=="auto"&&a==="auto"&&T(L)}}),l.removeIcon()},{attributes:!0,attributeOldValue:!0});z(e)},U=()=>{te(),Q()},W=()=>N?l.createScriptTag(`${d.GOOGLE_TRANSLATE_JSSDK_URL}?cb=${N}`):null,Q=()=>{const{jsonpCallbackName:e}=l.createGoogleTranslateJsonpCallback({pageLanguage:q},X);H(e)},X=()=>{const e=ee(),s=C?Z(Y()):"",t=!!e,a=C,f=p||"en",M=R=>!!i.find(se=>se.code===R)?R:f;let h=f;!t&&a?h=M(s):h=M(e),T(h)};function Y(){const e=window.navigator.language||document.documentElement.lang||"en";return["zh-CN","zh-TW"].every(t=>t!==e)&&e.indexOf("-")>-1?e.split("-")[0]:e}function Z(e){return i.find(t=>t.code===e)?e:"en"}const ee=()=>{const e=l.getCookie(d.GOOGLE_TRANSLATE_COOKIE_NAME);if(e){const s=e.split("/");return s[2]?s[2]:"en"}else return""},te=()=>l.createStyleTag("body { top: 0 !important; } .skiptranslate { display: none !important; }"),j=()=>{S==="hover"&&(clearTimeout(G),_(window.setTimeout(()=>{E(!0)},v)))},O=()=>{S==="hover"&&(clearTimeout(G),_(window.setTimeout(()=>{E(!1)},v)))},ne=e=>{const s=l.useMutationObserver(document.querySelector(d.GOOGLE_TRANSLATE_ORIGINAL_SELECT_CLASSNAME),t=>{t.forEach(a=>{a.addedNodes[0]&&a.addedNodes[0].value&&e===a.addedNodes[0].value&&k(a.addedNodes[0].value)})},{childList:!0,subtree:!0});J(s)},k=e=>{if(!e)return;const s=l.isString(e)?e:e.value??"",t=document.querySelector(d.GOOGLE_TRANSLATE_ORIGINAL_SELECT_CLASSNAME),a=document.querySelector(`.${o.b()}`);!a||!t||a.innerHTML.length===0||t.options.length===0?ne(s):(t.value=s,l.GoogleTranslateFireEvent(t,"change"),K(!w))},T=e=>{k(e),B(e),b&&b(x(e))},I=()=>{S==="click"&&E(e=>!e)};return!i||!i.length?null:n.jsxs(n.Fragment,{children:[n.jsx("div",{className:m([o.b(),d.GOOGLE_TRANSLATE_STOP_TRANSLATE_CLASSNAME,V]),children:n.jsxs("div",{className:o.b("dropdown"),children:[n.jsxs("div",{className:o.be("dropdown","activator"),onMouseEnter:j,onMouseLeave:O,onClick:I,children:[n.jsxs("div",{className:o.b("language"),children:[n.jsx("div",{className:o.b("flag"),children:n.jsx("div",{className:o.be("flag",g==null?void 0:g.code)})}),g==null?void 0:g.name]}),F&&n.jsx("div",{className:m([o.b("icon"),A?o.is("reverse"):""]),children:n.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024",children:n.jsx("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z"})})})]}),n.jsx("div",{className:m([o.be("dropdown","menu"),$]),style:{display:A?"":"none",...D},onMouseEnter:j,onMouseLeave:O,onClick:I,children:n.jsx("ul",{children:i.map(e=>n.jsx("li",{className:m([o.be("dropdown","menu__item"),L===e.code?"selected":""]),"data-language-code":e.code,onClick:()=>{T(e.code)},children:n.jsxs("div",{className:o.b("language"),children:[n.jsx("div",{className:o.b("flag"),children:n.jsx("div",{className:o.be("flag",e.code)})}),e.name]})},`language-${e.code}`))})})]})}),n.jsx("div",{id:d.GOOGLE_TRANSLATE_ORIGINAL_DOM_ID})]})}module.exports=ae; //# sourceMappingURL=index2.cjs.map