gleap 14.7.0 → 14.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","mappings":"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","sources":["webpack://Gleap/webpack/universalModuleDefinition","webpack://Gleap/webpack/bootstrap","webpack://Gleap/webpack/runtime/define property getters","webpack://Gleap/webpack/runtime/hasOwnProperty shorthand","webpack://Gleap/./src/GleapFeedbackButtonManager.js","webpack://Gleap/./src/UI.js","webpack://Gleap/./src/GleapNetworkIntercepter.js","webpack://Gleap/./src/GleapHelper.js","webpack://Gleap/./src/ChecklistNetworkManager.js","webpack://Gleap/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://Gleap/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://Gleap/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://Gleap/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://Gleap/./src/GleapTooltipManager.js","webpack://Gleap/./src/GleapSession.js","webpack://Gleap/./src/GleapStreamedEvent.js","webpack://Gleap/./src/GleapConfigManager.js","webpack://Gleap/./src/ScreenCapture.js","webpack://Gleap/./src/ResourceExclusionList.js","webpack://Gleap/./src/GleapScreenRecorder.js","webpack://Gleap/./src/GleapFeedback.js","webpack://Gleap/./src/GleapFrameManager.js","webpack://Gleap/./src/GleapMetaDataManager.js","webpack://Gleap/./src/GleapConsoleLogManager.js","webpack://Gleap/./src/GleapClickListener.js","webpack://Gleap/./src/GleapCustomDataManager.js","webpack://Gleap/./src/GleapEventManager.js","webpack://Gleap/./src/GleapCustomActionManager.js","webpack://Gleap/./node_modules/@rrweb/record/dist/record.js","webpack://Gleap/./src/GleapReplayRecorder.js","webpack://Gleap/./src/ScreenDrawer.js","webpack://Gleap/./src/GleapScrollStopper.js","webpack://Gleap/./src/GleapMarkerManager.js","webpack://Gleap/./src/GleapTranslationManager.js","webpack://Gleap/./src/GleapShortcutListener.js","webpack://Gleap/./src/GleapPreFillManager.js","webpack://Gleap/./src/GleapNotificationManager.js","webpack://Gleap/./src/GleapBannerManager.js","webpack://Gleap/./src/GleapModalManager.js","webpack://Gleap/./src/GleapAudioManager.js","webpack://Gleap/./src/GleapTagManager.js","webpack://Gleap/./src/unique-selector/src/getID.js","webpack://Gleap/./src/unique-selector/src/getClasses.js","webpack://Gleap/./src/unique-selector/src/getCombinations.js","webpack://Gleap/./src/unique-selector/src/isElement.js","webpack://Gleap/./src/unique-selector/src/getNthChild.js","webpack://Gleap/./src/unique-selector/src/getTag.js","webpack://Gleap/./src/unique-selector/src/isUnique.js","webpack://Gleap/./src/unique-selector/src/unique-selector.js","webpack://Gleap/./src/unique-selector/src/getAttributes.js","webpack://Gleap/./src/unique-selector/src/getParents.js","webpack://Gleap/./src/ElementPicker.js","webpack://Gleap/./src/GleapAdminHelper.js","webpack://Gleap/./src/GleapAdminManager.js","webpack://Gleap/./src/GleapTours.js","webpack://Gleap/./src/GleapCopilotTours.js","webpack://Gleap/./src/GleapProductTours.js","webpack://Gleap/./src/GleapPageFilter.js","webpack://Gleap/./src/Gleap.js","webpack://Gleap/./src/GleapChecklist.js","webpack://Gleap/./src/index.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 if(typeof exports === 'object')\n\t\texports[\"Gleap\"] = factory();\n\telse\n\t\troot[\"Gleap\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import {\n GleapFrameManager,\n GleapConfigManager,\n GleapNotificationManager,\n GleapTranslationManager,\n GleapSession,\n} from \"./Gleap\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapFeedbackButtonManager {\n feedbackButton = null;\n injectedFeedbackButton = false;\n buttonHidden = null;\n lastButtonIcon = null;\n\n // Feedback button types\n static FEEDBACK_BUTTON_BOTTOM_RIGHT = \"BOTTOM_RIGHT\";\n static FEEDBACK_BUTTON_BOTTOM_LEFT = \"BOTTOM_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC = \"BUTTON_CLASSIC\";\n static FEEDBACK_BUTTON_CLASSIC_LEFT = \"BUTTON_CLASSIC_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC_BOTTOM = \"BUTTON_CLASSIC_BOTTOM\";\n static FEEDBACK_BUTTON_NONE = \"BUTTON_NONE\";\n\n // GleapFeedbackButtonManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapFeedbackButtonManager();\n }\n return this.instance;\n }\n\n destroy() {\n if (this.feedbackButton) {\n this.feedbackButton.remove();\n this.feedbackButton = null;\n }\n\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectedFeedbackButton = false;\n this.instance = null;\n }\n\n /**\n * Toggles the feedback button visibility.\n * @param {*} show\n * @returns\n */\n toggleFeedbackButton(show) {\n this.buttonHidden = !show;\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapNotificationManager.getInstance().updateContainerStyle();\n }\n\n feedbackButtonPressed() {\n var frameManager = GleapFrameManager.getInstance();\n if (frameManager.isOpened()) {\n frameManager.hideWidget();\n } else {\n frameManager.setAppMode(\"widget\");\n frameManager.showWidget();\n }\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectFeedbackButton() {\n if (this.injectedFeedbackButton) {\n return;\n }\n this.injectedFeedbackButton = true;\n\n var elem = document.createElement(\"div\");\n elem.addEventListener(\"click\", () => {\n this.feedbackButtonPressed();\n });\n document.body.appendChild(elem);\n this.feedbackButton = elem;\n\n this.updateFeedbackButtonState();\n }\n\n updateNotificationBadge(count) {\n const notificationBadge = document.querySelector(\".bb-notification-bubble\");\n if (!notificationBadge) {\n return;\n }\n\n const notificationHiddenClass = \"bb-notification-bubble--hidden\";\n if (count > 0) {\n notificationBadge.classList.remove(notificationHiddenClass);\n notificationBadge.innerText = count;\n } else {\n notificationBadge.classList.add(notificationHiddenClass);\n }\n }\n\n refresh() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n this.updateFeedbackButtonText();\n this.updateFeedbackButtonState();\n } else {\n this.injectedFeedbackButton = false;\n this.feedbackButton = null;\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectFeedbackButton();\n }\n }\n\n updateFeedbackButtonText() {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n if (\n !(\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n )\n ) {\n return;\n }\n\n const feedbackButton = document.querySelector(\n \".bb-feedback-button-classic\"\n );\n if (!feedbackButton) {\n return;\n }\n\n feedbackButton.innerText = flowConfig.widgetButtonText;\n }\n\n /**\n * Updates the feedback button state\n * @returns\n */\n updateFeedbackButtonState() {\n if (this.feedbackButton === null) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n var buttonIcon = \"\";\n if (flowConfig.buttonLogo) {\n buttonIcon = `<img class=\"bb-logo-logo\" src=\"${flowConfig.buttonLogo}\" alt=\"Feedback Button\" />`;\n } else {\n buttonIcon = loadIcon(\"button\", \"#fff\");\n }\n\n this.feedbackButton.className = \"bb-feedback-button gleap-font gl-block\";\n this.feedbackButton.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n this.feedbackButton.classList.add(\n \"bb-feedback-button--classic-button-style\"\n );\n\n this.feedbackButton.innerHTML = `<div class=\"bb-feedback-button-classic ${\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ? \"bb-feedback-button-classic--left\"\n : \"\"\n }${\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ? \"bb-feedback-button-classic--bottom\"\n : \"\"\n }\">${flowConfig.widgetButtonText}</div>`;\n } else {\n if (buttonIcon !== this.lastButtonIcon) {\n this.feedbackButton.innerHTML = `<div class=\"bb-feedback-button-icon\">${buttonIcon}${loadIcon(\n \"arrowdown\",\n \"#fff\"\n )}</div><div class=\"bb-notification-bubble bb-notification-bubble--hidden\"></div>`;\n }\n }\n\n // Prevent dom update if not needed.\n this.lastButtonIcon = buttonIcon;\n\n var hideButton = false;\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n hideButton = true;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n hideButton = true;\n }\n }\n if (hideButton) {\n this.feedbackButton.classList.add(\"bb-feedback-button--disabled\");\n }\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--bottomleft\");\n }\n\n if (GleapFrameManager.getInstance().isOpened()) {\n this.feedbackButton.classList.add(\"bb-feedback-button--open\");\n }\n\n const appMode = GleapFrameManager.getInstance().appMode;\n if (\n appMode === \"survey\" ||\n appMode === \"survey_full\" ||\n appMode === \"survey_web\"\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--survey\");\n }\n\n if (\n flowConfig.hideForGuests === true &&\n !GleapSession.getInstance().isUser()\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--hidden\");\n }\n }\n}\n","import GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\n\nconst calculateShadeColor = function (col, amt) {\n col = col.replace(/^#/, \"\");\n if (col.length === 3)\n col = col[0] + col[0] + col[1] + col[1] + col[2] + col[2];\n\n let [r, g, b] = col.match(/.{2}/g);\n [r, g, b] = [\n parseInt(r, 16) + amt,\n parseInt(g, 16) + amt,\n parseInt(b, 16) + amt,\n ];\n\n r = Math.max(Math.min(255, r), 0).toString(16);\n g = Math.max(Math.min(255, g), 0).toString(16);\n b = Math.max(Math.min(255, b), 0).toString(16);\n\n const rr = (r.length < 2 ? \"0\" : \"\") + r;\n const gg = (g.length < 2 ? \"0\" : \"\") + g;\n const bb = (b.length < 2 ? \"0\" : \"\") + b;\n\n return `#${rr}${gg}${bb}`;\n};\n\nexport const calculateContrast = (hex) => {\n var r = parseInt(hex.substr(1, 2), 16),\n g = parseInt(hex.substr(3, 2), 16),\n b = parseInt(hex.substr(5, 2), 16),\n yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 160 ? \"#000000\" : \"#ffffff\";\n};\n\nexport const widgetMaxHeight = 700;\n\nexport const injectStyledCSS = (\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n) => {\n const contrastColor = calculateContrast(primaryColor);\n const contrastButtonColor = calculateContrast(buttonColor);\n const contrastBackgroundColor = calculateContrast(backgroundColor);\n const contrastHeaderColor = calculateContrast(headerColor);\n const isDarkMode = contrastBackgroundColor === \"#ffffff\";\n const headerDarkColor = calculateShadeColor(\n headerColor,\n contrastHeaderColor === \"#ffffff\" ? -35 : -15\n );\n const subTextColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 100)\n : calculateShadeColor(backgroundColor, -120);\n const backgroundColorHover = isDarkMode\n ? calculateShadeColor(backgroundColor, 30)\n : calculateShadeColor(backgroundColor, -12);\n const hoverHoverColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 80)\n : calculateShadeColor(backgroundColor, -30);\n\n var borderRadius = parseInt(borderRadius, 10);\n const buttonBorderRadius = Math.round(borderRadius * 1.05);\n const containerRadius = Math.round(borderRadius * 0.8);\n const chatRadius = Math.round(borderRadius * 0.6);\n const formItemBorderRadius = Math.round(borderRadius * 0.4);\n const formItemSmallBorderRadius = Math.round(borderRadius * 0.25);\n const zIndexBase = 2147483600;\n\n var bottomInfoOffset = 57 + buttonY;\n if (\n buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n bottomInfoOffset = buttonY + 15;\n } else if (buttonStyle && buttonStyle.includes(\"CLASSIC\")) {\n bottomInfoOffset = buttonY;\n } else if (buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE) {\n bottomInfoOffset = buttonY;\n }\n\n const colorStyleSheet = `\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px ${primaryColor} !important;\n }\n .gleap-frame-container {\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ${zIndexBase + 31};\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ${zIndexBase + 100};\n }\n\n .gleap-tooltip a {\n color: ${primaryColor};\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ${zIndexBase + 99};\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ${zIndexBase + 99};\n transform: translateX(-50%);\n border-radius: ${formItemBorderRadius}px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ${zIndexBase + 99};\n background-color: ${contrastBackgroundColor}cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ${zIndexBase + 140};\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ${backgroundColor};\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ${headerDarkColor} 0%,\n ${headerColor} 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ${backgroundColor}1A 70%,\n ${backgroundColor} 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ${headerColor} !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ${buttonY}px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ${bottomInfoOffset}px;\n right: ${buttonX}px;\n z-index: ${zIndexBase + 30};\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ${buttonX}px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ${buttonY}px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ${subTextColor};\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ${backgroundColor};\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ${backgroundColorHover};\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ${primaryColor};\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ${subTextColor};\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ${contrastBackgroundColor};\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ${subTextColor};\n }\n\n .gleap-news-next-button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ${subTextColor};\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ${subTextColor};\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ${subTextColor};\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ${primaryColor};\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ${backgroundColor};\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ${contrastBackgroundColor};\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: \" \";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ${backgroundColor};\n }\n\n .gleap-notification-item-sender {\n color: ${subTextColor};\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ${contrastBackgroundColor};\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ${130 + buttonY}px);\n max-height: ${widgetMaxHeight}px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: \" \";\n position: absolute;\n width: 100%;\n height: calc(100% - ${containerRadius}px);\n top: ${containerRadius}px;\n background-color: ${backgroundColor};\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ${zIndexBase + 30};\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: \"\";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: \"\";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ${buttonX}px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ${buttonX}px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ${zIndexBase + 14};\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ${zIndexBase + 16};\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ${primaryColor};\n cursor: crosshair;\n z-index: ${zIndexBase + 10};\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ${zIndexBase + 18};\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${primaryColor};\n border-bottom-left-radius: ${formItemSmallBorderRadius}px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ${formItemSmallBorderRadius}px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ${contrastColor};\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type=\"undo\"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active=\"true\"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ${zIndexBase + 20};\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: \"\";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ${contrastBackgroundColor};\n border-radius: ${buttonBorderRadius}px;\n background-color: ${backgroundColorHover};\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ${hoverHoverColor};\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ${primaryColor};\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ${backgroundColorHover};\n }\n .bb-tooltip {\n border-radius: ${formItemBorderRadius}px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ${hoverHoverColor};\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${buttonBorderRadius}px;\n }\n .bb-capture-button-next {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${formItemSmallBorderRadius}px;\n }\n .bb-capture-preview-inner {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-timer {\n color: ${subTextColor};\n }\n .bb-svg-path {\n fill: ${contrastBackgroundColor};\n }\n .bb-capture-toolbar-item {\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ${backgroundColor};\n }\n .bb-capture-toolbar-item--active {\n background-color: ${backgroundColorHover};\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ${formItemBorderRadius}px;\n border-top-right-radius: ${formItemBorderRadius}px;\n }\n .bb-logo-logo--default path {\n fill: ${contrastButtonColor};\n }\n .bb-logo-arrowdown {\n fill: ${contrastButtonColor};\n }\n .bb-feedback-button-icon {\n background-color: ${buttonColor};\n }\n .bb-feedback-button-classic {\n background-color: ${buttonColor};\n color: ${contrastButtonColor};\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n min-height: -webkit-fill-available;\n max-height: -webkit-fill-available;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ${contrastBackgroundColor};\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ${hoverHoverColor}; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ${subTextColor};\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ${zIndexBase + 35};\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ${zIndexBase + 40};\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ${buttonColor} !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ${buttonColor} !important;\n color: ${contrastButtonColor} !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ${formItemBorderRadius}px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: \"Helvetica Neue\", Inter, ui-sans-serif, \"Apple Color Emoji\", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*=\"block\"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ${contrastBackgroundColor} !important;\n background-color: ${backgroundColorHover} !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ${primaryColor}22 !important;\n color: ${primaryColor} !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: \"\";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ${zIndexBase + 40};\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ${zIndexBase + 41};\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ${zIndexBase + 100};\n background-color: ${backgroundColor};\n border-radius: ${containerRadius}px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n `;\n\n const oldNode = document.querySelector(\".gleap-styles\");\n if (oldNode) {\n oldNode.remove();\n }\n const node = document.createElement(\"style\");\n node.innerHTML = colorStyleSheet;\n node.className = \"gleap-styles\";\n document.body.appendChild(node);\n};\n\nexport const loadIcon = function (name, color) {\n if (name === \"button\") {\n return `<svg class=\"bb-logo-logo bb-logo-logo--default\" width=\"145\" height=\"144\" viewBox=\"0 0 145 144\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M38.9534 15H105.047C113.857 15 121 22.1426 121 30.9534L121 89.5238L121 96.015L121 125.541C121 128.759 117.393 130.66 114.739 128.84L90.1188 111.968H38.9534C30.1426 111.968 23 104.826 23 96.015V30.9534C23 22.1426 30.1426 15 38.9534 15Z\" fill=\"white\"/>\n </svg>`;\n }\n\n if (name === \"drag\") {\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"><!--!Font Awesome Pro 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2025 Fonticons, Inc.--><path d=\"M64 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm0 160a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM96 416a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96-288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM192 448a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"/></svg>`;\n }\n\n if (name === \"unmute\") {\n return `<svg id=\"tooltip-svg-unmute\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\"><path id=\"tooltip-svg-unmute-path\" d=\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.1 386.2C556.7 352 576 306.3 576 256c0-60.1-27.7-113.8-70.9-149c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C507.3 170.7 528 210.9 528 256c0 39.1-15.6 74.5-40.9 100.5L449 326.6c19-17.5 31-42.7 31-70.6c0-30.1-13.9-56.9-35.4-74.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C425.1 227.6 432 241 432 256s-6.9 28.4-17.7 37.3c-1.3 1-2.4 2.2-3.4 3.4L352 250.6V64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L197.8 129.8 38.8 5.1zM352 373.3L82.9 161.3C53.8 167.4 32 193.1 32 224v64c0 35.3 28.7 64 64 64h67.8L298.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S352 460.6 352 448V373.3z\"/></svg>`;\n }\n\n if (name === \"mute\") {\n return `<svg id=\"tooltip-svg-mute\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\"><path id=\"tooltip-svg-mute-path\" d=\"M533.6 32.5C598.5 85.3 640 165.8 640 256s-41.5 170.8-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z\"/></svg>`;\n }\n\n if (name === \"replay\") {\n return `<svg id=\"tooltip-svg-replay\" width=\"512\" height=\"512\" viewBox=\"0 0 512 512\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path id=\"tooltip-svg-replay-path\" d=\"M48.5 224H40C26.7 224 16 213.3 16 200V72C16 62.3 21.8 53.5 30.8 49.8C39.8 46.1 50.1 48.1 57 55L98.6 96.6C186.2 10.1 327.3 10.4 414.4 97.6C501.9 185.1 501.9 326.9 414.4 414.4C326.9 501.9 185.1 501.9 97.6 414.4C85.1 401.9 85.1 381.6 97.6 369.1C110.1 356.6 130.4 356.6 142.9 369.1C205.4 431.6 306.7 431.6 369.2 369.1C431.7 306.6 431.7 205.3 369.2 142.8C307 80.6 206.5 80.3 143.9 141.8L185 183C191.9 189.9 193.9 200.2 190.2 209.2C186.5 218.2 177.7 224 168 224H48.5Z\" />\n </svg>`;\n }\n\n if (name === \"dismiss\") {\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"><path d=\"M294.6 166.6L317.3 144 272 98.7l-22.6 22.6L160 210.7 70.6 121.4 48 98.7 2.7 144l22.6 22.6L114.7 256 25.4 345.4 2.7 368 48 413.3l22.6-22.6L160 301.3l89.4 89.4L272 413.3 317.3 368l-22.6-22.6L205.3 256l89.4-89.4z\"/></svg>`;\n }\n\n if (name === \"blur\") {\n return `<svg width=\"1200pt\" height=\"1200pt\" version=\"1.1\" viewBox=\"0 0 1200 1200\" xmlns=\"http://www.w3.org/2000/svg\">\n <path class=\"bb-svg-path\" d=\"m602.25 1200c238.2 0 435.95-193.26 435.95-435.95 0-269.66-220.23-615.73-435.95-764.05-220.23 161.8-440.45 485.39-440.45 764.05 0 242.7 197.75 435.95 440.45 435.95zm-260.68-382.02c0 112.36 89.887 206.74 206.74 206.74v62.922c-148.32 0-274.16-121.35-274.16-269.66z\" fill=\"#333\"/>\n</svg>`;\n }\n\n if (name === \"pen\") {\n return `<svg width=\"1072px\" height=\"1034px\" viewBox=\"0 0 1072 1034\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(-907.000000, -217.000000)\" fill-rule=\"nonzero\">\n <g transform=\"translate(907.268457, 217.009827)\">\n <g transform=\"translate(132.335119, 0.000000)\" fill=\"#000\" class=\"bb-svg-path\">\n <path d=\"M20.3764235,730.530173 L10.1884235,720.342173 C-0.791576454,709.362173 -3.16357645,692.432173 4.37592355,678.858173 L83.1809235,537.018173 C71.7589235,502.979173 82.3098335,463.998173 112.254924,440.706173 L655.334924,18.3161733 C689.951924,-8.6058267 739.197924,-5.5388267 770.214924,25.4684733 L913.774924,169.028473 C944.782924,200.040473 947.848924,249.286473 920.927224,283.908473 L498.537224,826.988473 C496.322424,829.836173 493.935624,832.543173 491.384924,835.090073 C467.271924,859.207073 432.513924,866.195073 402.232924,856.063073 L260.382924,934.868073 C246.804924,942.407173 229.874924,940.036073 218.894924,929.055573 L208.706924,918.867573 L20.3764235,730.530173 Z M866.006424,241.190173 C871.393124,234.264373 870.779824,224.417173 864.576724,218.213173 L721.016724,74.6531733 C714.813624,68.4500733 704.965724,67.8367733 698.043724,73.2234733 L154.963724,495.613473 C147.381724,501.507973 146.018424,512.433473 151.912924,520.015473 C152.358234,520.585783 152.834804,521.128773 153.346524,521.636573 L417.586524,785.886573 C424.379524,792.675673 435.391524,792.675673 442.180524,785.886573 C442.692244,785.374853 443.168804,784.831873 443.610224,784.265473 L866.006424,241.190173 Z M342.796424,809.480173 L129.746424,596.430173 L77.9264235,689.707173 L249.516424,861.297173 L342.796424,809.480173 Z\"></path>\n </g>\n <g transform=\"translate(-0.000000, 755.530173)\" fill=\"#EB144C\">\n <path d=\"M124.711543,0 L313.042043,188.3374 L233.288043,268.0914 C222.003043,279.3764 204.483043,281.5324 190.800043,273.3219 L16.8900429,168.9719 C-2.51595711,157.3309 -5.80895711,130.5499 10.1908429,114.5499 L124.711543,0 Z\" class=\"bb-pen-tip\"></path>\n </g>\n </g>\n </g>\n </g>\n</svg>`;\n }\n\n if (name === \"rect\") {\n return `<svg width=\"339px\" height=\"241px\" viewBox=\"0 0 339 241\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(-0.000865, 0.000000)\" fill-rule=\"nonzero\">\n <g transform=\"translate(0.000865, 0.000000)\" fill=\"#000000\" class=\"bb-svg-path\">\n <path d=\"M339,0 L339,241 L0,241 L0,0 L339,0 Z M312.826351,26.168387 L26.1855674,26.168387 L26.1855674,214.41156 L312.826351,214.41156 L312.826351,26.168387 Z\"></path>\n </g>\n <g transform=\"translate(0.000000, 83.206095)\" fill=\"#EB144C\" class=\"bb-pen-tip\">\n <path d=\"M0,0 L26.186,26.186 L26.1864325,131.205465 L131.204,131.205 L157.792,157.793 L0.000865118243,157.793905 L0,0 Z\"></path>\n </g>\n </g>\n </g>\n</svg>`;\n }\n\n if (name === \"pointer\") {\n return `<svg width=\"1200pt\" height=\"1200pt\" version=\"1.1\" viewBox=\"0 0 1200 1200\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m1050.7 508.95-225.94 157.5 160.31 160.31c4.4531 4.4531 6.9141 10.43 6.9141 16.758s-2.4609 12.305-6.9141 16.758l-126.09 126.09c-4.4531 4.4531-10.43 6.9141-16.758 6.9141-6.3281 0-12.188-2.4609-16.758-6.9141l-160.2-160.43-157.62 225.94c-3.3984 4.9219-9.0234 7.8516-14.883 7.8516-0.70313 0-1.5234 0-2.2266-0.11719-6.7969-0.82031-12.422-5.2734-14.766-11.719l-333.16-880.55c-2.5781-6.6797-0.9375-14.297 4.2188-19.336 5.0391-5.0391 12.656-6.6797 19.336-4.2188l880.66 333.05c6.3281 2.3438 10.781 8.0859 11.602 14.766 0.82031 6.7969-2.1094 13.359-7.7344 17.344z\" fill=\"#333\"/>\n </svg>`;\n }\n\n if (name === \"clip\") {\n return `<svg width=\"600px\" height=\"1126px\" viewBox=\"0 0 600 1126\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(-0.002000, 0.501000)\" fill=\"#333333\" fill-rule=\"nonzero\">\n <path d=\"M225.002,1124.999 C165.33,1124.999 108.102,1101.292 65.902,1059.097 C23.707,1016.902 5.68434189e-14,959.671 5.68434189e-14,899.997 L5.68434189e-14,299.997 C5.68434189e-14,220.431 31.605,144.127 87.867,87.867 C144.129,31.605 220.437,-4.26325641e-14 299.997,-4.26325641e-14 C379.557,-4.26325641e-14 455.867,31.605 512.127,87.867 C568.389,144.129 599.994,220.437 599.994,299.997 L599.994,1012.497 C599.994,1025.895 592.8456,1038.274 581.244,1044.974 C569.642,1051.6732 555.346,1051.6732 543.744,1044.974 C532.142,1038.2748 524.994,1025.896 524.994,1012.497 L524.994,299.997 C524.994,240.325 501.287,183.097 459.092,140.897 C416.897,98.702 359.666,74.995 299.992,74.995 C240.318,74.995 183.092,98.702 140.892,140.897 C98.697,183.092 74.99,240.323 74.99,299.997 L74.99,899.997 C74.99,953.587 103.58,1003.107 149.99,1029.897 C196.4,1056.694 253.58,1056.694 299.99,1029.897 C346.4,1003.104 374.99,953.585 374.99,899.997 L374.99,337.497 C374.99,310.704 360.697,285.942 337.49,272.544 C314.283,259.149 285.697,259.149 262.49,272.544 C239.283,285.942 224.99,310.704 224.99,337.497 L224.99,824.997 C224.99,838.395 217.8416,850.774 206.24,857.474 C194.638,864.1732 180.342,864.1732 168.74,857.474 C157.138,850.7748 149.99,838.396 149.99,824.997 L149.99,337.497 C149.99,283.907 178.58,234.387 224.99,207.597 C271.4,180.8 328.58,180.8 374.99,207.597 C421.4,234.39 449.99,283.909 449.99,337.497 L449.99,899.997 C449.99,959.669 426.283,1016.897 384.088,1059.097 C341.893,1101.292 284.662,1124.999 224.988,1124.999 L225.002,1124.999 Z\" id=\"Path\"></path>\n </g>\n </g>\n</svg>`;\n }\n\n if (name === \"mic\") {\n return `<svg\n width=\"1200pt\"\n height=\"1200pt\"\n version=\"1.1\"\n viewBox=\"0 0 1200 1200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g class=\"bb-svg-path\">\n <path\n d=\"m600 862.5c144.75 0 262.5-117.75 262.5-262.5v-300c0-144.75-117.75-262.5-262.5-262.5s-262.5 117.75-262.5 262.5v300c0 144.75 117.75 262.5 262.5 262.5z\"\n />\n <path\n d=\"m1012.5 600c0-20.707-16.793-37.5-37.5-37.5s-37.5 16.793-37.5 37.5c0 186.11-151.41 337.5-337.5 337.5s-337.5-151.39-337.5-337.5c0-20.707-16.793-37.5-37.5-37.5s-37.5 16.793-37.5 37.5c0 214.8 165.08 391.57 375 410.6v114.4c0 20.727 16.793 37.5 37.5 37.5s37.5-16.773 37.5-37.5v-114.4c209.92-19.031 375-195.8 375-410.6z\"\n />\n </g>\n </svg>`;\n }\n\n if (name === \"camera\") {\n return `<svg width=\"1155px\" height=\"1004px\" viewBox=\"0 0 1155 1004\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g fill=\"#333333\" fill-rule=\"nonzero\">\n <g transform=\"translate(128.324095, 0.000000)\">\n <path d=\"M42.7803063,0.00413459787 C31.4357421,0.00413459787 20.5549853,4.41399115 12.5336107,12.2572687 C4.51223664,20.1005462 0.00420584816,30.741831 0.00420584816,41.8370305 L0.00420584816,251.00151 C-0.156199045,262.200455 4.27736739,272.989996 12.315738,280.963903 C20.3585574,288.938257 31.3288589,293.431222 42.7803063,293.431222 C54.2317532,293.431222 65.2018267,288.938592 73.2448746,280.963903 C81.2832452,272.989549 85.7172445,262.200455 85.5564062,251.00151 L85.5564062,83.6699265 L256.660808,83.6699265 C268.112255,83.8267939 279.145066,79.4909873 287.298762,71.6298611 C295.452913,63.7643845 300.04718,53.0359758 300.04718,41.8370305 C300.04718,30.6380854 295.453255,19.9098998 287.298762,12.0441998 C279.144611,4.18307356 268.112255,-0.153157091 256.660808,0.00413459787 L42.7803063,0.00413459787 Z\"></path>\n <path d=\"M983.227131,710.59444 C971.895913,710.764382 961.099907,715.326799 953.20401,723.279287 C945.312674,731.227538 940.964345,741.91668 941.119476,752.99849 L941.119476,920.330075 L770.015075,920.330075 C758.563631,920.173205 747.530815,924.509015 739.377123,932.370139 C731.222968,940.235615 726.628705,950.964028 726.628705,962.16297 C726.628705,973.361918 731.222627,984.090105 739.377123,991.955802 C747.531272,999.816926 758.563631,1004.15316 770.015075,1003.99587 L983.895579,1003.99587 C995.24014,1003.99587 1006.1209,999.586011 1014.14227,991.742733 C1022.16365,983.899455 1026.67168,973.258169 1026.67168,962.16297 L1026.67168,752.99849 C1026.83208,741.690223 1022.30053,730.801401 1014.11489,722.812989 C1005.93394,714.825472 994.790363,710.415949 983.227131,710.59444 L983.227131,710.59444 Z\"></path>\n <path d=\"M983.227131,375.93127 C971.895913,376.101212 961.099907,380.66363 953.20401,388.61612 C945.312674,396.56437 940.964345,407.253512 941.119476,418.335325 L941.119476,585.66691 C940.959072,596.865853 945.39264,607.655394 953.431008,615.629303 C961.47383,623.603658 972.444131,628.096618 983.895579,628.096618 C995.347023,628.096618 1006.3171,623.603989 1014.36015,615.629303 C1022.39852,607.654947 1026.83251,596.865853 1026.67168,585.66691 L1026.67168,418.335325 C1026.83208,407.027056 1022.30053,396.138232 1014.11489,388.149822 C1005.93394,380.162305 994.790363,375.752783 983.227131,375.93127 L983.227131,375.93127 Z\"></path>\n <path d=\"M769.974012,0.00413459787 C758.522563,-0.152733184 747.489752,4.18307356 739.336055,12.0441998 C731.181906,19.9096767 726.587637,30.6380854 726.587637,41.8370305 C726.587637,53.0359758 731.181564,63.7641611 739.336055,71.6298611 C747.490209,79.4909873 758.522563,83.8272181 769.974012,83.6699265 L941.078414,83.6699265 L941.078414,251.00151 C940.918009,262.200455 945.351572,272.989996 953.389945,280.963903 C961.432763,288.938257 972.403063,293.431222 983.854512,293.431222 C995.30596,293.431222 1006.27603,288.938592 1014.31908,280.963903 C1022.35745,272.989549 1026.79145,262.200455 1026.63061,251.00151 L1026.63061,41.8370305 C1026.63061,30.7426118 1022.12133,20.1017733 1014.10121,12.2572687 C1006.08109,4.41276405 995.199876,0.00413459787 983.854512,0.00413459787 L769.974012,0.00413459787 Z\"></path>\n <path d=\"M427.765208,0.00413459787 C416.31376,-0.152733184 405.280949,4.18307356 397.127256,12.0441998 C388.973102,19.9096767 384.378838,30.6380854 384.378838,41.8370305 C384.378838,53.0359758 388.972761,63.7641611 397.127256,71.6298611 C405.281406,79.4909873 416.31376,83.8272181 427.765208,83.6699265 L598.86961,83.6699265 C610.321058,83.8267939 621.35387,79.4909873 629.507562,71.6298611 C637.661716,63.7643845 642.255985,53.0359758 642.255985,41.8370305 C642.255985,30.6380854 637.662058,19.9098998 629.507562,12.0441998 C621.353413,4.18307356 610.321058,-0.153157091 598.86961,0.00413459787 L427.765208,0.00413459787 Z\"></path>\n </g>\n <g transform=\"translate(0.000000, 427.000000)\">\n <path d=\"M768.516184,22.1826583 C752.659627,13.73125 732.573775,13.73125 717.773442,24.29375 L562.379192,124.6375 L562.379192,31.6875 C562.379192,13.7330104 548.635081,0 530.666079,0 L31.7131123,0 C13.7441105,0 0,13.7330104 0,31.6875 L0,475.3125 C0,493.26699 13.7441105,507 31.7131123,507 L530.666079,507 C548.635081,507 562.379192,493.26699 562.379192,475.3125 L562.379192,382.3625 L717.773442,482.70625 C726.231681,487.9875 735.742444,491.157658 745.257258,491.157658 C753.715498,491.157658 761.113815,489.046567 769.572406,484.820862 C786.485185,475.313732 796,458.414612 796,439.400352 L796,68.6566021 C794.943601,48.5869719 785.428963,31.6878521 768.516184,22.1807219 L768.516184,22.1826583 Z\"></path>\n </g>\n </g>\n </g>\n</svg>`;\n }\n\n if (name === \"recorderon\") {\n return `<svg width=\"1251px\" height=\"1251px\" viewBox=\"0 0 1251 1251\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g>\n <circle fill=\"#E31810\" cx=\"625.5\" cy=\"625.5\" r=\"625.5\"></circle>\n <circle fill=\"#F71008\" cx=\"625\" cy=\"625\" r=\"507\"></circle>\n <g transform=\"translate(175.000000, 449.000000)\" fill=\"#FFFFFF\" fill-rule=\"nonzero\">\n <path d=\"M0,347.097493 L0,4.90250696 L135.528311,4.90250696 C161.471024,4.90250696 183.639743,9.49741034 202.034469,18.6872171 C220.429194,27.8770239 234.46286,40.8541449 244.135466,57.6185803 C253.808072,74.3830156 258.644376,94.0714804 258.644376,116.683975 C258.644376,139.40786 253.724206,158.929238 243.883867,175.248107 C234.043527,191.566976 219.814173,204.070682 201.195803,212.759227 C182.577434,221.447772 160.073248,225.792044 133.683247,225.792044 L42.9396629,225.792044 L42.9396629,167.64563 L121.941933,167.64563 C135.807866,167.64563 147.325536,165.751973 156.494943,161.964659 C165.66435,158.177344 172.51345,152.496373 177.042243,144.921744 C181.571035,137.347116 183.835432,127.934526 183.835432,116.683975 C183.835432,105.322032 181.571035,95.7423543 177.042243,87.9449425 C172.51345,80.1475308 165.636395,74.2159282 156.411077,70.1501349 C147.185759,66.0843416 135.584222,64.051445 121.606467,64.051445 L72.6284142,64.051445 L72.6284142,347.097493 L0,347.097493 Z M185.512762,191.37204 L270.888889,347.097493 L190.712487,347.097493 L107.181424,191.37204 L185.512762,191.37204 Z\"></path>\n <polygon points=\"309.166667 347.097493 309.166667 4.90250696 540.126846 4.90250696 540.126846 64.5527072 381.634607 64.5527072 381.634607 146.091356 528.244113 146.091356 528.244113 205.741556 381.634607 205.741556 381.634607 287.447293 540.796296 287.447293 540.796296 347.097493\"></polygon>\n <path d=\"M901,124.638783 L827.757943,124.638783 C826.420189,115.158428 823.68894,106.709759 819.564197,99.2927757 C815.439454,91.8757921 810.144176,85.5462611 803.678363,80.3041825 C797.212549,75.0621039 789.77129,71.0468948 781.354585,68.2585551 C772.93788,65.4702155 763.824427,64.0760456 754.014228,64.0760456 C736.288981,64.0760456 720.849065,68.4537389 707.69448,77.2091255 C694.539894,85.964512 684.339516,98.6793409 677.093346,115.353612 C669.847176,132.027883 666.224091,152.243346 666.224091,176 C666.224091,200.425856 669.875046,220.948035 677.176956,237.56654 C684.478866,254.185044 694.707113,266.732573 707.861699,275.209125 C721.016285,283.685678 736.233242,287.923954 753.51257,287.923954 C763.21129,287.923954 772.213263,286.641318 780.518488,284.076046 C788.823714,281.510773 796.209233,277.746515 802.675047,272.78327 C809.14086,267.820025 814.519748,261.769328 818.81171,254.631179 C823.103672,247.493029 826.08575,239.351077 827.757943,230.205323 L901,230.539924 C899.104848,246.26616 894.394837,261.406844 886.869968,275.961977 C879.3451,290.51711 869.256201,303.510773 856.603274,314.942966 C843.950346,326.375158 828.900608,335.409379 811.45406,342.045627 C794.007513,348.681876 774.303504,352 752.342035,352 C721.796641,352 694.512024,345.084918 670.488184,331.254753 C646.464343,317.424588 627.512821,297.404309 613.633619,271.193916 C599.754416,244.983523 592.814815,213.252218 592.814815,176 C592.814815,138.636248 599.838026,106.849176 613.884448,80.6387833 C627.93087,54.4283904 646.993871,34.4359949 671.073451,20.661597 C695.153031,6.88719899 722.242559,0 752.342035,0 C772.185393,0 790.607387,2.78833967 807.608016,8.36501901 C824.608646,13.9416984 839.686254,22.0557668 852.840839,32.7072243 C865.995425,43.3586819 876.72533,56.3802281 885.030556,71.7718631 C893.335782,87.1634981 898.65893,104.785805 901,124.638783 Z\"></path>\n </g>\n </g>\n </g>\n</svg>`;\n }\n\n if (name === \"recorderoff\") {\n return `<svg width=\"1251px\" height=\"1251px\" viewBox=\"0 0 1251 1251\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g class=\"bb-rec-on-circle\" fill=\"#EEEEEE\" fill-rule=\"nonzero\">\n <path d=\"M625.5,0 C970.954111,0 1251,280.045889 1251,625.5 C1251,970.954111 970.954111,1251 625.5,1251 C280.045889,1251 0,970.954111 0,625.5 C0,280.045889 280.045889,0 625.5,0 Z M626,124 C348.753056,124 124,348.753056 124,626 C124,903.246944 348.753056,1128 626,1128 C903.246944,1128 1128,903.246944 1128,626 C1128,348.753056 903.246944,124 626,124 Z\"></path>\n </g>\n <g class=\"bb-rec-on-cont\" fill=\"#E31810\" transform=\"translate(86.000000, 86.000000)\" fill-rule=\"nonzero\">\n <path d=\"M540,0 C241.2,0 0,241.2 0,540 C0,838.8 241.2,1080 540,1080 C838.8,1080 1080,838.8 1080,540 C1080,241.2 838.8,0 540,0 Z M777.6,741.6 C777.6,761.998 761.998,777.6 741.6,777.6 L338.4,777.6 C318.002,777.6 302.4,761.998 302.4,741.6 L302.4,338.4 C302.4,318.002 318.002,302.4 338.4,302.4 L741.6,302.4 C761.998,302.4 777.6,318.002 777.6,338.4 L777.6,741.6 Z\"></path>\n </g>\n </g>\n </svg>`;\n }\n\n if (name === \"arrowdown\") {\n return `<svg class=\"bb-logo-arrowdown\" fill=\"${color}\" width=\"100pt\" height=\"100pt\" version=\"1.1\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m50 77.637c-1.3477 0-2.6953-0.51562-3.7266-1.543l-44.73-44.73c-2.0586-2.0586-2.0586-5.3945 0-7.4531 2.0586-2.0586 5.3945-2.0586 7.4531 0l41.004 41 41.004-41c2.0586-2.0586 5.3945-2.0586 7.4531 0 2.0586 2.0586 2.0586 5.3945 0 7.4531l-44.73 44.727c-1.0312 1.0312-2.3789 1.5469-3.7266 1.5469z\"/>\n </svg>`;\n }\n\n if (name === \"arrowleft\") {\n return `<svg fill=\"${color}\" width=\"100pt\" height=\"100pt\" version=\"1.1\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m70.988 1.6211c2.1875-2.168 5.7344-2.168 7.9297 0 2.1836 2.168 2.1836 5.7227 0 7.8906l-46.016 40.445 46.016 40.5c2.1836 2.168 2.1836 5.668 0 7.8906-2.1953 2.168-5.7383 2.168-7.9297 0l-50.039-44.109c-1.168-1.168-1.668-2.7227-1.5898-4.2773-0.078125-1.5 0.42188-3.0547 1.5898-4.2227l50.039-44.109z\" fill-rule=\"evenodd\"/>\n </svg>`;\n }\n\n if (name === \"close\") {\n return `<svg fill=\"${color}\" width=\"100pt\" height=\"100pt\" version=\"1.1\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m72.812 33.02l-5.832-5.832-16.98 16.875-16.98-16.875-5.832 5.832 16.875 16.98-16.875 16.98 5.832 5.832 16.98-16.875 16.98 16.875 5.832-5.832-16.875-16.98z\"/>\n </svg>`;\n }\n\n if (name === \"undo\") {\n return `<svg width=\"62px\" height=\"60px\" viewBox=\"0 0 62 60\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g class=\"bb-svg-path\" transform=\"translate(-0.000500, 0.001926)\" fill-rule=\"nonzero\">\n <path d=\"M28.0005,51.6270739 C24.9653,51.0684839 22.0825,49.8731739 19.5396,48.1192739 L13.8208,53.8380739 C17.9536,57.0060739 22.8403,59.0333739 28.0008,59.7286739 L28.0005,51.6270739 Z\" id=\"Path\"></path>\n <path d=\"M2.2705,33.9980739 C2.96581,39.1582739 4.9932,44.0450739 8.1611,48.1780739 L13.8799,42.4592739 C12.126,39.9162739 10.9307,37.0334739 10.3721,33.9983739 L2.2705,33.9980739 Z\" id=\"Path\"></path>\n <path d=\"M61.7305,33.9980739 L53.6289,33.9980739 C53.07031,37.0332739 51.875,39.9160739 50.1211,42.4589739 L55.8399,48.1777739 C59.0079,44.0449739 61.0352,39.1582739 61.7305,33.9977739 L61.7305,33.9980739 Z\" id=\"Path\"></path>\n <path d=\"M4.0005,24.9980739 L24.0005,24.9980739 L24.0005,16.9980739 L14.27,16.9980739 C17.6762,12.3613739 22.7622,9.24417393 28.442,8.31057393 C34.1178,7.38088393 39.934,8.70901393 44.645,12.0175739 C49.352,15.3222739 52.5786,20.3417739 53.6294,25.9975739 L61.731,25.9975739 C60.6646,18.0834739 56.4888,10.9235739 50.129,6.09957393 C43.7657,1.27147393 35.746,-0.818426068 27.836,0.290973932 C19.9298,1.39647393 12.793,5.61127393 8,11.9979739 L8,0.997973932 L-3.55271368e-15,0.997973932 L-3.55271368e-15,20.9979739 C-3.55271368e-15,22.0604739 0.42188,23.0760739 1.1719,23.8260739 C1.92192,24.5760739 2.9375,24.9979739 4,24.9979739 L4.0005,24.9980739 Z\" id=\"Path\"></path>\n <path d=\"M36.0005,51.6270739 L36.0005,59.7286739 C41.1607,59.0333639 46.0475,57.0059739 50.1805,53.8380739 L44.4617,48.1192739 C41.9187,49.8731739 39.0359,51.0684739 36.0008,51.6270739 L36.0005,51.6270739 Z\" id=\"Path\"></path>\n </g>\n </g>\n </svg>`;\n }\n\n if (name === \"circle-dot\") {\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"${color}\" d=\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"/></svg>`;\n }\n\n if (name === \"circle-question\") {\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"${color}\" d=\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"/></svg>`;\n }\n\n if (name === \"circle-info\") {\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"${color}\" d=\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216 192V224h24 48 24v24 88h8 24v48H296 216 192V336h24zm72-144H224V128h64v64z\"/></svg>`;\n }\n\n if (name === \"circle-exclamation\") {\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"${color}\" d=\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm24-384v24V264v24H232V264 152 128h48zM232 368V320h48v48H232z\"/></svg>`;\n }\n\n if (name === \"circle-up\") {\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"${color}\" d=\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM384 256H304V384H208V256H128V224L256 96 384 224v32z\"/></svg>`;\n }\n\n if (name === \"circle-right\") {\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"${color}\" d=\"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM256 384l0-80-128 0 0-96 128 0 0-80 32 0L416 256 288 384l-32 0z\"/></svg>`;\n }\n\n return \"\";\n};\n","class GleapNetworkIntercepter {\n startTimestamp = Date.now();\n requestId = 0;\n requests = {};\n externalRequests = [];\n maxRequests = 30;\n filters = [];\n defaultBlacklist = [\"gleap.io\"];\n blacklist = [];\n initialized = false;\n stopped = false;\n loadAllResources = false;\n\n // GleapNetworkIntercepter singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNetworkIntercepter();\n }\n return this.instance;\n }\n\n setLoadAllResources(loadAllResources) {\n this.loadAllResources = loadAllResources;\n }\n\n isContentTypeSupported(contentType) {\n if (typeof contentType !== \"string\") {\n return false;\n }\n\n if (contentType === \"\") {\n return true;\n }\n\n contentType = contentType.toLocaleLowerCase();\n\n const supportedContentTypes = [\"text/\", \"xml\", \"json\"];\n for (var i = 0; i < supportedContentTypes.length; i++) {\n if (contentType.includes(supportedContentTypes[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n getRequests() {\n var requests = JSON.parse(JSON.stringify(Object.values(this.requests)));\n\n // Merge external requests into internal requests.\n if (this.externalRequests && this.externalRequests.length > 0) {\n requests = requests.concat(this.externalRequests);\n }\n\n if (this.filters && this.filters.length > 0) {\n // Perform network log filtering.\n for (var i = 0; i < requests.length; i++) {\n var request = requests[i];\n\n // Headers\n if (request && request.request && request.request.headers) {\n for (var j = 0; j < this.filters.length; j++) {\n delete request.request.headers[this.filters[j]];\n }\n }\n\n // Payload\n if (request && request.request && request.request.payload) {\n var payloadObj = request.request.payload;\n try {\n payloadObj = JSON.parse(request.request.payload);\n } catch (e) { }\n\n if (payloadObj) {\n for (var j = 0; j < this.filters.length; j++) {\n delete payloadObj[this.filters[j]];\n }\n request.request.payload = JSON.stringify(payloadObj);\n }\n }\n\n // Response\n if (request && request.response && request.response.responseText) {\n try {\n var data = JSON.parse(request.response.responseText);\n for (var j = 0; j < this.filters.length; j++) {\n delete data[this.filters[j]];\n }\n request.response.responseText = JSON.stringify(data);\n } catch (e) { }\n }\n }\n }\n\n // Get static resources from performance.\n try {\n if (typeof window !== \"undefined\" && window.performance) {\n var resources = window.performance.getEntriesByType(\"resource\");\n for (var i = 0; i < resources.length; i++) {\n var resource = resources[i];\n if (resource && resource.name) {\n if ((this.loadAllResources || [\"xmlhttprequest\", \"fetch\"].indexOf(resource.initiatorType) > -1) && !requests.find(request => request.url === resource.name)) {\n requests.push({\n type: \"RESOURCE\",\n date: new Date(this.startTimestamp + resource.startTime),\n url: resource.name,\n duration: Math.round(resource.duration),\n initiatorType: resource.initiatorType\n });\n }\n }\n }\n }\n } catch (exp) { }\n\n var blacklist = this.blacklist.concat(this.defaultBlacklist);\n if (blacklist && blacklist.length > 0) {\n try {\n requests = requests.filter((request) => {\n for (var i = 0; i < blacklist.length; i++) {\n if (request && request.url && request.url.includes(blacklist[i])) {\n return false;\n }\n }\n return true;\n });\n } catch (exp) { }\n }\n\n return requests;\n }\n\n setMaxRequests(maxRequests) {\n if (maxRequests > 70) {\n maxRequests = 70;\n }\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped) {\n this.stopped = stopped;\n }\n\n setFilters(filters) {\n this.filters = this.filters.concat(filters ? filters : []);\n }\n\n setBlacklist(blacklist) {\n this.blacklist = this.blacklist.concat(blacklist ? blacklist : []);\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(bbRequestId) {\n if (!bbRequestId || !this.requests || !this.requests[bbRequestId]) {\n return;\n }\n\n var startDate = this.requests[bbRequestId][\"date\"];\n if (startDate) {\n this.requests[bbRequestId][\"duration\"] =\n new Date().getTime() - startDate.getTime();\n }\n }\n\n getTextContentSize(text) {\n var size = 0;\n try {\n size = new TextEncoder().encode(text).length;\n } catch (exp) {\n try {\n size = encodeURI(s).split(/%..|./).length - 1;\n } catch (exp) {\n try {\n size = new Blob([text]).size;\n } catch (exp) {\n size = text.length;\n }\n }\n }\n\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n return megaBytes;\n }\n\n cleanupContentSize(text) {\n const contentSize = this.getTextContentSize(text);\n if (contentSize > 0.15) {\n return \"<content_too_large>\";\n }\n\n return text;\n }\n\n cleanupPayload(payload) {\n if (payload === undefined || payload === null) {\n return \"{}\";\n }\n\n try {\n if (typeof TextDecoder !== undefined && ArrayBuffer.isView(payload)) {\n let value = new TextDecoder().decode(payload);\n return value;\n }\n } catch (exp) { }\n\n return payload;\n }\n\n preparePayload(payload) {\n var payloadText = this.cleanupPayload(payload);\n return this.cleanupContentSize(payloadText);\n }\n\n start() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n const self = this;\n this.interceptNetworkRequests({\n onFetch: (params, bbRequestId) => {\n if (this.stopped || !bbRequestId || !this.requests) {\n return;\n }\n\n if (\n params.length > 0 &&\n typeof params[0] !== \"undefined\" &&\n typeof params[0].url !== \"undefined\"\n ) {\n this.requests[bbRequestId] = {\n url: params[0].url,\n date: new Date(),\n request: {\n payload: \"\",\n headers:\n typeof params[0].headers !== \"undefined\"\n ? Object.fromEntries(params[0].headers.entries())\n : {},\n },\n type:\n typeof params[0].method !== \"undefined\" ? params[0].method : \"\",\n };\n } else {\n if (params.length >= 2 && params[1]) {\n var method =\n params[1] && params[1].method ? params[1].method : \"GET\";\n this.requests[bbRequestId] = {\n request: {\n payload: self.preparePayload(params[1].body),\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[bbRequestId] = {\n url: params[0],\n date: new Date(),\n };\n }\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n try {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: \"\",\n responseText: \"<request_still_open>\",\n };\n this.calcRequestTime(bbRequestId);\n } catch (exp) { }\n\n try {\n var contentType = \"\";\n if (req.headers && typeof req.headers.get !== \"undefined\") {\n contentType = req.headers.get(\"content-type\");\n }\n\n if (this.isContentTypeSupported(contentType)) {\n req\n .text()\n .then((responseText) => {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: self.cleanupContentSize(responseText)\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n })\n .catch((err) => {\n this.cleanRequests();\n });\n } else {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: \"<content_type_not_supported>\",\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n }\n } catch (exp) { }\n },\n onFetchFailed: (err, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n this.requests[bbRequestId][\"success\"] = false;\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n },\n onOpen: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.bbRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n this.requests &&\n this.requests[request.bbRequestId]\n ) {\n this.requests[request.bbRequestId][\"request\"] = {\n payload: this.preparePayload(args.length > 0 ? args[0] : \"{}\"),\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request, args) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n this.requests[request.currentTarget.bbRequestId][\"success\"] = false;\n this.calcRequestTime(request.bbRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n var target = request.currentTarget;\n var responseType = target.responseType;\n var responseText = \"<\" + responseType + \">\";\n if (responseType === \"\" || responseType === \"text\") {\n responseText = this.cleanupContentSize(target.responseText);\n }\n\n this.requests[target.bbRequestId][\"success\"] = true;\n this.requests[target.bbRequestId][\"response\"] = {\n status: target.status,\n statusText: target.statusText,\n responseText: responseText,\n };\n\n this.calcRequestTime(target.bbRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback) {\n var self = this;\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // Only override open and send if they haven't been overridden already.\n if (XMLHttpRequest.prototype.gleapSetRequestHeader === undefined) {\n XMLHttpRequest.prototype.gleapSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n }\n\n if (XMLHttpRequest.prototype.gleapSetRequestHeader) {\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n if (!this.requestHeaders) {\n this.requestHeaders = {};\n }\n\n if (this.requestHeaders && this.requestHeaders.hasOwnProperty(header)) {\n return;\n }\n\n if (!this.requestHeaders[header]) {\n this.requestHeaders[header] = [];\n }\n\n this.requestHeaders[header].push(value);\n this.gleapSetRequestHeader(header, value);\n };\n }\n\n XMLHttpRequest.prototype.open = function () {\n this[\"bbRequestId\"] = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n if (callback.onLoad) {\n this.addEventListener(\"load\", callback.onLoad.bind(callback));\n }\n if (callback.onError) {\n this.addEventListener(\"error\", callback.onError.bind(callback));\n }\n return open.apply(this, arguments);\n };\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n return send.apply(this, arguments);\n };\n\n if (window.fetch) {\n (function () {\n var originalFetch = window.fetch;\n window.fetch = function () {\n var bbRequestId = ++self.requestId;\n callback.onFetch(arguments, bbRequestId);\n\n return originalFetch\n .apply(this, arguments)\n .then(function (response) {\n if (response && typeof response.clone === \"function\") {\n const data = response.clone();\n callback.onFetchLoad(data, bbRequestId);\n }\n\n return response;\n })\n .catch((err) => {\n callback.onFetchFailed(err, bbRequestId);\n throw err;\n });\n };\n })();\n }\n\n return callback;\n }\n\n blobToTextPromise(blob) {\n return new Promise(function (resolve, reject) {\n var fr = new FileReader();\n fr.onload = function (evt) {\n if (evt && evt.target && evt.target.result) {\n resolve(evt.target.result);\n } else {\n reject();\n }\n };\n fr.onerror = function (err) {\n reject(err);\n };\n fr.readAsText(blob);\n });\n }\n}\n\nexport default GleapNetworkIntercepter;\n","export const resizeImage = (base64Str, maxWidth = 400, maxHeight = 400) => {\n return new Promise((resolve, reject) => {\n var isJPEG = base64Str.indexOf(\"data:image/jpeg\") === 0;\n var img = new Image();\n img.src = base64Str;\n img.onerror = () => {\n reject();\n };\n img.onload = () => {\n var canvas = document.createElement(\"canvas\");\n var MAX_WIDTH = maxWidth;\n var MAX_HEIGHT = maxHeight;\n\n // Adjust max width / height based on image props\n if (maxWidth > img.width / 1.5) {\n MAX_WIDTH = img.width / 1.5;\n }\n\n if (maxHeight > img.height / 1.5) {\n MAX_HEIGHT = img.height / 1.5;\n }\n\n var width = img.width;\n var height = img.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, width, height);\n\n if (isJPEG) {\n resolve(canvas.toDataURL(\"image/jpeg\", 0.7));\n } else {\n resolve(canvas.toDataURL());\n }\n };\n });\n};\n\nexport const isMobile = () => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(\n navigator.userAgent\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n navigator.userAgent.substr(0, 4)\n )\n ) {\n return true;\n }\n return false;\n};\n\nexport const gleapDataParser = function (data) {\n if (typeof data === \"string\" || data instanceof String) {\n try {\n return JSON.parse(data);\n } catch (e) {\n return {};\n }\n }\n return data;\n};\n\nexport const truncateString = (str, num) => {\n if (str.length > num) {\n return str.slice(0, num) + \"...\";\n } else {\n return str;\n }\n};\n\nconst removeSubDomain = (v) => {\n try {\n var parts = v.split(\".\");\n var is2ndLevelDomain = false;\n const secondLevel = parts[parts.length - 2];\n if (\n secondLevel === \"co\" ||\n secondLevel === \"com\" ||\n secondLevel === \"gv\" ||\n secondLevel === \"ac\" ||\n secondLevel === \"edu\" ||\n secondLevel === \"gov\" ||\n secondLevel === \"mil\" ||\n secondLevel === \"net\" ||\n secondLevel === \"org\"\n ) {\n is2ndLevelDomain = true;\n }\n parts = parts.slice(is2ndLevelDomain ? -3 : -2);\n return parts.join(\".\");\n } catch (exp) {}\n return v;\n};\n\nexport const loadFromGleapCache = (key) => {\n try {\n const cachedData = localStorage.getItem(`gleap-widget-${key}`);\n if (cachedData) {\n const config = JSON.parse(cachedData);\n return config;\n }\n } catch (exp) {}\n return null;\n};\n\nexport const saveToGleapCache = (key, data) => {\n const k = `gleap-widget-${key}`;\n if (data) {\n try {\n localStorage.setItem(k, JSON.stringify(data));\n } catch (exp) {}\n } else {\n localStorage.removeItem(k);\n }\n};\n\nexport const setGleapCookie = (name, value, days) => {\n try {\n var expires = \"\";\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = \"; expires=\" + date.toUTCString();\n }\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=\" + (value || \"\") + expires + \"; path=/; domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getGleapCookie = (name) => {\n try {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(\";\");\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n }\n } catch (exp) {}\n return null;\n};\n\nexport const eraseGleapCookie = (name) => {\n try {\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getDOMElementDescription = (element, html = true) => {\n var innerText = truncateString(element.innerText || \"\", 40)\n .replace(/(\\r\\n|\\n|\\r)/gm, \"\")\n .replace(/ +(?= )/g, \"\");\n var elementId = \"\";\n var elementClass = \"\";\n if (typeof element.getAttribute !== \"undefined\") {\n const elemId = element.getAttribute(\"id\");\n if (elemId) {\n elementId = ` id=\"${elemId}\"`;\n }\n const elemClass = element.getAttribute(\"class\");\n if (elemClass) {\n elementClass = ` class=\"${elemClass}\"`;\n }\n }\n const elementTag = (element.tagName || \"\").toLowerCase();\n\n var htmlPre = \"<\";\n var htmlPost = \">\";\n if (!html) {\n htmlPre = \"[\";\n htmlPost = \"]\";\n }\n\n return `${htmlPre}${elementTag}${elementId}${elementClass}${htmlPost}${innerText}${htmlPre}/${elementTag}${htmlPost}`;\n};\n\nexport const runFunctionWhenDomIsReady = (callback) => {\n if (\n document.readyState === \"complete\" ||\n document.readyState === \"loaded\" ||\n document.readyState === \"interactive\"\n ) {\n callback();\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => {\n callback();\n });\n }\n};\n\nexport const fixGleapHeight = () => {\n try {\n if (\n \"visualViewport\" in window &&\n /iPad|iPhone|iPod/.test(navigator.userAgent)\n ) {\n let initialHeight = window.innerHeight;\n\n function updateContainerHeight() {\n try {\n const gleapFrameContainer = document.querySelector(\n \".gleap-frame-container-inner iframe\"\n );\n\n if (!gleapFrameContainer) {\n return;\n }\n\n // Check if the keyboard is open\n if (window.visualViewport.height < initialHeight) {\n gleapFrameContainer.style.setProperty(\n \"max-height\",\n window.visualViewport.height + \"px\",\n \"important\"\n );\n } else {\n // Remove the padding bottom\n gleapFrameContainer.style.removeProperty(\"max-height\");\n }\n } catch (error) {}\n }\n\n function handleOrientationChange() {\n try {\n // Update initial dimensions\n initialHeight = window.innerHeight;\n updateContainerHeight();\n } catch (error) {}\n }\n\n // Update on resize (keyboard show/hide and viewport resize)\n window.visualViewport.addEventListener(\"resize\", updateContainerHeight);\n\n // Handle orientation changes\n window.addEventListener(\"orientationchange\", handleOrientationChange);\n\n // Update initially\n updateContainerHeight();\n }\n } catch (error) {}\n};\n","import { GleapSession, GleapTranslationManager } from \"./Gleap\"; // Adjust path if needed\n\n// Enum for request states\nconst RequestStatus = {\n PENDING: \"pending\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n};\n\nclass ChecklistNetworkManager {\n static instance = null;\n\n /** @private {Map<string, Promise<string>>} outboundId -> Promise<internalId> */\n validationRequests = new Map();\n /** @private {Map<string, { status: RequestStatus, internalId?: string, error?: any }>} */\n validationCache = new Map(); // Caches final results (success/error)\n\n /** @private {Map<string, Promise<any>>} internalId -> Promise<checklistData> */\n fetchRequests = new Map();\n /** @private {Map<string, { status: RequestStatus, data?: any, error?: any }>} */\n fetchCache = new Map(); // Caches final results (success/error)\n\n // Private constructor for Singleton\n constructor() {\n if (ChecklistNetworkManager.instance) {\n return ChecklistNetworkManager.instance;\n }\n ChecklistNetworkManager.instance = this;\n }\n\n /**\n * Gets the singleton instance of the ChecklistNetworkManager.\n * @returns {ChecklistNetworkManager} The singleton instance.\n */\n static getInstance() {\n if (!ChecklistNetworkManager.instance) {\n ChecklistNetworkManager.instance = new ChecklistNetworkManager();\n }\n return ChecklistNetworkManager.instance;\n }\n\n clearCache() {\n this.validationCache.clear();\n this.fetchCache.clear();\n this.validationRequests.clear();\n this.fetchRequests.clear();\n }\n\n /**\n * @private\n * Gets common query parameters for API requests.\n * @returns {string} Query parameter string.\n */\n _getQueryParams() {\n const gleapSessionInstance = GleapSession.getInstance();\n const session = gleapSessionInstance?.session;\n const lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n return `gleapId=${session?.gleapId || \"\"}&gleapHash=${\n session?.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n /**\n * @private\n * Gets the API base URL.\n * @returns {string | null} The API URL or null if not configured.\n */\n _getApiUrl() {\n const gleapSessionInstance = GleapSession.getInstance();\n return gleapSessionInstance?.apiUrl || null;\n }\n\n /**\n * @private\n * Makes an XMLHttpRequest and returns a Promise.\n * @param {string} method - HTTP method.\n * @param {string} url - The request URL.\n * @param {object|null} data - Data to send in the request body.\n * @returns {Promise<any>} Promise resolving with parsed JSON response on success, rejecting on error.\n */\n _makeRequest(method, url, data) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n\n const gleapSessionInstance = GleapSession.getInstance();\n gleapSessionInstance?.injectSession(xhr); // Inject session headers\n\n if (data) {\n xhr.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n // Handle potential empty success responses (e.g., 204)\n const responseData = xhr.responseText\n ? JSON.parse(xhr.responseText)\n : null;\n resolve(responseData);\n } catch (err) {\n reject({\n status: xhr.status,\n statusText: \"JSON Parse Error\",\n responseText: xhr.responseText,\n error: err,\n });\n }\n } else {\n reject({\n status: xhr.status,\n statusText: xhr.statusText,\n responseText: xhr.responseText,\n });\n }\n }\n };\n\n xhr.onerror = () => {\n reject({ status: 0, statusText: \"Network Error\", responseText: null });\n };\n\n xhr.send(data ? JSON.stringify(data) : null);\n });\n }\n\n /**\n * @private\n * Creates a cache key from outboundId and sharedKey\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string|undefined} sharedKey - Optional shared key.\n * @returns {string} Combined cache key.\n */\n _createCacheKey(outboundId, sharedKey) {\n return sharedKey ? `${outboundId}::${sharedKey}` : outboundId;\n }\n\n /**\n * Validates an outbound checklist ID, returning a Promise for the internal ID.\n * Manages caching and deduplicates requests.\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise<string>} A promise that resolves with the internal checklist ID.\n */\n validateChecklist(outboundId, sharedKey) {\n const cacheKey = this._createCacheKey(outboundId, sharedKey);\n\n // 1. Check cache for final result (success or error)\n const cachedResult = this.validationCache.get(cacheKey);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n return Promise.resolve(cachedResult.internalId);\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.validationRequests.has(cacheKey)) {\n return this.validationRequests.get(cacheKey);\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists?${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"POST\", url, {\n outboundId,\n sharedKey,\n })\n .then((responseData) => {\n if (responseData && responseData.id) {\n this.validationCache.set(cacheKey, {\n status: RequestStatus.SUCCESS,\n internalId: responseData.id,\n });\n return responseData.id;\n } else {\n const error = new Error(\"Validation response missing checklist ID.\");\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error; // Rethrow to be caught by catch block\n }\n })\n .catch((error) => {\n // Store the error object itself in the cache\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.validationRequests.delete(cacheKey);\n });\n\n // Store the promise for potential concurrent requests\n this.validationRequests.set(cacheKey, requestPromise);\n return requestPromise;\n }\n\n /**\n * Fetches the full checklist data using the internal ID, returning a Promise.\n * Manages caching and deduplicates requests.\n * @param {string} internalId - The internal checklist ID.\n * @returns {Promise<object>} A promise that resolves with the full checklist data.\n */\n fetchChecklist(internalId) {\n // 1. Check cache for final result (success or error)\n const cachedResult = this.fetchCache.get(internalId);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n // Return a deep copy to prevent mutation issues if multiple components use it\n return Promise.resolve(JSON.parse(JSON.stringify(cachedResult.data)));\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.fetchRequests.has(internalId)) {\n // Return a promise that resolves with a deep copy\n return this.fetchRequests\n .get(internalId)\n .then((data) => JSON.parse(JSON.stringify(data)));\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists/${internalId}?convertTipTap=true&${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"GET\", url, null)\n .then((responseData) => {\n if (responseData) {\n // Cache the successful data\n this.fetchCache.set(internalId, {\n status: RequestStatus.SUCCESS,\n data: responseData,\n });\n // Return a deep copy of the data\n return JSON.parse(JSON.stringify(responseData));\n } else {\n // Should not happen with successful GET usually, but handle defensively\n const error = new Error(\n \"Empty response received for checklist fetch.\"\n );\n this.fetchCache.set(internalId, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error;\n }\n })\n .catch((error) => {\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.fetchRequests.delete(internalId);\n });\n\n this.fetchRequests.set(internalId, requestPromise);\n // Return a promise that resolves with a deep copy\n return requestPromise.then((data) => JSON.parse(JSON.stringify(data)));\n }\n}\n\nexport default ChecklistNetworkManager;\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(floating) {\n return topLayerSelectors.some(selector => {\n try {\n return floating.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element) || isTopLayer(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(data.floating))\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, flip, hide, inline, limitShift, platform, shift, size };\n","import {\n arrow,\n autoUpdate,\n computePosition,\n flip,\n offset,\n shift,\n} from \"@floating-ui/dom\";\nimport { GleapSession } from \"./Gleap\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapTooltipManager {\n tooltips = [];\n filteredTooltips = [];\n lastUrl = null;\n elementToFloatingUIMap = new WeakMap();\n elementToTooltipMap = new WeakMap();\n nextId = 0;\n\n // GleapTooltipManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTooltipManager();\n this.instance.start();\n }\n return this.instance;\n }\n\n // Recursive function to process each node and its children\n processNodeInsertion(node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n // Check the node itself\n this.checkNodeTooltip(node);\n\n // Check all children of the node recursively\n if (node.childNodes) {\n node.childNodes.forEach((childNode) => {\n this.processNodeInsertion(childNode);\n });\n }\n }\n }\n\n // Function to check a single node against the filtered tooltips\n checkNodeTooltip(node) {\n if (this.filteredTooltips.length > 0) {\n this.filteredTooltips.forEach((tooltip) => {\n if (tooltip.selector && node.matches(tooltip.selector)) {\n this.linkTooltip(node, tooltip);\n }\n });\n }\n }\n\n start() {\n const self = this;\n\n if (!window) {\n return;\n }\n\n const throttle = (fn, time) => {\n let timeout = null;\n return function () {\n if (timeout) return;\n const context = this;\n const args = arguments;\n const later = () => {\n fn.call(context, ...args);\n timeout = null;\n };\n timeout = setTimeout(later, time);\n };\n };\n\n const handleResizeThrottled = throttle(\n self.updateHotspotPositions.bind(self),\n 250\n );\n window.addEventListener(\"resize\", handleResizeThrottled);\n\n window.requestAnimationFrame(() => {\n this.observer = new MutationObserver((mutations) => {\n if (self.lastUrl !== window.location.href) {\n self.lastUrl = window.location.href;\n self.filteredTooltips = self.getFilteredTooltips();\n }\n\n mutations.forEach((mutation) => {\n // Check for added nodes\n mutation.addedNodes.forEach((node) => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n self.processNodeInsertion(node);\n }\n });\n\n // Check for removed nodes\n mutation.removedNodes.forEach((node) => {\n if (\n node.nodeType === Node.ELEMENT_NODE &&\n this.elementToFloatingUIMap.has(node)\n ) {\n const floatingUI = this.elementToFloatingUIMap.get(node);\n if (floatingUI) {\n if (floatingUI.tooltip) {\n floatingUI.tooltip.remove();\n }\n floatingUI.cleanup();\n\n this.elementToFloatingUIMap.delete(node);\n }\n }\n\n if (this.elementToTooltipMap.has(node)) {\n this.elementToTooltipMap.delete(node);\n }\n });\n });\n });\n\n // Start observing the document for changes.\n this.observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n }\n\n updateHotspotPositions() {\n const elements = document.querySelectorAll(\n `[data-gleap-tooltip-mode='hotspot']`\n );\n elements.forEach((element) => {\n const tooltip = this.elementToTooltipMap.get(element);\n if (tooltip) {\n this.repositionHotspot(element, tooltip);\n }\n });\n }\n\n createTooltip(element, tooltipText, tooltipData) {\n // Create tooltip element\n const tooltip = document.createElement(\"div\");\n tooltip.className = \"gleap-tooltip\";\n tooltip.innerHTML = `<div class=\"gleap-tooltip-inner\">\n ${tooltipText}\n <div class=\"gleap-tooltip-arrow\">\n <svg width=\"116\" height=\"56\" viewBox=\"0 0 116 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M57.75 0.74998L115.5 0.680177L66.8726 49.3076C61.7958 54.3844 53.5646 54.3844 48.4878 49.3076L4.05618e-05 0.819784L57.75 0.74998Z\" fill=\"white\"/>\n </svg>\n </div>\n </div>`;\n document.body.appendChild(tooltip);\n\n // Create a Popper instance with arrow and offset\n\n const arrowEl = tooltip.querySelector(\".gleap-tooltip-arrow\");\n const cleanup = autoUpdate(element, tooltip, () => {\n computePosition(element, tooltip, {\n placement: tooltipData.posX === \"left\" ? \"left\" : \"right\",\n middleware: [offset(10), flip(), shift(), arrow({ element: arrowEl })],\n }).then(({ x, y, middlewareData, placement }) => {\n try {\n Object.assign(tooltip.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n\n if (middlewareData.arrow) {\n let arrowSize = 20; // Arrow size should be consistent with the border width used in CSS\n let arrowPos = { left: \"\", top: \"\", transform: \"\" };\n\n if (middlewareData.arrow.x != null) {\n arrowPos.left = `${middlewareData.arrow.x}px`;\n if (placement === \"bottom\") {\n arrowPos.transform = \"translateY(-7px) rotate(180deg)\";\n arrowPos.top = `${-arrowSize}px`; // Move arrow outside the tooltip\n } else if (placement === \"top\") {\n arrowPos.transform = \"translateY(7px) rotate(0deg)\";\n arrowPos.top = `100%`; // Adjust based on the tooltip's height\n }\n }\n if (middlewareData.arrow.y != null) {\n arrowPos.top = `${middlewareData.arrow.y}px`;\n if (placement === \"right\") {\n arrowPos.transform = \"translateX(-7px) rotate(90deg)\";\n arrowPos.left = `${-arrowSize}px`; // Move arrow outside the tooltip\n } else if (placement === \"left\") {\n arrowPos.transform = \"translateX(7px) rotate(270deg)\";\n arrowPos.left = `100%`; // Adjust based on the tooltip's width\n }\n }\n // Apply the computed styles to the arrow\n Object.assign(arrowEl.style, arrowPos);\n }\n } catch (exp) {}\n });\n });\n\n let hideTimeout;\n\n function show() {\n clearTimeout(hideTimeout);\n tooltip.style.visibility = \"visible\";\n tooltip.style.opacity = \"1\";\n tooltip.style.pointerEvents = \"auto\";\n }\n\n function hide() {\n hideTimeout = setTimeout(() => {\n tooltip.style.opacity = \"0\";\n\n setTimeout(() => {\n tooltip.style.visibility = \"hidden\";\n tooltip.style.pointerEvents = \"none\";\n }, 200);\n }, 500);\n }\n\n // Event listeners to show/hide the tooltip\n element.addEventListener(\"mouseenter\", show);\n element.addEventListener(\"mouseleave\", hide);\n tooltip.addEventListener(\"mouseenter\", show);\n tooltip.addEventListener(\"mouseleave\", hide);\n\n return {\n cleanup,\n tooltip,\n };\n }\n\n canEmbed(element) {\n const voidElements = new Set([\n \"area\",\n \"base\",\n \"br\",\n \"embed\",\n \"hr\",\n \"img\",\n \"input\",\n \"source\",\n \"track\",\n \"wbr\",\n \"canvas\",\n ]);\n\n return element && !voidElements.has(element.tagName.toLowerCase());\n }\n\n linkTooltip = (element, tooltip) => {\n if (element.hasAttribute(\"data-gleap-tooltip\")) {\n return;\n }\n\n const nextId = this.nextId++;\n element.setAttribute(\"data-gleap-tooltip\", nextId);\n if (element) {\n var tooltipElem = null;\n\n if (tooltip.mode === \"hotspot\") {\n // Create hotspot container.\n const hotspotContainer = document.createElement(\"div\");\n hotspotContainer.setAttribute(\"data-gleap-tooltip-anchor\", nextId);\n hotspotContainer.classList.add(\"gleap-tooltip-anchor\");\n element.setAttribute(\"data-gleap-tooltip-mode\", \"hotspot\");\n\n if (this.canEmbed(element)) {\n if (element.firstChild) {\n element.insertBefore(hotspotContainer, element.firstChild);\n } else {\n element.appendChild(hotspotContainer);\n }\n } else {\n element.parentNode.insertBefore(\n hotspotContainer,\n element.nextSibling\n );\n }\n\n // Create hotspot.\n const hotspot = document.createElement(\"div\");\n hotspot.classList.add(\"gleap-tooltip-hotspot\");\n hotspot.setAttribute(\"data-gleap-tooltip-hotspot\", nextId);\n\n hotspot.innerHTML = `${loadIcon(tooltip.icon, tooltip.color)}${\n tooltip.animated\n ? `<div style=\"background-color: ${tooltip.color}\" class=\"gleap-tooltip-hotspot-animation\"></div>`\n : \"\"\n }`;\n hotspotContainer.appendChild(hotspot);\n\n // Update hotspot position.\n this.repositionHotspot(element, tooltip);\n\n tooltipElem = hotspot;\n this.elementToTooltipMap.set(element, tooltip);\n } else {\n tooltipElem = element;\n }\n\n const floatingUIInstance = this.createTooltip(\n tooltipElem,\n tooltip.html,\n tooltip\n );\n\n this.elementToFloatingUIMap.set(element, floatingUIInstance);\n }\n };\n\n destroy() {\n // Disconnect the MutationObserver if it exists.\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n\n // Remove the window resize event listener if it was stored.\n // (In start() you can assign the listener to a class property, e.g., this.resizeListener.)\n if (this.resizeListener) {\n window.removeEventListener(\"resize\", this.resizeListener);\n this.resizeListener = null;\n }\n\n // Remove all tooltip elements created by Gleap.\n const tooltipElements = document.querySelectorAll(\".gleap-tooltip\");\n tooltipElements.forEach((tooltip) => tooltip.remove());\n\n // Remove any tooltip anchors and hotspots.\n const anchors = document.querySelectorAll(\"[data-gleap-tooltip-anchor]\");\n anchors.forEach((anchor) => anchor.remove());\n const hotspots = document.querySelectorAll(\"[data-gleap-tooltip-hotspot]\");\n hotspots.forEach((hotspot) => hotspot.remove());\n\n // Clear internal references.\n this.elementToFloatingUIMap = new WeakMap();\n this.elementToTooltipMap = new WeakMap();\n this.tooltips = [];\n this.filteredTooltips = [];\n }\n\n repositionHotspot(element, tooltip) {\n if (!element || !tooltip) {\n return;\n }\n\n const tooltipId = element.getAttribute(\"data-gleap-tooltip\");\n if (!tooltipId) {\n return;\n }\n\n const hotspot = document.querySelector(\n `[data-gleap-tooltip-hotspot=\"${tooltipId}\"]`\n );\n if (!hotspot) {\n return;\n }\n\n if (!tooltip.posX) {\n tooltip.posX = \"right\";\n }\n if (!tooltip.posY) {\n tooltip.posY = \"center\";\n }\n if (!tooltip.offsetX) {\n tooltip.offsetX = 4;\n }\n if (!tooltip.offsetY) {\n tooltip.offsetY = 0;\n }\n\n var elementRect = element.getBoundingClientRect();\n\n try {\n // Improve width calculation for text elements.\n var range = document.createRange();\n range.selectNodeContents(element);\n const style = window.getComputedStyle(element);\n const fixedWidth =\n range.getBoundingClientRect().width + parseFloat(style.paddingLeft);\n if (fixedWidth < elementRect.width) {\n elementRect.width = fixedWidth;\n }\n } catch (exp) {}\n\n const anchorElement = document.querySelector(\n `[data-gleap-tooltip-anchor=\"${tooltipId}\"]`\n );\n const anchorRect = anchorElement.getBoundingClientRect();\n\n // Offset calculation for hotspot position.\n const offsetX = anchorRect.left - elementRect.left;\n const offsetY = anchorRect.top - elementRect.top;\n\n let top = 0;\n let left = 0;\n let tooltipSize = 17 / 2;\n\n switch (tooltip.posX) {\n case \"left\":\n left = (tooltip.offsetX + tooltipSize * 2) * -1;\n break;\n case \"right\":\n left = elementRect.width + tooltip.offsetX;\n break;\n }\n\n switch (tooltip.posY) {\n case \"top\":\n top = 0 + tooltip.offsetY;\n break;\n case \"bottom\":\n top = elementRect.height - tooltipSize * 2 + tooltip.offsetY;\n break;\n case \"center\":\n top = elementRect.height / 2 - tooltipSize + tooltip.offsetY;\n break;\n }\n\n if (hotspot) {\n hotspot.style.position = \"absolute\";\n hotspot.style.top = top - offsetY + \"px\";\n hotspot.style.left = left - offsetX + \"px\";\n }\n }\n\n updateFilteredTooltips = () => {\n this.filteredTooltips = this.getFilteredTooltips();\n this.checkForTooltips();\n };\n\n getFilteredTooltips = () => {\n if (!this.tooltips) {\n return [];\n }\n\n const currentUrl = window.location.href;\n\n return this.tooltips.filter((tooltip) => {\n if (!tooltip.page || tooltip.page.length === 0) {\n return true;\n }\n\n const filterType = tooltip.pageType;\n const filterValue = tooltip.page;\n\n switch (filterType) {\n case \"is\":\n return currentUrl === filterValue;\n case \"isnot\":\n return currentUrl !== filterValue;\n case \"contains\":\n return currentUrl.includes(filterValue);\n case \"notcontains\":\n return !currentUrl.includes(filterValue);\n case \"startswith\":\n return currentUrl.startsWith(filterValue);\n case \"endswith\":\n return currentUrl.endsWith(filterValue);\n default:\n return false;\n }\n });\n };\n\n checkForTooltips = () => {\n for (let i = 0; i < this.filteredTooltips.length; i++) {\n const tooltip = this.filteredTooltips[i];\n\n try {\n const elements = document.querySelectorAll(tooltip.selector);\n\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n\n if (element) {\n this.linkTooltip(element, tooltip);\n }\n }\n } catch (exp) {}\n }\n };\n\n load = () => {\n const self = this;\n const sessionInstance = GleapSession.getInstance();\n\n const http = new XMLHttpRequest();\n http.open(\n \"GET\",\n sessionInstance.apiUrl + \"/config/\" + sessionInstance.sdkKey + \"/tooltips\"\n );\n http.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n http.setRequestHeader(\"Api-Token\", sessionInstance.sdkKey);\n try {\n http.setRequestHeader(\"Gleap-Id\", sessionInstance.session.gleapId);\n http.setRequestHeader(\"Gleap-Hash\", sessionInstance.session.gleapHash);\n } catch (exp) {}\n\n http.onerror = () => {\n console.error(\"Failed to fetch tooltips\");\n };\n http.onreadystatechange = function (e) {\n if (http.readyState === 4) {\n if (http.status === 200) {\n try {\n self.tooltips = JSON.parse(http.responseText);\n self.updateFilteredTooltips();\n } catch (exp) {\n console.error(\"Failed to parse tooltips\", exp);\n }\n }\n }\n };\n\n http.send();\n };\n}\n","import ChecklistNetworkManager from \"./ChecklistNetworkManager\";\nimport {\n GleapBannerManager,\n GleapEventManager,\n GleapFrameManager,\n GleapModalManager,\n GleapNotificationManager,\n GleapStreamedEvent,\n GleapTranslationManager,\n} from \"./Gleap\";\nimport {\n eraseGleapCookie,\n getGleapCookie,\n loadFromGleapCache,\n saveToGleapCache,\n setGleapCookie,\n} from \"./GleapHelper\";\nimport GleapTooltipManager from \"./GleapTooltipManager\";\n\nexport default class GleapSession {\n apiUrl = \"https://api.gleap.io\";\n wsApiUrl = \"wss://ws.gleap.io\";\n sdkKey = null;\n updatingSession = false;\n useCookies = false;\n session = {\n gleapId: null,\n gleapHash: null,\n name: \"\",\n email: \"\",\n userId: \"\",\n phone: \"\",\n value: 0,\n };\n ready = false;\n onSessionReadyListener = [];\n\n // GleapSession singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapSession();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n /**\n * Returns the current session name.\n * @returns string\n */\n getName() {\n try {\n return this.session.name\n ? this.session.name\n .split(\" \")[0]\n .split(\"@\")[0]\n .split(\".\")[0]\n .split(\"+\")[0]\n : \"\";\n } catch (exp) {\n return this.session.name;\n }\n }\n\n /**\n * Returns the Gleap session object.\n * @returns\n */\n getSession() {\n return this.session;\n }\n\n /**\n * Returns the Gleap session object.\n * @returns\n */\n getGleapId() {\n if (this.session && this.session.gleapId) {\n return this.session.gleapId;\n }\n\n return null;\n }\n\n /**\n * Determines if the current session is a identified user.\n * @returns boolean\n */\n isUser() {\n if (this.session && this.session.userId) {\n return true;\n }\n return false;\n }\n\n constructor() {}\n\n setOnSessionReady = (onSessionReady) => {\n if (this.ready) {\n onSessionReady();\n } else {\n this.onSessionReadyListener.push(onSessionReady);\n }\n };\n\n injectSession = (http) => {\n if (http && this.session) {\n http.setRequestHeader(\"Api-Token\", this.sdkKey);\n http.setRequestHeader(\"Gleap-Id\", this.session.gleapId);\n http.setRequestHeader(\"Gleap-Hash\", this.session.gleapHash);\n }\n };\n\n clearSession = (attemp = 0, retry = true) => {\n if (this.session && this.session.gleapHash) {\n GleapEventManager.notifyEvent(\n \"unregister-pushmessage-group\",\n `gleapuser-${this.session.gleapHash}`\n );\n }\n\n try {\n saveToGleapCache(`session-${this.sdkKey}`, null);\n } catch (exp) {}\n\n if (this.useCookies) {\n try {\n eraseGleapCookie(`session-${this.sdkKey}`);\n } catch (exp) {}\n }\n\n this.ready = false;\n this.session = {\n gleapId: null,\n gleapHash: null,\n name: \"\",\n email: \"\",\n userId: \"\",\n phone: \"\",\n value: 0,\n };\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"session-cleared\",\n },\n true\n );\n GleapNotificationManager.getInstance().clearAllNotifications(false);\n GleapNotificationManager.getInstance().setNotificationCount(0);\n GleapBannerManager.getInstance().removeBannerUI();\n GleapModalManager.getInstance().hideModal();\n\n if (retry) {\n if (!isNaN(attemp)) {\n // Exponentially retry to renew session.\n const newTimeout = Math.pow(attemp, 2) * 10;\n setTimeout(() => {\n this.startSession(attemp + 1);\n }, newTimeout * 1000);\n }\n }\n };\n\n validateSession = (session) => {\n if (!session || !session.gleapId) {\n return;\n }\n\n let sessionChanged = false;\n if (this.session?.gleapId !== session?.gleapId) {\n sessionChanged = true;\n }\n\n // Unregister previous group.\n if (this.session && this.session.gleapHash) {\n GleapEventManager.notifyEvent(\n \"unregister-pushmessage-group\",\n `gleapuser-${this.session.gleapHash}`\n );\n }\n\n saveToGleapCache(`session-${this.sdkKey}`, session);\n if (this.useCookies) {\n setGleapCookie(\n `session-${this.sdkKey}`,\n encodeURIComponent(JSON.stringify(session)),\n 365\n );\n }\n\n this.session = session;\n this.ready = true;\n\n // Register new push group.\n if (this.session && this.session.gleapHash) {\n GleapEventManager.notifyEvent(\n \"register-pushmessage-group\",\n `gleapuser-${this.session.gleapHash}`\n );\n }\n\n if (sessionChanged) {\n // Load tooltips.\n setTimeout(() => {\n // Clear cache first, as the session context has changed.\n ChecklistNetworkManager.getInstance().clearCache();\n\n // Initially track.\n GleapStreamedEvent.getInstance().restart();\n\n const tooltipManager = GleapTooltipManager.getInstance();\n if (tooltipManager) {\n try {\n tooltipManager.destroy();\n } catch (exp) {}\n\n tooltipManager.load();\n }\n }, 0);\n\n if (typeof window.dispatchEvent === \"function\") {\n window.dispatchEvent(new CustomEvent(\"session-updated\"));\n }\n }\n\n this.notifySessionReady();\n };\n\n startSession = (attemp = 0) => {\n // Check if we already have a session cookie.\n try {\n if (this.useCookies) {\n const sessionCookie = getGleapCookie(`session-${this.sdkKey}`);\n if (sessionCookie) {\n const sessionData = JSON.parse(decodeURIComponent(sessionCookie));\n this.validateSession(sessionData);\n }\n }\n } catch (exp) {}\n\n // Try to load session from local storage, if not already loaded.\n if (\n !(this.session && this.session.gleapId && this.session.gleapId.length > 0)\n ) {\n const cachedSession = loadFromGleapCache(`session-${this.sdkKey}`);\n if (cachedSession) {\n this.validateSession(cachedSession);\n }\n }\n\n const self = this;\n const http = new XMLHttpRequest();\n http.open(\"POST\", self.apiUrl + \"/sessions\");\n http.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n http.setRequestHeader(\"Api-Token\", self.sdkKey);\n try {\n if (this.session && this.session.gleapId && this.session.gleapHash) {\n http.setRequestHeader(\"Gleap-Id\", this.session.gleapId);\n http.setRequestHeader(\"Gleap-Hash\", this.session.gleapHash);\n }\n } catch (exp) {}\n http.onreadystatechange = function (e) {\n if (http.readyState === 4) {\n if (http.status === 200 || http.status === 201) {\n try {\n const sessionData = JSON.parse(http.responseText);\n self.validateSession(sessionData);\n } catch (exp) {}\n } else {\n if (http.status !== 429) {\n self.clearSession(attemp, true);\n }\n }\n }\n };\n http.send(\n JSON.stringify({\n lang: GleapTranslationManager.getInstance().getActiveLanguage(),\n })\n );\n };\n\n notifySessionReady() {\n if (this.onSessionReadyListener.length > 0) {\n for (var i = 0; i < this.onSessionReadyListener.length; i++) {\n this.onSessionReadyListener[i]();\n }\n }\n this.onSessionReadyListener = [];\n\n // Send session update to frame.\n GleapFrameManager.getInstance().sendSessionUpdate();\n }\n\n checkIfSessionNeedsUpdate = (userId, userData) => {\n if (!this.session || !this.session.userId || !userId) {\n return true;\n }\n\n try {\n if (this.session.userId.toString() !== userId.toString()) {\n return true;\n }\n } catch (exp) {}\n\n return this.checkIfSessionDataNeedsUpdate(userData);\n };\n\n checkIfSessionDataNeedsUpdate = (userData) => {\n if (userData) {\n var userDataKeys = Object.keys(userData);\n for (var i = 0; i < userDataKeys.length; i++) {\n var userDataKey = userDataKeys[i];\n if (\n JSON.stringify(this.session[userDataKey]) !==\n JSON.stringify(userData[userDataKey])\n ) {\n // Check custom data for a match.\n if (\n !(\n this.session.customData &&\n JSON.stringify(this.session.customData[userDataKey]) ===\n JSON.stringify(userData[userDataKey])\n )\n ) {\n return true;\n }\n }\n }\n }\n\n return false;\n };\n\n updateSession = (userData) => {\n // Check if session needs update.\n const sessionNeedsUpdate = this.checkIfSessionDataNeedsUpdate(userData);\n if (!sessionNeedsUpdate) {\n return;\n }\n\n const self = this;\n return new Promise((resolve, reject) => {\n // Wait for gleap session to be ready.\n this.setOnSessionReady(function () {\n if (!self.session.gleapId || !self.session.gleapHash) {\n return reject(\"Session not ready yet.\");\n }\n\n const http = new XMLHttpRequest();\n http.open(\"POST\", self.apiUrl + \"/sessions/partialupdate\");\n http.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n http.setRequestHeader(\"Api-Token\", self.sdkKey);\n try {\n http.setRequestHeader(\"Gleap-Id\", self.session.gleapId);\n http.setRequestHeader(\"Gleap-Hash\", self.session.gleapHash);\n } catch (exp) {}\n\n http.onerror = () => {\n reject();\n };\n http.onreadystatechange = function (e) {\n if (http.readyState === 4) {\n if (http.status === 200 || http.status === 201) {\n try {\n const sessionData = JSON.parse(http.responseText);\n self.validateSession(sessionData);\n resolve(sessionData);\n } catch (exp) {\n reject(exp);\n }\n } else {\n reject();\n }\n }\n };\n\n http.send(\n JSON.stringify({\n data: {\n ...userData,\n lang: GleapTranslationManager.getInstance().getActiveLanguage(),\n },\n type: \"js\",\n sdkVersion: SDK_VERSION,\n ws: true,\n })\n );\n });\n });\n };\n\n identifySession = (userId, userData, userHash) => {\n const sessionNeedsUpdate = this.checkIfSessionNeedsUpdate(userId, userData);\n if (!sessionNeedsUpdate) {\n return;\n }\n\n const self = this;\n return new Promise((resolve, reject) => {\n // Wait for gleap session to be ready.\n this.setOnSessionReady(function () {\n if (!self.session.gleapId || !self.session.gleapHash) {\n return reject(\"Session not ready yet.\");\n }\n\n const http = new XMLHttpRequest();\n http.open(\"POST\", self.apiUrl + \"/sessions/identify\");\n http.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n http.setRequestHeader(\"Api-Token\", self.sdkKey);\n try {\n http.setRequestHeader(\"Gleap-Id\", self.session.gleapId);\n http.setRequestHeader(\"Gleap-Hash\", self.session.gleapHash);\n } catch (exp) {}\n\n http.onerror = () => {\n reject();\n };\n http.onreadystatechange = function (e) {\n if (http.readyState === 4) {\n if (http.status === 200 || http.status === 201) {\n try {\n const sessionData = JSON.parse(http.responseText);\n self.validateSession(sessionData);\n resolve(sessionData);\n } catch (exp) {\n reject(exp);\n }\n } else {\n reject();\n }\n }\n };\n\n var dataToSend = {\n ...userData,\n };\n\n if (userData.customData) {\n delete dataToSend[\"customData\"];\n dataToSend = {\n ...dataToSend,\n ...userData.customData,\n };\n }\n\n http.send(\n JSON.stringify({\n ...dataToSend,\n userId,\n userHash,\n lang: GleapTranslationManager.getInstance().getActiveLanguage(),\n })\n );\n });\n });\n };\n\n startProductTourConfig = (tourId) => {\n const self = this;\n return new Promise((resolve, reject) => {\n this.setOnSessionReady(function () {\n if (!self.session.gleapId || !self.session.gleapHash) {\n return reject(\"Session not ready yet.\");\n }\n\n const http = new XMLHttpRequest();\n http.open(\"POST\", self.apiUrl + \"/outbound/producttours\");\n http.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n http.setRequestHeader(\"Api-Token\", self.sdkKey);\n try {\n http.setRequestHeader(\"Gleap-Id\", self.session.gleapId);\n http.setRequestHeader(\"Gleap-Hash\", self.session.gleapHash);\n } catch (exp) {}\n\n http.onerror = () => {\n reject();\n };\n http.onreadystatechange = function (e) {\n if (http.readyState === 4) {\n if (http.status === 200 || http.status === 201) {\n try {\n const tourData = JSON.parse(http.responseText);\n if (tourData && tourData.config) {\n resolve(tourData.config);\n }\n } catch (exp) {\n reject(exp);\n }\n } else {\n reject();\n }\n }\n };\n http.send(\n JSON.stringify({\n outboundId: tourId,\n })\n );\n });\n });\n };\n\n validateProductTour = (tourId) => {\n const self = this;\n return new Promise((resolve, reject) => {\n this.setOnSessionReady(function () {\n if (!self.session.gleapId || !self.session.gleapHash) {\n return reject(\"Session not ready yet.\");\n }\n\n const http = new XMLHttpRequest();\n http.open(\"POST\", self.apiUrl + \"/outbound/producttourvalidation\");\n http.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n http.setRequestHeader(\"Api-Token\", self.sdkKey);\n try {\n http.setRequestHeader(\"Gleap-Id\", self.session.gleapId);\n http.setRequestHeader(\"Gleap-Hash\", self.session.gleapHash);\n } catch (exp) {}\n\n http.onerror = () => {\n reject();\n };\n http.onreadystatechange = function (e) {\n if (http.readyState === 4) {\n if (http.status === 200 || http.status === 201) {\n try {\n const tourData = JSON.parse(http.responseText);\n if (\n tourData &&\n tourData.status === \"live\" &&\n tourData.passedPageFilter\n ) {\n resolve(tourData.config);\n } else {\n reject();\n }\n } catch (exp) {\n reject(exp);\n }\n } else {\n reject();\n }\n }\n };\n http.send(\n JSON.stringify({\n outboundId: tourId,\n currentUrl: window?.location?.href,\n })\n );\n });\n });\n };\n}\n","import Gleap, {\n GleapFrameManager,\n GleapMetaDataManager,\n GleapNotificationManager,\n GleapSession,\n} from \"./Gleap\";\nimport { gleapDataParser } from \"./GleapHelper\";\n\nexport default class GleapStreamedEvent {\n eventArray = [];\n streamedEventArray = [];\n eventMaxLength = 500;\n errorCount = 0;\n streamingEvents = false;\n lastUrl = undefined;\n mainLoopTimeout = null;\n socket = null;\n connectedWebSocketGleapId = null;\n connectionTimeout = null;\n pingWS = null;\n handleOpenBound = null;\n handleErrorBound = null;\n handleMessageBound = null;\n handleCloseBound = null;\n\n // GleapStreamedEvent singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapStreamedEvent();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {\n this.handleOpenBound = this.handleOpen.bind(this);\n this.handleErrorBound = this.handleError.bind(this);\n this.handleMessageBound = this.handleMessage.bind(this);\n this.handleCloseBound = this.handleClose.bind(this);\n }\n\n cleanupWebSocket() {\n if (this.connectionTimeout) {\n clearTimeout(this.connectionTimeout);\n this.connectionTimeout = null;\n }\n\n if (this.pingWS) {\n clearInterval(this.pingWS);\n }\n\n if (this.socket) {\n this.socket.removeEventListener(\"open\", this.handleOpenBound);\n this.socket.removeEventListener(\"error\", this.handleErrorBound);\n this.socket.removeEventListener(\"message\", this.handleMessageBound);\n this.socket.removeEventListener(\"close\", this.handleCloseBound);\n this.socket.close();\n this.socket = null;\n }\n }\n\n initWebSocket() {\n this.cleanupWebSocket();\n\n this.connectedWebSocketGleapId = GleapSession.getInstance().session.gleapId;\n\n if (\n !GleapSession.getInstance().session ||\n !GleapSession.getInstance().sdkKey\n ) {\n return;\n }\n\n this.socket = new WebSocket(\n `${GleapSession.getInstance().wsApiUrl}?gleapId=${\n GleapSession.getInstance().session.gleapId\n }&gleapHash=${GleapSession.getInstance().session.gleapHash}&apiKey=${\n GleapSession.getInstance().sdkKey\n }&sdkVersion=${SDK_VERSION}`\n );\n this.socket.addEventListener(\"open\", this.handleOpenBound);\n this.socket.addEventListener(\"message\", this.handleMessageBound);\n this.socket.addEventListener(\"error\", this.handleErrorBound);\n this.socket.addEventListener(\"close\", this.handleCloseBound);\n }\n\n handleOpen(event) {\n this.pingWS = setInterval(() => {\n if (this.socket.readyState === this.socket.OPEN) {\n this.socket.send(\"PING\");\n this.socket.send(0x9);\n }\n }, 10000);\n\n if (this.connectionTimeout) {\n clearTimeout(this.connectionTimeout);\n this.connectionTimeout = null;\n }\n }\n\n handleMessage(event) {\n this.processMessage(JSON.parse(event.data));\n }\n\n handleError(error) {}\n\n handleClose(event) {\n setTimeout(() => {\n this.initWebSocket();\n }, 5000);\n }\n\n processMessage(message) {\n try {\n if (message.name === \"update\") {\n const { a, u } = message.data;\n\n if (!GleapFrameManager.getInstance().isOpened()) {\n if (a) {\n Gleap.getInstance().performActions(a);\n }\n if (u != null) {\n GleapNotificationManager.getInstance().setNotificationCount(u);\n }\n }\n }\n\n if (message.name === \"checklist\" && message?.data && window) {\n if (typeof window.dispatchEvent === \"function\") {\n window.dispatchEvent(\n new CustomEvent(\"checkListUpdate\", { detail: message.data })\n );\n }\n }\n } catch (exp) {}\n }\n\n getEventArray() {\n return this.eventArray;\n }\n\n stop() {\n this.cleanupMainLoop();\n }\n\n resetErrorCountLoop() {\n setInterval(() => {\n this.errorCount = 0;\n }, 60000);\n }\n\n cleanupMainLoop() {\n if (this.mainLoopTimeout) {\n clearInterval(this.mainLoopTimeout);\n this.mainLoopTimeout = null;\n }\n }\n\n restart() {\n // Only reconnect websockets when needed.\n if (\n this.connectedWebSocketGleapId !==\n GleapSession.getInstance().session.gleapId\n ) {\n this.initWebSocket();\n }\n\n this.cleanupMainLoop();\n this.trackInitialEvents();\n this.runEventStreamLoop();\n }\n\n start() {\n this.startPageListener();\n this.resetErrorCountLoop();\n }\n\n trackInitialEvents() {\n GleapStreamedEvent.getInstance().logEvent(\"sessionStarted\");\n GleapStreamedEvent.getInstance().logCurrentPage();\n }\n\n logCurrentPage() {\n if (Gleap.getInstance().disablePageTracking) {\n return;\n }\n\n const currentUrl = window.location.href;\n if (currentUrl && currentUrl !== this.lastUrl) {\n this.lastUrl = currentUrl;\n this.logEvent(\"pageView\", {\n page: currentUrl,\n });\n }\n }\n\n startPageListener() {\n const self = this;\n setInterval(function () {\n self.logCurrentPage();\n }, 1000);\n }\n\n logEvent(name, data) {\n var log = {\n name,\n date: new Date(),\n };\n if (data) {\n log.data = gleapDataParser(data);\n }\n this.eventArray.push(log);\n this.streamedEventArray.push(log);\n\n // Check max size of event log\n if (this.eventArray.length > this.eventMaxLength) {\n this.eventArray.shift();\n }\n\n // Check max size of streamed event log\n if (this.streamedEventArray.length > this.eventMaxLength) {\n this.streamedEventArray.shift();\n }\n }\n\n runEventStreamLoop = () => {\n const self = this;\n this.streamEvents();\n\n this.mainLoopTimeout = setTimeout(function () {\n self.runEventStreamLoop();\n }, 2500);\n };\n\n streamEvents = () => {\n if (\n !GleapSession.getInstance().ready ||\n this.streamingEvents ||\n this.errorCount > 2\n ) {\n return;\n }\n\n // Nothing to stream.\n if (this.streamedEventArray.length === 0) {\n return;\n }\n\n // Sockets not connected.\n if (!this.socket || this.socket.readyState !== this.socket.OPEN) {\n return;\n }\n\n const self = this;\n this.streamingEvents = true;\n\n const http = new XMLHttpRequest();\n http.open(\"POST\", GleapSession.getInstance().apiUrl + \"/sessions/ping\");\n http.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n GleapSession.getInstance().injectSession(http);\n http.onerror = () => {\n self.errorCount++;\n self.streamingEvents = false;\n };\n http.onreadystatechange = function (e) {\n if (http.readyState === 4) {\n if (http.status === 200 || http.status === 201) {\n self.errorCount = 0;\n } else {\n self.errorCount++;\n }\n\n self.streamingEvents = false;\n }\n };\n\n const sessionDuration =\n GleapMetaDataManager.getInstance().getSessionDuration();\n http.send(\n JSON.stringify({\n time: sessionDuration,\n events: this.streamedEventArray,\n opened: GleapFrameManager.getInstance().isOpened(),\n type: \"js\",\n sdkVersion: SDK_VERSION,\n ws: true,\n })\n );\n\n this.streamedEventArray = [];\n };\n}\n","import { loadFromGleapCache, saveToGleapCache } from \"./GleapHelper\";\nimport Gleap, {\n GleapFrameManager,\n GleapFeedbackButtonManager,\n GleapTranslationManager,\n GleapNetworkIntercepter,\n GleapSession,\n GleapReplayRecorder,\n GleapNotificationManager,\n} from \"./Gleap\";\n\nconst parseIntWithDefault = (val, def) => {\n const parsed = parseInt(val);\n if (isNaN(parsed)) {\n return def;\n }\n return parsed;\n};\n\nexport default class GleapConfigManager {\n flowConfig = null;\n projectActions = null;\n onConfigLoadedListener = [];\n aiTools = [];\n\n onConfigLoaded = (onConfigLoaded) => {\n if (this.flowConfig !== null) {\n onConfigLoaded();\n } else {\n this.onConfigLoadedListener.push(onConfigLoaded);\n }\n };\n\n // GleapConfigManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapConfigManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the loaded flow config.\n * @returns\n */\n getFlowConfig() {\n return this.flowConfig;\n }\n\n setAiTools = (aiTools) => {\n this.aiTools = aiTools;\n GleapFrameManager.getInstance().sendConfigUpdate();\n };\n\n getAiTools = () => {\n return this.aiTools;\n };\n\n /**\n * Load config.\n * @returns {string}\n */\n start = () => {\n const session = GleapSession.getInstance();\n const cachedConfig = loadFromGleapCache(\n `config-${\n session.sdkKey\n }-${GleapTranslationManager.getInstance().getActiveLanguage()}`\n );\n if (cachedConfig) {\n this.applyConfig(cachedConfig);\n this.loadConfigFromServer().catch(function (e) {});\n return Promise.resolve();\n }\n\n return this.loadConfigFromServer();\n };\n\n loadConfigFromServer = () => {\n const self = this;\n return new Promise(function (resolve, reject) {\n const session = GleapSession.getInstance();\n const http = new XMLHttpRequest();\n const lang = GleapTranslationManager.getInstance().getActiveLanguage();\n http.open(\n \"GET\",\n session.apiUrl + \"/config/\" + session.sdkKey + \"?lang=\" + lang\n );\n http.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n session.injectSession(http);\n http.onerror = function () {\n reject();\n };\n http.onreadystatechange = function (e) {\n if (http.readyState === 4) {\n if (http.status === 200 || http.status === 201) {\n try {\n const config = JSON.parse(http.responseText);\n try {\n saveToGleapCache(`config-${session.sdkKey}-${lang}`, config);\n } catch (exp) {}\n self.applyConfig(config);\n return resolve();\n } catch (e) {}\n }\n reject();\n }\n };\n http.send();\n });\n };\n\n applyStylesFromConfig() {\n const flowConfig = this.flowConfig;\n\n Gleap.setStyles(\n flowConfig.color ? flowConfig.color : \"#485BFF\",\n flowConfig.headerColor ? flowConfig.headerColor : \"#485BFF\",\n flowConfig.buttonColor ? flowConfig.buttonColor : \"#485BFF\",\n flowConfig.backgroundColor ? flowConfig.backgroundColor : \"#FFFFFF\",\n parseIntWithDefault(flowConfig.borderRadius, 20),\n parseIntWithDefault(flowConfig.buttonX, 20),\n parseIntWithDefault(flowConfig.buttonY, 20),\n flowConfig.feedbackButtonPosition\n );\n }\n\n notifyConfigLoaded() {\n if (this.onConfigLoadedListener.length > 0) {\n for (var i = 0; i < this.onConfigLoadedListener.length; i++) {\n this.onConfigLoadedListener[i]();\n }\n }\n this.onConfigLoadedListener = [];\n }\n\n /**\n * Applies the Gleap config.\n * @param {*} config\n */\n applyConfig(config) {\n try {\n const flowConfig = config.flowConfig;\n this.flowConfig = flowConfig;\n\n // Update styles.\n this.applyStylesFromConfig();\n\n // Send config update.\n GleapFrameManager.getInstance().sendConfigUpdate();\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapNotificationManager.getInstance().updateContainerStyle();\n\n if (flowConfig.enableWebReplays) {\n GleapReplayRecorder.getInstance().start();\n } else {\n GleapReplayRecorder.getInstance().stop();\n }\n\n if (flowConfig.enableNetworkLogs) {\n GleapNetworkIntercepter.getInstance().start();\n }\n\n GleapNetworkIntercepter.getInstance().setLoadAllResources(\n flowConfig.sendNetworkResources ? true : false\n );\n\n if (flowConfig.networkLogPropsToIgnore) {\n GleapNetworkIntercepter.getInstance().setFilters(\n flowConfig.networkLogPropsToIgnore\n );\n }\n\n if (flowConfig.networkLogBlacklist) {\n GleapNetworkIntercepter.getInstance().setBlacklist(\n flowConfig.networkLogBlacklist\n );\n }\n\n GleapTranslationManager.getInstance().updateRTLSupport();\n\n Gleap.enableShortcuts(flowConfig.enableShortcuts ? true : false);\n\n this.notifyConfigLoaded();\n } catch (e) {}\n }\n}\n","import { isMobile, resizeImage } from \"./GleapHelper\";\nimport { isBlacklisted } from \"./ResourceExclusionList\";\n\nexport const startScreenCapture = (isLiveSite) => {\n return prepareScreenshotData(isLiveSite);\n};\n\nconst documentToHTML = (clone) => {\n var html = \"\";\n var node = window.document.doctype;\n if (node) {\n html =\n \"<!DOCTYPE \" +\n node.name +\n (node.publicId ? ' PUBLIC \"' + node.publicId + '\"' : \"\") +\n (!node.publicId && node.systemId ? \" SYSTEM\" : \"\") +\n (node.systemId ? ' \"' + node.systemId + '\"' : \"\") +\n \">\";\n }\n\n if (clone && clone.childNodes && clone.childNodes.length > 0) {\n for (var i = 0; i < clone.childNodes.length; i++) {\n if (clone.childNodes[i]) {\n html += clone.childNodes[i].outerHTML;\n }\n }\n }\n\n return html;\n};\n\nconst replaceAsync = (str, regex, asyncFn) => {\n return new Promise((resolve, reject) => {\n const promises = [];\n str.replace(regex, (match, ...args) => {\n const promise = asyncFn(match, ...args);\n promises.push(promise);\n });\n Promise.all(promises)\n .then((data) => {\n resolve(str.replace(regex, () => data.shift()));\n })\n .catch(() => {\n reject();\n });\n });\n};\n\nconst loadCSSUrlResources = (data, basePath, remote) => {\n return replaceAsync(\n data,\n /url\\((.*?)\\)/g,\n (matchedData) =>\n new Promise((resolve, reject) => {\n if (!matchedData) {\n return resolve(matchedData);\n }\n\n var matchedUrl = matchedData\n .substr(4, matchedData.length - 5)\n .replaceAll(\"'\", \"\")\n .replaceAll('\"', \"\");\n\n // Remote file or data\n if (\n matchedUrl.indexOf(\"http\") === 0 ||\n matchedUrl.indexOf(\"//\") === 0 ||\n matchedUrl.indexOf(\"data\") === 0\n ) {\n return resolve(matchedData);\n }\n\n try {\n var resourcePath = matchedUrl;\n if (basePath) {\n resourcePath = new URL(matchedUrl, basePath + \"/\").href;\n }\n\n // Try to fetch external resource.\n if (!remote) {\n return fetchCSSResource(resourcePath).then((resourceData) => {\n return resolve(\"url(\" + resourceData + \")\");\n });\n } else {\n return resolve(\"url(\" + resourcePath + \")\");\n }\n } catch (exp) {\n return resolve(matchedData);\n }\n })\n );\n};\n\nconst fetchCSSResource = (url) => {\n return new Promise((resolve, reject) => {\n if (url) {\n var xhr = new XMLHttpRequest();\n xhr.onload = function () {\n var reader = new FileReader();\n reader.onloadend = function () {\n resolve(reader.result);\n };\n reader.onerror = function () {\n reject();\n };\n reader.readAsDataURL(xhr.response);\n };\n xhr.onerror = function (err) {\n resolve();\n };\n xhr.open(\"GET\", url);\n xhr.responseType = \"blob\";\n xhr.send();\n } else {\n resolve();\n }\n });\n};\n\nconst progressResource = (data, elem, resolve, reject) => {\n resizeImage(data, 500, 500)\n .then((data) => {\n elem.src = data;\n resolve();\n })\n .catch(() => {\n console.warn(\"BB: Image resize failed.\");\n resolve();\n });\n};\n\nconst fetchItemResource = (elem) => {\n return new Promise((resolve, reject) => {\n if (elem && elem.src) {\n if (isBlacklisted(elem.src)) {\n return resolve();\n }\n\n var xhr = new XMLHttpRequest();\n xhr.onload = function () {\n var reader = new FileReader();\n reader.onloadend = function () {\n progressResource(reader.result, elem, resolve, reject);\n };\n reader.onerror = function () {\n resolve();\n };\n reader.readAsDataURL(xhr.response);\n };\n xhr.onerror = function (err) {\n resolve();\n };\n var url = elem.src;\n xhr.open(\"GET\", url);\n xhr.responseType = \"blob\";\n xhr.send();\n } else {\n resolve();\n }\n });\n};\n\nconst downloadAllImages = (dom) => {\n const imgItems = dom.querySelectorAll(\"img\");\n const imgItemsPromises = [];\n for (var i = 0; i < imgItems.length; i++) {\n const item = imgItems[i];\n imgItemsPromises.push(fetchItemResource(item));\n }\n\n return Promise.all(imgItemsPromises);\n};\n\nconst replaceStyleNodes = (clone, styleSheet, cssTextContent, styleId) => {\n {\n var cloneTargetNode = null;\n if (styleSheet.ownerNode) {\n cloneTargetNode = clone.querySelector('[bb-styleid=\"' + styleId + '\"]');\n }\n\n try {\n if (cloneTargetNode) {\n var replacementNode = null;\n if (cssTextContent != \"\") {\n // Create node.\n const head = clone.querySelector(\"head\");\n var styleNode = window.document.createElement(\"style\");\n head.appendChild(styleNode);\n styleNode.type = \"text/css\";\n if (styleNode.styleSheet) {\n styleNode.styleSheet.cssText = cssTextContent;\n } else {\n styleNode.appendChild(\n window.document.createTextNode(cssTextContent)\n );\n }\n replacementNode = styleNode;\n } else {\n var linkNode = window.document.createElement(\"link\");\n linkNode.rel = \"stylesheet\";\n linkNode.type = styleSheet.type;\n linkNode.href = styleSheet.href;\n linkNode.media = styleSheet.media;\n replacementNode = linkNode;\n }\n\n if (replacementNode) {\n cloneTargetNode.parentNode.insertBefore(\n replacementNode,\n cloneTargetNode\n );\n cloneTargetNode.remove();\n }\n }\n } catch (exp) {}\n }\n};\n\nconst getTextContentFromStyleSheet = (styleSheet) => {\n var cssRules = null;\n try {\n if (styleSheet.cssRules) {\n cssRules = styleSheet.cssRules;\n } else if (styleSheet.rules) {\n cssRules = styleSheet.rules;\n }\n } catch (exp) {}\n\n var cssTextContent = \"\";\n if (cssRules) {\n for (var cssRuleItem in cssRules) {\n if (cssRules[cssRuleItem].cssText) {\n cssTextContent += cssRules[cssRuleItem].cssText;\n }\n }\n }\n\n return cssTextContent;\n};\n\nconst downloadAllCSSUrlResources = (clone, remote) => {\n var promises = [];\n for (var i = 0; i < document.styleSheets.length; i++) {\n const styleSheet = document.styleSheets[i];\n\n // Skip if the stylesheet is meant for print\n if (styleSheet.media && styleSheet.media.mediaText === \"print\") {\n continue;\n }\n\n const cssTextContent = getTextContentFromStyleSheet(styleSheet);\n if (styleSheet && styleSheet.ownerNode) {\n if (cssTextContent != \"\") {\n // Resolve resources.\n const baseTags = document.getElementsByTagName(\"base\");\n var basePathURL = baseTags.length\n ? baseTags[0].href.substr(location.origin.length, 999)\n : window.location.href.split(/[?#]/)[0];\n\n if (styleSheet.href) {\n basePathURL = styleSheet.href;\n }\n\n const basePath = basePathURL.substring(0, basePathURL.lastIndexOf(\"/\"));\n\n promises.push(\n loadCSSUrlResources(cssTextContent, basePath, remote).then(\n (replacedStyle) => {\n return {\n styletext: replacedStyle,\n stylesheet: styleSheet,\n styleId: styleSheet.ownerNode.getAttribute(\"bb-styleid\"),\n };\n }\n )\n );\n } else {\n promises.push(\n Promise.resolve({\n styletext: cssTextContent,\n stylesheet: styleSheet,\n styleId: styleSheet.ownerNode.getAttribute(\"bb-styleid\"),\n })\n );\n }\n }\n }\n\n return Promise.all(promises).then((results) => {\n if (results) {\n for (var i = 0; i < results.length; i++) {\n replaceStyleNodes(\n clone,\n results[i].stylesheet,\n results[i].styletext,\n results[i].styleId\n );\n }\n }\n return true;\n });\n};\n\nconst prepareRemoteData = (clone, remote) => {\n return new Promise((resolve, reject) => {\n if (remote) {\n // Always download CSS.\n return downloadAllCSSUrlResources(clone, remote)\n .then(() => {\n resolve();\n })\n .catch(() => {\n resolve();\n });\n } else {\n return downloadAllImages(clone)\n .then(() => {\n return downloadAllCSSUrlResources(clone, remote).then(() => {\n resolve();\n });\n })\n .catch(() => {\n console.warn(\n \"Gleap: Failed with resolving local resources. Please contact the Gleap support team.\"\n );\n resolve();\n });\n }\n });\n};\n\nconst handleAdoptedStyleSheets = (doc, clone, shadowNodeId) => {\n if (typeof doc.adoptedStyleSheets !== \"undefined\") {\n for (let i = 0; i < doc.adoptedStyleSheets.length; i++) {\n const styleSheet = doc.adoptedStyleSheets[i];\n const cssTextContent = getTextContentFromStyleSheet(styleSheet);\n\n var shadowStyleNode = window.document.createElement(\"style\");\n shadowStyleNode.type = \"text/css\";\n if (shadowStyleNode.styleSheet) {\n shadowStyleNode.styleSheet.cssText = cssTextContent;\n } else {\n shadowStyleNode.appendChild(\n window.document.createTextNode(cssTextContent)\n );\n }\n\n if (shadowNodeId) {\n shadowStyleNode.setAttribute(\"bb-shadow-child\", shadowNodeId);\n }\n\n clone.insertBefore(shadowStyleNode, clone.firstElementChild);\n }\n }\n};\n\nconst extractFinalCSSState = (element) => {\n if (element && typeof element.getAnimations === \"function\") {\n const animations = element.getAnimations();\n const finalCSSState = {};\n\n animations.forEach((animation) => {\n const keyframes = animation.effect?.getKeyframes() || [];\n const finalKeyframe = keyframes[keyframes.length - 1] || {};\n\n // Extract only the keys (CSS properties) from the final keyframe\n Object.keys(finalKeyframe).forEach((property) => {\n if (property !== \"offset\") {\n // Store the computed style for each animated property\n finalCSSState[property] = getComputedStyle(element)[property];\n }\n });\n });\n\n if (Object.keys(finalCSSState).length === 0) {\n return null;\n }\n\n return JSON.stringify(finalCSSState);\n }\n\n return null;\n};\n\nconst deepClone = async (host) => {\n let shadowNodeId = 1;\n\n const cloneNode = async (node, parent, shadowRoot) => {\n const walkTree = async (nextn, nextp, innerShadowRoot) => {\n while (nextn) {\n await cloneNode(nextn, nextp, innerShadowRoot);\n\n // Fix missing element nodes.\n if (\n nextn.nextElementSibling &&\n (nextn.nextElementSibling.nextSibling === nextn.nextSibling ||\n nextn.nextSibling === null)\n ) {\n nextn = nextn.nextElementSibling;\n } else {\n nextn = nextn.nextSibling;\n }\n }\n };\n\n const clone = node.cloneNode();\n\n const webAnimations = extractFinalCSSState(node);\n if (webAnimations != null) {\n clone.setAttribute(\"bb-web-animations\", webAnimations);\n }\n\n if (typeof clone.setAttribute !== \"undefined\") {\n if (shadowRoot) {\n clone.setAttribute(\"bb-shadow-child\", shadowRoot);\n }\n\n if (node instanceof HTMLCanvasElement) {\n try {\n const boundingRect = node.getBoundingClientRect();\n const resizedImage = await resizeImage(node.toDataURL(), 1400, 1400);\n\n clone.setAttribute(\"bb-canvas-data\", resizedImage);\n clone.setAttribute(\"bb-canvas-height\", boundingRect.height);\n clone.setAttribute(\"bb-canvas-width\", boundingRect.width);\n } catch (exp) {\n console.warn(\"Gleap: Failed to clone canvas data.\", exp);\n }\n }\n }\n\n if (node.nodeType == Node.ELEMENT_NODE) {\n const tagName = node.tagName ? node.tagName.toUpperCase() : node.tagName;\n if (\n tagName == \"IFRAME\" ||\n tagName == \"VIDEO\" ||\n tagName == \"EMBED\" ||\n tagName == \"IMG\" ||\n tagName == \"SVG\"\n ) {\n const boundingRect = node.getBoundingClientRect();\n clone.setAttribute(\"bb-element\", true);\n clone.setAttribute(\"bb-height\", boundingRect.height);\n clone.setAttribute(\"bb-width\", boundingRect.width);\n }\n\n if (node.scrollTop > 0 || node.scrollLeft > 0) {\n clone.setAttribute(\"bb-scrollpos\", true);\n clone.setAttribute(\"bb-scrolltop\", node.scrollTop);\n clone.setAttribute(\"bb-scrollleft\", node.scrollLeft);\n }\n\n if (\n tagName === \"SELECT\" ||\n tagName === \"TEXTAREA\" ||\n tagName === \"INPUT\"\n ) {\n var val = node.value;\n if (\n node.getAttribute(\"gleap-ignore\") === \"value\" ||\n node.classList.contains(\"gl-mask\")\n ) {\n val = new Array(val.length + 1).join(\"*\");\n }\n\n clone.setAttribute(\"bb-data-value\", val);\n if (\n (node.type === \"checkbox\" || node.type === \"radio\") &&\n node.checked\n ) {\n clone.setAttribute(\"bb-data-checked\", true);\n }\n }\n }\n\n parent.appendChild(clone);\n\n if (node.shadowRoot) {\n var rootShadowNodeId = shadowNodeId;\n shadowNodeId++;\n await walkTree(node.shadowRoot.firstChild, clone, rootShadowNodeId);\n handleAdoptedStyleSheets(node.shadowRoot, clone, rootShadowNodeId);\n\n if (typeof clone.setAttribute !== \"undefined\") {\n clone.setAttribute(\"bb-shadow-parent\", rootShadowNodeId);\n }\n }\n\n await walkTree(node.firstChild, clone);\n };\n\n const fragment = document.createDocumentFragment();\n await cloneNode(host, fragment);\n\n // Work on adopted stylesheets.\n var clonedHead = fragment.querySelector(\"head\");\n if (!clonedHead) {\n clonedHead = fragment;\n }\n handleAdoptedStyleSheets(window.document, clonedHead);\n\n return fragment;\n};\n\nconst prepareScreenshotData = (remote) => {\n return new Promise(async (resolve, reject) => {\n const styleTags = window.document.querySelectorAll(\"style, link\");\n for (var i = 0; i < styleTags.length; ++i) {\n styleTags[i].setAttribute(\"bb-styleid\", i);\n }\n\n const clone = await deepClone(window.document.documentElement);\n\n // Fix for web imports (depracted).\n const linkImportElems = clone.querySelectorAll(\"link[rel=import]\");\n for (var i = 0; i < linkImportElems.length; ++i) {\n const referenceNode = linkImportElems[i];\n if (\n referenceNode &&\n referenceNode.childNodes &&\n referenceNode.childNodes.length > 0\n ) {\n const childNodes = referenceNode.childNodes;\n while (childNodes.length > 0) {\n referenceNode.parentNode.insertBefore(childNodes[0], referenceNode);\n }\n referenceNode.remove();\n }\n }\n\n // Remove all scripts & style\n const scriptElems = clone.querySelectorAll(\"script, noscript\");\n for (var i = 0; i < scriptElems.length; ++i) {\n scriptElems[i].remove();\n }\n\n // Cleanup base path\n var existingBasePath = \"\";\n const baseElems = clone.querySelectorAll(\"base\");\n for (var i = 0; i < baseElems.length; ++i) {\n if (baseElems[i].href) {\n existingBasePath = baseElems[i].href;\n }\n baseElems[i].remove();\n }\n\n // Adjust the base node\n const baseUrl = window.location.href.substring(\n 0,\n window.location.href.lastIndexOf(\"/\")\n );\n var newBaseUrl = baseUrl + \"/\";\n if (existingBasePath) {\n if (existingBasePath.startsWith(\"http\")) {\n // Absolute path.\n newBaseUrl = existingBasePath;\n } else {\n // Relative path.\n newBaseUrl = baseUrl + existingBasePath;\n if (!newBaseUrl.endsWith(\"/\")) {\n newBaseUrl += \"/\";\n }\n }\n }\n\n const baseNode = window.document.createElement(\"base\");\n baseNode.href = newBaseUrl;\n const head = clone.querySelector(\"head\");\n head.insertBefore(baseNode, head.firstChild);\n\n // Do further cleanup.\n const dialogElems = clone.querySelectorAll(\n \".bb-feedback-dialog-container, .bb-capture-editor-borderlayer\"\n );\n for (var i = 0; i < dialogElems.length; ++i) {\n dialogElems[i].remove();\n }\n\n // Calculate heights\n const bbElems = clone.querySelectorAll(\"[bb-element=true]\");\n for (var i = 0; i < bbElems.length; ++i) {\n if (bbElems[i]) {\n bbElems[i].style.height = bbElems[i].getAttribute(\"bb-height\") + \"px\";\n }\n }\n\n prepareRemoteData(clone, remote).then(() => {\n const html = documentToHTML(clone);\n\n resolve({\n html: html,\n baseUrl: baseUrl,\n width: window.innerWidth,\n height: window.innerHeight,\n isMobile: isMobile(),\n });\n });\n });\n};\n","export const isBlacklisted = function (url) {\n const blacklist = [\n \"//fonts.googleapis.com\",\n \"//cdn.jsdelivr.net\",\n \"//cdnjs.cloudflare.com\",\n \"//ajax.googleapis.com\",\n \"//use.typekit.net\",\n \".amazonaws.com\",\n \"//jssdk.gleap.io\",\n \".gstatic.com\",\n ];\n\n if (!url) {\n return false;\n }\n\n for (var i = 0; i < blacklist.length; i++) {\n if (url.indexOf(blacklist[i]) !== -1) {\n return true;\n }\n }\n return false;\n};\n","import GleapSession from \"./GleapSession\";\n\nexport class GleapScreenRecorder {\n rerender;\n stream;\n mediaRecorder;\n audioMuted = false;\n audioAvailable = true;\n available = true;\n isRecording = false;\n file = null;\n maxRecordTime = 120;\n recordTime = 0;\n recordingTimer = null;\n permissionErrorText = \"\";\n\n constructor(rerender, permissionErrorText) {\n this.rerender = rerender;\n this.permissionErrorText = permissionErrorText;\n if (!navigator.mediaDevices || !navigator.mediaDevices.getDisplayMedia) {\n this.available = false;\n }\n\n setTimeout(() => {\n this.rerender();\n }, 100);\n }\n\n getSupportedMimeType() {\n // List of MIME types in order of preference\n const types = [\n \"video/webm\",\n \"audio/webm\",\n \"video/webm;codecs=vp8\",\n \"video/webm;codecs=daala\",\n \"video/webm;codecs=h264\",\n \"audio/webm;codecs=opus\",\n \"video/mp4\",\n ];\n\n // Iterate through the list and return the first supported type\n for (const type of types) {\n if (MediaRecorder.isTypeSupported(type)) {\n return type;\n }\n }\n\n // If no types are supported, return a default or handle as needed\n return \"video/webm\";\n }\n\n formatTime(s) {\n return (s - (s %= 60)) / 60 + (9 < s ? \":\" : \":0\") + s;\n }\n\n startScreenRecording = function () {\n const self = this;\n if (\n !navigator.mediaDevices ||\n !navigator.mediaDevices.getDisplayMedia ||\n this.isRecording\n ) {\n this.available = false;\n this.rerender();\n return;\n }\n\n const max_width = 3072;\n const max_height = 1728;\n\n navigator.mediaDevices\n .getDisplayMedia({\n video: {\n width: { ideal: Math.min(window.screen.width, max_width) },\n height: { ideal: Math.min(window.screen.height, max_height) },\n frameRate: { ideal: 10, max: 24 },\n displaySurface: \"monitor\",\n },\n selfBrowserSurface: \"include\",\n audio: true,\n })\n .then(function (displayStream) {\n self.stream = displayStream;\n\n if (!self.audioMuted) {\n self.startAudioRecording();\n } else {\n self.audioAvailable = false;\n self.handleRecord({ stream: displayStream });\n }\n\n self.rerender();\n })\n .catch(function (err) {\n window.alert(self.permissionErrorText);\n self.rerender();\n });\n };\n\n stopScreenRecording = function () {\n if (!this.mediaRecorder || !this.stream || !this.isRecording) {\n return;\n }\n\n if (this.recordingTimer) {\n clearInterval(this.recordingTimer);\n this.recordingTimer = null;\n }\n this.mediaRecorder.stop();\n this.stream.getTracks().forEach((track) => {\n track.stop();\n });\n\n this.rerender();\n };\n\n startAudioRecording = function () {\n const self = this;\n\n if (!this.stream) {\n return;\n }\n\n navigator.mediaDevices\n .getUserMedia({\n audio: true,\n video: false,\n })\n .then(function (voiceStream) {\n for (let i = 0; i < voiceStream.getAudioTracks().length; i++) {\n self.stream.addTrack(voiceStream.getAudioTracks()[i]);\n }\n self.audioMuted = false;\n self.audioAvailable = true;\n self.handleRecord({ stream: self.stream });\n self.rerender();\n })\n .catch(function (audioErr) {\n self.audioAvailable = false;\n self.handleRecord({ stream: self.stream });\n self.rerender();\n });\n };\n\n toggleAudio = function () {\n this.audioMuted = !this.audioMuted;\n this.rerender();\n\n if (!this.stream) {\n return;\n }\n\n const audioTracks = this.stream.getAudioTracks();\n for (var i = 0; i < audioTracks.length; i++) {\n const audioTrack = audioTracks[i];\n audioTrack.enabled = !this.audioMuted;\n }\n };\n\n static uploadScreenRecording = function (screenRecordingData) {\n return new Promise(function (resolve, reject) {\n if (screenRecordingData == null) {\n resolve(null);\n }\n\n var xhr = new XMLHttpRequest();\n xhr.open(\"POST\", GleapSession.getInstance().apiUrl + \"/uploads/sdk\");\n GleapSession.getInstance().injectSession(xhr);\n\n var formdata = new FormData();\n formdata.append(\"file\", screenRecordingData);\n\n xhr.onerror = function () {\n reject();\n };\n xhr.onreadystatechange = function () {\n if (xhr.readyState == 4) {\n if (xhr.status == 200) {\n resolve(JSON.parse(xhr.response).fileUrl);\n } else {\n reject();\n }\n }\n };\n xhr.send(formdata);\n });\n };\n\n clearPreview = function () {\n document.querySelector(\".bb-capture-preview video\").src = null;\n this.file = null;\n this.rerender();\n };\n\n handleRecord = function ({ stream }) {\n const self = this;\n\n var recordedChunks = [];\n this.mediaRecorder = new MediaRecorder(stream, {\n mimeType: this.getSupportedMimeType(),\n });\n this.isRecording = true;\n this.recordTime = 0;\n\n // Set timer.\n const timerLabel = document.querySelector(\".bb-capture-toolbar-item-timer\");\n this.recordingTimer = setInterval(() => {\n self.recordTime++;\n var remainingTime = self.maxRecordTime - self.recordTime;\n if (remainingTime > 0) {\n timerLabel.innerHTML = self.formatTime(remainingTime);\n } else {\n timerLabel.innerHTML = \"2:00\";\n self.stopScreenRecording();\n }\n }, 1000);\n\n this.mediaRecorder.ondataavailable = function (e) {\n if (e.data.size > 0) {\n recordedChunks.push(e.data);\n }\n };\n\n stream.getVideoTracks()[0].onended = function () {\n self.prepareRecording(recordedChunks);\n };\n\n this.mediaRecorder.onstop = function () {\n self.prepareRecording(recordedChunks);\n };\n\n this.mediaRecorder.start(200); // here 200ms is interval of chunk collection\n\n self.rerender();\n };\n\n prepareRecording = function (recordedChunks) {\n const completeBlob = new Blob(recordedChunks, {\n type: this.getSupportedMimeType(),\n });\n\n const mimeType = this.getSupportedMimeType();\n const extension = mimeType.includes(\"mp4\") ? \"mp4\" : \"webm\";\n this.file = new File([completeBlob], `screen-recording.${extension}`, {\n type: mimeType,\n });\n\n const previewVideoElement = document.querySelector(\n \".bb-capture-preview video\"\n );\n if (previewVideoElement) {\n previewVideoElement.src = URL.createObjectURL(completeBlob);\n this.audioAvailable = true;\n this.isRecording = false;\n this.rerender();\n }\n };\n}\n","import { startScreenCapture } from \"./ScreenCapture\";\nimport { GleapScreenRecorder } from \"./GleapScreenRecorder\";\nimport Gleap, { GleapConsoleLogManager, GleapStreamedEvent, GleapSession, GleapCustomDataManager, GleapMetaDataManager, GleapNetworkIntercepter, GleapTagManager } from \"./Gleap\";\n\nexport default class GleapFeedback {\n excludeData = {};\n type = \"BUG\";\n priority = \"LOW\";\n customData = {};\n ticketAttributes = {};\n metaData = {};\n consoleLog = [];\n networkLogs = [];\n customEventLog = [];\n formData = {};\n isSilent = false;\n outboundId = undefined;\n screenshotData = undefined;\n webReplay = undefined;\n screenRecordingUrl = undefined;\n spamToken = undefined;\n\n constructor(type, priority, formData, isSilent, excludeData, outboundId, spamToken) {\n this.type = type;\n this.priority = priority;\n this.formData = formData;\n this.isSilent = isSilent;\n this.excludeData = excludeData;\n this.outboundId = outboundId;\n this.spamToken = spamToken;\n }\n\n takeSnapshot() {\n const gleapInstance = Gleap.getInstance();\n this.customData = GleapCustomDataManager.getInstance().getCustomData();\n this.metaData = GleapMetaDataManager.getInstance().getMetaData();\n this.consoleLog = GleapConsoleLogManager.getInstance().getLogs();\n this.networkLogs = GleapNetworkIntercepter.getInstance().getRequests();\n this.customEventLog = GleapStreamedEvent.getInstance().getEventArray();\n this.ticketAttributes = GleapCustomDataManager.getInstance().getTicketAttributes();\n\n var dataPromises = [];\n\n // Assign replays\n var webReplay = gleapInstance.getGlobalDataItem(\"webReplay\");\n if (webReplay !== null) {\n this.webReplay = webReplay;\n }\n\n // Prepare screen recording\n var screenRecordingData = gleapInstance.getGlobalDataItem(\"screenRecordingData\");\n if (screenRecordingData != null) {\n var recordingUrlPromise = GleapScreenRecorder.uploadScreenRecording(screenRecordingData).then((recordingUrl) => {\n if (recordingUrl) {\n this.screenRecordingUrl = recordingUrl;\n }\n });\n dataPromises.push(recordingUrlPromise);\n }\n\n // Prepare screenshot\n if (!(this.excludeData && this.excludeData.screenshot)) {\n var screenshotDataPromise = startScreenCapture(gleapInstance.isLiveMode()).then((screenshotData) => {\n if (screenshotData) {\n const snapshotPosition = gleapInstance.getGlobalDataItem(\"snapshotPosition\");\n screenshotData[\"x\"] = snapshotPosition.x;\n screenshotData[\"y\"] = snapshotPosition.y;\n this.screenshotData = screenshotData;\n }\n });\n dataPromises.push(screenshotDataPromise);\n }\n\n return Promise.all(dataPromises);\n }\n\n getData() {\n var feedbackData = {\n type: this.type,\n priority: this.priority,\n customData: this.customData,\n metaData: this.metaData,\n consoleLog: this.consoleLog,\n networkLogs: this.networkLogs,\n customEventLog: this.customEventLog,\n // Merge ticket attributes and form data.\n formData: {\n ...this.ticketAttributes,\n ...this.formData\n },\n isSilent: this.isSilent,\n outbound: this.outboundId,\n screenshotData: this.screenshotData,\n webReplay: this.webReplay,\n screenRecordingUrl: this.screenRecordingUrl,\n spamToken: this.spamToken,\n };\n\n const tags = GleapTagManager.getInstance().getTags();\n if (tags && tags.length > 0) {\n feedbackData.tags = tags;\n }\n\n if (this.excludeData) {\n const keysToExclude = Object.keys(this.excludeData);\n for (let i = 0; i < keysToExclude.length; i++) {\n const keyToExclude = keysToExclude[i];\n if (this.excludeData[keyToExclude] === true) {\n if (feedbackData[keyToExclude]) {\n delete feedbackData[keyToExclude];\n }\n\n if (keyToExclude === \"screenshot\") {\n delete feedbackData.screenshotData;\n }\n\n if (keyToExclude === \"replays\") {\n delete feedbackData.webReplay;\n }\n }\n }\n }\n\n return feedbackData;\n }\n\n getTicketData() {\n return new Promise((resolve, reject) => {\n this.takeSnapshot().then(() => {\n const dataToSend = this.getData();\n resolve(dataToSend);\n }).catch((exp) => {\n console.log(\"Failed to take snapshot\", exp);\n reject();\n });\n });\n }\n\n sendFeedback() {\n return new Promise((resolve, reject) => {\n this.takeSnapshot().then(() => {\n const dataToSend = this.getData();\n\n const http = new XMLHttpRequest();\n http.open(\"POST\", GleapSession.getInstance().apiUrl + \"/bugs/v2\");\n http.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n GleapSession.getInstance().injectSession(http);\n http.onerror = (error) => {\n reject();\n };\n http.onreadystatechange = function (e) {\n if (http.readyState === 4) {\n if (http.status === 200 || http.status === 201) {\n try {\n const feedback = JSON.parse(http.responseText);\n resolve(feedback);\n } catch (exp) {\n reject();\n }\n } else {\n reject();\n }\n }\n };\n http.send(JSON.stringify(dataToSend));\n }).catch((exp) => {\n console.log(\"Failed to take snapshot\", exp);\n reject();\n });\n });\n }\n}\n","import Gleap, {\n GleapStreamedEvent,\n GleapAudioManager,\n GleapNotificationManager,\n GleapCustomActionManager,\n GleapEventManager,\n GleapMarkerManager,\n GleapFeedback,\n GleapFeedbackButtonManager,\n GleapTranslationManager,\n GleapSession,\n GleapConfigManager,\n GleapCustomDataManager,\n GleapMetaDataManager,\n GleapConsoleLogManager,\n GleapNetworkIntercepter,\n GleapTagManager,\n GleapBannerManager,\n} from \"./Gleap\";\nimport { widgetMaxHeight } from \"./UI\";\nimport { runFunctionWhenDomIsReady } from \"./GleapHelper\";\n\nexport default class GleapFrameManager {\n frameUrl = \"https://messenger-app.gleap.io\";\n gleapFrameContainer = null;\n gleapFrame = null;\n comReady = false;\n injectedFrame = false;\n widgetOpened = false;\n listeners = [];\n appMode = \"widget\";\n markerManager = undefined;\n escListener = undefined;\n frameHeight = 0;\n queue = [];\n urlHandler = function (url, newTab) {\n if (url && url.length > 0) {\n if (newTab) {\n const newWindow = window.open(url, \"_blank\");\n if (newWindow) {\n newWindow.focus();\n }\n } else {\n window.location.href = url;\n }\n }\n };\n\n // GleapFrameManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapFrameManager();\n }\n return this.instance;\n }\n\n constructor() {\n this.startCommunication();\n if (typeof window !== \"undefined\") {\n function appHeight() {\n try {\n const doc = document.documentElement;\n doc.style.setProperty(\"--glvh\", window.innerHeight * 0.01 + \"px\");\n } catch (e) {}\n }\n\n try {\n window.addEventListener(\"resize\", appHeight);\n appHeight();\n } catch (e) {}\n }\n }\n\n setUrlHandler(handler) {\n this.urlHandler = handler;\n }\n\n isSurvey() {\n return (\n this.appMode === \"survey\" ||\n this.appMode === \"survey_full\" ||\n this.appMode === \"survey_web\"\n );\n }\n\n setAppMode(appMode) {\n this.appMode = appMode;\n this.updateFrameStyle();\n\n const innerContainer = document.querySelector(\n \".gleap-frame-container-inner\"\n );\n if (\n (this.appMode === \"widget\" ||\n this.appMode === \"survey_full\" ||\n this.appMode === \"survey_web\") &&\n innerContainer\n ) {\n innerContainer.style.maxHeight = `${widgetMaxHeight}px`;\n }\n }\n\n registerEscListener() {\n if (this.escListener) {\n return;\n }\n\n this.escListener = (evt) => {\n evt = evt || window.event;\n if (evt.key === \"Escape\") {\n this.hideWidget();\n }\n };\n document.addEventListener(\"keydown\", this.escListener);\n }\n\n unregisterEscListener() {\n if (this.escListener) {\n document.removeEventListener(\"keydown\", this.escListener);\n this.escListener = null;\n }\n }\n\n destroy() {\n if (this.gleapFrame) {\n this.gleapFrame.remove();\n }\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.remove();\n }\n this.injectedFrame = false;\n this.widgetOpened = false;\n this.markerManager = undefined;\n this.gleapFrameContainer = null;\n this.gleapFrame = null;\n }\n\n isOpened() {\n return this.widgetOpened || this.markerManager != null;\n }\n\n autoWhiteListCookieManager = () => {\n if (window && window.cmp_block_ignoredomains) {\n window.cmp_block_ignoredomains.concat([\"messenger-app.gleap.io\"]);\n }\n };\n\n injectFrame = () => {\n if (this.injectedFrame) {\n return;\n }\n this.injectedFrame = true;\n\n this.autoWhiteListCookieManager();\n\n // Inject the frame manager after it has been loaded.\n runFunctionWhenDomIsReady(() => {\n GleapConfigManager.getInstance().onConfigLoaded(() => {\n // Apply CSS.\n GleapConfigManager.getInstance().applyStylesFromConfig();\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className =\n \"gleap-frame-container gleap-frame-container--hidden gl-block\";\n elem.innerHTML = `<div class=\"gleap-frame-container-inner\"><iframe src=\"${this.frameUrl}\" class=\"gleap-frame\" scrolling=\"yes\" allow=\"autoplay; encrypted-media; fullscreen; microphone *;\" frameborder=\"0\"></iframe></div>`;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n\n this.updateFrameStyle();\n\n // Show loading preview for widget app mode.\n if (this.appMode === \"widget\") {\n this.showFrameContainer(true);\n }\n });\n });\n };\n\n showImage = (url) => {\n runFunctionWhenDomIsReady(() => {\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-image-view\";\n elem.innerHTML = `<div class=\"gleap-image-view-close\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path d=\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm97.9-320l-17 17-47 47 47 47 17 17L320 353.9l-17-17-47-47-47 47-17 17L158.1 320l17-17 47-47-47-47-17-17L192 158.1l17 17 47 47 47-47 17-17L353.9 192z\"/></svg>\n </div><img class=\"gleap-image-view-image\" src=\"${url}\" />`;\n document.body.appendChild(elem);\n\n const closeElement = () => {\n elem.remove();\n };\n\n const close = elem.querySelector(\".gleap-image-view-close\");\n close.addEventListener(\"click\", () => {\n closeElement();\n });\n\n elem.addEventListener(\"click\", (e) => {\n if (e.target === elem) {\n closeElement();\n }\n });\n });\n };\n\n updateFrameStyle = () => {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const surveyStyle = \"gleap-frame-container--survey\";\n const extendedStyle = \"gleap-frame-container--extended\";\n const surveyFullStyle = \"gleap-frame-container--survey-full\";\n const classicStyle = \"gleap-frame-container--classic\";\n const classicStyleLeft = \"gleap-frame-container--classic-left\";\n const modernStyleLeft = \"gleap-frame-container--modern-left\";\n const noButtonStyleLeft = \"gleap-frame-container--no-button\";\n const allStyles = [\n classicStyle,\n classicStyleLeft,\n extendedStyle,\n modernStyleLeft,\n noButtonStyleLeft,\n surveyStyle,\n surveyFullStyle,\n ];\n for (let i = 0; i < allStyles.length; i++) {\n this.gleapFrameContainer.classList.remove(allStyles[i]);\n }\n\n var styleToApply = undefined;\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n styleToApply = classicStyle;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n styleToApply = classicStyleLeft;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n styleToApply = modernStyleLeft;\n }\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n styleToApply = noButtonStyleLeft;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n styleToApply = noButtonStyleLeft;\n }\n }\n if (styleToApply) {\n this.gleapFrameContainer.classList.add(styleToApply);\n }\n\n if (this.appMode === \"survey\") {\n this.gleapFrameContainer.classList.add(surveyStyle);\n }\n if (this.appMode === \"survey_full\" || this.appMode === \"survey_web\") {\n this.gleapFrameContainer.classList.add(surveyFullStyle);\n }\n if (this.appMode === \"extended\") {\n this.gleapFrameContainer.classList.add(extendedStyle);\n }\n\n this.gleapFrameContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n };\n\n showFrameContainer(showLoader) {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const loadingClass = \"gleap-frame-container--loading\";\n if (this.gleapFrameContainer.classList) {\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--hidden\"\n );\n if (showLoader) {\n this.gleapFrameContainer.classList.add(loadingClass);\n\n if (flowConfig.disableBGFade) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nofade\"\n );\n }\n if (flowConfig.disableBGGradient) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nogradient\"\n );\n }\n } else {\n this.gleapFrameContainer.classList.remove(loadingClass);\n }\n\n setTimeout(() => {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--animate\"\n );\n }, 500);\n }\n\n this.widgetOpened = true;\n this.updateUI();\n }\n\n runWidgetShouldOpenCallback() {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n this.workThroughQueue();\n\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n this.showFrameContainer(false);\n this.updateWidgetStatus();\n\n GleapEventManager.notifyEvent(\"open\");\n this.registerEscListener();\n }\n\n updateUI() {\n // Clear notifications only when not opening a survey.\n GleapNotificationManager.getInstance().clearAllNotifications(\n this.isSurvey()\n );\n GleapNotificationManager.getInstance().setNotificationCount(0);\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n }\n\n showWidget() {\n setTimeout(() => {\n if (this.gleapFrameContainer) {\n this.runWidgetShouldOpenCallback();\n } else {\n GleapFrameManager.getInstance().injectFrame();\n }\n this.updateUI();\n }, 0);\n }\n\n updateWidgetStatus() {\n this.sendMessage({\n name: \"widget-status-update\",\n data: {\n isWidgetOpen: this.widgetOpened,\n },\n });\n }\n\n hideMarkerManager() {\n if (this.markerManager) {\n this.markerManager.clear();\n this.markerManager = null;\n }\n }\n\n hideWidget(resetRoutes = false) {\n // Prevent for survey web.\n if (this.appMode === \"survey_web\") {\n return;\n }\n\n this.hideMarkerManager();\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.add(\"gleap-frame-container--hidden\");\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--animate\"\n );\n }\n if (resetRoutes) {\n this.sendMessage({\n name: \"reset-routes\",\n data: {},\n });\n }\n this.widgetOpened = false;\n this.updateWidgetStatus();\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapEventManager.notifyEvent(\"close\");\n GleapNotificationManager.getInstance().reloadNotificationsFromCache();\n\n this.unregisterEscListener();\n\n if (typeof window !== \"undefined\" && typeof window.focus !== \"undefined\") {\n window.focus();\n }\n }\n\n sendMessage(data, queue = false) {\n try {\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n if (this.comReady && this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(JSON.stringify(data), \"*\");\n } else {\n if (queue) {\n this.queue.push(data);\n }\n }\n } catch (e) {}\n }\n\n sendSessionUpdate() {\n this.sendMessage({\n name: \"session-update\",\n data: {\n sessionData: GleapSession.getInstance().getSession(),\n apiUrl: GleapSession.getInstance().apiUrl,\n sdkKey: GleapSession.getInstance().sdkKey,\n },\n });\n }\n\n sendConfigUpdate() {\n if (!this.comReady) {\n return;\n }\n\n this.sendMessage({\n name: \"config-update\",\n data: {\n config: GleapConfigManager.getInstance().getFlowConfig(),\n aiTools: GleapConfigManager.getInstance().getAiTools(),\n overrideLanguage:\n GleapTranslationManager.getInstance().getOverrideLanguage(),\n },\n });\n\n this.updateFrameStyle();\n }\n\n showDrawingScreen(type) {\n this.hideWidget();\n\n // Show screen drawing.\n this.markerManager = new GleapMarkerManager(type);\n this.markerManager.show((success) => {\n if (!success) {\n this.hideMarkerManager();\n }\n this.showWidget();\n });\n }\n\n workThroughQueue() {\n const workQueue = [...this.queue];\n this.queue = [];\n for (let i = 0; i < workQueue.length; i++) {\n this.sendMessage(workQueue[i], true);\n }\n }\n\n startCommunication() {\n // Listen for messages.\n this.addMessageListener((data) => {\n if (data.name === \"ping\") {\n this.comReady = true;\n this.sendConfigUpdate();\n this.sendSessionUpdate();\n this.workThroughQueue();\n setTimeout(() => {\n this.runWidgetShouldOpenCallback();\n }, 300);\n }\n\n if (data.name === \"play-ping\") {\n GleapAudioManager.ping();\n }\n\n if (data.name === \"open-image\") {\n this.showImage(data.data.url);\n }\n\n if (data.name === \"page-changed\") {\n if (\n data.data &&\n (data.data.name === \"newsdetails\" || data.data.name === \"appextended\")\n ) {\n this.setAppMode(\"extended\");\n } else {\n if (this.appMode === \"extended\") {\n this.setAppMode(\"widget\");\n }\n }\n }\n\n if (data.name === \"collect-ticket-data\") {\n var ticketData = {\n customData: GleapCustomDataManager.getInstance().getCustomData(),\n metaData: GleapMetaDataManager.getInstance().getMetaData(),\n consoleLog: GleapConsoleLogManager.getInstance().getLogs(),\n networkLogs: GleapNetworkIntercepter.getInstance().getRequests(),\n customEventLog: GleapStreamedEvent.getInstance().getEventArray(),\n formData: GleapCustomDataManager.getInstance().getTicketAttributes(),\n };\n\n // Add tags\n const tags = GleapTagManager.getInstance().getTags();\n if (tags && tags.length > 0) {\n ticketData.tags = tags;\n }\n\n this.sendMessage({\n name: \"collect-ticket-data\",\n data: ticketData,\n });\n }\n\n if (data.name === \"height-update\") {\n this.frameHeight = data.data;\n\n const innerContainer = document.querySelector(\n \".gleap-frame-container-inner\"\n );\n if (\n (this.appMode === \"survey\" ||\n this.appMode === \"survey_full\" ||\n this.appMode === \"survey_web\") &&\n innerContainer\n ) {\n innerContainer.style.maxHeight = `${this.frameHeight}px`;\n }\n }\n\n if (data.name === \"notify-event\") {\n GleapEventManager.notifyEvent(data.data.type, data.data.data);\n }\n\n if (data.name === \"cleanup-drawings\") {\n this.hideMarkerManager();\n }\n\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n this.urlHandler(url, newTab);\n }\n\n if (data.name === \"run-custom-action\") {\n GleapCustomActionManager.triggerCustomAction(data.data, {\n shareToken: data.shareToken,\n });\n }\n\n if (data.name === \"close-widget\") {\n this.hideWidget();\n }\n\n if (data.name === \"tool-execution\") {\n GleapEventManager.notifyEvent(\"tool-execution\", data.data);\n }\n\n if (data.name === \"send-feedback\") {\n const formData = data.data.formData;\n const action = data.data.action;\n const outboundId = data.data.outboundId;\n const spamToken = data.data.spamToken;\n\n const feedback = new GleapFeedback(\n action.feedbackType,\n \"MEDIUM\",\n formData,\n false,\n action.excludeData,\n outboundId,\n spamToken\n );\n feedback\n .sendFeedback()\n .then((feedbackData) => {\n this.sendMessage({\n name: \"feedback-sent\",\n data: feedbackData,\n });\n GleapEventManager.notifyEvent(\"feedback-sent\", formData);\n\n if (outboundId && outboundId.length > 0) {\n GleapEventManager.notifyEvent(\"outbound-sent\", {\n outboundId: outboundId,\n outbound: action,\n formData: formData,\n });\n\n try {\n delete formData.reportedBy;\n } catch (e) {}\n Gleap.trackEvent(`outbound-${outboundId}-submitted`, formData);\n }\n })\n .catch((error) => {\n this.sendMessage({\n name: \"feedback-sending-failed\",\n data: \"Something went wrong, please try again.\",\n });\n GleapEventManager.notifyEvent(\"error-while-sending\");\n });\n }\n\n if (data.name === \"start-screen-drawing\") {\n this.showDrawingScreen(data.data);\n }\n });\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (\n event.origin !== this.frameUrl &&\n event.origin !== GleapBannerManager.getInstance().bannerUrl\n ) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n for (var i = 0; i < this.listeners.length; i++) {\n if (this.listeners[i]) {\n this.listeners[i](data);\n }\n }\n } catch (exp) {}\n });\n }\n\n addMessageListener(callback) {\n this.listeners.push(callback);\n }\n}\n","import { isMobile } from \"./GleapHelper\";\n\nexport default class GleapMetaDataManager {\n sessionStart = new Date();\n appBuildNumber = \"\";\n appVersionCode = \"\";\n environment = \"prod\";\n\n // GleapMetaDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapMetaDataManager();\n }\n return this.instance;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n this.getInstance().appVersionCode = appVersionCode;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n this.getInstance().appBuildNumber = appBuildNumber;\n }\n\n getSessionDuration() {\n const now = new Date();\n return Math.round((now.getTime() - this.sessionStart.getTime()) / 1000);\n }\n\n getMetaData() {\n var nAgt = navigator.userAgent;\n var browserName = navigator.appName;\n var fullVersion = \"\" + parseFloat(navigator.appVersion);\n var majorVersion = parseInt(navigator.appVersion, 10);\n var nameOffset, verOffset, ix;\n\n // In Opera, the true version is after \"Opera\" or after \"Version\"\n if ((verOffset = nAgt.indexOf(\"Opera\")) !== -1) {\n browserName = \"Opera\";\n fullVersion = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In MSIE, the true version is after \"MSIE\" in userAgent\n else if ((verOffset = nAgt.indexOf(\"MSIE\")) !== -1) {\n browserName = \"Microsoft Internet Explorer\";\n fullVersion = nAgt.substring(verOffset + 5);\n }\n // In Chrome, the true version is after \"Chrome\"\n else if ((verOffset = nAgt.indexOf(\"Chrome\")) !== -1) {\n browserName = \"Chrome\";\n fullVersion = nAgt.substring(verOffset + 7);\n }\n // In Safari, the true version is after \"Safari\" or after \"Version\"\n else if ((verOffset = nAgt.indexOf(\"Safari\")) !== -1) {\n browserName = \"Safari\";\n fullVersion = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In Firefox, the true version is after \"Firefox\"\n else if ((verOffset = nAgt.indexOf(\"Firefox\")) !== -1) {\n browserName = \"Firefox\";\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In most other browsers, \"name/version\" is at the end of userAgent\n else if (\n (nameOffset = nAgt.lastIndexOf(\" \") + 1) <\n (verOffset = nAgt.lastIndexOf(\"/\"))\n ) {\n browserName = nAgt.substring(nameOffset, verOffset);\n fullVersion = nAgt.substring(verOffset + 1);\n if (browserName.toLowerCase() === browserName.toUpperCase()) {\n browserName = navigator.appName;\n }\n }\n // trim the fullVersion string at semicolon/space if present\n if ((ix = fullVersion.indexOf(\";\")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n if ((ix = fullVersion.indexOf(\" \")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n\n majorVersion = parseInt(\"\" + fullVersion, 10);\n if (isNaN(majorVersion)) {\n fullVersion = \"\" + parseFloat(navigator.appVersion);\n majorVersion = parseInt(navigator.appVersion, 10);\n }\n\n var OSName = \"Unknown OS\";\n if (navigator.appVersion.indexOf(\"Win\") !== -1) OSName = \"Windows\";\n if (navigator.appVersion.indexOf(\"Mac\") !== -1) OSName = \"MacOS\";\n if (navigator.appVersion.indexOf(\"X11\") !== -1) OSName = \"UNIX\";\n if (navigator.appVersion.indexOf(\"Linux\") !== -1) OSName = \"Linux\";\n if (navigator.appVersion.indexOf(\"iPad\") !== -1) OSName = \"iPad\";\n if (navigator.appVersion.indexOf(\"iPhone\") !== -1) OSName = \"iPhone\";\n if (navigator.appVersion.indexOf(\"Android\") !== -1) OSName = \"Android\";\n\n return {\n browserName: browserName + \"(\" + fullVersion + \")\",\n userAgent: nAgt,\n browser: browserName,\n systemName: OSName,\n buildVersionNumber: this.appBuildNumber,\n releaseVersionNumber: this.appVersionCode,\n sessionDuration: this.getSessionDuration(),\n devicePixelRatio: window.devicePixelRatio,\n screenWidth: window.screen.width,\n screenHeight: window.screen.height,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n currentUrl: window.location.href,\n language: navigator.language || navigator.userLanguage,\n mobile: isMobile(),\n sdkVersion: SDK_VERSION,\n sdkType: \"javascript\",\n environment: this.environment,\n };\n }\n}\n","import { truncateString } from \"./GleapHelper\";\n\nexport default class GleapConsoleLogManager {\n logArray = [];\n disabled = false;\n originalConsoleLog;\n logMaxLength = 500;\n\n // GleapConsoleLogManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapConsoleLogManager();\n }\n return this.instance;\n }\n\n /**\n * Return the console logs\n * @returns {any[]} logs\n */\n getLogs() {\n return this.logArray;\n }\n\n /**\n * Revert console log overwrite.\n */\n stop() {\n this.disabled = true;\n if (this.originalConsoleLog) {\n window.console = this.originalConsoleLog;\n }\n }\n\n /**\n * Add message with log level to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n addLog(message, logLevel = \"INFO\") {\n if (!message || message.length <= 0) {\n return;\n }\n\n this.logArray.push({\n log: truncateString(message, 1000),\n date: new Date(),\n priority: logLevel,\n });\n\n if (this.logArray.length > this.logMaxLength) {\n this.logArray.shift();\n }\n }\n\n /**\n * Add entry to logs.\n * @param {*} args\n * @param {*} logLevel\n * @returns\n */\n addLogWithArgs(args, logLevel) {\n if (!args || args.length <= 0) {\n return;\n }\n\n var log = \"\";\n try {\n for (var i = 0; i < args.length; i++) {\n log += args[i] + \" \";\n }\n } catch (exp) {}\n\n this.addLog(log, logLevel);\n }\n\n /**\n * Start console log overwrite.\n */\n start() {\n if (this.disabled) {\n return;\n }\n\n const self = this;\n window.console = (function (origConsole) {\n if (!window.console || !origConsole) {\n origConsole = {};\n }\n\n self.originalConsoleLog = origConsole;\n\n return {\n ...origConsole,\n log: function () {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.log && origConsole.log.apply(origConsole, arguments);\n },\n warn: function () {\n self.addLogWithArgs(arguments, \"WARNING\");\n origConsole.warn && origConsole.warn.apply(origConsole, arguments);\n },\n error: function () {\n self.addLogWithArgs(arguments, \"ERROR\");\n origConsole.error && origConsole.error.apply(origConsole, arguments);\n },\n info: function (v) {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.info && origConsole.info.apply(origConsole, arguments);\n },\n };\n })(window.console);\n }\n}\n","import { GleapConsoleLogManager, GleapFrameManager, handleGleapLink } from \"./Gleap\";\nimport { getDOMElementDescription } from \"./GleapHelper\";\n\nexport default class GleapClickListener {\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapClickListener();\n }\n return this.instance;\n }\n\n start() {\n document.addEventListener(\"click\", (e) => {\n if (!e.target) {\n return;\n }\n\n if (e.target.tagName === 'A' && e.target.protocol === 'gleap:') {\n e.preventDefault();\n\n const href = e.target.href;\n handleGleapLink(href);\n }\n\n if (!GleapFrameManager.getInstance().isOpened()) {\n GleapConsoleLogManager.getInstance().addLog(\n getDOMElementDescription(e.target),\n \"CLICK\"\n );\n }\n });\n }\n}\n","import { gleapDataParser } from \"./GleapHelper\";\n\nexport default class GleapCustomDataManager {\n customData = {};\n ticketAttributes = {};\n\n // GleapCustomDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomDataManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the custom data object\n * @returns {*}\n */\n getCustomData() {\n return this.customData;\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n attachCustomData(data) {\n this.customData = Object.assign(\n this.customData,\n gleapDataParser(data)\n );\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n setCustomData(key, value) {\n this.customData[key] = value;\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n removeCustomData(key) {\n delete this.customData[key];\n }\n\n /**\n * Clear the custom data\n */\n clearCustomData() {\n this.customData = {};\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n setTicketAttribute(key, value) {\n this.ticketAttributes[key] = value;\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n unsetTicketAttribute(key) {\n delete this.ticketAttributes[key];\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n clearTicketAttributes() {\n this.ticketAttributes = {};\n }\n\n getTicketAttributes() {\n return this.ticketAttributes;\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapEventManager {\n eventListeners = {};\n\n // GleapEventManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapEventManager();\n }\n return this.instance;\n }\n\n /**\n * Notify all registrants for event.\n */\n static notifyEvent(event, data = {}) {\n if (event === \"flow-started\") {\n\n const gleapInstance = Gleap.getInstance();\n gleapInstance.setGlobalDataItem(\"webReplay\", null);\n gleapInstance.setGlobalDataItem(\"screenRecordingData\", null);\n gleapInstance.takeCurrentReplay();\n }\n\n const eventListeners = this.getInstance().eventListeners[event];\n if (eventListeners) {\n for (var i = 0; i < eventListeners.length; i++) {\n const eventListener = eventListeners[i];\n if (eventListener) {\n eventListener(data);\n }\n }\n }\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n const instance = this.getInstance();\n if (!instance.eventListeners[eventName]) {\n instance.eventListeners[eventName] = [];\n }\n instance.eventListeners[eventName].push(callback);\n }\n}\n","export default class GleapCustomActionManager {\n customActionCallbacks = [];\n\n // GleapCustomActionManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomActionManager();\n }\n return this.instance;\n }\n\n /**\n * Register custom action\n */\n static registerCustomAction(customAction) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n instance.customActionCallbacks.push(customAction);\n }\n }\n\n /**\n * Triggers a custom action\n */\n static triggerCustomAction(name, data) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n for (var i = 0; i < instance.customActionCallbacks.length; i++) {\n var callback = instance.customActionCallbacks[i];\n if (callback) {\n callback({\n name,\n ...(data ? data : {}),\n });\n }\n }\n }\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$3 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$3 || {});\nconst testableAccessors$1 = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods$1 = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nconst isAngularZonePresent$1 = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key])\n return untaintedBasePrototype$1[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache$1[cacheKey])\n return untaintedAccessorCache$1[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache$1[cacheKey])\n return untaintedMethodCache$1[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nconst index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n \" -webkit-background-clip: text; background-clip: text;\"\n );\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n const { cssText } = rule2;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n if (rule2.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule2.layerName) {\n statement.push(`layer(${rule2.layerName})`);\n }\n if (rule2.supportsText) {\n statement.push(`supports(${rule2.supportsText})`);\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n const rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n let sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(\n rules2,\n (rule2) => stringifyRule(rule2, sheetHref)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nclass Mirror {\n constructor() {\n __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn\n}) {\n let text = value || \"\";\n const actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n const chunkSize = 50;\n for (let x2 = 0; x2 < canvas.width; x2 += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x2,\n y,\n Math.min(chunkSize, canvas.width - x2),\n Math.min(chunkSize, canvas.height - y)\n ).data.buffer\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n let origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(\n URL_IN_CSS_REF,\n (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === \"/\") {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split(\"/\");\n const parts = filePath.split(\"/\");\n stack.pop();\n for (const part of parts) {\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n }\n );\n}\nfunction normalizeCssString(cssText) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n}\nfunction splitCssText(cssText, style) {\n const childNodes2 = Array.from(style.childNodes);\n const splits = [];\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n const cssTextNorm = normalizeCssString(cssText);\n for (let i2 = 1; i2 < childNodes2.length; i2++) {\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n const textContentNorm = normalizeCssString(childNodes2[i2].textContent);\n for (let j = 3; j < textContentNorm.length; j++) {\n const bit = textContentNorm.substring(0, j);\n if (cssTextNorm.split(bit).length === 2) {\n const splitNorm = cssTextNorm.indexOf(bit);\n for (let k = splitNorm; k < cssText.length; k++) {\n if (normalizeCssString(cssText.substring(0, k)).length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n break;\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (element instanceof HTMLFormElement) {\n return \"form\";\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars2;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n let descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {\n }\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for (let eIndex = node2.classList.length; eIndex--; ) {\n const className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {\n }\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n const rootId = getRootId(doc, mirror2);\n switch (n2.nodeType) {\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n const docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n const parent = index$1.parentNode(n2);\n const parentTagName = parent && parent.tagName;\n let textContent2 = \"\";\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n const {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId\n } = options;\n const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n const tagName = getValidTagName$1(n2);\n let attributes = {};\n const len = n2.attributes.length;\n for (let i2 = 0; i2 < len; i2++) {\n const attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value\n );\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s2) => {\n return s2.href === n2.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n let cssText = stringifyStylesheet(\n n2.sheet\n );\n if (cssText) {\n if (n2.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n2);\n }\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n const value = n2.value;\n const checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName,\n value,\n maskInputOptions,\n maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n2)) {\n const canvasDataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n const image = n2;\n const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"<unknown-src>\";\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err}`\n );\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n2.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {\n }\n return {\n type: NodeType$3.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock,\n rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/\n ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5e3,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5e3,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n if (!needsMask) {\n const checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(\n n2,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n let id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(index$1.childNodes(n2))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n const parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n2,\n () => {\n const iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(\n n2,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(\n n2,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(\n n2,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n const {\n mirror: mirror2 = new Mirror(),\n blockClass = \"rr-block\",\n blockSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false\n } = options || {};\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n ) : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar x$1 = String;\nvar create$1 = function() {\n return { isColorSupported: false, reset: x$1, bold: x$1, dim: x$1, italic: x$1, underline: x$1, inverse: x$1, hidden: x$1, strikethrough: x$1, black: x$1, red: x$1, green: x$1, yellow: x$1, blue: x$1, magenta: x$1, cyan: x$1, white: x$1, gray: x$1, bgBlack: x$1, bgRed: x$1, bgGreen: x$1, bgYellow: x$1, bgBlue: x$1, bgMagenta: x$1, bgCyan: x$1, bgWhite: x$1 };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nlet pico$1 = picocolors_browserExports$1;\nlet terminalHighlight$1$1 = require$$2$1;\nlet CssSyntaxError$3$1 = class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"<css input>\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico$1.isColorSupported;\n if (terminalHighlight$1$1) {\n if (color) css = terminalHighlight$1$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico$1.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nconst DEFAULT_RAW$1 = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize$1(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2$1 = class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW$1[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nlet Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n let str = new Stringifier$1$1(builder);\n str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nlet { isClean: isClean$2$1, my: my$2$1 } = symbols$1;\nlet CssSyntaxError$2$1 = cssSyntaxError$1;\nlet Stringifier2$1 = stringifier$1;\nlet stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode$1(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4$1 = class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode$1(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2$1(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2$1] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3$1) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nlet Node$3$1 = node$1;\nlet Declaration$4$1 = class Declaration extends Node$3$1 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nlet urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet$1 = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = { nanoid: nanoid$1$1, customAlphabet: customAlphabet$1 };\nlet { SourceMapConsumer: SourceMapConsumer$2$1, SourceMapGenerator: SourceMapGenerator$2$1 } = require$$2$1;\nlet { existsSync: existsSync$1, readFileSync: readFileSync$1 } = require$$2$1;\nlet { dirname: dirname$1$1, join: join$1 } = require$$2$1;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2$1 = class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64$1(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1$1(path);\n if (existsSync$1(path)) {\n this.mapFile = path;\n return readFileSync$1(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2$1) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2$1) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join$1(dirname$1$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nlet { SourceMapConsumer: SourceMapConsumer$1$1, SourceMapGenerator: SourceMapGenerator$1$1 } = require$$2$1;\nlet { fileURLToPath: fileURLToPath$1, pathToFileURL: pathToFileURL$1$1 } = require$$2$1;\nlet { isAbsolute: isAbsolute$1, resolve: resolve$1$1 } = require$$2$1;\nlet { nanoid: nanoid$2 } = nonSecure$1;\nlet terminalHighlight$2 = require$$2$1;\nlet CssSyntaxError$1$1 = cssSyntaxError$1;\nlet PreviousMap$1$1 = previousMap$1;\nlet fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nlet pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nlet Input$4$1 = class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1$1(opts.from);\n }\n }\n if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n let map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"<input css \" + nanoid$2(6) + \">\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1$1) {\n result2.input.url = pathToFileURL$1$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache$1] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache$1];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath$1) {\n result2.file = fileURLToPath$1(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n terminalHighlight$2.registerInput(Input$4$1);\n}\nlet { SourceMapConsumer: SourceMapConsumer$3, SourceMapGenerator: SourceMapGenerator$3 } = require$$2$1;\nlet { dirname: dirname$2, relative: relative$1, resolve: resolve$2, sep: sep$1 } = require$$2$1;\nlet { pathToFileURL: pathToFileURL$2 } = require$$2$1;\nlet Input$3$1 = input$1;\nlet sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nlet pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nlet MapGenerator$2$1 = class MapGenerator {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname$2(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer$3(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"<no source>\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n }\n let path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3$1(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n let fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator$1 = MapGenerator$2$1;\nlet Node$2$1 = node$1;\nlet Comment$4$1 = class Comment extends Node$2$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nlet { isClean: isClean$1$1, my: my$1$1 } = symbols$1;\nlet Declaration$3$1 = declaration$1;\nlet Comment$3$1 = comment$1;\nlet Node$1$1 = node$1;\nlet parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp$1(node2) {\n node2[isClean$1$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp$1(i2);\n }\n }\n}\nlet Container$7$1 = class Container extends Node$1$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource$1(parse$4$1(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3$1(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4$1(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4$1(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3$1(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1$1]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1$1]) markDirtyUp$1(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7$1.registerParse = (dependant) => {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = (dependant) => {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = (dependant) => {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = (dependant) => {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4$1.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3$1.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6$1.prototype);\n }\n node2[my$1$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7$1.rebuild(child);\n });\n }\n};\nlet Container$6$1 = container$1;\nlet LazyResult$4$1, Processor$3$1;\nlet Document$3$1 = class Document2 extends Container$6$1 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3$1.registerLazyResult = (dependant) => {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = (dependant) => {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nlet printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n if (printed$1[message]) return;\n printed$1[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2$1 = class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nlet Warning$1$1 = warning$1;\nlet Result$3$1 = class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nconst SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nconst BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nconst SLASH$1 = \"/\".charCodeAt(0);\nconst NEWLINE$1 = \"\\n\".charCodeAt(0);\nconst SPACE$1 = \" \".charCodeAt(0);\nconst FEED$1 = \"\\f\".charCodeAt(0);\nconst TAB$1 = \"\t\".charCodeAt(0);\nconst CR$1 = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nconst OPEN_CURLY$1 = \"{\".charCodeAt(0);\nconst CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nconst SEMICOLON$1 = \";\".charCodeAt(0);\nconst ASTERISK$1 = \"*\".charCodeAt(0);\nconst COLON$1 = \":\".charCodeAt(0);\nconst AT$1 = \"@\".charCodeAt(0);\nconst RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE$1:\n case SPACE$1:\n case TAB$1:\n case CR$1:\n case FEED$1: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE$1:\n case CLOSE_SQUARE$1:\n case OPEN_CURLY$1:\n case CLOSE_CURLY$1:\n case COLON$1:\n case SEMICOLON$1:\n case CLOSE_PARENTHESES$1: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES$1: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1: {\n quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT$1: {\n RE_AT_END$1.lastIndex = pos + 1;\n RE_AT_END$1.test(css);\n if (RE_AT_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END$1.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH$1: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH$1) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n next += 1;\n if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE$1.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE$1) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END$1.lastIndex = pos + 1;\n RE_WORD_END$1.test(css);\n if (RE_WORD_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END$1.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5$1 = container$1;\nlet AtRule$3$1 = class AtRule extends Container$5$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nlet Container$4$1 = container$1;\nlet LazyResult$3$1, Processor$2$1;\nlet Root$5$1 = class Root extends Container$4$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5$1.registerLazyResult = (dependant) => {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = (dependant) => {\n Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nlet list$2$1 = {\n comma(string) {\n return list$2$1.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2$1.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nlet Container$3$1 = container$1;\nlet list$1$1 = list_1$1;\nlet Rule$3$1 = class Rule extends Container$3$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nlet Declaration$2$1 = declaration$1;\nlet tokenizer2$1 = tokenize$1;\nlet Comment$2$1 = comment$1;\nlet AtRule$2$1 = atRule$1;\nlet Root$4$1 = root$1;\nlet Rule$2$1 = rule$1;\nconst SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1$1 = class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4$1();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2$1();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2$1();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition$1(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2$1();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser$1 = Parser$1$1;\nlet Container$2$1 = container$1;\nlet Parser2$1 = parser$1;\nlet Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n let input2 = new Input$2$1(css, opts);\n let parser2 = new Parser2$1(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nlet { isClean: isClean$3, my: my$3 } = symbols$1;\nlet MapGenerator$1$1 = mapGenerator$1;\nlet stringify$2$1 = stringify_1$1;\nlet Container$1$1 = container$1;\nlet Document$2$1 = document$1$1;\nlet warnOnce$1$1 = warnOnce$2$1;\nlet Result$2$1 = result$1;\nlet parse$2$1 = parse_1$1;\nlet Root$3$1 = root$1;\nconst TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS$1 = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME$1[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN$1,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN$1, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack$1(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN$1, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN$1, \"RootExit\"];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks$1(node2) {\n node2[isClean$3] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks$1(i2));\n return node2;\n}\nlet postcss$2$1 = {};\nlet LazyResult$2$1 = class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (css instanceof LazyResult || css instanceof Result$2$1) {\n root2 = cleanMarks$1(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2$1;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my$3]) {\n Container$1$1.rebuild(root2);\n }\n }\n this.result = new Result$2$1(processor2, root2, opts);\n this.helpers = { ...postcss$2$1, postcss: postcss$2$1, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS$1[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n let stack = [toStack$1(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise$1(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean$3]) {\n child[isClean$3] = true;\n stack.push(toStack$1(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN$1) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean$3] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean$3] = true;\n let events = getEvents$1(node2);\n for (let event of events) {\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean$3]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2$1.registerPostcss = (dependant) => {\n postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nlet MapGenerator2$1 = mapGenerator$1;\nlet stringify$1$1 = stringify_1$1;\nlet warnOnce2$1 = warnOnce$2$1;\nlet parse$1$1 = parse_1$1;\nconst Result$1$1 = result$1;\nlet NoWorkResult$1$1 = class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nlet NoWorkResult2$1 = noWorkResult$1;\nlet LazyResult$1$1 = lazyResult$1;\nlet Document$1$1 = document$1$1;\nlet Root$2$1 = root$1;\nlet Processor$1$1 = class Processor {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2$1(this, css, opts);\n } else {\n return new LazyResult$1$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nlet Declaration$1$1 = declaration$1;\nlet PreviousMap2$1 = previousMap$1;\nlet Comment$1$1 = comment$1;\nlet AtRule$1$1 = atRule$1;\nlet Input$1$1 = input$1;\nlet Root$1$1 = root$1;\nlet Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap2$1.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nlet CssSyntaxError2$1 = cssSyntaxError$1;\nlet Declaration2$1 = declaration$1;\nlet LazyResult2$1 = lazyResult$1;\nlet Container2$1 = container$1;\nlet Processor2$1 = processor$1;\nlet stringify$5 = stringify_1$1;\nlet fromJSON$2 = fromJSON_1$1;\nlet Document22 = document$1$1;\nlet Warning2$1 = warning$1;\nlet Comment2$1 = comment$1;\nlet AtRule2$1 = atRule$1;\nlet Result2$1 = result$1;\nlet Input2$1 = input$1;\nlet parse$5 = parse_1$1;\nlet list$3 = list_1$1;\nlet Rule2$1 = rule$1;\nlet Root2$1 = root$1;\nlet Node2$1 = node$1;\nfunction postcss$3(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = (defaults) => new Comment2$1(defaults);\npostcss$3.atRule = (defaults) => new AtRule2$1(defaults);\npostcss$3.decl = (defaults) => new Declaration2$1(defaults);\npostcss$3.rule = (defaults) => new Rule2$1(defaults);\npostcss$3.root = (defaults) => new Root2$1(defaults);\npostcss$3.document = (defaults) => new Document22(defaults);\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nconst postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError2 extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError2);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"<css input>\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier2 {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n let str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier22 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4 = class Node3 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration2 extends Node$3 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2 = class PreviousMap2 {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input2 {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n let map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"<input css \" + nanoid(6) + \">\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator2 {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"<no source>\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment2 extends Node$2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp(i2);\n }\n }\n}\nlet Container$7 = class Container2 extends Node$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1]) Container2.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1]) markDirtyUp(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7.registerParse = (dependant) => {\n parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7.rebuild(child);\n });\n }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document23 extends Container$6 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3.registerLazyResult = (dependant) => {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2 = class Warning2 {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result2 {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule2 extends Container$5 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root2 extends Container$4 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5.registerLazyResult = (dependant) => {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n comma(string) {\n return list$2.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule2 extends Container$3 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer22 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1 = class Parser2 {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser22 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n let input2 = new Input$2(css, opts);\n let parser2 = new Parser22(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult2 {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult2 || css instanceof Result$2) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator22 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce22 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult2 {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult22 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor2 {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult22(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap22 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap22.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError22 = cssSyntaxError;\nlet Declaration22 = declaration;\nlet LazyResult22 = lazyResult;\nlet Container22 = container;\nlet Processor22 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document222 = document$1;\nlet Warning22 = warning;\nlet Comment22 = comment;\nlet AtRule22 = atRule;\nlet Result22 = result;\nlet Input22 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule22 = rule;\nlet Root22 = root;\nlet Node22 = node;\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment22(defaults);\npostcss.atRule = (defaults) => new AtRule22(defaults);\npostcss.decl = (defaults) => new Declaration22(defaults);\npostcss.rule = (defaults) => new Rule22(defaults);\npostcss.root = (defaults) => new Root22(defaults);\npostcss.document = (defaults) => new Document222(defaults);\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n get childNodes() {\n const childNodes2 = [];\n let childIterator = this.firstChild;\n while (childIterator) {\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n contains(node2) {\n if (!(node2 instanceof BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while (node2.parentNode) {\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n appendChild(_newChild) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(_newChild, _refChild) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n removeChild(_node) {\n throw new Error(\n `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n toString() {\n return \"RRNode\";\n }\n}\nconst testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst isAngularZonePresent = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor\n};\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function(...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(\n target,\n key,\n isRevoked ? d : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n }\n );\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n const doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n const el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {\n }\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n const parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(\n n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n );\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nclass StyleSheetMirror {\n constructor() {\n __publicField(this, \"id\", 1);\n __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n getId(stylesheet) {\n return this.styleIDMap.get(stylesheet) ?? -1;\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */\n add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n let newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n2) {\n var _a2;\n let shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n let rootShadowHost = n2;\n let shadowHost;\n while (shadowHost = getShadowHost(rootShadowHost))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n constructor() {\n __publicField(this, \"length\", 0);\n __publicField(this, \"head\", null);\n __publicField(this, \"tail\", null);\n }\n get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n let current = this.head;\n for (let index2 = 0; index2 < position; index2++) {\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n }\n addNode(n2) {\n const node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n const current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n const current = n2.nextSibling.__ln.previous;\n node2.previous = current;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current) {\n current.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n }\n removeNode(n2) {\n const current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"texts\", []);\n __publicField(this, \"attributes\", []);\n __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"removes\", []);\n __publicField(this, \"mapRemoves\", []);\n __publicField(this, \"movedMap\", {});\n __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"blockClass\");\n __publicField(this, \"blockSelector\");\n __publicField(this, \"maskTextClass\");\n __publicField(this, \"maskTextSelector\");\n __publicField(this, \"inlineStylesheet\");\n __publicField(this, \"maskInputOptions\");\n __publicField(this, \"maskTextFn\");\n __publicField(this, \"maskInputFn\");\n __publicField(this, \"keepIframeSrcFn\");\n __publicField(this, \"recordCanvas\");\n __publicField(this, \"inlineImages\");\n __publicField(this, \"slimDOMOptions\");\n __publicField(this, \"dataURLOptions\");\n __publicField(this, \"doc\");\n __publicField(this, \"mirror\");\n __publicField(this, \"iframeManager\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"shadowDomManager\");\n __publicField(this, \"canvasManager\");\n __publicField(this, \"processedNodeManager\");\n __publicField(this, \"unattachedDoc\");\n __publicField(this, \"processMutations\", (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n });\n __publicField(this, \"emit\", () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = /* @__PURE__ */ new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n2) => {\n let ns = n2;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n2) => {\n const parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n let cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n const parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n const nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n const sn = serializeNodeWithId(n2, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(\n currentN\n );\n }\n if (hasShadowRoot(n2)) {\n this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n2 of this.movedSet) {\n if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for (const n2 of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n pushAdd(n2);\n } else if (isAncestorInSet(this.movedSet, n2)) {\n pushAdd(n2);\n } else {\n this.droppedSet.add(n2);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node2 = null;\n if (candidate) {\n const parentId = this.mirror.getId(index.parentNode(candidate.value));\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(index.parentNode(_node.value));\n const nextId = getNextId(_node.value);\n if (nextId === -1) continue;\n else if (parentId !== -1) {\n node2 = _node;\n break;\n } else {\n const unhandledNode = _node.value;\n const parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = index.host(parent);\n const parentId2 = this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n const payload = {\n texts: this.texts.map((text) => {\n const n2 = text.node;\n const parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(parent);\n }\n return {\n id: this.mirror.getId(n2),\n value: text.value\n };\n }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes.map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === \"string\") {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes\n };\n }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.attributeMap = /* @__PURE__ */ new WeakMap();\n this.removes = [];\n this.addedSet = /* @__PURE__ */ new Set();\n this.movedSet = /* @__PURE__ */ new Set();\n this.droppedSet = /* @__PURE__ */ new Set();\n this.removesSubTreeCache = /* @__PURE__ */ new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n });\n __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n let item = this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(textarea, item);\n }\n item.attributes.value = Array.from(\n index.childNodes(textarea),\n (cn) => index.textContent(cn) || \"\"\n ).join(\"\");\n });\n __publicField(this, \"processMutation\", (m) => {\n if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n return;\n }\n switch (m.type) {\n case \"characterData\": {\n const value = index.textContent(m.target);\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(\n m.target,\n this.maskTextClass,\n this.maskTextSelector,\n true\n // checkAncestors\n ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\": {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n const type = getInputType(target);\n value = maskInputValue({\n element: target,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type,\n value,\n maskInputFn: this.maskInputFn\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n return;\n }\n let item = this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(\n this.doc,\n toLowerCase(target.tagName),\n toLowerCase(attributeName),\n value\n );\n if (attributeName === \"style\") {\n if (!this.unattachedDoc) {\n try {\n this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n } else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === \"\") {\n item.styleDiff[pname] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\": {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n return;\n if (m.target.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n m.removedNodes.forEach((n2) => {\n const nodeId = this.mirror.getId(n2);\n const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n2)) {\n deepDelete(this.addedSet, n2);\n this.droppedSet.add(n2);\n } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n2);\n } else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, this.removesSubTreeCache);\n }\n this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n __publicField(this, \"genAdds\", (n2, target) => {\n if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n if (this.mirror.hasNode(n2)) {\n if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n2);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n this.addedSet.add(n2);\n this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n init(options) {\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n const queue = [n2];\n while (queue.length) {\n const next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach((n22) => queue.push(n22));\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n const node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n const parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = (...rest) => {\n try {\n return cb(...rest);\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n const observer = new (mutationObserverCtor())(\n callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n );\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver({\n mousemoveCb,\n sampling,\n doc,\n mirror: mirror2\n}) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle(\n callbackWrapper(\n (source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(\n positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }),\n source\n );\n positions = [];\n timeBaseline = null;\n }\n ),\n callbackThreshold\n );\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(\n typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n );\n }),\n threshold,\n {\n trailing: false\n }\n )\n );\n const handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({\n mouseInteractionCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch (event.pointerType) {\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n const id = mirror2.getId(target);\n const { clientX, clientY } = e2;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...pointerType !== null && { pointerType }\n });\n };\n };\n Object.keys(MouseInteractions).filter(\n (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n ).forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\n \"mouse\",\n \"pointer\"\n );\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({\n scrollCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }),\n sampling.scroll || 100\n )\n );\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(\n throttle(\n callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }),\n 200\n )\n );\n return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n inputCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n ignoreClass,\n ignoreSelector,\n maskInputOptions,\n maskInputFn,\n sampling,\n userTriggeredOnInput\n}) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n let text = target.value;\n let isChecked = false;\n const type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions,\n tagName,\n type,\n value: text,\n maskInputFn\n });\n }\n cbWithDedup(\n target,\n userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n );\n const name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n if (el !== target) {\n const text2 = el.value;\n cbWithDedup(\n el,\n userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n );\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n const id = mirror2.getId(target);\n callbackWrapper(inputCb)({\n ...v2,\n id\n });\n }\n }\n const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n const handlers = events.map(\n (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n );\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n );\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, \"value\"],\n [currentWindow.HTMLInputElement.prototype, \"checked\"],\n [currentWindow.HTMLSelectElement.prototype, \"value\"],\n [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n // Some UI library use selectedIndex to set select value\n [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(\n ...hookProperties.map(\n (p) => hookSetter(\n p[0],\n p[1],\n {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n // userTriggered to false as this could well be programmatic\n });\n }\n },\n false,\n currentWindow\n )\n )\n );\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n const positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n const rules2 = Array.from(\n childRule.parentRule.cssRules\n );\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n let id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule: rule2, index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n const rule2 = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n };\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n };\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(\n unmodifiedFunctions[typeKey].insertRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule: rule2,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index2 || 0\n // defaults to 0\n ]\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n type.prototype.deleteRule = new Proxy(\n unmodifiedFunctions[typeKey].deleteRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index2] }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({\n mirror: mirror2,\n stylesheetManager\n}, host2) {\n var _a2, _b, _c;\n let hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n patchTarget == null ? void 0 : patchTarget.prototype,\n \"adoptedStyleSheets\"\n ) : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set(sheets) {\n var _a3;\n const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {\n }\n }\n return result2;\n }\n });\n return callbackWrapper(() => {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver({\n styleDeclarationCb,\n mirror: mirror2,\n ignoreCSSAttributes,\n stylesheetManager\n}, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({\n mediaInteractionCb,\n blockClass,\n blockSelector,\n mirror: mirror2,\n sampling,\n doc\n}) {\n const handler = callbackWrapper(\n (type) => throttle(\n callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate, loop } = target;\n mediaInteractionCb({\n type,\n id: mirror2.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n loop\n });\n }),\n sampling.media || 500\n )\n );\n const handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = /* @__PURE__ */ new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== \"string\",\n descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n const restoreHandler = patch(\n doc.fonts,\n \"add\",\n function(original) {\n return function(fontFace) {\n setTimeout(\n callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }),\n 0\n );\n return original.apply(this, [fontFace]);\n };\n }\n );\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i2 = 0; i2 < count; i2++) {\n const range = selection.getRangeAt(i2);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset,\n end: mirror2.getId(endContainer),\n endOffset\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n doc,\n customElementCb\n}) {\n const win = doc.defaultView;\n if (!win || !win.customElements) return () => {\n };\n const restoreHandler = patch(\n win.customElements,\n \"define\",\n function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name\n }\n });\n } catch (e2) {\n console.warn(`Custom element callback failed for ${name}`);\n }\n return original.apply(this, [name, constructor, options]);\n };\n }\n );\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n const {\n mutationCb,\n mousemoveCb,\n mouseInteractionCb,\n scrollCb,\n viewportResizeCb,\n inputCb,\n mediaInteractionCb,\n styleSheetRuleCb,\n styleDeclarationCb,\n canvasMutationCb,\n fontCb,\n selectionCb,\n customElementCb\n } = o2;\n o2.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o2.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o2.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o2.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o2.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o2.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o2.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o2.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o2.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o2.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o2.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o2.selectionCb = (...p) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o2.customElementCb = (...c2) => {\n if (hooks.customElement) {\n hooks.customElement(...c2);\n }\n customElementCb(...c2);\n };\n}\nfunction initObservers(o2, hooks = {}) {\n const currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n mergeHooks(o2, hooks);\n let mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n const mousemoveHandler = initMoveObserver(o2);\n const mouseInteractionHandler = initMouseInteractionObserver(o2);\n const scrollHandler = initScrollObserver(o2);\n const viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n const inputHandler = initInputObserver(o2);\n const mediaInteractionHandler = initMediaInteractionObserver(o2);\n let styleSheetObserver = () => {\n };\n let adoptedStyleSheetObserver = () => {\n };\n let styleDeclarationObserver = () => {\n };\n let fontObserver = () => {\n };\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n const selectionObserver = initSelectionObserver(o2);\n const customElementObserver = initCustomElementObserver(o2);\n const pluginHandlers = [];\n for (const plugin3 of o2.plugins) {\n pluginHandlers.push(\n plugin3.observer(plugin3.callback, currentWindow, plugin3.options)\n );\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(\n typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n );\n}\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(\n (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n );\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\nclass IframeManager {\n constructor(options) {\n __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField(this, \"crossOriginIframeStyleMirror\");\n __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"wrappedEmit\");\n __publicField(this, \"loadListener\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n this.stylesheetManager.styleMirror.generateId.bind(\n this.stylesheetManager.styleMirror\n )\n );\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes)\n (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n \"message\",\n this.handleMessage.bind(this)\n );\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(\n iframeEl.contentDocument.adoptedStyleSheets,\n this.mirror.getId(iframeEl.contentDocument)\n );\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n const transformedEvent = this.transformCrossOriginEvent(\n iframeEl,\n crossOriginMessageEvent.data.event\n );\n if (transformedEvent)\n this.wrappedEmit(\n transformedEvent,\n crossOriginMessageEvent.data.isCheckout\n );\n }\n transformCrossOriginEvent(iframeEl, e2) {\n var _a2;\n switch (e2.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n const rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e2;\n }\n case EventType.Custom: {\n this.replaceIds(\n e2.data.payload,\n iframeEl,\n [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n );\n return e2;\n }\n case EventType.IncrementalSnapshot: {\n switch (e2.data.source) {\n case IncrementalSource.Mutation: {\n e2.data.adds.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n this.replaceIdOnNode(n2.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n });\n e2.data.attributes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n e2.data.texts.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e2.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n return e2;\n }\n case IncrementalSource.Font: {\n return e2;\n }\n case IncrementalSource.Selection: {\n e2.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(\n iframeEl,\n obj[key]\n );\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node2, iframeEl) {\n this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node2, rootId) {\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"scrollCb\");\n __publicField(this, \"bypassOptions\");\n __publicField(this, \"mirror\");\n __publicField(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot2, doc) {\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n const observer = initMutationObserver(\n {\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n },\n shadowRoot2\n );\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(\n initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })\n );\n setTimeout(() => {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(\n shadowRoot2.adoptedStyleSheets,\n this.mirror.getId(index.host(shadowRoot2))\n );\n this.restoreHandlers.push(\n initAdoptedStyleSheetObserver(\n {\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager\n },\n shadowRoot2\n )\n );\n }, 0);\n }\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(\n iframeElement.contentWindow.Element,\n iframeElement.contentDocument\n );\n }\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(\n patch(\n element.prototype,\n \"attachShadow\",\n function(original) {\n return function(option) {\n const sRoot = original.call(this, option);\n const shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this))\n manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }\n )\n );\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n } catch (e2) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for (i2 = 0; i2 < len; i2 += 3) {\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n return;\n const name = value.constructor.name;\n const list2 = variableListFor$1(ctx, name);\n let index2 = list2.indexOf(value);\n if (index2 === -1) {\n index2 = list2.length;\n list2.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n } else if (value === null) {\n return value;\n } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)]\n };\n } else if (\n // SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n value instanceof ArrayBuffer\n ) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64\n };\n } else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof HTMLCanvasElement) {\n const name = \"HTMLImageElement\";\n const src = value.toDataURL();\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height]\n };\n } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n const name = value.constructor.name;\n const index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index2\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n (name) => typeof win[name] === \"function\"\n );\n return Boolean(\n supportedWebGLConstructorNames.find(\n (name) => value instanceof win[name]\n )\n );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(\n win.CanvasRenderingContext2D.prototype\n );\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n win.CanvasRenderingContext2D.prototype,\n prop,\n function(original) {\n return function(...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(\n win.CanvasRenderingContext2D.prototype,\n prop,\n {\n set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [v2],\n setter: true\n });\n }\n }\n );\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(\n win.HTMLCanvasElement.prototype,\n \"getContext\",\n function(original) {\n return function(contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n if (args[0] && typeof args[0] === \"object\") {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if (\n //prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)\n ) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n prototype,\n prop,\n function(original) {\n return function(...args) {\n const result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v2) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v2],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n handlers.push(\n ...patchGLPrototype(\n win.WebGL2RenderingContext.prototype,\n CanvasContext.WebGL2,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nconst encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nconst decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));\nconst blob = typeof window !== \"undefined\" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", () => {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\n \"data:text/javascript;base64,\" + encodedJs,\n {\n name: options == null ? void 0 : options.name\n }\n );\n } finally {\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nclass CanvasManager {\n constructor(options) {\n __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"resetObservers\");\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"processMutation\", (target, mutation) => {\n const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n });\n const {\n sampling = \"all\",\n win,\n blockClass,\n blockSelector,\n recordCanvas,\n dataURLOptions\n } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\")\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\")\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions\n });\n }\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n true\n );\n const snapshotInProgressMap = /* @__PURE__ */ new Map();\n const worker = new WorkerWrapper();\n worker.onmessage = (e2) => {\n const { id } = e2.data;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n const { base64, type, width, height } = e2.data;\n this.mutationCb({\n id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [0, 0, width, height]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [{ rr_type: \"ArrayBuffer\", base64 }],\n type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n const timeBetweenSnapshots = 1e3 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = () => {\n const matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas().forEach(async (canvas) => {\n var _a2;\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return;\n if (canvas.width === 0 || canvas.height === 0) return;\n snapshotInProgressMap.set(id, true);\n if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n const bitmap = await createImageBitmap(canvas);\n worker.postMessage(\n {\n id,\n bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n },\n [bitmap]\n );\n });\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n false\n );\n const canvas2DReset = initCanvas2DMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach(\n (_values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n }\n );\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n const values = valuesWithType.map((value) => {\n const { type: type2, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\nclass StylesheetManager {\n constructor(options) {\n __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"adoptedStyleSheetCb\");\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0) return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n rule: stringifyRule(r2, sheet.href),\n index: index2\n }))\n });\n } else styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n }\n // TODO: take snapshot on stylesheet reload by applying event listener\n trackStylesheetInLinkElement(_linkEl) {\n }\n}\nclass ProcessedNodeManager {\n constructor() {\n __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"active\", false);\n }\n inOtherBuffer(node2, thisBuffer) {\n const buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n }\n add(node2, buffer) {\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(() => {\n this.nodeMap = /* @__PURE__ */ new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n }\n destroy() {\n }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {\n const cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n const {\n emit,\n checkoutEveryNms,\n checkoutEveryNth,\n blockClass = \"rr-block\",\n blockSelector = null,\n ignoreClass = \"rr-ignore\",\n ignoreSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n maskAllInputs,\n maskInputOptions: _maskInputOptions,\n slimDOMOptions: _slimDOMOptions,\n maskInputFn,\n maskTextFn,\n hooks,\n packFn,\n sampling = {},\n dataURLOptions = {},\n mousemoveWait,\n recordDOM = true,\n recordCanvas = false,\n recordCrossOriginIframes = false,\n recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n userTriggeredOnInput = false,\n collectFonts = false,\n inlineImages = false,\n plugins,\n keepIframeSrcFn = () => false,\n ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n errorHandler: errorHandler2\n } = options;\n registerErrorHandler(errorHandler2);\n const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n };\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e2) => {\n for (const plugin3 of plugins || []) {\n if (plugin3.eventProcessor) {\n e2 = plugin3.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = (r2, isCheckout) => {\n var _a2;\n const e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n const message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m\n }\n });\n };\n const wrappedScrollEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p\n }\n });\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p\n }\n });\n const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a2\n }\n });\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n const iframeManager = new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit\n });\n for (const plugin3 of plugins || []) {\n if (plugin3.getMirror)\n plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n mirror,\n sampling: sampling.canvas,\n dataURLOptions\n });\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager\n },\n mirror\n });\n takeFullSnapshot$1 = (isCheckout = false) => {\n if (!recordDOM) {\n return;\n }\n wrappedEmit(\n {\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n },\n isCheckout\n );\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node2 = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n2) => {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n },\n isCheckout\n );\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(\n document.adoptedStyleSheets,\n mirror.getId(document)\n );\n };\n try {\n const handlers = [];\n const observe = (doc) => {\n var _a2;\n return callbackWrapper(initObservers)(\n {\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions\n }\n }),\n mouseInteractionCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d\n }\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d\n }\n }),\n inputCb: (v2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v2\n }\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p\n }\n }),\n styleSheetRuleCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r2\n }\n }),\n styleDeclarationCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r2\n }\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p\n }\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p\n }\n });\n },\n customElementCb: (c2) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c2\n }\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordDOM,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload\n }\n })\n }))) || []\n },\n hooks\n );\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(\n on(\"DOMContentLoaded\", () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n })\n );\n handlers.push(\n on(\n \"load\",\n () => {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n },\n window\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = (tag, payload) => {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag,\n payload\n }\n });\n};\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nexport {\n record\n};\n//# sourceMappingURL=record.js.map\n","import { isMobile } from \"./GleapHelper\";\nimport { record } from \"@rrweb/record\";\n\nexport default class GleapReplayRecorder {\n startDate = undefined;\n events = [];\n bufferSize = 0;\n stopFunction = undefined;\n customOptions = {};\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapReplayRecorder();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {}\n\n setOptions(options) {\n this.customOptions = options;\n }\n\n /**\n * Start replays\n * @returns\n */\n start() {\n this.stop();\n\n this.startDate = Date.now();\n var events = this.events;\n\n var options = {\n inlineStylesheet: true,\n blockClass: \"gl-block\",\n ignoreClass: \"gl-ignore\",\n maskTextClass: \"gl-mask\",\n dataURLOptions: {\n quality: 0.7,\n },\n recordCanvas: false,\n sampling: {\n scroll: 150,\n mouseInteraction: {\n MouseUp: false,\n MouseDown: false,\n Click: true,\n ContextMenu: true,\n DblClick: true,\n Focus: true,\n Blur: true,\n TouchStart: true,\n TouchEnd: false,\n },\n },\n collectFonts: false,\n recordCrossOriginIframes: false,\n };\n\n try {\n this.stopFunction = record({\n ...options,\n ...this.customOptions,\n emit(rrwebEvent) {\n const { event } = ensureMaxMessageSize(rrwebEvent);\n events.push(event);\n },\n });\n } catch (e) {\n console.error(e);\n }\n }\n\n /**\n * Stop replays\n * @returns\n */\n stop() {\n if (this.stopFunction) {\n this.stopFunction();\n }\n\n this.startDate = undefined;\n this.events = [];\n this.bufferSize = 0;\n }\n\n /**\n * Get the current replay data\n * @returns {Promise<void>}\n */\n getReplayData() {\n const replayResult = {\n startDate: this.startDate,\n events: this.events,\n baseUrl: window.location.origin,\n width: window.innerWidth,\n height: window.innerHeight,\n isMobile: isMobile(),\n type: \"rrweb\",\n };\n\n return replayResult;\n }\n}\n\nexport function ensureMaxMessageSize(data) {\n let stringifiedData = JSON.stringify(data);\n if (stringifiedData.length > 4000000) {\n const dataURIRegex = /data:([\\w\\/\\-\\.]+);(\\w+),([^)\"]*)/gim;\n const matches = stringifiedData.matchAll(dataURIRegex);\n for (const match of matches) {\n if (match[1].toLocaleLowerCase().slice(0, 6) === \"image/\") {\n stringifiedData = stringifiedData.replace(\n match[0],\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC\"\n );\n } else {\n stringifiedData = stringifiedData.replace(match[0], \"\");\n }\n }\n }\n return { event: JSON.parse(stringifiedData), size: stringifiedData.length };\n}\n","export class ScreenDrawer {\n rerender;\n svgElement = null;\n path = null;\n strPath;\n strokeWidth = 12;\n strokeWidthRect = 6;\n bufferSize = 4;\n buffer = [];\n startPoint = null;\n tool = \"rect\";\n color = \"#EB144C\";\n mouseDown = null;\n mouseMove = null;\n mouseUp = null;\n resizeListener = null;\n pathBuffer = [];\n\n constructor(rerender) {\n const self = this;\n\n this.rerender = rerender;\n\n this.svgElement = document.querySelector(\".bb-capture-svg\");\n this.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n\n // Window resize listener.\n this.resizeListener = function (e) {\n self.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n };\n window.addEventListener(\"resize\", this.resizeListener, true);\n\n this.mouseDown = function (e) {\n e.preventDefault();\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n\n self.fadeOutToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseDownPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseDownRect(e);\n }\n };\n\n this.mouseMove = function (e) {\n e.preventDefault();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseMovePen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseMoveRect(e);\n }\n };\n\n this.mouseUp = function (e) {\n e.preventDefault();\n self.fadeInToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseUpPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseUpRect(e);\n }\n };\n\n this.svgElement.addEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.addEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.addEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.addEventListener(\"touchstart\", this.mouseDown, false);\n this.svgElement.addEventListener(\"touchmove\", this.mouseMove, false);\n this.svgElement.addEventListener(\"touchend\", this.mouseUp, false);\n\n setTimeout(() => {\n this.rerender();\n }, 100);\n }\n\n clear() {\n if (this.svgElement) {\n while (this.svgElement.firstChild) {\n this.svgElement.firstChild.remove();\n }\n }\n }\n\n destroy() {\n this.svgElement.removeEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.removeEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.removeEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.removeEventListener(\"touchstart\", this.mouseDown);\n this.svgElement.removeEventListener(\"touchmove\", this.mouseMove);\n this.svgElement.removeEventListener(\"touchend\", this.mouseUp);\n window.removeEventListener(\"resize\", this.resizeListener);\n }\n\n mouseUpPen() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseUpRect() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseMovePen(e) {\n if (this.path) {\n this.appendToBuffer(this.getMousePosition(e));\n this.updateSvgPath();\n }\n }\n\n mouseMoveRect(e) {\n if (this.path) {\n var p = this.getMousePosition(e);\n var w = Math.abs(p.x - this.startPoint.x);\n var h = Math.abs(p.y - this.startPoint.y);\n var x = p.x;\n var y = p.y;\n if (p.x > this.startPoint.x) {\n x = this.startPoint.x;\n }\n if (p.y > this.startPoint.y) {\n y = this.startPoint.y;\n }\n\n this.path.setAttributeNS(null, \"x\", x);\n this.path.setAttributeNS(null, \"y\", y);\n this.path.setAttributeNS(null, \"width\", w);\n this.path.setAttributeNS(null, \"height\", h);\n }\n }\n\n mouseDownRect(e) {\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", this.color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", this.strokeWidthRect);\n\n this.startPoint = this.getMousePosition(e);\n this.appendPathToSvg(this.path);\n }\n\n mouseDownPen(e) {\n var color = this.color + \"AA\";\n var strokeWidth = this.strokeWidth;\n\n if (this.tool === \"blur\") {\n color = \"#000000\";\n strokeWidth = 40;\n }\n\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", strokeWidth);\n this.buffer = [];\n var pt = this.getMousePosition(e);\n this.appendToBuffer(pt);\n this.strPath = \"M\" + pt.x + \" \" + pt.y;\n this.path.setAttribute(\"d\", this.strPath);\n this.appendPathToSvg(this.path);\n }\n\n setTool(tool) {\n this.tool = tool;\n }\n\n setColor(color) {\n this.color = color;\n }\n\n getMousePosition(e) {\n if (e.touches && e.touches.length > 0) {\n return {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY,\n };\n }\n\n return {\n x: e.clientX,\n y: e.clientY,\n };\n }\n\n // Calculate the average point, starting at offset in the buffer\n getAveragePoint(offset) {\n var len = this.buffer.length;\n if (len % 2 === 1 || len >= this.bufferSize) {\n var totalX = 0;\n var totalY = 0;\n var pt, i;\n var count = 0;\n for (i = offset; i < len; i++) {\n count++;\n pt = this.buffer[i];\n totalX += pt.x;\n totalY += pt.y;\n }\n return {\n x: totalX / count,\n y: totalY / count,\n };\n }\n return null;\n }\n\n updateSvgPath() {\n var pt = this.getAveragePoint(0);\n\n if (pt) {\n // Get the smoothed part of the path that will not change\n this.strPath += \" L\" + pt.x + \" \" + pt.y;\n\n // Get the last part of the path (close to the current mouse position)\n // This part will change if the mouse moves again\n var tmpPath = \"\";\n for (var offset = 2; offset < this.buffer.length; offset += 2) {\n pt = this.getAveragePoint(offset);\n tmpPath += \" L\" + pt.x + \" \" + pt.y;\n }\n\n // Set the complete current path coordinates\n this.path.setAttribute(\"d\", this.strPath + tmpPath);\n }\n }\n\n appendToBuffer(pt) {\n this.buffer.push(pt);\n while (this.buffer.length > this.bufferSize) {\n this.buffer.shift();\n }\n }\n\n appendPathToSvg(path) {\n this.svgElement.appendChild(path);\n this.pathBuffer.push(path);\n this.rerender();\n }\n\n removeLastAddedPathFromSvg() {\n if (this.pathBuffer.length <= 0 || !this.svgElement) {\n return;\n }\n\n this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length - 1]);\n\n this.pathBuffer.pop();\n\n this.rerender();\n }\n\n fadeOutToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 0;\n fadeTarget.style.pointerEvents = \"none\";\n }\n }\n\n fadeInToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 1;\n fadeTarget.style.pointerEvents = \"auto\";\n }\n }\n}\n","export class GleapScrollStopper {\n keys = { 37: 1, 38: 1, 39: 1, 40: 1 };\n supportsPassive = false;\n wheelOpt = this.supportsPassive ? { passive: false } : false;\n wheelEvent =\n \"onwheel\" in document.createElement(\"div\") ? \"wheel\" : \"mousewheel\";\n scrollDisabled = false;\n\n // GleapScrollStopper singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapScrollStopper();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {\n const self = this;\n try {\n window.addEventListener(\n \"test\",\n null,\n Object.defineProperty({}, \"passive\", {\n get: function () {\n self.supportsPassive = true;\n self.wheelOpt = self.supportsPassive ? { passive: false } : false;\n },\n })\n );\n } catch (e) {}\n }\n\n preventDefault(e) {\n e.preventDefault();\n }\n\n preventDefaultForScrollKeys(e) {\n if (this.keys && this.keys[e.keyCode]) {\n this.preventDefault(e);\n return false;\n }\n }\n\n static disableScroll() {\n const instance = this.getInstance();\n if (instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = true;\n\n window.addEventListener(\"DOMMouseScroll\", instance.preventDefault, false); // older FF\n window.addEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n ); // modern desktop\n window.addEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n ); // mobile\n window.addEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n\n static enableScroll() {\n const instance = this.getInstance();\n if (!instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = false;\n window.removeEventListener(\n \"DOMMouseScroll\",\n instance.preventDefault,\n false\n );\n window.removeEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n}\n","import Gleap, { GleapTranslationManager, GleapFrameManager } from \"./Gleap\";\nimport { ScreenDrawer } from \"./ScreenDrawer\";\nimport { GleapScrollStopper } from \"./GleapScrollStopper\";\nimport { GleapScreenRecorder } from \"./GleapScreenRecorder\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapMarkerManager {\n type = \"screenshot\";\n dragCursor = null;\n screenRecorder = null;\n callback = null;\n screenDrawer = null;\n escListener = null;\n pageLeaveListener = null;\n overrideLanguage = Gleap.getInstance().overrideLanguage;\n\n constructor(type) {\n this.type = type;\n }\n\n hideWidgetUI() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"none\";\n }\n\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"none\";\n }\n }\n\n showWidgetUI() {\n if (this.type === \"screenshot\") {\n GleapScrollStopper.enableScroll();\n }\n\n // Stop screenrecording.\n if (this.screenRecorder) {\n this.screenRecorder.stopScreenRecording();\n }\n\n // Unregister ESC listener\n this.unregisterListeners();\n\n // Cleanup mouse pointer\n this.cleanupMousePointer();\n\n if (this.screenDrawer) {\n this.screenDrawer.destroy();\n }\n\n // Remove the toolbar UI\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n if (dialog) {\n dialog.remove();\n }\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n if (captureSVG) {\n captureSVG.classList.add(\"bb-capture-svg--preview\");\n }\n\n // Remove the preview UI\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n if (videoPreviewContainer) {\n videoPreviewContainer.remove();\n }\n\n // Feedback button\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"flex\";\n }\n\n // Feedback dialog container\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"block\";\n }\n\n // Dismiss button\n const dismissUI = document.querySelector(\".bb-capture-dismiss\");\n if (dismissUI) {\n dismissUI.style.display = \"none\";\n }\n\n // Hide the color picker\n const colorPicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorPicker) {\n colorPicker.style.display = \"none\";\n }\n\n // Border layer\n const borderLayer = document.querySelector(\n \".bb-capture-editor-borderlayer\"\n );\n if (borderLayer) {\n borderLayer.style.display = \"none\";\n }\n }\n\n clear() {\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n if (captureEditor) {\n captureEditor.remove();\n }\n }\n\n setMouseMove(x, y) {\n if (!this.dragCursor) {\n return;\n }\n\n this.dragCursor.style.left = `${x + 6}px`;\n this.dragCursor.style.top = `${y - 26}px`;\n this.dragCursor.style.right = null;\n }\n\n mouseMoveEventHandler(e) {\n const x = e.clientX;\n const y = e.clientY;\n this.setMouseMove(x, y);\n }\n\n touchMoveEventHandler(e) {\n const x = e.touches[0].clientX;\n const y = e.touches[0].clientY;\n this.setMouseMove(x, y);\n }\n\n setupMousePointer() {\n const self = this;\n this.dragCursor = document.querySelector(\".bb-capture-editor-drag-info\");\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n captureSVG.addEventListener(\"mouseenter\", (e) => {\n self.dragCursor.style.opacity = 1;\n });\n\n captureSVG.addEventListener(\"mouseleave\", (e) => {\n self.dragCursor.style.opacity = 0;\n });\n\n document.documentElement.addEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler.bind(this)\n );\n document.documentElement.addEventListener(\n \"touchmove\",\n this.touchMoveEventHandler.bind(this)\n );\n }\n\n cleanupMousePointer() {\n document.documentElement.removeEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler\n );\n document.documentElement.removeEventListener(\n \"touchmove\",\n this.touchMoveEventHandler\n );\n\n // Clean up toolbar drag listeners\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n if (dragHandle) {\n dragHandle.removeEventListener(\"mousedown\", this.dragStart);\n dragHandle.removeEventListener(\"touchstart\", this.dragStart);\n document.removeEventListener(\"mousemove\", this.drag);\n document.removeEventListener(\"touchmove\", this.drag);\n document.removeEventListener(\"mouseup\", this.dragEnd);\n document.removeEventListener(\"touchend\", this.dragEnd);\n }\n\n if (this.dragCursor) {\n this.dragCursor.remove();\n }\n }\n\n createEditorUI() {\n // Add HTML for drawing and recording\n var bugReportingEditor = document.createElement(\"div\");\n bugReportingEditor.className = \"bb-capture-editor\";\n bugReportingEditor.innerHTML = `\n <div class=\"bb-capture-editor-borderlayer\"></div>\n <svg class=\"bb-capture-svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" xml:space=\"preserve\"></svg>\n <div class=\"bb-capture-dismiss\">${loadIcon(\"dismiss\")}</div>\n <div class='bb-capture-editor-drag-info'>${loadIcon(\"rect\")}</div>\n <div class=\"bb-capture-toolbar\">\n <div class=\"bb-capture-toolbar-item bb-capture-item-rec bb-capture-toolbar-item-tool drag-handle-item\" data-type=\"drag\">\n ${loadIcon(\"drag\")}\n </div>\n ${this.type === \"capture\"\n ? `<div class=\"bb-capture-toolbar-item bb-capture-item-rec bb-capture-toolbar-item-recording\" data-type=\"recording\">\n ${loadIcon(\"recorderon\")}\n ${loadIcon(\"recorderoff\")}\n <span class=\"bb-tooltip bb-tooltip-screen-recording\"></span>\n </div>\n <div class=\"bb-capture-toolbar-item bb-capture-item-rec\" data-type=\"mic\">\n ${loadIcon(\"mic\")}\n <span class=\"bb-tooltip bb-tooltip-audio-recording\"></span>\n </div>\n <div class=\"bb-capture-toolbar-item-timer bb-capture-item-rec\">2:00</div>\n <div class=\"bb-capture-toolbar-item-spacer\"></div>\n <div class=\"bb-capture-toolbar-item bb-capture-toolbar-drawingitem bb-capture-toolbar-item-tool\" data-type=\"pointer\">\n ${loadIcon(\"pointer\")}\n </div>`\n : \"\"\n }\n <div class=\"bb-capture-toolbar-item bb-capture-toolbar-drawingitem bb-capture-toolbar-item-tool bb-capture-toolbar-item--active\" data-type=\"rect\">\n ${loadIcon(\"rect\")}\n </div>\n <div class=\"bb-capture-toolbar-item bb-capture-toolbar-drawingitem bb-capture-toolbar-item-tool\" data-type=\"pen\">\n ${loadIcon(\"pen\")}\n </div>\n <div class=\"bb-capture-toolbar-item bb-capture-toolbar-drawingitem bb-capture-toolbar-item-tool\" data-type=\"blur\">\n ${loadIcon(\"blur\")}\n </div>\n <div class=\"bb-capture-toolbar-item bb-capture-toolbar-drawingitem\" data-type=\"colorpicker\">\n <div class=\"bb-capture-toolbar-item-selectedcolor\"></div>\n <span class=\"bb-tooltip\">${GleapTranslationManager.translateText(\n `pickAColor`\n )}</span>\n </div>\n <div class=\"bb-capture-toolbar-item bb-capture-toolbar-drawingitem bb-capture-toolbar-item-tool\" data-type=\"undo\">\n ${loadIcon(\"undo\")}\n <span class=\"bb-tooltip\">${GleapTranslationManager.translateText(\n `undo`\n )}</span>\n </div>\n ${this.type !== \"capture\"\n ? `<div class=\"bb-capture-button-next\">${GleapTranslationManager.translateText(\n `next`\n )}</div>`\n : \"\"\n }\n </div>\n <div class=\"bb-capture-toolbar-item-colorpicker\">\n <div class=\"bb-capture-toolbar-item-color\" data-color=\"#EB144C\"></div>\n <div class=\"bb-capture-toolbar-item-color\" data-color=\"#FF6705\"></div>\n <div class=\"bb-capture-toolbar-item-color\" data-color=\"#FDB903\"></div>\n <div class=\"bb-capture-toolbar-item-color\" data-color=\"#9900EE\"></div>\n <div class=\"bb-capture-toolbar-item-color\" data-color=\"#00D082\"></div>\n <div class=\"bb-capture-toolbar-item-color\" data-color=\"#0A93E4\"></div>\n <div class=\"bb-capture-toolbar-item-color\" data-color=\"#CCCCCC\"></div>\n </div>\n <div class=\"bb-capture-preview\">\n <div class=\"bb-capture-preview-inner\">\n <video controls muted autoplay></video>\n <div class=\"bb-capture-preview-buttons\">\n <div class=\"bb-capture-preview-retrybutton\">${GleapTranslationManager.translateText(\n `retry`\n )}</div>\n <div class=\"bb-capture-preview-sendbutton\">${GleapTranslationManager.translateText(\n `next`\n )}</div>\n </div>\n </div>\n </div>\n `;\n document.body.appendChild(bugReportingEditor);\n\n // Set RTL layout\n bugReportingEditor.setAttribute(\"dir\", GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\");\n }\n\n showNextStep = function () {\n // Adapt the UI\n this.showWidgetUI();\n\n if (this.callback) {\n GleapFrameManager.getInstance().sendMessage({\n name: \"set-form-data\",\n data: {\n formKey: \"capture\",\n data: {\n value: this.type,\n dirty: true,\n }\n }\n });\n this.callback(true);\n }\n };\n\n unregisterListeners() {\n if (this.escListener) {\n document.removeEventListener(\"keydown\", this.escListener);\n }\n\n if (this.pageLeaveListener) {\n window.removeEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n }\n\n registerListeners() {\n const self = this;\n\n // Esc listener\n this.escListener = function (evt) {\n evt = evt || window.event;\n var isEscape = false;\n var isEnter = false;\n if (\"key\" in evt) {\n isEscape = evt.key === \"Escape\";\n isEnter = evt.key === \"Enter\";\n }\n if (isEscape) {\n self.dismiss();\n }\n if (self.type === \"screenshot\" && isEnter) {\n self.showNextStep();\n }\n };\n document.addEventListener(\"keydown\", this.escListener);\n\n // Page leave listener\n this.pageLeaveListener = function (event) {\n event.preventDefault();\n event.returnValue = \"\";\n };\n window.addEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n\n show(callback) {\n this.callback = callback;\n const self = this;\n\n // Register for listeners\n this.registerListeners();\n\n // Hide widget UI\n this.hideWidgetUI();\n\n // Create the editor UI\n this.createEditorUI();\n\n // Setup the mouse pointer\n this.setupMousePointer();\n\n // Setup screenshot data\n if (this.type === \"screenshot\") {\n // Overwrite snapshot position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n // Disable scroll\n GleapScrollStopper.disableScroll();\n } else {\n // Setup screen recording\n this.setupScreenRecording();\n }\n\n // Hook up the drawing.\n this.screenDrawer = new ScreenDrawer(\n this.captureScreenDrawerRerender.bind(this)\n );\n\n this.setupColorPicker();\n this.setupToolbar();\n }\n\n setupColorPicker() {\n const self = this;\n const selectedColor = document.querySelector(\n \".bb-capture-toolbar-item-selectedcolor\"\n );\n const colorItems = document.querySelectorAll(\n \".bb-capture-toolbar-item-color\"\n );\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n for (var i = 0; i < colorItems.length; i++) {\n const colorItem = colorItems[i];\n const hexColor = colorItem.getAttribute(\"data-color\");\n colorItem.style.backgroundColor = hexColor;\n colorItem.onclick = function () {\n if (colorItem) {\n self.screenDrawer.setColor(hexColor);\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n selectedColor.style.backgroundColor = colorItem.style.backgroundColor;\n GleapMarkerManager.setPenColor(hexColor);\n }\n };\n }\n }\n\n static setPenColor(hexColor) {\n const penTips = document.querySelectorAll(\".bb-pen-tip\");\n for (var j = 0; j < penTips.length; j++) {\n penTips[j].style.fill = hexColor;\n }\n }\n\n dismiss() {\n this.showWidgetUI();\n\n if (this.callback) {\n this.callback(false);\n }\n }\n\n setupToolbar() {\n const self = this;\n const toolbar = document.querySelector(\".bb-capture-toolbar\");\n let isDragging = false;\n let currentX;\n let currentY;\n let initialX;\n let initialY;\n let xOffset = 0;\n let yOffset = 0;\n\n const getTransformValues = () => {\n const transform = window.getComputedStyle(toolbar).transform;\n if (transform === 'none') return { x: 0, y: 0 };\n const matrix = new DOMMatrix(transform);\n return { x: matrix.m41, y: matrix.m42 };\n };\n\n this.dragStart = (e) => {\n const { x, y } = getTransformValues();\n xOffset = x;\n yOffset = y;\n\n if (e.type === \"mousedown\") {\n initialX = e.clientX - xOffset;\n initialY = e.clientY - yOffset;\n } else {\n initialX = e.touches[0].clientX - xOffset;\n initialY = e.touches[0].clientY - yOffset;\n }\n isDragging = true;\n };\n\n this.dragEnd = () => {\n isDragging = false;\n };\n\n this.drag = (e) => {\n if (isDragging) {\n e.preventDefault();\n if (e.type === \"mousemove\") {\n currentX = e.clientX - initialX;\n currentY = e.clientY - initialY;\n } else {\n currentX = e.touches[0].clientX - initialX;\n currentY = e.touches[0].clientY - initialY;\n }\n\n xOffset = currentX;\n yOffset = currentY;\n\n toolbar.style.transform = `translate(${currentX}px, ${currentY}px)`;\n }\n };\n\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n\n dragHandle.addEventListener(\"mousedown\", this.dragStart);\n dragHandle.addEventListener(\"touchstart\", this.dragStart);\n document.addEventListener(\"mousemove\", this.drag);\n document.addEventListener(\"touchmove\", this.drag);\n document.addEventListener(\"mouseup\", this.dragEnd);\n document.addEventListener(\"touchend\", this.dragEnd);\n\n // Hook up dismiss button\n const dismissButton = document.querySelector(\".bb-capture-dismiss\");\n dismissButton.onclick = function () {\n self.dismiss();\n };\n\n // Hook up send button\n const nextButton = document.querySelector(\".bb-capture-button-next\");\n if (nextButton) {\n nextButton.onclick = this.showNextStep.bind(this);\n }\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n\n const chooseTool = function (type, toolbarItem) {\n const toolbarTools = document.querySelectorAll(\n \".bb-capture-toolbar-item-tool\"\n );\n for (let j = 0; j < toolbarTools.length; j++) {\n toolbarTools[j].classList.remove(\"bb-capture-toolbar-item--active\");\n }\n toolbarItem.classList.add(\"bb-capture-toolbar-item--active\");\n self.screenDrawer.setTool(type);\n self.dragCursor.innerHTML = \"\";\n if (type === \"pointer\") {\n captureSVG.style.pointerEvents = \"none\";\n } else {\n captureSVG.style.pointerEvents = \"auto\";\n try {\n var svgClone = toolbarItem.querySelector(\"svg\").cloneNode(true);\n if (svgClone && self.dragCursor) {\n self.dragCursor.appendChild(svgClone);\n }\n } catch (exp) { }\n }\n }\n\n // Setup toolbar items\n var toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n toolbarItem.onclick = function () {\n const type = toolbarItem.getAttribute(\"data-type\");\n if (colorpicker && type !== \"colorpicker\") {\n colorpicker.style.display = \"none\";\n }\n\n // Mic & recording buttons\n if (type === \"mic\") {\n self.screenRecorder.toggleAudio();\n }\n if (type === \"recording\") {\n if (self.screenRecorder.isRecording) {\n self.screenRecorder.stopScreenRecording();\n } else {\n self.screenRecorder.startScreenRecording();\n chooseTool(\"pointer\", document.querySelector(\".bb-capture-toolbar-item[data-type='pointer']\"));\n }\n }\n\n // Marker buttons\n if (self.type === \"capture\" && !self.screenRecorder.isRecording) {\n // Inactivate buttons.\n return;\n }\n if (\n type === \"pen\" ||\n type === \"blur\" ||\n type === \"rect\" ||\n type === \"pointer\"\n ) {\n chooseTool(type, toolbarItem);\n }\n if (type === \"colorpicker\") {\n if (colorpicker.style.display === \"flex\") {\n colorpicker.style.display = \"none\";\n } else {\n colorpicker.style.display = \"flex\";\n }\n }\n if (type === \"undo\") {\n self.screenDrawer.removeLastAddedPathFromSvg();\n }\n };\n }\n }\n\n captureScreenDrawerRerender() {\n if (!this.screenDrawer) {\n return;\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"undo\":\n if (\n this.screenDrawer.pathBuffer != null &&\n this.screenDrawer.pathBuffer.length > 0\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n }\n break;\n default:\n break;\n }\n }\n }\n\n captureRenderer() {\n if (!this.screenRecorder) {\n return;\n }\n\n if (this.screenRecorder.file) {\n Gleap.getInstance().setGlobalDataItem(\"screenRecordingData\", this.screenRecorder.file);\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const timerLabel = document.querySelector(\".bb-capture-toolbar-item-timer\");\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n const screenRecordingTooltip = document.querySelector(\n \".bb-tooltip-screen-recording\"\n );\n const audioRecordingTooltip = document.querySelector(\n \".bb-tooltip-audio-recording\"\n );\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n const recordingClass = \"bb-capture-editor-recording\";\n const notRecordingClass = \"bb-capture-editor-notrecording\";\n if (this.screenRecorder.isRecording) {\n captureEditor.classList.add(recordingClass);\n captureEditor.classList.remove(notRecordingClass);\n } else {\n captureEditor.classList.add(notRecordingClass);\n captureEditor.classList.remove(recordingClass);\n }\n \n // Update UI.\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n videoPreviewContainer.style.display = this.screenRecorder.file\n ? \"flex\"\n : \"none\";\n dialog.style.display = !this.screenRecorder.file ? \"flex\" : \"none\";\n\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"mic\":\n if (\n this.screenRecorder.audioAvailable &&\n this.screenRecorder.available\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (!this.screenRecorder.audioMuted) {\n toolbarItem.classList.remove(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"mute\"\n );\n } else {\n toolbarItem.classList.add(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"unmute\"\n );\n }\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n toolbarItem.classList.add(\"bb-capture-toolbar-item--inactivecross\");\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n case \"recording\":\n if (this.screenRecorder.available) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (this.screenRecorder.isRecording) {\n toolbarItem.setAttribute(\"data-active\", \"true\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"stopRecording\"\n );\n timerLabel.style.display = \"block\";\n } else {\n toolbarItem.setAttribute(\"data-active\", \"false\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"startRecording\"\n );\n timerLabel.style.display = \"none\";\n }\n } else {\n // Recording is not available.\n toolbarItem.classList.add(itemInactiveClass);\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n default:\n break;\n }\n }\n }\n\n setupScreenRecording() {\n const self = this;\n\n // Hook preview next button\n const nextButtonPreview = document.querySelector(\n \".bb-capture-preview-sendbutton\"\n );\n nextButtonPreview.onclick = this.showNextStep.bind(this);\n\n // Hook retry button\n const retryButton = document.querySelector(\n \".bb-capture-preview-retrybutton\"\n );\n retryButton.onclick = function () {\n self.screenRecorder.clearPreview();\n if (self.screenDrawer) {\n self.screenDrawer.clear();\n }\n };\n\n // Setup screen recorder\n this.screenRecorder = new GleapScreenRecorder(\n this.captureRenderer.bind(this),\n GleapTranslationManager.translateText(\n \"accessToScreenSharingDenied\"\n )\n );\n }\n}\n","import {\n GleapFrameManager,\n GleapFeedbackButtonManager,\n GleapConfigManager,\n} from \"./Gleap\";\n\nexport default class GleapTranslationManager {\n overrideLanguage = \"\";\n isRTLLayout = false;\n\n // GleapTranslationManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTranslationManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the language to override the default language.\n * @returns {string}\n */\n getOverrideLanguage() {\n return this.overrideLanguage;\n }\n\n /**\n * Sets the language to override the default language.\n * @param {*} language\n */\n setOverrideLanguage(language) {\n this.overrideLanguage = language;\n }\n\n updateRTLSupport() {\n // Update RTL support.\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n this.isRTLLayout = false;\n if (\n flowConfig &&\n flowConfig.localizationOptions &&\n flowConfig.localizationOptions.rtl\n ) {\n this.isRTLLayout = true;\n }\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapFrameManager.getInstance().updateFrameStyle();\n }\n\n getActiveLanguage() {\n var language = \"en\";\n if (typeof navigator !== \"undefined\") {\n language = navigator.language.toLowerCase();\n }\n if (this.overrideLanguage && this.overrideLanguage !== \"\") {\n language = this.overrideLanguage.toLowerCase();\n }\n\n return language;\n }\n\n static translateText(key) {\n if (!key) {\n return \"\";\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const staticTranslation = flowConfig.staticTranslations;\n\n if (staticTranslation && staticTranslation[key]) {\n return staticTranslation[key];\n }\n\n return key;\n }\n\n static translateTextWithVars(key, vars) {\n if (!key) {\n return \"\";\n }\n\n var template = this.translateText(key);\n if (!template) {\n return \"\";\n }\n\n return template.replace(/{(\\w+)}/g, function (_, key) {\n return vars[key];\n });\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapShortcutListener {\n shortCutListener = undefined;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapShortcutListener();\n }\n return this.instance;\n }\n\n start() {\n if (this.shortCutListener) {\n return;\n }\n\n const charForEvent = function (event) {\n var code;\n\n if (event.key !== undefined) {\n code = event.key;\n } else if (event.keyIdentifier !== undefined) {\n code = event.keyIdentifier;\n } else if (event.keyCode !== undefined) {\n code = event.keyCode;\n }\n\n return code;\n };\n\n this.shortCutListener = document.addEventListener(\"keyup\", function (e) {\n const char = charForEvent(e);\n if (\n e.ctrlKey &&\n (char === \"u\" || char === \"U\" || char === 85)\n ) {\n Gleap.startFeedbackFlowWithOptions(\"bugreporting\", {\n autostartDrawing: true\n });\n }\n });\n }\n\n stop() {\n if (this.shortCutListener) {\n document.removeEventListener(\"keyup\", this.shortCutListener);\n this.shortCutListener = undefined;\n }\n }\n}","\nexport default class GleapPreFillManager {\n formPreFill = {};\n \n // GleapPreFillManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapPreFillManager();\n }\n return this.instance;\n }\n }\n ","import Gleap, {\n GleapFeedbackButtonManager,\n GleapConfigManager,\n GleapFrameManager,\n GleapSession,\n GleapAudioManager,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\nimport { loadFromGleapCache, saveToGleapCache } from \"./GleapHelper\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapNotificationManager {\n notificationContainer = null;\n notifications = [];\n unreadCount = 0;\n unreadNotificationsKey = \"unread-notifications\";\n isTabActive = true;\n showNotificationBadge = true;\n\n // Keep track of the current index of news being shown\n currentNewsIndex = 0;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNotificationManager();\n }\n return this.instance;\n }\n\n constructor() {}\n\n updateTabBarNotificationCount() {\n GleapEventManager.notifyEvent(\"unread-count-changed\", this.unreadCount);\n }\n\n injectNotificationUI() {\n if (this.notificationContainer) {\n return;\n }\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-notification-container gleap-font\";\n document.body.appendChild(elem);\n this.notificationContainer = elem;\n\n this.updateContainerStyle();\n this.reloadNotificationsFromCache();\n }\n\n reloadNotificationsFromCache() {\n try {\n const notificationsFromCache = loadFromGleapCache(\n this.unreadNotificationsKey\n );\n if (notificationsFromCache && notificationsFromCache.length > 0) {\n let nots = notificationsFromCache.filter(\n (notification) =>\n new Date(notification.createdAt) >\n new Date(Date.now() - 1 * 60 * 60 * 1000)\n );\n\n if (nots.length > 2) {\n this.notifications = nots.splice(0, nots.length - 2);\n } else {\n this.notifications = nots;\n }\n this.renderNotifications();\n }\n } catch (exp) {}\n }\n\n setNotificationCount(unreadCount) {\n if (GleapFrameManager.getInstance().isOpened()) {\n this.unreadCount = 0;\n this.updateTabBarNotificationCount();\n } else {\n this.unreadCount = unreadCount;\n }\n\n this.updateTabBarNotificationCount();\n\n // Update the badge counter.\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(\n this.unreadCount\n );\n }\n\n showNotification(notification) {\n if (!(this.notificationContainer && notification && notification.data)) {\n return;\n }\n\n const notificationsForOutbound = this.notifications.find(\n (e) => notification.outbound === e.outbound\n );\n if (!notificationsForOutbound) {\n this.notifications.push(notification);\n\n // Play sound only if it's a new one\n if (notification.sound) {\n GleapAudioManager.ping();\n }\n }\n if (this.notifications.length > 2) {\n this.notifications.shift();\n }\n\n // Persist notifications.\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n\n this.renderNotifications();\n }\n\n /**\n * Renders notifications. For news-type notifications, only show\n * one at a time if there are multiple, with a \"Next\" button to cycle.\n * The \"Next\" button + pagination are placed within the news content area.\n *\n * - Sorts news notifications by createdAt (oldest first).\n * - Shows \"Done\" on the last news item instead of \"Next\".\n */\n renderNotifications() {\n if (!this.notificationContainer) {\n return;\n }\n\n // Clear the existing notifications in the container (UI only).\n this.clearAllNotifications(true);\n\n // Append a close button (which clears everything).\n const clearElem = document.createElement(\"div\");\n clearElem.onclick = () => {\n this.clearAllNotifications();\n // Reset the news index when everything is closed\n this.currentNewsIndex = 0;\n };\n clearElem.className = \"gleap-notification-close\";\n clearElem.innerHTML = loadIcon(\"dismiss\");\n this.notificationContainer.appendChild(clearElem);\n\n // Separate out news notifications vs. others, then sort news by date ascending\n const newsNotifications = this.notifications\n .filter((n) => n.data.news)\n .sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n\n const otherNotifications = this.notifications.filter((n) => !n.data.news);\n\n // --- Render NEWS notifications (with pagination) ---\n if (newsNotifications.length > 0) {\n // We only show ONE news item at a time if there's more than one\n const currentIndex =\n this.currentNewsIndex < newsNotifications.length\n ? this.currentNewsIndex\n : 0;\n const currentNews = newsNotifications[currentIndex];\n\n // Main wrapper for the news notification\n const newsElem = document.createElement(\"div\");\n newsElem.className = \"gleap-notification-item-news\";\n\n // The container that holds image + content\n const newsContainerElem = document.createElement(\"div\");\n newsContainerElem.className = \"gleap-notification-item-news-container\";\n\n // Create the image element (clickable)\n if (\n currentNews.data.coverImageUrl &&\n currentNews.data.coverImageUrl !== \"\" &&\n !currentNews.data.coverImageUrl.includes(\"NewsImagePlaceholder\")\n ) {\n const newsImageElem = document.createElement(\"img\");\n newsImageElem.className = \"gleap-notification-item-news-image\";\n newsImageElem.src = currentNews.data.coverImageUrl;\n\n // Only the image is clickable\n newsImageElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n newsContainerElem.appendChild(newsImageElem);\n }\n\n // The content container\n const newsContentElem = document.createElement(\"div\");\n newsContentElem.className = \"gleap-notification-item-news-content\";\n\n // Title (clickable)\n const newsTitleElem = document.createElement(\"div\");\n newsTitleElem.className = \"gleap-notification-item-news-content-title\";\n\n let content = currentNews.data.text || \"\";\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n newsTitleElem.innerText = content;\n\n // Only the title is clickable\n newsTitleElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n\n newsContentElem.appendChild(newsTitleElem);\n\n // Description / Sender\n const descHTML = this.renderDescription(currentNews);\n if (descHTML) {\n const descElem = document.createElement(\"div\");\n descElem.className = \"gleap-notification-item-news-preview\";\n descElem.innerHTML = descHTML;\n newsContentElem.appendChild(descElem);\n }\n\n // If there's more than one news item, show pagination + next/done button\n if (newsNotifications.length > 1) {\n // Pagination container (still inside .gleap-notification-item-news-content)\n const paginationElem = document.createElement(\"div\");\n paginationElem.className = \"gleap-news-pagination\";\n\n // Show current item / total\n const pageIndicator = document.createElement(\"span\");\n pageIndicator.className = \"gleap-news-page-indicator\";\n pageIndicator.innerText = `${currentIndex + 1} / ${\n newsNotifications.length\n }`;\n paginationElem.appendChild(pageIndicator);\n\n // Next or Done button\n const nextBtn = document.createElement(\"button\");\n nextBtn.className = \"gleap-news-next-button\";\n\n if (currentIndex < newsNotifications.length - 1) {\n nextBtn.innerText = GleapTranslationManager.translateText(`next`);\n nextBtn.onclick = (e) => {\n e.stopPropagation(); // so we can click the button freely\n this.currentNewsIndex++;\n this.renderNotifications();\n };\n } else {\n nextBtn.innerText = GleapTranslationManager.translateText(`done`);\n nextBtn.onclick = (e) => {\n e.stopPropagation();\n this.clearAllNotifications();\n this.currentNewsIndex = 0;\n };\n }\n paginationElem.appendChild(nextBtn);\n newsContentElem.appendChild(paginationElem);\n }\n\n // Append content to container\n newsContainerElem.appendChild(newsContentElem);\n // Append container to the main element\n newsElem.appendChild(newsContainerElem);\n // Finally append to the notification container\n this.notificationContainer.appendChild(newsElem);\n }\n\n // --- Render OTHER notifications normally ---\n for (let i = 0; i < otherNotifications.length; i++) {\n const notification = otherNotifications[i];\n let content = notification.data.text || \"\";\n // Replace placeholders\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n\n const elem = document.createElement(\"div\");\n elem.onclick = () => {\n if (notification.data.conversation) {\n Gleap.openConversation(\n notification.data.conversation.shareToken,\n true\n );\n } else if (notification.data.checklist) {\n Gleap.openChecklist(notification.data.checklist.id, true);\n } else {\n Gleap.open();\n }\n };\n\n // Check if it's a checklist type\n if (notification.data.checklist) {\n let progress = Math.round(\n (notification.data.currentStep / notification.data.totalSteps) * 100\n );\n if (progress < 100) {\n progress += 4;\n }\n\n elem.className = \"gleap-notification-item-checklist\";\n elem.innerHTML = `\n <div class=\"gleap-notification-item-checklist-container\">\n <div class=\"gleap-notification-item-checklist-content\">\n <div class=\"gleap-notification-item-checklist-content-title\">\n ${notification.data.text}\n </div>\n <div class=\"gleap-notification-item-checklist-content-progress\">\n <div class=\"gleap-notification-item-checklist-content-progress-inner\" style=\"width: ${progress}%;\"></div>\n </div>\n <div class=\"gleap-notification-item-checklist-content-next\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4 12H20M20 12L14 6M20 12L14 18\"\n stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n ${notification.data.nextStepTitle}\n </div>\n </div>\n </div>`;\n } else {\n // Standard non-news notification\n elem.className = \"gleap-notification-item\";\n elem.innerHTML = `\n ${\n notification.data.sender &&\n notification.data.sender.profileImageUrl &&\n `<img src=\"${notification.data.sender.profileImageUrl}\" />`\n }\n <div class=\"gleap-notification-item-container\">\n ${\n notification.data.sender\n ? `<div class=\"gleap-notification-item-sender\">\n ${notification.data.sender.name}\n </div>`\n : \"\"\n }\n <div class=\"gleap-notification-item-content\">${content}</div>\n </div>`;\n }\n this.notificationContainer.appendChild(elem);\n }\n\n const hasNotifications =\n newsNotifications.length > 0 || otherNotifications.length > 0;\n if (!hasNotifications) {\n // Clear the notification container\n this.clearAllNotifications(true);\n }\n }\n\n /**\n * Helper to open news from a given notification.\n */\n openNews(notification) {\n if (notification.data.news) {\n Gleap.openNewsArticle(notification.data.news.id, true);\n } else {\n Gleap.open();\n }\n }\n\n /**\n * Helper to render preview or sender info for news notifications.\n */\n renderDescription(notification) {\n const { previewText, sender } = notification.data;\n if (previewText && previewText.length > 0) {\n return previewText;\n } else if (sender) {\n // Return HTML for the sender name + optional image\n return `\n <div class=\"gleap-notification-item-news-sender\">\n ${\n sender.profileImageUrl\n ? `<img src=\"${sender.profileImageUrl}\" alt=\"${sender.name}\" />`\n : \"\"\n }\n ${sender.name}\n </div>\n `;\n }\n return \"\";\n }\n\n /**\n * Clears all notifications from the container.\n *\n * @param {boolean} uiOnly - Whether to only clear the UI or also the notifications.\n */\n clearAllNotifications(uiOnly = false) {\n if (!this.notificationContainer) {\n return;\n }\n\n if (!uiOnly) {\n this.notifications = [];\n // Reset currentNewsIndex whenever we clear them out\n this.currentNewsIndex = 0;\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n }\n\n while (this.notificationContainer.firstChild) {\n this.notificationContainer.removeChild(\n this.notificationContainer.firstChild\n );\n }\n }\n\n updateContainerStyle() {\n if (!this.notificationContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const classLeft = \"gleap-notification-container--left\";\n const classNoButton = \"gleap-notification-container--no-button\";\n this.notificationContainer.classList.remove(classLeft);\n this.notificationContainer.classList.remove(classNoButton);\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.notificationContainer.classList.add(classLeft);\n }\n\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n this.notificationContainer.classList.add(classNoButton);\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n this.notificationContainer.classList.add(classNoButton);\n }\n }\n\n this.notificationContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n }\n}\n","import Gleap, { GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapBannerManager {\n bannerUrl = \"https://outboundmedia.gleap.io\";\n bannerContainer = null;\n bannerData = null;\n\n // GleapBannerManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapBannerManager();\n }\n return this.instance;\n }\n\n constructor() {\n this.startCommunication();\n }\n\n setBannerUrl(url) {\n this.bannerUrl = url;\n }\n\n startCommunication() {\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (!this.bannerUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"BANNER\") {\n return;\n }\n\n if (data.name === \"banner-loaded\" && this.bannerData) {\n this.sendMessage({\n name: \"banner-data\",\n data: this.bannerData,\n });\n }\n if (data.name === \"banner-height\") {\n document.documentElement.style.setProperty(\n \"--gleap-margin-top\",\n data.data.height + \"px\"\n );\n }\n if (data.name === \"banner-data-set\") {\n document.body.classList.add(\"gleap-b-shown\");\n\n if (this.bannerData?.format === \"floating\") {\n document.body.classList.add(\"gleap-b-f\");\n }\n }\n if (data.name === \"banner-close\") {\n this.removeBannerUI();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n removeBannerUI() {\n if (this.bannerContainer) {\n document.body.removeChild(this.bannerContainer);\n this.bannerContainer = null;\n }\n\n document.body.classList.remove(\"gleap-b-shown\");\n document.body.classList.remove(\"gleap-b-f\");\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectBannerUI(bannerData) {\n if (this.bannerContainer || !document.body) {\n return false;\n }\n\n this.bannerData = bannerData;\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-b\";\n elem.innerHTML = `<iframe src=\"${this.bannerUrl}\" class=\"gleap-b-frame\" scrolling=\"no\" title=\"Gleap Banner\" role=\"dialog\" frameborder=\"0\"></iframe>`;\n document.body.appendChild(elem);\n this.bannerContainer = elem;\n }\n\n sendMessage(data) {\n try {\n const gleapBFrame = document.querySelector(\".gleap-b-frame\");\n if (gleapBFrame && gleapBFrame.contentWindow) {\n gleapBFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"banner\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n showBanner(bannerData) {\n this.injectBannerUI(bannerData);\n }\n}\n","import Gleap, { GleapConfigManager, GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapModalManager {\n modalUrl = \"https://outboundmedia.gleap.io/modal\";\n modalContainer = null;\n modalData = null;\n modalBackdropClickListener = null;\n\n // singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapModalManager();\n }\n return this.instance;\n }\n\n constructor() {\n this._listenForMessages();\n }\n\n setModalUrl(url) {\n this.modalUrl = url;\n }\n\n _listenForMessages() {\n window.addEventListener(\"message\", (event) => {\n if (!this.modalUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"MODAL\") {\n return;\n }\n\n if (data.name === \"modal-loaded\" && this.modalData) {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n\n this._postMessage({\n name: \"modal-data\",\n data: {\n ...this.modalData,\n primaryColor: primaryColor,\n },\n });\n }\n if (data.name === \"modal-height\") {\n const height = data?.data?.height;\n if (height) {\n // Set the height of the modal iframe\n const iframe =\n this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (iframe) {\n iframe.style.height = `${height}px`;\n }\n }\n }\n if (data.name === \"modal-data-set\") {\n // TODO: Implement\n }\n if (data.name === \"modal-close\") {\n this.hideModal();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n _injectModalUI(modalData) {\n if (this.modalContainer || !document.body) return false;\n\n this.modalData = modalData;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"gleap-modal-wrapper\";\n wrapper.innerHTML = `\n <div class=\"gleap-modal-backdrop\"></div>\n <div class=\"gleap-modal\">\n <iframe\n src=\"${this.modalUrl}\"\n class=\"gleap-modal-frame\"\n scrolling=\"no\"\n title=\"Gleap Modal\"\n role=\"dialog\"\n frameborder=\"0\"\n allow=\"autoplay; encrypted-media; fullscreen; microphone *;\"\n ></iframe>\n </div>\n `;\n document.body.appendChild(wrapper);\n this.modalContainer = wrapper;\n\n // Add on backdrop click listener\n this.modalBackdropClickListener = this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .addEventListener(\"click\", () => {\n if (this.modalData?.showCloseButton ?? true) {\n this.hideModal();\n }\n });\n\n // lock background scroll\n document.body.classList.add(\"gleap-modal-open\");\n }\n\n _postMessage(message) {\n try {\n const frame = this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (frame?.contentWindow) {\n frame.contentWindow.postMessage(\n JSON.stringify({ ...message, type: \"modal\" }),\n this.modalUrl\n );\n }\n } catch (err) {}\n }\n\n showModal(modalData) {\n if (modalData && modalData.config) {\n this._injectModalUI(modalData.config);\n }\n }\n\n hideModal() {\n if (!this.modalContainer) return;\n\n if (this.modalBackdropClickListener) {\n this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .removeEventListener(\"click\", this.modalBackdropClickListener);\n }\n\n document.body.removeChild(this.modalContainer);\n this.modalContainer = null;\n document.body.classList.remove(\"gleap-modal-open\");\n }\n}\n","export default class GleapAudioManager {\n static audio;\n static settings = {\n play: true\n };\n\n static playSound(play) {\n this.settings.play = play;\n }\n\n static ping() {\n try {\n if (!this.settings.play) {\n return;\n }\n\n if (!this.audio) {\n this.audio = new Audio('https://js.gleap.io/res/ping.mp3');\n }\n\n const playPromise = this.audio.play();\n if (playPromise !== undefined) {\n playPromise.then(_ => { })\n .catch(error => { });\n }\n } catch (exp) { }\n }\n}\n","export default class GleapTagManager {\n tags = [];\n\n // GleapTagManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTagManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the tags\n * @returns {*}\n */\n getTags() {\n return this.tags;\n }\n\n /**\n * Sets the tags sent with every ticket.\n * @param {*} tags Array of strings\n */\n setTags(tags) {\n this.tags = tags;\n }\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getID( el )\n{\n const id = el.getAttribute( 'id' );\n\n if( id !== null && id !== '')\n {\n // if the ID starts with a number or contains \":\" selecting with a hash will cause a DOMException\n return id.match(/(?:^\\d|:)/) ? `[id=\"${id}\"]` : '#' + id;\n }\n return null;\n}\n","/**\n * Get class names for an element\n *\n * @pararm { Element } el\n * @return { Array }\n */\nexport function getClasses( el )\n{\n if( !el.hasAttribute( 'class' ) )\n {\n return [];\n }\n\n try {\n let classList = Array.prototype.slice.call( el.classList )\n\n // return only the valid CSS selectors based on RegEx\n return classList.filter(item => !/^[a-z_-][a-z\\d_-]*$/i.test( item ) ? null : item );\n } catch (e) {\n let className = el.getAttribute( 'class' );\n\n // remove duplicate and leading/trailing whitespaces\n className = className.trim().replace( /\\s+/g, ' ' );\n\n // split into separate classnames\n return className.split( ' ' );\n }\n}\n\n/**\n * Returns the Class selectors of the element\n * @param { Object } element\n * @return { Array }\n */\nexport function getClassSelectors( el )\n{\n const classList = getClasses( el ).filter( Boolean );\n return classList.map( cl => `.${cl}` );\n}\n","/**\n * Recursively combinate items.\n * @param { Array } result\n * @param { Array } items\n * @param { Array } data\n * @param { Number } start\n * @param { Number } end\n * @param { Number } index\n * @param { Number } k\n */\nfunction kCombinations( result, items, data, start, end, index, k )\n{\n if( index === k )\n {\n result.push( data.slice( 0, index ).join( '' ) );\n return;\n }\n\n for( let i = start; i <= end && end - i + 1 >= k - index; ++i )\n {\n data[index] = items[i];\n kCombinations( result, items, data, i + 1, end, index + 1, k );\n }\n}\n\n/**\n * Returns all the possible selector combinations\n * @param { Array } items\n * @param { Number } k\n * @return { Array }\n */\nexport function getCombinations( items, k )\n{\n const result = [],\n n = items.length,\n data = [];\n\n for( var l = 1; l <= k; ++l )\n {\n kCombinations( result, items, data, 0, n - 1, 0, l );\n }\n\n return result;\n}\n","/**\n * Determines if the passed el is a DOM element\n */\nexport function isElement( el )\n{\n let isElem;\n\n if ( typeof HTMLElement === 'object' )\n {\n isElem = el instanceof HTMLElement;\n }\n else\n {\n isElem = !!el && ( typeof el === 'object' ) && el.nodeType === 1 && typeof el.nodeName === 'string';\n }\n return isElem;\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns the selectors based on the position of the element relative to its siblings\n * @param { Object } element\n * @return { Array }\n */\nexport function getNthChild( element )\n{\n let counter = 0;\n let k;\n let sibling;\n const { parentNode } = element;\n\n if( Boolean( parentNode ) )\n {\n const { childNodes } = parentNode;\n const len = childNodes.length;\n for ( k = 0; k < len; k++ )\n {\n sibling = childNodes[ k ];\n if( isElement( sibling ) )\n {\n counter++;\n if( sibling === element )\n {\n return `:nth-child(${counter})`;\n }\n }\n }\n }\n return null;\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getTag( el )\n{\n return el.tagName.toLowerCase().replace(/:/g, '\\\\:');\n}\n","/**\n * Checks if the selector is unique\n * @param { Object } element\n * @param { String } selector\n * @return { Array }\n */\nexport function isUnique( el, selector )\n{\n if( !Boolean( selector ) ) return false;\n const elems = el.ownerDocument.querySelectorAll( selector );\n return elems.length === 1 && elems[ 0 ] === el;\n}\n","/**\n * Expose `unique`\n */\n\nimport { getID } from './getID';\nimport { getClassSelectors } from './getClasses';\nimport { getCombinations } from './getCombinations';\nimport { getAttributes } from './getAttributes';\nimport { getNthChild } from './getNthChild';\nimport { getTag } from './getTag';\nimport { isUnique } from './isUnique';\nimport { getParents } from './getParents';\n\n\n/**\n * Returns all the selectors of the elmenet\n * @param { Object } element\n * @return { Object }\n */\nfunction getAllSelectors( el, selectors, attributesToIgnore )\n{\n const funcs =\n {\n 'Tag' : getTag,\n 'NthChild' : getNthChild,\n 'Attributes' : elem => getAttributes( elem, attributesToIgnore ),\n 'Class' : getClassSelectors,\n 'ID' : getID,\n };\n\n return selectors.reduce( ( res, next ) =>\n {\n res[ next ] = funcs[ next ]( el );\n return res;\n }, {} );\n}\n\n/**\n * Tests uniqueNess of the element inside its parent\n * @param { Object } element\n * @param { String } Selectors\n * @return { Boolean }\n */\nfunction testUniqueness( element, selector )\n{\n try {\n const { parentNode } = element;\n const elements = parentNode.querySelectorAll( selector );\n return elements.length === 1 && elements[ 0 ] === element;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tests all selectors for uniqueness and returns the first unique selector.\n * @param { Object } element\n * @param { Array } selectors\n * @return { String }\n */\nfunction getFirstUnique( element, selectors )\n{\n return selectors.find( testUniqueness.bind( null, element ) );\n}\n\n/**\n * Checks all the possible selectors of an element to find one unique and return it\n * @param { Object } element\n * @param { Array } items\n * @param { String } tag\n * @return { String }\n */\nfunction getUniqueCombination( element, items, tag )\n{\n let combinations = getCombinations( items, 3 ),\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n\n if( Boolean( tag ) )\n {\n combinations = combinations.map( combination => tag + combination );\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n }\n\n return null;\n}\n\n/**\n * Returns a uniqueSelector based on the passed options\n * @param { DOM } element\n * @param { Array } options\n * @return { String }\n */\nfunction getUniqueSelector( element, selectorTypes, attributesToIgnore, excludeRegex )\n{\n let foundSelector;\n\n const elementSelectors = getAllSelectors( element, selectorTypes, attributesToIgnore );\n\n if( excludeRegex && excludeRegex instanceof RegExp )\n {\n elementSelectors.ID = excludeRegex.test( elementSelectors.ID ) ? null : elementSelectors.ID;\n elementSelectors.Class = elementSelectors.Class.filter( className => !excludeRegex.test( className ) );\n }\n\n for( let selectorType of selectorTypes )\n {\n const { ID, Tag, Class : Classes, Attributes, NthChild } = elementSelectors;\n switch ( selectorType )\n {\n case 'ID' :\n if ( Boolean( ID ) && testUniqueness( element, ID ) )\n {\n return ID;\n }\n break;\n\n case 'Tag':\n if ( Boolean( Tag ) && testUniqueness( element, Tag ) )\n {\n return Tag;\n }\n break;\n\n case 'Class':\n if ( Boolean( Classes ) && Classes.length )\n {\n foundSelector = getUniqueCombination( element, Classes, Tag );\n if (foundSelector) {\n return foundSelector;\n }\n }\n break;\n\n case 'Attributes':\n if ( Boolean( Attributes ) && Attributes.length )\n {\n foundSelector = getUniqueCombination( element, Attributes, Tag );\n if ( foundSelector )\n {\n return foundSelector;\n }\n }\n break;\n\n case 'NthChild':\n if ( Boolean( NthChild ) )\n {\n return NthChild\n }\n }\n }\n return '*';\n}\n\n/**\n * Generate unique CSS selector for given DOM element\n *\n * @param {Element} el\n * @return {String}\n * @api private\n */\n\nexport default function unique( el, options={} )\n{\n const {\n selectorTypes = ['ID', 'Class', 'Tag', 'NthChild'],\n attributesToIgnore = ['id', 'class', 'length'],\n excludeRegex = null,\n } = options;\n const allSelectors = [];\n const parents = getParents( el );\n\n for( let elem of parents )\n {\n const selector = getUniqueSelector( elem, selectorTypes, attributesToIgnore, excludeRegex );\n if( Boolean( selector ) )\n {\n allSelectors.push( selector );\n }\n }\n\n const selectors = [];\n for( let it of allSelectors )\n {\n selectors.unshift( it );\n const selector = selectors.join( ' > ' );\n if( isUnique( el, selector ) )\n {\n return selector;\n }\n }\n\n return null;\n}\n","/**\n * Returns the Attribute selectors of the element\n * @param { DOM Element } element\n * @param { Array } array of attributes to ignore\n * @return { Array }\n */\nexport function getAttributes( el, attributesToIgnore = ['id', 'class', 'length'] )\n{\n const { attributes } = el;\n const attrs = [ ...attributes ];\n\n return attrs.reduce( ( sum, next ) =>\n {\n if ( ! ( attributesToIgnore.indexOf( next.nodeName ) > -1 ) )\n {\n sum.push( `[${next.nodeName}=\"${next.value}\"]` );\n }\n return sum;\n }, [] );\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns all the element and all of its parents\n * @param { DOM Element }\n * @return { Array of DOM elements }\n */\nexport function getParents( el )\n{\n const parents = [];\n let currentElement = el;\n while( isElement( currentElement ) )\n {\n parents.push( currentElement );\n currentElement = currentElement.parentNode;\n }\n\n return parents;\n}\n","/**\n * Utility function to get the bounding rectangle of an element.\n * @param {HTMLElement} el - The target element.\n * @returns {Object} An object containing x, y, width, and height.\n */\nfunction getElementBounds(el) {\n const rect = el.getBoundingClientRect();\n return {\n x: window.pageXOffset + rect.left,\n y: window.pageYOffset + rect.top,\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n}\n\n/**\n * Class representing an overlay element.\n */\nclass ElementOverlay {\n /**\n * Create an ElementOverlay.\n * @param {Object} options - Configuration options.\n * @param {string} [options.className] - CSS class name for the overlay.\n * @param {Object} [options.style] - Style overrides for the overlay.\n */\n constructor(options) {\n // Create and style the overlay element.\n this.overlay = document.createElement(\"div\");\n this.overlay.className = options.className || \"_ext-element-overlay\";\n this.overlay.style.background =\n (options.style && options.style.background) || \"rgba(250, 240, 202, 0.2)\";\n this.overlay.style.borderColor =\n (options.style && options.style.borderColor) || \"#F95738\";\n this.overlay.style.borderStyle =\n (options.style && options.style.borderStyle) || \"solid\";\n this.overlay.style.borderRadius =\n (options.style && options.style.borderRadius) || \"1px\";\n this.overlay.style.borderWidth =\n (options.style && options.style.borderWidth) || \"1px\";\n this.overlay.style.boxSizing =\n (options.style && options.style.boxSizing) || \"border-box\";\n this.overlay.style.cursor =\n (options.style && options.style.cursor) || \"crosshair\";\n this.overlay.style.position =\n (options.style && options.style.position) || \"absolute\";\n this.overlay.style.zIndex =\n (options.style && options.style.zIndex) || \"2147483647\";\n this.overlay.style.margin =\n (options.style && options.style.margin) || \"0px\";\n this.overlay.style.padding =\n (options.style && options.style.padding) || \"0px\";\n\n // Create a container that will host a Shadow DOM.\n this.shadowContainer = document.createElement(\"div\");\n this.shadowContainer.className = \"_ext-element-overlay-container\";\n this.shadowContainer.style.position = \"absolute\";\n this.shadowContainer.style.top = \"0px\";\n this.shadowContainer.style.left = \"0px\";\n this.shadowContainer.style.margin = \"0px\";\n this.shadowContainer.style.padding = \"0px\";\n this.shadowRoot = this.shadowContainer.attachShadow({ mode: \"open\" });\n }\n\n /**\n * Adds the overlay to the DOM.\n * @param {Node} parent - The parent element.\n * @param {boolean} useShadowDOM - Whether to use Shadow DOM.\n */\n addToDOM(parent, useShadowDOM) {\n this.usingShadowDOM = useShadowDOM;\n if (useShadowDOM) {\n parent.insertBefore(this.shadowContainer, parent.firstChild);\n this.shadowRoot.appendChild(this.overlay);\n } else {\n parent.appendChild(this.overlay);\n }\n }\n\n /**\n * Removes the overlay from the DOM.\n */\n removeFromDOM() {\n this.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n if (this.overlay.remove) {\n this.overlay.remove();\n } else if (this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n if (this.usingShadowDOM) {\n if (this.shadowContainer.remove) {\n this.shadowContainer.remove();\n } else if (this.shadowContainer.parentNode) {\n this.shadowContainer.parentNode.removeChild(this.shadowContainer);\n }\n }\n }\n\n /**\n * Enables pointer events on the overlay.\n */\n captureCursor() {\n this.overlay.style.pointerEvents = \"auto\";\n }\n\n /**\n * Disables pointer events on the overlay.\n */\n ignoreCursor() {\n this.overlay.style.pointerEvents = \"none\";\n }\n\n /**\n * Sets the position and size of the overlay.\n * @param {Object} bounds - The bounding box.\n * @param {number} bounds.x - The x-coordinate.\n * @param {number} bounds.y - The y-coordinate.\n * @param {number} bounds.width - The width.\n * @param {number} bounds.height - The height.\n */\n setBounds(bounds) {\n const { x, y, width, height } = bounds;\n this.overlay.style.left = x + \"px\";\n this.overlay.style.top = y + \"px\";\n this.overlay.style.width = width + \"px\";\n this.overlay.style.height = height + \"px\";\n }\n}\n\n/**\n * Class representing an element picker that uses the overlay.\n */\nclass ElementPicker {\n /**\n * Create an ElementPicker.\n * @param {Object} [overlayOptions] - Options to pass to ElementOverlay.\n */\n constructor(overlayOptions) {\n this.active = false;\n this.overlay = new ElementOverlay(overlayOptions || {});\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.tick = this.tick.bind(this);\n }\n\n /**\n * Starts the element picking process.\n * @param {Object} options - Picker options.\n * @param {Node} [options.parentElement] - Parent element to attach the overlay.\n * @param {boolean} [options.useShadowDOM=true] - Whether to use Shadow DOM.\n * @param {Function} [options.onClick] - Callback invoked on click.\n * @param {Function} [options.onHover] - Callback invoked on hover.\n * @param {Function} [options.elementFilter] - Function to filter elements.\n * @returns {boolean} True if started successfully, false if already active.\n */\n start(options) {\n if (this.active) {\n return false;\n }\n this.active = true;\n this.options = options;\n\n document.addEventListener(\"mousemove\", this.handleMouseMove, true);\n document.addEventListener(\"click\", this.handleClick, true);\n\n const parentElement = options.parentElement || document.body;\n const useShadowDOM =\n options.useShadowDOM !== undefined ? options.useShadowDOM : true;\n this.overlay.addToDOM(parentElement, useShadowDOM);\n this.tick();\n\n return true;\n }\n\n /**\n * Stops the element picking process.\n */\n stop() {\n this.active = false;\n this.options = undefined;\n\n document.removeEventListener(\"mousemove\", this.handleMouseMove, true);\n document.removeEventListener(\"click\", this.handleClick, true);\n\n this.overlay.removeFromDOM();\n this.target = undefined;\n this.mouseX = undefined;\n this.mouseY = undefined;\n\n if (this.tickReq) {\n window.cancelAnimationFrame(this.tickReq);\n }\n }\n\n /**\n * Handles mouse move events.\n * @param {MouseEvent} event - The mousemove event.\n */\n handleMouseMove(event) {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n }\n\n /**\n * Handles click events.\n * @param {MouseEvent} event - The click event.\n */\n handleClick(event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (this.target && this.options && this.options.onClick) {\n this.options.onClick(this.target);\n }\n }\n\n /**\n * The tick function that continuously updates the target element.\n */\n tick() {\n this.updateTarget();\n this.tickReq = window.requestAnimationFrame(this.tick);\n }\n\n /**\n * Updates the target element based on the current mouse position.\n */\n updateTarget() {\n if (this.mouseX === undefined || this.mouseY === undefined) {\n return;\n }\n\n // Temporarily ignore the overlay's pointer events to detect the underlying element.\n this.overlay.ignoreCursor();\n const elAtCursor = document.elementFromPoint(this.mouseX, this.mouseY);\n const newTarget = elAtCursor;\n this.overlay.captureCursor();\n\n // If the target hasn't changed, do nothing.\n if (!newTarget || newTarget === this.target) {\n return;\n }\n\n // If an element filter is provided and the new target doesn't match, clear the target.\n if (this.options && this.options.elementFilter) {\n if (!this.options.elementFilter(newTarget)) {\n this.target = undefined;\n this.overlay.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n return;\n }\n }\n\n this.target = newTarget;\n const bounds = getElementBounds(newTarget);\n this.overlay.setBounds(bounds);\n\n if (this.options && this.options.onHover) {\n this.options.onHover(newTarget);\n }\n }\n}\n\nexport default ElementPicker;\n","import unique from \"./unique-selector/src/unique-selector\";\nimport ElementPicker from \"./ElementPicker\";\n\nclass GleapAdminHelper {\n picker = null;\n onElementPicked = null;\n\n stopPicker = () => {\n if (this.picker) {\n this.picker.stop();\n this.picker = null;\n return;\n }\n };\n\n startPicker = () => {\n this.stopPicker();\n var self = this;\n\n const style = {\n borderColor: \"#2142E7\",\n background: \"transparent\",\n borderWidth: \"4px\",\n borderRadius: \"5px\",\n };\n this.picker = new ElementPicker({ style });\n this.picker.start({\n useShadowDOM: false,\n onClick: (el) => {\n try {\n let selector;\n const tourId = el.getAttribute(\"data-gleap-tour\");\n if (tourId) {\n selector = `[data-gleap-tour=\"${tourId}\"]`;\n } else {\n selector = unique(el);\n }\n\n self.onElementPicked && self.onElementPicked(selector);\n } catch (e) {\n console.error(\"Error while getting unique selector\", e);\n }\n },\n elementFilter: (el) => {\n if (\n el.classList.contains(\"gleap-admin-collapse-ui\") ||\n el.closest(\".gleap-admin-collapse-ui\")\n ) {\n return false;\n }\n return true;\n },\n });\n };\n\n setMode = (mode) => {\n this.mode = mode;\n if (mode === \"navigate\") {\n this.stopPicker();\n }\n if (mode === \"picker\") {\n this.startPicker();\n }\n };\n}\n\nexport default GleapAdminHelper;\n","import { loadIcon } from \"./UI\";\nimport GleapAdminHelper from \"./GleapAdminHelper\";\nimport { GleapProductTours } from \"./Gleap\";\n\nexport default class GleapAdminManager {\n libraryInstance = null;\n lastUrl = undefined;\n injectedFrame = false;\n gleapFrameContainer = null;\n gleapCollapseUI = null;\n injectedCollapseUI = false;\n gleapFrame = null;\n configData = null;\n adminHelper = null;\n status = \"navigate\";\n\n // GleapAdminManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapAdminManager();\n }\n\n return this.instance;\n }\n\n logCurrentPage() {\n const currentUrl = window.location.href;\n if (currentUrl && currentUrl !== this.lastUrl) {\n this.lastUrl = currentUrl;\n\n this.sendMessageToTourBuilder({\n name: \"page-changed\",\n data: {\n page: currentUrl,\n },\n });\n }\n }\n\n startPageListener() {\n const self = this;\n setInterval(function () {\n self.logCurrentPage();\n }, 1000);\n }\n\n initAdminHelper() {\n const self = this;\n\n // Disable product tours.\n GleapProductTours.getInstance().disable();\n\n self.adminHelper = new GleapAdminHelper();\n\n try {\n self.adminHelper.onElementPicked = (selector) => {\n self.toggleCollapseUI(true);\n self.sendMessageToTourBuilder({\n name: \"element-picked\",\n data: {\n selector,\n },\n });\n };\n } catch (e) {\n console.log(e);\n }\n\n self.injectFrame();\n self.injectCollapseUI();\n self.setFrameHeight(\"loading\");\n }\n\n setFrameHeight(state) {\n if (this.gleapFrameContainer) {\n var height = \"\";\n if (state === \"picker\" || state === \"navigate\") {\n height = \"65px\";\n } else if (state === \"editor\") {\n height = \"100vh\";\n } else {\n height = \"0px\";\n }\n this.gleapFrameContainer.style.height = height;\n }\n }\n\n start() {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (window.gleapAdminDisabled) {\n return;\n }\n\n var self = this;\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (event.origin !== \"https://app.gleap.io\") {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data.type === \"admin\") {\n if (data.name === \"load\") {\n self.configData = data.data;\n self.initAdminHelper();\n }\n\n if (data.name === \"smartlink-search-result\") {\n this.sendMessageToTourBuilder({\n name: \"smartlink-search-result\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate-complete\") {\n this.sendMessageToTourBuilder({\n name: \"translate-complete\",\n data: data.data,\n });\n }\n }\n\n if (data.type === \"tourbuilder\") {\n if (data.name === \"loaddata\") {\n this.sendMessageToTourBuilder({\n name: \"data\",\n data: {\n ...self.configData,\n currentPage: window.location.href,\n },\n });\n }\n\n if (data.name === \"highlight-element\") {\n // Cleanup.\n document\n .querySelectorAll(\".gleap-admin-highlight\")\n .forEach((el) => {\n el.classList.remove(\"gleap-admin-highlight\");\n });\n\n // Find the element and highlight it.\n if (data?.data?.selector) {\n const element = document.querySelector(data?.data?.selector);\n if (element) {\n element.classList.add(\"gleap-admin-highlight\");\n }\n }\n }\n\n if (data.name === \"smartlink-search\") {\n this.sendMessage({\n name: \"smartlink-search\",\n data: data.data,\n });\n }\n\n if (data.name === \"product-tour-started\") {\n this.sendMessage({\n name: \"product-tour-started\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate\") {\n this.sendMessage({\n name: \"translate\",\n data: data.data,\n });\n }\n\n if (data.name === \"save\") {\n this.sendMessage({\n name: \"save\",\n data: data.data,\n });\n }\n\n if (data.name === \"update-steps\") {\n this.sendMessage({\n name: \"update-steps\",\n data: data.data,\n });\n }\n\n if (data.name === \"click\") {\n try {\n document.querySelector(data.data.selector).click();\n } catch (e) {\n console.log(e);\n }\n }\n\n if (data.name === \"status-changed\") {\n self.status = data.data;\n this.setFrameHeight(self.status);\n self.adminHelper.stopPicker();\n\n if (self.status === \"picker\") {\n self.adminHelper.startPicker();\n }\n }\n }\n } catch (exp) {}\n });\n\n this.sendMessage({\n name: \"init\",\n });\n\n this.startPageListener();\n }\n\n sendMessage(data) {\n try {\n if (window && window.opener) {\n window.opener.postMessage(\n JSON.stringify({\n ...data,\n type: \"admin\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n sendMessageToTourBuilder(data) {\n try {\n if (this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"tourbuilder\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n toggleCollapseUI = (onlyIfActive = false) => {\n const COLLAPSE_UI_ACTIVE_CLASS = \"gleap-admin-collapse-ui-active\";\n const FRAME_CONTAINER_ACTIVE_CLASS = \"gleap-admin-frame-container-active\";\n\n // Helper function to check if an element has an active class\n const isActive = (element, activeClass) =>\n element && element.classList.contains(activeClass);\n\n // Check if onlyIfActive is true and if the UI elements are already inactive\n if (\n onlyIfActive &&\n (!isActive(this.gleapCollapseUI, COLLAPSE_UI_ACTIVE_CLASS) ||\n !isActive(this.gleapFrameContainer, FRAME_CONTAINER_ACTIVE_CLASS))\n ) {\n return; // Return early without toggling the UI\n }\n\n // Toggle the UI elements\n if (this.gleapCollapseUI) {\n this.gleapCollapseUI.classList.toggle(COLLAPSE_UI_ACTIVE_CLASS);\n }\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.toggle(FRAME_CONTAINER_ACTIVE_CLASS);\n }\n };\n\n injectCollapseUI = () => {\n if (this.injectedCollapseUI) {\n return;\n }\n this.injectedCollapseUI = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-collapse-ui\";\n elem.innerHTML = `<div class=\"gleap-admin-collapse-ui-icon\">\n ${loadIcon(\"arrowdown\")}\n </div>`;\n document.body.appendChild(elem);\n\n this.gleapCollapseUI = elem;\n\n elem.addEventListener(\"click\", (e) => {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n\n this.toggleCollapseUI();\n });\n };\n\n injectFrame = () => {\n if (this.injectedFrame) {\n return;\n }\n this.injectedFrame = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-frame-container\";\n elem.innerHTML = `<iframe src=\"https://app.gleap.io/${\n this?.configData?.type === \"tooltips\"\n ? \"tooltipbuilder\"\n : \"producttourbuilder\"\n }\" class=\"gleap-admin-frame\" scrolling=\"no\" title=\"Gleap Admin Window\" allow=\"autoplay; encrypted-media; fullscreen;\" frameborder=\"0\"></iframe>`;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-admin-frame\");\n };\n}\n","const GleapTours = (function () {\n \"use strict\";\n let currentConfig = {};\n function configure(config = {}) {\n currentConfig = {\n animate: true,\n allowClose: true,\n overlayOpacity: 0.7,\n smoothScroll: false,\n disableActiveInteraction: false,\n showProgress: false,\n stagePadding: 10,\n stageRadius: 5,\n popoverOffset: 10,\n showButtons: [\"next\", \"previous\", \"close\"],\n disableButtons: [],\n overlayColor: \"#000\",\n ...config,\n };\n }\n function getConfig(key) {\n return key ? currentConfig[key] : currentConfig;\n }\n function easeInOutQuad(elapsed, initialValue, amountOfChange, duration) {\n if ((elapsed /= duration / 2) < 1) {\n return (amountOfChange / 2) * elapsed * elapsed + initialValue;\n }\n return (\n (-amountOfChange / 2) * (--elapsed * (elapsed - 2) - 1) + initialValue\n );\n }\n function getFocusableElements(parentEls) {\n const focusableQuery =\n 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])';\n return parentEls\n .flatMap((parentEl) => {\n const isParentFocusable = parentEl.matches(focusableQuery);\n const focusableEls = Array.from(\n parentEl.querySelectorAll(focusableQuery)\n );\n return [...(isParentFocusable ? [parentEl] : []), ...focusableEls];\n })\n .filter((el) => {\n return (\n getComputedStyle(el).pointerEvents !== \"none\" && isElementVisible(el)\n );\n });\n }\n function bringInView(element) {\n if (!element || isElementInView(element)) {\n return;\n }\n const shouldSmoothScroll = getConfig(\"smoothScroll\");\n element.scrollIntoView({\n // Removing the smooth scrolling for elements which exist inside the scrollable parent\n // This was causing the highlight to not properly render\n behavior:\n !shouldSmoothScroll || hasScrollableParent(element) ? \"auto\" : \"smooth\",\n inline: \"center\",\n block: \"center\",\n });\n }\n function hasScrollableParent(e) {\n if (!e || !e.parentElement) {\n return;\n }\n const parent = e.parentElement;\n return parent.scrollHeight > parent.clientHeight;\n }\n function isElementInView(element) {\n const rect = element.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n }\n function isElementVisible(el) {\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n }\n let currentState = {};\n function setState(key, value) {\n currentState[key] = value;\n }\n function getState(key) {\n return key ? currentState[key] : currentState;\n }\n function resetState() {\n currentState = {};\n }\n let registeredListeners = {};\n function listen(hook, callback) {\n registeredListeners[hook] = callback;\n }\n function emit(hook) {\n var _a;\n (_a = registeredListeners[hook]) == null\n ? void 0\n : _a.call(registeredListeners);\n }\n function destroyEmitter() {\n registeredListeners = {};\n }\n function transitionStage(elapsed, duration, from, to) {\n let activeStagePosition = getState(\"__activeStagePosition\");\n const fromDefinition = activeStagePosition\n ? activeStagePosition\n : from.getBoundingClientRect();\n const toDefinition = to.getBoundingClientRect();\n const x = easeInOutQuad(\n elapsed,\n fromDefinition.x,\n toDefinition.x - fromDefinition.x,\n duration\n );\n const y = easeInOutQuad(\n elapsed,\n fromDefinition.y,\n toDefinition.y - fromDefinition.y,\n duration\n );\n const width = easeInOutQuad(\n elapsed,\n fromDefinition.width,\n toDefinition.width - fromDefinition.width,\n duration\n );\n const height = easeInOutQuad(\n elapsed,\n fromDefinition.height,\n toDefinition.height - fromDefinition.height,\n duration\n );\n activeStagePosition = {\n x,\n y,\n width,\n height,\n };\n renderOverlay(activeStagePosition);\n setState(\"__activeStagePosition\", activeStagePosition);\n }\n function trackActiveElement(element) {\n if (!element) {\n return;\n }\n const definition = element.getBoundingClientRect();\n const activeStagePosition = {\n x: definition.x,\n y: definition.y,\n width: definition.width,\n height: definition.height,\n };\n setState(\"__activeStagePosition\", activeStagePosition);\n renderOverlay(activeStagePosition);\n }\n function refreshOverlay() {\n const activeStagePosition = getState(\"__activeStagePosition\");\n const overlaySvg = getState(\"__overlaySvg\");\n if (!activeStagePosition) {\n return;\n }\n if (!overlaySvg) {\n console.warn(\"No stage svg found.\");\n return;\n }\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n overlaySvg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n }\n function mountOverlay(stagePosition) {\n const overlaySvg = createOverlaySvg(stagePosition);\n document.body.appendChild(overlaySvg);\n onDriverClick(overlaySvg, (e) => {\n const target = e.target;\n if (target.tagName !== \"path\") {\n return;\n }\n emit(\"overlayClick\");\n });\n setState(\"__overlaySvg\", overlaySvg);\n }\n function renderOverlay(stagePosition) {\n const overlaySvg = getState(\"__overlaySvg\");\n if (!overlaySvg) {\n mountOverlay(stagePosition);\n return;\n }\n const pathElement = overlaySvg.firstElementChild;\n if ((pathElement == null ? void 0 : pathElement.tagName) !== \"path\") {\n throw new Error(\"no path element found in stage svg\");\n }\n pathElement.setAttribute(\"d\", generateStageSvgPathString(stagePosition));\n }\n function createOverlaySvg(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.classList.add(\"gleap-tour-overlay\", \"gleap-tour-overlay-animated\");\n svg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n svg.setAttribute(\"xmlSpace\", \"preserve\");\n svg.setAttribute(\"xmlnsXlink\", \"http://www.w3.org/1999/xlink\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"preserveAspectRatio\", \"xMinYMin slice\");\n svg.style.fillRule = \"evenodd\";\n svg.style.clipRule = \"evenodd\";\n svg.style.strokeLinejoin = \"round\";\n svg.style.strokeMiterlimit = \"2\";\n svg.style.zIndex = \"10000\";\n svg.style.position = \"fixed\";\n svg.style.top = \"0\";\n svg.style.left = \"0\";\n svg.style.width = \"100%\";\n svg.style.height = \"100%\";\n const stagePath = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"path\"\n );\n stagePath.setAttribute(\"d\", generateStageSvgPathString(stage));\n stagePath.style.fill = getConfig(\"overlayColor\") || \"rgb(0,0,0)\";\n stagePath.style.opacity = `${getConfig(\"overlayOpacity\")}`;\n stagePath.style.pointerEvents = \"auto\";\n stagePath.style.cursor = \"auto\";\n svg.appendChild(stagePath);\n return svg;\n }\n function generateStageSvgPathString(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const stageRadius = getConfig(\"stageRadius\") || 0;\n const stageWidth = stage.width + stagePadding * 2;\n const stageHeight = stage.height + stagePadding * 2;\n const limitedRadius = Math.min(\n stageRadius,\n stageWidth / 2,\n stageHeight / 2\n );\n const normalizedRadius = Math.floor(Math.max(limitedRadius, 0));\n const highlightBoxX = stage.x - stagePadding + normalizedRadius;\n const highlightBoxY = stage.y - stagePadding;\n const highlightBoxWidth = stageWidth - normalizedRadius * 2;\n const highlightBoxHeight = stageHeight - normalizedRadius * 2;\n return `M${windowX},0L0,0L0,${windowY}L${windowX},${windowY}L${windowX},0Z\n M${highlightBoxX},${highlightBoxY} h${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},${normalizedRadius} v${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},${normalizedRadius} h-${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},-${normalizedRadius} v-${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},-${normalizedRadius} z`;\n }\n function destroyOverlay() {\n const overlaySvg = getState(\"__overlaySvg\");\n if (overlaySvg) {\n overlaySvg.remove();\n }\n }\n function mountDummyElement() {\n const existingDummy = document.getElementById(\"gleap-tour-dummy-element\");\n if (existingDummy) {\n return existingDummy;\n }\n let element = document.createElement(\"div\");\n element.id = \"gleap-tour-dummy-element\";\n element.style.width = \"0\";\n element.style.height = \"0\";\n element.style.pointerEvents = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.top = \"50%\";\n element.style.left = \"50%\";\n document.body.appendChild(element);\n return element;\n }\n function highlight(step, attemptTime = 5000) {\n const { element } = step;\n let elemObj = element;\n if (typeof elemObj === \"string\") {\n try {\n elemObj = document.querySelector(element);\n } catch (error) {\n // This will escape colons within IDs but not affect pseudo-classes or other valid uses of colons\n let refactoredElement = element.replace(\n /(#[^#\\s]+)/g,\n function (match) {\n return match.replace(/:/g, \"\\\\:\");\n }\n );\n elemObj = document.querySelector(refactoredElement);\n }\n }\n if (element && !elemObj && attemptTime >= 0) {\n setTimeout(() => {\n hidePopover();\n highlight(step, attemptTime - 100);\n }, 100);\n\n return;\n }\n\n if (!elemObj) {\n if (step.mode === \"INPUT\" || step.mode === \"CLICK\") {\n return getConfig(\"onElementNotFound\")(step);\n }\n }\n\n if (!elemObj) {\n elemObj = mountDummyElement();\n }\n\n transferHighlight(elemObj, step);\n }\n function refreshActiveHighlight() {\n const activeHighlight = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n if (!activeHighlight) {\n return;\n }\n trackActiveElement(activeHighlight);\n refreshOverlay();\n repositionPopover(activeHighlight, activeStep);\n }\n function transferHighlight(toElement, toStep) {\n const duration = 400;\n const start = Date.now();\n const fromStep = getState(\"__activeStep\");\n const fromElement = getState(\"__activeElement\") || toElement;\n const isFirstHighlight = !fromElement || fromElement === toElement;\n const isToDummyElement = toElement.id === \"gleap-tour-dummy-element\";\n const isFromDummyElement = fromElement.id === \"gleap-tour-dummy-element\";\n const isAnimatedTour = getConfig(\"animate\");\n const highlightStartedHook =\n toStep.onHighlightStarted || getConfig(\"onHighlightStarted\");\n const highlightedHook =\n (toStep == null ? void 0 : toStep.onHighlighted) ||\n getConfig(\"onHighlighted\");\n const deselectedHook =\n (fromStep == null ? void 0 : fromStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const config = getConfig();\n const state = getState();\n if (!isFirstHighlight && deselectedHook) {\n deselectedHook(isFromDummyElement ? void 0 : fromElement, fromStep, {\n config,\n state,\n });\n }\n if (highlightStartedHook) {\n highlightStartedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config,\n state,\n });\n }\n const hasDelayedPopover = !isFirstHighlight && isAnimatedTour;\n let isPopoverRendered = false;\n hidePopover();\n setState(\"previousStep\", fromStep);\n setState(\"previousElement\", fromElement);\n setState(\"activeStep\", toStep);\n setState(\"activeElement\", toElement);\n const animate = () => {\n const transitionCallback = getState(\"__transitionCallback\");\n if (transitionCallback !== animate) {\n return;\n }\n const elapsed = Date.now() - start;\n const timeRemaining = duration - elapsed;\n const isHalfwayThrough = timeRemaining <= duration / 2;\n if (\n toStep.popover &&\n isHalfwayThrough &&\n !isPopoverRendered &&\n hasDelayedPopover\n ) {\n renderPopover(toElement, toStep);\n isPopoverRendered = true;\n }\n if (getConfig(\"animate\") && elapsed < duration) {\n transitionStage(elapsed, duration, fromElement, toElement);\n } else {\n trackActiveElement(toElement);\n if (highlightedHook) {\n highlightedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n setState(\"__transitionCallback\", void 0);\n setState(\"__previousStep\", fromStep);\n setState(\"__previousElement\", fromElement);\n setState(\"__activeStep\", toStep);\n setState(\"__activeElement\", toElement);\n }\n window.requestAnimationFrame(animate);\n };\n setState(\"__transitionCallback\", animate);\n window.requestAnimationFrame(animate);\n bringInView(toElement);\n if (!hasDelayedPopover && toStep.popover) {\n renderPopover(toElement, toStep);\n }\n fromElement.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n fromElement.removeAttribute(\"aria-haspopup\");\n fromElement.removeAttribute(\"aria-expanded\");\n fromElement.removeAttribute(\"aria-controls\");\n const disableActiveInteraction =\n toStep.disableActiveInteraction ??\n getConfig(\"disableActiveInteraction\") ??\n false;\n if (disableActiveInteraction) {\n toElement.classList.add(\"gleap-tour-no-interaction\");\n }\n toElement.classList.add(\"gleap-tour-active-element\");\n toElement.setAttribute(\"aria-haspopup\", \"dialog\");\n toElement.setAttribute(\"aria-expanded\", \"true\");\n toElement.setAttribute(\"aria-controls\", \"gleap-tour-popover-content\");\n }\n function destroyHighlight() {\n var _a;\n (_a = document.getElementById(\"gleap-tour-dummy-element\")) == null\n ? void 0\n : _a.remove();\n document\n .querySelectorAll(\".gleap-tour-active-element\")\n .forEach((element) => {\n element.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n element.removeAttribute(\"aria-haspopup\");\n element.removeAttribute(\"aria-expanded\");\n element.removeAttribute(\"aria-controls\");\n });\n }\n function requireRefresh() {\n const resizeTimeout = getState(\"__resizeTimeout\");\n if (resizeTimeout) {\n window.cancelAnimationFrame(resizeTimeout);\n }\n setState(\n \"__resizeTimeout\",\n window.requestAnimationFrame(refreshActiveHighlight)\n );\n }\n function trapFocus(e) {\n var _a;\n const isActivated = getState(\"isInitialized\");\n if (!isActivated) {\n return;\n }\n const isTabKey = e.key === \"Tab\" || e.keyCode === 9;\n if (!isTabKey) {\n return;\n }\n const activeElement = getState(\"__activeElement\");\n const popoverEl = (_a = getState(\"popover\")) == null ? void 0 : _a.wrapper;\n const focusableEls = getFocusableElements([\n ...(popoverEl ? [popoverEl] : []),\n ...(activeElement ? [activeElement] : []),\n ]);\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n e.preventDefault();\n if (e.shiftKey) {\n const previousFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) - 1] ||\n lastFocusableEl;\n previousFocusableEl == null ? void 0 : previousFocusableEl.focus();\n } else {\n const nextFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) + 1] ||\n firstFocusableEl;\n nextFocusableEl == null ? void 0 : nextFocusableEl.focus();\n }\n }\n function onKeyup(e) {\n var _a;\n const allowKeyboardControl =\n (_a = getConfig(\"allowKeyboardControl\")) != null ? _a : true;\n if (!allowKeyboardControl) {\n return;\n }\n if (e.key === \"Escape\") {\n emit(\"escapePress\");\n } else if (e.key === \"ArrowRight\") {\n emit(\"arrowRightPress\");\n } else if (e.key === \"ArrowLeft\") {\n emit(\"arrowLeftPress\");\n }\n }\n function onDriverClick(element, listener, shouldPreventDefault) {\n const listenerWrapper = (e, listener2) => {\n const target = e.target;\n if (!element.contains(target)) {\n return;\n }\n if (!shouldPreventDefault || shouldPreventDefault(target)) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n listener2 == null ? void 0 : listener2(e);\n };\n const useCapture = true;\n document.addEventListener(\"pointerdown\", listenerWrapper, useCapture);\n document.addEventListener(\"mousedown\", listenerWrapper, useCapture);\n document.addEventListener(\"pointerup\", listenerWrapper, useCapture);\n document.addEventListener(\"mouseup\", listenerWrapper, useCapture);\n document.addEventListener(\n \"click\",\n (e) => {\n listenerWrapper(e, listener);\n },\n useCapture\n );\n }\n function initEvents() {\n window.addEventListener(\"keyup\", onKeyup, false);\n window.addEventListener(\"keydown\", trapFocus, false);\n window.addEventListener(\"resize\", requireRefresh);\n window.addEventListener(\"scroll\", requireRefresh);\n }\n function destroyEvents() {\n window.removeEventListener(\"keyup\", onKeyup);\n window.removeEventListener(\"resize\", requireRefresh);\n window.removeEventListener(\"scroll\", requireRefresh);\n }\n function hidePopover() {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n popover.wrapper.style.display = \"none\";\n }\n function renderPopover(element, step) {\n var _a, _b;\n let popover = getState(\"popover\");\n if (popover) {\n document.body.removeChild(popover.wrapper);\n }\n popover = createPopover();\n document.body.appendChild(popover.wrapper);\n const {\n title,\n description,\n showButtons,\n disableButtons,\n showProgress,\n nextBtnText = getConfig(\"nextBtnText\") || \"Next\",\n prevBtnText = getConfig(\"prevBtnText\") || \"Previous\",\n progressText = getConfig(\"progressText\") || \"{current} of {total}\",\n } = step.popover || {};\n popover.nextButton.innerHTML = nextBtnText;\n popover.previousButton.innerHTML = prevBtnText;\n popover.progress.innerHTML = progressText;\n if (title) {\n popover.title.innerHTML = title;\n popover.title.style.display = \"block\";\n } else {\n popover.title.style.display = \"none\";\n }\n if (description) {\n popover.description.innerHTML = description;\n popover.description.style.display = \"block\";\n } else {\n popover.description.style.display = \"none\";\n }\n const showButtonsConfig = showButtons || getConfig(\"showButtons\");\n const showProgressConfig =\n showProgress || getConfig(\"showProgress\") || false;\n const showFooter =\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"next\")) ||\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"previous\")) ||\n showProgressConfig;\n popover.closeButton.style.display = showButtonsConfig.includes(\"close\")\n ? \"block\"\n : \"none\";\n if (showFooter) {\n popover.footer.style.display = \"flex\";\n popover.progress.style.display = showProgressConfig ? \"block\" : \"none\";\n popover.nextButton.style.display = showButtonsConfig.includes(\"next\")\n ? \"block\"\n : \"none\";\n popover.previousButton.style.display = showButtonsConfig.includes(\n \"previous\"\n )\n ? \"block\"\n : \"none\";\n } else {\n popover.footer.style.display = \"none\";\n }\n const disabledButtonsConfig =\n disableButtons || getConfig(\"disableButtons\") || [];\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"next\")\n ) {\n popover.nextButton.disabled = true;\n popover.nextButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"previous\")\n ) {\n popover.previousButton.disabled = true;\n popover.previousButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"close\")\n ) {\n popover.closeButton.disabled = true;\n popover.closeButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n const popoverWrapper = popover.wrapper;\n popoverWrapper.style.display = \"block\";\n popoverWrapper.style.left = \"\";\n popoverWrapper.style.top = \"\";\n popoverWrapper.style.bottom = \"\";\n popoverWrapper.style.right = \"\";\n popoverWrapper.id = \"gleap-tour-popover-content\";\n popoverWrapper.setAttribute(\"role\", \"dialog\");\n popoverWrapper.setAttribute(\"aria-labelledby\", \"gleap-tour-popover-title\");\n popoverWrapper.setAttribute(\n \"aria-describedby\",\n \"gleap-tour-popover-description\"\n );\n const popoverArrow = popover.arrow;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n const customPopoverClass =\n ((_a = step.popover) == null ? void 0 : _a.popoverClass) ||\n getConfig(\"popoverClass\") ||\n \"\";\n popoverWrapper.className =\n `gleap-tour-popover ${customPopoverClass}`.trim();\n onDriverClick(\n popover.wrapper,\n (e) => {\n var _a2, _b2, _c;\n const target = e.target;\n const onNextClick =\n ((_a2 = step.popover) == null ? void 0 : _a2.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_b2 = step.popover) == null ? void 0 : _b2.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_c = step.popover) == null ? void 0 : _c.onCloseClick) ||\n getConfig(\"onCloseClick\");\n if (target.classList.contains(\"gleap-tour-popover-next-btn\")) {\n if (onNextClick) {\n return onNextClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"nextClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-prev-btn\")) {\n if (onPrevClick) {\n return onPrevClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"prevClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-close-btn\")) {\n if (onCloseClick) {\n return onCloseClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"closeClick\");\n }\n }\n return void 0;\n },\n (target) => {\n return (\n !(popover == null ? void 0 : popover.description.contains(target)) &&\n !(popover == null ? void 0 : popover.title.contains(target)) &&\n typeof target.className === \"string\" &&\n target.className.includes(\"gleap-tour-popover\")\n );\n }\n );\n setState(\"popover\", popover);\n const onPopoverRender =\n ((_b = step.popover) == null ? void 0 : _b.onPopoverRender) ||\n getConfig(\"onPopoverRender\");\n if (onPopoverRender) {\n onPopoverRender(popover, {\n config: getConfig(),\n state: getState(),\n });\n }\n repositionPopover(element, step);\n bringInView(popoverWrapper);\n const isToDummyElement = element.classList.contains(\n \"gleap-tour-dummy-element\"\n );\n const focusableElement = getFocusableElements([\n popoverWrapper,\n ...(isToDummyElement ? [] : [element]),\n ]);\n if (focusableElement.length > 0) {\n focusableElement[0].focus();\n }\n }\n function getPopoverDimensions() {\n const popover = getState(\"popover\");\n if (!(popover == null ? void 0 : popover.wrapper)) {\n return;\n }\n const boundingClientRect = popover.wrapper.getBoundingClientRect();\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const popoverOffset = getConfig(\"popoverOffset\") || 0;\n return {\n width: boundingClientRect.width + stagePadding + popoverOffset,\n height: boundingClientRect.height + stagePadding + popoverOffset,\n realWidth: boundingClientRect.width,\n realHeight: boundingClientRect.height,\n };\n }\n function calculateTopForLeftRight(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.top - popoverPadding,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.top -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) +\n elementDimensions.height +\n popoverPadding,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.top +\n elementDimensions.height / 2 -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) /\n 2,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function calculateLeftForTopBottom(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.left - popoverPadding,\n window.innerWidth -\n popoverDimensions.realWidth -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.left -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) +\n elementDimensions.width +\n popoverPadding,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.left +\n elementDimensions.width / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) /\n 2,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function repositionPopover(element, step) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const { align = \"start\", side = \"left\" } =\n (step == null ? void 0 : step.popover) || {};\n const requiredAlignment = align;\n const requiredSide =\n element.id === \"gleap-tour-dummy-element\" ? \"over\" : side;\n const popoverPadding = getConfig(\"stagePadding\") || 0;\n const popoverDimensions = getPopoverDimensions();\n const popoverArrowDimensions = popover.arrow.getBoundingClientRect();\n const elementDimensions = element.getBoundingClientRect();\n const topValue = elementDimensions.top - popoverDimensions.height;\n let isTopOptimal = topValue >= 0;\n const bottomValue =\n window.innerHeight -\n (elementDimensions.bottom + popoverDimensions.height);\n let isBottomOptimal = bottomValue >= 0;\n const leftValue = elementDimensions.left - popoverDimensions.width;\n let isLeftOptimal = leftValue >= 0;\n const rightValue =\n window.innerWidth - (elementDimensions.right + popoverDimensions.width);\n let isRightOptimal = rightValue >= 0;\n const noneOptimal =\n !isTopOptimal && !isBottomOptimal && !isLeftOptimal && !isRightOptimal;\n let popoverRenderedSide = requiredSide;\n if (requiredSide === \"top\" && isTopOptimal) {\n isRightOptimal = isLeftOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"bottom\" && isBottomOptimal) {\n isRightOptimal = isLeftOptimal = isTopOptimal = false;\n } else if (requiredSide === \"left\" && isLeftOptimal) {\n isRightOptimal = isTopOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"right\" && isRightOptimal) {\n isLeftOptimal = isTopOptimal = isBottomOptimal = false;\n }\n if (requiredSide === \"over\") {\n const leftToSet = window.innerWidth / 2 - popoverDimensions.realWidth / 2;\n const topToSet =\n window.innerHeight / 2 - popoverDimensions.realHeight / 2;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n } else if (noneOptimal) {\n const leftValue2 =\n window.innerWidth / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) / 2;\n const bottomValue2 = 10;\n popover.wrapper.style.left = `${leftValue2}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.bottom = `${bottomValue2}px`;\n popover.wrapper.style.top = `auto`;\n } else if (isLeftOptimal) {\n const leftToSet = Math.min(\n leftValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"left\";\n } else if (isRightOptimal) {\n const rightToSet = Math.min(\n rightValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.right = `${rightToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.left = \"auto\";\n popoverRenderedSide = \"right\";\n } else if (isTopOptimal) {\n const topToSet = Math.min(\n topValue,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"top\";\n } else if (isBottomOptimal) {\n const bottomToSet = Math.min(\n bottomValue,\n window.innerHeight -\n (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `${bottomToSet}px`;\n popover.wrapper.style.top = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"bottom\";\n }\n if (!noneOptimal) {\n renderPopoverArrow(requiredAlignment, popoverRenderedSide, element);\n } else {\n popover.arrow.classList.add(\"gleap-tour-popover-arrow-none\");\n }\n }\n function renderPopoverArrow(alignment, side, element) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const elementDimensions = element.getBoundingClientRect();\n const popoverDimensions = getPopoverDimensions();\n const popoverArrow = popover.arrow;\n const popoverWidth = popoverDimensions.width;\n const windowWidth = window.innerWidth;\n const elementWidth = elementDimensions.width;\n const elementLeft = elementDimensions.left;\n const popoverHeight = popoverDimensions.height;\n const windowHeight = window.innerHeight;\n const elementTop = elementDimensions.top;\n const elementHeight = elementDimensions.height;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n let arrowSide = side;\n let arrowAlignment = alignment;\n if (side === \"top\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"bottom\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"left\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"right\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n }\n } else;\n if (!arrowSide) {\n popoverArrow.classList.add(\"gleap-tour-popover-arrow-none\");\n } else {\n popoverArrow.classList.add(`gleap-tour-popover-arrow-side-${arrowSide}`);\n popoverArrow.classList.add(\n `gleap-tour-popover-arrow-align-${arrowAlignment}`\n );\n }\n }\n function createPopover() {\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(\"gleap-tour-popover\");\n const arrow = document.createElement(\"div\");\n arrow.classList.add(\"gleap-tour-popover-arrow\");\n const title = document.createElement(\"div\");\n title.id = \"gleap-tour-popover-title\";\n title.classList.add(\"gleap-tour-popover-title\");\n title.style.display = \"none\";\n title.innerText = \"Popover Title\";\n const description = document.createElement(\"div\");\n description.id = \"gleap-tour-popover-description\";\n description.classList.add(\"gleap-tour-popover-description\");\n description.style.display = \"none\";\n description.innerText = \"Popover description is here\";\n const closeButton = document.createElement(\"button\");\n closeButton.type = \"button\";\n closeButton.classList.add(\"gleap-tour-popover-close-btn\");\n closeButton.setAttribute(\"aria-label\", \"Close\");\n closeButton.innerHTML = \"×\";\n const footer = document.createElement(\"div\");\n footer.classList.add(\"gleap-tour-popover-footer\");\n const progress = document.createElement(\"span\");\n progress.classList.add(\"gleap-tour-popover-progress-text\");\n progress.innerText = \"\";\n const footerButtons = document.createElement(\"span\");\n footerButtons.classList.add(\"gleap-tour-popover-navigation-btns\");\n const previousButton = document.createElement(\"button\");\n previousButton.type = \"button\";\n previousButton.classList.add(\"gleap-tour-popover-prev-btn\");\n previousButton.innerHTML = \"← Previous\";\n const nextButton = document.createElement(\"button\");\n nextButton.type = \"button\";\n nextButton.classList.add(\"gleap-tour-popover-next-btn\");\n nextButton.innerHTML = \"Next →\";\n footerButtons.appendChild(previousButton);\n footerButtons.appendChild(nextButton);\n footer.appendChild(progress);\n footer.appendChild(footerButtons);\n wrapper.appendChild(closeButton);\n wrapper.appendChild(arrow);\n wrapper.appendChild(title);\n wrapper.appendChild(description);\n wrapper.appendChild(footer);\n return {\n wrapper,\n arrow,\n title,\n description,\n footer,\n previousButton,\n nextButton,\n closeButton,\n footerButtons,\n progress,\n };\n }\n function destroyPopover() {\n var _a;\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n (_a = popover.wrapper.parentElement) == null\n ? void 0\n : _a.removeChild(popover.wrapper);\n }\n function driver(options = {}) {\n configure(options);\n function handleClose() {\n if (!getConfig(\"allowClose\")) {\n return;\n }\n destroy();\n }\n function moveNext() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const nextStepIndex = activeIndex + 1;\n if (steps[nextStepIndex]) {\n drive(nextStepIndex);\n } else {\n destroy();\n }\n }\n function movePrevious() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const previousStepIndex = activeIndex - 1;\n if (steps[previousStepIndex]) {\n drive(previousStepIndex);\n } else {\n destroy();\n }\n }\n function moveTo(index) {\n const steps = getConfig(\"steps\") || [];\n if (steps[index]) {\n drive(index);\n } else {\n destroy();\n }\n }\n function handleArrowLeft() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const currentStepIndex = getState(\"activeIndex\");\n if (typeof currentStepIndex === \"undefined\") {\n return;\n }\n const onPrevClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onPrevClick) ||\n getConfig(\"onPrevClick\");\n if (onPrevClick) {\n return onPrevClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n movePrevious();\n }\n function handleArrowRight() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const onNextClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onNextClick) ||\n getConfig(\"onNextClick\");\n if (onNextClick) {\n return onNextClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n moveNext();\n }\n function init() {\n if (getState(\"isInitialized\")) {\n return;\n }\n setState(\"isInitialized\", true);\n document.body.classList.add(\n \"gleap-tour-active\",\n getConfig(\"animate\") ? \"gleap-tour-fade\" : \"gleap-tour-simple\"\n );\n initEvents();\n listen(\"overlayClick\", handleClose);\n listen(\"escapePress\", handleClose);\n listen(\"arrowLeftPress\", handleArrowLeft);\n listen(\"arrowRightPress\", handleArrowRight);\n }\n function drive(stepIndex = 0) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const steps = getConfig(\"steps\");\n if (!steps) {\n console.error(\"No steps to drive through\");\n destroy();\n return;\n }\n if (!steps[stepIndex]) {\n destroy();\n return;\n }\n setState(\"__activeOnDestroyed\", document.activeElement);\n setState(\"activeIndex\", stepIndex);\n const currentStep = steps[stepIndex];\n const hasNextStep = steps[stepIndex + 1];\n const hasPreviousStep = steps[stepIndex - 1];\n const doneBtnText =\n ((_a = currentStep.popover) == null ? void 0 : _a.doneBtnText) ||\n getConfig(\"doneBtnText\") ||\n \"Done\";\n const allowsClosing = getConfig(\"allowClose\");\n const showProgress =\n typeof ((_b = currentStep.popover) == null\n ? void 0\n : _b.showProgress) !== \"undefined\"\n ? (_c = currentStep.popover) == null\n ? void 0\n : _c.showProgress\n : getConfig(\"showProgress\");\n const progressText =\n ((_d = currentStep.popover) == null ? void 0 : _d.progressText) ||\n getConfig(\"progressText\") ||\n \"{{current}} of {{total}}\";\n const progressTextReplaced = progressText\n .replace(\"{{current}}\", `${stepIndex + 1}`)\n .replace(\"{{total}}\", `${steps.length}`);\n const configuredButtons =\n ((_e = currentStep.popover) == null ? void 0 : _e.showButtons) ||\n getConfig(\"showButtons\");\n const calculatedButtons = [\n \"next\",\n \"previous\",\n ...(allowsClosing ? [\"close\"] : []),\n ].filter((b) => {\n return (\n !(configuredButtons == null ? void 0 : configuredButtons.length) ||\n configuredButtons.includes(b)\n );\n });\n const onNextClick =\n ((_f = currentStep.popover) == null ? void 0 : _f.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_g = currentStep.popover) == null ? void 0 : _g.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_h = currentStep.popover) == null ? void 0 : _h.onCloseClick) ||\n getConfig(\"onCloseClick\");\n highlight({\n ...currentStep,\n popover: {\n showButtons: calculatedButtons,\n nextBtnText: !hasNextStep ? doneBtnText : void 0,\n disableButtons: [...(!hasPreviousStep ? [\"previous\"] : [])],\n showProgress,\n progressText: progressTextReplaced,\n onNextClick: onNextClick\n ? onNextClick\n : () => {\n if (!hasNextStep) {\n destroy();\n } else {\n drive(stepIndex + 1);\n }\n },\n onPrevClick: onPrevClick\n ? onPrevClick\n : () => {\n drive(stepIndex - 1);\n },\n onCloseClick: onCloseClick\n ? onCloseClick\n : () => {\n destroy();\n },\n ...((currentStep == null ? void 0 : currentStep.popover) || {}),\n },\n });\n }\n function destroy(withOnDestroyStartedHook = true) {\n const activeElement = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n const activeOnDestroyed = getState(\"__activeOnDestroyed\");\n const onDestroyStarted = getConfig(\"onDestroyStarted\");\n if (withOnDestroyStartedHook && onDestroyStarted) {\n const isActiveDummyElement =\n !activeElement ||\n (activeElement == null ? void 0 : activeElement.id) ===\n \"gleap-tour-dummy-element\";\n onDestroyStarted(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n return;\n }\n const onDeselected =\n (activeStep == null ? void 0 : activeStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const onDestroyed = getConfig(\"onDestroyed\");\n document.body.classList.remove(\n \"gleap-tour-active\",\n \"gleap-tour-fade\",\n \"gleap-tour-simple\"\n );\n destroyEvents();\n destroyPopover();\n destroyHighlight();\n destroyOverlay();\n destroyEmitter();\n resetState();\n if (activeElement && activeStep) {\n const isActiveDummyElement =\n activeElement.id === \"gleap-tour-dummy-element\";\n if (onDeselected) {\n onDeselected(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n if (onDestroyed) {\n onDestroyed(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n }\n if (activeOnDestroyed) {\n activeOnDestroyed.focus();\n }\n }\n return {\n isActive: () => getState(\"isInitialized\") || false,\n refresh: requireRefresh,\n drive: (stepIndex = 0) => {\n init();\n drive(stepIndex);\n },\n setConfig: configure,\n setSteps: (steps) => {\n resetState();\n configure({\n ...getConfig(),\n steps,\n });\n },\n getConfig,\n getState,\n getActiveIndex: () => getState(\"activeIndex\"),\n isFirstStep: () => getState(\"activeIndex\") === 0,\n isLastStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && activeIndex === steps.length - 1;\n },\n getActiveStep: () => getState(\"activeStep\"),\n getActiveElement: () => getState(\"activeElement\"),\n getPreviousElement: () => getState(\"previousElement\"),\n getPreviousStep: () => getState(\"previousStep\"),\n moveNext,\n movePrevious,\n moveTo,\n hasNextStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex + 1];\n },\n hasPreviousStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex - 1];\n },\n highlight: (step) => {\n init();\n highlight({\n ...step,\n popover: step.popover\n ? {\n showButtons: [],\n showProgress: false,\n progressText: \"\",\n ...step.popover,\n }\n : void 0,\n });\n },\n destroy: () => {\n destroy(false);\n },\n };\n }\n return driver;\n})({});\n\nexport default GleapTours;\n","import { GleapConfigManager, GleapTranslationManager } from \"./Gleap\";\nimport { calculateContrast, loadIcon } from \"./UI\";\n\nconst localStorageKey = \"gleap-tour-data\";\nconst pointerContainerId = \"copilot-pointer-container\";\nconst styleId = \"copilot-tour-styles\";\nconst copilotJoinedContainerId = \"copilot-joined-container\";\n\nfunction estimateReadTime(text) {\n if (typeof window === \"undefined\") return;\n\n const wordsPerSecond = 3.6; // Average reading speed\n const wordCount = text.split(/\\s+/).filter((word) => word.length > 0).length;\n const readTimeInSeconds = Math.ceil(wordCount / wordsPerSecond);\n return readTimeInSeconds + 1;\n}\n\nfunction htmlToPlainText(html) {\n if (typeof window === \"undefined\") return;\n\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = html;\n return tempDiv.textContent || \"\";\n}\n\nfunction scrollToElement(element) {\n if (typeof window === \"undefined\") return;\n\n if (element) {\n element.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"center\",\n });\n }\n}\n\nfunction performClickAnimation(posX, posY) {\n if (typeof window === \"undefined\") return;\n\n const wave = document.createElement(\"div\");\n wave.className = \"click-wave\";\n wave.style.left = `${posX - 17}px`;\n wave.style.top = `${posY - 17}px`;\n document.body.appendChild(wave);\n setTimeout(() => {\n wave.remove();\n }, 800);\n}\n\nfunction waitForElement(selector, timeout = 5000) {\n if (typeof window === \"undefined\") return;\n\n const pollInterval = 100;\n const maxAttempts = timeout / pollInterval;\n let attempts = 0;\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n const element = document.querySelector(selector);\n if (element) {\n clearInterval(interval);\n resolve(element);\n } else if (attempts >= maxAttempts) {\n clearInterval(interval);\n reject(new Error(`Element not found for selector: ${selector}`));\n }\n attempts++;\n }, pollInterval);\n });\n}\n\nfunction smoothScrollToY(yPosition) {\n if (typeof window === \"undefined\") return;\n\n const viewportHeight = window.innerHeight;\n const targetScrollPosition = yPosition - viewportHeight / 2;\n window.scrollTo({\n top: targetScrollPosition,\n behavior: \"smooth\",\n });\n}\n\nasync function canPlayAudio() {\n if (typeof window === \"undefined\") return;\n\n const audio = new Audio(\n \"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBAAAAABAAEARKwAABCxAgAEABAAZGF0YQAAAAA=\"\n );\n try {\n await audio.play();\n return true;\n } catch (err) {\n return false;\n }\n}\n\n// Helper: Check if an element is fully visible in the viewport.\nfunction isElementFullyVisible(el) {\n if (typeof window === \"undefined\") return;\n\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= window.innerHeight &&\n rect.right <= window.innerWidth\n );\n}\n\n// Helper: Get scrollable ancestors of an element.\nfunction getScrollableAncestors(el) {\n if (typeof window === \"undefined\") return;\n\n let ancestors = [];\n let current = el.parentElement;\n while (current) {\n const style = window.getComputedStyle(current);\n if (\n (style.overflowY === \"auto\" || style.overflowY === \"scroll\") &&\n current.scrollHeight > current.clientHeight\n ) {\n ancestors.push(current);\n }\n current = current.parentElement;\n }\n return ancestors;\n}\n\nexport default class GleapCopilotTours {\n productTourData = undefined;\n productTourId = undefined;\n currentActiveIndex = undefined;\n lastArrowPositionX = undefined;\n lastArrowPositionY = undefined;\n onCompleteCallback = undefined;\n audioMuted = false;\n currentAudio = undefined;\n\n // Cached pointer container.\n _pointerContainer = null;\n // For scroll handling.\n _scrollListeners = [];\n _currentAnchor = null;\n _currentStep = null;\n _scrollDebounceTimer = null;\n\n // GleapReplayRecorder singleton.\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCopilotTours();\n }\n return this.instance;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n this._scrollListeners = [];\n this._currentAnchor = null;\n this._currentStep = null;\n this._scrollDebounceTimer = null;\n\n window.addEventListener(\"resize\", () => {\n if (\n self.productTourId &&\n self.currentActiveIndex >= 0 &&\n self.productTourData &&\n self.productTourData.steps\n ) {\n const steps = self.productTourData.steps;\n const currentStep = steps[self.currentActiveIndex];\n if (\n currentStep &&\n currentStep.selector &&\n currentStep.selector !== \"\"\n ) {\n self.updatePointerPosition(\n document.querySelector(currentStep.selector),\n currentStep\n );\n }\n }\n });\n }\n }\n\n disable() {\n this.disabled = true;\n \n this.cleanup();\n }\n\n startWithConfig(tourId, config, onCompleteCallback = undefined) {\n if (typeof window === \"undefined\") return;\n if (this.productTourId) return;\n if (this.disabled) return;\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n this.onCompleteCallback = onCompleteCallback;\n this.start();\n }\n\n storeUncompletedTour() {\n if (typeof window === \"undefined\") return;\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {\n // Optionally log error in development mode.\n }\n } else {\n localStorage.removeItem(localStorageKey);\n }\n }\n\n // Attach scroll listeners with a debounce to update the pointer position after scrolling stops.\n attachScrollListeners(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n if (!anchor) return;\n const scrollableAncestors = getScrollableAncestors(anchor);\n // Also include window.\n scrollableAncestors.push(window);\n scrollableAncestors.forEach((el) => {\n const handler = () => {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = setTimeout(() => {\n this.updatePointerPosition(anchor, currentStep);\n }, 150);\n };\n el.addEventListener(\"scroll\", handler, { passive: true });\n this._scrollListeners.push({ el, handler });\n });\n }\n\n // Remove scroll listeners and clear debounce timer.\n removeScrollListeners() {\n if (typeof window === \"undefined\") return;\n if (this._scrollListeners && this._scrollListeners.length > 0) {\n this._scrollListeners.forEach(({ el, handler }) => {\n el.removeEventListener(\"scroll\", handler);\n });\n this._scrollListeners = [];\n }\n if (this._scrollDebounceTimer) {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = null;\n }\n }\n\n // Updated pointer position:\n // 1. Scroll the element into view.\n // 2. After the element is fully visible (or after a maximum delay), update the pointer position to point towards the element.\n updatePointerPosition(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n try {\n const container =\n this._pointerContainer || document.getElementById(pointerContainerId);\n if (!container) return;\n\n if (!anchor) {\n container.style.position = \"fixed\";\n container.style.left = \"50%\";\n container.style.top = \"50%\";\n container.style.transform = \"translate(-50%, -50%)\";\n smoothScrollToY(window.innerHeight / 2);\n this.removeScrollListeners();\n this._currentAnchor = null;\n this._currentStep = null;\n return;\n }\n\n // Step 1: Scroll the element into view.\n scrollToElement(anchor);\n\n // Step 2: Poll until the element is fully visible (or after maximum polls).\n const pollInterval = 100;\n const maxPolls = 20;\n let pollCount = 0;\n const updateFinalPosition = () => {\n if (isElementFullyVisible(anchor) || pollCount >= maxPolls) {\n // Compute final target coordinates.\n const anchorRect = anchor.getBoundingClientRect();\n const targetX = anchorRect.left + anchorRect.width / 2;\n const targetY = anchorRect.top + anchorRect.height / 2 + 10; // 10px downward offset.\n container.style.position = \"fixed\";\n container.style.left = `${targetX}px`;\n container.style.top = `${targetY}px`;\n container.style.transform = \"translate(-50%, -50%)\";\n\n // Adjust container if too far right.\n let containerWidthSpace = 350;\n if (containerWidthSpace > window.innerWidth - 40) {\n containerWidthSpace = window.innerWidth - 40;\n }\n if (targetX + containerWidthSpace > window.innerWidth - 20) {\n container.classList.add(\"copilot-pointer-container-right\");\n } else {\n container.classList.remove(\"copilot-pointer-container-right\");\n }\n\n // Reattach scroll listeners if the target or step has changed.\n if (\n this._currentAnchor !== anchor ||\n this._currentStep !== currentStep\n ) {\n this.removeScrollListeners();\n this._currentAnchor = anchor;\n this._currentStep = currentStep;\n this.attachScrollListeners(anchor, currentStep);\n }\n } else {\n pollCount++;\n setTimeout(updateFinalPosition, pollInterval);\n }\n };\n updateFinalPosition();\n } catch (e) {\n // Optionally log errors.\n }\n }\n\n cleanup() {\n if (typeof window === \"undefined\") return;\n document.body.classList.add(\"gl-copilot-fade-out\");\n if (this.currentAudio) {\n this.currentAudio.pause();\n }\n setTimeout(() => {\n if (this._pointerContainer) {\n this._pointerContainer.remove();\n this._pointerContainer = null;\n } else {\n const container = document.getElementById(pointerContainerId);\n if (container) container.remove();\n }\n const copilotInfoContainer = document.getElementById(\n copilotJoinedContainerId\n );\n if (copilotInfoContainer) copilotInfoContainer.remove();\n const styleNode = document.getElementById(styleId);\n if (styleNode) styleNode.remove();\n document.body.classList.remove(\"gl-copilot-fade-out\");\n }, 800);\n\n this.productTourId = undefined;\n this.productTourData = undefined;\n \n this.removeScrollListeners();\n }\n\n toggleAudio(muted = false) {\n this.audioMuted = muted;\n if (this.currentAudio) {\n this.currentAudio.muted = this.audioMuted;\n }\n document.querySelector(`.${copilotJoinedContainerId}-mute`).innerHTML =\n loadIcon(this.audioMuted ? \"unmute\" : \"mute\");\n }\n\n setupCopilotTour() {\n if (typeof window === \"undefined\") return;\n\n const primaryColor =\n GleapConfigManager.getInstance().flowConfig?.color ?? \"#485BFF\";\n const contrastColor = calculateContrast(primaryColor);\n\n let styleNode = document.getElementById(styleId);\n if (!styleNode) {\n styleNode = document.createElement(\"style\");\n styleNode.id = styleId;\n styleNode.type = \"text/css\";\n styleNode.textContent = `\n #${pointerContainerId} {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .${pointerContainerId}-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .${pointerContainerId}-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .${pointerContainerId}-clickmode svg {\n display: none !important;\n }\n #${pointerContainerId} svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .${pointerContainerId}-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .${pointerContainerId}-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .${copilotJoinedContainerId} {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .${copilotJoinedContainerId} span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .${copilotJoinedContainerId}-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .${copilotJoinedContainerId}-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .${copilotJoinedContainerId}-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .${copilotJoinedContainerId}-mute svg:hover {\n opacity: 0.8;\n }\n .${copilotJoinedContainerId}-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .${copilotJoinedContainerId}-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .${copilotJoinedContainerId}-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ${primaryColor};\n color: ${contrastColor};\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ${primaryColor};\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #${copilotJoinedContainerId} {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ${\n this.productTourData?.playVoice ?? true\n ? \"\"\n : `\n .${copilotJoinedContainerId}-mute {\n display: none;\n }\n `\n }\n ${\n this.productTourData.gradient\n ? `body::before {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }`\n : `body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }`\n }\n `;\n document.head.appendChild(styleNode);\n }\n\n const container = document.createElement(\"div\");\n container.id = pointerContainerId;\n container.style.opacity = 0;\n // Cache the pointer container.\n this._pointerContainer = container;\n\n const svgMouse = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"svg\"\n );\n svgMouse.setAttribute(\"viewBox\", \"0 0 380 476\");\n svgMouse.innerHTML =\n '<path d=\"M352.595 268.315L352.581 268.302L352.566 268.29L78.6092 24.7278C71.6245 18.433 62.5487 15 53.2 15C32.1157 15 15 32.1157 15 53.2V424C15 444.34 31.4714 461 52 461C62.6797 461 72.8089 456.467 79.8863 448.38C79.8871 448.379 79.8879 448.378 79.8886 448.378L180.804 333.1H327.9C348.384 333.1 365 316.484 365 296C365 285.404 360.46 275.344 352.595 268.315Z\" fill=\"black\" stroke=\"white\" stroke-width=\"30\"/>';\n\n const infoBubble = document.createElement(\"div\");\n infoBubble.id = \"copilot-info-bubble\";\n infoBubble.innerHTML = `<div id='copilot-info-bubble-content-container'><div id='copilot-info-bubble-content'></div></div>`;\n\n const copilotInfoContainer = document.createElement(\"div\");\n copilotInfoContainer.id = copilotJoinedContainerId;\n copilotInfoContainer.classList.add(copilotJoinedContainerId);\n copilotInfoContainer.innerHTML = `\n <img class=\"${copilotJoinedContainerId}-avatar\" src=\"${\n this.productTourData?.kaiAvatar\n }\" />\n <span>${this.productTourData?.kaiSlug}</span>\n <div class=\"${copilotJoinedContainerId}-mute\">\n ${loadIcon(this.audioMuted ? \"unmute\" : \"mute\")}\n </div>\n ${\n this.productTourData?.allowClose\n ? `<div class=\"${copilotJoinedContainerId}-dismiss\">\n ${loadIcon(\"dismiss\")}\n </div>`\n : \"\"\n }\n `;\n document.body.appendChild(copilotInfoContainer);\n\n const self = this;\n\n document\n .querySelector(`.${copilotJoinedContainerId}-mute`)\n .addEventListener(\"click\", () => {\n this.toggleAudio(!this.audioMuted);\n });\n\n if (this.productTourData?.allowClose) {\n document\n .querySelector(`.${copilotJoinedContainerId}-dismiss`)\n .addEventListener(\"click\", () => {\n this.completeTour(false);\n });\n }\n\n container.appendChild(svgMouse);\n container.appendChild(infoBubble);\n document.body.appendChild(container);\n }\n\n start() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const config = this.productTourData;\n if (!config) return;\n canPlayAudio().then((supported) => {\n this.audioMuted = !supported;\n this.setupCopilotTour();\n\n if (this.audioMuted && config?.showUnmuteModal) {\n this.showAudioUnmuteModal();\n } else {\n setTimeout(() => {\n this.renderNextStep();\n }, 1500);\n }\n });\n }\n\n showAudioUnmuteModal() {\n // Create the overlay element\n const modalOverlay = document.createElement(\"div\");\n modalOverlay.classList.add(\"gleap-audio-unmute-modal-overlay\");\n\n // Create the modal container element\n const modal = document.createElement(\"div\");\n modal.classList.add(\"gleap-audio-unmute-modal\");\n\n // Create and add the modal message\n const message = document.createElement(\"p\");\n message.textContent = this.productTourData?.unmuteModalTitle;\n modal.appendChild(message);\n\n // Create the \"Unmute Audio\" button\n const unmuteButton = document.createElement(\"button\");\n unmuteButton.classList.add(\"gleap-audio-unmute-button\");\n unmuteButton.textContent = this.productTourData?.unmuteModalButton;\n unmuteButton.addEventListener(\"click\", () => {\n this.toggleAudio(false);\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(unmuteButton);\n\n // Create the \"Start Anyway\" button\n const startAnywayButton = document.createElement(\"button\");\n startAnywayButton.classList.add(\"gleap-tour-continue-button\");\n startAnywayButton.textContent = this.productTourData?.unmuteModalContinue;\n startAnywayButton.addEventListener(\"click\", () => {\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(startAnywayButton);\n\n // Build the modal and attach it to the DOM\n modalOverlay.appendChild(modal);\n document.body.appendChild(modalOverlay);\n }\n\n completeTour(success = true) {\n if (typeof window === \"undefined\") return;\n this.cleanup();\n if (this.onCompleteCallback) {\n this.onCompleteCallback(success);\n }\n }\n\n renderNextStep() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const self = this;\n const config = this.productTourData;\n const steps = config.steps;\n if (this.currentActiveIndex >= steps.length) {\n setTimeout(() => {\n this.completeTour();\n }, 500);\n return;\n }\n const currentStep = steps[this.currentActiveIndex];\n const handleStep = (element) => {\n this._pointerContainer.style.display = \"flex\";\n if (currentStep.selector && currentStep.selector.length > 0 && !element) {\n this.completeTour(false);\n return;\n }\n const gotToNextStep = () => {\n if (currentStep.mode === \"INPUT\" && element) {\n function proceedClickmode() {\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.remove(\"copilot-pointer-container-clickmode\");\n element.classList.remove(\"gleap-input-highlight\");\n document.getElementById(pointerContainerId).style.display = \"none\";\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n self.renderNextStep();\n }\n const inputModeType = currentStep.inputType ?? \"default\";\n if (inputModeType === \"default\") {\n function handleInputEvent(e) {\n if (e?.target?.value?.length === 0) return;\n const cursor = document.getElementById(\n `copilot-info-bubble-content`\n );\n if (!cursor) return;\n cursor.innerHTML = `${GleapTranslationManager.translateText(\n \"next\"\n )} <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path fill=\"currentColor\" d=\"M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"/>\n</svg>`;\n cursor.addEventListener(\"click\", proceedClickmode, {\n once: true,\n });\n element.classList.add(\"gleap-input-highlight\");\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.add(\"copilot-pointer-container-clickmode\");\n element.removeEventListener(\"input\", handleInputEvent);\n }\n element.addEventListener(\"input\", handleInputEvent, {\n once: false,\n });\n if (element.hasAttribute(\"contenteditable\")) {\n element.addEventListener(\"keyup\", handleInputEvent, {\n once: false,\n });\n }\n element.addEventListener(\n \"blur\",\n () => {\n element.focus();\n },\n { once: true }\n );\n element.focus();\n } else {\n const inputValue = currentStep.inputValue ?? \"\";\n let index = 0;\n function typeCharacter() {\n if (index < inputValue.length) {\n element.value += inputValue[index];\n index++;\n setTimeout(typeCharacter, 100);\n } else {\n setTimeout(() => {\n proceedClickmode();\n }, 1200);\n }\n }\n typeCharacter();\n }\n return;\n }\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n if (currentStep.mode === \"CLICK\" && element) {\n const rect = element.getBoundingClientRect();\n const scrollX = window.scrollX || 0;\n const scrollY = window.scrollY || 0;\n performClickAnimation(\n rect.left + rect.width / 2 + scrollX,\n rect.top + rect.height / 2 + scrollY\n );\n element.click();\n }\n self.renderNextStep();\n };\n\n this.updatePointerPosition(element, currentStep);\n const message = currentStep?.message\n ? htmlToPlainText(currentStep.message)\n : \"🤔\";\n document.getElementById(`copilot-info-bubble-content`).textContent =\n message;\n this._pointerContainer.style.opacity = 1;\n const readTime = estimateReadTime(message);\n const continueWithNoAudio = () => {\n this.currentAudio = undefined;\n setTimeout(() => {\n gotToNextStep();\n }, readTime * 1000);\n };\n if (currentStep.voice && currentStep.voice.length > 0) {\n this.currentAudio = new Audio(currentStep.voice);\n if (this.audioMuted) {\n this.currentAudio.muted = true;\n }\n this.currentAudio.addEventListener(\"ended\", () => {\n setTimeout(() => {\n gotToNextStep();\n }, 1000);\n });\n this.currentAudio\n .play()\n .then(() => {})\n .catch((error) => {\n continueWithNoAudio();\n });\n } else {\n continueWithNoAudio();\n }\n };\n\n const elementPromise = currentStep.selector\n ? waitForElement(currentStep.selector)\n : Promise.resolve(null);\n elementPromise.then(handleStep).catch(() => handleStep(null));\n }\n}\n","import { loadIcon } from \"./UI\";\nimport GleapTours from \"./GleapTours\";\nimport Gleap, { GleapEventManager, GleapSession } from \"./Gleap\";\nimport GleapCopilotTours from \"./GleapCopilotTours\";\n\nconst localStorageKey = \"gleap-tour-data\";\n\nexport default class GleapProductTours {\n productTourData = undefined;\n productTourId = undefined;\n unmuted = false;\n currentActiveIndex = undefined;\n gleapTourObj = undefined;\n disabled = false;\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapProductTours();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n disable() {\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n // Disable copilot tours.\n GleapCopilotTours.getInstance().disable();\n\n this.gleapTourObj = undefined;\n this.disabled = true;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n const beforeUnloadListener = (event) => {\n if (\n !self?.disabled &&\n self?.productTourId &&\n self?.productTourData &&\n self?.productTourData?.tourType !== \"cobrowse\"\n ) {\n self.storeUncompletedTour();\n }\n };\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"beforeunload\", beforeUnloadListener);\n }\n }\n }\n\n startWithConfig(tourId, config, delay = 0, manually = false) {\n // Prevent multiple tours from being started.\n if (this.productTourId || this.disabled) {\n return;\n }\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n\n if (manually) {\n this.start();\n } else {\n const self = this;\n\n // Validate product tour.\n GleapSession.getInstance()\n .validateProductTour(tourId)\n .then(() => {\n if (delay > 0) {\n return setTimeout(() => {\n self.start();\n }, delay);\n } else {\n return this.start();\n }\n })\n .catch((error) => {\n console.log(\"Product tour is not live. Cleaning up...\");\n console.error(error);\n\n self.onComplete(false);\n });\n }\n }\n\n onComplete(success = true) {\n const comData = {\n tourId: this.productTourId,\n };\n\n if (success) {\n GleapEventManager.notifyEvent(\"productTourCompleted\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-completed`, comData);\n } else {\n GleapEventManager.notifyEvent(\"productTourQuit\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-quit`, comData);\n }\n\n // Clear data.\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n this.gleapTourObj = undefined;\n this.productTourData = undefined;\n this.productTourId = undefined;\n this.currentActiveIndex = undefined;\n this.clearUncompletedTour();\n }\n\n loadUncompletedTour() {\n try {\n const data = JSON.parse(localStorage.getItem(localStorageKey));\n if (data?.tourData && data?.tourId) {\n return data;\n }\n } catch (e) {}\n\n return null;\n }\n\n storeUncompletedTour() {\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {}\n } else {\n this.clearUncompletedTour();\n }\n }\n\n clearUncompletedTour() {\n try {\n localStorage.removeItem(localStorageKey);\n } catch (e) {}\n }\n\n start() {\n const config = this.productTourData;\n if (!config) {\n return;\n }\n\n if (config.tourType === \"cobrowse\") {\n return GleapCopilotTours.getInstance().startWithConfig(\n this.productTourId,\n config,\n (success) => {\n this.onComplete(success);\n }\n );\n }\n\n this.unmuted = false;\n const steps = config.steps;\n const self = this;\n\n var driverSteps = [];\n\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n\n const isClickMode = step.mode === \"CLICK\";\n const isInputMode = step.mode === \"INPUT\";\n\n var message = \"\";\n var hasSender = false;\n\n if (step.type === \"video-pointer\") {\n message = `<div class=\"gleap-tour-video\">\n <video class=\"gleap-tour-video-obj\" muted autoplay>\n <source src=\"${step.videoUrl}\" type=\"video/mp4\">\n </video>\n <div class=\"gleap-tour-video-playpause\">${loadIcon(\n \"unmute\"\n )}</div>\n </div>`;\n } else {\n var senderHTML = ``;\n\n if (config.sender && config.sender.firstName) {\n hasSender = true;\n senderHTML = `<div class=\"gleap-tour-sender\">\n <div class=\"gleap-tour-sender-image\" style=\"background-image: url('${config.sender.profileImageUrl}');\"></div>\n <div class=\"gleap-tour-sender-name\">${config.sender.firstName}</div>\n </div>`;\n }\n\n message = `${senderHTML}<div class=\"gleap-tour-message\">${step.message}</div>`;\n }\n\n const disableInteraction = !isClickMode && !isInputMode;\n\n var driverStep = {\n disableActiveInteraction: disableInteraction,\n mode: step.mode,\n popover: {\n description: message,\n popoverClass: `gleap-tour-popover-${step.type} ${\n !hasSender && \"gleap-tour-popover-no-sender\"\n } ${config.allowClose && \"gleap-tour-popover-can-close\"}`,\n ...(isClickMode\n ? {\n showButtons: [],\n }\n : {}),\n },\n };\n if (step.selector && step.selector.length > 0) {\n driverStep.element = step.selector;\n }\n driverSteps.push(driverStep);\n }\n\n var buttons = [\"next\", \"close\"];\n\n if (config.backButton) {\n buttons.push(\"previous\");\n }\n\n function onDocumentClick(evnt) {\n try {\n var gleapTourPopover = document.querySelector(\".gleap-tour-popover\");\n if (gleapTourPopover && !gleapTourPopover.contains(evnt.target)) {\n const stepIndex = self.gleapTourObj.getActiveIndex();\n const step = steps[stepIndex];\n const element = self.gleapTourObj.getActiveElement();\n\n if (step?.mode === \"CLICK\" && evnt?.target !== element) {\n const isInsideElement = element.contains(evnt?.target);\n if (!isInsideElement) {\n // Ignore clicks outside of the actual element.\n return;\n }\n }\n\n // Store next step index.\n self.currentActiveIndex = (self.currentActiveIndex || 0) + 1;\n self.storeUncompletedTour();\n\n if (\n (element && element.tagName === \"INPUT\") ||\n step.mode === \"INPUT\" ||\n evnt?.target?.id.includes(\"tooltip-svg\")\n ) {\n // Prevent.\n } else {\n self.gleapTourObj.moveNext();\n }\n }\n } catch (e) {}\n }\n\n this.gleapTourObj = GleapTours({\n showProgress: true,\n allowKeyboardControl: false,\n steps: driverSteps,\n showProgress: steps.length > 1,\n allowClose: config.allowClose,\n nextBtnText: config.nextText,\n doneBtnText: config.doneText,\n prevBtnText: config.prevText,\n showButtons: buttons,\n onHighlightStarted: (element, step, config) => {\n this.currentActiveIndex = config?.state?.activeIndex;\n this.storeUncompletedTour();\n },\n onElementNotFound: (step) => {\n document.removeEventListener(\"click\", onDocumentClick);\n\n this.onComplete(false);\n },\n onDestroyStarted: () => {\n if (!this.gleapTourObj.hasNextStep()) {\n // Mark as completed.\n this.onComplete(true);\n } else {\n // Mark as quit.\n this.onComplete(false);\n }\n\n document.removeEventListener(\"click\", onDocumentClick);\n },\n onPopoverRender: (popoverElement) => {\n // Fix for images and videos.\n if (popoverElement) {\n const mediaElements = document.querySelectorAll(\n \".gleap-tour-popover-description img, .gleap-tour-popover-description video\"\n );\n\n const performRequentialRefresh = () => {\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 500);\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 750);\n };\n\n for (let i = 0; i < mediaElements.length; i++) {\n const mediaElement = mediaElements[i];\n if (mediaElement.tagName === \"IMG\") {\n mediaElement.addEventListener(\"load\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n } else if (mediaElement.tagName === \"VIDEO\") {\n mediaElement.addEventListener(\"canplaythrough\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n }\n }\n }\n\n const playingClass = \"gleap-tour-video--playing\";\n const playPauseContainer = document.querySelector(\n \".gleap-tour-video-playpause\"\n );\n\n const videoElement = document.querySelector(\".gleap-tour-video-obj\");\n if (videoElement) {\n const videoContainer = videoElement.closest(\".gleap-tour-video\");\n\n if (self.unmuted) {\n if (videoElement) {\n videoElement.pause();\n videoElement.muted = false;\n videoElement.play();\n videoContainer.classList.add(playingClass);\n }\n }\n\n videoElement.addEventListener(\"ended\", function () {\n playPauseContainer.innerHTML = loadIcon(\"replay\");\n playPauseContainer.classList.add(\n \"gleap-tour-video-svg--fullscreen\"\n );\n videoContainer.classList.remove(playingClass);\n });\n\n videoElement.addEventListener(\"play\", function () {\n playPauseContainer.classList.remove(\n \"gleap-tour-video-svg--fullscreen\"\n );\n });\n\n if (playPauseContainer) {\n playPauseContainer.addEventListener(\"click\", () => clickVideo());\n }\n\n const clickVideo = () => {\n if (videoElement.muted) {\n self.unmuted = true;\n\n videoElement.pause();\n videoElement.currentTime = 0;\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else if (videoElement.paused) {\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else {\n videoElement.pause();\n playPauseContainer.innerHTML = loadIcon(\"unmute\");\n videoContainer.classList.remove(playingClass);\n }\n };\n }\n },\n });\n this.gleapTourObj.drive();\n\n document.addEventListener(\"click\", onDocumentClick, true);\n }\n}\n","export const checkPageFilter = (currentUrl, pageFilter, pageFilterType) => {\n // If any parameter is missing, consider the filter passed.\n if (!currentUrl || !pageFilter || !pageFilterType) {\n return true;\n }\n\n // Helper to remove trailing slashes.\n const removeTrailingSlash = (url) => url.replace(/\\/$/, \"\");\n\n // Generates a regex from a match string by replacing dynamic segments (e.g., {id}).\n const generateRegex = (match) => {\n if (!match) return null;\n try {\n const dynamicPattern = /{\\w+}/g;\n const regexPattern = match.replace(dynamicPattern, \"[\\\\w-]+\");\n return new RegExp(regexPattern, \"i\");\n } catch (e) {\n return null;\n }\n };\n\n // Checks if the provided URL matches the given match string.\n const isMatchingUrl = (url, match) => {\n if (!url || !match) return false;\n try {\n // First, a simple substring check.\n if (url.includes(match)) {\n return true;\n }\n } catch (e) {\n // Continue to regex matching.\n }\n const regex = generateRegex(match);\n if (!regex) return false;\n try {\n return regex.test(url);\n } catch (e) {\n return false;\n }\n };\n\n let matched = false;\n\n // Check matching based on the provided pageFilterType.\n switch (pageFilterType) {\n case \"is\":\n matched =\n removeTrailingSlash(currentUrl) === removeTrailingSlash(pageFilter);\n break;\n case \"isnot\":\n matched = removeTrailingSlash(currentUrl) !== removeTrailingSlash(pageFilter);\n break;\n case \"contains\":\n matched = isMatchingUrl(currentUrl, pageFilter);\n break;\n case \"startswith\":\n matched = currentUrl.startsWith(pageFilter);\n break;\n case \"endswith\":\n matched = currentUrl.endsWith(pageFilter);\n break;\n case \"notcontains\":\n matched = !isMatchingUrl(currentUrl, pageFilter);\n break;\n default:\n matched = false;\n }\n\n return matched;\n};\n","import { injectStyledCSS } from \"./UI\";\nimport GleapNetworkIntercepter from \"./GleapNetworkIntercepter\";\nimport {\n fixGleapHeight,\n gleapDataParser,\n runFunctionWhenDomIsReady,\n} from \"./GleapHelper\";\nimport GleapSession from \"./GleapSession\";\nimport GleapStreamedEvent from \"./GleapStreamedEvent\";\nimport GleapConfigManager from \"./GleapConfigManager\";\nimport GleapFeedback from \"./GleapFeedback\";\nimport GleapFrameManager from \"./GleapFrameManager\";\nimport GleapMetaDataManager from \"./GleapMetaDataManager\";\nimport GleapConsoleLogManager from \"./GleapConsoleLogManager\";\nimport GleapClickListener from \"./GleapClickListener\";\nimport GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\nimport GleapCustomDataManager from \"./GleapCustomDataManager\";\nimport GleapEventManager from \"./GleapEventManager\";\nimport GleapCustomActionManager from \"./GleapCustomActionManager\";\nimport GleapReplayRecorder from \"./GleapReplayRecorder\";\nimport GleapMarkerManager from \"./GleapMarkerManager\";\nimport GleapTranslationManager from \"./GleapTranslationManager\";\nimport GleapShortcutListener from \"./GleapShortcutListener\";\nimport GleapPreFillManager from \"./GleapPreFillManager\";\nimport GleapNotificationManager from \"./GleapNotificationManager\";\nimport GleapBannerManager from \"./GleapBannerManager\";\nimport GleapModalManager from \"./GleapModalManager\";\nimport GleapAudioManager from \"./GleapAudioManager\";\nimport GleapTagManager from \"./GleapTagManager\";\nimport GleapAdminManager from \"./GleapAdminManager\";\nimport GleapProductTours from \"./GleapProductTours\";\nimport { checkPageFilter } from \"./GleapPageFilter\";\nimport { registerGleapChecklist } from \"./GleapChecklist\";\n\nif (\n typeof window !== \"undefined\" &&\n typeof HTMLCanvasElement !== \"undefined\" &&\n HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.__originalGetContext === undefined\n) {\n HTMLCanvasElement.prototype.__originalGetContext =\n HTMLCanvasElement.prototype.getContext;\n HTMLCanvasElement.prototype.getContext = function (type, options) {\n return this.__originalGetContext(type, {\n ...options,\n preserveDrawingBuffer: true,\n });\n };\n}\n\nif (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n) {\n registerGleapChecklist();\n}\n\nclass Gleap {\n static invoked = true;\n static silentCrashReportSent = false;\n initialized = false;\n offlineMode = false;\n disablePageTracking = false;\n disableInAppNotifications = false;\n\n // Global data\n globalData = {\n screenRecordingData: null,\n webReplay: null,\n snapshotPosition: {\n x: 0,\n y: 0,\n },\n };\n\n // Gleap singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new Gleap();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n /**\n * Main constructor\n */\n constructor() {\n if (typeof window !== \"undefined\") {\n // Make sure all instances are ready.\n GleapMetaDataManager.getInstance();\n GleapConsoleLogManager.getInstance().start();\n GleapClickListener.getInstance().start();\n GleapAdminManager.getInstance().start();\n }\n }\n\n /**\n * Sets the development environment\n * @param {*} environment\n */\n static setEnvironment(environment) {\n GleapMetaDataManager.getInstance().environment = environment;\n }\n\n /**\n * Set tags to be submitted with each ticket.\n * @param {*} tags\n */\n static setTags(tags) {\n GleapTagManager.getInstance().setTags(tags);\n }\n\n /**\n * Sets a custom URL handler.\n * @param {*} urlHandler\n */\n static setUrlHandler(urlHandler) {\n GleapFrameManager.getInstance().setUrlHandler(urlHandler);\n }\n\n /**\n * Active the Gleap offline mode.\n * @param {*} offlineMode\n */\n static setOfflineMode(offlineMode) {\n const instance = this.getInstance();\n instance.offlineMode = offlineMode;\n }\n\n /**\n * Disable the in-app notifications.\n * @param {*} disableInAppNotifications\n */\n static setDisableInAppNotifications(disableInAppNotifications) {\n const instance = this.getInstance();\n instance.disableInAppNotifications = disableInAppNotifications;\n }\n\n /**\n * Disable the default page tracking.\n * @param {*} disablePageTracking\n */\n static setDisablePageTracking(disablePageTracking) {\n const instance = this.getInstance();\n instance.disablePageTracking = disablePageTracking;\n }\n\n /**\n * Revert console log overwrite.\n */\n static disableConsoleLogOverwrite() {\n GleapConsoleLogManager.getInstance().stop();\n }\n\n /**\n * Set the AI tools.\n * @param {*} tools\n */\n static setAiTools(tools) {\n GleapConfigManager.getInstance().setAiTools(tools);\n GleapFrameManager.getInstance().sendConfigUpdate();\n }\n\n /**\n * Attaches external network logs.\n */\n static attachNetworkLogs(networkLogs) {\n GleapNetworkIntercepter.getInstance().externalRequests =\n gleapDataParser(networkLogs);\n }\n\n /**\n * Add entry to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n static log(message, logLevel = \"INFO\") {\n GleapConsoleLogManager.getInstance().addLog(message, logLevel);\n }\n\n /**\n * Initializes the SDK\n * @param {*} sdkKey\n */\n static initialize(sdkKey) {\n const instance = this.getInstance();\n if (instance.initialized) {\n console.warn(\"Gleap already initialized.\");\n return;\n }\n\n instance.initialized = true;\n\n try {\n fixGleapHeight();\n } catch (error) {}\n\n // Start session\n const sessionInstance = GleapSession.getInstance();\n sessionInstance.sdkKey = sdkKey;\n sessionInstance.setOnSessionReady(() => {\n // Run auto configuration.\n setTimeout(() => {\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n GleapStreamedEvent.getInstance().start();\n\n runFunctionWhenDomIsReady(() => {\n // Inject the widget buttons\n GleapFeedbackButtonManager.getInstance().injectFeedbackButton();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n\n // Check for uncompleted tour.\n Gleap.checkForUncompletedTour();\n\n // Check for URL params.\n Gleap.checkForUrlParams();\n\n // Notify event.\n GleapEventManager.notifyEvent(\"initialized\");\n });\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }, 0);\n });\n sessionInstance.startSession();\n }\n\n static openURL(url, newTab = false) {\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n\n static checkForUrlParams() {\n if (typeof window === \"undefined\" || !window.location.search) {\n return;\n }\n\n try {\n const urlParams = new URLSearchParams(window.location.search);\n\n const widget = urlParams.get(\"gleap_widget\");\n if (widget && widget.length > 0) {\n Gleap.open();\n }\n\n const conversationFlow = urlParams.get(\"gleap_conversation\");\n if (conversationFlow && conversationFlow.length > 0) {\n if (conversationFlow === \"true\") {\n Gleap.startConversation(true);\n } else {\n Gleap.startBot(conversationFlow, true);\n }\n }\n\n const feedbackFlow = urlParams.get(\"gleap_feedback\");\n if (feedbackFlow && feedbackFlow.length > 0) {\n Gleap.startFeedbackFlow(feedbackFlow);\n }\n const surveyFlow = urlParams.get(\"gleap_survey\");\n const surveyFlowFormat = urlParams.get(\"gleap_survey_format\");\n if (surveyFlow && surveyFlow.length > 0) {\n Gleap.showSurvey(\n surveyFlow,\n surveyFlowFormat === \"survey_full\" ? \"survey_full\" : \"survey\"\n );\n }\n const tourId = urlParams.get(\"gleap_tour\");\n if (tourId && tourId.length > 0) {\n var tourDelay = parseInt(urlParams.get(\"gleap_tour_delay\"));\n if (isNaN(tourDelay)) {\n tourDelay = 2;\n }\n\n setTimeout(() => {\n Gleap.startProductTour(tourId);\n }, tourDelay * 1000);\n }\n } catch (exp) {}\n }\n\n /**\n * Destroy\n * @returns\n */\n static destroy() {\n GleapReplayRecorder.getInstance().stop();\n GleapStreamedEvent.getInstance().stop();\n GleapFrameManager.getInstance().destroy();\n GleapFeedbackButtonManager.getInstance().destroy();\n GleapNotificationManager.getInstance().clearAllNotifications(true);\n GleapSession.getInstance().clearSession(0, false);\n GleapBannerManager.getInstance().removeBannerUI();\n\n // Reset the initialized flag and clear the instance\n this.instance = null;\n }\n\n /**\n * Close any open banner.\n */\n static closeBanner() {\n GleapBannerManager.getInstance().removeBannerUI();\n }\n\n /**\n * Close any open modal.\n */\n static closeModal() {\n GleapModalManager.getInstance().hideModal();\n }\n\n /**\n * Enable or disable Gleap session tracking through cookies.\n * @param {*} useCookies\n */\n static setUseCookies(useCookies) {\n GleapSession.getInstance().useCookies = useCookies;\n }\n\n /**\n * Indentifies the user session\n * @param {string} userId\n * @param {*} userData\n */\n static identify(userId, userData, userHash) {\n return GleapSession.getInstance().identifySession(\n userId,\n gleapDataParser(userData),\n userHash\n );\n }\n\n /**\n * Updates the contact data.\n * @param {*} userData\n */\n static updateContact(userData) {\n return GleapSession.getInstance().updateSession(gleapDataParser(userData));\n }\n\n /**\n * Clears the current contact.\n */\n static clearIdentity() {\n GleapSession.getInstance().clearSession();\n }\n\n /**\n * Returns the current user session\n */\n static getIdentity() {\n return GleapSession.getInstance().getSession();\n }\n\n /**\n * Returns whether the user is identified or not.\n */\n static isUserIdentified() {\n const session = GleapSession.getInstance().session;\n if (session && session.userId && session.userId.length > 0) {\n return true;\n }\n return false;\n }\n\n /**\n * Widget opened status\n * @returns {boolean} isOpened\n */\n static isOpened() {\n return GleapFrameManager.getInstance().isOpened();\n }\n\n /**\n * Hides any open Gleap dialogs.\n */\n static hide() {\n GleapFrameManager.getInstance().hideWidget();\n }\n\n /**\n * Sets the maximum network request count.\n */\n static setMaxNetworkRequests(maxRequests) {\n GleapNetworkIntercepter.getInstance().setMaxRequests(maxRequests);\n }\n\n /**\n * Sets the maximum network request count.\n */\n static startNetworkLogger() {\n GleapNetworkIntercepter.getInstance().start();\n }\n\n /**\n * Sets the network logger blacklist.\n * @param {Array} networkLogBlacklist\n */\n static setNetworkLogsBlacklist(networkLogBlacklist) {\n GleapNetworkIntercepter.getInstance().setBlacklist(networkLogBlacklist);\n }\n\n /**\n * Sets the network logger props to ignore.\n * @param {Array} filters\n */\n static setNetworkLogPropsToIgnore(filters) {\n GleapNetworkIntercepter.getInstance().setFilters(filters);\n }\n\n /**\n * Set custom replay options.\n * @param {*} options\n */\n static setReplayOptions(options) {\n GleapReplayRecorder.getInstance().setOptions(options);\n }\n\n /**\n * Closes any open Gleap dialogs.\n * @param {boolean} resetRoutes\n */\n static close(resetRoutes = false) {\n GleapFrameManager.getInstance().hideWidget(resetRoutes);\n }\n\n /**\n * Starts the Gleap flow.\n */\n static open() {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Track a custom event\n * @param {string} name\n * @param {any} data\n */\n static trackEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Logs a custom event\n * @param {string} name\n * @param {any} data\n * @deprecated Please use trackEvent instead.\n */\n static logEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Prefills a specific form field.\n * @param {*} key\n * @param {*} value\n */\n static preFillForm(data) {\n const cleanedData = gleapDataParser(data);\n GleapPreFillManager.getInstance().formPreFill = cleanedData;\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"prefill-form-data\",\n data: cleanedData,\n },\n true\n );\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n GleapEventManager.on(eventName, callback);\n }\n\n /**\n * Enable or disable shortcuts\n * @param {boolean} enabled\n */\n static enableShortcuts(enabled) {\n if (enabled) {\n GleapShortcutListener.getInstance().start();\n } else {\n GleapShortcutListener.getInstance().stop();\n }\n }\n\n /**\n * Show or hide the feedback button\n * @param {*} show\n * @returns\n */\n static showFeedbackButton(show) {\n GleapFeedbackButtonManager.getInstance().toggleFeedbackButton(show);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n GleapMetaDataManager.setAppVersionCode(appVersionCode);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n GleapMetaDataManager.setAppBuildNumber(appBuildNumber);\n }\n\n /**\n * Set a custom ws api url.\n * @param {string} wsApiUrl\n */\n static setWSApiUrl(wsApiUrl) {\n GleapSession.getInstance().wsApiUrl = wsApiUrl;\n }\n\n /**\n * Set a custom api url.\n * @param {string} apiUrl\n */\n static setApiUrl(apiUrl) {\n GleapSession.getInstance().apiUrl = apiUrl;\n }\n\n /**\n * Set a custom banner url.\n * @param {string} bannerUrl\n */\n static setBannerUrl(bannerUrl) {\n GleapBannerManager.getInstance().setBannerUrl(bannerUrl);\n }\n\n /**\n * Set a custom modal url.\n * @param {string} modalUrl\n */\n static setModalUrl(modalUrl) {\n GleapModalManager.getInstance().setModalUrl(modalUrl);\n }\n\n /**\n * Set a custom frame api url.\n * @param {string} frameUrl\n */\n static setFrameUrl(frameUrl) {\n GleapFrameManager.getInstance().frameUrl = frameUrl;\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n static setTicketAttribute(key, value) {\n GleapCustomDataManager.getInstance().setTicketAttribute(key, value);\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n static unsetTicketAttribute(key) {\n GleapCustomDataManager.getInstance().unsetTicketAttribute(key);\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n static clearTicketAttributes() {\n GleapCustomDataManager.getInstance().clearTicketAttributes();\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n static attachCustomData(data) {\n GleapCustomDataManager.getInstance().attachCustomData(data);\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n static setCustomData(key, value) {\n GleapCustomDataManager.getInstance().setCustomData(key, value);\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n static removeCustomData(key) {\n GleapCustomDataManager.getInstance().removeCustomData(key);\n }\n\n /**\n * Clear the custom data\n */\n static clearCustomData() {\n GleapCustomDataManager.getInstance().clearCustomData();\n }\n\n /**\n * Play or mute the sound.\n * @param {*} play\n */\n static playSound(play) {\n GleapAudioManager.playSound(play);\n }\n\n /**\n * Show or hide the notification badge count.\n * @param {boolean} showNotificationBadge show or hide the notification badge\n *\n */\n static showTabNotificationBadge(showNotificationBadge) {\n const notificationInstance = GleapNotificationManager.getInstance();\n notificationInstance.showNotificationBadge = showNotificationBadge;\n notificationInstance.updateTabBarNotificationCount();\n }\n\n /**\n * Override the browser language.\n * @param {string} language country code with two letters\n */\n static setLanguage(language) {\n GleapTranslationManager.getInstance().setOverrideLanguage(language);\n\n if (Gleap.getInstance().initialized) {\n setTimeout(() => {\n Gleap.getInstance().softReInitialize();\n\n // Update language for contact.\n Gleap.updateContact({\n lang: language,\n });\n }, 1000);\n }\n }\n\n /**\n * Register custom action\n * @param {*} action\n */\n static registerCustomAction(customAction) {\n GleapCustomActionManager.registerCustomAction(customAction);\n }\n\n /**\n * Triggers a custom action\n * @param {*} actionName\n */\n static triggerCustomAction(name) {\n GleapCustomActionManager.triggerCustomAction(name);\n }\n\n /**\n * Sets a custom color scheme.\n * @param {string} primaryColor\n */\n static setStyles(\n primaryColor,\n headerColor,\n buttonColor,\n backgroundColor = \"#ffffff\",\n borderRadius = 20,\n buttonX = 20,\n buttonY = 20,\n buttonStyle = GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n runFunctionWhenDomIsReady(() => {\n injectStyledCSS(\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n );\n });\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReport(\n description = \"\",\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n return Gleap.sendSilentCrashReportWithFormData(\n {\n description,\n },\n priority,\n excludeData\n );\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReportWithFormData(\n formData,\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n if (this.silentCrashReportSent) {\n return;\n }\n\n this.silentCrashReportSent = true;\n setTimeout(() => {\n this.silentCrashReportSent = false;\n }, 10000);\n\n const excludeDataCleaned = excludeData ? gleapDataParser(excludeData) : {};\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n var newFormData = formData ? formData : {};\n if (sessionInstance.session.email) {\n newFormData.reportedBy = sessionInstance.session.email;\n }\n\n const feedback = new GleapFeedback(\n \"CRASH\",\n priority,\n newFormData,\n true,\n excludeDataCleaned\n );\n feedback\n .sendFeedback()\n .then(() => {})\n .catch((error) => {});\n }\n\n /**\n * Shows a survey manually.\n * @param {*} actionType\n * @param {*} format\n */\n static showSurvey(actionType, format = \"survey\") {\n Gleap.startFeedbackFlowWithOptions(\n actionType,\n {\n hideBackButton: true,\n format,\n },\n true\n );\n }\n\n /**\n * Starts a classic feedback form.\n */\n static startClassicForm(formId, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(formId, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlow(feedbackFlow, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(feedbackFlow, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlowWithOptions(\n feedbackFlow,\n options = {},\n isSurvey = false\n ) {\n const { autostartDrawing, hideBackButton, format } = options;\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n // Initially set scroll position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n var action = \"start-feedbackflow\";\n if (isSurvey) {\n action = \"start-survey\";\n }\n\n GleapFrameManager.getInstance().setAppMode(isSurvey ? format : \"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: action,\n data: {\n flow: feedbackFlow,\n hideBackButton: hideBackButton,\n format,\n },\n },\n true\n );\n\n if (autostartDrawing) {\n GleapFrameManager.getInstance().showDrawingScreen(\"screenshot\");\n } else {\n GleapFrameManager.getInstance().showWidget();\n }\n }\n\n /**\n * Opens the conversations overview.\n */\n static openConversations(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversations\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a conversation\n */\n static openConversation(shareToken, showBackButton = true) {\n if (!shareToken) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversation\",\n data: {\n shareToken,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new conversation\n */\n static startConversation(showBackButton = true) {\n Gleap.startBot(\"\", showBackButton);\n }\n\n /**\n * Starts a new conversation and attaches the bot with the given id.\n */\n static startBot(botId, showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-bot\",\n data: {\n botId: botId ? botId : \"\",\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help center collection\n */\n static openHelpCenterCollection(collectionId, showBackButton = true) {\n if (!collectionId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-collection\",\n data: {\n collectionId,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help article\n */\n static openHelpCenterArticle(articleId, showBackButton = true) {\n if (!articleId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-article\",\n data: {\n articleId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the help center.\n */\n static openHelpCenter(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Search for news articles in the help center\n */\n static searchHelpCenter(term, showBackButton = true) {\n if (!term) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter-search\",\n data: {\n term,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a news article\n */\n static openNewsArticle(id, showBackButton = true) {\n if (!id) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news-article\",\n data: {\n id,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Open the checklists overview.\n */\n static openChecklists(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklists\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new checklist and opens it.\n */\n static startChecklist(\n outboundId,\n showBackButton = true,\n sharedKey = undefined\n ) {\n if (!outboundId) {\n return false;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-checklist\",\n data: {\n outboundId: outboundId,\n hideBackButton: !showBackButton,\n ...(sharedKey ? { sharedKey: sharedKey } : {}),\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n\n return true;\n }\n\n /**\n * Open an existing checklist.\n */\n static openChecklist(checklistId, showBackButton = true) {\n if (!checklistId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklist\",\n data: {\n id: checklistId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the news overview.\n */\n static openNews(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the feature requests overview.\n */\n static openFeatureRequests(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-feature-requests\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n isLiveMode() {\n if (this.offlineMode === true) {\n return false;\n }\n\n var hostname = window.location.hostname;\n const isLocalHost =\n [\"localhost\", \"127.0.0.1\", \"0.0.0.0\", \"\", \"::1\"].includes(hostname) ||\n hostname.startsWith(\"192.168.\") ||\n hostname.startsWith(\"10.0.\") ||\n hostname.endsWith(\".local\") ||\n !hostname.includes(\".\");\n return !isLocalHost;\n }\n\n softReInitialize() {\n GleapFrameManager.getInstance().destroy();\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n // Update the feedback button.\n GleapFeedbackButtonManager.getInstance().refresh();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }\n\n /**\n * Performs an action.\n * @param {*} action\n */\n performActions(actions) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i];\n if (action && action.actionType) {\n if (action.pageFilter && window && window.location) {\n const passed = checkPageFilter(\n window.location.href,\n action.pageFilter,\n action.pageFilterType\n );\n\n if (!passed) {\n continue;\n }\n }\n\n if (action.actionType === \"notification\") {\n if (action?.data?.checklist?.popupType === \"widget\") {\n Gleap.openChecklist(action.data.checklist.id, true);\n } else {\n if (!this.disableInAppNotifications) {\n Gleap.showNotification(action);\n }\n }\n } else if (action.actionType === \"banner\") {\n Gleap.showBanner(action);\n } else if (action.actionType === \"modal\") {\n Gleap.showModal(action);\n } else if (action.actionType === \"tour\") {\n Gleap.startProductTourWithConfig(action.outbound, action.data, false);\n } else {\n Gleap.showSurvey(action.actionType, action.format);\n }\n }\n }\n }\n\n static startProductTour(tourId) {\n const self = this;\n GleapSession.getInstance()\n .startProductTourConfig(tourId)\n .then((config) => {\n self.startProductTourWithConfig(tourId, config, true);\n })\n .catch((error) => {});\n }\n\n static checkForUncompletedTour() {\n const tourData = GleapProductTours.getInstance().loadUncompletedTour();\n if (tourData) {\n GleapProductTours.getInstance().startWithConfig(\n tourData.tourId,\n tourData.tourData,\n 500\n );\n }\n }\n\n static startProductTourWithConfig(tourId, config, manually = false) {\n GleapProductTours.getInstance().startWithConfig(\n tourId,\n config,\n 0,\n manually\n );\n }\n\n static showBanner(data) {\n try {\n GleapBannerManager.getInstance().showBanner(data);\n } catch (e) {}\n }\n\n static showModal(data) {\n try {\n GleapModalManager.getInstance().showModal(data);\n } catch (e) {}\n }\n\n static showNotification(data) {\n GleapNotificationManager.getInstance().showNotification(data);\n }\n\n /**\n * Sets a global data value\n * @param {*} key\n * @param {*} value\n */\n setGlobalDataItem(key, value) {\n this.globalData[key] = value;\n }\n\n /**\n * Gets a global data value\n * @param {*} key\n * @returns\n */\n getGlobalDataItem(key) {\n return this.globalData[key];\n }\n\n /**\n * Takes the current replay and assigns it to the global data array.\n */\n takeCurrentReplay() {\n const replayData = GleapReplayRecorder.getInstance().getReplayData();\n this.setGlobalDataItem(\"webReplay\", replayData);\n }\n}\n\n// Check for unperformed Gleap actions.\nif (typeof window !== \"undefined\") {\n const GleapActions = window.GleapActions;\n if (GleapActions && GleapActions.length > 0) {\n for (var i = 0; i < GleapActions.length; i++) {\n const GLAction = GleapActions[i];\n if (GLAction && GLAction.e && Gleap[GLAction.e]) {\n Gleap[GLAction.e].apply(Gleap, GLAction.a);\n }\n }\n }\n}\n\nconst handleGleapLink = (href) => {\n try {\n const urlParts = href.split(\"/\");\n const type = urlParts[2];\n if (type === \"article\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterArticle(identifier, true);\n }\n\n if (type === \"collection\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterCollection(identifier, true);\n }\n\n if (type === \"flow\") {\n const identifier = urlParts[3];\n Gleap.startFeedbackFlow(identifier, true);\n }\n\n if (type === \"survey\") {\n const identifier = urlParts[3];\n Gleap.showSurvey(identifier);\n }\n\n if (type === \"bot\") {\n const identifier = urlParts[3];\n Gleap.startBot(identifier, true);\n }\n\n if (type === \"news\") {\n const identifier = urlParts[3];\n Gleap.openNewsArticle(identifier, true);\n }\n\n if (type === \"checklist\") {\n const identifier = urlParts[3];\n Gleap.startChecklist(identifier, true, urlParts[4]);\n }\n\n if (type === \"tour\") {\n const identifier = urlParts[3];\n Gleap.startProductTour(identifier);\n }\n } catch (e) {\n console.error(\"Failed to handle Gleap link: \", href);\n }\n};\n\nexport {\n GleapNetworkIntercepter,\n GleapAudioManager,\n GleapNotificationManager,\n GleapBannerManager,\n GleapModalManager,\n GleapPreFillManager,\n GleapShortcutListener,\n GleapMarkerManager,\n GleapTranslationManager,\n GleapReplayRecorder,\n GleapFeedback,\n GleapConsoleLogManager,\n GleapCustomActionManager,\n GleapEventManager,\n GleapCustomDataManager,\n GleapFeedbackButtonManager,\n GleapClickListener,\n GleapSession,\n GleapStreamedEvent,\n GleapConfigManager,\n GleapFrameManager,\n GleapMetaDataManager,\n GleapTagManager,\n GleapProductTours,\n handleGleapLink,\n};\n\nexport default Gleap;\n","/**\n * Gleap Checklist Web Component\n *\n * Displays an interactive checklist fetched from the Gleap API.\n * Allows users to view steps, mark them as done, trigger actions,\n * and automatically updates based on external events. Includes localization support\n * via GleapTranslationManager.\n *\n * Waits for a Gleap session to be available before initializing and\n * reloads when the session changes (via 'session-updated' event).\n *\n * @element gleap-checklist\n *\n * @attr {string} checklistId - The outbound ID of the checklist to display. Required.\n * @attr {boolean} [info=true] - Whether to display the info section (title, description, sender).\n * @attr {boolean} [progressbar=true] - Whether to display the progress bar.\n * @attr {boolean} [dark=false] - Apply dark mode styling.\n * @attr {boolean} [floating=false] - When set to \"true\", shows a small bubble that expands on click.\n *\n * @cssprop --color-bg - Background color.\n * @cssprop --color-font-title - Title text color.\n * @cssprop --color-font-text - Body text color.\n * @cssprop --color-font-light - Lighter text color.\n * @cssprop --color-primary - Primary accent color.\n * @cssprop --color-primary-light - Light primary color shade.\n * @cssprop --color-primary-contrast - Text color for primary buttons.\n * @cssprop --color-border - Border color.\n * @cssprop --color-gray-light - Light gray background/border color.\n * @cssprop --color-gray-lighter - Even lighter gray background.\n * @cssprop --color-gray-dark - Darker gray text/icon color.\n * @cssprop --color-success - Success color (e.g., for completed items).\n * @cssprop --color-success-light - Contrast color for success elements.\n * @cssprop --radius-sm - Small border radius.\n * @cssprop --radius-lg - Large border radius.\n * @cssprop --radius-full - Full (pill) border radius.\n * @cssprop --shadow-sm - Small box shadow.\n * @cssprop --shadow-md - Medium box shadow.\n * @cssprop --animation-duration - Duration for animations (e.g., accordion).\n * @cssprop --animation-timing - Timing function for animations.\n */\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\nimport Gleap, {\n GleapConfigManager,\n GleapSession,\n GleapTranslationManager,\n} from \"./Gleap\";\n\nexport const registerGleapChecklist = () => {\n if (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n ) {\n class GleapChecklist extends HTMLElement {\n /** @private {number} */\n activeStep = -1;\n /** @private {object|null} */\n checklistData = null;\n /** @private {boolean} */\n _isInitialLoad = false;\n /** @private {boolean} */\n _initialActiveSet = false;\n /** @private {boolean} Flag indicating if the component has loaded data at least once. */\n _hasLoaded = false;\n /** @private {boolean} Flag indicating if a Gleap session is currently considered active by the component. */\n _isSessionReady = false;\n\n /** @private {Function} */\n _boundHandleChecklistUpdate = this.handleChecklistUpdate.bind(this);\n /** @private {Function} */\n _boundHandleSessionUpdate = this.handleSessionUpdate.bind(this);\n\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n // Ensure NetworkManager instance is created only if Gleap is available\n try {\n if (\n typeof GleapSession !== \"undefined\" &&\n typeof ChecklistNetworkManager !== \"undefined\"\n ) {\n this._networkManager = ChecklistNetworkManager.getInstance();\n } else {\n this._networkManager = null;\n }\n } catch (e) {\n this._networkManager = null;\n }\n // Bind click handlers for floating mode.\n this._boundFloatingLauncherClick =\n this.handleFloatingLauncherClick.bind(this);\n this._boundFloatingCloseClick =\n this.handleFloatingCloseClick.bind(this);\n this._floatingHideTimeout = null;\n }\n\n // --- Observed Attributes ---\n static get observedAttributes() {\n return [\n \"checklistId\",\n \"info\",\n \"progressbar\",\n \"dark\",\n \"floating\",\n \"sharedKey\",\n ];\n }\n\n // --- Lifecycle Callbacks ---\n connectedCallback() {\n window.addEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.addEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.addEventListener(\n \"resize\",\n (this._boundResizeHandler = this.handleResize.bind(this))\n );\n this._checkSessionAndLoad();\n }\n\n disconnectedCallback() {\n window.removeEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.removeEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.removeEventListener(\"resize\", this._boundResizeHandler);\n this.removeFloatingClickListeners();\n if (this._floatingHideTimeout) {\n clearTimeout(this._floatingHideTimeout);\n this._floatingHideTimeout = null;\n }\n this.checklistData = null;\n this.activeStep = -1;\n this._hasLoaded = false;\n this._isSessionReady = false;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n\n handleResize() {\n this.updateActiveTaskMaxHeight();\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue !== newValue) {\n if (name === \"checklistId\" && this._isSessionReady) {\n this.loadChecklist();\n } else if (name !== \"checklistId\" && this._hasLoaded) {\n if (this.checklistData) {\n this.renderChecklist(this.checklistData);\n }\n }\n }\n }\n\n // --- Session Handling ---\n _checkSessionAndLoad() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n const hasChecklistId = this.getAttribute(\"checklistId\");\n\n if (gleapSessionInstance.ready && hasChecklistId) {\n this._isSessionReady = true;\n this._networkManager = ChecklistNetworkManager.getInstance();\n this.loadChecklist();\n } else {\n this._isSessionReady = false;\n this._hasLoaded = false;\n this.checklistData = null;\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n }\n\n handleSessionUpdate() {\n this._checkSessionAndLoad();\n }\n\n _getGleapSessionInstance() {\n try {\n return typeof GleapSession !== \"undefined\"\n ? GleapSession.getInstance()\n : null;\n } catch (e) {\n return null;\n }\n }\n\n // --- Getters for Configuration ---\n get infoEnabled() {\n const attr = this.getAttribute(\"info\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get progressbarEnabled() {\n const attr = this.getAttribute(\"progressbar\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get floatingEnabled() {\n return this.getAttribute(\"floating\") === \"true\";\n }\n\n // --- Translation Helpers ---\n _translate(key, defaultValue = \"\") {\n return GleapTranslationManager.translateText(key) || defaultValue;\n }\n\n _translateWithVars(key, vars, defaultValue = \"\") {\n return (\n GleapTranslationManager.translateTextWithVars(key, vars) ||\n defaultValue\n );\n }\n\n // --- SVG Icons ---\n getCheckIcon() {\n return `<svg width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"display: block;\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M20.7071 5.29289C21.0976 5.68342 21.0976 6.31658 20.7071 6.70711L9.70711 17.7071C9.31658 18.0976 8.68342 18.0976 8.29289 17.7071L3.29289 12.7071C2.90237 12.3166 2.90237 11.6834 3.29289 11.2929C3.68342 10.9024 4.31658 10.9024 4.70711 11.2929L9 15.5858L19.2929 5.29289C19.6834 4.90237 20.3166 4.90237 20.7071 5.29289Z\" fill=\"currentColor\"/>\n </svg>`;\n }\n\n // --- Data Loading and Handling ---\n loadChecklist() {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n const checklistId = this.getAttribute(\"checklistId\");\n if (checklistId) {\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.validateChecklist(checklistId);\n } else {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n }\n }\n\n getQueryParams() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return \"\";\n }\n const session = gleapSessionInstance.session;\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n return `gleapId=${session.gleapId || \"\"}&gleapHash=${\n session.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n makeRequest(method, url, data, callback) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n const mockXhr = {\n readyState: 4,\n status: 0,\n responseText: \"Session unavailable\",\n _isMock: true,\n };\n callback(mockXhr);\n return;\n }\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n try {\n gleapSessionInstance.injectSession(xhr);\n } catch (e) {}\n if (data) {\n xhr.setRequestHeader(\n \"Content-Type\",\n \"application/json;charset=UTF-8\"\n );\n }\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n callback(xhr);\n }\n };\n xhr.onerror = () => {\n callback(xhr);\n };\n xhr.send(data ? JSON.stringify(data) : null);\n }\n\n validateChecklist(outboundId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this.checklistData = null;\n this._hasLoaded = false;\n this.renderResponse();\n const sharedKey = this.getAttribute(\"sharedKey\");\n\n this._networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n if (!this.isConnected || !this._isSessionReady || !internalId) {\n return;\n }\n this.fetchChecklist(internalId);\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n fetchChecklist(checklistId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this._isInitialLoad = !this._hasLoaded;\n this._networkManager\n .fetchChecklist(checklistId)\n .then((data) => {\n if (!this.isConnected || !this._isSessionReady || !data) {\n this._hasLoaded = false;\n this.checklistData = null;\n this._checkSessionAndLoad();\n return;\n }\n this.checklistData = data;\n this._hasLoaded = true;\n if (data.status === \"done\") {\n this.renderResponse();\n return;\n }\n if (this._isInitialLoad && !this._initialActiveSet) {\n const steps = data.outbound?.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const firstIncompleteIndex = steps.findIndex(\n (step) => !completedSteps.includes(step.id)\n );\n this.activeStep =\n firstIncompleteIndex >= 0 ? firstIncompleteIndex : -1;\n if (this.activeStep !== -1) {\n this._initialActiveSet = true;\n }\n }\n this.renderChecklist(this.checklistData);\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n updateChecklist(id, data) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return;\n }\n const apiUrl = gleapSessionInstance.apiUrl;\n if (!apiUrl) {\n return;\n }\n const session = gleapSessionInstance.session;\n const gleapId = session?.gleapId ?? \"\";\n const gleapHash = session?.gleapHash ?? \"\";\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n let url = `${apiUrl}/outbound/checklists/${id}`;\n if (data.checkedStep) {\n url += `/increment/${data.checkedStep}`;\n }\n url += `?gleapId=${gleapId}&gleapHash=${gleapHash}&lang=${lang}`;\n this.makeRequest(\"PUT\", url, data, (xhr) => {\n if (xhr._isMock) return;\n if (!(xhr.status === 200 || xhr.status === 204)) {\n // Update failed\n }\n });\n }\n\n // --- External Update Handling ---\n handleChecklistUpdate(event) {\n if (!this._hasLoaded || !this.checklistData) {\n return;\n }\n const updateData = event.detail;\n if (!updateData || updateData.id !== this.checklistData.id) {\n return;\n }\n const previousCompletedSteps = [\n ...(this.checklistData.completedSteps || []),\n ];\n let dataChanged = false;\n let activeStepCompleted = false;\n const currentlyActiveStepIndex = this.activeStep;\n if (\n updateData.completedSteps &&\n JSON.stringify(updateData.completedSteps) !==\n JSON.stringify(previousCompletedSteps)\n ) {\n this.checklistData.completedSteps = [...updateData.completedSteps];\n dataChanged = true;\n if (currentlyActiveStepIndex !== -1) {\n const activeStepId =\n this.checklistData.outbound?.config?.steps?.[\n currentlyActiveStepIndex\n ]?.id;\n if (\n activeStepId &&\n this.checklistData.completedSteps.includes(activeStepId) &&\n !previousCompletedSteps.includes(activeStepId)\n ) {\n activeStepCompleted = true;\n }\n }\n }\n if (\n updateData.status &&\n updateData.status !== this.checklistData.status\n ) {\n this.checklistData.status = updateData.status;\n dataChanged = true;\n }\n if (activeStepCompleted) {\n const steps = this.checklistData.outbound?.config?.steps || [];\n let nextActiveStep = -1;\n for (let i = currentlyActiveStepIndex + 1; i < steps.length; i++) {\n if (!this.checklistData.completedSteps.includes(steps[i].id)) {\n nextActiveStep = i;\n break;\n }\n }\n if (this.activeStep !== nextActiveStep) {\n this.setActiveStep(nextActiveStep);\n }\n dataChanged = true;\n }\n if (dataChanged) {\n this.renderChecklist(this.checklistData);\n }\n }\n\n // --- Floating (Click-based) Listeners ---\n handleFloatingLauncherClick(event) {\n event.stopPropagation();\n\n if (this.checklistData.status === \"done\") {\n return;\n }\n\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display =\n tasks.style.display === \"block\" ? \"none\" : \"block\";\n }\n }\n\n handleFloatingCloseClick(event) {\n event.stopPropagation();\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display = \"none\";\n }\n }\n\n addFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.addEventListener(\"click\", this._boundFloatingLauncherClick);\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.addEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n removeFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.removeEventListener(\n \"click\",\n this._boundFloatingLauncherClick\n );\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.removeEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n // --- Rendering Logic ---\n renderResponse() {\n this.shadowRoot.innerHTML = \"\";\n }\n\n /**\n * Renders the floating launcher. When called with the default class (\"checklist-floating\")\n * it shows a chevron icon; when called with \"checklist-floating-header\" it shows a close icon.\n */\n renderFloatingLauncher(\n outbound,\n className = \"checklist-floating\",\n renderDoneState = false\n ) {\n const steps = outbound.config?.steps || [];\n const completedSteps = this.checklistData?.completedSteps || [];\n let progress = 0;\n if (this.progressbarEnabled && steps.length > 0) {\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n }\n\n // Determine the next incomplete step\n const nextIncompleteStep = steps.find(\n (step) => !completedSteps.includes(step.id)\n );\n let titleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: steps.indexOf(nextIncompleteStep) + 1 },\n `Step ${steps.indexOf(nextIncompleteStep) + 1}`\n )\n : \"\"\n : outbound.subject || \"\";\n\n let subtitleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.description || \"\"\n : \"\"\n : outbound.message || \"\";\n\n if (renderDoneState) {\n titleText = outbound.config?.successTitle || \"\";\n subtitleText = outbound.config?.successMessage || \"\";\n progress = 100;\n }\n\n const circumference = 2 * Math.PI * 7;\n const computedOffset = circumference - (progress / 100) * circumference;\n\n const isHeader = className === \"checklist-floating-header\";\n const icon = isHeader\n ? `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>`\n : `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>`;\n\n return `\n <div part=\"${className}\" class=\"${\n isHeader ? \"checklist-floating-header\" : \"checklist-floating-launcher\"\n } ${renderDoneState ? \"checklist-floating-launcher--done\" : \"\"}\">\n <div class=\"floating-header\">\n <div class=\"floating-circular-progress\">\n <svg viewBox=\"0 0 20 20\">\n <circle class=\"track\" cx=\"10\" cy=\"10\" r=\"7\"></circle>\n <circle class=\"progress\" cx=\"10\" cy=\"10\" r=\"7\" stroke-dasharray=\"${circumference.toFixed(\n 2\n )}\" stroke-dashoffset=\"${computedOffset.toFixed(2)}\"></circle>\n </svg>\n </div>\n <div class=\"floating-title\">${titleText}</div>\n ${\n renderDoneState\n ? \"\"\n : `<span class=\"floating-icon\">${icon}</span>`\n }\n </div>\n <div class=\"floating-subtitle\">${subtitleText}</div>\n </div>\n `;\n }\n\n renderInfoSection(outbound) {\n if (!this.infoEnabled || !outbound) return \"\";\n const subject =\n outbound.subject ||\n this._translate(\"checklistDefaultTitle\", \"Checklist\");\n const message = outbound.message || \"\";\n let senderHtml = \"\";\n if (outbound.sender?.profileImageUrl) {\n senderHtml = `\n <div part=\"sender\" class=\"checklists-sender\">\n <img part=\"sender-image\" src=\"${\n outbound.sender.profileImageUrl\n }\" alt=\"${\n outbound.sender.firstName || \"Sender\"\n }'s profile picture\" style=\"object-fit: cover;\" />\n <span part=\"sender-name\">${outbound.sender.firstName || \"\"}</span>\n </div>`;\n }\n return `\n <div part=\"info\" class=\"checklists-info\">\n ${\n subject\n ? `<div part=\"info-title\" class=\"checklists-title\">${subject}</div>`\n : \"\"\n }\n ${\n message\n ? `<div part=\"info-description\" class=\"checklists-description\">${message}</div>`\n : \"\"\n }\n ${senderHtml}\n </div>`;\n }\n\n renderProgressSection(steps = [], completedSteps = []) {\n if (!this.progressbarEnabled || !steps.length) return \"\";\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n const progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n let duration = 0;\n steps.forEach((step) => {\n if (!completedSteps.includes(step.id) && step.duration > 0) {\n duration += step.duration;\n }\n });\n const progressLabel = this._translateWithVars(\n \"taskProgress\",\n { a: doneSteps, b: totalSteps },\n `${doneSteps} of ${totalSteps} done`\n );\n const durationLabel =\n duration > 0\n ? this._translateWithVars(\n \"aboutMinutes\",\n { a: duration },\n `About ${duration} min left`\n )\n : \"\";\n return `\n <div part=\"progress-labels\" class=\"checklist-progress-labels\">\n <div part=\"progress-label-primary\" class=\"checklist-progress-label\">${progressLabel}</div>\n ${\n durationLabel\n ? `<div part=\"progress-label-secondary\" class=\"checklist-progress-label\">${durationLabel}</div>`\n : \"\"\n }\n </div>\n <div part=\"progress-bar\" class=\"checklist-progress-bar\">\n <div part=\"progress-bar-progress\" class=\"checklist-progress-bar-progress\" style=\"width: ${progress}%;\"></div>\n </div>`;\n }\n\n renderTasks(steps = [], completedSteps = []) {\n if (!steps || steps.length === 0)\n return `<p>${this._translate(\n \"noStepsDefined\",\n \"No steps defined.\"\n )}</p>`;\n return steps\n .map((step, index) => {\n const isTaskDone = completedSteps.includes(step.id);\n const isActive = this.activeStep === index;\n const badge = isTaskDone\n ? `<span part=\"task-badge\" class=\"checklist-task-header--badge checklist-task-header--badge-done\">${this.getCheckIcon()}</span>`\n : `<span part=\"task-badge\" class=\"checklist-task-header--badge\">${\n index + 1\n }</span>`;\n const stepTitle =\n step.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: index + 1 },\n `Step ${index + 1}`\n );\n const stepDescription = step.description || \"\";\n const actionButtonText =\n step.actionTitle ||\n this._translate(\"actionDefaultTitle\", \"Action\");\n const actionHtml =\n step.action && step.action !== \"none\"\n ? `<div part=\"task-action\" class=\"checklist-task-body-action\" data-action-index=\"${index}\">\n <button type=\"button\" class=\"action-button form-send-button\">${actionButtonText}</button>\n </div>`\n : \"\";\n const markDoneLabel = this._translate(\"markAsDone\", \"Mark as done\");\n const markDoneHtml =\n step.allowMarkDone && !isTaskDone\n ? `<div part=\"task-mark-done\" class=\"checklist-task-body-markdone\" data-markdone-index=\"${index}\">\n ${this.getCheckIcon()}\n <div class=\"checklist-task-body-markdone-label\">${markDoneLabel}</div>\n </div>`\n : \"\";\n const taskClasses = [\n \"checklist-task\",\n isTaskDone ? \"checklist-task--done\" : \"\",\n isActive ? \"checklist-task--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n return `\n <div part=\"task\" class=\"${taskClasses}\" data-task-index=\"${index}\">\n <div part=\"task-header\" class=\"checklist-task-header\" role=\"button\" aria-expanded=\"${isActive}\" aria-controls=\"task-body-${index}\">\n ${badge}\n <div part=\"task-header-title\" class=\"checklist-task-header--title\">${stepTitle}</div>\n <span part=\"task-header-chevron\" class=\"checklist-task-header--chevron\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </span>\n </div>\n <div part=\"task-body\" class=\"checklist-task-body\" id=\"task-body-${index}\">\n <div part=\"task-body-inner\" class=\"checklist-task-body-inner\">\n ${\n stepDescription\n ? `<div part=\"task-body-content\" class=\"checklist-task-body-content\">${stepDescription}</div>`\n : \"\"\n }\n ${actionHtml}\n ${markDoneHtml}\n </div>\n </div>\n </div>`;\n })\n .join(\"\");\n }\n\n renderChecklist(data) {\n if (!this._hasLoaded || !data || !data.outbound) {\n this._checkSessionAndLoad();\n return;\n }\n const { outbound } = data;\n const steps = outbound.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const isDone =\n data.status === \"done\" ||\n (steps.length > 0 && completedSteps.length >= steps.length);\n let content = \"\";\n if (isDone) {\n const successTitle = outbound.config?.successTitle || \"\";\n const successMessage = outbound.config?.successMessage || \"\";\n if (this.floatingEnabled) {\n content = this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-launcher\",\n true\n );\n } else {\n content = `\n <div part=\"content\" class=\"checklists-content checklists-content--done\">\n <div part=\"success-icon\" class=\"checklists-success-icon\">\n <span part=\"success-icon-circle\" class=\"checklists-success-icon--circle\">${this.getCheckIcon()}</span>\n </div>\n <div part=\"success-title\" class=\"checklists-title\">${successTitle}</div>\n <div part=\"success-description\" class=\"checklists-description\">${successMessage}</div>\n </div>`;\n }\n if (this.activeStep !== -1) this.activeStep = -1;\n } else {\n content = `\n <div part=\"content\" class=\"checklists-content\">\n ${!this.floatingEnabled ? this.renderInfoSection(outbound) : \"\"}\n ${\n !this.floatingEnabled\n ? this.renderProgressSection(steps, completedSteps)\n : \"\"\n }\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(outbound)\n : \"\"\n }\n <div part=\"tasks\" class=\"checklist-tasks\">\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-header\"\n )\n : \"\"\n }\n ${this.renderTasks(steps, completedSteps)}\n </div>\n </div>`;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n\n const styles = `\n <style>\n :host {\n display: block;\n --color-bg: #ffffff;\n --color-font-title: #1f2937;\n --color-font-text: #4b5563;\n --color-font-light: #6b7280;\n --color-primary: ${primaryColor};\n --color-primary-light: ${primaryColor}22;\n --color-primary-contrast: #ffffff;\n --color-border: #e5e7eb;\n --color-gray-light: #f3f4f6;\n --color-gray-lighter: #f9fafb;\n --color-gray-dark: #6b7280;\n --color-success: #10b981;\n --color-success-light: #ffffff;\n --radius-sm: 4px;\n --radius-lg: 12px;\n --radius-full: 9999px;\n --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -2px rgba(0, 0, 0, 0.08);\n --shadow-lg: rgba(0, 0, 0, 0.2) 0px 7px 29px 0px;\n --animation-duration: 0.2s;\n --animation-timing: ease-in-out;\n font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n box-sizing: border-box;\n }\n :host([dark]) {\n --color-bg: #1f2937;\n --color-font-title: #f9fafb;\n --color-font-text: #d1d5db;\n --color-font-light: #9ca3af;\n --color-primary: ${primaryColor};\n --color-primary-light: ${primaryColor}22;\n --color-primary-contrast: #ffffff;\n --color-border: #374151;\n --color-gray-light: #374151;\n --color-gray-lighter: #111827;\n --color-gray-dark: #9ca3af;\n --color-success: #34d399;\n --color-success-light: #1f2937;\n }\n *, *:before, *:after { box-sizing: inherit; }\n .checklists-content { color: var(--color-font-text); }\n .checklists-content--done { text-align: center; }\n .checklists-info { margin-bottom: 24px; text-align: center; }\n .checklists-title { font-size: 1.25rem; font-weight: 600; margin-bottom: 8px; color: var(--color-font-title); }\n .checklists-description { font-size: 0.9rem; margin-bottom: 16px; color: var(--color-font-text); line-height: 1.5; }\n .checklists-sender { display: flex; align-items: center; justify-content: center; gap: 8px; }\n .checklists-sender img { width: 28px; height: 28px; border-radius: var(--radius-full); object-fit: cover; }\n .checklists-sender span { font-size: 0.875rem; color: var(--color-font-light); font-weight: 500; }\n .checklists-success-icon { margin-bottom: 16px; line-height: 0; }\n .checklists-success-icon--circle { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: var(--radius-full); background-color: var(--color-success); color: var(--color-success-light); font-size: 22px; }\n .checklist-progress-labels { display: flex; justify-content: space-between; margin-bottom: 8px; }\n .checklist-progress-label { font-size: 0.75rem; color: var(--color-font-light); font-weight: 500; }\n .checklist-progress-bar { width: 100%; height: 6px; background-color: var(--color-gray-light); border-radius: var(--radius-full); overflow: hidden; margin-bottom: 20px; }\n .checklist-progress-bar-progress { height: 100%; background-color: var(--color-primary); transition: width var(--animation-duration) var(--animation-timing); border-radius: var(--radius-full); }\n .checklist-tasks { display: flex; flex-direction: column; gap: 12px; }\n .checklist-task { border: 1px solid var(--color-border); border-radius: var(--radius-lg); background-color: var(--color-bg); box-shadow: var(--shadow-sm); overflow: hidden; transition: background-color var(--animation-duration) var(--animation-timing), border-color var(--animation-duration) var(--animation-timing); }\n .checklist-task-header { display: flex; align-items: center; padding: 15px 20px; cursor: pointer; gap: 12px; position: relative; }\n .checklist-task-header:hover { background: var(--color-gray-lighter); }\n .checklist-task-header:hover .checklist-task-header--chevron {\n color: var(--color-font-title);\n }\n .checklist-task-header--badge { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: var(--radius-full); background-color: var(--color-primary-light); color: var(--color-primary); font-size: 0.875rem; font-weight: 600; flex-shrink: 0; transition: background-color var(--animation-duration) var(--animation-timing), color var(--animation-duration) var(--animation-timing); line-height: 1; }\n .checklist-task-header--badge svg { width: 16px; height: 16px; }\n .checklist-task-header--title { flex-grow: 1; font-size: 0.9rem; font-weight: 500; color: var(--color-font-title); transition: font-weight var(--animation-duration) var(--animation-timing), color var(--animation-duration) var(--animation-timing), text-decoration var(--animation-duration) var(--animation-timing); }\n .checklist-task-header--chevron { color: var(--color-font-light); transition: transform var(--animation-duration) var(--animation-timing); flex-shrink: 0; margin-left: auto; }\n .checklist-task-header--chevron svg { display: block; width: 18px; height: 18px; }\n .checklist-task-body {\n overflow: hidden;\n transition: max-height var(--animation-duration) var(--animation-timing), opacity var(--animation-duration) var(--animation-timing);\n max-height: 0;\n opacity: 0;\n }\n .checklist-task--active .checklist-task-body {\n max-height: var(--task-body-active-height, 200px);\n opacity: 1;\n }\n .checklist-task-body-inner { padding: 4px 16px 20px 60px; font-size: 0.875rem; color: var(--color-font-text); line-height: 1.5; }\n .checklist-task-body-content { margin-bottom: 16px; }\n .checklist-task-body-content p:first-child { margin-top: 0; }\n .checklist-task-body-content p:last-child { margin-bottom: 0; }\n .checklist-task-body-action { margin-top: 16px; }\n .action-button { display: inline-flex; align-items: center; justify-content: center; background-color: var(--color-primary); color: var(--color-primary-contrast); padding: 10px 18px; font-size: 0.875rem; font-weight: 500; border-radius: var(--radius-lg); border: none; text-align: center; cursor: pointer; transition: background-color var(--animation-duration) var(--animation-timing), box-shadow var(--animation-duration) var(--animation-timing); box-shadow: var(--shadow-sm); }\n .action-button:hover { background-color: color-mix(in srgb, var(--color-primary) 90%, black); box-shadow: var(--shadow-md); }\n .action-button:focus { outline: 2px solid color-mix(in srgb, var(--color-primary) 50%, transparent); outline-offset: 2px; }\n .checklist-task-body-markdone { margin-top: 20px; border-top: 1px solid var(--color-border); padding: 16px 0 0px 0; display: flex; align-items: center; cursor: pointer; color: var(--color-primary); transition: color var(--animation-duration) var(--animation-timing); }\n .checklist-task-body-markdone:hover { color: color-mix(in srgb, var(--color-primary) 80%, black); }\n .checklist-task-body-markdone svg { width: 18px; height: 18px; margin-right: 6px; flex-shrink: 0; font-size: 18px; }\n .checklist-task-body-markdone-label { font-size: 0.875rem; font-weight: 500; line-height: 1; }\n .checklist-task--active .checklist-task-header--title { font-weight: 600; }\n .checklist-task--active .checklist-task-header--chevron { transform: rotate(180deg); }\n .checklist-task--active .checklist-task-header:hover { background: linear-gradient(180deg, var(--color-gray-lighter), transparent); }\n .checklist-task--done { background-color: var(--color-gray-lighter); border-color: var(--color-gray-light); box-shadow: none; }\n .checklist-task--done .checklist-task-header--badge { background-color: var(--color-success); color: var(--color-success-light); }\n .checklist-task--done .checklist-task-header--title { color: var(--color-font-light); }\n .checklist-task--done .checklist-task-body-inner { color: var(--color-font-light); }\n .checklist-task--done .checklist-task-header--title {\n text-decoration: line-through;\n }\n \n /* -------------------------\n Floating style addition\n Only applies if floating=\"true\"\n ------------------------- */\n :host([floating=\"true\"]) .checklists-content {\n position: relative;\n }\n :host([floating=\"true\"]) .checklist-tasks {\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: 1000;\n max-height: 90vh;\n display: none;\n padding: 0px;\n min-width: min(380px, 90vw);\n background-color: var(--color-bg);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-lg);\n overflow: hidden;\n }\n :host([floating=\"true\"]) .checklist-task {\n border-radius: 0px;\n border: none;\n box-shadow: none;\n border-bottom: 1px solid var(--color-border);\n }\n :host([floating=\"true\"]) .checklist-task:last-child {\n border-bottom: none;\n }\n :host([floating=\"true\"]) .checklist-task--done {\n background-color: transparent;\n }\n :host([floating=\"true\"]) .checklist-task-header:hover {\n background: linear-gradient(180deg, var(--color-gray-lighter), transparent);\n }\n \n /* -------------------------\n Floating Launcher Styles\n ------------------------- */\n .checklist-floating-launcher {\n padding: 12px;\n background-color: var(--color-bg);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-md);\n transition: transform 0.3s ease;\n cursor: pointer;\n }\n .checklist-floating-launcher--done {\n cursor: default !important;\n }\n .checklist-floating-header {\n padding: 20px;\n padding-bottom: 16px;\n border-bottom: 1px solid var(--color-border);\n cursor: pointer;\n }\n .checklist-floating-header:hover .floating-icon,\n .checklist-floating-launcher:hover .floating-icon {\n color: var(--color-font-title);\n }\n .floating-header {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n }\n .floating-title {\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--color-font-title);\n max-width: calc(100% - 32px);\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n .floating-subtitle {\n font-size: 0.875rem;\n color: var(--color-font-text);\n margin-top: 8px;\n max-width: 100%;\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n .floating-circular-progress {\n width: 26px;\n height: 26px;\n margin-right: 6px;\n }\n .floating-circular-progress svg {\n width: 100%;\n height: 100%;\n transform: rotate(-90deg);\n }\n .floating-circular-progress .track {\n fill: none;\n stroke: var(--color-gray-light);\n stroke-width: 3;\n }\n .floating-circular-progress .progress {\n fill: none;\n stroke: var(--color-primary);\n stroke-width: 3;\n stroke-linecap: round;\n transition: stroke-dashoffset var(--animation-duration) var(--animation-timing);\n }\n .checklist-floating-launcher--done .floating-circular-progress .progress {\n stroke: var(--color-success);\n }\n .floating-icon {\n margin-left: auto;\n color: var(--color-font-light);\n }\n </style>\n `;\n this.shadowRoot.innerHTML = styles + content;\n this.addTaskEventListeners();\n if (this.floatingEnabled) {\n this.addFloatingClickListeners();\n }\n if (this.activeStep !== -1) {\n this.toggleTask(this.activeStep, true);\n }\n }\n\n updateActiveTaskMaxHeight() {\n if (this.activeStep !== -1) {\n const taskBodyInner = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body-inner`\n );\n const container = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body`\n );\n if (taskBodyInner && container) {\n const height = taskBodyInner.offsetHeight;\n container.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n }\n\n // --- Event Listener Setup ---\n addTaskEventListeners() {\n const tasks = this.shadowRoot.querySelectorAll(\".checklist-task\");\n tasks.forEach((task) => {\n const header = task.querySelector(\".checklist-task-header\");\n const index = parseInt(task.getAttribute(\"data-task-index\"), 10);\n if (header) {\n header.addEventListener(\"click\", () => {\n const newActiveStep = this.activeStep === index ? -1 : index;\n this.setActiveStep(newActiveStep);\n });\n }\n const markDoneBtn = task.querySelector(\n \".checklist-task-body-markdone\"\n );\n if (markDoneBtn) {\n markDoneBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (!this.checklistData?.outbound?.config?.steps) return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step) return;\n const previouslyActiveStep = this.activeStep;\n if (!this.checklistData.completedSteps)\n this.checklistData.completedSteps = [];\n if (!this.checklistData.completedSteps.includes(step.id)) {\n this.checklistData.completedSteps.push(step.id);\n const allSteps = this.checklistData.outbound.config.steps;\n let nextActiveStep = -1;\n if (previouslyActiveStep === index) {\n for (let i = index + 1; i < allSteps.length; i++) {\n if (\n !this.checklistData.completedSteps.includes(\n allSteps[i].id\n )\n ) {\n nextActiveStep = i;\n break;\n }\n }\n this.setActiveStep(nextActiveStep);\n }\n // Preserve the state of the floating modal.\n setTimeout(() => {\n let isModalOpen = false;\n if (this.floatingEnabled) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n isModalOpen =\n tasksModal && tasksModal.style.display === \"block\";\n }\n this.renderChecklist(this.checklistData);\n if (this.floatingEnabled && isModalOpen) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasksModal) tasksModal.style.display = \"block\";\n }\n }, 300);\n const updateData = { checkedStep: step.id };\n if (\n allSteps.length > 0 &&\n this.checklistData.completedSteps.length >= allSteps.length\n ) {\n this.checklistData.status = \"done\";\n updateData.status = \"done\";\n }\n this.updateChecklist(this.checklistData.id, updateData);\n }\n });\n }\n const actionBtn = task.querySelector(\n \".checklist-task-body-action .action-button\"\n );\n if (actionBtn) {\n actionBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (\n !this.checklistData?.outbound?.config?.steps ||\n typeof Gleap === \"undefined\"\n )\n return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step || !step.action || step.action === \"none\") return;\n try {\n if (step.action === \"BOT\") Gleap.startBot(step.botId);\n else if (step.action === \"CUSTOM_ACTION\")\n Gleap.triggerCustomAction(step.actionBody);\n else if (step.action === \"REDIRECT_URL\") {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n Gleap.openURL(step.actionBody, !!step.actionOpenInNewTab);\n } else if (step.action === \"FEEDBACK_FLOW\")\n Gleap.startFeedbackFlow(step.formId);\n else if (step.action === \"NEWS_ARTICLE\")\n Gleap.openNewsArticle(step.articleId);\n else if (step.action === \"HELP_ARTICLE\")\n Gleap.openHelpCenterArticle(step.articleId);\n else if (step.action === \"CHECKLIST\")\n Gleap.startChecklist(step.outboundId, true, step?.sharedKey);\n } catch (gleapError) {}\n });\n }\n });\n }\n\n // --- Animation and State Management ---\n setActiveStep(index) {\n const previousActiveStep = this.activeStep;\n this.activeStep = index;\n const tasksToToggle = [];\n if (\n previousActiveStep !== -1 &&\n previousActiveStep !== this.activeStep\n ) {\n tasksToToggle.push({ index: previousActiveStep, open: false });\n }\n if (this.activeStep !== -1 && this.activeStep !== previousActiveStep) {\n tasksToToggle.push({ index: this.activeStep, open: true });\n }\n tasksToToggle.forEach(({ index, open }) => {\n this.toggleTask(index, open);\n });\n }\n\n toggleTask(index, forceOpen = null) {\n const taskElement = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${index}\"]`\n );\n if (!taskElement) return;\n const header = taskElement.querySelector(\".checklist-task-header\");\n if (!header) return;\n const isOpen = taskElement.classList.contains(\"checklist-task--active\");\n const shouldOpen = forceOpen !== null ? forceOpen : !isOpen;\n if (shouldOpen && !isOpen) {\n taskElement.classList.add(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"true\");\n const taskBodyInner = taskElement.querySelector(\n \".checklist-task-body-inner\"\n );\n if (taskBodyInner) {\n const height = taskBodyInner.offsetHeight;\n const taskBody = taskElement.querySelector(\".checklist-task-body\");\n if (taskBody) {\n taskBody.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n } else if (!shouldOpen && isOpen) {\n taskElement.classList.remove(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"false\");\n }\n }\n }\n\n if (\n typeof customElements !== \"undefined\" &&\n !customElements.get(\"gleap-checklist\")\n ) {\n customElements.define(\"gleap-checklist\", GleapChecklist);\n }\n }\n};\n","import Gleap from \"./Gleap\";\n\nexport default Gleap;\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","GleapFeedbackButtonManager","_classCallCheck","_defineProperty","value","instance","feedbackButton","remove","buttonHidden","lastButtonIcon","injectedFeedbackButton","show","getInstance","updateFeedbackButtonState","GleapNotificationManager","updateContainerStyle","frameManager","GleapFrameManager","isOpened","hideWidget","setAppMode","showWidget","_this","elem","document","createElement","addEventListener","feedbackButtonPressed","body","appendChild","count","notificationBadge","querySelector","notificationHiddenClass","classList","innerText","add","updateFeedbackButtonText","injectFeedbackButton","flowConfig","GleapConfigManager","getFlowConfig","feedbackButtonPosition","FEEDBACK_BUTTON_CLASSIC","FEEDBACK_BUTTON_CLASSIC_BOTTOM","FEEDBACK_BUTTON_CLASSIC_LEFT","widgetButtonText","buttonIcon","buttonLogo","concat","loadIcon","className","setAttribute","GleapTranslationManager","isRTLLayout","innerHTML","hideButton","FEEDBACK_BUTTON_NONE","FEEDBACK_BUTTON_BOTTOM_LEFT","appMode","hideForGuests","GleapSession","isUser","calculateShadeColor","col","amt","replace","length","_col$match2","_slicedToArray","match","r","g","b","_ref","parseInt","Math","max","min","toString","rr","gg","bb","calculateContrast","hex","substr","name","color","GleapNetworkIntercepter","Date","now","loadAllResources","contentType","toLocaleLowerCase","supportedContentTypes","i","includes","requests","JSON","parse","stringify","values","externalRequests","filters","request","headers","j","payload","payloadObj","e","response","responseText","data","window","performance","resources","getEntriesByType","resource","indexOf","initiatorType","find","url","push","type","date","startTimestamp","startTime","duration","round","exp","blacklist","defaultBlacklist","filter","maxRequests","stopped","keys","keysToRemove","slice","bbRequestId","startDate","getTime","text","size","TextEncoder","encode","encodeURI","s","split","Blob","getTextContentSize","undefined","TextDecoder","_typeof","ArrayBuffer","isView","decode","payloadText","cleanupPayload","cleanupContentSize","initialized","self","interceptNetworkRequests","onFetch","params","fromEntries","entries","method","preparePayload","cleanRequests","onFetchLoad","req","status","statusText","calcRequestTime","isContentTypeSupported","then","err","onFetchFailed","onOpen","args","onSend","requestHeaders","onError","currentTarget","onLoad","target","responseType","callback","originalFetch","open","XMLHttpRequest","send","gleapSetRequestHeader","setRequestHeader","header","requestId","arguments","bind","apply","fetch","clone","blob","Promise","resolve","reject","fr","FileReader","onload","evt","result","onerror","readAsText","resizeImage","base64Str","maxWidth","maxHeight","isJPEG","img","Image","src","canvas","MAX_WIDTH","MAX_HEIGHT","width","height","getContext","drawImage","toDataURL","isMobile","test","navigator","userAgent","gleapDataParser","String","truncateString","str","num","removeSubDomain","v","parts","is2ndLevelDomain","secondLevel","join","loadFromGleapCache","cachedData","localStorage","getItem","saveToGleapCache","k","setItem","removeItem","runFunctionWhenDomIsReady","readyState","RequestStatus","ChecklistNetworkManager","Map","validationCache","clear","fetchCache","validationRequests","fetchRequests","gleapSessionInstance","session","lang","getActiveLanguage","gleapId","gleapHash","apiUrl","xhr","injectSession","onreadystatechange","responseData","error","outboundId","sharedKey","cacheKey","_createCacheKey","cachedResult","internalId","has","_getApiUrl","Error","set","_getQueryParams","requestPromise","_makeRequest","id","_this2","floor","createCoords","x","y","oppositeSideMap","left","right","bottom","top","oppositeAlignmentMap","start","end","clamp","param","placement","axis","getAxisLength","getAlignmentAxis","alignment","getOppositePlacement","side","padding","expandPaddingObject","rect","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","offset","fn","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","isRTL","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","getNodeName","node","isNode","nodeName","toLowerCase","getWindow","_node$ownerDocument","ownerDocument","defaultView","documentElement","Node","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","webkit","isWebKit","css","transform","perspective","containerType","backdropFilter","some","willChange","contain","CSS","supports","isLastTraversableNode","getComputedStyle","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getParentNode","assignedSlot","parentNode","host","getNearestOverflowAncestor","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","visualViewport","frameElement","getCssDimensions","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","domElement","getBoundingClientRect","Number","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","topLayerSelectors","isTopLayer","selector","matches","getWindowScrollBarX","getClientRectFromClippingAncestor","clippingAncestor","html","clientWidth","clientHeight","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getTrueOffsetParent","polyfill","currentNode","getContainingBlock","topLayer","elementClippingAncestors","cache","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","_c","clippingAncestors","firstClippingAncestor","clippingRect","reduce","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","getClientRects","Array","from","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","onMove","timeoutId","io","cleanup","_io","clearTimeout","disconnect","refresh","skip","threshold","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","removeEventListener","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","isBasePlacement","oppositePlacement","getExpandedPlacements","isStart","lr","rl","tb","bt","getSideList","map","getOppositeAxisPlacements","placements","overflows","overflowsData","flip","sides","mainAlignmentSide","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","index","nextPlacement","reset","resetPlacement","d","sort","a","_overflowsData$map$so","acc","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","centerOffset","mergedOptions","platformWithCache","config","middleware","validMiddleware","Boolean","statefulPlacement","resetCount","nextX","nextY","computePosition","GleapTooltipManager","WeakMap","tooltip","hasAttribute","nextId","tooltipElem","mode","hotspotContainer","canEmbed","firstChild","insertBefore","nextSibling","hotspot","icon","animated","repositionHotspot","elementToTooltipMap","floatingUIInstance","createTooltip","elementToFloatingUIMap","filteredTooltips","getFilteredTooltips","checkForTooltips","tooltips","currentUrl","location","href","page","filterType","pageType","filterValue","startsWith","endsWith","querySelectorAll","linkTooltip","sessionInstance","http","sdkKey","console","updateFilteredTooltips","nodeType","ELEMENT_NODE","checkNodeTooltip","childNodes","childNode","processNodeInsertion","_this3","_this4","time","timeout","handleResizeThrottled","updateHotspotPositions","context","_toConsumableArray","observer","MutationObserver","mutations","lastUrl","mutation","addedNodes","removedNodes","floatingUI","childList","subtree","_this5","tooltipText","tooltipData","hideTimeout","arrowEl","posX","shift","assign","style","arrowPos","visibility","opacity","pointerEvents","hide","voidElements","Set","tagName","resizeListener","anchor","tooltipId","getAttribute","posY","offsetX","offsetY","elementRect","range","createRange","selectNodeContents","fixedWidth","anchorRect","tooltipSize","email","userId","phone","onSessionReady","ready","onSessionReadyListener","attemp","retry","GleapEventManager","notifyEvent","useCookies","cookie","eraseGleapCookie","sendMessage","clearAllNotifications","setNotificationCount","GleapBannerManager","removeBannerUI","GleapModalManager","hideModal","isNaN","newTimeout","pow","startSession","_this$session","sessionChanged","days","expires","setTime","toUTCString","setGleapCookie","encodeURIComponent","clearCache","GleapStreamedEvent","restart","tooltipManager","destroy","load","dispatchEvent","CustomEvent","notifySessionReady","sessionCookie","nameEQ","ca","c","charAt","substring","getGleapCookie","sessionData","decodeURIComponent","validateSession","cachedSession","clearSession","userData","checkIfSessionDataNeedsUpdate","userDataKeys","userDataKey","customData","setOnSessionReady","_objectSpread","sdkVersion","SDK_VERSION","ws","userHash","checkIfSessionNeedsUpdate","dataToSend","tourId","tourData","_window","passedPageFilter","sendSessionUpdate","streamEvents","mainLoopTimeout","runEventStreamLoop","streamingEvents","errorCount","streamedEventArray","socket","OPEN","sessionDuration","GleapMetaDataManager","getSessionDuration","events","opened","handleOpenBound","handleOpen","handleErrorBound","handleError","handleMessageBound","handleMessage","handleCloseBound","handleClose","connectionTimeout","pingWS","clearInterval","close","cleanupWebSocket","connectedWebSocketGleapId","WebSocket","wsApiUrl","event","setInterval","processMessage","initWebSocket","message","_message$data","u","Gleap","performActions","detail","eventArray","cleanupMainLoop","trackInitialEvents","startPageListener","resetErrorCountLoop","logEvent","logCurrentPage","disablePageTracking","log","eventMaxLength","parseIntWithDefault","val","def","parsed","onConfigLoaded","onConfigLoadedListener","aiTools","sendConfigUpdate","cachedConfig","applyConfig","loadConfigFromServer","setStyles","headerColor","buttonColor","backgroundColor","borderRadius","buttonX","buttonY","applyStylesFromConfig","enableWebReplays","GleapReplayRecorder","stop","enableNetworkLogs","setLoadAllResources","sendNetworkResources","networkLogPropsToIgnore","setFilters","networkLogBlacklist","setBlacklist","updateRTLSupport","enableShortcuts","notifyConfigLoaded","_regeneratorRuntime","t","n","Symbol","iterator","asyncIterator","toStringTag","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","f","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","reverse","pop","prev","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","_next","_throw","info","_asyncToGenerator","documentToHTML","doctype","publicId","systemId","outerHTML","loadCSSUrlResources","basePath","remote","regex","asyncFn","matchedData","matchedUrl","replaceAll","resourcePath","URL","fetchCSSResource","resourceData","promises","_len","_key","promise","all","reader","onloadend","readAsDataURL","fetchItemResource","isBlacklisted","warn","progressResource","replaceStyleNodes","styleSheet","cssTextContent","styleId","cloneTargetNode","ownerNode","replacementNode","head","styleNode","cssText","createTextNode","linkNode","rel","media","getTextContentFromStyleSheet","cssRules","rules","cssRuleItem","downloadAllCSSUrlResources","basePathURL","_loop","styleSheets","mediaText","baseTags","getElementsByTagName","origin","lastIndexOf","replacedStyle","styletext","stylesheet","results","prepareRemoteData","dom","imgItems","imgItemsPromises","item","downloadAllImages","handleAdoptedStyleSheets","doc","shadowNodeId","adoptedStyleSheets","shadowStyleNode","firstElementChild","extractFinalCSSState","getAnimations","animations","finalCSSState","animation","_animation$effect","keyframes","effect","getKeyframes","finalKeyframe","property","deepClone","_callee3","cloneNode","fragment","clonedHead","_context3","_ref2","_callee2","parent","shadowRoot","walkTree","webAnimations","boundingRect","resizedImage","_boundingRect","rootShadowNodeId","_context2","_ref3","_callee","nextn","nextp","innerShadowRoot","_context","nextElementSibling","_x5","_x6","_x7","HTMLCanvasElement","t0","toUpperCase","contains","checked","_x2","_x3","_x4","createDocumentFragment","_x","prepareScreenshotData","_ref4","_callee4","styleTags","linkImportElems","referenceNode","scriptElems","existingBasePath","baseElems","baseUrl","newBaseUrl","baseNode","dialogElems","bbElems","_context4","innerWidth","innerHeight","_x8","_x9","GleapScreenRecorder","rerender","permissionErrorText","mediaDevices","getDisplayMedia","isRecording","available","video","ideal","screen","frameRate","displaySurface","selfBrowserSurface","audio","displayStream","stream","audioMuted","audioAvailable","handleRecord","startAudioRecording","alert","mediaRecorder","recordingTimer","getTracks","track","getUserMedia","voiceStream","getAudioTracks","addTrack","audioErr","audioTracks","enabled","file","recordedChunks","MediaRecorder","mimeType","getSupportedMimeType","recordTime","timerLabel","remainingTime","maxRecordTime","formatTime","stopScreenRecording","ondataavailable","getVideoTracks","onended","prepareRecording","onstop","completeBlob","extension","File","previewVideoElement","createObjectURL","_i","_types","isTypeSupported","screenRecordingData","formdata","FormData","append","fileUrl","GleapFeedback","priority","formData","isSilent","excludeData","spamToken","gleapInstance","GleapCustomDataManager","getCustomData","metaData","getMetaData","consoleLog","GleapConsoleLogManager","getLogs","networkLogs","getRequests","customEventLog","getEventArray","ticketAttributes","getTicketAttributes","dataPromises","webReplay","getGlobalDataItem","isLiveSite","recordingUrlPromise","uploadScreenRecording","recordingUrl","screenRecordingUrl","screenshot","screenshotDataPromise","isLiveMode","screenshotData","snapshotPosition","feedbackData","outbound","tags","GleapTagManager","getTags","keysToExclude","keyToExclude","takeSnapshot","getData","feedback","newTab","newWindow","focus","cmp_block_ignoredomains","injectedFrame","autoWhiteListCookieManager","frameUrl","gleapFrameContainer","gleapFrame","updateFrameStyle","showFrameContainer","closeElement","surveyStyle","extendedStyle","surveyFullStyle","classicStyle","classicStyleLeft","modernStyleLeft","noButtonStyleLeft","allStyles","styleToApply","startCommunication","appHeight","setProperty","handler","urlHandler","innerContainer","escListener","widgetOpened","markerManager","showLoader","loadingClass","disableBGFade","disableBGGradient","updateUI","workThroughQueue","setGlobalDataItem","scrollX","scrollY","updateWidgetStatus","registerEscListener","isSurvey","runWidgetShouldOpenCallback","injectFrame","isWidgetOpen","resetRoutes","hideMarkerManager","reloadNotificationsFromCache","unregisterEscListener","queue","comReady","contentWindow","postMessage","getSession","getAiTools","overrideLanguage","getOverrideLanguage","GleapMarkerManager","success","workQueue","_this6","addMessageListener","GleapAudioManager","ping","showImage","ticketData","frameHeight","GleapCustomActionManager","triggerCustomAction","shareToken","action","feedbackType","sendFeedback","reportedBy","trackEvent","showDrawingScreen","bannerUrl","listeners","appVersionCode","appBuildNumber","sessionStart","nameOffset","verOffset","ix","nAgt","browserName","appName","fullVersion","appVersion","majorVersion","OSName","browser","systemName","buildVersionNumber","releaseVersionNumber","devicePixelRatio","screenWidth","screenHeight","language","userLanguage","mobile","sdkType","environment","logArray","disabled","originalConsoleLog","logLevel","logMaxLength","addLog","origConsole","addLogWithArgs","GleapClickListener","protocol","preventDefault","handleGleapLink","elementId","elementClass","elemId","elemClass","elementTag","htmlPre","htmlPost","getDOMElementDescription","takeCurrentReplay","eventListeners","eventListener","eventName","customAction","customActionCallbacks","_a","__defProp","__publicField","__defNormalProp","__defProp$1","__publicField$1","__defNormalProp$1","NodeType$3","NodeType2","testableAccessors$1","testableMethods$1","untaintedBasePrototype$1","isAngularZonePresent$1","globalThis","Zone","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","accessor","_a2","_b","getOwnPropertyDescriptor","methodNames","isUntaintedMethods","iframeEl","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","index$1","n2","parentElement","textContent","other","getRootNode","selectors","mutationObserver","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","sheetHref","stringifiedRules","rule2","stringifyRule","isCSSImportRule","importStringified","statement","layerName","supportsText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","cssStringified","fixSafariColons","Mirror","getId","getMeta","getNode","idNodeMap","getIds","nodeMetaMap","removeNodeFromMap","delete","hasNode","node2","meta","oldNode","maskInputValue","maskInputOptions","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","extractFileExtension","path","baseURL","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","extractOrigin","stack","part","normalizeCssString","markCssSplits","childNodes2","splits","cssTextNorm","i2","textContentNorm","bit","splitNorm","splitCssText","_id","tagNameRegex","RegExp","IGNORED_NODE","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","attributeValue","trim","getHref","isSVGElement","ownerSVGElement","customHref","a2","transformAttribute","pos","collectCharacters","regEx","chars2","exec","output","descriptorsStr","inParens","c2","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","needMaskingText","maskTextClass","maskTextSelector","closest","e2","serializeNode","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","attributes","len","attr","_cssText","sheet","selected","rr_open_mode","__context","ctx","x2","getImageData","originalGetImageData","Uint32Array","buffer","pixel","is2DCanvasBlank","rr_dataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","removeAttribute","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","rr_scrollLeft","rr_scrollTop","class","rr_width","rr_height","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","listener","fired","timer","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","getAugmentedNamespace$1","f2","default","a22","Reflect","construct","picocolors_browser$1","x$1","create$1","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","CssSyntaxError","line","column","source","plugin22","super","reason","plugin","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","aside","lines","index2","number","gutter","spacing","code","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","builder","atrule","raws","afterName","nodes","block","between","beforeAfter","detect","raw","buf","depth","step","last","child","before","decl","string","important","own","first","root2","rawCache","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","rawSemicolon","rule","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","isArray","Node$4$1","defaults","addToError","postcssNode","input","insertAfter","overrides","cleanRaws","keepBetween","cloneAfter","cloneBefore","opts","rangeBy","getProxyProcessor","toProxy","markDirty","positionBy","stringRepresentation","positionInside","word","endIndex","defaultType","replaceWith","bookmark","foundSelf","result2","toJSON","_","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","Proxy","stringifier2","proxyOf","node$1","Node$3$1","Declaration$4$1","variable","declaration$1","nonSecure$1","nanoid","random","customAlphabet","alphabet","defaultSize","SourceMapConsumer","SourceMapConsumer$2$1","SourceMapGenerator","SourceMapGenerator$2$1","existsSync","existsSync$1","readFileSync","readFileSync$1","dirname","dirname$1$1","join$1","PreviousMap$2$1","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","lastMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","fromSourceMap","prevPath","withContent","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath","fileURLToPath$1","pathToFileURL","pathToFileURL$1$1","isAbsolute","isAbsolute$1","resolve$1$1","nanoid$2","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","hasBOM","mapResolve","fromOffset","lastLine","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","sourceContentFor","json","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative","relative$1","resolve$2","sep","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","content","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","fileURL","Node$2$1","Comment$4$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","Node$1$1","cleanSource$1","markDirtyUp$1","Container$7$1","Container","children","normalize","each","getIterator","indexes","condition","lastEach","cb","exist","existIndex","splice","sample","rebuild","prepend","unshift","removeAll","replaceValues","pattern","props","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Container$6$1","Document$3$1","toResult","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","opt","warning$1","Warning$1$1","Result$3$1","processor2","processor","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","ignore","root$1","list$2$1","comma","space","separators","array","current","func","inQuote","prevQuote","escape","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","sep2","rule$1","Declaration$2$1","tokenizer2$1","quote","escaped","escapePos","currentToken","valueOf","ignoreErrors","returned","unclosed","what","back","token","endOfFile","nextToken","ignoreUnclosed","controlChar","fromCharCode","lastIndex","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","parser$1","spaces","createTokenizer","unnamedAtrule","init","brackets","tokenizer","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","tokens","founded","doubleColon","customProperty","findLastWithPosition$1","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRule","AtRuleExit","CommentExit","Declaration","DeclarationExit","DocumentExit","Once","OnceExit","prepare","Root","RootExit","Rule","RuleExit","NOT_VISITORS$1","CHILDREN$1","isPromise$1","getEvents$1","toStack$1","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","processed","syntax","parser","helpers","postcss","plugins","processing","runAsync","onRejected","catch","onFinally","getAsyncError","postcssVersion","prepareVisitors","version","hasListener","runOnRoot","visitTick","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","normalized","process","use","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","atRule","Processor","Warning","Result","Input","postcss_1$1","postcss$1$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","Node$4","Node$3","Declaration$4","declaration","nonSecure","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","Node$2","Comment$4","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","Node$1","cleanSource","markDirtyUp","Container$7","Container2","container","LazyResult$4","Processor$3","Container$6","Document$3","document$1","Warning$2","warning","Warning$1","Result$3","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","LazyResult$3","Processor$2","Container$4","Root$5","list$2","list_1","Container$3","list$1","Rule$3","Declaration$2","tokenizer22","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","CHILDREN","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","childIterator","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","isAngularZonePresent","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","on","capture","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","leading","remaining","trailing","hookSetter","isRevoked","patch","replacement","wrapped","defineProperties","__rrweb_original__","receiver","nowTimestamp","getWindowScroll","_d","scrollingElement","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","addNode","__ln","previousSibling","tail","removeNode","moveKey","parentId","MutationBuffer","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","genAdds","nodeId","isSerialized","deepDelete","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_mirror2","_isParentRemoved","_isAncestorInSet","errorHandler","callbackWrapper","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","processMutations","attributeOldValue","characterData","characterDataOldValue","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","eventKey","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","scrollLeftTop","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","ignoreCSSAttributes","CSSStyleDeclaration","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","initCustomElementObserver","pluginHandlers","plugin3","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","variableListFor$1","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","base64","arraybuffer","bytes","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","getOwnPropertyNames","recordArgs","hookHandler","setter","encodedJs","WorkerWrapper","objURL","webkitURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","type2","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","r2","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","takeFullSnapshot$1","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","month","search","tel","week","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","t2","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","customOptions","stopFunction","ContextMenu","DblClick","Focus","Blur","rrwebEvent","stringifiedData","_step","dataURIRegex","_iterator","_createForOfIteratorHelper","matchAll","ensureMaxMessageSize","bufferSize","ScreenDrawer","svgElement","minHeight","mouseDown","colorpicker","fadeOutToolbar","tool","mouseDownPen","mouseDownRect","mouseMove","mouseMovePen","mouseMoveRect","mouseUp","fadeInToolbar","mouseUpPen","mouseUpRect","appendToBuffer","getMousePosition","updateSvgPath","w","abs","startPoint","setAttributeNS","createElementNS","strokeWidthRect","appendPathToSvg","strokeWidth","pt","strPath","touches","totalX","totalY","getAveragePoint","tmpPath","pathBuffer","fadeTarget","GleapScrollStopper","supportsPassive","wheelOpt","scrollDisabled","wheelEvent","preventDefaultForScrollKeys","keyCode","showWidgetUI","formKey","dirty","dialogUI","enableScroll","screenRecorder","unregisterListeners","cleanupMousePointer","screenDrawer","dialog","captureSVG","videoPreviewContainer","dismissUI","colorPicker","borderLayer","captureEditor","dragCursor","setMouseMove","mouseMoveEventHandler","touchMoveEventHandler","dragHandle","dragStart","drag","dragEnd","bugReportingEditor","translateText","pageLeaveListener","isEscape","isEnter","dismiss","showNextStep","returnValue","registerListeners","hideWidgetUI","createEditorUI","setupMousePointer","disableScroll","setupScreenRecording","captureScreenDrawerRerender","setupColorPicker","setupToolbar","selectedColor","colorItems","colorItem","hexColor","onclick","setColor","setPenColor","currentX","currentY","initialX","initialY","toolbar","isDragging","xOffset","yOffset","_getTransformValues","matrix","DOMMatrix","m41","m42","getTransformValues","nextButton","chooseTool","toolbarItem","toolbarTools","setTool","svgClone","toolbarItems","_loop2","toggleAudio","startScreenRecording","removeLastAddedPathFromSvg","itemInactiveClass","screenRecordingTooltip","audioRecordingTooltip","recordingClass","notRecordingClass","clearPreview","captureRenderer","penTips","fill","staticTranslation","staticTranslations","vars","template","localizationOptions","GleapShortcutListener","shortCutListener","char","keyIdentifier","ctrlKey","startFeedbackFlowWithOptions","autostartDrawing","GleapPreFillManager","unreadCount","notificationContainer","notificationsFromCache","unreadNotificationsKey","nots","notification","createdAt","notifications","renderNotifications","updateTabBarNotificationCount","updateNotificationBadge","sound","clearElem","currentNewsIndex","newsNotifications","news","otherNotifications","currentIndex","currentNews","newsElem","newsContainerElem","coverImageUrl","newsImageElem","stopPropagation","openNews","newsContentElem","newsTitleElem","getName","descHTML","renderDescription","descElem","paginationElem","pageIndicator","nextBtn","conversation","openConversation","checklist","openChecklist","progress","currentStep","totalSteps","nextStepTitle","sender","profileImageUrl","openNewsArticle","_notification$data","previewText","uiOnly","classLeft","classNoButton","_this$bannerUrl","_this$bannerData","_data$data","_data$data2","_data$data3","_data$data4","_data$data5","_data$data6","_data$data7","_data$data8","_data$data9","bannerData","format","startBot","botId","startFeedbackFlow","formId","showSurvey","surveyFormat","articleId","openHelpCenterArticle","startChecklist","checklistId","bannerContainer","gleapBFrame","injectBannerUI","_listenForMessages","modalUrl","_this$modalUrl","_data$data10","modalData","primaryColor","_postMessage","modalContainer","wrapper","modalBackdropClickListener","_this2$modalData$show","_this2$modalData","showCloseButton","frame","_injectModalUI","play","settings","Audio","playPromise","getID","getClassSelectors","getClasses","cl","kCombinations","items","getNthChild","sibling","counter","getTag","isUnique","elems","getAllSelectors","attributesToIgnore","funcs","sum","getAttributes","res","testUniqueness","getFirstUnique","getUniqueCombination","combinations","getCombinations","firstUnique","combination","getUniqueSelector","selectorTypes","excludeRegex","foundSelector","elementSelectors","ID","Class","selectorType","Tag","Classes","Attributes","NthChild","unique","_step2","_options$selectorType","_options$attributesTo","_options$excludeRegex","allSelectors","parents","currentElement","getParents","_iterator2","_allSelectors","it","ElementOverlay","overlay","background","borderColor","borderStyle","borderWidth","boxSizing","cursor","zIndex","margin","shadowContainer","attachShadow","_createClass","useShadowDOM","usingShadowDOM","setBounds","bounds","ElementPicker","overlayOptions","handleMouseMove","handleClick","tick","addToDOM","removeFromDOM","mouseX","mouseY","tickReq","stopImmediatePropagation","onClick","updateTarget","ignoreCursor","newTarget","elementFromPoint","captureCursor","elementFilter","onHover","GleapAdminHelper","picker","stopPicker","onElementPicked","startPicker","GleapAdminManager","COLLAPSE_UI_ACTIVE_CLASS","FRAME_CONTAINER_ACTIVE_CLASS","isActive","activeClass","gleapCollapseUI","toggle","injectedCollapseUI","toggleCollapseUI","_this$configData","configData","sendMessageToTourBuilder","GleapProductTours","disable","adminHelper","injectCollapseUI","setFrameHeight","gleapAdminDisabled","initAdminHelper","currentPage","click","opener","GleapTours","currentConfig","configure","animate","allowClose","overlayOpacity","smoothScroll","disableActiveInteraction","showProgress","stagePadding","stageRadius","popoverOffset","showButtons","disableButtons","overlayColor","getConfig","easeInOutQuad","elapsed","initialValue","amountOfChange","getFocusableElements","parentEls","focusableQuery","flatMap","parentEl","isParentFocusable","focusableEls","isElementVisible","bringInView","isElementInView","shouldSmoothScroll","scrollIntoView","behavior","hasScrollableParent","currentState","setState","getState","resetState","registeredListeners","listen","hook","trackActiveElement","activeStagePosition","renderOverlay","mountOverlay","stagePosition","overlaySvg","stage","windowX","windowY","svg","fillRule","clipRule","strokeLinejoin","strokeMiterlimit","stagePath","generateStageSvgPathString","createOverlaySvg","onDriverClick","pathElement","stageWidth","stageHeight","limitedRadius","normalizedRadius","highlightBoxX","highlightBoxY","highlightBoxWidth","highlightBoxHeight","highlight","attemptTime","elemObj","refactoredElement","hidePopover","existingDummy","getElementById","mountDummyElement","toElement","toStep","_toStep$disableActive","fromStep","fromElement","isFirstHighlight","isToDummyElement","isFromDummyElement","isAnimatedTour","highlightStartedHook","onHighlightStarted","highlightedHook","onHighlighted","deselectedHook","onDeselected","hasDelayedPopover","isPopoverRendered","isHalfwayThrough","popover","renderPopover","fromDefinition","toDefinition","transitionStage","transferHighlight","refreshActiveHighlight","activeHighlight","activeStep","refreshOverlay","repositionPopover","requireRefresh","resizeTimeout","trapFocus","activeElement","popoverEl","firstFocusableEl","lastFocusableEl","shiftKey","previousFocusableEl","nextFocusableEl","onKeyup","shouldPreventDefault","listenerWrapper","listener2","useCapture","title","description","closeButton","footer","footerButtons","previousButton","createPopover","_ref2$nextBtnText","nextBtnText","_ref2$prevBtnText","prevBtnText","_ref2$progressText","progressText","showButtonsConfig","showProgressConfig","showFooter","disabledButtonsConfig","popoverWrapper","customPopoverClass","popoverClass","_b2","onNextClick","onPrevClick","onCloseClick","onPopoverRender","focusableElement","getPopoverDimensions","boundingClientRect","realWidth","realHeight","calculateTopForLeftRight","elementDimensions","popoverDimensions","popoverPadding","popoverArrowDimensions","calculateLeftForTopBottom","_ref3$align","align","_ref3$side","requiredAlignment","requiredSide","topValue","isTopOptimal","bottomValue","isBottomOptimal","leftValue","isLeftOptimal","rightValue","isRightOptimal","noneOptimal","popoverRenderedSide","leftToSet","topToSet","leftValue2","rightToSet","bottomToSet","popoverArrow","popoverWidth","windowWidth","elementWidth","elementLeft","popoverHeight","windowHeight","elementTop","elementHeight","arrowSide","arrowAlignment","renderPopoverArrow","moveNext","activeIndex","steps","nextStepIndex","drive","movePrevious","previousStepIndex","handleArrowLeft","handleArrowRight","_e","_f","_g","_h","stepIndex","hasNextStep","hasPreviousStep","doneBtnText","allowsClosing","progressTextReplaced","configuredButtons","calculatedButtons","withOnDestroyStartedHook","activeOnDestroyed","onDestroyStarted","onDestroyed","destroyPopover","destroyHighlight","isActiveDummyElement","setConfig","setSteps","getActiveIndex","isFirstStep","isLastStep","getActiveStep","getActiveElement","getPreviousElement","getPreviousStep","moveTo","_defineProperties","descriptor","_toPropertyKey","toPrimitive","_toPrimitive","localStorageKey","pointerContainerId","copilotJoinedContainerId","_canPlayAudio","GleapCopilotTours","Constructor","_scrollListeners","_currentAnchor","_currentStep","_scrollDebounceTimer","productTourId","currentActiveIndex","productTourData","updatePointerPosition","protoProps","staticProps","onCompleteCallback","scrollableAncestors","getScrollableAncestors","_pointerContainer","yPosition","targetScrollPosition","scrollTo","smoothScrollToY","removeScrollListeners","pollCount","updateFinalPosition","isElementFullyVisible","targetX","targetY","containerWidthSpace","attachScrollListeners","currentAudio","pause","copilotInfoContainer","_GleapConfigManager$g","_GleapConfigManager$g2","_this$productTourData3","_this$productTourData4","_this$productTourData5","_this$productTourData6","_this$productTourData","_this$productTourData2","contrastColor","playVoice","gradient","svgMouse","infoBubble","kaiAvatar","kaiSlug","completeTour","canPlayAudio","supported","setupCopilotTour","showUnmuteModal","showAudioUnmuteModal","renderNextStep","_this$productTourData7","_this$productTourData8","_this$productTourData9","modalOverlay","modal","unmuteModalTitle","unmuteButton","unmuteModalButton","startAnywayButton","unmuteModalContinue","_this7","handleStep","gotToNextStep","_currentStep$inputTyp","proceedClickmode","storeUncompletedTour","inputType","handleInputEvent","_e$target","once","_currentStep$inputVal","inputValue","typeCharacter","wave","performClickAnimation","tempDiv","htmlToPlainText","readTime","wordCount","ceil","estimateReadTime","continueWithNoAudio","voice","elementPromise","maxAttempts","attempts","interval","waitForElement","_self$productTourData","tourType","gleapTourObj","delay","manually","validateProductTour","onComplete","comData","clearUncompletedTour","startWithConfig","unmuted","driverSteps","isClickMode","isInputMode","hasSender","videoUrl","senderHTML","firstName","driverStep","buttons","backButton","allowKeyboardControl","nextText","doneText","prevText","_config$state","onDocumentClick","popoverElement","mediaElements","performRequentialRefresh","mediaElement","playingClass","playPauseContainer","videoElement","videoContainer","clickVideo","evnt","gleapTourPopover","_evnt$target","checkPageFilter","pageFilter","pageFilterType","removeTrailingSlash","isMatchingUrl","regexPattern","generateRegex","matched","__originalGetContext","GleapChecklist","_HTMLElement","_assertThisInitialized","_callSuper","handleChecklistUpdate","handleSessionUpdate","_networkManager","_boundFloatingLauncherClick","handleFloatingLauncherClick","_boundFloatingCloseClick","handleFloatingCloseClick","_floatingHideTimeout","_inherits","_boundHandleChecklistUpdate","_boundHandleSessionUpdate","_boundResizeHandler","handleResize","_checkSessionAndLoad","removeFloatingClickListeners","checklistData","_hasLoaded","_isSessionReady","_initialActiveSet","renderResponse","updateActiveTaskMaxHeight","loadChecklist","renderChecklist","_getGleapSessionInstance","hasChecklistId","defaultValue","translateTextWithVars","validateChecklist","_isMock","isConnected","fetchChecklist","_isInitialLoad","_data$outbound","completedSteps","firstIncompleteIndex","findIndex","_session$gleapId","_session$gleapHash","checkedStep","makeRequest","updateData","previousCompletedSteps","dataChanged","activeStepCompleted","currentlyActiveStepIndex","_this$checklistData$o","activeStepId","_this$checklistData$o2","nextActiveStep","setActiveStep","tasks","launcher","_outbound$config","_this$checklistData","renderDoneState","progressbarEnabled","doneSteps","_outbound$config2","_outbound$config3","nextIncompleteStep","titleText","_translateWithVars","subject","subtitleText","successTitle","successMessage","circumference","PI","computedOffset","isHeader","toFixed","_outbound$sender","infoEnabled","_translate","senderHtml","progressLabel","durationLabel","isTaskDone","badge","getCheckIcon","stepTitle","stepDescription","actionButtonText","actionTitle","actionHtml","markDoneLabel","markDoneHtml","allowMarkDone","taskClasses","_outbound$config4","_outbound$config5","_outbound$config6","floatingEnabled","renderFloatingLauncher","renderInfoSection","renderProgressSection","renderTasks","addTaskEventListeners","addFloatingClickListeners","toggleTask","taskBodyInner","task","newActiveStep","markDoneBtn","_this5$checklistData","previouslyActiveStep","allSteps","isModalOpen","tasksModal","updateChecklist","actionBtn","_this5$checklistData2","actionBody","openURL","actionOpenInNewTab","gleapError","previousActiveStep","tasksToToggle","forceOpen","taskElement","isOpen","shouldOpen","taskBody","_wrapNativeSuper","registerGleapChecklist","offlineMode","hostname","injectNotificationUI","actions","actionType","_action$data","popupType","disableInAppNotifications","showNotification","showBanner","showModal","startProductTourWithConfig","globalData","replayData","getReplayData","setTags","setUrlHandler","tools","setAiTools","updateContainerHeight","initialHeight","fixGleapHeight","checkForUncompletedTour","checkForUrlParams","urlParams","URLSearchParams","widget","conversationFlow","startConversation","feedbackFlow","surveyFlow","surveyFlowFormat","tourDelay","startProductTour","identifySession","updateSession","setMaxRequests","setOptions","cleanedData","formPreFill","toggleFeedbackButton","setAppVersionCode","setAppBuildNumber","setBannerUrl","setModalUrl","setTicketAttribute","unsetTicketAttribute","clearTicketAttributes","attachCustomData","setCustomData","removeCustomData","clearCustomData","playSound","showNotificationBadge","notificationInstance","setOverrideLanguage","softReInitialize","updateContact","registerCustomAction","buttonStyle","contrastButtonColor","contrastBackgroundColor","contrastHeaderColor","isDarkMode","headerDarkColor","subTextColor","backgroundColorHover","hoverHoverColor","buttonBorderRadius","containerRadius","chatRadius","formItemBorderRadius","formItemSmallBorderRadius","bottomInfoOffset","colorStyleSheet","zIndexBase","injectStyledCSS","replays","attachments","sendSilentCrashReportWithFormData","silentCrashReportSent","excludeDataCleaned","newFormData","hideBackButton","showBackButton","flow","collectionId","term","startProductTourConfig","loadUncompletedTour","GleapActions","GLAction","urlParts","identifier","openHelpCenterCollection"],"sourceRoot":""}
|