{"version":3,"file":"script.min.js","sources":["../../../../block-editor/blocks/tabs/script.js"],"sourcesContent":["class Tabs {\n\n\tconstructor(node, config = {}) {\n\t\tthis.index = -1;\n\t\tthis.node = node;\n\n\t\tthis.config = Object.assign({\n\t\t\tcontentsActiveClass\t\t: 'tabs__tab--active',\n\t\t\tcontentsClass \t\t: 'tabs__tab',\n\t\t\tinteractiveClass \t\t: 'tabs--interactive',\n\t\t\tnavClass \t\t: 'tabs__nav',\n\t\t\tnavActiveClass \t\t: 'tabs__nav--active',\n\t\t\tnavItemClass \t\t: 'tabs__nav-item',\n\t\t\tnavItemActiveClass \t\t: 'tabs__nav-item--active',\n\t\t\tnavLinkClass \t\t: 'tabs__nav-link',\n\t\t\tcurrentItemClass \t\t: 'tabs__nav-current',\n\t\t\tcollapsedClassname : 'tabs__tab--collapsed',\n\t\t\tcloneClassname : 'tabs__tab--clone',\n\t\t}, config);\n\n\t\tconst {\n\t\t\tnavItemClass,\n\t\t\tnavLinkClass,\n\t\t\tnavActiveClass,\n\t\t\tcurrentItemClass,\n\t\t\tnavClass,\n\t\t\tinteractiveClass,\n\t\t\tcontentsClass\n\t\t} = this.config;\n\n\t\tif (!this.node || this.node.classList.contains(interactiveClass)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.hashMap = {};\n\t\tthis.nav = this.node.querySelector(`.${navClass}`);\n\t\tthis.currentItem = this.node.querySelector(`.${currentItemClass}`);\n\n\t\tconst navItems = [...this.node.querySelectorAll(`.${navItemClass}`)];\n\t\tconst navLinks = [...this.node.querySelectorAll(`.${navLinkClass}`)];\n\n\t\tif ( this.currentItem && this.nav ) {\n\t\t\tthis.currentItemText = this.currentItem.querySelector('span');\n\n\t\t\tthis.currentItem.addEventListener( 'click', () => {\n\t\t\t\tthis.nav.classList.toggle( navActiveClass );\n\t\t\t} );\n\t\t}\n\n\t\tthis.tabs = [...this.node.querySelectorAll(`.${contentsClass}`)].map((content, index) => {\n\t\t\tconst link = navLinks[index];\n\t\t\tconst navItem = navItems[index];\n\t\t\tconst hash = link.getAttribute('href').replace(/^#/, '');\n\n\t\t\tcontent.setAttribute('role', 'tabpanel');\n\t\t\tcontent.setAttribute('tabindex', -1);\n\n\t\t\tthis.hashMap[hash] = index;\n\n\t\t\treturn {\n\t\t\t\topened: false,\n\t\t\t\tcontent,\n\t\t\t\thash,\n\t\t\t\tlink,\n\t\t\t\tnavItem,\n\t\t\t}\n\t\t});\n\n\t\tthis.nav.addEventListener('click', (e) => {\n\t\t let target = e.target;\n\n\t\t while (target && target !== this.nav) {\n\t\t if (\n\t\t target.classList.contains(this.config.navLinkClass) &&\n\t\t target.hash &&\n\t\t this.hashMap[target.hash.replace(/^#/, '')] > -1\n\t\t ) {\n\t\t e.preventDefault();\n\t\t this.goToHash(target.hash);\n\t\t break;\n\t\t }\n\n\t\t target = target.parentNode;\n\t\t }\n\t\t});\n\n\t\tif (window.location.hash) {\n\t\t\tthis.goToHash(window.location.hash, false);\n\t\t}\n\n\t\twindow.addEventListener('hashchange', () => this.goToHash(window.location.hash));\n\t\twindow.addEventListener('popstate', () => this.goToHash(window.location.hash));\n\n\t\tif (this.index === -1) {\n\t\t\tthis.goTo(0, false);\n\t\t}\n\n\t\tthis.node.classList.add(this.config.interactiveClass);\n\t}\n\n\tgoToHash(hash, history = true) {\n\t\thash = hash.replace(/^#/, '');\n\n\t\tif (this.hashMap[hash] > -1) {\n\t\t\tthis.goTo(this.hashMap[hash], history);\n\t\t}\n\t}\n\n\tgoTo(index, history = true) {\n\n\t\tif (this.index > -1) {\n\t\t\tif (this.tabs[this.index].navItem) {\n\t\t\t\tthis.tabs[this.index].navItem.classList.remove(this.config.navItemActiveClass);\n\t\t\t}\n\n\t\t\tthis.tabs[this.index].content.classList.remove(this.config.contentsActiveClass);\n\t\t\tthis.tabs[this.index].content.setAttribute('tabindex', '-1');\n\t\t\tthis.tabs[this.index].content.removeAttribute('aria-selected');\n\t\t}\n\n\t\tthis.index = index;\n\n\t\tif (!this.tabs[this.index]) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { content, navItem, hash, link } = this.tabs[this.index];\n\t\tconst { navItemActiveClass, contentsActiveClass, collapsedClassname, cloneClassname, contentsClass } = this.config;\n\n\t\tif (navItem) {\n\t\t\tnavItem.classList.add(navItemActiveClass);\n\t\t}\n\n\t\tcontent.classList.add(contentsActiveClass);\n\t\tcontent.setAttribute('aria-selected', 'true');\n\t\tcontent.removeAttribute('tabindex', '-1');\n\n\t\tconst thisPanelOpen = [...navItem.children].filter((child) => {\n\t\t\treturn child.classList.contains(contentsClass);\n\t\t}).length;\n\n\t\t// create a clone for mobile placement\n\t\tthis.removeClones();\n\n\t\tif (!thisPanelOpen) {\n\t\t\tconst clone = content.cloneNode(true);\n\t\t\tclone.classList.add(cloneClassname);\n\t\t\tclone.classList.add(collapsedClassname);\n\n\t\t\tnavItem.append(clone);\n\t\t}\n\n\t\tcontent.focus();\n\n\t\tsetTimeout(() => {\n\t\t\t// enable animations by removing collapsed class name.\n\t\t\t[...navItem.children].map((node) => node.classList.remove(collapsedClassname));\n\t\t}, 200);\n\n\t\tif ( history && window.location.hash !== `#${hash}`) {\n\t\t\twindow.history.replaceState( '', '', `#${hash}` );\n\t\t}\n\n\t\tif ( this.currentItemText ) {\n\t\t\tthis.currentItemText.innerText = link.innerText.trim();\n\t\t}\n\n\t\twindow.dispatchEvent(new CustomEvent('resize'));\n\t}\n\n\tremoveClones() {\n\t\t// remove any clones\n\t\tconst clones = document.getElementsByClassName(this.config.cloneClassname);\n\t\t[ ...clones].map((node) => {\n\t\t\tnode.parentNode.removeChild(node)\n\t\t});\n\t}\n\n\topen(index, history) {\n\t\tthis.tabs[index].opened = true;\n\t\tthis.tabs[index].content.classList.add(this.config.contentsActiveClass);\n\t\tthis.goTo(index, history);\n\t}\n\n\tclose(index) {\n\t\tthis.tabs[index].opened = false;\n\t\tthis.tabs[index].content.classList.remove(this.config.contentsActiveClass);\n\t}\n\n\ttoggle(index) {\n\n\t\treturn this.tabs[index].opened ? this.close(index) : this.open(index);\n\t}\n\n}\n\nTabs.instances = Array.from(document.querySelectorAll('.tabs')).map(n => new Tabs(n));\n\nexport default Tabs;\n"],"names":["Tabs","constructor","node","config","this","index","Object","assign","contentsActiveClass","contentsClass","interactiveClass","navClass","navActiveClass","navItemClass","navItemActiveClass","navLinkClass","currentItemClass","collapsedClassname","cloneClassname","classList","contains","hashMap","nav","querySelector","currentItem","navItems","querySelectorAll","navLinks","currentItemText","addEventListener","toggle","tabs","map","content","link","navItem","hash","getAttribute","replace","setAttribute","opened","e","target","preventDefault","goToHash","parentNode","window","location","goTo","add","history","remove","removeAttribute","thisPanelOpen","children","filter","child","length","removeClones","clone","cloneNode","append","focus","setTimeout","replaceState","innerText","trim","dispatchEvent","CustomEvent","document","getElementsByClassName","removeChild","open","close","instances","Array","from","n"],"mappings":"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"}