{"version":3,"file":"main.js","mappings":"CAAA,WACC,MAAMA,EAAc,KACnB,MAAMC,GACLC,KAAKC,MAAQC,KAAKC,SAASC,SAAS,IAAIC,UAAU,EAAG,IACpDC,MAAM,IAER,IAAK,IAAIC,EAAIR,EAAMS,OAAS,EAAGD,EAAI,EAAGA,IAAK,CAC1C,MAAME,EAAIP,KAAKQ,MAAMR,KAAKC,UAAYI,EAAI,KACzCR,EAAMQ,GAAIR,EAAMU,IAAM,CAACV,EAAMU,GAAIV,EAAMQ,GACzC,CAEA,OAAOR,EAAMY,KAAK,GAAG,EA0ChBC,EAAYC,iBAAiBD,WAA4C,KAA/BC,iBAAiBD,UAC9D,CAACC,iBAAiBD,WAClB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MAC5BE,EAAcD,iBAAiBC,aAAgD,KAAjCD,iBAAiBC,YAClED,iBAAiBC,YAAYR,MAAM,KAAKS,KAAIC,GAAQA,EAAKC,QAAQ,IAAK,MACtE,CAAC,iBACEC,EA7CmB,CAACN,IACzB,MAAMO,EAAWC,SAASC,iBAAiBT,EAAUD,KAAK,OAC1D,OAAOW,MAAMC,KAAKJ,GAAUK,QAAOC,IAASA,EAAKC,UAAUC,SAAS,gCAA+B,EA2CtFC,CAAiBhB,GAE/B,IAAKM,EAAMV,OAAQ,OAEnB,MAAMqB,EAAYT,SAASU,eAAe,4BACpCC,EAAgBX,SAASY,cAAc,eACvCC,EAAYb,SAASU,eAAe,4BACpCI,EAAad,SAASU,eAAe,iCACrCK,EAAcf,SAASC,iBAAiB,kCACxCe,EAAahB,SAASU,eAAe,iCACrCO,EAAcjB,SAASU,eAAe,kCACtCQ,EAAelB,SAASU,eAAe,qCACvCS,EAAUnB,SAASY,cAAc,qCACjCQ,EAAiBpB,SAASC,iBAAiB,sCAG7CkB,GACHA,EAAQE,iBAAiB,UAAU,KAC9BF,EAAQG,aAAa,QACxBtB,SAASuB,KAAKjB,UAAUkB,IAAI,yBAE5BxB,SAASuB,KAAKjB,UAAUmB,OAAO,wBAChC,IAIEL,EAAehC,OAAS,GAC3BgC,EAAeM,SAAQ,SAAUC,GAChCA,EAAIN,iBAAiB,SAAS,SAAUO,GACvCA,EAAMC,iBAENF,EAAIG,uBAAuBC,aAAa,QAAS,qBACjDJ,EAAIK,MAAMC,QAAU,MACrB,GACD,IAGD,MAAMC,EAtEc,EAACpC,EAAOJ,KAC3B,IAAIwC,EAAW,GACf,IAAK,MAAM7B,KAAQP,EAAO,CACzB,GAAIO,EAAKC,UAAUC,SAAS,+BAAgC,SAE5D,MAAM4B,EAAKnC,SAASoC,cAAc,MAC5BC,EAAIrC,SAASoC,cAAc,KAE3BE,EAAKjC,EAAKiC,IAAM,MAAQ5D,IAC9B2D,EAAEE,YAAclC,EAAKkC,YACrBF,EAAEG,KAAO,IAAIF,IAET5C,EAAY+C,MAAKC,GAAarC,EAAKC,UAAUC,SAASmC,MACzDP,EAAG7B,UAAUkB,IAAI,sBAGbnB,EAAKiC,KACTjC,EAAKiC,GAAKA,GAGXH,EAAGQ,YAAYN,GACfH,EAASU,KAAKT,EACf,CAEA,OAAOD,CAAQ,EA8CCW,CAAY/C,EAAOJ,GAEhCe,GAAayB,EAAS9C,OAAS,GAAGqB,EAAUgB,SAEhDV,EAAYW,SAAQoB,IACnB,MAAMC,EAAYD,EAAKE,WAAWhB,MAAMe,WAAaD,EAAKE,WAAWhB,MAAMe,UAAUlD,QAAQ,KAAM,IAEnG,IAAK,IAAIV,EAAI,EAAG+C,EAAS9C,OAASD,EAAGA,IAAK,CACzC,GAA8B,KAA1B+C,EAAS/C,GAAG8D,UAAkB,SAClC,MAAMrD,EAAOsC,EAAS/C,GAAG+D,WAAU,GAC/BJ,GAAMA,EAAKH,YAAY/C,EAC5B,CAEImD,GAAaD,EAAKK,aAAeJ,GAAWD,EAAKM,QAAQ,OAAO9C,UAAUkB,IAAI,sBAElFsB,EAAKM,QAAQ,OAAO9C,UAAUmB,OAAO,UAAU,IAGhDP,GAAgBA,EAAaG,iBAAiB,SAAS,KACtDJ,EAAYoC,QAAS,EACrB,IAAK,MAAMzD,KAAQkB,EAAWwC,SAC7B1D,EAAKyD,QAAS,CACf,IAGD,IAAK,MAAMzD,KAAQsC,EAAU,CAC5B,MAAMqB,EAAQ3D,EAAKsD,WAAU,GAC7BK,EAAMlC,iBAAiB,SAAUmC,IAChCA,EAAEC,OAAOL,QAAQ,WAAWM,MAAO,CAAK,IAErC1C,GAAYA,EAAW2B,YAAYY,EACxC,CAEK5C,IAELgD,OAAOtC,iBAAiB,UAAU,KACjC,MAAM,IAAEuC,EAAG,OAAEC,GAAWlD,EAAcmD,wBACtC,GAAIF,EAAMC,EAAS,EAIlB,OAHAhD,EAAUP,UAAUmB,OAAO,sCAC3BZ,EAAUP,UAAUkB,IAAI,0CACxBX,EAAUwC,QAAS,GAGpBxC,EAAUP,UAAUmB,OAAO,qCAC3BZ,EAAUP,UAAUkB,IAAI,qCAAqC,IAG9DmC,OAAOtC,iBAAiB,UAAU,KACjC,MAAM0C,EA7HyB,MAC/B,MAAMF,EACL7D,SAASgE,gBAAgBb,aACzBnD,SAASgE,gBAAgBC,aAC1B,OAAO,IAAON,OAAOO,QAAUL,EAAU,GAAG,EAyH3BM,GACjBtD,EAAUmB,MAAMoC,YAAY,yBAA0BL,EAAW,KAEjE,IAAI5E,EAAI,EACR,IAAK,MAAMkB,KAAQP,EAAO,CACzB,MAAM,IAAE8D,GAAQvD,EAAKyD,wBACfO,EAAWrD,EAAWsC,SAASnE,GACjCyE,GAAO,GAAKS,EACfA,EAAS/D,UAAUkB,IAAI,kBACb6C,GACVA,EAAS/D,UAAUmB,OAAO,kBAE3BtC,GACD,KAED,CA/JD","sources":["webpack://tocifier/./assets/js/src/index.js"],"sourcesContent":["(function () {\n\tconst getUniqueId = () => {\n\t\tconst array = (\n\t\t\tDate.now() + Math.random().toString(36).substring(2, 9)\n\t\t).split(\"\");\n\n\t\tfor (let i = array.length - 1; i > 0; i--) {\n\t\t\tconst j = Math.floor(Math.random() * (i + 1));\n\t\t\t[array[i], array[j]] = [array[j], array[i]];\n\t\t}\n\n\t\treturn array.join(\"\");\n\t};\n\n\tconst getSelectedNodes = (selectors) => {\n\t\tconst allNodes = document.querySelectorAll(selectors.join(\", \"));\n\t\treturn Array.from(allNodes).filter(node => !node.classList.contains(\"tocifier-article-nav__title\"));\n\t};\n\n\tconst getWindowScrollProgress = () => {\n\t\tconst height =\n\t\t\tdocument.documentElement.scrollHeight -\n\t\t\tdocument.documentElement.clientHeight;\n\t\treturn 100 - (window.scrollY / height) * 100;\n\t};\n\n\tconst generateNav = (nodes, highlighted) => {\n\t\tlet navItems = [];\n\t\tfor (const node of nodes) {\n\t\t\tif (node.classList.contains(\"tocifier-article-nav__title\")) continue;\n\n\t\t\tconst li = document.createElement(\"li\");\n\t\t\tconst a = document.createElement(\"a\");\n\n\t\t\tconst id = node.id || \"id-\" + getUniqueId();\n\t\t\ta.textContent = node.textContent;\n\t\t\ta.href = `#${id}`;\n\n\t\t\tif (highlighted.some(className => node.classList.contains(className))) {\n\t\t\t\tli.classList.add(\"tocifier-highlight\");\n\t\t\t}\n\n\t\t\tif (!node.id) {\n\t\t\t\tnode.id = id;\n\t\t\t}\n\n\t\t\tli.appendChild(a);\n\t\t\tnavItems.push(li);\n\t\t}\n\n\t\treturn navItems;\n\t};\n\n\tconst selectors = tocifierSettings.selectors && tocifierSettings.selectors !== ''\n\t\t? [tocifierSettings.selectors]\n\t\t: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n\tconst highlighted = tocifierSettings.highlighted && tocifierSettings.highlighted !== ''\n\t\t? tocifierSettings.highlighted.split(',').map(item => item.replace('.', ''))\n\t\t: ['toc-highlight'];\n\tconst nodes = getSelectedNodes(selectors);\n\n\tif (!nodes.length) return;\n\n\tconst staticNav = document.getElementById(\"tocifier-contents-static\");\n\tconst stickyElement = document.querySelector(\".has-sticky\");\n\tconst stickyNav = document.getElementById(\"tocifier-contents-sticky\");\n\tconst staticList = document.getElementById(\"tocifier-contents-static-list\");\n\tconst staticLists = document.querySelectorAll(\".tocifier-contents-static-list\");\n\tconst stickyList = document.getElementById(\"tocifier-contents-sticky-list\");\n\tconst staticPanel = document.getElementById(\"tocifier-contents-static-panel\");\n\tconst staticExpand = document.getElementById(\"tocifier-contents-static-view-all\");\n\tconst details = document.querySelector(\".tocifier-contents-sticky-details\");\n\tconst showAllButtons = document.querySelectorAll(\".tocifier-contents-static-view-all\");\n\n\t// When details window is open,is adding overflow: hidden in to body.\n\tif (details) {\n\t\tdetails.addEventListener('toggle', () => {\n\t\t\tif (details.hasAttribute('open')) {\n\t\t\t\tdocument.body.classList.add('tocifier-details-open');\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.remove('tocifier-details-open');\n\t\t\t}\n\t\t});\n\t}\n\n\tif (showAllButtons.length > 0) {\n\t\tshowAllButtons.forEach(function (btn) {\n\t\t\tbtn.addEventListener('click', function (event) {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tbtn.previousElementSibling.setAttribute('style', 'max-height: 100%;')\n\t\t\t\tbtn.style.display = 'none';\n\t\t\t});\n\t\t});\n\t}\n\n\tconst navItems = generateNav(nodes, highlighted);\n\n\tif (staticNav && navItems.length < 2) staticNav.remove();\n\n\tstaticLists.forEach(list => {\n\t\tconst maxHeight = list.parentNode.style.maxHeight && list.parentNode.style.maxHeight.replace('px', '');\n\n\t\tfor (let i = 0; navItems.length > i; i++) {\n\t\t\tif (navItems[i].innerText === '') continue;\n\t\t\tconst item = navItems[i].cloneNode(true);\n\t\t\tif (list) list.appendChild(item);\n\t\t}\n\n\t\tif (maxHeight && list.scrollHeight > maxHeight) list.closest('nav').classList.add('has-overflow-items');\n\n\t\tlist.closest('nav').classList.remove('loading');\n\t});\n\n\tstaticExpand && staticExpand.addEventListener(\"click\", () => {\n\t\tstaticPanel.hidden = true;\n\t\tfor (const item of staticList.children) {\n\t\t\titem.hidden = false;\n\t\t}\n\t});\n\n\tfor (const item of navItems) {\n\t\tconst clone = item.cloneNode(true);\n\t\tclone.addEventListener(\"click\", (e) => {\n\t\t\te.target.closest(\"details\").open = false;\n\t\t});\n\t\tif (stickyList) stickyList.appendChild(clone);\n\t}\n\n\tif (!stickyElement) return;\n\n\twindow.addEventListener(\"scroll\", () => {\n\t\tconst { top, height } = stickyElement.getBoundingClientRect();\n\t\tif (top + height < 0) {\n\t\t\tstickyNav.classList.remove(\"tocifier-contents-sticky--fade-out\");\n\t\t\tstickyNav.classList.add(\"tocifier-contents-sticky--fade-in\");\n\t\t\tstickyNav.hidden = false;\n\t\t\treturn;\n\t\t}\n\t\tstickyNav.classList.remove(\"tocifier-contents-sticky--fade-in\");\n\t\tstickyNav.classList.add(\"tocifier-contents-sticky--fade-out\");\n\t});\n\n\twindow.addEventListener(\"scroll\", () => {\n\t\tconst scrolled = getWindowScrollProgress();\n\t\tstickyNav.style.setProperty(\"--page-scroll-progress\", scrolled + \"%\");\n\n\t\tlet i = 0;\n\t\tfor (const node of nodes) {\n\t\t\tconst { top } = node.getBoundingClientRect();\n\t\t\tconst listItem = stickyList.children[i];\n\t\t\tif (top <= 0 && listItem) {\n\t\t\t\tlistItem.classList.add(\"is-item-active\");\n\t\t\t} else if (listItem) {\n\t\t\t\tlistItem.classList.remove(\"is-item-active\");\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\t});\n})();\n"],"names":["getUniqueId","array","Date","now","Math","random","toString","substring","split","i","length","j","floor","join","selectors","tocifierSettings","highlighted","map","item","replace","nodes","allNodes","document","querySelectorAll","Array","from","filter","node","classList","contains","getSelectedNodes","staticNav","getElementById","stickyElement","querySelector","stickyNav","staticList","staticLists","stickyList","staticPanel","staticExpand","details","showAllButtons","addEventListener","hasAttribute","body","add","remove","forEach","btn","event","preventDefault","previousElementSibling","setAttribute","style","display","navItems","li","createElement","a","id","textContent","href","some","className","appendChild","push","generateNav","list","maxHeight","parentNode","innerText","cloneNode","scrollHeight","closest","hidden","children","clone","e","target","open","window","top","height","getBoundingClientRect","scrolled","documentElement","clientHeight","scrollY","getWindowScrollProgress","setProperty","listItem"],"sourceRoot":""}