{"version":3,"file":"chips-accordion-tabs-min.js","mappings":"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","sources":["webpack://waves/./src/projects/tabs/chips-accordion-tabs/index.tsx"],"sourcesContent":["/**\r\n * Add deep link to the URL.\r\n */\r\nconst updateUrl = (codeName: string, nestedTabCodeName: string) => {\r\n let hash = `#${ codeName }`;\r\n if(nestedTabCodeName){\r\n hash += `|${ nestedTabCodeName }`;\r\n }\r\n\r\n window.history.replaceState({}, '', hash);\r\n};\r\n\r\n/**\r\n * Make selected chip button active (blue).\r\n */\r\nconst setActiveChip = ($chip: HTMLElement, $chips: NodeListOf) => {\r\n if(!$chip) return;\r\n\r\n for(const $btn of $chips) {\r\n $btn.classList.remove('bg-blue-200', 'text-white', 'bg-gray-150', 'text-gray-700');\r\n if($btn === $chip) {\r\n $btn.classList.add('bg-blue-200', 'text-white');\r\n }\r\n else{\r\n $btn.classList.add('bg-gray-150', 'text-gray-700');\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Show the selected tab content.\r\n */\r\nconst selectTabContent = ($chip: HTMLElement, $contentTabs: HTMLElement[]) : [string, HTMLElement] | null => {\r\n if(!$chip || !$contentTabs) return null;\r\n\r\n const codeName = $chip.parentElement?.getAttribute('data-tab-name');\r\n if(!codeName) return null;\r\n\r\n const $content = $contentTabs.find($tab => $tab.getAttribute('data-tab-name') === codeName);\r\n if(!$content) return null;\r\n\r\n for(const $tab of $contentTabs) {\r\n $tab.classList.add('hidden');\r\n }\r\n\r\n $content.classList.remove('hidden');\r\n\r\n return [codeName, $content];\r\n};\r\n\r\nconst selectTab = ($btn: HTMLElement, $buttons: NodeListOf, $contentTabs: HTMLElement[], nestedTabCodeName?: string|null) => {\r\n\r\n // Make selected chip button active (blue).\r\n setActiveChip($btn, $buttons);\r\n\r\n // Show the selected tab content.\r\n const res = selectTabContent($btn, $contentTabs);\r\n if(!res) return;\r\n\r\n const [codeName, $content] = res;\r\n\r\n let _nestedTabCodeName = nestedTabCodeName;\r\n if(!nestedTabCodeName){\r\n const $nested = $content.querySelector('[data-tab-name-nested]');\r\n _nestedTabCodeName = $nested ? $nested.getAttribute('data-tab-name-nested') : '';\r\n }\r\n\r\n // Add deep link to the URL.\r\n updateUrl(codeName, _nestedTabCodeName || '');\r\n};\r\n\r\nconst restoreFromUrl = ($buttons: NodeListOf, $contentTabs: HTMLElement[]) : boolean => {\r\n const hash = window.location.hash;\r\n if(!hash || hash.trim() === '#' || hash.trim() === '') return false;\r\n\r\n const _hash = hash.trim().replace('#', '');\r\n let tabName = '';\r\n let nestedTabName = '';\r\n\r\n if(_hash.indexOf('|') === -1){\r\n tabName = _hash;\r\n }\r\n else{\r\n const parts = _hash.split('|');\r\n tabName = parts[0].trim() || '';\r\n nestedTabName = parts[1].trim() || '';\r\n }\r\n\r\n const $btn = Array.from($buttons).find($item => $item.parentElement?.getAttribute('data-tab-name') === tabName);\r\n if(!$btn) return false;\r\n\r\n if(nestedTabName){\r\n const $accBtn = document.querySelector(`#tabs-chips-content [data-tab-name=\"${ tabName }\"] [data-tab-name-nested=\"${ nestedTabName }\"]`) as HTMLButtonElement;\r\n\r\n if($accBtn){\r\n $accBtn.setAttribute('data-opened', '');\r\n }\r\n }\r\n\r\n selectTab($btn, $buttons, $contentTabs, nestedTabName);\r\n\r\n return true;\r\n};\r\n/**\r\n * Init chips tabs.\r\n */\r\nconst initChips = () => {\r\n\r\n // handle chips navigation ----------------\r\n const $chips = document.getElementById('tabs-chips-navigation');\r\n if(!$chips) return;\r\n\r\n const $contentTabs = Array.from(document.querySelectorAll('#tabs-chips-content [data-tab-name]')) as HTMLElement[];\r\n\r\n const $buttons = $chips.querySelectorAll('button') as NodeListOf;\r\n if($buttons.length <= 0) return;\r\n\r\n for(const $btn of $buttons) {\r\n $btn.addEventListener('click', () => {\r\n selectTab($btn, $buttons, $contentTabs);\r\n });\r\n }\r\n\r\n // Update deep link of accordion button change.\r\n const $accordionButtons = Array.from(document.querySelectorAll('#tabs-chips-content [data-collapse-btn]')) as HTMLElement[];\r\n for(const $accBtn of $accordionButtons){\r\n $accBtn.addEventListener('click', () => {\r\n\r\n const nestedTabCodeName = $accBtn.parentElement?.getAttribute('data-tab-name-nested') || '';\r\n if(!nestedTabCodeName) return;\r\n\r\n const tabName = $accBtn.closest('[data-tab-name]')?.getAttribute('data-tab-name') || '';\r\n if(!tabName) return;\r\n\r\n // Update deep link according to the clicked accordion button.\r\n updateUrl(tabName, nestedTabCodeName);\r\n });\r\n }\r\n\r\n // Try to restore the state from the deep link.\r\n const isRestored = restoreFromUrl($buttons, $contentTabs);\r\n\r\n if(!isRestored){\r\n // select first chip\r\n selectTab($buttons[0], $buttons, $contentTabs);\r\n }\r\n};\r\n\r\n/**\r\n * Used in \"System Requirements\" page.\r\n * https://dev.waves.com/support/tech-specs/system-requirements\r\n */\r\nconst init = () => {\r\n initChips();\r\n};\r\n\r\ninit();\r\n\r\nexport {}"],"names":["updateUrl","codeName","nestedTabCodeName","hash","window","history","replaceState","selectTab","$btn","$buttons","$contentTabs","$chip","$chips","classList","remove","add","setActiveChip","res","parentElement","getAttribute","$content","find","$tab","selectTabContent","_nestedTabCodeName","$nested","querySelector","document","getElementById","Array","from","querySelectorAll","length","addEventListener","$accordionButtons","$accBtn","tabName","closest","isRestored","location","trim","_hash","replace","nestedTabName","indexOf","parts","split","$item","setAttribute","restoreFromUrl","initChips"],"sourceRoot":""}