posthog-js 1.63.4 → 1.63.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"recorder-v2.js","sources":["../node_modules/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/utils.js","../node_modules/rrweb/es/rrweb/packages/types/dist/types.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/error-handler.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../node_modules/rrweb/es/rrweb/ext/tslib/tslib.es6.js","../node_modules/rrweb/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js","../node_modules/rrweb/es/rrweb/_virtual/image-bitmap-data-url-worker.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/index.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/processed-node-manager.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/error-stack-parser.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/stringify.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/index.js","../src/loader-recorder-v2.ts"],"sourcesContent":["var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n var host = n === null || n === void 0 ? void 0 : n.host;\r\n return Boolean((host === null || host === void 0 ? void 0 : host.shadowRoot) === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction getCssRulesString(s) {\r\n try {\r\n var rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules).map(getCssRuleString).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction getCssRuleString(rule) {\r\n var cssStringified = rule.cssText;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n return cssStringified;\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nvar Mirror = (function () {\r\n function Mirror() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n Mirror.prototype.getId = function (n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n var id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n };\r\n Mirror.prototype.getNode = function (id) {\r\n return this.idNodeMap.get(id) || null;\r\n };\r\n Mirror.prototype.getIds = function () {\r\n return Array.from(this.idNodeMap.keys());\r\n };\r\n Mirror.prototype.getMeta = function (n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n };\r\n Mirror.prototype.removeNodeFromMap = function (n) {\r\n var _this = this;\r\n var id = this.getId(n);\r\n this.idNodeMap[\"delete\"](id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach(function (childNode) {\r\n return _this.removeNodeFromMap(childNode);\r\n });\r\n }\r\n };\r\n Mirror.prototype.has = function (id) {\r\n return this.idNodeMap.has(id);\r\n };\r\n Mirror.prototype.hasNode = function (node) {\r\n return this.nodeMetaMap.has(node);\r\n };\r\n Mirror.prototype.add = function (n, meta) {\r\n var id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n };\r\n Mirror.prototype.replace = function (id, n) {\r\n var oldNode = this.getNode(id);\r\n if (oldNode) {\r\n var meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n };\r\n Mirror.prototype.reset = function () {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n };\r\n return Mirror;\r\n}());\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction maskInputValue(_a) {\r\n var element = _a.element, maskInputOptions = _a.maskInputOptions, tagName = _a.tagName, type = _a.type, value = _a.value, maskInputFn = _a.maskInputFn;\r\n var text = value || '';\r\n var actualType = type && type.toLowerCase();\r\n if (maskInputOptions[tagName.toLowerCase()] ||\r\n (actualType && maskInputOptions[actualType])) {\r\n if (maskInputFn) {\r\n text = maskInputFn(text, element);\r\n }\r\n else {\r\n text = '*'.repeat(text.length);\r\n }\r\n }\r\n return text;\r\n}\r\nvar ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n var ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n var chunkSize = 50;\r\n for (var x = 0; x < canvas.width; x += chunkSize) {\r\n for (var y = 0; y < canvas.height; y += chunkSize) {\r\n var getImageData = ctx.getImageData;\r\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n var pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some(function (pixel) { return pixel !== 0; }))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isNodeMetaEqual(a, b) {\r\n if (!a || !b || a.type !== b.type)\r\n return false;\r\n if (a.type === NodeType.Document)\r\n return a.compatMode === b.compatMode;\r\n else if (a.type === NodeType.DocumentType)\r\n return (a.name === b.name &&\r\n a.publicId === b.publicId &&\r\n a.systemId === b.systemId);\r\n else if (a.type === NodeType.Comment ||\r\n a.type === NodeType.Text ||\r\n a.type === NodeType.CDATA)\r\n return a.textContent === b.textContent;\r\n else if (a.type === NodeType.Element)\r\n return (a.tagName === b.tagName &&\r\n JSON.stringify(a.attributes) ===\r\n JSON.stringify(b.attributes) &&\r\n a.isSVG === b.isSVG &&\r\n a.needBlock === b.needBlock);\r\n return false;\r\n}\r\nfunction getInputType(element) {\r\n var type = element.type;\r\n return element.hasAttribute('data-rr-is-password')\r\n ? 'password'\r\n : type\r\n ?\r\n type.toLowerCase()\r\n : null;\r\n}\n\nvar _id = 1;\r\nvar tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nvar IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n var processedTagName = element.tagName.toLowerCase().trim();\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction stringifyStyleSheet(sheet) {\r\n return sheet.cssRules\r\n ? Array.from(sheet.cssRules)\r\n .map(function (rule) { return rule.cssText || ''; })\r\n .join('')\r\n : '';\r\n}\r\nfunction extractOrigin(url) {\r\n var origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nvar canvasService;\r\nvar canvasCtx;\r\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nvar URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\r\nvar URL_WWW_MATCH = /^www\\..*/i;\r\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, function (origin, quote1, path1, quote2, path2, path3) {\r\n var filePath = path1 || path2 || path3;\r\n var maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (filePath[0] === '/') {\r\n return \"url(\".concat(maybeQuote).concat(extractOrigin(href) + filePath).concat(maybeQuote, \")\");\r\n }\r\n var stack = href.split('/');\r\n var parts = filePath.split('/');\r\n stack.pop();\r\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\r\n var part = parts_1[_i];\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return \"url(\".concat(maybeQuote).concat(stack.join('/')).concat(maybeQuote, \")\");\r\n });\r\n}\r\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var pos = 0;\r\n function collectCharacters(regEx) {\r\n var chars;\r\n var match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n var output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n var url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n var descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n var inParens = false;\r\n while (true) {\r\n var c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n var a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value) {\r\n if (!value) {\r\n return value;\r\n }\r\n if (name === 'src' ||\r\n (name === 'href' && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset') {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style') {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n return value;\r\n}\r\nfunction ignoreAttribute(tagName, name, _value) {\r\n return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector) {\r\n try {\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (var eIndex = element.classList.length; eIndex--;) {\r\n var className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (node.nodeType !== node.ELEMENT_NODE) {\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n }\r\n for (var eIndex = node.classList.length; eIndex--;) {\r\n var className = node.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector) {\r\n try {\r\n var el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (typeof maskTextClass === 'string') {\r\n if (el.classList.contains(maskTextClass))\r\n return true;\r\n if (el.closest(\".\".concat(maskTextClass)))\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, maskTextClass, true))\r\n return true;\r\n }\r\n if (maskTextSelector) {\r\n if (el.matches(maskTextSelector))\r\n return true;\r\n if (el.closest(maskTextSelector))\r\n return true;\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n var win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n var fired = false;\r\n var readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n var timer_1 = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', function () {\r\n clearTimeout(timer_1);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n var blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n var fired = false;\r\n var styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n var timer = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', function () {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c;\r\n var rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: []\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId: rootId\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc: doc,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement,\r\n rootId: rootId\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n maskTextFn: maskTextFn,\r\n rootId: rootId\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId: rootId\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId: rootId\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n var docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n var _a;\r\n var maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, maskTextFn = options.maskTextFn, rootId = options.rootId;\r\n var parentTagName = n.parentNode && n.parentNode.tagName;\r\n var textContent = n.textContent;\r\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n var isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\r\n textContent = stringifyStyleSheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot get CSS styles from text's parentNode. Error: \".concat(err), n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n if (!isStyle &&\r\n !isScript &&\r\n textContent &&\r\n needMaskingText(n, maskTextClass, maskTextSelector)) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle: isStyle,\r\n rootId: rootId\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c, rootId = options.rootId;\r\n var needBlock = _isBlockedElement(n, blockClass, blockSelector);\r\n var tagName = getValidTagName(n);\r\n var attributes = {};\r\n var len = n.attributes.length;\r\n for (var i = 0; i < len; i++) {\r\n var attr = n.attributes[i];\r\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\r\n attributes[attr.name] = transformAttribute(doc, tagName, attr.name, attr.value);\r\n }\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n var stylesheet = Array.from(doc.styleSheets).find(function (s) {\r\n return s.href === n.href;\r\n });\r\n var cssText = null;\r\n if (stylesheet) {\r\n cssText = getCssRulesString(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n var cssText = getCssRulesString(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\r\n var value = n.value;\r\n var checked = n.checked;\r\n if (attributes.type !== 'radio' &&\r\n attributes.type !== 'checkbox' &&\r\n attributes.type !== 'submit' &&\r\n attributes.type !== 'button' &&\r\n value) {\r\n var type = getInputType(n);\r\n attributes.value = maskInputValue({\r\n element: n,\r\n type: type,\r\n tagName: tagName,\r\n value: value,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn\r\n });\r\n }\r\n else if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n var canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n var blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n var image_1 = n;\r\n var oldValue_1 = image_1.crossOrigin;\r\n image_1.crossOrigin = 'anonymous';\r\n var recordInlineImage_1 = function () {\r\n image_1.removeEventListener('load', recordInlineImage_1);\r\n try {\r\n canvasService.width = image_1.naturalWidth;\r\n canvasService.height = image_1.naturalHeight;\r\n canvasCtx.drawImage(image_1, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot inline img src=\".concat(image_1.currentSrc, \"! Error: \").concat(err));\r\n }\r\n oldValue_1\r\n ? (attributes.crossOrigin = oldValue_1)\r\n : image_1.removeAttribute('crossorigin');\r\n };\r\n if (image_1.complete && image_1.naturalWidth !== 0)\r\n recordInlineImage_1();\r\n else\r\n image_1.addEventListener('load', recordInlineImage_1);\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n attributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n attributes.rr_mediaCurrentTime = n.currentTime;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n var _d = n.getBoundingClientRect(), width = _d.width, height = _d.height;\r\n attributes = {\r\n \"class\": attributes[\"class\"],\r\n rr_width: \"\".concat(width, \"px\"),\r\n rr_height: \"\".concat(height, \"px\")\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName: tagName,\r\n attributes: attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock: needBlock,\r\n rootId: rootId\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined || maybeAttr === null) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n (sn.attributes.rel === 'preload' ||\r\n sn.attributes.rel === 'modulepreload') &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n sn.attributes.href.endsWith('.js')))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.inlineStylesheet, inlineStylesheet = _b === void 0 ? true : _b, _c = options.maskInputOptions, maskInputOptions = _c === void 0 ? {} : _c, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _d = options.dataURLOptions, dataURLOptions = _d === void 0 ? {} : _d, _e = options.inlineImages, inlineImages = _e === void 0 ? false : _e, _f = options.recordCanvas, recordCanvas = _f === void 0 ? false : _f, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _g = options.iframeLoadTimeout, iframeLoadTimeout = _g === void 0 ? 5000 : _g, onStylesheetLoad = options.onStylesheetLoad, _h = options.stylesheetLoadTimeout, stylesheetLoadTimeout = _h === void 0 ? 5000 : _h, _j = options.keepIframeSrcFn, keepIframeSrcFn = _j === void 0 ? function () { return false; } : _j, _k = options.newlyAddedElement, newlyAddedElement = _k === void 0 ? false : _k;\r\n var _l = options.preserveWhiteSpace, preserveWhiteSpace = _l === void 0 ? true : _l;\r\n var _serializedNode = serializeNode(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n var id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n var serializedNode = Object.assign(_serializedNode, { id: id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n var recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n var shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n var bypassOptions = {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: skipChild,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n };\r\n for (var _i = 0, _m = Array.from(n.childNodes); _i < _m.length; _i++) {\r\n var childN = _m[_i];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (var _o = 0, _p = Array.from(n.shadowRoot.childNodes); _o < _p.length; _o++) {\r\n var childN = _p[_o];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, function () {\r\n var iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n serializedNode.attributes.rel === 'stylesheet') {\r\n onceStylesheetLoaded(n, function () {\r\n if (onStylesheetLoad) {\r\n var serializedLinkNode = serializeNodeWithId(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n var _a = options || {}, _b = _a.mirror, mirror = _b === void 0 ? new Mirror() : _b, _c = _a.blockClass, blockClass = _c === void 0 ? 'rr-block' : _c, _d = _a.blockSelector, blockSelector = _d === void 0 ? null : _d, _e = _a.maskTextClass, maskTextClass = _e === void 0 ? 'rr-mask' : _e, _f = _a.maskTextSelector, maskTextSelector = _f === void 0 ? null : _f, _g = _a.inlineStylesheet, inlineStylesheet = _g === void 0 ? true : _g, _h = _a.inlineImages, inlineImages = _h === void 0 ? false : _h, _j = _a.recordCanvas, recordCanvas = _j === void 0 ? false : _j, _k = _a.maskAllInputs, maskAllInputs = _k === void 0 ? false : _k, maskTextFn = _a.maskTextFn, maskInputFn = _a.maskInputFn, _l = _a.slimDOM, slimDOM = _l === void 0 ? false : _l, dataURLOptions = _a.dataURLOptions, preserveWhiteSpace = _a.preserveWhiteSpace, onSerialize = _a.onSerialize, onIframeLoad = _a.onIframeLoad, iframeLoadTimeout = _a.iframeLoadTimeout, onStylesheetLoad = _a.onStylesheetLoad, stylesheetLoadTimeout = _a.stylesheetLoadTimeout, _m = _a.keepIframeSrcFn, keepIframeSrcFn = _m === void 0 ? function () { return false; } : _m;\r\n var maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true\r\n }\r\n : maskAllInputs === false\r\n ? {\r\n password: true\r\n }\r\n : maskAllInputs;\r\n var slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: false\r\n });\r\n}\r\n\nvar commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options) {\r\n if (options === void 0) { options = {}; }\r\n var lineno = 1;\r\n var column = 1;\r\n function updatePosition(str) {\r\n var lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n var i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n var start = { line: lineno, column: column };\r\n return function (node) {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n var Position = (function () {\r\n function Position(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column: column };\r\n this.source = options.source;\r\n }\r\n return Position;\r\n }());\r\n Position.prototype.content = css;\r\n var errorsList = [];\r\n function error(msg) {\r\n var err = new Error(\"\".concat(options.source || '', \":\").concat(lineno, \":\").concat(column, \": \").concat(msg));\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n var rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList\r\n }\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n var node;\r\n var rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node !== false) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n var m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n var str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules) {\r\n if (rules === void 0) { rules = []; }\r\n var c;\r\n while ((c = comment())) {\r\n if (c !== false) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n var pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n var i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n var str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str\r\n });\r\n }\r\n function selector() {\r\n var m = match(/^([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n return trim(m[0])\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function (m) {\r\n return m.replace(/,/g, '\\u200C');\r\n })\r\n .split(/\\s*(?![^(]*\\)),\\s*/)\r\n .map(function (s) {\r\n return s.replace(/\\u200C/g, ',');\r\n });\r\n }\r\n function declaration() {\r\n var pos = position();\r\n var propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n var prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(\"property missing ':'\");\r\n }\r\n var val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n var ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : ''\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n var decls = [];\r\n if (!open()) {\r\n return error(\"missing '{'\");\r\n }\r\n comments(decls);\r\n var decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(\"missing '}'\");\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n var m;\r\n var vals = [];\r\n var pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations()\r\n });\r\n }\r\n function atkeyframes() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n var name = m[1];\r\n if (!open()) {\r\n return error(\"@keyframes missing '{'\");\r\n }\r\n var frame;\r\n var frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@keyframes missing '}'\");\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name: name,\r\n vendor: vendor,\r\n keyframes: frames\r\n });\r\n }\r\n function atsupports() {\r\n var pos = position();\r\n var m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var supports = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@supports missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@supports missing '}'\");\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports: supports,\r\n rules: style\r\n });\r\n }\r\n function athost() {\r\n var pos = position();\r\n var m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@host missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@host missing '}'\");\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style\r\n });\r\n }\r\n function atmedia() {\r\n var pos = position();\r\n var m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var media = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@media missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@media missing '}'\");\r\n }\r\n return pos({\r\n type: 'media',\r\n media: media,\r\n rules: style\r\n });\r\n }\r\n function atcustommedia() {\r\n var pos = position();\r\n var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2])\r\n });\r\n }\r\n function atpage() {\r\n var pos = position();\r\n var m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n var sel = selector() || [];\r\n if (!open()) {\r\n return error(\"@page missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@page missing '}'\");\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls\r\n });\r\n }\r\n function atdocument() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = trim(m[1]);\r\n var doc = trim(m[2]);\r\n if (!open()) {\r\n return error(\"@document missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@document missing '}'\");\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor: vendor,\r\n rules: style\r\n });\r\n }\r\n function atfontface() {\r\n var pos = position();\r\n var m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@font-face missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@font-face missing '}'\");\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls\r\n });\r\n }\r\n var atimport = _compileAtrule('import');\r\n var atcharset = _compileAtrule('charset');\r\n var atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n var re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return function () {\r\n var pos = position();\r\n var m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n var ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n var pos = position();\r\n var sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations()\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n var isNode = obj && typeof obj.type === 'string';\r\n var childParent = isNode ? obj : parent;\r\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\r\n var k = _a[_i];\r\n var value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach(function (v) {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null\r\n });\r\n }\r\n return obj;\r\n}\n\nvar tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient'\r\n};\r\nfunction getTagName(n) {\r\n var tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nvar HOVER_SELECTOR = /([^\\\\]):hover/;\r\nvar HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n var cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n var ast = parse(cssText, {\r\n silent: true\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n var selectors = [];\r\n ast.stylesheet.rules.forEach(function (rule) {\r\n if ('selectors' in rule) {\r\n (rule.selectors || []).forEach(function (selector) {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n });\r\n if (selectors.length === 0) {\r\n return cssText;\r\n }\r\n var selectorMatcher = new RegExp(selectors\r\n .filter(function (selector, index) { return selectors.indexOf(selector) === index; })\r\n .sort(function (a, b) { return b.length - a.length; })\r\n .map(function (selector) {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n var result = cssText.replace(selectorMatcher, function (selector) {\r\n var newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return \"\".concat(selector, \", \").concat(newSelector);\r\n });\r\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n var stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass: stylesWithHoverClass\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n var tagName = getTagName(n);\r\n var node_1;\r\n if (n.isSVG) {\r\n node_1 = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n node_1 = doc.createElement(tagName);\r\n }\r\n var specialAttributes = {};\r\n for (var name_1 in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name_1)) {\r\n continue;\r\n }\r\n var value = n.attributes[name_1];\r\n if (tagName === 'option' &&\r\n name_1 === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === null) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name_1.startsWith('rr_')) {\r\n specialAttributes[name_1] = value;\r\n continue;\r\n }\r\n var isTextarea = tagName === 'textarea' && name_1 === 'value';\r\n var isRemoteOrDynamicCss = tagName === 'style' && name_1 === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = addHoverClass(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n var child = doc.createTextNode(value);\r\n for (var _i = 0, _a = Array.from(node_1.childNodes); _i < _a.length; _i++) {\r\n var c = _a[_i];\r\n if (c.nodeType === node_1.TEXT_NODE) {\r\n node_1.removeChild(c);\r\n }\r\n }\r\n node_1.appendChild(child);\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name_1 === 'xlink:href') {\r\n node_1.setAttributeNS('http://www.w3.org/1999/xlink', name_1, value.toString());\r\n }\r\n else if (name_1 === 'onload' ||\r\n name_1 === 'onclick' ||\r\n name_1.substring(0, 7) === 'onmouse') {\r\n node_1.setAttribute('_' + name_1, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name_1 === 'content') {\r\n node_1.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n (n.attributes.rel === 'preload' ||\r\n n.attributes.rel === 'modulepreload') &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node_1.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node_1.setAttribute(name_1, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n var _loop_1 = function (name_2) {\r\n var value = specialAttributes[name_2];\r\n if (tagName === 'canvas' && name_2 === 'rr_dataURL') {\r\n var image_1 = document.createElement('img');\r\n image_1.onload = function () {\r\n var ctx = node_1.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image_1, 0, 0, image_1.width, image_1.height);\r\n }\r\n };\r\n image_1.src = value.toString();\r\n if (node_1.RRNodeType)\r\n node_1.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name_2 === 'rr_dataURL') {\r\n var image = node_1;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name_2 === 'rr_width') {\r\n node_1.style.width = value.toString();\r\n }\r\n else if (name_2 === 'rr_height') {\r\n node_1.style.height = value.toString();\r\n }\r\n else if (name_2 === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node_1.currentTime = value;\r\n }\r\n else if (name_2 === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node_1\r\n .play()[\"catch\"](function (e) { return console.warn('media playback error', e); });\r\n break;\r\n case 'paused':\r\n node_1.pause();\r\n break;\r\n }\r\n }\r\n };\r\n for (var name_2 in specialAttributes) {\r\n _loop_1(name_2);\r\n }\r\n if (n.isShadowHost) {\r\n if (!node_1.shadowRoot) {\r\n node_1.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node_1.shadowRoot.firstChild) {\r\n node_1.shadowRoot.removeChild(node_1.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node_1;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? addHoverClass(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n var doc = options.doc, mirror = options.mirror, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.hackCss, hackCss = _b === void 0 ? true : _b, afterAppend = options.afterAppend, cache = options.cache;\r\n if (mirror.has(n.id)) {\r\n var nodeInMirror = mirror.getNode(n.id);\r\n var meta = mirror.getMeta(nodeInMirror);\r\n if (isNodeMetaEqual(meta, n))\r\n return mirror.getNode(n.id);\r\n }\r\n var node = buildNode(n, { doc: doc, hackCss: hackCss, cache: cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n }\r\n else {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n var _loop_2 = function (childN) {\r\n var childNode = buildNodeWithSN(childN, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n return \"continue\";\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else if (n.type === NodeType.Document &&\r\n childN.type == NodeType.Element) {\r\n var htmlElement = childNode;\r\n var body_1 = null;\r\n htmlElement.childNodes.forEach(function (child) {\r\n if (child.nodeName === 'BODY')\r\n body_1 = child;\r\n });\r\n if (body_1) {\r\n htmlElement.removeChild(body_1);\r\n node.appendChild(childNode);\r\n htmlElement.appendChild(body_1);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n };\r\n for (var _i = 0, _c = n.childNodes; _i < _c.length; _i++) {\r\n var childN = _c[_i];\r\n _loop_2(childN);\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (var _i = 0, _a = mirror.getIds(); _i < _a.length; _i++) {\r\n var id = _a[_i];\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n var n = mirror.getMeta(node);\r\n if ((n === null || n === void 0 ? void 0 : n.type) !== NodeType.Element) {\r\n return;\r\n }\r\n var el = node;\r\n for (var name_3 in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name_3) &&\r\n name_3.startsWith('rr_'))) {\r\n continue;\r\n }\r\n var value = n.attributes[name_3];\r\n if (name_3 === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name_3 === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n var doc = options.doc, onVisit = options.onVisit, _a = options.hackCss, hackCss = _a === void 0 ? true : _a, afterAppend = options.afterAppend, cache = options.cache, _b = options.mirror, mirror = _b === void 0 ? new Mirror() : _b;\r\n var node = buildNodeWithSN(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n visit(mirror, function (visitedNode) {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, classMatchesRegex, createCache, createMirror, genId, getCssRuleString, getCssRulesString, getInputType, ignoreAttribute, is2DCanvasBlank, isCSSImportRule, isElement, isNativeShadowDom, isNodeMetaEqual, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, transformAttribute };\n","import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch (_a) {\r\n return () => {\r\n };\r\n }\r\n}\r\nfunction getWindowScroll(win) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const doc = win.document;\r\n return {\r\n left: doc.scrollingElement\r\n ? doc.scrollingElement.scrollLeft\r\n : win.pageXOffset !== undefined\r\n ? win.pageXOffset\r\n : (doc === null || doc === void 0 ? void 0 : doc.documentElement.scrollLeft) ||\r\n ((_b = (_a = doc === null || doc === void 0 ? void 0 : doc.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\r\n ((_c = doc === null || doc === void 0 ? void 0 : doc.body) === null || _c === void 0 ? void 0 : _c.scrollLeft) ||\r\n 0,\r\n top: doc.scrollingElement\r\n ? doc.scrollingElement.scrollTop\r\n : win.pageYOffset !== undefined\r\n ? win.pageYOffset\r\n : (doc === null || doc === void 0 ? void 0 : doc.documentElement.scrollTop) ||\r\n ((_e = (_d = doc === null || doc === void 0 ? void 0 : doc.body) === null || _d === void 0 ? void 0 : _d.parentElement) === null || _e === void 0 ? void 0 : _e.scrollTop) ||\r\n ((_f = doc === null || doc === void 0 ? void 0 : doc.body) === null || _f === void 0 ? void 0 : _f.scrollTop) ||\r\n 0,\r\n };\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (!el)\r\n return false;\r\n try {\r\n if (typeof blockClass === 'string') {\r\n if (el.classList.contains(blockClass))\r\n return true;\r\n if (checkAncestors && el.closest('.' + blockClass) !== null)\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, blockClass, checkAncestors))\r\n return true;\r\n }\r\n }\r\n catch (e) {\r\n }\r\n if (blockSelector) {\r\n if (el.matches(blockSelector))\r\n return true;\r\n if (checkAncestors && el.closest(blockSelector) !== null)\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction legacy_isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n const queueNodeMap = {};\r\n const putIntoMap = (m, parent) => {\r\n const nodeInTree = {\r\n value: m,\r\n parent,\r\n children: [],\r\n };\r\n queueNodeMap[m.node.id] = nodeInTree;\r\n return nodeInTree;\r\n };\r\n const queueNodeTrees = [];\r\n for (const mutation of queue) {\r\n const { nextId, parentId } = mutation;\r\n if (nextId && nextId in queueNodeMap) {\r\n const nextInTree = queueNodeMap[nextId];\r\n if (nextInTree.parent) {\r\n const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n }\r\n else {\r\n const idx = queueNodeTrees.indexOf(nextInTree);\r\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n }\r\n continue;\r\n }\r\n if (parentId in queueNodeMap) {\r\n const parentInTree = queueNodeMap[parentId];\r\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n continue;\r\n }\r\n queueNodeTrees.push(putIntoMap(mutation, null));\r\n }\r\n return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n cb(tree.value);\r\n for (let i = tree.children.length - 1; i >= 0; i--) {\r\n iterateResolveTree(tree.children[i], cb);\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n var _a, _b;\r\n const frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.frameElement;\r\n if (!frameElement || frameElement === rootIframe) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n relativeScale: 1,\r\n absoluteScale: 1,\r\n };\r\n }\r\n const frameDimension = frameElement.getBoundingClientRect();\r\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n return {\r\n x: frameDimension.x * frameBaseDimension.relativeScale +\r\n frameBaseDimension.x,\r\n y: frameDimension.y * frameBaseDimension.relativeScale +\r\n frameBaseDimension.y,\r\n relativeScale,\r\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n };\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n const rule = rules[position[0]];\r\n if (position.length === 1) {\r\n return rule;\r\n }\r\n else {\r\n return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n const positions = [...nestedIndex];\r\n const index = positions.pop();\r\n return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n const idSet = new Set();\r\n const uniqueMutations = [];\r\n for (let i = mutations.length; i--;) {\r\n const mutation = mutations[i];\r\n if (!idSet.has(mutation.id)) {\r\n uniqueMutations.push(mutation);\r\n idSet.add(mutation.id);\r\n }\r\n }\r\n return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n var _a;\r\n return (_a = this.styleIDMap.get(stylesheet)) !== null && _a !== void 0 ? _a : -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\r\nfunction getShadowHost(n) {\r\n var _a, _b;\r\n let shadowHost = null;\r\n if (((_b = (_a = n.getRootNode) === null || _a === void 0 ? void 0 : _a.call(n)) === null || _b === void 0 ? void 0 : _b.nodeType) === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n return shadowHost;\r\n}\r\nfunction getRootShadowHost(n) {\r\n let rootShadowHost = n;\r\n let shadowHost;\r\n while ((shadowHost = getShadowHost(rootShadowHost)))\r\n rootShadowHost = shadowHost;\r\n return rootShadowHost;\r\n}\r\nfunction shadowHostInDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n const shadowHost = getRootShadowHost(n);\r\n return doc.contains(shadowHost);\r\n}\r\nfunction inDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n return doc.contains(n) || shadowHostInDom(n);\r\n}\n\nexport { StyleSheetMirror, _mirror, getBaseDimension, getNestedRule, getPositionsAndIndex, getRootShadowHost, getShadowHost, getWindowHeight, getWindowScroll, getWindowWidth, hasShadowRoot, hookSetter, inDom, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, iterateResolveTree, legacy_isTouchEvent, on, patch, polyfill, queueToResolveTrees, shadowHostInDom, throttle, uniqueTextMutations };\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n 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 ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, PointerTypes, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, getInputType, maskInputValue, ignoreAttribute, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, hasShadowRoot, inDom, getShadowHost, isSerializedIframe, isSerializedStylesheet } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n if (!n.parentNode || !inDom(n)) {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(getShadowHost(n))\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskTextClass: this.maskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of this.movedSet) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of this.addedSet) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n for (let index = addList.length - 1; index >= 0; index--) {\r\n const _node = addList.get(index);\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => ({\r\n id: this.mirror.getId(text.node),\r\n value: text.value,\r\n }))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => ({\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attribute.attributes,\r\n }))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value)\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let attributeName = m.attributeName;\r\n let value = m.target.getAttribute(attributeName);\r\n if (attributeName === 'value') {\r\n const type = getInputType(target);\r\n value = maskInputValue({\r\n element: target,\r\n maskInputOptions: this.maskInputOptions,\r\n tagName: target.tagName,\r\n type,\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributes.find((a) => a.node === m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n };\r\n this.attributes.push(item);\r\n }\r\n if (attributeName === 'type' &&\r\n target.tagName === 'INPUT' &&\r\n (m.oldValue || '').toLowerCase() === 'password') {\r\n target.setAttribute('data-rr-is-password', 'true');\r\n }\r\n if (attributeName === 'style') {\r\n const old = this.doc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n if (item.attributes.style === undefined ||\r\n item.attributes.style === null) {\r\n item.attributes.style = {};\r\n }\r\n const styleObj = item.attributes.style;\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n styleObj[pname] = newValue;\r\n }\r\n else {\r\n styleObj[pname] = [newValue, newPriority];\r\n }\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n styleObj[pname] = false;\r\n }\r\n }\r\n }\r\n else if (!ignoreAttribute(target.tagName, attributeName)) {\r\n item.attributes[attributeName] = transformAttribute(this.doc, target.tagName, attributeName, value);\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\r\n return;\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.processedNodeManager.inOtherBuffer(n, this))\r\n return;\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, false)) {\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n if (hasShadowRoot(n)) {\r\n n.shadowRoot.childNodes.forEach((childN) => {\r\n this.processedNodeManager.add(childN, this);\r\n this.genAdds(childN, n);\r\n });\r\n }\r\n }\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'maskTextClass',\r\n 'maskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n 'processedNodeManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","let errorHandler;\r\nfunction registerErrorHandler(handler) {\r\n errorHandler = handler;\r\n}\r\nfunction unregisterErrorHandler() {\r\n errorHandler = undefined;\r\n}\r\nconst callbackWrapper = (cb) => {\r\n if (!errorHandler) {\r\n return cb;\r\n }\r\n const rrwebWrapped = ((...rest) => {\r\n try {\r\n return cb(...rest);\r\n }\r\n catch (error) {\r\n if (errorHandler && errorHandler(error) === true) {\r\n return;\r\n }\r\n throw error;\r\n }\r\n });\r\n return rrwebWrapped;\r\n};\n\nexport { callbackWrapper, registerErrorHandler, unregisterErrorHandler };\n","import { getInputType, maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowScroll, getWindowHeight, getWindowWidth, hookSetter, patch, legacy_isTouchEvent } from '../utils.js';\nimport { MouseInteractions, IncrementalSource, PointerTypes } from '../../../types/dist/types.js';\nimport MutationBuffer from './mutation.js';\nimport { callbackWrapper } from './error-handler.js';\n\nconst mutationBuffers = [];\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n return event.target;\r\n }\r\n catch (_a) {\r\n return event.target;\r\n }\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n var _a, _b;\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer)));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle(callbackWrapper((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }), callbackThreshold);\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = legacy_isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = Date.now();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: Date.now() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource.MouseMove\r\n : IncrementalSource.TouchMove);\r\n }), threshold, {\r\n trailing: false,\r\n }));\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n let currentPointerType = null;\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n let pointerType = null;\r\n let thisEventKey = eventKey;\r\n if ('pointerType' in event) {\r\n switch (event.pointerType) {\r\n case 'mouse':\r\n pointerType = PointerTypes.Mouse;\r\n break;\r\n case 'touch':\r\n pointerType = PointerTypes.Touch;\r\n break;\r\n case 'pen':\r\n pointerType = PointerTypes.Pen;\r\n break;\r\n }\r\n if (pointerType === PointerTypes.Touch) {\r\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\r\n thisEventKey = 'TouchStart';\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\r\n thisEventKey = 'TouchEnd';\r\n }\r\n }\r\n else if (pointerType === PointerTypes.Pen) ;\r\n }\r\n else if (legacy_isTouchEvent(event)) {\r\n pointerType = PointerTypes.Touch;\r\n }\r\n if (pointerType !== null) {\r\n currentPointerType = pointerType;\r\n if ((thisEventKey.startsWith('Touch') &&\r\n pointerType === PointerTypes.Touch) ||\r\n (thisEventKey.startsWith('Mouse') &&\r\n pointerType === PointerTypes.Mouse)) {\r\n pointerType = null;\r\n }\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\r\n pointerType = currentPointerType;\r\n currentPointerType = null;\r\n }\r\n const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n callbackWrapper(mouseInteractionCb)(Object.assign({ type: MouseInteractions[thisEventKey], id, x: clientX, y: clientY }, (pointerType !== null && { pointerType })));\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n let eventName = eventKey.toLowerCase();\r\n const handler = getHandler(eventKey);\r\n if (window.PointerEvent) {\r\n switch (MouseInteractions[eventKey]) {\r\n case MouseInteractions.MouseDown:\r\n case MouseInteractions.MouseUp:\r\n eventName = eventName.replace('mouse', 'pointer');\r\n break;\r\n case MouseInteractions.TouchStart:\r\n case MouseInteractions.TouchEnd:\r\n return;\r\n }\r\n }\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc && doc.defaultView) {\r\n const scrollLeftTop = getWindowScroll(doc.defaultView);\r\n scrollCb({\r\n id,\r\n x: scrollLeftTop.left,\r\n y: scrollLeftTop.top,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }), sampling.scroll || 100));\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb, }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = callbackWrapper(throttle(callbackWrapper(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }), 200));\r\n return on('resize', updateDimension, window);\r\n}\r\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\r\n const value = Object.assign({}, v);\r\n if (!enable)\r\n delete value.userTriggered;\r\n return value;\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, ignoreClass, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n const tagName = target && target.tagName;\r\n if (target && tagName === 'OPTION') {\r\n target = target.parentElement;\r\n }\r\n if (!target ||\r\n !tagName ||\r\n INPUT_TAGS.indexOf(tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n if (target.classList.contains(ignoreClass)) {\r\n return;\r\n }\r\n let text = target.value;\r\n let isChecked = false;\r\n const type = getInputType(target) || '';\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n else if (maskInputOptions[tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n text = maskInputValue({\r\n element: target,\r\n maskInputOptions,\r\n tagName,\r\n type,\r\n value: text,\r\n maskInputFn,\r\n });\r\n }\r\n cbWithDedup(target, callbackWrapper(wrapEventWithUserTriggeredFlag)({ text, isChecked, userTriggered }, userTriggeredOnInput));\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n cbWithDedup(el, callbackWrapper(wrapEventWithUserTriggeredFlag)({\r\n text: el.value,\r\n isChecked: !isChecked,\r\n userTriggered: false,\r\n }, userTriggeredOnInput));\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n callbackWrapper(inputCb)(Object.assign(Object.assign({}, v), { id }));\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, callbackWrapper(eventHandler), doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n callbackWrapper(eventHandler)({\r\n target: this,\r\n isTrusted: false,\r\n });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((hasNestedCSSRule('CSSGroupingRule') &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (hasNestedCSSRule('CSSMediaRule') &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (hasNestedCSSRule('CSSSupportsRule') &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (hasNestedCSSRule('CSSConditionRule') &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\r\n return () => {\r\n };\r\n }\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (canMonkeyPatchNestedCSSRule('CSSGroupingRule')) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (canMonkeyPatchNestedCSSRule('CSSMediaRule')) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSConditionRule')) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSSupportsRule')) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(thisArg),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(thisArg), index] },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n });\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n var _a, _b, _c;\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? (_a = host.defaultView) === null || _a === void 0 ? void 0 : _a.Document\r\n : (_c = (_b = host.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView) === null || _c === void 0 ? void 0 : _c.ShadowRoot;\r\n const originalPropertyDescriptor = Object.getOwnPropertyDescriptor(patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype, 'adoptedStyleSheets');\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n var _a;\r\n return (_a = originalPropertyDescriptor.get) === null || _a === void 0 ? void 0 : _a.call(this);\r\n },\r\n set(sheets) {\r\n var _a;\r\n const result = (_a = originalPropertyDescriptor.set) === null || _a === void 0 ? void 0 : _a.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return callbackWrapper(() => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n });\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n var _a;\r\n const [property, value, priority] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(thisArg, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n var _a;\r\n const [property] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(thisArg, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n });\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, mirror, sampling, }) {\r\n const handler = callbackWrapper((type) => throttle(callbackWrapper((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n });\r\n }), sampling.media || 500));\r\n const handlers = [\r\n on('play', handler(0)),\r\n on('pause', handler(1)),\r\n on('seeked', handler(2)),\r\n on('volumechange', handler(3)),\r\n on('ratechange', handler(4)),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(callbackWrapper(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }), 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\r\n let collapsed = true;\r\n const updateSelection = callbackWrapper(() => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && (selection === null || selection === void 0 ? void 0 : selection.isCollapsed)))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n });\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction mergeHooks(o, hooks) {\r\n const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, selectionCb, } = o;\r\n o.mutationCb = (...p) => {\r\n if (hooks.mutation) {\r\n hooks.mutation(...p);\r\n }\r\n mutationCb(...p);\r\n };\r\n o.mousemoveCb = (...p) => {\r\n if (hooks.mousemove) {\r\n hooks.mousemove(...p);\r\n }\r\n mousemoveCb(...p);\r\n };\r\n o.mouseInteractionCb = (...p) => {\r\n if (hooks.mouseInteraction) {\r\n hooks.mouseInteraction(...p);\r\n }\r\n mouseInteractionCb(...p);\r\n };\r\n o.scrollCb = (...p) => {\r\n if (hooks.scroll) {\r\n hooks.scroll(...p);\r\n }\r\n scrollCb(...p);\r\n };\r\n o.viewportResizeCb = (...p) => {\r\n if (hooks.viewportResize) {\r\n hooks.viewportResize(...p);\r\n }\r\n viewportResizeCb(...p);\r\n };\r\n o.inputCb = (...p) => {\r\n if (hooks.input) {\r\n hooks.input(...p);\r\n }\r\n inputCb(...p);\r\n };\r\n o.mediaInteractionCb = (...p) => {\r\n if (hooks.mediaInteaction) {\r\n hooks.mediaInteaction(...p);\r\n }\r\n mediaInteractionCb(...p);\r\n };\r\n o.styleSheetRuleCb = (...p) => {\r\n if (hooks.styleSheetRule) {\r\n hooks.styleSheetRule(...p);\r\n }\r\n styleSheetRuleCb(...p);\r\n };\r\n o.styleDeclarationCb = (...p) => {\r\n if (hooks.styleDeclaration) {\r\n hooks.styleDeclaration(...p);\r\n }\r\n styleDeclarationCb(...p);\r\n };\r\n o.canvasMutationCb = (...p) => {\r\n if (hooks.canvasMutation) {\r\n hooks.canvasMutation(...p);\r\n }\r\n canvasMutationCb(...p);\r\n };\r\n o.fontCb = (...p) => {\r\n if (hooks.font) {\r\n hooks.font(...p);\r\n }\r\n fontCb(...p);\r\n };\r\n o.selectionCb = (...p) => {\r\n if (hooks.selection) {\r\n hooks.selection(...p);\r\n }\r\n selectionCb(...p);\r\n };\r\n}\r\nfunction initObservers(o, hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n mergeHooks(o, hooks);\r\n const mutationObserver = initMutationObserver(o, o.doc);\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o);\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n const styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n const fontObserver = o.collectFonts\r\n ? initFontObserver(o)\r\n : () => {\r\n };\r\n const selectionObserver = initSelectionObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return callbackWrapper(() => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n pluginHandlers.forEach((h) => h());\r\n });\r\n}\r\nfunction hasNestedCSSRule(prop) {\r\n return typeof window[prop] !== 'undefined';\r\n}\r\nfunction canMonkeyPatchNestedCSSRule(prop) {\r\n return Boolean(typeof window[prop] !== 'undefined' &&\r\n window[prop].prototype &&\r\n 'insertRule' in window[prop].prototype &&\r\n 'deleteRule' in window[prop].prototype);\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId, NodeType } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\n\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.crossOriginIframeRootIdMap = new WeakMap();\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n var _a;\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n const crossOriginMessageEvent = message;\r\n if (crossOriginMessageEvent.data.type !== 'rrweb' ||\r\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\r\n return;\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n var _a;\r\n switch (e.type) {\r\n case EventType.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n const rootId = e.data.node.id;\r\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\r\n this.patchRootIdOnNode(e.data.node, rootId);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType.Meta:\r\n case EventType.Load:\r\n case EventType.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType.Plugin: {\r\n return e;\r\n }\r\n case EventType.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\r\n rootId && this.patchRootIdOnNode(n.node, rootId);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource.MediaInteraction:\r\n case IncrementalSource.MouseInteraction:\r\n case IncrementalSource.Scroll:\r\n case IncrementalSource.CanvasMutation:\r\n case IncrementalSource.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource.Font: {\r\n return e;\r\n }\r\n case IncrementalSource.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n (_a = e.data.styles) === null || _a === void 0 ? void 0 : _a.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id', 'rootId']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n patchRootIdOnNode(node, rootId) {\r\n if (node.type !== NodeType.Document && !node.rootId)\r\n node.rootId = rootId;\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.patchRootIdOnNode(child, rootId);\r\n });\r\n }\r\n }\r\n}\n\nexport { IframeManager };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { patch, inDom } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restoreHandlers = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n this.init();\r\n }\r\n init() {\r\n this.reset();\r\n this.patchAttachShadow(Element, document);\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n const observer = initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\r\n this.restoreHandlers.push(() => observer.disconnect());\r\n this.restoreHandlers.push(initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror })));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n this.restoreHandlers.push(initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot));\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (!iframeElement.contentWindow || !iframeElement.contentDocument)\r\n return;\r\n this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\r\n }\r\n patchAttachShadow(element, doc) {\r\n const manager = this;\r\n this.restoreHandlers.push(patch(element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot && inDom(this))\r\n manager.addShadowRoot(this.shadowRoot, doc);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n reset() {\r\n this.restoreHandlers.forEach((handler) => {\r\n try {\r\n handler();\r\n }\r\n catch (e) {\r\n }\r\n });\r\n this.restoreHandlers = [];\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\nexport { ShadowDomManager };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nexport { __awaiter, __rest };\n","/*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\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 }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n","import { encode } from './../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = canvasVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n canvasVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n if (!value ||\r\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n return;\r\n const name = value.constructor.name;\r\n const list = variableListFor(ctx, name);\r\n let index = list.indexOf(value);\r\n if (index === -1) {\r\n index = list.length;\r\n list.push(value);\r\n }\r\n return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n if (value instanceof Array) {\r\n return value.map((arg) => serializeArg(arg, win, ctx));\r\n }\r\n else if (value === null) {\r\n return value;\r\n }\r\n else if (value instanceof Float32Array ||\r\n value instanceof Float64Array ||\r\n value instanceof Int32Array ||\r\n value instanceof Uint32Array ||\r\n value instanceof Uint8Array ||\r\n value instanceof Uint16Array ||\r\n value instanceof Int16Array ||\r\n value instanceof Int8Array ||\r\n value instanceof Uint8ClampedArray) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [Object.values(value)],\r\n };\r\n }\r\n else if (value instanceof ArrayBuffer) {\r\n const name = value.constructor.name;\r\n const base64 = encode(value);\r\n return {\r\n rr_type: name,\r\n base64,\r\n };\r\n }\r\n else if (value instanceof DataView) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [\r\n serializeArg(value.buffer, win, ctx),\r\n value.byteOffset,\r\n value.byteLength,\r\n ],\r\n };\r\n }\r\n else if (value instanceof HTMLImageElement) {\r\n const name = value.constructor.name;\r\n const { src } = value;\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof HTMLCanvasElement) {\r\n const name = 'HTMLImageElement';\r\n const src = value.toDataURL();\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof ImageData) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n };\r\n }\r\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n const name = value.constructor.name;\r\n const index = saveWebGLVar(value, win, ctx);\r\n return {\r\n rr_type: name,\r\n index: index,\r\n };\r\n }\r\n return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n return [...args].map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n const webGLConstructorNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n 'WebGLVertexArrayObjectOES',\r\n ];\r\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { patch, isBlocked } from '../../../utils.js';\n\nfunction initCanvasContextObserver(win, blockClass, blockSelector) {\r\n const handlers = [];\r\n try {\r\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n return function (contextType, ...args) {\r\n if (!isBlocked(this, blockClass, blockSelector, true)) {\r\n if (!('__context' in this))\r\n this.__context = contextType;\r\n }\r\n return original.apply(this, [contextType, ...args]);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasContextObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, mirror, win) {\r\n const handlers = [];\r\n const props = Object.getOwnPropertyNames(prototype);\r\n for (const prop of props) {\r\n if ([\r\n 'isContextLost',\r\n 'canvas',\r\n 'drawingBufferWidth',\r\n 'drawingBufferHeight',\r\n ].includes(prop)) {\r\n continue;\r\n }\r\n try {\r\n if (typeof prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(prototype, prop, function (original) {\r\n return function (...args) {\r\n const result = original.apply(this, args);\r\n saveWebGLVar(result, win, this);\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n const mutation = {\r\n type,\r\n property: prop,\r\n args: recordArgs,\r\n };\r\n cb(this.canvas, mutation);\r\n }\r\n return result;\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type,\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, mirror) {\r\n const handlers = [];\r\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, mirror, win));\r\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, mirror, win));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasWebGLMutationObserver as default };\n","function decodeBase64(base64, enableUnicode) {\n var binaryString = atob(base64);\n if (enableUnicode) {\n var binaryView = new Uint8Array(binaryString.length);\n for (var i = 0, n = binaryString.length; i < n; ++i) {\n binaryView[i] = binaryString.charCodeAt(i);\n }\n return String.fromCharCode.apply(null, new Uint16Array(binaryView.buffer));\n }\n return binaryString;\n}\n\nfunction createURL(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n var blob = new Blob([body], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(base64, sourcemapArg, enableUnicodeArg);\n return new Worker(url, options);\n };\n}\n\nexport { createBase64WorkerFactory };\n","import { createBase64WorkerFactory } from './_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js';\n\nvar WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucykgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgY29uc3QgaWQgPSBgJHt3aWR0aH0tJHtoZWlnaHR9YDsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRCbG9iTWFwLmdldChpZCk7DQogICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0geWllbGQgYmxvYi5hcnJheUJ1ZmZlcigpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQogICAgY29uc3Qgd29ya2VyID0gc2VsZjsNCiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgY29uc3QgeyBpZCwgYml0bWFwLCB3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucyB9ID0gZS5kYXRhOw0KICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zKTsNCiAgICAgICAgICAgICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwKTsNCiAgICAgICAgICAgICAgICBiaXRtYXAuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gZW5jb2RlKGFycmF5QnVmZmVyKTsNCiAgICAgICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7DQogICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgaWQsDQogICAgICAgICAgICAgICAgICAgIHR5cGUsDQogICAgICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQogICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=', null, false);\n/* eslint-enable */\n\nexport { WorkerFactory as default };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, getWindowWidth, getWindowHeight, getWindowScroll, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\nimport ProcessedNodeManager from './processed-node-manager.js';\nimport { callbackWrapper, unregisterErrorHandler, registerErrorHandler } from './error-handler.js';\n\nfunction wrapEvent(e) {\r\n return Object.assign(Object.assign({}, e), { timestamp: Date.now() });\r\n}\r\nlet wrappedEmit;\r\nlet takeFullSnapshot;\r\nlet canvasManager;\r\nlet recording = false;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, ignoreClass = 'rr-ignore', maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, recordAfter = options.recordAfter === 'DOMContentLoaded'\r\n ? options.recordAfter\r\n : 'load', userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), errorHandler, } = options;\r\n registerErrorHandler(errorHandler);\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n if (window.parent.document) {\r\n passEmitsToParent = false;\r\n }\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : { password: true };\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn &&\r\n !passEmitsToParent) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (e, isCheckout) => {\r\n var _a;\r\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\r\n e.type !== EventType.FullSnapshot &&\r\n !(e.type === EventType.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit === null || emit === void 0 ? void 0 : emit(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n origin: window.location.origin,\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Mutation }, m),\r\n }));\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Scroll }, p),\r\n }));\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CanvasMutation }, p),\r\n }));\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.AdoptedStyleSheet }, a),\r\n }));\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n const processedNodeManager = new ProcessedNodeManager();\r\n canvasManager = new CanvasManager({\r\n recordCanvas,\r\n mutationCb: wrappedCanvasMutationEmit,\r\n win: window,\r\n blockClass,\r\n blockSelector,\r\n mirror,\r\n sampling: sampling.canvas,\r\n dataURLOptions,\r\n });\r\n const shadowDomManager = new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n processedNodeManager,\r\n },\r\n mirror,\r\n });\r\n takeFullSnapshot = (isCheckout = false) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }), isCheckout);\r\n stylesheetManager.reset();\r\n shadowDomManager.init();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: getWindowScroll(window),\r\n },\r\n }), isCheckout);\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n try {\r\n const handlers = [];\r\n const observe = (doc) => {\r\n var _a;\r\n return callbackWrapper(initObservers)({\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n })),\r\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MouseInteraction }, d),\r\n })),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.ViewportResize }, d),\r\n })),\r\n inputCb: (v) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Input }, v),\r\n })),\r\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MediaInteraction }, p),\r\n })),\r\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleSheetRule }, r),\r\n })),\r\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleDeclaration }, r),\r\n })),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Font }, p),\r\n })),\r\n selectionCb: (p) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Selection }, p),\r\n }));\r\n },\r\n blockClass,\r\n ignoreClass,\r\n maskTextClass,\r\n maskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n processedNodeManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit(wrapEvent({\r\n type: EventType.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n })),\r\n }))) || [],\r\n }, hooks);\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n try {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n recording = true;\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.DomContentLoaded,\r\n data: {},\r\n }));\r\n if (recordAfter === 'DOMContentLoaded')\r\n init();\r\n }));\r\n handlers.push(on('load', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Load,\r\n data: {},\r\n }));\r\n if (recordAfter === 'load')\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n processedNodeManager.destroy();\r\n recording = false;\r\n unregisterErrorHandler();\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nrecord.addCustomEvent = (tag, payload) => {\r\n if (!recording) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n }));\r\n};\r\nrecord.freezePage = () => {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n};\r\nrecord.takeFullSnapshot = (isCheckout) => {\r\n if (!recording) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n takeFullSnapshot(isCheckout);\r\n};\r\nrecord.mirror = mirror;\n\nexport { record as default };\n","import { __rest, __awaiter } from './../../../../../../ext/tslib/tslib.es6.js';\nimport { isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport WorkerFactory from '../../../../../../_virtual/image-bitmap-data-url-worker.js';\n\nclass CanvasManager {\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, recordCanvas, dataURLOptions, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\r\n dataURLOptions,\r\n });\r\n }\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const snapshotInProgressMap = new Map();\r\n const worker = new WorkerFactory();\r\n worker.onmessage = (e) => {\r\n const { id } = e.data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in e.data))\r\n return;\r\n const { base64, type, width, height } = e.data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = () => {\r\n const matchedCanvas = [];\r\n win.document.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas()\r\n .forEach((canvas) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (((_a = context === null || context === void 0 ? void 0 : context.getContextAttributes()) === null || _a === void 0 ? void 0 : _a.preserveDrawingBuffer) === false) {\r\n context === null || context === void 0 ? void 0 : context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n const bitmap = yield createImageBitmap(canvas);\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: canvas.width,\r\n height: canvas.height,\r\n dataURLOptions: options.dataURLOptions,\r\n }, [bitmap]);\r\n }));\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const rest = __rest(value, [\"type\"]);\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nexport { CanvasManager };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { serializeArgs } from './serialize-args.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\r\n const handlers = [];\r\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n for (const prop of props2D) {\r\n try {\r\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n return function (...args) {\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n setTimeout(() => {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: recordArgs,\r\n });\r\n }, 0);\r\n }\r\n return original.apply(this, args);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvas2DMutationObserver as default };\n","import { getCssRuleString } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n const rules = Array.from(sheet.rules || CSSRule);\r\n styles.push({\r\n styleId,\r\n rules: rules.map((r, index) => {\r\n return {\r\n rule: getCssRuleString(r),\r\n index,\r\n };\r\n }),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nexport { StylesheetManager };\n","class ProcessedNodeManager {\r\n constructor() {\r\n this.nodeMap = new WeakMap();\r\n this.loop = true;\r\n this.periodicallyClear();\r\n }\r\n periodicallyClear() {\r\n requestAnimationFrame(() => {\r\n this.clear();\r\n if (this.loop)\r\n this.periodicallyClear();\r\n });\r\n }\r\n inOtherBuffer(node, thisBuffer) {\r\n const buffers = this.nodeMap.get(node);\r\n return (buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer));\r\n }\r\n add(node, buffer) {\r\n this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\r\n }\r\n clear() {\r\n this.nodeMap = new WeakMap();\r\n }\r\n destroy() {\r\n this.loop = false;\r\n }\r\n}\n\nexport { ProcessedNodeManager as default };\n","class StackFrame {\r\n constructor(obj) {\r\n this.fileName = obj.fileName || '';\r\n this.functionName = obj.functionName || '';\r\n this.lineNumber = obj.lineNumber;\r\n this.columnNumber = obj.columnNumber;\r\n }\r\n toString() {\r\n const lineNumber = this.lineNumber || '';\r\n const columnNumber = this.columnNumber || '';\r\n if (this.functionName)\r\n return `${this.functionName} (${this.fileName}:${lineNumber}:${columnNumber})`;\r\n return `${this.fileName}:${lineNumber}:${columnNumber}`;\r\n }\r\n}\r\nconst FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\r\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\r\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\r\nconst ErrorStackParser = {\r\n parse: function (error) {\r\n if (!error) {\r\n return [];\r\n }\r\n if (typeof error.stacktrace !== 'undefined' ||\r\n typeof error['opera#sourceloc'] !== 'undefined') {\r\n return this.parseOpera(error);\r\n }\r\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\r\n return this.parseV8OrIE(error);\r\n }\r\n else if (error.stack) {\r\n return this.parseFFOrSafari(error);\r\n }\r\n else {\r\n throw new Error('Cannot parse given Error object');\r\n }\r\n },\r\n extractLocation: function (urlLike) {\r\n if (urlLike.indexOf(':') === -1) {\r\n return [urlLike];\r\n }\r\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\r\n const parts = regExp.exec(urlLike.replace(/[()]/g, ''));\r\n if (!parts)\r\n throw new Error(`Cannot parse given url: ${urlLike}`);\r\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\r\n },\r\n parseV8OrIE: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return !!line.match(CHROME_IE_STACK_REGEXP);\r\n }, this);\r\n return filtered.map(function (line) {\r\n if (line.indexOf('(eval ') > -1) {\r\n line = line\r\n .replace(/eval code/g, 'eval')\r\n .replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\r\n }\r\n let sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\r\n const location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\r\n sanitizedLine = location\r\n ? sanitizedLine.replace(location[0], '')\r\n : sanitizedLine;\r\n const tokens = sanitizedLine.split(/\\s+/).slice(1);\r\n const locationParts = this.extractLocation(location ? location[1] : tokens.pop());\r\n const functionName = tokens.join(' ') || undefined;\r\n const fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1\r\n ? undefined\r\n : locationParts[0];\r\n return new StackFrame({\r\n functionName,\r\n fileName,\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }, this);\r\n },\r\n parseFFOrSafari: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\r\n }, this);\r\n return filtered.map(function (line) {\r\n if (line.indexOf(' > eval') > -1) {\r\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\r\n }\r\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\r\n return new StackFrame({\r\n functionName: line,\r\n });\r\n }\r\n else {\r\n const functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\r\n const matches = line.match(functionNameRegex);\r\n const functionName = matches && matches[1] ? matches[1] : undefined;\r\n const locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\r\n return new StackFrame({\r\n functionName,\r\n fileName: locationParts[0],\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }\r\n }, this);\r\n },\r\n parseOpera: function (e) {\r\n if (!e.stacktrace ||\r\n (e.message.indexOf('\\n') > -1 &&\r\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\r\n return this.parseOpera9(e);\r\n }\r\n else if (!e.stack) {\r\n return this.parseOpera10(e);\r\n }\r\n else {\r\n return this.parseOpera11(e);\r\n }\r\n },\r\n parseOpera9: function (e) {\r\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\r\n const lines = e.message.split('\\n');\r\n const result = [];\r\n for (let i = 2, len = lines.length; i < len; i += 2) {\r\n const match = lineRE.exec(lines[i]);\r\n if (match) {\r\n result.push(new StackFrame({\r\n fileName: match[2],\r\n lineNumber: parseFloat(match[1]),\r\n }));\r\n }\r\n }\r\n return result;\r\n },\r\n parseOpera10: function (e) {\r\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\r\n const lines = e.stacktrace.split('\\n');\r\n const result = [];\r\n for (let i = 0, len = lines.length; i < len; i += 2) {\r\n const match = lineRE.exec(lines[i]);\r\n if (match) {\r\n result.push(new StackFrame({\r\n functionName: match[3] || undefined,\r\n fileName: match[2],\r\n lineNumber: parseFloat(match[1]),\r\n }));\r\n }\r\n }\r\n return result;\r\n },\r\n parseOpera11: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return (!!line.match(FIREFOX_SAFARI_STACK_REGEXP) &&\r\n !line.match(/^Error created at/));\r\n }, this);\r\n return filtered.map(function (line) {\r\n const tokens = line.split('@');\r\n const locationParts = this.extractLocation(tokens.pop());\r\n const functionCall = tokens.shift() || '';\r\n const functionName = functionCall\r\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\r\n .replace(/\\([^)]*\\)/g, '') || undefined;\r\n return new StackFrame({\r\n functionName,\r\n fileName: locationParts[0],\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }, this);\r\n },\r\n};\n\nexport { ErrorStackParser, StackFrame };\n","function pathToSelector(node) {\r\n if (!node || !node.outerHTML) {\r\n return '';\r\n }\r\n let path = '';\r\n while (node.parentElement) {\r\n let name = node.localName;\r\n if (!name) {\r\n break;\r\n }\r\n name = name.toLowerCase();\r\n const parent = node.parentElement;\r\n const domSiblings = [];\r\n if (parent.children && parent.children.length > 0) {\r\n for (let i = 0; i < parent.children.length; i++) {\r\n const sibling = parent.children[i];\r\n if (sibling.localName && sibling.localName.toLowerCase) {\r\n if (sibling.localName.toLowerCase() === name) {\r\n domSiblings.push(sibling);\r\n }\r\n }\r\n }\r\n }\r\n if (domSiblings.length > 1) {\r\n name += `:eq(${domSiblings.indexOf(node)})`;\r\n }\r\n path = name + (path ? '>' + path : '');\r\n node = parent;\r\n }\r\n return path;\r\n}\r\nfunction isObject(obj) {\r\n return Object.prototype.toString.call(obj) === '[object Object]';\r\n}\r\nfunction isObjTooDeep(obj, limit) {\r\n if (limit === 0) {\r\n return true;\r\n }\r\n const keys = Object.keys(obj);\r\n for (const key of keys) {\r\n if (isObject(obj[key]) &&\r\n isObjTooDeep(obj[key], limit - 1)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction stringify(obj, stringifyOptions) {\r\n const options = {\r\n numOfKeysLimit: 50,\r\n depthOfLimit: 4,\r\n };\r\n Object.assign(options, stringifyOptions);\r\n const stack = [];\r\n const keys = [];\r\n return JSON.stringify(obj, function (key, value) {\r\n if (stack.length > 0) {\r\n const thisPos = stack.indexOf(this);\r\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\r\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\r\n if (~stack.indexOf(value)) {\r\n if (stack[0] === value) {\r\n value = '[Circular ~]';\r\n }\r\n else {\r\n value =\r\n '[Circular ~.' +\r\n keys.slice(0, stack.indexOf(value)).join('.') +\r\n ']';\r\n }\r\n }\r\n }\r\n else {\r\n stack.push(value);\r\n }\r\n if (value === null)\r\n return value;\r\n if (value === undefined)\r\n return 'undefined';\r\n if (shouldIgnore(value)) {\r\n return toString(value);\r\n }\r\n if (value instanceof Event) {\r\n const eventResult = {};\r\n for (const eventKey in value) {\r\n const eventValue = value[eventKey];\r\n if (Array.isArray(eventValue)) {\r\n eventResult[eventKey] = pathToSelector((eventValue.length ? eventValue[0] : null));\r\n }\r\n else {\r\n eventResult[eventKey] = eventValue;\r\n }\r\n }\r\n return eventResult;\r\n }\r\n else if (value instanceof Node) {\r\n if (value instanceof HTMLElement) {\r\n return value ? value.outerHTML : '';\r\n }\r\n return value.nodeName;\r\n }\r\n else if (value instanceof Error) {\r\n return value.stack\r\n ? value.stack + '\\nEnd of stack for Error object'\r\n : value.name + ': ' + value.message;\r\n }\r\n return value;\r\n });\r\n function shouldIgnore(_obj) {\r\n if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {\r\n return true;\r\n }\r\n if (typeof _obj === 'function') {\r\n return true;\r\n }\r\n if (isObject(_obj) &&\r\n isObjTooDeep(_obj, options.depthOfLimit)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n function toString(_obj) {\r\n let str = _obj.toString();\r\n if (options.stringLengthLimit && str.length > options.stringLengthLimit) {\r\n str = `${str.slice(0, options.stringLengthLimit)}...`;\r\n }\r\n return str;\r\n }\r\n}\n\nexport { stringify };\n","import { patch } from '../../../utils.js';\nimport { ErrorStackParser } from './error-stack-parser.js';\nimport { stringify } from './stringify.js';\n\nconst defaultLogOptions = {\r\n level: [\r\n 'assert',\r\n 'clear',\r\n 'count',\r\n 'countReset',\r\n 'debug',\r\n 'dir',\r\n 'dirxml',\r\n 'error',\r\n 'group',\r\n 'groupCollapsed',\r\n 'groupEnd',\r\n 'info',\r\n 'log',\r\n 'table',\r\n 'time',\r\n 'timeEnd',\r\n 'timeLog',\r\n 'trace',\r\n 'warn',\r\n ],\r\n lengthThreshold: 1000,\r\n logger: 'console',\r\n};\r\nfunction initLogObserver(cb, win, options) {\r\n const logOptions = (options ? Object.assign({}, defaultLogOptions, options) : defaultLogOptions);\r\n const loggerType = logOptions.logger;\r\n if (!loggerType) {\r\n return () => {\r\n };\r\n }\r\n let logger;\r\n if (typeof loggerType === 'string') {\r\n logger = win[loggerType];\r\n }\r\n else {\r\n logger = loggerType;\r\n }\r\n let logCount = 0;\r\n let inStack = false;\r\n const cancelHandlers = [];\r\n if (logOptions.level.includes('error')) {\r\n const errorHandler = (event) => {\r\n const message = event.message, error = event.error;\r\n const trace = ErrorStackParser.parse(error).map((stackFrame) => stackFrame.toString());\r\n const payload = [stringify(message, logOptions.stringifyOptions)];\r\n cb({\r\n level: 'error',\r\n trace,\r\n payload,\r\n });\r\n };\r\n win.addEventListener('error', errorHandler);\r\n cancelHandlers.push(() => {\r\n win.removeEventListener('error', errorHandler);\r\n });\r\n const unhandledrejectionHandler = (event) => {\r\n let error;\r\n let payload;\r\n if (event.reason instanceof Error) {\r\n error = event.reason;\r\n payload = [\r\n stringify(`Uncaught (in promise) ${error.name}: ${error.message}`, logOptions.stringifyOptions),\r\n ];\r\n }\r\n else {\r\n error = new Error();\r\n payload = [\r\n stringify('Uncaught (in promise)', logOptions.stringifyOptions),\r\n stringify(event.reason, logOptions.stringifyOptions),\r\n ];\r\n }\r\n const trace = ErrorStackParser.parse(error).map((stackFrame) => stackFrame.toString());\r\n cb({\r\n level: 'error',\r\n trace,\r\n payload,\r\n });\r\n };\r\n win.addEventListener('unhandledrejection', unhandledrejectionHandler);\r\n cancelHandlers.push(() => {\r\n win.removeEventListener('unhandledrejection', unhandledrejectionHandler);\r\n });\r\n }\r\n for (const levelType of logOptions.level) {\r\n cancelHandlers.push(replace(logger, levelType));\r\n }\r\n return () => {\r\n cancelHandlers.forEach((h) => h());\r\n };\r\n function replace(_logger, level) {\r\n if (!_logger[level]) {\r\n return () => {\r\n };\r\n }\r\n return patch(_logger, level, (original) => {\r\n return (...args) => {\r\n original.apply(this, args);\r\n if (inStack) {\r\n return;\r\n }\r\n inStack = true;\r\n try {\r\n const trace = ErrorStackParser.parse(new Error())\r\n .map((stackFrame) => stackFrame.toString())\r\n .splice(1);\r\n const payload = args.map((s) => stringify(s, logOptions.stringifyOptions));\r\n logCount++;\r\n if (logCount < logOptions.lengthThreshold) {\r\n cb({\r\n level,\r\n trace,\r\n payload,\r\n });\r\n }\r\n else if (logCount === logOptions.lengthThreshold) {\r\n cb({\r\n level: 'warn',\r\n trace: [],\r\n payload: [\r\n stringify('The number of log records reached the threshold.'),\r\n ],\r\n });\r\n }\r\n }\r\n catch (error) {\r\n original('rrweb logger error:', error, ...args);\r\n }\r\n finally {\r\n inStack = false;\r\n }\r\n };\r\n });\r\n }\r\n}\r\nconst PLUGIN_NAME = 'rrweb/console@1';\r\nconst getRecordConsolePlugin = (options) => ({\r\n name: PLUGIN_NAME,\r\n observer: initLogObserver,\r\n options: options,\r\n});\n\nexport { PLUGIN_NAME, getRecordConsolePlugin };\n","import { version } from 'rrweb/package.json'\n\n// Same as loader-globals.ts except includes rrweb2 scripts.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport rrwebRecord from 'rrweb/es/rrweb/packages/rrweb/src/record'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { getRecordConsolePlugin } from 'rrweb/es/rrweb/packages/rrweb/src/plugins/console/record'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\n\nconst win: Window & typeof globalThis = typeof window !== 'undefined' ? window : ({} as typeof window)\n\n;(win as any).rrweb = { record: rrwebRecord, version: 'v2', rrwebVersion: version }\n;(win as any).rrwebConsoleRecord = { getRecordConsolePlugin }\n\nexport default rrwebRecord\n"],"names":["NodeType","isShadowRoot","n","host","Boolean","shadowRoot","isNativeShadowDom","Object","prototype","toString","call","getCssRulesString","s","rules","cssRules","cssText","Array","from","map","getCssRuleString","join","includes","replace","error","rule","cssStringified","isCSSImportRule","styleSheet","_a","Mirror","this","idNodeMap","Map","nodeMetaMap","WeakMap","getId","id","getMeta","getNode","get","getIds","keys","removeNodeFromMap","_this","childNodes","forEach","childNode","has","hasNode","node","add","meta","set","oldNode","reset","maskInputValue","element","maskInputOptions","tagName","type","value","maskInputFn","text","actualType","toLowerCase","repeat","length","ORIGINAL_ATTRIBUTE_NAME","getInputType","hasAttribute","canvasService","canvasCtx","_id","tagNameRegex","RegExp","IGNORED_NODE","genId","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","absoluteToStylesheet","href","origin","quote1","path1","quote2","path2","path3","url","filePath","maybeQuote","test","concat","indexOf","split","slice","stack","parts","pop","_i","parts_1","part","push","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","doc","attributeValue","trim","a","createElement","isSVGElement","el","ownerSVGElement","getHref","document","transformAttribute","name","pos","collectCharacters","regEx","chars","match","exec","substring","output","descriptorsStr","inParens","c","charAt","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","regex","checkAncestors","nodeType","ELEMENT_NODE","parentNode","eIndex","classList","className","needMaskingText","maskTextClass","maskTextSelector","parentElement","contains","closest","matches","e","serializeNode","options","mirror","blockClass","blockSelector","inlineStylesheet","maskTextFn","_b","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","_c","newlyAddedElement","rootId","docId","undefined","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","attributes","len","i","attr","stylesheet","styleSheets","find","rel","_cssText","sheet","innerText","textContent","checked","selected","__context","canvas","ctx","getContext","x","width","y","height","getImageData","originalGetImageData","Uint32Array","Math","min","data","buffer","some","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image_1","oldValue_1","crossOrigin","recordInlineImage_1","removeEventListener","naturalWidth","naturalHeight","drawImage","err","console","warn","currentSrc","removeAttribute","complete","addEventListener","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","_d","getBoundingClientRect","class","rr_width","rr_height","src","contentDocument","rr_src","Element","isSVG","serializeElementNode","TEXT_NODE","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","_e","_f","onSerialize","onIframeLoad","_g","iframeLoadTimeout","onStylesheetLoad","_h","stylesheetLoadTimeout","_j","_k","_l","preserveWhiteSpace","_serializedNode","sn","comment","script","as","endsWith","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","assign","recordChild","isShadowHost","headWhitespace","bypassOptions","_m","serializedChildNode","isElement","_o","_p","isShadow","iframeEl","listener","win","contentWindow","readyState","fired","blankUrl","location","setTimeout","timer_1","clearTimeout","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","timer","onceStylesheetLoaded","serializedLinkNode","on","fn","target","capture","passive","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","func","wait","timeout","previous","_len","arguments","args","_key","now","Date","leading","remaining","context","apply","trailing","hookSetter","key","d","isRevoked","window","original","getOwnPropertyDescriptor","defineProperty","patch","source","replacement","wrapped","defineProperties","__rrweb_original__","enumerable","getWindowScroll","left","scrollingElement","pageXOffset","documentElement","body","top","pageYOffset","getWindowHeight","innerHeight","clientHeight","getWindowWidth","innerWidth","clientWidth","isBlocked","isIgnored","isAncestorRemoved","legacy_isTouchEvent","event","changedTouches","isSerializedIframe","nodeName","isSerializedStylesheet","getAttribute","hasShadowRoot","Proxy","Reflect","prop","receiver","StyleSheetMirror","_classCallCheck","styleIDMap","idStyleMap","newId","getShadowHost","shadowHost","getRootNode","Node","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","ownerDocument","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","isNodeInLinkedList","errorHandler","DoubleLinkedList","head","position","Error","current","index","next","__ln","moveKey","parentId","MutationBuffer","frozen","locked","texts","removes","mapRemoves","movedMap","addedSet","Set","movedSet","droppedSet","processMutations","mutations","processMutation","emit","adds","addList","getNextId","ns","nextId","pushAdd","addNode","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","shift","_step","_iterator","_createForOfIteratorHelper","done","isParentRemoved","f","_step2","_iterator2","isAncestorInSet","candidate","_node","unhandledNode","removeNode","payload","filter","attribute","mutationCb","m","oldValue","attributeName","item","setAttribute","old","style","styleObj","_Array$from","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","_i2","_Array$from2","addedNodes","genAdds","removedNodes","nodeId","isSerialized","deepDelete","processedNodeManager","inOtherBuffer","targetId","childN","_this2","canvasManager","freeze","unfreeze","lock","unlock","addsSet","_isParentRemoved","r","size","_isAncestorInSet","registerErrorHandler","handler","unregisterErrorHandler","callbackWrapper","cb","mutationBuffers","getEventTarget","path","composedPath","initMutationObserver","rootEl","mutationBuffer","init","mutationObserverCtor","MutationObserver","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","observer","bind","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initMouseInteractionObserver","_ref3","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","Number","isNaN","eventKey","eventName","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","startsWith","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","h","initScrollObserver","_ref4","scrollCb","evt","defaultView","scrollLeftTop","scroll","wrapEventWithUserTriggeredFlag","v","enable","userTriggered","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","unshift","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","styleId","ownerNode","initAdoptedStyleSheetObserver","hostId","patchTarget","ShadowRoot","originalPropertyDescriptor","configurable","sheets","result","adoptStyleSheets","initObservers","o","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","mutation","mousemove","viewportResize","input","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","mergeHooks","lastH","lastW","mutationObserver","mousemoveHandler","_ref","timeBaseline","threshold","callbackThreshold","mousemoveCallback","positions","wrappedCb","totalOffset","p","timeOffset","updatePosition","_ref2","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","inputHandler","_ref6","ignoreClass","userTriggeredOnInput","eventHandler","isTrusted","isChecked","cbWithDedup","querySelectorAll","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","_toConsumableArray","initInputObserver","mediaInteractionHandler","_ref16","volume","muted","playbackRate","media","initMediaInteractionObserver","styleSheetObserver","_ref7","_ref8","CSSStyleSheet","insertRule","thisArg","argumentsList","_argumentsList","_slicedToArray","replaceSync","deleteRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","entries","_ref9","_ref10","typeKey","_argumentsList5","_ref11","_ref12","initStyleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","_ref14","_ref15","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","_argumentsList7","priority","_getIdAndStyleId7","removeProperty","_getIdAndStyleId8","remove","initStyleDeclarationObserver","fontObserver","collectFonts","_ref17","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","JSON","stringify","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","param","collapsed","updateSelection","getSelection","isCollapsed","ranges","count","rangeCount","range","getRangeAt","startContainer","startOffset","endContainer","endOffset","start","end","initSelectionObserver","pluginHandlers","plugins","plugin","callback","b","disconnect","CrossOriginIframeMirror","generateIdFn","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","ids","getRemoteId","IframeManager","iframes","crossOriginIframeMap","crossOriginIframeMirror","crossOriginIframeRootIdMap","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","generateId","handleMessage","loadListener","isAttachIframe","adoptedStyleSheets","message","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","replaceIdOnNode","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","Input","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","obj","isArray","child","_this3","ShadowDomManager","shadowDoms","WeakSet","restoreHandlers","patchAttachShadow","iframeElement","manager","option","__awaiter","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","then","lookup","charCodeAt","encode","arraybuffer","bytes","base64","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","_typeof","list","ctor","contextMap","variableListFor","constructor","serializeArg","arg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","values","ArrayBuffer","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","contextType","patchGLPrototype","getOwnPropertyNames","_loop","recordArgs","hookHandler","setter","createURL","sourcemapArg","enableUnicodeArg","sourcemap","enableUnicode","binaryString","atob","binaryView","String","fromCharCode","decodeBase64","blob","Blob","URL","createObjectURL","takeFullSnapshot","WorkerFactory","Worker","CanvasManager","pendingCanvasMutations","rafStamps","latestId","invokeId","_options$sampling","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","canvasContextReset","snapshotInProgressMap","worker","onmessage","commands","rafId","timeBetweenSnapshots","lastSnapshotTime","requestAnimationFrame","takeCanvasSnapshots","matchedCanvas","_regeneratorRuntime","mark","_callee","bitmap","wrap","_context","prev","abrupt","getContextAttributes","preserveDrawingBuffer","COLOR_BUFFER_BIT","createImageBitmap","sent","postMessage","stop","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","_this4","setLatestRAFTimestamp","_this5","flushPendingCanvasMutationFor","valuesWithType","rest","t","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","__rest","StylesheetManager","trackedLinkElements","adoptedStyleSheetCb","linkEl","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","ProcessedNodeManager","nodeMap","loop","periodicallyClear","thisBuffer","buffers","wrapEvent","recording","record","checkoutEveryNms","checkoutEveryNth","_options$blockClass","_options$blockSelecto","_options$ignoreClass","_options$maskTextClas","_options$maskTextSele","_options$inlineStyles","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","_options$dataURLOptio","mousemoveWait","_options$recordCanvas","_options$recordCrossO","recordAfter","_options$recordAfter","_options$userTriggere","_options$collectFonts","_options$inlineImages","_options$keepIframeSr","_options$ignoreCSSAtt","inEmittingFrame","parent","passEmitsToParent","lastFullSnapshotEvent","color","date","email","month","number","search","tel","time","week","textarea","select","password","NodeList","DOMTokenList","_len2","_key2","TypeError","polyfill","incrementalSnapshotCount","eventProcessor","isFrozen","buf","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","addLoadListener","destroy","addCustomEvent","tag","freezePage","StackFrame","fileName","functionName","lineNumber","columnNumber","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","ErrorStackParser","parse","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","line","sanitizedLine","tokens","locationParts","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","parseFloat","pathToSelector","outerHTML","localName","domSiblings","children","sibling","isObject","isObjTooDeep","limit","_keys","stringifyOptions","numOfKeysLimit","depthOfLimit","thisPos","splice","Infinity","_obj","shouldIgnore","str","stringLengthLimit","Event","eventResult","eventValue","HTMLElement","defaultLogOptions","level","lengthThreshold","logger","initLogObserver","logOptions","loggerType","logCount","inStack","cancelHandlers","trace","stackFrame","unhandledrejectionHandler","reason","levelType","_logger","rrweb","rrwebRecord","version","rrwebVersion","rrwebConsoleRecord","getRecordConsolePlugin"],"mappings":"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"}
1
+ {"version":3,"file":"recorder-v2.js","sources":["../node_modules/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/utils.js","../node_modules/rrweb/es/rrweb/packages/types/dist/types.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/error-handler.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../node_modules/rrweb/es/rrweb/ext/tslib/tslib.es6.js","../node_modules/rrweb/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js","../node_modules/rrweb/es/rrweb/_virtual/image-bitmap-data-url-worker.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/index.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/processed-node-manager.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/error-stack-parser.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/stringify.js","../node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/index.js","../src/loader-recorder-v2.ts"],"sourcesContent":["var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n var host = n === null || n === void 0 ? void 0 : n.host;\r\n return Boolean((host === null || host === void 0 ? void 0 : host.shadowRoot) === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction getCssRulesString(s) {\r\n try {\r\n var rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules).map(getCssRuleString).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction getCssRuleString(rule) {\r\n var cssStringified = rule.cssText;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n return cssStringified;\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nvar Mirror = (function () {\r\n function Mirror() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n Mirror.prototype.getId = function (n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n var id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n };\r\n Mirror.prototype.getNode = function (id) {\r\n return this.idNodeMap.get(id) || null;\r\n };\r\n Mirror.prototype.getIds = function () {\r\n return Array.from(this.idNodeMap.keys());\r\n };\r\n Mirror.prototype.getMeta = function (n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n };\r\n Mirror.prototype.removeNodeFromMap = function (n) {\r\n var _this = this;\r\n var id = this.getId(n);\r\n this.idNodeMap[\"delete\"](id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach(function (childNode) {\r\n return _this.removeNodeFromMap(childNode);\r\n });\r\n }\r\n };\r\n Mirror.prototype.has = function (id) {\r\n return this.idNodeMap.has(id);\r\n };\r\n Mirror.prototype.hasNode = function (node) {\r\n return this.nodeMetaMap.has(node);\r\n };\r\n Mirror.prototype.add = function (n, meta) {\r\n var id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n };\r\n Mirror.prototype.replace = function (id, n) {\r\n var oldNode = this.getNode(id);\r\n if (oldNode) {\r\n var meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n };\r\n Mirror.prototype.reset = function () {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n };\r\n return Mirror;\r\n}());\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction maskInputValue(_a) {\r\n var element = _a.element, maskInputOptions = _a.maskInputOptions, tagName = _a.tagName, type = _a.type, value = _a.value, maskInputFn = _a.maskInputFn;\r\n var text = value || '';\r\n var actualType = type && type.toLowerCase();\r\n if (maskInputOptions[tagName.toLowerCase()] ||\r\n (actualType && maskInputOptions[actualType])) {\r\n if (maskInputFn) {\r\n text = maskInputFn(text, element);\r\n }\r\n else {\r\n text = '*'.repeat(text.length);\r\n }\r\n }\r\n return text;\r\n}\r\nvar ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n var ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n var chunkSize = 50;\r\n for (var x = 0; x < canvas.width; x += chunkSize) {\r\n for (var y = 0; y < canvas.height; y += chunkSize) {\r\n var getImageData = ctx.getImageData;\r\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n var pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some(function (pixel) { return pixel !== 0; }))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isNodeMetaEqual(a, b) {\r\n if (!a || !b || a.type !== b.type)\r\n return false;\r\n if (a.type === NodeType.Document)\r\n return a.compatMode === b.compatMode;\r\n else if (a.type === NodeType.DocumentType)\r\n return (a.name === b.name &&\r\n a.publicId === b.publicId &&\r\n a.systemId === b.systemId);\r\n else if (a.type === NodeType.Comment ||\r\n a.type === NodeType.Text ||\r\n a.type === NodeType.CDATA)\r\n return a.textContent === b.textContent;\r\n else if (a.type === NodeType.Element)\r\n return (a.tagName === b.tagName &&\r\n JSON.stringify(a.attributes) ===\r\n JSON.stringify(b.attributes) &&\r\n a.isSVG === b.isSVG &&\r\n a.needBlock === b.needBlock);\r\n return false;\r\n}\r\nfunction getInputType(element) {\r\n var type = element.type;\r\n return element.hasAttribute('data-rr-is-password')\r\n ? 'password'\r\n : type\r\n ?\r\n type.toLowerCase()\r\n : null;\r\n}\n\nvar _id = 1;\r\nvar tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nvar IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n var processedTagName = element.tagName.toLowerCase().trim();\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction stringifyStyleSheet(sheet) {\r\n return sheet.cssRules\r\n ? Array.from(sheet.cssRules)\r\n .map(function (rule) { return rule.cssText || ''; })\r\n .join('')\r\n : '';\r\n}\r\nfunction extractOrigin(url) {\r\n var origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nvar canvasService;\r\nvar canvasCtx;\r\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nvar URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\r\nvar URL_WWW_MATCH = /^www\\..*/i;\r\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, function (origin, quote1, path1, quote2, path2, path3) {\r\n var filePath = path1 || path2 || path3;\r\n var maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (filePath[0] === '/') {\r\n return \"url(\".concat(maybeQuote).concat(extractOrigin(href) + filePath).concat(maybeQuote, \")\");\r\n }\r\n var stack = href.split('/');\r\n var parts = filePath.split('/');\r\n stack.pop();\r\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\r\n var part = parts_1[_i];\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return \"url(\".concat(maybeQuote).concat(stack.join('/')).concat(maybeQuote, \")\");\r\n });\r\n}\r\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var pos = 0;\r\n function collectCharacters(regEx) {\r\n var chars;\r\n var match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n var output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n var url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n var descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n var inParens = false;\r\n while (true) {\r\n var c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n var a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value) {\r\n if (!value) {\r\n return value;\r\n }\r\n if (name === 'src' ||\r\n (name === 'href' && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset') {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style') {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n return value;\r\n}\r\nfunction ignoreAttribute(tagName, name, _value) {\r\n return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector) {\r\n try {\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (var eIndex = element.classList.length; eIndex--;) {\r\n var className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (node.nodeType !== node.ELEMENT_NODE) {\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n }\r\n for (var eIndex = node.classList.length; eIndex--;) {\r\n var className = node.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector) {\r\n try {\r\n var el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (typeof maskTextClass === 'string') {\r\n if (el.classList.contains(maskTextClass))\r\n return true;\r\n if (el.closest(\".\".concat(maskTextClass)))\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, maskTextClass, true))\r\n return true;\r\n }\r\n if (maskTextSelector) {\r\n if (el.matches(maskTextSelector))\r\n return true;\r\n if (el.closest(maskTextSelector))\r\n return true;\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n var win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n var fired = false;\r\n var readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n var timer_1 = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', function () {\r\n clearTimeout(timer_1);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n var blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n var fired = false;\r\n var styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n var timer = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', function () {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c;\r\n var rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: []\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId: rootId\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc: doc,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement,\r\n rootId: rootId\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n maskTextFn: maskTextFn,\r\n rootId: rootId\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId: rootId\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId: rootId\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n var docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n var _a;\r\n var maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, maskTextFn = options.maskTextFn, rootId = options.rootId;\r\n var parentTagName = n.parentNode && n.parentNode.tagName;\r\n var textContent = n.textContent;\r\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n var isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\r\n textContent = stringifyStyleSheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot get CSS styles from text's parentNode. Error: \".concat(err), n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n if (!isStyle &&\r\n !isScript &&\r\n textContent &&\r\n needMaskingText(n, maskTextClass, maskTextSelector)) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle: isStyle,\r\n rootId: rootId\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c, rootId = options.rootId;\r\n var needBlock = _isBlockedElement(n, blockClass, blockSelector);\r\n var tagName = getValidTagName(n);\r\n var attributes = {};\r\n var len = n.attributes.length;\r\n for (var i = 0; i < len; i++) {\r\n var attr = n.attributes[i];\r\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\r\n attributes[attr.name] = transformAttribute(doc, tagName, attr.name, attr.value);\r\n }\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n var stylesheet = Array.from(doc.styleSheets).find(function (s) {\r\n return s.href === n.href;\r\n });\r\n var cssText = null;\r\n if (stylesheet) {\r\n cssText = getCssRulesString(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n var cssText = getCssRulesString(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\r\n var value = n.value;\r\n var checked = n.checked;\r\n if (attributes.type !== 'radio' &&\r\n attributes.type !== 'checkbox' &&\r\n attributes.type !== 'submit' &&\r\n attributes.type !== 'button' &&\r\n value) {\r\n var type = getInputType(n);\r\n attributes.value = maskInputValue({\r\n element: n,\r\n type: type,\r\n tagName: tagName,\r\n value: value,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn\r\n });\r\n }\r\n else if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n var canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n var blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n var image_1 = n;\r\n var oldValue_1 = image_1.crossOrigin;\r\n image_1.crossOrigin = 'anonymous';\r\n var recordInlineImage_1 = function () {\r\n image_1.removeEventListener('load', recordInlineImage_1);\r\n try {\r\n canvasService.width = image_1.naturalWidth;\r\n canvasService.height = image_1.naturalHeight;\r\n canvasCtx.drawImage(image_1, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot inline img src=\".concat(image_1.currentSrc, \"! Error: \").concat(err));\r\n }\r\n oldValue_1\r\n ? (attributes.crossOrigin = oldValue_1)\r\n : image_1.removeAttribute('crossorigin');\r\n };\r\n if (image_1.complete && image_1.naturalWidth !== 0)\r\n recordInlineImage_1();\r\n else\r\n image_1.addEventListener('load', recordInlineImage_1);\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n attributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n attributes.rr_mediaCurrentTime = n.currentTime;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n var _d = n.getBoundingClientRect(), width = _d.width, height = _d.height;\r\n attributes = {\r\n \"class\": attributes[\"class\"],\r\n rr_width: \"\".concat(width, \"px\"),\r\n rr_height: \"\".concat(height, \"px\")\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName: tagName,\r\n attributes: attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock: needBlock,\r\n rootId: rootId\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined || maybeAttr === null) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n (sn.attributes.rel === 'preload' ||\r\n sn.attributes.rel === 'modulepreload') &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n sn.attributes.href.endsWith('.js')))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.inlineStylesheet, inlineStylesheet = _b === void 0 ? true : _b, _c = options.maskInputOptions, maskInputOptions = _c === void 0 ? {} : _c, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _d = options.dataURLOptions, dataURLOptions = _d === void 0 ? {} : _d, _e = options.inlineImages, inlineImages = _e === void 0 ? false : _e, _f = options.recordCanvas, recordCanvas = _f === void 0 ? false : _f, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _g = options.iframeLoadTimeout, iframeLoadTimeout = _g === void 0 ? 5000 : _g, onStylesheetLoad = options.onStylesheetLoad, _h = options.stylesheetLoadTimeout, stylesheetLoadTimeout = _h === void 0 ? 5000 : _h, _j = options.keepIframeSrcFn, keepIframeSrcFn = _j === void 0 ? function () { return false; } : _j, _k = options.newlyAddedElement, newlyAddedElement = _k === void 0 ? false : _k;\r\n var _l = options.preserveWhiteSpace, preserveWhiteSpace = _l === void 0 ? true : _l;\r\n var _serializedNode = serializeNode(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n var id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n var serializedNode = Object.assign(_serializedNode, { id: id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n var recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n var shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n var bypassOptions = {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: skipChild,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n };\r\n for (var _i = 0, _m = Array.from(n.childNodes); _i < _m.length; _i++) {\r\n var childN = _m[_i];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (var _o = 0, _p = Array.from(n.shadowRoot.childNodes); _o < _p.length; _o++) {\r\n var childN = _p[_o];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, function () {\r\n var iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n serializedNode.attributes.rel === 'stylesheet') {\r\n onceStylesheetLoaded(n, function () {\r\n if (onStylesheetLoad) {\r\n var serializedLinkNode = serializeNodeWithId(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n var _a = options || {}, _b = _a.mirror, mirror = _b === void 0 ? new Mirror() : _b, _c = _a.blockClass, blockClass = _c === void 0 ? 'rr-block' : _c, _d = _a.blockSelector, blockSelector = _d === void 0 ? null : _d, _e = _a.maskTextClass, maskTextClass = _e === void 0 ? 'rr-mask' : _e, _f = _a.maskTextSelector, maskTextSelector = _f === void 0 ? null : _f, _g = _a.inlineStylesheet, inlineStylesheet = _g === void 0 ? true : _g, _h = _a.inlineImages, inlineImages = _h === void 0 ? false : _h, _j = _a.recordCanvas, recordCanvas = _j === void 0 ? false : _j, _k = _a.maskAllInputs, maskAllInputs = _k === void 0 ? false : _k, maskTextFn = _a.maskTextFn, maskInputFn = _a.maskInputFn, _l = _a.slimDOM, slimDOM = _l === void 0 ? false : _l, dataURLOptions = _a.dataURLOptions, preserveWhiteSpace = _a.preserveWhiteSpace, onSerialize = _a.onSerialize, onIframeLoad = _a.onIframeLoad, iframeLoadTimeout = _a.iframeLoadTimeout, onStylesheetLoad = _a.onStylesheetLoad, stylesheetLoadTimeout = _a.stylesheetLoadTimeout, _m = _a.keepIframeSrcFn, keepIframeSrcFn = _m === void 0 ? function () { return false; } : _m;\r\n var maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true\r\n }\r\n : maskAllInputs === false\r\n ? {\r\n password: true\r\n }\r\n : maskAllInputs;\r\n var slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: false\r\n });\r\n}\r\n\nvar commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options) {\r\n if (options === void 0) { options = {}; }\r\n var lineno = 1;\r\n var column = 1;\r\n function updatePosition(str) {\r\n var lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n var i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n var start = { line: lineno, column: column };\r\n return function (node) {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n var Position = (function () {\r\n function Position(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column: column };\r\n this.source = options.source;\r\n }\r\n return Position;\r\n }());\r\n Position.prototype.content = css;\r\n var errorsList = [];\r\n function error(msg) {\r\n var err = new Error(\"\".concat(options.source || '', \":\").concat(lineno, \":\").concat(column, \": \").concat(msg));\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n var rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList\r\n }\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n var node;\r\n var rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node !== false) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n var m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n var str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules) {\r\n if (rules === void 0) { rules = []; }\r\n var c;\r\n while ((c = comment())) {\r\n if (c !== false) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n var pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n var i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n var str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str\r\n });\r\n }\r\n function selector() {\r\n var m = match(/^([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n return trim(m[0])\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function (m) {\r\n return m.replace(/,/g, '\\u200C');\r\n })\r\n .split(/\\s*(?![^(]*\\)),\\s*/)\r\n .map(function (s) {\r\n return s.replace(/\\u200C/g, ',');\r\n });\r\n }\r\n function declaration() {\r\n var pos = position();\r\n var propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n var prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(\"property missing ':'\");\r\n }\r\n var val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n var ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : ''\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n var decls = [];\r\n if (!open()) {\r\n return error(\"missing '{'\");\r\n }\r\n comments(decls);\r\n var decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(\"missing '}'\");\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n var m;\r\n var vals = [];\r\n var pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations()\r\n });\r\n }\r\n function atkeyframes() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n var name = m[1];\r\n if (!open()) {\r\n return error(\"@keyframes missing '{'\");\r\n }\r\n var frame;\r\n var frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@keyframes missing '}'\");\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name: name,\r\n vendor: vendor,\r\n keyframes: frames\r\n });\r\n }\r\n function atsupports() {\r\n var pos = position();\r\n var m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var supports = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@supports missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@supports missing '}'\");\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports: supports,\r\n rules: style\r\n });\r\n }\r\n function athost() {\r\n var pos = position();\r\n var m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@host missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@host missing '}'\");\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style\r\n });\r\n }\r\n function atmedia() {\r\n var pos = position();\r\n var m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var media = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@media missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@media missing '}'\");\r\n }\r\n return pos({\r\n type: 'media',\r\n media: media,\r\n rules: style\r\n });\r\n }\r\n function atcustommedia() {\r\n var pos = position();\r\n var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2])\r\n });\r\n }\r\n function atpage() {\r\n var pos = position();\r\n var m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n var sel = selector() || [];\r\n if (!open()) {\r\n return error(\"@page missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@page missing '}'\");\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls\r\n });\r\n }\r\n function atdocument() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = trim(m[1]);\r\n var doc = trim(m[2]);\r\n if (!open()) {\r\n return error(\"@document missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@document missing '}'\");\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor: vendor,\r\n rules: style\r\n });\r\n }\r\n function atfontface() {\r\n var pos = position();\r\n var m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@font-face missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@font-face missing '}'\");\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls\r\n });\r\n }\r\n var atimport = _compileAtrule('import');\r\n var atcharset = _compileAtrule('charset');\r\n var atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n var re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return function () {\r\n var pos = position();\r\n var m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n var ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n var pos = position();\r\n var sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations()\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n var isNode = obj && typeof obj.type === 'string';\r\n var childParent = isNode ? obj : parent;\r\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\r\n var k = _a[_i];\r\n var value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach(function (v) {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null\r\n });\r\n }\r\n return obj;\r\n}\n\nvar tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient'\r\n};\r\nfunction getTagName(n) {\r\n var tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nvar HOVER_SELECTOR = /([^\\\\]):hover/;\r\nvar HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n var cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n var ast = parse(cssText, {\r\n silent: true\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n var selectors = [];\r\n ast.stylesheet.rules.forEach(function (rule) {\r\n if ('selectors' in rule) {\r\n (rule.selectors || []).forEach(function (selector) {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n });\r\n if (selectors.length === 0) {\r\n return cssText;\r\n }\r\n var selectorMatcher = new RegExp(selectors\r\n .filter(function (selector, index) { return selectors.indexOf(selector) === index; })\r\n .sort(function (a, b) { return b.length - a.length; })\r\n .map(function (selector) {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n var result = cssText.replace(selectorMatcher, function (selector) {\r\n var newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return \"\".concat(selector, \", \").concat(newSelector);\r\n });\r\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n var stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass: stylesWithHoverClass\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n var tagName = getTagName(n);\r\n var node_1;\r\n if (n.isSVG) {\r\n node_1 = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n node_1 = doc.createElement(tagName);\r\n }\r\n var specialAttributes = {};\r\n for (var name_1 in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name_1)) {\r\n continue;\r\n }\r\n var value = n.attributes[name_1];\r\n if (tagName === 'option' &&\r\n name_1 === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === null) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name_1.startsWith('rr_')) {\r\n specialAttributes[name_1] = value;\r\n continue;\r\n }\r\n var isTextarea = tagName === 'textarea' && name_1 === 'value';\r\n var isRemoteOrDynamicCss = tagName === 'style' && name_1 === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = addHoverClass(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n var child = doc.createTextNode(value);\r\n for (var _i = 0, _a = Array.from(node_1.childNodes); _i < _a.length; _i++) {\r\n var c = _a[_i];\r\n if (c.nodeType === node_1.TEXT_NODE) {\r\n node_1.removeChild(c);\r\n }\r\n }\r\n node_1.appendChild(child);\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name_1 === 'xlink:href') {\r\n node_1.setAttributeNS('http://www.w3.org/1999/xlink', name_1, value.toString());\r\n }\r\n else if (name_1 === 'onload' ||\r\n name_1 === 'onclick' ||\r\n name_1.substring(0, 7) === 'onmouse') {\r\n node_1.setAttribute('_' + name_1, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name_1 === 'content') {\r\n node_1.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n (n.attributes.rel === 'preload' ||\r\n n.attributes.rel === 'modulepreload') &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node_1.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node_1.setAttribute(name_1, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n var _loop_1 = function (name_2) {\r\n var value = specialAttributes[name_2];\r\n if (tagName === 'canvas' && name_2 === 'rr_dataURL') {\r\n var image_1 = document.createElement('img');\r\n image_1.onload = function () {\r\n var ctx = node_1.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image_1, 0, 0, image_1.width, image_1.height);\r\n }\r\n };\r\n image_1.src = value.toString();\r\n if (node_1.RRNodeType)\r\n node_1.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name_2 === 'rr_dataURL') {\r\n var image = node_1;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name_2 === 'rr_width') {\r\n node_1.style.width = value.toString();\r\n }\r\n else if (name_2 === 'rr_height') {\r\n node_1.style.height = value.toString();\r\n }\r\n else if (name_2 === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node_1.currentTime = value;\r\n }\r\n else if (name_2 === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node_1\r\n .play()[\"catch\"](function (e) { return console.warn('media playback error', e); });\r\n break;\r\n case 'paused':\r\n node_1.pause();\r\n break;\r\n }\r\n }\r\n };\r\n for (var name_2 in specialAttributes) {\r\n _loop_1(name_2);\r\n }\r\n if (n.isShadowHost) {\r\n if (!node_1.shadowRoot) {\r\n node_1.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node_1.shadowRoot.firstChild) {\r\n node_1.shadowRoot.removeChild(node_1.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node_1;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? addHoverClass(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n var doc = options.doc, mirror = options.mirror, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.hackCss, hackCss = _b === void 0 ? true : _b, afterAppend = options.afterAppend, cache = options.cache;\r\n if (mirror.has(n.id)) {\r\n var nodeInMirror = mirror.getNode(n.id);\r\n var meta = mirror.getMeta(nodeInMirror);\r\n if (isNodeMetaEqual(meta, n))\r\n return mirror.getNode(n.id);\r\n }\r\n var node = buildNode(n, { doc: doc, hackCss: hackCss, cache: cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n }\r\n else {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n var _loop_2 = function (childN) {\r\n var childNode = buildNodeWithSN(childN, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n return \"continue\";\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else if (n.type === NodeType.Document &&\r\n childN.type == NodeType.Element) {\r\n var htmlElement = childNode;\r\n var body_1 = null;\r\n htmlElement.childNodes.forEach(function (child) {\r\n if (child.nodeName === 'BODY')\r\n body_1 = child;\r\n });\r\n if (body_1) {\r\n htmlElement.removeChild(body_1);\r\n node.appendChild(childNode);\r\n htmlElement.appendChild(body_1);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n };\r\n for (var _i = 0, _c = n.childNodes; _i < _c.length; _i++) {\r\n var childN = _c[_i];\r\n _loop_2(childN);\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (var _i = 0, _a = mirror.getIds(); _i < _a.length; _i++) {\r\n var id = _a[_i];\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n var n = mirror.getMeta(node);\r\n if ((n === null || n === void 0 ? void 0 : n.type) !== NodeType.Element) {\r\n return;\r\n }\r\n var el = node;\r\n for (var name_3 in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name_3) &&\r\n name_3.startsWith('rr_'))) {\r\n continue;\r\n }\r\n var value = n.attributes[name_3];\r\n if (name_3 === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name_3 === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n var doc = options.doc, onVisit = options.onVisit, _a = options.hackCss, hackCss = _a === void 0 ? true : _a, afterAppend = options.afterAppend, cache = options.cache, _b = options.mirror, mirror = _b === void 0 ? new Mirror() : _b;\r\n var node = buildNodeWithSN(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n visit(mirror, function (visitedNode) {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, classMatchesRegex, createCache, createMirror, genId, getCssRuleString, getCssRulesString, getInputType, ignoreAttribute, is2DCanvasBlank, isCSSImportRule, isElement, isNativeShadowDom, isNodeMetaEqual, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, transformAttribute };\n","import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch (_a) {\r\n return () => {\r\n };\r\n }\r\n}\r\nfunction getWindowScroll(win) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const doc = win.document;\r\n return {\r\n left: doc.scrollingElement\r\n ? doc.scrollingElement.scrollLeft\r\n : win.pageXOffset !== undefined\r\n ? win.pageXOffset\r\n : (doc === null || doc === void 0 ? void 0 : doc.documentElement.scrollLeft) ||\r\n ((_b = (_a = doc === null || doc === void 0 ? void 0 : doc.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\r\n ((_c = doc === null || doc === void 0 ? void 0 : doc.body) === null || _c === void 0 ? void 0 : _c.scrollLeft) ||\r\n 0,\r\n top: doc.scrollingElement\r\n ? doc.scrollingElement.scrollTop\r\n : win.pageYOffset !== undefined\r\n ? win.pageYOffset\r\n : (doc === null || doc === void 0 ? void 0 : doc.documentElement.scrollTop) ||\r\n ((_e = (_d = doc === null || doc === void 0 ? void 0 : doc.body) === null || _d === void 0 ? void 0 : _d.parentElement) === null || _e === void 0 ? void 0 : _e.scrollTop) ||\r\n ((_f = doc === null || doc === void 0 ? void 0 : doc.body) === null || _f === void 0 ? void 0 : _f.scrollTop) ||\r\n 0,\r\n };\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (!el)\r\n return false;\r\n try {\r\n if (typeof blockClass === 'string') {\r\n if (el.classList.contains(blockClass))\r\n return true;\r\n if (checkAncestors && el.closest('.' + blockClass) !== null)\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, blockClass, checkAncestors))\r\n return true;\r\n }\r\n }\r\n catch (e) {\r\n }\r\n if (blockSelector) {\r\n if (el.matches(blockSelector))\r\n return true;\r\n if (checkAncestors && el.closest(blockSelector) !== null)\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction legacy_isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n const queueNodeMap = {};\r\n const putIntoMap = (m, parent) => {\r\n const nodeInTree = {\r\n value: m,\r\n parent,\r\n children: [],\r\n };\r\n queueNodeMap[m.node.id] = nodeInTree;\r\n return nodeInTree;\r\n };\r\n const queueNodeTrees = [];\r\n for (const mutation of queue) {\r\n const { nextId, parentId } = mutation;\r\n if (nextId && nextId in queueNodeMap) {\r\n const nextInTree = queueNodeMap[nextId];\r\n if (nextInTree.parent) {\r\n const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n }\r\n else {\r\n const idx = queueNodeTrees.indexOf(nextInTree);\r\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n }\r\n continue;\r\n }\r\n if (parentId in queueNodeMap) {\r\n const parentInTree = queueNodeMap[parentId];\r\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n continue;\r\n }\r\n queueNodeTrees.push(putIntoMap(mutation, null));\r\n }\r\n return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n cb(tree.value);\r\n for (let i = tree.children.length - 1; i >= 0; i--) {\r\n iterateResolveTree(tree.children[i], cb);\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n var _a, _b;\r\n const frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.frameElement;\r\n if (!frameElement || frameElement === rootIframe) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n relativeScale: 1,\r\n absoluteScale: 1,\r\n };\r\n }\r\n const frameDimension = frameElement.getBoundingClientRect();\r\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n return {\r\n x: frameDimension.x * frameBaseDimension.relativeScale +\r\n frameBaseDimension.x,\r\n y: frameDimension.y * frameBaseDimension.relativeScale +\r\n frameBaseDimension.y,\r\n relativeScale,\r\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n };\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n const rule = rules[position[0]];\r\n if (position.length === 1) {\r\n return rule;\r\n }\r\n else {\r\n return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n const positions = [...nestedIndex];\r\n const index = positions.pop();\r\n return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n const idSet = new Set();\r\n const uniqueMutations = [];\r\n for (let i = mutations.length; i--;) {\r\n const mutation = mutations[i];\r\n if (!idSet.has(mutation.id)) {\r\n uniqueMutations.push(mutation);\r\n idSet.add(mutation.id);\r\n }\r\n }\r\n return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n var _a;\r\n return (_a = this.styleIDMap.get(stylesheet)) !== null && _a !== void 0 ? _a : -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\r\nfunction getShadowHost(n) {\r\n var _a, _b;\r\n let shadowHost = null;\r\n if (((_b = (_a = n.getRootNode) === null || _a === void 0 ? void 0 : _a.call(n)) === null || _b === void 0 ? void 0 : _b.nodeType) === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n return shadowHost;\r\n}\r\nfunction getRootShadowHost(n) {\r\n let rootShadowHost = n;\r\n let shadowHost;\r\n while ((shadowHost = getShadowHost(rootShadowHost)))\r\n rootShadowHost = shadowHost;\r\n return rootShadowHost;\r\n}\r\nfunction shadowHostInDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n const shadowHost = getRootShadowHost(n);\r\n return doc.contains(shadowHost);\r\n}\r\nfunction inDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n return doc.contains(n) || shadowHostInDom(n);\r\n}\n\nexport { StyleSheetMirror, _mirror, getBaseDimension, getNestedRule, getPositionsAndIndex, getRootShadowHost, getShadowHost, getWindowHeight, getWindowScroll, getWindowWidth, hasShadowRoot, hookSetter, inDom, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, iterateResolveTree, legacy_isTouchEvent, on, patch, polyfill, queueToResolveTrees, shadowHostInDom, throttle, uniqueTextMutations };\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n 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 ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, PointerTypes, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, getInputType, maskInputValue, ignoreAttribute, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, hasShadowRoot, inDom, getShadowHost, isSerializedIframe, isSerializedStylesheet } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n if (!n.parentNode || !inDom(n)) {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(getShadowHost(n))\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskTextClass: this.maskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of this.movedSet) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of this.addedSet) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n for (let index = addList.length - 1; index >= 0; index--) {\r\n const _node = addList.get(index);\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => ({\r\n id: this.mirror.getId(text.node),\r\n value: text.value,\r\n }))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => ({\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attribute.attributes,\r\n }))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value)\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let attributeName = m.attributeName;\r\n let value = m.target.getAttribute(attributeName);\r\n if (attributeName === 'value') {\r\n const type = getInputType(target);\r\n value = maskInputValue({\r\n element: target,\r\n maskInputOptions: this.maskInputOptions,\r\n tagName: target.tagName,\r\n type,\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributes.find((a) => a.node === m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n };\r\n this.attributes.push(item);\r\n }\r\n if (attributeName === 'type' &&\r\n target.tagName === 'INPUT' &&\r\n (m.oldValue || '').toLowerCase() === 'password') {\r\n target.setAttribute('data-rr-is-password', 'true');\r\n }\r\n if (attributeName === 'style') {\r\n const old = this.doc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n if (item.attributes.style === undefined ||\r\n item.attributes.style === null) {\r\n item.attributes.style = {};\r\n }\r\n const styleObj = item.attributes.style;\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n styleObj[pname] = newValue;\r\n }\r\n else {\r\n styleObj[pname] = [newValue, newPriority];\r\n }\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n styleObj[pname] = false;\r\n }\r\n }\r\n }\r\n else if (!ignoreAttribute(target.tagName, attributeName)) {\r\n item.attributes[attributeName] = transformAttribute(this.doc, target.tagName, attributeName, value);\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\r\n return;\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.processedNodeManager.inOtherBuffer(n, this))\r\n return;\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, false)) {\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n if (hasShadowRoot(n)) {\r\n n.shadowRoot.childNodes.forEach((childN) => {\r\n this.processedNodeManager.add(childN, this);\r\n this.genAdds(childN, n);\r\n });\r\n }\r\n }\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'maskTextClass',\r\n 'maskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n 'processedNodeManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","let errorHandler;\r\nfunction registerErrorHandler(handler) {\r\n errorHandler = handler;\r\n}\r\nfunction unregisterErrorHandler() {\r\n errorHandler = undefined;\r\n}\r\nconst callbackWrapper = (cb) => {\r\n if (!errorHandler) {\r\n return cb;\r\n }\r\n const rrwebWrapped = ((...rest) => {\r\n try {\r\n return cb(...rest);\r\n }\r\n catch (error) {\r\n if (errorHandler && errorHandler(error) === true) {\r\n return;\r\n }\r\n throw error;\r\n }\r\n });\r\n return rrwebWrapped;\r\n};\n\nexport { callbackWrapper, registerErrorHandler, unregisterErrorHandler };\n","import { getInputType, maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowScroll, getWindowHeight, getWindowWidth, hookSetter, patch, legacy_isTouchEvent } from '../utils.js';\nimport { MouseInteractions, IncrementalSource, PointerTypes } from '../../../types/dist/types.js';\nimport MutationBuffer from './mutation.js';\nimport { callbackWrapper } from './error-handler.js';\n\nconst mutationBuffers = [];\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n return event.target;\r\n }\r\n catch (_a) {\r\n return event.target;\r\n }\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n var _a, _b;\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer)));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle(callbackWrapper((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }), callbackThreshold);\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = legacy_isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = Date.now();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: Date.now() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource.MouseMove\r\n : IncrementalSource.TouchMove);\r\n }), threshold, {\r\n trailing: false,\r\n }));\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n let currentPointerType = null;\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n let pointerType = null;\r\n let thisEventKey = eventKey;\r\n if ('pointerType' in event) {\r\n switch (event.pointerType) {\r\n case 'mouse':\r\n pointerType = PointerTypes.Mouse;\r\n break;\r\n case 'touch':\r\n pointerType = PointerTypes.Touch;\r\n break;\r\n case 'pen':\r\n pointerType = PointerTypes.Pen;\r\n break;\r\n }\r\n if (pointerType === PointerTypes.Touch) {\r\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\r\n thisEventKey = 'TouchStart';\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\r\n thisEventKey = 'TouchEnd';\r\n }\r\n }\r\n else if (pointerType === PointerTypes.Pen) ;\r\n }\r\n else if (legacy_isTouchEvent(event)) {\r\n pointerType = PointerTypes.Touch;\r\n }\r\n if (pointerType !== null) {\r\n currentPointerType = pointerType;\r\n if ((thisEventKey.startsWith('Touch') &&\r\n pointerType === PointerTypes.Touch) ||\r\n (thisEventKey.startsWith('Mouse') &&\r\n pointerType === PointerTypes.Mouse)) {\r\n pointerType = null;\r\n }\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\r\n pointerType = currentPointerType;\r\n currentPointerType = null;\r\n }\r\n const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n callbackWrapper(mouseInteractionCb)(Object.assign({ type: MouseInteractions[thisEventKey], id, x: clientX, y: clientY }, (pointerType !== null && { pointerType })));\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n let eventName = eventKey.toLowerCase();\r\n const handler = getHandler(eventKey);\r\n if (window.PointerEvent) {\r\n switch (MouseInteractions[eventKey]) {\r\n case MouseInteractions.MouseDown:\r\n case MouseInteractions.MouseUp:\r\n eventName = eventName.replace('mouse', 'pointer');\r\n break;\r\n case MouseInteractions.TouchStart:\r\n case MouseInteractions.TouchEnd:\r\n return;\r\n }\r\n }\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc && doc.defaultView) {\r\n const scrollLeftTop = getWindowScroll(doc.defaultView);\r\n scrollCb({\r\n id,\r\n x: scrollLeftTop.left,\r\n y: scrollLeftTop.top,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }), sampling.scroll || 100));\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb, }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = callbackWrapper(throttle(callbackWrapper(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }), 200));\r\n return on('resize', updateDimension, window);\r\n}\r\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\r\n const value = Object.assign({}, v);\r\n if (!enable)\r\n delete value.userTriggered;\r\n return value;\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, ignoreClass, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n const tagName = target && target.tagName;\r\n if (target && tagName === 'OPTION') {\r\n target = target.parentElement;\r\n }\r\n if (!target ||\r\n !tagName ||\r\n INPUT_TAGS.indexOf(tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n if (target.classList.contains(ignoreClass)) {\r\n return;\r\n }\r\n let text = target.value;\r\n let isChecked = false;\r\n const type = getInputType(target) || '';\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n else if (maskInputOptions[tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n text = maskInputValue({\r\n element: target,\r\n maskInputOptions,\r\n tagName,\r\n type,\r\n value: text,\r\n maskInputFn,\r\n });\r\n }\r\n cbWithDedup(target, callbackWrapper(wrapEventWithUserTriggeredFlag)({ text, isChecked, userTriggered }, userTriggeredOnInput));\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n cbWithDedup(el, callbackWrapper(wrapEventWithUserTriggeredFlag)({\r\n text: el.value,\r\n isChecked: !isChecked,\r\n userTriggered: false,\r\n }, userTriggeredOnInput));\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n callbackWrapper(inputCb)(Object.assign(Object.assign({}, v), { id }));\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, callbackWrapper(eventHandler), doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n callbackWrapper(eventHandler)({\r\n target: this,\r\n isTrusted: false,\r\n });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((hasNestedCSSRule('CSSGroupingRule') &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (hasNestedCSSRule('CSSMediaRule') &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (hasNestedCSSRule('CSSSupportsRule') &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (hasNestedCSSRule('CSSConditionRule') &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\r\n return () => {\r\n };\r\n }\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (canMonkeyPatchNestedCSSRule('CSSGroupingRule')) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (canMonkeyPatchNestedCSSRule('CSSMediaRule')) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSConditionRule')) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSSupportsRule')) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(thisArg),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(thisArg), index] },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n });\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n var _a, _b, _c;\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? (_a = host.defaultView) === null || _a === void 0 ? void 0 : _a.Document\r\n : (_c = (_b = host.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView) === null || _c === void 0 ? void 0 : _c.ShadowRoot;\r\n const originalPropertyDescriptor = Object.getOwnPropertyDescriptor(patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype, 'adoptedStyleSheets');\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n var _a;\r\n return (_a = originalPropertyDescriptor.get) === null || _a === void 0 ? void 0 : _a.call(this);\r\n },\r\n set(sheets) {\r\n var _a;\r\n const result = (_a = originalPropertyDescriptor.set) === null || _a === void 0 ? void 0 : _a.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return callbackWrapper(() => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n });\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n var _a;\r\n const [property, value, priority] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(thisArg, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n var _a;\r\n const [property] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(thisArg, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n });\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, mirror, sampling, }) {\r\n const handler = callbackWrapper((type) => throttle(callbackWrapper((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n });\r\n }), sampling.media || 500));\r\n const handlers = [\r\n on('play', handler(0)),\r\n on('pause', handler(1)),\r\n on('seeked', handler(2)),\r\n on('volumechange', handler(3)),\r\n on('ratechange', handler(4)),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(callbackWrapper(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }), 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\r\n let collapsed = true;\r\n const updateSelection = callbackWrapper(() => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && (selection === null || selection === void 0 ? void 0 : selection.isCollapsed)))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n });\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction mergeHooks(o, hooks) {\r\n const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, selectionCb, } = o;\r\n o.mutationCb = (...p) => {\r\n if (hooks.mutation) {\r\n hooks.mutation(...p);\r\n }\r\n mutationCb(...p);\r\n };\r\n o.mousemoveCb = (...p) => {\r\n if (hooks.mousemove) {\r\n hooks.mousemove(...p);\r\n }\r\n mousemoveCb(...p);\r\n };\r\n o.mouseInteractionCb = (...p) => {\r\n if (hooks.mouseInteraction) {\r\n hooks.mouseInteraction(...p);\r\n }\r\n mouseInteractionCb(...p);\r\n };\r\n o.scrollCb = (...p) => {\r\n if (hooks.scroll) {\r\n hooks.scroll(...p);\r\n }\r\n scrollCb(...p);\r\n };\r\n o.viewportResizeCb = (...p) => {\r\n if (hooks.viewportResize) {\r\n hooks.viewportResize(...p);\r\n }\r\n viewportResizeCb(...p);\r\n };\r\n o.inputCb = (...p) => {\r\n if (hooks.input) {\r\n hooks.input(...p);\r\n }\r\n inputCb(...p);\r\n };\r\n o.mediaInteractionCb = (...p) => {\r\n if (hooks.mediaInteaction) {\r\n hooks.mediaInteaction(...p);\r\n }\r\n mediaInteractionCb(...p);\r\n };\r\n o.styleSheetRuleCb = (...p) => {\r\n if (hooks.styleSheetRule) {\r\n hooks.styleSheetRule(...p);\r\n }\r\n styleSheetRuleCb(...p);\r\n };\r\n o.styleDeclarationCb = (...p) => {\r\n if (hooks.styleDeclaration) {\r\n hooks.styleDeclaration(...p);\r\n }\r\n styleDeclarationCb(...p);\r\n };\r\n o.canvasMutationCb = (...p) => {\r\n if (hooks.canvasMutation) {\r\n hooks.canvasMutation(...p);\r\n }\r\n canvasMutationCb(...p);\r\n };\r\n o.fontCb = (...p) => {\r\n if (hooks.font) {\r\n hooks.font(...p);\r\n }\r\n fontCb(...p);\r\n };\r\n o.selectionCb = (...p) => {\r\n if (hooks.selection) {\r\n hooks.selection(...p);\r\n }\r\n selectionCb(...p);\r\n };\r\n}\r\nfunction initObservers(o, hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n mergeHooks(o, hooks);\r\n const mutationObserver = initMutationObserver(o, o.doc);\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o);\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n const styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n const fontObserver = o.collectFonts\r\n ? initFontObserver(o)\r\n : () => {\r\n };\r\n const selectionObserver = initSelectionObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return callbackWrapper(() => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n pluginHandlers.forEach((h) => h());\r\n });\r\n}\r\nfunction hasNestedCSSRule(prop) {\r\n return typeof window[prop] !== 'undefined';\r\n}\r\nfunction canMonkeyPatchNestedCSSRule(prop) {\r\n return Boolean(typeof window[prop] !== 'undefined' &&\r\n window[prop].prototype &&\r\n 'insertRule' in window[prop].prototype &&\r\n 'deleteRule' in window[prop].prototype);\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId, NodeType } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\n\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.crossOriginIframeRootIdMap = new WeakMap();\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n var _a;\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n const crossOriginMessageEvent = message;\r\n if (crossOriginMessageEvent.data.type !== 'rrweb' ||\r\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\r\n return;\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n var _a;\r\n switch (e.type) {\r\n case EventType.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n const rootId = e.data.node.id;\r\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\r\n this.patchRootIdOnNode(e.data.node, rootId);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType.Meta:\r\n case EventType.Load:\r\n case EventType.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType.Plugin: {\r\n return e;\r\n }\r\n case EventType.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\r\n rootId && this.patchRootIdOnNode(n.node, rootId);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource.MediaInteraction:\r\n case IncrementalSource.MouseInteraction:\r\n case IncrementalSource.Scroll:\r\n case IncrementalSource.CanvasMutation:\r\n case IncrementalSource.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource.Font: {\r\n return e;\r\n }\r\n case IncrementalSource.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n (_a = e.data.styles) === null || _a === void 0 ? void 0 : _a.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id', 'rootId']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n patchRootIdOnNode(node, rootId) {\r\n if (node.type !== NodeType.Document && !node.rootId)\r\n node.rootId = rootId;\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.patchRootIdOnNode(child, rootId);\r\n });\r\n }\r\n }\r\n}\n\nexport { IframeManager };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { patch, inDom } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restoreHandlers = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n this.init();\r\n }\r\n init() {\r\n this.reset();\r\n this.patchAttachShadow(Element, document);\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n const observer = initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\r\n this.restoreHandlers.push(() => observer.disconnect());\r\n this.restoreHandlers.push(initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror })));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n this.restoreHandlers.push(initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot));\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (!iframeElement.contentWindow || !iframeElement.contentDocument)\r\n return;\r\n this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\r\n }\r\n patchAttachShadow(element, doc) {\r\n const manager = this;\r\n this.restoreHandlers.push(patch(element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot && inDom(this))\r\n manager.addShadowRoot(this.shadowRoot, doc);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n reset() {\r\n this.restoreHandlers.forEach((handler) => {\r\n try {\r\n handler();\r\n }\r\n catch (e) {\r\n }\r\n });\r\n this.restoreHandlers = [];\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\nexport { ShadowDomManager };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nexport { __awaiter, __rest };\n","/*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\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 }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n","import { encode } from './../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = canvasVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n canvasVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n if (!value ||\r\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n return;\r\n const name = value.constructor.name;\r\n const list = variableListFor(ctx, name);\r\n let index = list.indexOf(value);\r\n if (index === -1) {\r\n index = list.length;\r\n list.push(value);\r\n }\r\n return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n if (value instanceof Array) {\r\n return value.map((arg) => serializeArg(arg, win, ctx));\r\n }\r\n else if (value === null) {\r\n return value;\r\n }\r\n else if (value instanceof Float32Array ||\r\n value instanceof Float64Array ||\r\n value instanceof Int32Array ||\r\n value instanceof Uint32Array ||\r\n value instanceof Uint8Array ||\r\n value instanceof Uint16Array ||\r\n value instanceof Int16Array ||\r\n value instanceof Int8Array ||\r\n value instanceof Uint8ClampedArray) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [Object.values(value)],\r\n };\r\n }\r\n else if (value instanceof ArrayBuffer) {\r\n const name = value.constructor.name;\r\n const base64 = encode(value);\r\n return {\r\n rr_type: name,\r\n base64,\r\n };\r\n }\r\n else if (value instanceof DataView) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [\r\n serializeArg(value.buffer, win, ctx),\r\n value.byteOffset,\r\n value.byteLength,\r\n ],\r\n };\r\n }\r\n else if (value instanceof HTMLImageElement) {\r\n const name = value.constructor.name;\r\n const { src } = value;\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof HTMLCanvasElement) {\r\n const name = 'HTMLImageElement';\r\n const src = value.toDataURL();\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof ImageData) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n };\r\n }\r\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n const name = value.constructor.name;\r\n const index = saveWebGLVar(value, win, ctx);\r\n return {\r\n rr_type: name,\r\n index: index,\r\n };\r\n }\r\n return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n return [...args].map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n const webGLConstructorNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n 'WebGLVertexArrayObjectOES',\r\n ];\r\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { patch, isBlocked } from '../../../utils.js';\n\nfunction initCanvasContextObserver(win, blockClass, blockSelector) {\r\n const handlers = [];\r\n try {\r\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n return function (contextType, ...args) {\r\n if (!isBlocked(this, blockClass, blockSelector, true)) {\r\n if (!('__context' in this))\r\n this.__context = contextType;\r\n }\r\n return original.apply(this, [contextType, ...args]);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasContextObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, mirror, win) {\r\n const handlers = [];\r\n const props = Object.getOwnPropertyNames(prototype);\r\n for (const prop of props) {\r\n if ([\r\n 'isContextLost',\r\n 'canvas',\r\n 'drawingBufferWidth',\r\n 'drawingBufferHeight',\r\n ].includes(prop)) {\r\n continue;\r\n }\r\n try {\r\n if (typeof prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(prototype, prop, function (original) {\r\n return function (...args) {\r\n const result = original.apply(this, args);\r\n saveWebGLVar(result, win, this);\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n const mutation = {\r\n type,\r\n property: prop,\r\n args: recordArgs,\r\n };\r\n cb(this.canvas, mutation);\r\n }\r\n return result;\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type,\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, mirror) {\r\n const handlers = [];\r\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, mirror, win));\r\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, mirror, win));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasWebGLMutationObserver as default };\n","function decodeBase64(base64, enableUnicode) {\n var binaryString = atob(base64);\n if (enableUnicode) {\n var binaryView = new Uint8Array(binaryString.length);\n for (var i = 0, n = binaryString.length; i < n; ++i) {\n binaryView[i] = binaryString.charCodeAt(i);\n }\n return String.fromCharCode.apply(null, new Uint16Array(binaryView.buffer));\n }\n return binaryString;\n}\n\nfunction createURL(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n var blob = new Blob([body], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(base64, sourcemapArg, enableUnicodeArg);\n return new Worker(url, options);\n };\n}\n\nexport { createBase64WorkerFactory };\n","import { createBase64WorkerFactory } from './_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js';\n\nvar WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucykgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgY29uc3QgaWQgPSBgJHt3aWR0aH0tJHtoZWlnaHR9YDsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRCbG9iTWFwLmdldChpZCk7DQogICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0geWllbGQgYmxvYi5hcnJheUJ1ZmZlcigpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQogICAgY29uc3Qgd29ya2VyID0gc2VsZjsNCiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgY29uc3QgeyBpZCwgYml0bWFwLCB3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucyB9ID0gZS5kYXRhOw0KICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zKTsNCiAgICAgICAgICAgICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwKTsNCiAgICAgICAgICAgICAgICBiaXRtYXAuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gZW5jb2RlKGFycmF5QnVmZmVyKTsNCiAgICAgICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7DQogICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgaWQsDQogICAgICAgICAgICAgICAgICAgIHR5cGUsDQogICAgICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQogICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=', null, false);\n/* eslint-enable */\n\nexport { WorkerFactory as default };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, getWindowWidth, getWindowHeight, getWindowScroll, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\nimport ProcessedNodeManager from './processed-node-manager.js';\nimport { callbackWrapper, unregisterErrorHandler, registerErrorHandler } from './error-handler.js';\n\nfunction wrapEvent(e) {\r\n return Object.assign(Object.assign({}, e), { timestamp: Date.now() });\r\n}\r\nlet wrappedEmit;\r\nlet takeFullSnapshot;\r\nlet canvasManager;\r\nlet recording = false;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, ignoreClass = 'rr-ignore', maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, recordAfter = options.recordAfter === 'DOMContentLoaded'\r\n ? options.recordAfter\r\n : 'load', userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), errorHandler, } = options;\r\n registerErrorHandler(errorHandler);\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n if (window.parent.document) {\r\n passEmitsToParent = false;\r\n }\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : { password: true };\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn &&\r\n !passEmitsToParent) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (e, isCheckout) => {\r\n var _a;\r\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\r\n e.type !== EventType.FullSnapshot &&\r\n !(e.type === EventType.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit === null || emit === void 0 ? void 0 : emit(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n origin: window.location.origin,\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Mutation }, m),\r\n }));\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Scroll }, p),\r\n }));\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CanvasMutation }, p),\r\n }));\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.AdoptedStyleSheet }, a),\r\n }));\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n const processedNodeManager = new ProcessedNodeManager();\r\n canvasManager = new CanvasManager({\r\n recordCanvas,\r\n mutationCb: wrappedCanvasMutationEmit,\r\n win: window,\r\n blockClass,\r\n blockSelector,\r\n mirror,\r\n sampling: sampling.canvas,\r\n dataURLOptions,\r\n });\r\n const shadowDomManager = new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n processedNodeManager,\r\n },\r\n mirror,\r\n });\r\n takeFullSnapshot = (isCheckout = false) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }), isCheckout);\r\n stylesheetManager.reset();\r\n shadowDomManager.init();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: getWindowScroll(window),\r\n },\r\n }), isCheckout);\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n try {\r\n const handlers = [];\r\n const observe = (doc) => {\r\n var _a;\r\n return callbackWrapper(initObservers)({\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n })),\r\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MouseInteraction }, d),\r\n })),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.ViewportResize }, d),\r\n })),\r\n inputCb: (v) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Input }, v),\r\n })),\r\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MediaInteraction }, p),\r\n })),\r\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleSheetRule }, r),\r\n })),\r\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleDeclaration }, r),\r\n })),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Font }, p),\r\n })),\r\n selectionCb: (p) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Selection }, p),\r\n }));\r\n },\r\n blockClass,\r\n ignoreClass,\r\n maskTextClass,\r\n maskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n processedNodeManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit(wrapEvent({\r\n type: EventType.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n })),\r\n }))) || [],\r\n }, hooks);\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n try {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n recording = true;\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.DomContentLoaded,\r\n data: {},\r\n }));\r\n if (recordAfter === 'DOMContentLoaded')\r\n init();\r\n }));\r\n handlers.push(on('load', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Load,\r\n data: {},\r\n }));\r\n if (recordAfter === 'load')\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n processedNodeManager.destroy();\r\n recording = false;\r\n unregisterErrorHandler();\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nrecord.addCustomEvent = (tag, payload) => {\r\n if (!recording) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n }));\r\n};\r\nrecord.freezePage = () => {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n};\r\nrecord.takeFullSnapshot = (isCheckout) => {\r\n if (!recording) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n takeFullSnapshot(isCheckout);\r\n};\r\nrecord.mirror = mirror;\n\nexport { record as default };\n","import { __rest, __awaiter } from './../../../../../../ext/tslib/tslib.es6.js';\nimport { isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport WorkerFactory from '../../../../../../_virtual/image-bitmap-data-url-worker.js';\n\nclass CanvasManager {\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, recordCanvas, dataURLOptions, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\r\n dataURLOptions,\r\n });\r\n }\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const snapshotInProgressMap = new Map();\r\n const worker = new WorkerFactory();\r\n worker.onmessage = (e) => {\r\n const { id } = e.data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in e.data))\r\n return;\r\n const { base64, type, width, height } = e.data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = () => {\r\n const matchedCanvas = [];\r\n win.document.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas()\r\n .forEach((canvas) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (((_a = context === null || context === void 0 ? void 0 : context.getContextAttributes()) === null || _a === void 0 ? void 0 : _a.preserveDrawingBuffer) === false) {\r\n context === null || context === void 0 ? void 0 : context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n const bitmap = yield createImageBitmap(canvas);\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: canvas.width,\r\n height: canvas.height,\r\n dataURLOptions: options.dataURLOptions,\r\n }, [bitmap]);\r\n }));\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const rest = __rest(value, [\"type\"]);\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nexport { CanvasManager };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { serializeArgs } from './serialize-args.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\r\n const handlers = [];\r\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n for (const prop of props2D) {\r\n try {\r\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n return function (...args) {\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n setTimeout(() => {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: recordArgs,\r\n });\r\n }, 0);\r\n }\r\n return original.apply(this, args);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvas2DMutationObserver as default };\n","import { getCssRuleString } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n const rules = Array.from(sheet.rules || CSSRule);\r\n styles.push({\r\n styleId,\r\n rules: rules.map((r, index) => {\r\n return {\r\n rule: getCssRuleString(r),\r\n index,\r\n };\r\n }),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nexport { StylesheetManager };\n","class ProcessedNodeManager {\r\n constructor() {\r\n this.nodeMap = new WeakMap();\r\n this.loop = true;\r\n this.periodicallyClear();\r\n }\r\n periodicallyClear() {\r\n requestAnimationFrame(() => {\r\n this.clear();\r\n if (this.loop)\r\n this.periodicallyClear();\r\n });\r\n }\r\n inOtherBuffer(node, thisBuffer) {\r\n const buffers = this.nodeMap.get(node);\r\n return (buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer));\r\n }\r\n add(node, buffer) {\r\n this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\r\n }\r\n clear() {\r\n this.nodeMap = new WeakMap();\r\n }\r\n destroy() {\r\n this.loop = false;\r\n }\r\n}\n\nexport { ProcessedNodeManager as default };\n","class StackFrame {\r\n constructor(obj) {\r\n this.fileName = obj.fileName || '';\r\n this.functionName = obj.functionName || '';\r\n this.lineNumber = obj.lineNumber;\r\n this.columnNumber = obj.columnNumber;\r\n }\r\n toString() {\r\n const lineNumber = this.lineNumber || '';\r\n const columnNumber = this.columnNumber || '';\r\n if (this.functionName)\r\n return `${this.functionName} (${this.fileName}:${lineNumber}:${columnNumber})`;\r\n return `${this.fileName}:${lineNumber}:${columnNumber}`;\r\n }\r\n}\r\nconst FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\r\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\r\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\r\nconst ErrorStackParser = {\r\n parse: function (error) {\r\n if (!error) {\r\n return [];\r\n }\r\n if (typeof error.stacktrace !== 'undefined' ||\r\n typeof error['opera#sourceloc'] !== 'undefined') {\r\n return this.parseOpera(error);\r\n }\r\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\r\n return this.parseV8OrIE(error);\r\n }\r\n else if (error.stack) {\r\n return this.parseFFOrSafari(error);\r\n }\r\n else {\r\n throw new Error('Cannot parse given Error object');\r\n }\r\n },\r\n extractLocation: function (urlLike) {\r\n if (urlLike.indexOf(':') === -1) {\r\n return [urlLike];\r\n }\r\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\r\n const parts = regExp.exec(urlLike.replace(/[()]/g, ''));\r\n if (!parts)\r\n throw new Error(`Cannot parse given url: ${urlLike}`);\r\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\r\n },\r\n parseV8OrIE: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return !!line.match(CHROME_IE_STACK_REGEXP);\r\n }, this);\r\n return filtered.map(function (line) {\r\n if (line.indexOf('(eval ') > -1) {\r\n line = line\r\n .replace(/eval code/g, 'eval')\r\n .replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\r\n }\r\n let sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\r\n const location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\r\n sanitizedLine = location\r\n ? sanitizedLine.replace(location[0], '')\r\n : sanitizedLine;\r\n const tokens = sanitizedLine.split(/\\s+/).slice(1);\r\n const locationParts = this.extractLocation(location ? location[1] : tokens.pop());\r\n const functionName = tokens.join(' ') || undefined;\r\n const fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1\r\n ? undefined\r\n : locationParts[0];\r\n return new StackFrame({\r\n functionName,\r\n fileName,\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }, this);\r\n },\r\n parseFFOrSafari: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\r\n }, this);\r\n return filtered.map(function (line) {\r\n if (line.indexOf(' > eval') > -1) {\r\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\r\n }\r\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\r\n return new StackFrame({\r\n functionName: line,\r\n });\r\n }\r\n else {\r\n const functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\r\n const matches = line.match(functionNameRegex);\r\n const functionName = matches && matches[1] ? matches[1] : undefined;\r\n const locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\r\n return new StackFrame({\r\n functionName,\r\n fileName: locationParts[0],\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }\r\n }, this);\r\n },\r\n parseOpera: function (e) {\r\n if (!e.stacktrace ||\r\n (e.message.indexOf('\\n') > -1 &&\r\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\r\n return this.parseOpera9(e);\r\n }\r\n else if (!e.stack) {\r\n return this.parseOpera10(e);\r\n }\r\n else {\r\n return this.parseOpera11(e);\r\n }\r\n },\r\n parseOpera9: function (e) {\r\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\r\n const lines = e.message.split('\\n');\r\n const result = [];\r\n for (let i = 2, len = lines.length; i < len; i += 2) {\r\n const match = lineRE.exec(lines[i]);\r\n if (match) {\r\n result.push(new StackFrame({\r\n fileName: match[2],\r\n lineNumber: parseFloat(match[1]),\r\n }));\r\n }\r\n }\r\n return result;\r\n },\r\n parseOpera10: function (e) {\r\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\r\n const lines = e.stacktrace.split('\\n');\r\n const result = [];\r\n for (let i = 0, len = lines.length; i < len; i += 2) {\r\n const match = lineRE.exec(lines[i]);\r\n if (match) {\r\n result.push(new StackFrame({\r\n functionName: match[3] || undefined,\r\n fileName: match[2],\r\n lineNumber: parseFloat(match[1]),\r\n }));\r\n }\r\n }\r\n return result;\r\n },\r\n parseOpera11: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return (!!line.match(FIREFOX_SAFARI_STACK_REGEXP) &&\r\n !line.match(/^Error created at/));\r\n }, this);\r\n return filtered.map(function (line) {\r\n const tokens = line.split('@');\r\n const locationParts = this.extractLocation(tokens.pop());\r\n const functionCall = tokens.shift() || '';\r\n const functionName = functionCall\r\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\r\n .replace(/\\([^)]*\\)/g, '') || undefined;\r\n return new StackFrame({\r\n functionName,\r\n fileName: locationParts[0],\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }, this);\r\n },\r\n};\n\nexport { ErrorStackParser, StackFrame };\n","function pathToSelector(node) {\r\n if (!node || !node.outerHTML) {\r\n return '';\r\n }\r\n let path = '';\r\n while (node.parentElement) {\r\n let name = node.localName;\r\n if (!name) {\r\n break;\r\n }\r\n name = name.toLowerCase();\r\n const parent = node.parentElement;\r\n const domSiblings = [];\r\n if (parent.children && parent.children.length > 0) {\r\n for (let i = 0; i < parent.children.length; i++) {\r\n const sibling = parent.children[i];\r\n if (sibling.localName && sibling.localName.toLowerCase) {\r\n if (sibling.localName.toLowerCase() === name) {\r\n domSiblings.push(sibling);\r\n }\r\n }\r\n }\r\n }\r\n if (domSiblings.length > 1) {\r\n name += `:eq(${domSiblings.indexOf(node)})`;\r\n }\r\n path = name + (path ? '>' + path : '');\r\n node = parent;\r\n }\r\n return path;\r\n}\r\nfunction isObject(obj) {\r\n return Object.prototype.toString.call(obj) === '[object Object]';\r\n}\r\nfunction isObjTooDeep(obj, limit) {\r\n if (limit === 0) {\r\n return true;\r\n }\r\n const keys = Object.keys(obj);\r\n for (const key of keys) {\r\n if (isObject(obj[key]) &&\r\n isObjTooDeep(obj[key], limit - 1)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction stringify(obj, stringifyOptions) {\r\n const options = {\r\n numOfKeysLimit: 50,\r\n depthOfLimit: 4,\r\n };\r\n Object.assign(options, stringifyOptions);\r\n const stack = [];\r\n const keys = [];\r\n return JSON.stringify(obj, function (key, value) {\r\n if (stack.length > 0) {\r\n const thisPos = stack.indexOf(this);\r\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\r\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\r\n if (~stack.indexOf(value)) {\r\n if (stack[0] === value) {\r\n value = '[Circular ~]';\r\n }\r\n else {\r\n value =\r\n '[Circular ~.' +\r\n keys.slice(0, stack.indexOf(value)).join('.') +\r\n ']';\r\n }\r\n }\r\n }\r\n else {\r\n stack.push(value);\r\n }\r\n if (value === null)\r\n return value;\r\n if (value === undefined)\r\n return 'undefined';\r\n if (shouldIgnore(value)) {\r\n return toString(value);\r\n }\r\n if (value instanceof Event) {\r\n const eventResult = {};\r\n for (const eventKey in value) {\r\n const eventValue = value[eventKey];\r\n if (Array.isArray(eventValue)) {\r\n eventResult[eventKey] = pathToSelector((eventValue.length ? eventValue[0] : null));\r\n }\r\n else {\r\n eventResult[eventKey] = eventValue;\r\n }\r\n }\r\n return eventResult;\r\n }\r\n else if (value instanceof Node) {\r\n if (value instanceof HTMLElement) {\r\n return value ? value.outerHTML : '';\r\n }\r\n return value.nodeName;\r\n }\r\n else if (value instanceof Error) {\r\n return value.stack\r\n ? value.stack + '\\nEnd of stack for Error object'\r\n : value.name + ': ' + value.message;\r\n }\r\n return value;\r\n });\r\n function shouldIgnore(_obj) {\r\n if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {\r\n return true;\r\n }\r\n if (typeof _obj === 'function') {\r\n return true;\r\n }\r\n if (isObject(_obj) &&\r\n isObjTooDeep(_obj, options.depthOfLimit)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n function toString(_obj) {\r\n let str = _obj.toString();\r\n if (options.stringLengthLimit && str.length > options.stringLengthLimit) {\r\n str = `${str.slice(0, options.stringLengthLimit)}...`;\r\n }\r\n return str;\r\n }\r\n}\n\nexport { stringify };\n","import { patch } from '../../../utils.js';\nimport { ErrorStackParser } from './error-stack-parser.js';\nimport { stringify } from './stringify.js';\n\nconst defaultLogOptions = {\r\n level: [\r\n 'assert',\r\n 'clear',\r\n 'count',\r\n 'countReset',\r\n 'debug',\r\n 'dir',\r\n 'dirxml',\r\n 'error',\r\n 'group',\r\n 'groupCollapsed',\r\n 'groupEnd',\r\n 'info',\r\n 'log',\r\n 'table',\r\n 'time',\r\n 'timeEnd',\r\n 'timeLog',\r\n 'trace',\r\n 'warn',\r\n ],\r\n lengthThreshold: 1000,\r\n logger: 'console',\r\n};\r\nfunction initLogObserver(cb, win, options) {\r\n const logOptions = (options ? Object.assign({}, defaultLogOptions, options) : defaultLogOptions);\r\n const loggerType = logOptions.logger;\r\n if (!loggerType) {\r\n return () => {\r\n };\r\n }\r\n let logger;\r\n if (typeof loggerType === 'string') {\r\n logger = win[loggerType];\r\n }\r\n else {\r\n logger = loggerType;\r\n }\r\n let logCount = 0;\r\n let inStack = false;\r\n const cancelHandlers = [];\r\n if (logOptions.level.includes('error')) {\r\n const errorHandler = (event) => {\r\n const message = event.message, error = event.error;\r\n const trace = ErrorStackParser.parse(error).map((stackFrame) => stackFrame.toString());\r\n const payload = [stringify(message, logOptions.stringifyOptions)];\r\n cb({\r\n level: 'error',\r\n trace,\r\n payload,\r\n });\r\n };\r\n win.addEventListener('error', errorHandler);\r\n cancelHandlers.push(() => {\r\n win.removeEventListener('error', errorHandler);\r\n });\r\n const unhandledrejectionHandler = (event) => {\r\n let error;\r\n let payload;\r\n if (event.reason instanceof Error) {\r\n error = event.reason;\r\n payload = [\r\n stringify(`Uncaught (in promise) ${error.name}: ${error.message}`, logOptions.stringifyOptions),\r\n ];\r\n }\r\n else {\r\n error = new Error();\r\n payload = [\r\n stringify('Uncaught (in promise)', logOptions.stringifyOptions),\r\n stringify(event.reason, logOptions.stringifyOptions),\r\n ];\r\n }\r\n const trace = ErrorStackParser.parse(error).map((stackFrame) => stackFrame.toString());\r\n cb({\r\n level: 'error',\r\n trace,\r\n payload,\r\n });\r\n };\r\n win.addEventListener('unhandledrejection', unhandledrejectionHandler);\r\n cancelHandlers.push(() => {\r\n win.removeEventListener('unhandledrejection', unhandledrejectionHandler);\r\n });\r\n }\r\n for (const levelType of logOptions.level) {\r\n cancelHandlers.push(replace(logger, levelType));\r\n }\r\n return () => {\r\n cancelHandlers.forEach((h) => h());\r\n };\r\n function replace(_logger, level) {\r\n if (!_logger[level]) {\r\n return () => {\r\n };\r\n }\r\n return patch(_logger, level, (original) => {\r\n return (...args) => {\r\n original.apply(this, args);\r\n if (inStack) {\r\n return;\r\n }\r\n inStack = true;\r\n try {\r\n const trace = ErrorStackParser.parse(new Error())\r\n .map((stackFrame) => stackFrame.toString())\r\n .splice(1);\r\n const payload = args.map((s) => stringify(s, logOptions.stringifyOptions));\r\n logCount++;\r\n if (logCount < logOptions.lengthThreshold) {\r\n cb({\r\n level,\r\n trace,\r\n payload,\r\n });\r\n }\r\n else if (logCount === logOptions.lengthThreshold) {\r\n cb({\r\n level: 'warn',\r\n trace: [],\r\n payload: [\r\n stringify('The number of log records reached the threshold.'),\r\n ],\r\n });\r\n }\r\n }\r\n catch (error) {\r\n original('rrweb logger error:', error, ...args);\r\n }\r\n finally {\r\n inStack = false;\r\n }\r\n };\r\n });\r\n }\r\n}\r\nconst PLUGIN_NAME = 'rrweb/console@1';\r\nconst getRecordConsolePlugin = (options) => ({\r\n name: PLUGIN_NAME,\r\n observer: initLogObserver,\r\n options: options,\r\n});\n\nexport { PLUGIN_NAME, getRecordConsolePlugin };\n","import { version } from 'rrweb/package.json'\n\n// Same as loader-globals.ts except includes rrweb2 scripts.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport rrwebRecord from 'rrweb/es/rrweb/packages/rrweb/src/record'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { getRecordConsolePlugin } from 'rrweb/es/rrweb/packages/rrweb/src/plugins/console/record'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\n\nconst win: Window & typeof globalThis = typeof window !== 'undefined' ? window : ({} as typeof window)\n\n;(win as any).rrweb = { record: rrwebRecord, version: 'v2', rrwebVersion: version }\n;(win as any).rrwebConsoleRecord = { getRecordConsolePlugin }\n\nexport default rrwebRecord\n"],"names":["NodeType","isShadowRoot","n","host","Boolean","shadowRoot","isNativeShadowDom","Object","prototype","toString","call","getCssRulesString","s","rules","cssRules","cssText","Array","from","map","getCssRuleString","join","includes","replace","error","rule","cssStringified","isCSSImportRule","styleSheet","_a","Mirror","this","idNodeMap","Map","nodeMetaMap","WeakMap","getId","id","getMeta","getNode","get","getIds","keys","removeNodeFromMap","_this","childNodes","forEach","childNode","has","hasNode","node","add","meta","set","oldNode","reset","maskInputValue","element","maskInputOptions","tagName","type","value","maskInputFn","text","actualType","toLowerCase","repeat","length","ORIGINAL_ATTRIBUTE_NAME","getInputType","hasAttribute","canvasService","canvasCtx","_id","tagNameRegex","RegExp","IGNORED_NODE","genId","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","absoluteToStylesheet","href","origin","quote1","path1","quote2","path2","path3","url","filePath","maybeQuote","test","concat","indexOf","split","slice","stack","parts","pop","_i","parts_1","part","push","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","doc","attributeValue","trim","a","createElement","isSVGElement","el","ownerSVGElement","getHref","document","transformAttribute","name","pos","collectCharacters","regEx","chars","match","exec","substring","output","descriptorsStr","inParens","c","charAt","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","regex","checkAncestors","nodeType","ELEMENT_NODE","parentNode","eIndex","classList","className","needMaskingText","maskTextClass","maskTextSelector","parentElement","contains","closest","matches","e","serializeNode","options","mirror","blockClass","blockSelector","inlineStylesheet","maskTextFn","_b","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","_c","newlyAddedElement","rootId","docId","undefined","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","attributes","len","i","attr","stylesheet","styleSheets","find","rel","_cssText","sheet","innerText","textContent","checked","selected","__context","canvas","ctx","getContext","x","width","y","height","getImageData","originalGetImageData","Uint32Array","Math","min","data","buffer","some","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image_1","oldValue_1","crossOrigin","recordInlineImage_1","removeEventListener","naturalWidth","naturalHeight","drawImage","err","console","warn","currentSrc","removeAttribute","complete","addEventListener","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","_d","getBoundingClientRect","class","rr_width","rr_height","src","contentDocument","rr_src","Element","isSVG","serializeElementNode","TEXT_NODE","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","_e","_f","onSerialize","onIframeLoad","_g","iframeLoadTimeout","onStylesheetLoad","_h","stylesheetLoadTimeout","_j","_k","_l","preserveWhiteSpace","_serializedNode","sn","comment","script","as","endsWith","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","assign","recordChild","isShadowHost","headWhitespace","bypassOptions","_m","serializedChildNode","isElement","_o","_p","isShadow","iframeEl","listener","win","contentWindow","readyState","fired","blankUrl","location","setTimeout","timer_1","clearTimeout","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","timer","onceStylesheetLoaded","serializedLinkNode","on","fn","target","capture","passive","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","func","wait","timeout","previous","_len","arguments","args","_key","now","Date","leading","remaining","context","apply","trailing","hookSetter","key","d","isRevoked","window","original","getOwnPropertyDescriptor","defineProperty","patch","source","replacement","wrapped","defineProperties","__rrweb_original__","enumerable","getWindowScroll","left","scrollingElement","pageXOffset","documentElement","body","top","pageYOffset","getWindowHeight","innerHeight","clientHeight","getWindowWidth","innerWidth","clientWidth","isBlocked","isIgnored","isAncestorRemoved","legacy_isTouchEvent","event","changedTouches","isSerializedIframe","nodeName","isSerializedStylesheet","getAttribute","hasShadowRoot","Proxy","Reflect","prop","receiver","StyleSheetMirror","_classCallCheck","styleIDMap","idStyleMap","newId","getShadowHost","shadowHost","getRootNode","Node","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","ownerDocument","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","isNodeInLinkedList","errorHandler","DoubleLinkedList","head","position","Error","current","index","next","__ln","moveKey","parentId","MutationBuffer","frozen","locked","texts","removes","mapRemoves","movedMap","addedSet","Set","movedSet","droppedSet","processMutations","mutations","processMutation","emit","adds","addList","getNextId","ns","nextId","pushAdd","addNode","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","shift","_step","_iterator","_createForOfIteratorHelper","done","isParentRemoved","f","_step2","_iterator2","isAncestorInSet","candidate","_node","unhandledNode","removeNode","payload","filter","attribute","mutationCb","m","oldValue","attributeName","item","setAttribute","old","style","styleObj","_Array$from","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","_i2","_Array$from2","addedNodes","genAdds","removedNodes","nodeId","isSerialized","deepDelete","processedNodeManager","inOtherBuffer","targetId","delete","childN","_this2","canvasManager","freeze","unfreeze","lock","unlock","addsSet","_isParentRemoved","r","size","_isAncestorInSet","registerErrorHandler","handler","unregisterErrorHandler","callbackWrapper","cb","mutationBuffers","getEventTarget","path","composedPath","initMutationObserver","rootEl","mutationBuffer","init","mutationObserverCtor","MutationObserver","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","observer","bind","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initMouseInteractionObserver","_ref3","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","Number","isNaN","eventKey","eventName","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","startsWith","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","h","initScrollObserver","_ref4","scrollCb","evt","defaultView","scrollLeftTop","scroll","wrapEventWithUserTriggeredFlag","v","enable","userTriggered","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","unshift","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","styleId","ownerNode","initAdoptedStyleSheetObserver","hostId","patchTarget","ShadowRoot","originalPropertyDescriptor","configurable","sheets","result","adoptStyleSheets","initObservers","o","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","mutation","mousemove","viewportResize","input","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","mergeHooks","lastH","lastW","mutationObserver","mousemoveHandler","_ref","timeBaseline","threshold","callbackThreshold","mousemoveCallback","positions","wrappedCb","totalOffset","p","timeOffset","updatePosition","_ref2","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","inputHandler","_ref6","ignoreClass","userTriggeredOnInput","eventHandler","isTrusted","isChecked","cbWithDedup","querySelectorAll","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","_toConsumableArray","initInputObserver","mediaInteractionHandler","_ref16","volume","muted","playbackRate","media","initMediaInteractionObserver","styleSheetObserver","_ref7","_ref8","CSSStyleSheet","insertRule","thisArg","argumentsList","_argumentsList","_slicedToArray","replaceSync","deleteRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","entries","_ref9","_ref10","typeKey","_argumentsList5","_ref11","_ref12","initStyleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","_ref14","_ref15","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","_argumentsList7","priority","_getIdAndStyleId7","removeProperty","_getIdAndStyleId8","remove","initStyleDeclarationObserver","fontObserver","collectFonts","_ref17","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","JSON","stringify","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","param","collapsed","updateSelection","getSelection","isCollapsed","ranges","count","rangeCount","range","getRangeAt","startContainer","startOffset","endContainer","endOffset","start","end","initSelectionObserver","pluginHandlers","plugins","plugin","callback","b","disconnect","CrossOriginIframeMirror","generateIdFn","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","ids","getRemoteId","IframeManager","iframes","crossOriginIframeMap","crossOriginIframeMirror","crossOriginIframeRootIdMap","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","generateId","handleMessage","loadListener","isAttachIframe","adoptedStyleSheets","message","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","replaceIdOnNode","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","Input","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","obj","isArray","child","_this3","ShadowDomManager","shadowDoms","WeakSet","restoreHandlers","patchAttachShadow","iframeElement","manager","option","__awaiter","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","then","lookup","charCodeAt","encode","arraybuffer","bytes","base64","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","_typeof","list","ctor","contextMap","variableListFor","constructor","serializeArg","arg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","values","ArrayBuffer","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","contextType","patchGLPrototype","getOwnPropertyNames","_loop","recordArgs","hookHandler","setter","createURL","sourcemapArg","enableUnicodeArg","sourcemap","enableUnicode","binaryString","atob","binaryView","String","fromCharCode","decodeBase64","blob","Blob","URL","createObjectURL","takeFullSnapshot","WorkerFactory","Worker","CanvasManager","pendingCanvasMutations","rafStamps","latestId","invokeId","_options$sampling","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","canvasContextReset","snapshotInProgressMap","worker","onmessage","commands","rafId","timeBetweenSnapshots","lastSnapshotTime","requestAnimationFrame","takeCanvasSnapshots","matchedCanvas","_regeneratorRuntime","mark","_callee","bitmap","wrap","_context","prev","abrupt","getContextAttributes","preserveDrawingBuffer","COLOR_BUFFER_BIT","createImageBitmap","sent","postMessage","stop","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","_this4","setLatestRAFTimestamp","_this5","flushPendingCanvasMutationFor","valuesWithType","rest","t","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","__rest","StylesheetManager","trackedLinkElements","adoptedStyleSheetCb","linkEl","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","ProcessedNodeManager","nodeMap","loop","periodicallyClear","thisBuffer","buffers","wrapEvent","recording","record","checkoutEveryNms","checkoutEveryNth","_options$blockClass","_options$blockSelecto","_options$ignoreClass","_options$maskTextClas","_options$maskTextSele","_options$inlineStyles","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","_options$dataURLOptio","mousemoveWait","_options$recordCanvas","_options$recordCrossO","recordAfter","_options$recordAfter","_options$userTriggere","_options$collectFonts","_options$inlineImages","_options$keepIframeSr","_options$ignoreCSSAtt","inEmittingFrame","parent","passEmitsToParent","lastFullSnapshotEvent","color","date","email","month","number","search","tel","time","week","textarea","select","password","NodeList","DOMTokenList","_len2","_key2","TypeError","polyfill","incrementalSnapshotCount","eventProcessor","isFrozen","buf","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","addLoadListener","destroy","addCustomEvent","tag","freezePage","StackFrame","fileName","functionName","lineNumber","columnNumber","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","ErrorStackParser","parse","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","line","sanitizedLine","tokens","locationParts","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","parseFloat","pathToSelector","outerHTML","localName","domSiblings","children","sibling","isObject","isObjTooDeep","limit","_keys","stringifyOptions","numOfKeysLimit","depthOfLimit","thisPos","splice","Infinity","_obj","shouldIgnore","str","stringLengthLimit","Event","eventResult","eventValue","HTMLElement","defaultLogOptions","level","lengthThreshold","logger","initLogObserver","logOptions","loggerType","logCount","inStack","cancelHandlers","trace","stackFrame","unhandledrejectionHandler","reason","levelType","_logger","rrweb","rrwebRecord","version","rrwebVersion","rrwebConsoleRecord","getRecordConsolePlugin"],"mappings":"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"}