posthog-js 1.90.2 → 1.91.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/array.full.js +1 -1
- package/dist/array.full.js.map +1 -1
- package/dist/array.js +1 -1
- package/dist/array.js.map +1 -1
- package/dist/es.js +1 -1
- package/dist/es.js.map +1 -1
- package/dist/exception-autocapture.js +1 -1
- package/dist/exception-autocapture.js.map +1 -1
- package/dist/module.d.ts +3 -4
- package/dist/module.js +1 -1
- package/dist/module.js.map +1 -1
- package/dist/recorder-v2.js +1 -1
- package/dist/recorder-v2.js.map +1 -1
- package/dist/recorder.js +1 -1
- package/dist/recorder.js.map +1 -1
- package/dist/surveys.js +1 -1
- package/dist/surveys.js.map +1 -1
- package/lib/package.json +1 -1
- package/lib/src/autocapture-utils.js +2 -1
- package/lib/src/autocapture-utils.js.map +1 -1
- package/lib/src/autocapture.js +11 -4
- package/lib/src/autocapture.js.map +1 -1
- package/lib/src/decide.js +2 -1
- package/lib/src/decide.js.map +1 -1
- package/lib/src/extensions/exception-autocapture/index.js +6 -3
- package/lib/src/extensions/exception-autocapture/index.js.map +1 -1
- package/lib/src/extensions/replay/sessionrecording.js +8 -8
- package/lib/src/extensions/replay/sessionrecording.js.map +1 -1
- package/lib/src/extensions/replay/web-performance.js +1 -0
- package/lib/src/extensions/replay/web-performance.js.map +1 -1
- package/lib/src/extensions/surveys.js +10 -2
- package/lib/src/extensions/surveys.js.map +1 -1
- package/lib/src/extensions/toolbar.d.ts +2 -2
- package/lib/src/extensions/toolbar.js +16 -13
- package/lib/src/extensions/toolbar.js.map +1 -1
- package/lib/src/gdpr-utils.js +2 -2
- package/lib/src/gdpr-utils.js.map +1 -1
- package/lib/src/loader-exception-autocapture.js +4 -3
- package/lib/src/loader-exception-autocapture.js.map +1 -1
- package/lib/src/loader-recorder-v2.js +7 -4
- package/lib/src/loader-recorder-v2.js.map +1 -1
- package/lib/src/loader-recorder.js +6 -6
- package/lib/src/loader-recorder.js.map +1 -1
- package/lib/src/loader-surveys.js +5 -3
- package/lib/src/loader-surveys.js.map +1 -1
- package/lib/src/page-view.js +14 -11
- package/lib/src/page-view.js.map +1 -1
- package/lib/src/posthog-core.js +21 -22
- package/lib/src/posthog-core.js.map +1 -1
- package/lib/src/posthog-surveys.js +7 -4
- package/lib/src/posthog-surveys.js.map +1 -1
- package/lib/src/retry-queue.js +2 -1
- package/lib/src/retry-queue.js.map +1 -1
- package/lib/src/session-props.d.ts +1 -2
- package/lib/src/session-props.js +2 -2
- package/lib/src/session-props.js.map +1 -1
- package/lib/src/sessionid.js +1 -1
- package/lib/src/sessionid.js.map +1 -1
- package/lib/src/storage.d.ts +1 -1
- package/lib/src/storage.js +18 -8
- package/lib/src/storage.js.map +1 -1
- package/lib/src/utils/event-utils.js +16 -10
- package/lib/src/utils/event-utils.js.map +1 -1
- package/lib/src/utils/globals.d.ts +5 -4
- package/lib/src/utils/globals.js +7 -5
- package/lib/src/utils/globals.js.map +1 -1
- package/lib/src/utils/index.js +7 -4
- package/lib/src/utils/index.js.map +1 -1
- package/lib/src/utils/logger.js +5 -2
- package/lib/src/utils/logger.js.map +1 -1
- package/lib/src/uuidv7.js +1 -1
- package/lib/src/uuidv7.js.map +1 -1
- package/package.json +1 -1
package/dist/recorder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recorder.js","sources":["../node_modules/rrweb-v1/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/ext/tslib/tslib.es6.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/types.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/utils.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/mutation.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observer.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../node_modules/rrweb-v1/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/index.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record/error-stack-parser.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record/stringify.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record/index.js","../src/loader-recorder.ts","../src/utils/type-utils.ts"],"sourcesContent":["var NodeType;\n(function (NodeType) {\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\n return n.nodeType === n.ELEMENT_NODE;\n}\nfunction isShadowRoot(n) {\n var _a;\n var host = (_a = n) === null || _a === void 0 ? void 0 : _a.host;\n return Boolean(host && host.shadowRoot && host.shadowRoot === n);\n}\nfunction maskInputValue(_a) {\n var maskInputOptions = _a.maskInputOptions, tagName = _a.tagName, type = _a.type, value = _a.value, maskInputFn = _a.maskInputFn;\n var text = value || '';\n if (maskInputOptions[tagName.toLowerCase()] ||\n maskInputOptions[type]) {\n if (maskInputFn) {\n text = maskInputFn(text);\n }\n else {\n text = '*'.repeat(text.length);\n }\n }\n return text;\n}\nvar ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\nfunction is2DCanvasBlank(canvas) {\n var ctx = canvas.getContext('2d');\n if (!ctx)\n return true;\n var chunkSize = 50;\n for (var x = 0; x < canvas.width; x += chunkSize) {\n for (var y = 0; y < canvas.height; y += chunkSize) {\n var getImageData = ctx.getImageData;\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\n : getImageData;\n var pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\n if (pixelBuffer.some(function (pixel) { return pixel !== 0; }))\n return false;\n }\n }\n return true;\n}\n\nvar _id = 1;\nvar tagNameRegex = new RegExp('[^a-z0-9-_:]');\nvar IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName(element) {\n if (element instanceof HTMLFormElement) {\n return 'form';\n }\n var processedTagName = element.tagName.toLowerCase().trim();\n if (tagNameRegex.test(processedTagName)) {\n return 'div';\n }\n return processedTagName;\n}\nfunction getCssRulesString(s) {\n try {\n var rules = s.rules || s.cssRules;\n return rules ? Array.from(rules).map(getCssRuleString).join('') : null;\n }\n catch (error) {\n return null;\n }\n}\nfunction getCssRuleString(rule) {\n var cssStringified = rule.cssText;\n if (isCSSImportRule(rule)) {\n try {\n cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\n }\n catch (_a) {\n }\n }\n return cssStringified;\n}\nfunction isCSSImportRule(rule) {\n return 'styleSheet' in rule;\n}\nfunction stringifyStyleSheet(sheet) {\n return sheet.cssRules\n ? Array.from(sheet.cssRules)\n .map(function (rule) { return rule.cssText || ''; })\n .join('')\n : '';\n}\nfunction extractOrigin(url) {\n var origin = '';\n if (url.indexOf('//') > -1) {\n origin = url.split('/').slice(0, 3).join('/');\n }\n else {\n origin = url.split('/')[0];\n }\n origin = origin.split('?')[0];\n return origin;\n}\nvar canvasService;\nvar canvasCtx;\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nvar RELATIVE_PATH = /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/|#).*/;\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absoluteToStylesheet(cssText, href) {\n return (cssText || '').replace(URL_IN_CSS_REF, function (origin, quote1, path1, quote2, path2, path3) {\n var filePath = path1 || path2 || path3;\n var maybeQuote = quote1 || quote2 || '';\n if (!filePath) {\n return origin;\n }\n if (!RELATIVE_PATH.test(filePath)) {\n return \"url(\" + maybeQuote + filePath + maybeQuote + \")\";\n }\n if (DATA_URI.test(filePath)) {\n return \"url(\" + maybeQuote + filePath + maybeQuote + \")\";\n }\n if (filePath[0] === '/') {\n return \"url(\" + maybeQuote + (extractOrigin(href) + filePath) + maybeQuote + \")\";\n }\n var stack = href.split('/');\n var parts = filePath.split('/');\n stack.pop();\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\n var part = parts_1[_i];\n if (part === '.') {\n continue;\n }\n else if (part === '..') {\n stack.pop();\n }\n else {\n stack.push(part);\n }\n }\n return \"url(\" + maybeQuote + stack.join('/') + maybeQuote + \")\";\n });\n}\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === '') {\n return attributeValue;\n }\n var pos = 0;\n function collectCharacters(regEx) {\n var chars;\n var match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars = match[0];\n pos += chars.length;\n return chars;\n }\n return '';\n }\n var output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n var url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === ',') {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n }\n else {\n var descriptorsStr = '';\n url = absoluteToDoc(doc, url);\n var inParens = false;\n while (true) {\n var c = attributeValue.charAt(pos);\n if (c === '') {\n output.push((url + descriptorsStr).trim());\n break;\n }\n else if (!inParens) {\n if (c === ',') {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n }\n else if (c === '(') {\n inParens = true;\n }\n }\n else {\n if (c === ')') {\n inParens = false;\n }\n }\n descriptorsStr += c;\n pos += 1;\n }\n }\n }\n return output.join(', ');\n}\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === '') {\n return attributeValue;\n }\n var a = doc.createElement('a');\n a.href = attributeValue;\n return a.href;\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\n}\nfunction getHref() {\n var a = document.createElement('a');\n a.href = '';\n return a.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (name === 'src' || (name === 'href' && value)) {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'xlink:href' && value && value[0] !== '#') {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'background' &&\n value &&\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'srcset' && value) {\n return getAbsoluteSrcsetString(doc, value);\n }\n else if (name === 'style' && value) {\n return absoluteToStylesheet(value, getHref());\n }\n else if (tagName === 'object' && name === 'data' && value) {\n return absoluteToDoc(doc, value);\n }\n else {\n return value;\n }\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n if (typeof blockClass === 'string') {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n }\n else {\n for (var eIndex = 0; eIndex < element.classList.length; eIndex++) {\n var className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n return false;\n}\nfunction needMaskingText(node, maskTextClass, maskTextSelector) {\n if (!node) {\n return false;\n }\n if (node.nodeType === node.ELEMENT_NODE) {\n if (typeof maskTextClass === 'string') {\n if (node.classList.contains(maskTextClass)) {\n return true;\n }\n }\n else {\n for (var eIndex = 0; eIndex < node.classList.length; eIndex++) {\n var className = node.classList[eIndex];\n if (maskTextClass.test(className)) {\n return true;\n }\n }\n }\n if (maskTextSelector) {\n if (node.matches(maskTextSelector)) {\n return true;\n }\n }\n return needMaskingText(node.parentNode, maskTextClass, maskTextSelector);\n }\n if (node.nodeType === node.TEXT_NODE) {\n return needMaskingText(node.parentNode, maskTextClass, maskTextSelector);\n }\n return needMaskingText(node.parentNode, maskTextClass, maskTextSelector);\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n var win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n var fired = false;\n var readyState;\n try {\n readyState = win.document.readyState;\n }\n catch (error) {\n return;\n }\n if (readyState !== 'complete') {\n var timer_1 = setTimeout(function () {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener('load', function () {\n clearTimeout(timer_1);\n fired = true;\n listener();\n });\n return;\n }\n var blankUrl = 'about:blank';\n if (win.location.href !== blankUrl ||\n iframeEl.src === blankUrl ||\n iframeEl.src === '') {\n setTimeout(listener, 0);\n return;\n }\n iframeEl.addEventListener('load', listener);\n}\nfunction serializeNode(n, options) {\n var _a;\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, inlineStylesheet = options.inlineStylesheet, _b = options.maskInputOptions, maskInputOptions = _b === void 0 ? {} : _b, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _c = options.dataURLOptions, dataURLOptions = _c === void 0 ? {} : _c, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn;\n var rootId;\n if (doc.__sn) {\n var docId = doc.__sn.id;\n rootId = docId === 1 ? undefined : docId;\n }\n switch (n.nodeType) {\n case n.DOCUMENT_NODE:\n if (n.compatMode !== 'CSS1Compat') {\n return {\n type: NodeType.Document,\n childNodes: [],\n compatMode: n.compatMode,\n rootId: rootId\n };\n }\n else {\n return {\n type: NodeType.Document,\n childNodes: [],\n rootId: rootId\n };\n }\n case n.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType.DocumentType,\n name: n.name,\n publicId: n.publicId,\n systemId: n.systemId,\n rootId: rootId\n };\n case n.ELEMENT_NODE:\n var needBlock = _isBlockedElement(n, blockClass, blockSelector);\n var tagName = getValidTagName(n);\n var attributes_1 = {};\n for (var _i = 0, _d = Array.from(n.attributes); _i < _d.length; _i++) {\n var _e = _d[_i], name_1 = _e.name, value = _e.value;\n attributes_1[name_1] = transformAttribute(doc, tagName, name_1, value);\n }\n if (tagName === 'link' && inlineStylesheet) {\n var stylesheet = Array.from(doc.styleSheets).find(function (s) {\n return s.href === n.href;\n });\n var cssText = null;\n if (stylesheet) {\n cssText = getCssRulesString(stylesheet);\n }\n if (cssText) {\n delete attributes_1.rel;\n delete attributes_1.href;\n attributes_1._cssText = absoluteToStylesheet(cssText, stylesheet.href);\n }\n }\n if (tagName === 'style' &&\n n.sheet &&\n !(n.innerText ||\n n.textContent ||\n '').trim().length) {\n var cssText = getCssRulesString(n.sheet);\n if (cssText) {\n attributes_1._cssText = absoluteToStylesheet(cssText, getHref());\n }\n }\n if (tagName === 'input' ||\n tagName === 'textarea' ||\n tagName === 'select') {\n var value = n.value;\n if (attributes_1.type !== 'radio' &&\n attributes_1.type !== 'checkbox' &&\n attributes_1.type !== 'submit' &&\n attributes_1.type !== 'button' &&\n value) {\n attributes_1.value = maskInputValue({\n type: attributes_1.type,\n tagName: tagName,\n value: value,\n maskInputOptions: maskInputOptions,\n maskInputFn: maskInputFn\n });\n }\n else if (n.checked) {\n attributes_1.checked = n.checked;\n }\n }\n if (tagName === 'option') {\n if (n.selected && !maskInputOptions['select']) {\n attributes_1.selected = true;\n }\n else {\n delete attributes_1.selected;\n }\n }\n if (tagName === 'canvas' && recordCanvas) {\n if (n.__context === '2d') {\n if (!is2DCanvasBlank(n)) {\n attributes_1.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n }\n else if (!('__context' in n)) {\n var canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n var blankCanvas = document.createElement('canvas');\n blankCanvas.width = n.width;\n blankCanvas.height = n.height;\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes_1.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === 'img' && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement('canvas');\n canvasCtx = canvasService.getContext('2d');\n }\n var image_1 = n;\n var oldValue_1 = image_1.crossOrigin;\n image_1.crossOrigin = 'anonymous';\n var recordInlineImage = function () {\n try {\n canvasService.width = image_1.naturalWidth;\n canvasService.height = image_1.naturalHeight;\n canvasCtx.drawImage(image_1, 0, 0);\n attributes_1.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n catch (err) {\n console.warn(\"Cannot inline img src=\" + image_1.currentSrc + \"! Error: \" + err);\n }\n oldValue_1\n ? (attributes_1.crossOrigin = oldValue_1)\n : delete attributes_1.crossOrigin;\n };\n if (image_1.complete && image_1.naturalWidth !== 0)\n recordInlineImage();\n else\n image_1.onload = recordInlineImage;\n }\n if (tagName === 'audio' || tagName === 'video') {\n attributes_1.rr_mediaState = n.paused\n ? 'paused'\n : 'played';\n attributes_1.rr_mediaCurrentTime = n.currentTime;\n }\n if (n.scrollLeft) {\n attributes_1.rr_scrollLeft = n.scrollLeft;\n }\n if (n.scrollTop) {\n attributes_1.rr_scrollTop = n.scrollTop;\n }\n if (needBlock) {\n var _f = n.getBoundingClientRect(), width = _f.width, height = _f.height;\n attributes_1 = {\n \"class\": attributes_1[\"class\"],\n rr_width: width + \"px\",\n rr_height: height + \"px\"\n };\n }\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes_1.src)) {\n if (!n.contentDocument) {\n attributes_1.rr_src = attributes_1.src;\n }\n delete attributes_1.src;\n }\n return {\n type: NodeType.Element,\n tagName: tagName,\n attributes: attributes_1,\n childNodes: [],\n isSVG: isSVGElement(n) || undefined,\n needBlock: needBlock,\n rootId: rootId\n };\n case n.TEXT_NODE:\n var parentTagName = n.parentNode && n.parentNode.tagName;\n var textContent = n.textContent;\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\n var isScript = parentTagName === 'SCRIPT' ? true : undefined;\n if (isStyle && textContent) {\n try {\n if (n.nextSibling || n.previousSibling) {\n }\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\n textContent = stringifyStyleSheet(n.parentNode.sheet);\n }\n }\n catch (err) {\n console.warn(\"Cannot get CSS styles from text's parentNode. Error: \" + err, n);\n }\n textContent = absoluteToStylesheet(textContent, getHref());\n }\n if (isScript) {\n textContent = 'SCRIPT_PLACEHOLDER';\n }\n if (!isStyle &&\n !isScript &&\n needMaskingText(n, maskTextClass, maskTextSelector) &&\n textContent) {\n textContent = maskTextFn\n ? maskTextFn(textContent)\n : textContent.replace(/[\\S]/g, '*');\n }\n return {\n type: NodeType.Text,\n textContent: textContent || '',\n isStyle: isStyle,\n rootId: rootId\n };\n case n.CDATA_SECTION_NODE:\n return {\n type: NodeType.CDATA,\n textContent: '',\n rootId: rootId\n };\n case n.COMMENT_NODE:\n return {\n type: NodeType.Comment,\n textContent: n.textContent || '',\n rootId: rootId\n };\n default:\n return false;\n }\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === undefined) {\n return '';\n }\n else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\n return true;\n }\n else if (sn.type === NodeType.Element) {\n if (slimDOMOptions.script &&\n (sn.tagName === 'script' ||\n (sn.tagName === 'link' &&\n sn.attributes.rel === 'preload' &&\n sn.attributes.as === 'script') ||\n (sn.tagName === 'link' &&\n sn.attributes.rel === 'prefetch' &&\n typeof sn.attributes.href === 'string' &&\n sn.attributes.href.endsWith('.js')))) {\n return true;\n }\n else if (slimDOMOptions.headFavicon &&\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\n (sn.tagName === 'meta' &&\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\n lowerIfExists(sn.attributes.name) === 'application-name' ||\n lowerIfExists(sn.attributes.rel) === 'icon' ||\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\n return true;\n }\n else if (sn.tagName === 'meta') {\n if (slimDOMOptions.headMetaDescKeywords &&\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n }\n else if (slimDOMOptions.headMetaSocial &&\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\n return true;\n }\n else if (slimDOMOptions.headMetaRobots &&\n (lowerIfExists(sn.attributes.name) === 'robots' ||\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\n return true;\n }\n else if (slimDOMOptions.headMetaHttpEquiv &&\n sn.attributes['http-equiv'] !== undefined) {\n return true;\n }\n else if (slimDOMOptions.headMetaAuthorship &&\n (lowerIfExists(sn.attributes.name) === 'author' ||\n lowerIfExists(sn.attributes.name) === 'generator' ||\n lowerIfExists(sn.attributes.name) === 'framework' ||\n lowerIfExists(sn.attributes.name) === 'publisher' ||\n lowerIfExists(sn.attributes.name) === 'progid' ||\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n }\n else if (slimDOMOptions.headMetaVerification &&\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\n lowerIfExists(sn.attributes.name) === 'verification' ||\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n, options) {\n var doc = options.doc, map = options.map, 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, _h = options.keepIframeSrcFn, keepIframeSrcFn = _h === void 0 ? function () { return false; } : _h;\n var _j = options.preserveWhiteSpace, preserveWhiteSpace = _j === void 0 ? true : _j;\n var _serializedNode = serializeNode(n, {\n doc: doc,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (!_serializedNode) {\n console.warn(n, 'not serialized');\n return null;\n }\n var id;\n if ('__sn' in n) {\n id = n.__sn.id;\n }\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\n (!preserveWhiteSpace &&\n _serializedNode.type === NodeType.Text &&\n !_serializedNode.isStyle &&\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\n id = IGNORED_NODE;\n }\n else {\n id = genId();\n }\n var serializedNode = Object.assign(_serializedNode, { id: id });\n n.__sn = serializedNode;\n if (id === IGNORED_NODE) {\n return null;\n }\n map[id] = n;\n if (onSerialize) {\n onSerialize(n);\n }\n var recordChild = !skipChild;\n if (serializedNode.type === NodeType.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n if (n.shadowRoot)\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType.Document ||\n serializedNode.type === NodeType.Element) &&\n recordChild) {\n if (slimDOMOptions.headWhitespace &&\n _serializedNode.type === NodeType.Element &&\n _serializedNode.tagName === 'head') {\n preserveWhiteSpace = false;\n }\n var bypassOptions = {\n doc: doc,\n map: map,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: skipChild,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn\n };\n for (var _i = 0, _k = Array.from(n.childNodes); _i < _k.length; _i++) {\n var childN = _k[_i];\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n if (isElement(n) && n.shadowRoot) {\n for (var _l = 0, _m = Array.from(n.shadowRoot.childNodes); _l < _m.length; _l++) {\n var childN = _m[_l];\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedChildNode.isShadow = true;\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n if (n.parentNode && isShadowRoot(n.parentNode)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType.Element &&\n serializedNode.tagName === 'iframe') {\n onceIframeLoaded(n, function () {\n var iframeDoc = n.contentDocument;\n if (iframeDoc && onIframeLoad) {\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n map: map,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(n, serializedIframeNode);\n }\n }\n }, iframeLoadTimeout);\n }\n return serializedNode;\n}\nfunction snapshot(n, options) {\n var _a = options || {}, _b = _a.blockClass, blockClass = _b === void 0 ? 'rr-block' : _b, _c = _a.blockSelector, blockSelector = _c === void 0 ? null : _c, _d = _a.maskTextClass, maskTextClass = _d === void 0 ? 'rr-mask' : _d, _e = _a.maskTextSelector, maskTextSelector = _e === void 0 ? null : _e, _f = _a.inlineStylesheet, inlineStylesheet = _f === void 0 ? true : _f, _g = _a.inlineImages, inlineImages = _g === void 0 ? false : _g, _h = _a.recordCanvas, recordCanvas = _h === void 0 ? false : _h, _j = _a.maskAllInputs, maskAllInputs = _j === void 0 ? false : _j, maskTextFn = _a.maskTextFn, maskInputFn = _a.maskInputFn, _k = _a.slimDOM, slimDOM = _k === void 0 ? false : _k, dataURLOptions = _a.dataURLOptions, preserveWhiteSpace = _a.preserveWhiteSpace, onSerialize = _a.onSerialize, onIframeLoad = _a.onIframeLoad, iframeLoadTimeout = _a.iframeLoadTimeout, _l = _a.keepIframeSrcFn, keepIframeSrcFn = _l === void 0 ? function () { return false; } : _l;\n var idNodeMap = {};\n var maskInputOptions = maskAllInputs === true\n ? {\n color: true,\n date: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n }\n : maskAllInputs === false\n ? {\n password: true\n }\n : maskAllInputs;\n var slimDOMOptions = slimDOM === true || slimDOM === 'all'\n ?\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === 'all',\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n : slimDOM === false\n ? {}\n : slimDOM;\n return [\n serializeNodeWithId(n, {\n doc: n,\n map: idNodeMap,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn\n }),\n idNodeMap,\n ];\n}\n\nvar commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\nfunction parse(css, options) {\n if (options === void 0) { options = {}; }\n var lineno = 1;\n var column = 1;\n function updatePosition(str) {\n var lines = str.match(/\\n/g);\n if (lines) {\n lineno += lines.length;\n }\n var i = str.lastIndexOf('\\n');\n column = i === -1 ? column + str.length : str.length - i;\n }\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n var Position = (function () {\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n return Position;\n }());\n Position.prototype.content = css;\n var errorsList = [];\n function error(msg) {\n var err = new Error(options.source + ':' + lineno + ':' + column + ': ' + msg);\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = css;\n if (options.silent) {\n errorsList.push(err);\n }\n else {\n throw err;\n }\n }\n function stylesheet() {\n var rulesList = rules();\n return {\n type: 'stylesheet',\n stylesheet: {\n source: options.source,\n rules: rulesList,\n parsingErrors: errorsList\n }\n };\n }\n function open() {\n return match(/^{\\s*/);\n }\n function close() {\n return match(/^}/);\n }\n function rules() {\n var node;\n var rules = [];\n whitespace();\n comments(rules);\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\n if (node !== false) {\n rules.push(node);\n comments(rules);\n }\n }\n return rules;\n }\n function match(re) {\n var m = re.exec(css);\n if (!m) {\n return;\n }\n var str = m[0];\n updatePosition(str);\n css = css.slice(str.length);\n return m;\n }\n function whitespace() {\n match(/^\\s*/);\n }\n function comments(rules) {\n if (rules === void 0) { rules = []; }\n var c;\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n c = comment();\n }\n return rules;\n }\n function comment() {\n var pos = position();\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\n return;\n }\n var i = 2;\n while ('' !== css.charAt(i) &&\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\n ++i;\n }\n i += 2;\n if ('' === css.charAt(i - 1)) {\n return error('End of comment missing');\n }\n var str = css.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n css = css.slice(i);\n column += 2;\n return pos({\n type: 'comment',\n comment: str\n });\n }\n function selector() {\n var m = match(/^([^{]+)/);\n if (!m) {\n return;\n }\n return trim(m[0])\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function (m) {\n return m.replace(/,/g, '\\u200C');\n })\n .split(/\\s*(?![^(]*\\)),\\s*/)\n .map(function (s) {\n return s.replace(/\\u200C/g, ',');\n });\n }\n function declaration() {\n var pos = position();\n var propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\n if (!propMatch) {\n return;\n }\n var prop = trim(propMatch[0]);\n if (!match(/^:\\s*/)) {\n return error(\"property missing ':'\");\n }\n var val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\n var ret = pos({\n type: 'declaration',\n property: prop.replace(commentre, ''),\n value: val ? trim(val[0]).replace(commentre, '') : ''\n });\n match(/^[;\\s]*/);\n return ret;\n }\n function declarations() {\n var decls = [];\n if (!open()) {\n return error(\"missing '{'\");\n }\n comments(decls);\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n decl = declaration();\n }\n if (!close()) {\n return error(\"missing '}'\");\n }\n return decls;\n }\n function keyframe() {\n var m;\n var vals = [];\n var pos = position();\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\n vals.push(m[1]);\n match(/^,\\s*/);\n }\n if (!vals.length) {\n return;\n }\n return pos({\n type: 'keyframe',\n values: vals,\n declarations: declarations()\n });\n }\n function atkeyframes() {\n var pos = position();\n var m = match(/^@([-\\w]+)?keyframes\\s*/);\n if (!m) {\n return;\n }\n var vendor = m[1];\n m = match(/^([-\\w]+)\\s*/);\n if (!m) {\n return error('@keyframes missing name');\n }\n var name = m[1];\n if (!open()) {\n return error(\"@keyframes missing '{'\");\n }\n var frame;\n var frames = comments();\n while ((frame = keyframe())) {\n frames.push(frame);\n frames = frames.concat(comments());\n }\n if (!close()) {\n return error(\"@keyframes missing '}'\");\n }\n return pos({\n type: 'keyframes',\n name: name,\n vendor: vendor,\n keyframes: frames\n });\n }\n function atsupports() {\n var pos = position();\n var m = match(/^@supports *([^{]+)/);\n if (!m) {\n return;\n }\n var supports = trim(m[1]);\n if (!open()) {\n return error(\"@supports missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@supports missing '}'\");\n }\n return pos({\n type: 'supports',\n supports: supports,\n rules: style\n });\n }\n function athost() {\n var pos = position();\n var m = match(/^@host\\s*/);\n if (!m) {\n return;\n }\n if (!open()) {\n return error(\"@host missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@host missing '}'\");\n }\n return pos({\n type: 'host',\n rules: style\n });\n }\n function atmedia() {\n var pos = position();\n var m = match(/^@media *([^{]+)/);\n if (!m) {\n return;\n }\n var media = trim(m[1]);\n if (!open()) {\n return error(\"@media missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@media missing '}'\");\n }\n return pos({\n type: 'media',\n media: media,\n rules: style\n });\n }\n function atcustommedia() {\n var pos = position();\n var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\n if (!m) {\n return;\n }\n return pos({\n type: 'custom-media',\n name: trim(m[1]),\n media: trim(m[2])\n });\n }\n function atpage() {\n var pos = position();\n var m = match(/^@page */);\n if (!m) {\n return;\n }\n var sel = selector() || [];\n if (!open()) {\n return error(\"@page missing '{'\");\n }\n var decls = comments();\n var decl;\n while ((decl = declaration())) {\n decls.push(decl);\n decls = decls.concat(comments());\n }\n if (!close()) {\n return error(\"@page missing '}'\");\n }\n return pos({\n type: 'page',\n selectors: sel,\n declarations: decls\n });\n }\n function atdocument() {\n var pos = position();\n var m = match(/^@([-\\w]+)?document *([^{]+)/);\n if (!m) {\n return;\n }\n var vendor = trim(m[1]);\n var doc = trim(m[2]);\n if (!open()) {\n return error(\"@document missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@document missing '}'\");\n }\n return pos({\n type: 'document',\n document: doc,\n vendor: vendor,\n rules: style\n });\n }\n function atfontface() {\n var pos = position();\n var m = match(/^@font-face\\s*/);\n if (!m) {\n return;\n }\n if (!open()) {\n return error(\"@font-face missing '{'\");\n }\n var decls = comments();\n var decl;\n while ((decl = declaration())) {\n decls.push(decl);\n decls = decls.concat(comments());\n }\n if (!close()) {\n return error(\"@font-face missing '}'\");\n }\n return pos({\n type: 'font-face',\n declarations: decls\n });\n }\n var atimport = _compileAtrule('import');\n var atcharset = _compileAtrule('charset');\n var atnamespace = _compileAtrule('namespace');\n function _compileAtrule(name) {\n var re = new RegExp('^@' + name + '\\\\s*([^;]+);');\n return function () {\n var pos = position();\n var m = match(re);\n if (!m) {\n return;\n }\n var ret = { type: name };\n ret[name] = m[1].trim();\n return pos(ret);\n };\n }\n function atrule() {\n if (css[0] !== '@') {\n return;\n }\n return (atkeyframes() ||\n atmedia() ||\n atcustommedia() ||\n atsupports() ||\n atimport() ||\n atcharset() ||\n atnamespace() ||\n atdocument() ||\n atpage() ||\n athost() ||\n atfontface());\n }\n function rule() {\n var pos = position();\n var sel = selector();\n if (!sel) {\n return error('selector missing');\n }\n comments();\n return pos({\n type: 'rule',\n selectors: sel,\n declarations: declarations()\n });\n }\n return addParent(stylesheet());\n}\nfunction trim(str) {\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\n}\nfunction addParent(obj, parent) {\n var isNode = obj && typeof obj.type === 'string';\n var childParent = isNode ? obj : parent;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var k = _a[_i];\n var value = obj[k];\n if (Array.isArray(value)) {\n value.forEach(function (v) {\n addParent(v, childParent);\n });\n }\n else if (value && typeof value === 'object') {\n addParent(value, childParent);\n }\n }\n if (isNode) {\n Object.defineProperty(obj, 'parent', {\n configurable: true,\n writable: true,\n enumerable: false,\n value: parent || null\n });\n }\n return obj;\n}\n\nvar tagMap = {\n script: 'noscript',\n altglyph: 'altGlyph',\n altglyphdef: 'altGlyphDef',\n altglyphitem: 'altGlyphItem',\n animatecolor: 'animateColor',\n animatemotion: 'animateMotion',\n animatetransform: 'animateTransform',\n clippath: 'clipPath',\n feblend: 'feBlend',\n fecolormatrix: 'feColorMatrix',\n fecomponenttransfer: 'feComponentTransfer',\n fecomposite: 'feComposite',\n feconvolvematrix: 'feConvolveMatrix',\n fediffuselighting: 'feDiffuseLighting',\n fedisplacementmap: 'feDisplacementMap',\n fedistantlight: 'feDistantLight',\n fedropshadow: 'feDropShadow',\n feflood: 'feFlood',\n fefunca: 'feFuncA',\n fefuncb: 'feFuncB',\n fefuncg: 'feFuncG',\n fefuncr: 'feFuncR',\n fegaussianblur: 'feGaussianBlur',\n feimage: 'feImage',\n femerge: 'feMerge',\n femergenode: 'feMergeNode',\n femorphology: 'feMorphology',\n feoffset: 'feOffset',\n fepointlight: 'fePointLight',\n fespecularlighting: 'feSpecularLighting',\n fespotlight: 'feSpotLight',\n fetile: 'feTile',\n feturbulence: 'feTurbulence',\n foreignobject: 'foreignObject',\n glyphref: 'glyphRef',\n lineargradient: 'linearGradient',\n radialgradient: 'radialGradient'\n};\nfunction getTagName(n) {\n var tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\n if (tagName === 'link' && n.attributes._cssText) {\n tagName = 'style';\n }\n return tagName;\n}\nfunction escapeRegExp(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nvar HOVER_SELECTOR = /([^\\\\]):hover/;\nvar HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\nfunction addHoverClass(cssText, cache) {\n var cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\n if (cachedStyle)\n return cachedStyle;\n var ast = parse(cssText, {\n silent: true\n });\n if (!ast.stylesheet) {\n return cssText;\n }\n var selectors = [];\n ast.stylesheet.rules.forEach(function (rule) {\n if ('selectors' in rule) {\n (rule.selectors || []).forEach(function (selector) {\n if (HOVER_SELECTOR.test(selector)) {\n selectors.push(selector);\n }\n });\n }\n });\n if (selectors.length === 0) {\n return cssText;\n }\n var selectorMatcher = new RegExp(selectors\n .filter(function (selector, index) { return selectors.indexOf(selector) === index; })\n .sort(function (a, b) { return b.length - a.length; })\n .map(function (selector) {\n return escapeRegExp(selector);\n })\n .join('|'), 'g');\n var result = cssText.replace(selectorMatcher, function (selector) {\n var newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\n return selector + \", \" + newSelector;\n });\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\n return result;\n}\nfunction createCache() {\n var stylesWithHoverClass = new Map();\n return {\n stylesWithHoverClass: stylesWithHoverClass\n };\n}\nfunction buildNode(n, options) {\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\n switch (n.type) {\n case NodeType.Document:\n return doc.implementation.createDocument(null, '', null);\n case NodeType.DocumentType:\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\n case NodeType.Element:\n var tagName = getTagName(n);\n var node_1;\n if (n.isSVG) {\n node_1 = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\n }\n else {\n node_1 = doc.createElement(tagName);\n }\n var _loop_1 = function (name_1) {\n if (!n.attributes.hasOwnProperty(name_1)) {\n return \"continue\";\n }\n var value = n.attributes[name_1];\n if (tagName === 'option' && name_1 === 'selected' && value === false) {\n return \"continue\";\n }\n value =\n typeof value === 'boolean' || typeof value === 'number' ? '' : value;\n if (!name_1.startsWith('rr_')) {\n var isTextarea = tagName === 'textarea' && name_1 === 'value';\n var isRemoteOrDynamicCss = tagName === 'style' && name_1 === '_cssText';\n if (isRemoteOrDynamicCss && hackCss) {\n value = addHoverClass(value, cache);\n }\n if (isTextarea || isRemoteOrDynamicCss) {\n var child = doc.createTextNode(value);\n for (var _i = 0, _a = Array.from(node_1.childNodes); _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.nodeType === node_1.TEXT_NODE) {\n node_1.removeChild(c);\n }\n }\n node_1.appendChild(child);\n return \"continue\";\n }\n try {\n if (n.isSVG && name_1 === 'xlink:href') {\n node_1.setAttributeNS('http://www.w3.org/1999/xlink', name_1, value);\n }\n else if (name_1 === 'onload' ||\n name_1 === 'onclick' ||\n name_1.substring(0, 7) === 'onmouse') {\n node_1.setAttribute('_' + name_1, value);\n }\n else if (tagName === 'meta' &&\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\n name_1 === 'content') {\n node_1.setAttribute('csp-content', value);\n return \"continue\";\n }\n else if (tagName === 'link' &&\n n.attributes.rel === 'preload' &&\n n.attributes.as === 'script') {\n }\n else if (tagName === 'link' &&\n n.attributes.rel === 'prefetch' &&\n typeof n.attributes.href === 'string' &&\n n.attributes.href.endsWith('.js')) {\n }\n else if (tagName === 'img' &&\n n.attributes.srcset &&\n n.attributes.rr_dataURL) {\n node_1.setAttribute('rrweb-original-srcset', n.attributes.srcset);\n }\n else {\n node_1.setAttribute(name_1, value);\n }\n }\n catch (error) {\n }\n }\n else {\n if (tagName === 'canvas' && name_1 === 'rr_dataURL') {\n var image_1 = document.createElement('img');\n image_1.src = value;\n image_1.onload = function () {\n var ctx = node_1.getContext('2d');\n if (ctx) {\n ctx.drawImage(image_1, 0, 0, image_1.width, image_1.height);\n }\n };\n }\n else if (tagName === 'img' && name_1 === 'rr_dataURL') {\n var image = node_1;\n if (!image.currentSrc.startsWith('data:')) {\n image.setAttribute('rrweb-original-src', n.attributes.src);\n image.src = value;\n }\n }\n if (name_1 === 'rr_width') {\n node_1.style.width = value;\n }\n else if (name_1 === 'rr_height') {\n node_1.style.height = value;\n }\n else if (name_1 === 'rr_mediaCurrentTime') {\n node_1.currentTime = n.attributes\n .rr_mediaCurrentTime;\n }\n else if (name_1 === 'rr_mediaState') {\n switch (value) {\n case 'played':\n node_1\n .play()[\"catch\"](function (e) { return console.warn('media playback error', e); });\n break;\n case 'paused':\n node_1.pause();\n break;\n }\n }\n }\n };\n for (var name_1 in n.attributes) {\n _loop_1(name_1);\n }\n if (n.isShadowHost) {\n if (!node_1.shadowRoot) {\n node_1.attachShadow({ mode: 'open' });\n }\n else {\n while (node_1.shadowRoot.firstChild) {\n node_1.shadowRoot.removeChild(node_1.shadowRoot.firstChild);\n }\n }\n }\n return node_1;\n case NodeType.Text:\n return doc.createTextNode(n.isStyle && hackCss\n ? addHoverClass(n.textContent, cache)\n : n.textContent);\n case NodeType.CDATA:\n return doc.createCDATASection(n.textContent);\n case NodeType.Comment:\n return doc.createComment(n.textContent);\n default:\n return null;\n }\n}\nfunction buildNodeWithSN(n, options) {\n var doc = options.doc, map = options.map, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.hackCss, hackCss = _b === void 0 ? true : _b, afterAppend = options.afterAppend, cache = options.cache;\n var node = buildNode(n, { doc: doc, hackCss: hackCss, cache: cache });\n if (!node) {\n return null;\n }\n if (n.rootId) {\n console.assert(map[n.rootId] === doc, 'Target document should has the same root id.');\n }\n if (n.type === NodeType.Document) {\n doc.close();\n doc.open();\n if (n.compatMode === 'BackCompat' &&\n n.childNodes &&\n n.childNodes[0].type !== NodeType.DocumentType) {\n if (n.childNodes[0].type === NodeType.Element &&\n 'xmlns' in n.childNodes[0].attributes &&\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\n }\n else {\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\n }\n }\n node = doc;\n }\n node.__sn = n;\n map[n.id] = node;\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\n !skipChild) {\n for (var _i = 0, _c = n.childNodes; _i < _c.length; _i++) {\n var childN = _c[_i];\n var childNode = buildNodeWithSN(childN, {\n doc: doc,\n map: map,\n skipChild: false,\n hackCss: hackCss,\n afterAppend: afterAppend,\n cache: cache\n });\n if (!childNode) {\n console.warn('Failed to rebuild', childN);\n continue;\n }\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\n node.shadowRoot.appendChild(childNode);\n }\n else {\n node.appendChild(childNode);\n }\n if (afterAppend) {\n afterAppend(childNode);\n }\n }\n }\n return node;\n}\nfunction visit(idNodeMap, onVisit) {\n function walk(node) {\n onVisit(node);\n }\n for (var key in idNodeMap) {\n if (idNodeMap[key]) {\n walk(idNodeMap[key]);\n }\n }\n}\nfunction handleScroll(node) {\n var n = node.__sn;\n if (n.type !== NodeType.Element) {\n return;\n }\n var el = node;\n for (var name_2 in n.attributes) {\n if (!(n.attributes.hasOwnProperty(name_2) && name_2.startsWith('rr_'))) {\n continue;\n }\n var value = n.attributes[name_2];\n if (name_2 === 'rr_scrollLeft') {\n el.scrollLeft = value;\n }\n if (name_2 === 'rr_scrollTop') {\n el.scrollTop = value;\n }\n }\n}\nfunction rebuild(n, options) {\n var doc = options.doc, onVisit = options.onVisit, _a = options.hackCss, hackCss = _a === void 0 ? true : _a, afterAppend = options.afterAppend, cache = options.cache;\n var idNodeMap = {};\n var node = buildNodeWithSN(n, {\n doc: doc,\n map: idNodeMap,\n skipChild: false,\n hackCss: hackCss,\n afterAppend: afterAppend,\n cache: cache\n });\n visit(idNodeMap, function (visitedNode) {\n if (onVisit) {\n onVisit(visitedNode);\n }\n handleScroll(visitedNode);\n });\n return [node, idNodeMap];\n}\n\nexport { IGNORED_NODE, NodeType, addHoverClass, buildNodeWithSN, createCache, is2DCanvasBlank, isElement, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, transformAttribute };\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\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\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 __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nexport { __assign, __read, __rest, __spreadArray, __values };\n","var EventType;\n(function (EventType) {\n EventType[EventType[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType[EventType[\"Load\"] = 1] = \"Load\";\n EventType[EventType[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType[EventType[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType[EventType[\"Meta\"] = 4] = \"Meta\";\n EventType[EventType[\"Custom\"] = 5] = \"Custom\";\n EventType[EventType[\"Plugin\"] = 6] = \"Plugin\";\n})(EventType || (EventType = {}));\nvar IncrementalSource;\n(function (IncrementalSource) {\n IncrementalSource[IncrementalSource[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource[IncrementalSource[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource[IncrementalSource[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource[IncrementalSource[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource[IncrementalSource[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource[IncrementalSource[\"Input\"] = 5] = \"Input\";\n IncrementalSource[IncrementalSource[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource[IncrementalSource[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource[IncrementalSource[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource[IncrementalSource[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource[IncrementalSource[\"Font\"] = 10] = \"Font\";\n IncrementalSource[IncrementalSource[\"Log\"] = 11] = \"Log\";\n IncrementalSource[IncrementalSource[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource[IncrementalSource[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n})(IncrementalSource || (IncrementalSource = {}));\nvar MouseInteractions;\n(function (MouseInteractions) {\n MouseInteractions[MouseInteractions[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions[MouseInteractions[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions[MouseInteractions[\"Click\"] = 2] = \"Click\";\n MouseInteractions[MouseInteractions[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions[MouseInteractions[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions[MouseInteractions[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions[MouseInteractions[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions[MouseInteractions[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions[MouseInteractions[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions[MouseInteractions[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions[MouseInteractions[\"TouchCancel\"] = 10] = \"TouchCancel\";\n})(MouseInteractions || (MouseInteractions = {}));\nvar CanvasContext;\n(function (CanvasContext) {\n CanvasContext[CanvasContext[\"2D\"] = 0] = \"2D\";\n CanvasContext[CanvasContext[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext[CanvasContext[\"WebGL2\"] = 2] = \"WebGL2\";\n})(CanvasContext || (CanvasContext = {}));\nvar MediaInteractions;\n(function (MediaInteractions) {\n MediaInteractions[MediaInteractions[\"Play\"] = 0] = \"Play\";\n MediaInteractions[MediaInteractions[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions[MediaInteractions[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions[MediaInteractions[\"VolumeChange\"] = 3] = \"VolumeChange\";\n})(MediaInteractions || (MediaInteractions = {}));\nvar ReplayerEvents;\n(function (ReplayerEvents) {\n ReplayerEvents[\"Start\"] = \"start\";\n ReplayerEvents[\"Pause\"] = \"pause\";\n ReplayerEvents[\"Resume\"] = \"resume\";\n ReplayerEvents[\"Resize\"] = \"resize\";\n ReplayerEvents[\"Finish\"] = \"finish\";\n ReplayerEvents[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents[\"EventCast\"] = \"event-cast\";\n ReplayerEvents[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents[\"Flush\"] = \"flush\";\n ReplayerEvents[\"StateChange\"] = \"state-change\";\n ReplayerEvents[\"PlayBack\"] = \"play-back\";\n})(ReplayerEvents || (ReplayerEvents = {}));\n\nexport { CanvasContext, EventType, IncrementalSource, MediaInteractions, MouseInteractions, ReplayerEvents };\n","import { __values } from '../ext/tslib/tslib.es6.js';\nimport { IncrementalSource } from './types.js';\nimport { IGNORED_NODE, isShadowRoot, NodeType } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target) {\n if (target === void 0) { target = document; }\n var options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return function () { return target.removeEventListener(type, fn, options); };\n}\nfunction createMirror() {\n return {\n map: {},\n getId: function (n) {\n if (!n || !n.__sn) {\n return -1;\n }\n return n.__sn.id;\n },\n getNode: function (id) {\n return this.map[id] || null;\n },\n removeNodeFromMap: function (n) {\n var _this = this;\n var id = n.__sn && n.__sn.id;\n delete this.map[id];\n if (n.childNodes) {\n n.childNodes.forEach(function (child) {\n return _this.removeNodeFromMap(child);\n });\n }\n },\n has: function (id) {\n return this.map.hasOwnProperty(id);\n },\n reset: function () {\n this.map = {};\n },\n };\n}\nvar DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\n '\\r\\n' +\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\n '\\r\\n' +\n 'or you can use record.mirror to access the mirror instance during recording.';\nvar _mirror = {\n map: {},\n getId: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n};\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get: function (target, prop, receiver) {\n if (prop === 'map') {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n}\nfunction throttle(func, wait, options) {\n if (options === void 0) { options = {}; }\n var timeout = null;\n var previous = 0;\n return function (arg) {\n var now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n var remaining = wait - (now - previous);\n var context = this;\n var args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n }\n else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(function () {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win) {\n if (win === void 0) { win = window; }\n var original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(target, key, isRevoked\n ? d\n : {\n set: function (value) {\n var _this = this;\n setTimeout(function () {\n d.set.call(_this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n },\n });\n return function () { return hookSetter(target, key, original || {}, true); };\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return function () { };\n }\n var original_1 = source[name];\n var wrapped = replacement(original_1);\n if (typeof wrapped === 'function') {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original_1,\n },\n });\n }\n source[name] = wrapped;\n return function () {\n source[name] = original_1;\n };\n }\n catch (_a) {\n return function () { };\n }\n}\nfunction getWindowHeight() {\n return (window.innerHeight ||\n (document.documentElement && document.documentElement.clientHeight) ||\n (document.body && document.body.clientHeight));\n}\nfunction getWindowWidth() {\n return (window.innerWidth ||\n (document.documentElement && document.documentElement.clientWidth) ||\n (document.body && document.body.clientWidth));\n}\nfunction isBlocked(node, blockClass) {\n if (!node) {\n return false;\n }\n if (node.nodeType === node.ELEMENT_NODE) {\n var needBlock_1 = false;\n if (typeof blockClass === 'string') {\n if (node.closest !== undefined) {\n return node.closest('.' + blockClass) !== null;\n }\n else {\n needBlock_1 = node.classList.contains(blockClass);\n }\n }\n else {\n node.classList.forEach(function (className) {\n if (blockClass.test(className)) {\n needBlock_1 = true;\n }\n });\n }\n return needBlock_1 || isBlocked(node.parentNode, blockClass);\n }\n if (node.nodeType === node.TEXT_NODE) {\n return isBlocked(node.parentNode, blockClass);\n }\n return isBlocked(node.parentNode, blockClass);\n}\nfunction isIgnored(n) {\n if ('__sn' in n) {\n return n.__sn.id === IGNORED_NODE;\n }\n return false;\n}\nfunction isAncestorRemoved(target, mirror) {\n if (isShadowRoot(target)) {\n return false;\n }\n var id = mirror.getId(target);\n if (!mirror.has(id)) {\n return true;\n }\n if (target.parentNode &&\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!target.parentNode) {\n return true;\n }\n return isAncestorRemoved(target.parentNode, mirror);\n}\nfunction isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill(win) {\n if (win === void 0) { win = window; }\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype\n .forEach;\n }\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype\n .forEach;\n }\n if (!Node.prototype.contains) {\n Node.prototype.contains = function contains(node) {\n if (!(0 in arguments)) {\n throw new TypeError('1 argument is required');\n }\n do {\n if (this === node) {\n return true;\n }\n } while ((node = node && node.parentNode));\n return false;\n };\n }\n}\nvar TreeIndex = (function () {\n function TreeIndex() {\n this.reset();\n }\n TreeIndex.prototype.add = function (mutation) {\n var parentTreeNode = this.indexes.get(mutation.parentId);\n var treeNode = {\n id: mutation.node.id,\n mutation: mutation,\n children: [],\n texts: [],\n attributes: [],\n };\n if (!parentTreeNode) {\n this.tree[treeNode.id] = treeNode;\n }\n else {\n treeNode.parent = parentTreeNode;\n parentTreeNode.children[treeNode.id] = treeNode;\n }\n this.indexes.set(treeNode.id, treeNode);\n };\n TreeIndex.prototype.remove = function (mutation, mirror) {\n var _this = this;\n var parentTreeNode = this.indexes.get(mutation.parentId);\n var treeNode = this.indexes.get(mutation.id);\n var deepRemoveFromMirror = function (id) {\n _this.removeIdSet.add(id);\n var node = mirror.getNode(id);\n node === null || node === void 0 ? void 0 : node.childNodes.forEach(function (childNode) {\n if ('__sn' in childNode) {\n deepRemoveFromMirror(childNode.__sn.id);\n }\n });\n };\n var deepRemoveFromTreeIndex = function (node) {\n _this.removeIdSet.add(node.id);\n Object.values(node.children).forEach(function (n) { return deepRemoveFromTreeIndex(n); });\n var _treeNode = _this.indexes.get(node.id);\n if (_treeNode) {\n var _parentTreeNode = _treeNode.parent;\n if (_parentTreeNode) {\n delete _treeNode.parent;\n delete _parentTreeNode.children[_treeNode.id];\n _this.indexes.delete(mutation.id);\n }\n }\n };\n if (!treeNode) {\n this.removeNodeMutations.push(mutation);\n deepRemoveFromMirror(mutation.id);\n }\n else if (!parentTreeNode) {\n delete this.tree[treeNode.id];\n this.indexes.delete(treeNode.id);\n deepRemoveFromTreeIndex(treeNode);\n }\n else {\n delete treeNode.parent;\n delete parentTreeNode.children[treeNode.id];\n this.indexes.delete(mutation.id);\n deepRemoveFromTreeIndex(treeNode);\n }\n };\n TreeIndex.prototype.text = function (mutation) {\n var treeNode = this.indexes.get(mutation.id);\n if (treeNode) {\n treeNode.texts.push(mutation);\n }\n else {\n this.textMutations.push(mutation);\n }\n };\n TreeIndex.prototype.attribute = function (mutation) {\n var treeNode = this.indexes.get(mutation.id);\n if (treeNode) {\n treeNode.attributes.push(mutation);\n }\n else {\n this.attributeMutations.push(mutation);\n }\n };\n TreeIndex.prototype.scroll = function (d) {\n this.scrollMap.set(d.id, d);\n };\n TreeIndex.prototype.input = function (d) {\n this.inputMap.set(d.id, d);\n };\n TreeIndex.prototype.flush = function () {\n var e_1, _a, e_2, _b;\n var _this = this;\n var _c = this, tree = _c.tree, removeNodeMutations = _c.removeNodeMutations, textMutations = _c.textMutations, attributeMutations = _c.attributeMutations;\n var batchMutationData = {\n source: IncrementalSource.Mutation,\n removes: removeNodeMutations,\n texts: textMutations,\n attributes: attributeMutations,\n adds: [],\n };\n var walk = function (treeNode, removed) {\n if (removed) {\n _this.removeIdSet.add(treeNode.id);\n }\n batchMutationData.texts = batchMutationData.texts\n .concat(removed ? [] : treeNode.texts)\n .filter(function (m) { return !_this.removeIdSet.has(m.id); });\n batchMutationData.attributes = batchMutationData.attributes\n .concat(removed ? [] : treeNode.attributes)\n .filter(function (m) { return !_this.removeIdSet.has(m.id); });\n if (!_this.removeIdSet.has(treeNode.id) &&\n !_this.removeIdSet.has(treeNode.mutation.parentId) &&\n !removed) {\n batchMutationData.adds.push(treeNode.mutation);\n if (treeNode.children) {\n Object.values(treeNode.children).forEach(function (n) { return walk(n, false); });\n }\n }\n else {\n Object.values(treeNode.children).forEach(function (n) { return walk(n, true); });\n }\n };\n Object.values(tree).forEach(function (n) { return walk(n, false); });\n try {\n for (var _d = __values(this.scrollMap.keys()), _e = _d.next(); !_e.done; _e = _d.next()) {\n var id = _e.value;\n if (this.removeIdSet.has(id)) {\n this.scrollMap.delete(id);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var _f = __values(this.inputMap.keys()), _g = _f.next(); !_g.done; _g = _f.next()) {\n var id = _g.value;\n if (this.removeIdSet.has(id)) {\n this.inputMap.delete(id);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_b = _f.return)) _b.call(_f);\n }\n finally { if (e_2) throw e_2.error; }\n }\n var scrollMap = new Map(this.scrollMap);\n var inputMap = new Map(this.inputMap);\n this.reset();\n return {\n mutationData: batchMutationData,\n scrollMap: scrollMap,\n inputMap: inputMap,\n };\n };\n TreeIndex.prototype.reset = function () {\n this.tree = [];\n this.indexes = new Map();\n this.removeNodeMutations = [];\n this.textMutations = [];\n this.attributeMutations = [];\n this.removeIdSet = new Set();\n this.scrollMap = new Map();\n this.inputMap = new Map();\n };\n TreeIndex.prototype.idRemoved = function (id) {\n return this.removeIdSet.has(id);\n };\n return TreeIndex;\n}());\nfunction queueToResolveTrees(queue) {\n var e_3, _a;\n var queueNodeMap = {};\n var putIntoMap = function (m, parent) {\n var nodeInTree = {\n value: m,\n parent: parent,\n children: [],\n };\n queueNodeMap[m.node.id] = nodeInTree;\n return nodeInTree;\n };\n var queueNodeTrees = [];\n try {\n for (var queue_1 = __values(queue), queue_1_1 = queue_1.next(); !queue_1_1.done; queue_1_1 = queue_1.next()) {\n var mutation = queue_1_1.value;\n var nextId = mutation.nextId, parentId = mutation.parentId;\n if (nextId && nextId in queueNodeMap) {\n var nextInTree = queueNodeMap[nextId];\n if (nextInTree.parent) {\n var idx = nextInTree.parent.children.indexOf(nextInTree);\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\n }\n else {\n var idx = queueNodeTrees.indexOf(nextInTree);\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\n }\n continue;\n }\n if (parentId in queueNodeMap) {\n var parentInTree = queueNodeMap[parentId];\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\n continue;\n }\n queueNodeTrees.push(putIntoMap(mutation, null));\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (queue_1_1 && !queue_1_1.done && (_a = queue_1.return)) _a.call(queue_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return queueNodeTrees;\n}\nfunction iterateResolveTree(tree, cb) {\n cb(tree.value);\n for (var i = tree.children.length - 1; i >= 0; i--) {\n iterateResolveTree(tree.children[i], cb);\n }\n}\nfunction isIframeINode(node) {\n if ('__sn' in node) {\n return (node.__sn.type === NodeType.Element && node.__sn.tagName === 'iframe');\n }\n return false;\n}\nfunction getBaseDimension(node, rootIframe) {\n var _a, _b;\n var frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.frameElement;\n if (!frameElement || frameElement === rootIframe) {\n return {\n x: 0,\n y: 0,\n relativeScale: 1,\n absoluteScale: 1,\n };\n }\n var frameDimension = frameElement.getBoundingClientRect();\n var frameBaseDimension = getBaseDimension(frameElement, rootIframe);\n var relativeScale = frameDimension.height / frameElement.clientHeight;\n return {\n x: frameDimension.x * frameBaseDimension.relativeScale +\n frameBaseDimension.x,\n y: frameDimension.y * frameBaseDimension.relativeScale +\n frameBaseDimension.y,\n relativeScale: relativeScale,\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\n };\n}\nfunction hasShadowRoot(n) {\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\n}\n\nexport { TreeIndex, _mirror, createMirror, getBaseDimension, getWindowHeight, getWindowWidth, hasShadowRoot, hookSetter, isAncestorRemoved, isBlocked, isIframeINode, isIgnored, isTouchEvent, iterateResolveTree, on, patch, polyfill, queueToResolveTrees, throttle };\n","import { __values } from '../../ext/tslib/tslib.es6.js';\nimport { isShadowRoot, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isAncestorRemoved, isIframeINode, hasShadowRoot } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\n return '__ln' in n;\n}\nvar DoubleLinkedList = (function () {\n function DoubleLinkedList() {\n this.length = 0;\n this.head = null;\n }\n DoubleLinkedList.prototype.get = function (position) {\n if (position >= this.length) {\n throw new Error('Position outside of list range');\n }\n var current = this.head;\n for (var index = 0; index < position; index++) {\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\n }\n return current;\n };\n DoubleLinkedList.prototype.addNode = function (n) {\n var node = {\n value: n,\n previous: null,\n next: null,\n };\n n.__ln = node;\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\n var current = n.previousSibling.__ln.next;\n node.next = current;\n node.previous = n.previousSibling.__ln;\n n.previousSibling.__ln.next = node;\n if (current) {\n current.previous = node;\n }\n }\n else if (n.nextSibling &&\n isNodeInLinkedList(n.nextSibling) &&\n n.nextSibling.__ln.previous) {\n var current = n.nextSibling.__ln.previous;\n node.previous = current;\n node.next = n.nextSibling.__ln;\n n.nextSibling.__ln.previous = node;\n if (current) {\n current.next = node;\n }\n }\n else {\n if (this.head) {\n this.head.previous = node;\n }\n node.next = this.head;\n this.head = node;\n }\n this.length++;\n };\n DoubleLinkedList.prototype.removeNode = function (n) {\n var current = n.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n }\n }\n else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n }\n }\n if (n.__ln) {\n delete n.__ln;\n }\n this.length--;\n };\n return DoubleLinkedList;\n}());\nvar moveKey = function (id, parentId) { return \"\".concat(id, \"@\").concat(parentId); };\nfunction isINode(n) {\n return '__sn' in n;\n}\nvar MutationBuffer = (function () {\n function MutationBuffer() {\n var _this = this;\n this.frozen = false;\n this.locked = false;\n this.texts = [];\n this.attributes = [];\n this.removes = [];\n this.mapRemoves = [];\n this.movedMap = {};\n this.addedSet = new Set();\n this.movedSet = new Set();\n this.droppedSet = new Set();\n this.processMutations = function (mutations) {\n mutations.forEach(_this.processMutation);\n _this.emit();\n };\n this.emit = function () {\n var e_1, _a, e_2, _b;\n if (_this.frozen || _this.locked) {\n return;\n }\n var adds = [];\n var addList = new DoubleLinkedList();\n var getNextId = function (n) {\n var ns = n;\n var nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && _this.mirror.getId(ns);\n }\n return nextId;\n };\n var pushAdd = function (n) {\n var _a, _b, _c, _d, _e;\n var shadowHost = n.getRootNode\n ? (_a = n.getRootNode()) === null || _a === void 0 ? void 0 : _a.host\n : null;\n var rootShadowHost = shadowHost;\n while ((_c = (_b = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _b === void 0 ? void 0 : _b.call(rootShadowHost)) === null || _c === void 0 ? void 0 : _c.host)\n rootShadowHost =\n ((_e = (_d = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _d === void 0 ? void 0 : _d.call(rootShadowHost)) === null || _e === void 0 ? void 0 : _e.host) ||\n null;\n var notInDoc = !_this.doc.contains(n) &&\n (rootShadowHost === null || !_this.doc.contains(rootShadowHost));\n if (!n.parentNode || notInDoc) {\n return;\n }\n var parentId = isShadowRoot(n.parentNode)\n ? _this.mirror.getId(shadowHost)\n : _this.mirror.getId(n.parentNode);\n var nextId = getNextId(n);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n);\n }\n var sn = serializeNodeWithId(n, {\n doc: _this.doc,\n map: _this.mirror.map,\n blockClass: _this.blockClass,\n blockSelector: _this.blockSelector,\n maskTextClass: _this.maskTextClass,\n maskTextSelector: _this.maskTextSelector,\n skipChild: true,\n inlineStylesheet: _this.inlineStylesheet,\n maskInputOptions: _this.maskInputOptions,\n maskTextFn: _this.maskTextFn,\n maskInputFn: _this.maskInputFn,\n slimDOMOptions: _this.slimDOMOptions,\n recordCanvas: _this.recordCanvas,\n inlineImages: _this.inlineImages,\n onSerialize: function (currentN) {\n if (isIframeINode(currentN)) {\n _this.iframeManager.addIframe(currentN);\n }\n if (hasShadowRoot(n)) {\n _this.shadowDomManager.addShadowRoot(n.shadowRoot, document);\n }\n },\n onIframeLoad: function (iframe, childSn) {\n _this.iframeManager.attachIframe(iframe, childSn);\n _this.shadowDomManager.observeAttachShadow(iframe);\n },\n });\n if (sn) {\n adds.push({\n parentId: parentId,\n nextId: nextId,\n node: sn,\n });\n }\n };\n while (_this.mapRemoves.length) {\n _this.mirror.removeNodeFromMap(_this.mapRemoves.shift());\n }\n try {\n for (var _c = __values(_this.movedSet), _d = _c.next(); !_d.done; _d = _c.next()) {\n var n = _d.value;\n if (isParentRemoved(_this.removes, n, _this.mirror) &&\n !_this.movedSet.has(n.parentNode)) {\n continue;\n }\n pushAdd(n);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var _e = __values(_this.addedSet), _f = _e.next(); !_f.done; _f = _e.next()) {\n var n = _f.value;\n if (!isAncestorInSet(_this.droppedSet, n) &&\n !isParentRemoved(_this.removes, n, _this.mirror)) {\n pushAdd(n);\n }\n else if (isAncestorInSet(_this.movedSet, n)) {\n pushAdd(n);\n }\n else {\n _this.droppedSet.add(n);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n var candidate = null;\n while (addList.length) {\n var node = null;\n if (candidate) {\n var parentId = _this.mirror.getId(candidate.value.parentNode);\n var nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node = candidate;\n }\n }\n if (!node) {\n for (var index = addList.length - 1; index >= 0; index--) {\n var _node = addList.get(index);\n if (_node) {\n var parentId = _this.mirror.getId(_node.value.parentNode);\n var nextId = getNextId(_node.value);\n if (parentId !== -1 && nextId !== -1) {\n node = _node;\n break;\n }\n }\n }\n }\n if (!node) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node.previous;\n addList.removeNode(node.value);\n pushAdd(node.value);\n }\n var payload = {\n texts: _this.texts\n .map(function (text) { return ({\n id: _this.mirror.getId(text.node),\n value: text.value,\n }); })\n .filter(function (text) { return _this.mirror.has(text.id); }),\n attributes: _this.attributes\n .map(function (attribute) { return ({\n id: _this.mirror.getId(attribute.node),\n attributes: attribute.attributes,\n }); })\n .filter(function (attribute) { return _this.mirror.has(attribute.id); }),\n removes: _this.removes,\n adds: adds,\n };\n if (!payload.texts.length &&\n !payload.attributes.length &&\n !payload.removes.length &&\n !payload.adds.length) {\n return;\n }\n _this.texts = [];\n _this.attributes = [];\n _this.removes = [];\n _this.addedSet = new Set();\n _this.movedSet = new Set();\n _this.droppedSet = new Set();\n _this.movedMap = {};\n _this.mutationCb(payload);\n };\n this.processMutation = function (m) {\n var e_3, _a, e_4, _b;\n if (isIgnored(m.target)) {\n return;\n }\n switch (m.type) {\n case 'characterData': {\n var value = m.target.textContent;\n if (!isBlocked(m.target, _this.blockClass) && value !== m.oldValue) {\n _this.texts.push({\n value: needMaskingText(m.target, _this.maskTextClass, _this.maskTextSelector) && value\n ? _this.maskTextFn\n ? _this.maskTextFn(value)\n : value.replace(/[\\S]/g, '*')\n : value,\n node: m.target,\n });\n }\n break;\n }\n case 'attributes': {\n var target = m.target;\n var value = m.target.getAttribute(m.attributeName);\n if (m.attributeName === 'value') {\n value = maskInputValue({\n maskInputOptions: _this.maskInputOptions,\n tagName: m.target.tagName,\n type: m.target.getAttribute('type'),\n value: value,\n maskInputFn: _this.maskInputFn,\n });\n }\n if (isBlocked(m.target, _this.blockClass) || value === m.oldValue) {\n return;\n }\n var item = _this.attributes.find(function (a) { return a.node === m.target; });\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n };\n _this.attributes.push(item);\n }\n if (m.attributeName === 'style') {\n var old = _this.doc.createElement('span');\n if (m.oldValue) {\n old.setAttribute('style', m.oldValue);\n }\n if (item.attributes.style === undefined ||\n item.attributes.style === null) {\n item.attributes.style = {};\n }\n var styleObj = item.attributes.style;\n try {\n for (var _c = __values(Array.from(target.style)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var pname = _d.value;\n var newValue = target.style.getPropertyValue(pname);\n var newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) ||\n newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === '') {\n styleObj[pname] = newValue;\n }\n else {\n styleObj[pname] = [newValue, newPriority];\n }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_3) throw e_3.error; }\n }\n try {\n for (var _e = __values(Array.from(old.style)), _f = _e.next(); !_f.done; _f = _e.next()) {\n var pname = _f.value;\n if (target.style.getPropertyValue(pname) === '') {\n styleObj[pname] = false;\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n else {\n item.attributes[m.attributeName] = transformAttribute(_this.doc, m.target.tagName, m.attributeName, value);\n }\n break;\n }\n case 'childList': {\n m.addedNodes.forEach(function (n) { return _this.genAdds(n, m.target); });\n m.removedNodes.forEach(function (n) {\n var nodeId = _this.mirror.getId(n);\n var parentId = isShadowRoot(m.target)\n ? _this.mirror.getId(m.target.host)\n : _this.mirror.getId(m.target);\n if (isBlocked(m.target, _this.blockClass) || isIgnored(n)) {\n return;\n }\n if (_this.addedSet.has(n)) {\n deepDelete(_this.addedSet, n);\n _this.droppedSet.add(n);\n }\n else if (_this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, _this.mirror)) ;\n else if (_this.movedSet.has(n) &&\n _this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(_this.movedSet, n);\n }\n else {\n _this.removes.push({\n parentId: parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) ? true : undefined,\n });\n }\n _this.mapRemoves.push(n);\n });\n break;\n }\n }\n };\n this.genAdds = function (n, target) {\n if (target && isBlocked(target, _this.blockClass)) {\n return;\n }\n if (isINode(n)) {\n if (isIgnored(n)) {\n return;\n }\n _this.movedSet.add(n);\n var targetId = null;\n if (target && isINode(target)) {\n targetId = target.__sn.id;\n }\n if (targetId) {\n _this.movedMap[moveKey(n.__sn.id, targetId)] = true;\n }\n }\n else {\n _this.addedSet.add(n);\n _this.droppedSet.delete(n);\n }\n if (!isBlocked(n, _this.blockClass))\n n.childNodes.forEach(function (childN) { return _this.genAdds(childN); });\n };\n }\n MutationBuffer.prototype.init = function (options) {\n var _this = this;\n [\n 'mutationCb',\n 'blockClass',\n 'blockSelector',\n 'maskTextClass',\n 'maskTextSelector',\n 'inlineStylesheet',\n 'maskInputOptions',\n 'maskTextFn',\n 'maskInputFn',\n 'recordCanvas',\n 'inlineImages',\n 'slimDOMOptions',\n 'doc',\n 'mirror',\n 'iframeManager',\n 'shadowDomManager',\n 'canvasManager',\n ].forEach(function (key) {\n _this[key] = options[key];\n });\n };\n MutationBuffer.prototype.freeze = function () {\n this.frozen = true;\n this.canvasManager.freeze();\n };\n MutationBuffer.prototype.unfreeze = function () {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n };\n MutationBuffer.prototype.isFrozen = function () {\n return this.frozen;\n };\n MutationBuffer.prototype.lock = function () {\n this.locked = true;\n this.canvasManager.lock();\n };\n MutationBuffer.prototype.unlock = function () {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n };\n MutationBuffer.prototype.reset = function () {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n };\n return MutationBuffer;\n}());\nfunction deepDelete(addsSet, n) {\n addsSet.delete(n);\n n.childNodes.forEach(function (childN) { return deepDelete(addsSet, childN); });\n}\nfunction isParentRemoved(removes, n, mirror) {\n var parentNode = n.parentNode;\n if (!parentNode) {\n return false;\n }\n var parentId = mirror.getId(parentNode);\n if (removes.some(function (r) { return r.id === parentId; })) {\n return true;\n }\n return isParentRemoved(removes, parentNode, mirror);\n}\nfunction isAncestorInSet(set, n) {\n var parentNode = n.parentNode;\n if (!parentNode) {\n return false;\n }\n if (set.has(parentNode)) {\n return true;\n }\n return isAncestorInSet(set, parentNode);\n}\n\nexport default MutationBuffer;\n","import { __read, __values, __spreadArray, __assign } from '../../ext/tslib/tslib.es6.js';\nimport { maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isTouchEvent, isBlocked, getWindowHeight, getWindowWidth, hookSetter, patch } from '../utils.js';\nimport { IncrementalSource, MouseInteractions } from '../types.js';\nimport MutationBuffer from './mutation.js';\n\nvar mutationBuffers = [];\nvar isCSSGroupingRuleSupported = typeof CSSGroupingRule !== 'undefined';\nvar isCSSMediaRuleSupported = typeof CSSMediaRule !== 'undefined';\nvar isCSSSupportsRuleSupported = typeof CSSSupportsRule !== 'undefined';\nvar isCSSConditionRuleSupported = typeof CSSConditionRule !== 'undefined';\nfunction getEventTarget(event) {\n try {\n if ('composedPath' in event) {\n var path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n }\n else if ('path' in event && event.path.length) {\n return event.path[0];\n }\n return event.target;\n }\n catch (_a) {\n return event.target;\n }\n}\nfunction initMutationObserver(options, rootEl) {\n var _a, _b;\n var mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n var mutationObserverCtor = window.MutationObserver ||\n window.__rrMutationObserver;\n var 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');\n if (angularZoneSymbol &&\n window[angularZoneSymbol]) {\n mutationObserverCtor = window[angularZoneSymbol];\n }\n var observer = new mutationObserverCtor(mutationBuffer.processMutations.bind(mutationBuffer));\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n });\n return observer;\n}\nfunction initMoveObserver(_a) {\n var mousemoveCb = _a.mousemoveCb, sampling = _a.sampling, doc = _a.doc, mirror = _a.mirror;\n if (sampling.mousemove === false) {\n return function () { };\n }\n var threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\n var callbackThreshold = typeof sampling.mousemoveCallback === 'number'\n ? sampling.mousemoveCallback\n : 500;\n var positions = [];\n var timeBaseline;\n var wrappedCb = throttle(function (source) {\n var totalOffset = Date.now() - timeBaseline;\n mousemoveCb(positions.map(function (p) {\n p.timeOffset -= totalOffset;\n return p;\n }), source);\n positions = [];\n timeBaseline = null;\n }, callbackThreshold);\n var updatePosition = throttle(function (evt) {\n var target = getEventTarget(evt);\n var _a = isTouchEvent(evt)\n ? evt.changedTouches[0]\n : evt, clientX = _a.clientX, clientY = _a.clientY;\n if (!timeBaseline) {\n timeBaseline = Date.now();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror.getId(target),\n timeOffset: Date.now() - timeBaseline,\n });\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\n ? IncrementalSource.Drag\n : evt instanceof MouseEvent\n ? IncrementalSource.MouseMove\n : IncrementalSource.TouchMove);\n }, threshold, {\n trailing: false,\n });\n var handlers = [\n on('mousemove', updatePosition, doc),\n on('touchmove', updatePosition, doc),\n on('drag', updatePosition, doc),\n ];\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction initMouseInteractionObserver(_a) {\n var mouseInteractionCb = _a.mouseInteractionCb, doc = _a.doc, mirror = _a.mirror, blockClass = _a.blockClass, sampling = _a.sampling;\n if (sampling.mouseInteraction === false) {\n return function () { };\n }\n var disableMap = sampling.mouseInteraction === true ||\n sampling.mouseInteraction === undefined\n ? {}\n : sampling.mouseInteraction;\n var handlers = [];\n var getHandler = function (eventKey) {\n return function (event) {\n var target = getEventTarget(event);\n if (isBlocked(target, blockClass)) {\n return;\n }\n var e = isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e) {\n return;\n }\n var id = mirror.getId(target);\n var clientX = e.clientX, clientY = e.clientY;\n mouseInteractionCb({\n type: MouseInteractions[eventKey],\n id: id,\n x: clientX,\n y: clientY,\n });\n };\n };\n Object.keys(MouseInteractions)\n .filter(function (key) {\n return Number.isNaN(Number(key)) &&\n !key.endsWith('_Departed') &&\n disableMap[key] !== false;\n })\n .forEach(function (eventKey) {\n var eventName = eventKey.toLowerCase();\n var handler = getHandler(eventKey);\n handlers.push(on(eventName, handler, doc));\n });\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction initScrollObserver(_a) {\n var scrollCb = _a.scrollCb, doc = _a.doc, mirror = _a.mirror, blockClass = _a.blockClass, sampling = _a.sampling;\n var updatePosition = throttle(function (evt) {\n var target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass)) {\n return;\n }\n var id = mirror.getId(target);\n if (target === doc) {\n var scrollEl = (doc.scrollingElement || doc.documentElement);\n scrollCb({\n id: id,\n x: scrollEl.scrollLeft,\n y: scrollEl.scrollTop,\n });\n }\n else {\n scrollCb({\n id: id,\n x: target.scrollLeft,\n y: target.scrollTop,\n });\n }\n }, sampling.scroll || 100);\n return on('scroll', updatePosition, doc);\n}\nfunction initViewportResizeObserver(_a) {\n var viewportResizeCb = _a.viewportResizeCb;\n var lastH = -1;\n var lastW = -1;\n var updateDimension = throttle(function () {\n var height = getWindowHeight();\n var width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height),\n });\n lastH = height;\n lastW = width;\n }\n }, 200);\n return on('resize', updateDimension, window);\n}\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\n var value = __assign({}, v);\n if (!enable)\n delete value.userTriggered;\n return value;\n}\nvar INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\nvar lastInputValueMap = new WeakMap();\nfunction initInputObserver(_a) {\n var inputCb = _a.inputCb, doc = _a.doc, mirror = _a.mirror, blockClass = _a.blockClass, ignoreClass = _a.ignoreClass, maskInputOptions = _a.maskInputOptions, maskInputFn = _a.maskInputFn, sampling = _a.sampling, userTriggeredOnInput = _a.userTriggeredOnInput;\n function eventHandler(event) {\n var target = getEventTarget(event);\n var userTriggered = event.isTrusted;\n if (target && target.tagName === 'OPTION')\n target = target.parentElement;\n if (!target ||\n !target.tagName ||\n INPUT_TAGS.indexOf(target.tagName) < 0 ||\n isBlocked(target, blockClass)) {\n return;\n }\n var type = target.type;\n if (target.classList.contains(ignoreClass)) {\n return;\n }\n var text = target.value;\n var isChecked = false;\n if (type === 'radio' || type === 'checkbox') {\n isChecked = target.checked;\n }\n else if (maskInputOptions[target.tagName.toLowerCase()] ||\n maskInputOptions[type]) {\n text = maskInputValue({\n maskInputOptions: maskInputOptions,\n tagName: target.tagName,\n type: type,\n value: text,\n maskInputFn: maskInputFn,\n });\n }\n cbWithDedup(target, wrapEventWithUserTriggeredFlag({ text: text, isChecked: isChecked, userTriggered: userTriggered }, userTriggeredOnInput));\n var name = target.name;\n if (type === 'radio' && name && isChecked) {\n doc\n .querySelectorAll(\"input[type=\\\"radio\\\"][name=\\\"\".concat(name, \"\\\"]\"))\n .forEach(function (el) {\n if (el !== target) {\n cbWithDedup(el, wrapEventWithUserTriggeredFlag({\n text: el.value,\n isChecked: !isChecked,\n userTriggered: false,\n }, userTriggeredOnInput));\n }\n });\n }\n }\n function cbWithDedup(target, v) {\n var lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue ||\n lastInputValue.text !== v.text ||\n lastInputValue.isChecked !== v.isChecked) {\n lastInputValueMap.set(target, v);\n var id = mirror.getId(target);\n inputCb(__assign(__assign({}, v), { id: id }));\n }\n }\n var events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\n var handlers = events.map(function (eventName) { return on(eventName, eventHandler, doc); });\n var propertyDescriptor = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value');\n var hookProperties = [\n [HTMLInputElement.prototype, 'value'],\n [HTMLInputElement.prototype, 'checked'],\n [HTMLSelectElement.prototype, 'value'],\n [HTMLTextAreaElement.prototype, 'value'],\n [HTMLSelectElement.prototype, 'selectedIndex'],\n [HTMLOptionElement.prototype, 'selected'],\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push.apply(handlers, __spreadArray([], __read(hookProperties.map(function (p) {\n return hookSetter(p[0], p[1], {\n set: function () {\n eventHandler({ target: this });\n },\n });\n })), false));\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction getNestedCSSRulePositions(rule) {\n var positions = [];\n function recurse(childRule, pos) {\n if ((isCSSGroupingRuleSupported &&\n childRule.parentRule instanceof CSSGroupingRule) ||\n (isCSSMediaRuleSupported &&\n childRule.parentRule instanceof CSSMediaRule) ||\n (isCSSSupportsRuleSupported &&\n childRule.parentRule instanceof CSSSupportsRule) ||\n (isCSSConditionRuleSupported &&\n childRule.parentRule instanceof CSSConditionRule)) {\n var rules = Array.from(childRule.parentRule.cssRules);\n var index = rules.indexOf(childRule);\n pos.unshift(index);\n }\n else {\n var rules = Array.from(childRule.parentStyleSheet.cssRules);\n var index = rules.indexOf(childRule);\n pos.unshift(index);\n }\n return pos;\n }\n return recurse(rule, positions);\n}\nfunction initStyleSheetObserver(_a, _b) {\n var styleSheetRuleCb = _a.styleSheetRuleCb, mirror = _a.mirror;\n var win = _b.win;\n var insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = function (rule, index) {\n var id = mirror.getId(this.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n adds: [{ rule: rule, index: index }],\n });\n }\n return insertRule.apply(this, arguments);\n };\n var deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = function (index) {\n var id = mirror.getId(this.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n removes: [{ index: index }],\n });\n }\n return deleteRule.apply(this, arguments);\n };\n var supportedNestedCSSRuleTypes = {};\n if (isCSSGroupingRuleSupported) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n }\n else {\n if (isCSSMediaRuleSupported) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (isCSSConditionRuleSupported) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (isCSSSupportsRuleSupported) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n var unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(function (_a) {\n var _b = __read(_a, 2), typeKey = _b[0], type = _b[1];\n unmodifiedFunctions[typeKey] = {\n insertRule: type.prototype.insertRule,\n deleteRule: type.prototype.deleteRule,\n };\n type.prototype.insertRule = function (rule, index) {\n var id = mirror.getId(this.parentStyleSheet.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n adds: [\n {\n rule: rule,\n index: __spreadArray(__spreadArray([], __read(getNestedCSSRulePositions(this)), false), [\n index || 0,\n ], false),\n },\n ],\n });\n }\n return unmodifiedFunctions[typeKey].insertRule.apply(this, arguments);\n };\n type.prototype.deleteRule = function (index) {\n var id = mirror.getId(this.parentStyleSheet.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n removes: [{ index: __spreadArray(__spreadArray([], __read(getNestedCSSRulePositions(this)), false), [index], false) }],\n });\n }\n return unmodifiedFunctions[typeKey].deleteRule.apply(this, arguments);\n };\n });\n return function () {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n Object.entries(supportedNestedCSSRuleTypes).forEach(function (_a) {\n var _b = __read(_a, 2), typeKey = _b[0], type = _b[1];\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n };\n}\nfunction initStyleDeclarationObserver(_a, _b) {\n var styleDeclarationCb = _a.styleDeclarationCb, mirror = _a.mirror;\n var win = _b.win;\n var setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = function (property, value, priority) {\n var _a, _b;\n var id = mirror.getId((_b = (_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet) === null || _b === void 0 ? void 0 : _b.ownerNode);\n if (id !== -1) {\n styleDeclarationCb({\n id: id,\n set: {\n property: property,\n value: value,\n priority: priority,\n },\n index: getNestedCSSRulePositions(this.parentRule),\n });\n }\n return setProperty.apply(this, arguments);\n };\n var removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = function (property) {\n var _a, _b;\n var id = mirror.getId((_b = (_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet) === null || _b === void 0 ? void 0 : _b.ownerNode);\n if (id !== -1) {\n styleDeclarationCb({\n id: id,\n remove: {\n property: property,\n },\n index: getNestedCSSRulePositions(this.parentRule),\n });\n }\n return removeProperty.apply(this, arguments);\n };\n return function () {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n };\n}\nfunction initMediaInteractionObserver(_a) {\n var mediaInteractionCb = _a.mediaInteractionCb, blockClass = _a.blockClass, mirror = _a.mirror, sampling = _a.sampling;\n var handler = function (type) {\n return throttle(function (event) {\n var target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass)) {\n return;\n }\n var _a = target, currentTime = _a.currentTime, volume = _a.volume, muted = _a.muted;\n mediaInteractionCb({\n type: type,\n id: mirror.getId(target),\n currentTime: currentTime,\n volume: volume,\n muted: muted,\n });\n }, sampling.media || 500);\n };\n var handlers = [\n on('play', handler(0)),\n on('pause', handler(1)),\n on('seeked', handler(2)),\n on('volumechange', handler(3)),\n ];\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction initFontObserver(_a) {\n var fontCb = _a.fontCb, doc = _a.doc;\n var win = doc.defaultView;\n if (!win) {\n return function () { };\n }\n var handlers = [];\n var fontMap = new WeakMap();\n var originalFontFace = win.FontFace;\n win.FontFace = function FontFace(family, source, descriptors) {\n var fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family: family,\n buffer: typeof source !== 'string',\n descriptors: descriptors,\n fontSource: typeof source === 'string'\n ? source\n :\n JSON.stringify(Array.from(new Uint8Array(source))),\n });\n return fontFace;\n };\n var restoreHandler = patch(doc.fonts, 'add', function (original) {\n return function (fontFace) {\n setTimeout(function () {\n var p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }, 0);\n return original.apply(this, [fontFace]);\n };\n });\n handlers.push(function () {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction mergeHooks(o, hooks) {\n var mutationCb = o.mutationCb, mousemoveCb = o.mousemoveCb, mouseInteractionCb = o.mouseInteractionCb, scrollCb = o.scrollCb, viewportResizeCb = o.viewportResizeCb, inputCb = o.inputCb, mediaInteractionCb = o.mediaInteractionCb, styleSheetRuleCb = o.styleSheetRuleCb, styleDeclarationCb = o.styleDeclarationCb, canvasMutationCb = o.canvasMutationCb, fontCb = o.fontCb;\n o.mutationCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mutation) {\n hooks.mutation.apply(hooks, __spreadArray([], __read(p), false));\n }\n mutationCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.mousemoveCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mousemove) {\n hooks.mousemove.apply(hooks, __spreadArray([], __read(p), false));\n }\n mousemoveCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.mouseInteractionCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction.apply(hooks, __spreadArray([], __read(p), false));\n }\n mouseInteractionCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.scrollCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.scroll) {\n hooks.scroll.apply(hooks, __spreadArray([], __read(p), false));\n }\n scrollCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.viewportResizeCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.viewportResize) {\n hooks.viewportResize.apply(hooks, __spreadArray([], __read(p), false));\n }\n viewportResizeCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.inputCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.input) {\n hooks.input.apply(hooks, __spreadArray([], __read(p), false));\n }\n inputCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.mediaInteractionCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction.apply(hooks, __spreadArray([], __read(p), false));\n }\n mediaInteractionCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.styleSheetRuleCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule.apply(hooks, __spreadArray([], __read(p), false));\n }\n styleSheetRuleCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.styleDeclarationCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration.apply(hooks, __spreadArray([], __read(p), false));\n }\n styleDeclarationCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.canvasMutationCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.canvasMutation) {\n hooks.canvasMutation.apply(hooks, __spreadArray([], __read(p), false));\n }\n canvasMutationCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.fontCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.font) {\n hooks.font.apply(hooks, __spreadArray([], __read(p), false));\n }\n fontCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n}\nfunction initObservers(o, hooks) {\n var e_1, _a;\n if (hooks === void 0) { hooks = {}; }\n var currentWindow = o.doc.defaultView;\n if (!currentWindow) {\n return function () { };\n }\n mergeHooks(o, hooks);\n var mutationObserver = initMutationObserver(o, o.doc);\n var mousemoveHandler = initMoveObserver(o);\n var mouseInteractionHandler = initMouseInteractionObserver(o);\n var scrollHandler = initScrollObserver(o);\n var viewportResizeHandler = initViewportResizeObserver(o);\n var inputHandler = initInputObserver(o);\n var mediaInteractionHandler = initMediaInteractionObserver(o);\n var styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n var styleDeclarationObserver = initStyleDeclarationObserver(o, {\n win: currentWindow,\n });\n var fontObserver = o.collectFonts ? initFontObserver(o) : function () { };\n var pluginHandlers = [];\n try {\n for (var _b = __values(o.plugins), _c = _b.next(); !_c.done; _c = _b.next()) {\n var plugin = _c.value;\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return function () {\n mutationBuffers.forEach(function (b) { return b.reset(); });\n mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n pluginHandlers.forEach(function (h) { return h(); });\n };\n}\n\nexport { INPUT_TAGS, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","var IframeManager = (function () {\n function IframeManager(options) {\n this.iframes = new WeakMap();\n this.mutationCb = options.mutationCb;\n }\n IframeManager.prototype.addIframe = function (iframeEl) {\n this.iframes.set(iframeEl, true);\n };\n IframeManager.prototype.addLoadListener = function (cb) {\n this.loadListener = cb;\n };\n IframeManager.prototype.attachIframe = function (iframeEl, childSn) {\n var _a;\n this.mutationCb({\n adds: [\n {\n parentId: iframeEl.__sn.id,\n nextId: null,\n node: childSn,\n },\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true,\n });\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\n };\n return IframeManager;\n}());\n\nexport { IframeManager };\n","import { __assign } from '../../ext/tslib/tslib.es6.js';\nimport { initMutationObserver, initScrollObserver } from './observer.js';\nimport { patch } from '../utils.js';\n\nvar ShadowDomManager = (function () {\n function ShadowDomManager(options) {\n this.restorePatches = [];\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n var manager = this;\n this.restorePatches.push(patch(HTMLElement.prototype, 'attachShadow', function (original) {\n return function () {\n var shadowRoot = original.apply(this, arguments);\n if (this.shadowRoot)\n manager.addShadowRoot(this.shadowRoot, this.ownerDocument);\n return shadowRoot;\n };\n }));\n }\n ShadowDomManager.prototype.addShadowRoot = function (shadowRoot, doc) {\n initMutationObserver(__assign(__assign({}, this.bypassOptions), { doc: doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\n initScrollObserver(__assign(__assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror }));\n };\n ShadowDomManager.prototype.observeAttachShadow = function (iframeElement) {\n if (iframeElement.contentWindow) {\n var manager_1 = this;\n this.restorePatches.push(patch(iframeElement.contentWindow.HTMLElement.prototype, 'attachShadow', function (original) {\n return function () {\n var shadowRoot = original.apply(this, arguments);\n if (this.shadowRoot)\n manager_1.addShadowRoot(this.shadowRoot, iframeElement.contentDocument);\n return shadowRoot;\n };\n }));\n }\n };\n ShadowDomManager.prototype.reset = function () {\n this.restorePatches.forEach(function (restorePatch) { return restorePatch(); });\n };\n return ShadowDomManager;\n}());\n\nexport { ShadowDomManager };\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 { __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { encode } from '../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nvar webGLVarMap = new Map();\nfunction variableListFor(ctx, ctor) {\n var contextMap = webGLVarMap.get(ctx);\n if (!contextMap) {\n contextMap = new Map();\n webGLVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nvar saveWebGLVar = function (value, win, ctx) {\n if (!value ||\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\n return;\n var name = value.constructor.name;\n var list = variableListFor(ctx, name);\n var index = list.indexOf(value);\n if (index === -1) {\n index = list.length;\n list.push(value);\n }\n return index;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map(function (arg) { return serializeArg(arg, win, ctx); });\n }\n else if (value === null) {\n return value;\n }\n else if (value instanceof Float32Array ||\n value instanceof Float64Array ||\n value instanceof Int32Array ||\n value instanceof Uint32Array ||\n value instanceof Uint8Array ||\n value instanceof Uint16Array ||\n value instanceof Int16Array ||\n value instanceof Int8Array ||\n value instanceof Uint8ClampedArray) {\n var name_1 = value.constructor.name;\n return {\n rr_type: name_1,\n args: [Object.values(value)],\n };\n }\n else if (value instanceof ArrayBuffer) {\n var name_2 = value.constructor.name;\n var base64 = encode(value);\n return {\n rr_type: name_2,\n base64: base64,\n };\n }\n else if (value instanceof DataView) {\n var name_3 = value.constructor.name;\n return {\n rr_type: name_3,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength,\n ],\n };\n }\n else if (value instanceof HTMLImageElement) {\n var name_4 = value.constructor.name;\n var src = value.src;\n return {\n rr_type: name_4,\n src: src,\n };\n }\n else if (value instanceof ImageData) {\n var name_5 = value.constructor.name;\n return {\n rr_type: name_5,\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\n };\n }\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\n var name_6 = value.constructor.name;\n var index = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name_6,\n index: index,\n };\n }\n return value;\n}\nvar serializeArgs = function (args, win, ctx) {\n return __spreadArray([], __read(args), false).map(function (arg) { return serializeArg(arg, win, ctx); });\n};\nvar isInstanceOfWebGLObject = function (value, win) {\n var webGLConstructorNames = [\n 'WebGLActiveInfo',\n 'WebGLBuffer',\n 'WebGLFramebuffer',\n 'WebGLProgram',\n 'WebGLRenderbuffer',\n 'WebGLShader',\n 'WebGLShaderPrecisionFormat',\n 'WebGLTexture',\n 'WebGLUniformLocation',\n 'WebGLVertexArrayObject',\n 'WebGLVertexArrayObjectOES',\n ];\n var supportedWebGLConstructorNames = webGLConstructorNames.filter(function (name) { return typeof win[name] === 'function'; });\n return Boolean(supportedWebGLConstructorNames.find(function (name) { return value instanceof win[name]; }));\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { __spreadArray, __read, __values } from '../../../../ext/tslib/tslib.es6.js';\nimport { CanvasContext } from '../../../types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, mirror, win) {\n var e_1, _a;\n var handlers = [];\n var props = Object.getOwnPropertyNames(prototype);\n var _loop_1 = function (prop) {\n try {\n if (typeof prototype[prop] !== 'function') {\n return \"continue\";\n }\n var restoreHandler = patch(prototype, prop, function (original) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = original.apply(this, args);\n saveWebGLVar(result, win, prototype);\n if (!isBlocked(this.canvas, blockClass)) {\n var id = mirror.getId(this.canvas);\n var recordArgs = serializeArgs(__spreadArray([], __read(args), false), win, prototype);\n var mutation = {\n type: type,\n property: prop,\n args: recordArgs,\n };\n cb(this.canvas, mutation);\n }\n return result;\n };\n });\n handlers.push(restoreHandler);\n }\n catch (_b) {\n var hookHandler = hookSetter(prototype, prop, {\n set: function (v) {\n cb(this.canvas, {\n type: type,\n property: prop,\n args: [v],\n setter: true,\n });\n },\n });\n handlers.push(hookHandler);\n }\n };\n try {\n for (var props_1 = __values(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {\n var prop = props_1_1.value;\n _loop_1(prop);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, mirror) {\n var handlers = [];\n handlers.push.apply(handlers, __spreadArray([], __read(patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, mirror, win)), false));\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\n handlers.push.apply(handlers, __spreadArray([], __read(patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, mirror, win)), false));\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\n\nexport default initCanvasWebGLMutationObserver;\n","import { __rest } from '../../../../ext/tslib/tslib.es6.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\n\nvar CanvasManager = (function () {\n function CanvasManager(options) {\n this.pendingCanvasMutations = new Map();\n this.rafStamps = { latestId: 0, invokeId: null };\n this.frozen = false;\n this.locked = false;\n this.processMutation = function (target, mutation) {\n var newFrame = this.rafStamps.invokeId &&\n this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n };\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (options.recordCanvas === true)\n this.initCanvasMutationObserver(options.win, options.blockClass);\n }\n CanvasManager.prototype.reset = function () {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n };\n CanvasManager.prototype.freeze = function () {\n this.frozen = true;\n };\n CanvasManager.prototype.unfreeze = function () {\n this.frozen = false;\n };\n CanvasManager.prototype.lock = function () {\n this.locked = true;\n };\n CanvasManager.prototype.unlock = function () {\n this.locked = false;\n };\n CanvasManager.prototype.initCanvasMutationObserver = function (win, blockClass) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n var canvasContextReset = initCanvasContextObserver(win, blockClass);\n var canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, this.mirror);\n var canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, this.mirror);\n this.resetObservers = function () {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n };\n CanvasManager.prototype.startPendingCanvasMutationFlusher = function () {\n var _this = this;\n requestAnimationFrame(function () { return _this.flushPendingCanvasMutations(); });\n };\n CanvasManager.prototype.startRAFTimestamping = function () {\n var _this = this;\n var setLatestRAFTimestamp = function (timestamp) {\n _this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n CanvasManager.prototype.flushPendingCanvasMutations = function () {\n var _this = this;\n this.pendingCanvasMutations.forEach(function (values, canvas) {\n var id = _this.mirror.getId(canvas);\n _this.flushPendingCanvasMutationFor(canvas, id);\n });\n requestAnimationFrame(function () { return _this.flushPendingCanvasMutations(); });\n };\n CanvasManager.prototype.flushPendingCanvasMutationFor = function (canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n var valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1)\n return;\n var values = valuesWithType.map(function (value) {\n value.type; var rest = __rest(value, [\"type\"]);\n return rest;\n });\n var type = valuesWithType[0].type;\n this.mutationCb({ id: id, type: type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n };\n return CanvasManager;\n}());\n\nexport { CanvasManager };\n","import { __assign, __read, __values } from '../../ext/tslib/tslib.es6.js';\nimport { snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, createMirror, getWindowWidth, getWindowHeight, isIframeINode, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\n\nfunction wrapEvent(e) {\n return __assign(__assign({}, e), { timestamp: Date.now() });\n}\nvar wrappedEmit;\nvar takeFullSnapshot;\nvar mirror = createMirror();\nfunction record(options) {\n if (options === void 0) { options = {}; }\n var emit = options.emit, checkoutEveryNms = options.checkoutEveryNms, checkoutEveryNth = options.checkoutEveryNth, _a = options.blockClass, blockClass = _a === void 0 ? 'rr-block' : _a, _b = options.blockSelector, blockSelector = _b === void 0 ? null : _b, _c = options.ignoreClass, ignoreClass = _c === void 0 ? 'rr-ignore' : _c, _d = options.maskTextClass, maskTextClass = _d === void 0 ? 'rr-mask' : _d, _e = options.maskTextSelector, maskTextSelector = _e === void 0 ? null : _e, _f = options.inlineStylesheet, inlineStylesheet = _f === void 0 ? true : _f, maskAllInputs = options.maskAllInputs, _maskInputOptions = options.maskInputOptions, _slimDOMOptions = options.slimDOMOptions, maskInputFn = options.maskInputFn, maskTextFn = options.maskTextFn, hooks = options.hooks, packFn = options.packFn, _g = options.sampling, sampling = _g === void 0 ? {} : _g, mousemoveWait = options.mousemoveWait, _h = options.recordCanvas, recordCanvas = _h === void 0 ? false : _h, _j = options.userTriggeredOnInput, userTriggeredOnInput = _j === void 0 ? false : _j, _k = options.collectFonts, collectFonts = _k === void 0 ? false : _k, _l = options.inlineImages, inlineImages = _l === void 0 ? false : _l, plugins = options.plugins, _m = options.keepIframeSrcFn, keepIframeSrcFn = _m === void 0 ? function () { return false; } : _m;\n if (!emit) {\n throw new Error('emit function is required');\n }\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\n sampling.mousemove = mousemoveWait;\n }\n var maskInputOptions = maskAllInputs === true\n ? {\n color: true,\n date: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true,\n }\n : _maskInputOptions !== undefined\n ? _maskInputOptions\n : { password: true };\n var slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\n ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n headMetaAuthorship: _slimDOMOptions === 'all',\n headMetaDescKeywords: _slimDOMOptions === 'all',\n }\n : _slimDOMOptions\n ? _slimDOMOptions\n : {};\n polyfill();\n var lastFullSnapshotEvent;\n var incrementalSnapshotCount = 0;\n var eventProcessor = function (e) {\n var e_1, _a;\n try {\n for (var _b = __values(plugins || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var plugin = _c.value;\n if (plugin.eventProcessor) {\n e = plugin.eventProcessor(e);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (packFn) {\n e = packFn(e);\n }\n return e;\n };\n wrappedEmit = function (e, isCheckout) {\n var _a;\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\n e.type !== EventType.FullSnapshot &&\n !(e.type === EventType.IncrementalSnapshot &&\n e.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach(function (buf) { return buf.unfreeze(); });\n }\n emit(eventProcessor(e), isCheckout);\n if (e.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e;\n incrementalSnapshotCount = 0;\n }\n else if (e.type === EventType.IncrementalSnapshot) {\n if (e.data.source === IncrementalSource.Mutation &&\n e.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n var exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n var exceedTime = checkoutEveryNms &&\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot(true);\n }\n }\n };\n var wrappedMutationEmit = function (m) {\n wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Mutation }, m),\n }));\n };\n var wrappedScrollEmit = function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Scroll }, p),\n }));\n };\n var wrappedCanvasMutationEmit = function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.CanvasMutation }, p),\n }));\n };\n var iframeManager = new IframeManager({\n mutationCb: wrappedMutationEmit,\n });\n var canvasManager = new CanvasManager({\n recordCanvas: recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass: blockClass,\n mirror: mirror,\n });\n var shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n sampling: sampling,\n slimDOMOptions: slimDOMOptions,\n iframeManager: iframeManager,\n canvasManager: canvasManager,\n },\n mirror: mirror,\n });\n takeFullSnapshot = function (isCheckout) {\n var _a, _b, _c, _d;\n if (isCheckout === void 0) { isCheckout = false; }\n wrappedEmit(wrapEvent({\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight(),\n },\n }), isCheckout);\n mutationBuffers.forEach(function (buf) { return buf.lock(); });\n var _e = __read(snapshot(document, {\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn: maskTextFn,\n slimDOM: slimDOMOptions,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n onSerialize: function (n) {\n if (isIframeINode(n)) {\n iframeManager.addIframe(n);\n }\n if (hasShadowRoot(n)) {\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\n }\n },\n onIframeLoad: function (iframe, childSn) {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n keepIframeSrcFn: keepIframeSrcFn,\n }), 2), node = _e[0], idNodeMap = _e[1];\n if (!node) {\n return console.warn('Failed to snapshot the document');\n }\n mirror.map = idNodeMap;\n wrappedEmit(wrapEvent({\n type: EventType.FullSnapshot,\n data: {\n node: node,\n initialOffset: {\n left: window.pageXOffset !== undefined\n ? window.pageXOffset\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollLeft) ||\n ((_b = (_a = document === null || document === void 0 ? void 0 : document.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\n (document === null || document === void 0 ? void 0 : document.body.scrollLeft) ||\n 0,\n top: window.pageYOffset !== undefined\n ? window.pageYOffset\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollTop) ||\n ((_d = (_c = document === null || document === void 0 ? void 0 : document.body) === null || _c === void 0 ? void 0 : _c.parentElement) === null || _d === void 0 ? void 0 : _d.scrollTop) ||\n (document === null || document === void 0 ? void 0 : document.body.scrollTop) ||\n 0,\n },\n },\n }));\n mutationBuffers.forEach(function (buf) { return buf.unlock(); });\n };\n try {\n var handlers_1 = [];\n handlers_1.push(on('DOMContentLoaded', function () {\n wrappedEmit(wrapEvent({\n type: EventType.DomContentLoaded,\n data: {},\n }));\n }));\n var observe_1 = function (doc) {\n var _a;\n return initObservers({\n mutationCb: wrappedMutationEmit,\n mousemoveCb: function (positions, source) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: source,\n positions: positions,\n },\n }));\n },\n mouseInteractionCb: function (d) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.MouseInteraction }, d),\n }));\n },\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: function (d) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.ViewportResize }, d),\n }));\n },\n inputCb: function (v) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Input }, v),\n }));\n },\n mediaInteractionCb: function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.MediaInteraction }, p),\n }));\n },\n styleSheetRuleCb: function (r) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.StyleSheetRule }, r),\n }));\n },\n styleDeclarationCb: function (r) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.StyleDeclaration }, r),\n }));\n },\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Font }, p),\n }));\n },\n blockClass: blockClass,\n ignoreClass: ignoreClass,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n maskInputOptions: maskInputOptions,\n inlineStylesheet: inlineStylesheet,\n sampling: sampling,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n userTriggeredOnInput: userTriggeredOnInput,\n collectFonts: collectFonts,\n doc: doc,\n maskInputFn: maskInputFn,\n maskTextFn: maskTextFn,\n blockSelector: blockSelector,\n slimDOMOptions: slimDOMOptions,\n mirror: mirror,\n iframeManager: iframeManager,\n shadowDomManager: shadowDomManager,\n canvasManager: canvasManager,\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter(function (p) { return p.observer; })) === null || _a === void 0 ? void 0 : _a.map(function (p) { return ({\n observer: p.observer,\n options: p.options,\n callback: function (payload) {\n return wrappedEmit(wrapEvent({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload: payload,\n },\n }));\n },\n }); })) || [],\n }, hooks);\n };\n iframeManager.addLoadListener(function (iframeEl) {\n handlers_1.push(observe_1(iframeEl.contentDocument));\n });\n var init_1 = function () {\n takeFullSnapshot();\n handlers_1.push(observe_1(document));\n };\n if (document.readyState === 'interactive' ||\n document.readyState === 'complete') {\n init_1();\n }\n else {\n handlers_1.push(on('load', function () {\n wrappedEmit(wrapEvent({\n type: EventType.Load,\n data: {},\n }));\n init_1();\n }, window));\n }\n return function () {\n handlers_1.forEach(function (h) { return h(); });\n };\n }\n catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = function (tag, payload) {\n if (!wrappedEmit) {\n throw new Error('please add custom event after start recording');\n }\n wrappedEmit(wrapEvent({\n type: EventType.Custom,\n data: {\n tag: tag,\n payload: payload,\n },\n }));\n};\nrecord.freezePage = function () {\n mutationBuffers.forEach(function (buf) { return buf.freeze(); });\n};\nrecord.takeFullSnapshot = function (isCheckout) {\n if (!takeFullSnapshot) {\n throw new Error('please take full snapshot after start recording');\n }\n takeFullSnapshot(isCheckout);\n};\nrecord.mirror = mirror;\n\nexport default record;\n","import { __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { patch, isBlocked } from '../../../utils.js';\n\nfunction initCanvasContextObserver(win, blockClass) {\n var handlers = [];\n try {\n var restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\n return function (contextType) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!isBlocked(this, blockClass)) {\n if (!('__context' in this))\n this.__context = contextType;\n }\n return original.apply(this, __spreadArray([contextType], __read(args), false));\n };\n });\n handlers.push(restoreHandler);\n }\n catch (_a) {\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\n\nexport default initCanvasContextObserver;\n","import { __values, __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { CanvasContext } from '../../../types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, mirror) {\n var e_1, _a;\n var handlers = [];\n var props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\n var _loop_1 = function (prop) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\n return \"continue\";\n }\n var restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\n return function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!isBlocked(this.canvas, blockClass)) {\n setTimeout(function () {\n var recordArgs = __spreadArray([], __read(args), false);\n if (prop === 'drawImage') {\n if (recordArgs[0] &&\n recordArgs[0] instanceof HTMLCanvasElement) {\n var canvas = recordArgs[0];\n var ctx = canvas.getContext('2d');\n var imgd = ctx === null || ctx === void 0 ? void 0 : ctx.getImageData(0, 0, canvas.width, canvas.height);\n var pix = imgd === null || imgd === void 0 ? void 0 : imgd.data;\n recordArgs[0] = JSON.stringify(pix);\n }\n }\n cb(_this.canvas, {\n type: CanvasContext['2D'],\n property: prop,\n args: recordArgs,\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n });\n handlers.push(restoreHandler);\n }\n catch (_b) {\n var hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\n set: function (v) {\n cb(this.canvas, {\n type: CanvasContext['2D'],\n property: prop,\n args: [v],\n setter: true,\n });\n },\n });\n handlers.push(hookHandler);\n }\n };\n try {\n for (var props2D_1 = __values(props2D), props2D_1_1 = props2D_1.next(); !props2D_1_1.done; props2D_1_1 = props2D_1.next()) {\n var prop = props2D_1_1.value;\n _loop_1(prop);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (props2D_1_1 && !props2D_1_1.done && (_a = props2D_1.return)) _a.call(props2D_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\n\nexport default initCanvas2DMutationObserver;\n","var StackFrame = (function () {\n function StackFrame(obj) {\n this.fileName = obj.fileName || '';\n this.functionName = obj.functionName || '';\n this.lineNumber = obj.lineNumber;\n this.columnNumber = obj.columnNumber;\n }\n StackFrame.prototype.toString = function () {\n var lineNumber = this.lineNumber || '';\n var columnNumber = this.columnNumber || '';\n if (this.functionName) {\n return (this.functionName +\n ' (' +\n this.fileName +\n ':' +\n lineNumber +\n ':' +\n columnNumber +\n ')');\n }\n return this.fileName + ':' + lineNumber + ':' + columnNumber;\n };\n return StackFrame;\n}());\nvar FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nvar CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nvar SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\nvar ErrorStackParser = {\n parse: function (error) {\n if (!error) {\n return [];\n }\n if (typeof error.stacktrace !== 'undefined' ||\n typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n }\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n }\n else if (error.stack) {\n return this.parseFFOrSafari(error);\n }\n else {\n throw new Error('Cannot parse given Error object');\n }\n },\n extractLocation: function (urlLike) {\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n if (!parts)\n throw new Error(\"Cannot parse given url: \".concat(urlLike));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n parseV8OrIE: function (error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf('(eval ') > -1) {\n line = line\n .replace(/eval code/g, 'eval')\n .replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n sanitizedLine = location\n ? sanitizedLine.replace(location[0], '')\n : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1\n ? undefined\n : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n });\n }, this);\n },\n parseFFOrSafari: function (error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n return new StackFrame({\n functionName: line,\n });\n }\n else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n });\n }\n }, this);\n },\n parseOpera: function (e) {\n if (!e.stacktrace ||\n (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n }\n else if (!e.stack) {\n return this.parseOpera10(e);\n }\n else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function (e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: parseFloat(match[1]),\n }));\n }\n }\n return result;\n },\n parseOpera10: function (e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: parseFloat(match[1]),\n }));\n }\n }\n return result;\n },\n parseOpera11: function (error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return (!!line.match(FIREFOX_SAFARI_STACK_REGEXP) &&\n !line.match(/^Error created at/));\n }, this);\n return filtered.map(function (line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || '';\n var functionName = functionCall\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n });\n }, this);\n },\n};\n\nexport { ErrorStackParser, StackFrame };\n","import { __values } from '../../../../ext/tslib/tslib.es6.js';\n\nfunction pathToSelector(node) {\n if (!node || !node.outerHTML) {\n return '';\n }\n var path = '';\n while (node.parentElement) {\n var name_1 = node.localName;\n if (!name_1) {\n break;\n }\n name_1 = name_1.toLowerCase();\n var parent_1 = node.parentElement;\n var domSiblings = [];\n if (parent_1.children && parent_1.children.length > 0) {\n for (var i = 0; i < parent_1.children.length; i++) {\n var sibling = parent_1.children[i];\n if (sibling.localName && sibling.localName.toLowerCase) {\n if (sibling.localName.toLowerCase() === name_1) {\n domSiblings.push(sibling);\n }\n }\n }\n }\n if (domSiblings.length > 1) {\n name_1 += ':eq(' + domSiblings.indexOf(node) + ')';\n }\n path = name_1 + (path ? '>' + path : '');\n node = parent_1;\n }\n return path;\n}\nfunction isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\nfunction isObjTooDeep(obj, limit) {\n var e_1, _a;\n if (limit === 0) {\n return true;\n }\n var keys = Object.keys(obj);\n try {\n for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {\n var key = keys_1_1.value;\n if (isObject(obj[key]) && isObjTooDeep(obj[key], limit - 1)) {\n return true;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return false;\n}\nfunction stringify(obj, stringifyOptions) {\n var options = {\n numOfKeysLimit: 50,\n depthOfLimit: 4,\n };\n Object.assign(options, stringifyOptions);\n var stack = [];\n var keys = [];\n return JSON.stringify(obj, function (key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n if (~stack.indexOf(value)) {\n if (stack[0] === value) {\n value = '[Circular ~]';\n }\n else {\n value =\n '[Circular ~.' +\n keys.slice(0, stack.indexOf(value)).join('.') +\n ']';\n }\n }\n }\n else {\n stack.push(value);\n }\n if (value === null || value === undefined) {\n return value;\n }\n if (shouldIgnore(value)) {\n return toString(value);\n }\n if (value instanceof Event) {\n var eventResult = {};\n for (var eventKey in value) {\n var eventValue = value[eventKey];\n if (Array.isArray(eventValue)) {\n eventResult[eventKey] = pathToSelector(eventValue.length ? eventValue[0] : null);\n }\n else {\n eventResult[eventKey] = eventValue;\n }\n }\n return eventResult;\n }\n else if (value instanceof Node) {\n if (value instanceof HTMLElement) {\n return value ? value.outerHTML : '';\n }\n return value.nodeName;\n }\n else if (value instanceof Error) {\n return value.stack\n ? value.stack + '\\nEnd of stack for Error object'\n : value.name + ': ' + value.message;\n }\n return value;\n });\n function shouldIgnore(_obj) {\n if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {\n return true;\n }\n if (typeof _obj === 'function') {\n return true;\n }\n if (isObject(_obj) && isObjTooDeep(_obj, options.depthOfLimit)) {\n return true;\n }\n return false;\n }\n function toString(_obj) {\n var str = _obj.toString();\n if (options.stringLengthLimit && str.length > options.stringLengthLimit) {\n str = \"\".concat(str.slice(0, options.stringLengthLimit), \"...\");\n }\n return str;\n }\n}\n\nexport { stringify };\n","import { __values, __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { patch } from '../../../utils.js';\nimport { ErrorStackParser } from './error-stack-parser.js';\nimport { stringify } from './stringify.js';\n\nvar defaultLogOptions = {\n level: [\n 'assert',\n 'clear',\n 'count',\n 'countReset',\n 'debug',\n 'dir',\n 'dirxml',\n 'error',\n 'group',\n 'groupCollapsed',\n 'groupEnd',\n 'info',\n 'log',\n 'table',\n 'time',\n 'timeEnd',\n 'timeLog',\n 'trace',\n 'warn',\n ],\n lengthThreshold: 1000,\n logger: 'console',\n};\nfunction initLogObserver(cb, win, logOptions) {\n var e_1, _a;\n var loggerType = logOptions.logger;\n if (!loggerType) {\n return function () { };\n }\n var logger;\n if (typeof loggerType === 'string') {\n logger = win[loggerType];\n }\n else {\n logger = loggerType;\n }\n var logCount = 0;\n var cancelHandlers = [];\n if (logOptions.level.includes('error')) {\n if (window) {\n var errorHandler_1 = function (event) {\n var message = event.message, error = event.error;\n var trace = ErrorStackParser.parse(error).map(function (stackFrame) { return stackFrame.toString(); });\n var payload = [stringify(message, logOptions.stringifyOptions)];\n cb({\n level: 'error',\n trace: trace,\n payload: payload,\n });\n };\n window.addEventListener('error', errorHandler_1);\n cancelHandlers.push(function () {\n if (window)\n window.removeEventListener('error', errorHandler_1);\n });\n }\n }\n try {\n for (var _b = __values(logOptions.level), _c = _b.next(); !_c.done; _c = _b.next()) {\n var levelType = _c.value;\n cancelHandlers.push(replace(logger, levelType));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return function () {\n cancelHandlers.forEach(function (h) { return h(); });\n };\n function replace(_logger, level) {\n var _this = this;\n if (!_logger[level]) {\n return function () { };\n }\n return patch(_logger, level, function (original) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n original.apply(_this, args);\n try {\n var trace = ErrorStackParser.parse(new Error())\n .map(function (stackFrame) { return stackFrame.toString(); })\n .splice(1);\n var payload = args.map(function (s) {\n return stringify(s, logOptions.stringifyOptions);\n });\n logCount++;\n if (logCount < logOptions.lengthThreshold) {\n cb({\n level: level,\n trace: trace,\n payload: payload,\n });\n }\n else if (logCount === logOptions.lengthThreshold) {\n cb({\n level: 'warn',\n trace: [],\n payload: [\n stringify('The number of log records reached the threshold.'),\n ],\n });\n }\n }\n catch (error) {\n original.apply(void 0, __spreadArray(['rrweb logger error:', error], __read(args), false));\n }\n };\n });\n }\n}\nvar PLUGIN_NAME = 'rrweb/console@1';\nvar getRecordConsolePlugin = function (options) { return ({\n name: PLUGIN_NAME,\n observer: initLogObserver,\n options: options\n ? Object.assign({}, defaultLogOptions, options)\n : defaultLogOptions,\n}); };\n\nexport { PLUGIN_NAME, getRecordConsolePlugin };\n","import { version } from 'rrweb-v1/package.json'\n\n// Same as loader-globals.ts except includes rrweb scripts.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport rrwebRecord from 'rrweb-v1/es/rrweb/packages/rrweb/src/record'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { getRecordConsolePlugin } from 'rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record'\n\nimport { _isUndefined } from './utils/type-utils'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\n\nconst win: Window & typeof globalThis = _isUndefined(window) ? ({} as typeof window) : window\n\n;(win as any).rrweb = { record: rrwebRecord, version: 'v1', rrwebVersion: version }\n;(win as any).rrwebConsoleRecord = { getRecordConsolePlugin }\n\nexport default rrwebRecord\n","// eslint-disable-next-line posthog-js/no-direct-array-check\nconst nativeIsArray = Array.isArray\nconst ObjProto = Object.prototype\nexport const hasOwnProperty = ObjProto.hasOwnProperty\nconst toString = ObjProto.toString\n\nexport const _isArray =\n nativeIsArray ||\n function (obj: any): obj is any[] {\n return toString.call(obj) === '[object Array]'\n }\nexport const _isUint8Array = function (x: unknown): x is Uint8Array {\n return toString.call(x) === '[object Uint8Array]'\n}\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// let bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\nexport const _isFunction = function (f: any): f is (...args: any[]) => any {\n try {\n // eslint-disable-next-line posthog-js/no-direct-function-check\n return /^\\s*\\bfunction\\b/.test(f)\n } catch (x) {\n return false\n }\n}\n// Underscore Addons\nexport const _isObject = function (x: unknown): x is Record<string, any> {\n // eslint-disable-next-line posthog-js/no-direct-object-check\n return x === Object(x) && !_isArray(x)\n}\nexport const _isEmptyObject = function (x: unknown): x is Record<string, any> {\n if (_isObject(x)) {\n for (const key in x) {\n if (hasOwnProperty.call(x, key)) {\n return false\n }\n }\n return true\n }\n return false\n}\nexport const _isUndefined = function (x: unknown): x is undefined {\n return x === void 0\n}\nexport const _isString = function (x: unknown): x is string {\n // eslint-disable-next-line posthog-js/no-direct-string-check\n return toString.call(x) == '[object String]'\n}\nexport const _isNull = function (x: unknown): x is null {\n // eslint-disable-next-line posthog-js/no-direct-null-check\n return x === null\n}\nexport const _isDate = function (x: unknown): x is Date {\n // eslint-disable-next-line posthog-js/no-direct-date-check\n return toString.call(x) == '[object Date]'\n}\nexport const _isNumber = function (x: unknown): x is number {\n // eslint-disable-next-line posthog-js/no-direct-number-check\n return toString.call(x) == '[object Number]'\n}\nexport const _isBoolean = function (x: unknown): x is boolean {\n // eslint-disable-next-line posthog-js/no-direct-boolean-check\n return toString.call(x) === '[object Boolean]'\n}\n"],"names":["NodeType","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__values","o","Symbol","iterator","m","next","value","done","TypeError","__read","r","e","ar","push","error","__spreadArray","to","from","pack","l","Array","slice","concat","isShadowRoot","_a","host","Boolean","shadowRoot","maskInputValue","maskInputOptions","tagName","type","maskInputFn","text","toLowerCase","repeat","ORIGINAL_ATTRIBUTE_NAME","canvasService","canvasCtx","_id","tagNameRegex","RegExp","IGNORED_NODE","getCssRulesString","rules","cssRules","map","getCssRuleString","join","rule","cssStringified","cssText","isCSSImportRule","styleSheet","URL_IN_CSS_REF","RELATIVE_PATH","DATA_URI","absoluteToStylesheet","href","replace","origin","quote1","path1","quote2","path2","path3","url","filePath","maybeQuote","test","indexOf","split","stack","parts","pop","_i","parts_1","part","EventType","IncrementalSource","MouseInteractions","CanvasContext","MediaInteractions","ReplayerEvents","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","doc","attributeValue","trim","a","createElement","getHref","document","transformAttribute","name","pos","collectCharacters","regEx","chars","match","exec","substring","output","descriptorsStr","inParens","c","charAt","getAbsoluteSrcsetString","needMaskingText","node","maskTextClass","maskTextSelector","nodeType","ELEMENT_NODE","classList","contains","eIndex","className","matches","parentNode","TEXT_NODE","serializeNode","options","rootId","sheet","el","blockClass","blockSelector","inlineStylesheet","_b","maskTextFn","_c","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","__sn","docId","id","undefined","DOCUMENT_NODE","compatMode","Document","childNodes","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","element","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","attributes_1","_d","attributes","_e","name_1","stylesheet","styleSheets","find","rel","_cssText","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","naturalWidth","naturalHeight","drawImage","err","console","warn","currentSrc","complete","onload","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","_f","getBoundingClientRect","class","rr_width","rr_height","src","contentDocument","rr_src","Element","isSVG","ownerSVGElement","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","_g","iframeLoadTimeout","_h","_j","preserveWhiteSpace","_serializedNode","sn","comment","script","as","endsWith","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","isShadowHost","headWhitespace","bypassOptions","_k","serializedChildNode","isElement","_l","_m","isShadow","iframeEl","listener","win","contentWindow","readyState","fired","blankUrl","location","addEventListener","setTimeout","timer_1","clearTimeout","onceIframeLoaded","iframeDoc","serializedIframeNode","on","fn","target","capture","passive","removeEventListener","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","getId","getNode","removeNodeFromMap","has","reset","throttle","func","wait","timeout","previous","arg","now","Date","leading","remaining","context","args","trailing","hookSetter","key","d","isRevoked","window","original","getOwnPropertyDescriptor","defineProperty","set","_this","patch","source","replacement","original_1","wrapped","defineProperties","__rrweb_original__","enumerable","getWindowHeight","innerHeight","documentElement","clientHeight","body","getWindowWidth","innerWidth","clientWidth","isBlocked","needBlock_1","closest","forEach","isIgnored","isAncestorRemoved","mirror","isTouchEvent","event","changedTouches","isIframeINode","hasShadowRoot","isNodeInLinkedList","Proxy","Reflect","get","prop","receiver","DoubleLinkedList","head","position","Error","current","index","addNode","__ln","removeNode","moveKey","parentId","isINode","deepDelete","addsSet","delete","childN","isParentRemoved","removes","isAncestorInSet","MutationBuffer$1","MutationBuffer","frozen","locked","texts","mapRemoves","movedMap","addedSet","Set","movedSet","droppedSet","processMutations","mutations","processMutation","emit","e_1","e_2","adds","addList","getNextId","ns","nextId","pushAdd","shadowHost","getRootNode","rootShadowHost","notInDoc","currentN","iframeManager","addIframe","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","shift","e_1_1","return","add","e_2_1","candidate","_node","payload","filter","attribute","mutationCb","e_3","e_4","oldValue","getAttribute","attributeName","item","old","setAttribute","style","styleObj","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","e_3_1","e_4_1","addedNodes","genAdds","removedNodes","nodeId","targetId","init","freeze","canvasManager","unfreeze","isFrozen","lock","unlock","mutationBuffers","isCSSGroupingRuleSupported","CSSGroupingRule","isCSSMediaRuleSupported","CSSMediaRule","isCSSSupportsRuleSupported","CSSSupportsRule","isCSSConditionRuleSupported","CSSConditionRule","getEventTarget","path","composedPath","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","MutationObserver","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","observer","bind","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","keys","Number","isNaN","eventKey","eventName","handler","clientX","clientY","getHandler","h","initScrollObserver","scrollCb","evt","scrollEl","scrollingElement","scroll","wrapEventWithUserTriggeredFlag","v","enable","userTriggered","INPUT_TAGS","lastInputValueMap","WeakMap","getNestedCSSRulePositions","childRule","parentRule","unshift","parentStyleSheet","recurse","initObservers","hooks","currentWindow","defaultView","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","mutation","mousemove","viewportResize","input","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","mergeHooks","mutationObserver","mousemoveHandler","timeBaseline","threshold","callbackThreshold","mousemoveCallback","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","userTriggeredOnInput","eventHandler","isTrusted","parentElement","isChecked","cbWithDedup","querySelectorAll","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","volume","muted","media","initMediaInteractionObserver","styleSheetObserver","insertRule","CSSStyleSheet","ownerNode","deleteRule","supportedNestedCSSRuleTypes","unmodifiedFunctions","entries","typeKey","initStyleSheetObserver","styleDeclarationObserver","setProperty","CSSStyleDeclaration","priority","removeProperty","remove","initStyleDeclarationObserver","fontObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","JSON","stringify","Uint8Array","restoreHandler","fonts","initFontObserver","pluginHandlers","plugins","plugin","callback","b","disconnect","IframeManager","iframes","addLoadListener","cb","loadListener","isAttachIframe","ShadowDomManager","restorePatches","manager","HTMLElement","ownerDocument","iframeElement","manager_1","restorePatch","lookup","charCodeAt","encode","arraybuffer","bytes","len","base64","webGLVarMap","Map","saveWebGLVar","isInstanceOfWebGLObject","_typeof","list","ctor","contextMap","variableListFor","constructor","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","values","ArrayBuffer","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","patchGLPrototype","props","getOwnPropertyNames","_loop_1","result","recordArgs","hookHandler","setter","props_1","props_1_1","wrappedEmit","takeFullSnapshot","CanvasManager","pendingCanvasMutations","rafStamps","latestId","invokeId","initCanvasMutationObserver","clear","resetObservers","startRAFTimestamping","startPendingCanvasMutationFlusher","canvasContextReset","HTMLCanvasElement","contextType","initCanvasContextObserver","canvas2DReset","props2D","CanvasRenderingContext2D","imgd","pix","props2D_1","props2D_1_1","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","requestAnimationFrame","flushPendingCanvasMutations","setLatestRAFTimestamp","timestamp","flushPendingCanvasMutationFor","valuesWithType","rest","getOwnPropertySymbols","propertyIsEnumerable","__rest","commands","wrapEvent","child","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","lastFullSnapshotEvent","color","date","email","month","number","range","search","tel","time","week","textarea","select","password","NodeList","DOMTokenList","Node","polyfill","incrementalSnapshotCount","isCheckout","FullSnapshot","IncrementalSnapshot","Mutation","buf","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","Scroll","wrappedCanvasMutationEmit","CanvasMutation","Meta","slimDOM","idNodeMap","snapshot","initialOffset","left","pageXOffset","top","pageYOffset","handlers_1","DomContentLoaded","observe_1","MouseInteraction","ViewportResize","Input","MediaInteraction","StyleSheetRule","StyleDeclaration","Font","Plugin","init_1","Load","addCustomEvent","tag","Custom","freezePage","StackFrame","obj","fileName","functionName","lineNumber","columnNumber","toString","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","message","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","parseFloat","pathToSelector","outerHTML","localName","parent_1","domSiblings","children","sibling","isObject","isObjTooDeep","limit","keys_1","keys_1_1","stringifyOptions","numOfKeysLimit","depthOfLimit","thisPos","splice","Infinity","_obj","shouldIgnore","str","stringLengthLimit","Event","eventResult","eventValue","isArray","nodeName","defaultLogOptions","level","lengthThreshold","logger","initLogObserver","logOptions","loggerType","logCount","cancelHandlers","includes","errorHandler_1","trace","stackFrame","levelType","_logger","rrweb","rrwebRecord","version","rrwebVersion","rrwebConsoleRecord","getRecordConsolePlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recorder.js","sources":["../node_modules/rrweb-v1/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/ext/tslib/tslib.es6.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/types.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/utils.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/mutation.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observer.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../node_modules/rrweb-v1/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/index.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record/error-stack-parser.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record/stringify.js","../node_modules/rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record/index.js","../src/utils/globals.ts","../src/loader-recorder.ts"],"sourcesContent":["var NodeType;\n(function (NodeType) {\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\n return n.nodeType === n.ELEMENT_NODE;\n}\nfunction isShadowRoot(n) {\n var _a;\n var host = (_a = n) === null || _a === void 0 ? void 0 : _a.host;\n return Boolean(host && host.shadowRoot && host.shadowRoot === n);\n}\nfunction maskInputValue(_a) {\n var maskInputOptions = _a.maskInputOptions, tagName = _a.tagName, type = _a.type, value = _a.value, maskInputFn = _a.maskInputFn;\n var text = value || '';\n if (maskInputOptions[tagName.toLowerCase()] ||\n maskInputOptions[type]) {\n if (maskInputFn) {\n text = maskInputFn(text);\n }\n else {\n text = '*'.repeat(text.length);\n }\n }\n return text;\n}\nvar ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\nfunction is2DCanvasBlank(canvas) {\n var ctx = canvas.getContext('2d');\n if (!ctx)\n return true;\n var chunkSize = 50;\n for (var x = 0; x < canvas.width; x += chunkSize) {\n for (var y = 0; y < canvas.height; y += chunkSize) {\n var getImageData = ctx.getImageData;\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\n : getImageData;\n var pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\n if (pixelBuffer.some(function (pixel) { return pixel !== 0; }))\n return false;\n }\n }\n return true;\n}\n\nvar _id = 1;\nvar tagNameRegex = new RegExp('[^a-z0-9-_:]');\nvar IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName(element) {\n if (element instanceof HTMLFormElement) {\n return 'form';\n }\n var processedTagName = element.tagName.toLowerCase().trim();\n if (tagNameRegex.test(processedTagName)) {\n return 'div';\n }\n return processedTagName;\n}\nfunction getCssRulesString(s) {\n try {\n var rules = s.rules || s.cssRules;\n return rules ? Array.from(rules).map(getCssRuleString).join('') : null;\n }\n catch (error) {\n return null;\n }\n}\nfunction getCssRuleString(rule) {\n var cssStringified = rule.cssText;\n if (isCSSImportRule(rule)) {\n try {\n cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\n }\n catch (_a) {\n }\n }\n return cssStringified;\n}\nfunction isCSSImportRule(rule) {\n return 'styleSheet' in rule;\n}\nfunction stringifyStyleSheet(sheet) {\n return sheet.cssRules\n ? Array.from(sheet.cssRules)\n .map(function (rule) { return rule.cssText || ''; })\n .join('')\n : '';\n}\nfunction extractOrigin(url) {\n var origin = '';\n if (url.indexOf('//') > -1) {\n origin = url.split('/').slice(0, 3).join('/');\n }\n else {\n origin = url.split('/')[0];\n }\n origin = origin.split('?')[0];\n return origin;\n}\nvar canvasService;\nvar canvasCtx;\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nvar RELATIVE_PATH = /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/|#).*/;\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absoluteToStylesheet(cssText, href) {\n return (cssText || '').replace(URL_IN_CSS_REF, function (origin, quote1, path1, quote2, path2, path3) {\n var filePath = path1 || path2 || path3;\n var maybeQuote = quote1 || quote2 || '';\n if (!filePath) {\n return origin;\n }\n if (!RELATIVE_PATH.test(filePath)) {\n return \"url(\" + maybeQuote + filePath + maybeQuote + \")\";\n }\n if (DATA_URI.test(filePath)) {\n return \"url(\" + maybeQuote + filePath + maybeQuote + \")\";\n }\n if (filePath[0] === '/') {\n return \"url(\" + maybeQuote + (extractOrigin(href) + filePath) + maybeQuote + \")\";\n }\n var stack = href.split('/');\n var parts = filePath.split('/');\n stack.pop();\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\n var part = parts_1[_i];\n if (part === '.') {\n continue;\n }\n else if (part === '..') {\n stack.pop();\n }\n else {\n stack.push(part);\n }\n }\n return \"url(\" + maybeQuote + stack.join('/') + maybeQuote + \")\";\n });\n}\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === '') {\n return attributeValue;\n }\n var pos = 0;\n function collectCharacters(regEx) {\n var chars;\n var match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars = match[0];\n pos += chars.length;\n return chars;\n }\n return '';\n }\n var output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n var url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === ',') {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n }\n else {\n var descriptorsStr = '';\n url = absoluteToDoc(doc, url);\n var inParens = false;\n while (true) {\n var c = attributeValue.charAt(pos);\n if (c === '') {\n output.push((url + descriptorsStr).trim());\n break;\n }\n else if (!inParens) {\n if (c === ',') {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n }\n else if (c === '(') {\n inParens = true;\n }\n }\n else {\n if (c === ')') {\n inParens = false;\n }\n }\n descriptorsStr += c;\n pos += 1;\n }\n }\n }\n return output.join(', ');\n}\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === '') {\n return attributeValue;\n }\n var a = doc.createElement('a');\n a.href = attributeValue;\n return a.href;\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\n}\nfunction getHref() {\n var a = document.createElement('a');\n a.href = '';\n return a.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (name === 'src' || (name === 'href' && value)) {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'xlink:href' && value && value[0] !== '#') {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'background' &&\n value &&\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'srcset' && value) {\n return getAbsoluteSrcsetString(doc, value);\n }\n else if (name === 'style' && value) {\n return absoluteToStylesheet(value, getHref());\n }\n else if (tagName === 'object' && name === 'data' && value) {\n return absoluteToDoc(doc, value);\n }\n else {\n return value;\n }\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n if (typeof blockClass === 'string') {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n }\n else {\n for (var eIndex = 0; eIndex < element.classList.length; eIndex++) {\n var className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n return false;\n}\nfunction needMaskingText(node, maskTextClass, maskTextSelector) {\n if (!node) {\n return false;\n }\n if (node.nodeType === node.ELEMENT_NODE) {\n if (typeof maskTextClass === 'string') {\n if (node.classList.contains(maskTextClass)) {\n return true;\n }\n }\n else {\n for (var eIndex = 0; eIndex < node.classList.length; eIndex++) {\n var className = node.classList[eIndex];\n if (maskTextClass.test(className)) {\n return true;\n }\n }\n }\n if (maskTextSelector) {\n if (node.matches(maskTextSelector)) {\n return true;\n }\n }\n return needMaskingText(node.parentNode, maskTextClass, maskTextSelector);\n }\n if (node.nodeType === node.TEXT_NODE) {\n return needMaskingText(node.parentNode, maskTextClass, maskTextSelector);\n }\n return needMaskingText(node.parentNode, maskTextClass, maskTextSelector);\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n var win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n var fired = false;\n var readyState;\n try {\n readyState = win.document.readyState;\n }\n catch (error) {\n return;\n }\n if (readyState !== 'complete') {\n var timer_1 = setTimeout(function () {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener('load', function () {\n clearTimeout(timer_1);\n fired = true;\n listener();\n });\n return;\n }\n var blankUrl = 'about:blank';\n if (win.location.href !== blankUrl ||\n iframeEl.src === blankUrl ||\n iframeEl.src === '') {\n setTimeout(listener, 0);\n return;\n }\n iframeEl.addEventListener('load', listener);\n}\nfunction serializeNode(n, options) {\n var _a;\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, inlineStylesheet = options.inlineStylesheet, _b = options.maskInputOptions, maskInputOptions = _b === void 0 ? {} : _b, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _c = options.dataURLOptions, dataURLOptions = _c === void 0 ? {} : _c, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn;\n var rootId;\n if (doc.__sn) {\n var docId = doc.__sn.id;\n rootId = docId === 1 ? undefined : docId;\n }\n switch (n.nodeType) {\n case n.DOCUMENT_NODE:\n if (n.compatMode !== 'CSS1Compat') {\n return {\n type: NodeType.Document,\n childNodes: [],\n compatMode: n.compatMode,\n rootId: rootId\n };\n }\n else {\n return {\n type: NodeType.Document,\n childNodes: [],\n rootId: rootId\n };\n }\n case n.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType.DocumentType,\n name: n.name,\n publicId: n.publicId,\n systemId: n.systemId,\n rootId: rootId\n };\n case n.ELEMENT_NODE:\n var needBlock = _isBlockedElement(n, blockClass, blockSelector);\n var tagName = getValidTagName(n);\n var attributes_1 = {};\n for (var _i = 0, _d = Array.from(n.attributes); _i < _d.length; _i++) {\n var _e = _d[_i], name_1 = _e.name, value = _e.value;\n attributes_1[name_1] = transformAttribute(doc, tagName, name_1, value);\n }\n if (tagName === 'link' && inlineStylesheet) {\n var stylesheet = Array.from(doc.styleSheets).find(function (s) {\n return s.href === n.href;\n });\n var cssText = null;\n if (stylesheet) {\n cssText = getCssRulesString(stylesheet);\n }\n if (cssText) {\n delete attributes_1.rel;\n delete attributes_1.href;\n attributes_1._cssText = absoluteToStylesheet(cssText, stylesheet.href);\n }\n }\n if (tagName === 'style' &&\n n.sheet &&\n !(n.innerText ||\n n.textContent ||\n '').trim().length) {\n var cssText = getCssRulesString(n.sheet);\n if (cssText) {\n attributes_1._cssText = absoluteToStylesheet(cssText, getHref());\n }\n }\n if (tagName === 'input' ||\n tagName === 'textarea' ||\n tagName === 'select') {\n var value = n.value;\n if (attributes_1.type !== 'radio' &&\n attributes_1.type !== 'checkbox' &&\n attributes_1.type !== 'submit' &&\n attributes_1.type !== 'button' &&\n value) {\n attributes_1.value = maskInputValue({\n type: attributes_1.type,\n tagName: tagName,\n value: value,\n maskInputOptions: maskInputOptions,\n maskInputFn: maskInputFn\n });\n }\n else if (n.checked) {\n attributes_1.checked = n.checked;\n }\n }\n if (tagName === 'option') {\n if (n.selected && !maskInputOptions['select']) {\n attributes_1.selected = true;\n }\n else {\n delete attributes_1.selected;\n }\n }\n if (tagName === 'canvas' && recordCanvas) {\n if (n.__context === '2d') {\n if (!is2DCanvasBlank(n)) {\n attributes_1.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n }\n else if (!('__context' in n)) {\n var canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n var blankCanvas = document.createElement('canvas');\n blankCanvas.width = n.width;\n blankCanvas.height = n.height;\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes_1.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === 'img' && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement('canvas');\n canvasCtx = canvasService.getContext('2d');\n }\n var image_1 = n;\n var oldValue_1 = image_1.crossOrigin;\n image_1.crossOrigin = 'anonymous';\n var recordInlineImage = function () {\n try {\n canvasService.width = image_1.naturalWidth;\n canvasService.height = image_1.naturalHeight;\n canvasCtx.drawImage(image_1, 0, 0);\n attributes_1.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n catch (err) {\n console.warn(\"Cannot inline img src=\" + image_1.currentSrc + \"! Error: \" + err);\n }\n oldValue_1\n ? (attributes_1.crossOrigin = oldValue_1)\n : delete attributes_1.crossOrigin;\n };\n if (image_1.complete && image_1.naturalWidth !== 0)\n recordInlineImage();\n else\n image_1.onload = recordInlineImage;\n }\n if (tagName === 'audio' || tagName === 'video') {\n attributes_1.rr_mediaState = n.paused\n ? 'paused'\n : 'played';\n attributes_1.rr_mediaCurrentTime = n.currentTime;\n }\n if (n.scrollLeft) {\n attributes_1.rr_scrollLeft = n.scrollLeft;\n }\n if (n.scrollTop) {\n attributes_1.rr_scrollTop = n.scrollTop;\n }\n if (needBlock) {\n var _f = n.getBoundingClientRect(), width = _f.width, height = _f.height;\n attributes_1 = {\n \"class\": attributes_1[\"class\"],\n rr_width: width + \"px\",\n rr_height: height + \"px\"\n };\n }\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes_1.src)) {\n if (!n.contentDocument) {\n attributes_1.rr_src = attributes_1.src;\n }\n delete attributes_1.src;\n }\n return {\n type: NodeType.Element,\n tagName: tagName,\n attributes: attributes_1,\n childNodes: [],\n isSVG: isSVGElement(n) || undefined,\n needBlock: needBlock,\n rootId: rootId\n };\n case n.TEXT_NODE:\n var parentTagName = n.parentNode && n.parentNode.tagName;\n var textContent = n.textContent;\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\n var isScript = parentTagName === 'SCRIPT' ? true : undefined;\n if (isStyle && textContent) {\n try {\n if (n.nextSibling || n.previousSibling) {\n }\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\n textContent = stringifyStyleSheet(n.parentNode.sheet);\n }\n }\n catch (err) {\n console.warn(\"Cannot get CSS styles from text's parentNode. Error: \" + err, n);\n }\n textContent = absoluteToStylesheet(textContent, getHref());\n }\n if (isScript) {\n textContent = 'SCRIPT_PLACEHOLDER';\n }\n if (!isStyle &&\n !isScript &&\n needMaskingText(n, maskTextClass, maskTextSelector) &&\n textContent) {\n textContent = maskTextFn\n ? maskTextFn(textContent)\n : textContent.replace(/[\\S]/g, '*');\n }\n return {\n type: NodeType.Text,\n textContent: textContent || '',\n isStyle: isStyle,\n rootId: rootId\n };\n case n.CDATA_SECTION_NODE:\n return {\n type: NodeType.CDATA,\n textContent: '',\n rootId: rootId\n };\n case n.COMMENT_NODE:\n return {\n type: NodeType.Comment,\n textContent: n.textContent || '',\n rootId: rootId\n };\n default:\n return false;\n }\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === undefined) {\n return '';\n }\n else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\n return true;\n }\n else if (sn.type === NodeType.Element) {\n if (slimDOMOptions.script &&\n (sn.tagName === 'script' ||\n (sn.tagName === 'link' &&\n sn.attributes.rel === 'preload' &&\n sn.attributes.as === 'script') ||\n (sn.tagName === 'link' &&\n sn.attributes.rel === 'prefetch' &&\n typeof sn.attributes.href === 'string' &&\n sn.attributes.href.endsWith('.js')))) {\n return true;\n }\n else if (slimDOMOptions.headFavicon &&\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\n (sn.tagName === 'meta' &&\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\n lowerIfExists(sn.attributes.name) === 'application-name' ||\n lowerIfExists(sn.attributes.rel) === 'icon' ||\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\n return true;\n }\n else if (sn.tagName === 'meta') {\n if (slimDOMOptions.headMetaDescKeywords &&\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n }\n else if (slimDOMOptions.headMetaSocial &&\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\n return true;\n }\n else if (slimDOMOptions.headMetaRobots &&\n (lowerIfExists(sn.attributes.name) === 'robots' ||\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\n return true;\n }\n else if (slimDOMOptions.headMetaHttpEquiv &&\n sn.attributes['http-equiv'] !== undefined) {\n return true;\n }\n else if (slimDOMOptions.headMetaAuthorship &&\n (lowerIfExists(sn.attributes.name) === 'author' ||\n lowerIfExists(sn.attributes.name) === 'generator' ||\n lowerIfExists(sn.attributes.name) === 'framework' ||\n lowerIfExists(sn.attributes.name) === 'publisher' ||\n lowerIfExists(sn.attributes.name) === 'progid' ||\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n }\n else if (slimDOMOptions.headMetaVerification &&\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\n lowerIfExists(sn.attributes.name) === 'verification' ||\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n, options) {\n var doc = options.doc, map = options.map, 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, _h = options.keepIframeSrcFn, keepIframeSrcFn = _h === void 0 ? function () { return false; } : _h;\n var _j = options.preserveWhiteSpace, preserveWhiteSpace = _j === void 0 ? true : _j;\n var _serializedNode = serializeNode(n, {\n doc: doc,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (!_serializedNode) {\n console.warn(n, 'not serialized');\n return null;\n }\n var id;\n if ('__sn' in n) {\n id = n.__sn.id;\n }\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\n (!preserveWhiteSpace &&\n _serializedNode.type === NodeType.Text &&\n !_serializedNode.isStyle &&\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\n id = IGNORED_NODE;\n }\n else {\n id = genId();\n }\n var serializedNode = Object.assign(_serializedNode, { id: id });\n n.__sn = serializedNode;\n if (id === IGNORED_NODE) {\n return null;\n }\n map[id] = n;\n if (onSerialize) {\n onSerialize(n);\n }\n var recordChild = !skipChild;\n if (serializedNode.type === NodeType.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n if (n.shadowRoot)\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType.Document ||\n serializedNode.type === NodeType.Element) &&\n recordChild) {\n if (slimDOMOptions.headWhitespace &&\n _serializedNode.type === NodeType.Element &&\n _serializedNode.tagName === 'head') {\n preserveWhiteSpace = false;\n }\n var bypassOptions = {\n doc: doc,\n map: map,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: skipChild,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn\n };\n for (var _i = 0, _k = Array.from(n.childNodes); _i < _k.length; _i++) {\n var childN = _k[_i];\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n if (isElement(n) && n.shadowRoot) {\n for (var _l = 0, _m = Array.from(n.shadowRoot.childNodes); _l < _m.length; _l++) {\n var childN = _m[_l];\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedChildNode.isShadow = true;\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n if (n.parentNode && isShadowRoot(n.parentNode)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType.Element &&\n serializedNode.tagName === 'iframe') {\n onceIframeLoaded(n, function () {\n var iframeDoc = n.contentDocument;\n if (iframeDoc && onIframeLoad) {\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n map: map,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(n, serializedIframeNode);\n }\n }\n }, iframeLoadTimeout);\n }\n return serializedNode;\n}\nfunction snapshot(n, options) {\n var _a = options || {}, _b = _a.blockClass, blockClass = _b === void 0 ? 'rr-block' : _b, _c = _a.blockSelector, blockSelector = _c === void 0 ? null : _c, _d = _a.maskTextClass, maskTextClass = _d === void 0 ? 'rr-mask' : _d, _e = _a.maskTextSelector, maskTextSelector = _e === void 0 ? null : _e, _f = _a.inlineStylesheet, inlineStylesheet = _f === void 0 ? true : _f, _g = _a.inlineImages, inlineImages = _g === void 0 ? false : _g, _h = _a.recordCanvas, recordCanvas = _h === void 0 ? false : _h, _j = _a.maskAllInputs, maskAllInputs = _j === void 0 ? false : _j, maskTextFn = _a.maskTextFn, maskInputFn = _a.maskInputFn, _k = _a.slimDOM, slimDOM = _k === void 0 ? false : _k, dataURLOptions = _a.dataURLOptions, preserveWhiteSpace = _a.preserveWhiteSpace, onSerialize = _a.onSerialize, onIframeLoad = _a.onIframeLoad, iframeLoadTimeout = _a.iframeLoadTimeout, _l = _a.keepIframeSrcFn, keepIframeSrcFn = _l === void 0 ? function () { return false; } : _l;\n var idNodeMap = {};\n var maskInputOptions = maskAllInputs === true\n ? {\n color: true,\n date: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n }\n : maskAllInputs === false\n ? {\n password: true\n }\n : maskAllInputs;\n var slimDOMOptions = slimDOM === true || slimDOM === 'all'\n ?\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === 'all',\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n : slimDOM === false\n ? {}\n : slimDOM;\n return [\n serializeNodeWithId(n, {\n doc: n,\n map: idNodeMap,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn\n }),\n idNodeMap,\n ];\n}\n\nvar commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\nfunction parse(css, options) {\n if (options === void 0) { options = {}; }\n var lineno = 1;\n var column = 1;\n function updatePosition(str) {\n var lines = str.match(/\\n/g);\n if (lines) {\n lineno += lines.length;\n }\n var i = str.lastIndexOf('\\n');\n column = i === -1 ? column + str.length : str.length - i;\n }\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n var Position = (function () {\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n return Position;\n }());\n Position.prototype.content = css;\n var errorsList = [];\n function error(msg) {\n var err = new Error(options.source + ':' + lineno + ':' + column + ': ' + msg);\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = css;\n if (options.silent) {\n errorsList.push(err);\n }\n else {\n throw err;\n }\n }\n function stylesheet() {\n var rulesList = rules();\n return {\n type: 'stylesheet',\n stylesheet: {\n source: options.source,\n rules: rulesList,\n parsingErrors: errorsList\n }\n };\n }\n function open() {\n return match(/^{\\s*/);\n }\n function close() {\n return match(/^}/);\n }\n function rules() {\n var node;\n var rules = [];\n whitespace();\n comments(rules);\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\n if (node !== false) {\n rules.push(node);\n comments(rules);\n }\n }\n return rules;\n }\n function match(re) {\n var m = re.exec(css);\n if (!m) {\n return;\n }\n var str = m[0];\n updatePosition(str);\n css = css.slice(str.length);\n return m;\n }\n function whitespace() {\n match(/^\\s*/);\n }\n function comments(rules) {\n if (rules === void 0) { rules = []; }\n var c;\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n c = comment();\n }\n return rules;\n }\n function comment() {\n var pos = position();\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\n return;\n }\n var i = 2;\n while ('' !== css.charAt(i) &&\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\n ++i;\n }\n i += 2;\n if ('' === css.charAt(i - 1)) {\n return error('End of comment missing');\n }\n var str = css.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n css = css.slice(i);\n column += 2;\n return pos({\n type: 'comment',\n comment: str\n });\n }\n function selector() {\n var m = match(/^([^{]+)/);\n if (!m) {\n return;\n }\n return trim(m[0])\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function (m) {\n return m.replace(/,/g, '\\u200C');\n })\n .split(/\\s*(?![^(]*\\)),\\s*/)\n .map(function (s) {\n return s.replace(/\\u200C/g, ',');\n });\n }\n function declaration() {\n var pos = position();\n var propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\n if (!propMatch) {\n return;\n }\n var prop = trim(propMatch[0]);\n if (!match(/^:\\s*/)) {\n return error(\"property missing ':'\");\n }\n var val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\n var ret = pos({\n type: 'declaration',\n property: prop.replace(commentre, ''),\n value: val ? trim(val[0]).replace(commentre, '') : ''\n });\n match(/^[;\\s]*/);\n return ret;\n }\n function declarations() {\n var decls = [];\n if (!open()) {\n return error(\"missing '{'\");\n }\n comments(decls);\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n decl = declaration();\n }\n if (!close()) {\n return error(\"missing '}'\");\n }\n return decls;\n }\n function keyframe() {\n var m;\n var vals = [];\n var pos = position();\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\n vals.push(m[1]);\n match(/^,\\s*/);\n }\n if (!vals.length) {\n return;\n }\n return pos({\n type: 'keyframe',\n values: vals,\n declarations: declarations()\n });\n }\n function atkeyframes() {\n var pos = position();\n var m = match(/^@([-\\w]+)?keyframes\\s*/);\n if (!m) {\n return;\n }\n var vendor = m[1];\n m = match(/^([-\\w]+)\\s*/);\n if (!m) {\n return error('@keyframes missing name');\n }\n var name = m[1];\n if (!open()) {\n return error(\"@keyframes missing '{'\");\n }\n var frame;\n var frames = comments();\n while ((frame = keyframe())) {\n frames.push(frame);\n frames = frames.concat(comments());\n }\n if (!close()) {\n return error(\"@keyframes missing '}'\");\n }\n return pos({\n type: 'keyframes',\n name: name,\n vendor: vendor,\n keyframes: frames\n });\n }\n function atsupports() {\n var pos = position();\n var m = match(/^@supports *([^{]+)/);\n if (!m) {\n return;\n }\n var supports = trim(m[1]);\n if (!open()) {\n return error(\"@supports missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@supports missing '}'\");\n }\n return pos({\n type: 'supports',\n supports: supports,\n rules: style\n });\n }\n function athost() {\n var pos = position();\n var m = match(/^@host\\s*/);\n if (!m) {\n return;\n }\n if (!open()) {\n return error(\"@host missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@host missing '}'\");\n }\n return pos({\n type: 'host',\n rules: style\n });\n }\n function atmedia() {\n var pos = position();\n var m = match(/^@media *([^{]+)/);\n if (!m) {\n return;\n }\n var media = trim(m[1]);\n if (!open()) {\n return error(\"@media missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@media missing '}'\");\n }\n return pos({\n type: 'media',\n media: media,\n rules: style\n });\n }\n function atcustommedia() {\n var pos = position();\n var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\n if (!m) {\n return;\n }\n return pos({\n type: 'custom-media',\n name: trim(m[1]),\n media: trim(m[2])\n });\n }\n function atpage() {\n var pos = position();\n var m = match(/^@page */);\n if (!m) {\n return;\n }\n var sel = selector() || [];\n if (!open()) {\n return error(\"@page missing '{'\");\n }\n var decls = comments();\n var decl;\n while ((decl = declaration())) {\n decls.push(decl);\n decls = decls.concat(comments());\n }\n if (!close()) {\n return error(\"@page missing '}'\");\n }\n return pos({\n type: 'page',\n selectors: sel,\n declarations: decls\n });\n }\n function atdocument() {\n var pos = position();\n var m = match(/^@([-\\w]+)?document *([^{]+)/);\n if (!m) {\n return;\n }\n var vendor = trim(m[1]);\n var doc = trim(m[2]);\n if (!open()) {\n return error(\"@document missing '{'\");\n }\n var style = comments().concat(rules());\n if (!close()) {\n return error(\"@document missing '}'\");\n }\n return pos({\n type: 'document',\n document: doc,\n vendor: vendor,\n rules: style\n });\n }\n function atfontface() {\n var pos = position();\n var m = match(/^@font-face\\s*/);\n if (!m) {\n return;\n }\n if (!open()) {\n return error(\"@font-face missing '{'\");\n }\n var decls = comments();\n var decl;\n while ((decl = declaration())) {\n decls.push(decl);\n decls = decls.concat(comments());\n }\n if (!close()) {\n return error(\"@font-face missing '}'\");\n }\n return pos({\n type: 'font-face',\n declarations: decls\n });\n }\n var atimport = _compileAtrule('import');\n var atcharset = _compileAtrule('charset');\n var atnamespace = _compileAtrule('namespace');\n function _compileAtrule(name) {\n var re = new RegExp('^@' + name + '\\\\s*([^;]+);');\n return function () {\n var pos = position();\n var m = match(re);\n if (!m) {\n return;\n }\n var ret = { type: name };\n ret[name] = m[1].trim();\n return pos(ret);\n };\n }\n function atrule() {\n if (css[0] !== '@') {\n return;\n }\n return (atkeyframes() ||\n atmedia() ||\n atcustommedia() ||\n atsupports() ||\n atimport() ||\n atcharset() ||\n atnamespace() ||\n atdocument() ||\n atpage() ||\n athost() ||\n atfontface());\n }\n function rule() {\n var pos = position();\n var sel = selector();\n if (!sel) {\n return error('selector missing');\n }\n comments();\n return pos({\n type: 'rule',\n selectors: sel,\n declarations: declarations()\n });\n }\n return addParent(stylesheet());\n}\nfunction trim(str) {\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\n}\nfunction addParent(obj, parent) {\n var isNode = obj && typeof obj.type === 'string';\n var childParent = isNode ? obj : parent;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var k = _a[_i];\n var value = obj[k];\n if (Array.isArray(value)) {\n value.forEach(function (v) {\n addParent(v, childParent);\n });\n }\n else if (value && typeof value === 'object') {\n addParent(value, childParent);\n }\n }\n if (isNode) {\n Object.defineProperty(obj, 'parent', {\n configurable: true,\n writable: true,\n enumerable: false,\n value: parent || null\n });\n }\n return obj;\n}\n\nvar tagMap = {\n script: 'noscript',\n altglyph: 'altGlyph',\n altglyphdef: 'altGlyphDef',\n altglyphitem: 'altGlyphItem',\n animatecolor: 'animateColor',\n animatemotion: 'animateMotion',\n animatetransform: 'animateTransform',\n clippath: 'clipPath',\n feblend: 'feBlend',\n fecolormatrix: 'feColorMatrix',\n fecomponenttransfer: 'feComponentTransfer',\n fecomposite: 'feComposite',\n feconvolvematrix: 'feConvolveMatrix',\n fediffuselighting: 'feDiffuseLighting',\n fedisplacementmap: 'feDisplacementMap',\n fedistantlight: 'feDistantLight',\n fedropshadow: 'feDropShadow',\n feflood: 'feFlood',\n fefunca: 'feFuncA',\n fefuncb: 'feFuncB',\n fefuncg: 'feFuncG',\n fefuncr: 'feFuncR',\n fegaussianblur: 'feGaussianBlur',\n feimage: 'feImage',\n femerge: 'feMerge',\n femergenode: 'feMergeNode',\n femorphology: 'feMorphology',\n feoffset: 'feOffset',\n fepointlight: 'fePointLight',\n fespecularlighting: 'feSpecularLighting',\n fespotlight: 'feSpotLight',\n fetile: 'feTile',\n feturbulence: 'feTurbulence',\n foreignobject: 'foreignObject',\n glyphref: 'glyphRef',\n lineargradient: 'linearGradient',\n radialgradient: 'radialGradient'\n};\nfunction getTagName(n) {\n var tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\n if (tagName === 'link' && n.attributes._cssText) {\n tagName = 'style';\n }\n return tagName;\n}\nfunction escapeRegExp(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nvar HOVER_SELECTOR = /([^\\\\]):hover/;\nvar HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\nfunction addHoverClass(cssText, cache) {\n var cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\n if (cachedStyle)\n return cachedStyle;\n var ast = parse(cssText, {\n silent: true\n });\n if (!ast.stylesheet) {\n return cssText;\n }\n var selectors = [];\n ast.stylesheet.rules.forEach(function (rule) {\n if ('selectors' in rule) {\n (rule.selectors || []).forEach(function (selector) {\n if (HOVER_SELECTOR.test(selector)) {\n selectors.push(selector);\n }\n });\n }\n });\n if (selectors.length === 0) {\n return cssText;\n }\n var selectorMatcher = new RegExp(selectors\n .filter(function (selector, index) { return selectors.indexOf(selector) === index; })\n .sort(function (a, b) { return b.length - a.length; })\n .map(function (selector) {\n return escapeRegExp(selector);\n })\n .join('|'), 'g');\n var result = cssText.replace(selectorMatcher, function (selector) {\n var newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\n return selector + \", \" + newSelector;\n });\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\n return result;\n}\nfunction createCache() {\n var stylesWithHoverClass = new Map();\n return {\n stylesWithHoverClass: stylesWithHoverClass\n };\n}\nfunction buildNode(n, options) {\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\n switch (n.type) {\n case NodeType.Document:\n return doc.implementation.createDocument(null, '', null);\n case NodeType.DocumentType:\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\n case NodeType.Element:\n var tagName = getTagName(n);\n var node_1;\n if (n.isSVG) {\n node_1 = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\n }\n else {\n node_1 = doc.createElement(tagName);\n }\n var _loop_1 = function (name_1) {\n if (!n.attributes.hasOwnProperty(name_1)) {\n return \"continue\";\n }\n var value = n.attributes[name_1];\n if (tagName === 'option' && name_1 === 'selected' && value === false) {\n return \"continue\";\n }\n value =\n typeof value === 'boolean' || typeof value === 'number' ? '' : value;\n if (!name_1.startsWith('rr_')) {\n var isTextarea = tagName === 'textarea' && name_1 === 'value';\n var isRemoteOrDynamicCss = tagName === 'style' && name_1 === '_cssText';\n if (isRemoteOrDynamicCss && hackCss) {\n value = addHoverClass(value, cache);\n }\n if (isTextarea || isRemoteOrDynamicCss) {\n var child = doc.createTextNode(value);\n for (var _i = 0, _a = Array.from(node_1.childNodes); _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.nodeType === node_1.TEXT_NODE) {\n node_1.removeChild(c);\n }\n }\n node_1.appendChild(child);\n return \"continue\";\n }\n try {\n if (n.isSVG && name_1 === 'xlink:href') {\n node_1.setAttributeNS('http://www.w3.org/1999/xlink', name_1, value);\n }\n else if (name_1 === 'onload' ||\n name_1 === 'onclick' ||\n name_1.substring(0, 7) === 'onmouse') {\n node_1.setAttribute('_' + name_1, value);\n }\n else if (tagName === 'meta' &&\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\n name_1 === 'content') {\n node_1.setAttribute('csp-content', value);\n return \"continue\";\n }\n else if (tagName === 'link' &&\n n.attributes.rel === 'preload' &&\n n.attributes.as === 'script') {\n }\n else if (tagName === 'link' &&\n n.attributes.rel === 'prefetch' &&\n typeof n.attributes.href === 'string' &&\n n.attributes.href.endsWith('.js')) {\n }\n else if (tagName === 'img' &&\n n.attributes.srcset &&\n n.attributes.rr_dataURL) {\n node_1.setAttribute('rrweb-original-srcset', n.attributes.srcset);\n }\n else {\n node_1.setAttribute(name_1, value);\n }\n }\n catch (error) {\n }\n }\n else {\n if (tagName === 'canvas' && name_1 === 'rr_dataURL') {\n var image_1 = document.createElement('img');\n image_1.src = value;\n image_1.onload = function () {\n var ctx = node_1.getContext('2d');\n if (ctx) {\n ctx.drawImage(image_1, 0, 0, image_1.width, image_1.height);\n }\n };\n }\n else if (tagName === 'img' && name_1 === 'rr_dataURL') {\n var image = node_1;\n if (!image.currentSrc.startsWith('data:')) {\n image.setAttribute('rrweb-original-src', n.attributes.src);\n image.src = value;\n }\n }\n if (name_1 === 'rr_width') {\n node_1.style.width = value;\n }\n else if (name_1 === 'rr_height') {\n node_1.style.height = value;\n }\n else if (name_1 === 'rr_mediaCurrentTime') {\n node_1.currentTime = n.attributes\n .rr_mediaCurrentTime;\n }\n else if (name_1 === 'rr_mediaState') {\n switch (value) {\n case 'played':\n node_1\n .play()[\"catch\"](function (e) { return console.warn('media playback error', e); });\n break;\n case 'paused':\n node_1.pause();\n break;\n }\n }\n }\n };\n for (var name_1 in n.attributes) {\n _loop_1(name_1);\n }\n if (n.isShadowHost) {\n if (!node_1.shadowRoot) {\n node_1.attachShadow({ mode: 'open' });\n }\n else {\n while (node_1.shadowRoot.firstChild) {\n node_1.shadowRoot.removeChild(node_1.shadowRoot.firstChild);\n }\n }\n }\n return node_1;\n case NodeType.Text:\n return doc.createTextNode(n.isStyle && hackCss\n ? addHoverClass(n.textContent, cache)\n : n.textContent);\n case NodeType.CDATA:\n return doc.createCDATASection(n.textContent);\n case NodeType.Comment:\n return doc.createComment(n.textContent);\n default:\n return null;\n }\n}\nfunction buildNodeWithSN(n, options) {\n var doc = options.doc, map = options.map, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.hackCss, hackCss = _b === void 0 ? true : _b, afterAppend = options.afterAppend, cache = options.cache;\n var node = buildNode(n, { doc: doc, hackCss: hackCss, cache: cache });\n if (!node) {\n return null;\n }\n if (n.rootId) {\n console.assert(map[n.rootId] === doc, 'Target document should has the same root id.');\n }\n if (n.type === NodeType.Document) {\n doc.close();\n doc.open();\n if (n.compatMode === 'BackCompat' &&\n n.childNodes &&\n n.childNodes[0].type !== NodeType.DocumentType) {\n if (n.childNodes[0].type === NodeType.Element &&\n 'xmlns' in n.childNodes[0].attributes &&\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\n }\n else {\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\n }\n }\n node = doc;\n }\n node.__sn = n;\n map[n.id] = node;\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\n !skipChild) {\n for (var _i = 0, _c = n.childNodes; _i < _c.length; _i++) {\n var childN = _c[_i];\n var childNode = buildNodeWithSN(childN, {\n doc: doc,\n map: map,\n skipChild: false,\n hackCss: hackCss,\n afterAppend: afterAppend,\n cache: cache\n });\n if (!childNode) {\n console.warn('Failed to rebuild', childN);\n continue;\n }\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\n node.shadowRoot.appendChild(childNode);\n }\n else {\n node.appendChild(childNode);\n }\n if (afterAppend) {\n afterAppend(childNode);\n }\n }\n }\n return node;\n}\nfunction visit(idNodeMap, onVisit) {\n function walk(node) {\n onVisit(node);\n }\n for (var key in idNodeMap) {\n if (idNodeMap[key]) {\n walk(idNodeMap[key]);\n }\n }\n}\nfunction handleScroll(node) {\n var n = node.__sn;\n if (n.type !== NodeType.Element) {\n return;\n }\n var el = node;\n for (var name_2 in n.attributes) {\n if (!(n.attributes.hasOwnProperty(name_2) && name_2.startsWith('rr_'))) {\n continue;\n }\n var value = n.attributes[name_2];\n if (name_2 === 'rr_scrollLeft') {\n el.scrollLeft = value;\n }\n if (name_2 === 'rr_scrollTop') {\n el.scrollTop = value;\n }\n }\n}\nfunction rebuild(n, options) {\n var doc = options.doc, onVisit = options.onVisit, _a = options.hackCss, hackCss = _a === void 0 ? true : _a, afterAppend = options.afterAppend, cache = options.cache;\n var idNodeMap = {};\n var node = buildNodeWithSN(n, {\n doc: doc,\n map: idNodeMap,\n skipChild: false,\n hackCss: hackCss,\n afterAppend: afterAppend,\n cache: cache\n });\n visit(idNodeMap, function (visitedNode) {\n if (onVisit) {\n onVisit(visitedNode);\n }\n handleScroll(visitedNode);\n });\n return [node, idNodeMap];\n}\n\nexport { IGNORED_NODE, NodeType, addHoverClass, buildNodeWithSN, createCache, is2DCanvasBlank, isElement, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, transformAttribute };\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\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\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 __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nexport { __assign, __read, __rest, __spreadArray, __values };\n","var EventType;\n(function (EventType) {\n EventType[EventType[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType[EventType[\"Load\"] = 1] = \"Load\";\n EventType[EventType[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType[EventType[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType[EventType[\"Meta\"] = 4] = \"Meta\";\n EventType[EventType[\"Custom\"] = 5] = \"Custom\";\n EventType[EventType[\"Plugin\"] = 6] = \"Plugin\";\n})(EventType || (EventType = {}));\nvar IncrementalSource;\n(function (IncrementalSource) {\n IncrementalSource[IncrementalSource[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource[IncrementalSource[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource[IncrementalSource[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource[IncrementalSource[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource[IncrementalSource[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource[IncrementalSource[\"Input\"] = 5] = \"Input\";\n IncrementalSource[IncrementalSource[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource[IncrementalSource[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource[IncrementalSource[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource[IncrementalSource[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource[IncrementalSource[\"Font\"] = 10] = \"Font\";\n IncrementalSource[IncrementalSource[\"Log\"] = 11] = \"Log\";\n IncrementalSource[IncrementalSource[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource[IncrementalSource[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n})(IncrementalSource || (IncrementalSource = {}));\nvar MouseInteractions;\n(function (MouseInteractions) {\n MouseInteractions[MouseInteractions[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions[MouseInteractions[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions[MouseInteractions[\"Click\"] = 2] = \"Click\";\n MouseInteractions[MouseInteractions[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions[MouseInteractions[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions[MouseInteractions[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions[MouseInteractions[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions[MouseInteractions[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions[MouseInteractions[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions[MouseInteractions[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions[MouseInteractions[\"TouchCancel\"] = 10] = \"TouchCancel\";\n})(MouseInteractions || (MouseInteractions = {}));\nvar CanvasContext;\n(function (CanvasContext) {\n CanvasContext[CanvasContext[\"2D\"] = 0] = \"2D\";\n CanvasContext[CanvasContext[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext[CanvasContext[\"WebGL2\"] = 2] = \"WebGL2\";\n})(CanvasContext || (CanvasContext = {}));\nvar MediaInteractions;\n(function (MediaInteractions) {\n MediaInteractions[MediaInteractions[\"Play\"] = 0] = \"Play\";\n MediaInteractions[MediaInteractions[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions[MediaInteractions[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions[MediaInteractions[\"VolumeChange\"] = 3] = \"VolumeChange\";\n})(MediaInteractions || (MediaInteractions = {}));\nvar ReplayerEvents;\n(function (ReplayerEvents) {\n ReplayerEvents[\"Start\"] = \"start\";\n ReplayerEvents[\"Pause\"] = \"pause\";\n ReplayerEvents[\"Resume\"] = \"resume\";\n ReplayerEvents[\"Resize\"] = \"resize\";\n ReplayerEvents[\"Finish\"] = \"finish\";\n ReplayerEvents[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents[\"EventCast\"] = \"event-cast\";\n ReplayerEvents[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents[\"Flush\"] = \"flush\";\n ReplayerEvents[\"StateChange\"] = \"state-change\";\n ReplayerEvents[\"PlayBack\"] = \"play-back\";\n})(ReplayerEvents || (ReplayerEvents = {}));\n\nexport { CanvasContext, EventType, IncrementalSource, MediaInteractions, MouseInteractions, ReplayerEvents };\n","import { __values } from '../ext/tslib/tslib.es6.js';\nimport { IncrementalSource } from './types.js';\nimport { IGNORED_NODE, isShadowRoot, NodeType } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target) {\n if (target === void 0) { target = document; }\n var options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return function () { return target.removeEventListener(type, fn, options); };\n}\nfunction createMirror() {\n return {\n map: {},\n getId: function (n) {\n if (!n || !n.__sn) {\n return -1;\n }\n return n.__sn.id;\n },\n getNode: function (id) {\n return this.map[id] || null;\n },\n removeNodeFromMap: function (n) {\n var _this = this;\n var id = n.__sn && n.__sn.id;\n delete this.map[id];\n if (n.childNodes) {\n n.childNodes.forEach(function (child) {\n return _this.removeNodeFromMap(child);\n });\n }\n },\n has: function (id) {\n return this.map.hasOwnProperty(id);\n },\n reset: function () {\n this.map = {};\n },\n };\n}\nvar DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\n '\\r\\n' +\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\n '\\r\\n' +\n 'or you can use record.mirror to access the mirror instance during recording.';\nvar _mirror = {\n map: {},\n getId: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset: function () {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n};\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get: function (target, prop, receiver) {\n if (prop === 'map') {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n}\nfunction throttle(func, wait, options) {\n if (options === void 0) { options = {}; }\n var timeout = null;\n var previous = 0;\n return function (arg) {\n var now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n var remaining = wait - (now - previous);\n var context = this;\n var args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n }\n else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(function () {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win) {\n if (win === void 0) { win = window; }\n var original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(target, key, isRevoked\n ? d\n : {\n set: function (value) {\n var _this = this;\n setTimeout(function () {\n d.set.call(_this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n },\n });\n return function () { return hookSetter(target, key, original || {}, true); };\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return function () { };\n }\n var original_1 = source[name];\n var wrapped = replacement(original_1);\n if (typeof wrapped === 'function') {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original_1,\n },\n });\n }\n source[name] = wrapped;\n return function () {\n source[name] = original_1;\n };\n }\n catch (_a) {\n return function () { };\n }\n}\nfunction getWindowHeight() {\n return (window.innerHeight ||\n (document.documentElement && document.documentElement.clientHeight) ||\n (document.body && document.body.clientHeight));\n}\nfunction getWindowWidth() {\n return (window.innerWidth ||\n (document.documentElement && document.documentElement.clientWidth) ||\n (document.body && document.body.clientWidth));\n}\nfunction isBlocked(node, blockClass) {\n if (!node) {\n return false;\n }\n if (node.nodeType === node.ELEMENT_NODE) {\n var needBlock_1 = false;\n if (typeof blockClass === 'string') {\n if (node.closest !== undefined) {\n return node.closest('.' + blockClass) !== null;\n }\n else {\n needBlock_1 = node.classList.contains(blockClass);\n }\n }\n else {\n node.classList.forEach(function (className) {\n if (blockClass.test(className)) {\n needBlock_1 = true;\n }\n });\n }\n return needBlock_1 || isBlocked(node.parentNode, blockClass);\n }\n if (node.nodeType === node.TEXT_NODE) {\n return isBlocked(node.parentNode, blockClass);\n }\n return isBlocked(node.parentNode, blockClass);\n}\nfunction isIgnored(n) {\n if ('__sn' in n) {\n return n.__sn.id === IGNORED_NODE;\n }\n return false;\n}\nfunction isAncestorRemoved(target, mirror) {\n if (isShadowRoot(target)) {\n return false;\n }\n var id = mirror.getId(target);\n if (!mirror.has(id)) {\n return true;\n }\n if (target.parentNode &&\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!target.parentNode) {\n return true;\n }\n return isAncestorRemoved(target.parentNode, mirror);\n}\nfunction isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill(win) {\n if (win === void 0) { win = window; }\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype\n .forEach;\n }\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype\n .forEach;\n }\n if (!Node.prototype.contains) {\n Node.prototype.contains = function contains(node) {\n if (!(0 in arguments)) {\n throw new TypeError('1 argument is required');\n }\n do {\n if (this === node) {\n return true;\n }\n } while ((node = node && node.parentNode));\n return false;\n };\n }\n}\nvar TreeIndex = (function () {\n function TreeIndex() {\n this.reset();\n }\n TreeIndex.prototype.add = function (mutation) {\n var parentTreeNode = this.indexes.get(mutation.parentId);\n var treeNode = {\n id: mutation.node.id,\n mutation: mutation,\n children: [],\n texts: [],\n attributes: [],\n };\n if (!parentTreeNode) {\n this.tree[treeNode.id] = treeNode;\n }\n else {\n treeNode.parent = parentTreeNode;\n parentTreeNode.children[treeNode.id] = treeNode;\n }\n this.indexes.set(treeNode.id, treeNode);\n };\n TreeIndex.prototype.remove = function (mutation, mirror) {\n var _this = this;\n var parentTreeNode = this.indexes.get(mutation.parentId);\n var treeNode = this.indexes.get(mutation.id);\n var deepRemoveFromMirror = function (id) {\n _this.removeIdSet.add(id);\n var node = mirror.getNode(id);\n node === null || node === void 0 ? void 0 : node.childNodes.forEach(function (childNode) {\n if ('__sn' in childNode) {\n deepRemoveFromMirror(childNode.__sn.id);\n }\n });\n };\n var deepRemoveFromTreeIndex = function (node) {\n _this.removeIdSet.add(node.id);\n Object.values(node.children).forEach(function (n) { return deepRemoveFromTreeIndex(n); });\n var _treeNode = _this.indexes.get(node.id);\n if (_treeNode) {\n var _parentTreeNode = _treeNode.parent;\n if (_parentTreeNode) {\n delete _treeNode.parent;\n delete _parentTreeNode.children[_treeNode.id];\n _this.indexes.delete(mutation.id);\n }\n }\n };\n if (!treeNode) {\n this.removeNodeMutations.push(mutation);\n deepRemoveFromMirror(mutation.id);\n }\n else if (!parentTreeNode) {\n delete this.tree[treeNode.id];\n this.indexes.delete(treeNode.id);\n deepRemoveFromTreeIndex(treeNode);\n }\n else {\n delete treeNode.parent;\n delete parentTreeNode.children[treeNode.id];\n this.indexes.delete(mutation.id);\n deepRemoveFromTreeIndex(treeNode);\n }\n };\n TreeIndex.prototype.text = function (mutation) {\n var treeNode = this.indexes.get(mutation.id);\n if (treeNode) {\n treeNode.texts.push(mutation);\n }\n else {\n this.textMutations.push(mutation);\n }\n };\n TreeIndex.prototype.attribute = function (mutation) {\n var treeNode = this.indexes.get(mutation.id);\n if (treeNode) {\n treeNode.attributes.push(mutation);\n }\n else {\n this.attributeMutations.push(mutation);\n }\n };\n TreeIndex.prototype.scroll = function (d) {\n this.scrollMap.set(d.id, d);\n };\n TreeIndex.prototype.input = function (d) {\n this.inputMap.set(d.id, d);\n };\n TreeIndex.prototype.flush = function () {\n var e_1, _a, e_2, _b;\n var _this = this;\n var _c = this, tree = _c.tree, removeNodeMutations = _c.removeNodeMutations, textMutations = _c.textMutations, attributeMutations = _c.attributeMutations;\n var batchMutationData = {\n source: IncrementalSource.Mutation,\n removes: removeNodeMutations,\n texts: textMutations,\n attributes: attributeMutations,\n adds: [],\n };\n var walk = function (treeNode, removed) {\n if (removed) {\n _this.removeIdSet.add(treeNode.id);\n }\n batchMutationData.texts = batchMutationData.texts\n .concat(removed ? [] : treeNode.texts)\n .filter(function (m) { return !_this.removeIdSet.has(m.id); });\n batchMutationData.attributes = batchMutationData.attributes\n .concat(removed ? [] : treeNode.attributes)\n .filter(function (m) { return !_this.removeIdSet.has(m.id); });\n if (!_this.removeIdSet.has(treeNode.id) &&\n !_this.removeIdSet.has(treeNode.mutation.parentId) &&\n !removed) {\n batchMutationData.adds.push(treeNode.mutation);\n if (treeNode.children) {\n Object.values(treeNode.children).forEach(function (n) { return walk(n, false); });\n }\n }\n else {\n Object.values(treeNode.children).forEach(function (n) { return walk(n, true); });\n }\n };\n Object.values(tree).forEach(function (n) { return walk(n, false); });\n try {\n for (var _d = __values(this.scrollMap.keys()), _e = _d.next(); !_e.done; _e = _d.next()) {\n var id = _e.value;\n if (this.removeIdSet.has(id)) {\n this.scrollMap.delete(id);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var _f = __values(this.inputMap.keys()), _g = _f.next(); !_g.done; _g = _f.next()) {\n var id = _g.value;\n if (this.removeIdSet.has(id)) {\n this.inputMap.delete(id);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_b = _f.return)) _b.call(_f);\n }\n finally { if (e_2) throw e_2.error; }\n }\n var scrollMap = new Map(this.scrollMap);\n var inputMap = new Map(this.inputMap);\n this.reset();\n return {\n mutationData: batchMutationData,\n scrollMap: scrollMap,\n inputMap: inputMap,\n };\n };\n TreeIndex.prototype.reset = function () {\n this.tree = [];\n this.indexes = new Map();\n this.removeNodeMutations = [];\n this.textMutations = [];\n this.attributeMutations = [];\n this.removeIdSet = new Set();\n this.scrollMap = new Map();\n this.inputMap = new Map();\n };\n TreeIndex.prototype.idRemoved = function (id) {\n return this.removeIdSet.has(id);\n };\n return TreeIndex;\n}());\nfunction queueToResolveTrees(queue) {\n var e_3, _a;\n var queueNodeMap = {};\n var putIntoMap = function (m, parent) {\n var nodeInTree = {\n value: m,\n parent: parent,\n children: [],\n };\n queueNodeMap[m.node.id] = nodeInTree;\n return nodeInTree;\n };\n var queueNodeTrees = [];\n try {\n for (var queue_1 = __values(queue), queue_1_1 = queue_1.next(); !queue_1_1.done; queue_1_1 = queue_1.next()) {\n var mutation = queue_1_1.value;\n var nextId = mutation.nextId, parentId = mutation.parentId;\n if (nextId && nextId in queueNodeMap) {\n var nextInTree = queueNodeMap[nextId];\n if (nextInTree.parent) {\n var idx = nextInTree.parent.children.indexOf(nextInTree);\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\n }\n else {\n var idx = queueNodeTrees.indexOf(nextInTree);\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\n }\n continue;\n }\n if (parentId in queueNodeMap) {\n var parentInTree = queueNodeMap[parentId];\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\n continue;\n }\n queueNodeTrees.push(putIntoMap(mutation, null));\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (queue_1_1 && !queue_1_1.done && (_a = queue_1.return)) _a.call(queue_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return queueNodeTrees;\n}\nfunction iterateResolveTree(tree, cb) {\n cb(tree.value);\n for (var i = tree.children.length - 1; i >= 0; i--) {\n iterateResolveTree(tree.children[i], cb);\n }\n}\nfunction isIframeINode(node) {\n if ('__sn' in node) {\n return (node.__sn.type === NodeType.Element && node.__sn.tagName === 'iframe');\n }\n return false;\n}\nfunction getBaseDimension(node, rootIframe) {\n var _a, _b;\n var frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.frameElement;\n if (!frameElement || frameElement === rootIframe) {\n return {\n x: 0,\n y: 0,\n relativeScale: 1,\n absoluteScale: 1,\n };\n }\n var frameDimension = frameElement.getBoundingClientRect();\n var frameBaseDimension = getBaseDimension(frameElement, rootIframe);\n var relativeScale = frameDimension.height / frameElement.clientHeight;\n return {\n x: frameDimension.x * frameBaseDimension.relativeScale +\n frameBaseDimension.x,\n y: frameDimension.y * frameBaseDimension.relativeScale +\n frameBaseDimension.y,\n relativeScale: relativeScale,\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\n };\n}\nfunction hasShadowRoot(n) {\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\n}\n\nexport { TreeIndex, _mirror, createMirror, getBaseDimension, getWindowHeight, getWindowWidth, hasShadowRoot, hookSetter, isAncestorRemoved, isBlocked, isIframeINode, isIgnored, isTouchEvent, iterateResolveTree, on, patch, polyfill, queueToResolveTrees, throttle };\n","import { __values } from '../../ext/tslib/tslib.es6.js';\nimport { isShadowRoot, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isAncestorRemoved, isIframeINode, hasShadowRoot } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\n return '__ln' in n;\n}\nvar DoubleLinkedList = (function () {\n function DoubleLinkedList() {\n this.length = 0;\n this.head = null;\n }\n DoubleLinkedList.prototype.get = function (position) {\n if (position >= this.length) {\n throw new Error('Position outside of list range');\n }\n var current = this.head;\n for (var index = 0; index < position; index++) {\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\n }\n return current;\n };\n DoubleLinkedList.prototype.addNode = function (n) {\n var node = {\n value: n,\n previous: null,\n next: null,\n };\n n.__ln = node;\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\n var current = n.previousSibling.__ln.next;\n node.next = current;\n node.previous = n.previousSibling.__ln;\n n.previousSibling.__ln.next = node;\n if (current) {\n current.previous = node;\n }\n }\n else if (n.nextSibling &&\n isNodeInLinkedList(n.nextSibling) &&\n n.nextSibling.__ln.previous) {\n var current = n.nextSibling.__ln.previous;\n node.previous = current;\n node.next = n.nextSibling.__ln;\n n.nextSibling.__ln.previous = node;\n if (current) {\n current.next = node;\n }\n }\n else {\n if (this.head) {\n this.head.previous = node;\n }\n node.next = this.head;\n this.head = node;\n }\n this.length++;\n };\n DoubleLinkedList.prototype.removeNode = function (n) {\n var current = n.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n }\n }\n else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n }\n }\n if (n.__ln) {\n delete n.__ln;\n }\n this.length--;\n };\n return DoubleLinkedList;\n}());\nvar moveKey = function (id, parentId) { return \"\".concat(id, \"@\").concat(parentId); };\nfunction isINode(n) {\n return '__sn' in n;\n}\nvar MutationBuffer = (function () {\n function MutationBuffer() {\n var _this = this;\n this.frozen = false;\n this.locked = false;\n this.texts = [];\n this.attributes = [];\n this.removes = [];\n this.mapRemoves = [];\n this.movedMap = {};\n this.addedSet = new Set();\n this.movedSet = new Set();\n this.droppedSet = new Set();\n this.processMutations = function (mutations) {\n mutations.forEach(_this.processMutation);\n _this.emit();\n };\n this.emit = function () {\n var e_1, _a, e_2, _b;\n if (_this.frozen || _this.locked) {\n return;\n }\n var adds = [];\n var addList = new DoubleLinkedList();\n var getNextId = function (n) {\n var ns = n;\n var nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && _this.mirror.getId(ns);\n }\n return nextId;\n };\n var pushAdd = function (n) {\n var _a, _b, _c, _d, _e;\n var shadowHost = n.getRootNode\n ? (_a = n.getRootNode()) === null || _a === void 0 ? void 0 : _a.host\n : null;\n var rootShadowHost = shadowHost;\n while ((_c = (_b = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _b === void 0 ? void 0 : _b.call(rootShadowHost)) === null || _c === void 0 ? void 0 : _c.host)\n rootShadowHost =\n ((_e = (_d = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _d === void 0 ? void 0 : _d.call(rootShadowHost)) === null || _e === void 0 ? void 0 : _e.host) ||\n null;\n var notInDoc = !_this.doc.contains(n) &&\n (rootShadowHost === null || !_this.doc.contains(rootShadowHost));\n if (!n.parentNode || notInDoc) {\n return;\n }\n var parentId = isShadowRoot(n.parentNode)\n ? _this.mirror.getId(shadowHost)\n : _this.mirror.getId(n.parentNode);\n var nextId = getNextId(n);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n);\n }\n var sn = serializeNodeWithId(n, {\n doc: _this.doc,\n map: _this.mirror.map,\n blockClass: _this.blockClass,\n blockSelector: _this.blockSelector,\n maskTextClass: _this.maskTextClass,\n maskTextSelector: _this.maskTextSelector,\n skipChild: true,\n inlineStylesheet: _this.inlineStylesheet,\n maskInputOptions: _this.maskInputOptions,\n maskTextFn: _this.maskTextFn,\n maskInputFn: _this.maskInputFn,\n slimDOMOptions: _this.slimDOMOptions,\n recordCanvas: _this.recordCanvas,\n inlineImages: _this.inlineImages,\n onSerialize: function (currentN) {\n if (isIframeINode(currentN)) {\n _this.iframeManager.addIframe(currentN);\n }\n if (hasShadowRoot(n)) {\n _this.shadowDomManager.addShadowRoot(n.shadowRoot, document);\n }\n },\n onIframeLoad: function (iframe, childSn) {\n _this.iframeManager.attachIframe(iframe, childSn);\n _this.shadowDomManager.observeAttachShadow(iframe);\n },\n });\n if (sn) {\n adds.push({\n parentId: parentId,\n nextId: nextId,\n node: sn,\n });\n }\n };\n while (_this.mapRemoves.length) {\n _this.mirror.removeNodeFromMap(_this.mapRemoves.shift());\n }\n try {\n for (var _c = __values(_this.movedSet), _d = _c.next(); !_d.done; _d = _c.next()) {\n var n = _d.value;\n if (isParentRemoved(_this.removes, n, _this.mirror) &&\n !_this.movedSet.has(n.parentNode)) {\n continue;\n }\n pushAdd(n);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var _e = __values(_this.addedSet), _f = _e.next(); !_f.done; _f = _e.next()) {\n var n = _f.value;\n if (!isAncestorInSet(_this.droppedSet, n) &&\n !isParentRemoved(_this.removes, n, _this.mirror)) {\n pushAdd(n);\n }\n else if (isAncestorInSet(_this.movedSet, n)) {\n pushAdd(n);\n }\n else {\n _this.droppedSet.add(n);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n var candidate = null;\n while (addList.length) {\n var node = null;\n if (candidate) {\n var parentId = _this.mirror.getId(candidate.value.parentNode);\n var nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node = candidate;\n }\n }\n if (!node) {\n for (var index = addList.length - 1; index >= 0; index--) {\n var _node = addList.get(index);\n if (_node) {\n var parentId = _this.mirror.getId(_node.value.parentNode);\n var nextId = getNextId(_node.value);\n if (parentId !== -1 && nextId !== -1) {\n node = _node;\n break;\n }\n }\n }\n }\n if (!node) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node.previous;\n addList.removeNode(node.value);\n pushAdd(node.value);\n }\n var payload = {\n texts: _this.texts\n .map(function (text) { return ({\n id: _this.mirror.getId(text.node),\n value: text.value,\n }); })\n .filter(function (text) { return _this.mirror.has(text.id); }),\n attributes: _this.attributes\n .map(function (attribute) { return ({\n id: _this.mirror.getId(attribute.node),\n attributes: attribute.attributes,\n }); })\n .filter(function (attribute) { return _this.mirror.has(attribute.id); }),\n removes: _this.removes,\n adds: adds,\n };\n if (!payload.texts.length &&\n !payload.attributes.length &&\n !payload.removes.length &&\n !payload.adds.length) {\n return;\n }\n _this.texts = [];\n _this.attributes = [];\n _this.removes = [];\n _this.addedSet = new Set();\n _this.movedSet = new Set();\n _this.droppedSet = new Set();\n _this.movedMap = {};\n _this.mutationCb(payload);\n };\n this.processMutation = function (m) {\n var e_3, _a, e_4, _b;\n if (isIgnored(m.target)) {\n return;\n }\n switch (m.type) {\n case 'characterData': {\n var value = m.target.textContent;\n if (!isBlocked(m.target, _this.blockClass) && value !== m.oldValue) {\n _this.texts.push({\n value: needMaskingText(m.target, _this.maskTextClass, _this.maskTextSelector) && value\n ? _this.maskTextFn\n ? _this.maskTextFn(value)\n : value.replace(/[\\S]/g, '*')\n : value,\n node: m.target,\n });\n }\n break;\n }\n case 'attributes': {\n var target = m.target;\n var value = m.target.getAttribute(m.attributeName);\n if (m.attributeName === 'value') {\n value = maskInputValue({\n maskInputOptions: _this.maskInputOptions,\n tagName: m.target.tagName,\n type: m.target.getAttribute('type'),\n value: value,\n maskInputFn: _this.maskInputFn,\n });\n }\n if (isBlocked(m.target, _this.blockClass) || value === m.oldValue) {\n return;\n }\n var item = _this.attributes.find(function (a) { return a.node === m.target; });\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n };\n _this.attributes.push(item);\n }\n if (m.attributeName === 'style') {\n var old = _this.doc.createElement('span');\n if (m.oldValue) {\n old.setAttribute('style', m.oldValue);\n }\n if (item.attributes.style === undefined ||\n item.attributes.style === null) {\n item.attributes.style = {};\n }\n var styleObj = item.attributes.style;\n try {\n for (var _c = __values(Array.from(target.style)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var pname = _d.value;\n var newValue = target.style.getPropertyValue(pname);\n var newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) ||\n newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === '') {\n styleObj[pname] = newValue;\n }\n else {\n styleObj[pname] = [newValue, newPriority];\n }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_3) throw e_3.error; }\n }\n try {\n for (var _e = __values(Array.from(old.style)), _f = _e.next(); !_f.done; _f = _e.next()) {\n var pname = _f.value;\n if (target.style.getPropertyValue(pname) === '') {\n styleObj[pname] = false;\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n else {\n item.attributes[m.attributeName] = transformAttribute(_this.doc, m.target.tagName, m.attributeName, value);\n }\n break;\n }\n case 'childList': {\n m.addedNodes.forEach(function (n) { return _this.genAdds(n, m.target); });\n m.removedNodes.forEach(function (n) {\n var nodeId = _this.mirror.getId(n);\n var parentId = isShadowRoot(m.target)\n ? _this.mirror.getId(m.target.host)\n : _this.mirror.getId(m.target);\n if (isBlocked(m.target, _this.blockClass) || isIgnored(n)) {\n return;\n }\n if (_this.addedSet.has(n)) {\n deepDelete(_this.addedSet, n);\n _this.droppedSet.add(n);\n }\n else if (_this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, _this.mirror)) ;\n else if (_this.movedSet.has(n) &&\n _this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(_this.movedSet, n);\n }\n else {\n _this.removes.push({\n parentId: parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) ? true : undefined,\n });\n }\n _this.mapRemoves.push(n);\n });\n break;\n }\n }\n };\n this.genAdds = function (n, target) {\n if (target && isBlocked(target, _this.blockClass)) {\n return;\n }\n if (isINode(n)) {\n if (isIgnored(n)) {\n return;\n }\n _this.movedSet.add(n);\n var targetId = null;\n if (target && isINode(target)) {\n targetId = target.__sn.id;\n }\n if (targetId) {\n _this.movedMap[moveKey(n.__sn.id, targetId)] = true;\n }\n }\n else {\n _this.addedSet.add(n);\n _this.droppedSet.delete(n);\n }\n if (!isBlocked(n, _this.blockClass))\n n.childNodes.forEach(function (childN) { return _this.genAdds(childN); });\n };\n }\n MutationBuffer.prototype.init = function (options) {\n var _this = this;\n [\n 'mutationCb',\n 'blockClass',\n 'blockSelector',\n 'maskTextClass',\n 'maskTextSelector',\n 'inlineStylesheet',\n 'maskInputOptions',\n 'maskTextFn',\n 'maskInputFn',\n 'recordCanvas',\n 'inlineImages',\n 'slimDOMOptions',\n 'doc',\n 'mirror',\n 'iframeManager',\n 'shadowDomManager',\n 'canvasManager',\n ].forEach(function (key) {\n _this[key] = options[key];\n });\n };\n MutationBuffer.prototype.freeze = function () {\n this.frozen = true;\n this.canvasManager.freeze();\n };\n MutationBuffer.prototype.unfreeze = function () {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n };\n MutationBuffer.prototype.isFrozen = function () {\n return this.frozen;\n };\n MutationBuffer.prototype.lock = function () {\n this.locked = true;\n this.canvasManager.lock();\n };\n MutationBuffer.prototype.unlock = function () {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n };\n MutationBuffer.prototype.reset = function () {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n };\n return MutationBuffer;\n}());\nfunction deepDelete(addsSet, n) {\n addsSet.delete(n);\n n.childNodes.forEach(function (childN) { return deepDelete(addsSet, childN); });\n}\nfunction isParentRemoved(removes, n, mirror) {\n var parentNode = n.parentNode;\n if (!parentNode) {\n return false;\n }\n var parentId = mirror.getId(parentNode);\n if (removes.some(function (r) { return r.id === parentId; })) {\n return true;\n }\n return isParentRemoved(removes, parentNode, mirror);\n}\nfunction isAncestorInSet(set, n) {\n var parentNode = n.parentNode;\n if (!parentNode) {\n return false;\n }\n if (set.has(parentNode)) {\n return true;\n }\n return isAncestorInSet(set, parentNode);\n}\n\nexport default MutationBuffer;\n","import { __read, __values, __spreadArray, __assign } from '../../ext/tslib/tslib.es6.js';\nimport { maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isTouchEvent, isBlocked, getWindowHeight, getWindowWidth, hookSetter, patch } from '../utils.js';\nimport { IncrementalSource, MouseInteractions } from '../types.js';\nimport MutationBuffer from './mutation.js';\n\nvar mutationBuffers = [];\nvar isCSSGroupingRuleSupported = typeof CSSGroupingRule !== 'undefined';\nvar isCSSMediaRuleSupported = typeof CSSMediaRule !== 'undefined';\nvar isCSSSupportsRuleSupported = typeof CSSSupportsRule !== 'undefined';\nvar isCSSConditionRuleSupported = typeof CSSConditionRule !== 'undefined';\nfunction getEventTarget(event) {\n try {\n if ('composedPath' in event) {\n var path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n }\n else if ('path' in event && event.path.length) {\n return event.path[0];\n }\n return event.target;\n }\n catch (_a) {\n return event.target;\n }\n}\nfunction initMutationObserver(options, rootEl) {\n var _a, _b;\n var mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n var mutationObserverCtor = window.MutationObserver ||\n window.__rrMutationObserver;\n var 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');\n if (angularZoneSymbol &&\n window[angularZoneSymbol]) {\n mutationObserverCtor = window[angularZoneSymbol];\n }\n var observer = new mutationObserverCtor(mutationBuffer.processMutations.bind(mutationBuffer));\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n });\n return observer;\n}\nfunction initMoveObserver(_a) {\n var mousemoveCb = _a.mousemoveCb, sampling = _a.sampling, doc = _a.doc, mirror = _a.mirror;\n if (sampling.mousemove === false) {\n return function () { };\n }\n var threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\n var callbackThreshold = typeof sampling.mousemoveCallback === 'number'\n ? sampling.mousemoveCallback\n : 500;\n var positions = [];\n var timeBaseline;\n var wrappedCb = throttle(function (source) {\n var totalOffset = Date.now() - timeBaseline;\n mousemoveCb(positions.map(function (p) {\n p.timeOffset -= totalOffset;\n return p;\n }), source);\n positions = [];\n timeBaseline = null;\n }, callbackThreshold);\n var updatePosition = throttle(function (evt) {\n var target = getEventTarget(evt);\n var _a = isTouchEvent(evt)\n ? evt.changedTouches[0]\n : evt, clientX = _a.clientX, clientY = _a.clientY;\n if (!timeBaseline) {\n timeBaseline = Date.now();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror.getId(target),\n timeOffset: Date.now() - timeBaseline,\n });\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\n ? IncrementalSource.Drag\n : evt instanceof MouseEvent\n ? IncrementalSource.MouseMove\n : IncrementalSource.TouchMove);\n }, threshold, {\n trailing: false,\n });\n var handlers = [\n on('mousemove', updatePosition, doc),\n on('touchmove', updatePosition, doc),\n on('drag', updatePosition, doc),\n ];\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction initMouseInteractionObserver(_a) {\n var mouseInteractionCb = _a.mouseInteractionCb, doc = _a.doc, mirror = _a.mirror, blockClass = _a.blockClass, sampling = _a.sampling;\n if (sampling.mouseInteraction === false) {\n return function () { };\n }\n var disableMap = sampling.mouseInteraction === true ||\n sampling.mouseInteraction === undefined\n ? {}\n : sampling.mouseInteraction;\n var handlers = [];\n var getHandler = function (eventKey) {\n return function (event) {\n var target = getEventTarget(event);\n if (isBlocked(target, blockClass)) {\n return;\n }\n var e = isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e) {\n return;\n }\n var id = mirror.getId(target);\n var clientX = e.clientX, clientY = e.clientY;\n mouseInteractionCb({\n type: MouseInteractions[eventKey],\n id: id,\n x: clientX,\n y: clientY,\n });\n };\n };\n Object.keys(MouseInteractions)\n .filter(function (key) {\n return Number.isNaN(Number(key)) &&\n !key.endsWith('_Departed') &&\n disableMap[key] !== false;\n })\n .forEach(function (eventKey) {\n var eventName = eventKey.toLowerCase();\n var handler = getHandler(eventKey);\n handlers.push(on(eventName, handler, doc));\n });\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction initScrollObserver(_a) {\n var scrollCb = _a.scrollCb, doc = _a.doc, mirror = _a.mirror, blockClass = _a.blockClass, sampling = _a.sampling;\n var updatePosition = throttle(function (evt) {\n var target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass)) {\n return;\n }\n var id = mirror.getId(target);\n if (target === doc) {\n var scrollEl = (doc.scrollingElement || doc.documentElement);\n scrollCb({\n id: id,\n x: scrollEl.scrollLeft,\n y: scrollEl.scrollTop,\n });\n }\n else {\n scrollCb({\n id: id,\n x: target.scrollLeft,\n y: target.scrollTop,\n });\n }\n }, sampling.scroll || 100);\n return on('scroll', updatePosition, doc);\n}\nfunction initViewportResizeObserver(_a) {\n var viewportResizeCb = _a.viewportResizeCb;\n var lastH = -1;\n var lastW = -1;\n var updateDimension = throttle(function () {\n var height = getWindowHeight();\n var width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height),\n });\n lastH = height;\n lastW = width;\n }\n }, 200);\n return on('resize', updateDimension, window);\n}\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\n var value = __assign({}, v);\n if (!enable)\n delete value.userTriggered;\n return value;\n}\nvar INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\nvar lastInputValueMap = new WeakMap();\nfunction initInputObserver(_a) {\n var inputCb = _a.inputCb, doc = _a.doc, mirror = _a.mirror, blockClass = _a.blockClass, ignoreClass = _a.ignoreClass, maskInputOptions = _a.maskInputOptions, maskInputFn = _a.maskInputFn, sampling = _a.sampling, userTriggeredOnInput = _a.userTriggeredOnInput;\n function eventHandler(event) {\n var target = getEventTarget(event);\n var userTriggered = event.isTrusted;\n if (target && target.tagName === 'OPTION')\n target = target.parentElement;\n if (!target ||\n !target.tagName ||\n INPUT_TAGS.indexOf(target.tagName) < 0 ||\n isBlocked(target, blockClass)) {\n return;\n }\n var type = target.type;\n if (target.classList.contains(ignoreClass)) {\n return;\n }\n var text = target.value;\n var isChecked = false;\n if (type === 'radio' || type === 'checkbox') {\n isChecked = target.checked;\n }\n else if (maskInputOptions[target.tagName.toLowerCase()] ||\n maskInputOptions[type]) {\n text = maskInputValue({\n maskInputOptions: maskInputOptions,\n tagName: target.tagName,\n type: type,\n value: text,\n maskInputFn: maskInputFn,\n });\n }\n cbWithDedup(target, wrapEventWithUserTriggeredFlag({ text: text, isChecked: isChecked, userTriggered: userTriggered }, userTriggeredOnInput));\n var name = target.name;\n if (type === 'radio' && name && isChecked) {\n doc\n .querySelectorAll(\"input[type=\\\"radio\\\"][name=\\\"\".concat(name, \"\\\"]\"))\n .forEach(function (el) {\n if (el !== target) {\n cbWithDedup(el, wrapEventWithUserTriggeredFlag({\n text: el.value,\n isChecked: !isChecked,\n userTriggered: false,\n }, userTriggeredOnInput));\n }\n });\n }\n }\n function cbWithDedup(target, v) {\n var lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue ||\n lastInputValue.text !== v.text ||\n lastInputValue.isChecked !== v.isChecked) {\n lastInputValueMap.set(target, v);\n var id = mirror.getId(target);\n inputCb(__assign(__assign({}, v), { id: id }));\n }\n }\n var events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\n var handlers = events.map(function (eventName) { return on(eventName, eventHandler, doc); });\n var propertyDescriptor = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value');\n var hookProperties = [\n [HTMLInputElement.prototype, 'value'],\n [HTMLInputElement.prototype, 'checked'],\n [HTMLSelectElement.prototype, 'value'],\n [HTMLTextAreaElement.prototype, 'value'],\n [HTMLSelectElement.prototype, 'selectedIndex'],\n [HTMLOptionElement.prototype, 'selected'],\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push.apply(handlers, __spreadArray([], __read(hookProperties.map(function (p) {\n return hookSetter(p[0], p[1], {\n set: function () {\n eventHandler({ target: this });\n },\n });\n })), false));\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction getNestedCSSRulePositions(rule) {\n var positions = [];\n function recurse(childRule, pos) {\n if ((isCSSGroupingRuleSupported &&\n childRule.parentRule instanceof CSSGroupingRule) ||\n (isCSSMediaRuleSupported &&\n childRule.parentRule instanceof CSSMediaRule) ||\n (isCSSSupportsRuleSupported &&\n childRule.parentRule instanceof CSSSupportsRule) ||\n (isCSSConditionRuleSupported &&\n childRule.parentRule instanceof CSSConditionRule)) {\n var rules = Array.from(childRule.parentRule.cssRules);\n var index = rules.indexOf(childRule);\n pos.unshift(index);\n }\n else {\n var rules = Array.from(childRule.parentStyleSheet.cssRules);\n var index = rules.indexOf(childRule);\n pos.unshift(index);\n }\n return pos;\n }\n return recurse(rule, positions);\n}\nfunction initStyleSheetObserver(_a, _b) {\n var styleSheetRuleCb = _a.styleSheetRuleCb, mirror = _a.mirror;\n var win = _b.win;\n var insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = function (rule, index) {\n var id = mirror.getId(this.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n adds: [{ rule: rule, index: index }],\n });\n }\n return insertRule.apply(this, arguments);\n };\n var deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = function (index) {\n var id = mirror.getId(this.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n removes: [{ index: index }],\n });\n }\n return deleteRule.apply(this, arguments);\n };\n var supportedNestedCSSRuleTypes = {};\n if (isCSSGroupingRuleSupported) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n }\n else {\n if (isCSSMediaRuleSupported) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (isCSSConditionRuleSupported) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (isCSSSupportsRuleSupported) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n var unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(function (_a) {\n var _b = __read(_a, 2), typeKey = _b[0], type = _b[1];\n unmodifiedFunctions[typeKey] = {\n insertRule: type.prototype.insertRule,\n deleteRule: type.prototype.deleteRule,\n };\n type.prototype.insertRule = function (rule, index) {\n var id = mirror.getId(this.parentStyleSheet.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n adds: [\n {\n rule: rule,\n index: __spreadArray(__spreadArray([], __read(getNestedCSSRulePositions(this)), false), [\n index || 0,\n ], false),\n },\n ],\n });\n }\n return unmodifiedFunctions[typeKey].insertRule.apply(this, arguments);\n };\n type.prototype.deleteRule = function (index) {\n var id = mirror.getId(this.parentStyleSheet.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id: id,\n removes: [{ index: __spreadArray(__spreadArray([], __read(getNestedCSSRulePositions(this)), false), [index], false) }],\n });\n }\n return unmodifiedFunctions[typeKey].deleteRule.apply(this, arguments);\n };\n });\n return function () {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n Object.entries(supportedNestedCSSRuleTypes).forEach(function (_a) {\n var _b = __read(_a, 2), typeKey = _b[0], type = _b[1];\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n };\n}\nfunction initStyleDeclarationObserver(_a, _b) {\n var styleDeclarationCb = _a.styleDeclarationCb, mirror = _a.mirror;\n var win = _b.win;\n var setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = function (property, value, priority) {\n var _a, _b;\n var id = mirror.getId((_b = (_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet) === null || _b === void 0 ? void 0 : _b.ownerNode);\n if (id !== -1) {\n styleDeclarationCb({\n id: id,\n set: {\n property: property,\n value: value,\n priority: priority,\n },\n index: getNestedCSSRulePositions(this.parentRule),\n });\n }\n return setProperty.apply(this, arguments);\n };\n var removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = function (property) {\n var _a, _b;\n var id = mirror.getId((_b = (_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet) === null || _b === void 0 ? void 0 : _b.ownerNode);\n if (id !== -1) {\n styleDeclarationCb({\n id: id,\n remove: {\n property: property,\n },\n index: getNestedCSSRulePositions(this.parentRule),\n });\n }\n return removeProperty.apply(this, arguments);\n };\n return function () {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n };\n}\nfunction initMediaInteractionObserver(_a) {\n var mediaInteractionCb = _a.mediaInteractionCb, blockClass = _a.blockClass, mirror = _a.mirror, sampling = _a.sampling;\n var handler = function (type) {\n return throttle(function (event) {\n var target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass)) {\n return;\n }\n var _a = target, currentTime = _a.currentTime, volume = _a.volume, muted = _a.muted;\n mediaInteractionCb({\n type: type,\n id: mirror.getId(target),\n currentTime: currentTime,\n volume: volume,\n muted: muted,\n });\n }, sampling.media || 500);\n };\n var handlers = [\n on('play', handler(0)),\n on('pause', handler(1)),\n on('seeked', handler(2)),\n on('volumechange', handler(3)),\n ];\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction initFontObserver(_a) {\n var fontCb = _a.fontCb, doc = _a.doc;\n var win = doc.defaultView;\n if (!win) {\n return function () { };\n }\n var handlers = [];\n var fontMap = new WeakMap();\n var originalFontFace = win.FontFace;\n win.FontFace = function FontFace(family, source, descriptors) {\n var fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family: family,\n buffer: typeof source !== 'string',\n descriptors: descriptors,\n fontSource: typeof source === 'string'\n ? source\n :\n JSON.stringify(Array.from(new Uint8Array(source))),\n });\n return fontFace;\n };\n var restoreHandler = patch(doc.fonts, 'add', function (original) {\n return function (fontFace) {\n setTimeout(function () {\n var p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }, 0);\n return original.apply(this, [fontFace]);\n };\n });\n handlers.push(function () {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\nfunction mergeHooks(o, hooks) {\n var mutationCb = o.mutationCb, mousemoveCb = o.mousemoveCb, mouseInteractionCb = o.mouseInteractionCb, scrollCb = o.scrollCb, viewportResizeCb = o.viewportResizeCb, inputCb = o.inputCb, mediaInteractionCb = o.mediaInteractionCb, styleSheetRuleCb = o.styleSheetRuleCb, styleDeclarationCb = o.styleDeclarationCb, canvasMutationCb = o.canvasMutationCb, fontCb = o.fontCb;\n o.mutationCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mutation) {\n hooks.mutation.apply(hooks, __spreadArray([], __read(p), false));\n }\n mutationCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.mousemoveCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mousemove) {\n hooks.mousemove.apply(hooks, __spreadArray([], __read(p), false));\n }\n mousemoveCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.mouseInteractionCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction.apply(hooks, __spreadArray([], __read(p), false));\n }\n mouseInteractionCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.scrollCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.scroll) {\n hooks.scroll.apply(hooks, __spreadArray([], __read(p), false));\n }\n scrollCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.viewportResizeCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.viewportResize) {\n hooks.viewportResize.apply(hooks, __spreadArray([], __read(p), false));\n }\n viewportResizeCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.inputCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.input) {\n hooks.input.apply(hooks, __spreadArray([], __read(p), false));\n }\n inputCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.mediaInteractionCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction.apply(hooks, __spreadArray([], __read(p), false));\n }\n mediaInteractionCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.styleSheetRuleCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule.apply(hooks, __spreadArray([], __read(p), false));\n }\n styleSheetRuleCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.styleDeclarationCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration.apply(hooks, __spreadArray([], __read(p), false));\n }\n styleDeclarationCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.canvasMutationCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.canvasMutation) {\n hooks.canvasMutation.apply(hooks, __spreadArray([], __read(p), false));\n }\n canvasMutationCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n o.fontCb = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n if (hooks.font) {\n hooks.font.apply(hooks, __spreadArray([], __read(p), false));\n }\n fontCb.apply(void 0, __spreadArray([], __read(p), false));\n };\n}\nfunction initObservers(o, hooks) {\n var e_1, _a;\n if (hooks === void 0) { hooks = {}; }\n var currentWindow = o.doc.defaultView;\n if (!currentWindow) {\n return function () { };\n }\n mergeHooks(o, hooks);\n var mutationObserver = initMutationObserver(o, o.doc);\n var mousemoveHandler = initMoveObserver(o);\n var mouseInteractionHandler = initMouseInteractionObserver(o);\n var scrollHandler = initScrollObserver(o);\n var viewportResizeHandler = initViewportResizeObserver(o);\n var inputHandler = initInputObserver(o);\n var mediaInteractionHandler = initMediaInteractionObserver(o);\n var styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n var styleDeclarationObserver = initStyleDeclarationObserver(o, {\n win: currentWindow,\n });\n var fontObserver = o.collectFonts ? initFontObserver(o) : function () { };\n var pluginHandlers = [];\n try {\n for (var _b = __values(o.plugins), _c = _b.next(); !_c.done; _c = _b.next()) {\n var plugin = _c.value;\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return function () {\n mutationBuffers.forEach(function (b) { return b.reset(); });\n mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n pluginHandlers.forEach(function (h) { return h(); });\n };\n}\n\nexport { INPUT_TAGS, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","var IframeManager = (function () {\n function IframeManager(options) {\n this.iframes = new WeakMap();\n this.mutationCb = options.mutationCb;\n }\n IframeManager.prototype.addIframe = function (iframeEl) {\n this.iframes.set(iframeEl, true);\n };\n IframeManager.prototype.addLoadListener = function (cb) {\n this.loadListener = cb;\n };\n IframeManager.prototype.attachIframe = function (iframeEl, childSn) {\n var _a;\n this.mutationCb({\n adds: [\n {\n parentId: iframeEl.__sn.id,\n nextId: null,\n node: childSn,\n },\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true,\n });\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\n };\n return IframeManager;\n}());\n\nexport { IframeManager };\n","import { __assign } from '../../ext/tslib/tslib.es6.js';\nimport { initMutationObserver, initScrollObserver } from './observer.js';\nimport { patch } from '../utils.js';\n\nvar ShadowDomManager = (function () {\n function ShadowDomManager(options) {\n this.restorePatches = [];\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n var manager = this;\n this.restorePatches.push(patch(HTMLElement.prototype, 'attachShadow', function (original) {\n return function () {\n var shadowRoot = original.apply(this, arguments);\n if (this.shadowRoot)\n manager.addShadowRoot(this.shadowRoot, this.ownerDocument);\n return shadowRoot;\n };\n }));\n }\n ShadowDomManager.prototype.addShadowRoot = function (shadowRoot, doc) {\n initMutationObserver(__assign(__assign({}, this.bypassOptions), { doc: doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\n initScrollObserver(__assign(__assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror }));\n };\n ShadowDomManager.prototype.observeAttachShadow = function (iframeElement) {\n if (iframeElement.contentWindow) {\n var manager_1 = this;\n this.restorePatches.push(patch(iframeElement.contentWindow.HTMLElement.prototype, 'attachShadow', function (original) {\n return function () {\n var shadowRoot = original.apply(this, arguments);\n if (this.shadowRoot)\n manager_1.addShadowRoot(this.shadowRoot, iframeElement.contentDocument);\n return shadowRoot;\n };\n }));\n }\n };\n ShadowDomManager.prototype.reset = function () {\n this.restorePatches.forEach(function (restorePatch) { return restorePatch(); });\n };\n return ShadowDomManager;\n}());\n\nexport { ShadowDomManager };\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 { __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { encode } from '../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nvar webGLVarMap = new Map();\nfunction variableListFor(ctx, ctor) {\n var contextMap = webGLVarMap.get(ctx);\n if (!contextMap) {\n contextMap = new Map();\n webGLVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nvar saveWebGLVar = function (value, win, ctx) {\n if (!value ||\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\n return;\n var name = value.constructor.name;\n var list = variableListFor(ctx, name);\n var index = list.indexOf(value);\n if (index === -1) {\n index = list.length;\n list.push(value);\n }\n return index;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map(function (arg) { return serializeArg(arg, win, ctx); });\n }\n else if (value === null) {\n return value;\n }\n else if (value instanceof Float32Array ||\n value instanceof Float64Array ||\n value instanceof Int32Array ||\n value instanceof Uint32Array ||\n value instanceof Uint8Array ||\n value instanceof Uint16Array ||\n value instanceof Int16Array ||\n value instanceof Int8Array ||\n value instanceof Uint8ClampedArray) {\n var name_1 = value.constructor.name;\n return {\n rr_type: name_1,\n args: [Object.values(value)],\n };\n }\n else if (value instanceof ArrayBuffer) {\n var name_2 = value.constructor.name;\n var base64 = encode(value);\n return {\n rr_type: name_2,\n base64: base64,\n };\n }\n else if (value instanceof DataView) {\n var name_3 = value.constructor.name;\n return {\n rr_type: name_3,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength,\n ],\n };\n }\n else if (value instanceof HTMLImageElement) {\n var name_4 = value.constructor.name;\n var src = value.src;\n return {\n rr_type: name_4,\n src: src,\n };\n }\n else if (value instanceof ImageData) {\n var name_5 = value.constructor.name;\n return {\n rr_type: name_5,\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\n };\n }\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\n var name_6 = value.constructor.name;\n var index = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name_6,\n index: index,\n };\n }\n return value;\n}\nvar serializeArgs = function (args, win, ctx) {\n return __spreadArray([], __read(args), false).map(function (arg) { return serializeArg(arg, win, ctx); });\n};\nvar isInstanceOfWebGLObject = function (value, win) {\n var webGLConstructorNames = [\n 'WebGLActiveInfo',\n 'WebGLBuffer',\n 'WebGLFramebuffer',\n 'WebGLProgram',\n 'WebGLRenderbuffer',\n 'WebGLShader',\n 'WebGLShaderPrecisionFormat',\n 'WebGLTexture',\n 'WebGLUniformLocation',\n 'WebGLVertexArrayObject',\n 'WebGLVertexArrayObjectOES',\n ];\n var supportedWebGLConstructorNames = webGLConstructorNames.filter(function (name) { return typeof win[name] === 'function'; });\n return Boolean(supportedWebGLConstructorNames.find(function (name) { return value instanceof win[name]; }));\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { __spreadArray, __read, __values } from '../../../../ext/tslib/tslib.es6.js';\nimport { CanvasContext } from '../../../types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, mirror, win) {\n var e_1, _a;\n var handlers = [];\n var props = Object.getOwnPropertyNames(prototype);\n var _loop_1 = function (prop) {\n try {\n if (typeof prototype[prop] !== 'function') {\n return \"continue\";\n }\n var restoreHandler = patch(prototype, prop, function (original) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = original.apply(this, args);\n saveWebGLVar(result, win, prototype);\n if (!isBlocked(this.canvas, blockClass)) {\n var id = mirror.getId(this.canvas);\n var recordArgs = serializeArgs(__spreadArray([], __read(args), false), win, prototype);\n var mutation = {\n type: type,\n property: prop,\n args: recordArgs,\n };\n cb(this.canvas, mutation);\n }\n return result;\n };\n });\n handlers.push(restoreHandler);\n }\n catch (_b) {\n var hookHandler = hookSetter(prototype, prop, {\n set: function (v) {\n cb(this.canvas, {\n type: type,\n property: prop,\n args: [v],\n setter: true,\n });\n },\n });\n handlers.push(hookHandler);\n }\n };\n try {\n for (var props_1 = __values(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {\n var prop = props_1_1.value;\n _loop_1(prop);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, mirror) {\n var handlers = [];\n handlers.push.apply(handlers, __spreadArray([], __read(patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, mirror, win)), false));\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\n handlers.push.apply(handlers, __spreadArray([], __read(patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, mirror, win)), false));\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\n\nexport default initCanvasWebGLMutationObserver;\n","import { __rest } from '../../../../ext/tslib/tslib.es6.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\n\nvar CanvasManager = (function () {\n function CanvasManager(options) {\n this.pendingCanvasMutations = new Map();\n this.rafStamps = { latestId: 0, invokeId: null };\n this.frozen = false;\n this.locked = false;\n this.processMutation = function (target, mutation) {\n var newFrame = this.rafStamps.invokeId &&\n this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n };\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (options.recordCanvas === true)\n this.initCanvasMutationObserver(options.win, options.blockClass);\n }\n CanvasManager.prototype.reset = function () {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n };\n CanvasManager.prototype.freeze = function () {\n this.frozen = true;\n };\n CanvasManager.prototype.unfreeze = function () {\n this.frozen = false;\n };\n CanvasManager.prototype.lock = function () {\n this.locked = true;\n };\n CanvasManager.prototype.unlock = function () {\n this.locked = false;\n };\n CanvasManager.prototype.initCanvasMutationObserver = function (win, blockClass) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n var canvasContextReset = initCanvasContextObserver(win, blockClass);\n var canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, this.mirror);\n var canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, this.mirror);\n this.resetObservers = function () {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n };\n CanvasManager.prototype.startPendingCanvasMutationFlusher = function () {\n var _this = this;\n requestAnimationFrame(function () { return _this.flushPendingCanvasMutations(); });\n };\n CanvasManager.prototype.startRAFTimestamping = function () {\n var _this = this;\n var setLatestRAFTimestamp = function (timestamp) {\n _this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n CanvasManager.prototype.flushPendingCanvasMutations = function () {\n var _this = this;\n this.pendingCanvasMutations.forEach(function (values, canvas) {\n var id = _this.mirror.getId(canvas);\n _this.flushPendingCanvasMutationFor(canvas, id);\n });\n requestAnimationFrame(function () { return _this.flushPendingCanvasMutations(); });\n };\n CanvasManager.prototype.flushPendingCanvasMutationFor = function (canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n var valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1)\n return;\n var values = valuesWithType.map(function (value) {\n value.type; var rest = __rest(value, [\"type\"]);\n return rest;\n });\n var type = valuesWithType[0].type;\n this.mutationCb({ id: id, type: type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n };\n return CanvasManager;\n}());\n\nexport { CanvasManager };\n","import { __assign, __read, __values } from '../../ext/tslib/tslib.es6.js';\nimport { snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, createMirror, getWindowWidth, getWindowHeight, isIframeINode, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\n\nfunction wrapEvent(e) {\n return __assign(__assign({}, e), { timestamp: Date.now() });\n}\nvar wrappedEmit;\nvar takeFullSnapshot;\nvar mirror = createMirror();\nfunction record(options) {\n if (options === void 0) { options = {}; }\n var emit = options.emit, checkoutEveryNms = options.checkoutEveryNms, checkoutEveryNth = options.checkoutEveryNth, _a = options.blockClass, blockClass = _a === void 0 ? 'rr-block' : _a, _b = options.blockSelector, blockSelector = _b === void 0 ? null : _b, _c = options.ignoreClass, ignoreClass = _c === void 0 ? 'rr-ignore' : _c, _d = options.maskTextClass, maskTextClass = _d === void 0 ? 'rr-mask' : _d, _e = options.maskTextSelector, maskTextSelector = _e === void 0 ? null : _e, _f = options.inlineStylesheet, inlineStylesheet = _f === void 0 ? true : _f, maskAllInputs = options.maskAllInputs, _maskInputOptions = options.maskInputOptions, _slimDOMOptions = options.slimDOMOptions, maskInputFn = options.maskInputFn, maskTextFn = options.maskTextFn, hooks = options.hooks, packFn = options.packFn, _g = options.sampling, sampling = _g === void 0 ? {} : _g, mousemoveWait = options.mousemoveWait, _h = options.recordCanvas, recordCanvas = _h === void 0 ? false : _h, _j = options.userTriggeredOnInput, userTriggeredOnInput = _j === void 0 ? false : _j, _k = options.collectFonts, collectFonts = _k === void 0 ? false : _k, _l = options.inlineImages, inlineImages = _l === void 0 ? false : _l, plugins = options.plugins, _m = options.keepIframeSrcFn, keepIframeSrcFn = _m === void 0 ? function () { return false; } : _m;\n if (!emit) {\n throw new Error('emit function is required');\n }\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\n sampling.mousemove = mousemoveWait;\n }\n var maskInputOptions = maskAllInputs === true\n ? {\n color: true,\n date: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true,\n }\n : _maskInputOptions !== undefined\n ? _maskInputOptions\n : { password: true };\n var slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\n ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n headMetaAuthorship: _slimDOMOptions === 'all',\n headMetaDescKeywords: _slimDOMOptions === 'all',\n }\n : _slimDOMOptions\n ? _slimDOMOptions\n : {};\n polyfill();\n var lastFullSnapshotEvent;\n var incrementalSnapshotCount = 0;\n var eventProcessor = function (e) {\n var e_1, _a;\n try {\n for (var _b = __values(plugins || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var plugin = _c.value;\n if (plugin.eventProcessor) {\n e = plugin.eventProcessor(e);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (packFn) {\n e = packFn(e);\n }\n return e;\n };\n wrappedEmit = function (e, isCheckout) {\n var _a;\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\n e.type !== EventType.FullSnapshot &&\n !(e.type === EventType.IncrementalSnapshot &&\n e.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach(function (buf) { return buf.unfreeze(); });\n }\n emit(eventProcessor(e), isCheckout);\n if (e.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e;\n incrementalSnapshotCount = 0;\n }\n else if (e.type === EventType.IncrementalSnapshot) {\n if (e.data.source === IncrementalSource.Mutation &&\n e.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n var exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n var exceedTime = checkoutEveryNms &&\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot(true);\n }\n }\n };\n var wrappedMutationEmit = function (m) {\n wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Mutation }, m),\n }));\n };\n var wrappedScrollEmit = function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Scroll }, p),\n }));\n };\n var wrappedCanvasMutationEmit = function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.CanvasMutation }, p),\n }));\n };\n var iframeManager = new IframeManager({\n mutationCb: wrappedMutationEmit,\n });\n var canvasManager = new CanvasManager({\n recordCanvas: recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass: blockClass,\n mirror: mirror,\n });\n var shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n sampling: sampling,\n slimDOMOptions: slimDOMOptions,\n iframeManager: iframeManager,\n canvasManager: canvasManager,\n },\n mirror: mirror,\n });\n takeFullSnapshot = function (isCheckout) {\n var _a, _b, _c, _d;\n if (isCheckout === void 0) { isCheckout = false; }\n wrappedEmit(wrapEvent({\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight(),\n },\n }), isCheckout);\n mutationBuffers.forEach(function (buf) { return buf.lock(); });\n var _e = __read(snapshot(document, {\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn: maskTextFn,\n slimDOM: slimDOMOptions,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n onSerialize: function (n) {\n if (isIframeINode(n)) {\n iframeManager.addIframe(n);\n }\n if (hasShadowRoot(n)) {\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\n }\n },\n onIframeLoad: function (iframe, childSn) {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n keepIframeSrcFn: keepIframeSrcFn,\n }), 2), node = _e[0], idNodeMap = _e[1];\n if (!node) {\n return console.warn('Failed to snapshot the document');\n }\n mirror.map = idNodeMap;\n wrappedEmit(wrapEvent({\n type: EventType.FullSnapshot,\n data: {\n node: node,\n initialOffset: {\n left: window.pageXOffset !== undefined\n ? window.pageXOffset\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollLeft) ||\n ((_b = (_a = document === null || document === void 0 ? void 0 : document.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\n (document === null || document === void 0 ? void 0 : document.body.scrollLeft) ||\n 0,\n top: window.pageYOffset !== undefined\n ? window.pageYOffset\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollTop) ||\n ((_d = (_c = document === null || document === void 0 ? void 0 : document.body) === null || _c === void 0 ? void 0 : _c.parentElement) === null || _d === void 0 ? void 0 : _d.scrollTop) ||\n (document === null || document === void 0 ? void 0 : document.body.scrollTop) ||\n 0,\n },\n },\n }));\n mutationBuffers.forEach(function (buf) { return buf.unlock(); });\n };\n try {\n var handlers_1 = [];\n handlers_1.push(on('DOMContentLoaded', function () {\n wrappedEmit(wrapEvent({\n type: EventType.DomContentLoaded,\n data: {},\n }));\n }));\n var observe_1 = function (doc) {\n var _a;\n return initObservers({\n mutationCb: wrappedMutationEmit,\n mousemoveCb: function (positions, source) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: source,\n positions: positions,\n },\n }));\n },\n mouseInteractionCb: function (d) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.MouseInteraction }, d),\n }));\n },\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: function (d) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.ViewportResize }, d),\n }));\n },\n inputCb: function (v) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Input }, v),\n }));\n },\n mediaInteractionCb: function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.MediaInteraction }, p),\n }));\n },\n styleSheetRuleCb: function (r) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.StyleSheetRule }, r),\n }));\n },\n styleDeclarationCb: function (r) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.StyleDeclaration }, r),\n }));\n },\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: function (p) {\n return wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: __assign({ source: IncrementalSource.Font }, p),\n }));\n },\n blockClass: blockClass,\n ignoreClass: ignoreClass,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n maskInputOptions: maskInputOptions,\n inlineStylesheet: inlineStylesheet,\n sampling: sampling,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n userTriggeredOnInput: userTriggeredOnInput,\n collectFonts: collectFonts,\n doc: doc,\n maskInputFn: maskInputFn,\n maskTextFn: maskTextFn,\n blockSelector: blockSelector,\n slimDOMOptions: slimDOMOptions,\n mirror: mirror,\n iframeManager: iframeManager,\n shadowDomManager: shadowDomManager,\n canvasManager: canvasManager,\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter(function (p) { return p.observer; })) === null || _a === void 0 ? void 0 : _a.map(function (p) { return ({\n observer: p.observer,\n options: p.options,\n callback: function (payload) {\n return wrappedEmit(wrapEvent({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload: payload,\n },\n }));\n },\n }); })) || [],\n }, hooks);\n };\n iframeManager.addLoadListener(function (iframeEl) {\n handlers_1.push(observe_1(iframeEl.contentDocument));\n });\n var init_1 = function () {\n takeFullSnapshot();\n handlers_1.push(observe_1(document));\n };\n if (document.readyState === 'interactive' ||\n document.readyState === 'complete') {\n init_1();\n }\n else {\n handlers_1.push(on('load', function () {\n wrappedEmit(wrapEvent({\n type: EventType.Load,\n data: {},\n }));\n init_1();\n }, window));\n }\n return function () {\n handlers_1.forEach(function (h) { return h(); });\n };\n }\n catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = function (tag, payload) {\n if (!wrappedEmit) {\n throw new Error('please add custom event after start recording');\n }\n wrappedEmit(wrapEvent({\n type: EventType.Custom,\n data: {\n tag: tag,\n payload: payload,\n },\n }));\n};\nrecord.freezePage = function () {\n mutationBuffers.forEach(function (buf) { return buf.freeze(); });\n};\nrecord.takeFullSnapshot = function (isCheckout) {\n if (!takeFullSnapshot) {\n throw new Error('please take full snapshot after start recording');\n }\n takeFullSnapshot(isCheckout);\n};\nrecord.mirror = mirror;\n\nexport default record;\n","import { __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { patch, isBlocked } from '../../../utils.js';\n\nfunction initCanvasContextObserver(win, blockClass) {\n var handlers = [];\n try {\n var restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\n return function (contextType) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!isBlocked(this, blockClass)) {\n if (!('__context' in this))\n this.__context = contextType;\n }\n return original.apply(this, __spreadArray([contextType], __read(args), false));\n };\n });\n handlers.push(restoreHandler);\n }\n catch (_a) {\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\n\nexport default initCanvasContextObserver;\n","import { __values, __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { CanvasContext } from '../../../types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, mirror) {\n var e_1, _a;\n var handlers = [];\n var props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\n var _loop_1 = function (prop) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\n return \"continue\";\n }\n var restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\n return function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!isBlocked(this.canvas, blockClass)) {\n setTimeout(function () {\n var recordArgs = __spreadArray([], __read(args), false);\n if (prop === 'drawImage') {\n if (recordArgs[0] &&\n recordArgs[0] instanceof HTMLCanvasElement) {\n var canvas = recordArgs[0];\n var ctx = canvas.getContext('2d');\n var imgd = ctx === null || ctx === void 0 ? void 0 : ctx.getImageData(0, 0, canvas.width, canvas.height);\n var pix = imgd === null || imgd === void 0 ? void 0 : imgd.data;\n recordArgs[0] = JSON.stringify(pix);\n }\n }\n cb(_this.canvas, {\n type: CanvasContext['2D'],\n property: prop,\n args: recordArgs,\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n });\n handlers.push(restoreHandler);\n }\n catch (_b) {\n var hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\n set: function (v) {\n cb(this.canvas, {\n type: CanvasContext['2D'],\n property: prop,\n args: [v],\n setter: true,\n });\n },\n });\n handlers.push(hookHandler);\n }\n };\n try {\n for (var props2D_1 = __values(props2D), props2D_1_1 = props2D_1.next(); !props2D_1_1.done; props2D_1_1 = props2D_1.next()) {\n var prop = props2D_1_1.value;\n _loop_1(prop);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (props2D_1_1 && !props2D_1_1.done && (_a = props2D_1.return)) _a.call(props2D_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return function () {\n handlers.forEach(function (h) { return h(); });\n };\n}\n\nexport default initCanvas2DMutationObserver;\n","var StackFrame = (function () {\n function StackFrame(obj) {\n this.fileName = obj.fileName || '';\n this.functionName = obj.functionName || '';\n this.lineNumber = obj.lineNumber;\n this.columnNumber = obj.columnNumber;\n }\n StackFrame.prototype.toString = function () {\n var lineNumber = this.lineNumber || '';\n var columnNumber = this.columnNumber || '';\n if (this.functionName) {\n return (this.functionName +\n ' (' +\n this.fileName +\n ':' +\n lineNumber +\n ':' +\n columnNumber +\n ')');\n }\n return this.fileName + ':' + lineNumber + ':' + columnNumber;\n };\n return StackFrame;\n}());\nvar FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nvar CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nvar SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\nvar ErrorStackParser = {\n parse: function (error) {\n if (!error) {\n return [];\n }\n if (typeof error.stacktrace !== 'undefined' ||\n typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n }\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n }\n else if (error.stack) {\n return this.parseFFOrSafari(error);\n }\n else {\n throw new Error('Cannot parse given Error object');\n }\n },\n extractLocation: function (urlLike) {\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n if (!parts)\n throw new Error(\"Cannot parse given url: \".concat(urlLike));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n parseV8OrIE: function (error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf('(eval ') > -1) {\n line = line\n .replace(/eval code/g, 'eval')\n .replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n sanitizedLine = location\n ? sanitizedLine.replace(location[0], '')\n : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1\n ? undefined\n : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n });\n }, this);\n },\n parseFFOrSafari: function (error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n return new StackFrame({\n functionName: line,\n });\n }\n else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n });\n }\n }, this);\n },\n parseOpera: function (e) {\n if (!e.stacktrace ||\n (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n }\n else if (!e.stack) {\n return this.parseOpera10(e);\n }\n else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function (e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: parseFloat(match[1]),\n }));\n }\n }\n return result;\n },\n parseOpera10: function (e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: parseFloat(match[1]),\n }));\n }\n }\n return result;\n },\n parseOpera11: function (error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return (!!line.match(FIREFOX_SAFARI_STACK_REGEXP) &&\n !line.match(/^Error created at/));\n }, this);\n return filtered.map(function (line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || '';\n var functionName = functionCall\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n });\n }, this);\n },\n};\n\nexport { ErrorStackParser, StackFrame };\n","import { __values } from '../../../../ext/tslib/tslib.es6.js';\n\nfunction pathToSelector(node) {\n if (!node || !node.outerHTML) {\n return '';\n }\n var path = '';\n while (node.parentElement) {\n var name_1 = node.localName;\n if (!name_1) {\n break;\n }\n name_1 = name_1.toLowerCase();\n var parent_1 = node.parentElement;\n var domSiblings = [];\n if (parent_1.children && parent_1.children.length > 0) {\n for (var i = 0; i < parent_1.children.length; i++) {\n var sibling = parent_1.children[i];\n if (sibling.localName && sibling.localName.toLowerCase) {\n if (sibling.localName.toLowerCase() === name_1) {\n domSiblings.push(sibling);\n }\n }\n }\n }\n if (domSiblings.length > 1) {\n name_1 += ':eq(' + domSiblings.indexOf(node) + ')';\n }\n path = name_1 + (path ? '>' + path : '');\n node = parent_1;\n }\n return path;\n}\nfunction isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\nfunction isObjTooDeep(obj, limit) {\n var e_1, _a;\n if (limit === 0) {\n return true;\n }\n var keys = Object.keys(obj);\n try {\n for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {\n var key = keys_1_1.value;\n if (isObject(obj[key]) && isObjTooDeep(obj[key], limit - 1)) {\n return true;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return false;\n}\nfunction stringify(obj, stringifyOptions) {\n var options = {\n numOfKeysLimit: 50,\n depthOfLimit: 4,\n };\n Object.assign(options, stringifyOptions);\n var stack = [];\n var keys = [];\n return JSON.stringify(obj, function (key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n if (~stack.indexOf(value)) {\n if (stack[0] === value) {\n value = '[Circular ~]';\n }\n else {\n value =\n '[Circular ~.' +\n keys.slice(0, stack.indexOf(value)).join('.') +\n ']';\n }\n }\n }\n else {\n stack.push(value);\n }\n if (value === null || value === undefined) {\n return value;\n }\n if (shouldIgnore(value)) {\n return toString(value);\n }\n if (value instanceof Event) {\n var eventResult = {};\n for (var eventKey in value) {\n var eventValue = value[eventKey];\n if (Array.isArray(eventValue)) {\n eventResult[eventKey] = pathToSelector(eventValue.length ? eventValue[0] : null);\n }\n else {\n eventResult[eventKey] = eventValue;\n }\n }\n return eventResult;\n }\n else if (value instanceof Node) {\n if (value instanceof HTMLElement) {\n return value ? value.outerHTML : '';\n }\n return value.nodeName;\n }\n else if (value instanceof Error) {\n return value.stack\n ? value.stack + '\\nEnd of stack for Error object'\n : value.name + ': ' + value.message;\n }\n return value;\n });\n function shouldIgnore(_obj) {\n if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {\n return true;\n }\n if (typeof _obj === 'function') {\n return true;\n }\n if (isObject(_obj) && isObjTooDeep(_obj, options.depthOfLimit)) {\n return true;\n }\n return false;\n }\n function toString(_obj) {\n var str = _obj.toString();\n if (options.stringLengthLimit && str.length > options.stringLengthLimit) {\n str = \"\".concat(str.slice(0, options.stringLengthLimit), \"...\");\n }\n return str;\n }\n}\n\nexport { stringify };\n","import { __values, __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';\nimport { patch } from '../../../utils.js';\nimport { ErrorStackParser } from './error-stack-parser.js';\nimport { stringify } from './stringify.js';\n\nvar defaultLogOptions = {\n level: [\n 'assert',\n 'clear',\n 'count',\n 'countReset',\n 'debug',\n 'dir',\n 'dirxml',\n 'error',\n 'group',\n 'groupCollapsed',\n 'groupEnd',\n 'info',\n 'log',\n 'table',\n 'time',\n 'timeEnd',\n 'timeLog',\n 'trace',\n 'warn',\n ],\n lengthThreshold: 1000,\n logger: 'console',\n};\nfunction initLogObserver(cb, win, logOptions) {\n var e_1, _a;\n var loggerType = logOptions.logger;\n if (!loggerType) {\n return function () { };\n }\n var logger;\n if (typeof loggerType === 'string') {\n logger = win[loggerType];\n }\n else {\n logger = loggerType;\n }\n var logCount = 0;\n var cancelHandlers = [];\n if (logOptions.level.includes('error')) {\n if (window) {\n var errorHandler_1 = function (event) {\n var message = event.message, error = event.error;\n var trace = ErrorStackParser.parse(error).map(function (stackFrame) { return stackFrame.toString(); });\n var payload = [stringify(message, logOptions.stringifyOptions)];\n cb({\n level: 'error',\n trace: trace,\n payload: payload,\n });\n };\n window.addEventListener('error', errorHandler_1);\n cancelHandlers.push(function () {\n if (window)\n window.removeEventListener('error', errorHandler_1);\n });\n }\n }\n try {\n for (var _b = __values(logOptions.level), _c = _b.next(); !_c.done; _c = _b.next()) {\n var levelType = _c.value;\n cancelHandlers.push(replace(logger, levelType));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return function () {\n cancelHandlers.forEach(function (h) { return h(); });\n };\n function replace(_logger, level) {\n var _this = this;\n if (!_logger[level]) {\n return function () { };\n }\n return patch(_logger, level, function (original) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n original.apply(_this, args);\n try {\n var trace = ErrorStackParser.parse(new Error())\n .map(function (stackFrame) { return stackFrame.toString(); })\n .splice(1);\n var payload = args.map(function (s) {\n return stringify(s, logOptions.stringifyOptions);\n });\n logCount++;\n if (logCount < logOptions.lengthThreshold) {\n cb({\n level: level,\n trace: trace,\n payload: payload,\n });\n }\n else if (logCount === logOptions.lengthThreshold) {\n cb({\n level: 'warn',\n trace: [],\n payload: [\n stringify('The number of log records reached the threshold.'),\n ],\n });\n }\n }\n catch (error) {\n original.apply(void 0, __spreadArray(['rrweb logger error:', error], __read(args), false));\n }\n };\n });\n }\n}\nvar PLUGIN_NAME = 'rrweb/console@1';\nvar getRecordConsolePlugin = function (options) { return ({\n name: PLUGIN_NAME,\n observer: initLogObserver,\n options: options\n ? Object.assign({}, defaultLogOptions, options)\n : defaultLogOptions,\n}); };\n\nexport { PLUGIN_NAME, getRecordConsolePlugin };\n","/*\n * Saved references to long variable names, so that bundling can minimize file size.\n */\nexport const ArrayProto = Array.prototype\nexport const nativeForEach = ArrayProto.forEach\nexport const nativeIndexOf = ArrayProto.indexOf\n// eslint-disable-next-line no-restricted-globals\nexport const win: (Window & typeof globalThis) | undefined = typeof window !== 'undefined' ? window : undefined\nconst navigator = win?.navigator\nexport const document = win?.document\nexport const userAgent = navigator?.userAgent\nexport const assignableWindow: Window & typeof globalThis & Record<string, any> = win ?? ({} as any)\n\nexport { win as window }\n","import { version } from 'rrweb-v1/package.json'\n\n// Same as loader-globals.ts except includes rrweb scripts.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport rrwebRecord from 'rrweb-v1/es/rrweb/packages/rrweb/src/record'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { getRecordConsolePlugin } from 'rrweb-v1/es/rrweb/packages/rrweb/src/plugins/console/record'\n\nimport { window } from './utils/globals'\n\nif (window) {\n ;(window as any).rrweb = { record: rrwebRecord, version: 'v1', rrwebVersion: version }\n ;(window as any).rrwebConsoleRecord = { getRecordConsolePlugin }\n}\n\nexport default rrwebRecord\n"],"names":["NodeType","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__values","o","Symbol","iterator","m","next","value","done","TypeError","__read","r","e","ar","push","error","__spreadArray","to","from","pack","l","Array","slice","concat","isShadowRoot","_a","host","Boolean","shadowRoot","maskInputValue","maskInputOptions","tagName","type","maskInputFn","text","toLowerCase","repeat","ORIGINAL_ATTRIBUTE_NAME","canvasService","canvasCtx","_id","tagNameRegex","RegExp","IGNORED_NODE","getCssRulesString","rules","cssRules","map","getCssRuleString","join","rule","cssStringified","cssText","isCSSImportRule","styleSheet","URL_IN_CSS_REF","RELATIVE_PATH","DATA_URI","absoluteToStylesheet","href","replace","origin","quote1","path1","quote2","path2","path3","url","filePath","maybeQuote","test","indexOf","split","stack","parts","pop","_i","parts_1","part","EventType","IncrementalSource","MouseInteractions","CanvasContext","MediaInteractions","ReplayerEvents","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","doc","attributeValue","trim","a","createElement","getHref","document","transformAttribute","name","pos","collectCharacters","regEx","chars","match","exec","substring","output","descriptorsStr","inParens","c","charAt","getAbsoluteSrcsetString","needMaskingText","node","maskTextClass","maskTextSelector","nodeType","ELEMENT_NODE","classList","contains","eIndex","className","matches","parentNode","TEXT_NODE","serializeNode","options","rootId","sheet","el","blockClass","blockSelector","inlineStylesheet","_b","maskTextFn","_c","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","__sn","docId","id","undefined","DOCUMENT_NODE","compatMode","Document","childNodes","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","element","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","attributes_1","_d","attributes","_e","name_1","stylesheet","styleSheets","find","rel","_cssText","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","naturalWidth","naturalHeight","drawImage","err","console","warn","currentSrc","complete","onload","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","_f","getBoundingClientRect","class","rr_width","rr_height","src","contentDocument","rr_src","Element","isSVG","ownerSVGElement","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","_g","iframeLoadTimeout","_h","_j","preserveWhiteSpace","_serializedNode","sn","comment","script","as","endsWith","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","isShadowHost","headWhitespace","bypassOptions","_k","serializedChildNode","isElement","_l","_m","isShadow","iframeEl","listener","win","contentWindow","readyState","fired","blankUrl","location","addEventListener","setTimeout","timer_1","clearTimeout","onceIframeLoaded","iframeDoc","serializedIframeNode","on","fn","target","capture","passive","removeEventListener","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","getId","getNode","removeNodeFromMap","has","reset","throttle","func","wait","timeout","previous","arg","now","Date","leading","remaining","context","args","trailing","hookSetter","key","d","isRevoked","window","original","getOwnPropertyDescriptor","defineProperty","set","_this","patch","source","replacement","original_1","wrapped","defineProperties","__rrweb_original__","enumerable","getWindowHeight","innerHeight","documentElement","clientHeight","body","getWindowWidth","innerWidth","clientWidth","isBlocked","needBlock_1","closest","forEach","isIgnored","isAncestorRemoved","mirror","isTouchEvent","event","changedTouches","isIframeINode","hasShadowRoot","isNodeInLinkedList","Proxy","Reflect","get","prop","receiver","DoubleLinkedList","head","position","Error","current","index","addNode","__ln","removeNode","moveKey","parentId","isINode","deepDelete","addsSet","delete","childN","isParentRemoved","removes","isAncestorInSet","MutationBuffer$1","MutationBuffer","frozen","locked","texts","mapRemoves","movedMap","addedSet","Set","movedSet","droppedSet","processMutations","mutations","processMutation","emit","e_1","e_2","adds","addList","getNextId","ns","nextId","pushAdd","shadowHost","getRootNode","rootShadowHost","notInDoc","currentN","iframeManager","addIframe","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","shift","e_1_1","return","add","e_2_1","candidate","_node","payload","filter","attribute","mutationCb","e_3","e_4","oldValue","getAttribute","attributeName","item","old","setAttribute","style","styleObj","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","e_3_1","e_4_1","addedNodes","genAdds","removedNodes","nodeId","targetId","init","freeze","canvasManager","unfreeze","isFrozen","lock","unlock","mutationBuffers","isCSSGroupingRuleSupported","CSSGroupingRule","isCSSMediaRuleSupported","CSSMediaRule","isCSSSupportsRuleSupported","CSSSupportsRule","isCSSConditionRuleSupported","CSSConditionRule","getEventTarget","path","composedPath","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","MutationObserver","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","observer","bind","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","keys","Number","isNaN","eventKey","eventName","handler","clientX","clientY","getHandler","h","initScrollObserver","scrollCb","evt","scrollEl","scrollingElement","scroll","wrapEventWithUserTriggeredFlag","v","enable","userTriggered","INPUT_TAGS","lastInputValueMap","WeakMap","getNestedCSSRulePositions","childRule","parentRule","unshift","parentStyleSheet","recurse","initObservers","hooks","currentWindow","defaultView","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","mutation","mousemove","viewportResize","input","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","mergeHooks","mutationObserver","mousemoveHandler","timeBaseline","threshold","callbackThreshold","mousemoveCallback","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","userTriggeredOnInput","eventHandler","isTrusted","parentElement","isChecked","cbWithDedup","querySelectorAll","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","volume","muted","media","initMediaInteractionObserver","styleSheetObserver","insertRule","CSSStyleSheet","ownerNode","deleteRule","supportedNestedCSSRuleTypes","unmodifiedFunctions","entries","typeKey","initStyleSheetObserver","styleDeclarationObserver","setProperty","CSSStyleDeclaration","priority","removeProperty","remove","initStyleDeclarationObserver","fontObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","JSON","stringify","Uint8Array","restoreHandler","fonts","initFontObserver","pluginHandlers","plugins","plugin","callback","b","disconnect","IframeManager","iframes","addLoadListener","cb","loadListener","isAttachIframe","ShadowDomManager","restorePatches","manager","HTMLElement","ownerDocument","iframeElement","manager_1","restorePatch","lookup","charCodeAt","encode","arraybuffer","bytes","len","base64","webGLVarMap","Map","saveWebGLVar","isInstanceOfWebGLObject","_typeof","list","ctor","contextMap","variableListFor","constructor","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","values","ArrayBuffer","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","patchGLPrototype","props","getOwnPropertyNames","_loop_1","result","recordArgs","hookHandler","setter","props_1","props_1_1","wrappedEmit","takeFullSnapshot","CanvasManager","pendingCanvasMutations","rafStamps","latestId","invokeId","initCanvasMutationObserver","clear","resetObservers","startRAFTimestamping","startPendingCanvasMutationFlusher","canvasContextReset","HTMLCanvasElement","contextType","initCanvasContextObserver","canvas2DReset","props2D","CanvasRenderingContext2D","imgd","pix","props2D_1","props2D_1_1","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","requestAnimationFrame","flushPendingCanvasMutations","setLatestRAFTimestamp","timestamp","flushPendingCanvasMutationFor","valuesWithType","rest","getOwnPropertySymbols","propertyIsEnumerable","__rest","commands","wrapEvent","child","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","lastFullSnapshotEvent","color","date","email","month","number","range","search","tel","time","week","textarea","select","password","NodeList","DOMTokenList","Node","polyfill","incrementalSnapshotCount","isCheckout","FullSnapshot","IncrementalSnapshot","Mutation","buf","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","Scroll","wrappedCanvasMutationEmit","CanvasMutation","Meta","slimDOM","idNodeMap","snapshot","initialOffset","left","pageXOffset","top","pageYOffset","handlers_1","DomContentLoaded","observe_1","MouseInteraction","ViewportResize","Input","MediaInteraction","StyleSheetRule","StyleDeclaration","Font","Plugin","init_1","Load","addCustomEvent","tag","Custom","freezePage","StackFrame","obj","fileName","functionName","lineNumber","columnNumber","toString","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","message","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","parseFloat","pathToSelector","outerHTML","localName","parent_1","domSiblings","children","sibling","isObject","isObjTooDeep","limit","keys_1","keys_1_1","stringifyOptions","numOfKeysLimit","depthOfLimit","thisPos","splice","Infinity","_obj","shouldIgnore","str","stringLengthLimit","Event","eventResult","eventValue","isArray","nodeName","defaultLogOptions","level","lengthThreshold","logger","initLogObserver","logOptions","loggerType","logCount","cancelHandlers","includes","errorHandler_1","trace","stackFrame","levelType","_logger","navigator","userAgent","rrweb","rrwebRecord","version","rrwebVersion","rrwebConsoleRecord","getRecordConsolePlugin"],"mappings":"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"}
|