@launchdarkly/browser-telemetry 0.0.6 → 0.0.7
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/cjs/bundle.cjs.js +2 -2
- package/dist/cjs/bundle.cjs.js.map +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/src/BrowserTelemetryImpl.d.ts.map +1 -1
- package/dist/cjs/src/api/Collector.d.ts +1 -1
- package/dist/cjs/src/api/Collector.d.ts.map +1 -1
- package/dist/cjs/src/collectors/dom/ClickCollector.d.ts +1 -1
- package/dist/cjs/src/collectors/dom/ClickCollector.d.ts.map +1 -1
- package/dist/cjs/src/collectors/dom/KeypressCollector.d.ts +1 -1
- package/dist/cjs/src/collectors/dom/KeypressCollector.d.ts.map +1 -1
- package/dist/cjs/src/collectors/http/fetch.d.ts +1 -1
- package/dist/cjs/src/collectors/http/fetch.d.ts.map +1 -1
- package/dist/cjs/src/collectors/http/xhr.d.ts +1 -1
- package/dist/cjs/src/collectors/http/xhr.d.ts.map +1 -1
- package/dist/cjs/src/collectors/rrweb/ContinuousReplay.d.ts +2 -2
- package/dist/cjs/src/collectors/rrweb/ContinuousReplay.d.ts.map +1 -1
- package/dist/cjs/src/collectors/rrweb/RollingReplay.d.ts +2 -1
- package/dist/cjs/src/collectors/rrweb/RollingReplay.d.ts.map +1 -1
- package/dist/cjs/src/collectors/rrweb/SessionReplay.d.ts +1 -1
- package/dist/cjs/src/collectors/rrweb/SessionReplay.d.ts.map +1 -1
- package/dist/esm/bundle.es.js +2 -2
- package/dist/esm/bundle.es.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/src/BrowserTelemetryImpl.d.ts.map +1 -1
- package/dist/esm/src/api/Collector.d.ts +1 -1
- package/dist/esm/src/api/Collector.d.ts.map +1 -1
- package/dist/esm/src/collectors/dom/ClickCollector.d.ts +1 -1
- package/dist/esm/src/collectors/dom/ClickCollector.d.ts.map +1 -1
- package/dist/esm/src/collectors/dom/KeypressCollector.d.ts +1 -1
- package/dist/esm/src/collectors/dom/KeypressCollector.d.ts.map +1 -1
- package/dist/esm/src/collectors/http/fetch.d.ts +1 -1
- package/dist/esm/src/collectors/http/fetch.d.ts.map +1 -1
- package/dist/esm/src/collectors/http/xhr.d.ts +1 -1
- package/dist/esm/src/collectors/http/xhr.d.ts.map +1 -1
- package/dist/esm/src/collectors/rrweb/ContinuousReplay.d.ts +2 -2
- package/dist/esm/src/collectors/rrweb/ContinuousReplay.d.ts.map +1 -1
- package/dist/esm/src/collectors/rrweb/RollingReplay.d.ts +2 -1
- package/dist/esm/src/collectors/rrweb/RollingReplay.d.ts.map +1 -1
- package/dist/esm/src/collectors/rrweb/SessionReplay.d.ts +1 -1
- package/dist/esm/src/collectors/rrweb/SessionReplay.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.es.js","sources":["../../../../../node_modules/tracekit/tracekit.js","../../../src/collectors/dom/getTarget.ts","../../../src/collectors/dom/toSelector.ts","../../../src/collectors/dom/ClickCollector.ts","../../../src/collectors/dom/KeypressCollector.ts","../../../src/collectors/error.ts","../../../src/filters/filterHttpBreadcrumb.ts","../../../src/filters/filterUrl.ts","../../../src/collectors/http/fetchDecorator.ts","../../../src/collectors/http/fetch.ts","../../../src/collectors/http/xhrDecorator.ts","../../../src/collectors/http/xhr.ts","../../../src/filters/defaultUrlFilter.ts","../../../src/randomUuidV4.ts","../../../src/stack/StackParser.ts","../../../src/BrowserTelemetryImpl.ts","../../../src/inspectors.ts","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/utils.js","../../../../../node_modules/rrweb/es/rrweb/packages/types/dist/types.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../../../../../node_modules/rrweb/es/rrweb/ext/tslib/tslib.es6.js","../../../../../node_modules/rrweb/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../../../../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js","../../../../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js","../../../../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js","../../../../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js","../../../../../node_modules/rrweb/es/rrweb/_virtual/image-bitmap-data-url-worker.js","../../../../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/index.js","../../../src/collectors/rrweb/ContinuousReplay.ts","../../../src/collectors/rrweb/EventBuffer.ts","../../../src/collectors/rrweb/RollingBuffer.ts","../../../src/collectors/rrweb/RollingReplay.ts","../../../src/collectors/rrweb/SessionReplay.ts","../../../src/options.ts","../../../src/index.ts"],"sourcesContent":["/**\n * https://github.com/csnover/TraceKit\n * @license MIT\n * @namespace TraceKit\n */\n(function(window, undefined) {\nif (!window) {\n return;\n}\n\nvar TraceKit = {};\nvar _oldTraceKit = window.TraceKit;\n\n// global reference to slice\nvar _slice = [].slice;\nvar UNKNOWN_FUNCTION = '?';\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\n/**\n * A better form of hasOwnProperty<br/>\n * Example: `_has(MainHostObject, property) === true/false`\n *\n * @param {Object} object to check property\n * @param {string} key to check\n * @return {Boolean} true if the object has the key and it is not inherited\n */\nfunction _has(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\n/**\n * Returns true if the parameter is undefined<br/>\n * Example: `_isUndefined(val) === true/false`\n *\n * @param {*} what Value to check\n * @return {Boolean} true if undefined and false otherwise\n */\nfunction _isUndefined(what) {\n return typeof what === 'undefined';\n}\n\n/**\n * Export TraceKit out to another variable<br/>\n * Example: `var TK = TraceKit.noConflict()`\n * @return {Object} The TraceKit object\n * @memberof TraceKit\n */\nTraceKit.noConflict = function noConflict() {\n window.TraceKit = _oldTraceKit;\n return TraceKit;\n};\n\n/**\n * Wrap any function in a TraceKit reporter<br/>\n * Example: `func = TraceKit.wrap(func);`\n *\n * @param {Function} func Function to be wrapped\n * @return {Function} The wrapped func\n * @memberof TraceKit\n */\nTraceKit.wrap = function traceKitWrapper(func) {\n function wrapped() {\n try {\n return func.apply(this, arguments);\n } catch (e) {\n TraceKit.report(e);\n throw e;\n }\n }\n return wrapped;\n};\n\n/**\n * Cross-browser processing of unhandled exceptions\n *\n * Syntax:\n * ```js\n * TraceKit.report.subscribe(function(stackInfo) { ... })\n * TraceKit.report.unsubscribe(function(stackInfo) { ... })\n * TraceKit.report(exception)\n * try { ...code... } catch(ex) { TraceKit.report(ex); }\n * ```\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Requires TraceKit.computeStackTrace.\n *\n * Tries to catch all unhandled exceptions and report them to the\n * subscribed handlers. Please note that TraceKit.report will rethrow the\n * exception. This is REQUIRED in order to get a useful stack trace in IE.\n * If the exception does not reach the top of the browser, you will only\n * get a stack trace from the point where TraceKit.report was called.\n *\n * Handlers receive a TraceKit.StackTrace object as described in the\n * TraceKit.computeStackTrace docs.\n *\n * @memberof TraceKit\n * @namespace\n */\nTraceKit.report = (function reportModuleWrapper() {\n var handlers = [],\n lastException = null,\n lastExceptionStack = null;\n\n /**\n * Add a crash handler.\n * @param {Function} handler\n * @memberof TraceKit.report\n */\n function subscribe(handler) {\n installGlobalHandler();\n installGlobalUnhandledRejectionHandler();\n handlers.push(handler);\n }\n\n /**\n * Remove a crash handler.\n * @param {Function} handler\n * @memberof TraceKit.report\n */\n function unsubscribe(handler) {\n for (var i = handlers.length - 1; i >= 0; --i) {\n if (handlers[i] === handler) {\n handlers.splice(i, 1);\n }\n }\n\n if (handlers.length === 0) {\n uninstallGlobalHandler();\n uninstallGlobalUnhandledRejectionHandler();\n }\n }\n\n /**\n * Dispatch stack information to all handlers.\n * @param {TraceKit.StackTrace} stack\n * @param {boolean} isWindowError Is this a top-level window error?\n * @param {Error=} error The error that's being handled (if available, null otherwise)\n * @memberof TraceKit.report\n * @throws An exception if an error occurs while calling an handler.\n */\n function notifyHandlers(stack, isWindowError, error) {\n var exception = null;\n if (isWindowError && !TraceKit.collectWindowErrors) {\n return;\n }\n for (var i in handlers) {\n if (_has(handlers, i)) {\n try {\n handlers[i](stack, isWindowError, error);\n } catch (inner) {\n exception = inner;\n }\n }\n }\n\n if (exception) {\n throw exception;\n }\n }\n\n var _oldOnerrorHandler, _onErrorHandlerInstalled;\n var _oldOnunhandledrejectionHandler, _onUnhandledRejectionHandlerInstalled;\n\n /**\n * Ensures all global unhandled exceptions are recorded.\n * Supported by Gecko and IE.\n * @param {string} message Error message.\n * @param {string} url URL of script that generated the exception.\n * @param {(number|string)} lineNo The line number at which the error occurred.\n * @param {(number|string)=} columnNo The column number at which the error occurred.\n * @param {Error=} errorObj The actual Error object.\n * @memberof TraceKit.report\n */\n function traceKitWindowOnError(message, url, lineNo, columnNo, errorObj) {\n var stack = null;\n\n if (lastExceptionStack) {\n TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message);\n \t processLastException();\n } else if (errorObj) {\n stack = TraceKit.computeStackTrace(errorObj);\n notifyHandlers(stack, true, errorObj);\n } else {\n var location = {\n 'url': url,\n 'line': lineNo,\n 'column': columnNo\n };\n\n var name;\n var msg = message; // must be new var or will modify original `arguments`\n if ({}.toString.call(message) === '[object String]') {\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n msg = groups[2];\n }\n }\n\n location.func = TraceKit.computeStackTrace.guessFunctionName(location.url, location.line);\n location.context = TraceKit.computeStackTrace.gatherContext(location.url, location.line);\n stack = {\n 'name': name,\n 'message': msg,\n 'mode': 'onerror',\n 'stack': [location]\n };\n\n notifyHandlers(stack, true, null);\n }\n\n if (_oldOnerrorHandler) {\n return _oldOnerrorHandler.apply(this, arguments);\n }\n\n return false;\n }\n\n /**\n * Ensures all unhandled rejections are recorded.\n * @param {PromiseRejectionEvent} e event.\n * @memberof TraceKit.report\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onunhandledrejection\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n */\n function traceKitWindowOnUnhandledRejection(e) {\n var stack = TraceKit.computeStackTrace(e.reason);\n notifyHandlers(stack, true, e.reason);\n }\n\n /**\n * Install a global onerror handler\n * @memberof TraceKit.report\n */\n function installGlobalHandler() {\n if (_onErrorHandlerInstalled === true) {\n return;\n }\n\n _oldOnerrorHandler = window.onerror;\n window.onerror = traceKitWindowOnError;\n _onErrorHandlerInstalled = true;\n }\n\n /**\n * Uninstall the global onerror handler\n * @memberof TraceKit.report\n */\n function uninstallGlobalHandler() {\n if (_onErrorHandlerInstalled) {\n window.onerror = _oldOnerrorHandler;\n _onErrorHandlerInstalled = false;\n }\n }\n\n /**\n * Install a global onunhandledrejection handler\n * @memberof TraceKit.report\n */\n function installGlobalUnhandledRejectionHandler() {\n if (_onUnhandledRejectionHandlerInstalled === true) {\n return;\n }\n\n _oldOnunhandledrejectionHandler = window.onunhandledrejection;\n window.onunhandledrejection = traceKitWindowOnUnhandledRejection;\n _onUnhandledRejectionHandlerInstalled = true;\n }\n\n /**\n * Uninstall the global onunhandledrejection handler\n * @memberof TraceKit.report\n */\n function uninstallGlobalUnhandledRejectionHandler() {\n if (_onUnhandledRejectionHandlerInstalled) {\n window.onunhandledrejection = _oldOnunhandledrejectionHandler;\n _onUnhandledRejectionHandlerInstalled = false;\n }\n }\n\n /**\n * Process the most recent exception\n * @memberof TraceKit.report\n */\n function processLastException() {\n var _lastExceptionStack = lastExceptionStack,\n _lastException = lastException;\n lastExceptionStack = null;\n lastException = null;\n notifyHandlers(_lastExceptionStack, false, _lastException);\n }\n\n /**\n * Reports an unhandled Error to TraceKit.\n * @param {Error} ex\n * @memberof TraceKit.report\n * @throws An exception if an incomplete stack trace is detected (old IE browsers).\n */\n function report(ex) {\n if (lastExceptionStack) {\n if (lastException === ex) {\n return; // already caught by an inner catch block, ignore\n } else {\n processLastException();\n }\n }\n\n var stack = TraceKit.computeStackTrace(ex);\n lastExceptionStack = stack;\n lastException = ex;\n\n // If the stack trace is incomplete, wait for 2 seconds for\n // slow slow IE to see if onerror occurs or not before reporting\n // this exception; otherwise, we will end up with an incomplete\n // stack trace\n setTimeout(function () {\n if (lastException === ex) {\n processLastException();\n }\n }, (stack.incomplete ? 2000 : 0));\n\n throw ex; // re-throw to propagate to the top level (and cause window.onerror)\n }\n\n report.subscribe = subscribe;\n report.unsubscribe = unsubscribe;\n return report;\n}());\n\n/**\n * An object representing a single stack frame.\n * @typedef {Object} StackFrame\n * @property {string} url The JavaScript or HTML file URL.\n * @property {string} func The function name, or empty for anonymous functions (if guessing did not work).\n * @property {string[]?} args The arguments passed to the function, if known.\n * @property {number=} line The line number, if known.\n * @property {number=} column The column number, if known.\n * @property {string[]} context An array of source code lines; the middle element corresponds to the correct line#.\n * @memberof TraceKit\n */\n\n/**\n * An object representing a JavaScript stack trace.\n * @typedef {Object} StackTrace\n * @property {string} name The name of the thrown exception.\n * @property {string} message The exception error message.\n * @property {TraceKit.StackFrame[]} stack An array of stack frames.\n * @property {string} mode 'stack', 'stacktrace', 'multiline', 'callers', 'onerror', or 'failed' -- method used to collect the stack trace.\n * @memberof TraceKit\n */\n\n/**\n * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript\n *\n * Syntax:\n * ```js\n * s = TraceKit.computeStackTrace.ofCaller([depth])\n * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below)\n * ```\n *\n * Supports:\n * - Firefox: full stack trace with line numbers and unreliable column\n * number on top frame\n * - Opera 10: full stack trace with line and column numbers\n * - Opera 9-: full stack trace with line numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the topmost stacktrace element\n * only\n * - IE: no line numbers whatsoever\n *\n * Tries to guess names of anonymous functions by looking for assignments\n * in the source code. In IE and Safari, we have to guess source file names\n * by searching for function bodies inside all page scripts. This will not\n * work for scripts that are loaded cross-domain.\n * Here be dragons: some function names may be guessed incorrectly, and\n * duplicate functions may be mismatched.\n *\n * TraceKit.computeStackTrace should only be used for tracing purposes.\n * Logging of unhandled exceptions should be done with TraceKit.report,\n * which builds on top of TraceKit.computeStackTrace and provides better\n * IE support by utilizing the window.onerror event to retrieve information\n * about the top of the stack.\n *\n * Note: In IE and Safari, no stack trace is recorded on the Error object,\n * so computeStackTrace instead walks its *own* chain of callers.\n * This means that:\n * * in Safari, some methods may be missing from the stack trace;\n * * in IE, the topmost function in the stack trace will always be the\n * caller of computeStackTrace.\n *\n * This is okay for tracing (because you are likely to be calling\n * computeStackTrace from the function you want to be the topmost element\n * of the stack trace anyway), but not okay for logging unhandled\n * exceptions (because your catch block will likely be far away from the\n * inner function that actually caused the exception).\n *\n * Tracing example:\n * ```js\n * function trace(message) {\n * var stackInfo = TraceKit.computeStackTrace.ofCaller();\n * var data = message + \"\\n\";\n * for(var i in stackInfo.stack) {\n * var item = stackInfo.stack[i];\n * data += (item.func || '[anonymous]') + \"() in \" + item.url + \":\" + (item.line || '0') + \"\\n\";\n * }\n * if (window.console)\n * console.info(data);\n * else\n * alert(data);\n * }\n * ```\n * @memberof TraceKit\n * @namespace\n */\nTraceKit.computeStackTrace = (function computeStackTraceWrapper() {\n var debug = false,\n sourceCache = {};\n\n /**\n * Attempts to retrieve source code via XMLHttpRequest, which is used\n * to look up anonymous function names.\n * @param {string} url URL of source code.\n * @return {string} Source contents.\n * @memberof TraceKit.computeStackTrace\n */\n function loadSource(url) {\n if (!TraceKit.remoteFetching) { //Only attempt request if remoteFetching is on.\n return '';\n }\n try {\n var getXHR = function() {\n try {\n return new window.XMLHttpRequest();\n } catch (e) {\n // explicitly bubble up the exception if not found\n return new window.ActiveXObject('Microsoft.XMLHTTP');\n }\n };\n\n var request = getXHR();\n request.open('GET', url, false);\n request.send('');\n return request.responseText;\n } catch (e) {\n return '';\n }\n }\n\n /**\n * Retrieves source code from the source code cache.\n * @param {string} url URL of source code.\n * @return {Array.<string>} Source contents.\n * @memberof TraceKit.computeStackTrace\n */\n function getSource(url) {\n if (typeof url !== 'string') {\n return [];\n }\n\n if (!_has(sourceCache, url)) {\n // URL needs to be able to fetched within the acceptable domain. Otherwise,\n // cross-domain errors will be triggered.\n /*\n Regex matches:\n 0 - Full Url\n 1 - Protocol\n 2 - Domain\n 3 - Port (Useful for internal applications)\n 4 - Path\n */\n var source = '';\n var domain = '';\n try { domain = window.document.domain; } catch (e) { }\n var match = /(.*)\\:\\/\\/([^:\\/]+)([:\\d]*)\\/{0,1}([\\s\\S]*)/.exec(url);\n if (match && match[2] === domain) {\n source = loadSource(url);\n }\n sourceCache[url] = source ? source.split('\\n') : [];\n }\n\n return sourceCache[url];\n }\n\n /**\n * Tries to use an externally loaded copy of source code to determine\n * the name of a function by looking at the name of the variable it was\n * assigned to, if any.\n * @param {string} url URL of source code.\n * @param {(string|number)} lineNo Line number in source code.\n * @return {string} The function name, if discoverable.\n * @memberof TraceKit.computeStackTrace\n */\n function guessFunctionName(url, lineNo) {\n var reFunctionArgNames = /function ([^(]*)\\(([^)]*)\\)/,\n reGuessFunction = /['\"]?([0-9A-Za-z$_]+)['\"]?\\s*[:=]\\s*(function|eval|new Function)/,\n line = '',\n maxLines = 10,\n source = getSource(url),\n m;\n\n if (!source.length) {\n return UNKNOWN_FUNCTION;\n }\n\n // Walk backwards from the first line in the function until we find the line which\n // matches the pattern above, which is the function definition\n for (var i = 0; i < maxLines; ++i) {\n line = source[lineNo - i] + line;\n\n if (!_isUndefined(line)) {\n if ((m = reGuessFunction.exec(line))) {\n return m[1];\n } else if ((m = reFunctionArgNames.exec(line))) {\n return m[1];\n }\n }\n }\n\n return UNKNOWN_FUNCTION;\n }\n\n /**\n * Retrieves the surrounding lines from where an exception occurred.\n * @param {string} url URL of source code.\n * @param {(string|number)} line Line number in source code to center around for context.\n * @return {?Array.<string>} Lines of source code.\n * @memberof TraceKit.computeStackTrace\n */\n function gatherContext(url, line) {\n var source = getSource(url);\n\n if (!source.length) {\n return null;\n }\n\n var context = [],\n // linesBefore & linesAfter are inclusive with the offending line.\n // if linesOfContext is even, there will be one extra line\n // *before* the offending line.\n linesBefore = Math.floor(TraceKit.linesOfContext / 2),\n // Add one extra line if linesOfContext is odd\n linesAfter = linesBefore + (TraceKit.linesOfContext % 2),\n start = Math.max(0, line - linesBefore - 1),\n end = Math.min(source.length, line + linesAfter - 1);\n\n line -= 1; // convert to 0-based index\n\n for (var i = start; i < end; ++i) {\n if (!_isUndefined(source[i])) {\n context.push(source[i]);\n }\n }\n\n return context.length > 0 ? context : null;\n }\n\n /**\n * Escapes special characters, except for whitespace, in a string to be\n * used inside a regular expression as a string literal.\n * @param {string} text The string.\n * @return {string} The escaped string literal.\n * @memberof TraceKit.computeStackTrace\n */\n function escapeRegExp(text) {\n return text.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#]/g, '\\\\$&');\n }\n\n /**\n * Escapes special characters in a string to be used inside a regular\n * expression as a string literal. Also ensures that HTML entities will\n * be matched the same as their literal friends.\n * @param {string} body The string.\n * @return {string} The escaped string.\n * @memberof TraceKit.computeStackTrace\n */\n function escapeCodeAsRegExpForMatchingInsideHTML(body) {\n return escapeRegExp(body).replace('<', '(?:<|<)').replace('>', '(?:>|>)').replace('&', '(?:&|&)').replace('\"', '(?:\"|")').replace(/\\s+/g, '\\\\s+');\n }\n\n /**\n * Determines where a code fragment occurs in the source code.\n * @param {RegExp} re The function definition.\n * @param {Array.<string>} urls A list of URLs to search.\n * @return {?Object.<string, (string|number)>} An object containing\n * the url, line, and column number of the defined function.\n * @memberof TraceKit.computeStackTrace\n */\n function findSourceInUrls(re, urls) {\n var source, m;\n for (var i = 0, j = urls.length; i < j; ++i) {\n if ((source = getSource(urls[i])).length) {\n source = source.join('\\n');\n if ((m = re.exec(source))) {\n\n return {\n 'url': urls[i],\n 'line': source.substring(0, m.index).split('\\n').length,\n 'column': m.index - source.lastIndexOf('\\n', m.index) - 1\n };\n }\n }\n }\n\n return null;\n }\n\n /**\n * Determines at which column a code fragment occurs on a line of the\n * source code.\n * @param {string} fragment The code fragment.\n * @param {string} url The URL to search.\n * @param {(string|number)} line The line number to examine.\n * @return {?number} The column number.\n * @memberof TraceKit.computeStackTrace\n */\n function findSourceInLine(fragment, url, line) {\n var source = getSource(url),\n re = new RegExp('\\\\b' + escapeRegExp(fragment) + '\\\\b'),\n m;\n\n line -= 1;\n\n if (source && source.length > line && (m = re.exec(source[line]))) {\n return m.index;\n }\n\n return null;\n }\n\n /**\n * Determines where a function was defined within the source code.\n * @param {(Function|string)} func A function reference or serialized\n * function definition.\n * @return {?Object.<string, (string|number)>} An object containing\n * the url, line, and column number of the defined function.\n * @memberof TraceKit.computeStackTrace\n */\n function findSourceByFunctionBody(func) {\n if (_isUndefined(window && window.document)) {\n return;\n }\n\n var urls = [window.location.href],\n scripts = window.document.getElementsByTagName('script'),\n body,\n code = '' + func,\n codeRE = /^function(?:\\s+([\\w$]+))?\\s*\\(([\\w\\s,]*)\\)\\s*\\{\\s*(\\S[\\s\\S]*\\S)\\s*\\}\\s*$/,\n eventRE = /^function on([\\w$]+)\\s*\\(event\\)\\s*\\{\\s*(\\S[\\s\\S]*\\S)\\s*\\}\\s*$/,\n re,\n parts,\n result;\n\n for (var i = 0; i < scripts.length; ++i) {\n var script = scripts[i];\n if (script.src) {\n urls.push(script.src);\n }\n }\n\n if (!(parts = codeRE.exec(code))) {\n re = new RegExp(escapeRegExp(code).replace(/\\s+/g, '\\\\s+'));\n }\n\n // not sure if this is really necessary, but I don’t have a test\n // corpus large enough to confirm that and it was in the original.\n else {\n var name = parts[1] ? '\\\\s+' + parts[1] : '',\n args = parts[2].split(',').join('\\\\s*,\\\\s*');\n\n body = escapeRegExp(parts[3]).replace(/;$/, ';?'); // semicolon is inserted if the function ends with a comment.replace(/\\s+/g, '\\\\s+');\n re = new RegExp('function' + name + '\\\\s*\\\\(\\\\s*' + args + '\\\\s*\\\\)\\\\s*{\\\\s*' + body + '\\\\s*}');\n }\n\n // look for a normal function definition\n if ((result = findSourceInUrls(re, urls))) {\n return result;\n }\n\n // look for an old-school event handler function\n if ((parts = eventRE.exec(code))) {\n var event = parts[1];\n body = escapeCodeAsRegExpForMatchingInsideHTML(parts[2]);\n\n // look for a function defined in HTML as an onXXX handler\n re = new RegExp('on' + event + '=[\\\\\\'\"]\\\\s*' + body + '\\\\s*[\\\\\\'\"]', 'i');\n\n if ((result = findSourceInUrls(re, urls[0]))) {\n return result;\n }\n\n // look for ???\n re = new RegExp(body);\n\n if ((result = findSourceInUrls(re, urls))) {\n return result;\n }\n }\n\n return null;\n }\n\n // Contents of Exception in various browsers.\n //\n // SAFARI:\n // ex.message = Can't find variable: qq\n // ex.line = 59\n // ex.sourceId = 580238192\n // ex.sourceURL = http://...\n // ex.expressionBeginOffset = 96\n // ex.expressionCaretOffset = 98\n // ex.expressionEndOffset = 98\n // ex.name = ReferenceError\n //\n // FIREFOX:\n // ex.message = qq is not defined\n // ex.fileName = http://...\n // ex.lineNumber = 59\n // ex.columnNumber = 69\n // ex.stack = ...stack trace... (see the example below)\n // ex.name = ReferenceError\n //\n // CHROME:\n // ex.message = qq is not defined\n // ex.name = ReferenceError\n // ex.type = not_defined\n // ex.arguments = ['aa']\n // ex.stack = ...stack trace...\n //\n // INTERNET EXPLORER:\n // ex.message = ...\n // ex.name = ReferenceError\n //\n // OPERA:\n // ex.message = ...message... (see the example below)\n // ex.name = ReferenceError\n // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message)\n // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'\n\n /**\n * Computes stack trace information from the stack property.\n * Chrome and Gecko use this property.\n * @param {Error} ex\n * @return {?TraceKit.StackTrace} Stack trace information.\n * @memberof TraceKit.computeStackTrace\n */\n function computeStackTraceFromStackProp(ex) {\n if (!ex.stack) {\n return null;\n }\n\n var chrome = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,\n gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i,\n winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,\n\n // Used to additionally parse URL/line/column from eval frames\n isEval,\n geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i,\n chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/,\n\n lines = ex.stack.split('\\n'),\n stack = [],\n submatch,\n parts,\n element,\n reference = /^(.*) is undefined$/.exec(ex.message);\n\n for (var i = 0, j = lines.length; i < j; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n element = {\n 'url': !isNative ? parts[2] : null,\n 'func': parts[1] || UNKNOWN_FUNCTION,\n 'args': isNative ? [parts[2]] : [],\n 'line': parts[3] ? +parts[3] : null,\n 'column': parts[4] ? +parts[4] : null\n };\n } else if ( parts = winjs.exec(lines[i]) ) {\n element = {\n 'url': parts[2],\n 'func': parts[1] || UNKNOWN_FUNCTION,\n 'args': [],\n 'line': +parts[3],\n 'column': parts[4] ? +parts[4] : null\n };\n } else if ((parts = gecko.exec(lines[i]))) {\n isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = null; // no column when eval\n } else if (i === 0 && !parts[5] && !_isUndefined(ex.columnNumber)) {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = ex.columnNumber + 1;\n }\n element = {\n 'url': parts[3],\n 'func': parts[1] || UNKNOWN_FUNCTION,\n 'args': parts[2] ? parts[2].split(',') : [],\n 'line': parts[4] ? +parts[4] : null,\n 'column': parts[5] ? +parts[5] : null\n };\n } else {\n continue;\n }\n\n if (!element.func && element.line) {\n element.func = guessFunctionName(element.url, element.line);\n }\n\n element.context = element.line ? gatherContext(element.url, element.line) : null;\n stack.push(element);\n }\n\n if (!stack.length) {\n return null;\n }\n\n if (stack[0] && stack[0].line && !stack[0].column && reference) {\n stack[0].column = findSourceInLine(reference[1], stack[0].url, stack[0].line);\n }\n\n return {\n 'mode': 'stack',\n 'name': ex.name,\n 'message': ex.message,\n 'stack': stack\n };\n }\n\n /**\n * Computes stack trace information from the stacktrace property.\n * Opera 10+ uses this property.\n * @param {Error} ex\n * @return {?TraceKit.StackTrace} Stack trace information.\n * @memberof TraceKit.computeStackTrace\n */\n function computeStackTraceFromStacktraceProp(ex) {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n var stacktrace = ex.stacktrace;\n if (!stacktrace) {\n return;\n }\n\n var opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i,\n opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^\\)]+))\\((.*)\\))? in (.*):\\s*$/i,\n lines = stacktrace.split('\\n'),\n stack = [],\n parts;\n\n for (var line = 0; line < lines.length; line += 2) {\n var element = null;\n if ((parts = opera10Regex.exec(lines[line]))) {\n element = {\n 'url': parts[2],\n 'line': +parts[1],\n 'column': null,\n 'func': parts[3],\n 'args':[]\n };\n } else if ((parts = opera11Regex.exec(lines[line]))) {\n element = {\n 'url': parts[6],\n 'line': +parts[1],\n 'column': +parts[2],\n 'func': parts[3] || parts[4],\n 'args': parts[5] ? parts[5].split(',') : []\n };\n }\n\n if (element) {\n if (!element.func && element.line) {\n element.func = guessFunctionName(element.url, element.line);\n }\n if (element.line) {\n try {\n element.context = gatherContext(element.url, element.line);\n } catch (exc) {}\n }\n\n if (!element.context) {\n element.context = [lines[line + 1]];\n }\n\n stack.push(element);\n }\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n 'mode': 'stacktrace',\n 'name': ex.name,\n 'message': ex.message,\n 'stack': stack\n };\n }\n\n /**\n * NOT TESTED.\n * Computes stack trace information from an error message that includes\n * the stack trace.\n * Opera 9 and earlier use this method if the option to show stack\n * traces is turned on in opera:config.\n * @param {Error} ex\n * @return {?TraceKit.StackTrace} Stack information.\n * @memberof TraceKit.computeStackTrace\n */\n function computeStackTraceFromOperaMultiLineMessage(ex) {\n // TODO: Clean this function up\n // Opera includes a stack trace into the exception message. An example is:\n //\n // Statement on line 3: Undefined variable: undefinedFunc\n // Backtrace:\n // Line 3 of linked script file://localhost/Users/andreyvit/Projects/TraceKit/javascript-client/sample.js: In function zzz\n // undefinedFunc(a);\n // Line 7 of inline#1 script in file://localhost/Users/andreyvit/Projects/TraceKit/javascript-client/sample.html: In function yyy\n // zzz(x, y, z);\n // Line 3 of inline#1 script in file://localhost/Users/andreyvit/Projects/TraceKit/javascript-client/sample.html: In function xxx\n // yyy(a, a, a);\n // Line 1 of function script\n // try { xxx('hi'); return false; } catch(ex) { TraceKit.report(ex); }\n // ...\n\n var lines = ex.message.split('\\n');\n if (lines.length < 4) {\n return null;\n }\n\n var lineRE1 = /^\\s*Line (\\d+) of linked script ((?:file|https?|blob)\\S+)(?:: in function (\\S+))?\\s*$/i,\n lineRE2 = /^\\s*Line (\\d+) of inline#(\\d+) script in ((?:file|https?|blob)\\S+)(?:: in function (\\S+))?\\s*$/i,\n lineRE3 = /^\\s*Line (\\d+) of function script\\s*$/i,\n stack = [],\n scripts = (window && window.document && window.document.getElementsByTagName('script')),\n inlineScriptBlocks = [],\n parts;\n\n for (var s in scripts) {\n if (_has(scripts, s) && !scripts[s].src) {\n inlineScriptBlocks.push(scripts[s]);\n }\n }\n\n for (var line = 2; line < lines.length; line += 2) {\n var item = null;\n if ((parts = lineRE1.exec(lines[line]))) {\n item = {\n 'url': parts[2],\n 'func': parts[3],\n 'args': [],\n 'line': +parts[1],\n 'column': null\n };\n } else if ((parts = lineRE2.exec(lines[line]))) {\n item = {\n 'url': parts[3],\n 'func': parts[4],\n 'args': [],\n 'line': +parts[1],\n 'column': null // TODO: Check to see if inline#1 (+parts[2]) points to the script number or column number.\n };\n var relativeLine = (+parts[1]); // relative to the start of the <SCRIPT> block\n var script = inlineScriptBlocks[parts[2] - 1];\n if (script) {\n var source = getSource(item.url);\n if (source) {\n source = source.join('\\n');\n var pos = source.indexOf(script.innerText);\n if (pos >= 0) {\n item.line = relativeLine + source.substring(0, pos).split('\\n').length;\n }\n }\n }\n } else if ((parts = lineRE3.exec(lines[line]))) {\n var url = window.location.href.replace(/#.*$/, '');\n var re = new RegExp(escapeCodeAsRegExpForMatchingInsideHTML(lines[line + 1]));\n var src = findSourceInUrls(re, [url]);\n item = {\n 'url': url,\n 'func': '',\n 'args': [],\n 'line': src ? src.line : parts[1],\n 'column': null\n };\n }\n\n if (item) {\n if (!item.func) {\n item.func = guessFunctionName(item.url, item.line);\n }\n var context = gatherContext(item.url, item.line);\n var midline = (context ? context[Math.floor(context.length / 2)] : null);\n if (context && midline.replace(/^\\s*/, '') === lines[line + 1].replace(/^\\s*/, '')) {\n item.context = context;\n } else {\n // if (context) alert(\"Context mismatch. Correct midline:\\n\" + lines[i+1] + \"\\n\\nMidline:\\n\" + midline + \"\\n\\nContext:\\n\" + context.join(\"\\n\") + \"\\n\\nURL:\\n\" + item.url);\n item.context = [lines[line + 1]];\n }\n stack.push(item);\n }\n }\n if (!stack.length) {\n return null; // could not parse multiline exception message as Opera stack trace\n }\n\n return {\n 'mode': 'multiline',\n 'name': ex.name,\n 'message': lines[0],\n 'stack': stack\n };\n }\n\n /**\n * Adds information about the first frame to incomplete stack traces.\n * Safari and IE require this to get complete data on the first frame.\n * @param {TraceKit.StackTrace} stackInfo Stack trace information from\n * one of the compute* methods.\n * @param {string} url The URL of the script that caused an error.\n * @param {(number|string)} lineNo The line number of the script that\n * caused an error.\n * @param {string=} message The error generated by the browser, which\n * hopefully contains the name of the object that caused the error.\n * @return {boolean} Whether or not the stack information was\n * augmented.\n * @memberof TraceKit.computeStackTrace\n */\n function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {\n var initial = {\n 'url': url,\n 'line': lineNo\n };\n\n if (initial.url && initial.line) {\n stackInfo.incomplete = false;\n\n if (!initial.func) {\n initial.func = guessFunctionName(initial.url, initial.line);\n }\n\n if (!initial.context) {\n initial.context = gatherContext(initial.url, initial.line);\n }\n\n var reference = / '([^']+)' /.exec(message);\n if (reference) {\n initial.column = findSourceInLine(reference[1], initial.url, initial.line);\n }\n\n if (stackInfo.stack.length > 0) {\n if (stackInfo.stack[0].url === initial.url) {\n if (stackInfo.stack[0].line === initial.line) {\n return false; // already in stack trace\n } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) {\n stackInfo.stack[0].line = initial.line;\n stackInfo.stack[0].context = initial.context;\n return false;\n }\n }\n }\n\n stackInfo.stack.unshift(initial);\n stackInfo.partial = true;\n return true;\n } else {\n stackInfo.incomplete = true;\n }\n\n return false;\n }\n\n /**\n * Computes stack trace information by walking the arguments.caller\n * chain at the time the exception occurred. This will cause earlier\n * frames to be missed but is the only way to get any stack trace in\n * Safari and IE. The top frame is restored by\n * {@link augmentStackTraceWithInitialElement}.\n * @param {Error} ex\n * @return {TraceKit.StackTrace=} Stack trace information.\n * @memberof TraceKit.computeStackTrace\n */\n function computeStackTraceByWalkingCallerChain(ex, depth) {\n var functionName = /function\\s+([_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*)?\\s*\\(/i,\n stack = [],\n funcs = {},\n recursion = false,\n parts,\n item,\n source;\n\n for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) {\n if (curr === computeStackTrace || curr === TraceKit.report) {\n continue;\n }\n\n item = {\n 'url': null,\n 'func': UNKNOWN_FUNCTION,\n 'args': [],\n 'line': null,\n 'column': null\n };\n\n if (curr.name) {\n item.func = curr.name;\n } else if ((parts = functionName.exec(curr.toString()))) {\n item.func = parts[1];\n }\n\n if (typeof item.func === 'undefined') {\n try {\n item.func = parts.input.substring(0, parts.input.indexOf('{'));\n } catch (e) { }\n }\n\n if ((source = findSourceByFunctionBody(curr))) {\n item.url = source.url;\n item.line = source.line;\n\n if (item.func === UNKNOWN_FUNCTION) {\n item.func = guessFunctionName(item.url, item.line);\n }\n\n var reference = / '([^']+)' /.exec(ex.message || ex.description);\n if (reference) {\n item.column = findSourceInLine(reference[1], source.url, source.line);\n }\n }\n\n if (funcs['' + curr]) {\n recursion = true;\n }else{\n funcs['' + curr] = true;\n }\n\n stack.push(item);\n }\n\n if (depth) {\n stack.splice(0, depth);\n }\n\n var result = {\n 'mode': 'callers',\n 'name': ex.name,\n 'message': ex.message,\n 'stack': stack\n };\n augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description);\n return result;\n }\n\n /**\n * Computes a stack trace for an exception.\n * @param {Error} ex\n * @param {(string|number)=} depth\n * @memberof TraceKit.computeStackTrace\n */\n function computeStackTrace(ex, depth) {\n var stack = null;\n depth = (depth == null ? 0 : +depth);\n\n try {\n // This must be tried first because Opera 10 *destroys*\n // its stacktrace property if you try to access the stack\n // property first!!\n stack = computeStackTraceFromStacktraceProp(ex);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (debug) {\n throw e;\n }\n }\n\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (debug) {\n throw e;\n }\n }\n\n try {\n stack = computeStackTraceFromOperaMultiLineMessage(ex);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (debug) {\n throw e;\n }\n }\n\n try {\n stack = computeStackTraceByWalkingCallerChain(ex, depth + 1);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (debug) {\n throw e;\n }\n }\n\n return {\n 'name': ex.name,\n 'message': ex.message,\n 'mode': 'failed'\n };\n }\n\n /**\n * Logs a stacktrace starting from the previous call and working down.\n * @param {(number|string)=} depth How many frames deep to trace.\n * @return {TraceKit.StackTrace} Stack trace information.\n * @memberof TraceKit.computeStackTrace\n */\n function computeStackTraceOfCaller(depth) {\n depth = (depth == null ? 0 : +depth) + 1; // \"+ 1\" because \"ofCaller\" should drop one frame\n try {\n throw new Error();\n } catch (ex) {\n return computeStackTrace(ex, depth + 1);\n }\n }\n\n computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement;\n computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp;\n computeStackTrace.guessFunctionName = guessFunctionName;\n computeStackTrace.gatherContext = gatherContext;\n computeStackTrace.ofCaller = computeStackTraceOfCaller;\n computeStackTrace.getSource = getSource;\n\n return computeStackTrace;\n}());\n\n/**\n * Extends support for global error handling for asynchronous browser\n * functions. Adopted from Closure Library's errorhandler.js\n * @memberof TraceKit\n */\nTraceKit.extendToAsynchronousCallbacks = function () {\n var _helper = function _helper(fnName) {\n var originalFn = window[fnName];\n window[fnName] = function traceKitAsyncExtension() {\n // Make a copy of the arguments\n var args = _slice.call(arguments);\n var originalCallback = args[0];\n if (typeof (originalCallback) === 'function') {\n args[0] = TraceKit.wrap(originalCallback);\n }\n // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it\n // also only supports 2 argument and doesn't care what \"this\" is, so we\n // can just call the original function directly.\n if (originalFn.apply) {\n return originalFn.apply(this, args);\n } else {\n return originalFn(args[0], args[1]);\n }\n };\n };\n\n _helper('setTimeout');\n _helper('setInterval');\n};\n\n//Default options:\nif (!TraceKit.remoteFetching) {\n TraceKit.remoteFetching = true;\n}\nif (!TraceKit.collectWindowErrors) {\n TraceKit.collectWindowErrors = true;\n}\nif (!TraceKit.linesOfContext || TraceKit.linesOfContext < 1) {\n // 5 lines before, the offending line, 5 lines after\n TraceKit.linesOfContext = 11;\n}\n\n// UMD export\nif (typeof define === 'function' && define.amd) {\n define('TraceKit', [], TraceKit);\n} else if (typeof module !== 'undefined' && module.exports && window.module !== module) {\n module.exports = TraceKit;\n} else {\n window.TraceKit = TraceKit;\n}\n\n}(typeof window !== 'undefined' ? window : global));\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n var host = n === null || n === void 0 ? void 0 : n.host;\r\n return Boolean((host === null || host === void 0 ? void 0 : host.shadowRoot) === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction getCssRulesString(s) {\r\n try {\r\n var rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules).map(getCssRuleString).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction getCssRuleString(rule) {\r\n var cssStringified = rule.cssText;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n return cssStringified;\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nvar Mirror = (function () {\r\n function Mirror() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n Mirror.prototype.getId = function (n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n var id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n };\r\n Mirror.prototype.getNode = function (id) {\r\n return this.idNodeMap.get(id) || null;\r\n };\r\n Mirror.prototype.getIds = function () {\r\n return Array.from(this.idNodeMap.keys());\r\n };\r\n Mirror.prototype.getMeta = function (n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n };\r\n Mirror.prototype.removeNodeFromMap = function (n) {\r\n var _this = this;\r\n var id = this.getId(n);\r\n this.idNodeMap[\"delete\"](id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach(function (childNode) {\r\n return _this.removeNodeFromMap(childNode);\r\n });\r\n }\r\n };\r\n Mirror.prototype.has = function (id) {\r\n return this.idNodeMap.has(id);\r\n };\r\n Mirror.prototype.hasNode = function (node) {\r\n return this.nodeMetaMap.has(node);\r\n };\r\n Mirror.prototype.add = function (n, meta) {\r\n var id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n };\r\n Mirror.prototype.replace = function (id, n) {\r\n var oldNode = this.getNode(id);\r\n if (oldNode) {\r\n var meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n };\r\n Mirror.prototype.reset = function () {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n };\r\n return Mirror;\r\n}());\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction maskInputValue(_a) {\r\n var maskInputOptions = _a.maskInputOptions, tagName = _a.tagName, type = _a.type, value = _a.value, maskInputFn = _a.maskInputFn;\r\n var text = value || '';\r\n if (maskInputOptions[tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n if (maskInputFn) {\r\n text = maskInputFn(text);\r\n }\r\n else {\r\n text = '*'.repeat(text.length);\r\n }\r\n }\r\n return text;\r\n}\r\nvar ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n var ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n var chunkSize = 50;\r\n for (var x = 0; x < canvas.width; x += chunkSize) {\r\n for (var y = 0; y < canvas.height; y += chunkSize) {\r\n var getImageData = ctx.getImageData;\r\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n var pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some(function (pixel) { return pixel !== 0; }))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\n\nvar _id = 1;\r\nvar tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nvar IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n var processedTagName = element.tagName.toLowerCase().trim();\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction stringifyStyleSheet(sheet) {\r\n return sheet.cssRules\r\n ? Array.from(sheet.cssRules)\r\n .map(function (rule) { return rule.cssText || ''; })\r\n .join('')\r\n : '';\r\n}\r\nfunction extractOrigin(url) {\r\n var origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nvar canvasService;\r\nvar canvasCtx;\r\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nvar RELATIVE_PATH = /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/|#).*/;\r\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, function (origin, quote1, path1, quote2, path2, path3) {\r\n var filePath = path1 || path2 || path3;\r\n var maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (!RELATIVE_PATH.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (filePath[0] === '/') {\r\n return \"url(\".concat(maybeQuote).concat(extractOrigin(href) + filePath).concat(maybeQuote, \")\");\r\n }\r\n var stack = href.split('/');\r\n var parts = filePath.split('/');\r\n stack.pop();\r\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\r\n var part = parts_1[_i];\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return \"url(\".concat(maybeQuote).concat(stack.join('/')).concat(maybeQuote, \")\");\r\n });\r\n}\r\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var pos = 0;\r\n function collectCharacters(regEx) {\r\n var chars;\r\n var match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n var output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n var url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n var descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n var inParens = false;\r\n while (true) {\r\n var c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n var a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value) {\r\n if (name === 'src' ||\r\n (name === 'href' && value && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n value &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset' && value) {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style' && value) {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data' && value) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else {\r\n return value;\r\n }\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector) {\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (var eIndex = element.classList.length; eIndex--;) {\r\n var className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (node.nodeType !== node.ELEMENT_NODE) {\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n }\r\n for (var eIndex = node.classList.length; eIndex--;) {\r\n var className = node.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector) {\r\n var el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (typeof maskTextClass === 'string') {\r\n if (el.classList.contains(maskTextClass))\r\n return true;\r\n if (el.closest(\".\".concat(maskTextClass)))\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, maskTextClass, true))\r\n return true;\r\n }\r\n if (maskTextSelector) {\r\n if (el.matches(maskTextSelector))\r\n return true;\r\n if (el.closest(maskTextSelector))\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n var win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n var fired = false;\r\n var readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n var timer_1 = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', function () {\r\n clearTimeout(timer_1);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n var blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n var fired = false;\r\n var styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n var timer = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', function () {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c;\r\n var rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: []\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId: rootId\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc: doc,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement,\r\n rootId: rootId\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n maskTextFn: maskTextFn,\r\n rootId: rootId\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId: rootId\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId: rootId\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n var docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n var _a;\r\n var maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, maskTextFn = options.maskTextFn, rootId = options.rootId;\r\n var parentTagName = n.parentNode && n.parentNode.tagName;\r\n var textContent = n.textContent;\r\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n var isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\r\n textContent = stringifyStyleSheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot get CSS styles from text's parentNode. Error: \".concat(err), n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n if (!isStyle &&\r\n !isScript &&\r\n textContent &&\r\n needMaskingText(n, maskTextClass, maskTextSelector)) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle: isStyle,\r\n rootId: rootId\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c, rootId = options.rootId;\r\n var needBlock = _isBlockedElement(n, blockClass, blockSelector);\r\n var tagName = getValidTagName(n);\r\n var attributes = {};\r\n var len = n.attributes.length;\r\n for (var i = 0; i < len; i++) {\r\n var attr = n.attributes[i];\r\n attributes[attr.name] = transformAttribute(doc, tagName, attr.name, attr.value);\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n var stylesheet = Array.from(doc.styleSheets).find(function (s) {\r\n return s.href === n.href;\r\n });\r\n var cssText = null;\r\n if (stylesheet) {\r\n cssText = getCssRulesString(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n var cssText = getCssRulesString(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\r\n var value = n.value;\r\n var checked = n.checked;\r\n if (attributes.type !== 'radio' &&\r\n attributes.type !== 'checkbox' &&\r\n attributes.type !== 'submit' &&\r\n attributes.type !== 'button' &&\r\n value) {\r\n attributes.value = maskInputValue({\r\n type: attributes.type,\r\n tagName: tagName,\r\n value: value,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn\r\n });\r\n }\r\n else if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n var canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n var blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n var image_1 = n;\r\n var oldValue_1 = image_1.crossOrigin;\r\n image_1.crossOrigin = 'anonymous';\r\n var recordInlineImage = function () {\r\n try {\r\n canvasService.width = image_1.naturalWidth;\r\n canvasService.height = image_1.naturalHeight;\r\n canvasCtx.drawImage(image_1, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot inline img src=\".concat(image_1.currentSrc, \"! Error: \").concat(err));\r\n }\r\n oldValue_1\r\n ? (attributes.crossOrigin = oldValue_1)\r\n : image_1.removeAttribute('crossorigin');\r\n };\r\n if (image_1.complete && image_1.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image_1.onload = recordInlineImage;\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n attributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n attributes.rr_mediaCurrentTime = n.currentTime;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n var _d = n.getBoundingClientRect(), width = _d.width, height = _d.height;\r\n attributes = {\r\n \"class\": attributes[\"class\"],\r\n rr_width: \"\".concat(width, \"px\"),\r\n rr_height: \"\".concat(height, \"px\")\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName: tagName,\r\n attributes: attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock: needBlock,\r\n rootId: rootId\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'preload' &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n sn.attributes.href.endsWith('.js')))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.inlineStylesheet, inlineStylesheet = _b === void 0 ? true : _b, _c = options.maskInputOptions, maskInputOptions = _c === void 0 ? {} : _c, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _d = options.dataURLOptions, dataURLOptions = _d === void 0 ? {} : _d, _e = options.inlineImages, inlineImages = _e === void 0 ? false : _e, _f = options.recordCanvas, recordCanvas = _f === void 0 ? false : _f, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _g = options.iframeLoadTimeout, iframeLoadTimeout = _g === void 0 ? 5000 : _g, onStylesheetLoad = options.onStylesheetLoad, _h = options.stylesheetLoadTimeout, stylesheetLoadTimeout = _h === void 0 ? 5000 : _h, _j = options.keepIframeSrcFn, keepIframeSrcFn = _j === void 0 ? function () { return false; } : _j, _k = options.newlyAddedElement, newlyAddedElement = _k === void 0 ? false : _k;\r\n var _l = options.preserveWhiteSpace, preserveWhiteSpace = _l === void 0 ? true : _l;\r\n var _serializedNode = serializeNode(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n var id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n var serializedNode = Object.assign(_serializedNode, { id: id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n var recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n var shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n var bypassOptions = {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: skipChild,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n };\r\n for (var _i = 0, _m = Array.from(n.childNodes); _i < _m.length; _i++) {\r\n var childN = _m[_i];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (var _o = 0, _p = Array.from(n.shadowRoot.childNodes); _o < _p.length; _o++) {\r\n var childN = _p[_o];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, function () {\r\n var iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n serializedNode.attributes.rel === 'stylesheet') {\r\n onceStylesheetLoaded(n, function () {\r\n if (onStylesheetLoad) {\r\n var serializedLinkNode = serializeNodeWithId(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n var _a = options || {}, _b = _a.mirror, mirror = _b === void 0 ? new Mirror() : _b, _c = _a.blockClass, blockClass = _c === void 0 ? 'rr-block' : _c, _d = _a.blockSelector, blockSelector = _d === void 0 ? null : _d, _e = _a.maskTextClass, maskTextClass = _e === void 0 ? 'rr-mask' : _e, _f = _a.maskTextSelector, maskTextSelector = _f === void 0 ? null : _f, _g = _a.inlineStylesheet, inlineStylesheet = _g === void 0 ? true : _g, _h = _a.inlineImages, inlineImages = _h === void 0 ? false : _h, _j = _a.recordCanvas, recordCanvas = _j === void 0 ? false : _j, _k = _a.maskAllInputs, maskAllInputs = _k === void 0 ? false : _k, maskTextFn = _a.maskTextFn, maskInputFn = _a.maskInputFn, _l = _a.slimDOM, slimDOM = _l === void 0 ? false : _l, dataURLOptions = _a.dataURLOptions, preserveWhiteSpace = _a.preserveWhiteSpace, onSerialize = _a.onSerialize, onIframeLoad = _a.onIframeLoad, iframeLoadTimeout = _a.iframeLoadTimeout, onStylesheetLoad = _a.onStylesheetLoad, stylesheetLoadTimeout = _a.stylesheetLoadTimeout, _m = _a.keepIframeSrcFn, keepIframeSrcFn = _m === void 0 ? function () { return false; } : _m;\r\n var maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true\r\n }\r\n : maskAllInputs === false\r\n ? {\r\n password: true\r\n }\r\n : maskAllInputs;\r\n var slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: false\r\n });\r\n}\r\n\nvar commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options) {\r\n if (options === void 0) { options = {}; }\r\n var lineno = 1;\r\n var column = 1;\r\n function updatePosition(str) {\r\n var lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n var i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n var start = { line: lineno, column: column };\r\n return function (node) {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n var Position = (function () {\r\n function Position(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column: column };\r\n this.source = options.source;\r\n }\r\n return Position;\r\n }());\r\n Position.prototype.content = css;\r\n var errorsList = [];\r\n function error(msg) {\r\n var err = new Error(\"\".concat(options.source || '', \":\").concat(lineno, \":\").concat(column, \": \").concat(msg));\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n var rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList\r\n }\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n var node;\r\n var rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node !== false) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n var m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n var str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules) {\r\n if (rules === void 0) { rules = []; }\r\n var c;\r\n while ((c = comment())) {\r\n if (c !== false) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n var pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n var i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n var str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str\r\n });\r\n }\r\n function selector() {\r\n var m = match(/^([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n return trim(m[0])\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function (m) {\r\n return m.replace(/,/g, '\\u200C');\r\n })\r\n .split(/\\s*(?![^(]*\\)),\\s*/)\r\n .map(function (s) {\r\n return s.replace(/\\u200C/g, ',');\r\n });\r\n }\r\n function declaration() {\r\n var pos = position();\r\n var propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n var prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(\"property missing ':'\");\r\n }\r\n var val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n var ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : ''\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n var decls = [];\r\n if (!open()) {\r\n return error(\"missing '{'\");\r\n }\r\n comments(decls);\r\n var decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(\"missing '}'\");\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n var m;\r\n var vals = [];\r\n var pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations()\r\n });\r\n }\r\n function atkeyframes() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n var name = m[1];\r\n if (!open()) {\r\n return error(\"@keyframes missing '{'\");\r\n }\r\n var frame;\r\n var frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@keyframes missing '}'\");\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name: name,\r\n vendor: vendor,\r\n keyframes: frames\r\n });\r\n }\r\n function atsupports() {\r\n var pos = position();\r\n var m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var supports = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@supports missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@supports missing '}'\");\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports: supports,\r\n rules: style\r\n });\r\n }\r\n function athost() {\r\n var pos = position();\r\n var m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@host missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@host missing '}'\");\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style\r\n });\r\n }\r\n function atmedia() {\r\n var pos = position();\r\n var m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var media = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@media missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@media missing '}'\");\r\n }\r\n return pos({\r\n type: 'media',\r\n media: media,\r\n rules: style\r\n });\r\n }\r\n function atcustommedia() {\r\n var pos = position();\r\n var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2])\r\n });\r\n }\r\n function atpage() {\r\n var pos = position();\r\n var m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n var sel = selector() || [];\r\n if (!open()) {\r\n return error(\"@page missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@page missing '}'\");\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls\r\n });\r\n }\r\n function atdocument() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = trim(m[1]);\r\n var doc = trim(m[2]);\r\n if (!open()) {\r\n return error(\"@document missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@document missing '}'\");\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor: vendor,\r\n rules: style\r\n });\r\n }\r\n function atfontface() {\r\n var pos = position();\r\n var m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@font-face missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@font-face missing '}'\");\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls\r\n });\r\n }\r\n var atimport = _compileAtrule('import');\r\n var atcharset = _compileAtrule('charset');\r\n var atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n var re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return function () {\r\n var pos = position();\r\n var m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n var ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n var pos = position();\r\n var sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations()\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n var isNode = obj && typeof obj.type === 'string';\r\n var childParent = isNode ? obj : parent;\r\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\r\n var k = _a[_i];\r\n var value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach(function (v) {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null\r\n });\r\n }\r\n return obj;\r\n}\n\nvar tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient'\r\n};\r\nfunction getTagName(n) {\r\n var tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nvar HOVER_SELECTOR = /([^\\\\]):hover/;\r\nvar HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n var cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n var ast = parse(cssText, {\r\n silent: true\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n var selectors = [];\r\n ast.stylesheet.rules.forEach(function (rule) {\r\n if ('selectors' in rule) {\r\n (rule.selectors || []).forEach(function (selector) {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n });\r\n if (selectors.length === 0) {\r\n return cssText;\r\n }\r\n var selectorMatcher = new RegExp(selectors\r\n .filter(function (selector, index) { return selectors.indexOf(selector) === index; })\r\n .sort(function (a, b) { return b.length - a.length; })\r\n .map(function (selector) {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n var result = cssText.replace(selectorMatcher, function (selector) {\r\n var newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return \"\".concat(selector, \", \").concat(newSelector);\r\n });\r\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n var stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass: stylesWithHoverClass\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n var tagName = getTagName(n);\r\n var node_1;\r\n if (n.isSVG) {\r\n node_1 = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n node_1 = doc.createElement(tagName);\r\n }\r\n var specialAttributes = {};\r\n for (var name_1 in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name_1)) {\r\n continue;\r\n }\r\n var value = n.attributes[name_1];\r\n if (tagName === 'option' &&\r\n name_1 === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name_1.startsWith('rr_')) {\r\n specialAttributes[name_1] = value;\r\n continue;\r\n }\r\n var isTextarea = tagName === 'textarea' && name_1 === 'value';\r\n var isRemoteOrDynamicCss = tagName === 'style' && name_1 === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = addHoverClass(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n var child = doc.createTextNode(value);\r\n for (var _i = 0, _a = Array.from(node_1.childNodes); _i < _a.length; _i++) {\r\n var c = _a[_i];\r\n if (c.nodeType === node_1.TEXT_NODE) {\r\n node_1.removeChild(c);\r\n }\r\n }\r\n node_1.appendChild(child);\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name_1 === 'xlink:href') {\r\n node_1.setAttributeNS('http://www.w3.org/1999/xlink', name_1, value.toString());\r\n }\r\n else if (name_1 === 'onload' ||\r\n name_1 === 'onclick' ||\r\n name_1.substring(0, 7) === 'onmouse') {\r\n node_1.setAttribute('_' + name_1, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name_1 === 'content') {\r\n node_1.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'preload' &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node_1.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node_1.setAttribute(name_1, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n var _loop_1 = function (name_2) {\r\n var value = specialAttributes[name_2];\r\n if (tagName === 'canvas' && name_2 === 'rr_dataURL') {\r\n var image_1 = document.createElement('img');\r\n image_1.onload = function () {\r\n var ctx = node_1.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image_1, 0, 0, image_1.width, image_1.height);\r\n }\r\n };\r\n image_1.src = value.toString();\r\n if (node_1.RRNodeType)\r\n node_1.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name_2 === 'rr_dataURL') {\r\n var image = node_1;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name_2 === 'rr_width') {\r\n node_1.style.width = value.toString();\r\n }\r\n else if (name_2 === 'rr_height') {\r\n node_1.style.height = value.toString();\r\n }\r\n else if (name_2 === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node_1.currentTime = value;\r\n }\r\n else if (name_2 === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node_1\r\n .play()[\"catch\"](function (e) { return console.warn('media playback error', e); });\r\n break;\r\n case 'paused':\r\n node_1.pause();\r\n break;\r\n }\r\n }\r\n };\r\n for (var name_2 in specialAttributes) {\r\n _loop_1(name_2);\r\n }\r\n if (n.isShadowHost) {\r\n if (!node_1.shadowRoot) {\r\n node_1.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node_1.shadowRoot.firstChild) {\r\n node_1.shadowRoot.removeChild(node_1.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node_1;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? addHoverClass(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n var doc = options.doc, mirror = options.mirror, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.hackCss, hackCss = _b === void 0 ? true : _b, afterAppend = options.afterAppend, cache = options.cache;\r\n var node = buildNode(n, { doc: doc, hackCss: hackCss, cache: cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n }\r\n else {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n for (var _i = 0, _c = n.childNodes; _i < _c.length; _i++) {\r\n var childN = _c[_i];\r\n var childNode = buildNodeWithSN(childN, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n continue;\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (var _i = 0, _a = mirror.getIds(); _i < _a.length; _i++) {\r\n var id = _a[_i];\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n var n = mirror.getMeta(node);\r\n if ((n === null || n === void 0 ? void 0 : n.type) !== NodeType.Element) {\r\n return;\r\n }\r\n var el = node;\r\n for (var name_3 in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name_3) &&\r\n name_3.startsWith('rr_'))) {\r\n continue;\r\n }\r\n var value = n.attributes[name_3];\r\n if (name_3 === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name_3 === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n var doc = options.doc, onVisit = options.onVisit, _a = options.hackCss, hackCss = _a === void 0 ? true : _a, afterAppend = options.afterAppend, cache = options.cache, _b = options.mirror, mirror = _b === void 0 ? new Mirror() : _b;\r\n var node = buildNodeWithSN(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n visit(mirror, function (visitedNode) {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, classMatchesRegex, createCache, createMirror, genId, getCssRuleString, getCssRulesString, is2DCanvasBlank, isCSSImportRule, isElement, isNativeShadowDom, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, transformAttribute };\n","import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch (_a) {\r\n return () => {\r\n };\r\n }\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (!el)\r\n return false;\r\n if (typeof blockClass === 'string') {\r\n if (el.classList.contains(blockClass))\r\n return true;\r\n if (checkAncestors && el.closest('.' + blockClass) !== null)\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, blockClass, checkAncestors))\r\n return true;\r\n }\r\n if (blockSelector) {\r\n if (node.matches(blockSelector))\r\n return true;\r\n if (checkAncestors && el.closest(blockSelector) !== null)\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n const queueNodeMap = {};\r\n const putIntoMap = (m, parent) => {\r\n const nodeInTree = {\r\n value: m,\r\n parent,\r\n children: [],\r\n };\r\n queueNodeMap[m.node.id] = nodeInTree;\r\n return nodeInTree;\r\n };\r\n const queueNodeTrees = [];\r\n for (const mutation of queue) {\r\n const { nextId, parentId } = mutation;\r\n if (nextId && nextId in queueNodeMap) {\r\n const nextInTree = queueNodeMap[nextId];\r\n if (nextInTree.parent) {\r\n const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n }\r\n else {\r\n const idx = queueNodeTrees.indexOf(nextInTree);\r\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n }\r\n continue;\r\n }\r\n if (parentId in queueNodeMap) {\r\n const parentInTree = queueNodeMap[parentId];\r\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n continue;\r\n }\r\n queueNodeTrees.push(putIntoMap(mutation, null));\r\n }\r\n return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n cb(tree.value);\r\n for (let i = tree.children.length - 1; i >= 0; i--) {\r\n iterateResolveTree(tree.children[i], cb);\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n var _a, _b;\r\n const frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.frameElement;\r\n if (!frameElement || frameElement === rootIframe) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n relativeScale: 1,\r\n absoluteScale: 1,\r\n };\r\n }\r\n const frameDimension = frameElement.getBoundingClientRect();\r\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n return {\r\n x: frameDimension.x * frameBaseDimension.relativeScale +\r\n frameBaseDimension.x,\r\n y: frameDimension.y * frameBaseDimension.relativeScale +\r\n frameBaseDimension.y,\r\n relativeScale,\r\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n };\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n const rule = rules[position[0]];\r\n if (position.length === 1) {\r\n return rule;\r\n }\r\n else {\r\n return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n const positions = [...nestedIndex];\r\n const index = positions.pop();\r\n return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n const idSet = new Set();\r\n const uniqueMutations = [];\r\n for (let i = mutations.length; i--;) {\r\n const mutation = mutations[i];\r\n if (!idSet.has(mutation.id)) {\r\n uniqueMutations.push(mutation);\r\n idSet.add(mutation.id);\r\n }\r\n }\r\n return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n var _a;\r\n return (_a = this.styleIDMap.get(stylesheet)) !== null && _a !== void 0 ? _a : -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\n\nexport { StyleSheetMirror, _mirror, getBaseDimension, getNestedRule, getPositionsAndIndex, getWindowHeight, getWindowWidth, hasShadowRoot, hookSetter, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, isTouchEvent, iterateResolveTree, on, patch, polyfill, queueToResolveTrees, throttle, uniqueTextMutations };\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n var _a, _b, _c, _d;\r\n let shadowHost = null;\r\n if (((_b = (_a = n.getRootNode) === null || _a === void 0 ? void 0 : _a.call(n)) === null || _b === void 0 ? void 0 : _b.nodeType) === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n let rootShadowHost = shadowHost;\r\n while (((_d = (_c = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _c === void 0 ? void 0 : _c.call(rootShadowHost)) === null || _d === void 0 ? void 0 : _d.nodeType) ===\r\n Node.DOCUMENT_FRAGMENT_NODE &&\r\n rootShadowHost.getRootNode().host)\r\n rootShadowHost = rootShadowHost.getRootNode().host;\r\n const notInDoc = !this.doc.contains(n) &&\r\n (!rootShadowHost || !this.doc.contains(rootShadowHost));\r\n if (!n.parentNode || notInDoc) {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(shadowHost)\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskTextClass: this.maskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of Array.from(this.movedSet.values())) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of Array.from(this.addedSet.values())) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n for (let index = addList.length - 1; index >= 0; index--) {\r\n const _node = addList.get(index);\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => ({\r\n id: this.mirror.getId(text.node),\r\n value: text.value,\r\n }))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => ({\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attribute.attributes,\r\n }))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value)\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let value = m.target.getAttribute(m.attributeName);\r\n if (m.attributeName === 'value') {\r\n value = maskInputValue({\r\n maskInputOptions: this.maskInputOptions,\r\n tagName: m.target.tagName,\r\n type: m.target.getAttribute('type'),\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributes.find((a) => a.node === m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n m.attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n m.attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n };\r\n this.attributes.push(item);\r\n }\r\n if (m.attributeName === 'style') {\r\n const old = this.doc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n if (item.attributes.style === undefined ||\r\n item.attributes.style === null) {\r\n item.attributes.style = {};\r\n }\r\n const styleObj = item.attributes.style;\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n styleObj[pname] = newValue;\r\n }\r\n else {\r\n styleObj[pname] = [newValue, newPriority];\r\n }\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n styleObj[pname] = false;\r\n }\r\n }\r\n }\r\n else {\r\n item.attributes[m.attributeName] = transformAttribute(this.doc, target.tagName, m.attributeName, value);\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\r\n return;\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, false))\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'maskTextClass',\r\n 'maskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","import { maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowHeight, getWindowWidth, hookSetter, patch, isTouchEvent } from '../utils.js';\nimport { MouseInteractions, IncrementalSource } from '../../../types/dist/types.js';\nimport MutationBuffer from './mutation.js';\n\nconst mutationBuffers = [];\r\nconst isCSSGroupingRuleSupported = typeof CSSGroupingRule !== 'undefined';\r\nconst isCSSMediaRuleSupported = typeof CSSMediaRule !== 'undefined';\r\nconst isCSSSupportsRuleSupported = typeof CSSSupportsRule !== 'undefined';\r\nconst isCSSConditionRuleSupported = typeof CSSConditionRule !== 'undefined';\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n return event.target;\r\n }\r\n catch (_a) {\r\n return event.target;\r\n }\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n var _a, _b;\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(mutationBuffer.processMutations.bind(mutationBuffer));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }, callbackThreshold);\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = Date.now();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: Date.now() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource.MouseMove\r\n : IncrementalSource.TouchMove);\r\n }, threshold, {\r\n trailing: false,\r\n });\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const e = isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n mouseInteractionCb({\r\n type: MouseInteractions[eventKey],\r\n id,\r\n x: clientX,\r\n y: clientY,\r\n });\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n const eventName = eventKey.toLowerCase();\r\n const handler = getHandler(eventKey);\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc) {\r\n const scrollEl = (doc.scrollingElement || doc.documentElement);\r\n scrollCb({\r\n id,\r\n x: scrollEl.scrollLeft,\r\n y: scrollEl.scrollTop,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }, sampling.scroll || 100);\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb, }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = throttle(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }, 200);\r\n return on('resize', updateDimension, window);\r\n}\r\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\r\n const value = Object.assign({}, v);\r\n if (!enable)\r\n delete value.userTriggered;\r\n return value;\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, ignoreClass, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n if (target && target.tagName === 'OPTION')\r\n target = target.parentElement;\r\n if (!target ||\r\n !target.tagName ||\r\n INPUT_TAGS.indexOf(target.tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const type = target.type;\r\n if (target.classList.contains(ignoreClass)) {\r\n return;\r\n }\r\n let text = target.value;\r\n let isChecked = false;\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n else if (maskInputOptions[target.tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n text = maskInputValue({\r\n maskInputOptions,\r\n tagName: target.tagName,\r\n type,\r\n value: text,\r\n maskInputFn,\r\n });\r\n }\r\n cbWithDedup(target, wrapEventWithUserTriggeredFlag({ text, isChecked, userTriggered }, userTriggeredOnInput));\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n cbWithDedup(el, wrapEventWithUserTriggeredFlag({\r\n text: el.value,\r\n isChecked: !isChecked,\r\n userTriggered: false,\r\n }, userTriggeredOnInput));\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n inputCb(Object.assign(Object.assign({}, v), { id }));\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, eventHandler, doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n eventHandler({ target: this });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((isCSSGroupingRuleSupported &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (isCSSMediaRuleSupported &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (isCSSSupportsRuleSupported &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (isCSSConditionRuleSupported &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return insertRule.apply(this, [rule, index]);\r\n };\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return deleteRule.apply(this, [index]);\r\n };\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return replace.apply(this, [text]);\r\n };\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return replaceSync.apply(this, [text]);\r\n };\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (isCSSGroupingRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (isCSSMediaRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (isCSSConditionRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (isCSSSupportsRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(this),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].insertRule.apply(this, [rule, index]);\r\n };\r\n type.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(this), index] },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].deleteRule.apply(this, [index]);\r\n };\r\n });\r\n return () => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n };\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n var _a, _b, _c;\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? (_a = host.defaultView) === null || _a === void 0 ? void 0 : _a.Document\r\n : (_c = (_b = host.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView) === null || _c === void 0 ? void 0 : _c.ShadowRoot;\r\n const originalPropertyDescriptor = Object.getOwnPropertyDescriptor(patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype, 'adoptedStyleSheets');\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n var _a;\r\n return (_a = originalPropertyDescriptor.get) === null || _a === void 0 ? void 0 : _a.call(this);\r\n },\r\n set(sheets) {\r\n var _a;\r\n const result = (_a = originalPropertyDescriptor.set) === null || _a === void 0 ? void 0 : _a.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return () => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n };\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = function (property, value, priority) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(this, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return setProperty.apply(this, [property, value, priority]);\r\n };\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = function (property) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(this, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return removeProperty.apply(this, [property]);\r\n };\r\n return () => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n };\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, mirror, sampling, }) {\r\n const handler = (type) => throttle((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate, } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n });\r\n }, sampling.media || 500);\r\n const handlers = [\r\n on('play', handler(0)),\r\n on('pause', handler(1)),\r\n on('seeked', handler(2)),\r\n on('volumechange', handler(3)),\r\n on('ratechange', handler(4)),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }, 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\r\n let collapsed = true;\r\n const updateSelection = () => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && (selection === null || selection === void 0 ? void 0 : selection.isCollapsed)))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n };\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction mergeHooks(o, hooks) {\r\n const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, selectionCb, } = o;\r\n o.mutationCb = (...p) => {\r\n if (hooks.mutation) {\r\n hooks.mutation(...p);\r\n }\r\n mutationCb(...p);\r\n };\r\n o.mousemoveCb = (...p) => {\r\n if (hooks.mousemove) {\r\n hooks.mousemove(...p);\r\n }\r\n mousemoveCb(...p);\r\n };\r\n o.mouseInteractionCb = (...p) => {\r\n if (hooks.mouseInteraction) {\r\n hooks.mouseInteraction(...p);\r\n }\r\n mouseInteractionCb(...p);\r\n };\r\n o.scrollCb = (...p) => {\r\n if (hooks.scroll) {\r\n hooks.scroll(...p);\r\n }\r\n scrollCb(...p);\r\n };\r\n o.viewportResizeCb = (...p) => {\r\n if (hooks.viewportResize) {\r\n hooks.viewportResize(...p);\r\n }\r\n viewportResizeCb(...p);\r\n };\r\n o.inputCb = (...p) => {\r\n if (hooks.input) {\r\n hooks.input(...p);\r\n }\r\n inputCb(...p);\r\n };\r\n o.mediaInteractionCb = (...p) => {\r\n if (hooks.mediaInteaction) {\r\n hooks.mediaInteaction(...p);\r\n }\r\n mediaInteractionCb(...p);\r\n };\r\n o.styleSheetRuleCb = (...p) => {\r\n if (hooks.styleSheetRule) {\r\n hooks.styleSheetRule(...p);\r\n }\r\n styleSheetRuleCb(...p);\r\n };\r\n o.styleDeclarationCb = (...p) => {\r\n if (hooks.styleDeclaration) {\r\n hooks.styleDeclaration(...p);\r\n }\r\n styleDeclarationCb(...p);\r\n };\r\n o.canvasMutationCb = (...p) => {\r\n if (hooks.canvasMutation) {\r\n hooks.canvasMutation(...p);\r\n }\r\n canvasMutationCb(...p);\r\n };\r\n o.fontCb = (...p) => {\r\n if (hooks.font) {\r\n hooks.font(...p);\r\n }\r\n fontCb(...p);\r\n };\r\n o.selectionCb = (...p) => {\r\n if (hooks.selection) {\r\n hooks.selection(...p);\r\n }\r\n selectionCb(...p);\r\n };\r\n}\r\nfunction initObservers(o, hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n mergeHooks(o, hooks);\r\n const mutationObserver = initMutationObserver(o, o.doc);\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o);\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n const styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n const fontObserver = o.collectFonts\r\n ? initFontObserver(o)\r\n : () => {\r\n };\r\n const selectionObserver = initSelectionObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return () => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n pluginHandlers.forEach((h) => h());\r\n };\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\n\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n var _a;\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n if (message.data.type === 'rrweb') {\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, message.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, message.data.isCheckout);\r\n }\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n var _a;\r\n switch (e.type) {\r\n case EventType.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType.Meta:\r\n case EventType.Load:\r\n case EventType.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType.Plugin: {\r\n return e;\r\n }\r\n case EventType.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource.MediaInteraction:\r\n case IncrementalSource.MouseInteraction:\r\n case IncrementalSource.Scroll:\r\n case IncrementalSource.CanvasMutation:\r\n case IncrementalSource.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource.Font: {\r\n return e;\r\n }\r\n case IncrementalSource.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n (_a = e.data.styles) === null || _a === void 0 ? void 0 : _a.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n}\n\nexport { IframeManager };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { patch } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restorePatches = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n const manager = this;\r\n this.restorePatches.push(patch(Element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, this.ownerDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\r\n initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror }));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot);\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (iframeElement.contentWindow) {\r\n const manager = this;\r\n this.restorePatches.push(patch(iframeElement.contentWindow.HTMLElement.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, iframeElement.contentDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n }\r\n reset() {\r\n this.restorePatches.forEach((restorePatch) => restorePatch());\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\nexport { ShadowDomManager };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nexport { __awaiter, __rest };\n","/*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n","import { encode } from './../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = canvasVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n canvasVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n if (!value ||\r\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n return;\r\n const name = value.constructor.name;\r\n const list = variableListFor(ctx, name);\r\n let index = list.indexOf(value);\r\n if (index === -1) {\r\n index = list.length;\r\n list.push(value);\r\n }\r\n return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n if (value instanceof Array) {\r\n return value.map((arg) => serializeArg(arg, win, ctx));\r\n }\r\n else if (value === null) {\r\n return value;\r\n }\r\n else if (value instanceof Float32Array ||\r\n value instanceof Float64Array ||\r\n value instanceof Int32Array ||\r\n value instanceof Uint32Array ||\r\n value instanceof Uint8Array ||\r\n value instanceof Uint16Array ||\r\n value instanceof Int16Array ||\r\n value instanceof Int8Array ||\r\n value instanceof Uint8ClampedArray) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [Object.values(value)],\r\n };\r\n }\r\n else if (value instanceof ArrayBuffer) {\r\n const name = value.constructor.name;\r\n const base64 = encode(value);\r\n return {\r\n rr_type: name,\r\n base64,\r\n };\r\n }\r\n else if (value instanceof DataView) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [\r\n serializeArg(value.buffer, win, ctx),\r\n value.byteOffset,\r\n value.byteLength,\r\n ],\r\n };\r\n }\r\n else if (value instanceof HTMLImageElement) {\r\n const name = value.constructor.name;\r\n const { src } = value;\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof HTMLCanvasElement) {\r\n const name = 'HTMLImageElement';\r\n const src = value.toDataURL();\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof ImageData) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n };\r\n }\r\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n const name = value.constructor.name;\r\n const index = saveWebGLVar(value, win, ctx);\r\n return {\r\n rr_type: name,\r\n index: index,\r\n };\r\n }\r\n return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n return [...args].map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n const webGLConstructorNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n 'WebGLVertexArrayObjectOES',\r\n ];\r\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { patch, isBlocked } from '../../../utils.js';\n\nfunction initCanvasContextObserver(win, blockClass, blockSelector) {\r\n const handlers = [];\r\n try {\r\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n return function (contextType, ...args) {\r\n if (!isBlocked(this, blockClass, blockSelector, true)) {\r\n if (!('__context' in this))\r\n this.__context = contextType;\r\n }\r\n return original.apply(this, [contextType, ...args]);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasContextObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, mirror, win) {\r\n const handlers = [];\r\n const props = Object.getOwnPropertyNames(prototype);\r\n for (const prop of props) {\r\n if ([\r\n 'isContextLost',\r\n 'canvas',\r\n 'drawingBufferWidth',\r\n 'drawingBufferHeight',\r\n ].includes(prop)) {\r\n continue;\r\n }\r\n try {\r\n if (typeof prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(prototype, prop, function (original) {\r\n return function (...args) {\r\n const result = original.apply(this, args);\r\n saveWebGLVar(result, win, this);\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n const mutation = {\r\n type,\r\n property: prop,\r\n args: recordArgs,\r\n };\r\n cb(this.canvas, mutation);\r\n }\r\n return result;\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type,\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, mirror) {\r\n const handlers = [];\r\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, mirror, win));\r\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, mirror, win));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasWebGLMutationObserver as default };\n","var WorkerClass = null;\n\ntry {\n var WorkerThreads =\n typeof module !== 'undefined' && typeof module.require === 'function' && module.require('worker_threads') ||\n typeof __non_webpack_require__ === 'function' && __non_webpack_require__('worker_threads') ||\n typeof require === 'function' && require('worker_threads');\n WorkerClass = WorkerThreads.Worker;\n} catch(e) {} // eslint-disable-line\n\nexport { WorkerClass };\n","import { WorkerClass } from './_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js';\n\nfunction decodeBase64(base64, enableUnicode) {\n return Buffer.from(base64, 'base64').toString(enableUnicode ? 'utf16' : 'utf8');\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n return function WorkerFactory(options) {\n return new WorkerClass(body, Object.assign({}, options, { eval: true }));\n };\n}\n\nexport { createBase64WorkerFactory };\n","function decodeBase64(base64, enableUnicode) {\n var binaryString = atob(base64);\n if (enableUnicode) {\n var binaryView = new Uint8Array(binaryString.length);\n for (var i = 0, n = binaryString.length; i < n; ++i) {\n binaryView[i] = binaryString.charCodeAt(i);\n }\n return String.fromCharCode.apply(null, new Uint16Array(binaryView.buffer));\n }\n return binaryString;\n}\n\nfunction createURL(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n var blob = new Blob([body], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(base64, sourcemapArg, enableUnicodeArg);\n return new Worker(url, options);\n };\n}\n\nexport { createBase64WorkerFactory };\n","var kIsNodeJS = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n\nfunction isNodeJS() {\n return kIsNodeJS;\n}\n\nexport { isNodeJS };\n","import { createBase64WorkerFactory } from './_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js';\n\nvar WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucykgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgY29uc3QgaWQgPSBgJHt3aWR0aH0tJHtoZWlnaHR9YDsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRCbG9iTWFwLmdldChpZCk7DQogICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0geWllbGQgYmxvYi5hcnJheUJ1ZmZlcigpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQogICAgY29uc3Qgd29ya2VyID0gc2VsZjsNCiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgY29uc3QgeyBpZCwgYml0bWFwLCB3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucyB9ID0gZS5kYXRhOw0KICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zKTsNCiAgICAgICAgICAgICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwKTsNCiAgICAgICAgICAgICAgICBiaXRtYXAuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gZW5jb2RlKGFycmF5QnVmZmVyKTsNCiAgICAgICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7DQogICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgaWQsDQogICAgICAgICAgICAgICAgICAgIHR5cGUsDQogICAgICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQogICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=', null, false);\n/* eslint-enable */\n\nexport { WorkerFactory as default };\n","import { createBase64WorkerFactory as createBase64WorkerFactory$1 } from './_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js';\nimport { createBase64WorkerFactory as createBase64WorkerFactory$2 } from './_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js';\nimport { isNodeJS } from './_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js';\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n if (isNodeJS()) {\n return createBase64WorkerFactory$1(base64, sourcemapArg, enableUnicodeArg);\n }\n return createBase64WorkerFactory$2(base64, sourcemapArg, enableUnicodeArg);\n}\n\nexport { createBase64WorkerFactory };\n","import { __rest, __awaiter } from './../../../../../../ext/tslib/tslib.es6.js';\nimport { isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport WorkerFactory from '../../../../../../_virtual/image-bitmap-data-url-worker.js';\n\nclass CanvasManager {\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, recordCanvas, dataURLOptions, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\r\n dataURLOptions,\r\n });\r\n }\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const snapshotInProgressMap = new Map();\r\n const worker = new WorkerFactory();\r\n worker.onmessage = (e) => {\r\n const { id } = e.data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in e.data))\r\n return;\r\n const { base64, type, width, height } = e.data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = () => {\r\n const matchedCanvas = [];\r\n win.document.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas()\r\n .forEach((canvas) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (((_a = context === null || context === void 0 ? void 0 : context.getContextAttributes()) === null || _a === void 0 ? void 0 : _a.preserveDrawingBuffer) === false) {\r\n context === null || context === void 0 ? void 0 : context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n const bitmap = yield createImageBitmap(canvas);\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: canvas.width,\r\n height: canvas.height,\r\n dataURLOptions: options.dataURLOptions,\r\n }, [bitmap]);\r\n }));\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const rest = __rest(value, [\"type\"]);\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nexport { CanvasManager };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { serializeArgs } from './serialize-args.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\r\n const handlers = [];\r\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n for (const prop of props2D) {\r\n try {\r\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n return function (...args) {\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n setTimeout(() => {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: recordArgs,\r\n });\r\n }, 0);\r\n }\r\n return original.apply(this, args);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvas2DMutationObserver as default };\n","import { getCssRuleString } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n const rules = Array.from(sheet.rules || CSSRule);\r\n styles.push({\r\n styleId,\r\n rules: rules.map((r, index) => {\r\n return {\r\n rule: getCssRuleString(r),\r\n index,\r\n };\r\n }),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nexport { StylesheetManager };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, getWindowWidth, getWindowHeight, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\n\nfunction wrapEvent(e) {\r\n return Object.assign(Object.assign({}, e), { timestamp: Date.now() });\r\n}\r\nlet wrappedEmit;\r\nlet takeFullSnapshot;\r\nlet canvasManager;\r\nlet recording = false;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, ignoreClass = 'rr-ignore', maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), } = options;\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n window.parent.document;\r\n passEmitsToParent = false;\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : { password: true };\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (e, isCheckout) => {\r\n var _a;\r\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\r\n e.type !== EventType.FullSnapshot &&\r\n !(e.type === EventType.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit === null || emit === void 0 ? void 0 : emit(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Mutation }, m),\r\n }));\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Scroll }, p),\r\n }));\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CanvasMutation }, p),\r\n }));\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.AdoptedStyleSheet }, a),\r\n }));\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n canvasManager = new CanvasManager({\r\n recordCanvas,\r\n mutationCb: wrappedCanvasMutationEmit,\r\n win: window,\r\n blockClass,\r\n blockSelector,\r\n mirror,\r\n sampling: sampling.canvas,\r\n dataURLOptions,\r\n });\r\n const shadowDomManager = new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n },\r\n mirror,\r\n });\r\n takeFullSnapshot = (isCheckout = false) => {\r\n var _a, _b, _c, _d, _e, _f;\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }), isCheckout);\r\n stylesheetManager.reset();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: {\r\n left: window.pageXOffset !== undefined\r\n ? window.pageXOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollLeft) ||\r\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) ||\r\n ((_c = document === null || document === void 0 ? void 0 : document.body) === null || _c === void 0 ? void 0 : _c.scrollLeft) ||\r\n 0,\r\n top: window.pageYOffset !== undefined\r\n ? window.pageYOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollTop) ||\r\n ((_e = (_d = document === null || document === void 0 ? void 0 : document.body) === null || _d === void 0 ? void 0 : _d.parentElement) === null || _e === void 0 ? void 0 : _e.scrollTop) ||\r\n ((_f = document === null || document === void 0 ? void 0 : document.body) === null || _f === void 0 ? void 0 : _f.scrollTop) ||\r\n 0,\r\n },\r\n },\r\n }));\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n try {\r\n const handlers = [];\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.DomContentLoaded,\r\n data: {},\r\n }));\r\n }));\r\n const observe = (doc) => {\r\n var _a;\r\n return initObservers({\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n })),\r\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MouseInteraction }, d),\r\n })),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.ViewportResize }, d),\r\n })),\r\n inputCb: (v) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Input }, v),\r\n })),\r\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MediaInteraction }, p),\r\n })),\r\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleSheetRule }, r),\r\n })),\r\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleDeclaration }, r),\r\n })),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Font }, p),\r\n })),\r\n selectionCb: (p) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Selection }, p),\r\n }));\r\n },\r\n blockClass,\r\n ignoreClass,\r\n maskTextClass,\r\n maskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit(wrapEvent({\r\n type: EventType.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n })),\r\n }))) || [],\r\n }, hooks);\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n recording = true;\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('load', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Load,\r\n data: {},\r\n }));\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n recording = false;\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nrecord.addCustomEvent = (tag, payload) => {\r\n if (!recording) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n }));\r\n};\r\nrecord.freezePage = () => {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n};\r\nrecord.takeFullSnapshot = (isCheckout) => {\r\n if (!recording) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n takeFullSnapshot(isCheckout);\r\n};\r\nrecord.mirror = mirror;\n\nexport { record as default };\n",null,null,null,null,null,null,null],"names":["window","undefined","TraceKit","_oldTraceKit","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","noConflict","wrap","func","apply","this","arguments","e","report","_oldOnerrorHandler","_onErrorHandlerInstalled","_oldOnunhandledrejectionHandler","_onUnhandledRejectionHandlerInstalled","handlers","lastException","lastExceptionStack","notifyHandlers","stack","isWindowError","error","exception","collectWindowErrors","i","_has","inner","traceKitWindowOnError","message","url","lineNo","columnNo","errorObj","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","name","location","line","column","msg","toString","call","groups","match","guessFunctionName","context","gatherContext","mode","traceKitWindowOnUnhandledRejection","reason","_lastExceptionStack","_lastException","ex","setTimeout","incomplete","subscribe","handler","onerror","installGlobalHandler","onunhandledrejection","installGlobalUnhandledRejectionHandler","push","unsubscribe","length","splice","sourceCache","getSource","source","domain","document","exec","remoteFetching","request","XMLHttpRequest","ActiveXObject","getXHR","open","send","responseText","loadSource","split","m","reFunctionArgNames","reGuessFunction","_isUndefined","linesBefore","Math","floor","linesOfContext","linesAfter","start","max","end","min","escapeRegExp","text","replace","escapeCodeAsRegExpForMatchingInsideHTML","body","findSourceInUrls","re","urls","j","join","substring","index","lastIndexOf","findSourceInLine","fragment","RegExp","findSourceByFunctionBody","parts","result","href","scripts","getElementsByTagName","code","script","src","args","event","computeStackTraceFromStackProp","submatch","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","reference","isNative","indexOf","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","input","description","sourceURL","fileName","lineNumber","stacktrace","opera10Regex","opera11Regex","exc","computeStackTraceFromStacktraceProp","lineRE1","lineRE2","lineRE3","inlineScriptBlocks","s","relativeLine","pos","innerText","midline","computeStackTraceFromOperaMultiLineMessage","ofCaller","Error","extendToAsynchronousCallbacks","_helper","fnName","originalFn","originalCallback","module","exports","object","key","Object","prototype","hasOwnProperty","what","global","getTarget","target","_a","isNode","parentNode","elementToString","tagName","components","toLowerCase","id","className","value","includes","getClassName","toSelector","options","maxDepth","ptr","asString","reverse","ClickCollector","constructor","addEventListener","breadcrumb","class","type","level","timestamp","Date","now","destination","addBreadcrumb","register","telemetry","unregister","INPUT_TAG_NAMES","KeypressCollector","htmlElement","isContentEditable","shouldDeduplicate","lastEvent","crumb","timeDiff","abs","ErrorCollector","captureErrorEvent","captureError","filterHttpBreadcrumb","filters","data","urlFilters","reduce","filtered","filter","originalFetch","fetch","processFetchArgs","init","method","Request","URL","FetchCollector","callback","wrapper","then","response","ok","assign","statusCode","status","statusText","defineProperty","writable","configurable","decorateFetch","LD_ORIGINAL_XHR","LD_ORIGINAL_XHR_OPEN","LD_ORIGINAL_XHR_SEND","LD_DATA_XHR","originalOpen","originalSend","XhrCollector","_event","xhrData","defineProperties","decorateXhr","pollingRegex","streamingREgex","defaultUrlFilter","regexMatch","repeat","_b","timeLow","timeMid","timeHiAndVersion","clockSeqHiAndReserved","clockSeqLow","nodes","hex","bytes","range","strVal","padStart","fallbackUuidV4","formatDataAsUuidV4","crypto","getRandomValues","typedArray","Uint8Array","values","random","getRandom128bit","INDEX_SPECIFIER","processUrlToFileName","origin","cleaned","startsWith","endsWith","trimSourceLine","maxLength","captureStart","beforeColumnCharacters","captureEnd","getLines","trimmer","adjustedStart","adjustedEnd","map","parse","frames","inFrame","function","col","maxLineLength","srcBefore","beforeLines","srcLine","srcAfter","afterLines","getSrcLines","CUSTOM_KEY_PREFIX","ERROR_KEY","SESSION_CAPTURE_KEY","safeValue","u","BrowserTelemetryImpl","pendingEvents","breadcrumbs","inspectorInstances","collectors","sessionId","randomUUID","beforeAfterMax","configureTraceKit","maxPendingEvents","maxBreadcrumbs","http","customUrlFilter","instrumentFetch","instrumentXhr","click","keyboardInput","forEach","collector","inspectors","evaluations","synchronous","flagKey","flagDetail","handleFlagUsed","flagChange","detail","handleFlagDetailChanged","makeInspectors","client","track","capture","shift","dispatchError","errorEvent","captureSession","sessionEvent","close","getTime","dispatchFlagUsed","dispatchFlagDetailChanged","handleErrorEvent","NodeType","isShadowRoot","n","host","Boolean","shadowRoot","isNativeShadowDom","getCssRulesString","rules","cssRules","cssText","Array","from","getCssRuleString","rule","cssStringified","isCSSImportRule","styleSheet","Mirror","idNodeMap","Map","nodeMetaMap","WeakMap","getId","getMeta","getNode","get","getIds","keys","removeNodeFromMap","_this","childNodes","childNode","has","hasNode","node","add","meta","set","oldNode","reset","maskInputValue","maskInputOptions","maskInputFn","ORIGINAL_ATTRIBUTE_NAME","canvasService","canvasCtx","_id","tagNameRegex","IGNORED_NODE","genId","URL_IN_CSS_REF","RELATIVE_PATH","DATA_URI","absoluteToStylesheet","quote1","path1","quote2","path2","path3","filePath","maybeQuote","test","concat","pop","_i","parts_1","part","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","doc","attributeValue","trim","a","createElement","isSVGElement","el","ownerSVGElement","getHref","transformAttribute","collectCharacters","regEx","chars","output","descriptorsStr","inParens","c","charAt","getAbsoluteSrcsetString","classMatchesRegex","regex","checkAncestors","nodeType","ELEMENT_NODE","eIndex","classList","needMaskingText","maskTextClass","maskTextSelector","parentElement","contains","closest","matches","serializeNode","mirror","blockClass","blockSelector","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","_c","newlyAddedElement","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","attributes","len","attr","stylesheet","styleSheets","find","rel","_cssText","sheet","textContent","checked","selected","__context","canvas","ctx","getContext","x","width","y","height","getImageData","originalGetImageData","Uint32Array","buffer","some","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image_1","oldValue_1","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","drawImage","err","console","warn","currentSrc","removeAttribute","complete","onload","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","_d","getBoundingClientRect","rr_width","rr_height","contentDocument","rr_src","Element","isSVG","serializeElementNode","TEXT_NODE","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","_e","_f","onSerialize","onIframeLoad","_g","iframeLoadTimeout","onStylesheetLoad","_h","stylesheetLoadTimeout","_j","_k","_l","preserveWhiteSpace","_serializedNode","sn","comment","as","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","isShadowHost","headWhitespace","bypassOptions","_m","serializedChildNode","isElement","_o","_p","isShadow","iframeEl","listener","win","contentWindow","readyState","fired","blankUrl","timer_1","clearTimeout","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","timer","onceStylesheetLoaded","serializedLinkNode","on","fn","passive","removeEventListener","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","timeout","previous","leading","remaining","trailing","hookSetter","d","isRevoked","original","getOwnPropertyDescriptor","patch","replacement","wrapped","__rrweb_original__","enumerable","getWindowHeight","innerHeight","documentElement","clientHeight","getWindowWidth","innerWidth","clientWidth","isBlocked","isIgnored","isAncestorRemoved","isTouchEvent","changedTouches","isSerializedIframe","nodeName","isSerializedStylesheet","getAttribute","hasShadowRoot","Proxy","Reflect","prop","receiver","StyleSheetMirror","styleIDMap","idStyleMap","newId","getStyle","generateId","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","CanvasContext","CanvasContext2","isNodeInLinkedList","DoubleLinkedList","head","position","current","next","addNode","__ln","removeNode","moveKey","parentId","MutationBuffer","frozen","locked","texts","removes","mapRemoves","movedMap","addedSet","Set","movedSet","droppedSet","processMutations","mutations","processMutation","emit","adds","addList","getNextId","ns","nextId","pushAdd","shadowHost","getRootNode","Node","DOCUMENT_FRAGMENT_NODE","rootShadowHost","notInDoc","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","isParentRemoved","isAncestorInSet","candidate","_node","unhandledNode","payload","attribute","mutationCb","oldValue","attributeName","old","setAttribute","style","styleObj","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","addedNodes","genAdds","removedNodes","nodeId","isSerialized","deepDelete","targetId","delete","childN","freeze","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_isParentRemoved","r","size","_isAncestorInSet","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","Number","isNaN","eventKey","eventName","clientX","clientY","getHandler","h","initScrollObserver","scrollCb","evt","scrollEl","scrollingElement","scroll","wrapEventWithUserTriggeredFlag","v","enable","userTriggered","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","parentRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","styleId","ownerNode","initAdoptedStyleSheetObserver","hostId","patchTarget","defaultView","ownerDocument","ShadowRoot","originalPropertyDescriptor","sheets","adoptStyleSheets","initObservers","o","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","p","mutation","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","mergeHooks","mutationObserver","mousemoveHandler","threshold","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","userTriggeredOnInput","eventHandler","isTrusted","isChecked","cbWithDedup","querySelectorAll","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","volume","muted","playbackRate","media","initMediaInteractionObserver","styleSheetObserver","insertRule","CSSStyleSheet","deleteRule","replaceSync","supportedNestedCSSRuleTypes","unmodifiedFunctions","entries","typeKey","initStyleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","priority","removeProperty","remove","initStyleDeclarationObserver","fontObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","JSON","stringify","restoreHandler","fonts","initFontObserver","selectionObserver","param","collapsed","updateSelection","getSelection","isCollapsed","ranges","count","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","pluginHandlers","plugin","plugins","b","disconnect","CrossOriginIframeMirror","generateIdFn","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","IframeManager","iframes","crossOriginIframeMap","crossOriginIframeMirror","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","handleMessage","addLoadListener","cb","loadListener","isAttachIframe","adoptedStyleSheets","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","replaceIdOnNode","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","Input","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","obj","isArray","child","ShadowDomManager","shadowDoms","WeakSet","restorePatches","manager","option","iframeElement","HTMLElement","restorePatch","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","done","lookup","charCodeAt","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list","ctor","contextMap","variableListFor","serializeArg","arg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","ArrayBuffer","base64","arraybuffer","encode","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","contextType","patchGLPrototype","props","getOwnPropertyNames","recordArgs","hookHandler","setter","WorkerClass","WorkerThreads","require","__non_webpack_require__","Worker","createBase64WorkerFactory","sourcemapArg","enableUnicodeArg","sourcemap","enableUnicode","Buffer","decodeBase64","eval","createURL","binaryString","atob","binaryView","String","fromCharCode","blob","Blob","createObjectURL","kIsNodeJS","process","WorkerFactory","createBase64WorkerFactory$1","createBase64WorkerFactory$2","CanvasManager","pendingCanvasMutations","rafStamps","latestId","invokeId","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","canvasContextReset","snapshotInProgressMap","worker","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","preserveDrawingBuffer","COLOR_BUFFER_BIT","bitmap","createImageBitmap","postMessage","requestAnimationFrame","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","flushPendingCanvasMutationFor","valuesWithType","rest","t","getOwnPropertySymbols","propertyIsEnumerable","__rest","StylesheetManager","trackedLinkElements","adoptedStyleSheetCb","linkEl","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","wrapEvent","takeFullSnapshot","recording","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","inEmittingFrame","parent","passEmitsToParent","color","date","email","month","number","search","tel","time","week","textarea","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","TypeError","polyfill","incrementalSnapshotCount","eventProcessor","buf","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","left","pageXOffset","top","pageYOffset","addCustomEvent","tag","freezePage","ContinuousReplay","visibilityHandler","handleVisibilityChange","timerHandle","setInterval","recordCapture","restartCapture","intervalMs","startCapture","stopper","clearInterval","visibilityState","events","rrweb.record","EventBuffer","content","hasSpace","isPopulated","RollingBuffer","bufferSize","numBuffers","buffers","writePointer","headPointer","toArray","asArray","acc","realIndex","RollingReplay","eventSegmentLength","segmentBufferLength","SessionReplay","captureOptions","impl","isRollingCapture","_context","itemOrDefault","defaultValue","parseHttp","defaults","parseStack","initializeTelemetry","parsedOptions"],"mappings":"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","x_google_ignoreList":[0,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39]}
|
|
1
|
+
{"version":3,"file":"bundle.es.js","sources":["../../../../../node_modules/tracekit/tracekit.js","../../../src/collectors/dom/getTarget.ts","../../../src/collectors/dom/toSelector.ts","../../../src/collectors/dom/ClickCollector.ts","../../../src/collectors/dom/KeypressCollector.ts","../../../src/collectors/error.ts","../../../src/filters/filterHttpBreadcrumb.ts","../../../src/filters/filterUrl.ts","../../../src/collectors/http/fetchDecorator.ts","../../../src/collectors/http/fetch.ts","../../../src/collectors/http/xhrDecorator.ts","../../../src/collectors/http/xhr.ts","../../../src/filters/defaultUrlFilter.ts","../../../src/randomUuidV4.ts","../../../src/stack/StackParser.ts","../../../src/BrowserTelemetryImpl.ts","../../../src/inspectors.ts","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/utils.js","../../../../../node_modules/rrweb/es/rrweb/packages/types/dist/types.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../../../../../node_modules/rrweb/es/rrweb/ext/tslib/tslib.es6.js","../../../../../node_modules/rrweb/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../../../../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js","../../../../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js","../../../../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js","../../../../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js","../../../../../node_modules/rrweb/es/rrweb/_virtual/image-bitmap-data-url-worker.js","../../../../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","../../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/index.js","../../../src/collectors/rrweb/ContinuousReplay.ts","../../../src/collectors/rrweb/EventBuffer.ts","../../../src/collectors/rrweb/RollingBuffer.ts","../../../src/collectors/rrweb/RollingReplay.ts","../../../src/collectors/rrweb/SessionReplay.ts","../../../src/options.ts","../../../src/index.ts"],"sourcesContent":["/**\n * https://github.com/csnover/TraceKit\n * @license MIT\n * @namespace TraceKit\n */\n(function(window, undefined) {\nif (!window) {\n return;\n}\n\nvar TraceKit = {};\nvar _oldTraceKit = window.TraceKit;\n\n// global reference to slice\nvar _slice = [].slice;\nvar UNKNOWN_FUNCTION = '?';\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\n/**\n * A better form of hasOwnProperty<br/>\n * Example: `_has(MainHostObject, property) === true/false`\n *\n * @param {Object} object to check property\n * @param {string} key to check\n * @return {Boolean} true if the object has the key and it is not inherited\n */\nfunction _has(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\n/**\n * Returns true if the parameter is undefined<br/>\n * Example: `_isUndefined(val) === true/false`\n *\n * @param {*} what Value to check\n * @return {Boolean} true if undefined and false otherwise\n */\nfunction _isUndefined(what) {\n return typeof what === 'undefined';\n}\n\n/**\n * Export TraceKit out to another variable<br/>\n * Example: `var TK = TraceKit.noConflict()`\n * @return {Object} The TraceKit object\n * @memberof TraceKit\n */\nTraceKit.noConflict = function noConflict() {\n window.TraceKit = _oldTraceKit;\n return TraceKit;\n};\n\n/**\n * Wrap any function in a TraceKit reporter<br/>\n * Example: `func = TraceKit.wrap(func);`\n *\n * @param {Function} func Function to be wrapped\n * @return {Function} The wrapped func\n * @memberof TraceKit\n */\nTraceKit.wrap = function traceKitWrapper(func) {\n function wrapped() {\n try {\n return func.apply(this, arguments);\n } catch (e) {\n TraceKit.report(e);\n throw e;\n }\n }\n return wrapped;\n};\n\n/**\n * Cross-browser processing of unhandled exceptions\n *\n * Syntax:\n * ```js\n * TraceKit.report.subscribe(function(stackInfo) { ... })\n * TraceKit.report.unsubscribe(function(stackInfo) { ... })\n * TraceKit.report(exception)\n * try { ...code... } catch(ex) { TraceKit.report(ex); }\n * ```\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Requires TraceKit.computeStackTrace.\n *\n * Tries to catch all unhandled exceptions and report them to the\n * subscribed handlers. Please note that TraceKit.report will rethrow the\n * exception. This is REQUIRED in order to get a useful stack trace in IE.\n * If the exception does not reach the top of the browser, you will only\n * get a stack trace from the point where TraceKit.report was called.\n *\n * Handlers receive a TraceKit.StackTrace object as described in the\n * TraceKit.computeStackTrace docs.\n *\n * @memberof TraceKit\n * @namespace\n */\nTraceKit.report = (function reportModuleWrapper() {\n var handlers = [],\n lastException = null,\n lastExceptionStack = null;\n\n /**\n * Add a crash handler.\n * @param {Function} handler\n * @memberof TraceKit.report\n */\n function subscribe(handler) {\n installGlobalHandler();\n installGlobalUnhandledRejectionHandler();\n handlers.push(handler);\n }\n\n /**\n * Remove a crash handler.\n * @param {Function} handler\n * @memberof TraceKit.report\n */\n function unsubscribe(handler) {\n for (var i = handlers.length - 1; i >= 0; --i) {\n if (handlers[i] === handler) {\n handlers.splice(i, 1);\n }\n }\n\n if (handlers.length === 0) {\n uninstallGlobalHandler();\n uninstallGlobalUnhandledRejectionHandler();\n }\n }\n\n /**\n * Dispatch stack information to all handlers.\n * @param {TraceKit.StackTrace} stack\n * @param {boolean} isWindowError Is this a top-level window error?\n * @param {Error=} error The error that's being handled (if available, null otherwise)\n * @memberof TraceKit.report\n * @throws An exception if an error occurs while calling an handler.\n */\n function notifyHandlers(stack, isWindowError, error) {\n var exception = null;\n if (isWindowError && !TraceKit.collectWindowErrors) {\n return;\n }\n for (var i in handlers) {\n if (_has(handlers, i)) {\n try {\n handlers[i](stack, isWindowError, error);\n } catch (inner) {\n exception = inner;\n }\n }\n }\n\n if (exception) {\n throw exception;\n }\n }\n\n var _oldOnerrorHandler, _onErrorHandlerInstalled;\n var _oldOnunhandledrejectionHandler, _onUnhandledRejectionHandlerInstalled;\n\n /**\n * Ensures all global unhandled exceptions are recorded.\n * Supported by Gecko and IE.\n * @param {string} message Error message.\n * @param {string} url URL of script that generated the exception.\n * @param {(number|string)} lineNo The line number at which the error occurred.\n * @param {(number|string)=} columnNo The column number at which the error occurred.\n * @param {Error=} errorObj The actual Error object.\n * @memberof TraceKit.report\n */\n function traceKitWindowOnError(message, url, lineNo, columnNo, errorObj) {\n var stack = null;\n\n if (lastExceptionStack) {\n TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message);\n \t processLastException();\n } else if (errorObj) {\n stack = TraceKit.computeStackTrace(errorObj);\n notifyHandlers(stack, true, errorObj);\n } else {\n var location = {\n 'url': url,\n 'line': lineNo,\n 'column': columnNo\n };\n\n var name;\n var msg = message; // must be new var or will modify original `arguments`\n if ({}.toString.call(message) === '[object String]') {\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n msg = groups[2];\n }\n }\n\n location.func = TraceKit.computeStackTrace.guessFunctionName(location.url, location.line);\n location.context = TraceKit.computeStackTrace.gatherContext(location.url, location.line);\n stack = {\n 'name': name,\n 'message': msg,\n 'mode': 'onerror',\n 'stack': [location]\n };\n\n notifyHandlers(stack, true, null);\n }\n\n if (_oldOnerrorHandler) {\n return _oldOnerrorHandler.apply(this, arguments);\n }\n\n return false;\n }\n\n /**\n * Ensures all unhandled rejections are recorded.\n * @param {PromiseRejectionEvent} e event.\n * @memberof TraceKit.report\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onunhandledrejection\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n */\n function traceKitWindowOnUnhandledRejection(e) {\n var stack = TraceKit.computeStackTrace(e.reason);\n notifyHandlers(stack, true, e.reason);\n }\n\n /**\n * Install a global onerror handler\n * @memberof TraceKit.report\n */\n function installGlobalHandler() {\n if (_onErrorHandlerInstalled === true) {\n return;\n }\n\n _oldOnerrorHandler = window.onerror;\n window.onerror = traceKitWindowOnError;\n _onErrorHandlerInstalled = true;\n }\n\n /**\n * Uninstall the global onerror handler\n * @memberof TraceKit.report\n */\n function uninstallGlobalHandler() {\n if (_onErrorHandlerInstalled) {\n window.onerror = _oldOnerrorHandler;\n _onErrorHandlerInstalled = false;\n }\n }\n\n /**\n * Install a global onunhandledrejection handler\n * @memberof TraceKit.report\n */\n function installGlobalUnhandledRejectionHandler() {\n if (_onUnhandledRejectionHandlerInstalled === true) {\n return;\n }\n\n _oldOnunhandledrejectionHandler = window.onunhandledrejection;\n window.onunhandledrejection = traceKitWindowOnUnhandledRejection;\n _onUnhandledRejectionHandlerInstalled = true;\n }\n\n /**\n * Uninstall the global onunhandledrejection handler\n * @memberof TraceKit.report\n */\n function uninstallGlobalUnhandledRejectionHandler() {\n if (_onUnhandledRejectionHandlerInstalled) {\n window.onunhandledrejection = _oldOnunhandledrejectionHandler;\n _onUnhandledRejectionHandlerInstalled = false;\n }\n }\n\n /**\n * Process the most recent exception\n * @memberof TraceKit.report\n */\n function processLastException() {\n var _lastExceptionStack = lastExceptionStack,\n _lastException = lastException;\n lastExceptionStack = null;\n lastException = null;\n notifyHandlers(_lastExceptionStack, false, _lastException);\n }\n\n /**\n * Reports an unhandled Error to TraceKit.\n * @param {Error} ex\n * @memberof TraceKit.report\n * @throws An exception if an incomplete stack trace is detected (old IE browsers).\n */\n function report(ex) {\n if (lastExceptionStack) {\n if (lastException === ex) {\n return; // already caught by an inner catch block, ignore\n } else {\n processLastException();\n }\n }\n\n var stack = TraceKit.computeStackTrace(ex);\n lastExceptionStack = stack;\n lastException = ex;\n\n // If the stack trace is incomplete, wait for 2 seconds for\n // slow slow IE to see if onerror occurs or not before reporting\n // this exception; otherwise, we will end up with an incomplete\n // stack trace\n setTimeout(function () {\n if (lastException === ex) {\n processLastException();\n }\n }, (stack.incomplete ? 2000 : 0));\n\n throw ex; // re-throw to propagate to the top level (and cause window.onerror)\n }\n\n report.subscribe = subscribe;\n report.unsubscribe = unsubscribe;\n return report;\n}());\n\n/**\n * An object representing a single stack frame.\n * @typedef {Object} StackFrame\n * @property {string} url The JavaScript or HTML file URL.\n * @property {string} func The function name, or empty for anonymous functions (if guessing did not work).\n * @property {string[]?} args The arguments passed to the function, if known.\n * @property {number=} line The line number, if known.\n * @property {number=} column The column number, if known.\n * @property {string[]} context An array of source code lines; the middle element corresponds to the correct line#.\n * @memberof TraceKit\n */\n\n/**\n * An object representing a JavaScript stack trace.\n * @typedef {Object} StackTrace\n * @property {string} name The name of the thrown exception.\n * @property {string} message The exception error message.\n * @property {TraceKit.StackFrame[]} stack An array of stack frames.\n * @property {string} mode 'stack', 'stacktrace', 'multiline', 'callers', 'onerror', or 'failed' -- method used to collect the stack trace.\n * @memberof TraceKit\n */\n\n/**\n * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript\n *\n * Syntax:\n * ```js\n * s = TraceKit.computeStackTrace.ofCaller([depth])\n * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below)\n * ```\n *\n * Supports:\n * - Firefox: full stack trace with line numbers and unreliable column\n * number on top frame\n * - Opera 10: full stack trace with line and column numbers\n * - Opera 9-: full stack trace with line numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the topmost stacktrace element\n * only\n * - IE: no line numbers whatsoever\n *\n * Tries to guess names of anonymous functions by looking for assignments\n * in the source code. In IE and Safari, we have to guess source file names\n * by searching for function bodies inside all page scripts. This will not\n * work for scripts that are loaded cross-domain.\n * Here be dragons: some function names may be guessed incorrectly, and\n * duplicate functions may be mismatched.\n *\n * TraceKit.computeStackTrace should only be used for tracing purposes.\n * Logging of unhandled exceptions should be done with TraceKit.report,\n * which builds on top of TraceKit.computeStackTrace and provides better\n * IE support by utilizing the window.onerror event to retrieve information\n * about the top of the stack.\n *\n * Note: In IE and Safari, no stack trace is recorded on the Error object,\n * so computeStackTrace instead walks its *own* chain of callers.\n * This means that:\n * * in Safari, some methods may be missing from the stack trace;\n * * in IE, the topmost function in the stack trace will always be the\n * caller of computeStackTrace.\n *\n * This is okay for tracing (because you are likely to be calling\n * computeStackTrace from the function you want to be the topmost element\n * of the stack trace anyway), but not okay for logging unhandled\n * exceptions (because your catch block will likely be far away from the\n * inner function that actually caused the exception).\n *\n * Tracing example:\n * ```js\n * function trace(message) {\n * var stackInfo = TraceKit.computeStackTrace.ofCaller();\n * var data = message + \"\\n\";\n * for(var i in stackInfo.stack) {\n * var item = stackInfo.stack[i];\n * data += (item.func || '[anonymous]') + \"() in \" + item.url + \":\" + (item.line || '0') + \"\\n\";\n * }\n * if (window.console)\n * console.info(data);\n * else\n * alert(data);\n * }\n * ```\n * @memberof TraceKit\n * @namespace\n */\nTraceKit.computeStackTrace = (function computeStackTraceWrapper() {\n var debug = false,\n sourceCache = {};\n\n /**\n * Attempts to retrieve source code via XMLHttpRequest, which is used\n * to look up anonymous function names.\n * @param {string} url URL of source code.\n * @return {string} Source contents.\n * @memberof TraceKit.computeStackTrace\n */\n function loadSource(url) {\n if (!TraceKit.remoteFetching) { //Only attempt request if remoteFetching is on.\n return '';\n }\n try {\n var getXHR = function() {\n try {\n return new window.XMLHttpRequest();\n } catch (e) {\n // explicitly bubble up the exception if not found\n return new window.ActiveXObject('Microsoft.XMLHTTP');\n }\n };\n\n var request = getXHR();\n request.open('GET', url, false);\n request.send('');\n return request.responseText;\n } catch (e) {\n return '';\n }\n }\n\n /**\n * Retrieves source code from the source code cache.\n * @param {string} url URL of source code.\n * @return {Array.<string>} Source contents.\n * @memberof TraceKit.computeStackTrace\n */\n function getSource(url) {\n if (typeof url !== 'string') {\n return [];\n }\n\n if (!_has(sourceCache, url)) {\n // URL needs to be able to fetched within the acceptable domain. Otherwise,\n // cross-domain errors will be triggered.\n /*\n Regex matches:\n 0 - Full Url\n 1 - Protocol\n 2 - Domain\n 3 - Port (Useful for internal applications)\n 4 - Path\n */\n var source = '';\n var domain = '';\n try { domain = window.document.domain; } catch (e) { }\n var match = /(.*)\\:\\/\\/([^:\\/]+)([:\\d]*)\\/{0,1}([\\s\\S]*)/.exec(url);\n if (match && match[2] === domain) {\n source = loadSource(url);\n }\n sourceCache[url] = source ? source.split('\\n') : [];\n }\n\n return sourceCache[url];\n }\n\n /**\n * Tries to use an externally loaded copy of source code to determine\n * the name of a function by looking at the name of the variable it was\n * assigned to, if any.\n * @param {string} url URL of source code.\n * @param {(string|number)} lineNo Line number in source code.\n * @return {string} The function name, if discoverable.\n * @memberof TraceKit.computeStackTrace\n */\n function guessFunctionName(url, lineNo) {\n var reFunctionArgNames = /function ([^(]*)\\(([^)]*)\\)/,\n reGuessFunction = /['\"]?([0-9A-Za-z$_]+)['\"]?\\s*[:=]\\s*(function|eval|new Function)/,\n line = '',\n maxLines = 10,\n source = getSource(url),\n m;\n\n if (!source.length) {\n return UNKNOWN_FUNCTION;\n }\n\n // Walk backwards from the first line in the function until we find the line which\n // matches the pattern above, which is the function definition\n for (var i = 0; i < maxLines; ++i) {\n line = source[lineNo - i] + line;\n\n if (!_isUndefined(line)) {\n if ((m = reGuessFunction.exec(line))) {\n return m[1];\n } else if ((m = reFunctionArgNames.exec(line))) {\n return m[1];\n }\n }\n }\n\n return UNKNOWN_FUNCTION;\n }\n\n /**\n * Retrieves the surrounding lines from where an exception occurred.\n * @param {string} url URL of source code.\n * @param {(string|number)} line Line number in source code to center around for context.\n * @return {?Array.<string>} Lines of source code.\n * @memberof TraceKit.computeStackTrace\n */\n function gatherContext(url, line) {\n var source = getSource(url);\n\n if (!source.length) {\n return null;\n }\n\n var context = [],\n // linesBefore & linesAfter are inclusive with the offending line.\n // if linesOfContext is even, there will be one extra line\n // *before* the offending line.\n linesBefore = Math.floor(TraceKit.linesOfContext / 2),\n // Add one extra line if linesOfContext is odd\n linesAfter = linesBefore + (TraceKit.linesOfContext % 2),\n start = Math.max(0, line - linesBefore - 1),\n end = Math.min(source.length, line + linesAfter - 1);\n\n line -= 1; // convert to 0-based index\n\n for (var i = start; i < end; ++i) {\n if (!_isUndefined(source[i])) {\n context.push(source[i]);\n }\n }\n\n return context.length > 0 ? context : null;\n }\n\n /**\n * Escapes special characters, except for whitespace, in a string to be\n * used inside a regular expression as a string literal.\n * @param {string} text The string.\n * @return {string} The escaped string literal.\n * @memberof TraceKit.computeStackTrace\n */\n function escapeRegExp(text) {\n return text.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#]/g, '\\\\$&');\n }\n\n /**\n * Escapes special characters in a string to be used inside a regular\n * expression as a string literal. Also ensures that HTML entities will\n * be matched the same as their literal friends.\n * @param {string} body The string.\n * @return {string} The escaped string.\n * @memberof TraceKit.computeStackTrace\n */\n function escapeCodeAsRegExpForMatchingInsideHTML(body) {\n return escapeRegExp(body).replace('<', '(?:<|<)').replace('>', '(?:>|>)').replace('&', '(?:&|&)').replace('\"', '(?:\"|")').replace(/\\s+/g, '\\\\s+');\n }\n\n /**\n * Determines where a code fragment occurs in the source code.\n * @param {RegExp} re The function definition.\n * @param {Array.<string>} urls A list of URLs to search.\n * @return {?Object.<string, (string|number)>} An object containing\n * the url, line, and column number of the defined function.\n * @memberof TraceKit.computeStackTrace\n */\n function findSourceInUrls(re, urls) {\n var source, m;\n for (var i = 0, j = urls.length; i < j; ++i) {\n if ((source = getSource(urls[i])).length) {\n source = source.join('\\n');\n if ((m = re.exec(source))) {\n\n return {\n 'url': urls[i],\n 'line': source.substring(0, m.index).split('\\n').length,\n 'column': m.index - source.lastIndexOf('\\n', m.index) - 1\n };\n }\n }\n }\n\n return null;\n }\n\n /**\n * Determines at which column a code fragment occurs on a line of the\n * source code.\n * @param {string} fragment The code fragment.\n * @param {string} url The URL to search.\n * @param {(string|number)} line The line number to examine.\n * @return {?number} The column number.\n * @memberof TraceKit.computeStackTrace\n */\n function findSourceInLine(fragment, url, line) {\n var source = getSource(url),\n re = new RegExp('\\\\b' + escapeRegExp(fragment) + '\\\\b'),\n m;\n\n line -= 1;\n\n if (source && source.length > line && (m = re.exec(source[line]))) {\n return m.index;\n }\n\n return null;\n }\n\n /**\n * Determines where a function was defined within the source code.\n * @param {(Function|string)} func A function reference or serialized\n * function definition.\n * @return {?Object.<string, (string|number)>} An object containing\n * the url, line, and column number of the defined function.\n * @memberof TraceKit.computeStackTrace\n */\n function findSourceByFunctionBody(func) {\n if (_isUndefined(window && window.document)) {\n return;\n }\n\n var urls = [window.location.href],\n scripts = window.document.getElementsByTagName('script'),\n body,\n code = '' + func,\n codeRE = /^function(?:\\s+([\\w$]+))?\\s*\\(([\\w\\s,]*)\\)\\s*\\{\\s*(\\S[\\s\\S]*\\S)\\s*\\}\\s*$/,\n eventRE = /^function on([\\w$]+)\\s*\\(event\\)\\s*\\{\\s*(\\S[\\s\\S]*\\S)\\s*\\}\\s*$/,\n re,\n parts,\n result;\n\n for (var i = 0; i < scripts.length; ++i) {\n var script = scripts[i];\n if (script.src) {\n urls.push(script.src);\n }\n }\n\n if (!(parts = codeRE.exec(code))) {\n re = new RegExp(escapeRegExp(code).replace(/\\s+/g, '\\\\s+'));\n }\n\n // not sure if this is really necessary, but I don’t have a test\n // corpus large enough to confirm that and it was in the original.\n else {\n var name = parts[1] ? '\\\\s+' + parts[1] : '',\n args = parts[2].split(',').join('\\\\s*,\\\\s*');\n\n body = escapeRegExp(parts[3]).replace(/;$/, ';?'); // semicolon is inserted if the function ends with a comment.replace(/\\s+/g, '\\\\s+');\n re = new RegExp('function' + name + '\\\\s*\\\\(\\\\s*' + args + '\\\\s*\\\\)\\\\s*{\\\\s*' + body + '\\\\s*}');\n }\n\n // look for a normal function definition\n if ((result = findSourceInUrls(re, urls))) {\n return result;\n }\n\n // look for an old-school event handler function\n if ((parts = eventRE.exec(code))) {\n var event = parts[1];\n body = escapeCodeAsRegExpForMatchingInsideHTML(parts[2]);\n\n // look for a function defined in HTML as an onXXX handler\n re = new RegExp('on' + event + '=[\\\\\\'\"]\\\\s*' + body + '\\\\s*[\\\\\\'\"]', 'i');\n\n if ((result = findSourceInUrls(re, urls[0]))) {\n return result;\n }\n\n // look for ???\n re = new RegExp(body);\n\n if ((result = findSourceInUrls(re, urls))) {\n return result;\n }\n }\n\n return null;\n }\n\n // Contents of Exception in various browsers.\n //\n // SAFARI:\n // ex.message = Can't find variable: qq\n // ex.line = 59\n // ex.sourceId = 580238192\n // ex.sourceURL = http://...\n // ex.expressionBeginOffset = 96\n // ex.expressionCaretOffset = 98\n // ex.expressionEndOffset = 98\n // ex.name = ReferenceError\n //\n // FIREFOX:\n // ex.message = qq is not defined\n // ex.fileName = http://...\n // ex.lineNumber = 59\n // ex.columnNumber = 69\n // ex.stack = ...stack trace... (see the example below)\n // ex.name = ReferenceError\n //\n // CHROME:\n // ex.message = qq is not defined\n // ex.name = ReferenceError\n // ex.type = not_defined\n // ex.arguments = ['aa']\n // ex.stack = ...stack trace...\n //\n // INTERNET EXPLORER:\n // ex.message = ...\n // ex.name = ReferenceError\n //\n // OPERA:\n // ex.message = ...message... (see the example below)\n // ex.name = ReferenceError\n // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message)\n // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'\n\n /**\n * Computes stack trace information from the stack property.\n * Chrome and Gecko use this property.\n * @param {Error} ex\n * @return {?TraceKit.StackTrace} Stack trace information.\n * @memberof TraceKit.computeStackTrace\n */\n function computeStackTraceFromStackProp(ex) {\n if (!ex.stack) {\n return null;\n }\n\n var chrome = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,\n gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i,\n winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,\n\n // Used to additionally parse URL/line/column from eval frames\n isEval,\n geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i,\n chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/,\n\n lines = ex.stack.split('\\n'),\n stack = [],\n submatch,\n parts,\n element,\n reference = /^(.*) is undefined$/.exec(ex.message);\n\n for (var i = 0, j = lines.length; i < j; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n element = {\n 'url': !isNative ? parts[2] : null,\n 'func': parts[1] || UNKNOWN_FUNCTION,\n 'args': isNative ? [parts[2]] : [],\n 'line': parts[3] ? +parts[3] : null,\n 'column': parts[4] ? +parts[4] : null\n };\n } else if ( parts = winjs.exec(lines[i]) ) {\n element = {\n 'url': parts[2],\n 'func': parts[1] || UNKNOWN_FUNCTION,\n 'args': [],\n 'line': +parts[3],\n 'column': parts[4] ? +parts[4] : null\n };\n } else if ((parts = gecko.exec(lines[i]))) {\n isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = null; // no column when eval\n } else if (i === 0 && !parts[5] && !_isUndefined(ex.columnNumber)) {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = ex.columnNumber + 1;\n }\n element = {\n 'url': parts[3],\n 'func': parts[1] || UNKNOWN_FUNCTION,\n 'args': parts[2] ? parts[2].split(',') : [],\n 'line': parts[4] ? +parts[4] : null,\n 'column': parts[5] ? +parts[5] : null\n };\n } else {\n continue;\n }\n\n if (!element.func && element.line) {\n element.func = guessFunctionName(element.url, element.line);\n }\n\n element.context = element.line ? gatherContext(element.url, element.line) : null;\n stack.push(element);\n }\n\n if (!stack.length) {\n return null;\n }\n\n if (stack[0] && stack[0].line && !stack[0].column && reference) {\n stack[0].column = findSourceInLine(reference[1], stack[0].url, stack[0].line);\n }\n\n return {\n 'mode': 'stack',\n 'name': ex.name,\n 'message': ex.message,\n 'stack': stack\n };\n }\n\n /**\n * Computes stack trace information from the stacktrace property.\n * Opera 10+ uses this property.\n * @param {Error} ex\n * @return {?TraceKit.StackTrace} Stack trace information.\n * @memberof TraceKit.computeStackTrace\n */\n function computeStackTraceFromStacktraceProp(ex) {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n var stacktrace = ex.stacktrace;\n if (!stacktrace) {\n return;\n }\n\n var opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i,\n opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^\\)]+))\\((.*)\\))? in (.*):\\s*$/i,\n lines = stacktrace.split('\\n'),\n stack = [],\n parts;\n\n for (var line = 0; line < lines.length; line += 2) {\n var element = null;\n if ((parts = opera10Regex.exec(lines[line]))) {\n element = {\n 'url': parts[2],\n 'line': +parts[1],\n 'column': null,\n 'func': parts[3],\n 'args':[]\n };\n } else if ((parts = opera11Regex.exec(lines[line]))) {\n element = {\n 'url': parts[6],\n 'line': +parts[1],\n 'column': +parts[2],\n 'func': parts[3] || parts[4],\n 'args': parts[5] ? parts[5].split(',') : []\n };\n }\n\n if (element) {\n if (!element.func && element.line) {\n element.func = guessFunctionName(element.url, element.line);\n }\n if (element.line) {\n try {\n element.context = gatherContext(element.url, element.line);\n } catch (exc) {}\n }\n\n if (!element.context) {\n element.context = [lines[line + 1]];\n }\n\n stack.push(element);\n }\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n 'mode': 'stacktrace',\n 'name': ex.name,\n 'message': ex.message,\n 'stack': stack\n };\n }\n\n /**\n * NOT TESTED.\n * Computes stack trace information from an error message that includes\n * the stack trace.\n * Opera 9 and earlier use this method if the option to show stack\n * traces is turned on in opera:config.\n * @param {Error} ex\n * @return {?TraceKit.StackTrace} Stack information.\n * @memberof TraceKit.computeStackTrace\n */\n function computeStackTraceFromOperaMultiLineMessage(ex) {\n // TODO: Clean this function up\n // Opera includes a stack trace into the exception message. An example is:\n //\n // Statement on line 3: Undefined variable: undefinedFunc\n // Backtrace:\n // Line 3 of linked script file://localhost/Users/andreyvit/Projects/TraceKit/javascript-client/sample.js: In function zzz\n // undefinedFunc(a);\n // Line 7 of inline#1 script in file://localhost/Users/andreyvit/Projects/TraceKit/javascript-client/sample.html: In function yyy\n // zzz(x, y, z);\n // Line 3 of inline#1 script in file://localhost/Users/andreyvit/Projects/TraceKit/javascript-client/sample.html: In function xxx\n // yyy(a, a, a);\n // Line 1 of function script\n // try { xxx('hi'); return false; } catch(ex) { TraceKit.report(ex); }\n // ...\n\n var lines = ex.message.split('\\n');\n if (lines.length < 4) {\n return null;\n }\n\n var lineRE1 = /^\\s*Line (\\d+) of linked script ((?:file|https?|blob)\\S+)(?:: in function (\\S+))?\\s*$/i,\n lineRE2 = /^\\s*Line (\\d+) of inline#(\\d+) script in ((?:file|https?|blob)\\S+)(?:: in function (\\S+))?\\s*$/i,\n lineRE3 = /^\\s*Line (\\d+) of function script\\s*$/i,\n stack = [],\n scripts = (window && window.document && window.document.getElementsByTagName('script')),\n inlineScriptBlocks = [],\n parts;\n\n for (var s in scripts) {\n if (_has(scripts, s) && !scripts[s].src) {\n inlineScriptBlocks.push(scripts[s]);\n }\n }\n\n for (var line = 2; line < lines.length; line += 2) {\n var item = null;\n if ((parts = lineRE1.exec(lines[line]))) {\n item = {\n 'url': parts[2],\n 'func': parts[3],\n 'args': [],\n 'line': +parts[1],\n 'column': null\n };\n } else if ((parts = lineRE2.exec(lines[line]))) {\n item = {\n 'url': parts[3],\n 'func': parts[4],\n 'args': [],\n 'line': +parts[1],\n 'column': null // TODO: Check to see if inline#1 (+parts[2]) points to the script number or column number.\n };\n var relativeLine = (+parts[1]); // relative to the start of the <SCRIPT> block\n var script = inlineScriptBlocks[parts[2] - 1];\n if (script) {\n var source = getSource(item.url);\n if (source) {\n source = source.join('\\n');\n var pos = source.indexOf(script.innerText);\n if (pos >= 0) {\n item.line = relativeLine + source.substring(0, pos).split('\\n').length;\n }\n }\n }\n } else if ((parts = lineRE3.exec(lines[line]))) {\n var url = window.location.href.replace(/#.*$/, '');\n var re = new RegExp(escapeCodeAsRegExpForMatchingInsideHTML(lines[line + 1]));\n var src = findSourceInUrls(re, [url]);\n item = {\n 'url': url,\n 'func': '',\n 'args': [],\n 'line': src ? src.line : parts[1],\n 'column': null\n };\n }\n\n if (item) {\n if (!item.func) {\n item.func = guessFunctionName(item.url, item.line);\n }\n var context = gatherContext(item.url, item.line);\n var midline = (context ? context[Math.floor(context.length / 2)] : null);\n if (context && midline.replace(/^\\s*/, '') === lines[line + 1].replace(/^\\s*/, '')) {\n item.context = context;\n } else {\n // if (context) alert(\"Context mismatch. Correct midline:\\n\" + lines[i+1] + \"\\n\\nMidline:\\n\" + midline + \"\\n\\nContext:\\n\" + context.join(\"\\n\") + \"\\n\\nURL:\\n\" + item.url);\n item.context = [lines[line + 1]];\n }\n stack.push(item);\n }\n }\n if (!stack.length) {\n return null; // could not parse multiline exception message as Opera stack trace\n }\n\n return {\n 'mode': 'multiline',\n 'name': ex.name,\n 'message': lines[0],\n 'stack': stack\n };\n }\n\n /**\n * Adds information about the first frame to incomplete stack traces.\n * Safari and IE require this to get complete data on the first frame.\n * @param {TraceKit.StackTrace} stackInfo Stack trace information from\n * one of the compute* methods.\n * @param {string} url The URL of the script that caused an error.\n * @param {(number|string)} lineNo The line number of the script that\n * caused an error.\n * @param {string=} message The error generated by the browser, which\n * hopefully contains the name of the object that caused the error.\n * @return {boolean} Whether or not the stack information was\n * augmented.\n * @memberof TraceKit.computeStackTrace\n */\n function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {\n var initial = {\n 'url': url,\n 'line': lineNo\n };\n\n if (initial.url && initial.line) {\n stackInfo.incomplete = false;\n\n if (!initial.func) {\n initial.func = guessFunctionName(initial.url, initial.line);\n }\n\n if (!initial.context) {\n initial.context = gatherContext(initial.url, initial.line);\n }\n\n var reference = / '([^']+)' /.exec(message);\n if (reference) {\n initial.column = findSourceInLine(reference[1], initial.url, initial.line);\n }\n\n if (stackInfo.stack.length > 0) {\n if (stackInfo.stack[0].url === initial.url) {\n if (stackInfo.stack[0].line === initial.line) {\n return false; // already in stack trace\n } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) {\n stackInfo.stack[0].line = initial.line;\n stackInfo.stack[0].context = initial.context;\n return false;\n }\n }\n }\n\n stackInfo.stack.unshift(initial);\n stackInfo.partial = true;\n return true;\n } else {\n stackInfo.incomplete = true;\n }\n\n return false;\n }\n\n /**\n * Computes stack trace information by walking the arguments.caller\n * chain at the time the exception occurred. This will cause earlier\n * frames to be missed but is the only way to get any stack trace in\n * Safari and IE. The top frame is restored by\n * {@link augmentStackTraceWithInitialElement}.\n * @param {Error} ex\n * @return {TraceKit.StackTrace=} Stack trace information.\n * @memberof TraceKit.computeStackTrace\n */\n function computeStackTraceByWalkingCallerChain(ex, depth) {\n var functionName = /function\\s+([_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*)?\\s*\\(/i,\n stack = [],\n funcs = {},\n recursion = false,\n parts,\n item,\n source;\n\n for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) {\n if (curr === computeStackTrace || curr === TraceKit.report) {\n continue;\n }\n\n item = {\n 'url': null,\n 'func': UNKNOWN_FUNCTION,\n 'args': [],\n 'line': null,\n 'column': null\n };\n\n if (curr.name) {\n item.func = curr.name;\n } else if ((parts = functionName.exec(curr.toString()))) {\n item.func = parts[1];\n }\n\n if (typeof item.func === 'undefined') {\n try {\n item.func = parts.input.substring(0, parts.input.indexOf('{'));\n } catch (e) { }\n }\n\n if ((source = findSourceByFunctionBody(curr))) {\n item.url = source.url;\n item.line = source.line;\n\n if (item.func === UNKNOWN_FUNCTION) {\n item.func = guessFunctionName(item.url, item.line);\n }\n\n var reference = / '([^']+)' /.exec(ex.message || ex.description);\n if (reference) {\n item.column = findSourceInLine(reference[1], source.url, source.line);\n }\n }\n\n if (funcs['' + curr]) {\n recursion = true;\n }else{\n funcs['' + curr] = true;\n }\n\n stack.push(item);\n }\n\n if (depth) {\n stack.splice(0, depth);\n }\n\n var result = {\n 'mode': 'callers',\n 'name': ex.name,\n 'message': ex.message,\n 'stack': stack\n };\n augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description);\n return result;\n }\n\n /**\n * Computes a stack trace for an exception.\n * @param {Error} ex\n * @param {(string|number)=} depth\n * @memberof TraceKit.computeStackTrace\n */\n function computeStackTrace(ex, depth) {\n var stack = null;\n depth = (depth == null ? 0 : +depth);\n\n try {\n // This must be tried first because Opera 10 *destroys*\n // its stacktrace property if you try to access the stack\n // property first!!\n stack = computeStackTraceFromStacktraceProp(ex);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (debug) {\n throw e;\n }\n }\n\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (debug) {\n throw e;\n }\n }\n\n try {\n stack = computeStackTraceFromOperaMultiLineMessage(ex);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (debug) {\n throw e;\n }\n }\n\n try {\n stack = computeStackTraceByWalkingCallerChain(ex, depth + 1);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (debug) {\n throw e;\n }\n }\n\n return {\n 'name': ex.name,\n 'message': ex.message,\n 'mode': 'failed'\n };\n }\n\n /**\n * Logs a stacktrace starting from the previous call and working down.\n * @param {(number|string)=} depth How many frames deep to trace.\n * @return {TraceKit.StackTrace} Stack trace information.\n * @memberof TraceKit.computeStackTrace\n */\n function computeStackTraceOfCaller(depth) {\n depth = (depth == null ? 0 : +depth) + 1; // \"+ 1\" because \"ofCaller\" should drop one frame\n try {\n throw new Error();\n } catch (ex) {\n return computeStackTrace(ex, depth + 1);\n }\n }\n\n computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement;\n computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp;\n computeStackTrace.guessFunctionName = guessFunctionName;\n computeStackTrace.gatherContext = gatherContext;\n computeStackTrace.ofCaller = computeStackTraceOfCaller;\n computeStackTrace.getSource = getSource;\n\n return computeStackTrace;\n}());\n\n/**\n * Extends support for global error handling for asynchronous browser\n * functions. Adopted from Closure Library's errorhandler.js\n * @memberof TraceKit\n */\nTraceKit.extendToAsynchronousCallbacks = function () {\n var _helper = function _helper(fnName) {\n var originalFn = window[fnName];\n window[fnName] = function traceKitAsyncExtension() {\n // Make a copy of the arguments\n var args = _slice.call(arguments);\n var originalCallback = args[0];\n if (typeof (originalCallback) === 'function') {\n args[0] = TraceKit.wrap(originalCallback);\n }\n // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it\n // also only supports 2 argument and doesn't care what \"this\" is, so we\n // can just call the original function directly.\n if (originalFn.apply) {\n return originalFn.apply(this, args);\n } else {\n return originalFn(args[0], args[1]);\n }\n };\n };\n\n _helper('setTimeout');\n _helper('setInterval');\n};\n\n//Default options:\nif (!TraceKit.remoteFetching) {\n TraceKit.remoteFetching = true;\n}\nif (!TraceKit.collectWindowErrors) {\n TraceKit.collectWindowErrors = true;\n}\nif (!TraceKit.linesOfContext || TraceKit.linesOfContext < 1) {\n // 5 lines before, the offending line, 5 lines after\n TraceKit.linesOfContext = 11;\n}\n\n// UMD export\nif (typeof define === 'function' && define.amd) {\n define('TraceKit', [], TraceKit);\n} else if (typeof module !== 'undefined' && module.exports && window.module !== module) {\n module.exports = TraceKit;\n} else {\n window.TraceKit = TraceKit;\n}\n\n}(typeof window !== 'undefined' ? window : global));\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n var host = n === null || n === void 0 ? void 0 : n.host;\r\n return Boolean((host === null || host === void 0 ? void 0 : host.shadowRoot) === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction getCssRulesString(s) {\r\n try {\r\n var rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules).map(getCssRuleString).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction getCssRuleString(rule) {\r\n var cssStringified = rule.cssText;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n return cssStringified;\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nvar Mirror = (function () {\r\n function Mirror() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n Mirror.prototype.getId = function (n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n var id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n };\r\n Mirror.prototype.getNode = function (id) {\r\n return this.idNodeMap.get(id) || null;\r\n };\r\n Mirror.prototype.getIds = function () {\r\n return Array.from(this.idNodeMap.keys());\r\n };\r\n Mirror.prototype.getMeta = function (n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n };\r\n Mirror.prototype.removeNodeFromMap = function (n) {\r\n var _this = this;\r\n var id = this.getId(n);\r\n this.idNodeMap[\"delete\"](id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach(function (childNode) {\r\n return _this.removeNodeFromMap(childNode);\r\n });\r\n }\r\n };\r\n Mirror.prototype.has = function (id) {\r\n return this.idNodeMap.has(id);\r\n };\r\n Mirror.prototype.hasNode = function (node) {\r\n return this.nodeMetaMap.has(node);\r\n };\r\n Mirror.prototype.add = function (n, meta) {\r\n var id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n };\r\n Mirror.prototype.replace = function (id, n) {\r\n var oldNode = this.getNode(id);\r\n if (oldNode) {\r\n var meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n };\r\n Mirror.prototype.reset = function () {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n };\r\n return Mirror;\r\n}());\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction maskInputValue(_a) {\r\n var maskInputOptions = _a.maskInputOptions, tagName = _a.tagName, type = _a.type, value = _a.value, maskInputFn = _a.maskInputFn;\r\n var text = value || '';\r\n if (maskInputOptions[tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n if (maskInputFn) {\r\n text = maskInputFn(text);\r\n }\r\n else {\r\n text = '*'.repeat(text.length);\r\n }\r\n }\r\n return text;\r\n}\r\nvar ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n var ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n var chunkSize = 50;\r\n for (var x = 0; x < canvas.width; x += chunkSize) {\r\n for (var y = 0; y < canvas.height; y += chunkSize) {\r\n var getImageData = ctx.getImageData;\r\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n var pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some(function (pixel) { return pixel !== 0; }))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\n\nvar _id = 1;\r\nvar tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nvar IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n var processedTagName = element.tagName.toLowerCase().trim();\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction stringifyStyleSheet(sheet) {\r\n return sheet.cssRules\r\n ? Array.from(sheet.cssRules)\r\n .map(function (rule) { return rule.cssText || ''; })\r\n .join('')\r\n : '';\r\n}\r\nfunction extractOrigin(url) {\r\n var origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nvar canvasService;\r\nvar canvasCtx;\r\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nvar RELATIVE_PATH = /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/|#).*/;\r\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, function (origin, quote1, path1, quote2, path2, path3) {\r\n var filePath = path1 || path2 || path3;\r\n var maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (!RELATIVE_PATH.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (filePath[0] === '/') {\r\n return \"url(\".concat(maybeQuote).concat(extractOrigin(href) + filePath).concat(maybeQuote, \")\");\r\n }\r\n var stack = href.split('/');\r\n var parts = filePath.split('/');\r\n stack.pop();\r\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\r\n var part = parts_1[_i];\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return \"url(\".concat(maybeQuote).concat(stack.join('/')).concat(maybeQuote, \")\");\r\n });\r\n}\r\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var pos = 0;\r\n function collectCharacters(regEx) {\r\n var chars;\r\n var match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n var output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n var url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n var descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n var inParens = false;\r\n while (true) {\r\n var c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n var a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value) {\r\n if (name === 'src' ||\r\n (name === 'href' && value && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n value &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset' && value) {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style' && value) {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data' && value) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else {\r\n return value;\r\n }\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector) {\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (var eIndex = element.classList.length; eIndex--;) {\r\n var className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (node.nodeType !== node.ELEMENT_NODE) {\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n }\r\n for (var eIndex = node.classList.length; eIndex--;) {\r\n var className = node.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector) {\r\n var el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (typeof maskTextClass === 'string') {\r\n if (el.classList.contains(maskTextClass))\r\n return true;\r\n if (el.closest(\".\".concat(maskTextClass)))\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, maskTextClass, true))\r\n return true;\r\n }\r\n if (maskTextSelector) {\r\n if (el.matches(maskTextSelector))\r\n return true;\r\n if (el.closest(maskTextSelector))\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n var win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n var fired = false;\r\n var readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n var timer_1 = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', function () {\r\n clearTimeout(timer_1);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n var blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n var fired = false;\r\n var styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n var timer = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', function () {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c;\r\n var rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: []\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId: rootId\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc: doc,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement,\r\n rootId: rootId\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n maskTextFn: maskTextFn,\r\n rootId: rootId\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId: rootId\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId: rootId\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n var docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n var _a;\r\n var maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, maskTextFn = options.maskTextFn, rootId = options.rootId;\r\n var parentTagName = n.parentNode && n.parentNode.tagName;\r\n var textContent = n.textContent;\r\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n var isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\r\n textContent = stringifyStyleSheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot get CSS styles from text's parentNode. Error: \".concat(err), n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n if (!isStyle &&\r\n !isScript &&\r\n textContent &&\r\n needMaskingText(n, maskTextClass, maskTextSelector)) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle: isStyle,\r\n rootId: rootId\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c, rootId = options.rootId;\r\n var needBlock = _isBlockedElement(n, blockClass, blockSelector);\r\n var tagName = getValidTagName(n);\r\n var attributes = {};\r\n var len = n.attributes.length;\r\n for (var i = 0; i < len; i++) {\r\n var attr = n.attributes[i];\r\n attributes[attr.name] = transformAttribute(doc, tagName, attr.name, attr.value);\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n var stylesheet = Array.from(doc.styleSheets).find(function (s) {\r\n return s.href === n.href;\r\n });\r\n var cssText = null;\r\n if (stylesheet) {\r\n cssText = getCssRulesString(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n var cssText = getCssRulesString(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\r\n var value = n.value;\r\n var checked = n.checked;\r\n if (attributes.type !== 'radio' &&\r\n attributes.type !== 'checkbox' &&\r\n attributes.type !== 'submit' &&\r\n attributes.type !== 'button' &&\r\n value) {\r\n attributes.value = maskInputValue({\r\n type: attributes.type,\r\n tagName: tagName,\r\n value: value,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn\r\n });\r\n }\r\n else if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n var canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n var blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n var image_1 = n;\r\n var oldValue_1 = image_1.crossOrigin;\r\n image_1.crossOrigin = 'anonymous';\r\n var recordInlineImage = function () {\r\n try {\r\n canvasService.width = image_1.naturalWidth;\r\n canvasService.height = image_1.naturalHeight;\r\n canvasCtx.drawImage(image_1, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot inline img src=\".concat(image_1.currentSrc, \"! Error: \").concat(err));\r\n }\r\n oldValue_1\r\n ? (attributes.crossOrigin = oldValue_1)\r\n : image_1.removeAttribute('crossorigin');\r\n };\r\n if (image_1.complete && image_1.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image_1.onload = recordInlineImage;\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n attributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n attributes.rr_mediaCurrentTime = n.currentTime;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n var _d = n.getBoundingClientRect(), width = _d.width, height = _d.height;\r\n attributes = {\r\n \"class\": attributes[\"class\"],\r\n rr_width: \"\".concat(width, \"px\"),\r\n rr_height: \"\".concat(height, \"px\")\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName: tagName,\r\n attributes: attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock: needBlock,\r\n rootId: rootId\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'preload' &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n sn.attributes.href.endsWith('.js')))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.inlineStylesheet, inlineStylesheet = _b === void 0 ? true : _b, _c = options.maskInputOptions, maskInputOptions = _c === void 0 ? {} : _c, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _d = options.dataURLOptions, dataURLOptions = _d === void 0 ? {} : _d, _e = options.inlineImages, inlineImages = _e === void 0 ? false : _e, _f = options.recordCanvas, recordCanvas = _f === void 0 ? false : _f, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _g = options.iframeLoadTimeout, iframeLoadTimeout = _g === void 0 ? 5000 : _g, onStylesheetLoad = options.onStylesheetLoad, _h = options.stylesheetLoadTimeout, stylesheetLoadTimeout = _h === void 0 ? 5000 : _h, _j = options.keepIframeSrcFn, keepIframeSrcFn = _j === void 0 ? function () { return false; } : _j, _k = options.newlyAddedElement, newlyAddedElement = _k === void 0 ? false : _k;\r\n var _l = options.preserveWhiteSpace, preserveWhiteSpace = _l === void 0 ? true : _l;\r\n var _serializedNode = serializeNode(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n var id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n var serializedNode = Object.assign(_serializedNode, { id: id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n var recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n var shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n var bypassOptions = {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: skipChild,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n };\r\n for (var _i = 0, _m = Array.from(n.childNodes); _i < _m.length; _i++) {\r\n var childN = _m[_i];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (var _o = 0, _p = Array.from(n.shadowRoot.childNodes); _o < _p.length; _o++) {\r\n var childN = _p[_o];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, function () {\r\n var iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n serializedNode.attributes.rel === 'stylesheet') {\r\n onceStylesheetLoaded(n, function () {\r\n if (onStylesheetLoad) {\r\n var serializedLinkNode = serializeNodeWithId(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n var _a = options || {}, _b = _a.mirror, mirror = _b === void 0 ? new Mirror() : _b, _c = _a.blockClass, blockClass = _c === void 0 ? 'rr-block' : _c, _d = _a.blockSelector, blockSelector = _d === void 0 ? null : _d, _e = _a.maskTextClass, maskTextClass = _e === void 0 ? 'rr-mask' : _e, _f = _a.maskTextSelector, maskTextSelector = _f === void 0 ? null : _f, _g = _a.inlineStylesheet, inlineStylesheet = _g === void 0 ? true : _g, _h = _a.inlineImages, inlineImages = _h === void 0 ? false : _h, _j = _a.recordCanvas, recordCanvas = _j === void 0 ? false : _j, _k = _a.maskAllInputs, maskAllInputs = _k === void 0 ? false : _k, maskTextFn = _a.maskTextFn, maskInputFn = _a.maskInputFn, _l = _a.slimDOM, slimDOM = _l === void 0 ? false : _l, dataURLOptions = _a.dataURLOptions, preserveWhiteSpace = _a.preserveWhiteSpace, onSerialize = _a.onSerialize, onIframeLoad = _a.onIframeLoad, iframeLoadTimeout = _a.iframeLoadTimeout, onStylesheetLoad = _a.onStylesheetLoad, stylesheetLoadTimeout = _a.stylesheetLoadTimeout, _m = _a.keepIframeSrcFn, keepIframeSrcFn = _m === void 0 ? function () { return false; } : _m;\r\n var maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true\r\n }\r\n : maskAllInputs === false\r\n ? {\r\n password: true\r\n }\r\n : maskAllInputs;\r\n var slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: false\r\n });\r\n}\r\n\nvar commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options) {\r\n if (options === void 0) { options = {}; }\r\n var lineno = 1;\r\n var column = 1;\r\n function updatePosition(str) {\r\n var lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n var i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n var start = { line: lineno, column: column };\r\n return function (node) {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n var Position = (function () {\r\n function Position(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column: column };\r\n this.source = options.source;\r\n }\r\n return Position;\r\n }());\r\n Position.prototype.content = css;\r\n var errorsList = [];\r\n function error(msg) {\r\n var err = new Error(\"\".concat(options.source || '', \":\").concat(lineno, \":\").concat(column, \": \").concat(msg));\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n var rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList\r\n }\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n var node;\r\n var rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node !== false) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n var m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n var str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules) {\r\n if (rules === void 0) { rules = []; }\r\n var c;\r\n while ((c = comment())) {\r\n if (c !== false) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n var pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n var i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n var str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str\r\n });\r\n }\r\n function selector() {\r\n var m = match(/^([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n return trim(m[0])\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function (m) {\r\n return m.replace(/,/g, '\\u200C');\r\n })\r\n .split(/\\s*(?![^(]*\\)),\\s*/)\r\n .map(function (s) {\r\n return s.replace(/\\u200C/g, ',');\r\n });\r\n }\r\n function declaration() {\r\n var pos = position();\r\n var propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n var prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(\"property missing ':'\");\r\n }\r\n var val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n var ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : ''\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n var decls = [];\r\n if (!open()) {\r\n return error(\"missing '{'\");\r\n }\r\n comments(decls);\r\n var decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(\"missing '}'\");\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n var m;\r\n var vals = [];\r\n var pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations()\r\n });\r\n }\r\n function atkeyframes() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n var name = m[1];\r\n if (!open()) {\r\n return error(\"@keyframes missing '{'\");\r\n }\r\n var frame;\r\n var frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@keyframes missing '}'\");\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name: name,\r\n vendor: vendor,\r\n keyframes: frames\r\n });\r\n }\r\n function atsupports() {\r\n var pos = position();\r\n var m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var supports = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@supports missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@supports missing '}'\");\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports: supports,\r\n rules: style\r\n });\r\n }\r\n function athost() {\r\n var pos = position();\r\n var m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@host missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@host missing '}'\");\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style\r\n });\r\n }\r\n function atmedia() {\r\n var pos = position();\r\n var m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var media = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@media missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@media missing '}'\");\r\n }\r\n return pos({\r\n type: 'media',\r\n media: media,\r\n rules: style\r\n });\r\n }\r\n function atcustommedia() {\r\n var pos = position();\r\n var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2])\r\n });\r\n }\r\n function atpage() {\r\n var pos = position();\r\n var m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n var sel = selector() || [];\r\n if (!open()) {\r\n return error(\"@page missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@page missing '}'\");\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls\r\n });\r\n }\r\n function atdocument() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = trim(m[1]);\r\n var doc = trim(m[2]);\r\n if (!open()) {\r\n return error(\"@document missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@document missing '}'\");\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor: vendor,\r\n rules: style\r\n });\r\n }\r\n function atfontface() {\r\n var pos = position();\r\n var m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@font-face missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@font-face missing '}'\");\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls\r\n });\r\n }\r\n var atimport = _compileAtrule('import');\r\n var atcharset = _compileAtrule('charset');\r\n var atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n var re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return function () {\r\n var pos = position();\r\n var m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n var ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n var pos = position();\r\n var sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations()\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n var isNode = obj && typeof obj.type === 'string';\r\n var childParent = isNode ? obj : parent;\r\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\r\n var k = _a[_i];\r\n var value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach(function (v) {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null\r\n });\r\n }\r\n return obj;\r\n}\n\nvar tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient'\r\n};\r\nfunction getTagName(n) {\r\n var tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nvar HOVER_SELECTOR = /([^\\\\]):hover/;\r\nvar HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n var cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n var ast = parse(cssText, {\r\n silent: true\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n var selectors = [];\r\n ast.stylesheet.rules.forEach(function (rule) {\r\n if ('selectors' in rule) {\r\n (rule.selectors || []).forEach(function (selector) {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n });\r\n if (selectors.length === 0) {\r\n return cssText;\r\n }\r\n var selectorMatcher = new RegExp(selectors\r\n .filter(function (selector, index) { return selectors.indexOf(selector) === index; })\r\n .sort(function (a, b) { return b.length - a.length; })\r\n .map(function (selector) {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n var result = cssText.replace(selectorMatcher, function (selector) {\r\n var newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return \"\".concat(selector, \", \").concat(newSelector);\r\n });\r\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n var stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass: stylesWithHoverClass\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n var tagName = getTagName(n);\r\n var node_1;\r\n if (n.isSVG) {\r\n node_1 = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n node_1 = doc.createElement(tagName);\r\n }\r\n var specialAttributes = {};\r\n for (var name_1 in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name_1)) {\r\n continue;\r\n }\r\n var value = n.attributes[name_1];\r\n if (tagName === 'option' &&\r\n name_1 === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name_1.startsWith('rr_')) {\r\n specialAttributes[name_1] = value;\r\n continue;\r\n }\r\n var isTextarea = tagName === 'textarea' && name_1 === 'value';\r\n var isRemoteOrDynamicCss = tagName === 'style' && name_1 === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = addHoverClass(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n var child = doc.createTextNode(value);\r\n for (var _i = 0, _a = Array.from(node_1.childNodes); _i < _a.length; _i++) {\r\n var c = _a[_i];\r\n if (c.nodeType === node_1.TEXT_NODE) {\r\n node_1.removeChild(c);\r\n }\r\n }\r\n node_1.appendChild(child);\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name_1 === 'xlink:href') {\r\n node_1.setAttributeNS('http://www.w3.org/1999/xlink', name_1, value.toString());\r\n }\r\n else if (name_1 === 'onload' ||\r\n name_1 === 'onclick' ||\r\n name_1.substring(0, 7) === 'onmouse') {\r\n node_1.setAttribute('_' + name_1, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name_1 === 'content') {\r\n node_1.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'preload' &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node_1.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node_1.setAttribute(name_1, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n var _loop_1 = function (name_2) {\r\n var value = specialAttributes[name_2];\r\n if (tagName === 'canvas' && name_2 === 'rr_dataURL') {\r\n var image_1 = document.createElement('img');\r\n image_1.onload = function () {\r\n var ctx = node_1.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image_1, 0, 0, image_1.width, image_1.height);\r\n }\r\n };\r\n image_1.src = value.toString();\r\n if (node_1.RRNodeType)\r\n node_1.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name_2 === 'rr_dataURL') {\r\n var image = node_1;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name_2 === 'rr_width') {\r\n node_1.style.width = value.toString();\r\n }\r\n else if (name_2 === 'rr_height') {\r\n node_1.style.height = value.toString();\r\n }\r\n else if (name_2 === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node_1.currentTime = value;\r\n }\r\n else if (name_2 === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node_1\r\n .play()[\"catch\"](function (e) { return console.warn('media playback error', e); });\r\n break;\r\n case 'paused':\r\n node_1.pause();\r\n break;\r\n }\r\n }\r\n };\r\n for (var name_2 in specialAttributes) {\r\n _loop_1(name_2);\r\n }\r\n if (n.isShadowHost) {\r\n if (!node_1.shadowRoot) {\r\n node_1.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node_1.shadowRoot.firstChild) {\r\n node_1.shadowRoot.removeChild(node_1.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node_1;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? addHoverClass(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n var doc = options.doc, mirror = options.mirror, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.hackCss, hackCss = _b === void 0 ? true : _b, afterAppend = options.afterAppend, cache = options.cache;\r\n var node = buildNode(n, { doc: doc, hackCss: hackCss, cache: cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n }\r\n else {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n for (var _i = 0, _c = n.childNodes; _i < _c.length; _i++) {\r\n var childN = _c[_i];\r\n var childNode = buildNodeWithSN(childN, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n continue;\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (var _i = 0, _a = mirror.getIds(); _i < _a.length; _i++) {\r\n var id = _a[_i];\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n var n = mirror.getMeta(node);\r\n if ((n === null || n === void 0 ? void 0 : n.type) !== NodeType.Element) {\r\n return;\r\n }\r\n var el = node;\r\n for (var name_3 in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name_3) &&\r\n name_3.startsWith('rr_'))) {\r\n continue;\r\n }\r\n var value = n.attributes[name_3];\r\n if (name_3 === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name_3 === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n var doc = options.doc, onVisit = options.onVisit, _a = options.hackCss, hackCss = _a === void 0 ? true : _a, afterAppend = options.afterAppend, cache = options.cache, _b = options.mirror, mirror = _b === void 0 ? new Mirror() : _b;\r\n var node = buildNodeWithSN(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n visit(mirror, function (visitedNode) {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, classMatchesRegex, createCache, createMirror, genId, getCssRuleString, getCssRulesString, is2DCanvasBlank, isCSSImportRule, isElement, isNativeShadowDom, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, transformAttribute };\n","import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch (_a) {\r\n return () => {\r\n };\r\n }\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (!el)\r\n return false;\r\n if (typeof blockClass === 'string') {\r\n if (el.classList.contains(blockClass))\r\n return true;\r\n if (checkAncestors && el.closest('.' + blockClass) !== null)\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, blockClass, checkAncestors))\r\n return true;\r\n }\r\n if (blockSelector) {\r\n if (node.matches(blockSelector))\r\n return true;\r\n if (checkAncestors && el.closest(blockSelector) !== null)\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n const queueNodeMap = {};\r\n const putIntoMap = (m, parent) => {\r\n const nodeInTree = {\r\n value: m,\r\n parent,\r\n children: [],\r\n };\r\n queueNodeMap[m.node.id] = nodeInTree;\r\n return nodeInTree;\r\n };\r\n const queueNodeTrees = [];\r\n for (const mutation of queue) {\r\n const { nextId, parentId } = mutation;\r\n if (nextId && nextId in queueNodeMap) {\r\n const nextInTree = queueNodeMap[nextId];\r\n if (nextInTree.parent) {\r\n const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n }\r\n else {\r\n const idx = queueNodeTrees.indexOf(nextInTree);\r\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n }\r\n continue;\r\n }\r\n if (parentId in queueNodeMap) {\r\n const parentInTree = queueNodeMap[parentId];\r\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n continue;\r\n }\r\n queueNodeTrees.push(putIntoMap(mutation, null));\r\n }\r\n return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n cb(tree.value);\r\n for (let i = tree.children.length - 1; i >= 0; i--) {\r\n iterateResolveTree(tree.children[i], cb);\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n var _a, _b;\r\n const frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.frameElement;\r\n if (!frameElement || frameElement === rootIframe) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n relativeScale: 1,\r\n absoluteScale: 1,\r\n };\r\n }\r\n const frameDimension = frameElement.getBoundingClientRect();\r\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n return {\r\n x: frameDimension.x * frameBaseDimension.relativeScale +\r\n frameBaseDimension.x,\r\n y: frameDimension.y * frameBaseDimension.relativeScale +\r\n frameBaseDimension.y,\r\n relativeScale,\r\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n };\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n const rule = rules[position[0]];\r\n if (position.length === 1) {\r\n return rule;\r\n }\r\n else {\r\n return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n const positions = [...nestedIndex];\r\n const index = positions.pop();\r\n return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n const idSet = new Set();\r\n const uniqueMutations = [];\r\n for (let i = mutations.length; i--;) {\r\n const mutation = mutations[i];\r\n if (!idSet.has(mutation.id)) {\r\n uniqueMutations.push(mutation);\r\n idSet.add(mutation.id);\r\n }\r\n }\r\n return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n var _a;\r\n return (_a = this.styleIDMap.get(stylesheet)) !== null && _a !== void 0 ? _a : -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\n\nexport { StyleSheetMirror, _mirror, getBaseDimension, getNestedRule, getPositionsAndIndex, getWindowHeight, getWindowWidth, hasShadowRoot, hookSetter, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, isTouchEvent, iterateResolveTree, on, patch, polyfill, queueToResolveTrees, throttle, uniqueTextMutations };\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n var _a, _b, _c, _d;\r\n let shadowHost = null;\r\n if (((_b = (_a = n.getRootNode) === null || _a === void 0 ? void 0 : _a.call(n)) === null || _b === void 0 ? void 0 : _b.nodeType) === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n let rootShadowHost = shadowHost;\r\n while (((_d = (_c = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _c === void 0 ? void 0 : _c.call(rootShadowHost)) === null || _d === void 0 ? void 0 : _d.nodeType) ===\r\n Node.DOCUMENT_FRAGMENT_NODE &&\r\n rootShadowHost.getRootNode().host)\r\n rootShadowHost = rootShadowHost.getRootNode().host;\r\n const notInDoc = !this.doc.contains(n) &&\r\n (!rootShadowHost || !this.doc.contains(rootShadowHost));\r\n if (!n.parentNode || notInDoc) {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(shadowHost)\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskTextClass: this.maskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of Array.from(this.movedSet.values())) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of Array.from(this.addedSet.values())) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n for (let index = addList.length - 1; index >= 0; index--) {\r\n const _node = addList.get(index);\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => ({\r\n id: this.mirror.getId(text.node),\r\n value: text.value,\r\n }))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => ({\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attribute.attributes,\r\n }))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value)\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let value = m.target.getAttribute(m.attributeName);\r\n if (m.attributeName === 'value') {\r\n value = maskInputValue({\r\n maskInputOptions: this.maskInputOptions,\r\n tagName: m.target.tagName,\r\n type: m.target.getAttribute('type'),\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributes.find((a) => a.node === m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n m.attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n m.attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n };\r\n this.attributes.push(item);\r\n }\r\n if (m.attributeName === 'style') {\r\n const old = this.doc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n if (item.attributes.style === undefined ||\r\n item.attributes.style === null) {\r\n item.attributes.style = {};\r\n }\r\n const styleObj = item.attributes.style;\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n styleObj[pname] = newValue;\r\n }\r\n else {\r\n styleObj[pname] = [newValue, newPriority];\r\n }\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n styleObj[pname] = false;\r\n }\r\n }\r\n }\r\n else {\r\n item.attributes[m.attributeName] = transformAttribute(this.doc, target.tagName, m.attributeName, value);\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\r\n return;\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, false))\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'maskTextClass',\r\n 'maskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","import { maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowHeight, getWindowWidth, hookSetter, patch, isTouchEvent } from '../utils.js';\nimport { MouseInteractions, IncrementalSource } from '../../../types/dist/types.js';\nimport MutationBuffer from './mutation.js';\n\nconst mutationBuffers = [];\r\nconst isCSSGroupingRuleSupported = typeof CSSGroupingRule !== 'undefined';\r\nconst isCSSMediaRuleSupported = typeof CSSMediaRule !== 'undefined';\r\nconst isCSSSupportsRuleSupported = typeof CSSSupportsRule !== 'undefined';\r\nconst isCSSConditionRuleSupported = typeof CSSConditionRule !== 'undefined';\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n return event.target;\r\n }\r\n catch (_a) {\r\n return event.target;\r\n }\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n var _a, _b;\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(mutationBuffer.processMutations.bind(mutationBuffer));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }, callbackThreshold);\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = Date.now();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: Date.now() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource.MouseMove\r\n : IncrementalSource.TouchMove);\r\n }, threshold, {\r\n trailing: false,\r\n });\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const e = isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n mouseInteractionCb({\r\n type: MouseInteractions[eventKey],\r\n id,\r\n x: clientX,\r\n y: clientY,\r\n });\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n const eventName = eventKey.toLowerCase();\r\n const handler = getHandler(eventKey);\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc) {\r\n const scrollEl = (doc.scrollingElement || doc.documentElement);\r\n scrollCb({\r\n id,\r\n x: scrollEl.scrollLeft,\r\n y: scrollEl.scrollTop,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }, sampling.scroll || 100);\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb, }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = throttle(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }, 200);\r\n return on('resize', updateDimension, window);\r\n}\r\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\r\n const value = Object.assign({}, v);\r\n if (!enable)\r\n delete value.userTriggered;\r\n return value;\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, ignoreClass, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n if (target && target.tagName === 'OPTION')\r\n target = target.parentElement;\r\n if (!target ||\r\n !target.tagName ||\r\n INPUT_TAGS.indexOf(target.tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const type = target.type;\r\n if (target.classList.contains(ignoreClass)) {\r\n return;\r\n }\r\n let text = target.value;\r\n let isChecked = false;\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n else if (maskInputOptions[target.tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n text = maskInputValue({\r\n maskInputOptions,\r\n tagName: target.tagName,\r\n type,\r\n value: text,\r\n maskInputFn,\r\n });\r\n }\r\n cbWithDedup(target, wrapEventWithUserTriggeredFlag({ text, isChecked, userTriggered }, userTriggeredOnInput));\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n cbWithDedup(el, wrapEventWithUserTriggeredFlag({\r\n text: el.value,\r\n isChecked: !isChecked,\r\n userTriggered: false,\r\n }, userTriggeredOnInput));\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n inputCb(Object.assign(Object.assign({}, v), { id }));\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, eventHandler, doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n eventHandler({ target: this });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((isCSSGroupingRuleSupported &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (isCSSMediaRuleSupported &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (isCSSSupportsRuleSupported &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (isCSSConditionRuleSupported &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return insertRule.apply(this, [rule, index]);\r\n };\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return deleteRule.apply(this, [index]);\r\n };\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return replace.apply(this, [text]);\r\n };\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return replaceSync.apply(this, [text]);\r\n };\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (isCSSGroupingRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (isCSSMediaRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (isCSSConditionRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (isCSSSupportsRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(this),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].insertRule.apply(this, [rule, index]);\r\n };\r\n type.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(this), index] },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].deleteRule.apply(this, [index]);\r\n };\r\n });\r\n return () => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n };\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n var _a, _b, _c;\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? (_a = host.defaultView) === null || _a === void 0 ? void 0 : _a.Document\r\n : (_c = (_b = host.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView) === null || _c === void 0 ? void 0 : _c.ShadowRoot;\r\n const originalPropertyDescriptor = Object.getOwnPropertyDescriptor(patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype, 'adoptedStyleSheets');\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n var _a;\r\n return (_a = originalPropertyDescriptor.get) === null || _a === void 0 ? void 0 : _a.call(this);\r\n },\r\n set(sheets) {\r\n var _a;\r\n const result = (_a = originalPropertyDescriptor.set) === null || _a === void 0 ? void 0 : _a.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return () => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n };\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = function (property, value, priority) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(this, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return setProperty.apply(this, [property, value, priority]);\r\n };\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = function (property) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(this, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return removeProperty.apply(this, [property]);\r\n };\r\n return () => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n };\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, mirror, sampling, }) {\r\n const handler = (type) => throttle((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate, } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n });\r\n }, sampling.media || 500);\r\n const handlers = [\r\n on('play', handler(0)),\r\n on('pause', handler(1)),\r\n on('seeked', handler(2)),\r\n on('volumechange', handler(3)),\r\n on('ratechange', handler(4)),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }, 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\r\n let collapsed = true;\r\n const updateSelection = () => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && (selection === null || selection === void 0 ? void 0 : selection.isCollapsed)))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n };\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction mergeHooks(o, hooks) {\r\n const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, selectionCb, } = o;\r\n o.mutationCb = (...p) => {\r\n if (hooks.mutation) {\r\n hooks.mutation(...p);\r\n }\r\n mutationCb(...p);\r\n };\r\n o.mousemoveCb = (...p) => {\r\n if (hooks.mousemove) {\r\n hooks.mousemove(...p);\r\n }\r\n mousemoveCb(...p);\r\n };\r\n o.mouseInteractionCb = (...p) => {\r\n if (hooks.mouseInteraction) {\r\n hooks.mouseInteraction(...p);\r\n }\r\n mouseInteractionCb(...p);\r\n };\r\n o.scrollCb = (...p) => {\r\n if (hooks.scroll) {\r\n hooks.scroll(...p);\r\n }\r\n scrollCb(...p);\r\n };\r\n o.viewportResizeCb = (...p) => {\r\n if (hooks.viewportResize) {\r\n hooks.viewportResize(...p);\r\n }\r\n viewportResizeCb(...p);\r\n };\r\n o.inputCb = (...p) => {\r\n if (hooks.input) {\r\n hooks.input(...p);\r\n }\r\n inputCb(...p);\r\n };\r\n o.mediaInteractionCb = (...p) => {\r\n if (hooks.mediaInteaction) {\r\n hooks.mediaInteaction(...p);\r\n }\r\n mediaInteractionCb(...p);\r\n };\r\n o.styleSheetRuleCb = (...p) => {\r\n if (hooks.styleSheetRule) {\r\n hooks.styleSheetRule(...p);\r\n }\r\n styleSheetRuleCb(...p);\r\n };\r\n o.styleDeclarationCb = (...p) => {\r\n if (hooks.styleDeclaration) {\r\n hooks.styleDeclaration(...p);\r\n }\r\n styleDeclarationCb(...p);\r\n };\r\n o.canvasMutationCb = (...p) => {\r\n if (hooks.canvasMutation) {\r\n hooks.canvasMutation(...p);\r\n }\r\n canvasMutationCb(...p);\r\n };\r\n o.fontCb = (...p) => {\r\n if (hooks.font) {\r\n hooks.font(...p);\r\n }\r\n fontCb(...p);\r\n };\r\n o.selectionCb = (...p) => {\r\n if (hooks.selection) {\r\n hooks.selection(...p);\r\n }\r\n selectionCb(...p);\r\n };\r\n}\r\nfunction initObservers(o, hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n mergeHooks(o, hooks);\r\n const mutationObserver = initMutationObserver(o, o.doc);\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o);\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n const styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n const fontObserver = o.collectFonts\r\n ? initFontObserver(o)\r\n : () => {\r\n };\r\n const selectionObserver = initSelectionObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return () => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n pluginHandlers.forEach((h) => h());\r\n };\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\n\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n var _a;\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n if (message.data.type === 'rrweb') {\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, message.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, message.data.isCheckout);\r\n }\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n var _a;\r\n switch (e.type) {\r\n case EventType.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType.Meta:\r\n case EventType.Load:\r\n case EventType.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType.Plugin: {\r\n return e;\r\n }\r\n case EventType.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource.MediaInteraction:\r\n case IncrementalSource.MouseInteraction:\r\n case IncrementalSource.Scroll:\r\n case IncrementalSource.CanvasMutation:\r\n case IncrementalSource.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource.Font: {\r\n return e;\r\n }\r\n case IncrementalSource.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n (_a = e.data.styles) === null || _a === void 0 ? void 0 : _a.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n}\n\nexport { IframeManager };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { patch } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restorePatches = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n const manager = this;\r\n this.restorePatches.push(patch(Element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, this.ownerDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\r\n initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror }));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot);\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (iframeElement.contentWindow) {\r\n const manager = this;\r\n this.restorePatches.push(patch(iframeElement.contentWindow.HTMLElement.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, iframeElement.contentDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n }\r\n reset() {\r\n this.restorePatches.forEach((restorePatch) => restorePatch());\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\nexport { ShadowDomManager };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nexport { __awaiter, __rest };\n","/*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n","import { encode } from './../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = canvasVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n canvasVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n if (!value ||\r\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n return;\r\n const name = value.constructor.name;\r\n const list = variableListFor(ctx, name);\r\n let index = list.indexOf(value);\r\n if (index === -1) {\r\n index = list.length;\r\n list.push(value);\r\n }\r\n return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n if (value instanceof Array) {\r\n return value.map((arg) => serializeArg(arg, win, ctx));\r\n }\r\n else if (value === null) {\r\n return value;\r\n }\r\n else if (value instanceof Float32Array ||\r\n value instanceof Float64Array ||\r\n value instanceof Int32Array ||\r\n value instanceof Uint32Array ||\r\n value instanceof Uint8Array ||\r\n value instanceof Uint16Array ||\r\n value instanceof Int16Array ||\r\n value instanceof Int8Array ||\r\n value instanceof Uint8ClampedArray) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [Object.values(value)],\r\n };\r\n }\r\n else if (value instanceof ArrayBuffer) {\r\n const name = value.constructor.name;\r\n const base64 = encode(value);\r\n return {\r\n rr_type: name,\r\n base64,\r\n };\r\n }\r\n else if (value instanceof DataView) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [\r\n serializeArg(value.buffer, win, ctx),\r\n value.byteOffset,\r\n value.byteLength,\r\n ],\r\n };\r\n }\r\n else if (value instanceof HTMLImageElement) {\r\n const name = value.constructor.name;\r\n const { src } = value;\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof HTMLCanvasElement) {\r\n const name = 'HTMLImageElement';\r\n const src = value.toDataURL();\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof ImageData) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n };\r\n }\r\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n const name = value.constructor.name;\r\n const index = saveWebGLVar(value, win, ctx);\r\n return {\r\n rr_type: name,\r\n index: index,\r\n };\r\n }\r\n return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n return [...args].map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n const webGLConstructorNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n 'WebGLVertexArrayObjectOES',\r\n ];\r\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { patch, isBlocked } from '../../../utils.js';\n\nfunction initCanvasContextObserver(win, blockClass, blockSelector) {\r\n const handlers = [];\r\n try {\r\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n return function (contextType, ...args) {\r\n if (!isBlocked(this, blockClass, blockSelector, true)) {\r\n if (!('__context' in this))\r\n this.__context = contextType;\r\n }\r\n return original.apply(this, [contextType, ...args]);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasContextObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, mirror, win) {\r\n const handlers = [];\r\n const props = Object.getOwnPropertyNames(prototype);\r\n for (const prop of props) {\r\n if ([\r\n 'isContextLost',\r\n 'canvas',\r\n 'drawingBufferWidth',\r\n 'drawingBufferHeight',\r\n ].includes(prop)) {\r\n continue;\r\n }\r\n try {\r\n if (typeof prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(prototype, prop, function (original) {\r\n return function (...args) {\r\n const result = original.apply(this, args);\r\n saveWebGLVar(result, win, this);\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n const mutation = {\r\n type,\r\n property: prop,\r\n args: recordArgs,\r\n };\r\n cb(this.canvas, mutation);\r\n }\r\n return result;\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type,\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, mirror) {\r\n const handlers = [];\r\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, mirror, win));\r\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, mirror, win));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasWebGLMutationObserver as default };\n","var WorkerClass = null;\n\ntry {\n var WorkerThreads =\n typeof module !== 'undefined' && typeof module.require === 'function' && module.require('worker_threads') ||\n typeof __non_webpack_require__ === 'function' && __non_webpack_require__('worker_threads') ||\n typeof require === 'function' && require('worker_threads');\n WorkerClass = WorkerThreads.Worker;\n} catch(e) {} // eslint-disable-line\n\nexport { WorkerClass };\n","import { WorkerClass } from './_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js';\n\nfunction decodeBase64(base64, enableUnicode) {\n return Buffer.from(base64, 'base64').toString(enableUnicode ? 'utf16' : 'utf8');\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n return function WorkerFactory(options) {\n return new WorkerClass(body, Object.assign({}, options, { eval: true }));\n };\n}\n\nexport { createBase64WorkerFactory };\n","function decodeBase64(base64, enableUnicode) {\n var binaryString = atob(base64);\n if (enableUnicode) {\n var binaryView = new Uint8Array(binaryString.length);\n for (var i = 0, n = binaryString.length; i < n; ++i) {\n binaryView[i] = binaryString.charCodeAt(i);\n }\n return String.fromCharCode.apply(null, new Uint16Array(binaryView.buffer));\n }\n return binaryString;\n}\n\nfunction createURL(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n var blob = new Blob([body], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(base64, sourcemapArg, enableUnicodeArg);\n return new Worker(url, options);\n };\n}\n\nexport { createBase64WorkerFactory };\n","var kIsNodeJS = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n\nfunction isNodeJS() {\n return kIsNodeJS;\n}\n\nexport { isNodeJS };\n","import { createBase64WorkerFactory } from './_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js';\n\nvar WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucykgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgY29uc3QgaWQgPSBgJHt3aWR0aH0tJHtoZWlnaHR9YDsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRCbG9iTWFwLmdldChpZCk7DQogICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0geWllbGQgYmxvYi5hcnJheUJ1ZmZlcigpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQogICAgY29uc3Qgd29ya2VyID0gc2VsZjsNCiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgY29uc3QgeyBpZCwgYml0bWFwLCB3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucyB9ID0gZS5kYXRhOw0KICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zKTsNCiAgICAgICAgICAgICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwKTsNCiAgICAgICAgICAgICAgICBiaXRtYXAuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gZW5jb2RlKGFycmF5QnVmZmVyKTsNCiAgICAgICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7DQogICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgaWQsDQogICAgICAgICAgICAgICAgICAgIHR5cGUsDQogICAgICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQogICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=', null, false);\n/* eslint-enable */\n\nexport { WorkerFactory as default };\n","import { createBase64WorkerFactory as createBase64WorkerFactory$1 } from './_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js';\nimport { createBase64WorkerFactory as createBase64WorkerFactory$2 } from './_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js';\nimport { isNodeJS } from './_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js';\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n if (isNodeJS()) {\n return createBase64WorkerFactory$1(base64, sourcemapArg, enableUnicodeArg);\n }\n return createBase64WorkerFactory$2(base64, sourcemapArg, enableUnicodeArg);\n}\n\nexport { createBase64WorkerFactory };\n","import { __rest, __awaiter } from './../../../../../../ext/tslib/tslib.es6.js';\nimport { isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport WorkerFactory from '../../../../../../_virtual/image-bitmap-data-url-worker.js';\n\nclass CanvasManager {\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, recordCanvas, dataURLOptions, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\r\n dataURLOptions,\r\n });\r\n }\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const snapshotInProgressMap = new Map();\r\n const worker = new WorkerFactory();\r\n worker.onmessage = (e) => {\r\n const { id } = e.data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in e.data))\r\n return;\r\n const { base64, type, width, height } = e.data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = () => {\r\n const matchedCanvas = [];\r\n win.document.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas()\r\n .forEach((canvas) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (((_a = context === null || context === void 0 ? void 0 : context.getContextAttributes()) === null || _a === void 0 ? void 0 : _a.preserveDrawingBuffer) === false) {\r\n context === null || context === void 0 ? void 0 : context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n const bitmap = yield createImageBitmap(canvas);\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: canvas.width,\r\n height: canvas.height,\r\n dataURLOptions: options.dataURLOptions,\r\n }, [bitmap]);\r\n }));\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const rest = __rest(value, [\"type\"]);\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nexport { CanvasManager };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { serializeArgs } from './serialize-args.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\r\n const handlers = [];\r\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n for (const prop of props2D) {\r\n try {\r\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n return function (...args) {\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n setTimeout(() => {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: recordArgs,\r\n });\r\n }, 0);\r\n }\r\n return original.apply(this, args);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvas2DMutationObserver as default };\n","import { getCssRuleString } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n const rules = Array.from(sheet.rules || CSSRule);\r\n styles.push({\r\n styleId,\r\n rules: rules.map((r, index) => {\r\n return {\r\n rule: getCssRuleString(r),\r\n index,\r\n };\r\n }),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nexport { StylesheetManager };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, getWindowWidth, getWindowHeight, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\n\nfunction wrapEvent(e) {\r\n return Object.assign(Object.assign({}, e), { timestamp: Date.now() });\r\n}\r\nlet wrappedEmit;\r\nlet takeFullSnapshot;\r\nlet canvasManager;\r\nlet recording = false;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, ignoreClass = 'rr-ignore', maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), } = options;\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n window.parent.document;\r\n passEmitsToParent = false;\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : { password: true };\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (e, isCheckout) => {\r\n var _a;\r\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\r\n e.type !== EventType.FullSnapshot &&\r\n !(e.type === EventType.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit === null || emit === void 0 ? void 0 : emit(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Mutation }, m),\r\n }));\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Scroll }, p),\r\n }));\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CanvasMutation }, p),\r\n }));\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.AdoptedStyleSheet }, a),\r\n }));\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n canvasManager = new CanvasManager({\r\n recordCanvas,\r\n mutationCb: wrappedCanvasMutationEmit,\r\n win: window,\r\n blockClass,\r\n blockSelector,\r\n mirror,\r\n sampling: sampling.canvas,\r\n dataURLOptions,\r\n });\r\n const shadowDomManager = new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n },\r\n mirror,\r\n });\r\n takeFullSnapshot = (isCheckout = false) => {\r\n var _a, _b, _c, _d, _e, _f;\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }), isCheckout);\r\n stylesheetManager.reset();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: {\r\n left: window.pageXOffset !== undefined\r\n ? window.pageXOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollLeft) ||\r\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) ||\r\n ((_c = document === null || document === void 0 ? void 0 : document.body) === null || _c === void 0 ? void 0 : _c.scrollLeft) ||\r\n 0,\r\n top: window.pageYOffset !== undefined\r\n ? window.pageYOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollTop) ||\r\n ((_e = (_d = document === null || document === void 0 ? void 0 : document.body) === null || _d === void 0 ? void 0 : _d.parentElement) === null || _e === void 0 ? void 0 : _e.scrollTop) ||\r\n ((_f = document === null || document === void 0 ? void 0 : document.body) === null || _f === void 0 ? void 0 : _f.scrollTop) ||\r\n 0,\r\n },\r\n },\r\n }));\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n try {\r\n const handlers = [];\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.DomContentLoaded,\r\n data: {},\r\n }));\r\n }));\r\n const observe = (doc) => {\r\n var _a;\r\n return initObservers({\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n })),\r\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MouseInteraction }, d),\r\n })),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.ViewportResize }, d),\r\n })),\r\n inputCb: (v) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Input }, v),\r\n })),\r\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MediaInteraction }, p),\r\n })),\r\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleSheetRule }, r),\r\n })),\r\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleDeclaration }, r),\r\n })),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Font }, p),\r\n })),\r\n selectionCb: (p) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Selection }, p),\r\n }));\r\n },\r\n blockClass,\r\n ignoreClass,\r\n maskTextClass,\r\n maskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit(wrapEvent({\r\n type: EventType.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n })),\r\n }))) || [],\r\n }, hooks);\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n recording = true;\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('load', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Load,\r\n data: {},\r\n }));\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n recording = false;\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nrecord.addCustomEvent = (tag, payload) => {\r\n if (!recording) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n }));\r\n};\r\nrecord.freezePage = () => {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n};\r\nrecord.takeFullSnapshot = (isCheckout) => {\r\n if (!recording) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n takeFullSnapshot(isCheckout);\r\n};\r\nrecord.mirror = mirror;\n\nexport { record as default };\n",null,null,null,null,null,null,null],"names":["window","TraceKit","_oldTraceKit","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","noConflict","wrap","func","apply","this","arguments","e","report","_oldOnerrorHandler","_onErrorHandlerInstalled","_oldOnunhandledrejectionHandler","_onUnhandledRejectionHandlerInstalled","handlers","lastException","lastExceptionStack","notifyHandlers","stack","isWindowError","error","exception","collectWindowErrors","i","_has","inner","traceKitWindowOnError","message","url","lineNo","columnNo","errorObj","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","name","location","line","column","msg","toString","call","groups","match","guessFunctionName","context","gatherContext","mode","traceKitWindowOnUnhandledRejection","reason","_lastExceptionStack","_lastException","ex","setTimeout","incomplete","subscribe","handler","onerror","installGlobalHandler","onunhandledrejection","installGlobalUnhandledRejectionHandler","push","unsubscribe","length","splice","sourceCache","getSource","source","domain","document","exec","remoteFetching","request","XMLHttpRequest","ActiveXObject","getXHR","open","send","responseText","loadSource","split","m","reFunctionArgNames","reGuessFunction","_isUndefined","linesBefore","Math","floor","linesOfContext","linesAfter","start","max","end","min","escapeRegExp","text","replace","escapeCodeAsRegExpForMatchingInsideHTML","body","findSourceInUrls","re","urls","j","join","substring","index","lastIndexOf","findSourceInLine","fragment","RegExp","findSourceByFunctionBody","parts","result","href","scripts","getElementsByTagName","code","script","src","args","event","computeStackTraceFromStackProp","submatch","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","reference","isNative","indexOf","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","input","description","sourceURL","fileName","lineNumber","stacktrace","opera10Regex","opera11Regex","exc","computeStackTraceFromStacktraceProp","lineRE1","lineRE2","lineRE3","inlineScriptBlocks","s","relativeLine","pos","innerText","midline","computeStackTraceFromOperaMultiLineMessage","ofCaller","Error","extendToAsynchronousCallbacks","_helper","fnName","originalFn","originalCallback","module","exports","object","key","Object","prototype","hasOwnProperty","what","global","getTarget","target","_a","isNode","parentNode","elementToString","tagName","components","toLowerCase","id","className","value","includes","getClassName","toSelector","options","maxDepth","ptr","asString","reverse","ClickCollector","constructor","addEventListener","breadcrumb","class","type","level","timestamp","Date","now","destination","addBreadcrumb","register","telemetry","_sessionId","unregister","undefined","INPUT_TAG_NAMES","KeypressCollector","htmlElement","isContentEditable","shouldDeduplicate","lastEvent","crumb","timeDiff","abs","ErrorCollector","captureErrorEvent","captureError","filterHttpBreadcrumb","filters","data","urlFilters","reduce","filtered","filter","originalFetch","fetch","processFetchArgs","init","method","Request","URL","FetchCollector","callback","wrapper","then","response","ok","assign","statusCode","status","statusText","defineProperty","writable","configurable","decorateFetch","LD_ORIGINAL_XHR","LD_ORIGINAL_XHR_OPEN","LD_ORIGINAL_XHR_SEND","LD_DATA_XHR","originalOpen","originalSend","XhrCollector","_event","xhrData","defineProperties","decorateXhr","pollingRegex","streamingREgex","defaultUrlFilter","regexMatch","repeat","_b","timeLow","timeMid","timeHiAndVersion","clockSeqHiAndReserved","clockSeqLow","nodes","hex","bytes","range","strVal","padStart","fallbackUuidV4","formatDataAsUuidV4","crypto","getRandomValues","typedArray","Uint8Array","values","random","getRandom128bit","INDEX_SPECIFIER","processUrlToFileName","origin","cleaned","startsWith","endsWith","trimSourceLine","maxLength","captureStart","beforeColumnCharacters","captureEnd","getLines","trimmer","adjustedStart","adjustedEnd","map","parse","frames","inFrame","function","col","maxLineLength","srcBefore","beforeLines","srcLine","srcAfter","afterLines","getSrcLines","CUSTOM_KEY_PREFIX","ERROR_KEY","SESSION_CAPTURE_KEY","safeValue","u","BrowserTelemetryImpl","pendingEvents","breadcrumbs","inspectorInstances","collectors","sessionId","randomUUID","beforeAfterMax","configureTraceKit","maxPendingEvents","maxBreadcrumbs","http","customUrlFilter","instrumentFetch","instrumentXhr","click","keyboardInput","forEach","collector","inspectors","evaluations","synchronous","flagKey","flagDetail","handleFlagUsed","flagChange","detail","handleFlagDetailChanged","makeInspectors","client","track","capture","shift","dispatchError","errorEvent","captureSession","sessionEvent","close","getTime","dispatchFlagUsed","dispatchFlagDetailChanged","handleErrorEvent","NodeType","isShadowRoot","n","host","Boolean","shadowRoot","isNativeShadowDom","getCssRulesString","rules","cssRules","cssText","Array","from","getCssRuleString","rule","cssStringified","isCSSImportRule","styleSheet","Mirror","idNodeMap","Map","nodeMetaMap","WeakMap","getId","getMeta","getNode","get","getIds","keys","removeNodeFromMap","_this","childNodes","childNode","has","hasNode","node","add","meta","set","oldNode","reset","maskInputValue","maskInputOptions","maskInputFn","ORIGINAL_ATTRIBUTE_NAME","canvasService","canvasCtx","_id","tagNameRegex","IGNORED_NODE","genId","URL_IN_CSS_REF","RELATIVE_PATH","DATA_URI","absoluteToStylesheet","quote1","path1","quote2","path2","path3","filePath","maybeQuote","test","concat","pop","_i","parts_1","part","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","doc","attributeValue","trim","a","createElement","isSVGElement","el","ownerSVGElement","getHref","transformAttribute","collectCharacters","regEx","chars","output","descriptorsStr","inParens","c","charAt","getAbsoluteSrcsetString","classMatchesRegex","regex","checkAncestors","nodeType","ELEMENT_NODE","eIndex","classList","needMaskingText","maskTextClass","maskTextSelector","parentElement","contains","closest","matches","serializeNode","mirror","blockClass","blockSelector","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","_c","newlyAddedElement","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","attributes","len","attr","stylesheet","styleSheets","find","rel","_cssText","sheet","textContent","checked","selected","__context","canvas","ctx","getContext","x","width","y","height","getImageData","originalGetImageData","Uint32Array","buffer","some","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image_1","oldValue_1","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","drawImage","err","console","warn","currentSrc","removeAttribute","complete","onload","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","_d","getBoundingClientRect","rr_width","rr_height","contentDocument","rr_src","Element","isSVG","serializeElementNode","TEXT_NODE","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","_e","_f","onSerialize","onIframeLoad","_g","iframeLoadTimeout","onStylesheetLoad","_h","stylesheetLoadTimeout","_j","_k","_l","preserveWhiteSpace","_serializedNode","sn","comment","as","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","isShadowHost","headWhitespace","bypassOptions","_m","serializedChildNode","isElement","_o","_p","isShadow","iframeEl","listener","win","contentWindow","readyState","fired","blankUrl","timer_1","clearTimeout","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","timer","onceStylesheetLoaded","serializedLinkNode","on","fn","passive","removeEventListener","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","timeout","previous","leading","remaining","trailing","hookSetter","d","isRevoked","original","getOwnPropertyDescriptor","patch","replacement","wrapped","__rrweb_original__","enumerable","getWindowHeight","innerHeight","documentElement","clientHeight","getWindowWidth","innerWidth","clientWidth","isBlocked","isIgnored","isAncestorRemoved","isTouchEvent","changedTouches","isSerializedIframe","nodeName","isSerializedStylesheet","getAttribute","hasShadowRoot","Proxy","Reflect","prop","receiver","StyleSheetMirror","styleIDMap","idStyleMap","newId","getStyle","generateId","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","CanvasContext","CanvasContext2","isNodeInLinkedList","DoubleLinkedList","head","position","current","next","addNode","__ln","removeNode","moveKey","parentId","MutationBuffer","frozen","locked","texts","removes","mapRemoves","movedMap","addedSet","Set","movedSet","droppedSet","processMutations","mutations","processMutation","emit","adds","addList","getNextId","ns","nextId","pushAdd","shadowHost","getRootNode","Node","DOCUMENT_FRAGMENT_NODE","rootShadowHost","notInDoc","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","isParentRemoved","isAncestorInSet","candidate","_node","unhandledNode","payload","attribute","mutationCb","oldValue","attributeName","old","setAttribute","style","styleObj","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","addedNodes","genAdds","removedNodes","nodeId","isSerialized","deepDelete","targetId","delete","childN","freeze","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_isParentRemoved","r","size","_isAncestorInSet","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","Number","isNaN","eventKey","eventName","clientX","clientY","getHandler","h","initScrollObserver","scrollCb","evt","scrollEl","scrollingElement","scroll","wrapEventWithUserTriggeredFlag","v","enable","userTriggered","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","parentRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","styleId","ownerNode","initAdoptedStyleSheetObserver","hostId","patchTarget","defaultView","ownerDocument","ShadowRoot","originalPropertyDescriptor","sheets","adoptStyleSheets","initObservers","o","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","p","mutation","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","mergeHooks","mutationObserver","mousemoveHandler","threshold","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","userTriggeredOnInput","eventHandler","isTrusted","isChecked","cbWithDedup","querySelectorAll","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","volume","muted","playbackRate","media","initMediaInteractionObserver","styleSheetObserver","insertRule","CSSStyleSheet","deleteRule","replaceSync","supportedNestedCSSRuleTypes","unmodifiedFunctions","entries","typeKey","initStyleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","priority","removeProperty","remove","initStyleDeclarationObserver","fontObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","JSON","stringify","restoreHandler","fonts","initFontObserver","selectionObserver","param","collapsed","updateSelection","getSelection","isCollapsed","ranges","count","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","pluginHandlers","plugin","plugins","b","disconnect","CrossOriginIframeMirror","generateIdFn","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","IframeManager","iframes","crossOriginIframeMap","crossOriginIframeMirror","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","handleMessage","addLoadListener","cb","loadListener","isAttachIframe","adoptedStyleSheets","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","replaceIdOnNode","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","Input","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","obj","isArray","child","ShadowDomManager","shadowDoms","WeakSet","restorePatches","manager","option","iframeElement","HTMLElement","restorePatch","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","done","lookup","charCodeAt","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list","ctor","contextMap","variableListFor","serializeArg","arg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","ArrayBuffer","base64","arraybuffer","encode","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","contextType","patchGLPrototype","props","getOwnPropertyNames","recordArgs","hookHandler","setter","WorkerClass","WorkerThreads","require","__non_webpack_require__","Worker","createBase64WorkerFactory","sourcemapArg","enableUnicodeArg","sourcemap","enableUnicode","Buffer","decodeBase64","eval","createURL","binaryString","atob","binaryView","String","fromCharCode","blob","Blob","createObjectURL","kIsNodeJS","process","WorkerFactory","createBase64WorkerFactory$1","createBase64WorkerFactory$2","CanvasManager","pendingCanvasMutations","rafStamps","latestId","invokeId","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","canvasContextReset","snapshotInProgressMap","worker","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","preserveDrawingBuffer","COLOR_BUFFER_BIT","bitmap","createImageBitmap","postMessage","requestAnimationFrame","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","flushPendingCanvasMutationFor","valuesWithType","rest","t","getOwnPropertySymbols","propertyIsEnumerable","__rest","StylesheetManager","trackedLinkElements","adoptedStyleSheetCb","linkEl","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","wrapEvent","takeFullSnapshot","recording","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","inEmittingFrame","parent","passEmitsToParent","color","date","email","month","number","search","tel","time","week","textarea","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","TypeError","polyfill","incrementalSnapshotCount","eventProcessor","buf","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","left","pageXOffset","top","pageYOffset","addCustomEvent","tag","freezePage","ContinuousReplay","visibilityHandler","handleVisibilityChange","timerHandle","setInterval","recordCapture","restartCapture","intervalMs","startCapture","stopper","clearInterval","visibilityState","events","rrweb.record","EventBuffer","content","hasSpace","isPopulated","RollingBuffer","bufferSize","numBuffers","buffers","writePointer","headPointer","toArray","asArray","acc","realIndex","RollingReplay","eventSegmentLength","segmentBufferLength","SessionReplay","captureOptions","impl","isRollingCapture","_context","itemOrDefault","defaultValue","parseHttp","defaults","parseStack","initializeTelemetry","parsedOptions"],"mappings":"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","x_google_ignoreList":[0,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39]}
|