{"version":3,"sources":["webpack:///./Scripts/Components/Vanilla/Collapsibles.js"],"names":["a","controlElements","document","querySelectorAll","length","initiator","target","querySelector","getAttribute","classList","contains","add","collapsed","setAttribute","style","height","offsetHeight","addEventListener","e","toggle","isCollapsed","visibility"],"mappings":"mwCAEA,aAAC,sCAAAA,EAAA,0DACOC,EAAkBC,SAASC,iBAAiB,qBACC,GAA1BF,EAAgBG,OAF1C,qDAKwBH,GALxB,4DAKWI,EALX,QAMaC,EAASJ,SAASK,cAAcF,EAAUG,aAAa,kBANpE,wDAUWF,EAAOG,UAAUC,SAAS,gBAC1BJ,EAAOG,UAAUE,IAAI,eAGnBC,EAAYN,EAAOG,UAAUC,SAAS,aAG5CL,EAAUQ,aAAa,iBAAkBD,GACzCN,EAAOO,aAAa,cAAeD,GAG/BA,IACAN,EAAOQ,MAAMC,OAAST,EAAOU,aAAe,MAIhDX,EAAUY,iBAAiB,SAAS,SAAAC,GAChC,IAAIb,EAAYa,EAAEZ,OACdA,EAASJ,SAASK,cAAcF,EAAUG,aAAa,kBAC3DF,EAAOG,UAAUU,OAAO,aAExB,IAAMC,EAAcd,EAAOG,UAAUC,SAAS,aAI9C,GAHAJ,EAAOO,aAAa,cAAeO,GACnCf,EAAUQ,aAAa,iBAAkBO,GAErCA,EAiBAd,EAAOQ,MAAMC,OAAS,EACtBT,EAAOQ,MAAMO,WAAa,aAlBb,CAEbf,EAAOQ,MAAMO,WAAa,SAC1Bf,EAAOQ,MAAMC,OAAS,OAGtB,IAAMA,EAAST,EAAOU,aAGtBV,EAAOQ,MAAMC,OAAS,EACtBT,EAAOQ,MAAMO,WAAa,UAG1B,KAAW,WACPf,EAAOQ,MAAMC,OAASA,EAAS,OAChC,OAlDlB,sMAAD","file":"42.2b17f0eca6645e949302.js","sourcesContent":["\r\n// Async to not block the thread while initializing the collapsibles\r\n(async () => {\r\n var controlElements = document.querySelectorAll(\"[aria-controls]\") \r\n if(!controlElements || controlElements.length == 0) return\r\n\r\n\r\n for(var initiator of controlElements) {\r\n const target = document.querySelector(initiator.getAttribute(\"aria-controls\"));\r\n if(!target) continue;\r\n\r\n // Add .collapsible to target element if not already\r\n if(!target.classList.contains(\"collapsible\")) {\r\n target.classList.add(\"collapsible\");\r\n }\r\n\r\n const collapsed = target.classList.contains(\"collapsed\");\r\n\r\n // Set aria-expanded attribute on the initiator element\r\n initiator.setAttribute(\"aria-expanded\", !collapsed);\r\n target.setAttribute(\"aria-hidden\", collapsed);\r\n\r\n // Set height intially to stop jump on first close \r\n if(!collapsed) {\r\n target.style.height = target.offsetHeight + \"px\";\r\n }\r\n\r\n // Click on initiator element\r\n initiator.addEventListener(\"click\", e => {\r\n var initiator = e.target;\r\n var target = document.querySelector(initiator.getAttribute(\"aria-controls\"));\r\n target.classList.toggle(\"collapsed\");\r\n\r\n const isCollapsed = target.classList.contains(\"collapsed\");\r\n target.setAttribute(\"aria-hidden\", isCollapsed);\r\n initiator.setAttribute(\"aria-expanded\", !isCollapsed);\r\n\r\n if(!isCollapsed) {\r\n // Hide the element then set height to auto so we can get the real height\r\n target.style.visibility = \"hidden\";\r\n target.style.height = \"auto\";\r\n \r\n // Get height of element, which is hidden\r\n const height = target.offsetHeight;\r\n\r\n // Set height to 0 again, then show the element\r\n target.style.height = 0;\r\n target.style.visibility = \"visible\";\r\n\r\n // Wait 1ms to make sure the element is visible, then set height to its real height\r\n setTimeout(() => {\r\n target.style.height = height + \"px\";\r\n }, 1)\r\n }else{\r\n target.style.height = 0;\r\n target.style.visibility = \"hidden\";\r\n }\r\n })\r\n }\r\n})()"],"sourceRoot":""}