{"version":3,"file":"components-hubspot-form.js","mappings":"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","sources":["webpack://silverstripe-base/./themes/app/src/components/hubspot-form.js","webpack://silverstripe-base/./themes/app/src/scripts/common/scroll-to.js","webpack://silverstripe-base/./node_modules/jump.js/dist/jump.module.js"],"sourcesContent":["import scrollTo from \"@common/scroll-to\";\n\nconst salesFormContainer = document.querySelector(\".hubspot-form-sales\");\nconst solutionTemplate = document.getElementById(\"solution-item-template\");\nconst solutionsContainer = document.querySelector(\".solutions-form-container\");\nconst solutionsGrid = document.querySelector(\".solutions-form-grid\");\n\nconst handleSolutions = () => {\n const fieldContainer = document.querySelector(\".hs-form-field.hs_lead_source_product .inputs-list\");\n const iconData = JSON.parse(document.getElementById(\"solutions-form-icons\").textContent);\n\n if (!fieldContainer) {\n return;\n }\n\n fieldContainer.closest(\"fieldset\").classList.add(\"hs-hidden\");\n\n const checkboxes = fieldContainer.querySelectorAll('input[type=\"checkbox\"]');\n\n if (!checkboxes.length) {\n return;\n }\n\n checkboxes.forEach((checkbox) => {\n const label = checkbox.parentNode.querySelector(\"span\").textContent;\n const id = checkbox.id;\n const node = solutionTemplate.content.cloneNode(true);\n\n const foundIcon = iconData.icons.find((x) => x.label === label);\n const iconUrl = foundIcon?.icon ?? iconData._default;\n\n node.querySelector(\".solution-label\").textContent = label;\n node.querySelector(\"img\").src = iconUrl;\n node.querySelector(\"img\").alt = label;\n node.querySelector(\"input[type=checkbox]\").id = `solution-${id}`;\n node.querySelector(\"label\").setAttribute(\"for\", `solution-${id}`);\n\n node.querySelector(\"input[type=checkbox]\").addEventListener(\"change\", (e) => {\n checkbox.checked = e.target.checked;\n });\n\n solutionsGrid.appendChild(node);\n });\n\n solutionsContainer.classList.remove(\"hidden\");\n};\n\nif (salesFormContainer) {\n const observer = new MutationObserver((mutationList, observer) => {\n for (const mutation of mutationList) {\n if (mutation.type === \"childList\") {\n if (solutionsContainer.classList.contains(\"hidden\")) {\n handleSolutions();\n }\n\n if (!salesFormContainer.querySelector(\"form\")) {\n solutionsContainer.classList.add(\"hidden\");\n\n setTimeout(() => {\n scrollTo(document.body);\n }, 500);\n\n observer.disconnect();\n }\n }\n }\n });\n\n observer.observe(salesFormContainer, { childList: true, subtree: true });\n}\n","import jump from \"jump.js\";\n\nconst getPageOffset = () => {\n let offset = 0;\n\n const siteHeader = document.querySelector(\".site-header\");\n\n if (siteHeader) {\n const siteHeaderHeight = getComputedStyle(document.documentElement).getPropertyValue(\"--site-header-stuck-height\");\n\n offset += parseInt(siteHeaderHeight);\n }\n\n return offset;\n};\n\nconst scrollTo = (target, additionalOffset = 0) => {\n const pageOffset = getPageOffset() * -1;\n\n if (target.dataset.scrollOffset) {\n additionalOffset = parseInt(target.dataset.scrollOffset);\n }\n\n let offset = pageOffset - additionalOffset;\n\n return new Promise((resolve) => {\n jump(target, {\n duration: 600,\n offset,\n callback: () => {\n resolve();\n },\n });\n });\n};\n\nexport default scrollTo;\n","// Robert Penner's easeInOutQuad\n\n// find the rest of his easing functions here: http://robertpenner.com/easing/\n// find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\nvar easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar jumper = function jumper() {\n // private variable cache\n // no variables are created during a jump, preventing memory leaks\n\n var element = void 0; // element to scroll to (node)\n\n var start = void 0; // where scroll starts (px)\n var stop = void 0; // where scroll stops (px)\n\n var offset = void 0; // adjustment from the stop position (px)\n var easing = void 0; // easing function (function)\n var a11y = void 0; // accessibility support flag (boolean)\n\n var distance = void 0; // distance of scroll (px)\n var duration = void 0; // scroll duration (ms)\n\n var timeStart = void 0; // time scroll started (ms)\n var timeElapsed = void 0; // time spent scrolling thus far (ms)\n\n var next = void 0; // next scroll position (px)\n\n var callback = void 0; // to call when done scrolling (function)\n\n // scroll position helper\n\n function location() {\n return window.scrollY || window.pageYOffset;\n }\n\n // element offset helper\n\n function top(element) {\n return element.getBoundingClientRect().top + start;\n }\n\n // rAF loop helper\n\n function loop(timeCurrent) {\n // store time scroll started, if not started already\n if (!timeStart) {\n timeStart = timeCurrent;\n }\n\n // determine time spent scrolling so far\n timeElapsed = timeCurrent - timeStart;\n\n // calculate next scroll position\n next = easing(timeElapsed, start, distance, duration);\n\n // scroll to it\n window.scrollTo(0, next);\n\n // check progress\n timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop\n : done(); // scrolling is done\n }\n\n // scroll finished helper\n\n function done() {\n // account for rAF time rounding inaccuracies\n window.scrollTo(0, start + distance);\n\n // if scrolling to an element, and accessibility is enabled\n if (element && a11y) {\n // add tabindex indicating programmatic focus\n element.setAttribute('tabindex', '-1');\n\n // focus the element\n element.focus();\n }\n\n // if it exists, fire the callback\n if (typeof callback === 'function') {\n callback();\n }\n\n // reset time for next jump\n timeStart = false;\n }\n\n // API\n\n function jump(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // resolve options, or use defaults\n duration = options.duration || 1000;\n offset = options.offset || 0;\n callback = options.callback; // \"undefined\" is a suitable default, and won't be called\n easing = options.easing || easeInOutQuad;\n a11y = options.a11y || false;\n\n // cache starting position\n start = location();\n\n // resolve target\n switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n // scroll from current position\n case 'number':\n element = undefined; // no element to scroll to\n a11y = false; // make sure accessibility is off\n stop = start + target;\n break;\n\n // scroll to element (node)\n // bounding rect is relative to the viewport\n case 'object':\n element = target;\n stop = top(element);\n break;\n\n // scroll to element (selector)\n // bounding rect is relative to the viewport\n case 'string':\n element = document.querySelector(target);\n stop = top(element);\n break;\n }\n\n // resolve scroll distance, accounting for offset\n distance = stop - start + offset;\n\n // resolve duration\n switch (_typeof(options.duration)) {\n // number in ms\n case 'number':\n duration = options.duration;\n break;\n\n // function passed the distance of the scroll\n case 'function':\n duration = options.duration(distance);\n break;\n }\n\n // start the loop\n window.requestAnimationFrame(loop);\n }\n\n // expose only the jump method\n return jump;\n};\n\n// export singleton\n\nvar singleton = jumper();\n\nexport default singleton;\n"],"names":["salesFormContainer","document","querySelector","solutionTemplate","getElementById","solutionsContainer","solutionsGrid","handleSolutions","fieldContainer","iconData","JSON","parse","textContent","closest","classList","add","checkboxes","querySelectorAll","length","forEach","checkbox","label","parentNode","id","node","content","cloneNode","foundIcon","icons","find","x","iconUrl","icon","_default","src","alt","setAttribute","addEventListener","e","checked","target","appendChild","remove","MutationObserver","mutationList","observer","mutation","type","contains","setTimeout","scrollTo","body","disconnect","observe","childList","subtree","additionalOffset","pageOffset","getPageOffset","offset","siteHeaderHeight","getComputedStyle","documentElement","getPropertyValue","parseInt","dataset","scrollOffset","Promise","resolve","jump","duration","callback","easeInOutQuad","t","b","c","d","_typeof","Symbol","iterator","obj","constructor","prototype","element","start","stop","easing","a11y","distance","timeStart","timeElapsed","next","top","getBoundingClientRect","loop","timeCurrent","window","requestAnimationFrame","focus","options","arguments","undefined","scrollY","pageYOffset","jumper"],"sourceRoot":""}