@dash0/sdk-web 0.24.0 → 0.25.0
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.
- package/README.md +5 -0
- package/dist/dash0-session-recording.iife.js +2 -0
- package/dist/dash0-session-recording.iife.js.map +1 -0
- package/dist/dash0-session-recording.js +2 -0
- package/dist/dash0-session-recording.js.map +1 -0
- package/dist/dash0-session-recording.umd.cjs +2 -0
- package/dist/dash0-session-recording.umd.cjs.map +1 -0
- package/dist/dash0.iife.js +1 -1
- package/dist/dash0.iife.js.map +1 -1
- package/dist/dash0.js +1 -1
- package/dist/dash0.js.map +1 -1
- package/dist/dash0.umd.cjs +1 -1
- package/dist/dash0.umd.cjs.map +1 -1
- package/dist/modules/api/init.js +18 -1
- package/dist/modules/api/init_test.js +27 -0
- package/dist/modules/api/session-recording.js +30 -0
- package/dist/modules/api/session-recording_test.js +36 -0
- package/dist/modules/entrypoint/npm-package.js +1 -0
- package/dist/modules/entrypoint/script.js +3 -0
- package/dist/modules/entrypoint/session-recording-script.js +19 -0
- package/dist/modules/entrypoint/session-recording.js +11 -0
- package/dist/modules/instrumentations/session-recording/chunker.js +70 -0
- package/dist/modules/instrumentations/session-recording/chunker_test.js +125 -0
- package/dist/modules/instrumentations/session-recording/index.js +165 -0
- package/dist/modules/instrumentations/session-recording/index_test.js +230 -0
- package/dist/modules/instrumentations/session-recording/log.js +23 -0
- package/dist/modules/instrumentations/session-recording/log_test.js +46 -0
- package/dist/modules/semantic-conventions.js +7 -0
- package/dist/modules/transport/fetch.js +2 -2
- package/dist/modules/transport/fetch_test.js +25 -0
- package/dist/modules/transport/index.js +44 -11
- package/dist/modules/transport/index_test.js +73 -0
- package/dist/modules/types/session-recording.js +1 -0
- package/dist/modules/vars.js +11 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/api/session-recording.d.ts +17 -0
- package/dist/types/api/session-recording_test.d.ts +1 -0
- package/dist/types/entrypoint/npm-package.d.ts +2 -0
- package/dist/types/entrypoint/session-recording-script.d.ts +1 -0
- package/dist/types/entrypoint/session-recording.d.ts +5 -0
- package/dist/types/instrumentations/session-recording/chunker.d.ts +38 -0
- package/dist/types/instrumentations/session-recording/chunker_test.d.ts +1 -0
- package/dist/types/instrumentations/session-recording/index.d.ts +23 -0
- package/dist/types/instrumentations/session-recording/index_test.d.ts +1 -0
- package/dist/types/instrumentations/session-recording/log.d.ts +14 -0
- package/dist/types/instrumentations/session-recording/log_test.d.ts +1 -0
- package/dist/types/semantic-conventions.d.ts +6 -0
- package/dist/types/transport/fetch.d.ts +8 -1
- package/dist/types/transport/index.d.ts +10 -0
- package/dist/types/transport/index_test.d.ts +1 -0
- package/dist/types/types/options.d.ts +2 -2
- package/dist/types/types/session-recording.d.ts +128 -0
- package/dist/types/vars.d.ts +6 -0
- package/package.json +10 -2
- package/src/api/init.ts +19 -1
- package/src/api/init_test.ts +33 -1
- package/src/api/session-recording.ts +40 -0
- package/src/api/session-recording_test.ts +44 -0
- package/src/entrypoint/npm-package.ts +2 -0
- package/src/entrypoint/script.ts +3 -0
- package/src/entrypoint/session-recording-script.ts +23 -0
- package/src/entrypoint/session-recording.ts +13 -0
- package/src/instrumentations/session-recording/chunker.ts +118 -0
- package/src/instrumentations/session-recording/chunker_test.ts +147 -0
- package/src/instrumentations/session-recording/index.ts +175 -0
- package/src/instrumentations/session-recording/index_test.ts +273 -0
- package/src/instrumentations/session-recording/log.ts +48 -0
- package/src/instrumentations/session-recording/log_test.ts +60 -0
- package/src/semantic-conventions.ts +8 -0
- package/src/transport/fetch.ts +10 -2
- package/src/transport/fetch_test.ts +30 -0
- package/src/transport/index.ts +64 -25
- package/src/transport/index_test.ts +90 -0
- package/src/types/options.ts +3 -1
- package/src/types/session-recording.ts +144 -0
- package/src/vars.ts +18 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dash0-session-recording.js","sources":["../node_modules/.pnpm/@rrweb+record@2.1.1/node_modules/@rrweb/record/dist/record.js","modules/entrypoint/session-recording.js"],"sourcesContent":["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 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 EventType2[EventType2[\"Asset\"] = 7] = \"Asset\";\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 || {});\nconst testableAccessors = {\n Node: [\n \"childNodes\",\n \"parentNode\",\n \"parentElement\",\n \"textContent\",\n \"ownerDocument\"\n ],\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 untaintedBaseIframeCleanup = {};\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 iframeEl.style.display = \"none\";\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n if (!untaintedObject) {\n iframeEl.remove();\n return defaultPrototype;\n }\n const ua = navigator.userAgent;\n if (ua.includes(\"Safari\") && !ua.includes(\"Chrome\")) {\n iframeEl.classList.add(\"rr-block\");\n iframeEl.setAttribute(\"__rrwebUntaintedMutationObserver\", \"\");\n untaintedBaseIframeCleanup[key] = () => iframeEl.remove();\n } else {\n iframeEl.remove();\n }\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 ownerDocument(n) {\n return getUntaintedAccessor(\"Node\", n, \"ownerDocument\");\n}\nfunction childNodes(n) {\n return getUntaintedAccessor(\"Node\", n, \"childNodes\");\n}\nfunction parentNode(n) {\n return getUntaintedAccessor(\"Node\", n, \"parentNode\");\n}\nfunction parentElement(n) {\n return getUntaintedAccessor(\"Node\", n, \"parentElement\");\n}\nfunction textContent(n) {\n return getUntaintedAccessor(\"Node\", n, \"textContent\");\n}\nfunction contains(n, other) {\n return getUntaintedMethod(\"Node\", n, \"contains\")(other);\n}\nfunction getRootNode(n) {\n return getUntaintedMethod(\"Node\", n, \"getRootNode\")();\n}\nfunction host(n) {\n if (!n || !(\"host\" in n)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n, \"host\");\n}\nfunction styleSheets(n) {\n return n.styleSheets;\n}\nfunction shadowRoot(n) {\n if (!n || !(\"shadowRoot\" in n)) return null;\n return getUntaintedAccessor(\"Element\", n, \"shadowRoot\");\n}\nfunction querySelector(n, selectors) {\n return getUntaintedAccessor(\"Element\", n, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n, selectors) {\n return getUntaintedAccessor(\"Element\", n, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return [\n getUntaintedPrototype(\"MutationObserver\").constructor,\n untaintedBaseIframeCleanup[\"MutationObserver\"] ?? (() => {\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 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}\nconst index = {\n ownerDocument,\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n nowTimestamp,\n mutationObserverCtor,\n patch\n};\nfunction isElement(n) {\n return n.nodeType === n.ELEMENT_NODE;\n}\nfunction isShadowRoot(n) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n && \"host\" in n && \"mode\" in n && index.host(n) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index.shadowRoot(hostEl) === n\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(rule) {\n const { cssText } = rule;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule.href)})`];\n if (rule.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule.layerName) {\n statement.push(`layer(${rule.layerName})`);\n }\n if (rule.supportsText) {\n statement.push(`supports(${rule.supportsText})`);\n }\n if (rule.media.length) {\n statement.push(rule.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s) {\n try {\n const rules = s.rules || s.cssRules;\n if (!rules) {\n return null;\n }\n let sheetHref = s.href;\n if (!sheetHref && s.ownerNode) {\n sheetHref = s.ownerNode.baseURI;\n }\n const stringifiedRules = Array.from(\n rules,\n (rule) => stringifyRule(rule, sheetHref)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule, sheetHref) {\n if (isCSSImportRule(rule)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule);\n } catch (error) {\n importStringified = rule.cssText;\n }\n if (rule.styleSheet.href) {\n return absolutifyURLs(importStringified, rule.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule.cssText;\n if (isCSSStyleRule(rule) && rule.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(rule) {\n return \"styleSheet\" in rule;\n}\nfunction isCSSStyleRule(rule) {\n return \"selectorText\" in rule;\n}\nclass Mirror {\n constructor() {\n __publicField(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n) {\n var _a2;\n if (!n) return -1;\n const id = (_a2 = this.getMeta(n)) == 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(n) {\n return this.nodeMetaMap.get(n) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n) {\n const id = this.getId(n);\n this.idNodeMap.delete(id);\n if (n.childNodes) {\n n.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node) {\n return this.nodeMetaMap.has(node);\n }\n add(n, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n);\n this.nodeMetaMap.set(n, meta);\n }\n replace(id, n) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n, meta);\n }\n this.idNodeMap.set(id, n);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror() {\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 x = 0; x < canvas.width; x += 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 x,\n y,\n Math.min(chunkSize, canvas.width - x),\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 filePathNoHash = filePath.split(\"#\")[0];\n const maybeHash = filePath.substring(filePathNoHash.length);\n const stack = href.split(\"#\")[0].split(\"/\");\n const parts = filePathNoHash.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(\"/\")}${maybeHash}${maybeQuote})`;\n }\n );\n}\nfunction normalizeCssString(cssText, _testNoPxNorm = false) {\n if (_testNoPxNorm) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n } else {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\").replace(/0px/g, \"0\");\n }\n}\nfunction splitCssText(cssText, style, _testNoPxNorm = false) {\n const childNodes2 = Array.from(style.childNodes);\n const splits = [];\n let iterCount = 0;\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n let cssTextNorm = normalizeCssString(cssText, _testNoPxNorm);\n const normFactor = cssTextNorm.length / cssText.length;\n for (let i = 1; i < childNodes2.length; i++) {\n if (childNodes2[i].textContent && typeof childNodes2[i].textContent === \"string\") {\n const textContentNorm = normalizeCssString(\n childNodes2[i].textContent,\n _testNoPxNorm\n );\n const jLimit = 100;\n let j = 3;\n for (; j < textContentNorm.length; j++) {\n if (\n // keep consuming css identifiers (to get a decent chunk more quickly)\n textContentNorm[j].match(/[a-zA-Z0-9]/) || // substring needs to be unique to this section\n textContentNorm.indexOf(textContentNorm.substring(0, j), 1) !== -1\n ) {\n continue;\n }\n break;\n }\n for (; j < textContentNorm.length; j++) {\n let startSubstring = textContentNorm.substring(0, j);\n let cssNormSplits = cssTextNorm.split(startSubstring);\n let splitNorm = -1;\n if (cssNormSplits.length === 2) {\n splitNorm = cssNormSplits[0].length;\n } else if (cssNormSplits.length > 2 && cssNormSplits[0] === \"\" && childNodes2[i - 1].textContent !== \"\") {\n splitNorm = cssTextNorm.indexOf(startSubstring, 1);\n } else if (cssNormSplits.length === 1) {\n startSubstring = startSubstring.substring(\n 0,\n startSubstring.length - 1\n );\n cssNormSplits = cssTextNorm.split(startSubstring);\n if (cssNormSplits.length <= 1) {\n splits.push(cssText);\n return splits;\n }\n j = jLimit + 1;\n } else if (j === textContentNorm.length - 1) {\n splitNorm = cssTextNorm.indexOf(startSubstring);\n }\n if (cssNormSplits.length >= 2 && j > jLimit) {\n const prevTextContent = childNodes2[i - 1].textContent;\n if (prevTextContent && typeof prevTextContent === \"string\") {\n const prevMinLength = normalizeCssString(prevTextContent).length;\n splitNorm = cssTextNorm.indexOf(startSubstring, prevMinLength);\n }\n if (splitNorm === -1) {\n splitNorm = cssNormSplits[0].length;\n }\n }\n if (splitNorm !== -1) {\n let k = Math.floor(splitNorm / normFactor);\n for (; k > 0 && k < cssText.length; ) {\n iterCount += 1;\n if (iterCount > 50 * childNodes2.length) {\n splits.push(cssText);\n return splits;\n }\n const normPart = normalizeCssString(\n cssText.substring(0, k),\n _testNoPxNorm\n );\n if (normPart.length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n cssTextNorm = cssTextNorm.substring(splitNorm);\n break;\n } else if (normPart.length < splitNorm) {\n k += Math.max(\n 1,\n Math.floor((splitNorm - normPart.length) / normFactor)\n );\n } else {\n k -= Math.max(\n 1,\n Math.floor((normPart.length - splitNorm) * normFactor)\n );\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(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 c = attributeValue.charAt(pos);\n if (c === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c === \"(\") {\n inParens = true;\n }\n } else {\n if (c === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c;\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 a = cachedDocument.get(doc);\n if (!a) {\n a = doc.createElement(\"a\");\n cachedDocument.set(doc, a);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a.setAttribute(\"href\", customHref);\n return a.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\" && [\"table\", \"td\", \"th\"].includes(tagName)) {\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 [\"video\", \"audio\"].includes(tagName) && 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 (e) {\n }\n return false;\n}\nfunction classMatchesRegex(node, regex, checkAncestors) {\n if (!node) return false;\n if (node.nodeType !== node.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index.parentNode(node), regex, checkAncestors);\n }\n for (let eIndex = node.classList.length; eIndex--; ) {\n const className = node.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index.parentNode(node), regex, checkAncestors);\n}\nfunction needMaskingText(node, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node)) {\n el = node;\n if (!index.childNodes(el).length) {\n return false;\n }\n } else if (index.parentElement(node) === null) {\n return false;\n } else {\n el = index.parentElement(node);\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 (e) {\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(n, 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 (n.nodeType) {\n case n.DOCUMENT_NODE:\n if (n.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType.Document,\n childNodes: [],\n compatMode: n.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType.Document,\n childNodes: []\n };\n }\n case n.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType.DocumentType,\n name: n.name,\n publicId: n.publicId,\n systemId: n.systemId,\n rootId\n };\n case n.ELEMENT_NODE:\n return serializeElementNode(n, {\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 n.TEXT_NODE:\n return serializeTextNode(n, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured\n });\n case n.CDATA_SECTION_NODE:\n return {\n type: NodeType.CDATA,\n textContent: \"\",\n rootId\n };\n case n.COMMENT_NODE:\n return {\n type: NodeType.Comment,\n textContent: index.textContent(n) || \"\",\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(n, options) {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n const parent = index.parentNode(n);\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.textContent(n);\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.parentElement(n)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType.Text,\n textContent: textContent2 || \"\",\n rootId\n };\n}\nfunction serializeElementNode(n, 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(n, blockClass, blockSelector);\n const tagName = getValidTagName(n);\n let attributes = {};\n const len = n.attributes.length;\n for (let i = 0; i < len; i++) {\n const attr = n.attributes[i];\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((s) => {\n return s.href === n.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\" && n.sheet) {\n let cssText = stringifyStylesheet(\n n.sheet\n );\n if (cssText) {\n if (n.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n);\n }\n attributes._cssText = cssText;\n }\n }\n if ([\"input\", \"textarea\", \"select\"].includes(tagName)) {\n const value = n.value;\n const checked = n.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n,\n type: getInputType(n),\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 (n.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n.open) {\n attributes.rr_open_mode = n.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n.__context === \"2d\") {\n if (!is2DCanvasBlank(n)) {\n attributes.rr_dataURL = n.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n)) {\n const canvasDataURL = n.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n.width;\n blankCanvas.height = n.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 = n;\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 ([\"audio\", \"video\"].includes(tagName)) {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n.playbackRate;\n mediaAttributes.rr_mediaMuted = n.muted;\n mediaAttributes.rr_mediaLoop = n.loop;\n mediaAttributes.rr_mediaVolume = n.volume;\n }\n if (!newlyAddedElement) {\n if (n.scrollLeft) {\n attributes.rr_scrollLeft = n.scrollLeft;\n }\n if (n.scrollTop) {\n attributes.rr_scrollTop = n.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n.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 (!n.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 (e) {\n }\n return {\n type: NodeType.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n) || 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 slimDOMDefaults(_slimDOMOptions) {\n if (_slimDOMOptions === true || _slimDOMOptions === \"all\") {\n return {\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 };\n } else if (_slimDOMOptions) {\n return _slimDOMOptions;\n }\n return {};\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\n return true;\n } else if (sn.type === NodeType.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" && sn.attributes.as === \"script\" || sn.attributes.rel === \"modulepreload\") || // 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(n, 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 n,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n, {\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(n, \"not serialized\");\n return null;\n }\n let id;\n if (mirror2.hasNode(n)) {\n id = mirror2.getId(n);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType.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(n, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index.shadowRoot(n);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType.Document || serializedNode.type === NodeType.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType.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.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(index.childNodes(n))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n) && (shadowRootEl = index.shadowRoot(n))) {\n for (const childN of Array.from(index.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.parentNode(n);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n,\n () => {\n const iframeDoc = n.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 n,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType.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 n,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n, {\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 n,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n, 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 = slimDOMDefaults(slimDOM);\n return serializeNodeWithId(n, {\n doc: n,\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}\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField(this, \"parentElement\", null);\n __publicField(this, \"parentNode\", null);\n __publicField(this, \"ownerDocument\");\n __publicField(this, \"firstChild\", null);\n __publicField(this, \"lastChild\", null);\n __publicField(this, \"previousSibling\", null);\n __publicField(this, \"nextSibling\", null);\n __publicField(this, \"ELEMENT_NODE\", 1);\n __publicField(this, \"TEXT_NODE\", 3);\n // corresponding nodeType value of standard HTML Node\n __publicField(this, \"nodeType\");\n __publicField(this, \"nodeName\");\n __publicField(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(node) {\n if (!(node instanceof BaseRRNode)) return false;\n else if (node.ownerDocument !== this.ownerDocument) return false;\n else if (node === this) return true;\n while (node.parentNode) {\n if (node.parentNode === this) return true;\n node = node.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}\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 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(node) {\n if (!node) {\n return null;\n }\n const el = node.nodeType === node.ELEMENT_NODE ? node : index.parentElement(node);\n return el;\n}\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\n if (!node) {\n return false;\n }\n const el = closestElementOfNode(node);\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 (e) {\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(n, mirror2) {\n return mirror2.getId(n) !== -1;\n}\nfunction isIgnored(n, mirror2, slimDOMOptions) {\n if (n.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n) === 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(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(n, mirror2) {\n return Boolean(n.nodeName === \"IFRAME\" && mirror2.getMeta(n));\n}\nfunction isSerializedStylesheet(n, mirror2) {\n return Boolean(\n n.nodeName === \"LINK\" && n.nodeType === n.ELEMENT_NODE && n.getAttribute && n.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n)\n );\n}\nfunction hasShadowRoot(n) {\n if (!n) return false;\n if (n instanceof BaseRRNode && \"shadowRoot\" in n) {\n return Boolean(n.shadowRoot);\n }\n return Boolean(index.shadowRoot(n));\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(n) {\n var _a2;\n let shadowHost = null;\n if (\"getRootNode\" in n && ((_a2 = index.getRootNode(n)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n)))\n shadowHost = index.host(index.getRootNode(n));\n return shadowHost;\n}\nfunction getRootShadowHost(n) {\n let rootShadowHost = n;\n let shadowHost;\n while (shadowHost = getShadowHost(rootShadowHost))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n) {\n const doc = index.ownerDocument(n);\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n) {\n const doc = index.ownerDocument(n);\n if (!doc) return false;\n return index.contains(doc, n) || shadowHostInDom(n);\n}\nfunction isNodeInLinkedList(n) {\n return \"__ln\" in n;\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(n) {\n const node = {\n value: n,\n previous: null,\n next: null\n };\n n.__ln = node;\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\n const current = n.previousSibling.__ln.next;\n node.next = current;\n node.previous = n.previousSibling.__ln;\n n.previousSibling.__ln.next = node;\n if (current) {\n current.previous = node;\n }\n } else if (n.nextSibling && isNodeInLinkedList(n.nextSibling) && n.nextSibling.__ln.previous) {\n const current = n.nextSibling.__ln.previous;\n node.previous = current;\n node.next = n.nextSibling.__ln;\n n.nextSibling.__ln.previous = node;\n if (current) {\n current.next = node;\n }\n } else {\n if (this.head) {\n this.head.previous = node;\n }\n node.next = this.head;\n this.head = node;\n }\n if (node.next === null) {\n this.tail = node;\n }\n this.length++;\n }\n removeNode(n) {\n const current = n.__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 (n.__ln) {\n delete n.__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 /**\n * the browser MutationObserver emits multiple mutations after\n * a delay for performance reasons, making tracing added nodes hard\n * in our `processMutations` callback function.\n * For example, if we append an element el_1 into body, and then append\n * another element el_2 into el_1, these two mutations may be passed to the\n * callback function together when the two operations were done.\n * Generally we need to trace child nodes of newly added nodes, but in this\n * case if we count el_2 as el_1's child node in the first mutation record,\n * then we will count el_2 again in the second mutation record which was\n * duplicated.\n * To avoid of duplicate counting added nodes, we use a Set to store\n * added nodes and its child nodes during iterate mutation records. Then\n * collect added nodes from the Set which have no duplicate copy. But\n * this also causes newly added nodes will not be serialized with id ASAP,\n * which means all the id related calculation should be lazy too.\n */\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 = (n) => {\n let ns = n;\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 = (n) => {\n const parent = index.parentNode(n);\n if (!parent || !inDom(n)) {\n return;\n }\n let cssCaptured = false;\n if (n.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(n)) : this.mirror.getId(parent);\n const nextId = getNextId(n);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n);\n }\n const sn = serializeNodeWithId(n, {\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(n)) {\n this.shadowDomManager.addShadowRoot(index.shadowRoot(n), 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 n of this.movedSet) {\n if (isParentRemoved(this.removesSubTreeCache, n, this.mirror) && !this.movedSet.has(index.parentNode(n))) {\n continue;\n }\n pushAdd(n);\n }\n for (const n of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n) && !isParentRemoved(this.removesSubTreeCache, n, this.mirror)) {\n pushAdd(n);\n } else if (isAncestorInSet(this.movedSet, n)) {\n pushAdd(n);\n } else {\n this.droppedSet.add(n);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node = 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 node = candidate;\n }\n }\n if (!node) {\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 node = _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 node = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node.previous;\n addList.removeNode(node.value);\n pushAdd(node.value);\n }\n const payload = {\n texts: this.texts.map((text) => {\n const n = text.node;\n const parent = index.parentNode(n);\n if (parent && parent.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(parent);\n }\n return {\n id: this.mirror.getId(n),\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 const value = Array.from(\n index.childNodes(textarea),\n (cn) => index.textContent(cn) || \"\"\n ).join(\"\");\n item.attributes.value = maskInputValue({\n element: textarea,\n maskInputOptions: this.maskInputOptions,\n tagName: textarea.tagName,\n type: getInputType(textarea),\n value,\n maskInputFn: this.maskInputFn\n });\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 (e) {\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((n) => this.genAdds(n, m.target));\n m.removedNodes.forEach((n) => {\n const nodeId = this.mirror.getId(n);\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(n, this.mirror, this.slimDOMOptions) || !isSerialized(n, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n)) {\n deepDelete(this.addedSet, n);\n this.droppedSet.add(n);\n } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n) && this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n);\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(n, this.removesSubTreeCache);\n }\n this.mapRemoves.push(n);\n });\n break;\n }\n }\n });\n /**\n * Make sure you check if `n`'s parent is blocked before calling this function\n * */\n __publicField(this, \"genAdds\", (n, target) => {\n if (this.processedNodeManager.inOtherBuffer(n, this)) return;\n if (this.addedSet.has(n) || this.movedSet.has(n)) return;\n if (this.mirror.hasNode(n)) {\n if (isIgnored(n, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n);\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(n), targetId)] = true;\n }\n } else {\n this.addedSet.add(n);\n this.droppedSet.delete(n);\n }\n if (!isBlocked(n, this.blockClass, this.blockSelector, false)) {\n index.childNodes(n).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n)) {\n index.childNodes(index.shadowRoot(n)).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n);\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, n) {\n addsSet.delete(n);\n index.childNodes(n).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n, cache) {\n const queue = [n];\n while (queue.length) {\n const next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach((n2) => queue.push(n2));\n }\n return;\n}\nfunction isParentRemoved(removes, n, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n);\n}\nfunction _isParentRemoved(removes, n, _mirror2) {\n const node = index.parentNode(n);\n if (!node) return false;\n return removes.has(node);\n}\nfunction isAncestorInSet(set, n) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n);\n}\nfunction _isAncestorInSet(set, n) {\n const parent = index.parentNode(n);\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 [ObserverCtor, iframeCleanup] = mutationObserverCtor();\n const observer = new ObserverCtor(\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, iframeCleanup];\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 e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e) {\n return;\n }\n const id = mirror2.getId(target);\n const { clientX, clientY } = e;\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, v) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v.text || lastInputValue.isChecked !== v.isChecked) {\n lastInputValueMap.set(target, v);\n const id = mirror2.getId(target);\n callbackWrapper(inputCb)({\n ...v,\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(rule) {\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 rules = Array.from(\n childRule.parentRule.cssRules\n );\n const index2 = rules.indexOf(childRule);\n pos.unshift(index2);\n return recurse(childRule.parentRule, pos);\n } else if (childRule.parentStyleSheet) {\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\n const index2 = rules.indexOf(childRule);\n pos.unshift(index2);\n }\n return pos;\n }\n return recurse(rule, 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 [rule, 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, 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 rule = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule, 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 [rule, 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,\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 result = (_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 (e) {\n }\n }\n return result;\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 FontFace(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 i = 0; i < count; i++) {\n const range = selection.getRangeAt(i);\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 (e) {\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(o, 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 } = o;\n o.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o.selectionCb = (...p) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o.customElementCb = (...c) => {\n if (hooks.customElement) {\n hooks.customElement(...c);\n }\n customElementCb(...c);\n };\n}\nfunction initObservers(o, hooks = {}) {\n const currentWindow = o.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n mergeHooks(o, hooks);\n let mutationObserver;\n let cleanupMutationIframe = () => {\n };\n if (o.recordDOM) {\n [mutationObserver, cleanupMutationIframe] = initMutationObserver(o, o.doc);\n }\n const mousemoveHandler = initMoveObserver(o);\n const mouseInteractionHandler = initMouseInteractionObserver(o);\n const scrollHandler = initScrollObserver(o);\n const viewportResizeHandler = initViewportResizeObserver(o, {\n win: currentWindow\n });\n const inputHandler = initInputObserver(o);\n const mediaInteractionHandler = initMediaInteractionObserver(o);\n let styleSheetObserver = () => {\n };\n let adoptedStyleSheetObserver = () => {\n };\n let styleDeclarationObserver = () => {\n };\n let fontObserver = () => {\n };\n if (o.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o, {\n win: currentWindow\n });\n if (o.collectFonts) {\n fontObserver = initFontObserver(o);\n }\n }\n const selectionObserver = initSelectionObserver(o);\n const customElementObserver = initCustomElementObserver(o);\n const pluginHandlers = [];\n for (const plugin of o.plugins) {\n pluginHandlers.push(\n plugin.observer(plugin.callback, currentWindow, plugin.options)\n );\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n cleanupMutationIframe();\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, e) {\n var _a2;\n switch (e.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e.data.node, iframeEl);\n const rootId = e.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e.data.node, rootId);\n return {\n timestamp: e.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: e.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 e;\n }\n case EventType.Custom: {\n this.replaceIds(\n e.data.payload,\n iframeEl,\n [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n );\n return e;\n }\n case EventType.IncrementalSnapshot: {\n switch (e.data.source) {\n case IncrementalSource.Mutation: {\n e.data.adds.forEach((n) => {\n this.replaceIds(n, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n this.replaceIdOnNode(n.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n.node, rootId);\n });\n e.data.removes.forEach((n) => {\n this.replaceIds(n, iframeEl, [\"parentId\", \"id\"]);\n });\n e.data.attributes.forEach((n) => {\n this.replaceIds(n, iframeEl, [\"id\"]);\n });\n e.data.texts.forEach((n) => {\n this.replaceIds(n, iframeEl, [\"id\"]);\n });\n return e;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, [\"id\"]);\n });\n return e;\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(e.data, iframeEl, [\"id\"]);\n return e;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e.data, iframeEl, [\"styleId\"]);\n return e;\n }\n case IncrementalSource.Font: {\n return e;\n }\n case IncrementalSource.Selection: {\n e.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n });\n return e;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e.data, iframeEl, [\"styleIds\"]);\n (_a2 = e.data.styles) == null ? void 0 : _a2.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n });\n return e;\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(node, iframeEl) {\n this.replaceIds(node, iframeEl, [\"id\", \"rootId\"]);\n if (\"childNodes\" in node) {\n node.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node, rootId) {\n if (node.type !== NodeType.Document && !node.rootId) node.rootId = rootId;\n if (\"childNodes\" in node) {\n node.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 (e) {\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 = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = \"\";\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n base64 += chars[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n base64 += chars[bytes[i + 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(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 list = variableListFor(ctx, name);\n let index2 = list.indexOf(value);\n if (index2 === -1) {\n index2 = list.length;\n list.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(v) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [v],\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 result = original.apply(this, args);\n saveWebGLVar(result, 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 result;\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v],\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 if (typeof win.WebGLRenderingContext !== \"undefined\") {\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win\n )\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 jsContent = '(function() {\\n \"use strict\";\\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\\n var lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\\n for (var i = 0; i < chars.length; i++) {\\n lookup[chars.charCodeAt(i)] = i;\\n }\\n var 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 };\\n const lastBlobMap = /* @__PURE__ */ new Map();\\n const transparentBlobMap = /* @__PURE__ */ new Map();\\n async function getTransparentBlobFor(width, height, dataURLOptions) {\\n const id = `${width}-${height}`;\\n if (\"OffscreenCanvas\" in globalThis) {\\n if (transparentBlobMap.has(id)) return transparentBlobMap.get(id);\\n const offscreen = new OffscreenCanvas(width, height);\\n offscreen.getContext(\"2d\");\\n const blob = await offscreen.convertToBlob(dataURLOptions);\\n const arrayBuffer = await blob.arrayBuffer();\\n const base64 = encode(arrayBuffer);\\n transparentBlobMap.set(id, base64);\\n return base64;\\n } else {\\n return \"\";\\n }\\n }\\n const worker = self;\\n worker.onmessage = async function(e) {\\n if (\"OffscreenCanvas\" in globalThis) {\\n const { id, bitmap, width, height, dataURLOptions } = e.data;\\n const transparentBase64 = getTransparentBlobFor(\\n width,\\n height,\\n dataURLOptions\\n );\\n const offscreen = new OffscreenCanvas(width, height);\\n const ctx = offscreen.getContext(\"2d\");\\n ctx.drawImage(bitmap, 0, 0);\\n bitmap.close();\\n const blob = await offscreen.convertToBlob(dataURLOptions);\\n const type = blob.type;\\n const arrayBuffer = await blob.arrayBuffer();\\n const base64 = encode(arrayBuffer);\\n if (!lastBlobMap.has(id) && await transparentBase64 === base64) {\\n lastBlobMap.set(id, base64);\\n return worker.postMessage({ id });\\n }\\n if (lastBlobMap.get(id) === base64) return worker.postMessage({ id });\\n worker.postMessage({\\n id,\\n type,\\n base64,\\n width,\\n height\\n });\\n lastBlobMap.set(id, base64);\\n } else {\\n return worker.postMessage({ id: e.data.id });\\n }\\n };\\n})();\\n//# sourceMappingURL=image-bitmap-data-url-worker-IJpC7g_b.js.map\\n';\nconst blob = typeof self !== \"undefined\" && self.Blob && new Blob([jsContent], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (self.URL || self.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 (self.URL || self.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e) {\n return new Worker(\n \"data:text/javascript;charset=utf-8,\" + encodeURIComponent(jsContent),\n {\n name: options == null ? void 0 : options.name\n }\n );\n } finally {\n objURL && (self.URL || self.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 = (e) => {\n const { id } = e.data;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e.data)) return;\n const { base64, type, width, height } = e.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, (r, index2) => ({\n rule: stringifyRule(r, 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(node, thisBuffer) {\n const buffers = this.nodeMap.get(node);\n return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n }\n add(node, 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(node, (this.nodeMap.get(node) || /* @__PURE__ */ new Set()).add(buffer));\n }\n destroy() {\n }\n}\nlet wrappedEmit;\nlet takeFullSnapshot;\nlet canvasManager;\nlet recording = false;\ntry {\n if (Array.from([1], (x) => x * 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();\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 (e) {\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 = slimDOMDefaults(_slimDOMOptions);\n polyfill();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e) => {\n for (const plugin of plugins || []) {\n if (plugin.eventProcessor) {\n e = plugin.eventProcessor(e);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e = packFn(e);\n }\n return e;\n };\n wrappedEmit = (r, isCheckout) => {\n var _a2;\n const e = r;\n e.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e.type !== EventType.FullSnapshot && !(e.type === EventType.IncrementalSnapshot && e.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e), isCheckout);\n } else if (passEmitsToParent) {\n const message = {\n type: \"rrweb\",\n event: eventProcessor(e),\n origin: window.location.origin,\n isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e;\n incrementalSnapshotCount = 0;\n } else if (e.type === EventType.IncrementalSnapshot) {\n if (e.data.source === IncrementalSource.Mutation && e.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms && e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot(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 = (a) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a\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 plugin of plugins || []) {\n if (plugin.getMirror)\n plugin.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 = (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 node = 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: (n) => {\n if (isSerializedIframe(n, mirror)) {\n iframeManager.addIframe(n);\n }\n if (isSerializedStylesheet(n, mirror)) {\n stylesheetManager.trackLinkElement(n);\n }\n if (hasShadowRoot(n)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n), 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 (!node) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node,\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: (v) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v\n }\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p\n }\n }),\n styleSheetRuleCb: (r) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r\n }\n }),\n styleDeclarationCb: (r) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r\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: (c) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c\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();\n handlers.push(observe(document));\n recording = true;\n };\n if ([\"interactive\", \"complete\"].includes(document.readyState)) {\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((handler) => {\n try {\n handler();\n } catch (error) {\n const msg = String(error).toLowerCase();\n if (!msg.includes(\"cross-origin\")) {\n console.warn(error);\n }\n }\n });\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(isCheckout);\n};\nrecord.mirror = mirror;\nexport {\n record\n};\n//# sourceMappingURL=record.js.map\n","/**\n * npm entrypoint of `@dash0/sdk-web/session-recording`.\n *\n * This bundle contains only rrweb's recorder. It must not import any SDK module (see eslint.config.js), so the\n * main SDK bundle stays the single owner of configuration, session and transport state.\n */\nimport { record } from \"@rrweb/record\";\n/**\n * The rrweb recorder. Pass it to `init({ sessionRecording: { recorder } })` or to `startSessionRecording(recorder)`.\n */\nexport const recorder = record;\n"],"names":["_a","__defProp","Object","defineProperty","__publicField","obj","key","value","enumerable","configurable","writable","__defNormalProp","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","NodeType2","testableAccessors","Node","ShadowRoot","Element","MutationObserver","testableMethods","untaintedBasePrototype","untaintedBaseIframeCleanup","getUntaintedPrototype","defaultObj","globalThis","defaultPrototype","prototype","accessorNames","isUntaintedAccessors","Boolean","every","accessor","_a2","_b","getOwnPropertyDescriptor","get","toString","includes","methodNames","isUntaintedMethods","method","Zone","iframeEl","document","createElement","style","display","body","appendChild","win","contentWindow","untaintedObject","remove","ua","navigator","userAgent","classList","add","setAttribute","untaintedAccessorCache","getUntaintedAccessor","instance","cacheKey","String","call","untaintedPrototype","untaintedAccessor","untaintedMethodCache","getUntaintedMethod","bind","untaintedMethod","mutationObserverCtor","constructor","nowTimestamp","Date","now","patch","source","name","replacement","original","wrapped","defineProperties","__rrweb_original__","test","getTime","index","ownerDocument","n","childNodes","parentNode","parentElement","textContent","contains","other","getRootNode","host","styleSheets","shadowRoot","querySelector","selectors","querySelectorAll","isElement","nodeType","ELEMENT_NODE","isShadowRoot","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s","rules","cssRules","sheetHref","href","ownerNode","baseURI","stringifiedRules","Array","from","rule","stringifyRule","join","cssText","replace","error","isCSSImportRule","importStringified","styleSheet","split","length","statement","JSON","stringify","layerName","push","supportsText","media","mediaText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","cssStringified","regex","fixSafariColons","Mirror","this","Map","WeakMap","getId","getMeta","id","getNode","idNodeMap","getIds","keys","nodeMetaMap","removeNodeFromMap","delete","forEach","childNode","has","hasNode","node","meta","set","oldNode","reset","maskInputValue","element","maskInputOptions","tagName","type","maskInputFn","text","actualType","toLowerCase","repeat","str","ORIGINAL_ATTRIBUTE_NAME","getInputType","hasAttribute","extractFileExtension","path","baseURL","url","URL","window","location","err","match","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","origin","quote1","path1","quote2","path2","path3","filePath","maybeQuote","indexOf","slice","extractOrigin","filePathNoHash","maybeHash","substring","stack","parts","pop","part","normalizeCssString","_testNoPxNorm","markCssSplits","childNodes2","splits","iterCount","cssTextNorm","normFactor","i","textContentNorm","jLimit","j","startSubstring","cssNormSplits","splitNorm","prevTextContent","prevMinLength","k","Math","floor","normPart","max","splitCssText","_id","tagNameRegex","RegExp","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","doc","attributeValue","trim","getHref","isSVGElement","el","ownerSVGElement","customHref","a","startsWith","transformAttribute","pos","collectCharacters","regEx","chars2","exec","output","descriptorsStr","inParens","c","charAt","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","className","needMaskingText","maskTextClass","maskTextSelector","closest","matches","e","serializeNode","options","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","attributes","len","attr","stylesheet","find","rel","_cssText","sheet","checked","selected","open","rr_open_mode","__context","canvas","ctx","getContext","x","width","y","height","getImageData","originalGetImageData","Uint32Array","min","data","buffer","some","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","getAttribute","priorCrossOrigin","crossOrigin","recordInlineImage","removeEventListener","naturalWidth","naturalHeight","drawImage","complete","addEventListener","console","warn","removeAttribute","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","getBoundingClientRect","class","rr_width","rr_height","src","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parent","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","slimDOMDefaults","_slimDOMOptions","script","comment","headFavicon","headWhitespace","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaVerification","headMetaAuthorship","headMetaDescKeywords","headTitleMutations","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","as","property","slimDOMExcluded","serializedNode","assign","recordChild","shadowRootEl","isShadowHost","bypassOptions","childN","serializedChildNode","isShadow","listener","readyState","fired","timer","setTimeout","clearTimeout","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","BaseRRNode","_args","childIterator","firstChild","nextSibling","_newChild","Error","insertBefore","_refChild","removeChild","_node","on","fn","target","capture","passive","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","map","throttle","func","wait","timeout","previous","args","leading","remaining","context","apply","trailing","hookSetter","d","isRevoked","getWindowScroll","_c","_d","left","scrollingElement","pageXOffset","documentElement","top","pageYOffset","getWindowHeight","innerHeight","clientHeight","getWindowWidth","innerWidth","clientWidth","closestElementOfNode","isBlocked","isIgnored","isAncestorRemoved","legacy_isTouchEvent","event","changedTouches","isSerializedIframe","nodeName","isSerializedStylesheet","hasShadowRoot","Proxy","Reflect","prop","receiver","StyleSheetMirror","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","isNodeInLinkedList","DoubleLinkedList","position","current","head","index2","next","addNode","__ln","previousSibling","tail","removeNode","moveKey","parentId","MutationBuffer","Set","mutations","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","nextId","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","shift","movedSet","isParentRemoved","removesSubTreeCache","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","payload","texts","genTextAreaValueMutation","filter","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","item","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","addedNodes","genAdds","removedNodes","nodeId","isSerialized","deepDelete","cache","queue","n2","processRemoves","processedNodeManager","inOtherBuffer","targetId","init","freeze","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","size","_isParentRemoved","_isAncestorInSet","errorHandler","callbackWrapper","cb","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","ObserverCtor","iframeCleanup","observer","processMutations","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","Number","isNaN","endsWith","eventKey","eventName","handler","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","h","initScrollObserver","scrollCb","evt","defaultView","scrollLeftTop","scroll","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","recurse","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","unshift","parentStyleSheet","getIdAndStyleId","styleMirror","styleId","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","result","adoptStyleSheets","initObservers","o","hooks","currentWindow","mutationObserver","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","p","mutation","mousemove","viewportResize","input","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","cleanupMutationIframe","recordDOM","mousemoveHandler","threshold","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","v","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","selector","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","entries","typeKey","initStyleSheetObserver","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","priority","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","param","collapsed","updateSelection","getSelection","isCollapsed","ranges","count","rangeCount","range","getRangeAt","startContainer","startOffset","endContainer","endOffset","start","end","initSelectionObserver","customElementObserver","define","initCustomElementObserver","pluginHandlers","plugin","plugins","callback","b","disconnect","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","handleMessage","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","adoptedStyleSheets","message","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","Input","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","isArray","child","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","charCodeAt","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list","ctor","contextMap","variableListFor","serializeArg","arg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","values","ArrayBuffer","base64","arraybuffer","bytes","encode","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","splice","patchGLPrototype","props","getOwnPropertyNames","recordArgs","hookHandler","setter","jsContent","blob","self","Blob","WorkerWrapper","objURL","webkitURL","createObjectURL","worker","Worker","revokeObjectURL","encodeURIComponent","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","async","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","postMessage","requestAnimationFrame","cancelAnimationFrame","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","r","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","destroy","takeFullSnapshot","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","color","date","email","month","number","search","tel","time","week","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill","incrementalSnapshotCount","eventProcessor","buf","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","addCustomEvent","tag","freezePage","recorder"],"mappings":"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","x_google_ignoreList":[0]}
|