{"version":3,"file":"script.min.js","sources":["../../../../block-editor/blocks/tabs/script.js"],"sourcesContent":["/*\n * This content is licensed according to the W3C Software License at\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n * File: tabs-automatic.js\n *\n * Desc: Tablist widget that implements ARIA Authoring Practices\n */\n\n'use strict';\n\nclass TabsAutomatic {\n constructor(groupNode) {\n this.tablistNode = groupNode;\n\n this.tabs = [];\n\n this.firstTab = null;\n this.lastTab = null;\n\n this.tabs = Array.from(this.tablistNode.querySelectorAll('[role=tab]'));\n this.tabpanels = [];\n\n for (var i = 0; i < this.tabs.length; i += 1) {\n var tab = this.tabs[i];\n var tabpanel = document.getElementById(tab.getAttribute('aria-controls'));\n\n tab.tabIndex = -1;\n tab.setAttribute('aria-selected', 'false');\n this.tabpanels.push(tabpanel);\n\n tab.addEventListener('keydown', this.onKeydown.bind(this));\n tab.addEventListener('click', this.onClick.bind(this));\n\n if (!this.firstTab) {\n this.firstTab = tab;\n }\n this.lastTab = tab;\n }\n\n this.setSelectedTab(this.firstTab, false);\n\n //mobile view\n this.currentItem = this.tablistNode.querySelector('.tabs__nav-current');\n\n if ( this.currentItem && this.tabs ) {\n this.currentItemText = this.currentItem.querySelector('span');\n\n this.currentItem.addEventListener( 'click', () => {\n this.tablistNode.querySelector('.tabs__nav').classList.toggle( 'tabs__nav--active' );\n } );\n }\n }\n\n setSelectedTab(currentTab, setFocus) {\n if (typeof setFocus !== 'boolean') {\n setFocus = true;\n }\n for (var i = 0; i < this.tabs.length; i += 1) {\n var tab = this.tabs[i];\n if (currentTab === tab) {\n tab.setAttribute('aria-selected', 'true');\n tab.removeAttribute('tabindex');\n this.tabpanels[i].classList.remove('is-hidden');\n if (setFocus) {\n tab.focus();\n }\n\t\tif ( this.currentItemText ) {\n\t\t\tthis.currentItemText.innerText = tab.innerText.trim();\n\t\t\tthis.tablistNode.querySelector('.tabs__nav').classList.remove( 'tabs__nav--active' );\n\t\t}\n } else {\n tab.setAttribute('aria-selected', 'false');\n tab.tabIndex = -1;\n this.tabpanels[i].classList.add('is-hidden');\n }\n\n\t\t\n }\n }\n\n setSelectedToPreviousTab(currentTab) {\n var index;\n\n if (currentTab === this.firstTab) {\n this.setSelectedTab(this.lastTab);\n } else {\n index = this.tabs.indexOf(currentTab);\n this.setSelectedTab(this.tabs[index - 1]);\n }\n }\n\n setSelectedToNextTab(currentTab) {\n var index;\n\n if (currentTab === this.lastTab) {\n this.setSelectedTab(this.firstTab);\n } else {\n index = this.tabs.indexOf(currentTab);\n this.setSelectedTab(this.tabs[index + 1]);\n }\n }\n\n /* EVENT HANDLERS */\n\n onKeydown(event) {\n var tgt = event.currentTarget,\n flag = false;\n\n switch (event.key) {\n case 'ArrowLeft':\n this.setSelectedToPreviousTab(tgt);\n flag = true;\n break;\n\n case 'ArrowRight':\n this.setSelectedToNextTab(tgt);\n flag = true;\n break;\n\n case 'Home':\n this.setSelectedTab(this.firstTab);\n flag = true;\n break;\n\n case 'End':\n this.setSelectedTab(this.lastTab);\n flag = true;\n break;\n\n default:\n break;\n }\n\n if (flag) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n onClick(event) {\n event.preventDefault();\n this.setSelectedTab(event.currentTarget);\n }\n}\n\n// Initialize tablist\n\nwindow.addEventListener('load', function () {\n var tablists = document.querySelectorAll('.tabs');\n for (var i = 0; i < tablists.length; i++) {\n new TabsAutomatic(tablists[i]);\n }\n}); "],"names":["TabsAutomatic","constructor","groupNode","this","tablistNode","tabs","firstTab","lastTab","Array","from","querySelectorAll","tabpanels","i","length","tab","tabpanel","document","getElementById","getAttribute","tabIndex","setAttribute","push","addEventListener","onKeydown","bind","onClick","setSelectedTab","currentItem","querySelector","currentItemText","classList","toggle","currentTab","setFocus","removeAttribute","remove","focus","innerText","trim","add","setSelectedToPreviousTab","index","indexOf","setSelectedToNextTab","event","tgt","currentTarget","flag","key","stopPropagation","preventDefault","window","tablists"],"mappings":"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"}