{"version":3,"file":"chunks/7e83fdad761a55.js","mappings":"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","sources":["webpack:///./resources/js/components/shared/language-switcher-nav.ts","webpack:///./resources/js/customer-experience/modules/atl-storage.ts"],"sourcesContent":["import * as $ from \"jquery\";\nimport axios from 'axios';\nimport Storage from '../../customer-experience/modules/atl-storage';\nimport Environment from '../../common/environment';\nimport { Segment } from '../../common/tracking/platforms';\n\nexport default class LanguageSwitcherNav {\n  componentRoot: JQuery<HTMLElement>;\n  params: any;\n  storage: any;\n  currentLocale: string;\n  preferredLocale: null;\n  bannerDismissStorageKey: string;\n  preferredLocaleStorageKey: string;\n  activeBannerClass: string;\n  dissmissButton: any;\n  selectTrigger: any;\n  preferredLocaleLink: any;\n  preferredLocaleLabel: any;\n  \n  constructor(componentRoot: HTMLElement, params: any) {\n    this.componentRoot = $(componentRoot);\n    this.params = { ...params };\n\n    this.storage = new Storage();\n\n    this.currentLocale = this.getCurrentLocale();\n    this.preferredLocale = null;\n\n    this.bannerDismissStorageKey = 'language-selector-banner-dismissed';\n    this.preferredLocaleStorageKey = 'language-selector-preferred';\n    this.activeBannerClass = 'language-selector-banner--open';\n\n    this.dissmissButton = this.componentRoot.find('.language-selector-banner__close-banner');\n    this.selectTrigger = this.componentRoot.find('.language-selector-banner__language-selector__trigger');\n    this.preferredLocaleLink = this.componentRoot.find('.language-selector-banner__language-suggestion > a');\n    this.preferredLocaleLabel = this.preferredLocaleLink.find('.preferred-locale-detected');\n\n    this.init();\n  }\n\n  init () {\n    this.fixLanguageBannerForCloudSignup();\n    this.preselectFooterLanguage(this.currentLocale);\n\n    if (!this.languageSelectorDismissed()) {\n      this.checkLocales();\n    }\n  }\n\n  checkLocales() {\n    return this.detectBrowserLocale().then(locale => {\n      this.storage.session.set(this.preferredLocaleStorageKey, locale);\n      this.preferredLocale = locale;\n\n      if (this.isLocaleDifferent()) {\n        this.bindEvents();\n        this.preselectBannerLanguage(locale);\n      }\n    })\n    .catch(() => {\n      Segment.track({\n        category: 'bxp',\n        action: 'language-selector.api.error',\n        label: 'language-selector',\n      });\n    });\n\n  }\n\n  /**\n   * This is required for WPI-1600, since gateway removes all query params\n   * before proxying to Magnolia. Hence in the language switcher, Magnolia loses\n   * context of which signup landing page it was in. This fix will add the browser\n   * query params to Language switcher\n   */\n  fixLanguageBannerForCloudSignup() {\n      if (window.location.pathname.includes(\"/try/cloud/signup\") || \n          window.location.pathname.includes(\"/signup/rename/site\") || \n          window.location.pathname.includes(\"/ondemand/signup/confirmation\")) {\n          this.componentRoot.find('.language-selector-banner__language-selector__options__list__item a').each(function() {\n              $(this).attr(\"data-locale-url\", $(this).attr(\"data-locale-url\") + window.location.search);\n              $(this).attr(\"href\", $(this).attr(\"href\") + window.location.search);\n          });\n      }\n\n  }\n\n  preselectFooterLanguage(locale) {\n    const footer = $('#footer');\n    const footerLanguageLabel = footer.find('.language-selector--text');\n    const selectableOption = footer.find(`.language-selector option[data-lang=\"${locale}\"]`);\n\n    if (selectableOption.length) {\n      selectableOption.prop('selected', true);\n      footerLanguageLabel.html(selectableOption.text());\n    }\n  }\n\n  preselectBannerLanguage(preferredLocale) {\n    const availableLanguagesCurrentLanguage = this.componentRoot.find(`[data-lang=\"${this.currentLocale}\"]`);\n    const availableLanguagesPreferredLanguage = this.componentRoot.find(`[data-lang=\"${preferredLocale}\"]`);\n\n    if (availableLanguagesCurrentLanguage.length) {\n      availableLanguagesCurrentLanguage.parent().addClass('language-selector-banner__language-selector__options__list__item--selected');\n    }\n\n    if (availableLanguagesPreferredLanguage.length) {\n      const preferredLocaleHref = availableLanguagesPreferredLanguage.data('locale-url');\n      const preferredLocaleLabel = availableLanguagesPreferredLanguage.text();\n\n      this.preferredLocaleLink.attr('href', preferredLocaleHref);\n      this.preferredLocaleLabel.text(preferredLocaleLabel);\n\n      this.showBanner();\n    } else {\n      Segment.track({\n        category: 'bxp',\n        action: `language-selector.preferredLocaleNotAvailable_${preferredLocale}`,\n        label: 'language-selector',\n      });\n    }\n\n  }\n\n  languageSelectorDismissed() {\n    return this.storage.local.get(this.bannerDismissStorageKey);\n  }\n\n  detectBrowserLocale() {\n    const preferredLocale = this.getPreferredLocale();\n    if (this.getPreferredLocale()) {\n      return Promise.resolve(preferredLocale);\n    }\n\n    return axios.get(`${Environment.getWacIntegrationUrl()}/endpoint/info/lang`)\n      .then(response => {\n        return response.data;\n      });\n  }\n\n  getCurrentLocale() {\n    const i18nLocale = Environment.getInternationalSubdomain() || Environment.getInternationalSubdirectory();\n\n    return i18nLocale ? i18nLocale : 'en';\n  }\n\n  getPreferredLocale() {\n    const preferredLocale = this.storage.session.get(this.preferredLocaleStorageKey);\n    if (preferredLocale) {\n      return Promise.resolve(preferredLocale);\n    }\n    return null;\n  }\n\n  isLocaleDifferent() {\n    return this.currentLocale !== this.preferredLocale;\n  }\n\n  bindEvents() {\n    this.selectTrigger.on('click', (event) => {\n      event.stopPropagation();\n      this.toggleSelect();\n    });\n\n    this.dissmissButton.on('click', () => {\n      this.dismissBanner();\n    });\n\n    $(document).on('click', () => {\n      this.hideSelect();\n    })\n  }\n\n  hideSelect() {\n    this.componentRoot.removeClass(this.activeBannerClass);\n  }\n\n  toggleSelect() {\n    this.componentRoot.toggleClass(this.activeBannerClass);\n  }\n\n  showBanner() {\n    this.componentRoot.show();\n    document.body.classList.add('has-lang-select-banner');\n    Segment.track({\n      category: 'bxp',\n      action: `language-selector.shown.preferredLocale_${this.preferredLocale}.currentLocale_${this.currentLocale}`,\n      label: 'language-selector',\n    });\n  }\n\n\n  dismissBanner() {\n    this.storage.local.set(this.bannerDismissStorageKey, 1);\n    this.componentRoot.hide();\n    document.body.classList.remove('has-lang-select-banner');\n    Segment.track({\n      category: 'bxp',\n      action: `language-selector.dismissed.preferredLocale_${this.preferredLocale}.currentLocale_${this.currentLocale}`,\n      label: 'language-selector',\n    });\n  }\n}\n","import _ from 'underscore';\n\n/*\n * Abstraction library for storing data in the browser. Handles all the actual\n * browser interaction for localStorage, sessionStorage and cookies.\n */\nexport default class AtlStorage {\n  constructor() {\n    /*\n     * Create a storage prefix key to use for local/session storage\n     * Use a reverse of the site host. ie: atlassian.com prefix will\n     * be com.atlassian.angular.storage\n     */\n    var prefix = window.location.hostname\n      .split('.')\n      .reverse()\n      .join('.') + '.bxp.storage',\n\n      $window = window,\n      browserSupport = {},\n      stringify = JSON.stringify,\n\n      supports = function (storageType: string) {\n        if (_.has(browserSupport, storageType)) {\n          return browserSupport[storageType];\n        }\n        if (_.contains(['localStorage', 'sessionStorage'], storageType)) {\n          try {\n            browserSupport[storageType] = typeof $window[storageType] === 'object' &&\n              typeof $window[storageType].setItem === 'function' &&\n              typeof $window[storageType].getItem === 'function' &&\n              typeof $window[storageType].clear === 'function';\n          } catch (e) {\n            browserSupport[storageType] = false;\n          }\n        }\n        return browserSupport[storageType];\n      };\n\n    /*\n     * Abstraction over local and session storage. If write error occurs, catch it\n     * then clear the storage and disable browserSupport property for that storage\n     * type so any further attempts to write to that browser storage don't work.\n     * If local/session storage is unsupported, and the stringified value really small\n     * then attempt to save it to a cookie as a fallback mechanism\n     */\n    var setItem = function (storageType: string, key: string, value: string) {\n      var storageKey = [prefix, key].join('.'),\n        outputString = stringify(value);\n\n      if (supports(storageType)) {\n        try {\n          $window[storageType].setItem(storageKey, outputString);\n        } catch (e) {\n          browserSupport[storageType] = false;\n        }\n      } else if (outputString.length < 150) {\n        this.cookie.set(storageKey, value);\n      }\n    };\n\n    /*\n     * Read in the value of a given key from local/session storage.\n     * Fallback to cookies instituted here as well should local/session be\n     * unavailable\n     */\n    var getItem = function (storageType: string, key: string) {\n      var storageKey = [prefix, key].join('.');\n      if (supports(storageType)) {\n        return JSON.parse($window[storageType].getItem(storageKey));\n      } else {\n        this.cookie.get(storageKey);\n      }\n    };\n\n    /*\n     * Wipe out an item from local/session storage with cookie fallback\n    */\n    var removeItem = function (storageType: string, key: string) {\n      var storageKey = [prefix, key].join('.');\n      if (supports(storageType)) {\n        $window[storageType].removeItem(storageKey);\n      } else {\n        this.cookie.remove(storageKey);\n      }\n    };\n\n    /*\n     * Clear all local/session storage data for the app\n     */\n    var clear = function (storageType: string) {\n      if (supports(storageType)) {\n        $window[storageType].clear();\n      }\n    };\n\n    /*\n     * In-memory cache\n     */\n    var SESSION_STORAGE = {};\n    var LOCAL_STORAGE = {\n      timestamp: getItem('localStorage', 'timestamp')\n    };\n\n    if (LOCAL_STORAGE.timestamp && _.isNumber(LOCAL_STORAGE.timestamp)) {\n      var timestamp = new Date(LOCAL_STORAGE.timestamp),\n        ageInDays = (new Date() - timestamp) / 1000 / 60 / 60 / 24;\n      if (ageInDays > 30) {\n        clear('localStorage');\n      }\n    } else {\n      LOCAL_STORAGE = { timestamp: Date.parse(new Date()) };\n      setItem('localStorage', 'timestamp', LOCAL_STORAGE.timestamp);\n    }\n\n    /*\n     * Public API\n     */\n    return {\n      local: {\n        set(key: string, value: any) {\n          // don't add null or undefined, but 0 and '' and false are okay\n          if (!value && value !== 0 && value !== '' && value !== false) {\n            return false;\n          }\n          LOCAL_STORAGE[key] = value;\n          setItem('localStorage', key, value);\n        },\n        get(key: string) {\n          LOCAL_STORAGE[key] = getItem('localStorage', key);\n          return LOCAL_STORAGE[key] || null;\n        },\n        remove(key: string) {\n          delete LOCAL_STORAGE[key];\n          removeItem('localStorage', key);\n        },\n        clear() {\n          LOCAL_STORAGE = {};\n          clear('localStorage');\n        }\n      },\n      session: {\n        set(key: string, value: any) {\n          // don't add null or undefined, but 0 and '' and false are okay\n          if (!value && value !== 0 && value !== '' && value !== false) {\n            return false;\n          }\n          SESSION_STORAGE[key] = value;\n          setItem('sessionStorage', key, value);\n        },\n        get(key: string) {\n          SESSION_STORAGE[key] = getItem('sessionStorage', key);\n          return SESSION_STORAGE[key] || null;\n        },\n        remove(key: string) {\n          delete SESSION_STORAGE[key];\n          removeItem('sessionStorage', key);\n        },\n        clear() {\n          SESSION_STORAGE = {};\n          clear('sessionStorage');\n        }\n      },\n      cookie: {\n        set(key: string, value: string, days: number) {\n          let date = new Date();\n          date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n\n          if (!days) {\n            days = 30;\n          }\n          let expires = \"; expires=\" + date.toUTCString();\n\n          document.cookie = key + \"=\" + value + expires + \"; path=/\";\n        },\n        get(key: string) {\n          const encodedName = encodeURIComponent(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\");\n          const regex = new RegExp(\"(?:(?:^|.*;)\\\\s*\" + encodedName + \"\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$\");\n          return decodeURIComponent(document.cookie.replace(regex, \"$1\")) || null;\n        },\n        remove(key: string) {\n          this.cookie.set(key, '', -1);\n        }\n      },\n      support: browserSupport\n    };\n  }\n}\n"],"names":["LanguageSwitcherNav","componentRoot","params","_classCallCheck","this","$","_objectSpread","storage","Storage","currentLocale","getCurrentLocale","preferredLocale","bannerDismissStorageKey","preferredLocaleStorageKey","activeBannerClass","dissmissButton","find","selectTrigger","preferredLocaleLink","preferredLocaleLabel","init","key","value","fixLanguageBannerForCloudSignup","preselectFooterLanguage","languageSelectorDismissed","checkLocales","_this","detectBrowserLocale","then","locale","session","set","isLocaleDifferent","bindEvents","preselectBannerLanguage","Segment","category","action","label","window","location","pathname","includes","each","attr","search","footer","footerLanguageLabel","selectableOption","concat","length","prop","html","text","availableLanguagesCurrentLanguage","availableLanguagesPreferredLanguage","parent","addClass","preferredLocaleHref","data","showBanner","local","get","getPreferredLocale","Promise","resolve","axios","Environment","response","_this2","on","event","stopPropagation","toggleSelect","dismissBanner","document","hideSelect","removeClass","toggleClass","show","body","classList","add","hide","remove","AtlStorage","_createClass","prefix","hostname","split","reverse","join","$window","browserSupport","stringify","JSON","supports","storageType","_","_typeof","setItem","getItem","clear","e","storageKey","outputString","cookie","parse","removeItem","SESSION_STORAGE","LOCAL_STORAGE","timestamp","Date","days","date","setTime","getTime","expires","toUTCString","encodedName","encodeURIComponent","replace","regex","RegExp","decodeURIComponent","support"],"sourceRoot":""}