!function(o){o(window).on("elementor/frontend/init",()=>{class e extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{widgetContainer:".pp-toc",container:'.elementor:not([data-elementor-type="header"]):not([data-elementor-type="footer"])',expandButton:".pp-toc__header",collapseButton:".pp-toc__header",body:".pp-toc__body",headerTitle:".pp-toc__header-title",scrollTop:".pp-toc__scroll-to-top--container"},classes:{anchor:"pp-toc-menu-anchor",listWrapper:"pp-toc__list-wrapper",listItem:"pp-toc__list-item",listTextWrapper:"pp-toc__list-item-text-wrapper",firstLevelListItem:"pp-toc__top-level",listItemText:"pp-toc__list-item-text",activeItem:"pp-item-active",headingAnchor:"pp-toc__heading-anchor",collapsed:"pp-toc--collapsed"},listWrapperTag:"numbers"===this.getElementSettings().marker_view?"ol":"ul"}}getDefaultElements(){var e=this.getSettings(),t=this.getElementSettings();return{$pageContainer:jQuery(t.container||e.selectors.container),$widgetContainer:this.$element.find(e.selectors.widgetContainer),$expandButton:this.$element.find(e.selectors.expandButton),$collapseButton:this.$element.find(e.selectors.collapseButton),$tocBody:this.$element.find(e.selectors.body),$listItems:this.$element.find("."+e.classes.listItem),$scrollTop:this.$element.find(e.selectors.scrollTop)}}bindEvents(){var t=this,e=this.getElementSettings();e.minimize_box&&this.elements.$expandButton.on("click",function(){return o(t.$element).hasClass(t.getSettings("classes.collapsed"))?t.expandBox():t.collapseBox()}).on("keyup",function(e){t.triggerClickOnEnterSpace(e)}),e.collapse_subitems&&this.elements.$listItems.hover(function(e){return jQuery(e.target).slideToggle()}),e.sticky_toc_toggle&&elementorFrontend.elements.$window.on("resize",this.handleStickyToc),e.scroll_to_top_toggle&&this.elements.$scrollTop.on("click",function(){t.scrollToTop()})}triggerClickOnEnterSpace(e){13!==e.keyCode&&32!==e.keyCode||(e.currentTarget.click(),e.stopPropagation())}getHeadings(){var e=this.getElementSettings(),t=e.headings_by_tags.join(","),s=this.getSettings("selectors"),i=e.exclude_headings_by_selector;return this.elements.$pageContainer.find(t).not(s.headerTitle).filter(function(e,t){return!jQuery(t).closest(i).length})}addAnchorsBeforeHeadings(){var t=this.getSettings("classes");this.elements.$headings.before(function(e){return''})}activateItem(e){var t,s=this.getSettings("classes");this.deactivateActiveItem(e),e.addClass(s.activeItem),this.$activeItem=e,this.getElementSettings("collapse_subitems")&&(t=void 0,(t=e.hasClass(s.firstLevelListItem)?e.parent().next():e.parents("."+s.listWrapper).eq(-2)).length?(this.$activeList=t,this.$activeList.stop().slideDown()):delete this.$activeList)}deactivateActiveItem(e){var t;!this.$activeItem||this.$activeItem.is(e)||(t=this.getSettings().classes,this.$activeItem.removeClass(t.activeItem),!this.$activeList)||e&&this.$activeList[0].contains(e[0])||this.$activeList.slideUp()}followAnchor(e,t){var s=e[0].hash;let i;try{i=jQuery(decodeURIComponent(s))}catch(n){return}this.createObserver(s,i,{rootMargin:"0px",threshold:0},e,t).observe(i[0])}createObserver(e,n,t,o,l){let a=0;return new IntersectionObserver(e=>{e.forEach(e=>{var t=document.documentElement.scrollTop,s=t>a,i=n.attr("id");e.isIntersecting&&!this.itemClicked?(this.viewportItems[i]=!0,this.activateItem(o)):e.isIntersecting&&s?(delete this.viewportItems[i],Object.keys(this.viewportItems).length&&this.activateItem(this.$listItemTexts.eq(l+1))):s||(delete this.viewportItems[i],this.activateItem(this.$listItemTexts.eq(l-1))),a=t<=0?0:t})},t)}followAnchors(){this.$listItemTexts.each((e,t)=>{this.followAnchor(jQuery(t),e),t.addEventListener("click",function(e){e.preventDefault(),document.querySelector(this.getAttribute("href")).scrollIntoView({behavior:"smooth"})})})}setOffset(e){var t=this.getSettings(),t=this.$element.find("."+t.classes.listItem),s=this.getCurrentDeviceSetting("scroll_offset");t.each(function(){o("a",this).on("click",function(e){e.preventDefault();e=this.hash;o("html, body").animate({scrollTop:o(e).offset().top-parseInt(s.size)},800)})})}populateTOC(){var e=this,t=(this.listItemPointer=0,this.getElementSettings());t.hierarchical_view?this.createNestedList():this.createFlatList(),this.$listItemTexts=this.$element.find(".pp-toc__list-item-text"),this.$listItemTexts.on("click",this.onListItemClick.bind(this)),elementorFrontend.isEditMode()||this.followAnchors(),o(window).on("scroll",function(){"window_top"===t.scroll_to_top_option?0=o(window).scrollTop()?e.elements.$scrollTop.hide():e.elements.$scrollTop.show()})}createNestedList(){this.headingsData.forEach((t,s)=>{t.level=0;for(let e=s-1;0<=e;e--){var i=this.headingsData[e];if(i.tag<=t.tag){t.level=i.level,i.tag`:""),`<${s.listWrapperTag} class="${s.classes.listWrapper}">`);for(;this.listItemPointer`)+``;let e=`${a.text}`;"bullets"===i.marker_view&&n&&(e=""+o+e),l=l+e+"",this.listItemPointer++;r=this.headingsData[this.listItemPointer];r&&t"}}return l+=`${s.listWrapperTag}>`}handleNoHeadingsFound(){var e=ppToc;if(elementorFrontend.isEditMode())return this.elements.$tocBody.html(e.no_headings_found)}collapseOnInit(){var t=this,e=this.getElementSettings("minimized_on"),s=elementorFrontend.getCurrentDeviceMode();0!==(e=""!==e&&"array"!=typeof e?[e]:e).length&&"object"==typeof e&&e.forEach(function(e){("desktop"===e[0]&&"desktop"==s&&o(window).width(){e=this.getHeadingAnchorLink(e,s);this.headingsData.push({tag:+t.nodeName.slice(1),text:t.textContent,anchorLink:e})})}run(){var e=this.getElementSettings();if(this.elements.$headings=this.getHeadings(),!this.elements.$headings.length)return this.handleNoHeadingsFound();this.setHeadingsData(),elementorFrontend.isEditMode()||this.addAnchorsBeforeHeadings(),this.populateTOC(),e.minimize_box&&this.collapseOnInit(),e.sticky_toc_toggle&&this.handleStickyToc();e=this.getCurrentDeviceSetting("scroll_offset");""!==e.size&&undefined!==e.size&&this.setOffset()}expandBox(){var e=this.getCurrentDeviceSetting("min_height");this.$element.removeClass(this.getSettings("classes.collapsed")),this.elements.$tocBody.attr("aria-expanded","true"),this.elements.$tocBody.slideDown(),this.elements.$widgetContainer.css("min-height",e.size+e.unit)}collapseBox(){this.$element.addClass(this.getSettings("classes.collapsed")),this.elements.$tocBody.attr("aria-expanded","false"),this.elements.$tocBody.slideUp(),this.elements.$widgetContainer.css("min-height","0px")}onInit(){var e=this;this.viewportItems=[],this.initElements(),this.bindEvents(),jQuery(document).ready(function(){return e.run()})}onListItemClick(e){this.itemClicked=!0,setTimeout(()=>this.itemClicked=!1,2e3);var e=jQuery(e.target),t=e.parent().next(),s=this.getElementSettings("collapse_subitems");let i;s&&e.hasClass(this.getSettings("classes.firstLevelListItem"))&&t.is(":visible")&&(i=!0),this.activateItem(e),s&&i&&t.slideUp()}handleStickyToc(){var e,t=this.getElementSettings(),s=elementorFrontend.getCurrentDeviceMode(),i=t.sticky_toc_disable_on,n=this.getID(),t=t.sticky_toc_type;"in-place"===t?(e=n.parent().parent().outerWidth(),n.css("width",e),tocWidth=e):"custom-position"===t&&n.css("width",""),-1!==o.inArray(s,i)?(n.removeClass("floating-toc"),o(window).off("scroll",this.stickyScroll)):o(window).on("scroll",o.proxy(this.stickyScroll,this))}stickyScroll(){var e=this.getID(),t=(this.getElementSettings(),document.querySelector(".elementor-widget-pp-table-of-contents").getBoundingClientRect()),s=e.outerHeight();e.hasClass("floating-toc")?e.parent().parent().css("height",s):e.parent().parent().css("height",""),t.y+t.height/2<0?e.hasClass("floating-toc")||e.fadeOut(250,function(){e.addClass("floating-toc"),e.fadeIn()}):e.hasClass("floating-toc")&&e.fadeOut(250,function(){e.removeClass("floating-toc"),e.fadeIn()})}scrollToTop(){var e;"window_top"===this.getElementSettings("scroll_to_top_option")?o("html, body").animate({scrollTop:0},250):(e=this.getID().parents(".elementor-widget-pp-table-of-contents"),o("html, body").animate({scrollTop:o(e).offset().top-60},250))}getID(){return o("#pp-toc-"+this.$element[0].attributes["data-id"].nodeValue)}}elementorFrontend.elementsHandler.attachHandler("pp-table-of-contents",e)})}(jQuery);