{"version":3,"file":"components/Layout/header.mjs","sources":["../../../src/components/Layout/header.tsx"],"sourcesContent":["import { TranslationOutlined } from '@ant-design/icons';\nimport { Client } from '@rsdoctor/types';\nimport { Button, Col, Dropdown, Layout, Row, Switch } from 'antd';\nimport React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Language, Theme } from '../../constants';\nimport { useI18n, useTheme } from '../../utils';\nimport { OverlayAlertsWithButton } from '../Alerts';\nimport { BuilderSelect } from './builder-select';\nimport { Menus } from './menus';\nimport styles from './header.module.scss';\n\nconst logoLight = 'https://assets.rspack.rs/rsdoctor/rsdoctor-title-logo.png';\nconst logoDark = 'https://assets.rspack.rs/rsdoctor/rsdoctor-logo-dark.png';\n\nexport interface HeaderProps {\n  enableRoutes?: string[];\n}\n\nexport const Header: React.FC<HeaderProps> = ({ enableRoutes }) => {\n  const { i18n } = useI18n();\n\n  const navigate = useNavigate();\n  const { setTheme, isLight, isDark } = useTheme();\n  const languages = [\n    { value: Language.Cn, label: '中文' },\n    { value: Language.En, label: 'English' },\n  ];\n\n  return (\n    <Layout.Header className={styles.root}>\n      <Row className={styles.innerRoot}>\n        <Col className={styles.leftCol}>\n          <div className={styles.leftColInner}>\n            <button\n              type=\"button\"\n              className={styles.logoButton}\n              aria-label=\"Go to Rsdoctor home\"\n              onClick={() => {\n                if (\n                  location.hash.includes(\n                    Client.RsdoctorClientRoutes.Uploader,\n                  ) &&\n                  location.pathname.includes('/preview')\n                ) {\n                  location.href = 'http://rsdoctor.rs';\n                } else {\n                  navigate(Client.RsdoctorClientRoutes.Home);\n                }\n              }}\n            >\n              <img\n                width=\"1604\"\n                height=\"380\"\n                src={isLight ? logoLight : logoDark}\n                className={styles.rsdoctorLogo}\n                alt=\"Rsdoctor\"\n                draggable={false}\n              />\n            </button>\n            <BuilderSelect />\n          </div>\n        </Col>\n        <Menus\n          key={enableRoutes ? JSON.stringify(enableRoutes) : 'default'}\n          style={{ transition: 'none' }}\n        />\n\n        <Col className={styles.rightCol}>\n          <Row className={styles.rightColInner}>\n            <Col>\n              <OverlayAlertsWithButton />\n            </Col>\n\n            <Col>\n              <Switch\n                className={styles.themeSwitch}\n                aria-label={isDark ? 'Use light theme' : 'Use dark theme'}\n                checkedChildren=\"🌛\"\n                unCheckedChildren=\"🌞\"\n                checked={isDark}\n                onChange={(checked) => {\n                  setTheme(checked ? Theme.Dark : Theme.Light);\n                }}\n              />\n            </Col>\n            <Col>\n              <Dropdown\n                overlayStyle={{ zIndex: 1000 }}\n                menu={{\n                  items: languages.map((e) => ({\n                    label: e.label,\n                    key: e.value,\n                    onClick() {\n                      i18n.changeLanguage(e.value);\n                    },\n                  })),\n                  selectedKeys: [i18n.language],\n                }}\n              >\n                <Button\n                  type=\"text\"\n                  className={styles.utilityButton}\n                  aria-label=\"Change language\"\n                  icon={<TranslationOutlined />}\n                />\n              </Dropdown>\n            </Col>\n          </Row>\n        </Col>\n      </Row>\n    </Layout.Header>\n  );\n};\n"],"names":["logoLight","logoDark","Header","enableRoutes","i18n","useI18n","navigate","useNavigate","setTheme","isLight","isDark","useTheme","languages","Language","Layout","styles","Row","Col","location","Client","BuilderSelect","Menus","JSON","OverlayAlertsWithButton","Switch","checked","Theme","Dropdown","e","Button","TranslationOutlined"],"mappings":";;;;;;;;;;;;AAYA,MAAMA,YAAY;AAClB,MAAMC,WAAW;AAMV,MAAMC,SAAgC,CAAC,EAAEC,YAAY,EAAE;IAC5D,MAAM,EAAEC,IAAI,EAAE,GAAGC;IAEjB,MAAMC,WAAWC;IACjB,MAAM,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,MAAM,EAAE,GAAGC;IACtC,MAAMC,YAAY;QAChB;YAAE,OAAOC,SAAS,EAAE;YAAE,OAAO;QAAK;QAClC;YAAE,OAAOA,SAAS,EAAE;YAAE,OAAO;QAAU;KACxC;IAED,OAAO,WAAP,GACE,IAACC,OAAO,MAAM;QAAC,WAAWC,cAAAA,IAAW;kBACnC,mBAACC,KAAGA;YAAC,WAAWD,cAAAA,SAAgB;;8BAC9B,IAACE,KAAGA;oBAAC,WAAWF,cAAAA,OAAc;8BAC5B,mBAAC;wBAAI,WAAWA,cAAAA,YAAmB;;0CACjC,IAAC;gCACC,MAAK;gCACL,WAAWA,cAAAA,UAAiB;gCAC5B,cAAW;gCACX,SAAS;oCACP,IACEG,SAAS,IAAI,CAAC,QAAQ,CACpBC,OAAO,oBAAoB,CAAC,QAAQ,KAEtCD,SAAS,QAAQ,CAAC,QAAQ,CAAC,aAE3BA,SAAS,IAAI,GAAG;yCAEhBZ,SAASa,OAAO,oBAAoB,CAAC,IAAI;gCAE7C;0CAEA,kBAAC;oCACC,OAAM;oCACN,QAAO;oCACP,KAAKV,UAAUT,YAAYC;oCAC3B,WAAWc,cAAAA,YAAmB;oCAC9B,KAAI;oCACJ,WAAW;;;0CAGf,IAACK,eAAaA,CAAAA;;;;8BAGlB,IAACC,OAAKA;oBAEJ,OAAO;wBAAE,YAAY;oBAAO;mBADvBlB,eAAemB,KAAK,SAAS,CAACnB,gBAAgB;8BAIrD,IAACc,KAAGA;oBAAC,WAAWF,cAAAA,QAAe;8BAC7B,mBAACC,KAAGA;wBAAC,WAAWD,cAAAA,aAAoB;;0CAClC,IAACE,KAAGA;0CACF,kBAACM,yBAAuBA,CAAAA;;0CAG1B,IAACN,KAAGA;0CACF,kBAACO,QAAMA;oCACL,WAAWT,cAAAA,WAAkB;oCAC7B,cAAYL,SAAS,oBAAoB;oCACzC,iBAAgB;oCAChB,mBAAkB;oCAClB,SAASA;oCACT,UAAU,CAACe;wCACTjB,SAASiB,UAAUC,MAAM,IAAI,GAAGA,MAAM,KAAK;oCAC7C;;;0CAGJ,IAACT,KAAGA;0CACF,kBAACU,UAAQA;oCACP,cAAc;wCAAE,QAAQ;oCAAK;oCAC7B,MAAM;wCACJ,OAAOf,UAAU,GAAG,CAAC,CAACgB,IAAO;gDAC3B,OAAOA,EAAE,KAAK;gDACd,KAAKA,EAAE,KAAK;gDACZ;oDACExB,KAAK,cAAc,CAACwB,EAAE,KAAK;gDAC7B;4CACF;wCACA,cAAc;4CAACxB,KAAK,QAAQ;yCAAC;oCAC/B;8CAEA,kBAACyB,QAAMA;wCACL,MAAK;wCACL,WAAWd,cAAAA,aAAoB;wCAC/B,cAAW;wCACX,oBAAM,IAACe,qBAAmBA,CAAAA;;;;;;;;;;AAS5C"}