{"version":3,"file":"main.js","mappings":"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","sources":["webpack://octopus.public.web/webpack/universalModuleDefinition","webpack://octopus.public.web/webpack/bootstrap","webpack://octopus.public.web/webpack/runtime/make namespace object","webpack://octopus.public.web/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://octopus.public.web/./Assets/main.js","webpack://octopus.public.web/./Assets/js/navbar.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n","import Cookies from \"js-cookie\";\nimport setupNavbar from \"./js/navbar\";\n\nwindow.octopus = {\n isUserSignedIn: () => !!Cookies.get(\"OctopusSignedInUser\"),\n getSignedInUserCookie: () => Cookies.get(\"OctopusSignedInUser\"),\n};\n\nif (typeof window.navbarActive === \"undefined\") {\n setupNavbar();\n window.navbarActive = true;\n}\n\nfunction normalizeUtm(utmValue, maxLength = 100) {\n if (!utmValue) {\n return \"\";\n }\n\n return utmValue.substring(0, maxLength).trim().toLowerCase();\n}\n\nfunction sanitizeUrlData(data) {\n if (typeof data !== 'string') {\n return '';\n }\n\n // Remove script tags and event handlers\n const dangerousPatterns = [\n /javascript:[^\\s]+/gi, // Removes 'javascript:' including any whitespace following it.\n /vbscript:[^\\s]+/gi, // Removes 'vbscript:' including any whitespace following it.\n /data:[^\\s]+/gi, // Removes 'data:' including any whitespace following it.\n /file:[^\\s]+/gi, // Removes 'file:' including any whitespace following it.\n /base64,[^\\s]+/gi, // Removes 'base64,' including any whitespace following it.\n /(&#x?\\d+;)+/gi, // Removes HTML entity encodings\n /.*?<\\/script>/gis, // Removes complete script tags and their contents.\n /<[^>]+>/gi, // Removes any other complete HTML tags.\n /%0a|%0d|%09/gi, // Removes encoded line breaks, carriage returns, and tabs.\n /&#[xX]?[0-9a-fA-F]+;/gi, // Removes numeric HTML entities.\n /on\\w+\\s*=\\s*[\"']?[^\"'>]*[\"']?/gi, // Removes HTML event handlers with quotes\n /on\\w+\\s*=\\s*[^\"'\\s>]+/gi, // Removes HTML event handlers without quotes\n /<\\/script>/gi, // Removes script tag terminators.\n /\\(['\"]?[^)'\"]*['\"]?\\)/gi, // Removes parentheses with optional quotes and content\n /['\"()]/g // Final cleanup for stray single/double quotes and parentheses\n ];\n\n dangerousPatterns.forEach(pattern => {\n data = data.replace(pattern, '');\n });\n\n // URL encode the sanitized data to safely use or display it\n return encodeURIComponent(data);\n}\n\n// If this function is updated also update it in Octopus-com\nfunction intercomUtmTracking() {\n const searchParams = new URLSearchParams(window.location.search);\n let hasUtmParams = false;\n for (const key of searchParams.keys()) {\n if (key.startsWith(\"utm_\")) {\n hasUtmParams = true;\n break;\n }\n }\n\n // if user is not signed in and has UTM params\n // If further throttling is required for event sending we could deduplicate events by comparing the last sent to the event to be sent\n if (!window.octopus.isUserSignedIn() && hasUtmParams && Intercom) {\n Intercom(\"trackEvent\", \"OctopusAnonymousUtmTracking\", {\n host: sanitizeUrlData(window.location.hostname),\n path: sanitizeUrlData(window.location.pathname),\n source: normalizeUtm(searchParams.get(\"utm_source\")),\n medium: normalizeUtm(searchParams.get(\"utm_medium\")),\n campaign: normalizeUtm(searchParams.get(\"utm_campaign\")),\n term: normalizeUtm(searchParams.get(\"utm_term\")),\n content: normalizeUtm(searchParams.get(\"utm_content\")),\n googleClickId: normalizeUtm(searchParams.get(\"gclid\")),\n });\n }\n}\nwindow.addEventListener(\"load\", intercomUtmTracking);\n\nwindow.copyToClipboard = function copyStringToClipboard(str) {\n const hiddenElement = document.createElement(\"textarea\");\n hiddenElement.value = str;\n hiddenElement.setAttribute(\"readonly\", \"\");\n hiddenElement.style = { display: \"none\" };\n document.body.appendChild(hiddenElement);\n hiddenElement.select();\n document.execCommand(\"copy\");\n document.body.removeChild(hiddenElement);\n};\n\nwindow.miniStateMachine = function (parentElement, steps, defaultWait, repeat) {\n let step = 0;\n\n const next = function () {\n let result = steps[step]();\n if (!Number.isInteger(result)) {\n result = defaultWait || 300;\n }\n step++;\n if (step >= steps.length && repeat) {\n console.log(\"msm repeating\");\n step = 0;\n }\n\n if (step < steps.length) {\n setTimeout(next, result);\n }\n };\n\n let loaded = false;\n const onIntersection = (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n if (!loaded) {\n loaded = true;\n next();\n }\n }\n }\n };\n\n const observer = new IntersectionObserver(onIntersection);\n observer.observe(document.querySelector(parentElement));\n};\n\nwindow.initializeTableOfContents = function (\n documentRef,\n contentElementId,\n selectors,\n title = \"On this page\"\n) {\n documentRef = documentRef || window.document;\n const toc = documentRef.getElementById(\"toc\");\n const headings = Array.from(\n documentRef.getElementById(contentElementId).querySelectorAll(selectors)\n );\n\n const html = [\n `
${title}
`,\n ];\n\n let groupId = \"\";\n headings.forEach((heading) => {\n const tag = heading.tagName.toLowerCase();\n let id = heading.id || heading.textContent.toLowerCase().replace(/ /g, \"-\");\n if (!heading.id) heading.id = id;\n\n if (heading.textContent === \"Next\") {\n return;\n }\n\n groupId = tag === \"h2\" ? id : groupId;\n const element = `${heading.textContent}`;\n html.push(element);\n });\n\n toc.innerHTML = html.join(\"\");\n\n if (html.length < 4) {\n document.getElementById(\"toc-column\").className = \"d-none\";\n }\n\n toc.querySelectorAll(\".toc-item\").forEach((item) => {\n item.addEventListener(\"click\", function (e) {\n e.preventDefault();\n const target = document.querySelector(this.getAttribute(\"href\"));\n if (target) {\n setTimeout(() => {\n const scrollTo = target.offsetTop - 140;\n window.scrollTo({ top: scrollTo, behavior: \"smooth\" });\n }, 100);\n }\n });\n });\n\n const refreshScrollPosition = function () {\n const scrollY = window.scrollY;\n let closest = null;\n headings.forEach((heading) => {\n const rect = heading.getBoundingClientRect();\n if (scrollY + 180 > rect.top + scrollY) {\n closest = heading;\n }\n });\n\n const activeLinks = document.querySelectorAll(\"#toc a.active\");\n activeLinks.forEach((link) => link.classList.remove(\"active\"));\n let current = closest\n ? document.querySelector(`#toc a[data-target='${closest.id}']`)\n : document.querySelector(\"#toc a\");\n if (current) {\n current.classList.add(\"active\");\n }\n\n const groupToExpand = current ? current.dataset.group : null;\n document.querySelectorAll(\"#toc .toc-item.toc-h3\").forEach((item) => {\n item.style.display =\n item.dataset.group === groupToExpand ? \"block\" : \"none\";\n });\n };\n\n window.addEventListener(\"scroll\", refreshScrollPosition);\n window.addEventListener(\"resize\", refreshScrollPosition);\n refreshScrollPosition();\n\n const tocHeight = toc.offsetHeight;\n toc.style.position =\n tocHeight + 100 > window.innerHeight ? \"static\" : \"sticky\";\n};\n\nwindow.enablePasswordStrength = function () {\n document\n .querySelectorAll(\".password-strength-meter\")\n .forEach(function (element) {\n const passwordSelector = element.dataset.target;\n const password = document.querySelector(passwordSelector);\n\n const checkPassword = function () {\n element.classList.remove(\"bg-danger\", \"bg-warning\", \"bg-success\");\n const val = password.value;\n if (val === \"\") {\n element.style.width = \"0%\";\n return;\n }\n\n const result = zxcvbn(val);\n\n // Update the password strength meter\n if (result.score < 1) {\n element.classList.add(\"bg-danger\");\n } else if (result.score < 3) {\n element.classList.add(\"bg-warning\");\n } else {\n element.classList.add(\"bg-success\");\n }\n\n const warnings = [];\n if (result.feedback.warning) {\n warnings.push(result.feedback.warning);\n }\n\n if (result.feedback && result.feedback.suggestions) {\n for (let i = 0; i < result.feedback.suggestions.length; i++) {\n warnings.push(result.feedback.suggestions[i]);\n }\n }\n\n element.style.width = `${20 + result.score * 20}%`;\n let text = warnings.join(\"
\");\n if (text === \"\") text = \"Great password!\";\n element.setAttribute(\"title\", text);\n element.setAttribute(\"data-original-title\", text);\n };\n\n password.addEventListener(\"input\", checkPassword);\n\n checkPassword();\n });\n};\n\nwindow.enableDynamicValidation = function (form, url) {\n function dynamicValidation(element) {\n let validationRequest = null;\n let validationTimer = null;\n let statusElementTimer = null;\n\n // Create and append the validation status indicators\n const validationControls = document.createElement(\"span\");\n validationControls.className = \"validation-status-container\";\n validationControls.style.cssText =\n \"position: absolute; top: 5px; right: 10px; padding: 4px; z-index: 1000; display: block\";\n validationControls.innerHTML = `\n \n \n \n `;\n element.appendChild(validationControls);\n\n const input = element.querySelector(\"input\");\n const propertyName = input.name;\n\n const resetValidationStatus = function () {\n const statusValid = element.querySelector(\".validation-status-valid\");\n const statusInvalid = element.querySelector(\".validation-status-invalid\");\n const statusValidating = element.querySelector(\n \".validation-status-validating\"\n );\n\n statusValid.style.display = \"none\";\n statusInvalid.style.display = \"none\";\n statusValidating.style.display = \"none\";\n if (validationRequest) validationRequest.abort();\n if (validationTimer) clearTimeout(validationTimer);\n if (statusElementTimer) clearTimeout(statusElementTimer);\n if (input.value === \"\") {\n statusValidating.style.display = \"none\";\n } else {\n statusValidating.style.display = \"block\";\n }\n };\n\n const validate = function () {\n resetValidationStatus();\n const inputValue = input.value;\n const formElement = input.closest(\"form\");\n const submitButton = formElement.querySelector(\"[type=submit]\");\n\n if (inputValue !== \"\") {\n submitButton.disabled = true;\n const start = performance.now();\n validationRequest = fetch(\n `${url}?propertyName=${propertyName}&${propertyName}=${encodeURIComponent(\n inputValue\n )}`\n )\n .then((response) => response.json())\n .then((data) => {\n const end = performance.now();\n input.classList.remove(\"invalid\", \"valid\");\n input.classList.add(data.valid ? \"valid\" : \"invalid\");\n\n const requestDuration = end - start;\n const uiDelay = Math.max(0, 500 - requestDuration);\n\n statusElementTimer = setTimeout(() => {\n statusValidating.style.display = \"none\";\n if (data.valid) {\n statusValid.style.display = \"block\";\n } else {\n validationControls.setAttribute(\"title\", data.error);\n statusInvalid.style.display = \"block\";\n }\n }, uiDelay);\n })\n .finally(() => {\n if (!formElement.querySelector(\"input.invalid\")) {\n submitButton.disabled = false;\n }\n });\n }\n };\n\n input.addEventListener(\"input\", function () {\n resetValidationStatus();\n validationTimer = setTimeout(validate, 500);\n });\n\n validate();\n }\n\n document\n .querySelectorAll(\".dynamic-validation\", form)\n .forEach(function (element) {\n dynamicValidation(element);\n });\n};\n\n// Report an event to Google Analytics after 30 seconds of the browser tab being active. This helps us to have a\n// bounce rate metric that's more useful than the default bounce rate.\n(function () {\n let elapsed = 0;\n const pollFrequency = 500;\n let timerId;\n\n timerId = setInterval(function () {\n if (document.hidden || !document.hasFocus()) {\n return;\n }\n\n elapsed += pollFrequency;\n\n if (elapsed >= 30000) {\n if (typeof window.gtag !== \"undefined\") {\n gtag(\"event\", \"Page active 30s\", { event_category: \"Page\" });\n }\n clearInterval(timerId);\n }\n }, pollFrequency);\n})();\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n function initializeNavbarShadowOnScroll() {\n let hasShadow = false;\n window.addEventListener(\"scroll\", function () {\n const scroll = window.scrollY;\n if (scroll <= 10 && hasShadow) {\n document\n .querySelector(\".navbar.fixed-top\")\n .classList.remove(\"navbar-sticky-scrolling\");\n hasShadow = false;\n } else if (scroll > 10 && !hasShadow) {\n document\n .querySelector(\".navbar.fixed-top\")\n .classList.add(\"navbar-sticky-scrolling\");\n hasShadow = true;\n }\n });\n }\n\n function initializeProfileMenu(idPrefix) {\n const signIn = document.getElementById(`${idPrefix}navbar-sign-in`);\n const signUp = document.getElementById(`${idPrefix}navbar-sign-up`);\n const contactUs = document.getElementById(`${idPrefix}navbar-contact-us`);\n const navbarProfile = document.getElementById(`${idPrefix}navbar-profile`);\n const signedInCookie = window.octopus.getSignedInUserCookie();\n\n if (signedInCookie && navbarProfile) {\n const data = JSON.parse(signedInCookie);\n const name = data.fullName || data.email;\n document.getElementById(`${idPrefix}navbar-profile-image img`).title =\n name;\n document.getElementById(`${idPrefix}navbar-profile-image img`).src =\n data.profileImageUrl || \"\";\n document.getElementById(\n `${idPrefix}navbar-profile-sign-out`\n ).style.display = data.method === \"Auth\" ? \"block\" : \"none\";\n document.getElementById(\n `${idPrefix}navbar-profile-sign-out-email`\n ).style.display = data.method === \"EmailOnly\" ? \"block\" : \"none\";\n document.getElementById(`${idPrefix}navbar-profile-name`).textContent =\n name;\n\n signIn.style.display = \"none\";\n signUp.style.display = \"none\";\n\t\t\tcontactUs.style.display = \"none\";\n } else {\n signIn.style.display = \"flex\";\n signUp.style.display = \"flex\";\n\t\t\tcontactUs.style.display = \"flex\";\n }\n }\n\n function initializeMarketingEventPopup() {\n const pathName = window.location.pathname;\n if (\n !(\n pathName.startsWith(\"/downloads\") ||\n pathName.startsWith(\"/docs\") ||\n pathName.startsWith(\"/blog\")\n )\n ) {\n return;\n }\n\n const templateHtml =\n \"
\\n\" +\n \"
\\n\" +\n \"

\\n\" +\n \"

\\n\" +\n \"

\\n\" +\n \"
\\n\" +\n \" \\n\" +\n \" \\n\" +\n \"
\\n\" +\n \" Register now\\n\" +\n \" \\n\" +\n \"
\\n\" +\n \"
\";\n\n if (window.innerWidth < 800) {\n // Don't bother mobile browsers\n return;\n }\n\n setTimeout(function () {\n fetch(\"/api/marketing-events/single?placement=popup\")\n .then((response) => response.json())\n .then((data) => {\n if (!data) {\n return;\n }\n\n const eventName = \"OctopusMarketingEventDismissed-\" + data.id;\n if (localStorage.getItem(eventName) === \"dismissed\") {\n // User already declined\n return;\n }\n\n const template = document.createElement(\"template\");\n template.innerHTML = templateHtml.trim();\n const popup = template.content.firstChild;\n\n const main = document.querySelector(\"main\");\n popup.style.display = \"block\";\n popup.style.right = \"-200px\";\n\n // Set text and attributes\n popup.querySelector(\"#event-title\").textContent = data.title;\n popup.querySelector(\"#event-time\").textContent = data.dateDisplay;\n popup.querySelector(\"#event-category\").textContent =\n \"Upcoming \" + data.eventType;\n popup.querySelector(\"#event-link\").setAttribute(\"href\", data.linkUri);\n popup\n .querySelector(\"#event-image\")\n .setAttribute(\"href\", data.imageUri);\n\n main.appendChild(popup);\n\n // Close event setup\n popup\n .querySelector(\".webinar-popup__close\")\n .addEventListener(\"click\", function () {\n popup.style.opacity = 0;\n popup.style.right = \"-300px\";\n localStorage.setItem(eventName, \"dismissed\");\n });\n\n // Animate popup visibility\n setTimeout(function () {\n popup.style.opacity = 1;\n popup.style.right = \"20px\";\n }, 10);\n })\n .catch((error) =>\n console.error(\"Error loading marketing event data:\", error)\n );\n }, 1000);\n }\n\n function initializeLoadOnScroll() {\n let hasPageLoaded = false;\n const onIntersection = (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n entry.target.classList.add(\"loaded\");\n } else {\n if (!hasPageLoaded) {\n entry.target.classList.add(\"awaiting-scroll\");\n }\n }\n }\n };\n\n setTimeout(function () {\n hasPageLoaded = true;\n }, 1000);\n\n const observer = new IntersectionObserver(onIntersection);\n document\n .querySelectorAll(\".load-on-scroll\")\n .forEach((e) => observer.observe(e));\n }\n\n initializeLoadOnScroll();\n initializeMarketingEventPopup();\n\n initializeProfileMenu(\"\");\n initializeProfileMenu(\"mobile-\");\n initializeNavbarShadowOnScroll();\n});\n\n// NOTE: If this is changed, it also needs to be changed in Octofront/Octopus.Public.Web\n// handle the OctopusEvents cookie\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const cookieName = \"OctopusEvents\";\n const eventsCookie = getCookie(cookieName);\n\n if (eventsCookie) {\n let events = JSON.parse(eventsCookie);\n\n events.forEach((event) => {\n switch (event.Type) {\n case \"TrackingEvent\":\n writeTrackingEvent(event);\n break;\n case \"FormProgressEvent\":\n writeFormProgressEvent(event);\n break;\n case \"LeadTrackingEvent\":\n writeLeadTrackingEvent(event);\n break;\n default:\n console.debug(`Unknown event type encountered: ${event.Type}`);\n break;\n }\n });\n\n // Remove the cookie once we are done processing it\n document.cookie =\n cookieName + \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/;\";\n }\n\n function getCookie(name) {\n let cookieArray = document.cookie.split(\";\");\n let cookie = null;\n cookieArray.forEach((elem) => {\n let cookiePair = elem.split(\"=\");\n if (name == cookiePair[0].trim()) {\n cookie = decodeURIComponent(cookiePair[1]);\n }\n });\n return cookie;\n }\n\n function writeLeadTrackingEvent(event) {\n const marketoFormId = event.Data.MarketoFormId;\n const marketoAccountId = event.Data.MarketoAccountId;\n if (marketoFormId && marketoAccountId) {\n loadScriptAsync(\n \"//get.octopus.com/js/forms2/js/forms2.min.js\",\n function () {\n let hiddenForm = document.createElement(\"form\");\n hiddenForm.id = \"mktoForm_\" + marketoFormId;\n hiddenForm.style.display = \"none\";\n document.body.appendChild(hiddenForm);\n\n MktoForms2.loadForm(\n \"//get.octopus.com\",\n marketoAccountId,\n marketoFormId,\n function (form) {\n form.addHiddenFields(event.Data.MarketoFields);\n form.onSuccess(function () {\n // Prevent the form from continuing its own processing\n return false;\n });\n form.submit();\n }\n );\n }\n );\n }\n }\n\n function writeTrackingEvent(event) {\n const action = event.Data.Action;\n const category = event.Data.Category;\n\n if (action === \"NewAccount\") {\n const img = document.createElement(\"img\");\n img.src =\n \"https://px.ads.linkedin.com/collect/?pid=2493924&fmt=gif&conversionId=4675260\";\n img.style.display = \"none\";\n document.body.appendChild(img);\n }\n\n if (window.uetq) {\n window.uetq.push(\"event\", action, { event_category: category });\n }\n\n if (window._dcq) {\n window._dcq.push([\"track\", action, { category: category }]);\n }\n\n if (window.FS) {\n window.FS.event(action, { category: category });\n }\n\n if (window.dataLayer) {\n window.dataLayer.push({\n event: \"eventTracking\",\n category: category,\n action: action,\n });\n }\n }\n\n function writeFormProgressEvent(event) {\n const step = event.Data.Step;\n const stepNumber = event.Data.StepNumber;\n const platform = event.Data.Platform;\n\n if (window.dataLayer) {\n window.dataLayer.push({\n event: \"form_progress\",\n step: step,\n stepNumber: stepNumber,\n platform: platform,\n });\n }\n }\n\n function loadScriptAsync(scriptUrl, callback) {\n let script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n script.async = true;\n script.src = scriptUrl;\n\n script.onload = callback;\n script.onreadystatechange = function () {\n if (this.readyState === \"complete\" || this.readyState === \"loaded\") {\n callback();\n }\n };\n\n document.head.appendChild(script);\n }\n});\n\nfunction setPageCookie() {\n const sanitizedHostname = sanitizeUrlData(window.location.hostname);\n const sanitizedPathname = sanitizeUrlData(window.location.pathname);\n const pathTrackingValue = sanitizedHostname + sanitizedPathname;\n\n Cookies.set('OctopusPathTracking', pathTrackingValue, {\n secure: true,\n expires: 7,\n sameSite: 'strict'\n });\n}\n\nwindow.addEventListener(\"load\", setPageCookie);\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Handle local date time formatting\n document.querySelectorAll(\"span.localdatetime\").forEach(function (element) {\n const dateTime = new Date(element.dataset.datetime);\n const format = JSON.parse(element.dataset.format);\n const locale = element.dataset.locale || \"en-US\";\n\n const formatter = new Intl.DateTimeFormat(locale, format);\n const formattedDateTime = formatter.format(dateTime);\n const fullDateTime = formatter.format(dateTime);\n\n element.textContent = formattedDateTime;\n element.setAttribute(\"title\", fullDateTime);\n });\n\n // Update user time zone display\n function getUserTimeZoneFormatted() {\n const userTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const timeZoneParts = userTimeZone.split(\"/\");\n\n return `${timeZoneParts[1].replace(\n \"_\",\n \" \"\n )}, ${timeZoneParts[0].replace(\"_\", \" \")}`;\n }\n\n document.querySelectorAll(\"span.user-time-zone\").forEach(function (element) {\n element.textContent = `(${getUserTimeZoneFormatted()})`;\n });\n});\n","export default function setupNavbar() {\n initializeProfileMenu(\"\");\n initializeProfileMenu(\"mobile-\");\n configureNavbarInteraction();\n\n function initializeProfileMenu(idPrefix) {\n const signIn = document.getElementById(`${idPrefix}navbar-sign-in`);\n const signUp = document.getElementById(`${idPrefix}navbar-sign-up`);\n const contactUs = document.getElementById(`${idPrefix}navbar-contact-us`);\n const navbarProfile = document.getElementById(`${idPrefix}navbar-profile`);\n const profileLink = document.getElementById(\n `${idPrefix}navbar-profile-link`\n );\n const logoutLink = document.getElementById(\n \"mobile-navbar-profile-sign-out\"\n );\n const controlCenterButton = document.querySelector(\n \".control-center-button\"\n );\n const signedInCookie = window.octopus.getSignedInUserCookie();\n\n // Check if user is signed in\n if (!!signedInCookie && navbarProfile.length > 0) {\n let data = JSON.parse(signedInCookie);\n const name = data.fullName ?? data.email;\n\n // Check if profile image is available, show it and hide the circle\n if (!!data.profileImageUrl) {\n const profileImage = navbarProfile.querySelector(\n `#${idPrefix}navbar-profile-image img`\n );\n profileImage.title = name;\n profileImage.src = data.profileImageUrl;\n profileImage.style.display = \"block\";\n\n const nonImgElements = navbarProfile.querySelectorAll(\n `#${idPrefix}navbar-profile-image :not(img)`\n );\n nonImgElements.forEach((el) => el.remove());\n }\n\n const signOut = navbarProfile.querySelector(\n `#${idPrefix}navbar-profile-sign-out`\n );\n const signOutEmail = navbarProfile.querySelector(\n `#${idPrefix}navbar-profile-sign-out-email`\n );\n signOut.style.display = data.method === \"Auth\" ? \"block\" : \"none\";\n signOutEmail.style.display =\n data.method === \"EmailOnly\" ? \"block\" : \"none\";\n\n document.getElementById(`${idPrefix}navbar-profile-name`).textContent =\n name;\n navbarProfile.style.display = \"block\";\n\n window._dcq = window._dcq || [];\n window._dcq.push([\"identify\", { email: data.email, prospect: true }]);\n\n if (window.FS) {\n FS.identify(data.userHash, {\n displayName: data.fullName,\n email: data.email,\n });\n }\n\n signIn.style.display = \"none\";\n signUp.style.display = \"none\";\n\t\t\tcontactUs.style.display = \"none\";\n logoutLink.style.display = \"block\";\n } else {\n signIn.style.display = \"flex\";\n signUp.style.display = \"flex\";\n\t\t\tcontactUs.style.display = \"flex\";\n profileLink.style.display = \"none\";\n controlCenterButton.style.display = \"none\";\n }\n }\n\n function configureNavbarInteraction() {\n let navItems = document.querySelectorAll(\".nav-item\");\n let body = document.body;\n let navbar = document.querySelector(\".navbar-v2\");\n let lastClickedSubsection = \"\";\n let navOverflowItems = document.querySelectorAll(\".nav-overflow-item\");\n\n // only do this for nav items that have additional content (Product, Resources, etc)\n navItems = Array.from(navItems).filter(\n (item) => item.getAttribute(\"data-target\") !== undefined\n );\n\n navItems.forEach((item, index) => {\n item.addEventListener(\"click\", function (e) {\n const targetId = item.getAttribute(\"data-target\");\n const targetDropdown = Array.from(navOverflowItems).find(\n (dropdown) => dropdown.id === targetId\n );\n let navbarWidth = navbar.offsetWidth;\n\n const isClosing = e.target.innerText === lastClickedSubsection;\n\n lastClickedSubsection = isClosing ? \"\" : e.target.innerText;\n\n if (targetDropdown.classList.contains(\"show\")) {\n targetDropdown.classList.remove(\"show\");\n } else {\n navOverflowItems.forEach((dropdown) => {\n dropdown.classList.remove(\"show\");\n });\n targetDropdown.classList.add(\"show\");\n }\n\n /**\n * The better approach would be to not have the second \"nav bar\" that displays\n * the back and close buttons, and instead just swap the Octopus Logo with the back button\n * when the menu is open. However that would require further restructuring that exceeds\n * the current appetite for change at the time of writing.\n */\n document\n .querySelectorAll(\".navbar-nav, .navbar-header\")\n .forEach((nav) => nav.classList.add(\"d-none\", \"d-xl-flex\"));\n // This is required for the mobile menu to be visible after a user has expanded a subsection on desktop\n document.querySelector(\".navbar-main\").classList.add(\"show\");\n document.getElementById(\"main-navbar\").style.height = \"100vh\";\n\n if (isClosing) {\n showNavOnMobile();\n document.getElementById(\"main-navbar\").style.height = \"0\";\n } else {\n hideNavOnMobile();\n let newNavbarWidth = navbar.offsetWidth;\n if (newNavbarWidth - navbarWidth > 0) {\n document.querySelector(\".nav-container\").style.paddingRight = `${\n newNavbarWidth - navbarWidth\n }px`;\n document.querySelector(\"main\").style.paddingRight = `${\n newNavbarWidth - navbarWidth\n }px`;\n }\n }\n });\n });\n\n document\n .querySelectorAll(\".navbar-toggler-reset, .nav-overflow-back\")\n .forEach((btn) => {\n btn.addEventListener(\"click\", function () {\n showNavOnMobile();\n lastClickedSubsection = \"\";\n navOverflowItems.forEach((item) => item.classList.remove(\"show\"));\n });\n });\n\n document.querySelectorAll(\".navbar-toggler-reset\").forEach((btn) => {\n btn.addEventListener(\"click\", function () {\n toggleNavOnMobile();\n lastClickedSubsection = \"\";\n });\n });\n\n // addresses an edge case where the user opens a subsection, then resizes the window\n // without this the mobile nav would be hidden\n document\n .querySelector(\".navbar-toggler\")\n .addEventListener(\"click\", function () {\n showNavOnMobile();\n toggleNavOnMobile();\n lastClickedSubsection = \"\";\n });\n\n document\n .querySelectorAll(\".overflow-background\")\n .forEach((OverflowBackground) => {\n OverflowBackground.addEventListener(\"click\", function () {\n showNavOnMobile();\n lastClickedSubsection = \"\";\n document.getElementById(\"main-navbar\").style.height = \"0px\";\n navOverflowItems.forEach((item) => item.classList.remove(\"show\"));\n });\n });\n\n window.addEventListener(\"resize\", () => {\n if (window.innerWidth < 1200) {\n if (lastClickedSubsection === \"\") {\n document.getElementById(\"main-navbar\").style.height =\n \"calc(100vh - 75px)\";\n } else {\n document.getElementById(\"main-navbar\").style.height = \"100vh\";\n }\n } else {\n if (lastClickedSubsection === \"\") {\n document.getElementById(\"main-navbar\").style.height = \"0px\";\n } else {\n document.getElementById(\"main-navbar\").style.height = \"100vh\";\n }\n }\n });\n\n function showNavOnMobile() {\n body.style.overflow = \"auto\";\n document\n .querySelectorAll(\".navbar-nav, .navbar-header\")\n .forEach((nav) => {\n nav.classList.remove(\"d-none\");\n nav.classList.remove(\"d-xl-flex\");\n });\n document.querySelector(\".nav-container\").style.paddingRight = \"0\";\n document.querySelector(\"main\").style.paddingRight = \"0\";\n }\n\n function hideNavOnMobile() {\n body.style.overflow = \"hidden\";\n document\n .querySelectorAll(\".navbar-nav, .navbar-header\")\n .forEach((nav) => nav.classList.add(\"d-none\", \"d-xl-flex\"));\n }\n\n function toggleNavOnMobile() {\n document.querySelector(\".navbar-main\").classList.toggle(\"show\");\n }\n }\n}\n"],"names":["root","factory","exports","module","define","amd","a","i","this","__webpack_require__","Symbol","toStringTag","Object","defineProperty","value","target","arguments","length","source","key","api","init","converter","defaultAttributes","set","attributes","document","expires","Date","now","toUTCString","encodeURIComponent","replace","decodeURIComponent","escape","stringifiedAttributes","attributeName","split","cookie","write","create","get","cookies","jar","parts","slice","join","foundKey","read","e","remove","withAttributes","withConverter","freeze","path","normalizeUtm","utmValue","maxLength","substring","trim","toLowerCase","sanitizeUrlData","data","forEach","pattern","timerId","elapsed","window","octopus","isUserSignedIn","Cookies","getSignedInUserCookie","navbarActive","initializeProfileMenu","idPrefix","signIn","getElementById","signUp","contactUs","navbarProfile","profileLink","logoutLink","controlCenterButton","querySelector","signedInCookie","JSON","parse","name","fullName","email","profileImageUrl","profileImage","title","src","style","display","querySelectorAll","el","signOut","signOutEmail","method","textContent","_dcq","push","prospect","FS","identify","userHash","displayName","navItems","body","navbar","lastClickedSubsection","navOverflowItems","showNavOnMobile","overflow","nav","classList","paddingRight","toggleNavOnMobile","toggle","Array","from","filter","item","undefined","getAttribute","index","addEventListener","targetId","targetDropdown","find","dropdown","id","navbarWidth","offsetWidth","isClosing","innerText","contains","add","height","newNavbarWidth","btn","OverflowBackground","innerWidth","configureNavbarInteraction","setupNavbar","searchParams","URLSearchParams","location","search","hasUtmParams","keys","startsWith","Intercom","host","hostname","pathname","medium","campaign","term","content","googleClickId","copyToClipboard","str","hiddenElement","createElement","setAttribute","appendChild","select","execCommand","removeChild","miniStateMachine","parentElement","steps","defaultWait","repeat","step","next","result","Number","isInteger","console","log","setTimeout","loaded","IntersectionObserver","entries","isIntersecting","observe","initializeTableOfContents","documentRef","contentElementId","selectors","toc","headings","html","groupId","heading","tag","tagName","element","innerHTML","className","preventDefault","scrollTo","offsetTop","top","behavior","refreshScrollPosition","scrollY","closest","rect","getBoundingClientRect","link","current","groupToExpand","dataset","group","tocHeight","offsetHeight","position","innerHeight","enablePasswordStrength","passwordSelector","password","checkPassword","val","zxcvbn","score","warnings","feedback","warning","suggestions","width","text","enableDynamicValidation","form","url","validationRequest","validationTimer","statusElementTimer","validationControls","cssText","input","propertyName","resetValidationStatus","statusValid","statusInvalid","statusValidating","abort","clearTimeout","validate","inputValue","formElement","submitButton","disabled","start","performance","fetch","then","response","json","end","valid","requestDuration","uiDelay","Math","max","error","dynamicValidation","setInterval","hidden","hasFocus","gtag","event_category","clearInterval","hasShadow","hasPageLoaded","observer","entry","initializeLoadOnScroll","pathName","templateHtml","eventName","localStorage","getItem","template","popup","firstChild","main","right","dateDisplay","eventType","linkUri","imageUri","opacity","setItem","initializeMarketingEventPopup","scroll","cookieArray","cookieName","eventsCookie","elem","cookiePair","event","Type","action","Data","Action","category","Category","img","uetq","dataLayer","writeTrackingEvent","Step","stepNumber","StepNumber","platform","Platform","writeFormProgressEvent","marketoFormId","MarketoFormId","marketoAccountId","MarketoAccountId","scriptUrl","callback","hiddenForm","MktoForms2","loadForm","addHiddenFields","MarketoFields","onSuccess","submit","script","type","async","onload","onreadystatechange","readyState","head","writeLeadTrackingEvent","debug","pathTrackingValue","secure","sameSite","dateTime","datetime","format","locale","formatter","Intl","DateTimeFormat","formattedDateTime","fullDateTime","timeZoneParts","resolvedOptions","timeZone"],"sourceRoot":""}