{"version":3,"file":"LanguageSwitcher.mjs","names":["React","useState","useRef","useEffect","ClickAwayListener","Grow","Paper","Popper","MenuList","makeStyles","IconButton","MenuItem","TranslateIcon","changeLanguage","useStyles","theme","root","display","paper","marginRight","spacing","LanguageSwitcher","props","classes","open","setOpen","anchorRef","languages","handleToggle","prevOpen","handleClose","event","current","contains","target","handleListKeyDown","key","preventDefault","focus","handleLanguageChange","currentLanguage","languageSelector","languageCode","defaultLang","undefined","color","opacity","TransitionProps","placement","transformOrigin","map","data","languageLabel","languageId"],"sources":["../../../src/shell/ui/LanguageSwitcher.jsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react'\nimport {\n  ClickAwayListener,\n  Grow,\n  Paper,\n  Popper,\n  MenuList,\n  makeStyles,\n  IconButton,\n  MenuItem\n} from '@material-ui/core'\nimport { TranslateIcon } from '@fluentui/react-icons'\nimport { changeLanguage } from '../../utilities/i18n/initializeI18n';\n\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    display: 'flex'\n  },\n  paper: {\n    marginRight: theme.spacing(2)\n  }\n}))\n\nexport const LanguageSwitcher = (props) => {\n  const classes = useStyles()\n  const [open, setOpen] = useState(false)\n  const anchorRef = useRef(null)\n  const { languages } = props\n\n  const handleToggle = () => {\n    setOpen((prevOpen) => !prevOpen)\n  }\n\n  const handleClose = (event) => {\n    if (anchorRef.current && anchorRef.current.contains(event.target)) {\n      return\n    }\n    setOpen(false)\n  }\n\n  function handleListKeyDown(event) {\n    if (event.key === 'Tab') {\n      event.preventDefault()\n      setOpen(false)\n    }\n  }\n\n  // return focus to the button when we transitioned from !open -> open\n  const prevOpen = useRef(open)\n  useEffect(() => {\n    if (prevOpen.current === true && open === false) {\n      anchorRef.current.focus()\n    }\n    prevOpen.current = open\n  }, [open])\n\n  const handleLanguageChange = (event) => {\n    const currentLanguage = event;\n    //setLangKey(currentLanguage.languageCode);\n    languageSelector(currentLanguage.languageCode);\n  };\n\n  // Preloads the target language's layers before flipping, so the switch is a\n  // single translated paint instead of a flash of English (see changeLanguage).\n  const languageSelector = (defaultLang) => {\n    void changeLanguage(defaultLang);\n  }\n\n  if (languages != null) {\n    return (\n      <div id='udpRecord-LanguageSwitcher' className={classes.root}>\n        <div>\n          <IconButton\n            id='udpRecord-LanguageSwitcher-IconButton'\n            udprecordid='udpRecord-LanguageSwitcher-IconButton'\n            ref={anchorRef}\n            aria-controls={open ? 'menu-list-grow' : undefined}\n            aria-haspopup='true'\n            onClick={handleToggle}\n          >\n            <TranslateIcon style={{ color: 'white', opacity: 0.8 }} />\n          </IconButton>\n          <Popper\n            open={open}\n            anchorEl={anchorRef.current}\n            role={undefined}\n            transition\n            disablePortal\n          >\n            {({ TransitionProps, placement }) => (\n              <Grow\n                {...TransitionProps}\n                style={{\n                  transformOrigin:\n                    placement === 'bottom' ? 'center top' : 'center bottom'\n                }}\n              >\n                <Paper>\n                  <ClickAwayListener \n                    id='udpRecord-LanguageSwitcher-ClickAway' \n                    udprecordid='udpRecord-LanguageSwitcher-ClickAway' \n                    onClickAway={handleClose}\n                  >\n                    <MenuList\n                      autoFocusItem={open}\n                      id='menu-list-grow'\n                      udprecordid='udpRecord-LanguageSwitcher-MenuList'\n                      onKeyDown={handleListKeyDown}\n                      onClick={() => setOpen(false)}\n                    >\n                      {languages.map((data) =>\n                        <MenuItem\n                          id={'udpRecord-LanguageSwitcher-MenuItem-'+data.languageLabel}\n                          udprecordid={'udpRecord-LanguageSwitcher-MenuItem-'+data.languageLabel}\n                          onClick={() => handleLanguageChange(data)}\n                          value={data.languageCode}\n                          key={data.languageId}\n                        >\n                          {data.languageLabel}\n                        </MenuItem>)}\n                    </MenuList>\n                  </ClickAwayListener>\n                </Paper>\n              </Grow>\n            )}\n          </Popper>\n        </div>\n      </div>\n    )\n  } else {\n    return (\n      null\n    )\n  }\n\n}"],"mappings":";;;;;AAeA,MAAMc,YAAYL,YAAYM,WAAW;CACvCC,MAAM,EACJC,SAAS,QACV;CACDC,OAAO,EACLC,aAAaJ,MAAMK,QAAQ,EAAC,EAC9B;CACD,EAAE;AAEH,MAAaC,oBAAoBC,UAAU;CACzC,MAAMC,UAAUT,WAAW;CAC3B,MAAM,CAACU,MAAMC,WAAWxB,SAAS,MAAM;CACvC,MAAMyB,YAAYxB,OAAO,KAAK;CAC9B,MAAM,EAAEyB,cAAcL;CAEtB,MAAMM,qBAAqB;AACzBH,WAASI,aAAa,CAACA,SAAS;;CAGlC,MAAMC,eAAeC,UAAU;AAC7B,MAAIL,UAAUM,WAAWN,UAAUM,QAAQC,SAASF,MAAMG,OAAO,CAC/D;AAEFT,UAAQ,MAAM;;CAGhB,SAASU,kBAAkBJ,SAAO;AAChC,MAAIA,QAAMK,QAAQ,OAAO;AACvBL,WAAMM,gBAAgB;AACtBZ,WAAQ,MAAM;;;CAKlB,MAAMI,aAAW3B,OAAOsB,KAAK;AAC7BrB,iBAAgB;AACd,MAAI0B,WAASG,YAAY,QAAQR,SAAS,MACxCE,WAAUM,QAAQM,OAAO;AAE3BT,aAASG,UAAUR;IAClB,CAACA,KAAK,CAAC;CAEV,MAAMe,wBAAwBR,YAAU;AAGtCU,mBAFwBV,QAESW,aAAa;;CAKhD,MAAMD,oBAAoBE,gBAAgB;AACnC9B,iBAAe8B,YAAY;;AAGlC,KAAIhB,aAAa,KACf,QACE,sBAAA,cAAC,OAAD;EAAK,IAAG;EAA6B,WAAWJ,QAAQP;EAyDlD,EAxDJ,sBAAA,cAAC,OAAA,MACC,sBAAA,cAAC,YAAD;EACE,IAAG;EACH,aAAY;EACZ,KAAKU;EACL,iBAAeF,OAAO,mBAAmBoB,KAAAA;EACzC,iBAAc;EACd,SAAShB;EAGC,EADV,sBAAA,cAAC,eAAD,EAAe,OAAO;EAAEiB,OAAO;EAASC,SAAS;EAAK,EAAC,CAAA,CAC7C,EACZ,sBAAA,cAAC,QAAD;EACQtB;EACN,UAAUE,UAAUM;EACpB,MAAMY,KAAAA;EACN,YAAA;EACA,eAAA;EAsCM,GApCJ,EAAEG,iBAAiBC,gBACnB,sBAAA,cAAC,MAAD;EACE,GAAID;EACJ,OAAO,EACLE,iBACED,cAAc,WAAW,eAAe,iBAC3C;EA6BJ,EA3BG,sBAAA,cAAC,OAAA,MACC,sBAAA,cAAC,mBAAD;EACE,IAAG;EACH,aAAY;EACZ,aAAalB;EAoBI,EAlBjB,sBAAA,cAAC,UAAD;EACE,eAAeN;EACf,IAAG;EACH,aAAY;EACZ,WAAWW;EACX,eAAeV,QAAQ,MAAM;EAYrB,EAVPE,UAAUuB,KAAKC,SACd,sBAAA,cAAC,UAAD;EACE,IAAI,yCAAuCA,KAAKC;EAChD,aAAa,yCAAuCD,KAAKC;EACzD,eAAeb,qBAAqBY,KAAK;EACzC,OAAOA,KAAKT;EACZ,KAAKS,KAAKE;EAGD,EADRF,KAAKC,cACG,CAAC,CACN,CACO,CACd,CAEV,CACK,CACL,CACD;KAGR,QACE"}