{"version":3,"file":"index4.cjs","sources":["../../src/google-translate-select.vue"],"sourcesContent":["<template>\n  <div\n    v-if=\"hasLanguages\"\n    ref=\"googleTranslateSelectEl\"\n    :class=\"getClass\"\n    @mouseenter=\"handleDropdownShowByHover\"\n    @mouseleave=\"handleDropdownHideByHover\"\n  >\n    <div :class=\"[ns.b('dropdown')]\">\n      <div :class=\"[ns.be('dropdown', 'activator')]\">\n        <div :class=\"[ns.b('language')]\">\n          <div :class=\"[ns.b('flag')]\">\n            <div :class=\"[ns.be('flag', selectedLanguageOption.code)]\" />\n          </div>\n          {{ selectedLanguageOption.name }}\n        </div>\n        <div\n          v-if=\"showArrow\"\n          :class=\"[ns.b('icon'), visible ? ns.is('reverse') : '']\"\n        >\n          <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\n            <path\n              fill=\"currentColor\"\n              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            />\n          </svg>\n        </div>\n      </div>\n      <transition name=\"google-translate-select-zoom-in-top\">\n        <div\n          v-show=\"visible\"\n          :class=\"[ns.be('dropdown', 'menu'), dropdownClassName]\"\n          :style=\"dropdownStyle\"\n        >\n          <ul>\n            <li\n              v-for=\"language in languages\"\n              :key=\"`language-${language.code}`\"\n              :class=\"[\n                ns.be('dropdown', 'menu__item'),\n                hoveredLanguageCode === language.code ? 'hover' : '',\n                selectedLanguageCode === language.code ? 'selected' : '',\n              ]\"\n              :data-language-code=\"language.code\"\n              @click=\"() => handleTranslate(language.code)\"\n              @mouseenter.stop=\"() => (hoveredLanguageCode = language.code)\"\n              @mouseleave.stop=\"() => (hoveredLanguageCode = '')\"\n            >\n              <div :class=\"[ns.b('language')]\">\n                <div :class=\"[ns.b('flag')]\">\n                  <div :class=\"[ns.be('flag', language.code)]\" />\n                </div>\n                {{ language.name }}\n              </div>\n            </li>\n          </ul>\n        </div>\n      </transition>\n    </div>\n    <div :id=\"GOOGLE_TRANSLATE_ORIGINAL_DOM_ID\" />\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport {\n  GoogleTranslateFireEvent,\n  createGoogleTranslateJsonpCallback,\n  createNamespace,\n  createScriptTag,\n  createStyleTag,\n  getCookie,\n  isString,\n  removeIcon,\n  useMutationObserver,\n} from '@google-translate-select/utils'\nimport {\n  GOOGLE_TRANSLATE_COOKIE_NAME,\n  GOOGLE_TRANSLATE_JSSDK_URL,\n  GOOGLE_TRANSLATE_ORIGINAL_DOM_ID,\n  GOOGLE_TRANSLATE_ORIGINAL_SELECT_CLASSNAME,\n  GOOGLE_TRANSLATE_STOP_TRANSLATE_CLASSNAME,\n} from '@google-translate-select/constants'\nimport '@google-translate-select/theme-chalk/src/index.scss'\nimport { googleTranslateProps } from './types'\nimport type { UseMutationObserverReturn } from '@google-translate-select/utils'\nimport type { Language as ILanguage } from '@google-translate-select/constants'\n\ninterface Data {\n  googleTranslateSelectEl: HTMLElement | null\n  visible: boolean\n  selectedLanguageCode: string\n  hoveredLanguageCode: string\n  setTimeoutId: number\n  jsonCallbackFnName: string\n  googleTranslateOriginSelectObserve: Partial<UseMutationObserverReturn> | null\n  htmlAttrLangObserve: Partial<UseMutationObserverReturn> | null\n  ns: typeof ns\n  GOOGLE_TRANSLATE_ORIGINAL_DOM_ID: string\n}\n\nconst ns = createNamespace('select')\n\nexport default Vue.extend<\n  Data,\n  Record<string, any>,\n  Record<string, any>,\n  Record<string, any>\n>({\n  name: ns.n,\n  inheritAttrs: false,\n  props: googleTranslateProps,\n  data() {\n    return {\n      googleTranslateSelectEl: null,\n      visible: false,\n      selectedLanguageCode: '',\n      hoveredLanguageCode: '',\n      setTimeoutId: -1,\n      jsonCallbackFnName: '',\n      scriptTag: null,\n      googleTranslateOriginSelectObserve: {},\n      htmlAttrLangObserve: {},\n      ns,\n      GOOGLE_TRANSLATE_ORIGINAL_DOM_ID,\n    }\n  },\n  computed: {\n    getClass() {\n      return [\n        ns.b(),\n        GOOGLE_TRANSLATE_STOP_TRANSLATE_CLASSNAME,\n        this.$attrs.class,\n      ]\n    },\n    hasLanguages() {\n      return this.languages && this.languages.length\n    },\n    selectedLanguageOption() {\n      return this.getSelectedLanguageOption()\n    },\n  },\n  mounted() {\n    this.googleTranslateSelectEl = this.$refs[\n      'googleTranslateSelectEl'\n    ] as HTMLElement\n    this.createGoogleTranslate()\n    this.createHtmlAttrLangObserve()\n\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const _this = this\n    if (this.trigger === 'click')\n      document.addEventListener('click', _this.handleDropdownShowOrHideByClick)\n  },\n  // @ts-ignore\n  beforeUnmount() {\n    if (this.googleTranslateOriginSelectObserve?.stop) {\n      this.googleTranslateOriginSelectObserve!.stop!()\n    }\n\n    if (this.htmlAttrLangObserve?.stop) {\n      this.htmlAttrLangObserve!.stop!()\n    }\n\n    if (this.scriptTag?.unload) {\n      this.scriptTag.unload()\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const _this = this\n    if (this.trigger === 'click')\n      document.removeEventListener(\n        'click',\n        _this.handleDropdownShowOrHideByClick\n      )\n  },\n  methods: {\n    /**\n     * get current select language\n     */\n    getSelectedLanguageOption() {\n      const selectedLanguageOption = this.languages.find(\n        (language: ILanguage) => language.code === this.selectedLanguageCode\n      )\n      if (selectedLanguageOption) {\n        return selectedLanguageOption\n      } else {\n        const defaultSelectedLanguageOption = this.languages.find(\n          (language: ILanguage) => language.code === this.defaultLanguageCode\n        )\n        return defaultSelectedLanguageOption\n      }\n    },\n    /**\n     * dynamic insert style for GoogleTranslate\n     */\n    createStyle() {\n      return createStyleTag(\n        `body { top: 0 !important; } .skiptranslate { display: none !important; }`\n      )\n    },\n    /**\n     * create jsonp callback for GoogleTranslate, when GoogleTranslate loaded callback will be triggered\n     */\n    createJsonCallback() {\n      // eslint-disable-next-line @typescript-eslint/no-this-alias\n      const _this = this\n      const pageLanguage = this.defaultPageLanguageCode\n      const { jsonpCallbackName } = createGoogleTranslateJsonpCallback(\n        {\n          pageLanguage,\n        },\n        _this.setSelectedLanguageCode\n      )\n      _this.jsonCallbackFnName = jsonpCallbackName\n    },\n    /**\n     * pass jsonp callback to GoogleTranslate\n     */\n    createScript() {\n      // eslint-disable-next-line @typescript-eslint/no-this-alias\n      const _this = this\n      return createScriptTag(\n        `${GOOGLE_TRANSLATE_JSSDK_URL}?cb=${_this.jsonCallbackFnName}`\n      )\n    },\n    /**\n     * GoogleTranslate init\n     */\n    createGoogleTranslate() {\n      this.createStyle()\n      this.createJsonCallback()\n      this.scriptTag = this.createScript()\n    },\n    /**\n     * Triggers translations by observe changes in the DOM of GoogleTranslate's original select.\n     *\n     * Because the callback function passed in JSONP can only be called after the GOOGLE_TRANSLATE_JSSDK_URL resource is loaded,\n     * and the GOOGLE_TRANSLATE_JSSDK_URL will import the resource that generated the original DOM, observe is used here🤓\n     */\n    createGoogleTranslateOriginSelectObserve() {\n      this.googleTranslateOriginSelectObserve = useMutationObserver(\n        document.querySelector(GOOGLE_TRANSLATE_ORIGINAL_SELECT_CLASSNAME)!,\n        (records) => {\n          records.forEach((record) => {\n            if (\n              record.addedNodes[0] &&\n              (record.addedNodes[0] as HTMLOptionElement).value\n            ) {\n              if (\n                this.selectedLanguageCode ===\n                (record.addedNodes[0] as HTMLOptionElement).value\n              ) {\n                this.triggerTranslate(\n                  (record.addedNodes[0] as HTMLOptionElement).value\n                )\n              }\n            }\n          })\n          removeIcon()\n        },\n        {\n          childList: true,\n          subtree: true,\n        }\n      )\n      this.googleTranslateOriginSelectObserve!.start!()\n    },\n    /**\n     * When GoogleTranslate's original executes, the attribute 'lang' of HTML will have an auto state,\n     * in order to overwrite the auto state, we call the 'handleTranslate' again\n     */\n    createHtmlAttrLangObserve() {\n      this.htmlAttrLangObserve = useMutationObserver(\n        document.querySelector('html')!,\n        (records) => {\n          records.forEach((record) => {\n            if (record.attributeName === 'lang') {\n              const currentValue = (record.target as HTMLElement).getAttribute(\n                'lang'\n              )\n              const oldValue = record.oldValue\n              // 修复auto的中间状态，如果页面当中内容较多，gt会有一个翻译的过程，就会抛出lang = auto，此时我们手动再触发一次翻译覆盖掉上次未进行完的翻译操作\n              if (\n                oldValue !== currentValue &&\n                oldValue &&\n                oldValue !== 'auto' &&\n                currentValue === 'auto'\n              ) {\n                this.handleTranslate(this.selectedLanguageCode)\n              }\n            }\n          })\n        },\n        {\n          attributes: true,\n          attributeOldValue: true,\n        }\n      )\n\n      this.htmlAttrLangObserve!.start!()\n    },\n    /**\n     * Simulates the change event of select to manually trigger GoogleTranslate\n     *\n     * @param select\n     */\n    triggerTranslate(select: HTMLSelectElement | string) {\n      if (!select) {\n        return\n      }\n      const selectValue = isString(select) ? select : select.value ?? ''\n      const googleTranslateOriginalSelectEl = document.querySelector(\n        GOOGLE_TRANSLATE_ORIGINAL_SELECT_CLASSNAME\n      ) as HTMLSelectElement | null\n      const googleTranslateSelectEl = document.querySelector(`.${ns.b()}`)\n\n      if (\n        !googleTranslateSelectEl ||\n        !googleTranslateOriginalSelectEl ||\n        googleTranslateSelectEl.innerHTML.length === 0 ||\n        googleTranslateOriginalSelectEl.options.length === 0\n      ) {\n        this.createGoogleTranslateOriginSelectObserve()\n      } else {\n        googleTranslateOriginalSelectEl.value = selectValue\n        GoogleTranslateFireEvent(googleTranslateOriginalSelectEl, 'change')\n        this.googleTranslateOriginSelectObserve &&\n          this.googleTranslateOriginSelectObserve!.stop!()\n      }\n    },\n    /**\n     * Determines whether the current select language exists in the props.languages\n     *\n     * @param code\n     */\n    isLanguageCodeInLanguages(code: string) {\n      // 如果 code 不存在于语言列表中默认使用英语\n      const result = this.languages.find(\n        (language: ILanguage) => language.code === code\n      )\n      return result ? code : 'en'\n    },\n    /**\n     * Get browser language\n     */\n    getBrowserLanguage() {\n      const browserLanguage =\n        window.navigator.language || document.documentElement.lang || 'en'\n      const filterLanguages = ['zh-CN', 'zh-TW']\n      if (filterLanguages.every((l) => l !== browserLanguage)) {\n        if (browserLanguage.indexOf('-') > -1) {\n          return browserLanguage.split('-')[0]\n        }\n      }\n      return browserLanguage\n    },\n    /**\n     * After triggering GoogleTranslate Translate, a cookie called 'googtrans' is generated, such as '/en/tr'\n     */\n    getGoogleCookieLanguage() {\n      const googleTranslateCookie = getCookie(GOOGLE_TRANSLATE_COOKIE_NAME)\n      if (googleTranslateCookie) {\n        const googleTranslateCookieResult = googleTranslateCookie.split('/')\n        return googleTranslateCookieResult[2]\n          ? googleTranslateCookieResult[2]\n          : 'en'\n      } else {\n        return ''\n      }\n    },\n    /**\n     * Use browser language、cookie 'googtrans' to get language code\n     */\n    setSelectedLanguageCode() {\n      const isFetchBrowserLanguageOpen = this.fetchBrowserLanguage\n      const browserLanguage = isFetchBrowserLanguageOpen\n        ? this.isLanguageCodeInLanguages(this.getBrowserLanguage())\n        : ''\n      const googleCookieLanguage = this.getGoogleCookieLanguage()\n      const isGoogleCookieLanguageExist = !!googleCookieLanguage\n      const handleDefaultLanguage = () => {\n        if (this.defaultLanguageCode) {\n          return this.defaultLanguageCode\n        } else {\n          return 'en'\n        }\n      }\n      const handleBrowserLanguageInLanguages = () => {\n        const isBrowserLanguageInLanguages = !!this.languages.find(\n          (language: ILanguage) => language.code === browserLanguage\n        )\n        if (isBrowserLanguageInLanguages) {\n          return browserLanguage\n        } else {\n          return handleDefaultLanguage()\n        }\n      }\n      const handleGoogleCookieLanguageInLanguages = () => {\n        const isGoogleCookieLanguageInLanguages = !!this.languages.find(\n          (language: ILanguage) => language.code === googleCookieLanguage\n        )\n        if (isGoogleCookieLanguageInLanguages) {\n          return googleCookieLanguage\n        } else {\n          return handleDefaultLanguage()\n        }\n      }\n      let selectedCode = handleDefaultLanguage()\n      if (!isGoogleCookieLanguageExist) {\n        // 首次\n        if (isFetchBrowserLanguageOpen)\n          selectedCode = handleBrowserLanguageInLanguages()\n      } else {\n        // 非首次\n        // 越过浏览器语言判断直接去列表中匹配\n        selectedCode = handleGoogleCookieLanguageInLanguages()\n      }\n      this.handleTranslate(selectedCode)\n    },\n    handleTranslate(code: string) {\n      this.triggerTranslate(code)\n      this.selectedLanguageCode = code\n      this.$emit('select', this.getSelectedLanguageOption())\n    },\n    clearSettimeout() {\n      // eslint-disable-next-line @typescript-eslint/no-this-alias\n      const _this = this\n      window.clearTimeout(_this.setTimeoutId)\n      this.setTimeoutId = -1\n    },\n    handleDropdownShowByHover(e: Event) {\n      if (this.trigger === 'hover') {\n        this.clearSettimeout()\n        this.setTimeoutId = window.setTimeout(() => {\n          const target = e.target as HTMLElement\n          if (\n            this.googleTranslateSelectEl &&\n            this.googleTranslateSelectEl.contains(target)\n          ) {\n            this.visible = true\n          }\n        }, 0)\n      }\n    },\n    handleDropdownHideByHover() {\n      if (this.trigger === 'hover') {\n        this.clearSettimeout()\n        this.setTimeoutId = window.setTimeout(() => {\n          this.visible = false\n        }, this.animateTimeout)\n      }\n    },\n    handleDropdownShowOrHideByClick(e: Event) {\n      const target = e.target as HTMLElement\n      if (\n        this.googleTranslateSelectEl &&\n        this.googleTranslateSelectEl.contains(target)\n      ) {\n        this.visible = true\n      } else {\n        this.visible = false\n      }\n    },\n  },\n})\n</script>\n"],"names":["ns","createNamespace","__vue2_script","Vue","googleTranslateProps","GOOGLE_TRANSLATE_ORIGINAL_DOM_ID","GOOGLE_TRANSLATE_STOP_TRANSLATE_CLASSNAME","_this","_a","_b","_c","selectedLanguageOption","language","createStyleTag","pageLanguage","jsonpCallbackName","createGoogleTranslateJsonpCallback","createScriptTag","GOOGLE_TRANSLATE_JSSDK_URL","useMutationObserver","GOOGLE_TRANSLATE_ORIGINAL_SELECT_CLASSNAME","records","record","removeIcon","currentValue","oldValue","select","selectValue","isString","googleTranslateOriginalSelectEl","googleTranslateSelectEl","GoogleTranslateFireEvent","code","browserLanguage","l","googleTranslateCookie","getCookie","GOOGLE_TRANSLATE_COOKIE_NAME","googleTranslateCookieResult","isFetchBrowserLanguageOpen","googleCookieLanguage","isGoogleCookieLanguageExist","handleDefaultLanguage","handleBrowserLanguageInLanguages","handleGoogleCookieLanguageInLanguages","selectedCode","target"],"mappings":"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"}