@appsurify-testmap/rrweb-snapshot 3.1.1-alpha.2 → 3.2.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"rrweb-snapshot.cjs","sources":["../../types/dist/rrweb-types.js","../../utils/dist/rrweb-utils.js","../src/utils.ts","../../../node_modules/@whenessel/seql-js/dist/seql-js.js","../src/snapshot.ts","../src/css.ts","../../../node_modules/picocolors/picocolors.browser.js","../__vite-browser-external","../../../node_modules/postcss/lib/css-syntax-error.js","../../../node_modules/postcss/lib/stringifier.js","../../../node_modules/postcss/lib/stringify.js","../../../node_modules/postcss/lib/symbols.js","../../../node_modules/postcss/lib/node.js","../../../node_modules/postcss/lib/comment.js","../../../node_modules/postcss/lib/declaration.js","../../../node_modules/postcss/lib/container.js","../../../node_modules/postcss/lib/at-rule.js","../../../node_modules/postcss/lib/document.js","../../../node_modules/postcss/node_modules/nanoid/non-secure/index.cjs","../../../node_modules/postcss/lib/previous-map.js","../../../node_modules/postcss/lib/input.js","../../../node_modules/postcss/lib/root.js","../../../node_modules/postcss/lib/list.js","../../../node_modules/postcss/lib/rule.js","../../../node_modules/postcss/lib/fromJSON.js","../../../node_modules/postcss/lib/map-generator.js","../../../node_modules/postcss/lib/tokenize.js","../../../node_modules/postcss/lib/parser.js","../../../node_modules/postcss/lib/parse.js","../../../node_modules/postcss/lib/warning.js","../../../node_modules/postcss/lib/result.js","../../../node_modules/postcss/lib/warn-once.js","../../../node_modules/postcss/lib/lazy-result.js","../../../node_modules/postcss/lib/no-work-result.js","../../../node_modules/postcss/lib/processor.js","../../../node_modules/postcss/lib/postcss.js","../../../node_modules/postcss/lib/postcss.mjs","../src/rebuild.ts"],"sourcesContent":["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 IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n IncrementalSource2[IncrementalSource2[\"Visibility\"] = 17] = \"Visibility\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar 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 || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nexport {\n CanvasContext,\n EventType,\n IncrementalSource,\n MediaInteractions,\n MouseInteractions,\n NodeType,\n PointerTypes,\n ReplayerEvents\n};\n//# sourceMappingURL=rrweb-types.js.map\n","const testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst isAngularZonePresent = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a, _b;\n return Boolean(\n (_b = (_a = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a;\n return typeof defaultPrototype[method] === \"function\" && ((_a = defaultPrototype[method]) == null ? void 0 : _a.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n) {\n return getUntaintedAccessor(\"Node\", n, \"childNodes\");\n}\nfunction parentNode(n) {\n return getUntaintedAccessor(\"Node\", n, \"parentNode\");\n}\nfunction parentElement(n) {\n return getUntaintedAccessor(\"Node\", n, \"parentElement\");\n}\nfunction textContent(n) {\n return getUntaintedAccessor(\"Node\", n, \"textContent\");\n}\nfunction contains(n, other) {\n return getUntaintedMethod(\"Node\", n, \"contains\")(other);\n}\nfunction getRootNode(n) {\n return getUntaintedMethod(\"Node\", n, \"getRootNode\")();\n}\nfunction host(n) {\n if (!n || !(\"host\" in n)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n, \"host\");\n}\nfunction styleSheets(n) {\n return n.styleSheets;\n}\nfunction shadowRoot(n) {\n if (!n || !(\"shadowRoot\" in n)) return null;\n return getUntaintedAccessor(\"Element\", n, \"shadowRoot\");\n}\nfunction querySelector(n, selectors) {\n return getUntaintedAccessor(\"Element\", n, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n, selectors) {\n return getUntaintedAccessor(\"Element\", n, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nfunction describeNode(el) {\n const tag = el.tagName.toLowerCase();\n const id = el.id ? `#${el.id}` : \"\";\n const classes = el.classList.length ? \".\" + Array.from(el.classList).join(\".\") : \"\";\n return `${tag}${id}${classes}`;\n}\nfunction getElementVisibility(el) {\n var _a, _b;\n const win = ((_a = el.ownerDocument) == null ? void 0 : _a.defaultView) ?? window;\n const rect = el.getBoundingClientRect();\n const viewportWidth = win.innerWidth || win.document.documentElement.clientWidth || 0;\n const viewportHeight = win.innerHeight || win.document.documentElement.clientHeight || 0;\n const isRectVisible = rect.width > 0 && rect.height > 0 && rect.bottom > 0 && rect.right > 0 && rect.top < viewportHeight && rect.left < viewportWidth;\n const style = (_b = win.getComputedStyle) == null ? void 0 : _b.call(win, el);\n const isStyleVisible = !!style && style.display !== \"none\" && style.visibility !== \"hidden\" && (parseFloat(style.opacity) || 0) > 0;\n const isVisible = isStyleVisible && isRectVisible;\n let ratio = 0;\n if (isVisible) {\n const xOverlap = Math.max(\n 0,\n Math.min(rect.right, viewportWidth) - Math.max(rect.left, 0)\n );\n const yOverlap = Math.max(\n 0,\n Math.min(rect.bottom, viewportHeight) - Math.max(rect.top, 0)\n );\n const intersectionArea = xOverlap * yOverlap;\n const elementArea = rect.width * rect.height;\n ratio = elementArea > 0 ? intersectionArea / elementArea : 0;\n }\n return {\n isVisible,\n ratio\n };\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor,\n patch,\n describeNode,\n getElementVisibility\n};\nexport {\n childNodes,\n contains,\n index as default,\n describeNode,\n getElementVisibility,\n getRootNode,\n getUntaintedAccessor,\n getUntaintedMethod,\n getUntaintedPrototype,\n host,\n isAngularZonePresent,\n mutationObserverCtor,\n parentElement,\n parentNode,\n patch,\n querySelector,\n querySelectorAll,\n shadowRoot,\n styleSheets,\n textContent\n};\n//# sourceMappingURL=rrweb-utils.js.map\n","import type {\n idNodeMap,\n MaskInputFn,\n MaskInputOptions,\n nodeMetaMap,\n} from './types';\n\nimport { NodeType } from '@appsurify-testmap/rrweb-types';\nimport type {\n IMirror,\n serializedNodeWithId,\n serializedNode,\n documentNode,\n documentTypeNode,\n textNode,\n elementNode,\n} from \"@appsurify-testmap/rrweb-types\";\nimport dom from '@appsurify-testmap/rrweb-utils';\n\nexport function isElement(n: Node): n is Element {\n return n.nodeType === n.ELEMENT_NODE;\n}\n\nexport function isShadowRoot(n: Node): n is ShadowRoot {\n const hostEl: Element | null =\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n (n && 'host' in n && 'mode' in n && dom.host(n as ShadowRoot)) || null;\n return Boolean(\n hostEl && 'shadowRoot' in hostEl && dom.shadowRoot(hostEl) === n,\n );\n}\n\n/**\n * To fix the issue https://github.com/rrweb-io/rrweb/issues/933.\n * Some websites use polyfilled shadow dom and this function is used to detect this situation.\n */\nexport function isNativeShadowDom(shadowRoot: ShadowRoot): boolean {\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\n}\n\n/**\n * Browsers sometimes destructively modify the css rules they receive.\n * This function tries to rectify the modifications the browser made to make it more cross platform compatible.\n * @param cssText - output of `CSSStyleRule.cssText`\n * @returns `cssText` with browser inconsistencies fixed.\n */\nfunction fixBrowserCompatibilityIssuesInCSS(cssText: string): string {\n /**\n * Chrome outputs `-webkit-background-clip` as `background-clip` in `CSSStyleRule.cssText`.\n * But then Chrome ignores `background-clip` as css input.\n * Re-introduce `-webkit-background-clip` to fix this issue.\n */\n if (\n cssText.includes(' background-clip: text;') &&\n !cssText.includes(' -webkit-background-clip: text;')\n ) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n ' -webkit-background-clip: text; background-clip: text;',\n );\n }\n return cssText;\n}\n\n// Remove this declaration once typescript has added `CSSImportRule.supportsText` to the lib.\ndeclare interface CSSImportRule extends CSSRule {\n readonly href: string;\n readonly layerName: string | null;\n readonly media: MediaList;\n readonly styleSheet: CSSStyleSheet;\n /**\n * experimental API, currently only supported in firefox\n * https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule/supportsText\n */\n readonly supportsText?: string | null;\n}\n\n/**\n * Browsers sometimes incorrectly escape `@import` on `.cssText` statements.\n * This function tries to correct the escaping.\n * more info: https://bugs.chromium.org/p/chromium/issues/detail?id=1472259\n * @param cssImportRule\n * @returns `cssText` with browser inconsistencies fixed, or null if not applicable.\n */\nexport function escapeImportStatement(rule: CSSImportRule): string {\n const { cssText } = rule;\n if (cssText.split('\"').length < 3) return cssText;\n\n const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\n if (rule.layerName === '') {\n statement.push(`layer`);\n } else if (rule.layerName) {\n statement.push(`layer(${rule.layerName})`);\n }\n if (rule.supportsText) {\n statement.push(`supports(${rule.supportsText})`);\n }\n if (rule.media.length) {\n statement.push(rule.media.mediaText);\n }\n return statement.join(' ') + ';';\n}\n\n/*\n * serialize the css rules from the .sheet property\n * for <link rel=\"stylesheet\"> elements, this is the only way of getting the rules without a FETCH\n * for <style> elements, this is less preferable to looking at childNodes[0].textContent\n * (which will include vendor prefixed rules which may not be used or visible to the recorded browser,\n * but which might be needed by the replayer browser)\n * however, at snapshot time, we don't know whether the style element has suffered\n * any programmatic manipulation prior to the snapshot, in which case the .sheet would be more up to date\n */\nexport function stringifyStylesheet(s: CSSStyleSheet): string | null {\n try {\n const rules = s.rules || s.cssRules;\n if (!rules) {\n return null;\n }\n let sheetHref = s.href;\n if (!sheetHref && s.ownerNode && s.ownerNode.ownerDocument) {\n // an inline <style> element\n sheetHref = s.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(rules, (rule: CSSRule) =>\n stringifyRule(rule, sheetHref),\n ).join('');\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\n\nexport function stringifyRule(rule: CSSRule, sheetHref: string | null): string {\n if (isCSSImportRule(rule)) {\n let importStringified;\n try {\n importStringified =\n // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule.styleSheet) ||\n // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule);\n } catch (error) {\n importStringified = rule.cssText;\n }\n if (rule.styleSheet.href) {\n // url()s within the imported stylesheet are relative to _that_ sheet's href\n return absolutifyURLs(importStringified, rule.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule.cssText;\n if (rule.type === CSSRule.KEYFRAMES_RULE || rule.type === CSSRule.KEYFRAME_RULE) {\n // Keyframes сериализуются правильно через cssText\n // Но нужно убедиться, что они не теряются\n }\n if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\n // Safari does not escape selectors with : properly\n // see https://bugs.webkit.org/show_bug.cgi?id=184604\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\n\nexport function fixSafariColons(cssStringified: string): string {\n // Replace e.g. [aa:bb] with [aa\\\\:bb]\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, '$1\\\\$2');\n}\n\nexport function isCSSImportRule(rule: CSSRule): rule is CSSImportRule {\n return 'styleSheet' in rule;\n}\n\nexport function isCSSStyleRule(rule: CSSRule): rule is CSSStyleRule {\n return 'selectorText' in rule;\n}\n\nexport class Mirror implements IMirror<Node> {\n private idNodeMap: idNodeMap = new Map();\n private nodeMetaMap: nodeMetaMap = new WeakMap();\n private selectorNodeMap: Map<string, Set<Node>> = new Map();\n\n getId(n: Node | undefined | null): number {\n if (!n) return -1;\n\n const id = this.getMeta(n)?.id;\n\n // if n is not a serialized Node, use -1 as its id.\n return id ?? -1;\n }\n\n getNode(id: number): Node | null {\n return this.idNodeMap.get(id) || null;\n }\n\n getIds(): number[] {\n return Array.from(this.idNodeMap.keys());\n }\n\n getMeta(n: Node): serializedNodeWithId | null {\n return this.nodeMetaMap.get(n) || null;\n }\n\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n: Node) {\n const id = this.getId(n);\n this.idNodeMap.delete(id);\n\n // Remove from selector index\n const meta = this.getMeta(n);\n if (meta?.selector) {\n const nodes = this.selectorNodeMap.get(meta.selector);\n if (nodes) {\n nodes.delete(n);\n // Clean up empty Sets\n if (nodes.size === 0) {\n this.selectorNodeMap.delete(meta.selector);\n }\n }\n }\n\n if (n.childNodes) {\n n.childNodes.forEach((childNode) =>\n this.removeNodeFromMap(childNode as unknown as Node),\n );\n }\n }\n has(id: number): boolean {\n return this.idNodeMap.has(id);\n }\n\n hasNode(node: Node): boolean {\n return this.nodeMetaMap.has(node);\n }\n\n add(n: Node, meta: serializedNodeWithId) {\n const id = meta.id;\n this.idNodeMap.set(id, n);\n this.nodeMetaMap.set(n, meta);\n\n // Index selector if present\n if (meta.selector) {\n let nodes = this.selectorNodeMap.get(meta.selector);\n if (!nodes) {\n nodes = new Set();\n this.selectorNodeMap.set(meta.selector, nodes);\n }\n nodes.add(n);\n }\n }\n\n replace(id: number, n: Node) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) {\n this.nodeMetaMap.set(n, meta);\n\n // Update selector index\n if (meta.selector) {\n const nodes = this.selectorNodeMap.get(meta.selector);\n if (nodes) {\n nodes.delete(oldNode);\n nodes.add(n);\n }\n }\n }\n }\n this.idNodeMap.set(id, n);\n }\n\n reset() {\n this.idNodeMap = new Map();\n this.nodeMetaMap = new WeakMap();\n this.selectorNodeMap = new Map();\n }\n\n getNodeBySelector(selector: string): Node | null {\n const nodes = this.selectorNodeMap.get(selector);\n if (!nodes || nodes.size === 0) return null;\n // Return first element from Set\n return nodes.values().next().value || null;\n }\n\n getNodesBySelector(selector: string): Node[] {\n const nodes = this.selectorNodeMap.get(selector);\n return nodes ? Array.from(nodes) : [];\n }\n\n hasSelector(selector: string): boolean {\n const nodes = this.selectorNodeMap.get(selector);\n return nodes !== undefined && nodes.size > 0;\n }\n}\n\nexport function createMirror(): Mirror {\n return new Mirror();\n}\n\nexport function maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn,\n}: {\n element: HTMLElement;\n maskInputOptions: MaskInputOptions;\n tagName: string;\n type: string | null;\n value: string | null;\n maskInputFn?: MaskInputFn;\n}): string {\n let text = value || '';\n const actualType = type && toLowerCase(type);\n\n if (\n maskInputOptions[tagName.toLowerCase() as keyof MaskInputOptions] ||\n (actualType && maskInputOptions[actualType as keyof MaskInputOptions])\n ) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = '*'.repeat(text.length);\n }\n }\n return text;\n}\n\nexport function toLowerCase<T extends string>(str: T): Lowercase<T> {\n return str.toLowerCase() as unknown as Lowercase<T>;\n}\n\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\ntype PatchedGetImageData = {\n [ORIGINAL_ATTRIBUTE_NAME]: CanvasImageData['getImageData'];\n} & CanvasImageData['getImageData'];\n\nexport function is2DCanvasBlank(canvas: HTMLCanvasElement): boolean {\n const ctx = canvas.getContext('2d');\n if (!ctx) return true;\n\n const chunkSize = 50;\n\n // get chunks of the canvas and check if it is blank\n for (let x = 0; x < canvas.width; x += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const getImageData = ctx.getImageData as PatchedGetImageData;\n const originalGetImageData =\n ORIGINAL_ATTRIBUTE_NAME in getImageData\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\n : getImageData;\n // by getting the canvas in chunks we avoid an expensive\n // `getImageData` call that retrieves everything\n // even if we can already tell from the first chunk(s) that\n // the canvas isn't blank\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x,\n y,\n Math.min(chunkSize, canvas.width - x),\n Math.min(chunkSize, canvas.height - y),\n ).data.buffer,\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\n\nexport function isNodeMetaEqual(a: serializedNode, b: serializedNode): boolean {\n if (!a || !b || a.type !== b.type) return false;\n if (a.type === NodeType.Document)\n return a.compatMode === (b as documentNode).compatMode;\n else if (a.type === NodeType.DocumentType)\n return (\n a.name === (b as documentTypeNode).name &&\n a.publicId === (b as documentTypeNode).publicId &&\n a.systemId === (b as documentTypeNode).systemId\n );\n else if (\n a.type === NodeType.Comment ||\n a.type === NodeType.Text ||\n a.type === NodeType.CDATA\n )\n return a.textContent === (b as textNode).textContent;\n else if (a.type === NodeType.Element)\n return (\n a.tagName === (b as elementNode).tagName &&\n JSON.stringify(a.attributes) ===\n JSON.stringify((b as elementNode).attributes) &&\n a.isSVG === (b as elementNode).isSVG &&\n a.needBlock === (b as elementNode).needBlock\n );\n return false;\n}\n\n/**\n * Get the type of an input element.\n * This takes care of the case where a password input is changed to a text input.\n * In this case, we continue to consider this of type password, in order to avoid leaking sensitive data\n * where passwords should be masked.\n */\nexport function getInputType(element: HTMLElement): Lowercase<string> | null {\n // when omitting the type of input element(e.g. <input />), the type is treated as text\n const type = (element as HTMLInputElement).type;\n\n return element.hasAttribute('data-rr-is-password')\n ? 'password'\n : type\n ? // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n : null;\n}\n\n/**\n * Extracts the file extension from an a path, considering search parameters and fragments.\n * @param path - Path to file\n * @param baseURL - [optional] Base URL of the page, used to resolve relative paths. Defaults to current page URL.\n */\nexport function extractFileExtension(\n path: string,\n baseURL?: string,\n): string | null {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return match?.[1] ?? null;\n}\n\nfunction extractOrigin(url: string): string {\n let origin = '';\n if (url.indexOf('//') > -1) {\n origin = url.split('/').slice(0, 3).join('/');\n } else {\n origin = url.split('/')[0];\n }\n origin = origin.split('?')[0];\n return origin;\n}\n\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nexport function absolutifyURLs(cssText: string | null, href: string): string {\n return (cssText || '').replace(\n URL_IN_CSS_REF,\n (\n origin: string,\n quote1: string,\n path1: string,\n quote2: string,\n path2: string,\n path3: string,\n ) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || '';\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === '/') {\n return `url(${maybeQuote}${\n extractOrigin(href) + filePath\n }${maybeQuote})`;\n }\n const stack = href.split('/');\n const parts = filePath.split('/');\n stack.pop();\n for (const part of parts) {\n if (part === '.') {\n continue;\n } else if (part === '..') {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\n },\n );\n}\n\n/**\n * Intention is to normalize by remove spaces, semicolons and CSS comments\n * so that we can compare css as authored vs. output of stringifyStylesheet\n */\nexport function normalizeCssString(\n cssText: string,\n /**\n * _testNoPxNorm: only used as part of the 'substring matching going from many to none'\n * test case so that it will trigger a failure if the conditions that let to the creation of that test arise again\n */\n _testNoPxNorm = false,\n): string {\n if (_testNoPxNorm) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, '');\n } else {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, '').replace(/0px/g, '0');\n }\n}\n\n/**\n * Maps the output of stringifyStylesheet to individual text nodes of a <style> element\n * which occurs when javascript is used to append to the style element\n * and may also occur when browsers opt to break up large text nodes\n * performance needs to be considered, see e.g. #1603\n */\nexport function splitCssText(\n cssText: string,\n style: HTMLStyleElement,\n _testNoPxNorm = false,\n): string[] {\n const childNodes = Array.from(style.childNodes);\n const splits: string[] = [];\n let iterCount = 0;\n if (childNodes.length > 1 && cssText && typeof cssText === 'string') {\n let cssTextNorm = normalizeCssString(cssText, _testNoPxNorm);\n const normFactor = cssTextNorm.length / cssText.length;\n for (let i = 1; i < childNodes.length; i++) {\n if (\n childNodes[i].textContent &&\n typeof childNodes[i].textContent === 'string'\n ) {\n const textContentNorm = normalizeCssString(\n childNodes[i].textContent!,\n _testNoPxNorm,\n );\n const jLimit = 100; // how many iterations for the first part of searching\n let j = 3;\n for (; j < textContentNorm.length; j++) {\n if (\n // keep consuming css identifiers (to get a decent chunk more quickly)\n textContentNorm[j].match(/[a-zA-Z0-9]/) ||\n // substring needs to be unique to this section\n textContentNorm.indexOf(textContentNorm.substring(0, j), 1) !== -1\n ) {\n continue;\n }\n break;\n }\n for (; j < textContentNorm.length; j++) {\n let startSubstring = textContentNorm.substring(0, j);\n // this substring should appears only once in overall text too\n let cssNormSplits = cssTextNorm.split(startSubstring);\n let splitNorm = -1;\n if (cssNormSplits.length === 2) {\n splitNorm = cssNormSplits[0].length;\n } else if (\n cssNormSplits.length > 2 &&\n cssNormSplits[0] === '' &&\n childNodes[i - 1].textContent !== ''\n ) {\n // this childNode has same starting content as previous\n splitNorm = cssTextNorm.indexOf(startSubstring, 1);\n } else if (cssNormSplits.length === 1) {\n // try to roll back to get multiple matches again\n startSubstring = startSubstring.substring(\n 0,\n startSubstring.length - 1,\n );\n cssNormSplits = cssTextNorm.split(startSubstring);\n if (cssNormSplits.length <= 1) {\n // no split possible\n splits.push(cssText);\n return splits;\n }\n j = jLimit + 1; // trigger end of search\n } else if (j === textContentNorm.length - 1) {\n // we're about to end loop without a split point\n splitNorm = cssTextNorm.indexOf(startSubstring);\n }\n if (cssNormSplits.length >= 2 && j > jLimit) {\n const prevTextContent = childNodes[i - 1].textContent;\n if (prevTextContent && typeof prevTextContent === 'string') {\n // pick the first matching point which respects the previous chunk's approx size\n const prevMinLength = normalizeCssString(prevTextContent).length;\n splitNorm = cssTextNorm.indexOf(startSubstring, prevMinLength);\n }\n if (splitNorm === -1) {\n // fall back to pick the first matching point of many\n splitNorm = cssNormSplits[0].length;\n }\n }\n if (splitNorm !== -1) {\n // find the split point in the original text\n let k = Math.floor(splitNorm / normFactor);\n for (; k > 0 && k < cssText.length; ) {\n iterCount += 1;\n if (iterCount > 50 * childNodes.length) {\n // quit for performance purposes\n splits.push(cssText);\n return splits;\n }\n const normPart = normalizeCssString(\n cssText.substring(0, k),\n _testNoPxNorm,\n );\n if (normPart.length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n cssTextNorm = cssTextNorm.substring(splitNorm);\n break;\n } else if (normPart.length < splitNorm) {\n k += Math.max(\n 1,\n Math.floor((splitNorm - normPart.length) / normFactor),\n );\n } else {\n k -= Math.max(\n 1,\n Math.floor((normPart.length - splitNorm) * normFactor),\n );\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText); // either the full thing if no splits were found, or the last split\n return splits;\n}\n\nexport function markCssSplits(\n cssText: string,\n style: HTMLStyleElement,\n): string {\n return splitCssText(cssText, style).join('/* rr_split */');\n}\n\n\n// TODO: Maybe depricated\n// export function getXPath(node: Node): string {\n//\n// if (node.nodeType === Node.DOCUMENT_NODE) {\n// // Корневой узел документа всегда возвращает \"/\"\n// return '/';\n// }\n//\n// if (node.nodeType === Node.DOCUMENT_TYPE_NODE) {\n// // Узел типа документа (DOCTYPE)\n// return '/html/doctype';\n// }\n//\n// if (node.nodeType === Node.ELEMENT_NODE) {\n// const element = node as Element;\n//\n// if (element.id) {\n// // Если у элемента есть уникальный ID, используем его\n// return `//*[@id=\"${element.id}\"]`;\n// }\n//\n// if (element.tagName && element.tagName.toLowerCase() === 'html') {\n// return '/html'\n// }\n//\n// if (element === document.head) {\n// return '/html/head'\n// }\n//\n// if (element === document.body) {\n// // Узел body\n// return '/html/body';\n// }\n//\n// const parentNode = element.parentNode;\n// // if (!parentNode || !(parentNode instanceof Element)) {\n// if (!parentNode) {\n// // Если родительский узел недоступен или не является элементом, путь построить нельзя\n// return '';\n// }\n//\n// const siblings = Array.from(parentNode.children).filter(\n// (sibling) => sibling.tagName === element.tagName\n// );\n//\n// const index = siblings.length > 1 ? `[${siblings.indexOf(element) + 1}]` : '';\n//\n// // Рекурсивное построение пути\n// return `${getXPath(parentNode)}/${element.tagName.toLowerCase()}${index}`;\n// }\n//\n// if (node.nodeType === Node.TEXT_NODE) {\n// const parent = node.parentNode;\n// if (!parent) {\n// // Если текстовый узел не имеет родителя, путь построить нельзя\n// return '';\n// }\n//\n// const textSiblings = Array.from(parent.childNodes).filter(\n// (sibling) => sibling.nodeType === Node.TEXT_NODE\n// );\n//\n// const index = textSiblings.length > 1 ? `[${textSiblings.indexOf((node as Element)) + 1}]` : '';\n//\n// return `${getXPath(parent)}/text()${index}`;\n// }\n//\n// if (node.nodeType === Node.CDATA_SECTION_NODE) {\n// const parent = node.parentNode;\n// if (!parent) {\n// return '';\n// }\n//\n// const cdataSiblings = Array.from(parent.childNodes).filter(\n// (sibling) => sibling.nodeType === Node.CDATA_SECTION_NODE\n// );\n//\n// const index = cdataSiblings.length > 1 ? `[${cdataSiblings.indexOf((node as Element)) + 1}]` : '';\n//\n// return `${getXPath(parent)}/text()${index}`;\n// }\n//\n// if (node.nodeType === Node.COMMENT_NODE) {\n// const parent = node.parentNode;\n// if (!parent) {\n// return '';\n// }\n//\n// const commentSiblings = Array.from(parent.childNodes).filter(\n// (sibling) => sibling.nodeType === Node.COMMENT_NODE\n// );\n//\n// const index = commentSiblings.length > 1 ? `[${commentSiblings.indexOf((node as Element)) + 1}]` : '';\n//\n// return `${getXPath(parent)}/comment()${index}`;\n// }\n//\n// return ''; // Если тип узла не поддерживается\n// }\n\nexport function isTextVisible(n: Text): boolean {\n // const parentElement = n.parentElement;\n // The parent node may not be a html element which has a tagName attribute.\n // So just let it be undefined which is ok in this use case.\n const parent = dom.parentNode(n);\n const parentElement = parent && (parent as Element);\n if (!parentElement) {\n return false;\n }\n const isParentVisible = isElementVisible(parentElement);\n if (!isParentVisible) {\n return false;\n }\n const textContent = n.textContent?.trim();\n return textContent !== '';\n}\n\nexport function isElementVisible(el: Element): boolean {\n const visibility = dom.getElementVisibility(el);\n return visibility.isVisible;\n}\n\n\nexport const interactiveEvents = [\n 'change',\n 'submit',\n 'dragstart',\n 'drop',\n 'pointerdown',\n 'pointerup',\n 'input',\n 'keydown',\n 'keyup',\n 'keypress',\n 'mouseenter',\n 'mouseleave',\n 'mouseup',\n 'mousedown',\n 'click',\n 'contextmenu',\n 'dblclick',\n 'focus',\n 'blur',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n]\n\nexport const interactiveTags = [\n 'a',\n 'button',\n 'input',\n 'select',\n 'textarea',\n 'label',\n 'details',\n 'summary',\n 'dialog',\n 'video',\n 'audio'\n];\n\n// Список атрибутов, которые могут содержать inline‑обработчики\nconst inlineEventAttributes = [\n 'onclick',\n 'ondblclick',\n 'onmousedown',\n 'onmouseup',\n 'onmouseover',\n 'onmouseout',\n 'onmousemove',\n 'onfocus',\n 'onblur',\n 'onkeydown',\n 'onkeypress',\n 'onkeyup',\n 'onchange',\n 'oninput',\n 'onsubmit',\n 'onreset',\n 'onselect',\n 'oncontextmenu',\n 'ontouchstart',\n 'ontouchmove',\n 'ontouchend',\n 'ontouchcancel'\n];\n\n// Глобальный реестр для хранения интерактивных элементов\nconst interactiveElementsRegistry = new WeakSet<Element>();\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst originalAddEventListener = EventTarget.prototype.addEventListener;\n\n// Переопределяем addEventListener\nEventTarget.prototype.addEventListener = function (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n) {\n\n originalAddEventListener.call(this, type, listener, options);\n if (this instanceof Element) {\n const eventType = type.toLowerCase();\n if (interactiveEvents.includes(eventType)) {\n interactiveElementsRegistry.add(this);\n }\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst originalRemoveEventListener = EventTarget.prototype.removeEventListener;\nEventTarget.prototype.removeEventListener = function (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n) {\n originalRemoveEventListener.call(this, type, listener, options);\n // Опционально: можно реализовать логику удаления элемента из реестра, если на нём больше интерактивных обработчиков.\n // Но часто это не требуется для задачи маркировки элемента как интерактивного.\n};\n\nfunction hasEventListeners(n: Node): boolean {\n return n instanceof Element && interactiveElementsRegistry.has(n);\n}\n\nexport function isElementInteractive(n: Node): boolean {\n\n if (n.nodeType === Node.ELEMENT_NODE) {\n const element = n as Element;\n const tagName = element.tagName.toLowerCase();\n\n if (interactiveTags.includes(tagName)) {\n return true;\n }\n\n const hasTabIndex =\n element.hasAttribute('tabindex') &&\n element.getAttribute('tabindex') !== '-1';\n const hasRoleInteractive = ['button', 'link', 'checkbox', 'switch', 'menuitem'].includes(\n element.getAttribute('role') || ''\n );\n const result =\n hasEventListeners(element) ||\n hasTabIndex ||\n hasRoleInteractive ||\n (element instanceof HTMLAnchorElement && element.hasAttribute('href')) ||\n (element instanceof HTMLButtonElement && !element.disabled);\n\n return result;\n }\n\n return false;\n}\n\nfunction inspectInlineEventHandlers() {\n const allElements = document.querySelectorAll('*');\n allElements.forEach((el) => {\n inlineEventAttributes.forEach((attr) => {\n if (el.hasAttribute(attr)) {\n interactiveElementsRegistry.add(el);\n }\n });\n });\n}\n\ntry {\n if (\n document.readyState === 'complete' ||\n document.readyState === 'interactive'\n ) {\n inspectInlineEventHandlers();\n // console.info('DOMContentLoaded and inspect called');\n } else {\n document.addEventListener('DOMContentLoaded', inspectInlineEventHandlers);\n // console.info('DOMContentLoaded and added handler');\n }\n} catch (error) { /* empty */ }\n","const fe = \"1.0\", ge = 10, U = {\n ANCHOR: 0.4,\n PATH: 0.3,\n TARGET: 0.2,\n UNIQUENESS: 0.1\n}, I = {\n SEMANTIC_TAG: 0.5,\n ROLE: 0.3,\n ARIA_LABEL: 0.1,\n STABLE_ID: 0.25,\n TEST_MARKER: 0.05,\n DEPTH_PENALTY_THRESHOLD: 5,\n DEPTH_PENALTY_FACTOR: 0.05,\n DEGRADED_SCORE: 0.3\n}, gt = {\n MIN_CONFIDENCE_FOR_SKIP: 0.7\n}, K = [\n \"form\",\n \"main\",\n \"nav\",\n \"section\",\n \"article\",\n \"footer\",\n \"header\"\n], J = [\n \"form\",\n \"navigation\",\n \"main\",\n \"region\",\n \"contentinfo\",\n \"complementary\",\n \"banner\",\n \"search\"\n], mt = [\n // HTML5 Semantic\n \"article\",\n \"aside\",\n \"details\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"header\",\n \"main\",\n \"mark\",\n \"nav\",\n \"section\",\n \"summary\",\n \"time\",\n // Form elements\n \"button\",\n \"datalist\",\n \"fieldset\",\n \"form\",\n \"input\",\n \"label\",\n \"legend\",\n \"meter\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"progress\",\n \"select\",\n \"textarea\",\n // Interactive\n \"a\",\n \"audio\",\n \"video\",\n \"canvas\",\n \"dialog\",\n \"menu\",\n // Text content\n \"blockquote\",\n \"dd\",\n \"dl\",\n \"dt\",\n \"hr\",\n \"li\",\n \"ol\",\n \"ul\",\n \"p\",\n \"pre\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n // Table\n \"caption\",\n \"col\",\n \"colgroup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"tr\",\n // SVG\n \"svg\",\n \"path\",\n \"circle\",\n \"rect\",\n \"line\",\n \"polyline\",\n \"polygon\",\n \"ellipse\",\n \"g\",\n \"text\",\n \"use\"\n], pt = [\n \"rect\",\n \"path\",\n \"circle\",\n \"line\",\n \"polyline\",\n \"polygon\",\n \"ellipse\",\n \"g\",\n \"text\",\n \"use\",\n \"defs\",\n \"clipPath\",\n \"mask\"\n], me = [\n \"aria-label\",\n \"aria-labelledby\",\n \"aria-describedby\",\n \"name\",\n \"type\",\n \"data-testid\",\n \"data-qa\",\n \"data-test\",\n \"href\",\n \"title\",\n \"placeholder\",\n \"alt\"\n], w = {\n // Test attributes (highest priority)\n \"data-testid\": 100,\n \"data-qa\": 99,\n \"data-cy\": 98,\n \"data-test\": 97,\n \"data-test-id\": 96,\n // ARIA (accessibility semantics)\n \"aria-label\": 90,\n \"aria-labelledby\": 85,\n \"aria-describedby\": 80,\n // Semantic HTML attributes\n name: 75,\n href: 70,\n // for <a>\n src: 70,\n // for <img>, <script>, etc.\n type: 65,\n role: 60,\n alt: 55,\n title: 50,\n for: 45,\n placeholder: 40,\n // Any data-* attribute (if not above)\n \"data-*\": 30,\n // Any aria-* attribute (if not above)\n \"aria-*\": 25\n}, V = /* @__PURE__ */ new Set([\n \"id\",\n // handled separately\n \"class\",\n // handled separately\n \"style\",\n // unstable\n \"xmlns\",\n // service attribute for SVG\n \"tabindex\",\n // can change\n \"contenteditable\"\n]), bt = {\n maxPathDepth: 10,\n enableSvgFingerprint: !0,\n confidenceThreshold: 0,\n fallbackToBody: !0,\n includeUtilityClasses: !1,\n source: \"dom-dsl\"\n}, yt = {\n strictMode: !1,\n enableFallback: !0,\n maxCandidates: 20,\n matchUrlsByPathOnly: !0\n};\nfunction P(r) {\n return !!(/^[a-z]+-\\d+$/i.test(r) || /^[a-z]+(-[a-z]+)+-\\d+$/i.test(r) || /^[a-z]+(_[a-z]+)*_\\d+$/i.test(r) || /^\\d+$/.test(r) || /^:[a-z0-9]+:$/i.test(r) || /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i.test(r) || /^[a-z]{1,3}[A-Za-z0-9]{8,}$/.test(r) && (/\\d/.test(r) || /[A-Z]/.test(r)) || /^radix-/.test(r) || /^mui-\\d+$/.test(r));\n}\nconst Q = /* @__PURE__ */ new Set([\n \"aria-labelledby\",\n \"aria-describedby\",\n \"aria-controls\",\n \"aria-owns\",\n \"aria-activedescendant\",\n \"for\",\n \"form\",\n \"list\",\n \"headers\",\n \"aria-details\",\n \"aria-errormessage\",\n \"aria-flowto\"\n]);\nfunction Y(r) {\n return r.trim().split(/\\s+/).some((e) => P(e));\n}\nclass St {\n constructor(t, e) {\n this.maxDepth = t.maxPathDepth ?? 10, this.cache = e;\n }\n /**\n * Finds the best anchor element for the target\n * @param target - Target element to find anchor for\n * @returns Anchor result or null if not found\n * @remarks\n * Special handling for root elements (html, head, body):\n * - For html: returns html itself as anchor\n * - For head or elements inside head: returns html as anchor\n * - For body: returns html as anchor\n */\n findAnchor(t) {\n if (this.cache) {\n const c = this.cache.getAnchor(t);\n if (c !== void 0)\n return c;\n }\n const e = t.tagName.toLowerCase(), s = t.ownerDocument;\n if (e === \"html\") {\n const c = {\n element: t,\n score: 1,\n tier: \"A\",\n depth: 0\n };\n return this.cacheResult(t, c), c;\n }\n if (e === \"head\" || this.isInsideHead(t)) {\n const c = s?.documentElement;\n if (c) {\n const u = {\n element: c,\n score: 1,\n tier: \"A\",\n depth: 0\n };\n return this.cacheResult(t, u), u;\n }\n }\n if (e === \"body\") {\n const c = s?.documentElement;\n if (c) {\n const u = {\n element: c,\n score: 1,\n tier: \"A\",\n depth: 0\n };\n return this.cacheResult(t, u), u;\n }\n }\n let n = t.parentElement, a = 0, i = null;\n for (; n && a < this.maxDepth; ) {\n if (n.tagName.toLowerCase() === \"body\")\n return i || {\n element: n,\n score: I.DEGRADED_SCORE,\n tier: \"C\",\n depth: a\n };\n const c = this.scoreAnchor(n);\n if (c > 0) {\n const u = this.applyDepthPenalty(c, a), d = this.getTier(n), l = { element: n, score: u, tier: d, depth: a };\n if (d === \"A\")\n return l;\n (!i || u > i.score) && (i = l);\n }\n n = n.parentElement, a++;\n }\n const o = i;\n return this.cache && this.cache.setAnchor(t, o), o;\n }\n /**\n * Scores an element as anchor candidate (without depth penalty)\n * @param element - Element to score\n * @returns Raw score from 0 to 1\n */\n scoreAnchor(t) {\n let e = 0;\n const s = t.tagName.toLowerCase();\n K.includes(s) && (e += I.SEMANTIC_TAG);\n const n = t.getAttribute(\"role\");\n n && J.includes(n) && (e += I.ROLE), (t.hasAttribute(\"aria-label\") || t.hasAttribute(\"aria-labelledby\")) && (e += I.ARIA_LABEL);\n const a = t.id;\n return a && !P(a) && (e += I.STABLE_ID), (t.hasAttribute(\"data-testid\") || t.hasAttribute(\"data-qa\") || t.hasAttribute(\"data-test\")) && (e += I.TEST_MARKER), Math.min(e, 1);\n }\n /**\n * Applies depth penalty to score\n * Following SPECIFICATION.md §7: depthPenalty = (depth - threshold) * factor\n */\n applyDepthPenalty(t, e) {\n if (e <= I.DEPTH_PENALTY_THRESHOLD)\n return t;\n const s = (e - I.DEPTH_PENALTY_THRESHOLD) * I.DEPTH_PENALTY_FACTOR;\n return Math.max(0, t - s);\n }\n /**\n * Determines the tier of an anchor element\n */\n getTier(t) {\n const e = t.tagName.toLowerCase();\n if (K.includes(e))\n return \"A\";\n const s = t.getAttribute(\"role\");\n return s && J.includes(s) ? \"B\" : \"C\";\n }\n /**\n * Checks if element is inside <head> section.\n * Stops at <body> to avoid false positives.\n * @param element - Element to check\n * @returns True if element is inside head, false otherwise\n * @remarks\n * Traverses up the DOM tree until finding head or body.\n * Returns false if body is encountered first.\n * @example\n * const meta = document.querySelector('meta');\n * if (isInsideHead(meta)) { ... }\n */\n isInsideHead(t) {\n let e = t.parentElement;\n for (; e; ) {\n const s = e.tagName.toLowerCase();\n if (s === \"head\") return !0;\n if (s === \"body\") return !1;\n e = e.parentElement;\n }\n return !1;\n }\n /**\n * Caches the anchor result for the target element\n * @param target - Target element\n * @param result - Anchor result to cache\n */\n cacheResult(t, e) {\n this.cache && this.cache.setAnchor(t, e);\n }\n}\nconst At = [\n // CSS-in-JS\n /^css-[a-z0-9]+$/i,\n /^sc-[a-z0-9]+-\\d+$/i,\n /^[a-z]{5,8}$/i,\n // Short generated classes (abcdef)\n // Material-UI / MUI\n /^Mui[A-Z]\\w+-\\w+-\\w+/,\n /^makeStyles-\\w+-\\d+$/,\n // JSS\n /^jss\\d+$/,\n // Emotion / Linaria\n /^(emotion|linaria)-[a-z0-9]+/i,\n // Component libraries with hashes\n /^(chakra|tw-|ant-)[a-z0-9]+-\\w+/i,\n // Hash-based (hashes in classes)\n /-[a-f0-9]{6,}$/i,\n /^_[a-z0-9]{5,}$/i,\n /\\d{5,}/\n // 5+ digits in a row\n], xt = [\n // === FIX 4: Tailwind arbitrary values and variants (highest priority) ===\n /^\\[/,\n // Any arbitrary value or variant starting with [ (e.g., [&_svg]:..., [mask-type:luminance])\n // === FIX 4: Pseudo-class variants (must be before specific patterns) ===\n /^(first|last|odd|even|only|first-of-type|last-of-type|only-of-type):/,\n // first:, last:, etc.\n /^(hover|focus|active|disabled|enabled|checked|indeterminate|default|required|valid|invalid|in-range|out-of-range|placeholder-shown|autofill|read-only):/,\n // State pseudo-classes\n /^(focus-within|focus-visible|visited|target|open):/,\n // Advanced pseudo-classes\n // === FIX 4: Responsive variants (must be before specific patterns) ===\n /^(sm|md|lg|xl|2xl|3xl|4xl|5xl|6xl|7xl):/,\n // === FIX 4: Dark mode and directional variants ===\n /^dark:/,\n /^(rtl|ltr):/,\n // === FIX 4: Group and peer variants ===\n /^(group|peer)(-hover|-focus|-active)?:/,\n // === FIX 4: Tailwind utilities with fraction values ===\n /\\/([\\d.]+|full|auto|screen)$/,\n // /50, /100, /full, /auto, /screen\n // === FIX 4: Positioning utilities ===\n /^(inset|top|right|bottom|left)(-|$)/,\n // inset-0, top-0, left-0\n // === Layout & Display ===\n /^(flex|inline-flex|grid|block|inline|inline-block|hidden|visible)$/,\n /^(absolute|relative|fixed|sticky|static)$/,\n // === Flexbox & Grid ===\n /^(items|justify|content|self|place)-/,\n /^flex-(row|col|wrap|nowrap|1|auto|initial|none)/,\n /^grid-(cols|rows|flow)/,\n // === Spacing (Tailwind) ===\n /^(gap|space)-/,\n /^[mp][trblxy]?-(\\d+|auto|px)$/,\n // === Negative Tailwind utilities (margins, positioning, transforms) ===\n /^-[mp][trblxy]?-\\d+$/,\n // -m-4, -mt-2, -mx-4, -px-4, -py-2\n /^-(top|right|bottom|left|inset)-\\d+$/,\n // -top-4, -bottom-6, -left-6, -inset-0\n /^-z-\\d+$/,\n // -z-10, -z-20\n /^-space-[xy]-\\d+$/,\n // -space-x-2, -space-y-4\n /^-translate-[xy]-\\d+$/,\n // -translate-x-4, -translate-y-2\n /^-rotate-\\d+$/,\n // -rotate-45, -rotate-90\n /^-scale-\\d+$/,\n // -scale-50, -scale-75\n /^-skew-[xy]-\\d+$/,\n // -skew-x-12, -skew-y-6\n // === Sizing ===\n /^(w|h|min-w|min-h|max-w|max-h|size)-/,\n // === Colors & Styling ===\n // Note: text-* can be semantic (text-muted, text-primary) or utility (text-center, text-lg)\n // More specific patterns for utility text-* classes\n /^text-(center|left|right|justify|start|end|xs|sm|base|lg|xl|2xl|3xl|4xl|5xl|6xl|7xl|8xl|9xl)$/,\n /^text-(uppercase|lowercase|capitalize|normal-case|underline|line-through|no-underline)$/,\n /^text-(truncate|ellipsis|clip)$/,\n /^(bg|border|ring|shadow|outline)-/,\n /^rounded(-|$)/,\n // === Typography ===\n /^(font|leading|tracking|whitespace|break|truncate)-/,\n /^(uppercase|lowercase|capitalize|normal-case)$/,\n // === Transform & Animation (IMPORTANT!) ===\n /^(transform|transition|duration|delay|ease|animate)-/,\n /^(scale|rotate|translate|skew)-/,\n /^transform$/,\n /^backdrop-blur-/,\n /^motion-/,\n // Framer Motion\n /^(fade|slide|zoom|bounce|pulse|spin|ping)-/,\n // animations\n // === Overflow & Scrolling ===\n /^(overflow|overscroll|scroll)-/,\n /^object-(contain|cover|fill|none|scale-down)$/,\n // === Interactivity ===\n /^(cursor|pointer-events|select|resize)-/,\n // === Visibility & Opacity ===\n /^(opacity|z)-/,\n /^(visible|invisible|collapse)$/,\n // === Bootstrap utilities ===\n /^d-(none|inline|inline-block|block|grid|table|flex)$/,\n /^(float|clearfix|text)-(left|right|center|justify|start|end)$/,\n /^(m|p)[trblxy]?-[0-5]$/,\n /^(w|h)-(25|50|75|100|auto)$/,\n // Note: btn-* classes are semantic (component classes), not utility\n // /^btn-(primary|secondary|success|danger|warning|info|light|dark|link)$/,\n /^btn-(sm|lg|block)$/,\n // Only size modifiers are utility\n /^text-(muted|primary|success|danger|warning|info|light|dark|white)$/,\n /^bg-(primary|secondary|success|danger|warning|info|light|dark|white|transparent)$/,\n /^border(-top|-bottom|-left|-right)?(-0)?$/,\n /^rounded(-top|-bottom|-left|-right|-circle|-pill|-0)?$/,\n /^shadow(-sm|-lg|-none)?$/,\n /^(align|justify|order|flex)-(start|end|center|between|around|fill|grow|shrink)$/,\n /^col(-sm|-md|-lg|-xl)?(-\\d+|-auto)?$/,\n /^row(-cols)?(-\\d+)?$/,\n /^g[xy]?-[0-5]$/,\n /^(show|hide|invisible|visible)$/,\n /^(position|top|bottom|start|end)-(static|relative|absolute|fixed|sticky|-\\d+)$/,\n // === Common utility patterns ===\n /^(row|col)$/,\n /^clearfix$/,\n /^pull-(left|right)$/,\n /^float-(left|right|none)$/\n], Ct = [\n // === Navigation ===\n /^(nav|menu|header|footer|sidebar|topbar|navbar|breadcrumb)/,\n /(navigation|dropdown|megamenu)$/,\n // === Components ===\n /^(btn|button|link|card|modal|dialog|popup|tooltip|alert|badge|chip)/,\n /^(form|input|select|checkbox|radio|textarea|label|fieldset)/,\n /^(table|list|item|row|cell|column)/,\n /^(accordion|tab|carousel|slider|gallery)/,\n // === Content ===\n /^(content|main|article|post|comment|title|subtitle|description|caption)/,\n /^(hero|banner|jumbotron|section|wrapper|box)/,\n // === User/Data ===\n /^(user|profile|avatar|account|auth)/,\n /^(product|item|price|cart|checkout|order)/,\n // === Layout sections ===\n /^(page|layout|panel|widget|block)/,\n // === States (semantic naming) ===\n /-(primary|secondary|tertiary|success|error|warning|info|danger)$/,\n /-(active|inactive|disabled|enabled|selected|highlighted|focused)$/,\n /-(open|closed|expanded|collapsed|visible|hidden)$/,\n /-(large|medium|small|tiny|xs|sm|md|lg|xl)$/,\n // === Action buttons ===\n /^(submit|cancel|close|delete|edit|save|back|next|prev|search)/,\n // === Status ===\n /^(loading|pending|complete|failed|draft|published)/\n];\nfunction O(r) {\n return At.some((t) => t.test(r));\n}\nfunction _(r) {\n return r.length <= 2 || /^\\d/.test(r) ? !0 : xt.some((t) => t.test(r));\n}\nfunction Tt(r) {\n return O(r) || _(r) ? !1 : Ct.some((t) => t.test(r));\n}\nfunction Et(r) {\n return !O(r) && !_(r);\n}\nfunction M(r) {\n return r.filter((t) => Et(t));\n}\nfunction wt(r) {\n if (O(r) || _(r))\n return 0;\n let t = 0.5;\n return Tt(r) && (t = 0.8), r.length < 3 ? t *= 0.3 : r.length < 5 && (t *= 0.6), /\\d/.test(r) && (t *= 0.7), Math.min(t, 1);\n}\nfunction vt(r) {\n const t = [], e = [];\n for (const s of r)\n _(s) || O(s) ? e.push(s) : t.push(s);\n return { semantic: t, utility: e };\n}\nfunction tt(r) {\n return _(r) || O(r);\n}\nfunction pe(r) {\n return wt(r);\n}\nconst et = (r) => r.replace(/([#:.[\\]@])/g, \"\\\\$1\");\nclass $t {\n constructor(t, e) {\n this.maxDepth = t.maxPathDepth ?? 10, this.cache = e;\n }\n /**\n * Builds path from anchor to target (excluding both)\n * @param anchor - Anchor element (start)\n * @param target - Target element (end)\n * @param extractor - Semantic extractor instance\n * @returns Path build result with nodes and degradation info\n * @remarks\n * Special handling for root elements:\n * - If anchor is html and target is head/body: returns empty path\n * - If anchor is html and target is inside head: builds path through head\n */\n buildPath(t, e, s) {\n const n = t.tagName.toLowerCase(), a = e.tagName.toLowerCase();\n if (n === \"html\" && (a === \"head\" || a === \"body\"))\n return {\n path: [],\n degraded: !1\n };\n if (n === \"html\" && this.isInsideHead(e))\n return this.buildHeadPath(t, e, s);\n const i = [];\n let o = e.parentElement;\n for (; o && o !== t && i.length < this.maxDepth; )\n i.unshift(o), o = o.parentElement;\n const c = i.length >= this.maxDepth && o !== t;\n if (!c && o !== t)\n return console.warn(\"[PathBuilder] Target is not a descendant of anchor\"), {\n path: [],\n degraded: !0,\n degradationReason: \"target-not-descendant-of-anchor\"\n };\n let u = this.filterNoise(i);\n return u = this.ensureUniqueness(i, u, t, e, s), {\n path: u.map((l) => {\n const h = l.parentElement;\n let g;\n if (h) {\n const m = Array.from(h.children).indexOf(l);\n m !== -1 && (g = m + 1);\n }\n return {\n tag: l.tagName.toLowerCase(),\n semantics: s.extract(l),\n score: s.scoreElement(l),\n nthChild: g\n };\n }),\n degraded: c,\n degradationReason: c ? \"path-depth-overflow\" : void 0\n };\n }\n /**\n * Legacy method for backward compatibility\n */\n buildPathNodes(t, e, s) {\n return this.buildPath(t, e, s).path;\n }\n /**\n * Ensures path uniqueness by adding nodes if needed\n * Following SPECIFICATION.md §8 Disambiguation Algorithm\n */\n ensureUniqueness(t, e, s, n, a) {\n const i = this.buildTestSelector(s, e, n);\n try {\n const o = n.ownerDocument;\n if (!o) return e;\n let c;\n if (this.cache) {\n const d = this.cache.getSelectorResults(i);\n d !== void 0 ? c = d : (c = Array.from(o.querySelectorAll(i)), this.cache.setSelectorResults(i, c));\n } else\n c = o.querySelectorAll(i);\n if (c.length <= 1)\n return e;\n const u = t.filter((d) => !e.includes(d));\n for (const d of u) {\n if (a.scoreElement(d) < gt.MIN_CONFIDENCE_FOR_SKIP)\n continue;\n const h = this.insertNodeInOrder(e, d, t), g = this.buildTestSelector(s, h, n);\n try {\n let f;\n if (this.cache) {\n const m = this.cache.getSelectorResults(g);\n m !== void 0 ? f = m : (f = Array.from(o.querySelectorAll(g)), this.cache.setSelectorResults(g, f));\n } else\n f = o.querySelectorAll(g);\n if (f.length === 1)\n return h;\n f.length < c.length && (e = h);\n } catch {\n }\n }\n return e;\n } catch {\n return e;\n }\n }\n /**\n * Inserts node into path maintaining original order\n */\n insertNodeInOrder(t, e, s) {\n const n = s.indexOf(e), a = [...t];\n let i = 0;\n for (let o = 0; o < a.length && !(s.indexOf(a[o]) > n); o++)\n i = o + 1;\n return a.splice(i, 0, e), a;\n }\n /**\n * Builds a test CSS selector from path\n */\n buildTestSelector(t, e, s) {\n const n = [];\n n.push(this.elementToSelector(t));\n for (const a of e)\n n.push(this.elementToSelector(a));\n return n.push(this.elementToSelector(s)), n.join(\" \");\n }\n /**\n * Converts element to basic CSS selector\n */\n elementToSelector(t) {\n let e = t.tagName.toLowerCase();\n t.id && !P(t.id) && (e += `#${et(t.id)}`);\n for (const s of Array.from(t.classList))\n tt(s) || (e += `.${et(s)}`);\n return e;\n }\n /**\n * Filters out noise/layout elements\n */\n filterNoise(t) {\n return t.filter((e) => this.shouldInclude(e));\n }\n /**\n * Determines if element should be included in path\n */\n shouldInclude(t) {\n const e = t.tagName.toLowerCase();\n return mt.includes(e) ? !0 : e === \"div\" || e === \"span\" ? this.hasSemanticFeatures(t) : !1;\n }\n /**\n * Checks if element has meaningful semantic features\n */\n hasSemanticFeatures(t) {\n if (t.hasAttribute(\"role\")) return !0;\n for (const s of Array.from(t.attributes))\n if (s.name.startsWith(\"aria-\")) return !0;\n if (t.classList.length > 0) {\n for (const s of Array.from(t.classList))\n if (!tt(s)) return !0;\n }\n if (t.hasAttribute(\"data-testid\") || t.hasAttribute(\"data-qa\") || t.hasAttribute(\"data-test\"))\n return !0;\n const e = t.id;\n return !!(e && !P(e));\n }\n /**\n * Checks if element is inside <head> section.\n * Stops at <body> to avoid false positives.\n * @param element - Element to check\n * @returns True if element is inside head, false otherwise\n * @remarks\n * Traverses up the DOM tree until finding head or body.\n * Returns false if body is encountered first.\n */\n isInsideHead(t) {\n let e = t.parentElement;\n for (; e; ) {\n const s = e.tagName.toLowerCase();\n if (s === \"head\") return !0;\n if (s === \"body\") return !1;\n e = e.parentElement;\n }\n return !1;\n }\n /**\n * Builds path from html to target through head element.\n * Always includes head in the path for correct CSS selector generation.\n * @param htmlElement - The html element (anchor)\n * @param target - Target element inside head\n * @param extractor - Semantic extractor instance\n * @returns Path build result with head and intermediate nodes\n * @example\n * For <html><head><meta name=\"description\"></head></html>\n * Returns path: [head]\n */\n buildHeadPath(t, e, s) {\n const n = [];\n let a = e.parentElement;\n for (; a && a !== t; )\n n.unshift(a), a = a.parentElement;\n return a !== t ? {\n path: [],\n degraded: !0,\n degradationReason: \"target-not-descendant-of-html\"\n } : n.findIndex((c) => c.tagName.toLowerCase() === \"head\") === -1 ? {\n path: [],\n degraded: !0,\n degradationReason: \"head-not-found-in-path\"\n } : {\n path: n.map((c) => {\n const u = c.parentElement;\n let d;\n if (u) {\n const h = Array.from(u.children).indexOf(c);\n h !== -1 && (d = h + 1);\n }\n return {\n tag: c.tagName.toLowerCase(),\n semantics: s.extract(c),\n score: s.scoreElement(c),\n nthChild: d\n };\n }),\n degraded: !1\n };\n }\n}\nfunction F(r) {\n return r ? r.trim().replace(/[\\n\\t\\r]/g, \" \").replace(/\\s+/g, \" \") : \"\";\n}\nconst Nt = {\n preserveQueryForAbsolute: !0,\n removeDynamicHashes: !0\n};\nfunction It(r) {\n return r ? [\n /\\d{5,}/,\n // 5+ digits\n /[a-f0-9]{8,}/i,\n // hex hash 8+ characters\n /(session|token|temp|random|timestamp|nonce|cache)/i,\n // dynamic words\n /^\\d+$/,\n // only digits\n /^[a-f0-9-]{32,}$/i\n // UUID-like\n ].some((e) => e.test(r)) : !1;\n}\nfunction Rt(r, t) {\n if (!r) return r;\n const e = r.startsWith(\"http://\") || r.startsWith(\"https://\"), [s, n] = r.split(\"#\"), [a, i] = s.split(\"?\");\n let o = a;\n return e && t.preserveQueryForAbsolute && i && (o += `?${i}`), n && (t.removeDynamicHashes && It(n) || (o += `#${n}`)), o;\n}\nfunction D(r, t, e = {}) {\n if (!t) return t;\n const s = { ...Nt, ...e };\n return r === \"href\" || r === \"src\" ? Rt(t, s) : t;\n}\nconst Dt = [\n \"role\",\n \"aria-label\",\n \"aria-labelledby\",\n \"aria-describedby\",\n \"aria-controls\",\n \"aria-owns\",\n \"aria-level\",\n \"aria-posinset\",\n \"aria-setsize\",\n \"aria-haspopup\"\n], Mt = [\n \"aria-selected\",\n \"aria-checked\",\n \"aria-pressed\",\n \"aria-expanded\",\n \"aria-hidden\",\n \"aria-disabled\",\n \"aria-current\",\n \"aria-busy\",\n \"aria-invalid\",\n \"aria-grabbed\",\n \"aria-live\",\n \"aria-atomic\"\n], Pt = [\n \"data-state\",\n \"data-active\",\n \"data-inactive\",\n \"data-selected\",\n \"data-open\",\n \"data-closed\",\n \"data-visible\",\n \"data-hidden\",\n \"data-disabled\",\n \"data-enabled\",\n \"data-loading\",\n \"data-error\",\n \"data-success\",\n \"data-highlighted\",\n \"data-focused\",\n \"data-hover\",\n \"data-orientation\",\n \"data-theme\"\n], Ht = [\n \"data-radix-\",\n \"data-headlessui-\",\n \"data-reach-\",\n \"data-mui-\",\n \"data-chakra-\",\n \"data-mantine-\",\n \"data-tw-\"\n], Lt = [\n \"data-testid\",\n \"data-test-id\",\n \"data-test\",\n \"data-cy\",\n \"data-qa\",\n \"data-automation-id\",\n \"data-id\",\n \"data-component\",\n \"data-entity-id\",\n \"data-product-id\",\n \"data-user-id\"\n], kt = [\n // Google Analytics / GTM\n \"data-ga\",\n \"data-gtm\",\n \"data-google\",\n \"data-layer\",\n \"data-event\",\n // Yandex Metrica\n \"data-yandex\",\n \"data-ym\",\n \"data-metrika\",\n // A/B Testing\n \"data-optimizely\",\n \"data-vwo\",\n \"data-optimize\",\n // Session Recording\n \"data-hj\",\n \"data-hotjar\",\n \"data-fs\",\n \"data-mouseflow\",\n \"data-mf\",\n \"data-smartlook\",\n \"data-sl\",\n // Social / Ad Pixels\n \"data-fb\",\n \"data-facebook\",\n \"data-tt\",\n \"data-li\",\n // Generic Tracking\n \"data-track\",\n \"data-tracking\",\n \"data-click\",\n \"data-impression\",\n \"data-conversion\",\n \"data-segment\",\n \"data-analytics\"\n], qt = [\n \"data-category\",\n // Google Analytics category\n \"data-action\",\n // Google Analytics action\n \"data-label\",\n // Google Analytics label\n \"data-value\"\n // Google Analytics value\n], Ot = [\n \"id\",\n \"name\",\n \"type\",\n \"placeholder\",\n \"title\",\n \"for\",\n \"alt\",\n \"href\"\n], _t = [\n \"disabled\",\n \"checked\",\n \"selected\",\n \"hidden\",\n \"readonly\",\n \"required\",\n \"value\"\n], Ut = [\n /^radix-/,\n /^headlessui-/,\n /^mui-/,\n /:\\w+:/\n // matches :ru:, :r1:, etc.\n];\nfunction zt(r, t) {\n return Dt.includes(r) ? !0 : Mt.includes(r) || Pt.includes(r) || Ht.some((e) => r.startsWith(e)) ? !1 : Lt.includes(r) ? !0 : kt.some((e) => r.startsWith(e)) || qt.includes(r) ? !1 : r.startsWith(\"data-\") && r.endsWith(\"-id\") ? !0 : r === \"id\" ? !Ut.some((e) => e.test(t)) : Ot.includes(r) ? !0 : _t.includes(r) ? !1 : !!r.startsWith(\"data-\");\n}\nclass st {\n constructor(t, e) {\n this.includeUtilityClasses = t.includeUtilityClasses ?? !1, this.cache = e;\n }\n /**\n * Extracts semantic features from element\n * @param element - DOM element to extract from\n * @returns Semantic features object\n */\n extract(t) {\n if (this.cache) {\n const i = this.cache.getSemantics(t);\n if (i !== void 0)\n return i;\n }\n const e = {}, s = t.id;\n if (s && !P(s) && (e.id = s), t.classList.length > 0) {\n const i = Array.from(t.classList);\n if (this.includeUtilityClasses)\n e.classes = i;\n else {\n const { semantic: o } = vt(i);\n o.length > 0 && (e.classes = o);\n }\n }\n const n = this.extractAttributes(t);\n Object.keys(n).length > 0 && (e.attributes = n);\n const a = t.getAttribute(\"role\");\n if (a && (e.role = a), this.shouldExtractText(t)) {\n const i = this.extractText(t);\n i && (e.text = i);\n }\n return this.cache && this.cache.setSemantics(t, e), e;\n }\n /**\n * Scores element based on semantic richness\n * @param element - Element to score\n * @returns Score from 0 to 1\n */\n scoreElement(t) {\n let e = 0.5;\n const s = this.extract(t);\n return s.id && (e += 0.15), s.classes && s.classes.length > 0 && (e += 0.1), s.attributes && Object.keys(s.attributes).length > 0 && (e += 0.1), s.role && (e += 0.1), s.text && (e += 0.05), Math.min(e, 1);\n }\n /**\n * Checks if attribute should be ignored\n * @param attrName - Attribute name\n * @returns True if should be ignored\n */\n shouldIgnoreAttribute(t) {\n return !!(V.has(t) || t.startsWith(\"on\") || t.startsWith(\"ng-\") || t.startsWith(\"_ng\") || t.startsWith(\"data-reactid\") || t.startsWith(\"data-react\") || t.startsWith(\"data-v-\"));\n }\n /**\n * Gets attribute priority\n * @param attrName - Attribute name\n * @returns Priority number (higher = more priority)\n */\n getAttributePriority(t) {\n return w[t] !== void 0 ? w[t] : t.startsWith(\"data-\") ? w[\"data-*\"] : t.startsWith(\"aria-\") ? w[\"aria-*\"] : 0;\n }\n /**\n * Checks if attribute value is dynamic (should be ignored)\n * @param value - Attribute value\n * @returns True if value is dynamic\n */\n isDynamicValue(t) {\n return [\n /^[a-f0-9]{32,}$/i,\n // Long hashes\n /^\\d{10,}$/,\n // Timestamp\n /^(undefined|null|\\[object)/,\n // JS artifacts\n /^{{.*}}$/\n // Template literals\n ].some((s) => s.test(t));\n }\n /**\n * Extracts relevant semantic attributes from element\n * Iterates through all attributes and filters by priority\n */\n extractAttributes(t) {\n const e = {};\n for (const s of Array.from(t.attributes)) {\n const n = s.name;\n if (this.shouldIgnoreAttribute(n) || !zt(n, s.value) || Q.has(n) && Y(s.value) || this.getAttributePriority(n) === 0) continue;\n const i = n === \"href\" || n === \"src\" ? D(n, s.value) : s.value;\n !i || i.trim() === \"\" || this.isDynamicValue(i) || (e[n] = i);\n }\n return e;\n }\n /**\n * Extracts and normalizes text content\n */\n extractText(t) {\n const e = this.getDirectTextContent(t);\n if (!e) return null;\n const s = F(e);\n if (!s) return null;\n const n = 100, a = e.length > n ? e.slice(0, n) + \"...\" : e, i = s.length > n ? s.slice(0, n) + \"...\" : s;\n return {\n raw: a,\n normalized: i\n };\n }\n /**\n * Gets direct text content excluding child elements\n */\n getDirectTextContent(t) {\n const e = [];\n for (const s of Array.from(t.childNodes))\n if (s.nodeType === Node.TEXT_NODE && s.textContent) {\n const n = s.textContent.trim();\n n && e.push(n);\n }\n return e.length > 0 ? e.join(\" \") : t.textContent ?? null;\n }\n /**\n * Determines if text should be extracted for this element\n */\n shouldExtractText(t) {\n const e = t.tagName.toLowerCase();\n return [\n \"button\",\n \"a\",\n \"label\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"p\",\n \"span\",\n \"li\",\n \"th\",\n \"td\",\n \"dt\",\n \"dd\",\n \"legend\",\n \"figcaption\",\n \"summary\"\n ].includes(e);\n }\n}\nclass Ft {\n /**\n * Generates fingerprint for SVG element\n * @param element - SVG element to fingerprint\n * @returns SVG fingerprint object\n */\n fingerprint(t) {\n const e = t.tagName.toLowerCase(), s = this.getShape(e), n = {\n shape: s,\n hasAnimation: this.hasAnimation(t)\n };\n if (s === \"path\") {\n const o = t.getAttribute(\"d\");\n o && (n.dHash = this.computePathHash(o));\n } else [\"circle\", \"rect\", \"ellipse\", \"line\"].includes(s) && (n.geomHash = this.computeGeomHash(t, s));\n const a = t.getAttribute(\"role\");\n a && (n.role = a);\n const i = t.querySelector(\"title\");\n return i?.textContent && (n.titleText = i.textContent.trim()), n;\n }\n /**\n * Computes hash from path data (first N commands)\n * @param d - SVG path d attribute value\n * @returns Hash string\n */\n computePathHash(t) {\n const e = this.normalizePathData(t);\n return this.simpleHash(e);\n }\n /**\n * Gets the shape type from tag name\n */\n getShape(t) {\n return [\n \"path\",\n \"circle\",\n \"rect\",\n \"line\",\n \"polyline\",\n \"polygon\",\n \"ellipse\",\n \"g\",\n \"text\",\n \"use\",\n \"svg\"\n ].find((s) => s === t) ?? \"path\";\n }\n /**\n * Normalizes path data for consistent hashing\n */\n normalizePathData(t) {\n return (t.match(/[MLHVCSQTAZ][^MLHVCSQTAZ]*/gi) ?? []).slice(0, 5).map((n) => n.trim().replace(/(-?\\d+\\.?\\d*)/g, (a) => parseFloat(a).toFixed(1))).join(\" \");\n }\n /**\n * Computes geometry hash for non-path shapes\n */\n computeGeomHash(t, e) {\n const s = [];\n switch (e) {\n case \"circle\":\n s.push(`r=${t.getAttribute(\"r\") ?? \"0\"}`);\n break;\n case \"rect\":\n {\n const n = parseFloat(t.getAttribute(\"width\") ?? \"0\"), a = parseFloat(t.getAttribute(\"height\") ?? \"0\");\n n > 0 && a > 0 && s.push(`ratio=${(n / a).toFixed(2)}`);\n }\n break;\n case \"ellipse\":\n {\n const n = parseFloat(t.getAttribute(\"rx\") ?? \"0\"), a = parseFloat(t.getAttribute(\"ry\") ?? \"0\");\n n > 0 && a > 0 && s.push(`ratio=${(n / a).toFixed(2)}`);\n }\n break;\n case \"line\":\n {\n const n = parseFloat(t.getAttribute(\"x1\") ?? \"0\"), a = parseFloat(t.getAttribute(\"y1\") ?? \"0\"), i = parseFloat(t.getAttribute(\"x2\") ?? \"0\"), o = parseFloat(t.getAttribute(\"y2\") ?? \"0\"), c = Math.atan2(o - a, i - n);\n s.push(`angle=${c.toFixed(2)}`);\n }\n break;\n }\n return this.simpleHash(s.join(\";\"));\n }\n /**\n * Detects animations on SVG element\n */\n hasAnimation(t) {\n if (t.querySelector(\"animate, animateTransform, animateMotion\"))\n return !0;\n const e = t.ownerDocument;\n if (e?.defaultView)\n try {\n const s = e.defaultView.getComputedStyle(t);\n if (s.animationName !== \"none\" || s.transitionProperty !== \"all\" && s.transitionProperty !== \"none\")\n return !0;\n } catch {\n }\n return !1;\n }\n /**\n * Simple hash function for fingerprinting (not cryptographic)\n */\n simpleHash(t) {\n let e = 0;\n for (let s = 0; s < t.length; s++) {\n const n = t.charCodeAt(s);\n e = (e << 5) - e + n, e = e & e;\n }\n return Math.abs(e).toString(16).padStart(8, \"0\");\n }\n}\nfunction jt(r, t = 0) {\n const e = r.anchor.score, s = r.path.length > 0 ? r.path.reduce((o, c) => o + c.score, 0) / r.path.length : 0.5, n = r.target.score, a = e * U.ANCHOR + s * U.PATH + n * U.TARGET + t * U.UNIQUENESS, i = r.anchor.degraded ? 0.2 : 0;\n return Math.max(0, Math.min(1, a - i));\n}\nfunction be(r, t, e) {\n let s = 0.5;\n return t && (s += 0.2), e && (s += 0.15), s += Math.min(r * 0.05, 0.15), Math.min(s, 1);\n}\nclass Wt {\n constructor(t) {\n this.cache = /* @__PURE__ */ new Map(), this.maxSize = t;\n }\n get(t) {\n const e = this.cache.get(t);\n if (e !== void 0)\n return this.cache.delete(t), this.cache.set(t, e), e;\n }\n set(t, e) {\n if (this.cache.has(t))\n this.cache.delete(t);\n else if (this.cache.size >= this.maxSize) {\n const s = this.cache.keys().next().value;\n s !== void 0 && this.cache.delete(s);\n }\n this.cache.set(t, e);\n }\n has(t) {\n return this.cache.has(t);\n }\n delete(t) {\n this.cache.delete(t);\n }\n clear() {\n this.cache.clear();\n }\n get size() {\n return this.cache.size;\n }\n}\nclass Bt {\n constructor(t = {}) {\n this.eidCache = /* @__PURE__ */ new WeakMap(), this.selectorResultCache = new Wt(\n t.maxSelectorCacheSize ?? 1e3\n ), this.anchorCache = /* @__PURE__ */ new WeakMap(), this.semanticsCache = /* @__PURE__ */ new WeakMap(), this.stats = {\n eidHits: 0,\n eidMisses: 0,\n selectorHits: 0,\n selectorMisses: 0,\n anchorHits: 0,\n anchorMisses: 0,\n semanticsHits: 0,\n semanticsMisses: 0,\n selectorCacheSize: 0,\n maxSelectorCacheSize: t.maxSelectorCacheSize ?? 1e3\n };\n }\n /**\n * Get cached EID for element\n */\n getEID(t) {\n const e = this.eidCache.get(t);\n if (e !== void 0)\n return this.stats.eidHits++, e;\n this.stats.eidMisses++;\n }\n /**\n * Cache EID for element\n */\n setEID(t, e) {\n this.eidCache.set(t, e);\n }\n /**\n * Get cached selector results\n */\n getSelectorResults(t) {\n const e = this.selectorResultCache.get(t);\n if (e !== void 0)\n return this.stats.selectorHits++, this.stats.selectorCacheSize = this.selectorResultCache.size, e;\n this.stats.selectorMisses++, this.stats.selectorCacheSize = this.selectorResultCache.size;\n }\n /**\n * Cache selector results\n */\n setSelectorResults(t, e) {\n this.selectorResultCache.set(t, e), this.stats.selectorCacheSize = this.selectorResultCache.size;\n }\n /**\n * Get cached anchor result\n */\n getAnchor(t) {\n if (this.anchorCache.has(t))\n return this.stats.anchorHits++, this.anchorCache.get(t);\n this.stats.anchorMisses++;\n }\n /**\n * Cache anchor result\n */\n setAnchor(t, e) {\n this.anchorCache.set(t, e);\n }\n /**\n * Get cached semantics\n */\n getSemantics(t) {\n const e = this.semanticsCache.get(t);\n if (e !== void 0)\n return this.stats.semanticsHits++, e;\n this.stats.semanticsMisses++;\n }\n /**\n * Cache semantics\n */\n setSemantics(t, e) {\n this.semanticsCache.set(t, e);\n }\n /**\n * Clear all caches\n */\n clear() {\n this.selectorResultCache.clear(), this.stats.selectorCacheSize = 0, this.stats = {\n eidHits: 0,\n eidMisses: 0,\n selectorHits: 0,\n selectorMisses: 0,\n anchorHits: 0,\n anchorMisses: 0,\n semanticsHits: 0,\n semanticsMisses: 0,\n selectorCacheSize: 0,\n maxSelectorCacheSize: this.stats.maxSelectorCacheSize\n };\n }\n /**\n * Invalidate cache for a specific element\n * Note: WeakMaps don't support deletion, but we can clear selector cache\n * if needed. This method is mainly for future extensibility.\n */\n invalidateElement(t) {\n }\n /**\n * Invalidate a specific selector from cache\n */\n invalidateSelector(t) {\n this.selectorResultCache.delete(t), this.stats.selectorCacheSize = this.selectorResultCache.size;\n }\n /**\n * Get cache statistics\n */\n getStats() {\n return {\n ...this.stats,\n selectorCacheSize: this.selectorResultCache.size\n };\n }\n /**\n * Get cache hit rate for EID cache\n */\n getEIDHitRate() {\n const t = this.stats.eidHits + this.stats.eidMisses;\n return t > 0 ? this.stats.eidHits / t : 0;\n }\n /**\n * Get cache hit rate for selector cache\n */\n getSelectorHitRate() {\n const t = this.stats.selectorHits + this.stats.selectorMisses;\n return t > 0 ? this.stats.selectorHits / t : 0;\n }\n /**\n * Get cache hit rate for anchor cache\n */\n getAnchorHitRate() {\n const t = this.stats.anchorHits + this.stats.anchorMisses;\n return t > 0 ? this.stats.anchorHits / t : 0;\n }\n /**\n * Get cache hit rate for semantics cache\n */\n getSemanticsHitRate() {\n const t = this.stats.semanticsHits + this.stats.semanticsMisses;\n return t > 0 ? this.stats.semanticsHits / t : 0;\n }\n /**\n * Get overall cache hit rate\n */\n getOverallHitRate() {\n const t = this.stats.eidHits + this.stats.selectorHits + this.stats.anchorHits + this.stats.semanticsHits, e = this.stats.eidMisses + this.stats.selectorMisses + this.stats.anchorMisses + this.stats.semanticsMisses, s = t + e;\n return s > 0 ? t / s : 0;\n }\n}\nfunction Gt(r) {\n return new Bt(r);\n}\nlet z = null;\nfunction Z() {\n return z || (z = Gt()), z;\n}\nfunction ye() {\n z = null;\n}\nfunction k(r) {\n if (r.ownerDocument)\n return r.ownerDocument;\n let t = r;\n for (; t; ) {\n if (t.nodeType === 9)\n return t;\n t = t.parentNode;\n }\n throw new Error(\n `Element does not have an ownerDocument. This typically means:\n1. The element is detached from the DOM\n2. The element was created but never attached\n3. You are working with a document node instead of an element`\n );\n}\nfunction Vt(r, t) {\n if (!t)\n return;\n const e = k(r), s = t instanceof Document ? t : k(t);\n if (e !== s)\n throw new Error(\n `Cross-document operation detected: element and root are from different documents.\nCommon causes:\n1. Working with iframe: pass iframe.contentDocument as root parameter\n2. Element from one iframe, root from another\n3. Element from main document, root from iframe (or vice versa)\n\nSolution: Ensure element and root parameter are from the same document context.`\n );\n}\nfunction X(r, t = {}) {\n if (!r || !r.ownerDocument || !r.isConnected)\n return null;\n const e = { ...bt, ...t };\n if (e.root)\n try {\n Vt(r, e.root);\n } catch (x) {\n return console.error(\"Cross-document generation detected:\", x), null;\n }\n const s = e.cache ?? Z(), n = s.getEID(r);\n if (n !== void 0)\n return n;\n if (r.tagName.toLowerCase() === \"html\") {\n const x = new st(e, s), y = Zt(r, e, x);\n return s.setEID(r, y), y;\n }\n const i = new St(e, s), o = new $t(e, s), c = new st(e, s), u = new Ft(), d = i.findAnchor(r);\n if (!d && !e.fallbackToBody)\n return null;\n const l = d?.element ?? r.ownerDocument?.body ?? null;\n if (!l) return null;\n const h = !d || d.tier === \"C\", g = l.tagName.toLowerCase(), f = l.parentElement;\n let m;\n if (f && g !== \"body\" && g !== \"html\") {\n const y = Array.from(f.children).indexOf(l);\n y !== -1 && (m = y + 1);\n }\n const p = c.extract(l), b = {\n tag: l.tagName.toLowerCase(),\n semantics: p,\n score: d?.score ?? I.DEGRADED_SCORE,\n degraded: h,\n nthChild: m\n }, S = o.buildPath(l, r, c), E = c.extract(r);\n e.enableSvgFingerprint && Qt(r) && (E.svg = u.fingerprint(r));\n const C = r.parentElement;\n let A;\n if (C) {\n const y = Array.from(C.children).indexOf(r);\n y !== -1 && (A = y + 1);\n }\n const v = {\n tag: r.tagName.toLowerCase(),\n semantics: E,\n score: c.scoreElement(r),\n nthChild: A\n }, H = [], $ = {\n onMultiple: \"best-score\",\n onMissing: \"anchor-only\",\n maxDepth: 3\n }, T = b.degraded || S.degraded, R = Yt(b.degraded, S), N = {\n version: \"1.0\",\n anchor: b,\n path: S.path,\n target: v,\n constraints: H,\n fallback: $,\n meta: {\n confidence: 0,\n // Calculated below\n generatedAt: (/* @__PURE__ */ new Date()).toISOString(),\n generator: \"dom-eid@1.0\",\n source: e.source,\n degraded: T,\n degradationReason: R\n }\n };\n return N.meta.confidence = jt(N), N.meta.confidence < e.confidenceThreshold ? null : (s.setEID(r, N), N);\n}\nfunction Qt(r) {\n return r.namespaceURI === \"http://www.w3.org/2000/svg\" || r.tagName.toLowerCase() === \"svg\" || r instanceof SVGElement;\n}\nfunction Yt(r, t) {\n if (r && t.degraded)\n return \"anchor-and-path-degraded\";\n if (r)\n return \"no-semantic-anchor\";\n if (t.degraded)\n return t.degradationReason;\n}\nfunction Zt(r, t, e, s) {\n const a = {\n tag: \"html\",\n semantics: e.extract(r),\n score: 1,\n degraded: !1,\n nthChild: void 0\n };\n return {\n version: \"1.0\",\n anchor: a,\n path: [],\n target: a,\n constraints: [],\n fallback: {\n onMultiple: \"best-score\",\n onMissing: \"anchor-only\",\n maxDepth: 3\n },\n meta: {\n confidence: 1,\n generatedAt: (/* @__PURE__ */ new Date()).toISOString(),\n generator: \"dom-eid@1.0\",\n source: t.source,\n degraded: !1,\n degradationReason: void 0\n }\n };\n}\nclass ot {\n buildSelector(t, e) {\n if (t.target.tag === \"html\") {\n const l = \"html\";\n return e?.ensureUnique ? {\n selector: l,\n isUnique: !0,\n usedNthOfType: !1,\n extraClassesAdded: 0\n } : l;\n }\n if (t.anchor.tag === \"html\" && t.path.length === 0) {\n const h = `html > ${this.buildNodeSelector(t.target.tag, t.target.semantics)}`;\n return e?.ensureUnique ? {\n selector: h,\n isUnique: this.isUnique(h, e.root ?? document),\n usedNthOfType: !1,\n extraClassesAdded: 0\n } : h;\n }\n if (t.anchor.tag === \"html\" && t.path.length > 0 && t.path[0].tag === \"head\")\n return this.buildHeadSelector(t, e);\n if (t.path.length === 0 && t.anchor.tag === t.target.tag && JSON.stringify(t.anchor.semantics) === JSON.stringify(t.target.semantics)) {\n const l = this.buildNodeSelector(\n t.target.tag,\n t.target.semantics,\n { excludeClasses: !1 }\n // Include classes for same-element case\n );\n return e?.ensureUnique ? this.ensureUniqueSelector(l, t, e) : l;\n }\n const n = [], a = e?.ensureUnique ? this.ensureUniqueAnchor(t, e.root) : this.buildNodeSelector(t.anchor.tag, t.anchor.semantics);\n n.push(a);\n for (const l of t.path) {\n let h = this.buildNodeSelector(l.tag, l.semantics);\n l.nthChild !== void 0 && ([\"tr\", \"td\", \"th\", \"thead\", \"tbody\", \"tfoot\"].includes(l.tag) ? h += `:nth-child(${l.nthChild})` : h += `:nth-child(${l.nthChild})`), n.push(h);\n }\n let i = this.buildNodeSelector(\n t.target.tag,\n t.target.semantics,\n { excludeClasses: e?.ensureUnique }\n // Exclude classes initially if we need unique\n );\n t.target.nthChild !== void 0 && ([\"tr\", \"td\", \"th\", \"thead\", \"tbody\", \"tfoot\"].includes(t.target.tag) ? i += `:nth-child(${t.target.nthChild})` : i += `:nth-child(${t.target.nthChild})`), n.push(i);\n const o = this.isSvgChildElement(t.target.tag), c = t.path.some((l) => l.tag === \"svg\");\n let u;\n if (o && c) {\n const l = t.path.findIndex((h) => h.tag === \"svg\");\n if (l !== -1) {\n const h = l + 1, g = n.slice(0, h + 1), f = n.slice(h + 1, -1), m = n[n.length - 1];\n f.length > 0 ? u = g.join(\" \") + \" > \" + f.join(\" > \") + \" > \" + m : u = g.join(\" \") + \" > \" + m;\n } else\n u = n.join(\" \");\n } else\n u = n.join(\" \");\n if (!e?.ensureUnique)\n return u;\n const d = this.querySelectorSafe(u, e.root ?? document);\n if (d.length === 1)\n return {\n selector: u,\n isUnique: !0,\n usedNthOfType: u.includes(\":nth-\"),\n extraClassesAdded: 0\n };\n if (d.length === 0 || d.length > 1) {\n const l = this.buildFullDomPathSelector(\n t,\n t.target.semantics,\n e.root ?? document\n );\n if (l && this.isUnique(l, e.root ?? document))\n return {\n selector: l,\n isUnique: !0,\n usedNthOfType: l.includes(\":nth-\"),\n extraClassesAdded: 0\n };\n }\n return this.ensureUniqueSelector(u, t, e);\n }\n /**\n * Builds selector for anchor only (used in fallback)\n * @param eid - Element Identity\n * @returns CSS selector for anchor\n */\n buildAnchorSelector(t) {\n return this.buildNodeSelector(t.anchor.tag, t.anchor.semantics);\n }\n /**\n * Ensures selector uniqueness by progressively adding classes and nth-of-type\n */\n ensureUniqueSelector(t, e, s) {\n const n = s.root ?? document, a = s.maxClasses ?? 4, i = e.target.tag, o = e.target.semantics;\n let c = t, u = 0, d = !1;\n if (this.querySelectorSafe(c, n).length === 0) {\n const f = this.buildFullDomPathSelector(e, o, n);\n if (f && (c = f, this.isUnique(c, n)))\n return {\n selector: c,\n isUnique: !0,\n usedNthOfType: !1,\n extraClassesAdded: 0\n };\n }\n if (this.isUnique(c, n))\n return {\n selector: c,\n isUnique: !0,\n usedNthOfType: !1,\n extraClassesAdded: 0\n };\n const h = M(o.classes ?? []);\n for (let f = 0; f < Math.min(h.length, a); f++) {\n const m = h[f];\n if (c += `.${this.escapeCSS(m)}`, u++, this.isUnique(c, n))\n return {\n selector: c,\n isUnique: !0,\n usedNthOfType: !1,\n extraClassesAdded: u\n };\n }\n if (!this.isUnique(c, n)) {\n const f = this.buildFullDomPathSelector(e, o, n);\n if (f && this.isUnique(f, n))\n return {\n selector: f,\n isUnique: !0,\n usedNthOfType: f.includes(\":nth-of-type(\"),\n extraClassesAdded: u\n };\n }\n const g = this.findNthElementByText(c, o, n);\n return g && (c += this.getNthSelector(g, i), d = !0), {\n selector: c,\n isUnique: this.isUnique(c, n),\n usedNthOfType: d,\n extraClassesAdded: u\n };\n }\n /**\n * Builds full DOM path selector by traversing actual DOM from anchor\n * This handles cases where intermediate div/span elements were filtered out\n */\n buildFullDomPathSelector(t, e, s) {\n const n = this.buildNodeSelector(t.anchor.tag, t.anchor.semantics), a = this.querySelectorSafe(n, s);\n if (a.length === 0) return null;\n for (const i of a) {\n const o = this.findTargetWithinAnchor(i, t.target.tag, e);\n if (o.length === 0) continue;\n const c = o.map((u) => {\n const d = this.scorePathMatch(u, i, t.path);\n return { element: u, score: d };\n });\n c.sort((u, d) => d.score - u.score);\n for (const { element: u } of c) {\n const d = this.buildPathFromAnchorToTarget(i, u, t, s);\n if (d && this.isUnique(d, s))\n return d;\n }\n }\n return null;\n }\n /**\n * Scores how well a candidate's DOM path matches the EID path\n * Compares tags, classes, attributes, and nthChild positions\n * @param candidate - Target element candidate\n * @param anchor - Anchor element\n * @param eidPath - EID path nodes\n * @returns Score (higher = better match)\n */\n scorePathMatch(t, e, s) {\n const n = [];\n let a = t.parentElement;\n for (; a && a !== e; )\n n.unshift(a), a = a.parentElement;\n let i = 0;\n const o = Math.min(n.length, s.length);\n for (let u = 0; u < o; u++) {\n const d = n[u], l = s[u];\n if (d.tagName.toLowerCase() === l.tag) {\n if (i += 10, l.nthChild !== void 0) {\n const h = d.parentElement;\n h && (Array.from(h.children).indexOf(d) + 1 === l.nthChild ? i += 20 : i -= 10);\n }\n } else\n i -= 5;\n if (l.semantics.classes && l.semantics.classes.length > 0) {\n const h = l.semantics.classes.filter(\n (g) => d.classList.contains(g)\n );\n i += h.length * 2;\n }\n if (l.semantics.attributes) {\n const h = Object.entries(l.semantics.attributes).filter(\n ([g, f]) => d.getAttribute(g) === f\n );\n i += h.length * 3;\n }\n }\n const c = Math.abs(n.length - s.length);\n return i -= c * 2, i;\n }\n /**\n * Finds target elements within an anchor by matching semantics\n */\n findTargetWithinAnchor(t, e, s) {\n return Array.from(t.querySelectorAll(e)).filter((a) => {\n if (s.text) {\n const i = a.textContent?.trim() || \"\", o = s.text.normalized;\n if (!i.includes(o) && !o.includes(i))\n return !1;\n }\n return !!(s.classes && s.classes.length > 0 && s.classes.every((o) => a.classList.contains(o)) || s.attributes && Object.entries(s.attributes).every(([o, c]) => {\n const u = a.getAttribute(o);\n return o === \"href\" || o === \"src\" ? D(o, u || \"\") === D(o, c) : u === c;\n }) || s.text);\n });\n }\n /**\n * Disambiguates a parent element by trying attributes, classes, then nth-of-type\n * Priority: stable attributes > one stable class > nth-of-type\n * @param element The DOM element to disambiguate\n * @param tag The tag name\n * @param pathNode EID path node with semantics (if available)\n * @param fullPath Current selector path (for uniqueness testing)\n * @param root Root element for queries\n * @returns Disambiguated selector part (e.g., \"div[role='main']\" or \"div.sidebar\" or \"div:nth-of-type(3)\")\n */\n disambiguateParent(t, e, s, n, a) {\n if (s?.semantics?.attributes) {\n const o = this.buildNodeSelector(e, s.semantics, {\n excludeClasses: !0\n }), c = [...n, e].join(\" > \"), u = this.querySelectorSafe(c, a), d = [...n, o].join(\" > \"), l = this.querySelectorSafe(d, a);\n if (l.length > 0 && l.length < u.length)\n return o;\n }\n if (s?.semantics?.classes) {\n const o = M(s.semantics.classes);\n if (o.length > 0) {\n const c = `${e}.${this.escapeCSS(o[0])}`, u = [...n, e].join(\" > \"), d = this.querySelectorSafe(u, a), l = [...n, c].join(\" > \"), h = this.querySelectorSafe(l, a);\n if (h.length > 0 && h.length < d.length)\n return c;\n }\n }\n const i = t.parentElement;\n return i && Array.from(i.children).filter((c) => c.tagName.toLowerCase() === e).length > 1 ? `${e}${this.getNthSelector(t, e)}` : e;\n }\n /**\n * Builds CSS selector path from anchor to target by traversing actual DOM\n */\n buildPathFromAnchorToTarget(t, e, s, n) {\n const a = [];\n let i = e;\n for (; i && i !== t; )\n a.unshift(i), i = i.parentElement;\n if (i !== t)\n return null;\n const o = [\n // ============================================================\n // Strategy 0: anchor path target[attrs_only]\n // Most flexible - no classes on target, only semantic attributes\n // ============================================================\n () => {\n const c = this.buildNodeSelector(s.anchor.tag, s.anchor.semantics), u = s.target.tag, d = s.target.semantics, l = [];\n for (const p of s.path)\n l.push(p.tag);\n const g = [c, ...l, u].filter(Boolean).join(\" \");\n if (this.isUnique(g, n))\n return g;\n const f = this.buildNodeSelector(u, d, {\n excludeClasses: !0\n // KEY: no classes on target in Strategy 0\n }), m = [\n c,\n ...l.slice(0, -1),\n f\n ].join(\" \");\n return this.isUnique(m, n) ? m : null;\n },\n // ============================================================\n // Strategy 1: anchor > parent[attrs|class|nth] > target[attrs_only]\n // Full path with '>' combinator\n // Parents: disambiguated using attrs > stable class > nth-of-type\n // Target: ONLY attributes, NO classes\n // ============================================================\n () => {\n const c = [this.buildNodeSelector(s.anchor.tag, s.anchor.semantics)], u = /* @__PURE__ */ new Map();\n let d = 0;\n for (let h = 0; h < a.length - 1; h++) {\n const g = a[h], f = g.tagName.toLowerCase();\n d < s.path.length && s.path[d].tag === f ? (u.set(g, s.path[d]), d++) : u.set(g, null);\n }\n for (let h = 0; h < a.length; h++) {\n const g = a[h], f = g.tagName.toLowerCase();\n if (h < a.length - 1) {\n const b = u.get(g) || null, S = this.disambiguateParent(g, f, b, c, n);\n c.push(S);\n continue;\n }\n const m = this.buildNodeSelector(\n s.target.tag,\n s.target.semantics,\n { excludeClasses: !0 }\n // KEY: no classes on target\n ), p = g.parentElement;\n p && [\"td\", \"th\", \"tr\", \"thead\", \"tbody\", \"tfoot\"].includes(f) && Array.from(p.children).filter(\n (S) => S.tagName.toLowerCase() === f\n ).length > 1 ? c.push(`${m}${this.getNthSelector(g, f)}`) : c.push(m);\n }\n const l = c.join(\" > \");\n return this.isUnique(l, n) ? l : null;\n },\n // ============================================================\n // Strategy 2: anchor parent[attrs|class|nth] target[attrs_only]\n // Descendant combinator (space) - more flexible\n // Parents: disambiguated using attrs > stable class > nth-of-type\n // Target: ONLY attributes, NO classes\n // ============================================================\n () => {\n const u = [this.buildNodeSelector(s.anchor.tag, s.anchor.semantics)];\n for (let h = 0; h < a.length - 1; h++) {\n const f = a[h].tagName.toLowerCase(), m = s.path[h] || null, p = u.join(\" \") + \" \" + f;\n if (this.querySelectorSafe(p, n).length > 1) {\n if (m?.semantics?.attributes) {\n const C = this.buildNodeSelector(f, m.semantics, {\n excludeClasses: !0\n }), A = u.join(\" \") + \" \" + C;\n if (this.querySelectorSafe(A, n).length === 1 || this.querySelectorSafe(A + \" \" + s.target.tag, n).length === 1) {\n u.push(C);\n continue;\n }\n }\n if (m?.semantics?.classes) {\n const C = M(m.semantics.classes);\n if (C.length > 0) {\n const A = `${f}.${this.escapeCSS(C[0])}`, v = u.join(\" \") + \" \" + A;\n if (this.querySelectorSafe(v, n).length === 1 || this.querySelectorSafe(v + \" \" + s.target.tag, n).length === 1) {\n u.push(A);\n continue;\n }\n }\n }\n const S = a[h], E = S.parentElement;\n if (E && Array.from(E.children).filter(\n (A) => A.tagName.toLowerCase() === f\n ).length > 1) {\n u.push(`${f}${this.getNthSelector(S, f)}`);\n continue;\n }\n }\n u.push(f);\n }\n const d = this.buildNodeSelector(\n s.target.tag,\n s.target.semantics,\n { excludeClasses: !0 }\n // KEY: no classes on target\n );\n u.push(d);\n const l = u.join(\" \");\n return this.isUnique(l, n) ? l : null;\n },\n // ============================================================\n // Strategy 3: anchor path target[attrs + 1_stable_class]\n // Add ONE stable class to target (must be semantic, NOT utility)\n // Only use this if attrs alone are not sufficient\n // ============================================================\n () => {\n const c = this.buildNodeSelector(s.anchor.tag, s.anchor.semantics), u = [];\n for (const g of s.path)\n u.push(g.tag);\n if (M(s.target.semantics.classes ?? []).length === 0)\n return null;\n const l = this.buildNodeSelector(\n s.target.tag,\n s.target.semantics,\n { maxClasses: 1 }\n // KEY: ONE stable class only\n ), h = [c, ...u.slice(0, -1), l].join(\" \");\n return this.isUnique(h, n) ? h : null;\n },\n // ============================================================\n // Strategy 4: anchor path target[attrs]:nth-of-type(N)\n // Last resort - add nth-of-type to target\n // Only use when all other strategies fail\n // ============================================================\n () => {\n const c = this.buildNodeSelector(s.anchor.tag, s.anchor.semantics), u = [];\n for (const m of s.path)\n u.push(m.tag);\n const d = a[a.length - 1], l = d.parentElement;\n if (!l || Array.from(l.children).filter(\n (m) => m.tagName.toLowerCase() === s.target.tag\n ).length <= 1) return null;\n const g = this.buildNodeSelector(\n s.target.tag,\n s.target.semantics,\n { excludeClasses: !0 }\n // No classes, just attrs + nth\n ) + this.getNthSelector(d, s.target.tag), f = [c, ...u.slice(0, -1), g].join(\" \");\n return this.isUnique(f, n) ? f : null;\n }\n ];\n for (const c of o) {\n const u = c();\n if (u) return u;\n }\n return null;\n }\n /**\n * Builds a minimal selector for a DOM element\n * @param element The DOM element to create a selector for\n * @returns A minimal CSS selector for the element\n */\n buildElementSelector(t) {\n const e = t.tagName.toLowerCase();\n let s = e;\n if (t.id && !P(t.id))\n return `${e}#${this.escapeCSS(t.id)}`;\n const n = Array.from(t.classList), a = M(n);\n a.length > 0 && (s += a.slice(0, 2).map((o) => `.${this.escapeCSS(o)}`).join(\"\"));\n const i = t.getAttribute(\"role\");\n return i && (s += `[role=\"${this.escapeAttr(i)}\"]`), s;\n }\n /**\n * Safe querySelectorAll that doesn't throw\n */\n querySelectorSafe(t, e) {\n try {\n return Array.from(e.querySelectorAll(t));\n } catch {\n return [];\n }\n }\n /**\n * Finds element by matching text content\n * Returns the matching element (used with getNthSelector for table-aware positioning)\n */\n findNthElementByText(t, e, s) {\n const n = this.querySelectorSafe(t, s);\n if (n.length <= 1) return null;\n if (e.text) {\n const a = e.text.normalized;\n for (const i of n) {\n const o = i.textContent?.trim() || \"\";\n if (o === a || o.includes(a) || a.includes(o))\n return i;\n }\n }\n return null;\n }\n /**\n * Checks if selector matches exactly one element\n */\n isUnique(t, e) {\n try {\n return e.querySelectorAll(t).length === 1;\n } catch {\n return !1;\n }\n }\n /**\n * Gets nth-of-type index for an element\n */\n getNthOfTypeIndex(t, e) {\n const s = t.parentElement;\n if (!s) return null;\n const a = Array.from(s.children).filter((i) => i.tagName.toLowerCase() === e).indexOf(t);\n return a !== -1 ? a + 1 : null;\n }\n /**\n * FIX 2: Ensures anchor selector is unique in the document\n * Priority order: tag → tag.class → tag[attr] → tag:nth-of-type(N)\n * @param eid - Element Identity with anchor information\n * @param root - Root element for uniqueness check\n * @returns Unique selector for anchor\n */\n ensureUniqueAnchor(t, e) {\n const s = t.anchor.tag, n = t.anchor.semantics;\n if (this.isUnique(s, e))\n return s;\n if (n.classes && n.classes.length > 0) {\n const i = M(n.classes);\n if (i.length > 0) {\n const o = `${s}.${this.escapeCSS(i[0])}`;\n if (this.isUnique(o, e))\n return o;\n }\n }\n if (n.attributes) {\n const i = this.getSortedAttributes(n.attributes);\n for (const { name: o, value: c } of i) {\n const u = o === \"href\" || o === \"src\" ? D(o, c) : c;\n if (u) {\n const d = `${s}[${o}=\"${this.escapeAttr(u)}\"]`;\n if (this.isUnique(d, e))\n return d;\n }\n }\n }\n if (t.anchor.nthChild !== void 0) {\n const i = `${s}:nth-child(${t.anchor.nthChild})`;\n if (this.isUnique(i, e))\n return i;\n }\n const a = Array.from(e.querySelectorAll(s));\n if (a.length > 1) {\n const i = this.findElementBySemantics(a, n);\n if (i) {\n const o = this.getNthOfTypeIndex(i, s);\n if (o)\n return `${s}:nth-of-type(${o})`;\n }\n }\n return s;\n }\n /**\n * FIX 2: Finds element by matching semantics\n * @param elements - Array of candidate elements\n * @param semantics - Semantics to match against\n * @returns Matching element or null\n */\n findElementBySemantics(t, e) {\n return e.classes && e.classes.length > 0 || e.attributes && Object.keys(e.attributes).length > 0 || e.text ? t.find((n) => {\n if (e.classes && e.classes.length > 0 && e.classes.every((i) => n.classList.contains(i)) || e.attributes && Object.entries(e.attributes).every(\n ([i, o]) => n.getAttribute(i) === o\n ))\n return !0;\n if (e.text) {\n const a = n.textContent?.trim() || \"\", i = e.text.normalized;\n if (a.includes(i) || i.includes(a))\n return !0;\n }\n return !1;\n }) || null : t.length > 0 ? t[0] : null;\n }\n /**\n * FIX 3: Gets nth selector - nth-child for tables, nth-of-type for others\n * This method is now ACTIVELY INTEGRATED in selector generation logic\n * to ensure table elements use position-specific nth-child selectors\n * @param element - Element to get selector for\n * @param tag - Tag name\n * @returns nth selector string (e.g., \":nth-child(2)\" or \":nth-of-type(2)\")\n */\n getNthSelector(t, e) {\n const s = t.parentElement;\n if (!s) return \"\";\n const n = Array.from(s.children), a = n.indexOf(t) + 1;\n return [\"tr\", \"td\", \"th\", \"thead\", \"tbody\", \"tfoot\"].includes(e) ? `:nth-child(${a})` : `:nth-of-type(${n.filter((c) => c.tagName.toLowerCase() === e).indexOf(t) + 1})`;\n }\n /**\n * Gets attribute priority for sorting\n * @param attrName - Attribute name\n * @returns Priority number (higher = more priority)\n */\n getAttributePriority(t) {\n return w[t] !== void 0 ? w[t] : t.startsWith(\"data-\") ? w[\"data-*\"] : t.startsWith(\"aria-\") ? w[\"aria-*\"] : 0;\n }\n /**\n * Checks if attribute should be ignored\n * @param attrName - Attribute name\n * @returns True if should be ignored\n */\n shouldIgnoreAttribute(t) {\n return !!(V.has(t) || t.startsWith(\"on\") || t.startsWith(\"ng-\") || t.startsWith(\"_ng\") || t.startsWith(\"data-reactid\") || t.startsWith(\"data-react\") || t.startsWith(\"data-v-\"));\n }\n /**\n * Gets attributes sorted by priority\n * @param attributes - Attributes object\n * @returns Sorted array of attributes with priority\n */\n getSortedAttributes(t) {\n return Object.entries(t).filter(([e]) => !this.shouldIgnoreAttribute(e)).filter(\n ([e, s]) => !Q.has(e) || !Y(s)\n ).map(([e, s]) => ({\n name: e,\n value: s,\n priority: this.getAttributePriority(e)\n })).filter((e) => e.priority > 0).sort((e, s) => s.priority - e.priority);\n }\n /**\n * Builds selector for a single node\n * Priority: ID → semantic attributes → role → classes\n */\n buildNodeSelector(t, e, s) {\n let n = t;\n if (e.id)\n return n += `#${this.escapeCSS(e.id)}`, n;\n if (e.attributes) {\n const a = this.getSortedAttributes(e.attributes);\n for (const { name: i, value: o } of a)\n i === \"href\" || i === \"src\" || o && (n += `[${i}=\"${this.escapeAttr(o)}\"]`);\n }\n if (e.role && !e.attributes?.role && (n += `[role=\"${this.escapeAttr(e.role)}\"]`), !s?.excludeClasses && e.classes && e.classes.length > 0) {\n const a = M(e.classes), i = s?.maxClasses !== void 0 ? a.slice(0, s.maxClasses) : a;\n n += i.map((o) => `.${this.escapeCSS(o)}`).join(\"\");\n }\n return n;\n }\n /**\n * Escapes special characters for CSS selector\n */\n escapeCSS(t) {\n let e = t;\n return e.startsWith(\"-\") && (e = \"\\\\-\" + e.slice(1)), e = e.replace(/([!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~])/g, \"\\\\$1\"), e;\n }\n /**\n * Escapes quotes for attribute values\n */\n escapeAttr(t) {\n return t.replace(/\"/g, '\\\\\"').replace(/\\\\/g, \"\\\\\\\\\");\n }\n /**\n * Checks if element tag is an SVG child element\n * @param tag - Element tag name\n * @returns True if element is an SVG child\n */\n isSvgChildElement(t) {\n return pt.includes(t);\n }\n /**\n * Builds CSS selector for elements inside <head>.\n * Uses child combinator (>) for strict structure: html > head > ... > target\n * @param eid - Element Identity with anchor=html and path[0]=head\n * @param options - Optional uniqueness control settings\n * @returns CSS selector string or BuildSelectorResult\n * @remarks\n * This method handles the special case where elements are inside <head>.\n * The selector always uses child combinators for strict parent-child relationships.\n * @example\n * For <html><head><meta name=\"description\"></head></html>\n * Returns: \"html > head > meta[name='description']\"\n */\n buildHeadSelector(t, e) {\n const s = [\"html\"];\n for (const o of t.path) {\n let c = this.buildNodeSelector(o.tag, o.semantics);\n o.nthChild !== void 0 && (c += `:nth-child(${o.nthChild})`), s.push(c);\n }\n let n = this.buildNodeSelector(t.target.tag, t.target.semantics);\n t.target.nthChild !== void 0 && (n += `:nth-child(${t.target.nthChild})`), s.push(n);\n const a = s.join(\" > \");\n if (!e?.ensureUnique)\n return a;\n const i = this.isUnique(a, e.root ?? document);\n return {\n selector: a,\n isUnique: i,\n usedNthOfType: a.includes(\":nth-\"),\n extraClassesAdded: 0\n };\n }\n}\nfunction rt(r, t) {\n if (!r) return r;\n const e = Jt(t);\n try {\n if (Xt(r) || r.startsWith(\"//\") || Kt(r))\n return r;\n const s = new URL(r, e);\n if (!e)\n return r;\n const n = new URL(e);\n if (s.origin === n.origin) {\n let a = s.pathname;\n return s.search && (a += s.search), s.hash && (a += s.hash), a;\n }\n return r;\n } catch {\n return r;\n }\n}\nfunction Xt(r) {\n return !r.startsWith(\"http://\") && !r.startsWith(\"https://\") && !r.startsWith(\"//\");\n}\nfunction Kt(r) {\n return [\"javascript:\", \"mailto:\", \"tel:\", \"data:\", \"blob:\", \"file:\"].some((e) => r.startsWith(e));\n}\nfunction Jt(r) {\n if (r)\n return r;\n if (typeof window < \"u\" && window.location && window.location.href)\n return window.location.href;\n}\nfunction nt(r) {\n if (!r || typeof r != \"string\")\n return \"\";\n if (r.startsWith(\"javascript:\") || r.startsWith(\"mailto:\") || r.startsWith(\"tel:\") || r.startsWith(\"data:\") || r.startsWith(\"blob:\") || r.startsWith(\"/\") || r.startsWith(\"./\") || r.startsWith(\"../\"))\n return r;\n try {\n const t = new URL(r);\n return t.pathname + t.search + t.hash;\n } catch {\n return r;\n }\n}\nclass te {\n /**\n * Filters elements that match the semantics\n * @param elements - Candidate elements\n * @param semantics - Target semantics to match\n * @param documentUrl - Optional document base URL for URL normalization (iframe context)\n * @param matchUrlsByPathOnly - Optional flag to match URLs by pathname only (ignoring origin)\n * @returns Filtered elements that match\n */\n match(t, e, s, n) {\n return t.filter(\n (a) => this.matchElement(a, e, s, n)\n );\n }\n /**\n * Checks if a single element matches the semantics\n * @param documentUrl - Optional document base URL for URL normalization (iframe context)\n * @param matchUrlsByPathOnly - Optional flag to match URLs by pathname only (ignoring origin)\n */\n matchElement(t, e, s, n) {\n return !(e.text && !this.matchText(t, e.text) || e.attributes && !this.matchAttributes(t, e.attributes, s, n) || e.svg && !this.matchSvgFingerprint(t, e.svg));\n }\n /**\n * Matches text content\n * Prioritizes direct text nodes, but falls back to full textContent if no direct text\n */\n matchText(t, e) {\n const a = Array.from(t.childNodes).filter(\n (o) => o.nodeType === Node.TEXT_NODE\n ).map((o) => o.textContent?.trim() ?? \"\").join(\" \") || (t.textContent?.trim() ?? \"\");\n if (!a) return !1;\n const i = F(a);\n return e.matchMode === \"partial\" ? i.includes(e.normalized) : i === e.normalized;\n }\n /**\n * Lenient text matching - uses partial matching instead of exact\n * Used as fallback when exact matching fails\n */\n matchTextLenient(t, e) {\n const a = Array.from(t.childNodes).filter(\n (o) => o.nodeType === Node.TEXT_NODE\n ).map((o) => o.textContent?.trim() ?? \"\").join(\" \") || (t.textContent?.trim() ?? \"\");\n if (!a) return !1;\n const i = F(a);\n return i.includes(e.normalized) || e.normalized.includes(i);\n }\n /**\n * Checks if a single element matches the semantics with lenient text matching\n * @param documentUrl - Optional document base URL for URL normalization (iframe context)\n * @param matchUrlsByPathOnly - Optional flag to match URLs by pathname only (ignoring origin)\n */\n matchElementLenient(t, e, s, n) {\n return !(e.text && !this.matchTextLenient(t, e.text) || e.attributes && !this.matchAttributes(t, e.attributes, s, n) || e.svg && !this.matchSvgFingerprint(t, e.svg));\n }\n /**\n * Filters elements with lenient matching (exported for use in resolver)\n * @param documentUrl - Optional document base URL for URL normalization (iframe context)\n * @param matchUrlsByPathOnly - Optional flag to match URLs by pathname only (ignoring origin)\n */\n matchLenient(t, e, s, n) {\n return t.filter(\n (a) => this.matchElementLenient(a, e, s, n)\n );\n }\n /**\n * Matches attributes with URL normalization for href/src\n * @param documentUrl - Optional document base URL for URL normalization (iframe context)\n * @param matchUrlsByPathOnly - Optional flag to match URLs by pathname only (ignoring origin, default: true)\n */\n matchAttributes(t, e, s, n = !0) {\n for (const [a, i] of Object.entries(e)) {\n const o = t.getAttribute(a);\n if (a === \"href\" || a === \"src\")\n if (n) {\n const c = D(a, i, {\n preserveQueryForAbsolute: !1\n }), u = D(a, o || \"\", {\n preserveQueryForAbsolute: !1\n }), d = nt(c), l = nt(u);\n if (d !== l)\n return !1;\n } else {\n const c = rt(\n D(a, i, { preserveQueryForAbsolute: !1 }),\n s\n ), u = rt(\n D(a, o || \"\", { preserveQueryForAbsolute: !1 }),\n s\n );\n if (c !== u)\n return !1;\n }\n else if (o !== i)\n return !1;\n }\n return !0;\n }\n /**\n * Matches SVG fingerprint\n */\n matchSvgFingerprint(t, e) {\n if (t.tagName.toLowerCase() !== e.shape)\n return !1;\n if (e.dHash && e.shape === \"path\") {\n const s = t.getAttribute(\"d\");\n if (s && this.computePathHash(s) !== e.dHash)\n return !1;\n }\n return !(e.geomHash && [\"circle\", \"rect\", \"ellipse\", \"line\"].includes(e.shape) && this.computeGeomHash(t, e.shape) !== e.geomHash || e.titleText && t.querySelector(\"title\")?.textContent?.trim() !== e.titleText);\n }\n /**\n * Computes simple path hash (matching SvgFingerprinter)\n */\n computePathHash(t) {\n const n = (t.match(/[MLHVCSQTAZ][^MLHVCSQTAZ]*/gi) ?? []).slice(0, 5).map((a) => a.trim().replace(/(-?\\d+\\.?\\d*)/g, (i) => parseFloat(i).toFixed(1))).join(\" \");\n return this.simpleHash(n);\n }\n /**\n * Computes geometry hash for non-path shapes (matching SvgFingerprinter)\n */\n computeGeomHash(t, e) {\n const s = [];\n switch (e) {\n case \"circle\":\n s.push(`r=${t.getAttribute(\"r\") ?? \"0\"}`);\n break;\n case \"rect\": {\n const n = parseFloat(t.getAttribute(\"width\") ?? \"0\"), a = parseFloat(t.getAttribute(\"height\") ?? \"0\");\n n > 0 && a > 0 && s.push(`ratio=${(n / a).toFixed(2)}`);\n break;\n }\n case \"ellipse\": {\n const n = parseFloat(t.getAttribute(\"rx\") ?? \"0\"), a = parseFloat(t.getAttribute(\"ry\") ?? \"0\");\n n > 0 && a > 0 && s.push(`ratio=${(n / a).toFixed(2)}`);\n break;\n }\n case \"line\": {\n const n = parseFloat(t.getAttribute(\"x1\") ?? \"0\"), a = parseFloat(t.getAttribute(\"y1\") ?? \"0\"), i = parseFloat(t.getAttribute(\"x2\") ?? \"0\"), o = parseFloat(t.getAttribute(\"y2\") ?? \"0\"), c = Math.atan2(o - a, i - n);\n s.push(`angle=${c.toFixed(2)}`);\n break;\n }\n }\n return this.simpleHash(s.join(\";\"));\n }\n /**\n * Simple hash function (matching SvgFingerprinter)\n */\n simpleHash(t) {\n let e = 0;\n for (let s = 0; s < t.length; s++) {\n const n = t.charCodeAt(s);\n e = (e << 5) - e + n, e = e & e;\n }\n return Math.abs(e).toString(16).padStart(8, \"0\");\n }\n}\nclass ee {\n /**\n * Applies a single constraint to candidates\n * @param candidates - Current candidate elements\n * @param constraint - Constraint to apply\n * @returns Filtered candidates\n */\n applyConstraint(t, e) {\n switch (e.type) {\n case \"text-proximity\":\n return this.applyTextProximity(\n t,\n e.params\n );\n case \"position\":\n return this.applyPosition(t, e.params);\n default:\n return t;\n }\n }\n /**\n * Applies text proximity constraint using Levenshtein distance\n */\n applyTextProximity(t, e) {\n return t.filter((s) => {\n const n = s.textContent?.trim() ?? \"\";\n return this.levenshteinDistance(n, e.reference) <= e.maxDistance;\n });\n }\n /**\n * Applies position constraint\n */\n applyPosition(t, e) {\n if (t.length <= 1) return t;\n switch (e.strategy) {\n case \"first-in-dom\":\n return [t[0]];\n case \"top-most\":\n return [this.getTopMost(t)];\n case \"left-most\":\n return [this.getLeftMost(t)];\n default:\n return [t[0]];\n }\n }\n /**\n * Gets the top-most element by bounding rect\n */\n getTopMost(t) {\n return t.reduce((e, s) => {\n try {\n const n = e.getBoundingClientRect();\n return s.getBoundingClientRect().top < n.top ? s : e;\n } catch {\n return e;\n }\n });\n }\n /**\n * Gets the left-most element by bounding rect\n */\n getLeftMost(t) {\n return t.reduce((e, s) => {\n try {\n const n = e.getBoundingClientRect();\n return s.getBoundingClientRect().left < n.left ? s : e;\n } catch {\n return e;\n }\n });\n }\n /**\n * Calculates Levenshtein distance between two strings\n */\n levenshteinDistance(t, e) {\n if (t === e) return 0;\n if (t.length === 0) return e.length;\n if (e.length === 0) return t.length;\n const s = Array.from({ length: e.length + 1 }, (n, a) => a);\n for (let n = 1; n <= t.length; n++) {\n let a = n;\n for (let i = 1; i <= e.length; i++) {\n const o = t[n - 1] === e[i - 1] ? s[i - 1] : Math.min(s[i - 1], a, s[i]) + 1;\n s[i - 1] = a, a = o;\n }\n s[e.length] = a;\n }\n return s[e.length];\n }\n}\nclass se {\n constructor() {\n this.cssGenerator = new ot();\n }\n /**\n * Handles fallback when resolution fails\n * @param eid - Element Identity being resolved\n * @param dom - Document or element to search in\n * @returns Fallback resolution result\n */\n handleFallback(t, e) {\n const { onMissing: s } = t.fallback;\n switch (s) {\n case \"anchor-only\":\n return this.fallbackToAnchor(t, e);\n case \"strict\":\n return {\n status: \"error\",\n elements: [],\n warnings: [\"Element not found (strict mode)\"],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"strict-not-found\" }\n };\n default:\n return {\n status: \"error\",\n elements: [],\n warnings: [\"Element not found\"],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"not-found\" }\n };\n }\n }\n /**\n * Attempts to find and return the anchor element as fallback\n */\n fallbackToAnchor(t, e) {\n const s = this.cssGenerator.buildAnchorSelector(t), n = e instanceof Document ? e : e.ownerDocument ?? e;\n try {\n const a = n.querySelector(s);\n if (a)\n return {\n status: \"degraded-fallback\",\n elements: [a],\n warnings: [\"Target not found, returning anchor\"],\n confidence: t.meta.confidence * 0.3,\n meta: { degraded: !0, degradationReason: \"anchor-fallback\" }\n };\n } catch (a) {\n const i = a instanceof Error ? a.message : \"Unknown selector error\";\n return {\n status: \"error\",\n elements: [],\n warnings: [`Invalid anchor selector: ${i}`],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"invalid-anchor-selector\" }\n };\n }\n return {\n status: \"error\",\n elements: [],\n warnings: [\"Anchor also not found\"],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"anchor-not-found\" }\n };\n }\n /**\n * Handles ambiguous results (multiple matches)\n * @param elements - All matching elements\n * @param eid - Original Element Identity\n * @returns Resolution result based on fallback rules\n */\n handleAmbiguous(t, e) {\n const { onMultiple: s } = e.fallback;\n switch (s) {\n case \"first\":\n return {\n status: \"success\",\n elements: [t[0]],\n warnings: [\"Multiple matches, returning first\"],\n confidence: e.meta.confidence * 0.7,\n meta: { degraded: !0, degradationReason: \"first-of-multiple\" }\n };\n case \"best-score\":\n return this.selectBestScoring(t, e);\n default:\n return {\n status: \"ambiguous\",\n elements: t,\n warnings: [`Multiple matches: ${t.length}`],\n confidence: e.meta.confidence * 0.5,\n meta: { degraded: !0, degradationReason: \"multiple-matches\" }\n };\n }\n }\n /**\n * Selects the best-scoring element from candidates\n * Re-scores each element based on semantic match quality\n */\n selectBestScoring(t, e) {\n const s = e.target.semantics;\n let n = t[0], a = -1;\n for (const i of t) {\n const o = this.scoreElementMatch(i, s);\n o > a && (a = o, n = i);\n }\n return {\n status: \"success\",\n elements: [n],\n warnings: [`Multiple matches (${t.length}), selected best-scoring element`],\n confidence: e.meta.confidence * (0.7 + a * 0.2),\n meta: { degraded: !0, degradationReason: \"best-of-multiple\" }\n };\n }\n /**\n * Scores how well an element matches the target semantics\n * @returns Score from 0 to 1\n */\n scoreElementMatch(t, e) {\n let s = 0, n = 0;\n if (e.id && (n += 0.3, t.id === e.id && (s += 0.3)), e.classes && e.classes.length > 0) {\n n += 0.25;\n const a = Array.from(t.classList), i = e.classes.filter(\n (o) => a.includes(o)\n ).length;\n s += i / e.classes.length * 0.25;\n }\n if (e.attributes) {\n const a = Object.entries(e.attributes);\n if (a.length > 0) {\n n += 0.2;\n let i = 0;\n for (const [o, c] of a)\n t.getAttribute(o) === c && i++;\n s += i / a.length * 0.2;\n }\n }\n if (e.role && (n += 0.15, t.getAttribute(\"role\") === e.role && (s += 0.15)), e.text) {\n n += 0.1;\n const a = F(t.textContent);\n a === e.text.normalized ? s += 0.1 : a.includes(e.text.normalized) && (s += 0.05);\n }\n return n > 0 ? s / n : 0;\n }\n}\nfunction re(r, t, e = {}) {\n const s = { ...yt, ...e };\n let n;\n try {\n t instanceof Document ? n = t : n = k(t);\n } catch (p) {\n const b = p instanceof Error ? p.message : \"Unknown error\";\n return {\n status: \"error\",\n elements: [],\n warnings: [\"Failed to resolve document context\", b],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"invalid-context\" }\n };\n }\n if (s.root) {\n const p = s.root instanceof Document ? s.root : s.root.ownerDocument;\n p && p !== n && console.warn(\n \"options.root does not match dom parameter document. Using document from dom parameter. This may indicate a cross-document operation issue.\"\n );\n }\n const a = s.documentUrl ?? n.defaultView?.location?.href, i = s.matchUrlsByPathOnly ?? !0, o = new ot(), c = new te(), u = new ee(), d = new se(), l = o.buildSelector(r, {\n ensureUnique: !1,\n root: n\n });\n let h;\n try {\n h = Array.from(n.querySelectorAll(l));\n } catch (p) {\n const b = p instanceof Error ? p.message : \"Unknown selector error\";\n return {\n status: \"error\",\n elements: [],\n warnings: [`Invalid CSS selector: ${l}`, `Error: ${b}`],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"invalid-selector\" }\n };\n }\n const g = h.length;\n h.length > s.maxCandidates && (h = h.slice(0, s.maxCandidates));\n const f = c.match(\n h,\n r.target.semantics,\n a,\n i\n );\n if (f.length === 0 && g > 0 && r.target.semantics.text !== void 0) {\n const p = c.matchLenient(\n h,\n r.target.semantics,\n a,\n i\n );\n if (p.length > 0) {\n if (p.length === 1)\n return {\n status: \"success\",\n elements: p,\n warnings: [\"Used relaxed text matching due to exact match failure\"],\n confidence: r.meta.confidence * 0.8,\n // Slight confidence penalty\n meta: { degraded: !0, degradationReason: \"relaxed-text-matching\" }\n };\n const b = at(\n p,\n r,\n u,\n d,\n n,\n s,\n 1\n // No penalty here - lenient penalty applied to final result\n );\n if (b.elements.length > 0)\n return {\n ...b,\n warnings: [...b.warnings, \"Used relaxed text matching\"],\n confidence: b.confidence * 0.8\n // Apply lenient matching penalty (20% degradation)\n };\n }\n }\n if (f.length === 1)\n return {\n status: \"success\",\n elements: f,\n warnings: [],\n confidence: r.meta.confidence,\n meta: { degraded: !1 }\n };\n if (f.length === 0) {\n const p = g > 0 ? `CSS selector found ${g} candidates but semantic filtering rejected all. This may indicate text content mismatch.` : \"CSS selector found no candidates\";\n if (s.enableFallback) {\n const b = d.handleFallback(r, n);\n return {\n ...b,\n warnings: [...b.warnings, p]\n };\n }\n return {\n status: \"error\",\n elements: [],\n warnings: [\"No matching elements found\", p],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"not-found\" }\n };\n }\n return at(\n f,\n r,\n u,\n d,\n n,\n s,\n 1\n // no confidence penalty for exact match path\n );\n}\nfunction ne(r) {\n return [...r].sort((t, e) => e.priority - t.priority);\n}\nfunction at(r, t, e, s, n, a, i) {\n let o = r;\n const c = ne(t.constraints);\n for (const d of c) {\n if (o = e.applyConstraint(o, d), o.length === 1)\n return {\n status: \"success\",\n elements: o,\n warnings: [],\n confidence: t.meta.confidence * 0.9 * i,\n meta: { degraded: !1 }\n };\n if (o.length === 0)\n return a.enableFallback ? s.handleFallback(t, n) : {\n status: \"error\",\n elements: [],\n warnings: [\"Constraints eliminated all candidates\"],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"over-constrained\" }\n };\n }\n if (a.strictMode)\n return {\n status: \"ambiguous\",\n elements: o,\n warnings: [`Non-unique resolution: ${o.length} matches`],\n confidence: t.meta.confidence * 0.7 * i,\n meta: { degraded: !0, degradationReason: \"ambiguous\" }\n };\n const u = s.handleAmbiguous(o, t);\n return {\n ...u,\n confidence: u.confidence * i\n };\n}\nfunction Se(r) {\n const t = [], e = [];\n if (r.version ? r.version !== \"1.0\" && e.push(`Unknown version: ${r.version}`) : t.push(\"Missing version field\"), r.anchor ? (r.anchor.tag || t.push(\"Anchor missing tag\"), typeof r.anchor.score != \"number\" && t.push(\"Anchor missing score\"), r.anchor.semantics || t.push(\"Anchor missing semantics\")) : t.push(\"Missing anchor field\"), r.target ? (r.target.tag || t.push(\"Target missing tag\"), typeof r.target.score != \"number\" && t.push(\"Target missing score\"), r.target.semantics || t.push(\"Target missing semantics\")) : t.push(\"Missing target field\"), !Array.isArray(r.path))\n t.push(\"Path must be an array\");\n else\n for (let s = 0; s < r.path.length; s++) {\n const n = r.path[s];\n n.tag || t.push(`Path node ${s} missing tag`), n.semantics || t.push(`Path node ${s} missing semantics`);\n }\n return r.meta ? (typeof r.meta.confidence != \"number\" && e.push(\"Missing confidence score\"), r.meta.generatedAt || e.push(\"Missing generatedAt timestamp\")) : t.push(\"Missing meta field\"), Array.isArray(r.constraints) || e.push(\"Constraints should be an array\"), r.fallback || e.push(\"Missing fallback rules\"), {\n valid: t.length === 0,\n errors: t,\n warnings: e\n };\n}\nfunction Ae(r) {\n if (!r || typeof r != \"object\") return !1;\n const t = r;\n return typeof t.version == \"string\" && typeof t.anchor == \"object\" && Array.isArray(t.path) && typeof t.target == \"object\";\n}\nconst ct = {\n maxClasses: 2,\n maxAttributes: 5,\n includeText: !0,\n maxTextLength: 50,\n simplifyTarget: !0,\n includeConstraints: !0\n};\nfunction it(r) {\n return r === \"id\" ? 101 : w[r] !== void 0 ? w[r] : r.startsWith(\"data-\") ? w[\"data-*\"] : r.startsWith(\"aria-\") ? w[\"aria-*\"] : 0;\n}\nfunction ae(r) {\n return [\"id\", \"data-testid\", \"data-qa\", \"data-cy\", \"href\", \"text\", \"role\"].includes(r);\n}\nfunction ie(r) {\n return !!(/@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/.test(r) || /(\\+?\\d{1,3}[-.\\s]?)?\\(?\\d{3}\\)?[-.\\s]?\\d{3}[-.\\s]?\\d{4}/.test(r) || /\\d{4}[-\\s]?\\d{4}[-\\s]?\\d{4}[-\\s]?\\d{4}/.test(r));\n}\nfunction oe(r, t) {\n const e = { ...ct, ...t }, s = `v${r.version}`, n = j(r.anchor, !1, e), a = r.path.length > 0 ? r.path.map((c) => j(c, !1, e)).join(\" > \") + \" > \" : \"\", i = j(r.target, !0, e), o = e.includeConstraints ? le(r) : \"\";\n return `${s}: ${n} :: ${a}${i}${o}`;\n}\nfunction ce(r) {\n r = r.trim();\n const t = r.match(/^v(\\d+(?:\\.\\d+)?)\\s*:\\s*/);\n if (!t)\n throw new Error('Invalid SEQL Selector: missing version prefix (expected \"v1:\")');\n const e = t[1];\n if (e !== \"1.0\" && e !== \"1\")\n throw new Error(`Unsupported SEQL Selector version: v${e} (only v1.0 is supported)`);\n let s = r.slice(t[0].length);\n const n = s.match(/^(.+?)\\s*::\\s*/);\n if (!n)\n throw new Error('Invalid SEQL Selector: missing anchor separator \"::\"');\n const a = n[1].trim();\n s = s.slice(n[0].length);\n const i = s.match(/\\s*\\{([^}]+)\\}\\s*$/);\n let o = \"\";\n i && (o = i[1], s = s.slice(0, i.index));\n const c = s.split(/\\s*>\\s*/).map((p) => p.trim()).filter((p) => p);\n if (c.length === 0)\n throw new Error(\"Invalid SEQL Selector: missing target node\");\n const u = c[c.length - 1], d = c.slice(0, -1), l = W(a, !0), h = d.map((p) => W(p, !1)), g = W(u, !1), f = he(o);\n return {\n version: \"1.0\",\n anchor: l,\n path: h,\n target: g,\n constraints: f,\n fallback: {\n onMultiple: \"best-score\",\n onMissing: \"anchor-only\",\n maxDepth: 10\n },\n meta: {\n confidence: 0.7,\n generatedAt: (/* @__PURE__ */ new Date()).toISOString(),\n generator: \"seql-parser@1.0\",\n source: \"seql-string\",\n degraded: !1\n }\n };\n}\nfunction j(r, t = !1, e = ct) {\n const { tag: s, semantics: n } = r;\n let a = s;\n const i = [], o = { ...n.attributes };\n n.id && (o.id = n.id), n.role && !o.role && (o.role = n.role);\n const c = Object.entries(o).map(([l, h]) => {\n const g = it(l), f = l === \"href\" || l === \"src\" ? D(l, h) : h;\n return { name: l, value: f, priority: g };\n }).filter((l) => l.name !== \"id\" && l.name !== \"class\" && V.has(l.name) || Q.has(l.name) && Y(l.value) ? !1 : l.priority > 0 || l.name === \"role\" || l.name === \"id\");\n c.sort((l, h) => h.priority - l.priority);\n const u = c.slice(0, e.maxAttributes);\n u.sort((l, h) => l.name.localeCompare(h.name));\n for (const { name: l, value: h } of u)\n i.push(`${l}=\"${B(h)}\"`);\n if (e.includeText && n.text && !ie(n.text.normalized)) {\n const l = n.text.normalized;\n l.length > 0 && l.length <= e.maxTextLength && i.push(`text=\"${B(l)}\"`);\n }\n let d = i;\n if (i.length > 0 && (t && e.simplifyTarget && n.id && (d = i.filter((l) => {\n const h = l.split(\"=\")[0];\n return it(h) >= 60 || h === \"text\" || h === \"id\" || h === \"role\";\n })), d.length > 0 && d.sort((l, h) => l.localeCompare(h))), n.classes && n.classes.length > 0) {\n const l = M(n.classes), h = !!n.id || i.some(\n (f) => f.startsWith(\"href=\") || f.startsWith(\"data-testid=\") || f.startsWith(\"text=\") || f.startsWith(\"role=\")\n );\n if (!(t && e.simplifyTarget && h) && l.length > 0) {\n const f = l.sort().slice(0, e.maxClasses);\n a += f.map((m) => `.${m}`).join(\"\");\n }\n }\n if (d.length > 0 && (a += `[${d.join(\",\")}]`), \"nthChild\" in r && r.nthChild) {\n const l = !!n.id || n.attributes && Object.keys(n.attributes).some(ae);\n t && e.simplifyTarget && l || (a += `#${r.nthChild}`);\n }\n return a;\n}\nfunction le(r) {\n if (!r.constraints || r.constraints.length === 0)\n return \"\";\n const t = [];\n for (const e of r.constraints)\n switch (e.type) {\n case \"uniqueness\":\n t.push(\"unique=true\");\n break;\n case \"position\":\n e.params && e.params.strategy && t.push(`pos=${e.params.strategy}`);\n break;\n case \"text-proximity\":\n if (e.params && e.params.reference) {\n const s = B(String(e.params.reference));\n t.push(`text=\"${s}\"`);\n }\n break;\n }\n return t.length === 0 ? \"\" : ` {${t.join(\",\")}}`;\n}\nfunction W(r, t) {\n let e = r;\n const s = {}, n = e.match(/^([a-z][a-z0-9-]*)/);\n if (!n)\n throw new Error(`Invalid node: missing tag name in \"${r}\"`);\n const a = n[1];\n e = e.slice(a.length);\n const i = [];\n let o;\n for (; o = e.match(/^\\.([a-zA-Z][a-zA-Z0-9-_]*)/); )\n i.push(o[1]), e = e.slice(o[0].length);\n i.length > 0 && (s.classes = i);\n const c = e.match(/^\\[([^\\]]+)\\]/);\n if (c) {\n const l = c[1], h = {}, g = ue(l);\n for (const f of g) {\n const m = f.match(/^([a-z][a-z0-9-]*)(?:=|~=)\"((?:[^\"\\\\]|\\\\.)*)\"/);\n if (m) {\n const [, p, b] = m;\n h[p] = lt(b);\n }\n }\n Object.keys(h).length > 0 && (h.text && (s.text = {\n raw: h.text,\n normalized: h.text\n }, delete h.text), h.id && (s.id = h.id, delete h.id), h.role && (s.role = h.role, delete h.role), Object.keys(h).length > 0 && (s.attributes = h)), e = e.slice(c[0].length);\n }\n let u;\n const d = e.match(/^#(\\d+)/);\n if (d && (u = parseInt(d[1], 10), e = e.slice(d[0].length)), e.trim())\n throw new Error(`Invalid node: unexpected content \"${e}\" in \"${r}\"`);\n return t ? {\n tag: a,\n semantics: s,\n score: 0.7,\n degraded: !1\n } : {\n tag: a,\n semantics: s,\n score: 0.7,\n nthChild: u\n };\n}\nfunction he(r) {\n if (!r.trim())\n return [];\n const t = [], e = r.split(\",\").map((s) => s.trim());\n for (const s of e) {\n const [n, a] = s.split(\"=\").map((i) => i.trim());\n switch (n) {\n case \"unique\":\n a === \"true\" && t.push({\n type: \"uniqueness\",\n params: {\n mode: \"strict\"\n },\n priority: 90\n });\n break;\n case \"pos\":\n t.push({\n type: \"position\",\n params: {\n strategy: a\n },\n priority: 70\n });\n break;\n case \"text\": {\n const i = a.replace(/^\"(.*)\"$/, \"$1\");\n t.push({\n type: \"text-proximity\",\n params: {\n reference: lt(i),\n maxDistance: 5\n },\n priority: 60\n });\n break;\n }\n }\n }\n return t;\n}\nfunction ue(r) {\n const t = [];\n let e = \"\", s = !1;\n for (let n = 0; n < r.length; n++) {\n const a = r[n];\n a === '\"' && (n === 0 || r[n - 1] !== \"\\\\\") ? (s = !s, e += a) : a === \",\" && !s ? (e.trim() && t.push(e.trim()), e = \"\") : e += a;\n }\n return e.trim() && t.push(e.trim()), t;\n}\nfunction B(r) {\n return r.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/>/g, \"\\\\>\").replace(/:/g, \"\\\\:\");\n}\nfunction lt(r) {\n return r.replace(/\\\\\\\\/g, \"\\0\").replace(/\\\\\"/g, '\"').replace(/\\\\>/g, \">\").replace(/\\\\:/g, \":\").replace(/\\x00/g, \"\\\\\");\n}\nfunction xe(r, t, e) {\n const s = X(r, t);\n return s ? oe(s, e) : null;\n}\nfunction Ce(r, t, e) {\n try {\n const s = ce(r), n = {\n ...e,\n root: e?.root || t\n };\n return re(s, t, n).elements || [];\n } catch (s) {\n return console.error(\"Failed to resolve SEQL Selector:\", s), [];\n }\n}\nconst de = /* @__PURE__ */ new Set([\"script\", \"style\", \"noscript\", \"meta\", \"link\", \"head\", \"title\"]);\nfunction G(r) {\n return r.id && !P(r.id) ? 3 : r.hasAttribute(\"role\") || r.hasAttribute(\"aria-label\") || r.hasAttribute(\"aria-labelledby\") || r.hasAttribute(\"data-testid\") || r.hasAttribute(\"data-qa\") || r.hasAttribute(\"data-test\") ? 2 : 1;\n}\nfunction ht(r, t) {\n const e = r.tagName.toLowerCase();\n return !!(de.has(e) || t && G(r) === 1 && ![\n \"form\",\n \"main\",\n \"nav\",\n \"section\",\n \"article\",\n \"footer\",\n \"header\",\n \"button\",\n \"a\",\n \"input\",\n \"label\",\n \"select\",\n \"textarea\"\n ].includes(e));\n}\nfunction ut(r) {\n return [...r].sort((t, e) => {\n const s = G(t);\n return G(e) - s;\n });\n}\nfunction Te(r = {}) {\n const t = performance.now();\n let {\n root: e,\n filter: s = \"*\",\n limit: n = 1 / 0,\n onProgress: a,\n progressInterval: i = 100,\n skipNonSemantic: o = !0,\n generatorOptions: c = {},\n cache: u,\n signal: d\n } = r;\n const l = u ?? Z(), h = { ...c, cache: l };\n let g;\n try {\n if (e)\n e instanceof Document, g = Array.from(e.querySelectorAll(s));\n else if (typeof document < \"u\")\n g = Array.from(document.querySelectorAll(s));\n else\n throw new Error(\"Root element or document is required when document is not available\");\n } catch {\n return {\n results: [],\n failed: [],\n stats: {\n totalElements: 0,\n successful: 0,\n failed: 0,\n skipped: 0,\n totalTimeMs: 0,\n avgTimePerElementMs: 0,\n cacheHitRate: 0\n }\n };\n }\n if (!e) {\n if (g.length === 0)\n throw new Error(\"Root element or document is required when no elements are found\");\n const x = k(g[0]);\n e = x.body || x.documentElement;\n }\n const f = e instanceof Document ? e : k(e);\n g.forEach((x, y) => {\n if (k(x) !== f)\n throw new Error(\n `Batch generation requires all elements from the same document. Element at index ${y} is from a different document. If working with iframes, ensure all elements are from the same iframe's contentDocument.`\n );\n });\n const m = g.filter((x) => !ht(x, o)), b = ut(m).slice(0, n), S = [], E = [];\n let C = 0;\n const A = b.length;\n let v = 0;\n for (let x = 0; x < b.length && !d?.aborted; x++) {\n const y = b[x], q = l.getEID(y);\n if (q)\n S.push({\n element: y,\n eid: q,\n generationTimeMs: 0\n // Cached, no generation time\n });\n else {\n const dt = performance.now();\n try {\n const L = X(y, h), ft = performance.now() - dt;\n L ? S.push({\n element: y,\n eid: L,\n generationTimeMs: ft\n }) : C++;\n } catch (L) {\n E.push({\n element: y,\n error: L instanceof Error ? L.message : String(L)\n });\n }\n }\n a && x - v >= i && (a(x + 1, A), v = x);\n }\n a && a(A, A);\n const H = performance.now() - t, $ = l.getStats(), T = $.eidHits + $.eidMisses + $.selectorHits + $.selectorMisses, R = $.eidHits + $.selectorHits, N = T > 0 ? R / T : 0;\n return {\n results: S,\n failed: E,\n stats: {\n totalElements: A,\n successful: S.length,\n failed: E.length,\n skipped: C,\n totalTimeMs: H,\n avgTimePerElementMs: S.length > 0 ? H / S.length : 0,\n cacheHitRate: N\n }\n };\n}\nfunction Ee(r, t = {}) {\n const e = performance.now(), {\n limit: s = 1 / 0,\n onProgress: n,\n progressInterval: a = 100,\n skipNonSemantic: i = !0,\n generatorOptions: o = {},\n cache: c,\n signal: u\n } = t, d = c ?? Z(), l = { ...o, cache: d }, h = r.filter((T) => !ht(T, i)), f = ut(h).slice(0, s), m = [], p = [];\n let b = 0;\n const S = f.length;\n let E = 0;\n for (let T = 0; T < f.length && !u?.aborted; T++) {\n const R = f[T], N = d.getEID(R);\n if (N)\n m.push({\n element: R,\n eid: N,\n generationTimeMs: 0\n });\n else {\n const x = performance.now();\n try {\n const y = X(R, l), q = performance.now() - x;\n y ? m.push({\n element: R,\n eid: y,\n generationTimeMs: q\n }) : b++;\n } catch (y) {\n p.push({\n element: R,\n error: y instanceof Error ? y.message : String(y)\n });\n }\n }\n n && T - E >= a && (n(T + 1, S), E = T);\n }\n n && n(S, S);\n const C = performance.now() - e, A = d.getStats(), v = A.eidHits + A.eidMisses + A.selectorHits + A.selectorMisses, H = A.eidHits + A.selectorHits, $ = v > 0 ? H / v : 0;\n return {\n results: m,\n failed: p,\n stats: {\n totalElements: S,\n successful: m.length,\n failed: p.length,\n skipped: b,\n totalTimeMs: C,\n avgTimePerElementMs: m.length > 0 ? C / m.length : 0,\n cacheHitRate: $\n }\n };\n}\nexport {\n St as AnchorFinder,\n ee as ConstraintsEvaluator,\n ot as CssGenerator,\n bt as DEFAULT_GENERATOR_OPTIONS,\n yt as DEFAULT_RESOLVER_OPTIONS,\n Bt as EIDCache,\n fe as EID_VERSION,\n se as FallbackHandler,\n ge as MAX_PATH_DEPTH,\n $t as PathBuilder,\n J as ROLE_ANCHOR_VALUES,\n K as SEMANTIC_ANCHOR_TAGS,\n me as SEMANTIC_ATTRIBUTES,\n mt as SEMANTIC_TAGS,\n st as SemanticExtractor,\n te as SemanticsMatcher,\n Ft as SvgFingerprinter,\n jt as calculateConfidence,\n be as calculateElementScore,\n Gt as createEIDCache,\n vt as filterClasses,\n X as generateEID,\n Te as generateEIDBatch,\n Ee as generateEIDForElements,\n xe as generateSEQL,\n pe as getClassScore,\n Z as getGlobalCache,\n Ae as isEID,\n tt as isUtilityClass,\n F as normalizeText,\n ce as parseSEQL,\n ye as resetGlobalCache,\n re as resolve,\n Ce as resolveSEQL,\n oe as stringifySEQL,\n Se as validateEID\n};\n//# sourceMappingURL=seql-js.js.map\n","import type {\n MaskInputOptions,\n SlimDOMOptions,\n MaskTextFn,\n MaskInputFn,\n KeepIframeSrcFn,\n ICanvas,\n DialogAttributes,\n} from './types';\nimport { NodeType } from '@appsurify-testmap/rrweb-types';\nimport type {\n serializedNode,\n serializedNodeWithId,\n serializedElementNodeWithId,\n elementNode,\n attributes,\n mediaAttributes,\n DataURLOptions,\n} from '@appsurify-testmap/rrweb-types';\nimport {\n Mirror,\n is2DCanvasBlank,\n isElement,\n isShadowRoot,\n maskInputValue,\n isNativeShadowDom,\n stringifyStylesheet,\n getInputType,\n toLowerCase,\n extractFileExtension,\n absolutifyURLs,\n markCssSplits,\n isTextVisible,\n isElementVisible,\n isElementInteractive,\n} from \"./utils\";\nimport dom from '@appsurify-testmap/rrweb-utils';\nimport { generateSEQL } from '@whenessel/seql-js';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport type { GeneratorOptions as SEQLGeneratorOptions } from '@whenessel/seql-js';\n\nlet _id = 1;\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\n\nexport const IGNORED_NODE = -2;\n\nexport function genId(): number {\n return _id++;\n}\n\nfunction getValidTagName(element: HTMLElement): Lowercase<string> {\n if (element instanceof HTMLFormElement) {\n return 'form';\n }\n\n const processedTagName = toLowerCase(element.tagName);\n\n if (tagNameRegex.test(processedTagName)) {\n // if the tag name is odd and we cannot extract\n // anything from the string, then we return a\n // generic div\n return 'div';\n }\n\n return processedTagName;\n}\n\nlet canvasService: HTMLCanvasElement | null;\nlet canvasCtx: CanvasRenderingContext2D | null;\n\n// eslint-disable-next-line no-control-regex\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/; // Don't use \\s, to avoid matching non-breaking space\n// eslint-disable-next-line no-control-regex\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc: Document, attributeValue: string) {\n /*\n run absoluteToDoc over every url in the srcset\n\n this is adapted from https://github.com/albell/parse-srcset/\n without the parsing of the descriptors (we return these as-is)\n parce-srcset is in turn based on\n https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n */\n if (attributeValue.trim() === '') {\n return attributeValue;\n }\n\n let pos = 0;\n\n function collectCharacters(regEx: RegExp) {\n let chars: string;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars = match[0];\n pos += chars.length;\n return chars;\n }\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line no-constant-condition\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n // don't split on commas within urls\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === ',') {\n // aside: according to spec more than one comma at the end is a parse error, but we ignore that\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n // the trailing comma splits the srcset, so the interpretion is that\n // another url will follow, and the descriptor is empty\n output.push(url);\n } else {\n let descriptorsStr = '';\n url = absoluteToDoc(doc, url);\n let inParens = false;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const c = attributeValue.charAt(pos);\n if (c === '') {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c === ',') {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break; // parse the next url\n } else if (c === '(') {\n inParens = true;\n }\n } else {\n // in parenthesis; ignore commas\n // (parenthesis may be supported by future additions to spec)\n if (c === ')') {\n inParens = false;\n }\n }\n descriptorsStr += c;\n pos += 1;\n }\n }\n }\n return output.join(', ');\n}\n\nconst cachedDocument = new WeakMap<Document, HTMLAnchorElement>();\n\nexport function absoluteToDoc(doc: Document, attributeValue: string): string {\n if (!attributeValue || attributeValue.trim() === '') {\n return attributeValue;\n }\n\n return getHref(doc, attributeValue);\n}\n\nfunction isSVGElement(el: Element): boolean {\n return Boolean(el.tagName === 'svg' || (el as SVGElement).ownerSVGElement);\n}\n\nfunction getHref(doc: Document, customHref?: string) {\n let a = cachedDocument.get(doc);\n if (!a) {\n a = doc.createElement('a');\n cachedDocument.set(doc, a);\n }\n if (!customHref) {\n customHref = '';\n } else if (customHref.startsWith('blob:') || customHref.startsWith('data:')) {\n return customHref;\n }\n // note: using `new URL` is slower. See #1434 or https://jsbench.me/uqlud17rxo/1\n a.setAttribute('href', customHref);\n return a.href;\n}\n\nexport function transformAttribute(\n doc: Document,\n tagName: Lowercase<string>,\n name: Lowercase<string>,\n value: string | null,\n): string | null {\n if (!value) {\n return value;\n }\n\n // relative path in attribute\n if (\n name === 'src' ||\n (name === 'href' && !(tagName === 'use' && value[0] === '#'))\n ) {\n // href starts with a # is an id pointer for svg\n return absoluteToDoc(doc, value);\n } else if (name === 'xlink:href' && value[0] !== '#') {\n // xlink:href starts with # is an id pointer\n return absoluteToDoc(doc, value);\n } else if (\n name === 'background' &&\n (tagName === 'table' || tagName === 'td' || tagName === 'th')\n ) {\n return absoluteToDoc(doc, value);\n } else if (name === 'srcset') {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === 'style') {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === 'object' && name === 'data') {\n return absoluteToDoc(doc, value);\n }\n\n return value;\n}\n\nexport function ignoreAttribute(\n tagName: string,\n name: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _value: unknown,\n): boolean {\n return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\n}\n\nexport function isExcludeAttribute(\n name: string,\n exclude: string | RegExp | undefined\n): boolean {\n if (!exclude) return false;\n return typeof exclude === 'string'\n ? name.includes(exclude)\n : exclude.test(name);\n}\n\n\nexport function _isBlockedElement(\n element: HTMLElement,\n blockClass: string | RegExp,\n blockSelector: string | null,\n): boolean {\n try {\n if (typeof blockClass === 'string') {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e) {\n //\n }\n\n return false;\n}\n\nexport function classMatchesRegex(\n node: Node | null,\n regex: RegExp,\n checkAncestors: boolean,\n): boolean {\n if (!node) return false;\n if (node.nodeType !== node.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(dom.parentNode(node), regex, checkAncestors);\n }\n\n for (let eIndex = (node as HTMLElement).classList.length; eIndex--; ) {\n const className = (node as HTMLElement).classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(dom.parentNode(node), regex, checkAncestors);\n}\n\nexport function needMaskingText(\n node: Node,\n maskTextClass: string | RegExp,\n maskTextSelector: string | null,\n checkAncestors: boolean,\n): boolean {\n let el: Element;\n if (isElement(node)) {\n el = node;\n if (!dom.childNodes(el).length) {\n // optimisation: we can avoid any of the below checks on leaf elements\n // as masking is applied to child text nodes only\n return false;\n }\n } else if (dom.parentElement(node) === null) {\n // should warn? maybe a text node isn't attached to a parent node yet?\n return false;\n } else {\n el = dom.parentElement(node)!;\n }\n try {\n if (typeof maskTextClass === 'string') {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e) {\n //\n }\n return false;\n}\n\n// https://stackoverflow.com/a/36155560\nfunction onceIframeLoaded(\n iframeEl: HTMLIFrameElement,\n listener: () => unknown,\n iframeLoadTimeout: number,\n) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n // document is loading\n let fired = false;\n\n let readyState: DocumentReadyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== 'complete') {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener('load', () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n // check blank frame for Chrome\n const blankUrl = 'about:blank';\n if (\n win.location.href !== blankUrl ||\n iframeEl.src === blankUrl ||\n iframeEl.src === ''\n ) {\n // iframe was already loaded, make sure we wait to trigger the listener\n // till _after_ the mutation that found this iframe has had time to process\n setTimeout(listener, 0);\n\n return iframeEl.addEventListener('load', listener); // keep listing for future loads\n }\n // use default listener\n iframeEl.addEventListener('load', listener);\n}\n\nfunction onceStylesheetLoaded(\n link: HTMLLinkElement,\n listener: () => unknown,\n styleSheetLoadTimeout: number,\n) {\n let fired = false;\n let styleSheetLoaded: StyleSheet | null;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n\n if (styleSheetLoaded) return;\n\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n\n link.addEventListener('load', () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\n\nfunction serializeNode(\n n: Node,\n options: {\n doc: Document;\n mirror: Mirror;\n blockClass: string | RegExp;\n blockSelector: string | null;\n excludeAttribute?: string | RegExp;\n needsMask: boolean;\n inlineStylesheet: boolean;\n maskInputOptions: MaskInputOptions;\n maskTextFn: MaskTextFn | undefined;\n maskInputFn: MaskInputFn | undefined;\n dataURLOptions?: DataURLOptions;\n inlineImages: boolean;\n recordCanvas: boolean;\n keepIframeSrcFn: KeepIframeSrcFn;\n /**\n * `newlyAddedElement: true` skips scrollTop and scrollLeft check\n */\n newlyAddedElement?: boolean;\n cssCaptured?: boolean;\n },\n): serializedNode | false {\n const {\n doc,\n mirror,\n blockClass,\n blockSelector,\n excludeAttribute,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n cssCaptured = false,\n } = options;\n // Only record root id when document object is not the base document\n const rootId = getRootId(doc, mirror);\n\n switch (n.nodeType) {\n case n.DOCUMENT_NODE:\n if ((n as Document).compatMode !== 'CSS1Compat') {\n return {\n type: NodeType.Document,\n childNodes: [],\n compatMode: (n as Document).compatMode, // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType.Document,\n childNodes: [],\n };\n }\n case n.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType.DocumentType,\n name: (n as DocumentType).name,\n publicId: (n as DocumentType).publicId,\n systemId: (n as DocumentType).systemId,\n rootId,\n };\n case n.ELEMENT_NODE:\n return serializeElementNode(n as HTMLElement, {\n doc,\n blockClass,\n blockSelector,\n excludeAttribute,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId,\n });\n case n.TEXT_NODE:\n return serializeTextNode(n as Text, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured,\n });\n case n.CDATA_SECTION_NODE:\n return {\n type: NodeType.CDATA,\n textContent: '',\n rootId,\n };\n case n.COMMENT_NODE:\n return {\n type: NodeType.Comment,\n textContent: dom.textContent(n as Comment) || '',\n rootId,\n };\n default:\n return false;\n }\n}\n\nfunction getRootId(doc: Document, mirror: Mirror): number | undefined {\n if (!mirror.hasNode(doc)) return undefined;\n const docId = mirror.getId(doc);\n return docId === 1 ? undefined : docId;\n}\n\nfunction serializeTextNode(\n n: Text,\n options: {\n doc: Document;\n needsMask: boolean;\n maskTextFn: MaskTextFn | undefined;\n rootId: number | undefined;\n cssCaptured?: boolean;\n },\n): serializedNode {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n // The parent node may not be a html element which has a tagName attribute.\n // So just let it be undefined which is ok in this use case.\n const parent = dom.parentNode(n);\n const parentTagName = parent && (parent as HTMLElement).tagName;\n let textContent: string | null = '';\n const isStyle = parentTagName === 'STYLE' ? true : undefined;\n const isScript = parentTagName === 'SCRIPT' ? true : undefined;\n if (isScript) {\n textContent = 'SCRIPT_PLACEHOLDER';\n } else if (!cssCaptured) {\n textContent = dom.textContent(n);\n if (isStyle && textContent) {\n // mutation only: we don't need to use stringifyStylesheet\n // as a <style> text node mutation obliterates any previous\n // programmatic rule manipulation (.insertRule etc.)\n // so the current textContent represents the most up to date state\n textContent = absolutifyURLs(textContent, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent && needsMask) {\n textContent = maskTextFn\n ? maskTextFn(textContent, dom.parentElement(n))\n : textContent.replace(/[\\S]/g, '*');\n }\n\n return {\n type: NodeType.Text,\n textContent: textContent || '',\n rootId,\n };\n}\n\nfunction serializeElementNode(\n n: HTMLElement,\n options: {\n doc: Document;\n blockClass: string | RegExp;\n blockSelector: string | null;\n excludeAttribute?: string | RegExp;\n inlineStylesheet: boolean;\n maskInputOptions: MaskInputOptions;\n maskInputFn: MaskInputFn | undefined;\n dataURLOptions?: DataURLOptions;\n inlineImages: boolean;\n recordCanvas: boolean;\n keepIframeSrcFn: KeepIframeSrcFn;\n /**\n * `newlyAddedElement: true` skips scrollTop and scrollLeft check\n */\n newlyAddedElement?: boolean;\n rootId: number | undefined;\n },\n): serializedNode | false {\n const {\n doc,\n blockClass,\n blockSelector,\n excludeAttribute,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId,\n } = options;\n const needBlock = _isBlockedElement(n, blockClass, blockSelector);\n const tagName = getValidTagName(n);\n let attributes: attributes = {};\n const len = n.attributes.length;\n for (let i = 0; i < len; i++) {\n const attr = n.attributes[i];\n if (isExcludeAttribute(attr.name, excludeAttribute)) {\n continue;\n }\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value,\n );\n }\n }\n\n // remote css\n if (tagName === 'link' && inlineStylesheet) {\n //TODO: maybe replace this `.styleSheets` with original one\n const stylesheet = Array.from(doc.styleSheets).find((s) => {\n return s.href === (n as HTMLLinkElement).href;\n });\n let cssText: string | null = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === 'style' && (n as HTMLStyleElement).sheet) {\n let cssText = stringifyStylesheet(\n (n as HTMLStyleElement).sheet as CSSStyleSheet,\n );\n if (cssText) {\n if (n.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n as HTMLStyleElement);\n }\n attributes._cssText = cssText;\n }\n }\n // form fields\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\n const value = (n as HTMLInputElement | HTMLTextAreaElement).value;\n const checked = (n as HTMLInputElement).checked;\n if (\n attributes.type !== 'radio' &&\n attributes.type !== 'checkbox' &&\n attributes.type !== 'submit' &&\n attributes.type !== 'button' &&\n value\n ) {\n attributes.value = maskInputValue({\n element: n,\n type: getInputType(n),\n tagName,\n value,\n maskInputOptions,\n maskInputFn,\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === 'option') {\n if ((n as HTMLOptionElement).selected && !maskInputOptions['select']) {\n attributes.selected = true;\n } else {\n // ignore the html attribute (which corresponds to DOM (n as HTMLOptionElement).defaultSelected)\n // if it's already been changed\n delete attributes.selected;\n }\n }\n\n if (tagName === 'dialog' && (n as HTMLDialogElement).open) {\n // register what type of dialog is this\n // `modal` or `non-modal`\n // this is used to trigger `showModal()` or `show()` on replay (outside of rrweb-snapshot, in rrweb)\n (attributes as DialogAttributes).rr_open_mode = n.matches('dialog:modal')\n ? 'modal'\n : 'non-modal';\n }\n\n // canvas image data\n if (tagName === 'canvas' && recordCanvas) {\n if ((n as ICanvas).__context === '2d') {\n // only record this on 2d canvas\n if (!is2DCanvasBlank(n as HTMLCanvasElement)) {\n attributes.rr_dataURL = (n as HTMLCanvasElement).toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality,\n );\n }\n } else if (!('__context' in n)) {\n // context is unknown, better not call getContext to trigger it\n const canvasDataURL = (n as HTMLCanvasElement).toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality,\n );\n\n // create blank canvas of same dimensions\n const blankCanvas = doc.createElement('canvas');\n blankCanvas.width = (n as HTMLCanvasElement).width;\n blankCanvas.height = (n as HTMLCanvasElement).height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality,\n );\n\n // no need to save dataURL if it's the same as blank canvas\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n // save image offline\n if (tagName === 'img' && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement('canvas');\n canvasCtx = canvasService.getContext('2d');\n }\n const image = n as HTMLImageElement;\n const imageSrc: string =\n image.currentSrc || image.getAttribute('src') || '<unknown-src>';\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener('load', recordInlineImage);\n try {\n canvasService!.width = image.naturalWidth;\n canvasService!.height = image.naturalHeight;\n canvasCtx!.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService!.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality,\n );\n } catch (err) {\n if (image.crossOrigin !== 'anonymous') {\n image.crossOrigin = 'anonymous';\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage(); // too early due to image reload\n else image.addEventListener('load', recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err as string}`,\n );\n }\n }\n if (image.crossOrigin === 'anonymous') {\n priorCrossOrigin\n ? (attributes.crossOrigin = priorCrossOrigin)\n : image.removeAttribute('crossorigin');\n }\n };\n // The image content may not have finished loading yet.\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener('load', recordInlineImage);\n }\n // media elements\n if (tagName === 'audio' || tagName === 'video') {\n const mediaAttributes = attributes as mediaAttributes;\n mediaAttributes.rr_mediaState = (n as HTMLMediaElement).paused\n ? 'paused'\n : 'played';\n mediaAttributes.rr_mediaCurrentTime = (n as HTMLMediaElement).currentTime;\n mediaAttributes.rr_mediaPlaybackRate = (n as HTMLMediaElement).playbackRate;\n mediaAttributes.rr_mediaMuted = (n as HTMLMediaElement).muted;\n mediaAttributes.rr_mediaLoop = (n as HTMLMediaElement).loop;\n mediaAttributes.rr_mediaVolume = (n as HTMLMediaElement).volume;\n }\n // Scroll\n if (!newlyAddedElement) {\n // `scrollTop` and `scrollLeft` are expensive calls because they trigger reflow.\n // Since `scrollTop` & `scrollLeft` are always 0 when an element is added to the DOM.\n // And scrolls also get picked up by rrweb's ScrollObserver\n // So we can safely skip the `scrollTop/Left` calls for newly added elements\n if (n.scrollLeft) {\n attributes.rr_scrollLeft = n.scrollLeft;\n }\n if (n.scrollTop) {\n attributes.rr_scrollTop = n.scrollTop;\n }\n }\n // block element\n if (needBlock) {\n const { width, height } = n.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`,\n };\n }\n // iframe\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src as string)) {\n if (!(n as HTMLIFrameElement).contentDocument) {\n // we can't record it directly as we can't see into it\n // preserve the src attribute so a decision can be taken at replay time\n attributes.rr_src = attributes.src;\n }\n delete attributes.src; // prevent auto loading\n }\n\n let isCustomElement: true | undefined;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e) {\n // In case old browsers don't support customElements\n }\n\n return {\n type: NodeType.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n as Element) || undefined,\n needBlock,\n rootId,\n isCustom: isCustomElement,\n };\n}\n\nfunction lowerIfExists(\n maybeAttr: string | number | boolean | undefined | null,\n): string {\n if (maybeAttr === undefined || maybeAttr === null) {\n return '';\n } else {\n return (maybeAttr as string).toLowerCase();\n }\n}\n\nfunction slimDOMExcluded(\n sn: serializedNode,\n slimDOMOptions: SlimDOMOptions,\n): boolean {\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\n // TODO: convert IE conditional comments to real nodes\n return true;\n } else if (sn.type === NodeType.Element) {\n if (\n slimDOMOptions.script &&\n // script tag\n (sn.tagName === 'script' ||\n // (module)preload link\n (sn.tagName === 'link' &&\n ((sn.attributes.rel === 'preload' && sn.attributes.as === 'script') ||\n sn.attributes.rel === 'modulepreload')) ||\n // prefetch link\n (sn.tagName === 'link' &&\n sn.attributes.rel === 'prefetch' &&\n typeof sn.attributes.href === 'string' &&\n extractFileExtension(sn.attributes.href) === 'js'))\n ) {\n return true;\n } else if (\n slimDOMOptions.headFavicon &&\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\n (sn.tagName === 'meta' &&\n (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/,\n ) ||\n lowerIfExists(sn.attributes.name) === 'application-name' ||\n lowerIfExists(sn.attributes.rel) === 'icon' ||\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))\n ) {\n return true;\n } else if (sn.tagName === 'meta') {\n if (\n slimDOMOptions.headMetaDescKeywords &&\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)\n ) {\n return true;\n } else if (\n slimDOMOptions.headMetaSocial &&\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\n lowerIfExists(sn.attributes.name) === 'pinterest')\n ) {\n return true;\n } else if (\n slimDOMOptions.headMetaRobots &&\n (lowerIfExists(sn.attributes.name) === 'robots' ||\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\n lowerIfExists(sn.attributes.name) === 'bingbot')\n ) {\n return true;\n } else if (\n slimDOMOptions.headMetaHttpEquiv &&\n sn.attributes['http-equiv'] !== undefined\n ) {\n // e.g. X-UA-Compatible, Content-Type, Content-Language,\n // cache-control, X-Translated-By\n return true;\n } else if (\n slimDOMOptions.headMetaAuthorship &&\n (lowerIfExists(sn.attributes.name) === 'author' ||\n lowerIfExists(sn.attributes.name) === 'generator' ||\n lowerIfExists(sn.attributes.name) === 'framework' ||\n lowerIfExists(sn.attributes.name) === 'publisher' ||\n lowerIfExists(sn.attributes.name) === 'progid' ||\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\n lowerIfExists(sn.attributes.property).match(/^product:/))\n ) {\n return true;\n } else if (\n slimDOMOptions.headMetaVerification &&\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\n lowerIfExists(sn.attributes.name) === 'verification' ||\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')\n ) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function serializeNodeWithId(\n n: Node,\n options: {\n doc: Document;\n mirror: Mirror;\n blockClass: string | RegExp;\n blockSelector: string | null;\n maskTextClass: string | RegExp;\n maskTextSelector: string | null;\n excludeAttribute?: string | RegExp;\n skipChild: boolean;\n inlineStylesheet: boolean;\n newlyAddedElement?: boolean;\n maskInputOptions?: MaskInputOptions;\n needsMask?: boolean;\n maskTextFn: MaskTextFn | undefined;\n maskInputFn: MaskInputFn | undefined;\n slimDOMOptions: SlimDOMOptions;\n dataURLOptions?: DataURLOptions;\n keepIframeSrcFn?: KeepIframeSrcFn;\n inlineImages?: boolean;\n recordCanvas?: boolean;\n preserveWhiteSpace?: boolean;\n onSerialize?: (n: Node) => unknown;\n onIframeLoad?: (\n iframeNode: HTMLIFrameElement,\n node: serializedElementNodeWithId,\n ) => unknown;\n iframeLoadTimeout?: number;\n onStylesheetLoad?: (\n linkNode: HTMLLinkElement,\n node: serializedElementNodeWithId,\n ) => unknown;\n stylesheetLoadTimeout?: number;\n cssCaptured?: boolean;\n /**\n * SEQL selector generation options. null means selector should not be recorded.\n */\n selectorOptions?: {\n maxPathDepth: number;\n enableSvgFingerprint?: boolean;\n fallbackToBody?: boolean;\n } | null;\n },\n): serializedNodeWithId | null {\n const {\n doc,\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n excludeAttribute,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5000,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5000,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false,\n cssCaptured = false,\n selectorOptions,\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n\n if (!needsMask) {\n // perf: if needsMask = true, children won't also need to check\n const checkAncestors = needsMask === undefined; // if false, we've already checked ancestors\n needsMask = needMaskingText(\n n as Element,\n maskTextClass,\n maskTextSelector,\n checkAncestors,\n );\n }\n\n const _serializedNode = serializeNode(n, {\n doc,\n mirror,\n blockClass,\n blockSelector,\n excludeAttribute,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n cssCaptured,\n });\n if (!_serializedNode) {\n // TODO: dev only\n console.warn(n, 'not serialized');\n return null;\n }\n\n let id: number | undefined;\n if (mirror.hasNode(n)) {\n // Reuse the previous id\n id = mirror.getId(n);\n } else if (\n slimDOMExcluded(_serializedNode, slimDOMOptions) ||\n (!preserveWhiteSpace &&\n _serializedNode.type === NodeType.Text &&\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)\n ) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n\n const serializedNode = Object.assign(_serializedNode, { id });\n\n // Генерация SEQL селектора и метаданных видимости/интерактивности\n if (isElement(n) || n.nodeType === Node.TEXT_NODE) {\n // Генерация SEQL селектора\n if (isElement(n) && selectorOptions !== null && selectorOptions !== undefined) {\n try {\n const seqlGeneratorOptions: SEQLGeneratorOptions = {\n maxPathDepth: selectorOptions.maxPathDepth,\n enableSvgFingerprint: selectorOptions.enableSvgFingerprint,\n fallbackToBody: selectorOptions.fallbackToBody,\n };\n const selector = generateSEQL(n as Element, seqlGeneratorOptions);\n if (selector) {\n serializedNode.selector = selector;\n }\n } catch (error) {\n // Если SEQL генерация не удалась, просто пропускаем\n // и не добавляем поле selector\n console.warn('Failed to generate SEQL selector:', error);\n }\n }\n // if (isElement(n)) {\n // const selector = generateSEQL(n as Element);\n // if (selector) {\n // serializedNode.selector = selector;\n // } else {\n // console.debug('Invalid SEQL', {n});\n // }\n // } else {\n // console.debug('Skipping SEQL generation for non-element node', {n});\n // }\n\n\n\n // Существующий код для isVisible и isInteractive\n if (n.nodeType === Node.TEXT_NODE) {\n serializedNode.isVisible = isTextVisible(n as Text);\n }\n if (n.nodeType === Node.ELEMENT_NODE) {\n serializedNode.isVisible = isElementVisible(n as Element);\n serializedNode.isInteractive = isElementInteractive(n as Element);\n }\n }\n // add IGNORED_NODE to mirror to track nextSiblings\n mirror.add(n, serializedNode);\n\n if (id === IGNORED_NODE) {\n return null; // slimDOM\n }\n\n if (onSerialize) {\n onSerialize(n);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n // this property was not needed in replay side\n delete serializedNode.needBlock;\n const shadowRootEl = dom.shadowRoot(n);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if (\n (serializedNode.type === NodeType.Document ||\n serializedNode.type === NodeType.Element) &&\n recordChild\n ) {\n if (\n slimDOMOptions.headWhitespace &&\n serializedNode.type === NodeType.Element &&\n serializedNode.tagName === 'head'\n // would impede performance: || getComputedStyle(n)['white-space'] === 'normal'\n ) {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n excludeAttribute,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n cssCaptured: false,\n selectorOptions,\n };\n\n if (\n serializedNode.type === NodeType.Element &&\n serializedNode.tagName === 'textarea' &&\n (serializedNode as elementNode).attributes.value !== undefined\n ) {\n // value parameter in DOM reflects the correct value, so ignore childNode\n } else {\n if (\n serializedNode.type === NodeType.Element &&\n (serializedNode as elementNode).attributes._cssText !== undefined &&\n typeof serializedNode.attributes._cssText === 'string'\n ) {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(dom.childNodes(n))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n\n let shadowRootEl: ShadowRoot | null = null;\n if (isElement(n) && (shadowRootEl = dom.shadowRoot(n))) {\n for (const childN of Array.from(dom.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) &&\n (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n\n const parent = dom.parentNode(n);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n\n if (\n serializedNode.type === NodeType.Element &&\n serializedNode.tagName === 'iframe'\n ) {\n onceIframeLoaded(\n n as HTMLIFrameElement,\n () => {\n const iframeDoc = (n as HTMLIFrameElement).contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n excludeAttribute,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n selectorOptions,\n });\n\n if (serializedIframeNode) {\n onIframeLoad(\n n as HTMLIFrameElement,\n serializedIframeNode as serializedElementNodeWithId,\n );\n }\n }\n },\n iframeLoadTimeout,\n );\n }\n\n // <link rel=stylesheet href=...>\n if (\n serializedNode.type === NodeType.Element &&\n serializedNode.tagName === 'link' &&\n typeof serializedNode.attributes.rel === 'string' &&\n (serializedNode.attributes.rel === 'stylesheet' ||\n (serializedNode.attributes.rel === 'preload' &&\n typeof serializedNode.attributes.href === 'string' &&\n extractFileExtension(serializedNode.attributes.href) === 'css'))\n ) {\n onceStylesheetLoaded(\n n as HTMLLinkElement,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n, {\n doc,\n mirror,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n excludeAttribute,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n selectorOptions,\n });\n\n if (serializedLinkNode) {\n onStylesheetLoad(\n n as HTMLLinkElement,\n serializedLinkNode as serializedElementNodeWithId,\n );\n }\n }\n },\n stylesheetLoadTimeout,\n );\n }\n\n return serializedNode;\n}\n\nfunction snapshot(\n n: Document,\n options?: {\n mirror?: Mirror;\n blockClass?: string | RegExp;\n blockSelector?: string | null;\n maskTextClass?: string | RegExp;\n maskTextSelector?: string | null;\n excludeAttribute?: string | RegExp;\n inlineStylesheet?: boolean;\n maskAllInputs?: boolean | MaskInputOptions;\n maskTextFn?: MaskTextFn;\n maskInputFn?: MaskInputFn;\n slimDOM?: 'all' | boolean | SlimDOMOptions;\n dataURLOptions?: DataURLOptions;\n inlineImages?: boolean;\n recordCanvas?: boolean;\n preserveWhiteSpace?: boolean;\n onSerialize?: (n: Node) => unknown;\n onIframeLoad?: (\n iframeNode: HTMLIFrameElement,\n node: serializedElementNodeWithId,\n ) => unknown;\n iframeLoadTimeout?: number;\n onStylesheetLoad?: (\n linkNode: HTMLLinkElement,\n node: serializedElementNodeWithId,\n ) => unknown;\n stylesheetLoadTimeout?: number;\n keepIframeSrcFn?: KeepIframeSrcFn;\n /**\n * Configuration for SEQL selector generation.\n * - `true` - use default SEQL options\n * - `false` - do not record selector\n * - Object with custom SEQL options\n */\n selector?:\n | boolean\n | {\n maxPathDepth?: number;\n enableSvgFingerprint?: boolean;\n confidenceThreshold?: number;\n fallbackToBody?: boolean;\n };\n },\n): serializedNodeWithId | null {\n const {\n mirror = new Mirror(),\n blockClass = 'rr-block',\n blockSelector = null,\n maskTextClass = 'rr-mask',\n maskTextSelector = null,\n excludeAttribute = /.^/,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false,\n selector,\n } = options || {};\n // console.debug(`${Date.now()} [rrweb-snapshot] snapshot:options:`, options);\n const maskInputOptions: MaskInputOptions =\n maskAllInputs === true\n ? {\n color: true,\n date: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true,\n }\n : maskAllInputs === false\n ? {\n password: true,\n }\n : maskAllInputs;\n const slimDOMOptions: SlimDOMOptions =\n slimDOM === true || slimDOM === 'all'\n ? // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === 'all', // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true,\n }\n : slimDOM === false\n ? {}\n : slimDOM;\n\n // Нормализация опций для SEQL селекторов\n const selectorOptions: {\n maxPathDepth: number;\n enableSvgFingerprint?: boolean;\n confidenceThreshold?: number;\n fallbackToBody?: boolean;\n } | null =\n selector === false\n ? null\n : selector === true\n ? {\n maxPathDepth: 10,\n enableSvgFingerprint: true,\n confidenceThreshold: 0.3,\n fallbackToBody: true,\n }\n : selector === undefined\n ? {\n maxPathDepth: 10,\n enableSvgFingerprint: true,\n confidenceThreshold: 0.3,\n fallbackToBody: true,\n }\n : {\n maxPathDepth: selector.maxPathDepth ?? 10,\n enableSvgFingerprint: selector.enableSvgFingerprint ?? true,\n confidenceThreshold: selector.confidenceThreshold ?? 0.3,\n fallbackToBody: selector.fallbackToBody ?? true,\n };\n\n return serializeNodeWithId(n, {\n doc: n,\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n excludeAttribute,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false,\n selectorOptions,\n });\n}\n\nexport function visitSnapshot(\n node: serializedNodeWithId,\n onVisit: (node: serializedNodeWithId) => unknown,\n) {\n function walk(current: serializedNodeWithId) {\n onVisit(current);\n if (\n current.type === NodeType.Document ||\n current.type === NodeType.Element\n ) {\n current.childNodes.forEach(walk);\n }\n }\n\n walk(node);\n}\n\nexport function cleanupSnapshot() {\n // allow a new recording to start numbering nodes from scratch\n _id = 1;\n}\n\nexport default snapshot;\n","import type { AcceptedPlugin, Rule, Declaration } from 'postcss';\n\nconst MEDIA_SELECTOR = /(max|min)-device-(width|height)/;\nconst MEDIA_SELECTOR_GLOBAL = new RegExp(MEDIA_SELECTOR.source, 'g');\n\nconst mediaSelectorPlugin: AcceptedPlugin = {\n postcssPlugin: 'postcss-custom-selectors',\n prepare() {\n return {\n postcssPlugin: 'postcss-custom-selectors',\n AtRule: function (atrule) {\n if (atrule.params.match(MEDIA_SELECTOR_GLOBAL)) {\n atrule.params = atrule.params.replace(MEDIA_SELECTOR_GLOBAL, '$1-$2');\n }\n },\n };\n },\n};\n\n// Simplified from https://github.com/giuseppeg/postcss-pseudo-classes/blob/master/index.js\nconst pseudoClassPlugin: AcceptedPlugin = {\n postcssPlugin: 'postcss-hover-classes',\n prepare: function () {\n const fixed: Rule[] = [];\n return {\n Rule: function (rule) {\n if (fixed.indexOf(rule) !== -1) {\n return;\n }\n fixed.push(rule);\n rule.selectors.forEach(function (selector) {\n if (selector.includes(':hover')) {\n rule.selector += ',\\n' + selector.replace(/:hover/g, '.\\\\:hover');\n }\n });\n },\n };\n },\n};\n\nconst animationFillModePlugin: AcceptedPlugin = {\n postcssPlugin: 'postcss-animation-fill-mode',\n prepare: function () {\n return {\n Rule: function (rule) {\n let hasAnimation = false;\n let hasAnimationFillMode = false;\n let animationDeclaration: Declaration | null = null;\n\n rule.walkDecls((decl) => {\n if (decl.prop === 'animation') {\n hasAnimation = true;\n animationDeclaration = decl;\n }\n if (decl.prop === 'animation-fill-mode') {\n hasAnimationFillMode = true;\n }\n });\n\n if (hasAnimation && !hasAnimationFillMode && animationDeclaration) {\n rule.insertAfter(animationDeclaration, {\n prop: 'animation-fill-mode',\n value: 'forwards',\n });\n }\n },\n };\n },\n};\n\nexport { mediaSelectorPlugin, pseudoClassPlugin, animationFillModePlugin };\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x,blackBright:x,redBright:x,greenBright:x,yellowBright:x,blueBright:x,magentaBright:x,cyanBright:x,whiteBright:x,bgBlackBright:x,bgRedBright:x,bgGreenBright:x,bgYellowBright:x,bgBlueBright:x,bgMagentaBright:x,bgCyanBright:x,bgWhiteBright:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","export default {}","'use strict'\n\nlet pico = require('picocolors')\n\nlet terminalHighlight = require('./terminal-highlight')\n\nclass CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin) {\n super(message)\n this.name = 'CssSyntaxError'\n this.reason = message\n\n if (file) {\n this.file = file\n }\n if (source) {\n this.source = source\n }\n if (plugin) {\n this.plugin = plugin\n }\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n if (typeof line === 'number') {\n this.line = line\n this.column = column\n } else {\n this.line = line.line\n this.column = line.column\n this.endLine = column.line\n this.endColumn = column.column\n }\n }\n\n this.setMessage()\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError)\n }\n }\n\n setMessage() {\n this.message = this.plugin ? this.plugin + ': ' : ''\n this.message += this.file ? this.file : '<css input>'\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column\n }\n this.message += ': ' + this.reason\n }\n\n showSourceCode(color) {\n if (!this.source) return ''\n\n let css = this.source\n if (color == null) color = pico.isColorSupported\n\n let aside = text => text\n let mark = text => text\n let highlight = text => text\n if (color) {\n let { bold, gray, red } = pico.createColors(true)\n mark = text => bold(red(text))\n aside = text => gray(text)\n if (terminalHighlight) {\n highlight = text => terminalHighlight(text)\n }\n }\n\n let lines = css.split(/\\r?\\n/)\n let start = Math.max(this.line - 3, 0)\n let end = Math.min(this.line + 2, lines.length)\n let maxWidth = String(end).length\n\n return lines\n .slice(start, end)\n .map((line, index) => {\n let number = start + 1 + index\n let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '\n if (number === this.line) {\n if (line.length > 160) {\n let padding = 20\n let subLineStart = Math.max(0, this.column - padding)\n let subLineEnd = Math.max(\n this.column + padding,\n this.endColumn + padding\n )\n let subLine = line.slice(subLineStart, subLineEnd)\n\n let spacing =\n aside(gutter.replace(/\\d/g, ' ')) +\n line\n .slice(0, Math.min(this.column - 1, padding - 1))\n .replace(/[^\\t]/g, ' ')\n\n return (\n mark('>') +\n aside(gutter) +\n highlight(subLine) +\n '\\n ' +\n spacing +\n mark('^')\n )\n }\n\n let spacing =\n aside(gutter.replace(/\\d/g, ' ')) +\n line.slice(0, this.column - 1).replace(/[^\\t]/g, ' ')\n\n return (\n mark('>') +\n aside(gutter) +\n highlight(line) +\n '\\n ' +\n spacing +\n mark('^')\n )\n }\n\n return ' ' + aside(gutter) + highlight(line)\n })\n .join('\\n')\n }\n\n toString() {\n let code = this.showSourceCode()\n if (code) {\n code = '\\n\\n' + code + '\\n'\n }\n return this.name + ': ' + this.message + code\n }\n}\n\nmodule.exports = CssSyntaxError\nCssSyntaxError.default = CssSyntaxError\n","'use strict'\n\nconst DEFAULT_RAW = {\n after: '\\n',\n beforeClose: '\\n',\n beforeComment: '\\n',\n beforeDecl: '\\n',\n beforeOpen: ' ',\n beforeRule: '\\n',\n colon: ': ',\n commentLeft: ' ',\n commentRight: ' ',\n emptyBody: '',\n indent: ' ',\n semicolon: false\n}\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1)\n}\n\nclass Stringifier {\n constructor(builder) {\n this.builder = builder\n }\n\n atrule(node, semicolon) {\n let name = '@' + node.name\n let params = node.params ? this.rawValue(node, 'params') : ''\n\n if (typeof node.raws.afterName !== 'undefined') {\n name += node.raws.afterName\n } else if (params) {\n name += ' '\n }\n\n if (node.nodes) {\n this.block(node, name + params)\n } else {\n let end = (node.raws.between || '') + (semicolon ? ';' : '')\n this.builder(name + params + end, node)\n }\n }\n\n beforeAfter(node, detect) {\n let value\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment')\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule')\n } else {\n value = this.raw(node, null, 'beforeClose')\n }\n\n let buf = node.parent\n let depth = 0\n while (buf && buf.type !== 'root') {\n depth += 1\n buf = buf.parent\n }\n\n if (value.includes('\\n')) {\n let indent = this.raw(node, null, 'indent')\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent\n }\n }\n\n return value\n }\n\n block(node, start) {\n let between = this.raw(node, 'between', 'beforeOpen')\n this.builder(start + between + '{', node, 'start')\n\n let after\n if (node.nodes && node.nodes.length) {\n this.body(node)\n after = this.raw(node, 'after')\n } else {\n after = this.raw(node, 'after', 'emptyBody')\n }\n\n if (after) this.builder(after)\n this.builder('}', node, 'end')\n }\n\n body(node) {\n let last = node.nodes.length - 1\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break\n last -= 1\n }\n\n let semicolon = this.raw(node, 'semicolon')\n for (let i = 0; i < node.nodes.length; i++) {\n let child = node.nodes[i]\n let before = this.raw(child, 'before')\n if (before) this.builder(before)\n this.stringify(child, last !== i || semicolon)\n }\n }\n\n comment(node) {\n let left = this.raw(node, 'left', 'commentLeft')\n let right = this.raw(node, 'right', 'commentRight')\n this.builder('/*' + left + node.text + right + '*/', node)\n }\n\n decl(node, semicolon) {\n let between = this.raw(node, 'between', 'colon')\n let string = node.prop + between + this.rawValue(node, 'value')\n\n if (node.important) {\n string += node.raws.important || ' !important'\n }\n\n if (semicolon) string += ';'\n this.builder(string, node)\n }\n\n document(node) {\n this.body(node)\n }\n\n raw(node, own, detect) {\n let value\n if (!detect) detect = own\n\n // Already had\n if (own) {\n value = node.raws[own]\n if (typeof value !== 'undefined') return value\n }\n\n let parent = node.parent\n\n if (detect === 'before') {\n // Hack for first rule in CSS\n if (!parent || (parent.type === 'root' && parent.first === node)) {\n return ''\n }\n\n // `root` nodes in `document` should use only their own raws\n if (parent && parent.type === 'document') {\n return ''\n }\n }\n\n // Floating child without parent\n if (!parent) return DEFAULT_RAW[detect]\n\n // Detect style by other nodes\n let root = node.root()\n if (!root.rawCache) root.rawCache = {}\n if (typeof root.rawCache[detect] !== 'undefined') {\n return root.rawCache[detect]\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect)\n } else {\n let method = 'raw' + capitalize(detect)\n if (this[method]) {\n value = this[method](root, node)\n } else {\n root.walk(i => {\n value = i.raws[own]\n if (typeof value !== 'undefined') return false\n })\n }\n }\n\n if (typeof value === 'undefined') value = DEFAULT_RAW[detect]\n\n root.rawCache[detect] = value\n return value\n }\n\n rawBeforeClose(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawBeforeComment(root, node) {\n let value\n root.walkComments(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeDecl(root, node) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeOpen(root) {\n let value\n root.walk(i => {\n if (i.type !== 'decl') {\n value = i.raws.between\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawBeforeRule(root) {\n let value\n root.walk(i => {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawColon(root) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '')\n return false\n }\n })\n return value\n }\n\n rawEmptyBody(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawIndent(root) {\n if (root.raws.indent) return root.raws.indent\n let value\n root.walk(i => {\n let p = i.parent\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n let parts = i.raws.before.split('\\n')\n value = parts[parts.length - 1]\n value = value.replace(/\\S/g, '')\n return false\n }\n }\n })\n return value\n }\n\n rawSemicolon(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawValue(node, prop) {\n let value = node[prop]\n let raw = node.raws[prop]\n if (raw && raw.value === value) {\n return raw.raw\n }\n\n return value\n }\n\n root(node) {\n this.body(node)\n if (node.raws.after) this.builder(node.raws.after)\n }\n\n rule(node) {\n this.block(node, this.rawValue(node, 'selector'))\n if (node.raws.ownSemicolon) {\n this.builder(node.raws.ownSemicolon, node, 'end')\n }\n }\n\n stringify(node, semicolon) {\n /* c8 ignore start */\n if (!this[node.type]) {\n throw new Error(\n 'Unknown AST node type ' +\n node.type +\n '. ' +\n 'Maybe you need to change PostCSS stringifier.'\n )\n }\n /* c8 ignore stop */\n this[node.type](node, semicolon)\n }\n}\n\nmodule.exports = Stringifier\nStringifier.default = Stringifier\n","'use strict'\n\nlet Stringifier = require('./stringifier')\n\nfunction stringify(node, builder) {\n let str = new Stringifier(builder)\n str.stringify(node)\n}\n\nmodule.exports = stringify\nstringify.default = stringify\n","'use strict'\n\nmodule.exports.isClean = Symbol('isClean')\n\nmodule.exports.my = Symbol('my')\n","'use strict'\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet Stringifier = require('./stringifier')\nlet stringify = require('./stringify')\nlet { isClean, my } = require('./symbols')\n\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor()\n\n for (let i in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i)) {\n /* c8 ignore next 2 */\n continue\n }\n if (i === 'proxyCache') continue\n let value = obj[i]\n let type = typeof value\n\n if (i === 'parent' && type === 'object') {\n if (parent) cloned[i] = parent\n } else if (i === 'source') {\n cloned[i] = value\n } else if (Array.isArray(value)) {\n cloned[i] = value.map(j => cloneNode(j, cloned))\n } else {\n if (type === 'object' && value !== null) value = cloneNode(value)\n cloned[i] = value\n }\n }\n\n return cloned\n}\n\nfunction sourceOffset(inputCSS, position) {\n // Not all custom syntaxes support `offset` in `source.start` and `source.end`\n if (position && typeof position.offset !== 'undefined') {\n return position.offset\n }\n\n let column = 1\n let line = 1\n let offset = 0\n\n for (let i = 0; i < inputCSS.length; i++) {\n if (line === position.line && column === position.column) {\n offset = i\n break\n }\n\n if (inputCSS[i] === '\\n') {\n column = 1\n line += 1\n } else {\n column += 1\n }\n }\n\n return offset\n}\n\nclass Node {\n get proxyOf() {\n return this\n }\n\n constructor(defaults = {}) {\n this.raws = {}\n this[isClean] = false\n this[my] = true\n\n for (let name in defaults) {\n if (name === 'nodes') {\n this.nodes = []\n for (let node of defaults[name]) {\n if (typeof node.clone === 'function') {\n this.append(node.clone())\n } else {\n this.append(node)\n }\n }\n } else {\n this[name] = defaults[name]\n }\n }\n }\n\n addToError(error) {\n error.postcssNode = this\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s = this.source\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s.input.from}:${s.start.line}:${s.start.column}$&`\n )\n }\n return error\n }\n\n after(add) {\n this.parent.insertAfter(this, add)\n return this\n }\n\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name]\n }\n return this\n }\n\n before(add) {\n this.parent.insertBefore(this, add)\n return this\n }\n\n cleanRaws(keepBetween) {\n delete this.raws.before\n delete this.raws.after\n if (!keepBetween) delete this.raws.between\n }\n\n clone(overrides = {}) {\n let cloned = cloneNode(this)\n for (let name in overrides) {\n cloned[name] = overrides[name]\n }\n return cloned\n }\n\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertAfter(this, cloned)\n return cloned\n }\n\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertBefore(this, cloned)\n return cloned\n }\n\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts)\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n )\n }\n return new CssSyntaxError(message)\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (\n prop === 'prop' ||\n prop === 'value' ||\n prop === 'name' ||\n prop === 'params' ||\n prop === 'important' ||\n /* c8 ignore next */\n prop === 'text'\n ) {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n /* c8 ignore next 3 */\n markClean() {\n this[isClean] = true\n }\n\n markDirty() {\n if (this[isClean]) {\n this[isClean] = false\n let next = this\n while ((next = next.parent)) {\n next[isClean] = false\n }\n }\n }\n\n next() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index + 1]\n }\n\n positionBy(opts = {}) {\n let pos = this.source.start\n if (opts.index) {\n pos = this.positionInside(opts.index)\n } else if (opts.word) {\n let inputString =\n 'document' in this.source.input\n ? this.source.input.document\n : this.source.input.css\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n )\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) pos = this.positionInside(index)\n }\n return pos\n }\n\n positionInside(index) {\n let column = this.source.start.column\n let line = this.source.start.line\n let inputString =\n 'document' in this.source.input\n ? this.source.input.document\n : this.source.input.css\n let offset = sourceOffset(inputString, this.source.start)\n let end = offset + index\n\n for (let i = offset; i < end; i++) {\n if (inputString[i] === '\\n') {\n column = 1\n line += 1\n } else {\n column += 1\n }\n }\n\n return { column, line, offset: end }\n }\n\n prev() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index - 1]\n }\n\n rangeBy(opts = {}) {\n let inputString =\n 'document' in this.source.input\n ? this.source.input.document\n : this.source.input.css\n let start = {\n column: this.source.start.column,\n line: this.source.start.line,\n offset: sourceOffset(inputString, this.source.start)\n }\n let end = this.source.end\n ? {\n column: this.source.end.column + 1,\n line: this.source.end.line,\n offset:\n typeof this.source.end.offset === 'number'\n ? // `source.end.offset` is exclusive, so we don't need to add 1\n this.source.end.offset\n : // Since line/column in this.source.end is inclusive,\n // the `sourceOffset(... , this.source.end)` returns an inclusive offset.\n // So, we add 1 to convert it to exclusive.\n sourceOffset(inputString, this.source.end) + 1\n }\n : {\n column: start.column + 1,\n line: start.line,\n offset: start.offset + 1\n }\n\n if (opts.word) {\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n )\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) {\n start = this.positionInside(index)\n end = this.positionInside(index + opts.word.length)\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line,\n offset: sourceOffset(inputString, opts.start)\n }\n } else if (opts.index) {\n start = this.positionInside(opts.index)\n }\n\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line,\n offset: sourceOffset(inputString, opts.end)\n }\n } else if (typeof opts.endIndex === 'number') {\n end = this.positionInside(opts.endIndex)\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1)\n }\n }\n\n if (\n end.line < start.line ||\n (end.line === start.line && end.column <= start.column)\n ) {\n end = {\n column: start.column + 1,\n line: start.line,\n offset: start.offset + 1\n }\n }\n\n return { end, start }\n }\n\n raw(prop, defaultType) {\n let str = new Stringifier()\n return str.raw(this, prop, defaultType)\n }\n\n remove() {\n if (this.parent) {\n this.parent.removeChild(this)\n }\n this.parent = undefined\n return this\n }\n\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this\n let foundSelf = false\n for (let node of nodes) {\n if (node === this) {\n foundSelf = true\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node)\n bookmark = node\n } else {\n this.parent.insertBefore(bookmark, node)\n }\n }\n\n if (!foundSelf) {\n this.remove()\n }\n }\n\n return this\n }\n\n root() {\n let result = this\n while (result.parent && result.parent.type !== 'document') {\n result = result.parent\n }\n return result\n }\n\n toJSON(_, inputs) {\n let fixed = {}\n let emitInputs = inputs == null\n inputs = inputs || new Map()\n let inputsNextIndex = 0\n\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n /* c8 ignore next 2 */\n continue\n }\n if (name === 'parent' || name === 'proxyCache') continue\n let value = this[name]\n\n if (Array.isArray(value)) {\n fixed[name] = value.map(i => {\n if (typeof i === 'object' && i.toJSON) {\n return i.toJSON(null, inputs)\n } else {\n return i\n }\n })\n } else if (typeof value === 'object' && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs)\n } else if (name === 'source') {\n if (value == null) continue\n let inputId = inputs.get(value.input)\n if (inputId == null) {\n inputId = inputsNextIndex\n inputs.set(value.input, inputsNextIndex)\n inputsNextIndex++\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n }\n } else {\n fixed[name] = value\n }\n }\n\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map(input => input.toJSON())\n }\n\n return fixed\n }\n\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor())\n }\n return this.proxyCache\n }\n\n toString(stringifier = stringify) {\n if (stringifier.stringify) stringifier = stringifier.stringify\n let result = ''\n stringifier(this, i => {\n result += i\n })\n return result\n }\n\n warn(result, text, opts = {}) {\n let data = { node: this }\n for (let i in opts) data[i] = opts[i]\n return result.warn(text, data)\n }\n}\n\nmodule.exports = Node\nNode.default = Node\n","'use strict'\n\nlet Node = require('./node')\n\nclass Comment extends Node {\n constructor(defaults) {\n super(defaults)\n this.type = 'comment'\n }\n}\n\nmodule.exports = Comment\nComment.default = Comment\n","'use strict'\n\nlet Node = require('./node')\n\nclass Declaration extends Node {\n get variable() {\n return this.prop.startsWith('--') || this.prop[0] === '$'\n }\n\n constructor(defaults) {\n if (\n defaults &&\n typeof defaults.value !== 'undefined' &&\n typeof defaults.value !== 'string'\n ) {\n defaults = { ...defaults, value: String(defaults.value) }\n }\n super(defaults)\n this.type = 'decl'\n }\n}\n\nmodule.exports = Declaration\nDeclaration.default = Declaration\n","'use strict'\n\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Node = require('./node')\nlet { isClean, my } = require('./symbols')\n\nlet AtRule, parse, Root, Rule\n\nfunction cleanSource(nodes) {\n return nodes.map(i => {\n if (i.nodes) i.nodes = cleanSource(i.nodes)\n delete i.source\n return i\n })\n}\n\nfunction markTreeDirty(node) {\n node[isClean] = false\n if (node.proxyOf.nodes) {\n for (let i of node.proxyOf.nodes) {\n markTreeDirty(i)\n }\n }\n}\n\nclass Container extends Node {\n get first() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[0]\n }\n\n get last() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]\n }\n\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last)\n for (let node of nodes) this.proxyOf.nodes.push(node)\n }\n\n this.markDirty()\n\n return this\n }\n\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween)\n if (this.nodes) {\n for (let node of this.nodes) node.cleanRaws(keepBetween)\n }\n }\n\n each(callback) {\n if (!this.proxyOf.nodes) return undefined\n let iterator = this.getIterator()\n\n let index, result\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index = this.indexes[iterator]\n result = callback(this.proxyOf.nodes[index], index)\n if (result === false) break\n\n this.indexes[iterator] += 1\n }\n\n delete this.indexes[iterator]\n return result\n }\n\n every(condition) {\n return this.nodes.every(condition)\n }\n\n getIterator() {\n if (!this.lastEach) this.lastEach = 0\n if (!this.indexes) this.indexes = {}\n\n this.lastEach += 1\n let iterator = this.lastEach\n this.indexes[iterator] = 0\n\n return iterator\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (!node[prop]) {\n return node[prop]\n } else if (\n prop === 'each' ||\n (typeof prop === 'string' && prop.startsWith('walk'))\n ) {\n return (...args) => {\n return node[prop](\n ...args.map(i => {\n if (typeof i === 'function') {\n return (child, index) => i(child.toProxy(), index)\n } else {\n return i\n }\n })\n )\n }\n } else if (prop === 'every' || prop === 'some') {\n return cb => {\n return node[prop]((child, ...other) =>\n cb(child.toProxy(), ...other)\n )\n }\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else if (prop === 'nodes') {\n return node.nodes.map(i => i.toProxy())\n } else if (prop === 'first' || prop === 'last') {\n return node[prop].toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (prop === 'name' || prop === 'params' || prop === 'selector') {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n index(child) {\n if (typeof child === 'number') return child\n if (child.proxyOf) child = child.proxyOf\n return this.proxyOf.nodes.indexOf(child)\n }\n\n insertAfter(exist, add) {\n let existIndex = this.index(exist)\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex < index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n insertBefore(exist, add) {\n let existIndex = this.index(exist)\n let type = existIndex === 0 ? 'prepend' : false\n let nodes = this.normalize(\n add,\n this.proxyOf.nodes[existIndex],\n type\n ).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex <= index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n normalize(nodes, sample) {\n if (typeof nodes === 'string') {\n nodes = cleanSource(parse(nodes).nodes)\n } else if (typeof nodes === 'undefined') {\n nodes = []\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type === 'root' && this.type !== 'document') {\n nodes = nodes.nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type) {\n nodes = [nodes]\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation')\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value)\n }\n nodes = [new Declaration(nodes)]\n } else if (nodes.selector || nodes.selectors) {\n nodes = [new Rule(nodes)]\n } else if (nodes.name) {\n nodes = [new AtRule(nodes)]\n } else if (nodes.text) {\n nodes = [new Comment(nodes)]\n } else {\n throw new Error('Unknown node type in node creation')\n }\n\n let processed = nodes.map(i => {\n /* c8 ignore next */\n if (!i[my]) Container.rebuild(i)\n i = i.proxyOf\n if (i.parent) i.parent.removeChild(i)\n if (i[isClean]) markTreeDirty(i)\n\n if (!i.raws) i.raws = {}\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/\\S/g, '')\n }\n }\n i.parent = this.proxyOf\n return i\n })\n\n return processed\n }\n\n prepend(...children) {\n children = children.reverse()\n for (let child of children) {\n let nodes = this.normalize(child, this.first, 'prepend').reverse()\n for (let node of nodes) this.proxyOf.nodes.unshift(node)\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n push(child) {\n child.parent = this\n this.proxyOf.nodes.push(child)\n return this\n }\n\n removeAll() {\n for (let node of this.proxyOf.nodes) node.parent = undefined\n this.proxyOf.nodes = []\n\n this.markDirty()\n\n return this\n }\n\n removeChild(child) {\n child = this.index(child)\n this.proxyOf.nodes[child].parent = undefined\n this.proxyOf.nodes.splice(child, 1)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (index >= child) {\n this.indexes[id] = index - 1\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts\n opts = {}\n }\n\n this.walkDecls(decl => {\n if (opts.props && !opts.props.includes(decl.prop)) return\n if (opts.fast && !decl.value.includes(opts.fast)) return\n\n decl.value = decl.value.replace(pattern, callback)\n })\n\n this.markDirty()\n\n return this\n }\n\n some(condition) {\n return this.nodes.some(condition)\n }\n\n walk(callback) {\n return this.each((child, i) => {\n let result\n try {\n result = callback(child, i)\n } catch (e) {\n throw child.addToError(e)\n }\n if (result !== false && child.walk) {\n result = child.walk(callback)\n }\n\n return result\n })\n }\n\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name\n return this.walk((child, i) => {\n if (child.type === 'atrule') {\n return callback(child, i)\n }\n })\n }\n if (name instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i)\n }\n })\n }\n\n walkComments(callback) {\n return this.walk((child, i) => {\n if (child.type === 'comment') {\n return callback(child, i)\n }\n })\n }\n\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop\n return this.walk((child, i) => {\n if (child.type === 'decl') {\n return callback(child, i)\n }\n })\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i)\n }\n })\n }\n\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector\n\n return this.walk((child, i) => {\n if (child.type === 'rule') {\n return callback(child, i)\n }\n })\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i)\n }\n })\n }\n}\n\nContainer.registerParse = dependant => {\n parse = dependant\n}\n\nContainer.registerRule = dependant => {\n Rule = dependant\n}\n\nContainer.registerAtRule = dependant => {\n AtRule = dependant\n}\n\nContainer.registerRoot = dependant => {\n Root = dependant\n}\n\nmodule.exports = Container\nContainer.default = Container\n\n/* c8 ignore start */\nContainer.rebuild = node => {\n if (node.type === 'atrule') {\n Object.setPrototypeOf(node, AtRule.prototype)\n } else if (node.type === 'rule') {\n Object.setPrototypeOf(node, Rule.prototype)\n } else if (node.type === 'decl') {\n Object.setPrototypeOf(node, Declaration.prototype)\n } else if (node.type === 'comment') {\n Object.setPrototypeOf(node, Comment.prototype)\n } else if (node.type === 'root') {\n Object.setPrototypeOf(node, Root.prototype)\n }\n\n node[my] = true\n\n if (node.nodes) {\n node.nodes.forEach(child => {\n Container.rebuild(child)\n })\n }\n}\n/* c8 ignore stop */\n","'use strict'\n\nlet Container = require('./container')\n\nclass AtRule extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'atrule'\n }\n\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.append(...children)\n }\n\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.prepend(...children)\n }\n}\n\nmodule.exports = AtRule\nAtRule.default = AtRule\n\nContainer.registerAtRule(AtRule)\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Document extends Container {\n constructor(defaults) {\n // type needs to be passed to super, otherwise child roots won't be normalized correctly\n super({ type: 'document', ...defaults })\n\n if (!this.nodes) {\n this.nodes = []\n }\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n\n return lazy.stringify()\n }\n}\n\nDocument.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nDocument.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Document\nDocument.default = Document\n","// This alphabet uses `A-Za-z0-9_-` symbols.\n// The order of characters is optimized for better gzip and brotli compression.\n// References to the same file (works both for gzip and brotli):\n// `'use`, `andom`, and `rict'`\n// References to the brotli default dictionary:\n// `-26T`, `1983`, `40px`, `75px`, `bush`, `jack`, `mind`, `very`, and `wolf`\nlet urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n // A compact alternative for `for (var i = 0; i < step; i++)`.\n let i = size | 0\n while (i--) {\n // `| 0` is more compact and faster than `Math.floor()`.\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\n\nlet nanoid = (size = 21) => {\n let id = ''\n // A compact alternative for `for (var i = 0; i < step; i++)`.\n let i = size | 0\n while (i--) {\n // `| 0` is more compact and faster than `Math.floor()`.\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\n\nmodule.exports = { nanoid, customAlphabet }\n","'use strict'\n\nlet { existsSync, readFileSync } = require('fs')\nlet { dirname, join } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\n\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, 'base64').toString()\n } else {\n /* c8 ignore next 2 */\n return window.atob(str)\n }\n}\n\nclass PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return\n this.loadAnnotation(css)\n this.inline = this.startWith(this.annotation, 'data:')\n\n let prev = opts.map ? opts.map.prev : undefined\n let text = this.loadMap(opts.from, prev)\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from\n }\n if (this.mapFile) this.root = dirname(this.mapFile)\n if (text) this.text = text\n }\n\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer(this.text)\n }\n return this.consumerCache\n }\n\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/\n let baseUri = /^data:application\\/json;base64,/\n let charsetUri = /^data:application\\/json;charset=utf-?8,/\n let uri = /^data:application\\/json,/\n\n let uriMatch = text.match(charsetUri) || text.match(uri)\n if (uriMatch) {\n return decodeURIComponent(text.substr(uriMatch[0].length))\n }\n\n let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri)\n if (baseUriMatch) {\n return fromBase64(text.substr(baseUriMatch[0].length))\n }\n\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1]\n throw new Error('Unsupported source map encoding ' + encoding)\n }\n\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, '').trim()\n }\n\n isMap(map) {\n if (typeof map !== 'object') return false\n return (\n typeof map.mappings === 'string' ||\n typeof map._mappings === 'string' ||\n Array.isArray(map.sections)\n )\n }\n\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/g)\n if (!comments) return\n\n // sourceMappingURLs from comments, strings, etc.\n let start = css.lastIndexOf(comments.pop())\n let end = css.indexOf('*/', start)\n\n if (start > -1 && end > -1) {\n // Locate the last sourceMappingURL to avoid pickin\n this.annotation = this.getAnnotationURL(css.substring(start, end))\n }\n }\n\n loadFile(path) {\n this.root = dirname(path)\n if (existsSync(path)) {\n this.mapFile = path\n return readFileSync(path, 'utf-8').toString().trim()\n }\n }\n\n loadMap(file, prev) {\n if (prev === false) return false\n\n if (prev) {\n if (typeof prev === 'string') {\n return prev\n } else if (typeof prev === 'function') {\n let prevPath = prev(file)\n if (prevPath) {\n let map = this.loadFile(prevPath)\n if (!map) {\n throw new Error(\n 'Unable to load previous source map: ' + prevPath.toString()\n )\n }\n return map\n }\n } else if (prev instanceof SourceMapConsumer) {\n return SourceMapGenerator.fromSourceMap(prev).toString()\n } else if (prev instanceof SourceMapGenerator) {\n return prev.toString()\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev)\n } else {\n throw new Error(\n 'Unsupported previous source map format: ' + prev.toString()\n )\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation)\n } else if (this.annotation) {\n let map = this.annotation\n if (file) map = join(dirname(file), map)\n return this.loadFile(map)\n }\n }\n\n startWith(string, start) {\n if (!string) return false\n return string.substr(0, start.length) === start\n }\n\n withContent() {\n return !!(\n this.consumer().sourcesContent &&\n this.consumer().sourcesContent.length > 0\n )\n }\n}\n\nmodule.exports = PreviousMap\nPreviousMap.default = PreviousMap\n","'use strict'\n\nlet { nanoid } = require('nanoid/non-secure')\nlet { isAbsolute, resolve } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { fileURLToPath, pathToFileURL } = require('url')\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet PreviousMap = require('./previous-map')\nlet terminalHighlight = require('./terminal-highlight')\n\nlet lineToIndexCache = Symbol('lineToIndexCache')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(resolve && isAbsolute)\n\nfunction getLineToIndex(input) {\n if (input[lineToIndexCache]) return input[lineToIndexCache]\n let lines = input.css.split('\\n')\n let lineToIndex = new Array(lines.length)\n let prevIndex = 0\n\n for (let i = 0, l = lines.length; i < l; i++) {\n lineToIndex[i] = prevIndex\n prevIndex += lines[i].length + 1\n }\n\n input[lineToIndexCache] = lineToIndex\n return lineToIndex\n}\n\nclass Input {\n get from() {\n return this.file || this.id\n }\n\n constructor(css, opts = {}) {\n if (\n css === null ||\n typeof css === 'undefined' ||\n (typeof css === 'object' && !css.toString)\n ) {\n throw new Error(`PostCSS received ${css} instead of CSS string`)\n }\n\n this.css = css.toString()\n\n if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n this.hasBOM = true\n this.css = this.css.slice(1)\n } else {\n this.hasBOM = false\n }\n\n this.document = this.css\n if (opts.document) this.document = opts.document.toString()\n\n if (opts.from) {\n if (\n !pathAvailable ||\n /^\\w+:\\/\\//.test(opts.from) ||\n isAbsolute(opts.from)\n ) {\n this.file = opts.from\n } else {\n this.file = resolve(opts.from)\n }\n }\n\n if (pathAvailable && sourceMapAvailable) {\n let map = new PreviousMap(this.css, opts)\n if (map.text) {\n this.map = map\n let file = map.consumer().file\n if (!this.file && file) this.file = this.mapResolve(file)\n }\n }\n\n if (!this.file) {\n this.id = '<input css ' + nanoid(6) + '>'\n }\n if (this.map) this.map.file = this.from\n }\n\n error(message, line, column, opts = {}) {\n let endColumn, endLine, endOffset, offset, result\n\n if (line && typeof line === 'object') {\n let start = line\n let end = column\n if (typeof start.offset === 'number') {\n offset = start.offset\n let pos = this.fromOffset(offset)\n line = pos.line\n column = pos.col\n } else {\n line = start.line\n column = start.column\n offset = this.fromLineAndColumn(line, column)\n }\n if (typeof end.offset === 'number') {\n endOffset = end.offset\n let pos = this.fromOffset(endOffset)\n endLine = pos.line\n endColumn = pos.col\n } else {\n endLine = end.line\n endColumn = end.column\n endOffset = this.fromLineAndColumn(end.line, end.column)\n }\n } else if (!column) {\n offset = line\n let pos = this.fromOffset(offset)\n line = pos.line\n column = pos.col\n } else {\n offset = this.fromLineAndColumn(line, column)\n }\n\n let origin = this.origin(line, column, endLine, endColumn)\n if (origin) {\n result = new CssSyntaxError(\n message,\n origin.endLine === undefined\n ? origin.line\n : { column: origin.column, line: origin.line },\n origin.endLine === undefined\n ? origin.column\n : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n )\n } else {\n result = new CssSyntaxError(\n message,\n endLine === undefined ? line : { column, line },\n endLine === undefined ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n )\n }\n\n result.input = { column, endColumn, endLine, endOffset, line, offset, source: this.css }\n if (this.file) {\n if (pathToFileURL) {\n result.input.url = pathToFileURL(this.file).toString()\n }\n result.input.file = this.file\n }\n\n return result\n }\n\n fromLineAndColumn(line, column) {\n let lineToIndex = getLineToIndex(this)\n let index = lineToIndex[line - 1]\n return index + column - 1\n }\n\n fromOffset(offset) {\n let lineToIndex = getLineToIndex(this)\n let lastLine = lineToIndex[lineToIndex.length - 1]\n\n let min = 0\n if (offset >= lastLine) {\n min = lineToIndex.length - 1\n } else {\n let max = lineToIndex.length - 2\n let mid\n while (min < max) {\n mid = min + ((max - min) >> 1)\n if (offset < lineToIndex[mid]) {\n max = mid - 1\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1\n } else {\n min = mid\n break\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n }\n }\n\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file\n }\n return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file)\n }\n\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false\n let consumer = this.map.consumer()\n\n let from = consumer.originalPositionFor({ column, line })\n if (!from.source) return false\n\n let to\n if (typeof endLine === 'number') {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine })\n }\n\n let fromUrl\n\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL(from.source)\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n )\n }\n\n let result = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n }\n\n if (fromUrl.protocol === 'file:') {\n if (fileURLToPath) {\n result.file = fileURLToPath(fromUrl)\n } else {\n /* c8 ignore next 2 */\n throw new Error(`file: protocol is not available in this PostCSS build`)\n }\n }\n\n let source = consumer.sourceContentFor(from.source)\n if (source) result.source = source\n\n return result\n }\n\n toJSON() {\n let json = {}\n for (let name of ['hasBOM', 'css', 'file', 'id']) {\n if (this[name] != null) {\n json[name] = this[name]\n }\n }\n if (this.map) {\n json.map = { ...this.map }\n if (json.map.consumerCache) {\n json.map.consumerCache = undefined\n }\n }\n return json\n }\n}\n\nmodule.exports = Input\nInput.default = Input\n\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input)\n}\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Root extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'root'\n if (!this.nodes) this.nodes = []\n }\n\n normalize(child, sample, type) {\n let nodes = super.normalize(child)\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before\n } else {\n delete sample.raws.before\n }\n } else if (this.first !== sample) {\n for (let node of nodes) {\n node.raws.before = sample.raws.before\n }\n }\n }\n\n return nodes\n }\n\n removeChild(child, ignore) {\n let index = this.index(child)\n\n if (!ignore && index === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index].raws.before\n }\n\n return super.removeChild(child)\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n return lazy.stringify()\n }\n}\n\nRoot.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nRoot.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Root\nRoot.default = Root\n\nContainer.registerRoot(Root)\n","'use strict'\n\nlet list = {\n comma(string) {\n return list.split(string, [','], true)\n },\n\n space(string) {\n let spaces = [' ', '\\n', '\\t']\n return list.split(string, spaces)\n },\n\n split(string, separators, last) {\n let array = []\n let current = ''\n let split = false\n\n let func = 0\n let inQuote = false\n let prevQuote = ''\n let escape = false\n\n for (let letter of string) {\n if (escape) {\n escape = false\n } else if (letter === '\\\\') {\n escape = true\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true\n prevQuote = letter\n } else if (letter === '(') {\n func += 1\n } else if (letter === ')') {\n if (func > 0) func -= 1\n } else if (func === 0) {\n if (separators.includes(letter)) split = true\n }\n\n if (split) {\n if (current !== '') array.push(current.trim())\n current = ''\n split = false\n } else {\n current += letter\n }\n }\n\n if (last || current !== '') array.push(current.trim())\n return array\n }\n}\n\nmodule.exports = list\nlist.default = list\n","'use strict'\n\nlet Container = require('./container')\nlet list = require('./list')\n\nclass Rule extends Container {\n get selectors() {\n return list.comma(this.selector)\n }\n\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null\n let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')\n this.selector = values.join(sep)\n }\n\n constructor(defaults) {\n super(defaults)\n this.type = 'rule'\n if (!this.nodes) this.nodes = []\n }\n}\n\nmodule.exports = Rule\nRule.default = Rule\n\nContainer.registerRule(Rule)\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Input = require('./input')\nlet PreviousMap = require('./previous-map')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nfunction fromJSON(json, inputs) {\n if (Array.isArray(json)) return json.map(n => fromJSON(n))\n\n let { inputs: ownInputs, ...defaults } = json\n if (ownInputs) {\n inputs = []\n for (let input of ownInputs) {\n let inputHydrated = { ...input, __proto__: Input.prototype }\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap.prototype\n }\n }\n inputs.push(inputHydrated)\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map(n => fromJSON(n, inputs))\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source\n defaults.source = source\n if (inputId != null) {\n defaults.source.input = inputs[inputId]\n }\n }\n if (defaults.type === 'root') {\n return new Root(defaults)\n } else if (defaults.type === 'decl') {\n return new Declaration(defaults)\n } else if (defaults.type === 'rule') {\n return new Rule(defaults)\n } else if (defaults.type === 'comment') {\n return new Comment(defaults)\n } else if (defaults.type === 'atrule') {\n return new AtRule(defaults)\n } else {\n throw new Error('Unknown node type: ' + json.type)\n }\n}\n\nmodule.exports = fromJSON\nfromJSON.default = fromJSON\n","'use strict'\n\nlet { dirname, relative, resolve, sep } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { pathToFileURL } = require('url')\n\nlet Input = require('./input')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(dirname && resolve && relative && sep)\n\nclass MapGenerator {\n constructor(stringify, root, opts, cssString) {\n this.stringify = stringify\n this.mapOpts = opts.map || {}\n this.root = root\n this.opts = opts\n this.css = cssString\n this.originalCSS = cssString\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute\n\n this.memoizedFileURLs = new Map()\n this.memoizedPaths = new Map()\n this.memoizedURLs = new Map()\n }\n\n addAnnotation() {\n let content\n\n if (this.isInline()) {\n content =\n 'data:application/json;base64,' + this.toBase64(this.map.toString())\n } else if (typeof this.mapOpts.annotation === 'string') {\n content = this.mapOpts.annotation\n } else if (typeof this.mapOpts.annotation === 'function') {\n content = this.mapOpts.annotation(this.opts.to, this.root)\n } else {\n content = this.outputFile() + '.map'\n }\n let eol = '\\n'\n if (this.css.includes('\\r\\n')) eol = '\\r\\n'\n\n this.css += eol + '/*# sourceMappingURL=' + content + ' */'\n }\n\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file))\n let root = prev.root || dirname(prev.file)\n let map\n\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text)\n if (map.sourcesContent) {\n map.sourcesContent = null\n }\n } else {\n map = prev.consumer()\n }\n\n this.map.applySourceMap(map, from, this.toUrl(this.path(root)))\n }\n }\n\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return\n\n if (this.root) {\n let node\n for (let i = this.root.nodes.length - 1; i >= 0; i--) {\n node = this.root.nodes[i]\n if (node.type !== 'comment') continue\n if (node.text.startsWith('# sourceMappingURL=')) {\n this.root.removeChild(i)\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, '')\n }\n }\n\n generate() {\n this.clearAnnotation()\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap()\n } else {\n let result = ''\n this.stringify(this.root, i => {\n result += i\n })\n return [result]\n }\n }\n\n generateMap() {\n if (this.root) {\n this.generateString()\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer()\n prev.file = this.outputFile()\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n })\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n })\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : '<no source>'\n })\n }\n\n if (this.isSourcesContent()) this.setSourcesContent()\n if (this.root && this.previous().length > 0) this.applyPrevMaps()\n if (this.isAnnotation()) this.addAnnotation()\n\n if (this.isInline()) {\n return [this.css]\n } else {\n return [this.css, this.map]\n }\n }\n\n generateString() {\n this.css = ''\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n })\n\n let line = 1\n let column = 1\n\n let noSource = '<no source>'\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: ''\n }\n\n let last, lines\n this.stringify(this.root, (str, node, type) => {\n this.css += str\n\n if (node && type !== 'end') {\n mapping.generated.line = line\n mapping.generated.column = column - 1\n if (node.source && node.source.start) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.start.line\n mapping.original.column = node.source.start.column - 1\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n this.map.addMapping(mapping)\n }\n }\n\n lines = str.match(/\\n/g)\n if (lines) {\n line += lines.length\n last = str.lastIndexOf('\\n')\n column = str.length - last\n } else {\n column += str.length\n }\n\n if (node && type !== 'start') {\n let p = node.parent || { raws: {} }\n let childless =\n node.type === 'decl' || (node.type === 'atrule' && !node.nodes)\n if (!childless || node !== p.last || p.raws.semicolon) {\n if (node.source && node.source.end) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.end.line\n mapping.original.column = node.source.end.column - 1\n mapping.generated.line = line\n mapping.generated.column = column - 2\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n mapping.generated.line = line\n mapping.generated.column = column - 1\n this.map.addMapping(mapping)\n }\n }\n }\n })\n }\n\n isAnnotation() {\n if (this.isInline()) {\n return true\n }\n if (typeof this.mapOpts.annotation !== 'undefined') {\n return this.mapOpts.annotation\n }\n if (this.previous().length) {\n return this.previous().some(i => i.annotation)\n }\n return true\n }\n\n isInline() {\n if (typeof this.mapOpts.inline !== 'undefined') {\n return this.mapOpts.inline\n }\n\n let annotation = this.mapOpts.annotation\n if (typeof annotation !== 'undefined' && annotation !== true) {\n return false\n }\n\n if (this.previous().length) {\n return this.previous().some(i => i.inline)\n }\n return true\n }\n\n isMap() {\n if (typeof this.opts.map !== 'undefined') {\n return !!this.opts.map\n }\n return this.previous().length > 0\n }\n\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n return this.mapOpts.sourcesContent\n }\n if (this.previous().length) {\n return this.previous().some(i => i.withContent())\n }\n return true\n }\n\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to)\n } else if (this.opts.from) {\n return this.path(this.opts.from)\n } else {\n return 'to.css'\n }\n }\n\n path(file) {\n if (this.mapOpts.absolute) return file\n if (file.charCodeAt(0) === 60 /* `<` */) return file\n if (/^\\w+:\\/\\//.test(file)) return file\n let cached = this.memoizedPaths.get(file)\n if (cached) return cached\n\n let from = this.opts.to ? dirname(this.opts.to) : '.'\n\n if (typeof this.mapOpts.annotation === 'string') {\n from = dirname(resolve(from, this.mapOpts.annotation))\n }\n\n let path = relative(from, file)\n this.memoizedPaths.set(file, path)\n\n return path\n }\n\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = []\n if (this.root) {\n this.root.walk(node => {\n if (node.source && node.source.input.map) {\n let map = node.source.input.map\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map)\n }\n }\n })\n } else {\n let input = new Input(this.originalCSS, this.opts)\n if (input.map) this.previousMaps.push(input.map)\n }\n }\n\n return this.previousMaps\n }\n\n setSourcesContent() {\n let already = {}\n if (this.root) {\n this.root.walk(node => {\n if (node.source) {\n let from = node.source.input.from\n if (from && !already[from]) {\n already[from] = true\n let fromUrl = this.usesFileUrls\n ? this.toFileUrl(from)\n : this.toUrl(this.path(from))\n this.map.setSourceContent(fromUrl, node.source.input.css)\n }\n }\n })\n } else if (this.css) {\n let from = this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : '<no source>'\n this.map.setSourceContent(from, this.css)\n }\n }\n\n sourcePath(node) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from)\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node.source.input.from)\n } else {\n return this.toUrl(this.path(node.source.input.from))\n }\n }\n\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString('base64')\n } else {\n return window.btoa(unescape(encodeURIComponent(str)))\n }\n }\n\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path)\n if (cached) return cached\n\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString()\n this.memoizedFileURLs.set(path, fileURL)\n\n return fileURL\n } else {\n throw new Error(\n '`map.absolute` option is not available in this PostCSS build'\n )\n }\n }\n\n toUrl(path) {\n let cached = this.memoizedURLs.get(path)\n if (cached) return cached\n\n if (sep === '\\\\') {\n path = path.replace(/\\\\/g, '/')\n }\n\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent)\n this.memoizedURLs.set(path, url)\n\n return url\n }\n}\n\nmodule.exports = MapGenerator\n","'use strict'\n\nconst SINGLE_QUOTE = \"'\".charCodeAt(0)\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0)\nconst BACKSLASH = '\\\\'.charCodeAt(0)\nconst SLASH = '/'.charCodeAt(0)\nconst NEWLINE = '\\n'.charCodeAt(0)\nconst SPACE = ' '.charCodeAt(0)\nconst FEED = '\\f'.charCodeAt(0)\nconst TAB = '\\t'.charCodeAt(0)\nconst CR = '\\r'.charCodeAt(0)\nconst OPEN_SQUARE = '['.charCodeAt(0)\nconst CLOSE_SQUARE = ']'.charCodeAt(0)\nconst OPEN_PARENTHESES = '('.charCodeAt(0)\nconst CLOSE_PARENTHESES = ')'.charCodeAt(0)\nconst OPEN_CURLY = '{'.charCodeAt(0)\nconst CLOSE_CURLY = '}'.charCodeAt(0)\nconst SEMICOLON = ';'.charCodeAt(0)\nconst ASTERISK = '*'.charCodeAt(0)\nconst COLON = ':'.charCodeAt(0)\nconst AT = '@'.charCodeAt(0)\n\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/\nconst RE_HEX_ESCAPE = /[\\da-f]/i\n\nmodule.exports = function tokenizer(input, options = {}) {\n let css = input.css.valueOf()\n let ignore = options.ignoreErrors\n\n let code, content, escape, next, quote\n let currentToken, escaped, escapePos, n, prev\n\n let length = css.length\n let pos = 0\n let buffer = []\n let returned = []\n\n function position() {\n return pos\n }\n\n function unclosed(what) {\n throw input.error('Unclosed ' + what, pos)\n }\n\n function endOfFile() {\n return returned.length === 0 && pos >= length\n }\n\n function nextToken(opts) {\n if (returned.length) return returned.pop()\n if (pos >= length) return\n\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false\n\n code = css.charCodeAt(pos)\n\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos\n do {\n next += 1\n code = css.charCodeAt(next)\n } while (\n code === SPACE ||\n code === NEWLINE ||\n code === TAB ||\n code === CR ||\n code === FEED\n )\n\n currentToken = ['space', css.slice(pos, next)]\n pos = next - 1\n break\n }\n\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code)\n currentToken = [controlChar, controlChar, pos]\n break\n }\n\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : ''\n n = css.charCodeAt(pos + 1)\n if (\n prev === 'url' &&\n n !== SINGLE_QUOTE &&\n n !== DOUBLE_QUOTE &&\n n !== SPACE &&\n n !== NEWLINE &&\n n !== TAB &&\n n !== FEED &&\n n !== CR\n ) {\n next = pos\n do {\n escaped = false\n next = css.indexOf(')', next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos\n break\n } else {\n unclosed('bracket')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['brackets', css.slice(pos, next + 1), pos, next]\n\n pos = next\n } else {\n next = css.indexOf(')', pos + 1)\n content = css.slice(pos, next + 1)\n\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = ['(', '(', pos]\n } else {\n currentToken = ['brackets', content, pos, next]\n pos = next\n }\n }\n\n break\n }\n\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"'\n next = pos\n do {\n escaped = false\n next = css.indexOf(quote, next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1\n break\n } else {\n unclosed('string')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['string', css.slice(pos, next + 1), pos, next]\n pos = next\n break\n }\n\n case AT: {\n RE_AT_END.lastIndex = pos + 1\n RE_AT_END.test(css)\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_AT_END.lastIndex - 2\n }\n\n currentToken = ['at-word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n case BACKSLASH: {\n next = pos\n escape = true\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1\n escape = !escape\n }\n code = css.charCodeAt(next + 1)\n if (\n escape &&\n code !== SLASH &&\n code !== SPACE &&\n code !== NEWLINE &&\n code !== TAB &&\n code !== CR &&\n code !== FEED\n ) {\n next += 1\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1\n }\n }\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf('*/', pos + 2) + 1\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length\n } else {\n unclosed('comment')\n }\n }\n\n currentToken = ['comment', css.slice(pos, next + 1), pos, next]\n pos = next\n } else {\n RE_WORD_END.lastIndex = pos + 1\n RE_WORD_END.test(css)\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_WORD_END.lastIndex - 2\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n buffer.push(currentToken)\n pos = next\n }\n\n break\n }\n }\n\n pos++\n return currentToken\n }\n\n function back(token) {\n returned.push(token)\n }\n\n return {\n back,\n endOfFile,\n nextToken,\n position\n }\n}\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Root = require('./root')\nlet Rule = require('./rule')\nlet tokenizer = require('./tokenize')\n\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n}\n\nfunction findLastWithPosition(tokens) {\n for (let i = tokens.length - 1; i >= 0; i--) {\n let token = tokens[i]\n let pos = token[3] || token[2]\n if (pos) return pos\n }\n}\n\nclass Parser {\n constructor(input) {\n this.input = input\n\n this.root = new Root()\n this.current = this.root\n this.spaces = ''\n this.semicolon = false\n\n this.createTokenizer()\n this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }\n }\n\n atrule(token) {\n let node = new AtRule()\n node.name = token[1].slice(1)\n if (node.name === '') {\n this.unnamedAtrule(node, token)\n }\n this.init(node, token[2])\n\n let type\n let prev\n let shift\n let last = false\n let open = false\n let params = []\n let brackets = []\n\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n type = token[0]\n\n if (type === '(' || type === '[') {\n brackets.push(type === '(' ? ')' : ']')\n } else if (type === '{' && brackets.length > 0) {\n brackets.push('}')\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n }\n\n if (brackets.length === 0) {\n if (type === ';') {\n node.source.end = this.getPosition(token[2])\n node.source.end.offset++\n this.semicolon = true\n break\n } else if (type === '{') {\n open = true\n break\n } else if (type === '}') {\n if (params.length > 0) {\n shift = params.length - 1\n prev = params[shift]\n while (prev && prev[0] === 'space') {\n prev = params[--shift]\n }\n if (prev) {\n node.source.end = this.getPosition(prev[3] || prev[2])\n node.source.end.offset++\n }\n }\n this.end(token)\n break\n } else {\n params.push(token)\n }\n } else {\n params.push(token)\n }\n\n if (this.tokenizer.endOfFile()) {\n last = true\n break\n }\n }\n\n node.raws.between = this.spacesAndCommentsFromEnd(params)\n if (params.length) {\n node.raws.afterName = this.spacesAndCommentsFromStart(params)\n this.raw(node, 'params', params)\n if (last) {\n token = params[params.length - 1]\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\n this.spaces = node.raws.between\n node.raws.between = ''\n }\n } else {\n node.raws.afterName = ''\n node.params = ''\n }\n\n if (open) {\n node.nodes = []\n this.current = node\n }\n }\n\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens)\n if (colon === false) return\n\n let founded = 0\n let token\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j]\n if (token[0] !== 'space') {\n founded += 1\n if (founded === 2) break\n }\n }\n // If the token is a word, e.g. `!important`, `red` or any other valid property's value.\n // Then we need to return the colon after that word token. [3] is the \"end\" colon of that word.\n // And because we need it after that one we do +1 to get the next one.\n throw this.input.error(\n 'Missed semicolon',\n token[0] === 'word' ? token[3] + 1 : token[2]\n )\n }\n\n colon(tokens) {\n let brackets = 0\n let prev, token, type\n for (let [i, element] of tokens.entries()) {\n token = element\n type = token[0]\n\n if (type === '(') {\n brackets += 1\n }\n if (type === ')') {\n brackets -= 1\n }\n if (brackets === 0 && type === ':') {\n if (!prev) {\n this.doubleColon(token)\n } else if (prev[0] === 'word' && prev[1] === 'progid') {\n continue\n } else {\n return i\n }\n }\n\n prev = token\n }\n return false\n }\n\n comment(token) {\n let node = new Comment()\n this.init(node, token[2])\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\n\n let text = token[1].slice(2, -2)\n if (/^\\s*$/.test(text)) {\n node.text = ''\n node.raws.left = text\n node.raws.right = ''\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/)\n node.text = match[2]\n node.raws.left = match[1]\n node.raws.right = match[3]\n }\n }\n\n createTokenizer() {\n this.tokenizer = tokenizer(this.input)\n }\n\n decl(tokens, customProperty) {\n let node = new Declaration()\n this.init(node, tokens[0][2])\n\n let last = tokens[tokens.length - 1]\n if (last[0] === ';') {\n this.semicolon = true\n tokens.pop()\n }\n\n node.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n )\n node.source.end.offset++\n\n while (tokens[0][0] !== 'word') {\n if (tokens.length === 1) this.unknownWord(tokens)\n node.raws.before += tokens.shift()[1]\n }\n node.source.start = this.getPosition(tokens[0][2])\n\n node.prop = ''\n while (tokens.length) {\n let type = tokens[0][0]\n if (type === ':' || type === 'space' || type === 'comment') {\n break\n }\n node.prop += tokens.shift()[1]\n }\n\n node.raws.between = ''\n\n let token\n while (tokens.length) {\n token = tokens.shift()\n\n if (token[0] === ':') {\n node.raws.between += token[1]\n break\n } else {\n if (token[0] === 'word' && /\\w/.test(token[1])) {\n this.unknownWord([token])\n }\n node.raws.between += token[1]\n }\n }\n\n if (node.prop[0] === '_' || node.prop[0] === '*') {\n node.raws.before += node.prop[0]\n node.prop = node.prop.slice(1)\n }\n\n let firstSpaces = []\n let next\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n firstSpaces.push(tokens.shift())\n }\n\n this.precheckMissedSemicolon(tokens)\n\n for (let i = tokens.length - 1; i >= 0; i--) {\n token = tokens[i]\n if (token[1].toLowerCase() === '!important') {\n node.important = true\n let string = this.stringFrom(tokens, i)\n string = this.spacesFromEnd(tokens) + string\n if (string !== ' !important') node.raws.important = string\n break\n } else if (token[1].toLowerCase() === 'important') {\n let cache = tokens.slice(0)\n let str = ''\n for (let j = i; j > 0; j--) {\n let type = cache[j][0]\n if (str.trim().startsWith('!') && type !== 'space') {\n break\n }\n str = cache.pop()[1] + str\n }\n if (str.trim().startsWith('!')) {\n node.important = true\n node.raws.important = str\n tokens = cache\n }\n }\n\n if (token[0] !== 'space' && token[0] !== 'comment') {\n break\n }\n }\n\n let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment')\n\n if (hasWord) {\n node.raws.between += firstSpaces.map(i => i[1]).join('')\n firstSpaces = []\n }\n this.raw(node, 'value', firstSpaces.concat(tokens), customProperty)\n\n if (node.value.includes(':') && !customProperty) {\n this.checkMissedSemicolon(tokens)\n }\n }\n\n doubleColon(token) {\n throw this.input.error(\n 'Double colon',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n\n emptyRule(token) {\n let node = new Rule()\n this.init(node, token[2])\n node.selector = ''\n node.raws.between = ''\n this.current = node\n }\n\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.semicolon = false\n\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.spaces = ''\n\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2])\n this.current.source.end.offset++\n this.current = this.current.parent\n } else {\n this.unexpectedClose(token)\n }\n }\n\n endFile() {\n if (this.current.parent) this.unclosedBlock()\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.root.source.end = this.getPosition(this.tokenizer.position())\n }\n\n freeSemicolon(token) {\n this.spaces += token[1]\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1]\n if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces\n this.spaces = ''\n prev.source.end = this.getPosition(token[2])\n prev.source.end.offset += prev.raws.ownSemicolon.length\n }\n }\n }\n\n // Helpers\n\n getPosition(offset) {\n let pos = this.input.fromOffset(offset)\n return {\n column: pos.col,\n line: pos.line,\n offset\n }\n }\n\n init(node, offset) {\n this.current.push(node)\n node.source = {\n input: this.input,\n start: this.getPosition(offset)\n }\n node.raws.before = this.spaces\n this.spaces = ''\n if (node.type !== 'comment') this.semicolon = false\n }\n\n other(start) {\n let end = false\n let type = null\n let colon = false\n let bracket = null\n let brackets = []\n let customProperty = start[1].startsWith('--')\n\n let tokens = []\n let token = start\n while (token) {\n type = token[0]\n tokens.push(token)\n\n if (type === '(' || type === '[') {\n if (!bracket) bracket = token\n brackets.push(type === '(' ? ')' : ']')\n } else if (customProperty && colon && type === '{') {\n if (!bracket) bracket = token\n brackets.push('}')\n } else if (brackets.length === 0) {\n if (type === ';') {\n if (colon) {\n this.decl(tokens, customProperty)\n return\n } else {\n break\n }\n } else if (type === '{') {\n this.rule(tokens)\n return\n } else if (type === '}') {\n this.tokenizer.back(tokens.pop())\n end = true\n break\n } else if (type === ':') {\n colon = true\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n if (brackets.length === 0) bracket = null\n }\n\n token = this.tokenizer.nextToken()\n }\n\n if (this.tokenizer.endOfFile()) end = true\n if (brackets.length > 0) this.unclosedBracket(bracket)\n\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0]\n if (token !== 'space' && token !== 'comment') break\n this.tokenizer.back(tokens.pop())\n }\n }\n this.decl(tokens, customProperty)\n } else {\n this.unknownWord(tokens)\n }\n }\n\n parse() {\n let token\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n\n switch (token[0]) {\n case 'space':\n this.spaces += token[1]\n break\n\n case ';':\n this.freeSemicolon(token)\n break\n\n case '}':\n this.end(token)\n break\n\n case 'comment':\n this.comment(token)\n break\n\n case 'at-word':\n this.atrule(token)\n break\n\n case '{':\n this.emptyRule(token)\n break\n\n default:\n this.other(token)\n break\n }\n }\n this.endFile()\n }\n\n precheckMissedSemicolon(/* tokens */) {\n // Hook for Safe Parser\n }\n\n raw(node, prop, tokens, customProperty) {\n let token, type\n let length = tokens.length\n let value = ''\n let clean = true\n let next, prev\n\n for (let i = 0; i < length; i += 1) {\n token = tokens[i]\n type = token[0]\n if (type === 'space' && i === length - 1 && !customProperty) {\n clean = false\n } else if (type === 'comment') {\n prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty'\n next = tokens[i + 1] ? tokens[i + 1][0] : 'empty'\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === ',') {\n clean = false\n } else {\n value += token[1]\n }\n } else {\n clean = false\n }\n } else {\n value += token[1]\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i) => all + i[1], '')\n node.raws[prop] = { raw, value }\n }\n node[prop] = value\n }\n\n rule(tokens) {\n tokens.pop()\n\n let node = new Rule()\n this.init(node, tokens[0][2])\n\n node.raws.between = this.spacesAndCommentsFromEnd(tokens)\n this.raw(node, 'selector', tokens)\n this.current = node\n }\n\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space' && lastTokenType !== 'comment') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n // Errors\n\n spacesAndCommentsFromStart(tokens) {\n let next\n let spaces = ''\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n spaces += tokens.shift()[1]\n }\n return spaces\n }\n\n spacesFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n stringFrom(tokens, from) {\n let result = ''\n for (let i = from; i < tokens.length; i++) {\n result += tokens[i][1]\n }\n tokens.splice(from, tokens.length - from)\n return result\n }\n\n unclosedBlock() {\n let pos = this.current.source.start\n throw this.input.error('Unclosed block', pos.line, pos.column)\n }\n\n unclosedBracket(bracket) {\n throw this.input.error(\n 'Unclosed bracket',\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n )\n }\n\n unexpectedClose(token) {\n throw this.input.error(\n 'Unexpected }',\n { offset: token[2] },\n { offset: token[2] + 1 }\n )\n }\n\n unknownWord(tokens) {\n throw this.input.error(\n 'Unknown word ' + tokens[0][1],\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n )\n }\n\n unnamedAtrule(node, token) {\n throw this.input.error(\n 'At-rule without name',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n}\n\nmodule.exports = Parser\n","'use strict'\n\nlet Container = require('./container')\nlet Input = require('./input')\nlet Parser = require('./parser')\n\nfunction parse(css, opts) {\n let input = new Input(css, opts)\n let parser = new Parser(input)\n try {\n parser.parse()\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse SCSS with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-scss parser'\n } else if (/\\.sass/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Sass with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-sass parser'\n } else if (/\\.less$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Less with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-less parser'\n }\n }\n }\n throw e\n }\n\n return parser.root\n}\n\nmodule.exports = parse\nparse.default = parse\n\nContainer.registerParse(parse)\n","'use strict'\n\nclass Warning {\n constructor(text, opts = {}) {\n this.type = 'warning'\n this.text = text\n\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts)\n this.line = range.start.line\n this.column = range.start.column\n this.endLine = range.end.line\n this.endColumn = range.end.column\n }\n\n for (let opt in opts) this[opt] = opts[opt]\n }\n\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message\n }\n\n if (this.plugin) {\n return this.plugin + ': ' + this.text\n }\n\n return this.text\n }\n}\n\nmodule.exports = Warning\nWarning.default = Warning\n","'use strict'\n\nlet Warning = require('./warning')\n\nclass Result {\n get content() {\n return this.css\n }\n\n constructor(processor, root, opts) {\n this.processor = processor\n this.messages = []\n this.root = root\n this.opts = opts\n this.css = ''\n this.map = undefined\n }\n\n toString() {\n return this.css\n }\n\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin\n }\n }\n\n let warning = new Warning(text, opts)\n this.messages.push(warning)\n\n return warning\n }\n\n warnings() {\n return this.messages.filter(i => i.type === 'warning')\n }\n}\n\nmodule.exports = Result\nResult.default = Result\n","/* eslint-disable no-console */\n'use strict'\n\nlet printed = {}\n\nmodule.exports = function warnOnce(message) {\n if (printed[message]) return\n printed[message] = true\n\n if (typeof console !== 'undefined' && console.warn) {\n console.warn(message)\n }\n}\n","'use strict'\n\nlet Container = require('./container')\nlet Document = require('./document')\nlet MapGenerator = require('./map-generator')\nlet parse = require('./parse')\nlet Result = require('./result')\nlet Root = require('./root')\nlet stringify = require('./stringify')\nlet { isClean, my } = require('./symbols')\nlet warnOnce = require('./warn-once')\n\nconst TYPE_TO_CLASS_NAME = {\n atrule: 'AtRule',\n comment: 'Comment',\n decl: 'Declaration',\n document: 'Document',\n root: 'Root',\n rule: 'Rule'\n}\n\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n}\n\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n}\n\nconst CHILDREN = 0\n\nfunction isPromise(obj) {\n return typeof obj === 'object' && typeof obj.then === 'function'\n}\n\nfunction getEvents(node) {\n let key = false\n let type = TYPE_TO_CLASS_NAME[node.type]\n if (node.type === 'decl') {\n key = node.prop.toLowerCase()\n } else if (node.type === 'atrule') {\n key = node.name.toLowerCase()\n }\n\n if (key && node.append) {\n return [\n type,\n type + '-' + key,\n CHILDREN,\n type + 'Exit',\n type + 'Exit-' + key\n ]\n } else if (key) {\n return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]\n } else if (node.append) {\n return [type, CHILDREN, type + 'Exit']\n } else {\n return [type, type + 'Exit']\n }\n}\n\nfunction toStack(node) {\n let events\n if (node.type === 'document') {\n events = ['Document', CHILDREN, 'DocumentExit']\n } else if (node.type === 'root') {\n events = ['Root', CHILDREN, 'RootExit']\n } else {\n events = getEvents(node)\n }\n\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node,\n visitorIndex: 0,\n visitors: []\n }\n}\n\nfunction cleanMarks(node) {\n node[isClean] = false\n if (node.nodes) node.nodes.forEach(i => cleanMarks(i))\n return node\n}\n\nlet postcss = {}\n\nclass LazyResult {\n get content() {\n return this.stringify().content\n }\n\n get css() {\n return this.stringify().css\n }\n\n get map() {\n return this.stringify().map\n }\n\n get messages() {\n return this.sync().messages\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n return this.sync().root\n }\n\n get [Symbol.toStringTag]() {\n return 'LazyResult'\n }\n\n constructor(processor, css, opts) {\n this.stringified = false\n this.processed = false\n\n let root\n if (\n typeof css === 'object' &&\n css !== null &&\n (css.type === 'root' || css.type === 'document')\n ) {\n root = cleanMarks(css)\n } else if (css instanceof LazyResult || css instanceof Result) {\n root = cleanMarks(css.root)\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {}\n if (!opts.map.inline) opts.map.inline = false\n opts.map.prev = css.map\n }\n } else {\n let parser = parse\n if (opts.syntax) parser = opts.syntax.parse\n if (opts.parser) parser = opts.parser\n if (parser.parse) parser = parser.parse\n\n try {\n root = parser(css, opts)\n } catch (error) {\n this.processed = true\n this.error = error\n }\n\n if (root && !root[my]) {\n /* c8 ignore next 2 */\n Container.rebuild(root)\n }\n }\n\n this.result = new Result(processor, root, opts)\n this.helpers = { ...postcss, postcss, result: this.result }\n this.plugins = this.processor.plugins.map(plugin => {\n if (typeof plugin === 'object' && plugin.prepare) {\n return { ...plugin, ...plugin.prepare(this.result) }\n } else {\n return plugin\n }\n })\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n if (this.processed) return Promise.resolve(this.result)\n if (!this.processing) {\n this.processing = this.runAsync()\n }\n return this.processing\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n getAsyncError() {\n throw new Error('Use process(css).then(cb) to work with async plugins')\n }\n\n handleError(error, node) {\n let plugin = this.result.lastPlugin\n try {\n if (node) node.addToError(error)\n this.error = error\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin\n error.setMessage()\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== 'production') {\n let pluginName = plugin.postcssPlugin\n let pluginVer = plugin.postcssVersion\n let runtimeVer = this.result.processor.version\n let a = pluginVer.split('.')\n let b = runtimeVer.split('.')\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n // eslint-disable-next-line no-console\n console.error(\n 'Unknown error from PostCSS plugin. Your current PostCSS ' +\n 'version is ' +\n runtimeVer +\n ', but ' +\n pluginName +\n ' uses ' +\n pluginVer +\n '. Perhaps this is the source of the error below.'\n )\n }\n }\n }\n } catch (err) {\n /* c8 ignore next 3 */\n // eslint-disable-next-line no-console\n if (console && console.error) console.error(err)\n }\n return error\n }\n\n prepareVisitors() {\n this.listeners = {}\n let add = (plugin, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = []\n this.listeners[type].push([plugin, cb])\n }\n for (let plugin of this.plugins) {\n if (typeof plugin === 'object') {\n for (let event in plugin) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin.postcssPlugin}. ` +\n `Try to update PostCSS (${this.processor.version} now).`\n )\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin[event] === 'object') {\n for (let filter in plugin[event]) {\n if (filter === '*') {\n add(plugin, event, plugin[event][filter])\n } else {\n add(\n plugin,\n event + '-' + filter.toLowerCase(),\n plugin[event][filter]\n )\n }\n }\n } else if (typeof plugin[event] === 'function') {\n add(plugin, event, plugin[event])\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0\n }\n\n async runAsync() {\n this.plugin = 0\n for (let i = 0; i < this.plugins.length; i++) {\n let plugin = this.plugins[i]\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (error) {\n throw this.handleError(error)\n }\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n let stack = [toStack(root)]\n while (stack.length > 0) {\n let promise = this.visitTick(stack)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (e) {\n let node = stack[stack.length - 1].node\n throw this.handleError(e, node)\n }\n }\n }\n }\n\n if (this.listeners.OnceExit) {\n for (let [plugin, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin\n try {\n if (root.type === 'document') {\n let roots = root.nodes.map(subRoot =>\n visitor(subRoot, this.helpers)\n )\n\n await Promise.all(roots)\n } else {\n await visitor(root, this.helpers)\n }\n } catch (e) {\n throw this.handleError(e)\n }\n }\n }\n }\n\n this.processed = true\n return this.stringify()\n }\n\n runOnRoot(plugin) {\n this.result.lastPlugin = plugin\n try {\n if (typeof plugin === 'object' && plugin.Once) {\n if (this.result.root.type === 'document') {\n let roots = this.result.root.nodes.map(root =>\n plugin.Once(root, this.helpers)\n )\n\n if (isPromise(roots[0])) {\n return Promise.all(roots)\n }\n\n return roots\n }\n\n return plugin.Once(this.result.root, this.helpers)\n } else if (typeof plugin === 'function') {\n return plugin(this.result.root, this.result)\n }\n } catch (error) {\n throw this.handleError(error)\n }\n }\n\n stringify() {\n if (this.error) throw this.error\n if (this.stringified) return this.result\n this.stringified = true\n\n this.sync()\n\n let opts = this.result.opts\n let str = stringify\n if (opts.syntax) str = opts.syntax.stringify\n if (opts.stringifier) str = opts.stringifier\n if (str.stringify) str = str.stringify\n\n let map = new MapGenerator(str, this.result.root, this.result.opts)\n let data = map.generate()\n this.result.css = data[0]\n this.result.map = data[1]\n\n return this.result\n }\n\n sync() {\n if (this.error) throw this.error\n if (this.processed) return this.result\n this.processed = true\n\n if (this.processing) {\n throw this.getAsyncError()\n }\n\n for (let plugin of this.plugins) {\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n this.walkSync(root)\n }\n if (this.listeners.OnceExit) {\n if (root.type === 'document') {\n for (let subRoot of root.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot)\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root)\n }\n }\n }\n\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this.opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this.css\n }\n\n visitSync(visitors, node) {\n for (let [plugin, visitor] of visitors) {\n this.result.lastPlugin = plugin\n let promise\n try {\n promise = visitor(node, this.helpers)\n } catch (e) {\n throw this.handleError(e, node.proxyOf)\n }\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n return true\n }\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n }\n\n visitTick(stack) {\n let visit = stack[stack.length - 1]\n let { node, visitors } = visit\n\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n stack.pop()\n return\n }\n\n if (visitors.length > 0 && visit.visitorIndex < visitors.length) {\n let [plugin, visitor] = visitors[visit.visitorIndex]\n visit.visitorIndex += 1\n if (visit.visitorIndex === visitors.length) {\n visit.visitors = []\n visit.visitorIndex = 0\n }\n this.result.lastPlugin = plugin\n try {\n return visitor(node.toProxy(), this.helpers)\n } catch (e) {\n throw this.handleError(e, node)\n }\n }\n\n if (visit.iterator !== 0) {\n let iterator = visit.iterator\n let child\n while ((child = node.nodes[node.indexes[iterator]])) {\n node.indexes[iterator] += 1\n if (!child[isClean]) {\n child[isClean] = true\n stack.push(toStack(child))\n return\n }\n }\n visit.iterator = 0\n delete node.indexes[iterator]\n }\n\n let events = visit.events\n while (visit.eventIndex < events.length) {\n let event = events[visit.eventIndex]\n visit.eventIndex += 1\n if (event === CHILDREN) {\n if (node.nodes && node.nodes.length) {\n node[isClean] = true\n visit.iterator = node.getIterator()\n }\n return\n } else if (this.listeners[event]) {\n visit.visitors = this.listeners[event]\n return\n }\n }\n stack.pop()\n }\n\n walkSync(node) {\n node[isClean] = true\n let events = getEvents(node)\n for (let event of events) {\n if (event === CHILDREN) {\n if (node.nodes) {\n node.each(child => {\n if (!child[isClean]) this.walkSync(child)\n })\n }\n } else {\n let visitors = this.listeners[event]\n if (visitors) {\n if (this.visitSync(visitors, node.toProxy())) return\n }\n }\n }\n }\n\n warnings() {\n return this.sync().warnings()\n }\n}\n\nLazyResult.registerPostcss = dependant => {\n postcss = dependant\n}\n\nmodule.exports = LazyResult\nLazyResult.default = LazyResult\n\nRoot.registerLazyResult(LazyResult)\nDocument.registerLazyResult(LazyResult)\n","'use strict'\n\nlet MapGenerator = require('./map-generator')\nlet parse = require('./parse')\nconst Result = require('./result')\nlet stringify = require('./stringify')\nlet warnOnce = require('./warn-once')\n\nclass NoWorkResult {\n get content() {\n return this.result.css\n }\n\n get css() {\n return this.result.css\n }\n\n get map() {\n return this.result.map\n }\n\n get messages() {\n return []\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n if (this._root) {\n return this._root\n }\n\n let root\n let parser = parse\n\n try {\n root = parser(this._css, this._opts)\n } catch (error) {\n this.error = error\n }\n\n if (this.error) {\n throw this.error\n } else {\n this._root = root\n return root\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'NoWorkResult'\n }\n\n constructor(processor, css, opts) {\n css = css.toString()\n this.stringified = false\n\n this._processor = processor\n this._css = css\n this._opts = opts\n this._map = undefined\n let root\n\n let str = stringify\n this.result = new Result(this._processor, root, this._opts)\n this.result.css = css\n\n let self = this\n Object.defineProperty(this.result, 'root', {\n get() {\n return self.root\n }\n })\n\n let map = new MapGenerator(str, root, this._opts, css)\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate()\n if (generatedCSS) {\n this.result.css = generatedCSS\n }\n if (generatedMap) {\n this.result.map = generatedMap\n }\n } else {\n map.clearAnnotation()\n this.result.css = map.css\n }\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n return Promise.resolve(this.result)\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n sync() {\n if (this.error) throw this.error\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this._opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this._css\n }\n\n warnings() {\n return []\n }\n}\n\nmodule.exports = NoWorkResult\nNoWorkResult.default = NoWorkResult\n","'use strict'\n\nlet Document = require('./document')\nlet LazyResult = require('./lazy-result')\nlet NoWorkResult = require('./no-work-result')\nlet Root = require('./root')\n\nclass Processor {\n constructor(plugins = []) {\n this.version = '8.5.6'\n this.plugins = this.normalize(plugins)\n }\n\n normalize(plugins) {\n let normalized = []\n for (let i of plugins) {\n if (i.postcss === true) {\n i = i()\n } else if (i.postcss) {\n i = i.postcss\n }\n\n if (typeof i === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins)\n } else if (typeof i === 'object' && i.postcssPlugin) {\n normalized.push(i)\n } else if (typeof i === 'function') {\n normalized.push(i)\n } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n 'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +\n 'one of the syntax/parser/stringifier options as outlined ' +\n 'in your PostCSS runner documentation.'\n )\n }\n } else {\n throw new Error(i + ' is not a PostCSS plugin')\n }\n }\n return normalized\n }\n\n process(css, opts = {}) {\n if (\n !this.plugins.length &&\n !opts.parser &&\n !opts.stringifier &&\n !opts.syntax\n ) {\n return new NoWorkResult(this, css, opts)\n } else {\n return new LazyResult(this, css, opts)\n }\n }\n\n use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]))\n return this\n }\n}\n\nmodule.exports = Processor\nProcessor.default = Processor\n\nRoot.registerProcessor(Processor)\nDocument.registerProcessor(Processor)\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Container = require('./container')\nlet CssSyntaxError = require('./css-syntax-error')\nlet Declaration = require('./declaration')\nlet Document = require('./document')\nlet fromJSON = require('./fromJSON')\nlet Input = require('./input')\nlet LazyResult = require('./lazy-result')\nlet list = require('./list')\nlet Node = require('./node')\nlet parse = require('./parse')\nlet Processor = require('./processor')\nlet Result = require('./result.js')\nlet Root = require('./root')\nlet Rule = require('./rule')\nlet stringify = require('./stringify')\nlet Warning = require('./warning')\n\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0]\n }\n return new Processor(plugins)\n}\n\npostcss.plugin = function plugin(name, initializer) {\n let warningPrinted = false\n function creator(...args) {\n // eslint-disable-next-line no-console\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': postcss.plugin was deprecated. Migration guide:\\n' +\n 'https://evilmartians.com/chronicles/postcss-8-plugin-migration'\n )\n if (process.env.LANG && process.env.LANG.startsWith('cn')) {\n /* c8 ignore next 7 */\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': 里面 postcss.plugin 被弃用. 迁移指南:\\n' +\n 'https://www.w3ctech.com/topic/2226'\n )\n }\n }\n let transformer = initializer(...args)\n transformer.postcssPlugin = name\n transformer.postcssVersion = new Processor().version\n return transformer\n }\n\n let cache\n Object.defineProperty(creator, 'postcss', {\n get() {\n if (!cache) cache = creator()\n return cache\n }\n })\n\n creator.process = function (css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts)\n }\n\n return creator\n}\n\npostcss.stringify = stringify\npostcss.parse = parse\npostcss.fromJSON = fromJSON\npostcss.list = list\n\npostcss.comment = defaults => new Comment(defaults)\npostcss.atRule = defaults => new AtRule(defaults)\npostcss.decl = defaults => new Declaration(defaults)\npostcss.rule = defaults => new Rule(defaults)\npostcss.root = defaults => new Root(defaults)\npostcss.document = defaults => new Document(defaults)\n\npostcss.CssSyntaxError = CssSyntaxError\npostcss.Declaration = Declaration\npostcss.Container = Container\npostcss.Processor = Processor\npostcss.Document = Document\npostcss.Comment = Comment\npostcss.Warning = Warning\npostcss.AtRule = AtRule\npostcss.Result = Result\npostcss.Input = Input\npostcss.Rule = Rule\npostcss.Root = Root\npostcss.Node = Node\n\nLazyResult.registerPostcss(postcss)\n\nmodule.exports = postcss\npostcss.default = postcss\n","import postcss from './postcss.js'\n\nexport default postcss\n\nexport const stringify = postcss.stringify\nexport const fromJSON = postcss.fromJSON\nexport const plugin = postcss.plugin\nexport const parse = postcss.parse\nexport const list = postcss.list\n\nexport const document = postcss.document\nexport const comment = postcss.comment\nexport const atRule = postcss.atRule\nexport const rule = postcss.rule\nexport const decl = postcss.decl\nexport const root = postcss.root\n\nexport const CssSyntaxError = postcss.CssSyntaxError\nexport const Declaration = postcss.Declaration\nexport const Container = postcss.Container\nexport const Processor = postcss.Processor\nexport const Document = postcss.Document\nexport const Comment = postcss.Comment\nexport const Warning = postcss.Warning\nexport const AtRule = postcss.AtRule\nexport const Result = postcss.Result\nexport const Input = postcss.Input\nexport const Rule = postcss.Rule\nexport const Root = postcss.Root\nexport const Node = postcss.Node\n","import { mediaSelectorPlugin, pseudoClassPlugin, animationFillModePlugin } from './css';\nimport {\n type serializedNodeWithId,\n type serializedElementNodeWithId,\n NodeType,\n type elementNode,\n type legacyAttributes,\n} from '@appsurify-testmap/rrweb-types';\nimport { type tagMap, type BuildCache } from './types';\nimport {\n isElement,\n Mirror,\n isNodeMetaEqual,\n extractFileExtension,\n} from './utils';\nimport postcss from 'postcss';\n\nconst tagMap: tagMap = {\n script: 'noscript',\n // camel case svg element tag names\n altglyph: 'altGlyph',\n altglyphdef: 'altGlyphDef',\n altglyphitem: 'altGlyphItem',\n animatecolor: 'animateColor',\n animatemotion: 'animateMotion',\n animatetransform: 'animateTransform',\n clippath: 'clipPath',\n feblend: 'feBlend',\n fecolormatrix: 'feColorMatrix',\n fecomponenttransfer: 'feComponentTransfer',\n fecomposite: 'feComposite',\n feconvolvematrix: 'feConvolveMatrix',\n fediffuselighting: 'feDiffuseLighting',\n fedisplacementmap: 'feDisplacementMap',\n fedistantlight: 'feDistantLight',\n fedropshadow: 'feDropShadow',\n feflood: 'feFlood',\n fefunca: 'feFuncA',\n fefuncb: 'feFuncB',\n fefuncg: 'feFuncG',\n fefuncr: 'feFuncR',\n fegaussianblur: 'feGaussianBlur',\n feimage: 'feImage',\n femerge: 'feMerge',\n femergenode: 'feMergeNode',\n femorphology: 'feMorphology',\n feoffset: 'feOffset',\n fepointlight: 'fePointLight',\n fespecularlighting: 'feSpecularLighting',\n fespotlight: 'feSpotLight',\n fetile: 'feTile',\n feturbulence: 'feTurbulence',\n foreignobject: 'foreignObject',\n glyphref: 'glyphRef',\n lineargradient: 'linearGradient',\n radialgradient: 'radialGradient',\n};\nfunction getTagName(n: elementNode): string {\n let tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\n if (tagName === 'link' && n.attributes._cssText) {\n tagName = 'style';\n }\n return tagName;\n}\n\nexport function adaptCssForReplay(cssText: string, cache: BuildCache): string {\n const cachedStyle = cache?.stylesWithHoverClass.get(cssText);\n if (cachedStyle) return cachedStyle;\n\n let result = cssText;\n try {\n const ast: { css: string } = postcss([\n mediaSelectorPlugin,\n pseudoClassPlugin,\n animationFillModePlugin,\n ]).process(cssText);\n result = ast.css;\n } catch (error) {\n console.warn('Failed to adapt css for replay', error);\n }\n\n cache?.stylesWithHoverClass.set(cssText, result);\n return result;\n}\n\nexport function createCache(): BuildCache {\n const stylesWithHoverClass: Map<string, string> = new Map();\n return {\n stylesWithHoverClass,\n };\n}\n\n/**\n * undo splitCssText/markCssSplits\n * (would move to utils.ts but uses `adaptCssForReplay`)\n */\nexport function applyCssSplits(\n n: serializedElementNodeWithId,\n cssText: string,\n hackCss: boolean,\n cache: BuildCache,\n): void {\n const childTextNodes = [];\n for (const scn of n.childNodes) {\n if (scn.type === NodeType.Text) {\n childTextNodes.push(scn);\n }\n }\n const cssTextSplits = cssText.split('/* rr_split */');\n while (\n cssTextSplits.length > 1 &&\n cssTextSplits.length > childTextNodes.length\n ) {\n // unexpected: remerge the last two so that we don't discard any css\n cssTextSplits.splice(-2, 2, cssTextSplits.slice(-2).join(''));\n }\n let adaptedCss = '';\n if (hackCss) {\n adaptedCss = adaptCssForReplay(cssTextSplits.join(''), cache);\n }\n let startIndex = 0;\n for (let i = 0; i < childTextNodes.length; i++) {\n if (i === cssTextSplits.length) {\n break;\n }\n const childTextNode = childTextNodes[i];\n if (!hackCss) {\n childTextNode.textContent = cssTextSplits[i];\n } else if (i < cssTextSplits.length - 1) {\n let endIndex = startIndex;\n let endSearch = cssTextSplits[i + 1].length;\n\n // don't do hundreds of searches, in case a mismatch\n // is caused close to start of string\n endSearch = Math.min(endSearch, 30);\n\n let found = false;\n for (; endSearch > 2; endSearch--) {\n const searchBit = cssTextSplits[i + 1].substring(0, endSearch);\n const searchIndex = adaptedCss.substring(startIndex).indexOf(searchBit);\n found = searchIndex !== -1;\n if (found) {\n endIndex += searchIndex;\n break;\n }\n }\n if (!found) {\n // something went wrong, put a similar sized chunk in the right place\n endIndex += cssTextSplits[i].length;\n }\n childTextNode.textContent = adaptedCss.substring(startIndex, endIndex);\n startIndex = endIndex;\n } else {\n childTextNode.textContent = adaptedCss.substring(startIndex);\n }\n }\n}\n\n/**\n * Normally a <style> element has a single textNode containing the rules.\n * During serialization, we bypass this (`styleEl.sheet`) to get the rules the\n * browser sees and serialize this to a special _cssText attribute, blanking\n * out any text nodes. This function reverses that and also handles cases where\n * there were no textNode children present (dynamic css/or a <link> element) as\n * well as multiple textNodes, which need to be repopulated (based on presence of\n * a special `rr_split` marker in case they are modified by subsequent mutations.\n */\nexport function buildStyleNode(\n n: serializedElementNodeWithId,\n styleEl: HTMLStyleElement, // when inlined, a <link type=\"stylesheet\"> also gets rebuilt as a <style>\n cssText: string,\n options: {\n doc: Document;\n hackCss: boolean;\n cache: BuildCache;\n },\n) {\n const { doc, hackCss, cache } = options;\n if (n.childNodes.length) {\n applyCssSplits(n, cssText, hackCss, cache);\n } else {\n if (hackCss) {\n cssText = adaptCssForReplay(cssText, cache);\n }\n /**\n <link> element or dynamic <style> are serialized without any child nodes\n we create the text node without an ID or presence in mirror as it can't\n */\n styleEl.appendChild(doc.createTextNode(cssText));\n }\n}\n\nfunction buildNode(\n n: serializedNodeWithId,\n options: {\n doc: Document;\n hackCss: boolean;\n cache: BuildCache;\n },\n): Node | null {\n const { doc, hackCss, cache } = options;\n switch (n.type) {\n case NodeType.Document:\n return doc.implementation.createDocument(null, '', null);\n case NodeType.DocumentType:\n return doc.implementation.createDocumentType(\n n.name || 'html',\n n.publicId,\n n.systemId,\n );\n case NodeType.Element: {\n const tagName = getTagName(n);\n let node: Element;\n if (n.isSVG) {\n node = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\n } else {\n if (\n // If the tag name is a custom element name\n n.isCustom &&\n // If the browser supports custom elements\n doc.defaultView?.customElements &&\n // If the custom element hasn't been defined yet\n !doc.defaultView.customElements.get(n.tagName)\n )\n doc.defaultView.customElements.define(\n n.tagName,\n class extends doc.defaultView.HTMLElement {},\n );\n node = doc.createElement(tagName);\n }\n /**\n * Attribute names start with `rr_` are internal attributes added by rrweb.\n * They often overwrite other attributes on the element.\n * We need to parse them last so they can overwrite conflicting attributes.\n */\n const specialAttributes: { [key: string]: string | number } = {};\n for (const name in n.attributes) {\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name)) {\n continue;\n }\n let value = n.attributes[name];\n if (\n tagName === 'option' &&\n name === 'selected' &&\n (value as legacyAttributes[typeof name]) === false\n ) {\n // legacy fix (TODO: if `value === false` can be generated for other attrs,\n // should we also omit those other attrs from build ?)\n continue;\n }\n\n // null values mean the attribute was removed\n if (value === null) {\n continue;\n }\n\n /**\n * Boolean attributes are considered to be true if they're present on the element at all.\n * We should set value to the empty string (\"\") or the attribute's name, with no leading or trailing whitespace.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute#parameters\n */\n if (value === true) value = '';\n\n if (name.startsWith('rr_')) {\n specialAttributes[name] = value;\n continue;\n }\n\n if (typeof value !== 'string') {\n // pass\n } else if (tagName === 'style' && name === '_cssText') {\n buildStyleNode(n, node as HTMLStyleElement, value, options);\n continue; // no need to set _cssText as attribute\n } else if (tagName === 'textarea' && name === 'value') {\n // create without an ID or presence in mirror\n node.appendChild(doc.createTextNode(value));\n n.childNodes = []; // value overrides childNodes\n continue;\n }\n\n try {\n if (n.isSVG && name === 'xlink:href') {\n node.setAttributeNS(\n 'http://www.w3.org/1999/xlink',\n name,\n value.toString(),\n );\n } else if (\n name === 'onload' ||\n name === 'onclick' ||\n name.substring(0, 7) === 'onmouse'\n ) {\n // Rename some of the more common atttributes from https://www.w3schools.com/tags/ref_eventattributes.asp\n // as setting them triggers a console.error (which shows up despite the try/catch)\n // Assumption: these attributes are not used to css\n node.setAttribute('_' + name, value.toString());\n } else if (\n tagName === 'meta' &&\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\n name === 'content'\n ) {\n // If CSP contains style-src and inline-style is disabled, there will be an error \"Refused to apply inline style because it violates the following Content Security Policy directive: style-src '*'\".\n // And the function insertStyleRules in rrweb replayer will throw an error \"Uncaught TypeError: Cannot read property 'insertRule' of null\".\n node.setAttribute('csp-content', value.toString());\n continue;\n } else if (\n tagName === 'link' &&\n ((n.attributes.rel === 'preload' && n.attributes.as === 'script') ||\n n.attributes.rel === 'modulepreload')\n ) {\n // ignore\n } else if (\n tagName === 'link' &&\n n.attributes.rel === 'prefetch' &&\n typeof n.attributes.href === 'string' &&\n extractFileExtension(n.attributes.href) === 'js'\n ) {\n // ignore\n } else if (\n tagName === 'img' &&\n n.attributes.srcset &&\n n.attributes.rr_dataURL\n ) {\n // backup original img srcset\n node.setAttribute(\n 'rrweb-original-srcset',\n n.attributes.srcset as string,\n );\n } else {\n node.setAttribute(name, value.toString());\n }\n } catch (error) {\n // skip invalid attribute\n }\n }\n\n for (const name in specialAttributes) {\n const value = specialAttributes[name];\n // handle internal attributes\n if (tagName === 'canvas' && name === 'rr_dataURL') {\n const image = doc.createElement('img');\n image.onload = () => {\n const ctx = (node as HTMLCanvasElement).getContext('2d');\n if (ctx) {\n ctx.drawImage(image, 0, 0, image.width, image.height);\n }\n };\n image.src = value.toString();\n type RRCanvasElement = {\n RRNodeType: NodeType;\n rr_dataURL: string;\n };\n // If the canvas element is created in RRDom runtime (seeking to a time point), the canvas context isn't supported. So the data has to be stored and not handled until diff process. https://github.com/rrweb-io/rrweb/pull/944\n if ((node as unknown as RRCanvasElement).RRNodeType)\n (node as unknown as RRCanvasElement).rr_dataURL = value.toString();\n } else if (tagName === 'img' && name === 'rr_dataURL') {\n const image = node as HTMLImageElement;\n if (!image.currentSrc.startsWith('data:')) {\n // Backup original img src. It may not have been set yet.\n image.setAttribute(\n 'rrweb-original-src',\n n.attributes.src as string,\n );\n image.src = value.toString();\n }\n }\n\n if (name === 'rr_width') {\n (node as HTMLElement).style.setProperty('width', value.toString());\n } else if (name === 'rr_height') {\n (node as HTMLElement).style.setProperty('height', value.toString());\n } else if (\n name === 'rr_mediaCurrentTime' &&\n typeof value === 'number'\n ) {\n (node as HTMLMediaElement).currentTime = value;\n } else if (name === 'rr_mediaState') {\n switch (value) {\n case 'played':\n (node as HTMLMediaElement)\n .play()\n .catch((e) => console.warn('media playback error', e));\n break;\n case 'paused':\n (node as HTMLMediaElement).pause();\n break;\n default:\n }\n } else if (\n name === 'rr_mediaPlaybackRate' &&\n typeof value === 'number'\n ) {\n (node as HTMLMediaElement).playbackRate = value;\n } else if (name === 'rr_mediaMuted' && typeof value === 'boolean') {\n (node as HTMLMediaElement).muted = value;\n } else if (name === 'rr_mediaLoop' && typeof value === 'boolean') {\n (node as HTMLMediaElement).loop = value;\n } else if (name === 'rr_mediaVolume' && typeof value === 'number') {\n (node as HTMLMediaElement).volume = value;\n } else if (name === 'rr_open_mode') {\n (node as HTMLDialogElement).setAttribute(\n 'rr_open_mode',\n value as string,\n ); // keep this attribute for rrweb to trigger showModal\n }\n }\n\n if (n.isShadowHost) {\n /**\n * Since node is newly rebuilt, it should be a normal element\n * without shadowRoot.\n * But if there are some weird situations that has defined\n * custom element in the scope before we rebuild node, it may\n * register the shadowRoot earlier.\n * The logic in the 'else' block is just a try-my-best solution\n * for the corner case, please let we know if it is wrong and\n * we can remove it.\n */\n if (!node.shadowRoot) {\n node.attachShadow({ mode: 'open' });\n } else {\n while (node.shadowRoot.firstChild) {\n node.shadowRoot.removeChild(node.shadowRoot.firstChild);\n }\n }\n }\n return node;\n }\n case NodeType.Text:\n if (n.isStyle && hackCss) {\n // support legacy style\n return doc.createTextNode(adaptCssForReplay(n.textContent, cache));\n }\n return doc.createTextNode(n.textContent);\n case NodeType.CDATA:\n return doc.createCDATASection(n.textContent);\n case NodeType.Comment:\n return doc.createComment(n.textContent);\n default:\n return null;\n }\n}\n\nexport function buildNodeWithSN(\n n: serializedNodeWithId,\n options: {\n doc: Document;\n mirror: Mirror;\n skipChild?: boolean;\n hackCss: boolean;\n /**\n * This callback will be called for each of this nodes' `.childNodes` after they are appended to _this_ node.\n * Caveat: This callback _doesn't_ get called when this node is appended to the DOM.\n */\n afterAppend?: (n: Node, id: number) => unknown;\n cache: BuildCache;\n },\n): Node | null {\n const {\n doc,\n mirror,\n skipChild = false,\n hackCss = true,\n afterAppend,\n cache,\n } = options;\n /**\n * Add a check to see if the node is already in the mirror. If it is, we can skip the whole process.\n * This situation (duplicated nodes) can happen when recorder has some unfixed bugs and the same node is recorded twice. Or something goes wrong when saving or transferring event data.\n * Duplicated node creation may cause unexpected errors in replayer. This check tries best effort to prevent the errors.\n */\n if (mirror.has(n.id)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const nodeInMirror = mirror.getNode(n.id)!;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const meta = mirror.getMeta(nodeInMirror)!;\n // For safety concern, check if the node in mirror is the same as the node we are trying to build\n if (isNodeMetaEqual(meta, n)) return mirror.getNode(n.id);\n }\n let node = buildNode(n, { doc, hackCss, cache });\n if (!node) {\n return null;\n }\n // If the snapshot is created by checkout, the rootId doesn't change but the iframe's document can be changed automatically when a new iframe element is created.\n if (n.rootId && (mirror.getNode(n.rootId) as Document) !== doc) {\n mirror.replace(n.rootId, doc);\n }\n // use target document as root document\n if (n.type === NodeType.Document) {\n // close before open to make sure document was closed\n doc.close();\n doc.open();\n if (\n n.compatMode === 'BackCompat' &&\n n.childNodes &&\n n.childNodes[0].type !== NodeType.DocumentType // there isn't one already defined\n ) {\n // Trigger compatMode in the iframe\n // this is needed as document.createElement('iframe') otherwise inherits a CSS1Compat mode from the parent replayer environment\n if (\n n.childNodes[0].type === NodeType.Element &&\n 'xmlns' in n.childNodes[0].attributes &&\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml'\n ) {\n // might as well use an xhtml doctype if we've got an xhtml namespace\n doc.write(\n '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">',\n );\n } else {\n doc.write(\n '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">',\n );\n }\n }\n node = doc;\n }\n\n mirror.add(node, n);\n\n if (\n (n.type === NodeType.Document || n.type === NodeType.Element) &&\n !skipChild\n ) {\n for (const childN of n.childNodes) {\n const childNode = buildNodeWithSN(childN, {\n doc,\n mirror,\n skipChild: false,\n hackCss,\n afterAppend,\n cache,\n });\n if (!childNode) {\n console.warn('Failed to rebuild', childN);\n continue;\n }\n\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\n node.shadowRoot.appendChild(childNode);\n } else if (\n n.type === NodeType.Document &&\n childN.type == NodeType.Element\n ) {\n const htmlElement = childNode as HTMLElement;\n let body: HTMLBodyElement | null = null;\n htmlElement.childNodes.forEach((child) => {\n if (child.nodeName === 'BODY') body = child as HTMLBodyElement;\n });\n if (body) {\n // this branch solves a problem in Firefox where css transitions are incorrectly\n // being applied upon rebuild. Presumably FF doesn't finished parsing the styles\n // in time, and applies e.g. a default margin:0 to elements which have a non-zero\n // margin set in CSS, along with a transition on them\n htmlElement.removeChild(body);\n // append <head> and <style>s\n node.appendChild(childNode);\n // now append <body>\n htmlElement.appendChild(body);\n } else {\n node.appendChild(childNode);\n }\n } else {\n node.appendChild(childNode);\n }\n if (afterAppend) {\n afterAppend(childNode, childN.id);\n }\n }\n }\n\n return node;\n}\n\nfunction visit(mirror: Mirror, onVisit: (node: Node) => void) {\n function walk(node: Node) {\n onVisit(node);\n }\n\n for (const id of mirror.getIds()) {\n if (mirror.has(id)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n walk(mirror.getNode(id)!);\n }\n }\n}\n\nfunction handleScroll(node: Node, mirror: Mirror) {\n const n = mirror.getMeta(node);\n if (n?.type !== NodeType.Element) {\n return;\n }\n const el = node as HTMLElement;\n for (const name in n.attributes) {\n if (\n !(\n Object.prototype.hasOwnProperty.call(n.attributes, name) &&\n name.startsWith('rr_')\n )\n ) {\n continue;\n }\n const value = n.attributes[name];\n if (name === 'rr_scrollLeft') {\n el.scrollLeft = value as number;\n }\n if (name === 'rr_scrollTop') {\n el.scrollTop = value as number;\n }\n }\n}\n\nfunction rebuild(\n n: serializedNodeWithId,\n options: {\n doc: Document;\n onVisit?: (node: Node) => unknown;\n hackCss?: boolean;\n afterAppend?: (n: Node, id: number) => unknown;\n cache: BuildCache;\n mirror: Mirror;\n },\n): Node | null {\n const {\n doc,\n onVisit,\n hackCss = true,\n afterAppend,\n cache,\n mirror = new Mirror(),\n } = options;\n const node = buildNodeWithSN(n, {\n doc,\n mirror,\n skipChild: false,\n hackCss,\n afterAppend,\n cache,\n });\n visit(mirror, (visitedNode) => {\n if (onVisit) {\n onVisit(visitedNode);\n }\n handleScroll(visitedNode, mirror);\n });\n return node;\n}\n\nexport default rebuild;\n"],"names":["dom","shadowRoot","rule","node","x","childNodes","j","k","parentElement","textContent","result","generateSEQL","picocolors_browserModule","require$$0","terminalHighlight","require$$1","plugin","index","spacing","CssSyntaxError","root","Stringifier","stringify","require$$2","isClean","my","require$$3","Node","_","input","stringifier","Comment","Declaration","AtRule","parse","Root","Rule","Container","LazyResult","Processor","Document","document","nanoid","dirname","SourceMapConsumer","SourceMapGenerator","PreviousMap","resolve","pathToFileURL","require$$4","require$$5","require$$6","sourceMapAvailable","pathAvailable","Input","list","sep","fromJSON","MapGenerator","tokenizer","Parser","parser","Warning","processor","warning","Result","warnOnce","require$$7","require$$8","postcss","visit","NoWorkResult","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17"],"mappings":"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","x_google_ignoreList":[3,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]}
1
+ {"version":3,"file":"rrweb-snapshot.cjs","sources":["../../types/dist/rrweb-types.js","../../utils/dist/rrweb-utils.js","../src/utils.ts","../../../node_modules/@whenessel/seql-js/dist/seql-js.js","../src/snapshot.ts","../src/css.ts","../../../node_modules/picocolors/picocolors.browser.js","../__vite-browser-external","../../../node_modules/postcss/lib/css-syntax-error.js","../../../node_modules/postcss/lib/stringifier.js","../../../node_modules/postcss/lib/stringify.js","../../../node_modules/postcss/lib/symbols.js","../../../node_modules/postcss/lib/node.js","../../../node_modules/postcss/lib/comment.js","../../../node_modules/postcss/lib/declaration.js","../../../node_modules/postcss/lib/container.js","../../../node_modules/postcss/lib/at-rule.js","../../../node_modules/postcss/lib/document.js","../../../node_modules/postcss/node_modules/nanoid/non-secure/index.cjs","../../../node_modules/postcss/lib/previous-map.js","../../../node_modules/postcss/lib/input.js","../../../node_modules/postcss/lib/root.js","../../../node_modules/postcss/lib/list.js","../../../node_modules/postcss/lib/rule.js","../../../node_modules/postcss/lib/fromJSON.js","../../../node_modules/postcss/lib/map-generator.js","../../../node_modules/postcss/lib/tokenize.js","../../../node_modules/postcss/lib/parser.js","../../../node_modules/postcss/lib/parse.js","../../../node_modules/postcss/lib/warning.js","../../../node_modules/postcss/lib/result.js","../../../node_modules/postcss/lib/warn-once.js","../../../node_modules/postcss/lib/lazy-result.js","../../../node_modules/postcss/lib/no-work-result.js","../../../node_modules/postcss/lib/processor.js","../../../node_modules/postcss/lib/postcss.js","../../../node_modules/postcss/lib/postcss.mjs","../src/rebuild.ts"],"sourcesContent":["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 IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n IncrementalSource2[IncrementalSource2[\"Visibility\"] = 17] = \"Visibility\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar 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 || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nexport {\n CanvasContext,\n EventType,\n IncrementalSource,\n MediaInteractions,\n MouseInteractions,\n NodeType,\n PointerTypes,\n ReplayerEvents\n};\n//# sourceMappingURL=rrweb-types.js.map\n","const testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst isAngularZonePresent = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a, _b;\n return Boolean(\n (_b = (_a = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a;\n return typeof defaultPrototype[method] === \"function\" && ((_a = defaultPrototype[method]) == null ? void 0 : _a.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n) {\n return getUntaintedAccessor(\"Node\", n, \"childNodes\");\n}\nfunction parentNode(n) {\n return getUntaintedAccessor(\"Node\", n, \"parentNode\");\n}\nfunction parentElement(n) {\n return getUntaintedAccessor(\"Node\", n, \"parentElement\");\n}\nfunction textContent(n) {\n return getUntaintedAccessor(\"Node\", n, \"textContent\");\n}\nfunction contains(n, other) {\n return getUntaintedMethod(\"Node\", n, \"contains\")(other);\n}\nfunction getRootNode(n) {\n return getUntaintedMethod(\"Node\", n, \"getRootNode\")();\n}\nfunction host(n) {\n if (!n || !(\"host\" in n)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n, \"host\");\n}\nfunction styleSheets(n) {\n return n.styleSheets;\n}\nfunction shadowRoot(n) {\n if (!n || !(\"shadowRoot\" in n)) return null;\n return getUntaintedAccessor(\"Element\", n, \"shadowRoot\");\n}\nfunction querySelector(n, selectors) {\n return getUntaintedAccessor(\"Element\", n, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n, selectors) {\n return getUntaintedAccessor(\"Element\", n, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nfunction describeNode(el) {\n const tag = el.tagName.toLowerCase();\n const id = el.id ? `#${el.id}` : \"\";\n const classes = el.classList.length ? \".\" + Array.from(el.classList).join(\".\") : \"\";\n return `${tag}${id}${classes}`;\n}\nfunction getElementVisibility(el) {\n var _a, _b;\n const win = ((_a = el.ownerDocument) == null ? void 0 : _a.defaultView) ?? window;\n const rect = el.getBoundingClientRect();\n const viewportWidth = win.innerWidth || win.document.documentElement.clientWidth || 0;\n const viewportHeight = win.innerHeight || win.document.documentElement.clientHeight || 0;\n const isRectVisible = rect.width > 0 && rect.height > 0 && rect.bottom > 0 && rect.right > 0 && rect.top < viewportHeight && rect.left < viewportWidth;\n const style = (_b = win.getComputedStyle) == null ? void 0 : _b.call(win, el);\n const isStyleVisible = !!style && style.display !== \"none\" && style.visibility !== \"hidden\" && (parseFloat(style.opacity) || 0) > 0;\n const isVisible = isStyleVisible && isRectVisible;\n let ratio = 0;\n if (isVisible) {\n const xOverlap = Math.max(\n 0,\n Math.min(rect.right, viewportWidth) - Math.max(rect.left, 0)\n );\n const yOverlap = Math.max(\n 0,\n Math.min(rect.bottom, viewportHeight) - Math.max(rect.top, 0)\n );\n const intersectionArea = xOverlap * yOverlap;\n const elementArea = rect.width * rect.height;\n ratio = elementArea > 0 ? intersectionArea / elementArea : 0;\n }\n return {\n isVisible,\n ratio\n };\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor,\n patch,\n describeNode,\n getElementVisibility\n};\nexport {\n childNodes,\n contains,\n index as default,\n describeNode,\n getElementVisibility,\n getRootNode,\n getUntaintedAccessor,\n getUntaintedMethod,\n getUntaintedPrototype,\n host,\n isAngularZonePresent,\n mutationObserverCtor,\n parentElement,\n parentNode,\n patch,\n querySelector,\n querySelectorAll,\n shadowRoot,\n styleSheets,\n textContent\n};\n//# sourceMappingURL=rrweb-utils.js.map\n","import type {\n idNodeMap,\n MaskInputFn,\n MaskInputOptions,\n nodeMetaMap,\n} from './types';\n\nimport { NodeType } from '@appsurify-testmap/rrweb-types';\nimport type {\n IMirror,\n serializedNodeWithId,\n serializedNode,\n documentNode,\n documentTypeNode,\n textNode,\n elementNode,\n} from \"@appsurify-testmap/rrweb-types\";\nimport dom from '@appsurify-testmap/rrweb-utils';\n\nexport function isElement(n: Node): n is Element {\n return n.nodeType === n.ELEMENT_NODE;\n}\n\nexport function isShadowRoot(n: Node): n is ShadowRoot {\n const hostEl: Element | null =\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n (n && 'host' in n && 'mode' in n && dom.host(n as ShadowRoot)) || null;\n return Boolean(\n hostEl && 'shadowRoot' in hostEl && dom.shadowRoot(hostEl) === n,\n );\n}\n\n/**\n * To fix the issue https://github.com/rrweb-io/rrweb/issues/933.\n * Some websites use polyfilled shadow dom and this function is used to detect this situation.\n */\nexport function isNativeShadowDom(shadowRoot: ShadowRoot): boolean {\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\n}\n\n/**\n * Browsers sometimes destructively modify the css rules they receive.\n * This function tries to rectify the modifications the browser made to make it more cross platform compatible.\n * @param cssText - output of `CSSStyleRule.cssText`\n * @returns `cssText` with browser inconsistencies fixed.\n */\nfunction fixBrowserCompatibilityIssuesInCSS(cssText: string): string {\n /**\n * Chrome outputs `-webkit-background-clip` as `background-clip` in `CSSStyleRule.cssText`.\n * But then Chrome ignores `background-clip` as css input.\n * Re-introduce `-webkit-background-clip` to fix this issue.\n */\n if (\n cssText.includes(' background-clip: text;') &&\n !cssText.includes(' -webkit-background-clip: text;')\n ) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n ' -webkit-background-clip: text; background-clip: text;',\n );\n }\n return cssText;\n}\n\n// Remove this declaration once typescript has added `CSSImportRule.supportsText` to the lib.\ndeclare interface CSSImportRule extends CSSRule {\n readonly href: string;\n readonly layerName: string | null;\n readonly media: MediaList;\n readonly styleSheet: CSSStyleSheet;\n /**\n * experimental API, currently only supported in firefox\n * https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule/supportsText\n */\n readonly supportsText?: string | null;\n}\n\n/**\n * Browsers sometimes incorrectly escape `@import` on `.cssText` statements.\n * This function tries to correct the escaping.\n * more info: https://bugs.chromium.org/p/chromium/issues/detail?id=1472259\n * @param cssImportRule\n * @returns `cssText` with browser inconsistencies fixed, or null if not applicable.\n */\nexport function escapeImportStatement(rule: CSSImportRule): string {\n const { cssText } = rule;\n if (cssText.split('\"').length < 3) return cssText;\n\n const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\n if (rule.layerName === '') {\n statement.push(`layer`);\n } else if (rule.layerName) {\n statement.push(`layer(${rule.layerName})`);\n }\n if (rule.supportsText) {\n statement.push(`supports(${rule.supportsText})`);\n }\n if (rule.media.length) {\n statement.push(rule.media.mediaText);\n }\n return statement.join(' ') + ';';\n}\n\n/*\n * serialize the css rules from the .sheet property\n * for <link rel=\"stylesheet\"> elements, this is the only way of getting the rules without a FETCH\n * for <style> elements, this is less preferable to looking at childNodes[0].textContent\n * (which will include vendor prefixed rules which may not be used or visible to the recorded browser,\n * but which might be needed by the replayer browser)\n * however, at snapshot time, we don't know whether the style element has suffered\n * any programmatic manipulation prior to the snapshot, in which case the .sheet would be more up to date\n */\nexport function stringifyStylesheet(s: CSSStyleSheet): string | null {\n try {\n const rules = s.rules || s.cssRules;\n if (!rules) {\n return null;\n }\n let sheetHref = s.href;\n if (!sheetHref && s.ownerNode && s.ownerNode.ownerDocument) {\n // an inline <style> element\n sheetHref = s.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(rules, (rule: CSSRule) =>\n stringifyRule(rule, sheetHref),\n ).join('');\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\n\nexport function stringifyRule(rule: CSSRule, sheetHref: string | null): string {\n if (isCSSImportRule(rule)) {\n let importStringified;\n try {\n importStringified =\n // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule.styleSheet) ||\n // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule);\n } catch (error) {\n importStringified = rule.cssText;\n }\n if (rule.styleSheet.href) {\n // url()s within the imported stylesheet are relative to _that_ sheet's href\n return absolutifyURLs(importStringified, rule.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule.cssText;\n if (rule.type === CSSRule.KEYFRAMES_RULE || rule.type === CSSRule.KEYFRAME_RULE) {\n // Keyframes сериализуются правильно через cssText\n // Но нужно убедиться, что они не теряются\n }\n if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\n // Safari does not escape selectors with : properly\n // see https://bugs.webkit.org/show_bug.cgi?id=184604\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\n\nexport function fixSafariColons(cssStringified: string): string {\n // Replace e.g. [aa:bb] with [aa\\\\:bb]\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, '$1\\\\$2');\n}\n\nexport function isCSSImportRule(rule: CSSRule): rule is CSSImportRule {\n return 'styleSheet' in rule;\n}\n\nexport function isCSSStyleRule(rule: CSSRule): rule is CSSStyleRule {\n return 'selectorText' in rule;\n}\n\nexport class Mirror implements IMirror<Node> {\n private idNodeMap: idNodeMap = new Map();\n private nodeMetaMap: nodeMetaMap = new WeakMap();\n private selectorNodeMap: Map<string, Set<Node>> = new Map();\n\n getId(n: Node | undefined | null): number {\n if (!n) return -1;\n\n const id = this.getMeta(n)?.id;\n\n // if n is not a serialized Node, use -1 as its id.\n return id ?? -1;\n }\n\n getNode(id: number): Node | null {\n return this.idNodeMap.get(id) || null;\n }\n\n getIds(): number[] {\n return Array.from(this.idNodeMap.keys());\n }\n\n getMeta(n: Node): serializedNodeWithId | null {\n return this.nodeMetaMap.get(n) || null;\n }\n\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n: Node) {\n const id = this.getId(n);\n this.idNodeMap.delete(id);\n\n // Remove from selector index\n const meta = this.getMeta(n);\n if (meta?.selector) {\n const nodes = this.selectorNodeMap.get(meta.selector);\n if (nodes) {\n nodes.delete(n);\n // Clean up empty Sets\n if (nodes.size === 0) {\n this.selectorNodeMap.delete(meta.selector);\n }\n }\n }\n\n if (n.childNodes) {\n n.childNodes.forEach((childNode) =>\n this.removeNodeFromMap(childNode as unknown as Node),\n );\n }\n }\n has(id: number): boolean {\n return this.idNodeMap.has(id);\n }\n\n hasNode(node: Node): boolean {\n return this.nodeMetaMap.has(node);\n }\n\n add(n: Node, meta: serializedNodeWithId) {\n const id = meta.id;\n this.idNodeMap.set(id, n);\n this.nodeMetaMap.set(n, meta);\n\n // Index selector if present\n if (meta.selector) {\n let nodes = this.selectorNodeMap.get(meta.selector);\n if (!nodes) {\n nodes = new Set();\n this.selectorNodeMap.set(meta.selector, nodes);\n }\n nodes.add(n);\n }\n }\n\n replace(id: number, n: Node) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) {\n this.nodeMetaMap.set(n, meta);\n\n // Update selector index\n if (meta.selector) {\n const nodes = this.selectorNodeMap.get(meta.selector);\n if (nodes) {\n nodes.delete(oldNode);\n nodes.add(n);\n }\n }\n }\n }\n this.idNodeMap.set(id, n);\n }\n\n reset() {\n this.idNodeMap = new Map();\n this.nodeMetaMap = new WeakMap();\n this.selectorNodeMap = new Map();\n }\n\n getNodeBySelector(selector: string): Node | null {\n const nodes = this.selectorNodeMap.get(selector);\n if (!nodes || nodes.size === 0) return null;\n // Return first element from Set\n return nodes.values().next().value || null;\n }\n\n getNodesBySelector(selector: string): Node[] {\n const nodes = this.selectorNodeMap.get(selector);\n return nodes ? Array.from(nodes) : [];\n }\n\n hasSelector(selector: string): boolean {\n const nodes = this.selectorNodeMap.get(selector);\n return nodes !== undefined && nodes.size > 0;\n }\n}\n\nexport function createMirror(): Mirror {\n return new Mirror();\n}\n\nexport function maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn,\n}: {\n element: HTMLElement;\n maskInputOptions: MaskInputOptions;\n tagName: string;\n type: string | null;\n value: string | null;\n maskInputFn?: MaskInputFn;\n}): string {\n let text = value || '';\n const actualType = type && toLowerCase(type);\n\n if (\n maskInputOptions[tagName.toLowerCase() as keyof MaskInputOptions] ||\n (actualType && maskInputOptions[actualType as keyof MaskInputOptions])\n ) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = '*'.repeat(text.length);\n }\n }\n return text;\n}\n\nexport function toLowerCase<T extends string>(str: T): Lowercase<T> {\n return str.toLowerCase() as unknown as Lowercase<T>;\n}\n\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\ntype PatchedGetImageData = {\n [ORIGINAL_ATTRIBUTE_NAME]: CanvasImageData['getImageData'];\n} & CanvasImageData['getImageData'];\n\nexport function is2DCanvasBlank(canvas: HTMLCanvasElement): boolean {\n const ctx = canvas.getContext('2d');\n if (!ctx) return true;\n\n const chunkSize = 50;\n\n // get chunks of the canvas and check if it is blank\n for (let x = 0; x < canvas.width; x += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const getImageData = ctx.getImageData as PatchedGetImageData;\n const originalGetImageData =\n ORIGINAL_ATTRIBUTE_NAME in getImageData\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\n : getImageData;\n // by getting the canvas in chunks we avoid an expensive\n // `getImageData` call that retrieves everything\n // even if we can already tell from the first chunk(s) that\n // the canvas isn't blank\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x,\n y,\n Math.min(chunkSize, canvas.width - x),\n Math.min(chunkSize, canvas.height - y),\n ).data.buffer,\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\n\nexport function isNodeMetaEqual(a: serializedNode, b: serializedNode): boolean {\n if (!a || !b || a.type !== b.type) return false;\n if (a.type === NodeType.Document)\n return a.compatMode === (b as documentNode).compatMode;\n else if (a.type === NodeType.DocumentType)\n return (\n a.name === (b as documentTypeNode).name &&\n a.publicId === (b as documentTypeNode).publicId &&\n a.systemId === (b as documentTypeNode).systemId\n );\n else if (\n a.type === NodeType.Comment ||\n a.type === NodeType.Text ||\n a.type === NodeType.CDATA\n )\n return a.textContent === (b as textNode).textContent;\n else if (a.type === NodeType.Element)\n return (\n a.tagName === (b as elementNode).tagName &&\n JSON.stringify(a.attributes) ===\n JSON.stringify((b as elementNode).attributes) &&\n a.isSVG === (b as elementNode).isSVG &&\n a.needBlock === (b as elementNode).needBlock\n );\n return false;\n}\n\n/**\n * Get the type of an input element.\n * This takes care of the case where a password input is changed to a text input.\n * In this case, we continue to consider this of type password, in order to avoid leaking sensitive data\n * where passwords should be masked.\n */\nexport function getInputType(element: HTMLElement): Lowercase<string> | null {\n // when omitting the type of input element(e.g. <input />), the type is treated as text\n const type = (element as HTMLInputElement).type;\n\n return element.hasAttribute('data-rr-is-password')\n ? 'password'\n : type\n ? // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n : null;\n}\n\n/**\n * Extracts the file extension from an a path, considering search parameters and fragments.\n * @param path - Path to file\n * @param baseURL - [optional] Base URL of the page, used to resolve relative paths. Defaults to current page URL.\n */\nexport function extractFileExtension(\n path: string,\n baseURL?: string,\n): string | null {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return match?.[1] ?? null;\n}\n\nfunction extractOrigin(url: string): string {\n let origin = '';\n if (url.indexOf('//') > -1) {\n origin = url.split('/').slice(0, 3).join('/');\n } else {\n origin = url.split('/')[0];\n }\n origin = origin.split('?')[0];\n return origin;\n}\n\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nexport function absolutifyURLs(cssText: string | null, href: string): string {\n return (cssText || '').replace(\n URL_IN_CSS_REF,\n (\n origin: string,\n quote1: string,\n path1: string,\n quote2: string,\n path2: string,\n path3: string,\n ) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || '';\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === '/') {\n return `url(${maybeQuote}${\n extractOrigin(href) + filePath\n }${maybeQuote})`;\n }\n const stack = href.split('/');\n const parts = filePath.split('/');\n stack.pop();\n for (const part of parts) {\n if (part === '.') {\n continue;\n } else if (part === '..') {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\n },\n );\n}\n\n/**\n * Intention is to normalize by remove spaces, semicolons and CSS comments\n * so that we can compare css as authored vs. output of stringifyStylesheet\n */\nexport function normalizeCssString(\n cssText: string,\n /**\n * _testNoPxNorm: only used as part of the 'substring matching going from many to none'\n * test case so that it will trigger a failure if the conditions that let to the creation of that test arise again\n */\n _testNoPxNorm = false,\n): string {\n if (_testNoPxNorm) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, '');\n } else {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, '').replace(/0px/g, '0');\n }\n}\n\n/**\n * Maps the output of stringifyStylesheet to individual text nodes of a <style> element\n * which occurs when javascript is used to append to the style element\n * and may also occur when browsers opt to break up large text nodes\n * performance needs to be considered, see e.g. #1603\n */\nexport function splitCssText(\n cssText: string,\n style: HTMLStyleElement,\n _testNoPxNorm = false,\n): string[] {\n const childNodes = Array.from(style.childNodes);\n const splits: string[] = [];\n let iterCount = 0;\n if (childNodes.length > 1 && cssText && typeof cssText === 'string') {\n let cssTextNorm = normalizeCssString(cssText, _testNoPxNorm);\n const normFactor = cssTextNorm.length / cssText.length;\n for (let i = 1; i < childNodes.length; i++) {\n if (\n childNodes[i].textContent &&\n typeof childNodes[i].textContent === 'string'\n ) {\n const textContentNorm = normalizeCssString(\n childNodes[i].textContent!,\n _testNoPxNorm,\n );\n const jLimit = 100; // how many iterations for the first part of searching\n let j = 3;\n for (; j < textContentNorm.length; j++) {\n if (\n // keep consuming css identifiers (to get a decent chunk more quickly)\n textContentNorm[j].match(/[a-zA-Z0-9]/) ||\n // substring needs to be unique to this section\n textContentNorm.indexOf(textContentNorm.substring(0, j), 1) !== -1\n ) {\n continue;\n }\n break;\n }\n for (; j < textContentNorm.length; j++) {\n let startSubstring = textContentNorm.substring(0, j);\n // this substring should appears only once in overall text too\n let cssNormSplits = cssTextNorm.split(startSubstring);\n let splitNorm = -1;\n if (cssNormSplits.length === 2) {\n splitNorm = cssNormSplits[0].length;\n } else if (\n cssNormSplits.length > 2 &&\n cssNormSplits[0] === '' &&\n childNodes[i - 1].textContent !== ''\n ) {\n // this childNode has same starting content as previous\n splitNorm = cssTextNorm.indexOf(startSubstring, 1);\n } else if (cssNormSplits.length === 1) {\n // try to roll back to get multiple matches again\n startSubstring = startSubstring.substring(\n 0,\n startSubstring.length - 1,\n );\n cssNormSplits = cssTextNorm.split(startSubstring);\n if (cssNormSplits.length <= 1) {\n // no split possible\n splits.push(cssText);\n return splits;\n }\n j = jLimit + 1; // trigger end of search\n } else if (j === textContentNorm.length - 1) {\n // we're about to end loop without a split point\n splitNorm = cssTextNorm.indexOf(startSubstring);\n }\n if (cssNormSplits.length >= 2 && j > jLimit) {\n const prevTextContent = childNodes[i - 1].textContent;\n if (prevTextContent && typeof prevTextContent === 'string') {\n // pick the first matching point which respects the previous chunk's approx size\n const prevMinLength = normalizeCssString(prevTextContent).length;\n splitNorm = cssTextNorm.indexOf(startSubstring, prevMinLength);\n }\n if (splitNorm === -1) {\n // fall back to pick the first matching point of many\n splitNorm = cssNormSplits[0].length;\n }\n }\n if (splitNorm !== -1) {\n // find the split point in the original text\n let k = Math.floor(splitNorm / normFactor);\n for (; k > 0 && k < cssText.length; ) {\n iterCount += 1;\n if (iterCount > 50 * childNodes.length) {\n // quit for performance purposes\n splits.push(cssText);\n return splits;\n }\n const normPart = normalizeCssString(\n cssText.substring(0, k),\n _testNoPxNorm,\n );\n if (normPart.length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n cssTextNorm = cssTextNorm.substring(splitNorm);\n break;\n } else if (normPart.length < splitNorm) {\n k += Math.max(\n 1,\n Math.floor((splitNorm - normPart.length) / normFactor),\n );\n } else {\n k -= Math.max(\n 1,\n Math.floor((normPart.length - splitNorm) * normFactor),\n );\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText); // either the full thing if no splits were found, or the last split\n return splits;\n}\n\nexport function markCssSplits(\n cssText: string,\n style: HTMLStyleElement,\n): string {\n return splitCssText(cssText, style).join('/* rr_split */');\n}\n\n\n// TODO: Maybe depricated\n// export function getXPath(node: Node): string {\n//\n// if (node.nodeType === Node.DOCUMENT_NODE) {\n// // Корневой узел документа всегда возвращает \"/\"\n// return '/';\n// }\n//\n// if (node.nodeType === Node.DOCUMENT_TYPE_NODE) {\n// // Узел типа документа (DOCTYPE)\n// return '/html/doctype';\n// }\n//\n// if (node.nodeType === Node.ELEMENT_NODE) {\n// const element = node as Element;\n//\n// if (element.id) {\n// // Если у элемента есть уникальный ID, используем его\n// return `//*[@id=\"${element.id}\"]`;\n// }\n//\n// if (element.tagName && element.tagName.toLowerCase() === 'html') {\n// return '/html'\n// }\n//\n// if (element === document.head) {\n// return '/html/head'\n// }\n//\n// if (element === document.body) {\n// // Узел body\n// return '/html/body';\n// }\n//\n// const parentNode = element.parentNode;\n// // if (!parentNode || !(parentNode instanceof Element)) {\n// if (!parentNode) {\n// // Если родительский узел недоступен или не является элементом, путь построить нельзя\n// return '';\n// }\n//\n// const siblings = Array.from(parentNode.children).filter(\n// (sibling) => sibling.tagName === element.tagName\n// );\n//\n// const index = siblings.length > 1 ? `[${siblings.indexOf(element) + 1}]` : '';\n//\n// // Рекурсивное построение пути\n// return `${getXPath(parentNode)}/${element.tagName.toLowerCase()}${index}`;\n// }\n//\n// if (node.nodeType === Node.TEXT_NODE) {\n// const parent = node.parentNode;\n// if (!parent) {\n// // Если текстовый узел не имеет родителя, путь построить нельзя\n// return '';\n// }\n//\n// const textSiblings = Array.from(parent.childNodes).filter(\n// (sibling) => sibling.nodeType === Node.TEXT_NODE\n// );\n//\n// const index = textSiblings.length > 1 ? `[${textSiblings.indexOf((node as Element)) + 1}]` : '';\n//\n// return `${getXPath(parent)}/text()${index}`;\n// }\n//\n// if (node.nodeType === Node.CDATA_SECTION_NODE) {\n// const parent = node.parentNode;\n// if (!parent) {\n// return '';\n// }\n//\n// const cdataSiblings = Array.from(parent.childNodes).filter(\n// (sibling) => sibling.nodeType === Node.CDATA_SECTION_NODE\n// );\n//\n// const index = cdataSiblings.length > 1 ? `[${cdataSiblings.indexOf((node as Element)) + 1}]` : '';\n//\n// return `${getXPath(parent)}/text()${index}`;\n// }\n//\n// if (node.nodeType === Node.COMMENT_NODE) {\n// const parent = node.parentNode;\n// if (!parent) {\n// return '';\n// }\n//\n// const commentSiblings = Array.from(parent.childNodes).filter(\n// (sibling) => sibling.nodeType === Node.COMMENT_NODE\n// );\n//\n// const index = commentSiblings.length > 1 ? `[${commentSiblings.indexOf((node as Element)) + 1}]` : '';\n//\n// return `${getXPath(parent)}/comment()${index}`;\n// }\n//\n// return ''; // Если тип узла не поддерживается\n// }\n\nexport function isTextVisible(n: Text): boolean {\n // const parentElement = n.parentElement;\n // The parent node may not be a html element which has a tagName attribute.\n // So just let it be undefined which is ok in this use case.\n const parent = dom.parentNode(n);\n const parentElement = parent && (parent as Element);\n if (!parentElement) {\n return false;\n }\n const isParentVisible = isElementVisible(parentElement);\n if (!isParentVisible) {\n return false;\n }\n const textContent = n.textContent?.trim();\n return textContent !== '';\n}\n\nexport function isElementVisible(el: Element): boolean {\n const visibility = dom.getElementVisibility(el);\n return visibility.isVisible;\n}\n\n\nexport const interactiveEvents = [\n 'change',\n 'submit',\n 'dragstart',\n 'drop',\n 'pointerdown',\n 'pointerup',\n 'input',\n 'keydown',\n 'keyup',\n 'keypress',\n 'mouseenter',\n 'mouseleave',\n 'mouseup',\n 'mousedown',\n 'click',\n 'contextmenu',\n 'dblclick',\n 'focus',\n 'blur',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n]\n\nexport const interactiveTags = [\n 'a',\n 'button',\n 'input',\n 'select',\n 'textarea',\n 'label',\n 'details',\n 'summary',\n 'dialog',\n 'video',\n 'audio'\n];\n\n// Список атрибутов, которые могут содержать inline‑обработчики\nconst inlineEventAttributes = [\n 'onclick',\n 'ondblclick',\n 'onmousedown',\n 'onmouseup',\n 'onmouseover',\n 'onmouseout',\n 'onmousemove',\n 'onfocus',\n 'onblur',\n 'onkeydown',\n 'onkeypress',\n 'onkeyup',\n 'onchange',\n 'oninput',\n 'onsubmit',\n 'onreset',\n 'onselect',\n 'oncontextmenu',\n 'ontouchstart',\n 'ontouchmove',\n 'ontouchend',\n 'ontouchcancel'\n];\n\n// Глобальный реестр для хранения интерактивных элементов\nconst interactiveElementsRegistry = new WeakSet<Element>();\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst originalAddEventListener = EventTarget.prototype.addEventListener;\n\n// Переопределяем addEventListener\nEventTarget.prototype.addEventListener = function (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n) {\n\n originalAddEventListener.call(this, type, listener, options);\n if (this instanceof Element) {\n const eventType = type.toLowerCase();\n if (interactiveEvents.includes(eventType)) {\n interactiveElementsRegistry.add(this);\n }\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst originalRemoveEventListener = EventTarget.prototype.removeEventListener;\nEventTarget.prototype.removeEventListener = function (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n) {\n originalRemoveEventListener.call(this, type, listener, options);\n // Опционально: можно реализовать логику удаления элемента из реестра, если на нём больше интерактивных обработчиков.\n // Но часто это не требуется для задачи маркировки элемента как интерактивного.\n};\n\nfunction hasEventListeners(n: Node): boolean {\n return n instanceof Element && interactiveElementsRegistry.has(n);\n}\n\nexport function isElementInteractive(n: Node): boolean {\n\n if (n.nodeType === Node.ELEMENT_NODE) {\n const element = n as Element;\n const tagName = element.tagName.toLowerCase();\n\n if (interactiveTags.includes(tagName)) {\n return true;\n }\n\n const hasTabIndex =\n element.hasAttribute('tabindex') &&\n element.getAttribute('tabindex') !== '-1';\n const hasRoleInteractive = ['button', 'link', 'checkbox', 'switch', 'menuitem'].includes(\n element.getAttribute('role') || ''\n );\n const result =\n hasEventListeners(element) ||\n hasTabIndex ||\n hasRoleInteractive ||\n (element instanceof HTMLAnchorElement && element.hasAttribute('href')) ||\n (element instanceof HTMLButtonElement && !element.disabled);\n\n return result;\n }\n\n return false;\n}\n\nfunction inspectInlineEventHandlers() {\n const allElements = document.querySelectorAll('*');\n allElements.forEach((el) => {\n inlineEventAttributes.forEach((attr) => {\n if (el.hasAttribute(attr)) {\n interactiveElementsRegistry.add(el);\n }\n });\n });\n}\n\ntry {\n if (\n document.readyState === 'complete' ||\n document.readyState === 'interactive'\n ) {\n inspectInlineEventHandlers();\n // console.info('DOMContentLoaded and inspect called');\n } else {\n document.addEventListener('DOMContentLoaded', inspectInlineEventHandlers);\n // console.info('DOMContentLoaded and added handler');\n }\n} catch (error) { /* empty */ }\n","const fe = \"1.0\", ge = 10, U = {\n ANCHOR: 0.4,\n PATH: 0.3,\n TARGET: 0.2,\n UNIQUENESS: 0.1\n}, I = {\n SEMANTIC_TAG: 0.5,\n ROLE: 0.3,\n ARIA_LABEL: 0.1,\n STABLE_ID: 0.25,\n TEST_MARKER: 0.05,\n DEPTH_PENALTY_THRESHOLD: 5,\n DEPTH_PENALTY_FACTOR: 0.05,\n DEGRADED_SCORE: 0.3\n}, gt = {\n MIN_CONFIDENCE_FOR_SKIP: 0.7\n}, K = [\n \"form\",\n \"main\",\n \"nav\",\n \"section\",\n \"article\",\n \"footer\",\n \"header\"\n], J = [\n \"form\",\n \"navigation\",\n \"main\",\n \"region\",\n \"contentinfo\",\n \"complementary\",\n \"banner\",\n \"search\"\n], mt = [\n // HTML5 Semantic\n \"article\",\n \"aside\",\n \"details\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"header\",\n \"main\",\n \"mark\",\n \"nav\",\n \"section\",\n \"summary\",\n \"time\",\n // Form elements\n \"button\",\n \"datalist\",\n \"fieldset\",\n \"form\",\n \"input\",\n \"label\",\n \"legend\",\n \"meter\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"progress\",\n \"select\",\n \"textarea\",\n // Interactive\n \"a\",\n \"audio\",\n \"video\",\n \"canvas\",\n \"dialog\",\n \"menu\",\n // Text content\n \"blockquote\",\n \"dd\",\n \"dl\",\n \"dt\",\n \"hr\",\n \"li\",\n \"ol\",\n \"ul\",\n \"p\",\n \"pre\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n // Table\n \"caption\",\n \"col\",\n \"colgroup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"tr\",\n // SVG\n \"svg\",\n \"path\",\n \"circle\",\n \"rect\",\n \"line\",\n \"polyline\",\n \"polygon\",\n \"ellipse\",\n \"g\",\n \"text\",\n \"use\"\n], pt = [\n \"rect\",\n \"path\",\n \"circle\",\n \"line\",\n \"polyline\",\n \"polygon\",\n \"ellipse\",\n \"g\",\n \"text\",\n \"use\",\n \"defs\",\n \"clipPath\",\n \"mask\"\n], me = [\n \"aria-label\",\n \"aria-labelledby\",\n \"aria-describedby\",\n \"name\",\n \"type\",\n \"data-testid\",\n \"data-qa\",\n \"data-test\",\n \"href\",\n \"title\",\n \"placeholder\",\n \"alt\"\n], w = {\n // Test attributes (highest priority)\n \"data-testid\": 100,\n \"data-qa\": 99,\n \"data-cy\": 98,\n \"data-test\": 97,\n \"data-test-id\": 96,\n // ARIA (accessibility semantics)\n \"aria-label\": 90,\n \"aria-labelledby\": 85,\n \"aria-describedby\": 80,\n // Semantic HTML attributes\n name: 75,\n href: 70,\n // for <a>\n src: 70,\n // for <img>, <script>, etc.\n type: 65,\n role: 60,\n alt: 55,\n title: 50,\n for: 45,\n placeholder: 40,\n // Any data-* attribute (if not above)\n \"data-*\": 30,\n // Any aria-* attribute (if not above)\n \"aria-*\": 25\n}, V = /* @__PURE__ */ new Set([\n \"id\",\n // handled separately\n \"class\",\n // handled separately\n \"style\",\n // unstable\n \"xmlns\",\n // service attribute for SVG\n \"tabindex\",\n // can change\n \"contenteditable\"\n]), bt = {\n maxPathDepth: 10,\n enableSvgFingerprint: !0,\n confidenceThreshold: 0,\n fallbackToBody: !0,\n includeUtilityClasses: !1,\n source: \"dom-dsl\"\n}, yt = {\n strictMode: !1,\n enableFallback: !0,\n maxCandidates: 20,\n matchUrlsByPathOnly: !0\n};\nfunction P(r) {\n if (/^[a-z]+-\\d+$/i.test(r) || /^[a-z]+(-[a-z]+)+-\\d+$/i.test(r) || /^[a-z]+(_[a-z]+)*_\\d+$/i.test(r) || /^\\d+$/.test(r) || /^:[a-z0-9]+:$/i.test(r) || /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i.test(r))\n return !0;\n if (/^[a-z]{1,3}[A-Za-z0-9]{8,}$/.test(r)) {\n const t = /\\d/.test(r), e = /[A-Z]/.test(r), s = r.length >= 20;\n if (t && e || s)\n return !0;\n }\n return !!(/^radix-/.test(r) || /^mui-\\d+$/.test(r));\n}\nconst Q = /* @__PURE__ */ new Set([\n \"aria-labelledby\",\n \"aria-describedby\",\n \"aria-controls\",\n \"aria-owns\",\n \"aria-activedescendant\",\n \"for\",\n \"form\",\n \"list\",\n \"headers\",\n \"aria-details\",\n \"aria-errormessage\",\n \"aria-flowto\"\n]);\nfunction Y(r) {\n return r.trim().split(/\\s+/).some((e) => P(e));\n}\nclass St {\n constructor(t, e) {\n this.maxDepth = t.maxPathDepth ?? 10, this.cache = e;\n }\n /**\n * Finds the best anchor element for the target\n * @param target - Target element to find anchor for\n * @returns Anchor result or null if not found\n * @remarks\n * Special handling for root elements (html, head, body):\n * - For html: returns html itself as anchor\n * - For head or elements inside head: returns html as anchor\n * - For body: returns html as anchor\n */\n findAnchor(t) {\n if (this.cache) {\n const c = this.cache.getAnchor(t);\n if (c !== void 0)\n return c;\n }\n const e = t.tagName.toLowerCase(), s = t.ownerDocument;\n if (e === \"html\") {\n const c = {\n element: t,\n score: 1,\n tier: \"A\",\n depth: 0\n };\n return this.cacheResult(t, c), c;\n }\n if (e === \"head\" || this.isInsideHead(t)) {\n const c = s?.documentElement;\n if (c) {\n const u = {\n element: c,\n score: 1,\n tier: \"A\",\n depth: 0\n };\n return this.cacheResult(t, u), u;\n }\n }\n if (e === \"body\") {\n const c = s?.documentElement;\n if (c) {\n const u = {\n element: c,\n score: 1,\n tier: \"A\",\n depth: 0\n };\n return this.cacheResult(t, u), u;\n }\n }\n let n = t.parentElement, a = 0, i = null;\n for (; n && a < this.maxDepth; ) {\n if (n.tagName.toLowerCase() === \"body\")\n return i || {\n element: n,\n score: I.DEGRADED_SCORE,\n tier: \"C\",\n depth: a\n };\n const c = this.scoreAnchor(n);\n if (c > 0) {\n const u = this.applyDepthPenalty(c, a), d = this.getTier(n), l = { element: n, score: u, tier: d, depth: a };\n if (d === \"A\")\n return l;\n (!i || u > i.score) && (i = l);\n }\n n = n.parentElement, a++;\n }\n const o = i;\n return this.cache && this.cache.setAnchor(t, o), o;\n }\n /**\n * Scores an element as anchor candidate (without depth penalty)\n * @param element - Element to score\n * @returns Raw score from 0 to 1\n */\n scoreAnchor(t) {\n let e = 0;\n const s = t.tagName.toLowerCase();\n K.includes(s) && (e += I.SEMANTIC_TAG);\n const n = t.getAttribute(\"role\");\n n && J.includes(n) && (e += I.ROLE), (t.hasAttribute(\"aria-label\") || t.hasAttribute(\"aria-labelledby\")) && (e += I.ARIA_LABEL);\n const a = t.id;\n return a && !P(a) && (e += I.STABLE_ID), (t.hasAttribute(\"data-testid\") || t.hasAttribute(\"data-qa\") || t.hasAttribute(\"data-test\")) && (e += I.TEST_MARKER), Math.min(e, 1);\n }\n /**\n * Applies depth penalty to score\n * Following SPECIFICATION.md §7: depthPenalty = (depth - threshold) * factor\n */\n applyDepthPenalty(t, e) {\n if (e <= I.DEPTH_PENALTY_THRESHOLD)\n return t;\n const s = (e - I.DEPTH_PENALTY_THRESHOLD) * I.DEPTH_PENALTY_FACTOR;\n return Math.max(0, t - s);\n }\n /**\n * Determines the tier of an anchor element\n */\n getTier(t) {\n const e = t.tagName.toLowerCase();\n if (K.includes(e))\n return \"A\";\n const s = t.getAttribute(\"role\");\n return s && J.includes(s) ? \"B\" : \"C\";\n }\n /**\n * Checks if element is inside <head> section.\n * Stops at <body> to avoid false positives.\n * @param element - Element to check\n * @returns True if element is inside head, false otherwise\n * @remarks\n * Traverses up the DOM tree until finding head or body.\n * Returns false if body is encountered first.\n * @example\n * const meta = document.querySelector('meta');\n * if (isInsideHead(meta)) { ... }\n */\n isInsideHead(t) {\n let e = t.parentElement;\n for (; e; ) {\n const s = e.tagName.toLowerCase();\n if (s === \"head\") return !0;\n if (s === \"body\") return !1;\n e = e.parentElement;\n }\n return !1;\n }\n /**\n * Caches the anchor result for the target element\n * @param target - Target element\n * @param result - Anchor result to cache\n */\n cacheResult(t, e) {\n this.cache && this.cache.setAnchor(t, e);\n }\n}\nconst At = [\n // CSS-in-JS\n /^css-[a-z0-9]+$/i,\n /^sc-[a-z0-9]+-\\d+$/i,\n /^[a-z]{5,8}$/i,\n // Short generated classes (abcdef)\n // Material-UI / MUI\n /^Mui[A-Z]\\w+-\\w+-\\w+/,\n /^makeStyles-\\w+-\\d+$/,\n // JSS\n /^jss\\d+$/,\n // Emotion / Linaria\n /^(emotion|linaria)-[a-z0-9]+/i,\n // Component libraries with hashes\n /^(chakra|tw-|ant-)[a-z0-9]+-\\w+/i,\n // Hash-based (hashes in classes)\n /-[a-f0-9]{6,}$/i,\n /^_[a-z0-9]{5,}$/i,\n /\\d{5,}/\n // 5+ digits in a row\n], xt = [\n // === FIX 4: Tailwind arbitrary values and variants (highest priority) ===\n /^\\[/,\n // Any arbitrary value or variant starting with [ (e.g., [&_svg]:..., [mask-type:luminance])\n // === FIX 4: Pseudo-class variants (must be before specific patterns) ===\n /^(first|last|odd|even|only|first-of-type|last-of-type|only-of-type):/,\n // first:, last:, etc.\n /^(hover|focus|active|disabled|enabled|checked|indeterminate|default|required|valid|invalid|in-range|out-of-range|placeholder-shown|autofill|read-only):/,\n // State pseudo-classes\n /^(focus-within|focus-visible|visited|target|open):/,\n // Advanced pseudo-classes\n // === FIX 4: Responsive variants (must be before specific patterns) ===\n /^(sm|md|lg|xl|2xl|3xl|4xl|5xl|6xl|7xl):/,\n // === FIX 4: Dark mode and directional variants ===\n /^dark:/,\n /^(rtl|ltr):/,\n // === FIX 4: Group and peer variants ===\n /^(group|peer)(-hover|-focus|-active)?:/,\n // === Arbitrary pseudo-class/modifier variants (catch-all) ===\n // Matches any lowercase/hyphenated prefix followed by colon\n // e.g., file:bg-transparent, placeholder:text-gray, invalid:border-red, accept:text-primary\n // Must come AFTER semantic pattern checks to avoid false positives\n /^[a-z][a-z-]*:/,\n // === FIX 4: Tailwind utilities with fraction values ===\n /\\/([\\d.]+|full|auto|screen)$/,\n // /50, /100, /full, /auto, /screen\n // === FIX 4: Positioning utilities ===\n /^(inset|top|right|bottom|left)(-|$)/,\n // inset-0, top-0, left-0\n // === Layout & Display ===\n /^(flex|inline-flex|grid|block|inline|inline-block|hidden|visible)$/,\n /^(absolute|relative|fixed|sticky|static)$/,\n // === Flexbox & Grid ===\n /^(items|justify|content|self|place)-/,\n /^flex-(row|col|wrap|nowrap|1|auto|initial|none)/,\n /^grid-(cols|rows|flow)/,\n // === Spacing (Tailwind) ===\n /^(gap|space)-/,\n /^[mp][trblxy]?-(\\d+|auto|px)$/,\n // === Negative Tailwind utilities (margins, positioning, transforms) ===\n /^-[mp][trblxy]?-\\d+$/,\n // -m-4, -mt-2, -mx-4, -px-4, -py-2\n /^-(top|right|bottom|left|inset)-\\d+$/,\n // -top-4, -bottom-6, -left-6, -inset-0\n /^-z-\\d+$/,\n // -z-10, -z-20\n /^-space-[xy]-\\d+$/,\n // -space-x-2, -space-y-4\n /^-translate-[xy]-\\d+$/,\n // -translate-x-4, -translate-y-2\n /^-rotate-\\d+$/,\n // -rotate-45, -rotate-90\n /^-scale-\\d+$/,\n // -scale-50, -scale-75\n /^-skew-[xy]-\\d+$/,\n // -skew-x-12, -skew-y-6\n // === Sizing ===\n /^(w|h|min-w|min-h|max-w|max-h|size)-/,\n // === Colors & Styling ===\n // Note: text-* can be semantic (text-muted, text-primary) or utility (text-center, text-lg)\n // More specific patterns for utility text-* classes\n /^text-(center|left|right|justify|start|end|xs|sm|base|lg|xl|2xl|3xl|4xl|5xl|6xl|7xl|8xl|9xl)$/,\n /^text-(uppercase|lowercase|capitalize|normal-case|underline|line-through|no-underline)$/,\n /^text-(truncate|ellipsis|clip)$/,\n /^(bg|border|ring|shadow|outline)-/,\n /^rounded(-|$)/,\n // === Typography ===\n /^(font|leading|tracking|whitespace|break|truncate)-/,\n /^(uppercase|lowercase|capitalize|normal-case)$/,\n // === Transform & Animation (IMPORTANT!) ===\n /^(transform|transition|duration|delay|ease|animate)-/,\n /^(scale|rotate|translate|skew)-/,\n /^transform$/,\n /^backdrop-blur-/,\n /^motion-/,\n // Framer Motion\n /^(fade|slide|zoom|bounce|pulse|spin|ping)-/,\n // animations\n // === Overflow & Scrolling ===\n /^(overflow|overscroll|scroll)-/,\n /^object-(contain|cover|fill|none|scale-down)$/,\n // === Interactivity ===\n /^(cursor|pointer-events|select|resize)-/,\n // === Visibility & Opacity ===\n /^(opacity|z)-/,\n /^(visible|invisible|collapse)$/,\n // === Bootstrap utilities ===\n /^d-(none|inline|inline-block|block|grid|table|flex)$/,\n /^(float|clearfix|text)-(left|right|center|justify|start|end)$/,\n /^(m|p)[trblxy]?-[0-5]$/,\n /^(w|h)-(25|50|75|100|auto)$/,\n // Note: btn-* classes are semantic (component classes), not utility\n // /^btn-(primary|secondary|success|danger|warning|info|light|dark|link)$/,\n /^btn-(sm|lg|block)$/,\n // Only size modifiers are utility\n /^text-(muted|primary|success|danger|warning|info|light|dark|white)$/,\n /^bg-(primary|secondary|success|danger|warning|info|light|dark|white|transparent)$/,\n /^border(-top|-bottom|-left|-right)?(-0)?$/,\n /^rounded(-top|-bottom|-left|-right|-circle|-pill|-0)?$/,\n /^shadow(-sm|-lg|-none)?$/,\n /^(align|justify|order|flex)-(start|end|center|between|around|fill|grow|shrink)$/,\n /^col(-sm|-md|-lg|-xl)?(-\\d+|-auto)?$/,\n /^row(-cols)?(-\\d+)?$/,\n /^g[xy]?-[0-5]$/,\n /^(show|hide|invisible|visible)$/,\n /^(position|top|bottom|start|end)-(static|relative|absolute|fixed|sticky|-\\d+)$/,\n // === Common utility patterns ===\n /^(row|col)$/,\n /^clearfix$/,\n /^pull-(left|right)$/,\n /^float-(left|right|none)$/\n], Ct = [\n // === Navigation ===\n /^(nav|menu|header|footer|sidebar|topbar|navbar|breadcrumb)/,\n /(navigation|dropdown|megamenu)$/,\n // === Components ===\n /^(btn|button|link|card|modal|dialog|popup|tooltip|alert|badge|chip)/,\n /^(form|input|select|checkbox|radio|textarea|label|fieldset)/,\n /^(table|list|item|row|cell|column)/,\n /^(accordion|tab|carousel|slider|gallery)/,\n // === Content ===\n /^(content|main|article|post|comment|title|subtitle|description|caption)/,\n /^(hero|banner|jumbotron|section|wrapper|box)/,\n // === User/Data ===\n /^(user|profile|avatar|account|auth)/,\n /^(product|item|price|cart|checkout|order)/,\n // === Layout sections ===\n /^(page|layout|panel|widget|block)/,\n // === States (semantic naming) ===\n /-(primary|secondary|tertiary|success|error|warning|info|danger)$/,\n /-(active|inactive|disabled|enabled|selected|highlighted|focused)$/,\n /-(open|closed|expanded|collapsed|visible|hidden)$/,\n /-(large|medium|small|tiny|xs|sm|md|lg|xl)$/,\n // === Action buttons ===\n /^(submit|cancel|close|delete|edit|save|back|next|prev|search)/,\n // === Status ===\n /^(loading|pending|complete|failed|draft|published)/\n];\nfunction O(r) {\n return At.some((t) => t.test(r));\n}\nfunction _(r) {\n return r.length <= 2 || /^\\d/.test(r) ? !0 : xt.some((t) => t.test(r));\n}\nfunction Tt(r) {\n return O(r) || _(r) ? !1 : Ct.some((t) => t.test(r));\n}\nfunction Et(r) {\n return !O(r) && !_(r);\n}\nfunction M(r) {\n return r.filter((t) => Et(t));\n}\nfunction wt(r) {\n if (O(r) || _(r))\n return 0;\n let t = 0.5;\n return Tt(r) && (t = 0.8), r.length < 3 ? t *= 0.3 : r.length < 5 && (t *= 0.6), /\\d/.test(r) && (t *= 0.7), Math.min(t, 1);\n}\nfunction vt(r) {\n const t = [], e = [];\n for (const s of r)\n _(s) || O(s) ? e.push(s) : t.push(s);\n return { semantic: t, utility: e };\n}\nfunction tt(r) {\n return _(r) || O(r);\n}\nfunction pe(r) {\n return wt(r);\n}\nconst et = (r) => r.replace(/([#:.[\\]@])/g, \"\\\\$1\");\nclass $t {\n constructor(t, e) {\n this.maxDepth = t.maxPathDepth ?? 10, this.cache = e;\n }\n /**\n * Builds path from anchor to target (excluding both)\n * @param anchor - Anchor element (start)\n * @param target - Target element (end)\n * @param extractor - Semantic extractor instance\n * @returns Path build result with nodes and degradation info\n * @remarks\n * Special handling for root elements:\n * - If anchor is html and target is head/body: returns empty path\n * - If anchor is html and target is inside head: builds path through head\n */\n buildPath(t, e, s) {\n const n = t.tagName.toLowerCase(), a = e.tagName.toLowerCase();\n if (n === \"html\" && (a === \"head\" || a === \"body\"))\n return {\n path: [],\n degraded: !1\n };\n if (n === \"html\" && this.isInsideHead(e))\n return this.buildHeadPath(t, e, s);\n const i = [];\n let o = e.parentElement;\n for (; o && o !== t && i.length < this.maxDepth; )\n i.unshift(o), o = o.parentElement;\n const c = i.length >= this.maxDepth && o !== t;\n if (!c && o !== t)\n return console.warn(\"[PathBuilder] Target is not a descendant of anchor\"), {\n path: [],\n degraded: !0,\n degradationReason: \"target-not-descendant-of-anchor\"\n };\n let u = this.filterNoise(i);\n return u = this.ensureUniqueness(i, u, t, e, s), {\n path: u.map((l) => {\n const h = l.parentElement;\n let g;\n if (h) {\n const m = Array.from(h.children).indexOf(l);\n m !== -1 && (g = m + 1);\n }\n return {\n tag: l.tagName.toLowerCase(),\n semantics: s.extract(l),\n score: s.scoreElement(l),\n nthChild: g\n };\n }),\n degraded: c,\n degradationReason: c ? \"path-depth-overflow\" : void 0\n };\n }\n /**\n * Legacy method for backward compatibility\n */\n buildPathNodes(t, e, s) {\n return this.buildPath(t, e, s).path;\n }\n /**\n * Ensures path uniqueness by adding nodes if needed\n * Following SPECIFICATION.md §8 Disambiguation Algorithm\n */\n ensureUniqueness(t, e, s, n, a) {\n const i = this.buildTestSelector(s, e, n);\n try {\n const o = n.ownerDocument;\n if (!o) return e;\n let c;\n if (this.cache) {\n const d = this.cache.getSelectorResults(i);\n d !== void 0 ? c = d : (c = Array.from(o.querySelectorAll(i)), this.cache.setSelectorResults(i, c));\n } else\n c = o.querySelectorAll(i);\n if (c.length <= 1)\n return e;\n const u = t.filter((d) => !e.includes(d));\n for (const d of u) {\n if (a.scoreElement(d) < gt.MIN_CONFIDENCE_FOR_SKIP)\n continue;\n const h = this.insertNodeInOrder(e, d, t), g = this.buildTestSelector(s, h, n);\n try {\n let f;\n if (this.cache) {\n const m = this.cache.getSelectorResults(g);\n m !== void 0 ? f = m : (f = Array.from(o.querySelectorAll(g)), this.cache.setSelectorResults(g, f));\n } else\n f = o.querySelectorAll(g);\n if (f.length === 1)\n return h;\n f.length < c.length && (e = h);\n } catch {\n }\n }\n return e;\n } catch {\n return e;\n }\n }\n /**\n * Inserts node into path maintaining original order\n */\n insertNodeInOrder(t, e, s) {\n const n = s.indexOf(e), a = [...t];\n let i = 0;\n for (let o = 0; o < a.length && !(s.indexOf(a[o]) > n); o++)\n i = o + 1;\n return a.splice(i, 0, e), a;\n }\n /**\n * Builds a test CSS selector from path\n */\n buildTestSelector(t, e, s) {\n const n = [];\n n.push(this.elementToSelector(t));\n for (const a of e)\n n.push(this.elementToSelector(a));\n return n.push(this.elementToSelector(s)), n.join(\" \");\n }\n /**\n * Converts element to basic CSS selector\n */\n elementToSelector(t) {\n let e = t.tagName.toLowerCase();\n t.id && !P(t.id) && (e += `#${et(t.id)}`);\n for (const s of Array.from(t.classList))\n tt(s) || (e += `.${et(s)}`);\n return e;\n }\n /**\n * Filters out noise/layout elements\n */\n filterNoise(t) {\n return t.filter((e) => this.shouldInclude(e));\n }\n /**\n * Determines if element should be included in path\n */\n shouldInclude(t) {\n const e = t.tagName.toLowerCase();\n return mt.includes(e) ? !0 : e === \"div\" || e === \"span\" ? this.hasSemanticFeatures(t) : !1;\n }\n /**\n * Checks if element has meaningful semantic features\n */\n hasSemanticFeatures(t) {\n if (t.hasAttribute(\"role\")) return !0;\n for (const s of Array.from(t.attributes))\n if (s.name.startsWith(\"aria-\")) return !0;\n if (t.classList.length > 0) {\n for (const s of Array.from(t.classList))\n if (!tt(s)) return !0;\n }\n if (t.hasAttribute(\"data-testid\") || t.hasAttribute(\"data-qa\") || t.hasAttribute(\"data-test\"))\n return !0;\n const e = t.id;\n return !!(e && !P(e));\n }\n /**\n * Checks if element is inside <head> section.\n * Stops at <body> to avoid false positives.\n * @param element - Element to check\n * @returns True if element is inside head, false otherwise\n * @remarks\n * Traverses up the DOM tree until finding head or body.\n * Returns false if body is encountered first.\n */\n isInsideHead(t) {\n let e = t.parentElement;\n for (; e; ) {\n const s = e.tagName.toLowerCase();\n if (s === \"head\") return !0;\n if (s === \"body\") return !1;\n e = e.parentElement;\n }\n return !1;\n }\n /**\n * Builds path from html to target through head element.\n * Always includes head in the path for correct CSS selector generation.\n * @param htmlElement - The html element (anchor)\n * @param target - Target element inside head\n * @param extractor - Semantic extractor instance\n * @returns Path build result with head and intermediate nodes\n * @example\n * For <html><head><meta name=\"description\"></head></html>\n * Returns path: [head]\n */\n buildHeadPath(t, e, s) {\n const n = [];\n let a = e.parentElement;\n for (; a && a !== t; )\n n.unshift(a), a = a.parentElement;\n return a !== t ? {\n path: [],\n degraded: !0,\n degradationReason: \"target-not-descendant-of-html\"\n } : n.findIndex((c) => c.tagName.toLowerCase() === \"head\") === -1 ? {\n path: [],\n degraded: !0,\n degradationReason: \"head-not-found-in-path\"\n } : {\n path: n.map((c) => {\n const u = c.parentElement;\n let d;\n if (u) {\n const h = Array.from(u.children).indexOf(c);\n h !== -1 && (d = h + 1);\n }\n return {\n tag: c.tagName.toLowerCase(),\n semantics: s.extract(c),\n score: s.scoreElement(c),\n nthChild: d\n };\n }),\n degraded: !1\n };\n }\n}\nfunction F(r) {\n return r ? r.trim().replace(/[\\n\\t\\r]/g, \" \").replace(/\\s+/g, \" \") : \"\";\n}\nconst Nt = {\n preserveQueryForAbsolute: !0,\n removeDynamicHashes: !0\n};\nfunction It(r) {\n return r ? [\n /\\d{5,}/,\n // 5+ digits\n /[a-f0-9]{8,}/i,\n // hex hash 8+ characters\n /(session|token|temp|random|timestamp|nonce|cache)/i,\n // dynamic words\n /^\\d+$/,\n // only digits\n /^[a-f0-9-]{32,}$/i\n // UUID-like\n ].some((e) => e.test(r)) : !1;\n}\nfunction Rt(r, t) {\n if (!r) return r;\n const e = r.startsWith(\"http://\") || r.startsWith(\"https://\"), [s, n] = r.split(\"#\"), [a, i] = s.split(\"?\");\n let o = a;\n return e && t.preserveQueryForAbsolute && i && (o += `?${i}`), n && (t.removeDynamicHashes && It(n) || (o += `#${n}`)), o;\n}\nfunction D(r, t, e = {}) {\n if (!t) return t;\n const s = { ...Nt, ...e };\n return r === \"href\" || r === \"src\" ? Rt(t, s) : t;\n}\nconst Dt = [\n \"role\",\n \"aria-label\",\n \"aria-labelledby\",\n \"aria-describedby\",\n \"aria-controls\",\n \"aria-owns\",\n \"aria-level\",\n \"aria-posinset\",\n \"aria-setsize\",\n \"aria-haspopup\"\n], Mt = [\n \"aria-selected\",\n \"aria-checked\",\n \"aria-pressed\",\n \"aria-expanded\",\n \"aria-hidden\",\n \"aria-disabled\",\n \"aria-current\",\n \"aria-busy\",\n \"aria-invalid\",\n \"aria-grabbed\",\n \"aria-live\",\n \"aria-atomic\"\n], Pt = [\n \"data-state\",\n \"data-active\",\n \"data-inactive\",\n \"data-selected\",\n \"data-open\",\n \"data-closed\",\n \"data-visible\",\n \"data-hidden\",\n \"data-disabled\",\n \"data-enabled\",\n \"data-loading\",\n \"data-error\",\n \"data-success\",\n \"data-highlighted\",\n \"data-focused\",\n \"data-hover\",\n \"data-orientation\",\n \"data-theme\"\n], Ht = [\n \"data-radix-\",\n \"data-headlessui-\",\n \"data-reach-\",\n \"data-mui-\",\n \"data-chakra-\",\n \"data-mantine-\",\n \"data-tw-\"\n], Lt = [\n \"data-testid\",\n \"data-test-id\",\n \"data-test\",\n \"data-cy\",\n \"data-qa\",\n \"data-automation-id\",\n \"data-id\",\n \"data-component\",\n \"data-entity-id\",\n \"data-product-id\",\n \"data-user-id\"\n], kt = [\n // Google Analytics / GTM\n \"data-ga\",\n \"data-gtm\",\n \"data-google\",\n \"data-layer\",\n \"data-event\",\n // Yandex Metrica\n \"data-yandex\",\n \"data-ym\",\n \"data-metrika\",\n // A/B Testing\n \"data-optimizely\",\n \"data-vwo\",\n \"data-optimize\",\n // Session Recording\n \"data-hj\",\n \"data-hotjar\",\n \"data-fs\",\n \"data-mouseflow\",\n \"data-mf\",\n \"data-smartlook\",\n \"data-sl\",\n // Social / Ad Pixels\n \"data-fb\",\n \"data-facebook\",\n \"data-tt\",\n \"data-li\",\n // Generic Tracking\n \"data-track\",\n \"data-tracking\",\n \"data-click\",\n \"data-impression\",\n \"data-conversion\",\n \"data-segment\",\n \"data-analytics\"\n], qt = [\n \"data-category\",\n // Google Analytics category\n \"data-action\",\n // Google Analytics action\n \"data-label\",\n // Google Analytics label\n \"data-value\"\n // Google Analytics value\n], Ot = [\n \"id\",\n \"name\",\n \"type\",\n \"placeholder\",\n \"title\",\n \"for\",\n \"alt\",\n \"href\"\n], _t = [\n \"disabled\",\n \"checked\",\n \"selected\",\n \"hidden\",\n \"readonly\",\n \"required\",\n \"value\"\n], Ut = [\n /^radix-/,\n /^headlessui-/,\n /^mui-/,\n /:\\w+:/\n // matches :ru:, :r1:, etc.\n];\nfunction zt(r, t) {\n return Dt.includes(r) ? !0 : Mt.includes(r) || Pt.includes(r) || Ht.some((e) => r.startsWith(e)) ? !1 : Lt.includes(r) ? !0 : kt.some((e) => r.startsWith(e)) || qt.includes(r) ? !1 : r.startsWith(\"data-\") && r.endsWith(\"-id\") ? !0 : r === \"id\" ? !Ut.some((e) => e.test(t)) : Ot.includes(r) ? !0 : _t.includes(r) ? !1 : !!r.startsWith(\"data-\");\n}\nclass st {\n constructor(t, e) {\n this.includeUtilityClasses = t.includeUtilityClasses ?? !1, this.cache = e;\n }\n /**\n * Extracts semantic features from element\n * @param element - DOM element to extract from\n * @returns Semantic features object\n */\n extract(t) {\n if (this.cache) {\n const i = this.cache.getSemantics(t);\n if (i !== void 0)\n return i;\n }\n const e = {}, s = t.id;\n if (s && !P(s) && (e.id = s), t.classList.length > 0) {\n const i = Array.from(t.classList);\n if (this.includeUtilityClasses)\n e.classes = i;\n else {\n const { semantic: o } = vt(i);\n o.length > 0 && (e.classes = o);\n }\n }\n const n = this.extractAttributes(t);\n Object.keys(n).length > 0 && (e.attributes = n);\n const a = t.getAttribute(\"role\");\n if (a && (e.role = a), this.shouldExtractText(t)) {\n const i = this.extractText(t);\n i && (e.text = i);\n }\n return this.cache && this.cache.setSemantics(t, e), e;\n }\n /**\n * Scores element based on semantic richness\n * @param element - Element to score\n * @returns Score from 0 to 1\n */\n scoreElement(t) {\n let e = 0.5;\n const s = this.extract(t);\n return s.id && (e += 0.15), s.classes && s.classes.length > 0 && (e += 0.1), s.attributes && Object.keys(s.attributes).length > 0 && (e += 0.1), s.role && (e += 0.1), s.text && (e += 0.05), Math.min(e, 1);\n }\n /**\n * Checks if attribute should be ignored\n * @param attrName - Attribute name\n * @returns True if should be ignored\n */\n shouldIgnoreAttribute(t) {\n return !!(V.has(t) || t.startsWith(\"on\") || t.startsWith(\"ng-\") || t.startsWith(\"_ng\") || t.startsWith(\"data-reactid\") || t.startsWith(\"data-react\") || t.startsWith(\"data-v-\"));\n }\n /**\n * Gets attribute priority\n * @param attrName - Attribute name\n * @returns Priority number (higher = more priority)\n */\n getAttributePriority(t) {\n return w[t] !== void 0 ? w[t] : t.startsWith(\"data-\") ? w[\"data-*\"] : t.startsWith(\"aria-\") ? w[\"aria-*\"] : 0;\n }\n /**\n * Checks if attribute value is dynamic (should be ignored)\n * @param value - Attribute value\n * @returns True if value is dynamic\n */\n isDynamicValue(t) {\n return [\n /^[a-f0-9]{32,}$/i,\n // Long hashes\n /^\\d{10,}$/,\n // Timestamp\n /^(undefined|null|\\[object)/,\n // JS artifacts\n /^{{.*}}$/\n // Template literals\n ].some((s) => s.test(t));\n }\n /**\n * Extracts relevant semantic attributes from element\n * Iterates through all attributes and filters by priority\n */\n extractAttributes(t) {\n const e = {};\n for (const s of Array.from(t.attributes)) {\n const n = s.name;\n if (this.shouldIgnoreAttribute(n) || !zt(n, s.value) || Q.has(n) && Y(s.value) || this.getAttributePriority(n) === 0) continue;\n const i = n === \"href\" || n === \"src\" ? D(n, s.value) : s.value;\n !i || i.trim() === \"\" || this.isDynamicValue(i) || (e[n] = i);\n }\n return e;\n }\n /**\n * Extracts and normalizes text content\n */\n extractText(t) {\n const e = this.getDirectTextContent(t);\n if (!e) return null;\n const s = F(e);\n if (!s) return null;\n const n = 100, a = e.length > n ? e.slice(0, n) + \"...\" : e, i = s.length > n ? s.slice(0, n) + \"...\" : s;\n return {\n raw: a,\n normalized: i\n };\n }\n /**\n * Gets direct text content excluding child elements\n */\n getDirectTextContent(t) {\n const e = [];\n for (const s of Array.from(t.childNodes))\n if (s.nodeType === Node.TEXT_NODE && s.textContent) {\n const n = s.textContent.trim();\n n && e.push(n);\n }\n return e.length > 0 ? e.join(\" \") : t.textContent ?? null;\n }\n /**\n * Determines if text should be extracted for this element\n */\n shouldExtractText(t) {\n const e = t.tagName.toLowerCase();\n return [\n \"button\",\n \"a\",\n \"label\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"p\",\n \"span\",\n \"li\",\n \"th\",\n \"td\",\n \"dt\",\n \"dd\",\n \"legend\",\n \"figcaption\",\n \"summary\"\n ].includes(e);\n }\n}\nclass Ft {\n /**\n * Generates fingerprint for SVG element\n * @param element - SVG element to fingerprint\n * @returns SVG fingerprint object\n */\n fingerprint(t) {\n const e = t.tagName.toLowerCase(), s = this.getShape(e), n = {\n shape: s,\n hasAnimation: this.hasAnimation(t)\n };\n if (s === \"path\") {\n const o = t.getAttribute(\"d\");\n o && (n.dHash = this.computePathHash(o));\n } else [\"circle\", \"rect\", \"ellipse\", \"line\"].includes(s) && (n.geomHash = this.computeGeomHash(t, s));\n const a = t.getAttribute(\"role\");\n a && (n.role = a);\n const i = t.querySelector(\"title\");\n return i?.textContent && (n.titleText = i.textContent.trim()), n;\n }\n /**\n * Computes hash from path data (first N commands)\n * @param d - SVG path d attribute value\n * @returns Hash string\n */\n computePathHash(t) {\n const e = this.normalizePathData(t);\n return this.simpleHash(e);\n }\n /**\n * Gets the shape type from tag name\n */\n getShape(t) {\n return [\n \"path\",\n \"circle\",\n \"rect\",\n \"line\",\n \"polyline\",\n \"polygon\",\n \"ellipse\",\n \"g\",\n \"text\",\n \"use\",\n \"svg\"\n ].find((s) => s === t) ?? \"path\";\n }\n /**\n * Normalizes path data for consistent hashing\n */\n normalizePathData(t) {\n return (t.match(/[MLHVCSQTAZ][^MLHVCSQTAZ]*/gi) ?? []).slice(0, 5).map((n) => n.trim().replace(/(-?\\d+\\.?\\d*)/g, (a) => parseFloat(a).toFixed(1))).join(\" \");\n }\n /**\n * Computes geometry hash for non-path shapes\n */\n computeGeomHash(t, e) {\n const s = [];\n switch (e) {\n case \"circle\":\n s.push(`r=${t.getAttribute(\"r\") ?? \"0\"}`);\n break;\n case \"rect\":\n {\n const n = parseFloat(t.getAttribute(\"width\") ?? \"0\"), a = parseFloat(t.getAttribute(\"height\") ?? \"0\");\n n > 0 && a > 0 && s.push(`ratio=${(n / a).toFixed(2)}`);\n }\n break;\n case \"ellipse\":\n {\n const n = parseFloat(t.getAttribute(\"rx\") ?? \"0\"), a = parseFloat(t.getAttribute(\"ry\") ?? \"0\");\n n > 0 && a > 0 && s.push(`ratio=${(n / a).toFixed(2)}`);\n }\n break;\n case \"line\":\n {\n const n = parseFloat(t.getAttribute(\"x1\") ?? \"0\"), a = parseFloat(t.getAttribute(\"y1\") ?? \"0\"), i = parseFloat(t.getAttribute(\"x2\") ?? \"0\"), o = parseFloat(t.getAttribute(\"y2\") ?? \"0\"), c = Math.atan2(o - a, i - n);\n s.push(`angle=${c.toFixed(2)}`);\n }\n break;\n }\n return this.simpleHash(s.join(\";\"));\n }\n /**\n * Detects animations on SVG element\n */\n hasAnimation(t) {\n if (t.querySelector(\"animate, animateTransform, animateMotion\"))\n return !0;\n const e = t.ownerDocument;\n if (e?.defaultView)\n try {\n const s = e.defaultView.getComputedStyle(t);\n if (s.animationName !== \"none\" || s.transitionProperty !== \"all\" && s.transitionProperty !== \"none\")\n return !0;\n } catch {\n }\n return !1;\n }\n /**\n * Simple hash function for fingerprinting (not cryptographic)\n */\n simpleHash(t) {\n let e = 0;\n for (let s = 0; s < t.length; s++) {\n const n = t.charCodeAt(s);\n e = (e << 5) - e + n, e = e & e;\n }\n return Math.abs(e).toString(16).padStart(8, \"0\");\n }\n}\nfunction jt(r, t = 0) {\n const e = r.anchor.score, s = r.path.length > 0 ? r.path.reduce((o, c) => o + c.score, 0) / r.path.length : 0.5, n = r.target.score, a = e * U.ANCHOR + s * U.PATH + n * U.TARGET + t * U.UNIQUENESS, i = r.anchor.degraded ? 0.2 : 0;\n return Math.max(0, Math.min(1, a - i));\n}\nfunction be(r, t, e) {\n let s = 0.5;\n return t && (s += 0.2), e && (s += 0.15), s += Math.min(r * 0.05, 0.15), Math.min(s, 1);\n}\nclass Wt {\n constructor(t) {\n this.cache = /* @__PURE__ */ new Map(), this.maxSize = t;\n }\n get(t) {\n const e = this.cache.get(t);\n if (e !== void 0)\n return this.cache.delete(t), this.cache.set(t, e), e;\n }\n set(t, e) {\n if (this.cache.has(t))\n this.cache.delete(t);\n else if (this.cache.size >= this.maxSize) {\n const s = this.cache.keys().next().value;\n s !== void 0 && this.cache.delete(s);\n }\n this.cache.set(t, e);\n }\n has(t) {\n return this.cache.has(t);\n }\n delete(t) {\n this.cache.delete(t);\n }\n clear() {\n this.cache.clear();\n }\n get size() {\n return this.cache.size;\n }\n}\nclass Bt {\n constructor(t = {}) {\n this.eidCache = /* @__PURE__ */ new WeakMap(), this.selectorResultCache = new Wt(\n t.maxSelectorCacheSize ?? 1e3\n ), this.anchorCache = /* @__PURE__ */ new WeakMap(), this.semanticsCache = /* @__PURE__ */ new WeakMap(), this.stats = {\n eidHits: 0,\n eidMisses: 0,\n selectorHits: 0,\n selectorMisses: 0,\n anchorHits: 0,\n anchorMisses: 0,\n semanticsHits: 0,\n semanticsMisses: 0,\n selectorCacheSize: 0,\n maxSelectorCacheSize: t.maxSelectorCacheSize ?? 1e3\n };\n }\n /**\n * Get cached EID for element\n */\n getEID(t) {\n const e = this.eidCache.get(t);\n if (e !== void 0)\n return this.stats.eidHits++, e;\n this.stats.eidMisses++;\n }\n /**\n * Cache EID for element\n */\n setEID(t, e) {\n this.eidCache.set(t, e);\n }\n /**\n * Get cached selector results\n */\n getSelectorResults(t) {\n const e = this.selectorResultCache.get(t);\n if (e !== void 0)\n return this.stats.selectorHits++, this.stats.selectorCacheSize = this.selectorResultCache.size, e;\n this.stats.selectorMisses++, this.stats.selectorCacheSize = this.selectorResultCache.size;\n }\n /**\n * Cache selector results\n */\n setSelectorResults(t, e) {\n this.selectorResultCache.set(t, e), this.stats.selectorCacheSize = this.selectorResultCache.size;\n }\n /**\n * Get cached anchor result\n */\n getAnchor(t) {\n if (this.anchorCache.has(t))\n return this.stats.anchorHits++, this.anchorCache.get(t);\n this.stats.anchorMisses++;\n }\n /**\n * Cache anchor result\n */\n setAnchor(t, e) {\n this.anchorCache.set(t, e);\n }\n /**\n * Get cached semantics\n */\n getSemantics(t) {\n const e = this.semanticsCache.get(t);\n if (e !== void 0)\n return this.stats.semanticsHits++, e;\n this.stats.semanticsMisses++;\n }\n /**\n * Cache semantics\n */\n setSemantics(t, e) {\n this.semanticsCache.set(t, e);\n }\n /**\n * Clear all caches\n */\n clear() {\n this.selectorResultCache.clear(), this.stats.selectorCacheSize = 0, this.stats = {\n eidHits: 0,\n eidMisses: 0,\n selectorHits: 0,\n selectorMisses: 0,\n anchorHits: 0,\n anchorMisses: 0,\n semanticsHits: 0,\n semanticsMisses: 0,\n selectorCacheSize: 0,\n maxSelectorCacheSize: this.stats.maxSelectorCacheSize\n };\n }\n /**\n * Invalidate cache for a specific element\n * Note: WeakMaps don't support deletion, but we can clear selector cache\n * if needed. This method is mainly for future extensibility.\n */\n invalidateElement(t) {\n }\n /**\n * Invalidate a specific selector from cache\n */\n invalidateSelector(t) {\n this.selectorResultCache.delete(t), this.stats.selectorCacheSize = this.selectorResultCache.size;\n }\n /**\n * Get cache statistics\n */\n getStats() {\n return {\n ...this.stats,\n selectorCacheSize: this.selectorResultCache.size\n };\n }\n /**\n * Get cache hit rate for EID cache\n */\n getEIDHitRate() {\n const t = this.stats.eidHits + this.stats.eidMisses;\n return t > 0 ? this.stats.eidHits / t : 0;\n }\n /**\n * Get cache hit rate for selector cache\n */\n getSelectorHitRate() {\n const t = this.stats.selectorHits + this.stats.selectorMisses;\n return t > 0 ? this.stats.selectorHits / t : 0;\n }\n /**\n * Get cache hit rate for anchor cache\n */\n getAnchorHitRate() {\n const t = this.stats.anchorHits + this.stats.anchorMisses;\n return t > 0 ? this.stats.anchorHits / t : 0;\n }\n /**\n * Get cache hit rate for semantics cache\n */\n getSemanticsHitRate() {\n const t = this.stats.semanticsHits + this.stats.semanticsMisses;\n return t > 0 ? this.stats.semanticsHits / t : 0;\n }\n /**\n * Get overall cache hit rate\n */\n getOverallHitRate() {\n const t = this.stats.eidHits + this.stats.selectorHits + this.stats.anchorHits + this.stats.semanticsHits, e = this.stats.eidMisses + this.stats.selectorMisses + this.stats.anchorMisses + this.stats.semanticsMisses, s = t + e;\n return s > 0 ? t / s : 0;\n }\n}\nfunction Gt(r) {\n return new Bt(r);\n}\nlet z = null;\nfunction Z() {\n return z || (z = Gt()), z;\n}\nfunction ye() {\n z = null;\n}\nfunction k(r) {\n if (r.ownerDocument)\n return r.ownerDocument;\n let t = r;\n for (; t; ) {\n if (t.nodeType === 9)\n return t;\n t = t.parentNode;\n }\n throw new Error(\n `Element does not have an ownerDocument. This typically means:\n1. The element is detached from the DOM\n2. The element was created but never attached\n3. You are working with a document node instead of an element`\n );\n}\nfunction Vt(r, t) {\n if (!t)\n return;\n const e = k(r), s = t instanceof Document ? t : k(t);\n if (e !== s)\n throw new Error(\n `Cross-document operation detected: element and root are from different documents.\nCommon causes:\n1. Working with iframe: pass iframe.contentDocument as root parameter\n2. Element from one iframe, root from another\n3. Element from main document, root from iframe (or vice versa)\n\nSolution: Ensure element and root parameter are from the same document context.`\n );\n}\nfunction X(r, t = {}) {\n if (!r || !r.ownerDocument || !r.isConnected)\n return null;\n const e = { ...bt, ...t };\n if (e.root)\n try {\n Vt(r, e.root);\n } catch (x) {\n return console.error(\"Cross-document generation detected:\", x), null;\n }\n const s = e.cache ?? Z(), n = s.getEID(r);\n if (n !== void 0)\n return n;\n if (r.tagName.toLowerCase() === \"html\") {\n const x = new st(e, s), y = Zt(r, e, x);\n return s.setEID(r, y), y;\n }\n const i = new St(e, s), o = new $t(e, s), c = new st(e, s), u = new Ft(), d = i.findAnchor(r);\n if (!d && !e.fallbackToBody)\n return null;\n const l = d?.element ?? r.ownerDocument?.body ?? null;\n if (!l) return null;\n const h = !d || d.tier === \"C\", g = l.tagName.toLowerCase(), f = l.parentElement;\n let m;\n if (f && g !== \"body\" && g !== \"html\") {\n const y = Array.from(f.children).indexOf(l);\n y !== -1 && (m = y + 1);\n }\n const p = c.extract(l), b = {\n tag: l.tagName.toLowerCase(),\n semantics: p,\n score: d?.score ?? I.DEGRADED_SCORE,\n degraded: h,\n nthChild: m\n }, S = o.buildPath(l, r, c), E = c.extract(r);\n e.enableSvgFingerprint && Qt(r) && (E.svg = u.fingerprint(r));\n const C = r.parentElement;\n let A;\n if (C) {\n const y = Array.from(C.children).indexOf(r);\n y !== -1 && (A = y + 1);\n }\n const v = {\n tag: r.tagName.toLowerCase(),\n semantics: E,\n score: c.scoreElement(r),\n nthChild: A\n }, H = [], $ = {\n onMultiple: \"best-score\",\n onMissing: \"anchor-only\",\n maxDepth: 3\n }, T = b.degraded || S.degraded, R = Yt(b.degraded, S), N = {\n version: \"1.0\",\n anchor: b,\n path: S.path,\n target: v,\n constraints: H,\n fallback: $,\n meta: {\n confidence: 0,\n // Calculated below\n generatedAt: (/* @__PURE__ */ new Date()).toISOString(),\n generator: \"dom-eid@1.0\",\n source: e.source,\n degraded: T,\n degradationReason: R\n }\n };\n return N.meta.confidence = jt(N), N.meta.confidence < e.confidenceThreshold ? null : (s.setEID(r, N), N);\n}\nfunction Qt(r) {\n return r.namespaceURI === \"http://www.w3.org/2000/svg\" || r.tagName.toLowerCase() === \"svg\" || r instanceof SVGElement;\n}\nfunction Yt(r, t) {\n if (r && t.degraded)\n return \"anchor-and-path-degraded\";\n if (r)\n return \"no-semantic-anchor\";\n if (t.degraded)\n return t.degradationReason;\n}\nfunction Zt(r, t, e, s) {\n const a = {\n tag: \"html\",\n semantics: e.extract(r),\n score: 1,\n degraded: !1,\n nthChild: void 0\n };\n return {\n version: \"1.0\",\n anchor: a,\n path: [],\n target: a,\n constraints: [],\n fallback: {\n onMultiple: \"best-score\",\n onMissing: \"anchor-only\",\n maxDepth: 3\n },\n meta: {\n confidence: 1,\n generatedAt: (/* @__PURE__ */ new Date()).toISOString(),\n generator: \"dom-eid@1.0\",\n source: t.source,\n degraded: !1,\n degradationReason: void 0\n }\n };\n}\nclass ot {\n buildSelector(t, e) {\n if (t.target.tag === \"html\") {\n const l = \"html\";\n return e?.ensureUnique ? {\n selector: l,\n isUnique: !0,\n usedNthOfType: !1,\n extraClassesAdded: 0\n } : l;\n }\n if (t.anchor.tag === \"html\" && t.path.length === 0) {\n const h = `html > ${this.buildNodeSelector(t.target.tag, t.target.semantics)}`;\n return e?.ensureUnique ? {\n selector: h,\n isUnique: this.isUnique(h, e.root ?? document),\n usedNthOfType: !1,\n extraClassesAdded: 0\n } : h;\n }\n if (t.anchor.tag === \"html\" && t.path.length > 0 && t.path[0].tag === \"head\")\n return this.buildHeadSelector(t, e);\n if (t.path.length === 0 && t.anchor.tag === t.target.tag && JSON.stringify(t.anchor.semantics) === JSON.stringify(t.target.semantics)) {\n const l = this.buildNodeSelector(\n t.target.tag,\n t.target.semantics,\n { excludeClasses: !1 }\n // Include classes for same-element case\n );\n return e?.ensureUnique ? this.ensureUniqueSelector(l, t, e) : l;\n }\n const n = [], a = e?.ensureUnique ? this.ensureUniqueAnchor(t, e.root) : this.buildNodeSelector(t.anchor.tag, t.anchor.semantics);\n n.push(a);\n for (const l of t.path) {\n let h = this.buildNodeSelector(l.tag, l.semantics);\n l.nthChild !== void 0 && ([\"tr\", \"td\", \"th\", \"thead\", \"tbody\", \"tfoot\"].includes(l.tag) ? h += `:nth-child(${l.nthChild})` : h += `:nth-child(${l.nthChild})`), n.push(h);\n }\n let i = this.buildNodeSelector(\n t.target.tag,\n t.target.semantics,\n { excludeClasses: e?.ensureUnique }\n // Exclude classes initially if we need unique\n );\n t.target.nthChild !== void 0 && ([\"tr\", \"td\", \"th\", \"thead\", \"tbody\", \"tfoot\"].includes(t.target.tag) ? i += `:nth-child(${t.target.nthChild})` : i += `:nth-child(${t.target.nthChild})`), n.push(i);\n const o = this.isSvgChildElement(t.target.tag), c = t.path.some((l) => l.tag === \"svg\");\n let u;\n if (o && c) {\n const l = t.path.findIndex((h) => h.tag === \"svg\");\n if (l !== -1) {\n const h = l + 1, g = n.slice(0, h + 1), f = n.slice(h + 1, -1), m = n[n.length - 1];\n f.length > 0 ? u = g.join(\" \") + \" > \" + f.join(\" > \") + \" > \" + m : u = g.join(\" \") + \" > \" + m;\n } else\n u = n.join(\" \");\n } else\n u = n.join(\" \");\n if (!e?.ensureUnique)\n return u;\n const d = this.querySelectorSafe(u, e.root ?? document);\n if (d.length === 1)\n return {\n selector: u,\n isUnique: !0,\n usedNthOfType: u.includes(\":nth-\"),\n extraClassesAdded: 0\n };\n if (d.length === 0 || d.length > 1) {\n const l = this.buildFullDomPathSelector(\n t,\n t.target.semantics,\n e.root ?? document\n );\n if (l && this.isUnique(l, e.root ?? document))\n return {\n selector: l,\n isUnique: !0,\n usedNthOfType: l.includes(\":nth-\"),\n extraClassesAdded: 0\n };\n }\n return this.ensureUniqueSelector(u, t, e);\n }\n /**\n * Builds selector for anchor only (used in fallback)\n * @param eid - Element Identity\n * @returns CSS selector for anchor\n */\n buildAnchorSelector(t) {\n return this.buildNodeSelector(t.anchor.tag, t.anchor.semantics);\n }\n /**\n * Ensures selector uniqueness by progressively adding classes and nth-of-type\n */\n ensureUniqueSelector(t, e, s) {\n const n = s.root ?? document, a = s.maxClasses ?? 4, i = e.target.tag, o = e.target.semantics;\n let c = t, u = 0, d = !1;\n if (this.querySelectorSafe(c, n).length === 0) {\n const f = this.buildFullDomPathSelector(e, o, n);\n if (f && (c = f, this.isUnique(c, n)))\n return {\n selector: c,\n isUnique: !0,\n usedNthOfType: !1,\n extraClassesAdded: 0\n };\n }\n if (this.isUnique(c, n))\n return {\n selector: c,\n isUnique: !0,\n usedNthOfType: !1,\n extraClassesAdded: 0\n };\n const h = M(o.classes ?? []);\n for (let f = 0; f < Math.min(h.length, a); f++) {\n const m = h[f];\n if (c += `.${this.escapeCSS(m)}`, u++, this.isUnique(c, n))\n return {\n selector: c,\n isUnique: !0,\n usedNthOfType: !1,\n extraClassesAdded: u\n };\n }\n if (!this.isUnique(c, n)) {\n const f = this.buildFullDomPathSelector(e, o, n);\n if (f && this.isUnique(f, n))\n return {\n selector: f,\n isUnique: !0,\n usedNthOfType: f.includes(\":nth-of-type(\"),\n extraClassesAdded: u\n };\n }\n const g = this.findNthElementByText(c, o, n);\n return g && (c += this.getNthSelector(g, i), d = !0), {\n selector: c,\n isUnique: this.isUnique(c, n),\n usedNthOfType: d,\n extraClassesAdded: u\n };\n }\n /**\n * Builds full DOM path selector by traversing actual DOM from anchor\n * This handles cases where intermediate div/span elements were filtered out\n */\n buildFullDomPathSelector(t, e, s) {\n const n = this.buildNodeSelector(t.anchor.tag, t.anchor.semantics), a = this.querySelectorSafe(n, s);\n if (a.length === 0) return null;\n for (const i of a) {\n const o = this.findTargetWithinAnchor(i, t.target.tag, e);\n if (o.length === 0) continue;\n const c = o.map((u) => {\n const d = this.scorePathMatch(u, i, t.path);\n return { element: u, score: d };\n });\n c.sort((u, d) => d.score - u.score);\n for (const { element: u } of c) {\n const d = this.buildPathFromAnchorToTarget(i, u, t, s);\n if (d && this.isUnique(d, s))\n return d;\n }\n }\n return null;\n }\n /**\n * Scores how well a candidate's DOM path matches the EID path\n * Compares tags, classes, attributes, and nthChild positions\n * @param candidate - Target element candidate\n * @param anchor - Anchor element\n * @param eidPath - EID path nodes\n * @returns Score (higher = better match)\n */\n scorePathMatch(t, e, s) {\n const n = [];\n let a = t.parentElement;\n for (; a && a !== e; )\n n.unshift(a), a = a.parentElement;\n let i = 0;\n const o = Math.min(n.length, s.length);\n for (let u = 0; u < o; u++) {\n const d = n[u], l = s[u];\n if (d.tagName.toLowerCase() === l.tag) {\n if (i += 10, l.nthChild !== void 0) {\n const h = d.parentElement;\n h && (Array.from(h.children).indexOf(d) + 1 === l.nthChild ? i += 20 : i -= 10);\n }\n } else\n i -= 5;\n if (l.semantics.classes && l.semantics.classes.length > 0) {\n const h = l.semantics.classes.filter(\n (g) => d.classList.contains(g)\n );\n i += h.length * 2;\n }\n if (l.semantics.attributes) {\n const h = Object.entries(l.semantics.attributes).filter(\n ([g, f]) => d.getAttribute(g) === f\n );\n i += h.length * 3;\n }\n }\n const c = Math.abs(n.length - s.length);\n return i -= c * 2, i;\n }\n /**\n * Finds target elements within an anchor by matching semantics\n */\n findTargetWithinAnchor(t, e, s) {\n return Array.from(t.querySelectorAll(e)).filter((a) => {\n if (s.text) {\n const i = a.textContent?.trim() || \"\", o = s.text.normalized;\n if (!i.includes(o) && !o.includes(i))\n return !1;\n }\n return !!(s.classes && s.classes.length > 0 && s.classes.every((o) => a.classList.contains(o)) || s.attributes && Object.entries(s.attributes).every(([o, c]) => {\n const u = a.getAttribute(o);\n return o === \"href\" || o === \"src\" ? D(o, u || \"\") === D(o, c) : u === c;\n }) || s.text);\n });\n }\n /**\n * Disambiguates a parent element by trying attributes, classes, then nth-of-type\n * Priority: stable attributes > one stable class > nth-of-type\n * @param element The DOM element to disambiguate\n * @param tag The tag name\n * @param pathNode EID path node with semantics (if available)\n * @param fullPath Current selector path (for uniqueness testing)\n * @param root Root element for queries\n * @returns Disambiguated selector part (e.g., \"div[role='main']\" or \"div.sidebar\" or \"div:nth-of-type(3)\")\n */\n disambiguateParent(t, e, s, n, a) {\n if (s?.semantics?.attributes) {\n const o = this.buildNodeSelector(e, s.semantics, {\n excludeClasses: !0\n }), c = [...n, e].join(\" > \"), u = this.querySelectorSafe(c, a), d = [...n, o].join(\" > \"), l = this.querySelectorSafe(d, a);\n if (l.length > 0 && l.length < u.length)\n return o;\n }\n if (s?.semantics?.classes) {\n const o = M(s.semantics.classes);\n if (o.length > 0) {\n const c = `${e}.${this.escapeCSS(o[0])}`, u = [...n, e].join(\" > \"), d = this.querySelectorSafe(u, a), l = [...n, c].join(\" > \"), h = this.querySelectorSafe(l, a);\n if (h.length > 0 && h.length < d.length)\n return c;\n }\n }\n const i = t.parentElement;\n return i && Array.from(i.children).filter((c) => c.tagName.toLowerCase() === e).length > 1 ? `${e}${this.getNthSelector(t, e)}` : e;\n }\n /**\n * Builds CSS selector path from anchor to target by traversing actual DOM\n */\n buildPathFromAnchorToTarget(t, e, s, n) {\n const a = [];\n let i = e;\n for (; i && i !== t; )\n a.unshift(i), i = i.parentElement;\n if (i !== t)\n return null;\n const o = [\n // ============================================================\n // Strategy 0: anchor path target[attrs_only]\n // Most flexible - no classes on target, only semantic attributes\n // ============================================================\n () => {\n const c = this.buildNodeSelector(s.anchor.tag, s.anchor.semantics), u = s.target.tag, d = s.target.semantics, l = [];\n for (const p of s.path)\n l.push(p.tag);\n const g = [c, ...l, u].filter(Boolean).join(\" \");\n if (this.isUnique(g, n))\n return g;\n const f = this.buildNodeSelector(u, d, {\n excludeClasses: !0\n // KEY: no classes on target in Strategy 0\n }), m = [\n c,\n ...l.slice(0, -1),\n f\n ].join(\" \");\n return this.isUnique(m, n) ? m : null;\n },\n // ============================================================\n // Strategy 1: anchor > parent[attrs|class|nth] > target[attrs_only]\n // Full path with '>' combinator\n // Parents: disambiguated using attrs > stable class > nth-of-type\n // Target: ONLY attributes, NO classes\n // ============================================================\n () => {\n const c = [this.buildNodeSelector(s.anchor.tag, s.anchor.semantics)], u = /* @__PURE__ */ new Map();\n let d = 0;\n for (let h = 0; h < a.length - 1; h++) {\n const g = a[h], f = g.tagName.toLowerCase();\n d < s.path.length && s.path[d].tag === f ? (u.set(g, s.path[d]), d++) : u.set(g, null);\n }\n for (let h = 0; h < a.length; h++) {\n const g = a[h], f = g.tagName.toLowerCase();\n if (h < a.length - 1) {\n const b = u.get(g) || null, S = this.disambiguateParent(g, f, b, c, n);\n c.push(S);\n continue;\n }\n const m = this.buildNodeSelector(\n s.target.tag,\n s.target.semantics,\n { excludeClasses: !0 }\n // KEY: no classes on target\n ), p = g.parentElement;\n p && [\"td\", \"th\", \"tr\", \"thead\", \"tbody\", \"tfoot\"].includes(f) && Array.from(p.children).filter(\n (S) => S.tagName.toLowerCase() === f\n ).length > 1 ? c.push(`${m}${this.getNthSelector(g, f)}`) : c.push(m);\n }\n const l = c.join(\" > \");\n return this.isUnique(l, n) ? l : null;\n },\n // ============================================================\n // Strategy 2: anchor parent[attrs|class|nth] target[attrs_only]\n // Descendant combinator (space) - more flexible\n // Parents: disambiguated using attrs > stable class > nth-of-type\n // Target: ONLY attributes, NO classes\n // ============================================================\n () => {\n const u = [this.buildNodeSelector(s.anchor.tag, s.anchor.semantics)];\n for (let h = 0; h < a.length - 1; h++) {\n const f = a[h].tagName.toLowerCase(), m = s.path[h] || null, p = u.join(\" \") + \" \" + f;\n if (this.querySelectorSafe(p, n).length > 1) {\n if (m?.semantics?.attributes) {\n const C = this.buildNodeSelector(f, m.semantics, {\n excludeClasses: !0\n }), A = u.join(\" \") + \" \" + C;\n if (this.querySelectorSafe(A, n).length === 1 || this.querySelectorSafe(A + \" \" + s.target.tag, n).length === 1) {\n u.push(C);\n continue;\n }\n }\n if (m?.semantics?.classes) {\n const C = M(m.semantics.classes);\n if (C.length > 0) {\n const A = `${f}.${this.escapeCSS(C[0])}`, v = u.join(\" \") + \" \" + A;\n if (this.querySelectorSafe(v, n).length === 1 || this.querySelectorSafe(v + \" \" + s.target.tag, n).length === 1) {\n u.push(A);\n continue;\n }\n }\n }\n const S = a[h], E = S.parentElement;\n if (E && Array.from(E.children).filter(\n (A) => A.tagName.toLowerCase() === f\n ).length > 1) {\n u.push(`${f}${this.getNthSelector(S, f)}`);\n continue;\n }\n }\n u.push(f);\n }\n const d = this.buildNodeSelector(\n s.target.tag,\n s.target.semantics,\n { excludeClasses: !0 }\n // KEY: no classes on target\n );\n u.push(d);\n const l = u.join(\" \");\n return this.isUnique(l, n) ? l : null;\n },\n // ============================================================\n // Strategy 3: anchor path target[attrs + 1_stable_class]\n // Add ONE stable class to target (must be semantic, NOT utility)\n // Only use this if attrs alone are not sufficient\n // ============================================================\n () => {\n const c = this.buildNodeSelector(s.anchor.tag, s.anchor.semantics), u = [];\n for (const g of s.path)\n u.push(g.tag);\n if (M(s.target.semantics.classes ?? []).length === 0)\n return null;\n const l = this.buildNodeSelector(\n s.target.tag,\n s.target.semantics,\n { maxClasses: 1 }\n // KEY: ONE stable class only\n ), h = [c, ...u.slice(0, -1), l].join(\" \");\n return this.isUnique(h, n) ? h : null;\n },\n // ============================================================\n // Strategy 4: anchor path target[attrs]:nth-of-type(N)\n // Last resort - add nth-of-type to target\n // Only use when all other strategies fail\n // ============================================================\n () => {\n const c = this.buildNodeSelector(s.anchor.tag, s.anchor.semantics), u = [];\n for (const m of s.path)\n u.push(m.tag);\n const d = a[a.length - 1], l = d.parentElement;\n if (!l || Array.from(l.children).filter(\n (m) => m.tagName.toLowerCase() === s.target.tag\n ).length <= 1) return null;\n const g = this.buildNodeSelector(\n s.target.tag,\n s.target.semantics,\n { excludeClasses: !0 }\n // No classes, just attrs + nth\n ) + this.getNthSelector(d, s.target.tag), f = [c, ...u.slice(0, -1), g].join(\" \");\n return this.isUnique(f, n) ? f : null;\n }\n ];\n for (const c of o) {\n const u = c();\n if (u) return u;\n }\n return null;\n }\n /**\n * Builds a minimal selector for a DOM element\n * @param element The DOM element to create a selector for\n * @returns A minimal CSS selector for the element\n */\n buildElementSelector(t) {\n const e = t.tagName.toLowerCase();\n let s = e;\n if (t.id && !P(t.id))\n return `${e}#${this.escapeCSS(t.id)}`;\n const n = Array.from(t.classList), a = M(n);\n a.length > 0 && (s += a.slice(0, 2).map((o) => `.${this.escapeCSS(o)}`).join(\"\"));\n const i = t.getAttribute(\"role\");\n return i && (s += `[role=\"${this.escapeAttr(i)}\"]`), s;\n }\n /**\n * Safe querySelectorAll that doesn't throw\n */\n querySelectorSafe(t, e) {\n try {\n return Array.from(e.querySelectorAll(t));\n } catch {\n return [];\n }\n }\n /**\n * Finds element by matching text content\n * Returns the matching element (used with getNthSelector for table-aware positioning)\n */\n findNthElementByText(t, e, s) {\n const n = this.querySelectorSafe(t, s);\n if (n.length <= 1) return null;\n if (e.text) {\n const a = e.text.normalized;\n for (const i of n) {\n const o = i.textContent?.trim() || \"\";\n if (o === a || o.includes(a) || a.includes(o))\n return i;\n }\n }\n return null;\n }\n /**\n * Checks if selector matches exactly one element\n */\n isUnique(t, e) {\n try {\n return e.querySelectorAll(t).length === 1;\n } catch {\n return !1;\n }\n }\n /**\n * Gets nth-of-type index for an element\n */\n getNthOfTypeIndex(t, e) {\n const s = t.parentElement;\n if (!s) return null;\n const a = Array.from(s.children).filter((i) => i.tagName.toLowerCase() === e).indexOf(t);\n return a !== -1 ? a + 1 : null;\n }\n /**\n * FIX 2: Ensures anchor selector is unique in the document\n * Priority order: tag → tag.class → tag[attr] → tag:nth-of-type(N)\n * @param eid - Element Identity with anchor information\n * @param root - Root element for uniqueness check\n * @returns Unique selector for anchor\n */\n ensureUniqueAnchor(t, e) {\n const s = t.anchor.tag, n = t.anchor.semantics;\n if (this.isUnique(s, e))\n return s;\n if (n.classes && n.classes.length > 0) {\n const i = M(n.classes);\n if (i.length > 0) {\n const o = `${s}.${this.escapeCSS(i[0])}`;\n if (this.isUnique(o, e))\n return o;\n }\n }\n if (n.attributes) {\n const i = this.getSortedAttributes(n.attributes);\n for (const { name: o, value: c } of i) {\n const u = o === \"href\" || o === \"src\" ? D(o, c) : c;\n if (u) {\n const d = `${s}[${o}=\"${this.escapeAttr(u)}\"]`;\n if (this.isUnique(d, e))\n return d;\n }\n }\n }\n if (t.anchor.nthChild !== void 0) {\n const i = `${s}:nth-child(${t.anchor.nthChild})`;\n if (this.isUnique(i, e))\n return i;\n }\n const a = Array.from(e.querySelectorAll(s));\n if (a.length > 1) {\n const i = this.findElementBySemantics(a, n);\n if (i) {\n const o = this.getNthOfTypeIndex(i, s);\n if (o)\n return `${s}:nth-of-type(${o})`;\n }\n }\n return s;\n }\n /**\n * FIX 2: Finds element by matching semantics\n * @param elements - Array of candidate elements\n * @param semantics - Semantics to match against\n * @returns Matching element or null\n */\n findElementBySemantics(t, e) {\n return e.classes && e.classes.length > 0 || e.attributes && Object.keys(e.attributes).length > 0 || e.text ? t.find((n) => {\n if (e.classes && e.classes.length > 0 && e.classes.every((i) => n.classList.contains(i)) || e.attributes && Object.entries(e.attributes).every(\n ([i, o]) => n.getAttribute(i) === o\n ))\n return !0;\n if (e.text) {\n const a = n.textContent?.trim() || \"\", i = e.text.normalized;\n if (a.includes(i) || i.includes(a))\n return !0;\n }\n return !1;\n }) || null : t.length > 0 ? t[0] : null;\n }\n /**\n * FIX 3: Gets nth selector - nth-child for tables, nth-of-type for others\n * This method is now ACTIVELY INTEGRATED in selector generation logic\n * to ensure table elements use position-specific nth-child selectors\n * @param element - Element to get selector for\n * @param tag - Tag name\n * @returns nth selector string (e.g., \":nth-child(2)\" or \":nth-of-type(2)\")\n */\n getNthSelector(t, e) {\n const s = t.parentElement;\n if (!s) return \"\";\n const n = Array.from(s.children), a = n.indexOf(t) + 1;\n return [\"tr\", \"td\", \"th\", \"thead\", \"tbody\", \"tfoot\"].includes(e) ? `:nth-child(${a})` : `:nth-of-type(${n.filter((c) => c.tagName.toLowerCase() === e).indexOf(t) + 1})`;\n }\n /**\n * Gets attribute priority for sorting\n * @param attrName - Attribute name\n * @returns Priority number (higher = more priority)\n */\n getAttributePriority(t) {\n return w[t] !== void 0 ? w[t] : t.startsWith(\"data-\") ? w[\"data-*\"] : t.startsWith(\"aria-\") ? w[\"aria-*\"] : 0;\n }\n /**\n * Checks if attribute should be ignored\n * @param attrName - Attribute name\n * @returns True if should be ignored\n */\n shouldIgnoreAttribute(t) {\n return !!(V.has(t) || t.startsWith(\"on\") || t.startsWith(\"ng-\") || t.startsWith(\"_ng\") || t.startsWith(\"data-reactid\") || t.startsWith(\"data-react\") || t.startsWith(\"data-v-\"));\n }\n /**\n * Gets attributes sorted by priority\n * @param attributes - Attributes object\n * @returns Sorted array of attributes with priority\n */\n getSortedAttributes(t) {\n return Object.entries(t).filter(([e]) => !this.shouldIgnoreAttribute(e)).filter(\n ([e, s]) => !Q.has(e) || !Y(s)\n ).map(([e, s]) => ({\n name: e,\n value: s,\n priority: this.getAttributePriority(e)\n })).filter((e) => e.priority > 0).sort((e, s) => s.priority - e.priority);\n }\n /**\n * Builds selector for a single node\n * Priority: ID → semantic attributes → role → classes\n */\n buildNodeSelector(t, e, s) {\n let n = t;\n if (e.id)\n return n += `#${this.escapeCSS(e.id)}`, n;\n if (e.attributes) {\n const a = this.getSortedAttributes(e.attributes);\n for (const { name: i, value: o } of a)\n i === \"href\" || i === \"src\" || o && (n += `[${i}=\"${this.escapeAttr(o)}\"]`);\n }\n if (e.role && !e.attributes?.role && (n += `[role=\"${this.escapeAttr(e.role)}\"]`), !s?.excludeClasses && e.classes && e.classes.length > 0) {\n const a = M(e.classes), i = s?.maxClasses !== void 0 ? a.slice(0, s.maxClasses) : a;\n n += i.map((o) => `.${this.escapeCSS(o)}`).join(\"\");\n }\n return n;\n }\n /**\n * Escapes special characters for CSS selector\n */\n escapeCSS(t) {\n let e = t;\n return e.startsWith(\"-\") && (e = \"\\\\-\" + e.slice(1)), e = e.replace(/([!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~])/g, \"\\\\$1\"), e;\n }\n /**\n * Escapes quotes for attribute values\n */\n escapeAttr(t) {\n return t.replace(/\"/g, '\\\\\"').replace(/\\\\/g, \"\\\\\\\\\");\n }\n /**\n * Checks if element tag is an SVG child element\n * @param tag - Element tag name\n * @returns True if element is an SVG child\n */\n isSvgChildElement(t) {\n return pt.includes(t);\n }\n /**\n * Builds CSS selector for elements inside <head>.\n * Uses child combinator (>) for strict structure: html > head > ... > target\n * @param eid - Element Identity with anchor=html and path[0]=head\n * @param options - Optional uniqueness control settings\n * @returns CSS selector string or BuildSelectorResult\n * @remarks\n * This method handles the special case where elements are inside <head>.\n * The selector always uses child combinators for strict parent-child relationships.\n * @example\n * For <html><head><meta name=\"description\"></head></html>\n * Returns: \"html > head > meta[name='description']\"\n */\n buildHeadSelector(t, e) {\n const s = [\"html\"];\n for (const o of t.path) {\n let c = this.buildNodeSelector(o.tag, o.semantics);\n o.nthChild !== void 0 && (c += `:nth-child(${o.nthChild})`), s.push(c);\n }\n let n = this.buildNodeSelector(t.target.tag, t.target.semantics);\n t.target.nthChild !== void 0 && (n += `:nth-child(${t.target.nthChild})`), s.push(n);\n const a = s.join(\" > \");\n if (!e?.ensureUnique)\n return a;\n const i = this.isUnique(a, e.root ?? document);\n return {\n selector: a,\n isUnique: i,\n usedNthOfType: a.includes(\":nth-\"),\n extraClassesAdded: 0\n };\n }\n}\nfunction rt(r, t) {\n if (!r) return r;\n const e = Jt(t);\n try {\n if (Xt(r) || r.startsWith(\"//\") || Kt(r))\n return r;\n const s = new URL(r, e);\n if (!e)\n return r;\n const n = new URL(e);\n if (s.origin === n.origin) {\n let a = s.pathname;\n return s.search && (a += s.search), s.hash && (a += s.hash), a;\n }\n return r;\n } catch {\n return r;\n }\n}\nfunction Xt(r) {\n return !r.startsWith(\"http://\") && !r.startsWith(\"https://\") && !r.startsWith(\"//\");\n}\nfunction Kt(r) {\n return [\"javascript:\", \"mailto:\", \"tel:\", \"data:\", \"blob:\", \"file:\"].some((e) => r.startsWith(e));\n}\nfunction Jt(r) {\n if (r)\n return r;\n if (typeof window < \"u\" && window.location && window.location.href)\n return window.location.href;\n}\nfunction nt(r) {\n if (!r || typeof r != \"string\")\n return \"\";\n if (r.startsWith(\"javascript:\") || r.startsWith(\"mailto:\") || r.startsWith(\"tel:\") || r.startsWith(\"data:\") || r.startsWith(\"blob:\") || r.startsWith(\"/\") || r.startsWith(\"./\") || r.startsWith(\"../\"))\n return r;\n try {\n const t = new URL(r);\n return t.pathname + t.search + t.hash;\n } catch {\n return r;\n }\n}\nclass te {\n /**\n * Filters elements that match the semantics\n * @param elements - Candidate elements\n * @param semantics - Target semantics to match\n * @param documentUrl - Optional document base URL for URL normalization (iframe context)\n * @param matchUrlsByPathOnly - Optional flag to match URLs by pathname only (ignoring origin)\n * @returns Filtered elements that match\n */\n match(t, e, s, n) {\n return t.filter(\n (a) => this.matchElement(a, e, s, n)\n );\n }\n /**\n * Checks if a single element matches the semantics\n * @param documentUrl - Optional document base URL for URL normalization (iframe context)\n * @param matchUrlsByPathOnly - Optional flag to match URLs by pathname only (ignoring origin)\n */\n matchElement(t, e, s, n) {\n return !(e.text && !this.matchText(t, e.text) || e.attributes && !this.matchAttributes(t, e.attributes, s, n) || e.svg && !this.matchSvgFingerprint(t, e.svg));\n }\n /**\n * Matches text content\n * Prioritizes direct text nodes, but falls back to full textContent if no direct text\n */\n matchText(t, e) {\n const a = Array.from(t.childNodes).filter(\n (o) => o.nodeType === Node.TEXT_NODE\n ).map((o) => o.textContent?.trim() ?? \"\").join(\" \") || (t.textContent?.trim() ?? \"\");\n if (!a) return !1;\n const i = F(a);\n return e.matchMode === \"partial\" ? i.includes(e.normalized) : i === e.normalized;\n }\n /**\n * Lenient text matching - uses partial matching instead of exact\n * Used as fallback when exact matching fails\n */\n matchTextLenient(t, e) {\n const a = Array.from(t.childNodes).filter(\n (o) => o.nodeType === Node.TEXT_NODE\n ).map((o) => o.textContent?.trim() ?? \"\").join(\" \") || (t.textContent?.trim() ?? \"\");\n if (!a) return !1;\n const i = F(a);\n return i.includes(e.normalized) || e.normalized.includes(i);\n }\n /**\n * Checks if a single element matches the semantics with lenient text matching\n * @param documentUrl - Optional document base URL for URL normalization (iframe context)\n * @param matchUrlsByPathOnly - Optional flag to match URLs by pathname only (ignoring origin)\n */\n matchElementLenient(t, e, s, n) {\n return !(e.text && !this.matchTextLenient(t, e.text) || e.attributes && !this.matchAttributes(t, e.attributes, s, n) || e.svg && !this.matchSvgFingerprint(t, e.svg));\n }\n /**\n * Filters elements with lenient matching (exported for use in resolver)\n * @param documentUrl - Optional document base URL for URL normalization (iframe context)\n * @param matchUrlsByPathOnly - Optional flag to match URLs by pathname only (ignoring origin)\n */\n matchLenient(t, e, s, n) {\n return t.filter(\n (a) => this.matchElementLenient(a, e, s, n)\n );\n }\n /**\n * Matches attributes with URL normalization for href/src\n * @param documentUrl - Optional document base URL for URL normalization (iframe context)\n * @param matchUrlsByPathOnly - Optional flag to match URLs by pathname only (ignoring origin, default: true)\n */\n matchAttributes(t, e, s, n = !0) {\n for (const [a, i] of Object.entries(e)) {\n const o = t.getAttribute(a);\n if (a === \"href\" || a === \"src\")\n if (n) {\n const c = D(a, i, {\n preserveQueryForAbsolute: !1\n }), u = D(a, o || \"\", {\n preserveQueryForAbsolute: !1\n }), d = nt(c), l = nt(u);\n if (d !== l)\n return !1;\n } else {\n const c = rt(\n D(a, i, { preserveQueryForAbsolute: !1 }),\n s\n ), u = rt(\n D(a, o || \"\", { preserveQueryForAbsolute: !1 }),\n s\n );\n if (c !== u)\n return !1;\n }\n else if (o !== i)\n return !1;\n }\n return !0;\n }\n /**\n * Matches SVG fingerprint\n */\n matchSvgFingerprint(t, e) {\n if (t.tagName.toLowerCase() !== e.shape)\n return !1;\n if (e.dHash && e.shape === \"path\") {\n const s = t.getAttribute(\"d\");\n if (s && this.computePathHash(s) !== e.dHash)\n return !1;\n }\n return !(e.geomHash && [\"circle\", \"rect\", \"ellipse\", \"line\"].includes(e.shape) && this.computeGeomHash(t, e.shape) !== e.geomHash || e.titleText && t.querySelector(\"title\")?.textContent?.trim() !== e.titleText);\n }\n /**\n * Computes simple path hash (matching SvgFingerprinter)\n */\n computePathHash(t) {\n const n = (t.match(/[MLHVCSQTAZ][^MLHVCSQTAZ]*/gi) ?? []).slice(0, 5).map((a) => a.trim().replace(/(-?\\d+\\.?\\d*)/g, (i) => parseFloat(i).toFixed(1))).join(\" \");\n return this.simpleHash(n);\n }\n /**\n * Computes geometry hash for non-path shapes (matching SvgFingerprinter)\n */\n computeGeomHash(t, e) {\n const s = [];\n switch (e) {\n case \"circle\":\n s.push(`r=${t.getAttribute(\"r\") ?? \"0\"}`);\n break;\n case \"rect\": {\n const n = parseFloat(t.getAttribute(\"width\") ?? \"0\"), a = parseFloat(t.getAttribute(\"height\") ?? \"0\");\n n > 0 && a > 0 && s.push(`ratio=${(n / a).toFixed(2)}`);\n break;\n }\n case \"ellipse\": {\n const n = parseFloat(t.getAttribute(\"rx\") ?? \"0\"), a = parseFloat(t.getAttribute(\"ry\") ?? \"0\");\n n > 0 && a > 0 && s.push(`ratio=${(n / a).toFixed(2)}`);\n break;\n }\n case \"line\": {\n const n = parseFloat(t.getAttribute(\"x1\") ?? \"0\"), a = parseFloat(t.getAttribute(\"y1\") ?? \"0\"), i = parseFloat(t.getAttribute(\"x2\") ?? \"0\"), o = parseFloat(t.getAttribute(\"y2\") ?? \"0\"), c = Math.atan2(o - a, i - n);\n s.push(`angle=${c.toFixed(2)}`);\n break;\n }\n }\n return this.simpleHash(s.join(\";\"));\n }\n /**\n * Simple hash function (matching SvgFingerprinter)\n */\n simpleHash(t) {\n let e = 0;\n for (let s = 0; s < t.length; s++) {\n const n = t.charCodeAt(s);\n e = (e << 5) - e + n, e = e & e;\n }\n return Math.abs(e).toString(16).padStart(8, \"0\");\n }\n}\nclass ee {\n /**\n * Applies a single constraint to candidates\n * @param candidates - Current candidate elements\n * @param constraint - Constraint to apply\n * @returns Filtered candidates\n */\n applyConstraint(t, e) {\n switch (e.type) {\n case \"text-proximity\":\n return this.applyTextProximity(\n t,\n e.params\n );\n case \"position\":\n return this.applyPosition(t, e.params);\n default:\n return t;\n }\n }\n /**\n * Applies text proximity constraint using Levenshtein distance\n */\n applyTextProximity(t, e) {\n return t.filter((s) => {\n const n = s.textContent?.trim() ?? \"\";\n return this.levenshteinDistance(n, e.reference) <= e.maxDistance;\n });\n }\n /**\n * Applies position constraint\n */\n applyPosition(t, e) {\n if (t.length <= 1) return t;\n switch (e.strategy) {\n case \"first-in-dom\":\n return [t[0]];\n case \"top-most\":\n return [this.getTopMost(t)];\n case \"left-most\":\n return [this.getLeftMost(t)];\n default:\n return [t[0]];\n }\n }\n /**\n * Gets the top-most element by bounding rect\n */\n getTopMost(t) {\n return t.reduce((e, s) => {\n try {\n const n = e.getBoundingClientRect();\n return s.getBoundingClientRect().top < n.top ? s : e;\n } catch {\n return e;\n }\n });\n }\n /**\n * Gets the left-most element by bounding rect\n */\n getLeftMost(t) {\n return t.reduce((e, s) => {\n try {\n const n = e.getBoundingClientRect();\n return s.getBoundingClientRect().left < n.left ? s : e;\n } catch {\n return e;\n }\n });\n }\n /**\n * Calculates Levenshtein distance between two strings\n */\n levenshteinDistance(t, e) {\n if (t === e) return 0;\n if (t.length === 0) return e.length;\n if (e.length === 0) return t.length;\n const s = Array.from({ length: e.length + 1 }, (n, a) => a);\n for (let n = 1; n <= t.length; n++) {\n let a = n;\n for (let i = 1; i <= e.length; i++) {\n const o = t[n - 1] === e[i - 1] ? s[i - 1] : Math.min(s[i - 1], a, s[i]) + 1;\n s[i - 1] = a, a = o;\n }\n s[e.length] = a;\n }\n return s[e.length];\n }\n}\nclass se {\n constructor() {\n this.cssGenerator = new ot();\n }\n /**\n * Handles fallback when resolution fails\n * @param eid - Element Identity being resolved\n * @param dom - Document or element to search in\n * @returns Fallback resolution result\n */\n handleFallback(t, e) {\n const { onMissing: s } = t.fallback;\n switch (s) {\n case \"anchor-only\":\n return this.fallbackToAnchor(t, e);\n case \"strict\":\n return {\n status: \"error\",\n elements: [],\n warnings: [\"Element not found (strict mode)\"],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"strict-not-found\" }\n };\n default:\n return {\n status: \"error\",\n elements: [],\n warnings: [\"Element not found\"],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"not-found\" }\n };\n }\n }\n /**\n * Attempts to find and return the anchor element as fallback\n */\n fallbackToAnchor(t, e) {\n const s = this.cssGenerator.buildAnchorSelector(t), n = e instanceof Document ? e : e.ownerDocument ?? e;\n try {\n const a = n.querySelector(s);\n if (a)\n return {\n status: \"degraded-fallback\",\n elements: [a],\n warnings: [\"Target not found, returning anchor\"],\n confidence: t.meta.confidence * 0.3,\n meta: { degraded: !0, degradationReason: \"anchor-fallback\" }\n };\n } catch (a) {\n const i = a instanceof Error ? a.message : \"Unknown selector error\";\n return {\n status: \"error\",\n elements: [],\n warnings: [`Invalid anchor selector: ${i}`],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"invalid-anchor-selector\" }\n };\n }\n return {\n status: \"error\",\n elements: [],\n warnings: [\"Anchor also not found\"],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"anchor-not-found\" }\n };\n }\n /**\n * Handles ambiguous results (multiple matches)\n * @param elements - All matching elements\n * @param eid - Original Element Identity\n * @returns Resolution result based on fallback rules\n */\n handleAmbiguous(t, e) {\n const { onMultiple: s } = e.fallback;\n switch (s) {\n case \"first\":\n return {\n status: \"success\",\n elements: [t[0]],\n warnings: [\"Multiple matches, returning first\"],\n confidence: e.meta.confidence * 0.7,\n meta: { degraded: !0, degradationReason: \"first-of-multiple\" }\n };\n case \"best-score\":\n return this.selectBestScoring(t, e);\n default:\n return {\n status: \"ambiguous\",\n elements: t,\n warnings: [`Multiple matches: ${t.length}`],\n confidence: e.meta.confidence * 0.5,\n meta: { degraded: !0, degradationReason: \"multiple-matches\" }\n };\n }\n }\n /**\n * Selects the best-scoring element from candidates\n * Re-scores each element based on semantic match quality\n */\n selectBestScoring(t, e) {\n const s = e.target.semantics;\n let n = t[0], a = -1;\n for (const i of t) {\n const o = this.scoreElementMatch(i, s);\n o > a && (a = o, n = i);\n }\n return {\n status: \"success\",\n elements: [n],\n warnings: [`Multiple matches (${t.length}), selected best-scoring element`],\n confidence: e.meta.confidence * (0.7 + a * 0.2),\n meta: { degraded: !0, degradationReason: \"best-of-multiple\" }\n };\n }\n /**\n * Scores how well an element matches the target semantics\n * @returns Score from 0 to 1\n */\n scoreElementMatch(t, e) {\n let s = 0, n = 0;\n if (e.id && (n += 0.3, t.id === e.id && (s += 0.3)), e.classes && e.classes.length > 0) {\n n += 0.25;\n const a = Array.from(t.classList), i = e.classes.filter(\n (o) => a.includes(o)\n ).length;\n s += i / e.classes.length * 0.25;\n }\n if (e.attributes) {\n const a = Object.entries(e.attributes);\n if (a.length > 0) {\n n += 0.2;\n let i = 0;\n for (const [o, c] of a)\n t.getAttribute(o) === c && i++;\n s += i / a.length * 0.2;\n }\n }\n if (e.role && (n += 0.15, t.getAttribute(\"role\") === e.role && (s += 0.15)), e.text) {\n n += 0.1;\n const a = F(t.textContent);\n a === e.text.normalized ? s += 0.1 : a.includes(e.text.normalized) && (s += 0.05);\n }\n return n > 0 ? s / n : 0;\n }\n}\nfunction re(r, t, e = {}) {\n const s = { ...yt, ...e };\n let n;\n try {\n t instanceof Document ? n = t : n = k(t);\n } catch (p) {\n const b = p instanceof Error ? p.message : \"Unknown error\";\n return {\n status: \"error\",\n elements: [],\n warnings: [\"Failed to resolve document context\", b],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"invalid-context\" }\n };\n }\n if (s.root) {\n const p = s.root instanceof Document ? s.root : s.root.ownerDocument;\n p && p !== n && console.warn(\n \"options.root does not match dom parameter document. Using document from dom parameter. This may indicate a cross-document operation issue.\"\n );\n }\n const a = s.documentUrl ?? n.defaultView?.location?.href, i = s.matchUrlsByPathOnly ?? !0, o = new ot(), c = new te(), u = new ee(), d = new se(), l = o.buildSelector(r, {\n ensureUnique: !1,\n root: n\n });\n let h;\n try {\n h = Array.from(n.querySelectorAll(l));\n } catch (p) {\n const b = p instanceof Error ? p.message : \"Unknown selector error\";\n return {\n status: \"error\",\n elements: [],\n warnings: [`Invalid CSS selector: ${l}`, `Error: ${b}`],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"invalid-selector\" }\n };\n }\n const g = h.length;\n h.length > s.maxCandidates && (h = h.slice(0, s.maxCandidates));\n const f = c.match(\n h,\n r.target.semantics,\n a,\n i\n );\n if (f.length === 0 && g > 0 && r.target.semantics.text !== void 0) {\n const p = c.matchLenient(\n h,\n r.target.semantics,\n a,\n i\n );\n if (p.length > 0) {\n if (p.length === 1)\n return {\n status: \"success\",\n elements: p,\n warnings: [\"Used relaxed text matching due to exact match failure\"],\n confidence: r.meta.confidence * 0.8,\n // Slight confidence penalty\n meta: { degraded: !0, degradationReason: \"relaxed-text-matching\" }\n };\n const b = at(\n p,\n r,\n u,\n d,\n n,\n s,\n 1\n // No penalty here - lenient penalty applied to final result\n );\n if (b.elements.length > 0)\n return {\n ...b,\n warnings: [...b.warnings, \"Used relaxed text matching\"],\n confidence: b.confidence * 0.8\n // Apply lenient matching penalty (20% degradation)\n };\n }\n }\n if (f.length === 1)\n return {\n status: \"success\",\n elements: f,\n warnings: [],\n confidence: r.meta.confidence,\n meta: { degraded: !1 }\n };\n if (f.length === 0) {\n const p = g > 0 ? `CSS selector found ${g} candidates but semantic filtering rejected all. This may indicate text content mismatch.` : \"CSS selector found no candidates\";\n if (s.enableFallback) {\n const b = d.handleFallback(r, n);\n return {\n ...b,\n warnings: [...b.warnings, p]\n };\n }\n return {\n status: \"error\",\n elements: [],\n warnings: [\"No matching elements found\", p],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"not-found\" }\n };\n }\n return at(\n f,\n r,\n u,\n d,\n n,\n s,\n 1\n // no confidence penalty for exact match path\n );\n}\nfunction ne(r) {\n return [...r].sort((t, e) => e.priority - t.priority);\n}\nfunction at(r, t, e, s, n, a, i) {\n let o = r;\n const c = ne(t.constraints);\n for (const d of c) {\n if (o = e.applyConstraint(o, d), o.length === 1)\n return {\n status: \"success\",\n elements: o,\n warnings: [],\n confidence: t.meta.confidence * 0.9 * i,\n meta: { degraded: !1 }\n };\n if (o.length === 0)\n return a.enableFallback ? s.handleFallback(t, n) : {\n status: \"error\",\n elements: [],\n warnings: [\"Constraints eliminated all candidates\"],\n confidence: 0,\n meta: { degraded: !0, degradationReason: \"over-constrained\" }\n };\n }\n if (a.strictMode)\n return {\n status: \"ambiguous\",\n elements: o,\n warnings: [`Non-unique resolution: ${o.length} matches`],\n confidence: t.meta.confidence * 0.7 * i,\n meta: { degraded: !0, degradationReason: \"ambiguous\" }\n };\n const u = s.handleAmbiguous(o, t);\n return {\n ...u,\n confidence: u.confidence * i\n };\n}\nfunction Se(r) {\n const t = [], e = [];\n if (r.version ? r.version !== \"1.0\" && e.push(`Unknown version: ${r.version}`) : t.push(\"Missing version field\"), r.anchor ? (r.anchor.tag || t.push(\"Anchor missing tag\"), typeof r.anchor.score != \"number\" && t.push(\"Anchor missing score\"), r.anchor.semantics || t.push(\"Anchor missing semantics\")) : t.push(\"Missing anchor field\"), r.target ? (r.target.tag || t.push(\"Target missing tag\"), typeof r.target.score != \"number\" && t.push(\"Target missing score\"), r.target.semantics || t.push(\"Target missing semantics\")) : t.push(\"Missing target field\"), !Array.isArray(r.path))\n t.push(\"Path must be an array\");\n else\n for (let s = 0; s < r.path.length; s++) {\n const n = r.path[s];\n n.tag || t.push(`Path node ${s} missing tag`), n.semantics || t.push(`Path node ${s} missing semantics`);\n }\n return r.meta ? (typeof r.meta.confidence != \"number\" && e.push(\"Missing confidence score\"), r.meta.generatedAt || e.push(\"Missing generatedAt timestamp\")) : t.push(\"Missing meta field\"), Array.isArray(r.constraints) || e.push(\"Constraints should be an array\"), r.fallback || e.push(\"Missing fallback rules\"), {\n valid: t.length === 0,\n errors: t,\n warnings: e\n };\n}\nfunction Ae(r) {\n if (!r || typeof r != \"object\") return !1;\n const t = r;\n return typeof t.version == \"string\" && typeof t.anchor == \"object\" && Array.isArray(t.path) && typeof t.target == \"object\";\n}\nconst ct = {\n maxClasses: 2,\n maxAttributes: 5,\n includeText: !0,\n maxTextLength: 50,\n simplifyTarget: !0,\n includeConstraints: !0\n};\nfunction it(r) {\n return r === \"id\" ? 101 : w[r] !== void 0 ? w[r] : r.startsWith(\"data-\") ? w[\"data-*\"] : r.startsWith(\"aria-\") ? w[\"aria-*\"] : 0;\n}\nfunction ae(r) {\n return [\"id\", \"data-testid\", \"data-qa\", \"data-cy\", \"href\", \"text\", \"role\"].includes(r);\n}\nfunction ie(r) {\n return !!(/@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/.test(r) || /(\\+?\\d{1,3}[-.\\s]?)?\\(?\\d{3}\\)?[-.\\s]?\\d{3}[-.\\s]?\\d{4}/.test(r) || /\\d{4}[-\\s]?\\d{4}[-\\s]?\\d{4}[-\\s]?\\d{4}/.test(r));\n}\nfunction oe(r, t) {\n const e = { ...ct, ...t }, s = `v${r.version}`, n = j(r.anchor, !1, e), a = r.path.length > 0 ? r.path.map((c) => j(c, !1, e)).join(\" > \") + \" > \" : \"\", i = j(r.target, !0, e), o = e.includeConstraints ? le(r) : \"\";\n return `${s}: ${n} :: ${a}${i}${o}`;\n}\nfunction ce(r) {\n r = r.trim();\n const t = r.match(/^v(\\d+(?:\\.\\d+)?)\\s*:\\s*/);\n if (!t)\n throw new Error('Invalid SEQL Selector: missing version prefix (expected \"v1:\")');\n const e = t[1];\n if (e !== \"1.0\" && e !== \"1\")\n throw new Error(`Unsupported SEQL Selector version: v${e} (only v1.0 is supported)`);\n let s = r.slice(t[0].length);\n const n = s.match(/^(.+?)\\s*::\\s*/);\n if (!n)\n throw new Error('Invalid SEQL Selector: missing anchor separator \"::\"');\n const a = n[1].trim();\n s = s.slice(n[0].length);\n const i = s.match(/\\s*\\{([^}]+)\\}\\s*$/);\n let o = \"\";\n i && (o = i[1], s = s.slice(0, i.index));\n const c = s.split(/\\s*>\\s*/).map((p) => p.trim()).filter((p) => p);\n if (c.length === 0)\n throw new Error(\"Invalid SEQL Selector: missing target node\");\n const u = c[c.length - 1], d = c.slice(0, -1), l = W(a, !0), h = d.map((p) => W(p, !1)), g = W(u, !1), f = he(o);\n return {\n version: \"1.0\",\n anchor: l,\n path: h,\n target: g,\n constraints: f,\n fallback: {\n onMultiple: \"best-score\",\n onMissing: \"anchor-only\",\n maxDepth: 10\n },\n meta: {\n confidence: 0.7,\n generatedAt: (/* @__PURE__ */ new Date()).toISOString(),\n generator: \"seql-parser@1.0\",\n source: \"seql-string\",\n degraded: !1\n }\n };\n}\nfunction j(r, t = !1, e = ct) {\n const { tag: s, semantics: n } = r;\n let a = s;\n const i = [], o = { ...n.attributes };\n n.id && (o.id = n.id), n.role && !o.role && (o.role = n.role);\n const c = Object.entries(o).map(([l, h]) => {\n const g = it(l), f = l === \"href\" || l === \"src\" ? D(l, h) : h;\n return { name: l, value: f, priority: g };\n }).filter((l) => l.name !== \"id\" && l.name !== \"class\" && V.has(l.name) || Q.has(l.name) && Y(l.value) ? !1 : l.priority > 0 || l.name === \"role\" || l.name === \"id\");\n c.sort((l, h) => h.priority - l.priority);\n const u = c.slice(0, e.maxAttributes);\n u.sort((l, h) => l.name.localeCompare(h.name));\n for (const { name: l, value: h } of u)\n i.push(`${l}=\"${B(h)}\"`);\n if (e.includeText && n.text && !ie(n.text.normalized)) {\n const l = n.text.normalized;\n l.length > 0 && l.length <= e.maxTextLength && i.push(`text=\"${B(l)}\"`);\n }\n let d = i;\n if (i.length > 0 && (t && e.simplifyTarget && n.id && (d = i.filter((l) => {\n const h = l.split(\"=\")[0];\n return it(h) >= 60 || h === \"text\" || h === \"id\" || h === \"role\";\n })), d.length > 0 && d.sort((l, h) => l.localeCompare(h))), n.classes && n.classes.length > 0) {\n const l = M(n.classes), h = !!n.id || i.some(\n (f) => f.startsWith(\"href=\") || f.startsWith(\"data-testid=\") || f.startsWith(\"text=\") || f.startsWith(\"role=\")\n );\n if (!(t && e.simplifyTarget && h) && l.length > 0) {\n const f = l.sort().slice(0, e.maxClasses);\n a += f.map((m) => `.${m}`).join(\"\");\n }\n }\n if (d.length > 0 && (a += `[${d.join(\",\")}]`), \"nthChild\" in r && r.nthChild) {\n const l = !!n.id || n.attributes && Object.keys(n.attributes).some(ae);\n t && e.simplifyTarget && l || (a += `#${r.nthChild}`);\n }\n return a;\n}\nfunction le(r) {\n if (!r.constraints || r.constraints.length === 0)\n return \"\";\n const t = [];\n for (const e of r.constraints)\n switch (e.type) {\n case \"uniqueness\":\n t.push(\"unique=true\");\n break;\n case \"position\":\n e.params && e.params.strategy && t.push(`pos=${e.params.strategy}`);\n break;\n case \"text-proximity\":\n if (e.params && e.params.reference) {\n const s = B(String(e.params.reference));\n t.push(`text=\"${s}\"`);\n }\n break;\n }\n return t.length === 0 ? \"\" : ` {${t.join(\",\")}}`;\n}\nfunction W(r, t) {\n let e = r;\n const s = {}, n = e.match(/^([a-z][a-z0-9-]*)/);\n if (!n)\n throw new Error(`Invalid node: missing tag name in \"${r}\"`);\n const a = n[1];\n e = e.slice(a.length);\n const i = [];\n let o;\n for (; o = e.match(/^\\.([a-zA-Z][a-zA-Z0-9-_]*)/); )\n i.push(o[1]), e = e.slice(o[0].length);\n i.length > 0 && (s.classes = i);\n const c = e.match(/^\\[([^\\]]+)\\]/);\n if (c) {\n const l = c[1], h = {}, g = ue(l);\n for (const f of g) {\n const m = f.match(/^([a-z][a-z0-9-]*)(?:=|~=)\"((?:[^\"\\\\]|\\\\.)*)\"/);\n if (m) {\n const [, p, b] = m;\n h[p] = lt(b);\n }\n }\n Object.keys(h).length > 0 && (h.text && (s.text = {\n raw: h.text,\n normalized: h.text\n }, delete h.text), h.id && (s.id = h.id, delete h.id), h.role && (s.role = h.role, delete h.role), Object.keys(h).length > 0 && (s.attributes = h)), e = e.slice(c[0].length);\n }\n let u;\n const d = e.match(/^#(\\d+)/);\n if (d && (u = parseInt(d[1], 10), e = e.slice(d[0].length)), e.trim())\n throw new Error(`Invalid node: unexpected content \"${e}\" in \"${r}\"`);\n return t ? {\n tag: a,\n semantics: s,\n score: 0.7,\n degraded: !1\n } : {\n tag: a,\n semantics: s,\n score: 0.7,\n nthChild: u\n };\n}\nfunction he(r) {\n if (!r.trim())\n return [];\n const t = [], e = r.split(\",\").map((s) => s.trim());\n for (const s of e) {\n const [n, a] = s.split(\"=\").map((i) => i.trim());\n switch (n) {\n case \"unique\":\n a === \"true\" && t.push({\n type: \"uniqueness\",\n params: {\n mode: \"strict\"\n },\n priority: 90\n });\n break;\n case \"pos\":\n t.push({\n type: \"position\",\n params: {\n strategy: a\n },\n priority: 70\n });\n break;\n case \"text\": {\n const i = a.replace(/^\"(.*)\"$/, \"$1\");\n t.push({\n type: \"text-proximity\",\n params: {\n reference: lt(i),\n maxDistance: 5\n },\n priority: 60\n });\n break;\n }\n }\n }\n return t;\n}\nfunction ue(r) {\n const t = [];\n let e = \"\", s = !1;\n for (let n = 0; n < r.length; n++) {\n const a = r[n];\n a === '\"' && (n === 0 || r[n - 1] !== \"\\\\\") ? (s = !s, e += a) : a === \",\" && !s ? (e.trim() && t.push(e.trim()), e = \"\") : e += a;\n }\n return e.trim() && t.push(e.trim()), t;\n}\nfunction B(r) {\n return r.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/>/g, \"\\\\>\").replace(/:/g, \"\\\\:\");\n}\nfunction lt(r) {\n return r.replace(/\\\\\\\\/g, \"\\0\").replace(/\\\\\"/g, '\"').replace(/\\\\>/g, \">\").replace(/\\\\:/g, \":\").replace(/\\x00/g, \"\\\\\");\n}\nfunction xe(r, t, e) {\n const s = X(r, t);\n return s ? oe(s, e) : null;\n}\nfunction Ce(r, t, e) {\n try {\n const s = ce(r), n = {\n ...e,\n root: e?.root || t\n };\n return re(s, t, n).elements || [];\n } catch (s) {\n return console.error(\"Failed to resolve SEQL Selector:\", s), [];\n }\n}\nconst de = /* @__PURE__ */ new Set([\"script\", \"style\", \"noscript\", \"meta\", \"link\", \"head\", \"title\"]);\nfunction G(r) {\n return r.id && !P(r.id) ? 3 : r.hasAttribute(\"role\") || r.hasAttribute(\"aria-label\") || r.hasAttribute(\"aria-labelledby\") || r.hasAttribute(\"data-testid\") || r.hasAttribute(\"data-qa\") || r.hasAttribute(\"data-test\") ? 2 : 1;\n}\nfunction ht(r, t) {\n const e = r.tagName.toLowerCase();\n return !!(de.has(e) || t && G(r) === 1 && ![\n \"form\",\n \"main\",\n \"nav\",\n \"section\",\n \"article\",\n \"footer\",\n \"header\",\n \"button\",\n \"a\",\n \"input\",\n \"label\",\n \"select\",\n \"textarea\"\n ].includes(e));\n}\nfunction ut(r) {\n return [...r].sort((t, e) => {\n const s = G(t);\n return G(e) - s;\n });\n}\nfunction Te(r = {}) {\n const t = performance.now();\n let {\n root: e,\n filter: s = \"*\",\n limit: n = 1 / 0,\n onProgress: a,\n progressInterval: i = 100,\n skipNonSemantic: o = !0,\n generatorOptions: c = {},\n cache: u,\n signal: d\n } = r;\n const l = u ?? Z(), h = { ...c, cache: l };\n let g;\n try {\n if (e)\n e instanceof Document, g = Array.from(e.querySelectorAll(s));\n else if (typeof document < \"u\")\n g = Array.from(document.querySelectorAll(s));\n else\n throw new Error(\"Root element or document is required when document is not available\");\n } catch {\n return {\n results: [],\n failed: [],\n stats: {\n totalElements: 0,\n successful: 0,\n failed: 0,\n skipped: 0,\n totalTimeMs: 0,\n avgTimePerElementMs: 0,\n cacheHitRate: 0\n }\n };\n }\n if (!e) {\n if (g.length === 0)\n throw new Error(\"Root element or document is required when no elements are found\");\n const x = k(g[0]);\n e = x.body || x.documentElement;\n }\n const f = e instanceof Document ? e : k(e);\n g.forEach((x, y) => {\n if (k(x) !== f)\n throw new Error(\n `Batch generation requires all elements from the same document. Element at index ${y} is from a different document. If working with iframes, ensure all elements are from the same iframe's contentDocument.`\n );\n });\n const m = g.filter((x) => !ht(x, o)), b = ut(m).slice(0, n), S = [], E = [];\n let C = 0;\n const A = b.length;\n let v = 0;\n for (let x = 0; x < b.length && !d?.aborted; x++) {\n const y = b[x], q = l.getEID(y);\n if (q)\n S.push({\n element: y,\n eid: q,\n generationTimeMs: 0\n // Cached, no generation time\n });\n else {\n const dt = performance.now();\n try {\n const L = X(y, h), ft = performance.now() - dt;\n L ? S.push({\n element: y,\n eid: L,\n generationTimeMs: ft\n }) : C++;\n } catch (L) {\n E.push({\n element: y,\n error: L instanceof Error ? L.message : String(L)\n });\n }\n }\n a && x - v >= i && (a(x + 1, A), v = x);\n }\n a && a(A, A);\n const H = performance.now() - t, $ = l.getStats(), T = $.eidHits + $.eidMisses + $.selectorHits + $.selectorMisses, R = $.eidHits + $.selectorHits, N = T > 0 ? R / T : 0;\n return {\n results: S,\n failed: E,\n stats: {\n totalElements: A,\n successful: S.length,\n failed: E.length,\n skipped: C,\n totalTimeMs: H,\n avgTimePerElementMs: S.length > 0 ? H / S.length : 0,\n cacheHitRate: N\n }\n };\n}\nfunction Ee(r, t = {}) {\n const e = performance.now(), {\n limit: s = 1 / 0,\n onProgress: n,\n progressInterval: a = 100,\n skipNonSemantic: i = !0,\n generatorOptions: o = {},\n cache: c,\n signal: u\n } = t, d = c ?? Z(), l = { ...o, cache: d }, h = r.filter((T) => !ht(T, i)), f = ut(h).slice(0, s), m = [], p = [];\n let b = 0;\n const S = f.length;\n let E = 0;\n for (let T = 0; T < f.length && !u?.aborted; T++) {\n const R = f[T], N = d.getEID(R);\n if (N)\n m.push({\n element: R,\n eid: N,\n generationTimeMs: 0\n });\n else {\n const x = performance.now();\n try {\n const y = X(R, l), q = performance.now() - x;\n y ? m.push({\n element: R,\n eid: y,\n generationTimeMs: q\n }) : b++;\n } catch (y) {\n p.push({\n element: R,\n error: y instanceof Error ? y.message : String(y)\n });\n }\n }\n n && T - E >= a && (n(T + 1, S), E = T);\n }\n n && n(S, S);\n const C = performance.now() - e, A = d.getStats(), v = A.eidHits + A.eidMisses + A.selectorHits + A.selectorMisses, H = A.eidHits + A.selectorHits, $ = v > 0 ? H / v : 0;\n return {\n results: m,\n failed: p,\n stats: {\n totalElements: S,\n successful: m.length,\n failed: p.length,\n skipped: b,\n totalTimeMs: C,\n avgTimePerElementMs: m.length > 0 ? C / m.length : 0,\n cacheHitRate: $\n }\n };\n}\nexport {\n St as AnchorFinder,\n ee as ConstraintsEvaluator,\n ot as CssGenerator,\n bt as DEFAULT_GENERATOR_OPTIONS,\n yt as DEFAULT_RESOLVER_OPTIONS,\n Bt as EIDCache,\n fe as EID_VERSION,\n se as FallbackHandler,\n ge as MAX_PATH_DEPTH,\n $t as PathBuilder,\n J as ROLE_ANCHOR_VALUES,\n K as SEMANTIC_ANCHOR_TAGS,\n me as SEMANTIC_ATTRIBUTES,\n mt as SEMANTIC_TAGS,\n st as SemanticExtractor,\n te as SemanticsMatcher,\n Ft as SvgFingerprinter,\n jt as calculateConfidence,\n be as calculateElementScore,\n Gt as createEIDCache,\n vt as filterClasses,\n X as generateEID,\n Te as generateEIDBatch,\n Ee as generateEIDForElements,\n xe as generateSEQL,\n pe as getClassScore,\n Z as getGlobalCache,\n Ae as isEID,\n tt as isUtilityClass,\n F as normalizeText,\n ce as parseSEQL,\n ye as resetGlobalCache,\n re as resolve,\n Ce as resolveSEQL,\n oe as stringifySEQL,\n Se as validateEID\n};\n//# sourceMappingURL=seql-js.js.map\n","import type {\n MaskInputOptions,\n SlimDOMOptions,\n MaskTextFn,\n MaskInputFn,\n KeepIframeSrcFn,\n ICanvas,\n DialogAttributes,\n} from './types';\nimport { NodeType } from '@appsurify-testmap/rrweb-types';\nimport type {\n serializedNode,\n serializedNodeWithId,\n serializedElementNodeWithId,\n elementNode,\n attributes,\n mediaAttributes,\n DataURLOptions,\n} from '@appsurify-testmap/rrweb-types';\nimport {\n Mirror,\n is2DCanvasBlank,\n isElement,\n isShadowRoot,\n maskInputValue,\n isNativeShadowDom,\n stringifyStylesheet,\n getInputType,\n toLowerCase,\n extractFileExtension,\n absolutifyURLs,\n markCssSplits,\n isTextVisible,\n isElementVisible,\n isElementInteractive,\n} from \"./utils\";\nimport dom from '@appsurify-testmap/rrweb-utils';\nimport { generateSEQL } from '@whenessel/seql-js';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport type { GeneratorOptions as SEQLGeneratorOptions } from '@whenessel/seql-js';\n\nlet _id = 1;\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\n\nexport const IGNORED_NODE = -2;\n\nexport function genId(): number {\n return _id++;\n}\n\nfunction getValidTagName(element: HTMLElement): Lowercase<string> {\n if (element instanceof HTMLFormElement) {\n return 'form';\n }\n\n const processedTagName = toLowerCase(element.tagName);\n\n if (tagNameRegex.test(processedTagName)) {\n // if the tag name is odd and we cannot extract\n // anything from the string, then we return a\n // generic div\n return 'div';\n }\n\n return processedTagName;\n}\n\nlet canvasService: HTMLCanvasElement | null;\nlet canvasCtx: CanvasRenderingContext2D | null;\n\n// eslint-disable-next-line no-control-regex\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/; // Don't use \\s, to avoid matching non-breaking space\n// eslint-disable-next-line no-control-regex\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc: Document, attributeValue: string) {\n /*\n run absoluteToDoc over every url in the srcset\n\n this is adapted from https://github.com/albell/parse-srcset/\n without the parsing of the descriptors (we return these as-is)\n parce-srcset is in turn based on\n https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n */\n if (attributeValue.trim() === '') {\n return attributeValue;\n }\n\n let pos = 0;\n\n function collectCharacters(regEx: RegExp) {\n let chars: string;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars = match[0];\n pos += chars.length;\n return chars;\n }\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line no-constant-condition\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n // don't split on commas within urls\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === ',') {\n // aside: according to spec more than one comma at the end is a parse error, but we ignore that\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n // the trailing comma splits the srcset, so the interpretion is that\n // another url will follow, and the descriptor is empty\n output.push(url);\n } else {\n let descriptorsStr = '';\n url = absoluteToDoc(doc, url);\n let inParens = false;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const c = attributeValue.charAt(pos);\n if (c === '') {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c === ',') {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break; // parse the next url\n } else if (c === '(') {\n inParens = true;\n }\n } else {\n // in parenthesis; ignore commas\n // (parenthesis may be supported by future additions to spec)\n if (c === ')') {\n inParens = false;\n }\n }\n descriptorsStr += c;\n pos += 1;\n }\n }\n }\n return output.join(', ');\n}\n\nconst cachedDocument = new WeakMap<Document, HTMLAnchorElement>();\n\nexport function absoluteToDoc(doc: Document, attributeValue: string): string {\n if (!attributeValue || attributeValue.trim() === '') {\n return attributeValue;\n }\n\n return getHref(doc, attributeValue);\n}\n\nfunction isSVGElement(el: Element): boolean {\n return Boolean(el.tagName === 'svg' || (el as SVGElement).ownerSVGElement);\n}\n\nfunction getHref(doc: Document, customHref?: string) {\n let a = cachedDocument.get(doc);\n if (!a) {\n a = doc.createElement('a');\n cachedDocument.set(doc, a);\n }\n if (!customHref) {\n customHref = '';\n } else if (customHref.startsWith('blob:') || customHref.startsWith('data:')) {\n return customHref;\n }\n // note: using `new URL` is slower. See #1434 or https://jsbench.me/uqlud17rxo/1\n a.setAttribute('href', customHref);\n return a.href;\n}\n\nexport function transformAttribute(\n doc: Document,\n tagName: Lowercase<string>,\n name: Lowercase<string>,\n value: string | null,\n): string | null {\n if (!value) {\n return value;\n }\n\n // relative path in attribute\n if (\n name === 'src' ||\n (name === 'href' && !(tagName === 'use' && value[0] === '#'))\n ) {\n // href starts with a # is an id pointer for svg\n return absoluteToDoc(doc, value);\n } else if (name === 'xlink:href' && value[0] !== '#') {\n // xlink:href starts with # is an id pointer\n return absoluteToDoc(doc, value);\n } else if (\n name === 'background' &&\n (tagName === 'table' || tagName === 'td' || tagName === 'th')\n ) {\n return absoluteToDoc(doc, value);\n } else if (name === 'srcset') {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === 'style') {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === 'object' && name === 'data') {\n return absoluteToDoc(doc, value);\n }\n\n return value;\n}\n\nexport function ignoreAttribute(\n tagName: string,\n name: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _value: unknown,\n): boolean {\n return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\n}\n\nexport function isExcludeAttribute(\n name: string,\n exclude: string | RegExp | undefined\n): boolean {\n if (!exclude) return false;\n return typeof exclude === 'string'\n ? name.includes(exclude)\n : exclude.test(name);\n}\n\n\nexport function _isBlockedElement(\n element: HTMLElement,\n blockClass: string | RegExp,\n blockSelector: string | null,\n): boolean {\n try {\n if (typeof blockClass === 'string') {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e) {\n //\n }\n\n return false;\n}\n\nexport function classMatchesRegex(\n node: Node | null,\n regex: RegExp,\n checkAncestors: boolean,\n): boolean {\n if (!node) return false;\n if (node.nodeType !== node.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(dom.parentNode(node), regex, checkAncestors);\n }\n\n for (let eIndex = (node as HTMLElement).classList.length; eIndex--; ) {\n const className = (node as HTMLElement).classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(dom.parentNode(node), regex, checkAncestors);\n}\n\nexport function needMaskingText(\n node: Node,\n maskTextClass: string | RegExp,\n maskTextSelector: string | null,\n checkAncestors: boolean,\n): boolean {\n let el: Element;\n if (isElement(node)) {\n el = node;\n if (!dom.childNodes(el).length) {\n // optimisation: we can avoid any of the below checks on leaf elements\n // as masking is applied to child text nodes only\n return false;\n }\n } else if (dom.parentElement(node) === null) {\n // should warn? maybe a text node isn't attached to a parent node yet?\n return false;\n } else {\n el = dom.parentElement(node)!;\n }\n try {\n if (typeof maskTextClass === 'string') {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e) {\n //\n }\n return false;\n}\n\n// https://stackoverflow.com/a/36155560\nfunction onceIframeLoaded(\n iframeEl: HTMLIFrameElement,\n listener: () => unknown,\n iframeLoadTimeout: number,\n) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n // document is loading\n let fired = false;\n\n let readyState: DocumentReadyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== 'complete') {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener('load', () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n // check blank frame for Chrome\n const blankUrl = 'about:blank';\n if (\n win.location.href !== blankUrl ||\n iframeEl.src === blankUrl ||\n iframeEl.src === ''\n ) {\n // iframe was already loaded, make sure we wait to trigger the listener\n // till _after_ the mutation that found this iframe has had time to process\n setTimeout(listener, 0);\n\n return iframeEl.addEventListener('load', listener); // keep listing for future loads\n }\n // use default listener\n iframeEl.addEventListener('load', listener);\n}\n\nfunction onceStylesheetLoaded(\n link: HTMLLinkElement,\n listener: () => unknown,\n styleSheetLoadTimeout: number,\n) {\n let fired = false;\n let styleSheetLoaded: StyleSheet | null;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n\n if (styleSheetLoaded) return;\n\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n\n link.addEventListener('load', () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\n\nfunction serializeNode(\n n: Node,\n options: {\n doc: Document;\n mirror: Mirror;\n blockClass: string | RegExp;\n blockSelector: string | null;\n excludeAttribute?: string | RegExp;\n needsMask: boolean;\n inlineStylesheet: boolean;\n maskInputOptions: MaskInputOptions;\n maskTextFn: MaskTextFn | undefined;\n maskInputFn: MaskInputFn | undefined;\n dataURLOptions?: DataURLOptions;\n inlineImages: boolean;\n recordCanvas: boolean;\n keepIframeSrcFn: KeepIframeSrcFn;\n /**\n * `newlyAddedElement: true` skips scrollTop and scrollLeft check\n */\n newlyAddedElement?: boolean;\n cssCaptured?: boolean;\n },\n): serializedNode | false {\n const {\n doc,\n mirror,\n blockClass,\n blockSelector,\n excludeAttribute,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n cssCaptured = false,\n } = options;\n // Only record root id when document object is not the base document\n const rootId = getRootId(doc, mirror);\n\n switch (n.nodeType) {\n case n.DOCUMENT_NODE:\n if ((n as Document).compatMode !== 'CSS1Compat') {\n return {\n type: NodeType.Document,\n childNodes: [],\n compatMode: (n as Document).compatMode, // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType.Document,\n childNodes: [],\n };\n }\n case n.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType.DocumentType,\n name: (n as DocumentType).name,\n publicId: (n as DocumentType).publicId,\n systemId: (n as DocumentType).systemId,\n rootId,\n };\n case n.ELEMENT_NODE:\n return serializeElementNode(n as HTMLElement, {\n doc,\n blockClass,\n blockSelector,\n excludeAttribute,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId,\n });\n case n.TEXT_NODE:\n return serializeTextNode(n as Text, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured,\n });\n case n.CDATA_SECTION_NODE:\n return {\n type: NodeType.CDATA,\n textContent: '',\n rootId,\n };\n case n.COMMENT_NODE:\n return {\n type: NodeType.Comment,\n textContent: dom.textContent(n as Comment) || '',\n rootId,\n };\n default:\n return false;\n }\n}\n\nfunction getRootId(doc: Document, mirror: Mirror): number | undefined {\n if (!mirror.hasNode(doc)) return undefined;\n const docId = mirror.getId(doc);\n return docId === 1 ? undefined : docId;\n}\n\nfunction serializeTextNode(\n n: Text,\n options: {\n doc: Document;\n needsMask: boolean;\n maskTextFn: MaskTextFn | undefined;\n rootId: number | undefined;\n cssCaptured?: boolean;\n },\n): serializedNode {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n // The parent node may not be a html element which has a tagName attribute.\n // So just let it be undefined which is ok in this use case.\n const parent = dom.parentNode(n);\n const parentTagName = parent && (parent as HTMLElement).tagName;\n let textContent: string | null = '';\n const isStyle = parentTagName === 'STYLE' ? true : undefined;\n const isScript = parentTagName === 'SCRIPT' ? true : undefined;\n if (isScript) {\n textContent = 'SCRIPT_PLACEHOLDER';\n } else if (!cssCaptured) {\n textContent = dom.textContent(n);\n if (isStyle && textContent) {\n // mutation only: we don't need to use stringifyStylesheet\n // as a <style> text node mutation obliterates any previous\n // programmatic rule manipulation (.insertRule etc.)\n // so the current textContent represents the most up to date state\n textContent = absolutifyURLs(textContent, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent && needsMask) {\n textContent = maskTextFn\n ? maskTextFn(textContent, dom.parentElement(n))\n : textContent.replace(/[\\S]/g, '*');\n }\n\n return {\n type: NodeType.Text,\n textContent: textContent || '',\n rootId,\n };\n}\n\nfunction serializeElementNode(\n n: HTMLElement,\n options: {\n doc: Document;\n blockClass: string | RegExp;\n blockSelector: string | null;\n excludeAttribute?: string | RegExp;\n inlineStylesheet: boolean;\n maskInputOptions: MaskInputOptions;\n maskInputFn: MaskInputFn | undefined;\n dataURLOptions?: DataURLOptions;\n inlineImages: boolean;\n recordCanvas: boolean;\n keepIframeSrcFn: KeepIframeSrcFn;\n /**\n * `newlyAddedElement: true` skips scrollTop and scrollLeft check\n */\n newlyAddedElement?: boolean;\n rootId: number | undefined;\n },\n): serializedNode | false {\n const {\n doc,\n blockClass,\n blockSelector,\n excludeAttribute,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId,\n } = options;\n const needBlock = _isBlockedElement(n, blockClass, blockSelector);\n const tagName = getValidTagName(n);\n let attributes: attributes = {};\n const len = n.attributes.length;\n for (let i = 0; i < len; i++) {\n const attr = n.attributes[i];\n if (isExcludeAttribute(attr.name, excludeAttribute)) {\n continue;\n }\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value,\n );\n }\n }\n\n // remote css\n if (tagName === 'link' && inlineStylesheet) {\n //TODO: maybe replace this `.styleSheets` with original one\n const stylesheet = Array.from(doc.styleSheets).find((s) => {\n return s.href === (n as HTMLLinkElement).href;\n });\n let cssText: string | null = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === 'style' && (n as HTMLStyleElement).sheet) {\n let cssText = stringifyStylesheet(\n (n as HTMLStyleElement).sheet as CSSStyleSheet,\n );\n if (cssText) {\n if (n.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n as HTMLStyleElement);\n }\n attributes._cssText = cssText;\n }\n }\n // form fields\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\n const value = (n as HTMLInputElement | HTMLTextAreaElement).value;\n const checked = (n as HTMLInputElement).checked;\n if (\n attributes.type !== 'radio' &&\n attributes.type !== 'checkbox' &&\n attributes.type !== 'submit' &&\n attributes.type !== 'button' &&\n value\n ) {\n attributes.value = maskInputValue({\n element: n,\n type: getInputType(n),\n tagName,\n value,\n maskInputOptions,\n maskInputFn,\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === 'option') {\n if ((n as HTMLOptionElement).selected && !maskInputOptions['select']) {\n attributes.selected = true;\n } else {\n // ignore the html attribute (which corresponds to DOM (n as HTMLOptionElement).defaultSelected)\n // if it's already been changed\n delete attributes.selected;\n }\n }\n\n if (tagName === 'dialog' && (n as HTMLDialogElement).open) {\n // register what type of dialog is this\n // `modal` or `non-modal`\n // this is used to trigger `showModal()` or `show()` on replay (outside of rrweb-snapshot, in rrweb)\n (attributes as DialogAttributes).rr_open_mode = n.matches('dialog:modal')\n ? 'modal'\n : 'non-modal';\n }\n\n // canvas image data\n if (tagName === 'canvas' && recordCanvas) {\n if ((n as ICanvas).__context === '2d') {\n // only record this on 2d canvas\n if (!is2DCanvasBlank(n as HTMLCanvasElement)) {\n attributes.rr_dataURL = (n as HTMLCanvasElement).toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality,\n );\n }\n } else if (!('__context' in n)) {\n // context is unknown, better not call getContext to trigger it\n const canvasDataURL = (n as HTMLCanvasElement).toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality,\n );\n\n // create blank canvas of same dimensions\n const blankCanvas = doc.createElement('canvas');\n blankCanvas.width = (n as HTMLCanvasElement).width;\n blankCanvas.height = (n as HTMLCanvasElement).height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality,\n );\n\n // no need to save dataURL if it's the same as blank canvas\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n // save image offline\n if (tagName === 'img' && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement('canvas');\n canvasCtx = canvasService.getContext('2d');\n }\n const image = n as HTMLImageElement;\n const imageSrc: string =\n image.currentSrc || image.getAttribute('src') || '<unknown-src>';\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener('load', recordInlineImage);\n try {\n canvasService!.width = image.naturalWidth;\n canvasService!.height = image.naturalHeight;\n canvasCtx!.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService!.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality,\n );\n } catch (err) {\n if (image.crossOrigin !== 'anonymous') {\n image.crossOrigin = 'anonymous';\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage(); // too early due to image reload\n else image.addEventListener('load', recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err as string}`,\n );\n }\n }\n if (image.crossOrigin === 'anonymous') {\n priorCrossOrigin\n ? (attributes.crossOrigin = priorCrossOrigin)\n : image.removeAttribute('crossorigin');\n }\n };\n // The image content may not have finished loading yet.\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener('load', recordInlineImage);\n }\n // media elements\n if (tagName === 'audio' || tagName === 'video') {\n const mediaAttributes = attributes as mediaAttributes;\n mediaAttributes.rr_mediaState = (n as HTMLMediaElement).paused\n ? 'paused'\n : 'played';\n mediaAttributes.rr_mediaCurrentTime = (n as HTMLMediaElement).currentTime;\n mediaAttributes.rr_mediaPlaybackRate = (n as HTMLMediaElement).playbackRate;\n mediaAttributes.rr_mediaMuted = (n as HTMLMediaElement).muted;\n mediaAttributes.rr_mediaLoop = (n as HTMLMediaElement).loop;\n mediaAttributes.rr_mediaVolume = (n as HTMLMediaElement).volume;\n }\n // Scroll\n if (!newlyAddedElement) {\n // `scrollTop` and `scrollLeft` are expensive calls because they trigger reflow.\n // Since `scrollTop` & `scrollLeft` are always 0 when an element is added to the DOM.\n // And scrolls also get picked up by rrweb's ScrollObserver\n // So we can safely skip the `scrollTop/Left` calls for newly added elements\n if (n.scrollLeft) {\n attributes.rr_scrollLeft = n.scrollLeft;\n }\n if (n.scrollTop) {\n attributes.rr_scrollTop = n.scrollTop;\n }\n }\n // block element\n if (needBlock) {\n const { width, height } = n.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`,\n };\n }\n // iframe\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src as string)) {\n if (!(n as HTMLIFrameElement).contentDocument) {\n // we can't record it directly as we can't see into it\n // preserve the src attribute so a decision can be taken at replay time\n attributes.rr_src = attributes.src;\n }\n delete attributes.src; // prevent auto loading\n }\n\n let isCustomElement: true | undefined;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e) {\n // In case old browsers don't support customElements\n }\n\n return {\n type: NodeType.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n as Element) || undefined,\n needBlock,\n rootId,\n isCustom: isCustomElement,\n };\n}\n\nfunction lowerIfExists(\n maybeAttr: string | number | boolean | undefined | null,\n): string {\n if (maybeAttr === undefined || maybeAttr === null) {\n return '';\n } else {\n return (maybeAttr as string).toLowerCase();\n }\n}\n\nfunction slimDOMExcluded(\n sn: serializedNode,\n slimDOMOptions: SlimDOMOptions,\n): boolean {\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\n // TODO: convert IE conditional comments to real nodes\n return true;\n } else if (sn.type === NodeType.Element) {\n if (\n slimDOMOptions.script &&\n // script tag\n (sn.tagName === 'script' ||\n // (module)preload link\n (sn.tagName === 'link' &&\n ((sn.attributes.rel === 'preload' && sn.attributes.as === 'script') ||\n sn.attributes.rel === 'modulepreload')) ||\n // prefetch link\n (sn.tagName === 'link' &&\n sn.attributes.rel === 'prefetch' &&\n typeof sn.attributes.href === 'string' &&\n extractFileExtension(sn.attributes.href) === 'js'))\n ) {\n return true;\n } else if (\n slimDOMOptions.headFavicon &&\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\n (sn.tagName === 'meta' &&\n (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/,\n ) ||\n lowerIfExists(sn.attributes.name) === 'application-name' ||\n lowerIfExists(sn.attributes.rel) === 'icon' ||\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))\n ) {\n return true;\n } else if (sn.tagName === 'meta') {\n if (\n slimDOMOptions.headMetaDescKeywords &&\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)\n ) {\n return true;\n } else if (\n slimDOMOptions.headMetaSocial &&\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\n lowerIfExists(sn.attributes.name) === 'pinterest')\n ) {\n return true;\n } else if (\n slimDOMOptions.headMetaRobots &&\n (lowerIfExists(sn.attributes.name) === 'robots' ||\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\n lowerIfExists(sn.attributes.name) === 'bingbot')\n ) {\n return true;\n } else if (\n slimDOMOptions.headMetaHttpEquiv &&\n sn.attributes['http-equiv'] !== undefined\n ) {\n // e.g. X-UA-Compatible, Content-Type, Content-Language,\n // cache-control, X-Translated-By\n return true;\n } else if (\n slimDOMOptions.headMetaAuthorship &&\n (lowerIfExists(sn.attributes.name) === 'author' ||\n lowerIfExists(sn.attributes.name) === 'generator' ||\n lowerIfExists(sn.attributes.name) === 'framework' ||\n lowerIfExists(sn.attributes.name) === 'publisher' ||\n lowerIfExists(sn.attributes.name) === 'progid' ||\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\n lowerIfExists(sn.attributes.property).match(/^product:/))\n ) {\n return true;\n } else if (\n slimDOMOptions.headMetaVerification &&\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\n lowerIfExists(sn.attributes.name) === 'verification' ||\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')\n ) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function serializeNodeWithId(\n n: Node,\n options: {\n doc: Document;\n mirror: Mirror;\n blockClass: string | RegExp;\n blockSelector: string | null;\n maskTextClass: string | RegExp;\n maskTextSelector: string | null;\n excludeAttribute?: string | RegExp;\n skipChild: boolean;\n inlineStylesheet: boolean;\n newlyAddedElement?: boolean;\n maskInputOptions?: MaskInputOptions;\n needsMask?: boolean;\n maskTextFn: MaskTextFn | undefined;\n maskInputFn: MaskInputFn | undefined;\n slimDOMOptions: SlimDOMOptions;\n dataURLOptions?: DataURLOptions;\n keepIframeSrcFn?: KeepIframeSrcFn;\n inlineImages?: boolean;\n recordCanvas?: boolean;\n preserveWhiteSpace?: boolean;\n onSerialize?: (n: Node) => unknown;\n onIframeLoad?: (\n iframeNode: HTMLIFrameElement,\n node: serializedElementNodeWithId,\n ) => unknown;\n iframeLoadTimeout?: number;\n onStylesheetLoad?: (\n linkNode: HTMLLinkElement,\n node: serializedElementNodeWithId,\n ) => unknown;\n stylesheetLoadTimeout?: number;\n cssCaptured?: boolean;\n /**\n * SEQL selector generation options. null means selector should not be recorded.\n */\n selectorOptions?: {\n maxPathDepth: number;\n enableSvgFingerprint?: boolean;\n fallbackToBody?: boolean;\n } | null;\n },\n): serializedNodeWithId | null {\n const {\n doc,\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n excludeAttribute,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5000,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5000,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false,\n cssCaptured = false,\n selectorOptions,\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n\n if (!needsMask) {\n // perf: if needsMask = true, children won't also need to check\n const checkAncestors = needsMask === undefined; // if false, we've already checked ancestors\n needsMask = needMaskingText(\n n as Element,\n maskTextClass,\n maskTextSelector,\n checkAncestors,\n );\n }\n\n const _serializedNode = serializeNode(n, {\n doc,\n mirror,\n blockClass,\n blockSelector,\n excludeAttribute,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n cssCaptured,\n });\n if (!_serializedNode) {\n // TODO: dev only\n console.warn(n, 'not serialized');\n return null;\n }\n\n let id: number | undefined;\n if (mirror.hasNode(n)) {\n // Reuse the previous id\n id = mirror.getId(n);\n } else if (\n slimDOMExcluded(_serializedNode, slimDOMOptions) ||\n (!preserveWhiteSpace &&\n _serializedNode.type === NodeType.Text &&\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)\n ) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n\n const serializedNode = Object.assign(_serializedNode, { id });\n\n // Генерация SEQL селектора и метаданных видимости/интерактивности\n if (isElement(n) || n.nodeType === Node.TEXT_NODE) {\n // Генерация SEQL селектора\n if (isElement(n) && selectorOptions !== null && selectorOptions !== undefined) {\n try {\n const seqlGeneratorOptions: SEQLGeneratorOptions = {\n maxPathDepth: selectorOptions.maxPathDepth,\n enableSvgFingerprint: selectorOptions.enableSvgFingerprint,\n fallbackToBody: selectorOptions.fallbackToBody,\n };\n const selector = generateSEQL(n as Element, seqlGeneratorOptions);\n if (selector) {\n serializedNode.selector = selector;\n }\n } catch (error) {\n // Если SEQL генерация не удалась, просто пропускаем\n // и не добавляем поле selector\n console.warn('Failed to generate SEQL selector:', error);\n }\n }\n // if (isElement(n)) {\n // const selector = generateSEQL(n as Element);\n // if (selector) {\n // serializedNode.selector = selector;\n // } else {\n // console.debug('Invalid SEQL', {n});\n // }\n // } else {\n // console.debug('Skipping SEQL generation for non-element node', {n});\n // }\n\n\n\n // Существующий код для isVisible и isInteractive\n if (n.nodeType === Node.TEXT_NODE) {\n serializedNode.isVisible = isTextVisible(n as Text);\n }\n if (n.nodeType === Node.ELEMENT_NODE) {\n serializedNode.isVisible = isElementVisible(n as Element);\n serializedNode.isInteractive = isElementInteractive(n as Element);\n }\n }\n // add IGNORED_NODE to mirror to track nextSiblings\n mirror.add(n, serializedNode);\n\n if (id === IGNORED_NODE) {\n return null; // slimDOM\n }\n\n if (onSerialize) {\n onSerialize(n);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n // this property was not needed in replay side\n delete serializedNode.needBlock;\n const shadowRootEl = dom.shadowRoot(n);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if (\n (serializedNode.type === NodeType.Document ||\n serializedNode.type === NodeType.Element) &&\n recordChild\n ) {\n if (\n slimDOMOptions.headWhitespace &&\n serializedNode.type === NodeType.Element &&\n serializedNode.tagName === 'head'\n // would impede performance: || getComputedStyle(n)['white-space'] === 'normal'\n ) {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n excludeAttribute,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n cssCaptured: false,\n selectorOptions,\n };\n\n if (\n serializedNode.type === NodeType.Element &&\n serializedNode.tagName === 'textarea' &&\n (serializedNode as elementNode).attributes.value !== undefined\n ) {\n // value parameter in DOM reflects the correct value, so ignore childNode\n } else {\n if (\n serializedNode.type === NodeType.Element &&\n (serializedNode as elementNode).attributes._cssText !== undefined &&\n typeof serializedNode.attributes._cssText === 'string'\n ) {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(dom.childNodes(n))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n\n let shadowRootEl: ShadowRoot | null = null;\n if (isElement(n) && (shadowRootEl = dom.shadowRoot(n))) {\n for (const childN of Array.from(dom.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) &&\n (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n\n const parent = dom.parentNode(n);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n\n if (\n serializedNode.type === NodeType.Element &&\n serializedNode.tagName === 'iframe'\n ) {\n onceIframeLoaded(\n n as HTMLIFrameElement,\n () => {\n const iframeDoc = (n as HTMLIFrameElement).contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n excludeAttribute,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n selectorOptions,\n });\n\n if (serializedIframeNode) {\n onIframeLoad(\n n as HTMLIFrameElement,\n serializedIframeNode as serializedElementNodeWithId,\n );\n }\n }\n },\n iframeLoadTimeout,\n );\n }\n\n // <link rel=stylesheet href=...>\n if (\n serializedNode.type === NodeType.Element &&\n serializedNode.tagName === 'link' &&\n typeof serializedNode.attributes.rel === 'string' &&\n (serializedNode.attributes.rel === 'stylesheet' ||\n (serializedNode.attributes.rel === 'preload' &&\n typeof serializedNode.attributes.href === 'string' &&\n extractFileExtension(serializedNode.attributes.href) === 'css'))\n ) {\n onceStylesheetLoaded(\n n as HTMLLinkElement,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n, {\n doc,\n mirror,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n excludeAttribute,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n selectorOptions,\n });\n\n if (serializedLinkNode) {\n onStylesheetLoad(\n n as HTMLLinkElement,\n serializedLinkNode as serializedElementNodeWithId,\n );\n }\n }\n },\n stylesheetLoadTimeout,\n );\n }\n\n return serializedNode;\n}\n\nfunction snapshot(\n n: Document,\n options?: {\n mirror?: Mirror;\n blockClass?: string | RegExp;\n blockSelector?: string | null;\n maskTextClass?: string | RegExp;\n maskTextSelector?: string | null;\n excludeAttribute?: string | RegExp;\n inlineStylesheet?: boolean;\n maskAllInputs?: boolean | MaskInputOptions;\n maskTextFn?: MaskTextFn;\n maskInputFn?: MaskInputFn;\n slimDOM?: 'all' | boolean | SlimDOMOptions;\n dataURLOptions?: DataURLOptions;\n inlineImages?: boolean;\n recordCanvas?: boolean;\n preserveWhiteSpace?: boolean;\n onSerialize?: (n: Node) => unknown;\n onIframeLoad?: (\n iframeNode: HTMLIFrameElement,\n node: serializedElementNodeWithId,\n ) => unknown;\n iframeLoadTimeout?: number;\n onStylesheetLoad?: (\n linkNode: HTMLLinkElement,\n node: serializedElementNodeWithId,\n ) => unknown;\n stylesheetLoadTimeout?: number;\n keepIframeSrcFn?: KeepIframeSrcFn;\n /**\n * Configuration for SEQL selector generation.\n * - `true` - use default SEQL options\n * - `false` - do not record selector\n * - Object with custom SEQL options\n */\n selector?:\n | boolean\n | {\n maxPathDepth?: number;\n enableSvgFingerprint?: boolean;\n confidenceThreshold?: number;\n fallbackToBody?: boolean;\n };\n },\n): serializedNodeWithId | null {\n const {\n mirror = new Mirror(),\n blockClass = 'rr-block',\n blockSelector = null,\n maskTextClass = 'rr-mask',\n maskTextSelector = null,\n excludeAttribute = /.^/,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false,\n selector,\n } = options || {};\n // console.debug(`${Date.now()} [rrweb-snapshot] snapshot:options:`, options);\n const maskInputOptions: MaskInputOptions =\n maskAllInputs === true\n ? {\n color: true,\n date: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true,\n }\n : maskAllInputs === false\n ? {\n password: true,\n }\n : maskAllInputs;\n const slimDOMOptions: SlimDOMOptions =\n slimDOM === true || slimDOM === 'all'\n ? // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === 'all', // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true,\n }\n : slimDOM === false\n ? {}\n : slimDOM;\n\n // Нормализация опций для SEQL селекторов\n const selectorOptions: {\n maxPathDepth: number;\n enableSvgFingerprint?: boolean;\n confidenceThreshold?: number;\n fallbackToBody?: boolean;\n } | null =\n selector === false\n ? null\n : selector === true\n ? {\n maxPathDepth: 10,\n enableSvgFingerprint: true,\n confidenceThreshold: 0.3,\n fallbackToBody: true,\n }\n : selector === undefined\n ? {\n maxPathDepth: 10,\n enableSvgFingerprint: true,\n confidenceThreshold: 0.3,\n fallbackToBody: true,\n }\n : {\n maxPathDepth: selector.maxPathDepth ?? 10,\n enableSvgFingerprint: selector.enableSvgFingerprint ?? true,\n confidenceThreshold: selector.confidenceThreshold ?? 0.3,\n fallbackToBody: selector.fallbackToBody ?? true,\n };\n\n return serializeNodeWithId(n, {\n doc: n,\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n excludeAttribute,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false,\n selectorOptions,\n });\n}\n\nexport function visitSnapshot(\n node: serializedNodeWithId,\n onVisit: (node: serializedNodeWithId) => unknown,\n) {\n function walk(current: serializedNodeWithId) {\n onVisit(current);\n if (\n current.type === NodeType.Document ||\n current.type === NodeType.Element\n ) {\n current.childNodes.forEach(walk);\n }\n }\n\n walk(node);\n}\n\nexport function cleanupSnapshot() {\n // allow a new recording to start numbering nodes from scratch\n _id = 1;\n}\n\nexport default snapshot;\n","import type { AcceptedPlugin, Rule, Declaration } from 'postcss';\n\nconst MEDIA_SELECTOR = /(max|min)-device-(width|height)/;\nconst MEDIA_SELECTOR_GLOBAL = new RegExp(MEDIA_SELECTOR.source, 'g');\n\nconst mediaSelectorPlugin: AcceptedPlugin = {\n postcssPlugin: 'postcss-custom-selectors',\n prepare() {\n return {\n postcssPlugin: 'postcss-custom-selectors',\n AtRule: function (atrule) {\n if (atrule.params.match(MEDIA_SELECTOR_GLOBAL)) {\n atrule.params = atrule.params.replace(MEDIA_SELECTOR_GLOBAL, '$1-$2');\n }\n },\n };\n },\n};\n\n// Simplified from https://github.com/giuseppeg/postcss-pseudo-classes/blob/master/index.js\nconst pseudoClassPlugin: AcceptedPlugin = {\n postcssPlugin: 'postcss-hover-classes',\n prepare: function () {\n const fixed: Rule[] = [];\n return {\n Rule: function (rule) {\n if (fixed.indexOf(rule) !== -1) {\n return;\n }\n fixed.push(rule);\n rule.selectors.forEach(function (selector) {\n if (selector.includes(':hover')) {\n rule.selector += ',\\n' + selector.replace(/:hover/g, '.\\\\:hover');\n }\n });\n },\n };\n },\n};\n\nconst animationFillModePlugin: AcceptedPlugin = {\n postcssPlugin: 'postcss-animation-fill-mode',\n prepare: function () {\n return {\n Rule: function (rule) {\n let hasAnimation = false;\n let hasAnimationFillMode = false;\n let animationDeclaration: Declaration | null = null;\n\n rule.walkDecls((decl) => {\n if (decl.prop === 'animation') {\n hasAnimation = true;\n animationDeclaration = decl;\n }\n if (decl.prop === 'animation-fill-mode') {\n hasAnimationFillMode = true;\n }\n });\n\n if (hasAnimation && !hasAnimationFillMode && animationDeclaration) {\n rule.insertAfter(animationDeclaration, {\n prop: 'animation-fill-mode',\n value: 'forwards',\n });\n }\n },\n };\n },\n};\n\nexport { mediaSelectorPlugin, pseudoClassPlugin, animationFillModePlugin };\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x,blackBright:x,redBright:x,greenBright:x,yellowBright:x,blueBright:x,magentaBright:x,cyanBright:x,whiteBright:x,bgBlackBright:x,bgRedBright:x,bgGreenBright:x,bgYellowBright:x,bgBlueBright:x,bgMagentaBright:x,bgCyanBright:x,bgWhiteBright:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","export default {}","'use strict'\n\nlet pico = require('picocolors')\n\nlet terminalHighlight = require('./terminal-highlight')\n\nclass CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin) {\n super(message)\n this.name = 'CssSyntaxError'\n this.reason = message\n\n if (file) {\n this.file = file\n }\n if (source) {\n this.source = source\n }\n if (plugin) {\n this.plugin = plugin\n }\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n if (typeof line === 'number') {\n this.line = line\n this.column = column\n } else {\n this.line = line.line\n this.column = line.column\n this.endLine = column.line\n this.endColumn = column.column\n }\n }\n\n this.setMessage()\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError)\n }\n }\n\n setMessage() {\n this.message = this.plugin ? this.plugin + ': ' : ''\n this.message += this.file ? this.file : '<css input>'\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column\n }\n this.message += ': ' + this.reason\n }\n\n showSourceCode(color) {\n if (!this.source) return ''\n\n let css = this.source\n if (color == null) color = pico.isColorSupported\n\n let aside = text => text\n let mark = text => text\n let highlight = text => text\n if (color) {\n let { bold, gray, red } = pico.createColors(true)\n mark = text => bold(red(text))\n aside = text => gray(text)\n if (terminalHighlight) {\n highlight = text => terminalHighlight(text)\n }\n }\n\n let lines = css.split(/\\r?\\n/)\n let start = Math.max(this.line - 3, 0)\n let end = Math.min(this.line + 2, lines.length)\n let maxWidth = String(end).length\n\n return lines\n .slice(start, end)\n .map((line, index) => {\n let number = start + 1 + index\n let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '\n if (number === this.line) {\n if (line.length > 160) {\n let padding = 20\n let subLineStart = Math.max(0, this.column - padding)\n let subLineEnd = Math.max(\n this.column + padding,\n this.endColumn + padding\n )\n let subLine = line.slice(subLineStart, subLineEnd)\n\n let spacing =\n aside(gutter.replace(/\\d/g, ' ')) +\n line\n .slice(0, Math.min(this.column - 1, padding - 1))\n .replace(/[^\\t]/g, ' ')\n\n return (\n mark('>') +\n aside(gutter) +\n highlight(subLine) +\n '\\n ' +\n spacing +\n mark('^')\n )\n }\n\n let spacing =\n aside(gutter.replace(/\\d/g, ' ')) +\n line.slice(0, this.column - 1).replace(/[^\\t]/g, ' ')\n\n return (\n mark('>') +\n aside(gutter) +\n highlight(line) +\n '\\n ' +\n spacing +\n mark('^')\n )\n }\n\n return ' ' + aside(gutter) + highlight(line)\n })\n .join('\\n')\n }\n\n toString() {\n let code = this.showSourceCode()\n if (code) {\n code = '\\n\\n' + code + '\\n'\n }\n return this.name + ': ' + this.message + code\n }\n}\n\nmodule.exports = CssSyntaxError\nCssSyntaxError.default = CssSyntaxError\n","'use strict'\n\nconst DEFAULT_RAW = {\n after: '\\n',\n beforeClose: '\\n',\n beforeComment: '\\n',\n beforeDecl: '\\n',\n beforeOpen: ' ',\n beforeRule: '\\n',\n colon: ': ',\n commentLeft: ' ',\n commentRight: ' ',\n emptyBody: '',\n indent: ' ',\n semicolon: false\n}\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1)\n}\n\nclass Stringifier {\n constructor(builder) {\n this.builder = builder\n }\n\n atrule(node, semicolon) {\n let name = '@' + node.name\n let params = node.params ? this.rawValue(node, 'params') : ''\n\n if (typeof node.raws.afterName !== 'undefined') {\n name += node.raws.afterName\n } else if (params) {\n name += ' '\n }\n\n if (node.nodes) {\n this.block(node, name + params)\n } else {\n let end = (node.raws.between || '') + (semicolon ? ';' : '')\n this.builder(name + params + end, node)\n }\n }\n\n beforeAfter(node, detect) {\n let value\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment')\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule')\n } else {\n value = this.raw(node, null, 'beforeClose')\n }\n\n let buf = node.parent\n let depth = 0\n while (buf && buf.type !== 'root') {\n depth += 1\n buf = buf.parent\n }\n\n if (value.includes('\\n')) {\n let indent = this.raw(node, null, 'indent')\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent\n }\n }\n\n return value\n }\n\n block(node, start) {\n let between = this.raw(node, 'between', 'beforeOpen')\n this.builder(start + between + '{', node, 'start')\n\n let after\n if (node.nodes && node.nodes.length) {\n this.body(node)\n after = this.raw(node, 'after')\n } else {\n after = this.raw(node, 'after', 'emptyBody')\n }\n\n if (after) this.builder(after)\n this.builder('}', node, 'end')\n }\n\n body(node) {\n let last = node.nodes.length - 1\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break\n last -= 1\n }\n\n let semicolon = this.raw(node, 'semicolon')\n for (let i = 0; i < node.nodes.length; i++) {\n let child = node.nodes[i]\n let before = this.raw(child, 'before')\n if (before) this.builder(before)\n this.stringify(child, last !== i || semicolon)\n }\n }\n\n comment(node) {\n let left = this.raw(node, 'left', 'commentLeft')\n let right = this.raw(node, 'right', 'commentRight')\n this.builder('/*' + left + node.text + right + '*/', node)\n }\n\n decl(node, semicolon) {\n let between = this.raw(node, 'between', 'colon')\n let string = node.prop + between + this.rawValue(node, 'value')\n\n if (node.important) {\n string += node.raws.important || ' !important'\n }\n\n if (semicolon) string += ';'\n this.builder(string, node)\n }\n\n document(node) {\n this.body(node)\n }\n\n raw(node, own, detect) {\n let value\n if (!detect) detect = own\n\n // Already had\n if (own) {\n value = node.raws[own]\n if (typeof value !== 'undefined') return value\n }\n\n let parent = node.parent\n\n if (detect === 'before') {\n // Hack for first rule in CSS\n if (!parent || (parent.type === 'root' && parent.first === node)) {\n return ''\n }\n\n // `root` nodes in `document` should use only their own raws\n if (parent && parent.type === 'document') {\n return ''\n }\n }\n\n // Floating child without parent\n if (!parent) return DEFAULT_RAW[detect]\n\n // Detect style by other nodes\n let root = node.root()\n if (!root.rawCache) root.rawCache = {}\n if (typeof root.rawCache[detect] !== 'undefined') {\n return root.rawCache[detect]\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect)\n } else {\n let method = 'raw' + capitalize(detect)\n if (this[method]) {\n value = this[method](root, node)\n } else {\n root.walk(i => {\n value = i.raws[own]\n if (typeof value !== 'undefined') return false\n })\n }\n }\n\n if (typeof value === 'undefined') value = DEFAULT_RAW[detect]\n\n root.rawCache[detect] = value\n return value\n }\n\n rawBeforeClose(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawBeforeComment(root, node) {\n let value\n root.walkComments(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeDecl(root, node) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeOpen(root) {\n let value\n root.walk(i => {\n if (i.type !== 'decl') {\n value = i.raws.between\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawBeforeRule(root) {\n let value\n root.walk(i => {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawColon(root) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '')\n return false\n }\n })\n return value\n }\n\n rawEmptyBody(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawIndent(root) {\n if (root.raws.indent) return root.raws.indent\n let value\n root.walk(i => {\n let p = i.parent\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n let parts = i.raws.before.split('\\n')\n value = parts[parts.length - 1]\n value = value.replace(/\\S/g, '')\n return false\n }\n }\n })\n return value\n }\n\n rawSemicolon(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawValue(node, prop) {\n let value = node[prop]\n let raw = node.raws[prop]\n if (raw && raw.value === value) {\n return raw.raw\n }\n\n return value\n }\n\n root(node) {\n this.body(node)\n if (node.raws.after) this.builder(node.raws.after)\n }\n\n rule(node) {\n this.block(node, this.rawValue(node, 'selector'))\n if (node.raws.ownSemicolon) {\n this.builder(node.raws.ownSemicolon, node, 'end')\n }\n }\n\n stringify(node, semicolon) {\n /* c8 ignore start */\n if (!this[node.type]) {\n throw new Error(\n 'Unknown AST node type ' +\n node.type +\n '. ' +\n 'Maybe you need to change PostCSS stringifier.'\n )\n }\n /* c8 ignore stop */\n this[node.type](node, semicolon)\n }\n}\n\nmodule.exports = Stringifier\nStringifier.default = Stringifier\n","'use strict'\n\nlet Stringifier = require('./stringifier')\n\nfunction stringify(node, builder) {\n let str = new Stringifier(builder)\n str.stringify(node)\n}\n\nmodule.exports = stringify\nstringify.default = stringify\n","'use strict'\n\nmodule.exports.isClean = Symbol('isClean')\n\nmodule.exports.my = Symbol('my')\n","'use strict'\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet Stringifier = require('./stringifier')\nlet stringify = require('./stringify')\nlet { isClean, my } = require('./symbols')\n\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor()\n\n for (let i in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i)) {\n /* c8 ignore next 2 */\n continue\n }\n if (i === 'proxyCache') continue\n let value = obj[i]\n let type = typeof value\n\n if (i === 'parent' && type === 'object') {\n if (parent) cloned[i] = parent\n } else if (i === 'source') {\n cloned[i] = value\n } else if (Array.isArray(value)) {\n cloned[i] = value.map(j => cloneNode(j, cloned))\n } else {\n if (type === 'object' && value !== null) value = cloneNode(value)\n cloned[i] = value\n }\n }\n\n return cloned\n}\n\nfunction sourceOffset(inputCSS, position) {\n // Not all custom syntaxes support `offset` in `source.start` and `source.end`\n if (position && typeof position.offset !== 'undefined') {\n return position.offset\n }\n\n let column = 1\n let line = 1\n let offset = 0\n\n for (let i = 0; i < inputCSS.length; i++) {\n if (line === position.line && column === position.column) {\n offset = i\n break\n }\n\n if (inputCSS[i] === '\\n') {\n column = 1\n line += 1\n } else {\n column += 1\n }\n }\n\n return offset\n}\n\nclass Node {\n get proxyOf() {\n return this\n }\n\n constructor(defaults = {}) {\n this.raws = {}\n this[isClean] = false\n this[my] = true\n\n for (let name in defaults) {\n if (name === 'nodes') {\n this.nodes = []\n for (let node of defaults[name]) {\n if (typeof node.clone === 'function') {\n this.append(node.clone())\n } else {\n this.append(node)\n }\n }\n } else {\n this[name] = defaults[name]\n }\n }\n }\n\n addToError(error) {\n error.postcssNode = this\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s = this.source\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s.input.from}:${s.start.line}:${s.start.column}$&`\n )\n }\n return error\n }\n\n after(add) {\n this.parent.insertAfter(this, add)\n return this\n }\n\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name]\n }\n return this\n }\n\n before(add) {\n this.parent.insertBefore(this, add)\n return this\n }\n\n cleanRaws(keepBetween) {\n delete this.raws.before\n delete this.raws.after\n if (!keepBetween) delete this.raws.between\n }\n\n clone(overrides = {}) {\n let cloned = cloneNode(this)\n for (let name in overrides) {\n cloned[name] = overrides[name]\n }\n return cloned\n }\n\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertAfter(this, cloned)\n return cloned\n }\n\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertBefore(this, cloned)\n return cloned\n }\n\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts)\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n )\n }\n return new CssSyntaxError(message)\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (\n prop === 'prop' ||\n prop === 'value' ||\n prop === 'name' ||\n prop === 'params' ||\n prop === 'important' ||\n /* c8 ignore next */\n prop === 'text'\n ) {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n /* c8 ignore next 3 */\n markClean() {\n this[isClean] = true\n }\n\n markDirty() {\n if (this[isClean]) {\n this[isClean] = false\n let next = this\n while ((next = next.parent)) {\n next[isClean] = false\n }\n }\n }\n\n next() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index + 1]\n }\n\n positionBy(opts = {}) {\n let pos = this.source.start\n if (opts.index) {\n pos = this.positionInside(opts.index)\n } else if (opts.word) {\n let inputString =\n 'document' in this.source.input\n ? this.source.input.document\n : this.source.input.css\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n )\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) pos = this.positionInside(index)\n }\n return pos\n }\n\n positionInside(index) {\n let column = this.source.start.column\n let line = this.source.start.line\n let inputString =\n 'document' in this.source.input\n ? this.source.input.document\n : this.source.input.css\n let offset = sourceOffset(inputString, this.source.start)\n let end = offset + index\n\n for (let i = offset; i < end; i++) {\n if (inputString[i] === '\\n') {\n column = 1\n line += 1\n } else {\n column += 1\n }\n }\n\n return { column, line, offset: end }\n }\n\n prev() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index - 1]\n }\n\n rangeBy(opts = {}) {\n let inputString =\n 'document' in this.source.input\n ? this.source.input.document\n : this.source.input.css\n let start = {\n column: this.source.start.column,\n line: this.source.start.line,\n offset: sourceOffset(inputString, this.source.start)\n }\n let end = this.source.end\n ? {\n column: this.source.end.column + 1,\n line: this.source.end.line,\n offset:\n typeof this.source.end.offset === 'number'\n ? // `source.end.offset` is exclusive, so we don't need to add 1\n this.source.end.offset\n : // Since line/column in this.source.end is inclusive,\n // the `sourceOffset(... , this.source.end)` returns an inclusive offset.\n // So, we add 1 to convert it to exclusive.\n sourceOffset(inputString, this.source.end) + 1\n }\n : {\n column: start.column + 1,\n line: start.line,\n offset: start.offset + 1\n }\n\n if (opts.word) {\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n )\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) {\n start = this.positionInside(index)\n end = this.positionInside(index + opts.word.length)\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line,\n offset: sourceOffset(inputString, opts.start)\n }\n } else if (opts.index) {\n start = this.positionInside(opts.index)\n }\n\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line,\n offset: sourceOffset(inputString, opts.end)\n }\n } else if (typeof opts.endIndex === 'number') {\n end = this.positionInside(opts.endIndex)\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1)\n }\n }\n\n if (\n end.line < start.line ||\n (end.line === start.line && end.column <= start.column)\n ) {\n end = {\n column: start.column + 1,\n line: start.line,\n offset: start.offset + 1\n }\n }\n\n return { end, start }\n }\n\n raw(prop, defaultType) {\n let str = new Stringifier()\n return str.raw(this, prop, defaultType)\n }\n\n remove() {\n if (this.parent) {\n this.parent.removeChild(this)\n }\n this.parent = undefined\n return this\n }\n\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this\n let foundSelf = false\n for (let node of nodes) {\n if (node === this) {\n foundSelf = true\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node)\n bookmark = node\n } else {\n this.parent.insertBefore(bookmark, node)\n }\n }\n\n if (!foundSelf) {\n this.remove()\n }\n }\n\n return this\n }\n\n root() {\n let result = this\n while (result.parent && result.parent.type !== 'document') {\n result = result.parent\n }\n return result\n }\n\n toJSON(_, inputs) {\n let fixed = {}\n let emitInputs = inputs == null\n inputs = inputs || new Map()\n let inputsNextIndex = 0\n\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n /* c8 ignore next 2 */\n continue\n }\n if (name === 'parent' || name === 'proxyCache') continue\n let value = this[name]\n\n if (Array.isArray(value)) {\n fixed[name] = value.map(i => {\n if (typeof i === 'object' && i.toJSON) {\n return i.toJSON(null, inputs)\n } else {\n return i\n }\n })\n } else if (typeof value === 'object' && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs)\n } else if (name === 'source') {\n if (value == null) continue\n let inputId = inputs.get(value.input)\n if (inputId == null) {\n inputId = inputsNextIndex\n inputs.set(value.input, inputsNextIndex)\n inputsNextIndex++\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n }\n } else {\n fixed[name] = value\n }\n }\n\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map(input => input.toJSON())\n }\n\n return fixed\n }\n\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor())\n }\n return this.proxyCache\n }\n\n toString(stringifier = stringify) {\n if (stringifier.stringify) stringifier = stringifier.stringify\n let result = ''\n stringifier(this, i => {\n result += i\n })\n return result\n }\n\n warn(result, text, opts = {}) {\n let data = { node: this }\n for (let i in opts) data[i] = opts[i]\n return result.warn(text, data)\n }\n}\n\nmodule.exports = Node\nNode.default = Node\n","'use strict'\n\nlet Node = require('./node')\n\nclass Comment extends Node {\n constructor(defaults) {\n super(defaults)\n this.type = 'comment'\n }\n}\n\nmodule.exports = Comment\nComment.default = Comment\n","'use strict'\n\nlet Node = require('./node')\n\nclass Declaration extends Node {\n get variable() {\n return this.prop.startsWith('--') || this.prop[0] === '$'\n }\n\n constructor(defaults) {\n if (\n defaults &&\n typeof defaults.value !== 'undefined' &&\n typeof defaults.value !== 'string'\n ) {\n defaults = { ...defaults, value: String(defaults.value) }\n }\n super(defaults)\n this.type = 'decl'\n }\n}\n\nmodule.exports = Declaration\nDeclaration.default = Declaration\n","'use strict'\n\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Node = require('./node')\nlet { isClean, my } = require('./symbols')\n\nlet AtRule, parse, Root, Rule\n\nfunction cleanSource(nodes) {\n return nodes.map(i => {\n if (i.nodes) i.nodes = cleanSource(i.nodes)\n delete i.source\n return i\n })\n}\n\nfunction markTreeDirty(node) {\n node[isClean] = false\n if (node.proxyOf.nodes) {\n for (let i of node.proxyOf.nodes) {\n markTreeDirty(i)\n }\n }\n}\n\nclass Container extends Node {\n get first() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[0]\n }\n\n get last() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]\n }\n\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last)\n for (let node of nodes) this.proxyOf.nodes.push(node)\n }\n\n this.markDirty()\n\n return this\n }\n\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween)\n if (this.nodes) {\n for (let node of this.nodes) node.cleanRaws(keepBetween)\n }\n }\n\n each(callback) {\n if (!this.proxyOf.nodes) return undefined\n let iterator = this.getIterator()\n\n let index, result\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index = this.indexes[iterator]\n result = callback(this.proxyOf.nodes[index], index)\n if (result === false) break\n\n this.indexes[iterator] += 1\n }\n\n delete this.indexes[iterator]\n return result\n }\n\n every(condition) {\n return this.nodes.every(condition)\n }\n\n getIterator() {\n if (!this.lastEach) this.lastEach = 0\n if (!this.indexes) this.indexes = {}\n\n this.lastEach += 1\n let iterator = this.lastEach\n this.indexes[iterator] = 0\n\n return iterator\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (!node[prop]) {\n return node[prop]\n } else if (\n prop === 'each' ||\n (typeof prop === 'string' && prop.startsWith('walk'))\n ) {\n return (...args) => {\n return node[prop](\n ...args.map(i => {\n if (typeof i === 'function') {\n return (child, index) => i(child.toProxy(), index)\n } else {\n return i\n }\n })\n )\n }\n } else if (prop === 'every' || prop === 'some') {\n return cb => {\n return node[prop]((child, ...other) =>\n cb(child.toProxy(), ...other)\n )\n }\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else if (prop === 'nodes') {\n return node.nodes.map(i => i.toProxy())\n } else if (prop === 'first' || prop === 'last') {\n return node[prop].toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (prop === 'name' || prop === 'params' || prop === 'selector') {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n index(child) {\n if (typeof child === 'number') return child\n if (child.proxyOf) child = child.proxyOf\n return this.proxyOf.nodes.indexOf(child)\n }\n\n insertAfter(exist, add) {\n let existIndex = this.index(exist)\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex < index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n insertBefore(exist, add) {\n let existIndex = this.index(exist)\n let type = existIndex === 0 ? 'prepend' : false\n let nodes = this.normalize(\n add,\n this.proxyOf.nodes[existIndex],\n type\n ).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex <= index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n normalize(nodes, sample) {\n if (typeof nodes === 'string') {\n nodes = cleanSource(parse(nodes).nodes)\n } else if (typeof nodes === 'undefined') {\n nodes = []\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type === 'root' && this.type !== 'document') {\n nodes = nodes.nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type) {\n nodes = [nodes]\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation')\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value)\n }\n nodes = [new Declaration(nodes)]\n } else if (nodes.selector || nodes.selectors) {\n nodes = [new Rule(nodes)]\n } else if (nodes.name) {\n nodes = [new AtRule(nodes)]\n } else if (nodes.text) {\n nodes = [new Comment(nodes)]\n } else {\n throw new Error('Unknown node type in node creation')\n }\n\n let processed = nodes.map(i => {\n /* c8 ignore next */\n if (!i[my]) Container.rebuild(i)\n i = i.proxyOf\n if (i.parent) i.parent.removeChild(i)\n if (i[isClean]) markTreeDirty(i)\n\n if (!i.raws) i.raws = {}\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/\\S/g, '')\n }\n }\n i.parent = this.proxyOf\n return i\n })\n\n return processed\n }\n\n prepend(...children) {\n children = children.reverse()\n for (let child of children) {\n let nodes = this.normalize(child, this.first, 'prepend').reverse()\n for (let node of nodes) this.proxyOf.nodes.unshift(node)\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n push(child) {\n child.parent = this\n this.proxyOf.nodes.push(child)\n return this\n }\n\n removeAll() {\n for (let node of this.proxyOf.nodes) node.parent = undefined\n this.proxyOf.nodes = []\n\n this.markDirty()\n\n return this\n }\n\n removeChild(child) {\n child = this.index(child)\n this.proxyOf.nodes[child].parent = undefined\n this.proxyOf.nodes.splice(child, 1)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (index >= child) {\n this.indexes[id] = index - 1\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts\n opts = {}\n }\n\n this.walkDecls(decl => {\n if (opts.props && !opts.props.includes(decl.prop)) return\n if (opts.fast && !decl.value.includes(opts.fast)) return\n\n decl.value = decl.value.replace(pattern, callback)\n })\n\n this.markDirty()\n\n return this\n }\n\n some(condition) {\n return this.nodes.some(condition)\n }\n\n walk(callback) {\n return this.each((child, i) => {\n let result\n try {\n result = callback(child, i)\n } catch (e) {\n throw child.addToError(e)\n }\n if (result !== false && child.walk) {\n result = child.walk(callback)\n }\n\n return result\n })\n }\n\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name\n return this.walk((child, i) => {\n if (child.type === 'atrule') {\n return callback(child, i)\n }\n })\n }\n if (name instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i)\n }\n })\n }\n\n walkComments(callback) {\n return this.walk((child, i) => {\n if (child.type === 'comment') {\n return callback(child, i)\n }\n })\n }\n\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop\n return this.walk((child, i) => {\n if (child.type === 'decl') {\n return callback(child, i)\n }\n })\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i)\n }\n })\n }\n\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector\n\n return this.walk((child, i) => {\n if (child.type === 'rule') {\n return callback(child, i)\n }\n })\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i)\n }\n })\n }\n}\n\nContainer.registerParse = dependant => {\n parse = dependant\n}\n\nContainer.registerRule = dependant => {\n Rule = dependant\n}\n\nContainer.registerAtRule = dependant => {\n AtRule = dependant\n}\n\nContainer.registerRoot = dependant => {\n Root = dependant\n}\n\nmodule.exports = Container\nContainer.default = Container\n\n/* c8 ignore start */\nContainer.rebuild = node => {\n if (node.type === 'atrule') {\n Object.setPrototypeOf(node, AtRule.prototype)\n } else if (node.type === 'rule') {\n Object.setPrototypeOf(node, Rule.prototype)\n } else if (node.type === 'decl') {\n Object.setPrototypeOf(node, Declaration.prototype)\n } else if (node.type === 'comment') {\n Object.setPrototypeOf(node, Comment.prototype)\n } else if (node.type === 'root') {\n Object.setPrototypeOf(node, Root.prototype)\n }\n\n node[my] = true\n\n if (node.nodes) {\n node.nodes.forEach(child => {\n Container.rebuild(child)\n })\n }\n}\n/* c8 ignore stop */\n","'use strict'\n\nlet Container = require('./container')\n\nclass AtRule extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'atrule'\n }\n\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.append(...children)\n }\n\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.prepend(...children)\n }\n}\n\nmodule.exports = AtRule\nAtRule.default = AtRule\n\nContainer.registerAtRule(AtRule)\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Document extends Container {\n constructor(defaults) {\n // type needs to be passed to super, otherwise child roots won't be normalized correctly\n super({ type: 'document', ...defaults })\n\n if (!this.nodes) {\n this.nodes = []\n }\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n\n return lazy.stringify()\n }\n}\n\nDocument.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nDocument.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Document\nDocument.default = Document\n","// This alphabet uses `A-Za-z0-9_-` symbols.\n// The order of characters is optimized for better gzip and brotli compression.\n// References to the same file (works both for gzip and brotli):\n// `'use`, `andom`, and `rict'`\n// References to the brotli default dictionary:\n// `-26T`, `1983`, `40px`, `75px`, `bush`, `jack`, `mind`, `very`, and `wolf`\nlet urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n // A compact alternative for `for (var i = 0; i < step; i++)`.\n let i = size | 0\n while (i--) {\n // `| 0` is more compact and faster than `Math.floor()`.\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\n\nlet nanoid = (size = 21) => {\n let id = ''\n // A compact alternative for `for (var i = 0; i < step; i++)`.\n let i = size | 0\n while (i--) {\n // `| 0` is more compact and faster than `Math.floor()`.\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\n\nmodule.exports = { nanoid, customAlphabet }\n","'use strict'\n\nlet { existsSync, readFileSync } = require('fs')\nlet { dirname, join } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\n\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, 'base64').toString()\n } else {\n /* c8 ignore next 2 */\n return window.atob(str)\n }\n}\n\nclass PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return\n this.loadAnnotation(css)\n this.inline = this.startWith(this.annotation, 'data:')\n\n let prev = opts.map ? opts.map.prev : undefined\n let text = this.loadMap(opts.from, prev)\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from\n }\n if (this.mapFile) this.root = dirname(this.mapFile)\n if (text) this.text = text\n }\n\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer(this.text)\n }\n return this.consumerCache\n }\n\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/\n let baseUri = /^data:application\\/json;base64,/\n let charsetUri = /^data:application\\/json;charset=utf-?8,/\n let uri = /^data:application\\/json,/\n\n let uriMatch = text.match(charsetUri) || text.match(uri)\n if (uriMatch) {\n return decodeURIComponent(text.substr(uriMatch[0].length))\n }\n\n let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri)\n if (baseUriMatch) {\n return fromBase64(text.substr(baseUriMatch[0].length))\n }\n\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1]\n throw new Error('Unsupported source map encoding ' + encoding)\n }\n\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, '').trim()\n }\n\n isMap(map) {\n if (typeof map !== 'object') return false\n return (\n typeof map.mappings === 'string' ||\n typeof map._mappings === 'string' ||\n Array.isArray(map.sections)\n )\n }\n\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/g)\n if (!comments) return\n\n // sourceMappingURLs from comments, strings, etc.\n let start = css.lastIndexOf(comments.pop())\n let end = css.indexOf('*/', start)\n\n if (start > -1 && end > -1) {\n // Locate the last sourceMappingURL to avoid pickin\n this.annotation = this.getAnnotationURL(css.substring(start, end))\n }\n }\n\n loadFile(path) {\n this.root = dirname(path)\n if (existsSync(path)) {\n this.mapFile = path\n return readFileSync(path, 'utf-8').toString().trim()\n }\n }\n\n loadMap(file, prev) {\n if (prev === false) return false\n\n if (prev) {\n if (typeof prev === 'string') {\n return prev\n } else if (typeof prev === 'function') {\n let prevPath = prev(file)\n if (prevPath) {\n let map = this.loadFile(prevPath)\n if (!map) {\n throw new Error(\n 'Unable to load previous source map: ' + prevPath.toString()\n )\n }\n return map\n }\n } else if (prev instanceof SourceMapConsumer) {\n return SourceMapGenerator.fromSourceMap(prev).toString()\n } else if (prev instanceof SourceMapGenerator) {\n return prev.toString()\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev)\n } else {\n throw new Error(\n 'Unsupported previous source map format: ' + prev.toString()\n )\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation)\n } else if (this.annotation) {\n let map = this.annotation\n if (file) map = join(dirname(file), map)\n return this.loadFile(map)\n }\n }\n\n startWith(string, start) {\n if (!string) return false\n return string.substr(0, start.length) === start\n }\n\n withContent() {\n return !!(\n this.consumer().sourcesContent &&\n this.consumer().sourcesContent.length > 0\n )\n }\n}\n\nmodule.exports = PreviousMap\nPreviousMap.default = PreviousMap\n","'use strict'\n\nlet { nanoid } = require('nanoid/non-secure')\nlet { isAbsolute, resolve } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { fileURLToPath, pathToFileURL } = require('url')\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet PreviousMap = require('./previous-map')\nlet terminalHighlight = require('./terminal-highlight')\n\nlet lineToIndexCache = Symbol('lineToIndexCache')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(resolve && isAbsolute)\n\nfunction getLineToIndex(input) {\n if (input[lineToIndexCache]) return input[lineToIndexCache]\n let lines = input.css.split('\\n')\n let lineToIndex = new Array(lines.length)\n let prevIndex = 0\n\n for (let i = 0, l = lines.length; i < l; i++) {\n lineToIndex[i] = prevIndex\n prevIndex += lines[i].length + 1\n }\n\n input[lineToIndexCache] = lineToIndex\n return lineToIndex\n}\n\nclass Input {\n get from() {\n return this.file || this.id\n }\n\n constructor(css, opts = {}) {\n if (\n css === null ||\n typeof css === 'undefined' ||\n (typeof css === 'object' && !css.toString)\n ) {\n throw new Error(`PostCSS received ${css} instead of CSS string`)\n }\n\n this.css = css.toString()\n\n if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n this.hasBOM = true\n this.css = this.css.slice(1)\n } else {\n this.hasBOM = false\n }\n\n this.document = this.css\n if (opts.document) this.document = opts.document.toString()\n\n if (opts.from) {\n if (\n !pathAvailable ||\n /^\\w+:\\/\\//.test(opts.from) ||\n isAbsolute(opts.from)\n ) {\n this.file = opts.from\n } else {\n this.file = resolve(opts.from)\n }\n }\n\n if (pathAvailable && sourceMapAvailable) {\n let map = new PreviousMap(this.css, opts)\n if (map.text) {\n this.map = map\n let file = map.consumer().file\n if (!this.file && file) this.file = this.mapResolve(file)\n }\n }\n\n if (!this.file) {\n this.id = '<input css ' + nanoid(6) + '>'\n }\n if (this.map) this.map.file = this.from\n }\n\n error(message, line, column, opts = {}) {\n let endColumn, endLine, endOffset, offset, result\n\n if (line && typeof line === 'object') {\n let start = line\n let end = column\n if (typeof start.offset === 'number') {\n offset = start.offset\n let pos = this.fromOffset(offset)\n line = pos.line\n column = pos.col\n } else {\n line = start.line\n column = start.column\n offset = this.fromLineAndColumn(line, column)\n }\n if (typeof end.offset === 'number') {\n endOffset = end.offset\n let pos = this.fromOffset(endOffset)\n endLine = pos.line\n endColumn = pos.col\n } else {\n endLine = end.line\n endColumn = end.column\n endOffset = this.fromLineAndColumn(end.line, end.column)\n }\n } else if (!column) {\n offset = line\n let pos = this.fromOffset(offset)\n line = pos.line\n column = pos.col\n } else {\n offset = this.fromLineAndColumn(line, column)\n }\n\n let origin = this.origin(line, column, endLine, endColumn)\n if (origin) {\n result = new CssSyntaxError(\n message,\n origin.endLine === undefined\n ? origin.line\n : { column: origin.column, line: origin.line },\n origin.endLine === undefined\n ? origin.column\n : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n )\n } else {\n result = new CssSyntaxError(\n message,\n endLine === undefined ? line : { column, line },\n endLine === undefined ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n )\n }\n\n result.input = { column, endColumn, endLine, endOffset, line, offset, source: this.css }\n if (this.file) {\n if (pathToFileURL) {\n result.input.url = pathToFileURL(this.file).toString()\n }\n result.input.file = this.file\n }\n\n return result\n }\n\n fromLineAndColumn(line, column) {\n let lineToIndex = getLineToIndex(this)\n let index = lineToIndex[line - 1]\n return index + column - 1\n }\n\n fromOffset(offset) {\n let lineToIndex = getLineToIndex(this)\n let lastLine = lineToIndex[lineToIndex.length - 1]\n\n let min = 0\n if (offset >= lastLine) {\n min = lineToIndex.length - 1\n } else {\n let max = lineToIndex.length - 2\n let mid\n while (min < max) {\n mid = min + ((max - min) >> 1)\n if (offset < lineToIndex[mid]) {\n max = mid - 1\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1\n } else {\n min = mid\n break\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n }\n }\n\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file\n }\n return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file)\n }\n\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false\n let consumer = this.map.consumer()\n\n let from = consumer.originalPositionFor({ column, line })\n if (!from.source) return false\n\n let to\n if (typeof endLine === 'number') {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine })\n }\n\n let fromUrl\n\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL(from.source)\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n )\n }\n\n let result = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n }\n\n if (fromUrl.protocol === 'file:') {\n if (fileURLToPath) {\n result.file = fileURLToPath(fromUrl)\n } else {\n /* c8 ignore next 2 */\n throw new Error(`file: protocol is not available in this PostCSS build`)\n }\n }\n\n let source = consumer.sourceContentFor(from.source)\n if (source) result.source = source\n\n return result\n }\n\n toJSON() {\n let json = {}\n for (let name of ['hasBOM', 'css', 'file', 'id']) {\n if (this[name] != null) {\n json[name] = this[name]\n }\n }\n if (this.map) {\n json.map = { ...this.map }\n if (json.map.consumerCache) {\n json.map.consumerCache = undefined\n }\n }\n return json\n }\n}\n\nmodule.exports = Input\nInput.default = Input\n\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input)\n}\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Root extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'root'\n if (!this.nodes) this.nodes = []\n }\n\n normalize(child, sample, type) {\n let nodes = super.normalize(child)\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before\n } else {\n delete sample.raws.before\n }\n } else if (this.first !== sample) {\n for (let node of nodes) {\n node.raws.before = sample.raws.before\n }\n }\n }\n\n return nodes\n }\n\n removeChild(child, ignore) {\n let index = this.index(child)\n\n if (!ignore && index === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index].raws.before\n }\n\n return super.removeChild(child)\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n return lazy.stringify()\n }\n}\n\nRoot.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nRoot.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Root\nRoot.default = Root\n\nContainer.registerRoot(Root)\n","'use strict'\n\nlet list = {\n comma(string) {\n return list.split(string, [','], true)\n },\n\n space(string) {\n let spaces = [' ', '\\n', '\\t']\n return list.split(string, spaces)\n },\n\n split(string, separators, last) {\n let array = []\n let current = ''\n let split = false\n\n let func = 0\n let inQuote = false\n let prevQuote = ''\n let escape = false\n\n for (let letter of string) {\n if (escape) {\n escape = false\n } else if (letter === '\\\\') {\n escape = true\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true\n prevQuote = letter\n } else if (letter === '(') {\n func += 1\n } else if (letter === ')') {\n if (func > 0) func -= 1\n } else if (func === 0) {\n if (separators.includes(letter)) split = true\n }\n\n if (split) {\n if (current !== '') array.push(current.trim())\n current = ''\n split = false\n } else {\n current += letter\n }\n }\n\n if (last || current !== '') array.push(current.trim())\n return array\n }\n}\n\nmodule.exports = list\nlist.default = list\n","'use strict'\n\nlet Container = require('./container')\nlet list = require('./list')\n\nclass Rule extends Container {\n get selectors() {\n return list.comma(this.selector)\n }\n\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null\n let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')\n this.selector = values.join(sep)\n }\n\n constructor(defaults) {\n super(defaults)\n this.type = 'rule'\n if (!this.nodes) this.nodes = []\n }\n}\n\nmodule.exports = Rule\nRule.default = Rule\n\nContainer.registerRule(Rule)\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Input = require('./input')\nlet PreviousMap = require('./previous-map')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nfunction fromJSON(json, inputs) {\n if (Array.isArray(json)) return json.map(n => fromJSON(n))\n\n let { inputs: ownInputs, ...defaults } = json\n if (ownInputs) {\n inputs = []\n for (let input of ownInputs) {\n let inputHydrated = { ...input, __proto__: Input.prototype }\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap.prototype\n }\n }\n inputs.push(inputHydrated)\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map(n => fromJSON(n, inputs))\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source\n defaults.source = source\n if (inputId != null) {\n defaults.source.input = inputs[inputId]\n }\n }\n if (defaults.type === 'root') {\n return new Root(defaults)\n } else if (defaults.type === 'decl') {\n return new Declaration(defaults)\n } else if (defaults.type === 'rule') {\n return new Rule(defaults)\n } else if (defaults.type === 'comment') {\n return new Comment(defaults)\n } else if (defaults.type === 'atrule') {\n return new AtRule(defaults)\n } else {\n throw new Error('Unknown node type: ' + json.type)\n }\n}\n\nmodule.exports = fromJSON\nfromJSON.default = fromJSON\n","'use strict'\n\nlet { dirname, relative, resolve, sep } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { pathToFileURL } = require('url')\n\nlet Input = require('./input')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(dirname && resolve && relative && sep)\n\nclass MapGenerator {\n constructor(stringify, root, opts, cssString) {\n this.stringify = stringify\n this.mapOpts = opts.map || {}\n this.root = root\n this.opts = opts\n this.css = cssString\n this.originalCSS = cssString\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute\n\n this.memoizedFileURLs = new Map()\n this.memoizedPaths = new Map()\n this.memoizedURLs = new Map()\n }\n\n addAnnotation() {\n let content\n\n if (this.isInline()) {\n content =\n 'data:application/json;base64,' + this.toBase64(this.map.toString())\n } else if (typeof this.mapOpts.annotation === 'string') {\n content = this.mapOpts.annotation\n } else if (typeof this.mapOpts.annotation === 'function') {\n content = this.mapOpts.annotation(this.opts.to, this.root)\n } else {\n content = this.outputFile() + '.map'\n }\n let eol = '\\n'\n if (this.css.includes('\\r\\n')) eol = '\\r\\n'\n\n this.css += eol + '/*# sourceMappingURL=' + content + ' */'\n }\n\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file))\n let root = prev.root || dirname(prev.file)\n let map\n\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text)\n if (map.sourcesContent) {\n map.sourcesContent = null\n }\n } else {\n map = prev.consumer()\n }\n\n this.map.applySourceMap(map, from, this.toUrl(this.path(root)))\n }\n }\n\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return\n\n if (this.root) {\n let node\n for (let i = this.root.nodes.length - 1; i >= 0; i--) {\n node = this.root.nodes[i]\n if (node.type !== 'comment') continue\n if (node.text.startsWith('# sourceMappingURL=')) {\n this.root.removeChild(i)\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, '')\n }\n }\n\n generate() {\n this.clearAnnotation()\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap()\n } else {\n let result = ''\n this.stringify(this.root, i => {\n result += i\n })\n return [result]\n }\n }\n\n generateMap() {\n if (this.root) {\n this.generateString()\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer()\n prev.file = this.outputFile()\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n })\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n })\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : '<no source>'\n })\n }\n\n if (this.isSourcesContent()) this.setSourcesContent()\n if (this.root && this.previous().length > 0) this.applyPrevMaps()\n if (this.isAnnotation()) this.addAnnotation()\n\n if (this.isInline()) {\n return [this.css]\n } else {\n return [this.css, this.map]\n }\n }\n\n generateString() {\n this.css = ''\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n })\n\n let line = 1\n let column = 1\n\n let noSource = '<no source>'\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: ''\n }\n\n let last, lines\n this.stringify(this.root, (str, node, type) => {\n this.css += str\n\n if (node && type !== 'end') {\n mapping.generated.line = line\n mapping.generated.column = column - 1\n if (node.source && node.source.start) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.start.line\n mapping.original.column = node.source.start.column - 1\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n this.map.addMapping(mapping)\n }\n }\n\n lines = str.match(/\\n/g)\n if (lines) {\n line += lines.length\n last = str.lastIndexOf('\\n')\n column = str.length - last\n } else {\n column += str.length\n }\n\n if (node && type !== 'start') {\n let p = node.parent || { raws: {} }\n let childless =\n node.type === 'decl' || (node.type === 'atrule' && !node.nodes)\n if (!childless || node !== p.last || p.raws.semicolon) {\n if (node.source && node.source.end) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.end.line\n mapping.original.column = node.source.end.column - 1\n mapping.generated.line = line\n mapping.generated.column = column - 2\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n mapping.generated.line = line\n mapping.generated.column = column - 1\n this.map.addMapping(mapping)\n }\n }\n }\n })\n }\n\n isAnnotation() {\n if (this.isInline()) {\n return true\n }\n if (typeof this.mapOpts.annotation !== 'undefined') {\n return this.mapOpts.annotation\n }\n if (this.previous().length) {\n return this.previous().some(i => i.annotation)\n }\n return true\n }\n\n isInline() {\n if (typeof this.mapOpts.inline !== 'undefined') {\n return this.mapOpts.inline\n }\n\n let annotation = this.mapOpts.annotation\n if (typeof annotation !== 'undefined' && annotation !== true) {\n return false\n }\n\n if (this.previous().length) {\n return this.previous().some(i => i.inline)\n }\n return true\n }\n\n isMap() {\n if (typeof this.opts.map !== 'undefined') {\n return !!this.opts.map\n }\n return this.previous().length > 0\n }\n\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n return this.mapOpts.sourcesContent\n }\n if (this.previous().length) {\n return this.previous().some(i => i.withContent())\n }\n return true\n }\n\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to)\n } else if (this.opts.from) {\n return this.path(this.opts.from)\n } else {\n return 'to.css'\n }\n }\n\n path(file) {\n if (this.mapOpts.absolute) return file\n if (file.charCodeAt(0) === 60 /* `<` */) return file\n if (/^\\w+:\\/\\//.test(file)) return file\n let cached = this.memoizedPaths.get(file)\n if (cached) return cached\n\n let from = this.opts.to ? dirname(this.opts.to) : '.'\n\n if (typeof this.mapOpts.annotation === 'string') {\n from = dirname(resolve(from, this.mapOpts.annotation))\n }\n\n let path = relative(from, file)\n this.memoizedPaths.set(file, path)\n\n return path\n }\n\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = []\n if (this.root) {\n this.root.walk(node => {\n if (node.source && node.source.input.map) {\n let map = node.source.input.map\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map)\n }\n }\n })\n } else {\n let input = new Input(this.originalCSS, this.opts)\n if (input.map) this.previousMaps.push(input.map)\n }\n }\n\n return this.previousMaps\n }\n\n setSourcesContent() {\n let already = {}\n if (this.root) {\n this.root.walk(node => {\n if (node.source) {\n let from = node.source.input.from\n if (from && !already[from]) {\n already[from] = true\n let fromUrl = this.usesFileUrls\n ? this.toFileUrl(from)\n : this.toUrl(this.path(from))\n this.map.setSourceContent(fromUrl, node.source.input.css)\n }\n }\n })\n } else if (this.css) {\n let from = this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : '<no source>'\n this.map.setSourceContent(from, this.css)\n }\n }\n\n sourcePath(node) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from)\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node.source.input.from)\n } else {\n return this.toUrl(this.path(node.source.input.from))\n }\n }\n\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString('base64')\n } else {\n return window.btoa(unescape(encodeURIComponent(str)))\n }\n }\n\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path)\n if (cached) return cached\n\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString()\n this.memoizedFileURLs.set(path, fileURL)\n\n return fileURL\n } else {\n throw new Error(\n '`map.absolute` option is not available in this PostCSS build'\n )\n }\n }\n\n toUrl(path) {\n let cached = this.memoizedURLs.get(path)\n if (cached) return cached\n\n if (sep === '\\\\') {\n path = path.replace(/\\\\/g, '/')\n }\n\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent)\n this.memoizedURLs.set(path, url)\n\n return url\n }\n}\n\nmodule.exports = MapGenerator\n","'use strict'\n\nconst SINGLE_QUOTE = \"'\".charCodeAt(0)\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0)\nconst BACKSLASH = '\\\\'.charCodeAt(0)\nconst SLASH = '/'.charCodeAt(0)\nconst NEWLINE = '\\n'.charCodeAt(0)\nconst SPACE = ' '.charCodeAt(0)\nconst FEED = '\\f'.charCodeAt(0)\nconst TAB = '\\t'.charCodeAt(0)\nconst CR = '\\r'.charCodeAt(0)\nconst OPEN_SQUARE = '['.charCodeAt(0)\nconst CLOSE_SQUARE = ']'.charCodeAt(0)\nconst OPEN_PARENTHESES = '('.charCodeAt(0)\nconst CLOSE_PARENTHESES = ')'.charCodeAt(0)\nconst OPEN_CURLY = '{'.charCodeAt(0)\nconst CLOSE_CURLY = '}'.charCodeAt(0)\nconst SEMICOLON = ';'.charCodeAt(0)\nconst ASTERISK = '*'.charCodeAt(0)\nconst COLON = ':'.charCodeAt(0)\nconst AT = '@'.charCodeAt(0)\n\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/\nconst RE_HEX_ESCAPE = /[\\da-f]/i\n\nmodule.exports = function tokenizer(input, options = {}) {\n let css = input.css.valueOf()\n let ignore = options.ignoreErrors\n\n let code, content, escape, next, quote\n let currentToken, escaped, escapePos, n, prev\n\n let length = css.length\n let pos = 0\n let buffer = []\n let returned = []\n\n function position() {\n return pos\n }\n\n function unclosed(what) {\n throw input.error('Unclosed ' + what, pos)\n }\n\n function endOfFile() {\n return returned.length === 0 && pos >= length\n }\n\n function nextToken(opts) {\n if (returned.length) return returned.pop()\n if (pos >= length) return\n\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false\n\n code = css.charCodeAt(pos)\n\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos\n do {\n next += 1\n code = css.charCodeAt(next)\n } while (\n code === SPACE ||\n code === NEWLINE ||\n code === TAB ||\n code === CR ||\n code === FEED\n )\n\n currentToken = ['space', css.slice(pos, next)]\n pos = next - 1\n break\n }\n\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code)\n currentToken = [controlChar, controlChar, pos]\n break\n }\n\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : ''\n n = css.charCodeAt(pos + 1)\n if (\n prev === 'url' &&\n n !== SINGLE_QUOTE &&\n n !== DOUBLE_QUOTE &&\n n !== SPACE &&\n n !== NEWLINE &&\n n !== TAB &&\n n !== FEED &&\n n !== CR\n ) {\n next = pos\n do {\n escaped = false\n next = css.indexOf(')', next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos\n break\n } else {\n unclosed('bracket')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['brackets', css.slice(pos, next + 1), pos, next]\n\n pos = next\n } else {\n next = css.indexOf(')', pos + 1)\n content = css.slice(pos, next + 1)\n\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = ['(', '(', pos]\n } else {\n currentToken = ['brackets', content, pos, next]\n pos = next\n }\n }\n\n break\n }\n\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"'\n next = pos\n do {\n escaped = false\n next = css.indexOf(quote, next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1\n break\n } else {\n unclosed('string')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['string', css.slice(pos, next + 1), pos, next]\n pos = next\n break\n }\n\n case AT: {\n RE_AT_END.lastIndex = pos + 1\n RE_AT_END.test(css)\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_AT_END.lastIndex - 2\n }\n\n currentToken = ['at-word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n case BACKSLASH: {\n next = pos\n escape = true\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1\n escape = !escape\n }\n code = css.charCodeAt(next + 1)\n if (\n escape &&\n code !== SLASH &&\n code !== SPACE &&\n code !== NEWLINE &&\n code !== TAB &&\n code !== CR &&\n code !== FEED\n ) {\n next += 1\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1\n }\n }\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf('*/', pos + 2) + 1\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length\n } else {\n unclosed('comment')\n }\n }\n\n currentToken = ['comment', css.slice(pos, next + 1), pos, next]\n pos = next\n } else {\n RE_WORD_END.lastIndex = pos + 1\n RE_WORD_END.test(css)\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_WORD_END.lastIndex - 2\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n buffer.push(currentToken)\n pos = next\n }\n\n break\n }\n }\n\n pos++\n return currentToken\n }\n\n function back(token) {\n returned.push(token)\n }\n\n return {\n back,\n endOfFile,\n nextToken,\n position\n }\n}\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Root = require('./root')\nlet Rule = require('./rule')\nlet tokenizer = require('./tokenize')\n\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n}\n\nfunction findLastWithPosition(tokens) {\n for (let i = tokens.length - 1; i >= 0; i--) {\n let token = tokens[i]\n let pos = token[3] || token[2]\n if (pos) return pos\n }\n}\n\nclass Parser {\n constructor(input) {\n this.input = input\n\n this.root = new Root()\n this.current = this.root\n this.spaces = ''\n this.semicolon = false\n\n this.createTokenizer()\n this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }\n }\n\n atrule(token) {\n let node = new AtRule()\n node.name = token[1].slice(1)\n if (node.name === '') {\n this.unnamedAtrule(node, token)\n }\n this.init(node, token[2])\n\n let type\n let prev\n let shift\n let last = false\n let open = false\n let params = []\n let brackets = []\n\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n type = token[0]\n\n if (type === '(' || type === '[') {\n brackets.push(type === '(' ? ')' : ']')\n } else if (type === '{' && brackets.length > 0) {\n brackets.push('}')\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n }\n\n if (brackets.length === 0) {\n if (type === ';') {\n node.source.end = this.getPosition(token[2])\n node.source.end.offset++\n this.semicolon = true\n break\n } else if (type === '{') {\n open = true\n break\n } else if (type === '}') {\n if (params.length > 0) {\n shift = params.length - 1\n prev = params[shift]\n while (prev && prev[0] === 'space') {\n prev = params[--shift]\n }\n if (prev) {\n node.source.end = this.getPosition(prev[3] || prev[2])\n node.source.end.offset++\n }\n }\n this.end(token)\n break\n } else {\n params.push(token)\n }\n } else {\n params.push(token)\n }\n\n if (this.tokenizer.endOfFile()) {\n last = true\n break\n }\n }\n\n node.raws.between = this.spacesAndCommentsFromEnd(params)\n if (params.length) {\n node.raws.afterName = this.spacesAndCommentsFromStart(params)\n this.raw(node, 'params', params)\n if (last) {\n token = params[params.length - 1]\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\n this.spaces = node.raws.between\n node.raws.between = ''\n }\n } else {\n node.raws.afterName = ''\n node.params = ''\n }\n\n if (open) {\n node.nodes = []\n this.current = node\n }\n }\n\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens)\n if (colon === false) return\n\n let founded = 0\n let token\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j]\n if (token[0] !== 'space') {\n founded += 1\n if (founded === 2) break\n }\n }\n // If the token is a word, e.g. `!important`, `red` or any other valid property's value.\n // Then we need to return the colon after that word token. [3] is the \"end\" colon of that word.\n // And because we need it after that one we do +1 to get the next one.\n throw this.input.error(\n 'Missed semicolon',\n token[0] === 'word' ? token[3] + 1 : token[2]\n )\n }\n\n colon(tokens) {\n let brackets = 0\n let prev, token, type\n for (let [i, element] of tokens.entries()) {\n token = element\n type = token[0]\n\n if (type === '(') {\n brackets += 1\n }\n if (type === ')') {\n brackets -= 1\n }\n if (brackets === 0 && type === ':') {\n if (!prev) {\n this.doubleColon(token)\n } else if (prev[0] === 'word' && prev[1] === 'progid') {\n continue\n } else {\n return i\n }\n }\n\n prev = token\n }\n return false\n }\n\n comment(token) {\n let node = new Comment()\n this.init(node, token[2])\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\n\n let text = token[1].slice(2, -2)\n if (/^\\s*$/.test(text)) {\n node.text = ''\n node.raws.left = text\n node.raws.right = ''\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/)\n node.text = match[2]\n node.raws.left = match[1]\n node.raws.right = match[3]\n }\n }\n\n createTokenizer() {\n this.tokenizer = tokenizer(this.input)\n }\n\n decl(tokens, customProperty) {\n let node = new Declaration()\n this.init(node, tokens[0][2])\n\n let last = tokens[tokens.length - 1]\n if (last[0] === ';') {\n this.semicolon = true\n tokens.pop()\n }\n\n node.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n )\n node.source.end.offset++\n\n while (tokens[0][0] !== 'word') {\n if (tokens.length === 1) this.unknownWord(tokens)\n node.raws.before += tokens.shift()[1]\n }\n node.source.start = this.getPosition(tokens[0][2])\n\n node.prop = ''\n while (tokens.length) {\n let type = tokens[0][0]\n if (type === ':' || type === 'space' || type === 'comment') {\n break\n }\n node.prop += tokens.shift()[1]\n }\n\n node.raws.between = ''\n\n let token\n while (tokens.length) {\n token = tokens.shift()\n\n if (token[0] === ':') {\n node.raws.between += token[1]\n break\n } else {\n if (token[0] === 'word' && /\\w/.test(token[1])) {\n this.unknownWord([token])\n }\n node.raws.between += token[1]\n }\n }\n\n if (node.prop[0] === '_' || node.prop[0] === '*') {\n node.raws.before += node.prop[0]\n node.prop = node.prop.slice(1)\n }\n\n let firstSpaces = []\n let next\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n firstSpaces.push(tokens.shift())\n }\n\n this.precheckMissedSemicolon(tokens)\n\n for (let i = tokens.length - 1; i >= 0; i--) {\n token = tokens[i]\n if (token[1].toLowerCase() === '!important') {\n node.important = true\n let string = this.stringFrom(tokens, i)\n string = this.spacesFromEnd(tokens) + string\n if (string !== ' !important') node.raws.important = string\n break\n } else if (token[1].toLowerCase() === 'important') {\n let cache = tokens.slice(0)\n let str = ''\n for (let j = i; j > 0; j--) {\n let type = cache[j][0]\n if (str.trim().startsWith('!') && type !== 'space') {\n break\n }\n str = cache.pop()[1] + str\n }\n if (str.trim().startsWith('!')) {\n node.important = true\n node.raws.important = str\n tokens = cache\n }\n }\n\n if (token[0] !== 'space' && token[0] !== 'comment') {\n break\n }\n }\n\n let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment')\n\n if (hasWord) {\n node.raws.between += firstSpaces.map(i => i[1]).join('')\n firstSpaces = []\n }\n this.raw(node, 'value', firstSpaces.concat(tokens), customProperty)\n\n if (node.value.includes(':') && !customProperty) {\n this.checkMissedSemicolon(tokens)\n }\n }\n\n doubleColon(token) {\n throw this.input.error(\n 'Double colon',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n\n emptyRule(token) {\n let node = new Rule()\n this.init(node, token[2])\n node.selector = ''\n node.raws.between = ''\n this.current = node\n }\n\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.semicolon = false\n\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.spaces = ''\n\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2])\n this.current.source.end.offset++\n this.current = this.current.parent\n } else {\n this.unexpectedClose(token)\n }\n }\n\n endFile() {\n if (this.current.parent) this.unclosedBlock()\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.root.source.end = this.getPosition(this.tokenizer.position())\n }\n\n freeSemicolon(token) {\n this.spaces += token[1]\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1]\n if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces\n this.spaces = ''\n prev.source.end = this.getPosition(token[2])\n prev.source.end.offset += prev.raws.ownSemicolon.length\n }\n }\n }\n\n // Helpers\n\n getPosition(offset) {\n let pos = this.input.fromOffset(offset)\n return {\n column: pos.col,\n line: pos.line,\n offset\n }\n }\n\n init(node, offset) {\n this.current.push(node)\n node.source = {\n input: this.input,\n start: this.getPosition(offset)\n }\n node.raws.before = this.spaces\n this.spaces = ''\n if (node.type !== 'comment') this.semicolon = false\n }\n\n other(start) {\n let end = false\n let type = null\n let colon = false\n let bracket = null\n let brackets = []\n let customProperty = start[1].startsWith('--')\n\n let tokens = []\n let token = start\n while (token) {\n type = token[0]\n tokens.push(token)\n\n if (type === '(' || type === '[') {\n if (!bracket) bracket = token\n brackets.push(type === '(' ? ')' : ']')\n } else if (customProperty && colon && type === '{') {\n if (!bracket) bracket = token\n brackets.push('}')\n } else if (brackets.length === 0) {\n if (type === ';') {\n if (colon) {\n this.decl(tokens, customProperty)\n return\n } else {\n break\n }\n } else if (type === '{') {\n this.rule(tokens)\n return\n } else if (type === '}') {\n this.tokenizer.back(tokens.pop())\n end = true\n break\n } else if (type === ':') {\n colon = true\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n if (brackets.length === 0) bracket = null\n }\n\n token = this.tokenizer.nextToken()\n }\n\n if (this.tokenizer.endOfFile()) end = true\n if (brackets.length > 0) this.unclosedBracket(bracket)\n\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0]\n if (token !== 'space' && token !== 'comment') break\n this.tokenizer.back(tokens.pop())\n }\n }\n this.decl(tokens, customProperty)\n } else {\n this.unknownWord(tokens)\n }\n }\n\n parse() {\n let token\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n\n switch (token[0]) {\n case 'space':\n this.spaces += token[1]\n break\n\n case ';':\n this.freeSemicolon(token)\n break\n\n case '}':\n this.end(token)\n break\n\n case 'comment':\n this.comment(token)\n break\n\n case 'at-word':\n this.atrule(token)\n break\n\n case '{':\n this.emptyRule(token)\n break\n\n default:\n this.other(token)\n break\n }\n }\n this.endFile()\n }\n\n precheckMissedSemicolon(/* tokens */) {\n // Hook for Safe Parser\n }\n\n raw(node, prop, tokens, customProperty) {\n let token, type\n let length = tokens.length\n let value = ''\n let clean = true\n let next, prev\n\n for (let i = 0; i < length; i += 1) {\n token = tokens[i]\n type = token[0]\n if (type === 'space' && i === length - 1 && !customProperty) {\n clean = false\n } else if (type === 'comment') {\n prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty'\n next = tokens[i + 1] ? tokens[i + 1][0] : 'empty'\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === ',') {\n clean = false\n } else {\n value += token[1]\n }\n } else {\n clean = false\n }\n } else {\n value += token[1]\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i) => all + i[1], '')\n node.raws[prop] = { raw, value }\n }\n node[prop] = value\n }\n\n rule(tokens) {\n tokens.pop()\n\n let node = new Rule()\n this.init(node, tokens[0][2])\n\n node.raws.between = this.spacesAndCommentsFromEnd(tokens)\n this.raw(node, 'selector', tokens)\n this.current = node\n }\n\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space' && lastTokenType !== 'comment') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n // Errors\n\n spacesAndCommentsFromStart(tokens) {\n let next\n let spaces = ''\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n spaces += tokens.shift()[1]\n }\n return spaces\n }\n\n spacesFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n stringFrom(tokens, from) {\n let result = ''\n for (let i = from; i < tokens.length; i++) {\n result += tokens[i][1]\n }\n tokens.splice(from, tokens.length - from)\n return result\n }\n\n unclosedBlock() {\n let pos = this.current.source.start\n throw this.input.error('Unclosed block', pos.line, pos.column)\n }\n\n unclosedBracket(bracket) {\n throw this.input.error(\n 'Unclosed bracket',\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n )\n }\n\n unexpectedClose(token) {\n throw this.input.error(\n 'Unexpected }',\n { offset: token[2] },\n { offset: token[2] + 1 }\n )\n }\n\n unknownWord(tokens) {\n throw this.input.error(\n 'Unknown word ' + tokens[0][1],\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n )\n }\n\n unnamedAtrule(node, token) {\n throw this.input.error(\n 'At-rule without name',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n}\n\nmodule.exports = Parser\n","'use strict'\n\nlet Container = require('./container')\nlet Input = require('./input')\nlet Parser = require('./parser')\n\nfunction parse(css, opts) {\n let input = new Input(css, opts)\n let parser = new Parser(input)\n try {\n parser.parse()\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse SCSS with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-scss parser'\n } else if (/\\.sass/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Sass with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-sass parser'\n } else if (/\\.less$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Less with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-less parser'\n }\n }\n }\n throw e\n }\n\n return parser.root\n}\n\nmodule.exports = parse\nparse.default = parse\n\nContainer.registerParse(parse)\n","'use strict'\n\nclass Warning {\n constructor(text, opts = {}) {\n this.type = 'warning'\n this.text = text\n\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts)\n this.line = range.start.line\n this.column = range.start.column\n this.endLine = range.end.line\n this.endColumn = range.end.column\n }\n\n for (let opt in opts) this[opt] = opts[opt]\n }\n\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message\n }\n\n if (this.plugin) {\n return this.plugin + ': ' + this.text\n }\n\n return this.text\n }\n}\n\nmodule.exports = Warning\nWarning.default = Warning\n","'use strict'\n\nlet Warning = require('./warning')\n\nclass Result {\n get content() {\n return this.css\n }\n\n constructor(processor, root, opts) {\n this.processor = processor\n this.messages = []\n this.root = root\n this.opts = opts\n this.css = ''\n this.map = undefined\n }\n\n toString() {\n return this.css\n }\n\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin\n }\n }\n\n let warning = new Warning(text, opts)\n this.messages.push(warning)\n\n return warning\n }\n\n warnings() {\n return this.messages.filter(i => i.type === 'warning')\n }\n}\n\nmodule.exports = Result\nResult.default = Result\n","/* eslint-disable no-console */\n'use strict'\n\nlet printed = {}\n\nmodule.exports = function warnOnce(message) {\n if (printed[message]) return\n printed[message] = true\n\n if (typeof console !== 'undefined' && console.warn) {\n console.warn(message)\n }\n}\n","'use strict'\n\nlet Container = require('./container')\nlet Document = require('./document')\nlet MapGenerator = require('./map-generator')\nlet parse = require('./parse')\nlet Result = require('./result')\nlet Root = require('./root')\nlet stringify = require('./stringify')\nlet { isClean, my } = require('./symbols')\nlet warnOnce = require('./warn-once')\n\nconst TYPE_TO_CLASS_NAME = {\n atrule: 'AtRule',\n comment: 'Comment',\n decl: 'Declaration',\n document: 'Document',\n root: 'Root',\n rule: 'Rule'\n}\n\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n}\n\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n}\n\nconst CHILDREN = 0\n\nfunction isPromise(obj) {\n return typeof obj === 'object' && typeof obj.then === 'function'\n}\n\nfunction getEvents(node) {\n let key = false\n let type = TYPE_TO_CLASS_NAME[node.type]\n if (node.type === 'decl') {\n key = node.prop.toLowerCase()\n } else if (node.type === 'atrule') {\n key = node.name.toLowerCase()\n }\n\n if (key && node.append) {\n return [\n type,\n type + '-' + key,\n CHILDREN,\n type + 'Exit',\n type + 'Exit-' + key\n ]\n } else if (key) {\n return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]\n } else if (node.append) {\n return [type, CHILDREN, type + 'Exit']\n } else {\n return [type, type + 'Exit']\n }\n}\n\nfunction toStack(node) {\n let events\n if (node.type === 'document') {\n events = ['Document', CHILDREN, 'DocumentExit']\n } else if (node.type === 'root') {\n events = ['Root', CHILDREN, 'RootExit']\n } else {\n events = getEvents(node)\n }\n\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node,\n visitorIndex: 0,\n visitors: []\n }\n}\n\nfunction cleanMarks(node) {\n node[isClean] = false\n if (node.nodes) node.nodes.forEach(i => cleanMarks(i))\n return node\n}\n\nlet postcss = {}\n\nclass LazyResult {\n get content() {\n return this.stringify().content\n }\n\n get css() {\n return this.stringify().css\n }\n\n get map() {\n return this.stringify().map\n }\n\n get messages() {\n return this.sync().messages\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n return this.sync().root\n }\n\n get [Symbol.toStringTag]() {\n return 'LazyResult'\n }\n\n constructor(processor, css, opts) {\n this.stringified = false\n this.processed = false\n\n let root\n if (\n typeof css === 'object' &&\n css !== null &&\n (css.type === 'root' || css.type === 'document')\n ) {\n root = cleanMarks(css)\n } else if (css instanceof LazyResult || css instanceof Result) {\n root = cleanMarks(css.root)\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {}\n if (!opts.map.inline) opts.map.inline = false\n opts.map.prev = css.map\n }\n } else {\n let parser = parse\n if (opts.syntax) parser = opts.syntax.parse\n if (opts.parser) parser = opts.parser\n if (parser.parse) parser = parser.parse\n\n try {\n root = parser(css, opts)\n } catch (error) {\n this.processed = true\n this.error = error\n }\n\n if (root && !root[my]) {\n /* c8 ignore next 2 */\n Container.rebuild(root)\n }\n }\n\n this.result = new Result(processor, root, opts)\n this.helpers = { ...postcss, postcss, result: this.result }\n this.plugins = this.processor.plugins.map(plugin => {\n if (typeof plugin === 'object' && plugin.prepare) {\n return { ...plugin, ...plugin.prepare(this.result) }\n } else {\n return plugin\n }\n })\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n if (this.processed) return Promise.resolve(this.result)\n if (!this.processing) {\n this.processing = this.runAsync()\n }\n return this.processing\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n getAsyncError() {\n throw new Error('Use process(css).then(cb) to work with async plugins')\n }\n\n handleError(error, node) {\n let plugin = this.result.lastPlugin\n try {\n if (node) node.addToError(error)\n this.error = error\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin\n error.setMessage()\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== 'production') {\n let pluginName = plugin.postcssPlugin\n let pluginVer = plugin.postcssVersion\n let runtimeVer = this.result.processor.version\n let a = pluginVer.split('.')\n let b = runtimeVer.split('.')\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n // eslint-disable-next-line no-console\n console.error(\n 'Unknown error from PostCSS plugin. Your current PostCSS ' +\n 'version is ' +\n runtimeVer +\n ', but ' +\n pluginName +\n ' uses ' +\n pluginVer +\n '. Perhaps this is the source of the error below.'\n )\n }\n }\n }\n } catch (err) {\n /* c8 ignore next 3 */\n // eslint-disable-next-line no-console\n if (console && console.error) console.error(err)\n }\n return error\n }\n\n prepareVisitors() {\n this.listeners = {}\n let add = (plugin, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = []\n this.listeners[type].push([plugin, cb])\n }\n for (let plugin of this.plugins) {\n if (typeof plugin === 'object') {\n for (let event in plugin) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin.postcssPlugin}. ` +\n `Try to update PostCSS (${this.processor.version} now).`\n )\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin[event] === 'object') {\n for (let filter in plugin[event]) {\n if (filter === '*') {\n add(plugin, event, plugin[event][filter])\n } else {\n add(\n plugin,\n event + '-' + filter.toLowerCase(),\n plugin[event][filter]\n )\n }\n }\n } else if (typeof plugin[event] === 'function') {\n add(plugin, event, plugin[event])\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0\n }\n\n async runAsync() {\n this.plugin = 0\n for (let i = 0; i < this.plugins.length; i++) {\n let plugin = this.plugins[i]\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (error) {\n throw this.handleError(error)\n }\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n let stack = [toStack(root)]\n while (stack.length > 0) {\n let promise = this.visitTick(stack)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (e) {\n let node = stack[stack.length - 1].node\n throw this.handleError(e, node)\n }\n }\n }\n }\n\n if (this.listeners.OnceExit) {\n for (let [plugin, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin\n try {\n if (root.type === 'document') {\n let roots = root.nodes.map(subRoot =>\n visitor(subRoot, this.helpers)\n )\n\n await Promise.all(roots)\n } else {\n await visitor(root, this.helpers)\n }\n } catch (e) {\n throw this.handleError(e)\n }\n }\n }\n }\n\n this.processed = true\n return this.stringify()\n }\n\n runOnRoot(plugin) {\n this.result.lastPlugin = plugin\n try {\n if (typeof plugin === 'object' && plugin.Once) {\n if (this.result.root.type === 'document') {\n let roots = this.result.root.nodes.map(root =>\n plugin.Once(root, this.helpers)\n )\n\n if (isPromise(roots[0])) {\n return Promise.all(roots)\n }\n\n return roots\n }\n\n return plugin.Once(this.result.root, this.helpers)\n } else if (typeof plugin === 'function') {\n return plugin(this.result.root, this.result)\n }\n } catch (error) {\n throw this.handleError(error)\n }\n }\n\n stringify() {\n if (this.error) throw this.error\n if (this.stringified) return this.result\n this.stringified = true\n\n this.sync()\n\n let opts = this.result.opts\n let str = stringify\n if (opts.syntax) str = opts.syntax.stringify\n if (opts.stringifier) str = opts.stringifier\n if (str.stringify) str = str.stringify\n\n let map = new MapGenerator(str, this.result.root, this.result.opts)\n let data = map.generate()\n this.result.css = data[0]\n this.result.map = data[1]\n\n return this.result\n }\n\n sync() {\n if (this.error) throw this.error\n if (this.processed) return this.result\n this.processed = true\n\n if (this.processing) {\n throw this.getAsyncError()\n }\n\n for (let plugin of this.plugins) {\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n this.walkSync(root)\n }\n if (this.listeners.OnceExit) {\n if (root.type === 'document') {\n for (let subRoot of root.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot)\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root)\n }\n }\n }\n\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this.opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this.css\n }\n\n visitSync(visitors, node) {\n for (let [plugin, visitor] of visitors) {\n this.result.lastPlugin = plugin\n let promise\n try {\n promise = visitor(node, this.helpers)\n } catch (e) {\n throw this.handleError(e, node.proxyOf)\n }\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n return true\n }\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n }\n\n visitTick(stack) {\n let visit = stack[stack.length - 1]\n let { node, visitors } = visit\n\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n stack.pop()\n return\n }\n\n if (visitors.length > 0 && visit.visitorIndex < visitors.length) {\n let [plugin, visitor] = visitors[visit.visitorIndex]\n visit.visitorIndex += 1\n if (visit.visitorIndex === visitors.length) {\n visit.visitors = []\n visit.visitorIndex = 0\n }\n this.result.lastPlugin = plugin\n try {\n return visitor(node.toProxy(), this.helpers)\n } catch (e) {\n throw this.handleError(e, node)\n }\n }\n\n if (visit.iterator !== 0) {\n let iterator = visit.iterator\n let child\n while ((child = node.nodes[node.indexes[iterator]])) {\n node.indexes[iterator] += 1\n if (!child[isClean]) {\n child[isClean] = true\n stack.push(toStack(child))\n return\n }\n }\n visit.iterator = 0\n delete node.indexes[iterator]\n }\n\n let events = visit.events\n while (visit.eventIndex < events.length) {\n let event = events[visit.eventIndex]\n visit.eventIndex += 1\n if (event === CHILDREN) {\n if (node.nodes && node.nodes.length) {\n node[isClean] = true\n visit.iterator = node.getIterator()\n }\n return\n } else if (this.listeners[event]) {\n visit.visitors = this.listeners[event]\n return\n }\n }\n stack.pop()\n }\n\n walkSync(node) {\n node[isClean] = true\n let events = getEvents(node)\n for (let event of events) {\n if (event === CHILDREN) {\n if (node.nodes) {\n node.each(child => {\n if (!child[isClean]) this.walkSync(child)\n })\n }\n } else {\n let visitors = this.listeners[event]\n if (visitors) {\n if (this.visitSync(visitors, node.toProxy())) return\n }\n }\n }\n }\n\n warnings() {\n return this.sync().warnings()\n }\n}\n\nLazyResult.registerPostcss = dependant => {\n postcss = dependant\n}\n\nmodule.exports = LazyResult\nLazyResult.default = LazyResult\n\nRoot.registerLazyResult(LazyResult)\nDocument.registerLazyResult(LazyResult)\n","'use strict'\n\nlet MapGenerator = require('./map-generator')\nlet parse = require('./parse')\nconst Result = require('./result')\nlet stringify = require('./stringify')\nlet warnOnce = require('./warn-once')\n\nclass NoWorkResult {\n get content() {\n return this.result.css\n }\n\n get css() {\n return this.result.css\n }\n\n get map() {\n return this.result.map\n }\n\n get messages() {\n return []\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n if (this._root) {\n return this._root\n }\n\n let root\n let parser = parse\n\n try {\n root = parser(this._css, this._opts)\n } catch (error) {\n this.error = error\n }\n\n if (this.error) {\n throw this.error\n } else {\n this._root = root\n return root\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'NoWorkResult'\n }\n\n constructor(processor, css, opts) {\n css = css.toString()\n this.stringified = false\n\n this._processor = processor\n this._css = css\n this._opts = opts\n this._map = undefined\n let root\n\n let str = stringify\n this.result = new Result(this._processor, root, this._opts)\n this.result.css = css\n\n let self = this\n Object.defineProperty(this.result, 'root', {\n get() {\n return self.root\n }\n })\n\n let map = new MapGenerator(str, root, this._opts, css)\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate()\n if (generatedCSS) {\n this.result.css = generatedCSS\n }\n if (generatedMap) {\n this.result.map = generatedMap\n }\n } else {\n map.clearAnnotation()\n this.result.css = map.css\n }\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n return Promise.resolve(this.result)\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n sync() {\n if (this.error) throw this.error\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this._opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this._css\n }\n\n warnings() {\n return []\n }\n}\n\nmodule.exports = NoWorkResult\nNoWorkResult.default = NoWorkResult\n","'use strict'\n\nlet Document = require('./document')\nlet LazyResult = require('./lazy-result')\nlet NoWorkResult = require('./no-work-result')\nlet Root = require('./root')\n\nclass Processor {\n constructor(plugins = []) {\n this.version = '8.5.6'\n this.plugins = this.normalize(plugins)\n }\n\n normalize(plugins) {\n let normalized = []\n for (let i of plugins) {\n if (i.postcss === true) {\n i = i()\n } else if (i.postcss) {\n i = i.postcss\n }\n\n if (typeof i === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins)\n } else if (typeof i === 'object' && i.postcssPlugin) {\n normalized.push(i)\n } else if (typeof i === 'function') {\n normalized.push(i)\n } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n 'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +\n 'one of the syntax/parser/stringifier options as outlined ' +\n 'in your PostCSS runner documentation.'\n )\n }\n } else {\n throw new Error(i + ' is not a PostCSS plugin')\n }\n }\n return normalized\n }\n\n process(css, opts = {}) {\n if (\n !this.plugins.length &&\n !opts.parser &&\n !opts.stringifier &&\n !opts.syntax\n ) {\n return new NoWorkResult(this, css, opts)\n } else {\n return new LazyResult(this, css, opts)\n }\n }\n\n use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]))\n return this\n }\n}\n\nmodule.exports = Processor\nProcessor.default = Processor\n\nRoot.registerProcessor(Processor)\nDocument.registerProcessor(Processor)\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Container = require('./container')\nlet CssSyntaxError = require('./css-syntax-error')\nlet Declaration = require('./declaration')\nlet Document = require('./document')\nlet fromJSON = require('./fromJSON')\nlet Input = require('./input')\nlet LazyResult = require('./lazy-result')\nlet list = require('./list')\nlet Node = require('./node')\nlet parse = require('./parse')\nlet Processor = require('./processor')\nlet Result = require('./result.js')\nlet Root = require('./root')\nlet Rule = require('./rule')\nlet stringify = require('./stringify')\nlet Warning = require('./warning')\n\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0]\n }\n return new Processor(plugins)\n}\n\npostcss.plugin = function plugin(name, initializer) {\n let warningPrinted = false\n function creator(...args) {\n // eslint-disable-next-line no-console\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': postcss.plugin was deprecated. Migration guide:\\n' +\n 'https://evilmartians.com/chronicles/postcss-8-plugin-migration'\n )\n if (process.env.LANG && process.env.LANG.startsWith('cn')) {\n /* c8 ignore next 7 */\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': 里面 postcss.plugin 被弃用. 迁移指南:\\n' +\n 'https://www.w3ctech.com/topic/2226'\n )\n }\n }\n let transformer = initializer(...args)\n transformer.postcssPlugin = name\n transformer.postcssVersion = new Processor().version\n return transformer\n }\n\n let cache\n Object.defineProperty(creator, 'postcss', {\n get() {\n if (!cache) cache = creator()\n return cache\n }\n })\n\n creator.process = function (css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts)\n }\n\n return creator\n}\n\npostcss.stringify = stringify\npostcss.parse = parse\npostcss.fromJSON = fromJSON\npostcss.list = list\n\npostcss.comment = defaults => new Comment(defaults)\npostcss.atRule = defaults => new AtRule(defaults)\npostcss.decl = defaults => new Declaration(defaults)\npostcss.rule = defaults => new Rule(defaults)\npostcss.root = defaults => new Root(defaults)\npostcss.document = defaults => new Document(defaults)\n\npostcss.CssSyntaxError = CssSyntaxError\npostcss.Declaration = Declaration\npostcss.Container = Container\npostcss.Processor = Processor\npostcss.Document = Document\npostcss.Comment = Comment\npostcss.Warning = Warning\npostcss.AtRule = AtRule\npostcss.Result = Result\npostcss.Input = Input\npostcss.Rule = Rule\npostcss.Root = Root\npostcss.Node = Node\n\nLazyResult.registerPostcss(postcss)\n\nmodule.exports = postcss\npostcss.default = postcss\n","import postcss from './postcss.js'\n\nexport default postcss\n\nexport const stringify = postcss.stringify\nexport const fromJSON = postcss.fromJSON\nexport const plugin = postcss.plugin\nexport const parse = postcss.parse\nexport const list = postcss.list\n\nexport const document = postcss.document\nexport const comment = postcss.comment\nexport const atRule = postcss.atRule\nexport const rule = postcss.rule\nexport const decl = postcss.decl\nexport const root = postcss.root\n\nexport const CssSyntaxError = postcss.CssSyntaxError\nexport const Declaration = postcss.Declaration\nexport const Container = postcss.Container\nexport const Processor = postcss.Processor\nexport const Document = postcss.Document\nexport const Comment = postcss.Comment\nexport const Warning = postcss.Warning\nexport const AtRule = postcss.AtRule\nexport const Result = postcss.Result\nexport const Input = postcss.Input\nexport const Rule = postcss.Rule\nexport const Root = postcss.Root\nexport const Node = postcss.Node\n","import { mediaSelectorPlugin, pseudoClassPlugin, animationFillModePlugin } from './css';\nimport {\n type serializedNodeWithId,\n type serializedElementNodeWithId,\n NodeType,\n type elementNode,\n type legacyAttributes,\n} from '@appsurify-testmap/rrweb-types';\nimport { type tagMap, type BuildCache } from './types';\nimport {\n isElement,\n Mirror,\n isNodeMetaEqual,\n extractFileExtension,\n} from './utils';\nimport postcss from 'postcss';\n\nconst tagMap: tagMap = {\n script: 'noscript',\n // camel case svg element tag names\n altglyph: 'altGlyph',\n altglyphdef: 'altGlyphDef',\n altglyphitem: 'altGlyphItem',\n animatecolor: 'animateColor',\n animatemotion: 'animateMotion',\n animatetransform: 'animateTransform',\n clippath: 'clipPath',\n feblend: 'feBlend',\n fecolormatrix: 'feColorMatrix',\n fecomponenttransfer: 'feComponentTransfer',\n fecomposite: 'feComposite',\n feconvolvematrix: 'feConvolveMatrix',\n fediffuselighting: 'feDiffuseLighting',\n fedisplacementmap: 'feDisplacementMap',\n fedistantlight: 'feDistantLight',\n fedropshadow: 'feDropShadow',\n feflood: 'feFlood',\n fefunca: 'feFuncA',\n fefuncb: 'feFuncB',\n fefuncg: 'feFuncG',\n fefuncr: 'feFuncR',\n fegaussianblur: 'feGaussianBlur',\n feimage: 'feImage',\n femerge: 'feMerge',\n femergenode: 'feMergeNode',\n femorphology: 'feMorphology',\n feoffset: 'feOffset',\n fepointlight: 'fePointLight',\n fespecularlighting: 'feSpecularLighting',\n fespotlight: 'feSpotLight',\n fetile: 'feTile',\n feturbulence: 'feTurbulence',\n foreignobject: 'foreignObject',\n glyphref: 'glyphRef',\n lineargradient: 'linearGradient',\n radialgradient: 'radialGradient',\n};\nfunction getTagName(n: elementNode): string {\n let tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\n if (tagName === 'link' && n.attributes._cssText) {\n tagName = 'style';\n }\n return tagName;\n}\n\nexport function adaptCssForReplay(cssText: string, cache: BuildCache): string {\n const cachedStyle = cache?.stylesWithHoverClass.get(cssText);\n if (cachedStyle) return cachedStyle;\n\n let result = cssText;\n try {\n const ast: { css: string } = postcss([\n mediaSelectorPlugin,\n pseudoClassPlugin,\n animationFillModePlugin,\n ]).process(cssText);\n result = ast.css;\n } catch (error) {\n console.warn('Failed to adapt css for replay', error);\n }\n\n cache?.stylesWithHoverClass.set(cssText, result);\n return result;\n}\n\nexport function createCache(): BuildCache {\n const stylesWithHoverClass: Map<string, string> = new Map();\n return {\n stylesWithHoverClass,\n };\n}\n\n/**\n * undo splitCssText/markCssSplits\n * (would move to utils.ts but uses `adaptCssForReplay`)\n */\nexport function applyCssSplits(\n n: serializedElementNodeWithId,\n cssText: string,\n hackCss: boolean,\n cache: BuildCache,\n): void {\n const childTextNodes = [];\n for (const scn of n.childNodes) {\n if (scn.type === NodeType.Text) {\n childTextNodes.push(scn);\n }\n }\n const cssTextSplits = cssText.split('/* rr_split */');\n while (\n cssTextSplits.length > 1 &&\n cssTextSplits.length > childTextNodes.length\n ) {\n // unexpected: remerge the last two so that we don't discard any css\n cssTextSplits.splice(-2, 2, cssTextSplits.slice(-2).join(''));\n }\n let adaptedCss = '';\n if (hackCss) {\n adaptedCss = adaptCssForReplay(cssTextSplits.join(''), cache);\n }\n let startIndex = 0;\n for (let i = 0; i < childTextNodes.length; i++) {\n if (i === cssTextSplits.length) {\n break;\n }\n const childTextNode = childTextNodes[i];\n if (!hackCss) {\n childTextNode.textContent = cssTextSplits[i];\n } else if (i < cssTextSplits.length - 1) {\n let endIndex = startIndex;\n let endSearch = cssTextSplits[i + 1].length;\n\n // don't do hundreds of searches, in case a mismatch\n // is caused close to start of string\n endSearch = Math.min(endSearch, 30);\n\n let found = false;\n for (; endSearch > 2; endSearch--) {\n const searchBit = cssTextSplits[i + 1].substring(0, endSearch);\n const searchIndex = adaptedCss.substring(startIndex).indexOf(searchBit);\n found = searchIndex !== -1;\n if (found) {\n endIndex += searchIndex;\n break;\n }\n }\n if (!found) {\n // something went wrong, put a similar sized chunk in the right place\n endIndex += cssTextSplits[i].length;\n }\n childTextNode.textContent = adaptedCss.substring(startIndex, endIndex);\n startIndex = endIndex;\n } else {\n childTextNode.textContent = adaptedCss.substring(startIndex);\n }\n }\n}\n\n/**\n * Normally a <style> element has a single textNode containing the rules.\n * During serialization, we bypass this (`styleEl.sheet`) to get the rules the\n * browser sees and serialize this to a special _cssText attribute, blanking\n * out any text nodes. This function reverses that and also handles cases where\n * there were no textNode children present (dynamic css/or a <link> element) as\n * well as multiple textNodes, which need to be repopulated (based on presence of\n * a special `rr_split` marker in case they are modified by subsequent mutations.\n */\nexport function buildStyleNode(\n n: serializedElementNodeWithId,\n styleEl: HTMLStyleElement, // when inlined, a <link type=\"stylesheet\"> also gets rebuilt as a <style>\n cssText: string,\n options: {\n doc: Document;\n hackCss: boolean;\n cache: BuildCache;\n },\n) {\n const { doc, hackCss, cache } = options;\n if (n.childNodes.length) {\n applyCssSplits(n, cssText, hackCss, cache);\n } else {\n if (hackCss) {\n cssText = adaptCssForReplay(cssText, cache);\n }\n /**\n <link> element or dynamic <style> are serialized without any child nodes\n we create the text node without an ID or presence in mirror as it can't\n */\n styleEl.appendChild(doc.createTextNode(cssText));\n }\n}\n\nfunction buildNode(\n n: serializedNodeWithId,\n options: {\n doc: Document;\n hackCss: boolean;\n cache: BuildCache;\n },\n): Node | null {\n const { doc, hackCss, cache } = options;\n switch (n.type) {\n case NodeType.Document:\n return doc.implementation.createDocument(null, '', null);\n case NodeType.DocumentType:\n return doc.implementation.createDocumentType(\n n.name || 'html',\n n.publicId,\n n.systemId,\n );\n case NodeType.Element: {\n const tagName = getTagName(n);\n let node: Element;\n if (n.isSVG) {\n node = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\n } else {\n if (\n // If the tag name is a custom element name\n n.isCustom &&\n // If the browser supports custom elements\n doc.defaultView?.customElements &&\n // If the custom element hasn't been defined yet\n !doc.defaultView.customElements.get(n.tagName)\n )\n doc.defaultView.customElements.define(\n n.tagName,\n class extends doc.defaultView.HTMLElement {},\n );\n node = doc.createElement(tagName);\n }\n /**\n * Attribute names start with `rr_` are internal attributes added by rrweb.\n * They often overwrite other attributes on the element.\n * We need to parse them last so they can overwrite conflicting attributes.\n */\n const specialAttributes: { [key: string]: string | number } = {};\n for (const name in n.attributes) {\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name)) {\n continue;\n }\n let value = n.attributes[name];\n if (\n tagName === 'option' &&\n name === 'selected' &&\n (value as legacyAttributes[typeof name]) === false\n ) {\n // legacy fix (TODO: if `value === false` can be generated for other attrs,\n // should we also omit those other attrs from build ?)\n continue;\n }\n\n // null values mean the attribute was removed\n if (value === null) {\n continue;\n }\n\n /**\n * Boolean attributes are considered to be true if they're present on the element at all.\n * We should set value to the empty string (\"\") or the attribute's name, with no leading or trailing whitespace.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute#parameters\n */\n if (value === true) value = '';\n\n if (name.startsWith('rr_')) {\n specialAttributes[name] = value;\n continue;\n }\n\n if (typeof value !== 'string') {\n // pass\n } else if (tagName === 'style' && name === '_cssText') {\n buildStyleNode(n, node as HTMLStyleElement, value, options);\n continue; // no need to set _cssText as attribute\n } else if (tagName === 'textarea' && name === 'value') {\n // create without an ID or presence in mirror\n node.appendChild(doc.createTextNode(value));\n n.childNodes = []; // value overrides childNodes\n continue;\n }\n\n try {\n if (n.isSVG && name === 'xlink:href') {\n node.setAttributeNS(\n 'http://www.w3.org/1999/xlink',\n name,\n value.toString(),\n );\n } else if (\n name === 'onload' ||\n name === 'onclick' ||\n name.substring(0, 7) === 'onmouse'\n ) {\n // Rename some of the more common atttributes from https://www.w3schools.com/tags/ref_eventattributes.asp\n // as setting them triggers a console.error (which shows up despite the try/catch)\n // Assumption: these attributes are not used to css\n node.setAttribute('_' + name, value.toString());\n } else if (\n tagName === 'meta' &&\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\n name === 'content'\n ) {\n // If CSP contains style-src and inline-style is disabled, there will be an error \"Refused to apply inline style because it violates the following Content Security Policy directive: style-src '*'\".\n // And the function insertStyleRules in rrweb replayer will throw an error \"Uncaught TypeError: Cannot read property 'insertRule' of null\".\n node.setAttribute('csp-content', value.toString());\n continue;\n } else if (\n tagName === 'link' &&\n ((n.attributes.rel === 'preload' && n.attributes.as === 'script') ||\n n.attributes.rel === 'modulepreload')\n ) {\n // ignore\n } else if (\n tagName === 'link' &&\n n.attributes.rel === 'prefetch' &&\n typeof n.attributes.href === 'string' &&\n extractFileExtension(n.attributes.href) === 'js'\n ) {\n // ignore\n } else if (\n tagName === 'img' &&\n n.attributes.srcset &&\n n.attributes.rr_dataURL\n ) {\n // backup original img srcset\n node.setAttribute(\n 'rrweb-original-srcset',\n n.attributes.srcset as string,\n );\n } else {\n node.setAttribute(name, value.toString());\n }\n } catch (error) {\n // skip invalid attribute\n }\n }\n\n for (const name in specialAttributes) {\n const value = specialAttributes[name];\n // handle internal attributes\n if (tagName === 'canvas' && name === 'rr_dataURL') {\n const image = doc.createElement('img');\n image.onload = () => {\n const ctx = (node as HTMLCanvasElement).getContext('2d');\n if (ctx) {\n ctx.drawImage(image, 0, 0, image.width, image.height);\n }\n };\n image.src = value.toString();\n type RRCanvasElement = {\n RRNodeType: NodeType;\n rr_dataURL: string;\n };\n // If the canvas element is created in RRDom runtime (seeking to a time point), the canvas context isn't supported. So the data has to be stored and not handled until diff process. https://github.com/rrweb-io/rrweb/pull/944\n if ((node as unknown as RRCanvasElement).RRNodeType)\n (node as unknown as RRCanvasElement).rr_dataURL = value.toString();\n } else if (tagName === 'img' && name === 'rr_dataURL') {\n const image = node as HTMLImageElement;\n if (!image.currentSrc.startsWith('data:')) {\n // Backup original img src. It may not have been set yet.\n image.setAttribute(\n 'rrweb-original-src',\n n.attributes.src as string,\n );\n image.src = value.toString();\n }\n }\n\n if (name === 'rr_width') {\n (node as HTMLElement).style.setProperty('width', value.toString());\n } else if (name === 'rr_height') {\n (node as HTMLElement).style.setProperty('height', value.toString());\n } else if (\n name === 'rr_mediaCurrentTime' &&\n typeof value === 'number'\n ) {\n (node as HTMLMediaElement).currentTime = value;\n } else if (name === 'rr_mediaState') {\n switch (value) {\n case 'played':\n (node as HTMLMediaElement)\n .play()\n .catch((e) => console.warn('media playback error', e));\n break;\n case 'paused':\n (node as HTMLMediaElement).pause();\n break;\n default:\n }\n } else if (\n name === 'rr_mediaPlaybackRate' &&\n typeof value === 'number'\n ) {\n (node as HTMLMediaElement).playbackRate = value;\n } else if (name === 'rr_mediaMuted' && typeof value === 'boolean') {\n (node as HTMLMediaElement).muted = value;\n } else if (name === 'rr_mediaLoop' && typeof value === 'boolean') {\n (node as HTMLMediaElement).loop = value;\n } else if (name === 'rr_mediaVolume' && typeof value === 'number') {\n (node as HTMLMediaElement).volume = value;\n } else if (name === 'rr_open_mode') {\n (node as HTMLDialogElement).setAttribute(\n 'rr_open_mode',\n value as string,\n ); // keep this attribute for rrweb to trigger showModal\n }\n }\n\n if (n.isShadowHost) {\n /**\n * Since node is newly rebuilt, it should be a normal element\n * without shadowRoot.\n * But if there are some weird situations that has defined\n * custom element in the scope before we rebuild node, it may\n * register the shadowRoot earlier.\n * The logic in the 'else' block is just a try-my-best solution\n * for the corner case, please let we know if it is wrong and\n * we can remove it.\n */\n if (!node.shadowRoot) {\n node.attachShadow({ mode: 'open' });\n } else {\n while (node.shadowRoot.firstChild) {\n node.shadowRoot.removeChild(node.shadowRoot.firstChild);\n }\n }\n }\n return node;\n }\n case NodeType.Text:\n if (n.isStyle && hackCss) {\n // support legacy style\n return doc.createTextNode(adaptCssForReplay(n.textContent, cache));\n }\n return doc.createTextNode(n.textContent);\n case NodeType.CDATA:\n return doc.createCDATASection(n.textContent);\n case NodeType.Comment:\n return doc.createComment(n.textContent);\n default:\n return null;\n }\n}\n\nexport function buildNodeWithSN(\n n: serializedNodeWithId,\n options: {\n doc: Document;\n mirror: Mirror;\n skipChild?: boolean;\n hackCss: boolean;\n /**\n * This callback will be called for each of this nodes' `.childNodes` after they are appended to _this_ node.\n * Caveat: This callback _doesn't_ get called when this node is appended to the DOM.\n */\n afterAppend?: (n: Node, id: number) => unknown;\n cache: BuildCache;\n },\n): Node | null {\n const {\n doc,\n mirror,\n skipChild = false,\n hackCss = true,\n afterAppend,\n cache,\n } = options;\n /**\n * Add a check to see if the node is already in the mirror. If it is, we can skip the whole process.\n * This situation (duplicated nodes) can happen when recorder has some unfixed bugs and the same node is recorded twice. Or something goes wrong when saving or transferring event data.\n * Duplicated node creation may cause unexpected errors in replayer. This check tries best effort to prevent the errors.\n */\n if (mirror.has(n.id)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const nodeInMirror = mirror.getNode(n.id)!;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const meta = mirror.getMeta(nodeInMirror)!;\n // For safety concern, check if the node in mirror is the same as the node we are trying to build\n if (isNodeMetaEqual(meta, n)) return mirror.getNode(n.id);\n }\n let node = buildNode(n, { doc, hackCss, cache });\n if (!node) {\n return null;\n }\n // If the snapshot is created by checkout, the rootId doesn't change but the iframe's document can be changed automatically when a new iframe element is created.\n if (n.rootId && (mirror.getNode(n.rootId) as Document) !== doc) {\n mirror.replace(n.rootId, doc);\n }\n // use target document as root document\n if (n.type === NodeType.Document) {\n // close before open to make sure document was closed\n doc.close();\n doc.open();\n if (\n n.compatMode === 'BackCompat' &&\n n.childNodes &&\n n.childNodes[0].type !== NodeType.DocumentType // there isn't one already defined\n ) {\n // Trigger compatMode in the iframe\n // this is needed as document.createElement('iframe') otherwise inherits a CSS1Compat mode from the parent replayer environment\n if (\n n.childNodes[0].type === NodeType.Element &&\n 'xmlns' in n.childNodes[0].attributes &&\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml'\n ) {\n // might as well use an xhtml doctype if we've got an xhtml namespace\n doc.write(\n '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">',\n );\n } else {\n doc.write(\n '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">',\n );\n }\n }\n node = doc;\n }\n\n mirror.add(node, n);\n\n if (\n (n.type === NodeType.Document || n.type === NodeType.Element) &&\n !skipChild\n ) {\n for (const childN of n.childNodes) {\n const childNode = buildNodeWithSN(childN, {\n doc,\n mirror,\n skipChild: false,\n hackCss,\n afterAppend,\n cache,\n });\n if (!childNode) {\n console.warn('Failed to rebuild', childN);\n continue;\n }\n\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\n node.shadowRoot.appendChild(childNode);\n } else if (\n n.type === NodeType.Document &&\n childN.type == NodeType.Element\n ) {\n const htmlElement = childNode as HTMLElement;\n let body: HTMLBodyElement | null = null;\n htmlElement.childNodes.forEach((child) => {\n if (child.nodeName === 'BODY') body = child as HTMLBodyElement;\n });\n if (body) {\n // this branch solves a problem in Firefox where css transitions are incorrectly\n // being applied upon rebuild. Presumably FF doesn't finished parsing the styles\n // in time, and applies e.g. a default margin:0 to elements which have a non-zero\n // margin set in CSS, along with a transition on them\n htmlElement.removeChild(body);\n // append <head> and <style>s\n node.appendChild(childNode);\n // now append <body>\n htmlElement.appendChild(body);\n } else {\n node.appendChild(childNode);\n }\n } else {\n node.appendChild(childNode);\n }\n if (afterAppend) {\n afterAppend(childNode, childN.id);\n }\n }\n }\n\n return node;\n}\n\nfunction visit(mirror: Mirror, onVisit: (node: Node) => void) {\n function walk(node: Node) {\n onVisit(node);\n }\n\n for (const id of mirror.getIds()) {\n if (mirror.has(id)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n walk(mirror.getNode(id)!);\n }\n }\n}\n\nfunction handleScroll(node: Node, mirror: Mirror) {\n const n = mirror.getMeta(node);\n if (n?.type !== NodeType.Element) {\n return;\n }\n const el = node as HTMLElement;\n for (const name in n.attributes) {\n if (\n !(\n Object.prototype.hasOwnProperty.call(n.attributes, name) &&\n name.startsWith('rr_')\n )\n ) {\n continue;\n }\n const value = n.attributes[name];\n if (name === 'rr_scrollLeft') {\n el.scrollLeft = value as number;\n }\n if (name === 'rr_scrollTop') {\n el.scrollTop = value as number;\n }\n }\n}\n\nfunction rebuild(\n n: serializedNodeWithId,\n options: {\n doc: Document;\n onVisit?: (node: Node) => unknown;\n hackCss?: boolean;\n afterAppend?: (n: Node, id: number) => unknown;\n cache: BuildCache;\n mirror: Mirror;\n },\n): Node | null {\n const {\n doc,\n onVisit,\n hackCss = true,\n afterAppend,\n cache,\n mirror = new Mirror(),\n } = options;\n const node = buildNodeWithSN(n, {\n doc,\n mirror,\n skipChild: false,\n hackCss,\n afterAppend,\n cache,\n });\n visit(mirror, (visitedNode) => {\n if (onVisit) {\n onVisit(visitedNode);\n }\n handleScroll(visitedNode, mirror);\n });\n return node;\n}\n\nexport default rebuild;\n"],"names":["dom","shadowRoot","rule","node","x","childNodes","j","k","parentElement","textContent","result","generateSEQL","picocolors_browserModule","require$$0","terminalHighlight","require$$1","plugin","index","spacing","CssSyntaxError","root","Stringifier","stringify","require$$2","isClean","my","require$$3","Node","_","input","stringifier","Comment","Declaration","AtRule","parse","Root","Rule","Container","LazyResult","Processor","Document","document","nanoid","dirname","SourceMapConsumer","SourceMapGenerator","PreviousMap","resolve","pathToFileURL","require$$4","require$$5","require$$6","sourceMapAvailable","pathAvailable","Input","list","sep","fromJSON","MapGenerator","tokenizer","Parser","parser","Warning","processor","warning","Result","warnOnce","require$$7","require$$8","postcss","visit","NoWorkResult","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17"],"mappings":"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","x_google_ignoreList":[3,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]}