function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function t(e) { return (t = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (t) { return _typeof(t); } : function (t) { return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : _typeof(t); })(e); } function e(t) { return function (t) { if (Array.isArray(t)) return i(t); }(t) || function (t) { if ("undefined" != typeof Symbol && null != t[Symbol.iterator] || null != t["@@iterator"]) return Array.from(t); }(t) || n(t) || function () { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function n(t, e) { if (t) { if ("string" == typeof t) return i(t, e); var n = Object.prototype.toString.call(t).slice(8, -1); return "Object" === n && t.constructor && (n = t.constructor.name), "Map" === n || "Set" === n ? Array.from(t) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? i(t, e) : void 0; } } function i(t, e) { (null == e || e > t.length) && (e = t.length); for (var n = 0, i = new Array(e); n < e; n++) { i[n] = t[n]; } return i; } function a(t, e) { for (var n = 0; n < e.length; n++) { var i = e[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i); } } function r(t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function"); } function o(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), e && d(t, e); } function s(t) { var e = h(); return function () { var n, i = f(t); if (e) { var a = f(this).constructor; n = Reflect.construct(i, arguments, a); } else n = i.apply(this, arguments); return u(this, n); }; } function u(e, n) { return !n || "object" !== t(n) && "function" != typeof n ? c(e) : n; } function c(t) { if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return t; } function b(t) { var e = "function" == typeof Map ? new Map() : void 0; return (b = function b(t) { if (null === t || (n = t, -1 === Function.toString.call(n).indexOf("[native code]"))) return t; var n; if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); if (void 0 !== e) { if (e.has(t)) return e.get(t); e.set(t, i); } function i() { return l(t, arguments, f(this).constructor); } return i.prototype = Object.create(t.prototype, { constructor: { value: i, enumerable: !1, writable: !0, configurable: !0 } }), d(i, t); })(t); } function l(t, e, n) { return (l = h() ? Reflect.construct : function (t, e, n) { var i = [null]; i.push.apply(i, e); var a = new (Function.bind.apply(t, i))(); return n && d(a, n.prototype), a; }).apply(null, arguments); } function h() { if ("undefined" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0; } catch (t) { return !1; } } function d(t, e) { return (d = Object.setPrototypeOf || function (t, e) { return t.__proto__ = e, t; })(t, e); } function f(t) { return (f = Object.setPrototypeOf ? Object.getPrototypeOf : function (t) { return t.__proto__ || Object.getPrototypeOf(t); })(t); } var v = function (t) { o(n, b(HTMLElement)); var e = s(n); function n() { return r(this, n), e.apply(this, arguments); } return n; }(); customElements.define("joomla-tab-element", v); var m = function (t) { o(d, b(HTMLElement)); var i, u, l, h = s(d); function d() { var t; return r(this, d), (t = h.call(this)).tabs = [], t.tabsElements = [], t.previousActive = null, t.onMutation = t.onMutation.bind(c(t)), t.keyBehaviour = t.keyBehaviour.bind(c(t)), t.activateTab = t.activateTab.bind(c(t)), t.deactivateTabs = t.deactivateTabs.bind(c(t)), t.checkView = t.checkView.bind(c(t)), t.observer = new MutationObserver(t.onMutation), t.observer.observe(c(t), { attributes: !1, childList: !0, subtree: !0 }), t; } return i = d, l = [{ key: "observedAttributes", get: function get() { return ["recall", "orientation", "view", "breakpoint"]; } }], (u = [{ key: "recall", get: function get() { return this.getAttribute("recall"); }, set: function set(t) { this.setAttribute("recall", t); } }, { key: "view", get: function get() { return this.getAttribute("view"); }, set: function set(t) { this.setAttribute("view", t); } }, { key: "orientation", get: function get() { return this.getAttribute("orientation"); }, set: function set(t) { this.setAttribute("orientation", t); } }, { key: "breakpoint", get: function get() { return parseInt(this.getAttribute("breakpoint"), 10); }, set: function set(t) { this.setAttribute("breakpoint", t); } }, { key: "connectedCallback", value: function value() { var t = this; if ((!this.orientation || this.orientation && !["horizontal", "vertical"].includes(this.orientation)) && (this.orientation = "horizontal"), (!this.view || this.view && !["tabs", "accordion"].includes(this.view)) && (this.view = "tabs"), this.tabsElements = [].slice.call(this.children).filter(function (t) { return "joomla-tab-element" === t.tagName.toLowerCase(); }), this.tabsElements.length) { if (this.isNested = this.parentNode.closest("joomla-tab") instanceof HTMLElement, this.hydrate(), this.hasAttribute("recall") && !this.isNested && this.activateFromState(), window.location.hash) { var e = window.location.hash.substr(1), n = this.tabs.filter(function (t) { return t.tab.id === e; }); n.length && this.activateTab(n[0].tab, !1); } this.tabs.filter(function (t) { return t.tab.hasAttribute("active"); }).length || this.activateTab(this.tabs[0].tab, !1), this.addEventListener("keyup", this.keyBehaviour), this.breakpoint && (this.checkView(), window.addEventListener("resize", function () { t.checkView(); })); } } }, { key: "disconnectedCallback", value: function value() { var t = this; this.tabs.map(function (e) { return e.tabButton.removeEventListener("click", t.activateTab), e.accordionButton.removeEventListener("click", t.activateTab), e; }), this.removeEventListener("keyup", this.keyBehaviour); } }, { key: "attributeChangedCallback", value: function value(t, e, n) { switch (t) { case "view": (!n || n && !["tabs", "accordion"].includes(n)) && (this.view = "tabs"), "tabs" === n && n !== e ? (this.tabButtonContainer && this.tabButtonContainer.removeAttribute("hidden"), this.tabs.map(function (t) { return t.accordionButton.setAttribute("hidden", ""); })) : "accordion" === n && n !== e && (this.tabButtonContainer && this.tabButtonContainer.setAttribute("hidden", ""), this.tabs.map(function (t) { return t.accordionButton.removeAttribute("hidden"); })); } } }, { key: "hydrate", value: function value() { var t = this; this.tabButtonContainer = document.createElement("div"), this.tabButtonContainer.setAttribute("role", "tablist"), this.insertAdjacentElement("afterbegin", this.tabButtonContainer), "accordion" === this.view && this.tabButtonContainer.setAttribute("hidden", ""), this.tabsElements.map(function (e) { var n = document.createElement("button"); n.setAttribute("aria-expanded", !!e.hasAttribute("active")), n.setAttribute("aria-controls", e.id), n.setAttribute("type", "button"), n.innerHTML = ''.concat(e.getAttribute("name"), ''), e.insertAdjacentElement("beforebegin", n), "tabs" === t.view && n.setAttribute("hidden", ""), n.addEventListener("click", t.activateTab); var i = document.createElement("button"); return i.setAttribute("aria-expanded", !!e.hasAttribute("active")), i.setAttribute("aria-controls", e.id), i.setAttribute("role", "tab"), i.setAttribute("type", "button"), i.innerHTML = "".concat(e.getAttribute("name")), t.tabButtonContainer.appendChild(i), i.addEventListener("click", t.activateTab), "tabs" === t.view ? e.setAttribute("role", "tabpanel") : e.setAttribute("role", "region"), t.tabs.push({ tab: e, tabButton: i, accordionButton: n }), e; }); } }, { key: "onMutation", value: function value(t) { var e, i = this, a = function (t, e) { var i = "undefined" != typeof Symbol && t[Symbol.iterator] || t["@@iterator"]; if (!i) { if (Array.isArray(t) || (i = n(t)) || e && t && "number" == typeof t.length) { i && (t = i); var a = 0, r = function r() {}; return { s: r, n: function n() { return a >= t.length ? { done: !0 } : { done: !1, value: t[a++] }; }, e: function e(t) { throw t; }, f: r }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, s = !0, u = !1; return { s: function s() { i = i.call(t); }, n: function n() { var t = i.next(); return s = t.done, t; }, e: function e(t) { u = !0, o = t; }, f: function f() { try { s || null == i["return"] || i["return"](); } finally { if (u) throw o; } } }; }(t); try { for (a.s(); !(e = a.n()).done;) { var r = e.value; "childList" === r.type && (r.addedNodes.length && [].slice.call(r.addedNodes).map(function (t) { return i.createNavs(t); }), r.removedNodes.length && [].slice.call(r.addedNodes).map(function (t) { return i.removeNavs(t); })); } } catch (t) { a.e(t); } finally { a.f(); } } }, { key: "keyBehaviour", value: function value(t) { if ([].concat(e(this.tabs.map(function (t) { return t.tabButton; })), e(this.tabs.map(function (t) { return t.accordionButton; }))).includes(document.activeElement) && !t.metaKey && !t.altKey) { var n, i; if ("tabs" === this.view) { var a = this.tabs.findIndex(function (t) { return t.tab.hasAttribute("active"); }); n = a - 1 >= 0 ? this.tabs[a - 1] : this.tabs[this.tabs.length - 1], i = a + 1 <= this.tabs.length - 1 ? this.tabs[a + 1] : this.tabs[0]; } else { var r = this.tabs.map(function (t) { return t.accordionButton; }).findIndex(function (t) { return t === document.activeElement; }); n = r - 1 >= 0 ? this.tabs[r - 1] : this.tabs[this.tabs.length - 1], i = r + 1 <= this.tabs.length - 1 ? this.tabs[r + 1] : this.tabs[0]; } switch (t.keyCode) { case 37: case 38: "tabs" === this.view ? (n.tabButton.click(), n.tabButton.focus()) : n.accordionButton.focus(), t.preventDefault(); break; case 39: case 40: "tabs" === this.view ? (i.tabButton.click(), i.tabButton.focus()) : i.accordionButton.focus(), t.preventDefault(); } } } }, { key: "deactivateTabs", value: function value() { var t = this; this.tabs.map(function (e) { return e.accordionButton.removeAttribute("aria-disabled"), e.tabButton.removeAttribute("aria-expanded"), e.accordionButton.setAttribute("aria-expanded", !1), e.tab.hasAttribute("active") && (t.dispatchCustomEvent("joomla.tab.hide", "tabs" === t.view ? e.tabButton : e.accordionButton, t.previousActive), e.tab.removeAttribute("active"), e.tab.setAttribute("tabindex", "-1"), t.dispatchCustomEvent("joomla.tab.hidden", "tabs" === t.view ? e.tabButton : e.accordionButton, t.previousActive), t.previousActive = "tabs" === t.view ? e.tabButton : e.accordionButton), e; }); } }, { key: "activateTab", value: function value(t) { var e, n = this, i = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1]; if (t.currentTarget ? e = this.tabs.find(function (e) { return ("tabs" === n.view ? e.tabButton : e.accordionButton) === t.currentTarget; }) : t instanceof HTMLElement ? e = this.tabs.find(function (e) { return e.tab === t; }) : Number.isInteger(t) && (e = this.tabs[t]), e) { if ("accordion" === this.view && this.tabs.find(function (t) { return "true" === t.accordionButton.getAttribute("aria-expanded"); }) === e) return e.tab.hasAttribute("active") ? void e.tab.removeAttribute("active") : void e.tab.setAttribute("active", ""); this.deactivateTabs(), e.tabButton.setAttribute("aria-expanded", !0), e.accordionButton.setAttribute("aria-expanded", !0), e.accordionButton.setAttribute("aria-disabled", !0), e.tab.setAttribute("active", ""), e.tabButton.removeAttribute("tabindex"), this.dispatchCustomEvent("joomla.tab.show", "tabs" === this.view ? e.tabButton : e.accordionButton, this.previousActive), i && ("tabs" === this.view ? e.tabButton.focus() : e.accordionButton.focus()), i && this.saveState(e.tab.id), this.dispatchCustomEvent("joomla.tab.shown", "tabs" === this.view ? e.tabButton : e.accordionButton, this.previousActive); } } }, { key: "createNavs", value: function value(t) { if (!(t instanceof Element && "joomla-tab-element" !== t.tagName.toLowerCase()) && [].some.call(this.children, function (e) { return e === t; }).length && t.getAttribute("name") && t.getAttribute("id")) { var e = [].slice.call(this.children).filter(function (t) { return "joomla-tab-element" === t.tagName.toLowerCase(); }), n = e.findIndex(function (e) { return e === t; }), i = document.createElement("button"); i.setAttribute("aria-expanded", !!t.hasAttribute("active")), i.setAttribute("aria-controls", t.id), i.setAttribute("type", "button"), i.innerHTML = ''.concat(t.getAttribute("name"), ''), t.insertAdjacentElement("beforebegin", i), "tabs" === this.view && i.setAttribute("hidden", ""), i.addEventListener("click", this.activateTab); var a = document.createElement("button"); a.setAttribute("aria-expanded", !!t.hasAttribute("active")), a.setAttribute("aria-controls", t.id), a.setAttribute("role", "tab"), a.setAttribute("type", "button"), a.innerHTML = "".concat(t.getAttribute("name")), e.length - 1 === n ? (this.tabButtonContainer.appendChild(a), this.tabs.push({ tab: t, tabButton: a, accordionButton: i })) : 0 === n ? (this.tabButtonContainer.insertAdjacentElement("afterbegin", a), this.tabs.slice(0, 0, { tab: t, tabButton: a, accordionButton: i })) : (this.tabs[n - 1].tabButton.insertAdjacentElement("afterend", a), this.tabs.slice(n - 1, 0, { tab: t, tabButton: a, accordionButton: i })), a.addEventListener("click", this.activateTab); } } }, { key: "removeNavs", value: function value(t) { if (!(t instanceof Element && "joomla-tab-element" !== t.tagName.toLowerCase()) && [].some.call(this.children, function (e) { return e === t; }).length && t.getAttribute("name") && t.getAttribute("id")) { var e = t.previousSilbingElement; e && "button" === e.tagName.toLowerCase() && (e.removeEventListener("click", this.keyBehaviour), e.parentNode.removeChild(e)); var n = this.tabButtonContainer.querySelector("[aria-controls=".concat(e.id, "]")); n && (n.removeEventListener("click", this.keyBehaviour), n.parentNode.removeChild(n)); var i = this.tabs.findIndex(function (e) { return e.tabs === t; }); i - 1 == 0 ? this.tabs.shift() : i - 1 === this.tabs.length ? this.tabs.pop() : this.tabs.splice(i - 1, 1); } } }, { key: "checkView", value: function value() { if (this.breakpoint) if (document.body.getBoundingClientRect().width > this.breakpoint) { if ("tabs" === this.view) return; this.tabButtonContainer.removeAttribute("hidden"), this.tabs.map(function (t) { return t.accordionButton.setAttribute("hidden", ""), t.accordionButton.setAttribute("role", "tabpanel"), "true" === t.accordionButton.getAttribute("aria-expanded") && t.tab.setAttribute("active", ""), t; }), this.setAttribute("view", "tabs"); } else { if ("accordion" === this.view) return; this.tabButtonContainer.setAttribute("hidden", ""), this.tabs.map(function (t) { return t.accordionButton.removeAttribute("hidden"), t.accordionButton.setAttribute("role", "region"), t; }), this.setAttribute("view", "accordion"); } } }, { key: "getStorageKey", value: function value() { return window.location.href.toString().split(window.location.host)[1].replace(/&return=[a-zA-Z0-9%]+/, "").split("#")[0]; } }, { key: "saveState", value: function value(t) { var e = this.getStorageKey(); sessionStorage.setItem(e, t); } }, { key: "activateFromState", value: function value() { var t = this; this.hasNested = this.querySelector("joomla-tab") instanceof HTMLElement; var e = sessionStorage.getItem(this.getStorageKey()); if (e) { var n = this.tabs.findIndex(function (t) { return t.tab.id === e; }); if (n >= 0) this.activateTab(n, !1);else if (this.hasNested && this.querySelector("joomla-tab")) { var i = [].slice.call(this.querySelectorAll("joomla-tab-element")).reverse().filter(function (t) { return t.id === e; }); if (i.length) { var a = i[0].closest("joomla-tab"); [].slice.call(a.querySelectorAll("joomla-tab-element")).forEach(function (t) { t.removeAttribute("active"), t.id === e && t.setAttribute("active", ""); }); for (var r = function r() { var t = a.closest("joomla-tab"), e = a.parentNode.closest("joomla-tab-element"); [].slice.call(t.querySelectorAll("joomla-tab-element")).forEach(function (t) { t.removeAttribute("active"), e === t && (t.setAttribute("active", ""), a = e); }); }; a.parentNode.closest("joomla-tab") !== this;) { r(); } [].slice.call(this.children).filter(function (t) { return "joomla-tab-element" === t.tagName.toLowerCase(); }).forEach(function (e) { e.removeAttribute("active"), e.querySelector("joomla-tab-element[active]") && t.activateTab(e, !1); }); } } } } }, { key: "dispatchCustomEvent", value: function value(t, e, n) { var i = new CustomEvent(t, { bubbles: !0, cancelable: !0 }); i.relatedTarget = n, e.dispatchEvent(i); } }]) && a(i.prototype, u), l && a(i, l), d; }(); customElements.define("joomla-tab", m);