{"version":3,"file":"chunks/7ef0d46f0f73c9.js","mappings":"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","sources":["webpack:///./resources/js/components/generic/prototype-tabs.ts"],"sourcesContent":["import * as $ from \"jquery\";\nimport imkt from '../../imkt';\nimport url from '../../utils/url';\n\nexport default class PrototypeTabs {\n  activeClass = \"active\";\n  mobileSelectClassName = \"imkt-ui-tabs--mobile__select\";\n  domRoot: JQuery<any>;\n  params: any;\n  menuLis: JQuery<HTMLElement>;\n  menuLinks: JQuery<HTMLElement>;\n  tabSections: JQuery<HTMLElement>;\n  currentIndex: any;\n\n  constructor(domRoot: HTMLElement, params: any) {\n    this.domRoot = $(domRoot);\n    this.params = {\n      // define default params here\n      useScrolling: false,\n      noDefault: false,\n      useMobileSelect: false,\n      ...params,\n    };\n    this.init();\n  }\n\n  init() {\n    this.menuLis = $(\".tab-menu > li\", this.domRoot);\n    this.menuLinks = $(\"a\", this.menuLis);\n    this.tabSections = $(\".tab-content\");\n\n    this.menuLinks.filter(\"[data-additional-content]\").each(function (i, el) {\n      var tab = $(el);\n      tab.data(\"additionalContent\", $(tab.attr(\"data-additional-content\")));\n    });\n\n    this.bindEvents();\n    this.setInitialState();\n\n    if (this.params.useMobileSelect) {\n      this.initMobileSelect();\n    }\n  }\n\n  activateByTabName(tabName: string) {\n    var tabElement = this.menuLinks.filter(\"[data-name='\" + tabName + \"']\");\n    if (tabElement.length) {\n      this.activateTab(tabElement);\n    } else {\n      this.activateTab(this.menuLinks.eq(0), true);\n    }\n  }\n\n  activateByTabIndex(index: number) {\n    this.activateTab(this.menuLinks.eq(index));\n  }\n\n  setInitialState() {\n    var urlParams = url.getUrlParams();\n\n    this.menuLinks.trigger(\"close.tab\");\n\n    if (!this.params.noDefault) {\n      urlParams && urlParams.tab\n        ? this.activateByTabName(urlParams.tab)\n        : this.activateByTabIndex(0);\n    }\n  }\n\n  bindEvents() {\n    this.menuLinks\n      .on(\"click\", $.proxy(this.onclick_menuLink, this))\n      .on(\"open.tab\", $.proxy(this.onopen_tab, this))\n      .on(\"close.tab\", $.proxy(this.onclose_tab, this));\n  }\n\n  onclick_menuLink(e: MouseEvent) {\n    e.preventDefault();\n    this.activateTab($(e.currentTarget));\n  }\n  \n  onopen_tab(e) {\n    var additionalContent = $(e.currentTarget).data(\"additionalContent\");\n    if (additionalContent && additionalContent.length) {\n      additionalContent.show();\n    }\n  }\n\n  onclose_tab(e) {\n    var additionalContent = $(e.currentTarget).data(\"additionalContent\");\n    if (additionalContent && additionalContent.length) {\n      additionalContent.hide();\n    }\n  }\n\n  updateHistory(tab: JQuery<HTMLElement>) {\n    var tabName;\n\n    if (imkt.core.supports.history()) {\n      tabName = tab.attr(\"data-name\");\n\n      // Append url params from incoming URL on history state\n      if (typeof tabName !== typeof undefined && tabName !== false) {\n        var currentUrl = window.location.href;\n        var urlParams = url.getUrlParams(currentUrl);\n\n        if (urlParams) {\n          urlParams[\"tab\"] = tabName;\n        } else {\n          urlParams = { tab: tabName };\n        }\n\n        window.history.replaceState(\n          tabName,\n          document.title,\n          \"?\" + $.param(urlParams) + window.location.hash\n        );\n      }\n    }\n  }\n\n  checkScrollPosition() {\n    var tabOffsetTop = this.domRoot.offset().top - 30;\n    if ($(window).scrollTop() < tabOffsetTop) {\n      $(\"body, html\").scrollTop(tabOffsetTop);\n    }\n  }\n\n  activateTab(tab: JQuery<HTMLElement>, skipHistory?: boolean) {\n    var previousTab =\n      typeof this.currentIndex === \"number\"\n        ? this.menuLinks.eq(this.currentIndex)\n        : null;\n\n    if (tab.length && !tab.is(previousTab)) {\n      this.menuLis.removeClass(this.activeClass);\n      tab.closest(\"li\").addClass(this.activeClass);\n\n      this.tabSections.hide().filter(tab.attr(\"href\")).show();\n\n      this.currentIndex = this.menuLinks.index(tab);\n\n      if (this.params.useScrolling) this.checkScrollPosition();\n\n      if (previousTab) {\n        previousTab.trigger(\"close.tab\");\n      }\n      tab.trigger(\"open.tab\");\n\n      if (!skipHistory) {\n        this.updateHistory(tab);\n      }\n    }\n  }\n\n  initMobileSelect() {\n    var self = this;\n    var select = document.createElement(\"select\");\n    select.className = this.mobileSelectClassName;\n\n    $.each(this.menuLinks, function (i, link) {\n      var option = document.createElement(\"option\");\n      var dataName = $(link).data(\"name\");\n      var dataAdditionalContent = $(link).data(\"additional-content\");\n      var value = $(link).text();\n\n      $(option).data(\"name\", dataName);\n      $(option).data(\"additional-content\", dataAdditionalContent);\n      $(option).val(dataName);\n      $(option).text(value);\n\n      if ($(link).parent().hasClass(\"active\")) {\n        $(option).attr(\"selected\", \"selected\");\n      }\n\n      $(select).append(option);\n    });\n    this.domRoot.prepend(select);\n\n    $(select).on(\"change\", function () {\n      var index = $(this).find(\":selected\").index();\n      self.activateTab(self.menuLinks.eq(index));\n    });\n  }\n}\n"],"names":["PrototypeTabs","domRoot","params","_classCallCheck","_defineProperty","this","$","_objectSpread","useScrolling","noDefault","useMobileSelect","init","key","value","menuLis","menuLinks","tabSections","filter","each","i","el","tab","data","attr","bindEvents","setInitialState","initMobileSelect","tabName","tabElement","length","activateTab","eq","index","urlParams","url","trigger","activateByTabName","activateByTabIndex","on","onclick_menuLink","onopen_tab","onclose_tab","e","preventDefault","currentTarget","additionalContent","show","hide","imkt","_typeof","currentUrl","window","location","href","history","replaceState","document","title","hash","tabOffsetTop","offset","top","scrollTop","skipHistory","previousTab","currentIndex","is","removeClass","activeClass","closest","addClass","checkScrollPosition","updateHistory","self","select","createElement","className","mobileSelectClassName","link","option","dataName","dataAdditionalContent","text","val","parent","hasClass","append","prepend","find"],"sourceRoot":""}