{"version":3,"sources":["webpack://@verndale/toolkit/./src/js/modules/whitePapers.ts"],"names":["WhitePapers","Component","el","__publicField","containerSidebar","actionsMenu","option","target","id","y","shareDropdown","container","progress"],"mappings":"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","file":"scripts/7079.acfca36a6bcbcdd4ad21.js","sourcesContent":["import { Component } from '@verndale/core';\n\nclass WhitePapers extends Component {\n breakpoint = window.matchMedia('(min-width: 1280px)');\n offsetTop = 0;\n\n constructor(el: HTMLElement) {\n super(el);\n\n this.injectActionsMenu();\n this.handleBreakpoint();\n this.addEventListeners();\n }\n\n setupDefaults() {\n this.dom = {\n actionsMenu: this.el.querySelector('.page-actions-menu'),\n containerSidebar:\n this.el.querySelector('.container-sidebar'),\n containerContent:\n this.el.querySelector('.container-content'),\n actionsShareDropdown: this.el.querySelector(\n '.page-actions-menu__trigger--share'\n ),\n actionsMenuScroll: this.el.querySelectorAll(\n '.page-actions-menu__trigger[data-scroll-to]'\n ),\n progressBar: this.el.querySelector(\n '.page-actions-menu__progress'\n )\n };\n }\n\n injectActionsMenu() {\n if (this.dom.containerSidebar) {\n const containerSidebar = this.dom.containerSidebar as HTMLElement;\n const actionsMenu = this.dom.actionsMenu as HTMLElement;\n\n containerSidebar.appendChild(actionsMenu);\n }\n }\n\n addEventListeners() {\n document.addEventListener('scroll', this.handleScroll.bind(this));\n this.breakpoint.addEventListener(\n 'change',\n this.handleBreakpoint.bind(this)\n );\n (this.dom.actionsShareDropdown as HTMLElement).addEventListener(\n 'click',\n this.handleShareClick.bind(this)\n );\n\n (this.dom.actionsMenuScroll as NodeListOf).forEach(\n option => {\n option.addEventListener(\n 'click',\n this.handleActionsScrollClick.bind(this)\n );\n }\n );\n\n // handle click outside\n document.addEventListener('click', this.handleClickOutside.bind(this));\n }\n\n handleBreakpoint() {\n this.offsetTop = this.breakpoint.matches ? 160 : 0;\n }\n\n handleScroll() {\n this.addStickyFunctionality();\n this.updateProgressBar();\n }\n\n handleShareClick(e: Event) {\n const target = e.currentTarget as HTMLButtonElement;\n\n if (target.getAttribute('aria-expanded') === 'false') {\n target.setAttribute('aria-expanded', 'true');\n } else {\n target.setAttribute('aria-expanded', 'false');\n }\n }\n\n handleActionsScrollClick(e: Event) {\n e.preventDefault();\n\n const target = e.currentTarget as HTMLButtonElement;\n const id = target.dataset.scrollTo;\n\n if (id) {\n if (id === 'top') {\n window.scrollTo({\n top: 0,\n behavior: 'smooth'\n });\n } else {\n const el = document.getElementById(id.replace('#', ''));\n\n if (el) {\n //scroll to that element + offset\n const y = el.getBoundingClientRect().top + window.scrollY - 150;\n\n window.scrollTo({\n top: y,\n behavior: 'smooth'\n });\n }\n }\n }\n }\n\n handleClickOutside(e: Event) {\n const target = e.target as HTMLElement;\n const shareDropdown = this.dom.actionsShareDropdown as HTMLElement;\n\n if (\n !shareDropdown.contains(target) &&\n shareDropdown.getAttribute('aria-expanded') === 'true'\n ) {\n shareDropdown.setAttribute('aria-expanded', 'false');\n }\n }\n\n addStickyFunctionality() {\n const { y } = this.el.getBoundingClientRect();\n const actionsMenu = this.dom.actionsMenu as HTMLDivElement;\n\n if (y <= this.offsetTop) {\n if (!actionsMenu.classList.contains('page-actions-menu--sticky')) {\n actionsMenu.classList.add('page-actions-menu--sticky');\n }\n } else if (actionsMenu.classList.contains('page-actions-menu--sticky')) {\n actionsMenu.classList.remove('page-actions-menu--sticky');\n }\n }\n\n updateProgressBar() {\n let container = this.el;\n\n if (this.dom.containerContent) {\n container = this.dom.containerContent as HTMLElement;\n }\n\n const scrollDistance = -(\n container.getBoundingClientRect().top - this.offsetTop\n );\n\n let progress =\n (scrollDistance /\n (container.getBoundingClientRect().height -\n document.documentElement.clientHeight +\n this.offsetTop)) *\n 100;\n\n if (progress > 100) {\n progress = 100;\n } else if (progress < 0) {\n progress = 0;\n }\n\n (this.dom.progressBar as HTMLElement).style.width = `${progress}%`;\n }\n}\n\nexport default WhitePapers;\n"],"sourceRoot":""}