{"version":3,"file":"scrollnav.min.umd.js","sources":["../src/util/extend.js","../src/util/getYPosition.js","../src/util/populateSectionData.js","../src/util/getOrSetID.js","../src/util/nextUntil.js","../src/util/createNav.js","../src/util/createList.js","../src/util/updatePositionData.js","../src/util/getTargetYPosition.js","../src/util/easing.js","../src/scrollnav.js","../src/scrollTo.js","../src/util/calculateScrollDuration.js","../src/setupScrollHandler.js","../src/util/getActiveSection.js","../src/util/updateActiveNavItem.js","../src/util/insertNav.js","../src/util/insertVisualDebugger.js","../src/setupClickHandlers.js","../src/setupResizeHandler.js","../src/teardownClickHandlers.js","../src/teardownScrollHandler.js","../src/teardownResizeHandler.js"],"sourcesContent":["/* Borrowed from https://gist.github.com/cferdinandi/4f8a0e17921c5b46e6c4 */\n\nexport default function extend(defaults, options) {\n const extended = {};\n let prop;\n\n for (prop in defaults) {\n if (Object.prototype.hasOwnProperty.call(defaults, prop)) {\n extended[prop] = defaults[prop];\n }\n }\n\n for (prop in options) {\n if (Object.prototype.hasOwnProperty.call(options, prop)) {\n extended[prop] = options[prop];\n }\n }\n\n return extended;\n}\n","export default function getYPosition(elem, parent) {\n if (typeof elem !== 'object') {\n return Promise.reject(new Error('First argument must be an object'));\n }\n\n parent = parent || document.body;\n if (typeof parent !== 'object') {\n return Promise.reject(new Error('Second argument must be an object'));\n }\n\n const bodyRect = parent.getBoundingClientRect();\n const elemRect = elem.getBoundingClientRect();\n\n return elemRect.top - bodyRect.top;\n}\n","import getOrSetID from './getOrSetID';\nimport getYPosition from './getYPosition';\nimport nextUntil from './nextUntil';\n\nexport default function populateSectionData(\n sections,\n settings,\n prefix = 'scroll-nav'\n) {\n const sectionData = [];\n prefix = prefix + '__';\n\n sections.forEach((elem, i) => {\n let subSectionData = [];\n const id = getOrSetID(elem, prefix + (i + 1));\n\n if (settings.subSections && elem.matches(settings.sections)) {\n const subSectionDom = nextUntil(\n elem,\n settings.sections,\n settings.subSections\n );\n subSectionData = populateSectionData(subSectionDom, settings, id);\n }\n\n sectionData.push({\n id: id,\n text: elem.innerText || elem.textContent,\n offsetTop: getYPosition(elem),\n subSections: subSectionData\n });\n });\n\n return sectionData;\n}\n","export default function getOrSetID(elem, setID) {\n if (typeof elem !== 'object') {\n return Promise.reject(new Error('First argument must be an object'));\n }\n\n let id = elem.id;\n\n if (!id) {\n if (typeof setID !== 'string') {\n return Promise.reject(new Error('Second argument must be a string'));\n }\n\n id = setID;\n elem.id = id;\n }\n return id;\n}\n","/* Borrowed from https://github.com/cferdinandi/nextUntil */\n\nexport default function nextUntil(elem, selector, filter) {\n var siblings = [];\n\n elem = elem.nextElementSibling;\n\n while (elem) {\n if (elem.matches(selector)) break;\n\n if (filter && !elem.matches(filter)) {\n elem = elem.nextElementSibling;\n continue;\n }\n\n siblings.push(elem);\n\n elem = elem.nextElementSibling;\n }\n\n return siblings;\n}\n","import createList from './createList';\n\nexport default function createNav(data) {\n const nav = document.createElement('nav');\n nav.className = 'scroll-nav';\n nav.innerHTML = createList(data);\n\n return nav;\n}\n","export default function createList(data, isSubList = false) {\n const suffix = isSubList ? '__sub-' : '__';\n const baseClass = 'scroll-nav' + suffix;\n\n const itemsMarkup = `\n ${data\n .map(\n item =>\n `