@react-devtools-plus/scan 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +23 -0
- package/.turbo/turbo-prepare$colon$type.log +6 -0
- package/LICENSE +21 -0
- package/README.md +172 -0
- package/dist/index.cjs +18394 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +304 -0
- package/dist/index.d.ts +304 -0
- package/dist/index.js +18350 -0
- package/dist/index.js.map +1 -0
- package/package.json +50 -0
- package/src/adapter.ts +1257 -0
- package/src/index.ts +134 -0
- package/src/plugin.ts +638 -0
- package/src/types.ts +271 -0
- package/tsconfig.json +9 -0
- package/tsup.config.ts +22 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/bippy@0.3.34_@types+react@18.3.27_react@18.3.1/node_modules/bippy/dist/src-DnJsD_Sy.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/src/constants.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/src/util.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/src/options.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/src/create-element.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/src/component.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/src/diff/props.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/src/create-context.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/src/diff/children.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/src/diff/index.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/src/render.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/src/clone-element.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/src/diff/catch-error.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/hooks/src/index.js","../../../node_modules/.pnpm/@preact+signals-core@1.12.1/node_modules/@preact/signals-core/src/index.ts","../../../node_modules/.pnpm/@preact+signals@1.3.2_preact@10.27.2/node_modules/@preact/signals/src/index.ts","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/compat/src/util.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/compat/src/hooks.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/compat/src/PureComponent.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/compat/src/memo.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/compat/src/forwardRef.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/compat/src/Children.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/compat/src/suspense.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/compat/src/suspense-list.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/src/constants.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/compat/src/portals.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/compat/src/render.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/compat/src/index.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/jsx-runtime/src/utils.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/src/constants.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/jsx-runtime/src/index.js","../../../node_modules/.pnpm/react-scan@0.4.3_@types+react@18.3.27_react-dom@18.3.1_react@18.3.1__react-router-dom@7.10.1__xbsexcfd2xg6elujmpl6nujo74/node_modules/react-scan/dist/index.mjs","../src/adapter.ts","../src/plugin.ts","../src/index.ts"],"sourcesContent":["/**\n * @license bippy\n *\n * Copyright (c) Aiden Bai\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n//#region src/rdt-hook.ts\nconst version = \"0.3.34\";\nconst BIPPY_INSTRUMENTATION_STRING = `bippy-${version}`;\nconst objectDefineProperty = Object.defineProperty;\nconst objectHasOwnProperty = Object.prototype.hasOwnProperty;\nconst NO_OP = () => {};\nconst checkDCE = (fn) => {\n\ttry {\n\t\tconst code = Function.prototype.toString.call(fn);\n\t\tif (code.indexOf(\"^_^\") > -1) setTimeout(() => {\n\t\t\tthrow new Error(\"React is running in production mode, but dead code elimination has not been applied. Read how to correctly configure React for production: https://reactjs.org/link/perf-use-production-build\");\n\t\t});\n\t} catch {}\n};\nconst isRealReactDevtools = (rdtHook = getRDTHook()) => {\n\treturn \"getFiberRoots\" in rdtHook;\n};\nlet isReactRefreshOverride = false;\nlet injectFnStr = void 0;\nconst isReactRefresh = (rdtHook = getRDTHook()) => {\n\tif (isReactRefreshOverride) return true;\n\tif (typeof rdtHook.inject === \"function\") injectFnStr = rdtHook.inject.toString();\n\treturn Boolean(injectFnStr?.includes(\"(injected)\"));\n};\nconst onActiveListeners = new Set();\nconst _renderers = new Set();\nconst installRDTHook = (onActive) => {\n\tconst renderers = new Map();\n\tlet i = 0;\n\tlet rdtHook = {\n\t\t_instrumentationIsActive: false,\n\t\t_instrumentationSource: BIPPY_INSTRUMENTATION_STRING,\n\t\tcheckDCE,\n\t\thasUnsupportedRendererAttached: false,\n\t\tinject(renderer) {\n\t\t\tconst nextID = ++i;\n\t\t\trenderers.set(nextID, renderer);\n\t\t\t_renderers.add(renderer);\n\t\t\tif (!rdtHook._instrumentationIsActive) {\n\t\t\t\trdtHook._instrumentationIsActive = true;\n\t\t\t\tonActiveListeners.forEach((listener) => listener());\n\t\t\t}\n\t\t\treturn nextID;\n\t\t},\n\t\ton: NO_OP,\n\t\tonCommitFiberRoot: NO_OP,\n\t\tonCommitFiberUnmount: NO_OP,\n\t\tonPostCommitFiberRoot: NO_OP,\n\t\trenderers,\n\t\tsupportsFiber: true,\n\t\tsupportsFlight: true\n\t};\n\ttry {\n\t\tobjectDefineProperty(globalThis, \"__REACT_DEVTOOLS_GLOBAL_HOOK__\", {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tget() {\n\t\t\t\treturn rdtHook;\n\t\t\t},\n\t\t\tset(newHook) {\n\t\t\t\tif (newHook && typeof newHook === \"object\") {\n\t\t\t\t\tconst ourRenderers = rdtHook.renderers;\n\t\t\t\t\trdtHook = newHook;\n\t\t\t\t\tif (ourRenderers.size > 0) {\n\t\t\t\t\t\tourRenderers.forEach((renderer, id) => {\n\t\t\t\t\t\t\t_renderers.add(renderer);\n\t\t\t\t\t\t\tnewHook.renderers.set(id, renderer);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tpatchRDTHook(onActive);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tconst originalWindowHasOwnProperty = window.hasOwnProperty;\n\t\tlet hasRanHack = false;\n\t\tobjectDefineProperty(window, \"hasOwnProperty\", {\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(...args) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!hasRanHack && args[0] === \"__REACT_DEVTOOLS_GLOBAL_HOOK__\") {\n\t\t\t\t\t\tglobalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__ = void 0;\n\t\t\t\t\t\thasRanHack = true;\n\t\t\t\t\t\treturn -0;\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t\treturn originalWindowHasOwnProperty.apply(this, args);\n\t\t\t},\n\t\t\twritable: true\n\t\t});\n\t} catch {\n\t\tpatchRDTHook(onActive);\n\t}\n\treturn rdtHook;\n};\nconst patchRDTHook = (onActive) => {\n\tif (onActive) onActiveListeners.add(onActive);\n\ttry {\n\t\tconst rdtHook = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;\n\t\tif (!rdtHook) return;\n\t\tif (!rdtHook._instrumentationSource) {\n\t\t\tconst isReactDevtools = isRealReactDevtools();\n\t\t\trdtHook.checkDCE = checkDCE;\n\t\t\trdtHook.supportsFiber = true;\n\t\t\trdtHook.supportsFlight = true;\n\t\t\trdtHook.hasUnsupportedRendererAttached = false;\n\t\t\trdtHook._instrumentationSource = BIPPY_INSTRUMENTATION_STRING;\n\t\t\trdtHook._instrumentationIsActive = false;\n\t\t\tif (!isReactDevtools) rdtHook.on = NO_OP;\n\t\t\tif (rdtHook.renderers.size) {\n\t\t\t\trdtHook._instrumentationIsActive = true;\n\t\t\t\tonActiveListeners.forEach((listener) => listener());\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst prevInject = rdtHook.inject;\n\t\t\tif (isReactRefresh(rdtHook) && !isReactDevtools) {\n\t\t\t\tisReactRefreshOverride = true;\n\t\t\t\tconst nextID = rdtHook.inject({ scheduleRefresh() {} });\n\t\t\t\tif (nextID) rdtHook._instrumentationIsActive = true;\n\t\t\t}\n\t\t\trdtHook.inject = (renderer) => {\n\t\t\t\tconst id = prevInject(renderer);\n\t\t\t\t_renderers.add(renderer);\n\t\t\t\trdtHook._instrumentationIsActive = true;\n\t\t\t\tonActiveListeners.forEach((listener) => listener());\n\t\t\t\treturn id;\n\t\t\t};\n\t\t}\n\t\tif (rdtHook.renderers.size || rdtHook._instrumentationIsActive || isReactRefresh()) onActive?.();\n\t} catch {}\n};\nconst hasRDTHook = () => {\n\treturn objectHasOwnProperty.call(globalThis, \"__REACT_DEVTOOLS_GLOBAL_HOOK__\");\n};\n/**\n* Returns the current React DevTools global hook.\n*/\nconst getRDTHook = (onActive) => {\n\tif (!hasRDTHook()) return installRDTHook(onActive);\n\tpatchRDTHook(onActive);\n\treturn globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;\n};\nconst isClientEnvironment = () => {\n\treturn Boolean(typeof window !== \"undefined\" && (window.document?.createElement || window.navigator?.product === \"ReactNative\"));\n};\n/**\n* Usually used purely for side effect\n*/\nconst safelyInstallRDTHook = () => {\n\ttry {\n\t\tif (isClientEnvironment()) getRDTHook();\n\t} catch {}\n};\n\n//#endregion\n//#region src/core.ts\nconst FunctionComponentTag = 0;\nconst ClassComponentTag = 1;\nconst HostRootTag = 3;\nconst HostComponentTag = 5;\nconst HostTextTag = 6;\nconst FragmentTag = 7;\nconst ContextConsumerTag = 9;\nconst ForwardRefTag = 11;\nconst SuspenseComponentTag = 13;\nconst MemoComponentTag = 14;\nconst SimpleMemoComponentTag = 15;\nconst LazyComponentTag = 16;\nconst DehydratedSuspenseComponentTag = 18;\nconst SuspenseListComponentTag = 19;\nconst OffscreenComponentTag = 22;\nconst LegacyHiddenComponentTag = 23;\nconst HostHoistableTag = 26;\nconst HostSingletonTag = 27;\nconst ActivityComponentTag = 28;\nconst ViewTransitionComponentTag = 30;\nconst CONCURRENT_MODE_NUMBER = 60111;\nconst ELEMENT_TYPE_SYMBOL_STRING = \"Symbol(react.element)\";\nconst TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING = \"Symbol(react.transitional.element)\";\nconst CONCURRENT_MODE_SYMBOL_STRING = \"Symbol(react.concurrent_mode)\";\nconst DEPRECATED_ASYNC_MODE_SYMBOL_STRING = \"Symbol(react.async_mode)\";\nconst PerformedWork = 1;\nconst Placement = 2;\nconst Hydrating = 4096;\nconst Update = 4;\nconst Cloned = 8;\nconst ChildDeletion = 16;\nconst ContentReset = 32;\nconst Snapshot = 1024;\nconst Visibility = 8192;\nconst MutationMask = Placement | Update | ChildDeletion | ContentReset | Hydrating | Visibility | Snapshot;\n/**\n* Returns `true` if object is a React Element.\n*\n* @see https://react.dev/reference/react/isValidElement\n*/\nconst isValidElement = (element) => typeof element === \"object\" && element != null && \"$$typeof\" in element && [ELEMENT_TYPE_SYMBOL_STRING, TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING].includes(String(element.$$typeof));\n/**\n* Returns `true` if object is a React Fiber.\n*/\nconst isValidFiber = (fiber) => typeof fiber === \"object\" && fiber != null && \"tag\" in fiber && \"stateNode\" in fiber && \"return\" in fiber && \"child\" in fiber && \"sibling\" in fiber && \"flags\" in fiber;\n/**\n* Returns `true` if fiber is a host fiber. Host fibers are DOM nodes in react-dom, `View` in react-native, etc.\n*\n* @see https://reactnative.dev/architecture/glossary#host-view-tree-and-host-view\n*/\nconst isHostFiber = (fiber) => {\n\tswitch (fiber.tag) {\n\t\tcase HostComponentTag:\n\t\tcase HostHoistableTag:\n\t\tcase HostSingletonTag: return true;\n\t\tdefault: return typeof fiber.type === \"string\";\n\t}\n};\n/**\n* Returns `true` if fiber is a composite fiber. Composite fibers are fibers that can render (like functional components, class components, etc.)\n*\n* @see https://reactnative.dev/architecture/glossary#react-composite-components\n*/\nconst isCompositeFiber = (fiber) => {\n\tswitch (fiber.tag) {\n\t\tcase ClassComponentTag:\n\t\tcase ForwardRefTag:\n\t\tcase FunctionComponentTag:\n\t\tcase MemoComponentTag:\n\t\tcase SimpleMemoComponentTag: return true;\n\t\tdefault: return false;\n\t}\n};\n/**\n* Returns `true` if the two {@link Fiber}s are the same reference\n*/\nconst areFiberEqual = (fiberA, fiberB) => {\n\treturn fiberA === fiberB || fiberA.alternate === fiberB || fiberB.alternate === fiberA;\n};\n/**\n* Traverses up or down a {@link Fiber}'s contexts, return `true` to stop and select the current and previous context value.\n*/\nconst traverseContexts = (fiber, selector) => {\n\ttry {\n\t\tconst nextDependencies = fiber.dependencies;\n\t\tconst prevDependencies = fiber.alternate?.dependencies;\n\t\tif (!nextDependencies || !prevDependencies) return false;\n\t\tif (typeof nextDependencies !== \"object\" || !(\"firstContext\" in nextDependencies) || typeof prevDependencies !== \"object\" || !(\"firstContext\" in prevDependencies)) return false;\n\t\tlet nextContext = nextDependencies.firstContext;\n\t\tlet prevContext = prevDependencies.firstContext;\n\t\twhile (nextContext && typeof nextContext === \"object\" && \"memoizedValue\" in nextContext || prevContext && typeof prevContext === \"object\" && \"memoizedValue\" in prevContext) {\n\t\t\tif (selector(nextContext, prevContext) === true) return true;\n\t\t\tnextContext = nextContext?.next;\n\t\t\tprevContext = prevContext?.next;\n\t\t}\n\t} catch {}\n\treturn false;\n};\n/**\n* Traverses up or down a {@link Fiber}'s states, return `true` to stop and select the current and previous state value. This stores both state values and effects.\n*/\nconst traverseState = (fiber, selector) => {\n\ttry {\n\t\tlet nextState = fiber.memoizedState;\n\t\tlet prevState = fiber.alternate?.memoizedState;\n\t\twhile (nextState || prevState) {\n\t\t\tif (selector(nextState, prevState) === true) return true;\n\t\t\tnextState = nextState?.next;\n\t\t\tprevState = prevState?.next;\n\t\t}\n\t} catch {}\n\treturn false;\n};\n/**\n* Traverses up or down a {@link Fiber}'s props, return `true` to stop and select the current and previous props value.\n*/\nconst traverseProps = (fiber, selector) => {\n\ttry {\n\t\tconst nextProps = fiber.memoizedProps;\n\t\tconst prevProps = fiber.alternate?.memoizedProps || {};\n\t\tconst allKeys = new Set([...Object.keys(nextProps), ...Object.keys(prevProps)]);\n\t\tfor (const propName of allKeys) {\n\t\t\tconst prevValue = prevProps?.[propName];\n\t\t\tconst nextValue = nextProps?.[propName];\n\t\t\tif (selector(propName, nextValue, prevValue) === true) return true;\n\t\t}\n\t} catch {}\n\treturn false;\n};\n/**\n* Returns `true` if the {@link Fiber} has rendered. Note that this does not mean the fiber has rendered in the current commit, just that it has rendered in the past.\n*/\nconst didFiberRender = (fiber) => {\n\tconst nextProps = fiber.memoizedProps;\n\tconst prevProps = fiber.alternate?.memoizedProps || {};\n\tconst flags = fiber.flags ?? fiber.effectTag ?? 0;\n\tswitch (fiber.tag) {\n\t\tcase ClassComponentTag:\n\t\tcase ContextConsumerTag:\n\t\tcase ForwardRefTag:\n\t\tcase FunctionComponentTag:\n\t\tcase MemoComponentTag:\n\t\tcase SimpleMemoComponentTag: return (flags & PerformedWork) === PerformedWork;\n\t\tdefault:\n\t\t\tif (!fiber.alternate) return true;\n\t\t\treturn prevProps !== nextProps || fiber.alternate.memoizedState !== fiber.memoizedState || fiber.alternate.ref !== fiber.ref;\n\t}\n};\n/**\n* Returns `true` if the {@link Fiber} has committed. Note that this does not mean the fiber has committed in the current commit, just that it has committed in the past.\n*/\nconst didFiberCommit = (fiber) => {\n\treturn Boolean((fiber.flags & (MutationMask | Cloned)) !== 0 || (fiber.subtreeFlags & (MutationMask | Cloned)) !== 0);\n};\n/**\n* Returns all host {@link Fiber}s that have committed and rendered.\n*/\nconst getMutatedHostFibers = (fiber) => {\n\tconst mutations = [];\n\tconst stack = [fiber];\n\twhile (stack.length) {\n\t\tconst node = stack.pop();\n\t\tif (!node) continue;\n\t\tif (isHostFiber(node) && didFiberCommit(node) && didFiberRender(node)) mutations.push(node);\n\t\tif (node.child) stack.push(node.child);\n\t\tif (node.sibling) stack.push(node.sibling);\n\t}\n\treturn mutations;\n};\n/**\n* Returns the stack of {@link Fiber}s from the current fiber to the root fiber.\n*\n* @example\n* ```ts\n* [fiber, fiber.return, fiber.return.return, ...]\n* ```\n*/\nconst getFiberStack = (fiber) => {\n\tconst stack = [];\n\tlet currentFiber = fiber;\n\twhile (currentFiber.return) {\n\t\tstack.push(currentFiber);\n\t\tcurrentFiber = currentFiber.return;\n\t}\n\treturn stack;\n};\n/**\n* Returns `true` if the {@link Fiber} should be filtered out during reconciliation.\n*/\nconst shouldFilterFiber = (fiber) => {\n\tswitch (fiber.tag) {\n\t\tcase DehydratedSuspenseComponentTag: return true;\n\t\tcase FragmentTag:\n\t\tcase HostTextTag:\n\t\tcase LegacyHiddenComponentTag:\n\t\tcase OffscreenComponentTag: return true;\n\t\tcase HostRootTag: return false;\n\t\tdefault: {\n\t\t\tconst symbolOrNumber = typeof fiber.type === \"object\" && fiber.type !== null ? fiber.type.$$typeof : fiber.type;\n\t\t\tconst typeSymbol = typeof symbolOrNumber === \"symbol\" ? symbolOrNumber.toString() : symbolOrNumber;\n\t\t\tswitch (typeSymbol) {\n\t\t\t\tcase CONCURRENT_MODE_NUMBER:\n\t\t\t\tcase CONCURRENT_MODE_SYMBOL_STRING:\n\t\t\t\tcase DEPRECATED_ASYNC_MODE_SYMBOL_STRING: return true;\n\t\t\t\tdefault: return false;\n\t\t\t}\n\t\t}\n\t}\n};\n/**\n* Returns the nearest host {@link Fiber} to the current {@link Fiber}.\n*/\nconst getNearestHostFiber = (fiber, ascending = false) => {\n\tlet hostFiber = traverseFiber(fiber, isHostFiber, ascending);\n\tif (!hostFiber) hostFiber = traverseFiber(fiber, isHostFiber, !ascending);\n\treturn hostFiber;\n};\n/**\n* Returns all host {@link Fiber}s in the tree that are associated with the current {@link Fiber}.\n*/\nconst getNearestHostFibers = (fiber) => {\n\tconst hostFibers = [];\n\tconst stack = [];\n\tif (isHostFiber(fiber)) hostFibers.push(fiber);\n\telse if (fiber.child) stack.push(fiber.child);\n\twhile (stack.length) {\n\t\tconst currentNode = stack.pop();\n\t\tif (!currentNode) break;\n\t\tif (isHostFiber(currentNode)) hostFibers.push(currentNode);\n\t\telse if (currentNode.child) stack.push(currentNode.child);\n\t\tif (currentNode.sibling) stack.push(currentNode.sibling);\n\t}\n\treturn hostFibers;\n};\nfunction traverseFiber(fiber, selector, ascending = false) {\n\tconst isAsync = fiber && selector(fiber) instanceof Promise;\n\tif (isAsync) return traverseFiberAsync(fiber, selector, ascending);\n\treturn traverseFiberSync(fiber, selector, ascending);\n}\nconst traverseFiberSync = (fiber, selector, ascending = false) => {\n\tif (!fiber) return null;\n\tif (selector(fiber) === true) return fiber;\n\tlet child = ascending ? fiber.return : fiber.child;\n\twhile (child) {\n\t\tconst match = traverseFiberSync(child, selector, ascending);\n\t\tif (match) return match;\n\t\tchild = ascending ? null : child.sibling;\n\t}\n\treturn null;\n};\nconst traverseFiberAsync = async (fiber, selector, ascending = false) => {\n\tif (!fiber) return null;\n\tif (await selector(fiber) === true) return fiber;\n\tlet child = ascending ? fiber.return : fiber.child;\n\twhile (child) {\n\t\tconst match = await traverseFiberAsync(child, selector, ascending);\n\t\tif (match) return match;\n\t\tchild = ascending ? null : child.sibling;\n\t}\n\treturn null;\n};\n/**\n* Returns the timings of the {@link Fiber}.\n*\n* @example\n* ```ts\n* const { selfTime, totalTime } = getTimings(fiber);\n* console.log(selfTime, totalTime);\n* ```\n*/\nconst getTimings = (fiber) => {\n\tconst totalTime = fiber?.actualDuration ?? 0;\n\tlet selfTime = totalTime;\n\tlet child = fiber?.child ?? null;\n\twhile (totalTime > 0 && child != null) {\n\t\tselfTime -= child.actualDuration ?? 0;\n\t\tchild = child.sibling;\n\t}\n\treturn {\n\t\tselfTime,\n\t\ttotalTime\n\t};\n};\n/**\n* Returns `true` if the {@link Fiber} uses React Compiler's memo cache.\n*/\nconst hasMemoCache = (fiber) => {\n\treturn Boolean(fiber.updateQueue?.memoCache);\n};\n/**\n* Returns the type (e.g. component definition) of the {@link Fiber}\n*/\nconst getType = (type) => {\n\tconst currentType = type;\n\tif (typeof currentType === \"function\") return currentType;\n\tif (typeof currentType === \"object\" && currentType) return getType(currentType.type || currentType.render);\n\treturn null;\n};\n/**\n* Returns the display name of the {@link Fiber} type.\n*/\nconst getDisplayName = (type) => {\n\tconst currentType = type;\n\tif (typeof currentType === \"string\") return currentType;\n\tif (typeof currentType !== \"function\" && !(typeof currentType === \"object\" && currentType)) return null;\n\tconst name = currentType.displayName || currentType.name || null;\n\tif (name) return name;\n\tconst unwrappedType = getType(currentType);\n\tif (!unwrappedType) return null;\n\treturn unwrappedType.displayName || unwrappedType.name || null;\n};\n/**\n* Returns the build type of the React renderer.\n*/\nconst detectReactBuildType = (renderer) => {\n\ttry {\n\t\tif (typeof renderer.version === \"string\" && renderer.bundleType > 0) return \"development\";\n\t} catch {}\n\treturn \"production\";\n};\n/**\n* Returns `true` if bippy's instrumentation is active.\n*/\nconst isInstrumentationActive = () => {\n\tconst rdtHook = getRDTHook();\n\treturn Boolean(rdtHook._instrumentationIsActive) || isRealReactDevtools() || isReactRefresh();\n};\n/**\n* Returns the latest fiber (since it may be double-buffered).\n*/\nconst getLatestFiber = (fiber) => {\n\tconst alternate = fiber.alternate;\n\tif (!alternate) return fiber;\n\tif (alternate.actualStartTime && fiber.actualStartTime) return alternate.actualStartTime > fiber.actualStartTime ? alternate : fiber;\n\tfor (const root of _fiberRoots) {\n\t\tconst latestFiber = traverseFiber(root.current, (innerFiber) => {\n\t\t\tif (innerFiber === fiber) return true;\n\t\t});\n\t\tif (latestFiber) return latestFiber;\n\t}\n\treturn fiber;\n};\nlet fiberId = 0;\nconst fiberIdMap = new WeakMap();\nconst setFiberId = (fiber, id = fiberId++) => {\n\tfiberIdMap.set(fiber, id);\n};\nconst getFiberId = (fiber) => {\n\tlet id = fiberIdMap.get(fiber);\n\tif (!id && fiber.alternate) id = fiberIdMap.get(fiber.alternate);\n\tif (!id) {\n\t\tid = fiberId++;\n\t\tsetFiberId(fiber, id);\n\t}\n\treturn id;\n};\nconst mountFiberRecursively = (onRender, firstChild, traverseSiblings) => {\n\tlet fiber = firstChild;\n\twhile (fiber != null) {\n\t\tif (!fiberIdMap.has(fiber)) getFiberId(fiber);\n\t\tconst shouldIncludeInTree = !shouldFilterFiber(fiber);\n\t\tif (shouldIncludeInTree && didFiberRender(fiber)) onRender(fiber, \"mount\");\n\t\tif (fiber.tag === SuspenseComponentTag) {\n\t\t\tconst isTimedOut = fiber.memoizedState !== null;\n\t\t\tif (isTimedOut) {\n\t\t\t\tconst primaryChildFragment = fiber.child;\n\t\t\t\tconst fallbackChildFragment = primaryChildFragment ? primaryChildFragment.sibling : null;\n\t\t\t\tif (fallbackChildFragment) {\n\t\t\t\t\tconst fallbackChild = fallbackChildFragment.child;\n\t\t\t\t\tif (fallbackChild !== null) mountFiberRecursively(onRender, fallbackChild, false);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlet primaryChild = null;\n\t\t\t\tconst areSuspenseChildrenConditionallyWrapped = OffscreenComponentTag === -1;\n\t\t\t\tif (areSuspenseChildrenConditionallyWrapped) primaryChild = fiber.child;\n\t\t\t\telse if (fiber.child !== null) primaryChild = fiber.child.child;\n\t\t\t\tif (primaryChild !== null) mountFiberRecursively(onRender, primaryChild, false);\n\t\t\t}\n\t\t} else if (fiber.child != null) mountFiberRecursively(onRender, fiber.child, true);\n\t\tfiber = traverseSiblings ? fiber.sibling : null;\n\t}\n};\nconst updateFiberRecursively = (onRender, nextFiber, prevFiber, parentFiber) => {\n\tif (!fiberIdMap.has(nextFiber)) getFiberId(nextFiber);\n\tif (!prevFiber) return;\n\tif (!fiberIdMap.has(prevFiber)) getFiberId(prevFiber);\n\tconst isSuspense = nextFiber.tag === SuspenseComponentTag;\n\tconst shouldIncludeInTree = !shouldFilterFiber(nextFiber);\n\tif (shouldIncludeInTree && didFiberRender(nextFiber)) onRender(nextFiber, \"update\");\n\tconst prevDidTimeout = isSuspense && prevFiber.memoizedState !== null;\n\tconst nextDidTimeOut = isSuspense && nextFiber.memoizedState !== null;\n\tif (prevDidTimeout && nextDidTimeOut) {\n\t\tconst nextFallbackChildSet = nextFiber.child?.sibling ?? null;\n\t\tconst prevFallbackChildSet = prevFiber.child?.sibling ?? null;\n\t\tif (nextFallbackChildSet !== null && prevFallbackChildSet !== null) updateFiberRecursively(onRender, nextFallbackChildSet, prevFallbackChildSet, nextFiber);\n\t} else if (prevDidTimeout && !nextDidTimeOut) {\n\t\tconst nextPrimaryChildSet = nextFiber.child;\n\t\tif (nextPrimaryChildSet !== null) mountFiberRecursively(onRender, nextPrimaryChildSet, true);\n\t} else if (!prevDidTimeout && nextDidTimeOut) {\n\t\tunmountFiberChildrenRecursively(onRender, prevFiber);\n\t\tconst nextFallbackChildSet = nextFiber.child?.sibling ?? null;\n\t\tif (nextFallbackChildSet !== null) mountFiberRecursively(onRender, nextFallbackChildSet, true);\n\t} else if (nextFiber.child !== prevFiber.child) {\n\t\tlet nextChild = nextFiber.child;\n\t\twhile (nextChild) {\n\t\t\tif (nextChild.alternate) {\n\t\t\t\tconst prevChild = nextChild.alternate;\n\t\t\t\tupdateFiberRecursively(onRender, nextChild, prevChild, shouldIncludeInTree ? nextFiber : parentFiber);\n\t\t\t} else mountFiberRecursively(onRender, nextChild, false);\n\t\t\tnextChild = nextChild.sibling;\n\t\t}\n\t}\n};\nconst unmountFiber = (onRender, fiber) => {\n\tconst isRoot = fiber.tag === HostRootTag;\n\tif (isRoot || !shouldFilterFiber(fiber)) onRender(fiber, \"unmount\");\n};\nconst unmountFiberChildrenRecursively = (onRender, fiber) => {\n\tconst isTimedOutSuspense = fiber.tag === SuspenseComponentTag && fiber.memoizedState !== null;\n\tlet child = fiber.child;\n\tif (isTimedOutSuspense) {\n\t\tconst primaryChildFragment = fiber.child;\n\t\tconst fallbackChildFragment = primaryChildFragment?.sibling ?? null;\n\t\tchild = fallbackChildFragment?.child ?? null;\n\t}\n\twhile (child !== null) {\n\t\tif (child.return !== null) {\n\t\t\tunmountFiber(onRender, child);\n\t\t\tunmountFiberChildrenRecursively(onRender, child);\n\t\t}\n\t\tchild = child.sibling;\n\t}\n};\nlet commitId = 0;\nconst rootInstanceMap = new WeakMap();\n/**\n* Creates a fiber visitor function. Must pass a fiber root and a render handler.\n* @example\n* traverseRenderedFibers(root, (fiber, phase) => {\n* console.log(phase)\n* })\n*/\nconst traverseRenderedFibers = (root, onRender) => {\n\tconst fiber = \"current\" in root ? root.current : root;\n\tlet rootInstance = rootInstanceMap.get(root);\n\tif (!rootInstance) {\n\t\trootInstance = {\n\t\t\tid: commitId++,\n\t\t\tprevFiber: null\n\t\t};\n\t\trootInstanceMap.set(root, rootInstance);\n\t}\n\tconst { prevFiber } = rootInstance;\n\tif (!fiber) unmountFiber(onRender, fiber);\n\telse if (prevFiber !== null) {\n\t\tconst wasMounted = prevFiber && prevFiber.memoizedState != null && prevFiber.memoizedState.element != null && prevFiber.memoizedState.isDehydrated !== true;\n\t\tconst isMounted = fiber.memoizedState != null && fiber.memoizedState.element != null && fiber.memoizedState.isDehydrated !== true;\n\t\tif (!wasMounted && isMounted) mountFiberRecursively(onRender, fiber, false);\n\t\telse if (wasMounted && isMounted) updateFiberRecursively(onRender, fiber, fiber.alternate, null);\n\t\telse if (wasMounted && !isMounted) unmountFiber(onRender, fiber);\n\t} else mountFiberRecursively(onRender, fiber, true);\n\trootInstance.prevFiber = fiber;\n};\n/**\n* @deprecated use `traverseRenderedFibers` instead\n*/\nconst createFiberVisitor = ({ onRender }) => {\n\treturn (_rendererID, root, _state) => {\n\t\ttraverseRenderedFibers(root, onRender);\n\t};\n};\nlet _overrideProps = null;\nlet _overrideHookState = null;\nlet _overrideContext = null;\nconst injectOverrideMethods = () => {\n\tif (!hasRDTHook()) return null;\n\tconst rdtHook = getRDTHook();\n\tif (!rdtHook?.renderers) return null;\n\tif (_overrideProps || _overrideHookState || _overrideContext) return {\n\t\toverrideContext: _overrideContext,\n\t\toverrideHookState: _overrideHookState,\n\t\toverrideProps: _overrideProps\n\t};\n\tfor (const [_, renderer] of Array.from(rdtHook.renderers)) try {\n\t\tif (_overrideHookState) {\n\t\t\tconst prevOverrideHookState = _overrideHookState;\n\t\t\t_overrideHookState = (fiber, id, path, value) => {\n\t\t\t\tlet current = fiber.memoizedState;\n\t\t\t\tfor (let i = 0; i < Number(id); i++) {\n\t\t\t\t\tif (!current?.next) break;\n\t\t\t\t\tcurrent = current.next;\n\t\t\t\t}\n\t\t\t\tif (current?.queue) {\n\t\t\t\t\tconst queue = current.queue;\n\t\t\t\t\tif (isPOJO(queue) && \"dispatch\" in queue) {\n\t\t\t\t\t\tconst dispatch = queue.dispatch;\n\t\t\t\t\t\tdispatch(value);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tprevOverrideHookState(fiber, id, path, value);\n\t\t\t\trenderer.overrideHookState?.(fiber, id, path, value);\n\t\t\t};\n\t\t} else if (renderer.overrideHookState) _overrideHookState = renderer.overrideHookState;\n\t\tif (_overrideProps) {\n\t\t\tconst prevOverrideProps = _overrideProps;\n\t\t\t_overrideProps = (fiber, path, value) => {\n\t\t\t\tprevOverrideProps(fiber, path, value);\n\t\t\t\trenderer.overrideProps?.(fiber, path, value);\n\t\t\t};\n\t\t} else if (renderer.overrideProps) _overrideProps = renderer.overrideProps;\n\t\t_overrideContext = (fiber, contextType, path, value) => {\n\t\t\tlet current = fiber;\n\t\t\twhile (current) {\n\t\t\t\tconst type = current.type;\n\t\t\t\tif (type === contextType || type?.Provider === contextType) {\n\t\t\t\t\tif (_overrideProps) {\n\t\t\t\t\t\t_overrideProps(current, [\"value\", ...path], value);\n\t\t\t\t\t\tif (current.alternate) _overrideProps(current.alternate, [\"value\", ...path], value);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcurrent = current.return;\n\t\t\t}\n\t\t};\n\t} catch {}\n};\nconst isPOJO = (maybePOJO) => {\n\treturn Object.prototype.toString.call(maybePOJO) === \"[object Object]\" && (Object.getPrototypeOf(maybePOJO) === Object.prototype || Object.getPrototypeOf(maybePOJO) === null);\n};\nconst buildPathsFromValue = (maybePOJO, basePath = []) => {\n\tif (!isPOJO(maybePOJO)) return [{\n\t\tpath: basePath,\n\t\tvalue: maybePOJO\n\t}];\n\tconst paths = [];\n\tfor (const key in maybePOJO) {\n\t\tconst value = maybePOJO[key];\n\t\tconst path = basePath.concat(key);\n\t\tif (isPOJO(value)) paths.push(...buildPathsFromValue(value, path));\n\t\telse paths.push({\n\t\t\tpath,\n\t\t\tvalue\n\t\t});\n\t}\n\treturn paths;\n};\nconst overrideProps = (fiber, partialValue) => {\n\tinjectOverrideMethods();\n\tconst paths = buildPathsFromValue(partialValue);\n\tfor (const { path, value } of paths) try {\n\t\t_overrideProps?.(fiber, path, value);\n\t} catch {}\n};\nconst overrideHookState = (fiber, id, partialValue) => {\n\tinjectOverrideMethods();\n\tconst hookId = String(id);\n\tif (isPOJO(partialValue)) {\n\t\tconst paths = buildPathsFromValue(partialValue);\n\t\tfor (const { path, value } of paths) try {\n\t\t\t_overrideHookState?.(fiber, hookId, path, value);\n\t\t} catch {}\n\t} else try {\n\t\t_overrideHookState?.(fiber, hookId, [], partialValue);\n\t} catch {}\n};\nconst overrideContext = (fiber, contextType, partialValue) => {\n\tinjectOverrideMethods();\n\tif (isPOJO(partialValue)) {\n\t\tconst paths = buildPathsFromValue(partialValue);\n\t\tfor (const { path, value } of paths) try {\n\t\t\t_overrideContext?.(fiber, contextType, path, value);\n\t\t} catch {}\n\t} else try {\n\t\t_overrideContext?.(fiber, contextType, [], partialValue);\n\t} catch {}\n};\n/**\n* Instruments the DevTools hook.\n* @example\n* const hook = instrument({\n* onActive() {\n* console.log('initialized');\n* },\n* onCommitFiberRoot(rendererID, root) {\n* console.log('fiberRoot', root.current)\n* },\n* });\n*/\nconst instrument = (options) => {\n\tconst rdtHook = getRDTHook(options.onActive);\n\trdtHook._instrumentationSource = options.name ?? BIPPY_INSTRUMENTATION_STRING;\n\tconst prevOnCommitFiberRoot = rdtHook.onCommitFiberRoot;\n\tif (options.onCommitFiberRoot) {\n\t\tconst handler = (rendererID, root, priority) => {\n\t\t\tif (rdtHook.onCommitFiberRoot !== handler) return;\n\t\t\tprevOnCommitFiberRoot?.(rendererID, root, priority);\n\t\t\toptions.onCommitFiberRoot?.(rendererID, root, priority);\n\t\t};\n\t\trdtHook.onCommitFiberRoot = handler;\n\t}\n\tconst prevOnCommitFiberUnmount = rdtHook.onCommitFiberUnmount;\n\tif (options.onCommitFiberUnmount) {\n\t\tconst handler = (rendererID, root) => {\n\t\t\tif (rdtHook.onCommitFiberUnmount !== handler) return;\n\t\t\tprevOnCommitFiberUnmount?.(rendererID, root);\n\t\t\toptions.onCommitFiberUnmount?.(rendererID, root);\n\t\t};\n\t\trdtHook.onCommitFiberUnmount = handler;\n\t}\n\tconst prevOnPostCommitFiberRoot = rdtHook.onPostCommitFiberRoot;\n\tif (options.onPostCommitFiberRoot) {\n\t\tconst handler = (rendererID, root) => {\n\t\t\tif (rdtHook.onPostCommitFiberRoot !== handler) return;\n\t\t\tprevOnPostCommitFiberRoot?.(rendererID, root);\n\t\t\toptions.onPostCommitFiberRoot?.(rendererID, root);\n\t\t};\n\t\trdtHook.onPostCommitFiberRoot = handler;\n\t}\n\treturn rdtHook;\n};\nconst getFiberFromHostInstance = (hostInstance) => {\n\tconst rdtHook = getRDTHook();\n\tfor (const renderer of rdtHook.renderers.values()) try {\n\t\tconst fiber = renderer.findFiberByHostInstance?.(hostInstance);\n\t\tif (fiber) return fiber;\n\t} catch {}\n\tif (typeof hostInstance === \"object\" && hostInstance != null) {\n\t\tif (\"_reactRootContainer\" in hostInstance) return hostInstance._reactRootContainer?._internalRoot?.current?.child;\n\t\tfor (const key in hostInstance) if (key.startsWith(\"__reactContainer$\") || key.startsWith(\"__reactInternalInstance$\") || key.startsWith(\"__reactFiber\")) return hostInstance[key] || null;\n\t}\n\treturn null;\n};\nconst INSTALL_ERROR = new Error();\nconst _fiberRoots = new Set();\nconst secure = (options, secureOptions = {}) => {\n\tconst onActive = options.onActive;\n\tconst isRDTHookInstalled = hasRDTHook();\n\tconst isUsingRealReactDevtools = isRealReactDevtools();\n\tconst isUsingReactRefresh = isReactRefresh();\n\tlet timeout;\n\tlet isDevelopment = !secureOptions.isProduction;\n\toptions.onActive = () => {\n\t\tclearTimeout(timeout);\n\t\tlet isSecure = true;\n\t\ttry {\n\t\t\tconst rdtHook = getRDTHook();\n\t\t\tfor (const renderer of rdtHook.renderers.values()) {\n\t\t\t\tconst [majorVersion] = renderer.version.split(\".\");\n\t\t\t\tif (Number(majorVersion) < (secureOptions.minReactMajorVersion ?? 17)) isSecure = false;\n\t\t\t\tconst buildType = detectReactBuildType(renderer);\n\t\t\t\tif (buildType === \"development\") isDevelopment = true;\n\t\t\t\telse if (!secureOptions.dangerouslyRunInProduction) isSecure = false;\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tsecureOptions.onError?.(err);\n\t\t}\n\t\tif (!isSecure) {\n\t\t\toptions.onCommitFiberRoot = void 0;\n\t\t\toptions.onCommitFiberUnmount = void 0;\n\t\t\toptions.onPostCommitFiberRoot = void 0;\n\t\t\toptions.onActive = void 0;\n\t\t\treturn;\n\t\t}\n\t\tonActive?.();\n\t\ttry {\n\t\t\tconst onCommitFiberRoot$1 = options.onCommitFiberRoot;\n\t\t\tif (onCommitFiberRoot$1) options.onCommitFiberRoot = (rendererID, root, priority) => {\n\t\t\t\tif (!_fiberRoots.has(root)) _fiberRoots.add(root);\n\t\t\t\ttry {\n\t\t\t\t\tonCommitFiberRoot$1(rendererID, root, priority);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tsecureOptions.onError?.(err);\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst onCommitFiberUnmount = options.onCommitFiberUnmount;\n\t\t\tif (onCommitFiberUnmount) options.onCommitFiberUnmount = (rendererID, root) => {\n\t\t\t\ttry {\n\t\t\t\t\tonCommitFiberUnmount(rendererID, root);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tsecureOptions.onError?.(err);\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst onPostCommitFiberRoot = options.onPostCommitFiberRoot;\n\t\t\tif (onPostCommitFiberRoot) options.onPostCommitFiberRoot = (rendererID, root) => {\n\t\t\t\ttry {\n\t\t\t\t\tonPostCommitFiberRoot(rendererID, root);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tsecureOptions.onError?.(err);\n\t\t\t\t}\n\t\t\t};\n\t\t} catch (err) {\n\t\t\tsecureOptions.onError?.(err);\n\t\t}\n\t};\n\tif (!isRDTHookInstalled && !isUsingRealReactDevtools && !isUsingReactRefresh) timeout = setTimeout(() => {\n\t\tif (isDevelopment) secureOptions.onError?.(INSTALL_ERROR);\n\t\tstop();\n\t}, secureOptions.installCheckTimeout ?? 100);\n\treturn options;\n};\n/**\n* a wrapper around the {@link instrument} function that sets the `onCommitFiberRoot` hook.\n*\n* @example\n* onCommitFiberRoot((root) => {\n* console.log(root.current);\n* });\n*/\nconst onCommitFiberRoot = (handler) => {\n\treturn instrument(secure({ onCommitFiberRoot: (_, root) => {\n\t\thandler(root);\n\t} }));\n};\n\n//#endregion\n//#region src/index.ts\nsafelyInstallRDTHook();\n\n//#endregion\nexport { ActivityComponentTag, BIPPY_INSTRUMENTATION_STRING, CONCURRENT_MODE_NUMBER, CONCURRENT_MODE_SYMBOL_STRING, ClassComponentTag, ContextConsumerTag, DEPRECATED_ASYNC_MODE_SYMBOL_STRING, DehydratedSuspenseComponentTag, ELEMENT_TYPE_SYMBOL_STRING, ForwardRefTag, FragmentTag, FunctionComponentTag, HostComponentTag, HostHoistableTag, HostRootTag, HostSingletonTag, HostTextTag, INSTALL_ERROR, LazyComponentTag, LegacyHiddenComponentTag, MemoComponentTag, OffscreenComponentTag, SimpleMemoComponentTag, SuspenseComponentTag, SuspenseListComponentTag, TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING, ViewTransitionComponentTag, _fiberRoots, _renderers, areFiberEqual, createFiberVisitor, detectReactBuildType, didFiberCommit, didFiberRender, fiberIdMap, getDisplayName, getFiberFromHostInstance, getFiberId, getFiberStack, getLatestFiber, getMutatedHostFibers, getNearestHostFiber, getNearestHostFibers, getRDTHook, getTimings, getType, hasMemoCache, hasRDTHook, injectOverrideMethods, installRDTHook, instrument, isClientEnvironment, isCompositeFiber, isHostFiber, isInstrumentationActive, isReactRefresh, isRealReactDevtools, isValidElement, isValidFiber, mountFiberRecursively, onCommitFiberRoot, overrideContext, overrideHookState, overrideProps, patchRDTHook, safelyInstallRDTHook, secure, setFiberId, shouldFilterFiber, traverseContexts, traverseFiber, traverseFiberAsync, traverseFiberSync, traverseProps, traverseRenderedFibers, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively, version };","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-expect-error We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {import('./index').ContainerNode} node The node to remove\n */\nexport function removeNode(node) {\n\tif (node && node.parentNode) node.parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { slice } from './util';\nimport options from './options';\nimport { NULL, UNDEFINED } from './constants';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor for this\n * virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the\n * virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != NULL) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === UNDEFINED) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, NULL);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\t/** @type {import('./internal').VNode} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: NULL,\n\t\t_parent: NULL,\n\t\t_depth: 0,\n\t\t_dom: NULL,\n\t\t_component: NULL,\n\t\tconstructor: UNDEFINED,\n\t\t_original: original == NULL ? ++vnodeId : original,\n\t\t_index: -1,\n\t\t_flags: 0\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == NULL && options.vnode != NULL) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: NULL };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != NULL && vnode.constructor == UNDEFINED;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE, NULL } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != NULL && this._nextState != this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == NULL) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](https://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == NULL) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: NULL;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != NULL && sibling._dom != NULL) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : NULL;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet oldVNode = component._vnode,\n\t\toldDom = oldVNode._dom,\n\t\tcommitQueue = [],\n\t\trefQueue = [];\n\n\tif (component._parentDom) {\n\t\tconst newVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : NULL,\n\t\t\tcommitQueue,\n\t\t\toldDom == NULL ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\t\toldVNode._dom = oldVNode._parent = null;\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != NULL && vnode._component != NULL) {\n\t\tvnode._dom = vnode._component.base = NULL;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != NULL && child._dom != NULL) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce != options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c,\n\t\tl = 1;\n\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile (rerenderQueue.length) {\n\t\t// Keep the rerender queue sorted by (depth, insertion order). The queue\n\t\t// will initially be sorted on the first iteration only if it has more than 1 item.\n\t\t//\n\t\t// New items can be added to the queue e.g. when rerendering a provider, so we want to\n\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t// single pass\n\t\tif (rerenderQueue.length > l) {\n\t\t\trerenderQueue.sort(depthSort);\n\t\t}\n\n\t\tc = rerenderQueue.shift();\n\t\tl = rerenderQueue.length;\n\n\t\tif (c._dirty) {\n\t\t\trenderComponent(c);\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n","import { IS_NON_DIMENSIONAL, NULL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == NULL ? '' : value);\n\t} else if (value == NULL) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] != oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\t\tconst lowerCaseName = name.toLowerCase();\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (lowerCaseName in dom || name == 'onFocusOut' || name == 'onFocusIn')\n\t\t\tname = lowerCaseName.slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == NULL ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != NULL && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e._dispatched == NULL) {\n\t\t\t\te._dispatched = eventClock++;\n\n\t\t\t\t// When `e._dispatched` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e._dispatched < eventHandler._attached) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n","import { enqueueRender } from './component';\nimport { NULL } from './constants';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tfunction Context(props) {\n\t\tif (!this.getChildContext) {\n\t\t\t/** @type {Set<import('./internal').Component> | null} */\n\t\t\tlet subs = new Set();\n\t\t\tlet ctx = {};\n\t\t\tctx[Context._id] = this;\n\n\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\tsubs = NULL;\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t// @ts-expect-error even\n\t\t\t\tif (this.props.value != _props.value) {\n\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.sub = c => {\n\t\t\t\tsubs.add(c);\n\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\tif (subs) {\n\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t}\n\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\treturn props.children;\n\t}\n\n\tContext._id = '__cC' + i++;\n\tContext._defaultValue = defaultValue;\n\n\t/** @type {import('./internal').FunctionComponent} */\n\tContext.Consumer = (props, contextValue) => {\n\t\treturn props.children(contextValue);\n\t};\n\n\t// we could also get rid of _contextRef entirely\n\tContext.Provider =\n\t\tContext._contextRef =\n\t\tContext.Consumer.contextType =\n\t\t\tContext;\n\n\treturn Context;\n}\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport {\n\tEMPTY_OBJ,\n\tEMPTY_ARR,\n\tINSERT_VNODE,\n\tMATCHED,\n\tUNDEFINED,\n\tNULL\n} from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * @typedef {import('../internal').ComponentChildren} ComponentChildren\n * @typedef {import('../internal').Component} Component\n * @typedef {import('../internal').PreactElement} PreactElement\n * @typedef {import('../internal').VNode} VNode\n */\n\n/**\n * Diff the children of a virtual node\n * @param {PreactElement} parentDom The DOM element whose children are being\n * diffed\n * @param {ComponentChildren[]} renderResult\n * @param {VNode} newParentVNode The new virtual node whose children should be\n * diff'ed against oldParentVNode\n * @param {VNode} oldParentVNode The old virtual node whose children should be\n * diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\t/** @type {VNode} */\n\t\toldVNode,\n\t\t/** @type {VNode} */\n\t\tchildVNode,\n\t\t/** @type {PreactElement} */\n\t\tnewDom,\n\t\t/** @type {PreactElement} */\n\t\tfirstChildDom;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\t/** @type {VNode[]} */\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet newChildrenLength = renderResult.length;\n\n\toldDom = constructNewChildrenArray(\n\t\tnewParentVNode,\n\t\trenderResult,\n\t\toldChildren,\n\t\toldDom,\n\t\tnewChildrenLength\n\t);\n\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = newParentVNode._children[i];\n\t\tif (childVNode == NULL) continue;\n\n\t\t// At this point, constructNewChildrenArray has assigned _index to be the\n\t\t// matchingIndex for this VNode's oldVNode (or -1 if there is no oldVNode).\n\t\tif (childVNode._index == -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[childVNode._index] || EMPTY_OBJ;\n\t\t}\n\n\t\t// Update childVNode._index to its final index\n\t\tchildVNode._index = i;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tlet result = diff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\t// Adjust DOM nodes\n\t\tnewDom = childVNode._dom;\n\t\tif (childVNode.ref && oldVNode.ref != childVNode.ref) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, NULL, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(\n\t\t\t\tchildVNode.ref,\n\t\t\t\tchildVNode._component || newDom,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t}\n\n\t\tif (firstChildDom == NULL && newDom != NULL) {\n\t\t\tfirstChildDom = newDom;\n\t\t}\n\n\t\tlet shouldPlace = !!(childVNode._flags & INSERT_VNODE);\n\t\tif (shouldPlace || oldVNode._children === childVNode._children) {\n\t\t\toldDom = insert(childVNode, oldDom, parentDom, shouldPlace);\n\t\t} else if (typeof childVNode.type == 'function' && result !== UNDEFINED) {\n\t\t\toldDom = result;\n\t\t} else if (newDom) {\n\t\t\toldDom = newDom.nextSibling;\n\t\t}\n\n\t\t// Unset diffing flags\n\t\tchildVNode._flags &= ~(INSERT_VNODE | MATCHED);\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\treturn oldDom;\n}\n\n/**\n * @param {VNode} newParentVNode\n * @param {ComponentChildren[]} renderResult\n * @param {VNode[]} oldChildren\n */\nfunction constructNewChildrenArray(\n\tnewParentVNode,\n\trenderResult,\n\toldChildren,\n\toldDom,\n\tnewChildrenLength\n) {\n\t/** @type {number} */\n\tlet i;\n\t/** @type {VNode} */\n\tlet childVNode;\n\t/** @type {VNode} */\n\tlet oldVNode;\n\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength;\n\n\tlet skew = 0;\n\n\tnewParentVNode._children = new Array(newChildrenLength);\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\t// @ts-expect-error We are reusing the childVNode variable to hold both the\n\t\t// pre and post normalized childVNode\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == NULL ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tnewParentVNode._children[i] = NULL;\n\t\t\tcontinue;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint' ||\n\t\t\tchildVNode.constructor == String\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tNULL,\n\t\t\t\tchildVNode,\n\t\t\t\tNULL,\n\t\t\t\tNULL,\n\t\t\t\tNULL\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tNULL,\n\t\t\t\tNULL,\n\t\t\t\tNULL\n\t\t\t);\n\t\t} else if (childVNode.constructor == UNDEFINED && childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t// const reuse = <div />\n\t\t\t// <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : NULL,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\tconst skewedIndex = i + skew;\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Temporarily store the matchingIndex on the _index property so we can pull\n\t\t// out the oldVNode in diffChildren. We'll override this to the VNode's\n\t\t// final index after using this property to get the oldVNode\n\t\tconst matchingIndex = (childVNode._index = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t));\n\n\t\toldVNode = NULL;\n\t\tif (matchingIndex != -1) {\n\t\t\toldVNode = oldChildren[matchingIndex];\n\t\t\tremainingOldChildren--;\n\t\t\tif (oldVNode) {\n\t\t\t\toldVNode._flags |= MATCHED;\n\t\t\t}\n\t\t}\n\n\t\t// Here, we define isMounting for the purposes of the skew diffing\n\t\t// algorithm. Nodes that are unsuspending are considered mounting and we detect\n\t\t// this by checking if oldVNode._original == null\n\t\tconst isMounting = oldVNode == NULL || oldVNode._original == NULL;\n\n\t\tif (isMounting) {\n\t\t\tif (matchingIndex == -1) {\n\t\t\t\t// When the array of children is growing we need to decrease the skew\n\t\t\t\t// as we are adding a new element to the array.\n\t\t\t\t// Example:\n\t\t\t\t// [1, 2, 3] --> [0, 1, 2, 3]\n\t\t\t\t// oldChildren newChildren\n\t\t\t\t//\n\t\t\t\t// The new element is at index 0, so our skew is 0,\n\t\t\t\t// we need to decrease the skew as we are adding a new element.\n\t\t\t\t// The decrease will cause us to compare the element at position 1\n\t\t\t\t// with value 1 with the element at position 0 with value 0.\n\t\t\t\t//\n\t\t\t\t// A linear concept is applied when the array is shrinking,\n\t\t\t\t// if the length is unchanged we can assume that no skew\n\t\t\t\t// changes are needed.\n\t\t\t\tif (newChildrenLength > oldChildrenLength) {\n\t\t\t\t\tskew--;\n\t\t\t\t} else if (newChildrenLength < oldChildrenLength) {\n\t\t\t\t\tskew++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If we are mounting a DOM VNode, mark it for insertion\n\t\t\tif (typeof childVNode.type != 'function') {\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t} else if (matchingIndex != skewedIndex) {\n\t\t\t// When we move elements around i.e. [0, 1, 2] --> [1, 0, 2]\n\t\t\t// --> we diff 1, we find it at position 1 while our skewed index is 0 and our skew is 0\n\t\t\t// we set the skew to 1 as we found an offset.\n\t\t\t// --> we diff 0, we find it at position 0 while our skewed index is at 2 and our skew is 1\n\t\t\t// this makes us increase the skew again.\n\t\t\t// --> we diff 2, we find it at position 2 while our skewed index is at 4 and our skew is 2\n\t\t\t//\n\t\t\t// this becomes an optimization question where currently we see a 1 element offset as an insertion\n\t\t\t// or deletion i.e. we optimize for [0, 1, 2] --> [9, 0, 1, 2]\n\t\t\t// while a more than 1 offset we see as a swap.\n\t\t\t// We could probably build heuristics for having an optimized course of action here as well, but\n\t\t\t// might go at the cost of some bytes.\n\t\t\t//\n\t\t\t// If we wanted to optimize for i.e. only swaps we'd just do the last two code-branches and have\n\t\t\t// only the first item be a re-scouting and all the others fall in their skewed counter-part.\n\t\t\t// We could also further optimize for swaps\n\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\tskew--;\n\t\t\t} else if (matchingIndex == skewedIndex + 1) {\n\t\t\t\tskew++;\n\t\t\t} else {\n\t\t\t\tif (matchingIndex > skewedIndex) {\n\t\t\t\t\tskew--;\n\t\t\t\t} else {\n\t\t\t\t\tskew++;\n\t\t\t\t}\n\n\t\t\t\t// Move this VNode's DOM if the original index (matchingIndex) doesn't\n\t\t\t\t// match the new skew index (i + new skew)\n\t\t\t\t// In the former two branches we know that it matches after skewing\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any. Loop forwards so that as we\n\t// unmount DOM from the beginning of the oldChildren, we can adjust oldDom to\n\t// point to the next child, which needs to be the first DOM node that won't be\n\t// unmounted.\n\tif (remainingOldChildren) {\n\t\tfor (i = 0; i < oldChildrenLength; i++) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode != NULL && (oldVNode._flags & MATCHED) == 0) {\n\t\t\t\tif (oldVNode._dom == oldDom) {\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * @param {VNode} parentVNode\n * @param {PreactElement} oldDom\n * @param {PreactElement} parentDom\n * @param {boolean} shouldPlace\n * @returns {PreactElement}\n */\nfunction insert(parentVNode, oldDom, parentDom, shouldPlace) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\n\tif (typeof parentVNode.type == 'function') {\n\t\tlet children = parentVNode._children;\n\t\tfor (let i = 0; children && i < children.length; i++) {\n\t\t\tif (children[i]) {\n\t\t\t\t// If we enter this code path on sCU bailout, where we copy\n\t\t\t\t// oldVNode._children to newVNode._children, we need to update the old\n\t\t\t\t// children's _parent pointer to point to the newVNode (parentVNode\n\t\t\t\t// here).\n\t\t\t\tchildren[i]._parent = parentVNode;\n\t\t\t\toldDom = insert(children[i], oldDom, parentDom, shouldPlace);\n\t\t\t}\n\t\t}\n\n\t\treturn oldDom;\n\t} else if (parentVNode._dom != oldDom) {\n\t\tif (shouldPlace) {\n\t\t\tif (oldDom && parentVNode.type && !oldDom.parentNode) {\n\t\t\t\toldDom = getDomSibling(parentVNode);\n\t\t\t}\n\t\t\tparentDom.insertBefore(parentVNode._dom, oldDom || NULL);\n\t\t}\n\t\toldDom = parentVNode._dom;\n\t}\n\n\tdo {\n\t\toldDom = oldDom && oldDom.nextSibling;\n\t} while (oldDom != NULL && oldDom.nodeType == 8);\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {ComponentChildren} children The unflattened children of a virtual\n * node\n * @returns {VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == NULL || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\n/**\n * @param {VNode} childVNode\n * @param {VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet oldVNode = oldChildren[skewedIndex];\n\tconst matched = oldVNode != NULL && (oldVNode._flags & MATCHED) == 0;\n\n\t// We only need to perform a search if there are more children\n\t// (remainingOldChildren) to search. However, if the oldVNode we just looked\n\t// at skewedIndex was not already used in this diff, then there must be at\n\t// least 1 other (so greater than 1) remainingOldChildren to attempt to match\n\t// against. So the following condition checks that ensuring\n\t// remainingOldChildren > 1 if the oldVNode is not already used/matched. Else\n\t// if the oldVNode was null or matched, then there could needs to be at least\n\t// 1 (aka `remainingOldChildren > 0`) children to find and compare against.\n\t//\n\t// If there is an unkeyed functional VNode, that isn't a built-in like our Fragment,\n\t// we should not search as we risk re-using state of an unrelated VNode. (reverted for now)\n\tlet shouldSearch =\n\t\t// (typeof type != 'function' || type === Fragment || key) &&\n\t\tremainingOldChildren > (matched ? 1 : 0);\n\n\tif (\n\t\t(oldVNode === NULL && childVNode.key == null) ||\n\t\t(matched && key == oldVNode.key && type == oldVNode.type)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (shouldSearch) {\n\t\tlet x = skewedIndex - 1;\n\t\tlet y = skewedIndex + 1;\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tconst childIndex = x >= 0 ? x-- : y++;\n\t\t\toldVNode = oldChildren[childIndex];\n\t\t\tif (\n\t\t\t\toldVNode != NULL &&\n\t\t\t\t(oldVNode._flags & MATCHED) == 0 &&\n\t\t\t\tkey == oldVNode.key &&\n\t\t\t\ttype == oldVNode.type\n\t\t\t) {\n\t\t\t\treturn childIndex;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n","import {\n\tEMPTY_OBJ,\n\tMATH_NAMESPACE,\n\tMODE_HYDRATE,\n\tMODE_SUSPENDED,\n\tNULL,\n\tRESET_MODE,\n\tSVG_NAMESPACE,\n\tUNDEFINED,\n\tXHTML_NAMESPACE\n} from '../constants';\nimport { BaseComponent, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * @typedef {import('../internal').ComponentChildren} ComponentChildren\n * @typedef {import('../internal').Component} Component\n * @typedef {import('../internal').PreactElement} PreactElement\n * @typedef {import('../internal').VNode} VNode\n */\n\n/**\n * @template {any} T\n * @typedef {import('../internal').Ref<T>} Ref<T>\n */\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {PreactElement} parentDom The parent of the DOM element\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\t/** @type {any} */\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor != UNDEFINED) return NULL;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._flags & MODE_SUSPENDED) {\n\t\tisHydrating = !!(oldVNode._flags & MODE_HYDRATE);\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\t\t\tconst isClassComponent =\n\t\t\t\t'prototype' in newType && newType.prototype.render;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif (isClassComponent) {\n\t\t\t\t\t// @ts-expect-error The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-expect-error Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new BaseComponent(\n\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (isClassComponent && c._nextState == NULL) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (isClassComponent && newType.getDerivedStateFromProps != NULL) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == NULL &&\n\t\t\t\t\tc.componentWillMount != NULL\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidMount != NULL) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == NULL &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != NULL\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != NULL &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original == oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original != oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.some(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != NULL) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidUpdate != NULL) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif (isClassComponent) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != NULL) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (isClassComponent && !isNew && c.getSnapshotBeforeUpdate != NULL) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != NULL && tmp.type === Fragment && tmp.key == NULL;\n\t\t\tlet renderResult = tmp;\n\n\t\t\tif (isTopLevelFragment) {\n\t\t\t\trenderResult = cloneNode(tmp.props.children);\n\t\t\t}\n\n\t\t\toldDom = diffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnamespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._flags &= RESET_MODE;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = NULL;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = NULL;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != NULL) {\n\t\t\t\tif (e.then) {\n\t\t\t\t\tnewVNode._flags |= isHydrating\n\t\t\t\t\t\t? MODE_HYDRATE | MODE_SUSPENDED\n\t\t\t\t\t\t: MODE_SUSPENDED;\n\n\t\t\t\t\twhile (oldDom && oldDom.nodeType == 8 && oldDom.nextSibling) {\n\t\t\t\t\t\toldDom = oldDom.nextSibling;\n\t\t\t\t\t}\n\n\t\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = NULL;\n\t\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\t} else {\n\t\t\t\t\tfor (let i = excessDomChildren.length; i--; ) {\n\t\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t\t}\n\t\t\t\t\tmarkAsForce(newVNode);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\tif (!e.then) markAsForce(newVNode);\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == NULL &&\n\t\tnewVNode._original == oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\toldDom = newVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n\n\treturn newVNode._flags & MODE_SUSPENDED ? undefined : oldDom;\n}\n\nfunction markAsForce(vnode) {\n\tif (vnode && vnode._component) vnode._component._force = true;\n\tif (vnode && vnode._children) vnode._children.forEach(markAsForce);\n}\n\n/**\n * @param {Array<Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-expect-error Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-expect-error See above comment on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\nfunction cloneNode(node) {\n\tif (\n\t\ttypeof node != 'object' ||\n\t\tnode == NULL ||\n\t\t(node._depth && node._depth > 0)\n\t) {\n\t\treturn node;\n\t}\n\n\tif (isArray(node)) {\n\t\treturn node.map(cloneNode);\n\t}\n\n\treturn assign({}, node);\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {PreactElement} dom The DOM element representing the virtual nodes\n * being diffed\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n * @returns {PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = /** @type {string} */ (newVNode.type);\n\t/** @type {any} */\n\tlet i;\n\t/** @type {{ __html?: string }} */\n\tlet newHtml;\n\t/** @type {{ __html?: string }} */\n\tlet oldHtml;\n\t/** @type {ComponentChildren} */\n\tlet newChildren;\n\tlet value;\n\tlet inputValue;\n\tlet checked;\n\n\t// Tracks entering and exiting namespaces when descending through the tree.\n\tif (nodeType == 'svg') namespace = SVG_NAMESPACE;\n\telse if (nodeType == 'math') namespace = MATH_NAMESPACE;\n\telse if (!namespace) namespace = XHTML_NAMESPACE;\n\n\tif (excessDomChildren != NULL) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tvalue = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tvalue &&\n\t\t\t\t'setAttribute' in value == !!nodeType &&\n\t\t\t\t(nodeType ? value.localName == nodeType : value.nodeType == 3)\n\t\t\t) {\n\t\t\t\tdom = value;\n\t\t\t\texcessDomChildren[i] = NULL;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == NULL) {\n\t\tif (nodeType == NULL) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = document.createElementNS(\n\t\t\tnamespace,\n\t\t\tnodeType,\n\t\t\tnewProps.is && newProps\n\t\t);\n\n\t\t// we are creating a new node, so we can assume this is a new subtree (in\n\t\t// case we are hydrating), this deopts the hydrate\n\t\tif (isHydrating) {\n\t\t\tif (options._hydrationMismatch)\n\t\t\t\toptions._hydrationMismatch(newVNode, excessDomChildren);\n\t\t\tisHydrating = false;\n\t\t}\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = NULL;\n\t}\n\n\tif (nodeType == NULL) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data != newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\t// If we are in a situation where we are not hydrating but are using\n\t\t// existing DOM (e.g. replaceNode) we should read the existing DOM\n\t\t// attributes to diff them\n\t\tif (!isHydrating && excessDomChildren != NULL) {\n\t\t\toldProps = {};\n\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\tvalue = dom.attributes[i];\n\t\t\t\toldProps[value.name] = value.value;\n\t\t\t}\n\t\t}\n\n\t\tfor (i in oldProps) {\n\t\t\tvalue = oldProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\toldHtml = value;\n\t\t\t} else if (!(i in newProps)) {\n\t\t\t\tif (\n\t\t\t\t\t(i == 'value' && 'defaultValue' in newProps) ||\n\t\t\t\t\t(i == 'checked' && 'defaultChecked' in newProps)\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tsetProperty(dom, i, NULL, value, namespace);\n\t\t\t}\n\t\t}\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tfor (i in newProps) {\n\t\t\tvalue = newProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t\tnewChildren = value;\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\tnewHtml = value;\n\t\t\t} else if (i == 'value') {\n\t\t\t\tinputValue = value;\n\t\t\t} else if (i == 'checked') {\n\t\t\t\tchecked = value;\n\t\t\t} else if (\n\t\t\t\t(!isHydrating || typeof value == 'function') &&\n\t\t\t\toldProps[i] !== value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, value, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\tif (\n\t\t\t\t!isHydrating &&\n\t\t\t\t(!oldHtml ||\n\t\t\t\t\t(newHtml.__html != oldHtml.__html && newHtml.__html != dom.innerHTML))\n\t\t\t) {\n\t\t\t\tdom.innerHTML = newHtml.__html;\n\t\t\t}\n\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tif (oldHtml) dom.innerHTML = '';\n\n\t\t\tdiffChildren(\n\t\t\t\t// @ts-expect-error\n\t\t\t\tnewVNode.type == 'template' ? dom.content : dom,\n\t\t\t\tisArray(newChildren) ? newChildren : [newChildren],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnodeType == 'foreignObject' ? XHTML_NAMESPACE : namespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != NULL) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// As above, don't diff props during hydration\n\t\tif (!isHydrating) {\n\t\t\ti = 'value';\n\t\t\tif (nodeType == 'progress' && inputValue == NULL) {\n\t\t\t\tdom.removeAttribute('value');\n\t\t\t} else if (\n\t\t\t\tinputValue != UNDEFINED &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(inputValue !== dom[i] ||\n\t\t\t\t\t(nodeType == 'progress' && !inputValue) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType == 'option' && inputValue != oldProps[i]))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, inputValue, oldProps[i], namespace);\n\t\t\t}\n\n\t\t\ti = 'checked';\n\t\t\tif (checked != UNDEFINED && checked != dom[i]) {\n\t\t\t\tsetProperty(dom, i, checked, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {Ref<any> & { _unmount?: unknown }} ref\n * @param {any} value\n * @param {VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') {\n\t\t\tlet hasRefUnmount = typeof ref._unmount == 'function';\n\t\t\tif (hasRefUnmount) {\n\t\t\t\t// @ts-ignore TS doesn't like moving narrowing checks into variables\n\t\t\t\tref._unmount();\n\t\t\t}\n\n\t\t\tif (!hasRefUnmount || value != NULL) {\n\t\t\t\t// Store the cleanup function on the function\n\t\t\t\t// instance object itself to avoid shape\n\t\t\t\t// transitioning vnode\n\t\t\t\tref._unmount = ref(value);\n\t\t\t}\n\t\t} else ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {VNode} vnode The virtual node to unmount\n * @param {VNode} parentVNode The parent of the VNode that initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current == vnode._dom) {\n\t\t\tapplyRef(r, NULL, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != NULL) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = NULL;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type != 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\tvnode._component = vnode._parent = vnode._dom = UNDEFINED;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ, NULL } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\t// https://github.com/preactjs/preact/issues/3794\n\tif (parentDom == document) {\n\t\tparentDom = document.documentElement;\n\t}\n\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode == 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? NULL\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, NULL, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.namespaceURI,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t\t? NULL\n\t\t\t\t: parentDom.firstChild\n\t\t\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t\t\t: NULL,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t\t? oldVNode._dom\n\t\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n","import { assign, slice } from './util';\nimport { createVNode } from './create-element';\nimport { NULL, UNDEFINED } from './constants';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its\n * children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used\n * as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === UNDEFINED && defaultProps != UNDEFINED) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tNULL\n\t);\n}\n","import { NULL } from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != NULL) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != NULL) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { options as _options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {import('./internal').Component} */\nlet previousComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array<import('./internal').Component>} */\nlet afterPaintEffects = [];\n\n// Cast to use internal Options type\nconst options = /** @type {import('./internal').Options} */ (_options);\n\nlet oldBeforeDiff = options._diff;\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\nlet oldRoot = options._root;\n\n// We take the minimum timeout for requestAnimationFrame to ensure that\n// the callback is invoked after the next frame. 35ms is based on a 30hz\n// refresh rate, which is the minimum rate for a smooth user experience.\nconst RAF_TIMEOUT = 35;\nlet prevRaf;\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions._diff = vnode => {\n\tcurrentComponent = null;\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n};\n\noptions._root = (vnode, parentDom) => {\n\tif (vnode && parentDom._children && parentDom._children._mask) {\n\t\tvnode._mask = parentDom._children._mask;\n\t}\n\n\tif (oldRoot) oldRoot(vnode, parentDom);\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\tif (previousComponent === currentComponent) {\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentComponent._renderCallbacks = [];\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t}\n\t\t\t\thookItem._pendingArgs = hookItem._nextValue = undefined;\n\t\t\t});\n\t\t} else {\n\t\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentIndex = 0;\n\t\t}\n\t}\n\tpreviousComponent = currentComponent;\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tif (c.__hooks._pendingEffects.length) afterPaint(afterPaintEffects.push(c));\n\t\tc.__hooks._list.forEach(hookItem => {\n\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t}\n\t\t\thookItem._pendingArgs = undefined;\n\t\t});\n\t}\n\tpreviousComponent = currentComponent = null;\n};\n\n// TODO: Improve typing of commitQueue parameter\n/** @type {(vnode: import('./internal').VNode, commitQueue: any) => void} */\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tlet hasErrored;\n\t\tc.__hooks._list.forEach(s => {\n\t\t\ttry {\n\t\t\t\tinvokeCleanup(s);\n\t\t\t} catch (e) {\n\t\t\t\thasErrored = e;\n\t\t\t}\n\t\t});\n\t\tc.__hooks = undefined;\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {any}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({});\n\t}\n\n\treturn hooks._list[index];\n}\n\n/**\n * @template {unknown} S\n * @param {import('./index').Dispatch<import('./index').StateUpdater<S>>} [initialState]\n * @returns {[S, (state: S) => void]}\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @template {unknown} S\n * @template {unknown} A\n * @param {import('./index').Reducer<S, A>} reducer\n * @param {import('./index').Dispatch<import('./index').StateUpdater<S>>} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ S, (state: S) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst currentValue = hookState._nextValue\n\t\t\t\t\t? hookState._nextValue[0]\n\t\t\t\t\t: hookState._value[0];\n\t\t\t\tconst nextValue = hookState._reducer(currentValue, action);\n\n\t\t\t\tif (currentValue !== nextValue) {\n\t\t\t\t\thookState._nextValue = [nextValue, hookState._value[1]];\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\thookState._component = currentComponent;\n\n\t\tif (!currentComponent._hasScuFromHooks) {\n\t\t\tcurrentComponent._hasScuFromHooks = true;\n\t\t\tlet prevScu = currentComponent.shouldComponentUpdate;\n\t\t\tconst prevCWU = currentComponent.componentWillUpdate;\n\n\t\t\t// If we're dealing with a forced update `shouldComponentUpdate` will\n\t\t\t// not be called. But we use that to update the hook values, so we\n\t\t\t// need to call it.\n\t\t\tcurrentComponent.componentWillUpdate = function (p, s, c) {\n\t\t\t\tif (this._force) {\n\t\t\t\t\tlet tmp = prevScu;\n\t\t\t\t\t// Clear to avoid other sCU hooks from being called\n\t\t\t\t\tprevScu = undefined;\n\t\t\t\t\tupdateHookState(p, s, c);\n\t\t\t\t\tprevScu = tmp;\n\t\t\t\t}\n\n\t\t\t\tif (prevCWU) prevCWU.call(this, p, s, c);\n\t\t\t};\n\n\t\t\t// This SCU has the purpose of bailing out after repeated updates\n\t\t\t// to stateful hooks.\n\t\t\t// we store the next value in _nextValue[0] and keep doing that for all\n\t\t\t// state setters, if we have next states and\n\t\t\t// all next states within a component end up being equal to their original state\n\t\t\t// we are safe to bail out for this specific component.\n\t\t\t/**\n\t\t\t *\n\t\t\t * @type {import('./internal').Component[\"shouldComponentUpdate\"]}\n\t\t\t */\n\t\t\t// @ts-ignore - We don't use TS to downtranspile\n\t\t\t// eslint-disable-next-line no-inner-declarations\n\t\t\tfunction updateHookState(p, s, c) {\n\t\t\t\tif (!hookState._component.__hooks) return true;\n\n\t\t\t\t/** @type {(x: import('./internal').HookState) => x is import('./internal').ReducerHookState} */\n\t\t\t\tconst isStateHook = x => !!x._component;\n\t\t\t\tconst stateHooks =\n\t\t\t\t\thookState._component.__hooks._list.filter(isStateHook);\n\n\t\t\t\tconst allHooksEmpty = stateHooks.every(x => !x._nextValue);\n\t\t\t\t// When we have no updated hooks in the component we invoke the previous SCU or\n\t\t\t\t// traverse the VDOM tree further.\n\t\t\t\tif (allHooksEmpty) {\n\t\t\t\t\treturn prevScu ? prevScu.call(this, p, s, c) : true;\n\t\t\t\t}\n\n\t\t\t\t// We check whether we have components with a nextValue set that\n\t\t\t\t// have values that aren't equal to one another this pushes\n\t\t\t\t// us to update further down the tree\n\t\t\t\tlet shouldUpdate = hookState._component.props !== p;\n\t\t\t\tstateHooks.forEach(hookItem => {\n\t\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\t\tconst currentValue = hookItem._value[0];\n\t\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t\t\thookItem._nextValue = undefined;\n\t\t\t\t\t\tif (currentValue !== hookItem._value[0]) shouldUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn prevScu\n\t\t\t\t\t? prevScu.call(this, p, s, c) || shouldUpdate\n\t\t\t\t\t: shouldUpdate;\n\t\t\t}\n\n\t\t\tcurrentComponent.shouldComponentUpdate = updateHookState;\n\t\t}\n\t}\n\n\treturn hookState._nextValue || hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\n/** @type {(initialValue: unknown) => unknown} */\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') {\n\t\t\t\tconst result = ref(createHandle());\n\t\t\t\treturn () => {\n\t\t\t\t\tref(null);\n\t\t\t\t\tif (result && typeof result == 'function') result();\n\t\t\t\t};\n\t\t\t} else if (ref) {\n\t\t\t\tref.current = createHandle();\n\t\t\t\treturn () => (ref.current = null);\n\t\t\t}\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @template {unknown} T\n * @param {() => T} factory\n * @param {unknown[]} args\n * @returns {T}\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState<T>} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._value = factory();\n\t\tstate._args = args;\n\t\tstate._factory = factory;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {unknown[]} args\n * @returns {() => void}\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\t/** @type {import('./internal').ContextHookState} */\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {<T>(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(\n\t\t\tformatter ? formatter(value) : /** @type {any}*/ (value)\n\t\t);\n\t}\n}\n\n/**\n * @param {(error: unknown, errorInfo: import('preact').ErrorInfo) => void} cb\n * @returns {[unknown, () => void]}\n */\nexport function useErrorBoundary(cb) {\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = (err, errorInfo) => {\n\t\t\tif (state._value) state._value(err, errorInfo);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\n/** @type {() => string} */\nexport function useId() {\n\t/** @type {import('./internal').IdHookState} */\n\tconst state = getHookState(currentIndex++, 11);\n\tif (!state._value) {\n\t\t// Grab either the root node or the nearest async boundary node.\n\t\t/** @type {import('./internal').VNode} */\n\t\tlet root = currentComponent._vnode;\n\t\twhile (root !== null && !root._mask && root._parent !== null) {\n\t\t\troot = root._parent;\n\t\t}\n\n\t\tlet mask = root._mask || (root._mask = [0, 0]);\n\t\tstate._value = 'P' + mask[0] + '-' + mask[1]++;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tlet component;\n\twhile ((component = afterPaintEffects.shift())) {\n\t\tif (!component._parentDom || !component.__hooks) continue;\n\t\ttry {\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t} catch (e) {\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t}\n}\n\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (HAS_RAF) {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n * @returns {void}\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').HookState} hook\n * @returns {void}\n */\nfunction invokeCleanup(hook) {\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\tlet cleanup = hook._cleanup;\n\tif (typeof cleanup == 'function') {\n\t\thook._cleanup = undefined;\n\t\tcleanup();\n\t}\n\n\tcurrentComponent = comp;\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n * @returns {void}\n */\nfunction invokeEffect(hook) {\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\thook._cleanup = hook._value();\n\tcurrentComponent = comp;\n}\n\n/**\n * @param {unknown[]} oldArgs\n * @param {unknown[]} newArgs\n * @returns {boolean}\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn (\n\t\t!oldArgs ||\n\t\toldArgs.length !== newArgs.length ||\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\n\t);\n}\n\n/**\n * @template Arg\n * @param {Arg} arg\n * @param {(arg: Arg) => any} f\n * @returns {any}\n */\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n","// An named symbol/brand for detecting Signal instances even when they weren't\n// created using the same signals library version.\nconst BRAND_SYMBOL = Symbol.for(\"preact-signals\");\n\n// Flags for Computed and Effect.\nconst RUNNING = 1 << 0;\nconst NOTIFIED = 1 << 1;\nconst OUTDATED = 1 << 2;\nconst DISPOSED = 1 << 3;\nconst HAS_ERROR = 1 << 4;\nconst TRACKING = 1 << 5;\n\n// A linked list node used to track dependencies (sources) and dependents (targets).\n// Also used to remember the source's last version number that the target saw.\ntype Node = {\n\t// A source whose value the target depends on.\n\t_source: Signal;\n\t_prevSource?: Node;\n\t_nextSource?: Node;\n\n\t// A target that depends on the source and should be notified when the source changes.\n\t_target: Computed | Effect;\n\t_prevTarget?: Node;\n\t_nextTarget?: Node;\n\n\t// The version number of the source that target has last seen. We use version numbers\n\t// instead of storing the source value, because source values can take arbitrary amount\n\t// of memory, and computeds could hang on to them forever because they're lazily evaluated.\n\t// Use the special value -1 to mark potentially unused but recyclable nodes.\n\t_version: number;\n\n\t// Used to remember & roll back the source's previous `._node` value when entering &\n\t// exiting a new evaluation context.\n\t_rollbackNode?: Node;\n};\n\nfunction startBatch() {\n\tbatchDepth++;\n}\n\nfunction endBatch() {\n\tif (batchDepth > 1) {\n\t\tbatchDepth--;\n\t\treturn;\n\t}\n\n\tlet error: unknown;\n\tlet hasError = false;\n\n\twhile (batchedEffect !== undefined) {\n\t\tlet effect: Effect | undefined = batchedEffect;\n\t\tbatchedEffect = undefined;\n\n\t\tbatchIteration++;\n\n\t\twhile (effect !== undefined) {\n\t\t\tconst next: Effect | undefined = effect._nextBatchedEffect;\n\t\t\teffect._nextBatchedEffect = undefined;\n\t\t\teffect._flags &= ~NOTIFIED;\n\n\t\t\tif (!(effect._flags & DISPOSED) && needsToRecompute(effect)) {\n\t\t\t\ttry {\n\t\t\t\t\teffect._callback();\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (!hasError) {\n\t\t\t\t\t\terror = err;\n\t\t\t\t\t\thasError = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\teffect = next;\n\t\t}\n\t}\n\tbatchIteration = 0;\n\tbatchDepth--;\n\n\tif (hasError) {\n\t\tthrow error;\n\t}\n}\n\n/**\n * Combine multiple value updates into one \"commit\" at the end of the provided callback.\n *\n * Batches can be nested and changes are only flushed once the outermost batch callback\n * completes.\n *\n * Accessing a signal that has been modified within a batch will reflect its updated\n * value.\n *\n * @param fn The callback function.\n * @returns The value returned by the callback.\n */\nfunction batch<T>(fn: () => T): T {\n\tif (batchDepth > 0) {\n\t\treturn fn();\n\t}\n\t/*@__INLINE__**/ startBatch();\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tendBatch();\n\t}\n}\n\n// Currently evaluated computed or effect.\nlet evalContext: Computed | Effect | undefined = undefined;\n\n/**\n * Run a callback function that can access signal values without\n * subscribing to the signal updates.\n *\n * @param fn The callback function.\n * @returns The value returned by the callback.\n */\nfunction untracked<T>(fn: () => T): T {\n\tconst prevContext = evalContext;\n\tevalContext = undefined;\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tevalContext = prevContext;\n\t}\n}\n\n// Effects collected into a batch.\nlet batchedEffect: Effect | undefined = undefined;\nlet batchDepth = 0;\nlet batchIteration = 0;\n\n// A global version number for signals, used for fast-pathing repeated\n// computed.peek()/computed.value calls when nothing has changed globally.\nlet globalVersion = 0;\n\nfunction addDependency(signal: Signal): Node | undefined {\n\tif (evalContext === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet node = signal._node;\n\tif (node === undefined || node._target !== evalContext) {\n\t\t/**\n\t\t * `signal` is a new dependency. Create a new dependency node, and set it\n\t\t * as the tail of the current context's dependency list. e.g:\n\t\t *\n\t\t * { A <-> B }\n\t\t * ↑ ↑\n\t\t * tail node (new)\n\t\t * ↓\n\t\t * { A <-> B <-> C }\n\t\t * ↑\n\t\t * tail (evalContext._sources)\n\t\t */\n\t\tnode = {\n\t\t\t_version: 0,\n\t\t\t_source: signal,\n\t\t\t_prevSource: evalContext._sources,\n\t\t\t_nextSource: undefined,\n\t\t\t_target: evalContext,\n\t\t\t_prevTarget: undefined,\n\t\t\t_nextTarget: undefined,\n\t\t\t_rollbackNode: node,\n\t\t};\n\n\t\tif (evalContext._sources !== undefined) {\n\t\t\tevalContext._sources._nextSource = node;\n\t\t}\n\t\tevalContext._sources = node;\n\t\tsignal._node = node;\n\n\t\t// Subscribe to change notifications from this dependency if we're in an effect\n\t\t// OR evaluating a computed signal that in turn has subscribers.\n\t\tif (evalContext._flags & TRACKING) {\n\t\t\tsignal._subscribe(node);\n\t\t}\n\t\treturn node;\n\t} else if (node._version === -1) {\n\t\t// `signal` is an existing dependency from a previous evaluation. Reuse it.\n\t\tnode._version = 0;\n\n\t\t/**\n\t\t * If `node` is not already the current tail of the dependency list (i.e.\n\t\t * there is a next node in the list), then make the `node` the new tail. e.g:\n\t\t *\n\t\t * { A <-> B <-> C <-> D }\n\t\t * ↑ ↑\n\t\t * node ┌─── tail (evalContext._sources)\n\t\t * └─────│─────┐\n\t\t * ↓ ↓\n\t\t * { A <-> C <-> D <-> B }\n\t\t * ↑\n\t\t * tail (evalContext._sources)\n\t\t */\n\t\tif (node._nextSource !== undefined) {\n\t\t\tnode._nextSource._prevSource = node._prevSource;\n\n\t\t\tif (node._prevSource !== undefined) {\n\t\t\t\tnode._prevSource._nextSource = node._nextSource;\n\t\t\t}\n\n\t\t\tnode._prevSource = evalContext._sources;\n\t\t\tnode._nextSource = undefined;\n\n\t\t\tevalContext._sources!._nextSource = node;\n\t\t\tevalContext._sources = node;\n\t\t}\n\n\t\t// We can assume that the currently evaluated effect / computed signal is already\n\t\t// subscribed to change notifications from `signal` if needed.\n\t\treturn node;\n\t}\n\treturn undefined;\n}\n\n/**\n * The base class for plain and computed signals.\n */\n//\n// A function with the same name is defined later, so we need to ignore TypeScript's\n// warning about a redeclared variable.\n//\n// The class is declared here, but later implemented with ES5-style prototypes.\n// This enables better control of the transpiled output size.\n// @ts-ignore: \"Cannot redeclare exported variable 'Signal'.\"\ndeclare class Signal<T = any> {\n\t/** @internal */\n\t_value: unknown;\n\n\t/**\n\t * @internal\n\t * Version numbers should always be >= 0, because the special value -1 is used\n\t * by Nodes to signify potentially unused but recyclable nodes.\n\t */\n\t_version: number;\n\n\t/** @internal */\n\t_node?: Node;\n\n\t/** @internal */\n\t_targets?: Node;\n\n\tconstructor(value?: T, options?: SignalOptions<T>);\n\n\t/** @internal */\n\t_refresh(): boolean;\n\n\t/** @internal */\n\t_subscribe(node: Node): void;\n\n\t/** @internal */\n\t_unsubscribe(node: Node): void;\n\n\t/** @internal */\n\t_watched?(this: Signal<T>): void;\n\n\t/** @internal */\n\t_unwatched?(this: Signal<T>): void;\n\n\tsubscribe(fn: (value: T) => void): () => void;\n\n\tname?: string;\n\n\tvalueOf(): T;\n\n\ttoString(): string;\n\n\ttoJSON(): T;\n\n\tpeek(): T;\n\n\tbrand: typeof BRAND_SYMBOL;\n\n\tget value(): T;\n\tset value(value: T);\n}\n\nexport interface SignalOptions<T = any> {\n\twatched?: (this: Signal<T>) => void;\n\tunwatched?: (this: Signal<T>) => void;\n\tname?: string;\n}\n\n/** @internal */\n// A class with the same name has already been declared, so we need to ignore\n// TypeScript's warning about a redeclared variable.\n//\n// The previously declared class is implemented here with ES5-style prototypes.\n// This enables better control of the transpiled output size.\n// @ts-ignore: \"Cannot redeclare exported variable 'Signal'.\"\nfunction Signal(this: Signal, value?: unknown, options?: SignalOptions) {\n\tthis._value = value;\n\tthis._version = 0;\n\tthis._node = undefined;\n\tthis._targets = undefined;\n\tthis._watched = options?.watched;\n\tthis._unwatched = options?.unwatched;\n\tthis.name = options?.name;\n}\n\nSignal.prototype.brand = BRAND_SYMBOL;\n\nSignal.prototype._refresh = function () {\n\treturn true;\n};\n\nSignal.prototype._subscribe = function (node) {\n\tconst targets = this._targets;\n\tif (targets !== node && node._prevTarget === undefined) {\n\t\tnode._nextTarget = targets;\n\t\tthis._targets = node;\n\n\t\tif (targets !== undefined) {\n\t\t\ttargets._prevTarget = node;\n\t\t} else {\n\t\t\tuntracked(() => {\n\t\t\t\tthis._watched?.call(this);\n\t\t\t});\n\t\t}\n\t}\n};\n\nSignal.prototype._unsubscribe = function (node) {\n\t// Only run the unsubscribe step if the signal has any subscribers to begin with.\n\tif (this._targets !== undefined) {\n\t\tconst prev = node._prevTarget;\n\t\tconst next = node._nextTarget;\n\t\tif (prev !== undefined) {\n\t\t\tprev._nextTarget = next;\n\t\t\tnode._prevTarget = undefined;\n\t\t}\n\n\t\tif (next !== undefined) {\n\t\t\tnext._prevTarget = prev;\n\t\t\tnode._nextTarget = undefined;\n\t\t}\n\n\t\tif (node === this._targets) {\n\t\t\tthis._targets = next;\n\t\t\tif (next === undefined) {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis._unwatched?.call(this);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\n\nSignal.prototype.subscribe = function (fn) {\n\treturn effect(\n\t\t() => {\n\t\t\tconst value = this.value;\n\t\t\tconst prevContext = evalContext;\n\t\t\tevalContext = undefined;\n\t\t\ttry {\n\t\t\t\tfn(value);\n\t\t\t} finally {\n\t\t\t\tevalContext = prevContext;\n\t\t\t}\n\t\t},\n\t\t{ name: \"sub\" }\n\t);\n};\n\nSignal.prototype.valueOf = function () {\n\treturn this.value;\n};\n\nSignal.prototype.toString = function () {\n\treturn this.value + \"\";\n};\n\nSignal.prototype.toJSON = function () {\n\treturn this.value;\n};\n\nSignal.prototype.peek = function () {\n\tconst prevContext = evalContext;\n\tevalContext = undefined;\n\ttry {\n\t\treturn this.value;\n\t} finally {\n\t\tevalContext = prevContext;\n\t}\n};\n\nObject.defineProperty(Signal.prototype, \"value\", {\n\tget(this: Signal) {\n\t\tconst node = addDependency(this);\n\t\tif (node !== undefined) {\n\t\t\tnode._version = this._version;\n\t\t}\n\t\treturn this._value;\n\t},\n\tset(this: Signal, value) {\n\t\tif (value !== this._value) {\n\t\t\tif (batchIteration > 100) {\n\t\t\t\tthrow new Error(\"Cycle detected\");\n\t\t\t}\n\n\t\t\tthis._value = value;\n\t\t\tthis._version++;\n\t\t\tglobalVersion++;\n\n\t\t\t/**@__INLINE__*/ startBatch();\n\t\t\ttry {\n\t\t\t\tfor (\n\t\t\t\t\tlet node = this._targets;\n\t\t\t\t\tnode !== undefined;\n\t\t\t\t\tnode = node._nextTarget\n\t\t\t\t) {\n\t\t\t\t\tnode._target._notify();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tendBatch();\n\t\t\t}\n\t\t}\n\t},\n});\n\n/**\n * Create a new plain signal.\n *\n * @param value The initial value for the signal.\n * @returns A new signal.\n */\nexport function signal<T>(value: T, options?: SignalOptions<T>): Signal<T>;\nexport function signal<T = undefined>(): Signal<T | undefined>;\nexport function signal<T>(value?: T, options?: SignalOptions<T>): Signal<T> {\n\treturn new Signal(value, options);\n}\n\nfunction needsToRecompute(target: Computed | Effect): boolean {\n\t// Check the dependencies for changed values. The dependency list is already\n\t// in order of use. Therefore if multiple dependencies have changed values, only\n\t// the first used dependency is re-evaluated at this point.\n\tfor (\n\t\tlet node = target._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tif (\n\t\t\t// If the dependency has definitely been updated since its version number\n\t\t\t// was observed, then we need to recompute. This first check is not strictly\n\t\t\t// necessary for correctness, but allows us to skip the refresh call if the\n\t\t\t// dependency has already been updated.\n\t\t\tnode._source._version !== node._version ||\n\t\t\t// Refresh the dependency. If there's something blocking the refresh (e.g. a\n\t\t\t// dependency cycle), then we need to recompute.\n\t\t\t!node._source._refresh() ||\n\t\t\t// If the dependency got a new version after the refresh, then we need to recompute.\n\t\t\tnode._source._version !== node._version\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\t// If none of the dependencies have changed values since last recompute then\n\t// there's no need to recompute.\n\treturn false;\n}\n\nfunction prepareSources(target: Computed | Effect) {\n\t/**\n\t * 1. Mark all current sources as re-usable nodes (version: -1)\n\t * 2. Set a rollback node if the current node is being used in a different context\n\t * 3. Point 'target._sources' to the tail of the doubly-linked list, e.g:\n\t *\n\t * { undefined <- A <-> B <-> C -> undefined }\n\t * ↑ ↑\n\t * │ └──────┐\n\t * target._sources = A; (node is head) │\n\t * ↓ │\n\t * target._sources = C; (node is tail) ─┘\n\t */\n\tfor (\n\t\tlet node = target._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tconst rollbackNode = node._source._node;\n\t\tif (rollbackNode !== undefined) {\n\t\t\tnode._rollbackNode = rollbackNode;\n\t\t}\n\t\tnode._source._node = node;\n\t\tnode._version = -1;\n\n\t\tif (node._nextSource === undefined) {\n\t\t\ttarget._sources = node;\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nfunction cleanupSources(target: Computed | Effect) {\n\tlet node = target._sources;\n\tlet head: Node | undefined = undefined;\n\n\t/**\n\t * At this point 'target._sources' points to the tail of the doubly-linked list.\n\t * It contains all existing sources + new sources in order of use.\n\t * Iterate backwards until we find the head node while dropping old dependencies.\n\t */\n\twhile (node !== undefined) {\n\t\tconst prev = node._prevSource;\n\n\t\t/**\n\t\t * The node was not re-used, unsubscribe from its change notifications and remove itself\n\t\t * from the doubly-linked list. e.g:\n\t\t *\n\t\t * { A <-> B <-> C }\n\t\t * ↓\n\t\t * { A <-> C }\n\t\t */\n\t\tif (node._version === -1) {\n\t\t\tnode._source._unsubscribe(node);\n\n\t\t\tif (prev !== undefined) {\n\t\t\t\tprev._nextSource = node._nextSource;\n\t\t\t}\n\t\t\tif (node._nextSource !== undefined) {\n\t\t\t\tnode._nextSource._prevSource = prev;\n\t\t\t}\n\t\t} else {\n\t\t\t/**\n\t\t\t * The new head is the last node seen which wasn't removed/unsubscribed\n\t\t\t * from the doubly-linked list. e.g:\n\t\t\t *\n\t\t\t * { A <-> B <-> C }\n\t\t\t * ↑ ↑ ↑\n\t\t\t * │ │ └ head = node\n\t\t\t * │ └ head = node\n\t\t\t * └ head = node\n\t\t\t */\n\t\t\thead = node;\n\t\t}\n\n\t\tnode._source._node = node._rollbackNode;\n\t\tif (node._rollbackNode !== undefined) {\n\t\t\tnode._rollbackNode = undefined;\n\t\t}\n\n\t\tnode = prev;\n\t}\n\n\ttarget._sources = head;\n}\n\n/**\n * The base class for computed signals.\n */\ndeclare class Computed<T = any> extends Signal<T> {\n\t_fn: () => T;\n\t_sources?: Node;\n\t_globalVersion: number;\n\t_flags: number;\n\n\tconstructor(fn: () => T, options?: SignalOptions<T>);\n\n\t_notify(): void;\n\tget value(): T;\n}\n\n/** @internal */\nfunction Computed(this: Computed, fn: () => unknown, options?: SignalOptions) {\n\tSignal.call(this, undefined);\n\n\tthis._fn = fn;\n\tthis._sources = undefined;\n\tthis._globalVersion = globalVersion - 1;\n\tthis._flags = OUTDATED;\n\tthis._watched = options?.watched;\n\tthis._unwatched = options?.unwatched;\n\tthis.name = options?.name;\n}\n\nComputed.prototype = new Signal() as Computed;\n\nComputed.prototype._refresh = function () {\n\tthis._flags &= ~NOTIFIED;\n\n\tif (this._flags & RUNNING) {\n\t\treturn false;\n\t}\n\n\t// If this computed signal has subscribed to updates from its dependencies\n\t// (TRACKING flag set) and none of them have notified about changes (OUTDATED\n\t// flag not set), then the computed value can't have changed.\n\tif ((this._flags & (OUTDATED | TRACKING)) === TRACKING) {\n\t\treturn true;\n\t}\n\tthis._flags &= ~OUTDATED;\n\n\tif (this._globalVersion === globalVersion) {\n\t\treturn true;\n\t}\n\tthis._globalVersion = globalVersion;\n\n\t// Mark this computed signal running before checking the dependencies for value\n\t// changes, so that the RUNNING flag can be used to notice cyclical dependencies.\n\tthis._flags |= RUNNING;\n\tif (this._version > 0 && !needsToRecompute(this)) {\n\t\tthis._flags &= ~RUNNING;\n\t\treturn true;\n\t}\n\n\tconst prevContext = evalContext;\n\ttry {\n\t\tprepareSources(this);\n\t\tevalContext = this;\n\t\tconst value = this._fn();\n\t\tif (\n\t\t\tthis._flags & HAS_ERROR ||\n\t\t\tthis._value !== value ||\n\t\t\tthis._version === 0\n\t\t) {\n\t\t\tthis._value = value;\n\t\t\tthis._flags &= ~HAS_ERROR;\n\t\t\tthis._version++;\n\t\t}\n\t} catch (err) {\n\t\tthis._value = err;\n\t\tthis._flags |= HAS_ERROR;\n\t\tthis._version++;\n\t}\n\tevalContext = prevContext;\n\tcleanupSources(this);\n\tthis._flags &= ~RUNNING;\n\treturn true;\n};\n\nComputed.prototype._subscribe = function (node) {\n\tif (this._targets === undefined) {\n\t\tthis._flags |= OUTDATED | TRACKING;\n\n\t\t// A computed signal subscribes lazily to its dependencies when it\n\t\t// gets its first subscriber.\n\t\tfor (\n\t\t\tlet node = this._sources;\n\t\t\tnode !== undefined;\n\t\t\tnode = node._nextSource\n\t\t) {\n\t\t\tnode._source._subscribe(node);\n\t\t}\n\t}\n\tSignal.prototype._subscribe.call(this, node);\n};\n\nComputed.prototype._unsubscribe = function (node) {\n\t// Only run the unsubscribe step if the computed signal has any subscribers.\n\tif (this._targets !== undefined) {\n\t\tSignal.prototype._unsubscribe.call(this, node);\n\n\t\t// Computed signal unsubscribes from its dependencies when it loses its last subscriber.\n\t\t// This makes it possible for unreferences subgraphs of computed signals to get garbage collected.\n\t\tif (this._targets === undefined) {\n\t\t\tthis._flags &= ~TRACKING;\n\n\t\t\tfor (\n\t\t\t\tlet node = this._sources;\n\t\t\t\tnode !== undefined;\n\t\t\t\tnode = node._nextSource\n\t\t\t) {\n\t\t\t\tnode._source._unsubscribe(node);\n\t\t\t}\n\t\t}\n\t}\n};\n\nComputed.prototype._notify = function () {\n\tif (!(this._flags & NOTIFIED)) {\n\t\tthis._flags |= OUTDATED | NOTIFIED;\n\n\t\tfor (\n\t\t\tlet node = this._targets;\n\t\t\tnode !== undefined;\n\t\t\tnode = node._nextTarget\n\t\t) {\n\t\t\tnode._target._notify();\n\t\t}\n\t}\n};\n\nObject.defineProperty(Computed.prototype, \"value\", {\n\tget(this: Computed) {\n\t\tif (this._flags & RUNNING) {\n\t\t\tthrow new Error(\"Cycle detected\");\n\t\t}\n\t\tconst node = addDependency(this);\n\t\tthis._refresh();\n\t\tif (node !== undefined) {\n\t\t\tnode._version = this._version;\n\t\t}\n\t\tif (this._flags & HAS_ERROR) {\n\t\t\tthrow this._value;\n\t\t}\n\t\treturn this._value;\n\t},\n});\n\n/**\n * An interface for read-only signals.\n */\ninterface ReadonlySignal<T = any> {\n\treadonly value: T;\n\tpeek(): T;\n\n\tsubscribe(fn: (value: T) => void): () => void;\n\tvalueOf(): T;\n\ttoString(): string;\n\ttoJSON(): T;\n\tbrand: typeof BRAND_SYMBOL;\n}\n\n/**\n * Create a new signal that is computed based on the values of other signals.\n *\n * The returned computed signal is read-only, and its value is automatically\n * updated when any signals accessed from within the callback function change.\n *\n * @param fn The effect callback.\n * @returns A new read-only signal.\n */\nfunction computed<T>(\n\tfn: () => T,\n\toptions?: SignalOptions<T>\n): ReadonlySignal<T> {\n\treturn new Computed(fn, options);\n}\n\nfunction cleanupEffect(effect: Effect) {\n\tconst cleanup = effect._cleanup;\n\teffect._cleanup = undefined;\n\n\tif (typeof cleanup === \"function\") {\n\t\t/*@__INLINE__**/ startBatch();\n\n\t\t// Run cleanup functions always outside of any context.\n\t\tconst prevContext = evalContext;\n\t\tevalContext = undefined;\n\t\ttry {\n\t\t\tcleanup();\n\t\t} catch (err) {\n\t\t\teffect._flags &= ~RUNNING;\n\t\t\teffect._flags |= DISPOSED;\n\t\t\tdisposeEffect(effect);\n\t\t\tthrow err;\n\t\t} finally {\n\t\t\tevalContext = prevContext;\n\t\t\tendBatch();\n\t\t}\n\t}\n}\n\nfunction disposeEffect(effect: Effect) {\n\tfor (\n\t\tlet node = effect._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tnode._source._unsubscribe(node);\n\t}\n\teffect._fn = undefined;\n\teffect._sources = undefined;\n\n\tcleanupEffect(effect);\n}\n\nfunction endEffect(this: Effect, prevContext?: Computed | Effect) {\n\tif (evalContext !== this) {\n\t\tthrow new Error(\"Out-of-order effect\");\n\t}\n\tcleanupSources(this);\n\tevalContext = prevContext;\n\n\tthis._flags &= ~RUNNING;\n\tif (this._flags & DISPOSED) {\n\t\tdisposeEffect(this);\n\t}\n\tendBatch();\n}\n\ntype EffectFn =\n\t| ((this: { dispose: () => void }) => void | (() => void))\n\t| (() => void | (() => void));\n\n/**\n * The base class for reactive effects.\n */\ndeclare class Effect {\n\t_fn?: EffectFn;\n\t_cleanup?: () => void;\n\t_sources?: Node;\n\t_nextBatchedEffect?: Effect;\n\t_flags: number;\n\tname?: string;\n\n\tconstructor(fn: EffectFn, options?: EffectOptions);\n\n\t_callback(): void;\n\t_start(): () => void;\n\t_notify(): void;\n\t_dispose(): void;\n\tdispose(): void;\n}\n\nexport interface EffectOptions {\n\tname?: string;\n}\n\n/** @internal */\nfunction Effect(this: Effect, fn: EffectFn, options?: EffectOptions) {\n\tthis._fn = fn;\n\tthis._cleanup = undefined;\n\tthis._sources = undefined;\n\tthis._nextBatchedEffect = undefined;\n\tthis._flags = TRACKING;\n\tthis.name = options?.name;\n}\n\nEffect.prototype._callback = function () {\n\tconst finish = this._start();\n\ttry {\n\t\tif (this._flags & DISPOSED) return;\n\t\tif (this._fn === undefined) return;\n\n\t\tconst cleanup = this._fn();\n\t\tif (typeof cleanup === \"function\") {\n\t\t\tthis._cleanup = cleanup;\n\t\t}\n\t} finally {\n\t\tfinish();\n\t}\n};\n\nEffect.prototype._start = function () {\n\tif (this._flags & RUNNING) {\n\t\tthrow new Error(\"Cycle detected\");\n\t}\n\tthis._flags |= RUNNING;\n\tthis._flags &= ~DISPOSED;\n\tcleanupEffect(this);\n\tprepareSources(this);\n\n\t/*@__INLINE__**/ startBatch();\n\tconst prevContext = evalContext;\n\tevalContext = this;\n\treturn endEffect.bind(this, prevContext);\n};\n\nEffect.prototype._notify = function () {\n\tif (!(this._flags & NOTIFIED)) {\n\t\tthis._flags |= NOTIFIED;\n\t\tthis._nextBatchedEffect = batchedEffect;\n\t\tbatchedEffect = this;\n\t}\n};\n\nEffect.prototype._dispose = function () {\n\tthis._flags |= DISPOSED;\n\n\tif (!(this._flags & RUNNING)) {\n\t\tdisposeEffect(this);\n\t}\n};\n\nEffect.prototype.dispose = function () {\n\tthis._dispose();\n};\n/**\n * Create an effect to run arbitrary code in response to signal changes.\n *\n * An effect tracks which signals are accessed within the given callback\n * function `fn`, and re-runs the callback when those signals change.\n *\n * The callback may return a cleanup function. The cleanup function gets\n * run once, either when the callback is next called or when the effect\n * gets disposed, whichever happens first.\n *\n * @param fn The effect callback.\n * @returns A function for disposing the effect.\n */\nfunction effect(fn: EffectFn, options?: EffectOptions): () => void {\n\tconst effect = new Effect(fn, options);\n\ttry {\n\t\teffect._callback();\n\t} catch (err) {\n\t\teffect._dispose();\n\t\tthrow err;\n\t}\n\t// Return a bound function instead of a wrapper like `() => effect._dispose()`,\n\t// because bound functions seem to be just as fast and take up a lot less memory.\n\tconst dispose = effect._dispose.bind(effect);\n\t(dispose as any)[Symbol.dispose] = dispose;\n\treturn dispose as any;\n}\n\nexport {\n\tcomputed,\n\teffect,\n\tbatch,\n\tuntracked,\n\tSignal,\n\tReadonlySignal,\n\tEffect,\n\tComputed,\n};\n","import { options, Component, isValidElement } from \"preact\";\nimport { useRef, useMemo, useEffect } from \"preact/hooks\";\nimport {\n\tsignal,\n\tcomputed,\n\tbatch,\n\teffect,\n\tSignal,\n\ttype ReadonlySignal,\n\tuntracked,\n} from \"@preact/signals-core\";\nimport {\n\tVNode,\n\tOptionsTypes,\n\tHookFn,\n\tEffect,\n\tPropertyUpdater,\n\tAugmentedComponent,\n\tAugmentedElement as Element,\n} from \"./internal\";\n\nexport {\n\tsignal,\n\tcomputed,\n\tbatch,\n\teffect,\n\tSignal,\n\ttype ReadonlySignal,\n\tuntracked,\n};\n\nconst HAS_PENDING_UPDATE = 1 << 0;\nconst HAS_HOOK_STATE = 1 << 1;\nconst HAS_COMPUTEDS = 1 << 2;\n\n// Install a Preact options hook\nfunction hook<T extends OptionsTypes>(hookName: T, hookFn: HookFn<T>) {\n\t// @ts-ignore-next-line private options hooks usage\n\toptions[hookName] = hookFn.bind(null, options[hookName] || (() => {}));\n}\n\nlet currentComponent: AugmentedComponent | undefined;\nlet finishUpdate: (() => void) | undefined;\n\nfunction setCurrentUpdater(updater?: Effect) {\n\t// end tracking for the current update:\n\tif (finishUpdate) finishUpdate();\n\t// start tracking the new update:\n\tfinishUpdate = updater && updater._start();\n}\n\nfunction createUpdater(update: () => void) {\n\tlet updater!: Effect;\n\teffect(function (this: Effect) {\n\t\tupdater = this;\n\t});\n\tupdater._callback = update;\n\treturn updater;\n}\n\n/** @todo This may be needed for complex prop value detection. */\n// function isSignalValue(value: any): value is Signal {\n// \tif (typeof value !== \"object\" || value == null) return false;\n// \tif (value instanceof Signal) return true;\n// \t// @TODO: uncomment this when we land Reactive (ideally behind a brand check)\n// \t// for (let i in value) if (value[i] instanceof Signal) return true;\n// \treturn false;\n// }\n\n/**\n * A wrapper component that renders a Signal directly as a Text node.\n * @todo: in Preact 11, just decorate Signal with `type:null`\n */\nfunction SignalValue(this: AugmentedComponent, { data }: { data: Signal }) {\n\t// hasComputeds.add(this);\n\n\t// Store the props.data signal in another signal so that\n\t// passing a new signal reference re-runs the text computed:\n\tconst currentSignal = useSignal(data);\n\tcurrentSignal.value = data;\n\n\tconst s = useMemo(() => {\n\t\t// mark the parent component as having computeds so it gets optimized\n\t\tlet v = this.__v;\n\t\twhile ((v = v.__!)) {\n\t\t\tif (v.__c) {\n\t\t\t\tv.__c._updateFlags |= HAS_COMPUTEDS;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis._updater!._callback = () => {\n\t\t\tconst end = this._updater!._start();\n\t\t\tconst value = s.value;\n\t\t\tend();\n\n\t\t\tif (isValidElement(value) || this.base?.nodeType !== 3) {\n\t\t\t\tthis._updateFlags |= HAS_PENDING_UPDATE;\n\t\t\t\tthis.setState({});\n\t\t\t} else {\n\t\t\t\t(this.base as Text).data = value;\n\t\t\t}\n\t\t};\n\n\t\treturn computed(() => {\n\t\t\tlet data = currentSignal.value;\n\t\t\tlet s = data.value;\n\t\t\treturn s === 0 ? 0 : s === true ? \"\" : s || \"\";\n\t\t});\n\t}, []);\n\n\treturn s.value;\n}\nSignalValue.displayName = \"_st\";\n\nObject.defineProperties(Signal.prototype, {\n\tconstructor: { configurable: true, value: undefined },\n\ttype: { configurable: true, value: SignalValue },\n\tprops: {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn { data: this };\n\t\t},\n\t},\n\t// Setting a VNode's _depth to 1 forces Preact to clone it before modifying:\n\t// https://github.com/preactjs/preact/blob/d7a433ee8463a7dc23a05111bb47de9ec729ad4d/src/diff/children.js#L77\n\t// @todo remove this for Preact 11\n\t__b: { configurable: true, value: 1 },\n});\n\n/** Inject low-level property/attribute bindings for Signals into Preact's diff */\nhook(OptionsTypes.DIFF, (old, vnode) => {\n\tif (typeof vnode.type === \"string\") {\n\t\tlet signalProps: Record<string, any> | undefined;\n\n\t\tlet props = vnode.props;\n\t\tfor (let i in props) {\n\t\t\tif (i === \"children\") continue;\n\n\t\t\tlet value = props[i];\n\t\t\tif (value instanceof Signal) {\n\t\t\t\tif (!signalProps) vnode.__np = signalProps = {};\n\t\t\t\tsignalProps[i] = value;\n\t\t\t\tprops[i] = value.peek();\n\t\t\t}\n\t\t}\n\t}\n\n\told(vnode);\n});\n\n/** Set up Updater before rendering a component */\nhook(OptionsTypes.RENDER, (old, vnode) => {\n\tsetCurrentUpdater();\n\n\tlet updater;\n\n\tlet component = vnode.__c;\n\tif (component) {\n\t\tcomponent._updateFlags &= ~HAS_PENDING_UPDATE;\n\n\t\tupdater = component._updater;\n\t\tif (updater === undefined) {\n\t\t\tcomponent._updater = updater = createUpdater(() => {\n\t\t\t\tcomponent._updateFlags |= HAS_PENDING_UPDATE;\n\t\t\t\tcomponent.setState({});\n\t\t\t});\n\t\t}\n\t}\n\n\tcurrentComponent = component;\n\tsetCurrentUpdater(updater);\n\told(vnode);\n});\n\n/** Finish current updater if a component errors */\nhook(OptionsTypes.CATCH_ERROR, (old, error, vnode, oldVNode) => {\n\tsetCurrentUpdater();\n\tcurrentComponent = undefined;\n\told(error, vnode, oldVNode);\n});\n\n/** Finish current updater after rendering any VNode */\nhook(OptionsTypes.DIFFED, (old, vnode) => {\n\tsetCurrentUpdater();\n\tcurrentComponent = undefined;\n\n\tlet dom: Element;\n\n\t// vnode._dom is undefined during string rendering,\n\t// so we use this to skip prop subscriptions during SSR.\n\tif (typeof vnode.type === \"string\" && (dom = vnode.__e as Element)) {\n\t\tlet props = vnode.__np;\n\t\tlet renderedProps = vnode.props;\n\t\tif (props) {\n\t\t\tlet updaters = dom._updaters;\n\t\t\tif (updaters) {\n\t\t\t\tfor (let prop in updaters) {\n\t\t\t\t\tlet updater = updaters[prop];\n\t\t\t\t\tif (updater !== undefined && !(prop in props)) {\n\t\t\t\t\t\tupdater._dispose();\n\t\t\t\t\t\t// @todo we could just always invoke _dispose() here\n\t\t\t\t\t\tupdaters[prop] = undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tupdaters = {};\n\t\t\t\tdom._updaters = updaters;\n\t\t\t}\n\t\t\tfor (let prop in props) {\n\t\t\t\tlet updater = updaters[prop];\n\t\t\t\tlet signal = props[prop];\n\t\t\t\tif (updater === undefined) {\n\t\t\t\t\tupdater = createPropUpdater(dom, prop, signal, renderedProps);\n\t\t\t\t\tupdaters[prop] = updater;\n\t\t\t\t} else {\n\t\t\t\t\tupdater._update(signal, renderedProps);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\told(vnode);\n});\n\nfunction createPropUpdater(\n\tdom: Element,\n\tprop: string,\n\tpropSignal: Signal,\n\tprops: Record<string, any>\n): PropertyUpdater {\n\tconst setAsProperty =\n\t\tprop in dom &&\n\t\t// SVG elements need to go through `setAttribute` because they\n\t\t// expect things like SVGAnimatedTransformList instead of strings.\n\t\t// @ts-ignore\n\t\tdom.ownerSVGElement === undefined;\n\n\tconst changeSignal = signal(propSignal);\n\treturn {\n\t\t_update: (newSignal: Signal, newProps: typeof props) => {\n\t\t\tchangeSignal.value = newSignal;\n\t\t\tprops = newProps;\n\t\t},\n\t\t_dispose: effect(() => {\n\t\t\tconst value = changeSignal.value.value;\n\t\t\t// If Preact just rendered this value, don't render it again:\n\t\t\tif (props[prop] === value) return;\n\t\t\tprops[prop] = value;\n\t\t\tif (setAsProperty) {\n\t\t\t\t// @ts-ignore-next-line silly\n\t\t\t\tdom[prop] = value;\n\t\t\t} else if (value) {\n\t\t\t\tdom.setAttribute(prop, value);\n\t\t\t} else {\n\t\t\t\tdom.removeAttribute(prop);\n\t\t\t}\n\t\t}),\n\t};\n}\n\n/** Unsubscribe from Signals when unmounting components/vnodes */\nhook(OptionsTypes.UNMOUNT, (old, vnode: VNode) => {\n\tif (typeof vnode.type === \"string\") {\n\t\tlet dom = vnode.__e as Element | undefined;\n\t\t// vnode._dom is undefined during string rendering\n\t\tif (dom) {\n\t\t\tconst updaters = dom._updaters;\n\t\t\tif (updaters) {\n\t\t\t\tdom._updaters = undefined;\n\t\t\t\tfor (let prop in updaters) {\n\t\t\t\t\tlet updater = updaters[prop];\n\t\t\t\t\tif (updater) updater._dispose();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tlet component = vnode.__c;\n\t\tif (component) {\n\t\t\tconst updater = component._updater;\n\t\t\tif (updater) {\n\t\t\t\tcomponent._updater = undefined;\n\t\t\t\tupdater._dispose();\n\t\t\t}\n\t\t}\n\t}\n\told(vnode);\n});\n\n/** Mark components that use hook state so we can skip sCU optimization. */\nhook(OptionsTypes.HOOK, (old, component, index, type) => {\n\tif (type < 3 || type === 9)\n\t\t(component as AugmentedComponent)._updateFlags |= HAS_HOOK_STATE;\n\told(component, index, type);\n});\n\n/**\n * Auto-memoize components that use Signals/Computeds.\n * Note: Does _not_ optimize components that use hook/class state.\n */\nComponent.prototype.shouldComponentUpdate = function (\n\tthis: AugmentedComponent,\n\tprops,\n\tstate\n) {\n\t// @todo: Once preactjs/preact#3671 lands, this could just use `currentUpdater`:\n\tconst updater = this._updater;\n\tconst hasSignals = updater && updater._sources !== undefined;\n\n\t// let reason;\n\t// if (!hasSignals && !hasComputeds.has(this)) {\n\t// \treason = \"no signals or computeds\";\n\t// } else if (hasPendingUpdate.has(this)) {\n\t// \treason = \"has pending update\";\n\t// } else if (hasHookState.has(this)) {\n\t// \treason = \"has hook state\";\n\t// }\n\t// if (reason) {\n\t// \tif (!this) reason += \" (`this` bug)\";\n\t// \tconsole.log(\"not optimizing\", this?.constructor?.name, \": \", reason, {\n\t// \t\tdetails: {\n\t// \t\t\thasSignals,\n\t// \t\t\thasComputeds: hasComputeds.has(this),\n\t// \t\t\thasPendingUpdate: hasPendingUpdate.has(this),\n\t// \t\t\thasHookState: hasHookState.has(this),\n\t// \t\t\tdeps: Array.from(updater._deps),\n\t// \t\t\tupdater,\n\t// \t\t},\n\t// \t});\n\t// }\n\n\t// @ts-ignore\n\tfor (let i in state) return true;\n\n\tif (this.__f || (typeof this.u == \"boolean\" && this.u === true)) {\n\t\tconst hasHooksState = this._updateFlags & HAS_HOOK_STATE;\n\t\t// if this component used no signals or computeds and no hooks state, update:\n\t\tif (!hasSignals && !hasHooksState && !(this._updateFlags & HAS_COMPUTEDS))\n\t\t\treturn true;\n\n\t\t// if there is a pending re-render triggered from Signals,\n\t\t// or if there is hooks state, update:\n\t\tif (this._updateFlags & HAS_PENDING_UPDATE) return true;\n\t} else {\n\t\t// if this component used no signals or computeds, update:\n\t\tif (!hasSignals && !(this._updateFlags & HAS_COMPUTEDS)) return true;\n\n\t\t// if there is a pending re-render triggered from Signals,\n\t\t// or if there is hooks state, update:\n\t\tif (this._updateFlags & (HAS_PENDING_UPDATE | HAS_HOOK_STATE)) return true;\n\t}\n\n\t// if any non-Signal props changed, update:\n\tfor (let i in props) {\n\t\tif (i !== \"__source\" && props[i] !== this.props[i]) return true;\n\t}\n\tfor (let i in this.props) if (!(i in props)) return true;\n\n\t// this is a purely Signal-driven component, don't update:\n\treturn false;\n};\n\nexport function useSignal<T>(value: T): Signal<T>;\nexport function useSignal<T = undefined>(): Signal<T | undefined>;\nexport function useSignal<T>(value?: T) {\n\treturn useMemo(() => signal<T | undefined>(value), []);\n}\n\nexport function useComputed<T>(compute: () => T) {\n\tconst $compute = useRef(compute);\n\t$compute.current = compute;\n\t(currentComponent as AugmentedComponent)._updateFlags |= HAS_COMPUTEDS;\n\treturn useMemo(() => computed<T>(() => $compute.current()), []);\n}\n\nexport function useSignalEffect(cb: () => void | (() => void)) {\n\tconst callback = useRef(cb);\n\tcallback.current = cb;\n\n\tuseEffect(() => {\n\t\treturn effect(() => callback.current());\n\t}, []);\n}\n\n/**\n * @todo Determine which Reactive implementation we'll be using.\n * @internal\n */\n// export function useReactive<T extends object>(value: T): Reactive<T> {\n// \treturn useMemo(() => reactive<T>(value), []);\n// }\n\n/**\n * @internal\n * Update a Reactive's using the properties of an object or other Reactive.\n * Also works for Signals.\n * @example\n * // Update a Reactive with Object.assign()-like syntax:\n * const r = reactive({ name: \"Alice\" });\n * update(r, { name: \"Bob\" });\n * update(r, { age: 42 }); // property 'age' does not exist in type '{ name?: string }'\n * update(r, 2); // '2' has no properties in common with '{ name?: string }'\n * console.log(r.name.value); // \"Bob\"\n *\n * @example\n * // Update a Reactive with the properties of another Reactive:\n * const A = reactive({ name: \"Alice\" });\n * const B = reactive({ name: \"Bob\", age: 42 });\n * update(A, B);\n * console.log(`${A.name} is ${A.age}`); // \"Bob is 42\"\n *\n * @example\n * // Update a signal with assign()-like syntax:\n * const s = signal(42);\n * update(s, \"hi\"); // Argument type 'string' not assignable to type 'number'\n * update(s, {}); // Argument type '{}' not assignable to type 'number'\n * update(s, 43);\n * console.log(s.value); // 43\n *\n * @param obj The Reactive or Signal to be updated\n * @param update The value, Signal, object or Reactive to update `obj` to match\n * @param overwrite If `true`, any properties `obj` missing from `update` are set to `undefined`\n */\n/*\nexport function update<T extends SignalOrReactive>(\n\tobj: T,\n\tupdate: Partial<Unwrap<T>>,\n\toverwrite = false\n) {\n\tif (obj instanceof Signal) {\n\t\tobj.value = peekValue(update);\n\t} else {\n\t\tfor (let i in update) {\n\t\t\tif (i in obj) {\n\t\t\t\tobj[i].value = peekValue(update[i]);\n\t\t\t} else {\n\t\t\t\tlet sig = signal(peekValue(update[i]));\n\t\t\t\tsig[KEY] = i;\n\t\t\t\tobj[i] = sig;\n\t\t\t}\n\t\t}\n\t\tif (overwrite) {\n\t\t\tfor (let i in obj) {\n\t\t\t\tif (!(i in update)) {\n\t\t\t\t\tobj[i].value = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n*/\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n\n/**\n * Check if two values are the same value\n * @param {*} x\n * @param {*} y\n * @returns {boolean}\n */\nexport function is(x, y) {\n\treturn (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\n","import { useState, useLayoutEffect, useEffect } from 'preact/hooks';\nimport { is } from './util';\n\n/**\n * This is taken from https://github.com/facebook/react/blob/main/packages/use-sync-external-store/src/useSyncExternalStoreShimClient.js#L84\n * on a high level this cuts out the warnings, ... and attempts a smaller implementation\n * @typedef {{ _value: any; _getSnapshot: () => any }} Store\n */\nexport function useSyncExternalStore(subscribe, getSnapshot) {\n\tconst value = getSnapshot();\n\n\t/**\n\t * @typedef {{ _instance: Store }} StoreRef\n\t * @type {[StoreRef, (store: StoreRef) => void]}\n\t */\n\tconst [{ _instance }, forceUpdate] = useState({\n\t\t_instance: { _value: value, _getSnapshot: getSnapshot }\n\t});\n\n\tuseLayoutEffect(() => {\n\t\t_instance._value = value;\n\t\t_instance._getSnapshot = getSnapshot;\n\n\t\tif (didSnapshotChange(_instance)) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\t}, [subscribe, value, getSnapshot]);\n\n\tuseEffect(() => {\n\t\tif (didSnapshotChange(_instance)) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\n\t\treturn subscribe(() => {\n\t\t\tif (didSnapshotChange(_instance)) {\n\t\t\t\tforceUpdate({ _instance });\n\t\t\t}\n\t\t});\n\t}, [subscribe]);\n\n\treturn value;\n}\n\n/** @type {(inst: Store) => boolean} */\nfunction didSnapshotChange(inst) {\n\tconst latestGetSnapshot = inst._getSnapshot;\n\tconst prevValue = inst._value;\n\ttry {\n\t\tconst nextValue = latestGetSnapshot();\n\t\treturn !is(prevValue, nextValue);\n\t} catch (error) {\n\t\treturn true;\n\t}\n}\n\nexport function startTransition(cb) {\n\tcb();\n}\n\nexport function useDeferredValue(val) {\n\treturn val;\n}\n\nexport function useTransition() {\n\treturn [false, startTransition];\n}\n\n// TODO: in theory this should be done after a VNode is diffed as we want to insert\n// styles/... before it attaches\nexport const useInsertionEffect = useLayoutEffect;\n","import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport function PureComponent(p, c) {\n\tthis.props = p;\n\tthis.context = c;\n}\nPureComponent.prototype = new Component();\n// Some third-party libraries check if this property is present\nPureComponent.prototype.isPureReactComponent = true;\nPureComponent.prototype.shouldComponentUpdate = function (props, state) {\n\treturn shallowDiffers(this.props, props) || shallowDiffers(this.state, state);\n};\n","import { createElement } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, props);\n\t}\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed._forwarded = true;\n\tMemoed.type = c;\n\treturn Memoed;\n}\n","import { options } from 'preact';\nimport { assign } from './util';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\nexport const REACT_FORWARD_SYMBOL =\n\t(typeof Symbol != 'undefined' &&\n\t\tSymbol.for &&\n\t\tSymbol.for('react.forward_ref')) ||\n\t0xf47;\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionComponent}\n */\nexport function forwardRef(fn) {\n\tfunction Forwarded(props) {\n\t\tlet clone = assign({}, props);\n\t\tdelete clone.ref;\n\t\treturn fn(clone, props.ref || null);\n\t}\n\n\t// mobx-react checks for this being present\n\tForwarded.$$typeof = REACT_FORWARD_SYMBOL;\n\t// mobx-react heavily relies on implementation details.\n\t// It expects an object here with a `render` property,\n\t// and prototype.render will fail. Without this\n\t// mobx-react throws.\n\tForwarded.render = fn;\n\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n","import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (children == null) return null;\n\treturn toChildArray(toChildArray(children).map(fn));\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tconst normalized = toChildArray(children);\n\t\tif (normalized.length !== 1) throw 'Children.only';\n\t\treturn normalized[0];\n\t},\n\ttoArray: toChildArray\n};\n","import { Component, createElement, options, Fragment } from 'preact';\nimport { MODE_HYDRATE } from '../../src/constants';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function (error, newVNode, oldVNode, errorInfo) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\tif (newVNode._dom == null) {\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t}\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode, errorInfo);\n};\n\nconst oldUnmount = options.unmount;\noptions.unmount = function (vnode) {\n\t/** @type {import('./internal').Component} */\n\tconst component = vnode._component;\n\tif (component && component._onResolve) {\n\t\tcomponent._onResolve();\n\t}\n\n\t// if the component is still hydrating\n\t// most likely it is because the component is suspended\n\t// we set the vnode.type as `null` so that it is not a typeof function\n\t// so the unmount will remove the vnode._dom\n\tif (component && vnode._flags & MODE_HYDRATE) {\n\t\tvnode.type = null;\n\t}\n\n\tif (oldUnmount) oldUnmount(vnode);\n};\n\nfunction detachedClone(vnode, detachedParent, parentDom) {\n\tif (vnode) {\n\t\tif (vnode._component && vnode._component.__hooks) {\n\t\t\tvnode._component.__hooks._list.forEach(effect => {\n\t\t\t\tif (typeof effect._cleanup == 'function') effect._cleanup();\n\t\t\t});\n\n\t\t\tvnode._component.__hooks = null;\n\t\t}\n\n\t\tvnode = assign({}, vnode);\n\t\tif (vnode._component != null) {\n\t\t\tif (vnode._component._parentDom === parentDom) {\n\t\t\t\tvnode._component._parentDom = detachedParent;\n\t\t\t}\n\n\t\t\tvnode._component._force = true;\n\n\t\t\tvnode._component = null;\n\t\t}\n\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tdetachedClone(child, detachedParent, parentDom)\n\t\t\t);\n\t}\n\n\treturn vnode;\n}\n\nfunction removeOriginal(vnode, detachedParent, originalParent) {\n\tif (vnode && originalParent) {\n\t\tvnode._original = null;\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tremoveOriginal(child, detachedParent, originalParent)\n\t\t\t);\n\n\t\tif (vnode._component) {\n\t\t\tif (vnode._component._parentDom === detachedParent) {\n\t\t\t\tif (vnode._dom) {\n\t\t\t\t\toriginalParent.appendChild(vnode._dom);\n\t\t\t\t}\n\t\t\t\tvnode._component._force = true;\n\t\t\t\tvnode._component._parentDom = originalParent;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {Promise} promise The thrown promise\n * @param {import('./internal').VNode<any, any>} suspendingVNode The suspending component\n */\nSuspense.prototype._childDidSuspend = function (promise, suspendingVNode) {\n\tconst suspendingComponent = suspendingVNode._component;\n\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\t\tsuspendingComponent._onResolve = null;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._onResolve = onResolved;\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\t// If the suspension was during hydration we don't need to restore the\n\t\t\t// suspended children into the _children array\n\t\t\tif (c.state._suspended) {\n\t\t\t\tconst suspendedVNode = c.state._suspended;\n\t\t\t\tc._vnode._children[0] = removeOriginal(\n\t\t\t\t\tsuspendedVNode,\n\t\t\t\t\tsuspendedVNode._component._parentDom,\n\t\t\t\t\tsuspendedVNode._component._originalParentDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * We do not set `suspended: true` during hydration because we want the actual markup\n\t * to remain on screen and hydrate it when the suspense actually gets resolved.\n\t * While in non-hydration cases the usual fallback -> component flow would occour.\n\t */\n\tif (\n\t\t!c._pendingSuspensionCount++ &&\n\t\t!(suspendingVNode._flags & MODE_HYDRATE)\n\t) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.componentWillUnmount = function () {\n\tthis._suspenders = [];\n};\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {import('./internal').SuspenseComponent[\"props\"]} props\n * @param {import('./internal').SuspenseState} state\n */\nSuspense.prototype.render = function (props, state) {\n\tif (this._detachOnNextRender) {\n\t\t// When the Suspense's _vnode was created by a call to createVNode\n\t\t// (i.e. due to a setState further up in the tree)\n\t\t// it's _children prop is null, in this case we \"forget\" about the parked vnodes to detach\n\t\tif (this._vnode._children) {\n\t\t\tconst detachedParent = document.createElement('div');\n\t\t\tconst detachedComponent = this._vnode._children[0]._component;\n\t\t\tthis._vnode._children[0] = detachedClone(\n\t\t\t\tthis._detachOnNextRender,\n\t\t\t\tdetachedParent,\n\t\t\t\t(detachedComponent._originalParentDom = detachedComponent._parentDom)\n\t\t\t);\n\t\t}\n\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\t// Wrap fallback tree in a VNode that prevents itself from being marked as aborting mid-hydration:\n\t/** @type {import('./internal').VNode} */\n\tconst fallback =\n\t\tstate._suspended && createElement(Fragment, null, props.fallback);\n\tif (fallback) fallback._flags &= ~MODE_HYDRATE;\n\n\treturn [\n\t\tcreateElement(Fragment, null, state._suspended ? null : props.children),\n\t\tfallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('./internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\t/** @type {import('./internal').Component} */\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n","import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function (child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function (props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate =\n\tSuspenseList.prototype.componentDidMount = function () {\n\t\t// Iterate through all children after mounting for two reasons:\n\t\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t\t// each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t\t// The nodes can now be completely consumed from the linked list.\n\t\t// 2. Handle nodes that might have gotten resolved between render and\n\t\t// componentDidMount.\n\t\tthis._map.forEach((node, child) => {\n\t\t\tresolve(this, child, node);\n\t\t});\n\t};\n","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { createElement, render } from 'preact';\n\n/**\n * @param {import('../../src/index').RenderableProps<{ context: any }>} props\n */\nfunction ContextProvider(props) {\n\tthis.getChildContext = () => props.context;\n\treturn props.children;\n}\n\n/**\n * Portal component\n * @this {import('./internal').Component}\n * @param {object | null | undefined} props\n *\n * TODO: use createRoot() instead of fake root\n */\nfunction Portal(props) {\n\tconst _this = this;\n\tlet container = props._container;\n\n\t_this.componentWillUnmount = function () {\n\t\trender(null, _this._temp);\n\t\t_this._temp = null;\n\t\t_this._container = null;\n\t};\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\t_this.componentWillUnmount();\n\t}\n\n\tif (!_this._temp) {\n\t\t// Ensure the element has a mask for useId invocations\n\t\tlet root = _this._vnode;\n\t\twhile (root !== null && !root._mask && root._parent !== null) {\n\t\t\troot = root._parent;\n\t\t}\n\n\t\t_this._container = container;\n\n\t\t// Create a fake DOM parent node that manages a subset of `container`'s children:\n\t\t_this._temp = {\n\t\t\tnodeType: 1,\n\t\t\tparentNode: container,\n\t\t\tchildNodes: [],\n\t\t\t_children: { _mask: root._mask },\n\t\t\tcontains: () => true,\n\t\t\tinsertBefore(child, before) {\n\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t_this._container.insertBefore(child, before);\n\t\t\t},\n\t\t\tremoveChild(child) {\n\t\t\t\tthis.childNodes.splice(this.childNodes.indexOf(child) >>> 1, 1);\n\t\t\t\t_this._container.removeChild(child);\n\t\t\t}\n\t\t};\n\t}\n\n\t// Render our wrapping element into temp.\n\trender(\n\t\tcreateElement(ContextProvider, { context: _this.context }, props._vnode),\n\t\t_this._temp\n\t);\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\tconst el = createElement(Portal, { _vnode: vnode, _container: container });\n\tel.containerInfo = container;\n\treturn el;\n}\n","import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\nimport {\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tuseEffect,\n\tuseId,\n\tuseImperativeHandle,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseReducer,\n\tuseRef,\n\tuseState\n} from 'preact/hooks';\nimport {\n\tuseDeferredValue,\n\tuseInsertionEffect,\n\tuseSyncExternalStore,\n\tuseTransition\n} from './index';\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\nconst CAMEL_PROPS =\n\t/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\nconst ON_ANI = /^on(Ani|Tra|Tou|BeforeInp|Compo)/;\nconst CAMEL_REPLACE = /[A-Z0-9]/g;\nconst IS_DOM = typeof document !== 'undefined';\n\n// Input types for which onchange should not be converted to oninput.\n// type=\"file|checkbox|radio\", plus \"range\" in IE11.\n// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches \"range\")\nconst onChangeInputType = type =>\n\t(typeof Symbol != 'undefined' && typeof Symbol() == 'symbol'\n\t\t? /fil|che|rad/\n\t\t: /fil|che|ra/\n\t).test(type);\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\n// `UNSAFE_*` lifecycle hooks\n// Preact only ever invokes the unprefixed methods.\n// Here we provide a base \"fallback\" implementation that calls any defined UNSAFE_ prefixed method.\n// - If a component defines its own `componentDidMount()` (including via defineProperty), use that.\n// - If a component defines `UNSAFE_componentDidMount()`, `componentDidMount` is the alias getter/setter.\n// - If anything assigns to an `UNSAFE_*` property, the assignment is forwarded to the unprefixed property.\n// See https://github.com/preactjs/preact/issues/1941\n[\n\t'componentWillMount',\n\t'componentWillReceiveProps',\n\t'componentWillUpdate'\n].forEach(key => {\n\tObject.defineProperty(Component.prototype, key, {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn this['UNSAFE_' + key];\n\t\t},\n\t\tset(v) {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: v\n\t\t\t});\n\t\t}\n\t});\n});\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\tparent.textContent = '';\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\n\te.persist = empty;\n\te.isPropagationStopped = isPropagationStopped;\n\te.isDefaultPrevented = isDefaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\nfunction empty() {}\n\nfunction isPropagationStopped() {\n\treturn this.cancelBubble;\n}\n\nfunction isDefaultPrevented() {\n\treturn this.defaultPrevented;\n}\n\nconst classNameDescriptorNonEnumberable = {\n\tenumerable: false,\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nfunction handleDomVNode(vnode) {\n\tlet props = vnode.props,\n\t\ttype = vnode.type,\n\t\tnormalizedProps = {};\n\n\tlet isNonDashedType = type.indexOf('-') === -1;\n\tfor (let i in props) {\n\t\tlet value = props[i];\n\n\t\tif (\n\t\t\t(i === 'value' && 'defaultValue' in props && value == null) ||\n\t\t\t// Emulate React's behavior of not rendering the contents of noscript tags on the client.\n\t\t\t(IS_DOM && i === 'children' && type === 'noscript') ||\n\t\t\ti === 'class' ||\n\t\t\ti === 'className'\n\t\t) {\n\t\t\t// Skip applying value if it is null/undefined and we already set\n\t\t\t// a default value\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet lowerCased = i.toLowerCase();\n\t\tif (i === 'defaultValue' && 'value' in props && props.value == null) {\n\t\t\t// `defaultValue` is treated as a fallback `value` when a value prop is present but null/undefined.\n\t\t\t// `defaultValue` for Elements with no value prop is the same as the DOM defaultValue property.\n\t\t\ti = 'value';\n\t\t} else if (i === 'download' && value === true) {\n\t\t\t// Calling `setAttribute` with a truthy value will lead to it being\n\t\t\t// passed as a stringified value, e.g. `download=\"true\"`. React\n\t\t\t// converts it to an empty string instead, otherwise the attribute\n\t\t\t// value will be used as the file name and the file will be called\n\t\t\t// \"true\" upon downloading it.\n\t\t\tvalue = '';\n\t\t} else if (lowerCased === 'translate' && value === 'no') {\n\t\t\tvalue = false;\n\t\t} else if (lowerCased[0] === 'o' && lowerCased[1] === 'n') {\n\t\t\tif (lowerCased === 'ondoubleclick') {\n\t\t\t\ti = 'ondblclick';\n\t\t\t} else if (\n\t\t\t\tlowerCased === 'onchange' &&\n\t\t\t\t(type === 'input' || type === 'textarea') &&\n\t\t\t\t!onChangeInputType(props.type)\n\t\t\t) {\n\t\t\t\tlowerCased = i = 'oninput';\n\t\t\t} else if (lowerCased === 'onfocus') {\n\t\t\t\ti = 'onfocusin';\n\t\t\t} else if (lowerCased === 'onblur') {\n\t\t\t\ti = 'onfocusout';\n\t\t\t} else if (ON_ANI.test(i)) {\n\t\t\t\ti = lowerCased;\n\t\t\t}\n\t\t} else if (isNonDashedType && CAMEL_PROPS.test(i)) {\n\t\t\ti = i.replace(CAMEL_REPLACE, '-$&').toLowerCase();\n\t\t} else if (value === null) {\n\t\t\tvalue = undefined;\n\t\t}\n\n\t\t// Add support for onInput and onChange, see #3561\n\t\t// if we have an oninput prop already change it to oninputCapture\n\t\tif (lowerCased === 'oninput') {\n\t\t\ti = lowerCased;\n\t\t\tif (normalizedProps[i]) {\n\t\t\t\ti = 'oninputCapture';\n\t\t\t}\n\t\t}\n\n\t\tnormalizedProps[i] = value;\n\t}\n\n\t// Add support for array select values: <select multiple value={[]} />\n\tif (\n\t\ttype == 'select' &&\n\t\tnormalizedProps.multiple &&\n\t\tArray.isArray(normalizedProps.value)\n\t) {\n\t\t// forEach() always returns undefined, which we abuse here to unset the value prop.\n\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\tchild.props.selected =\n\t\t\t\tnormalizedProps.value.indexOf(child.props.value) != -1;\n\t\t});\n\t}\n\n\t// Adding support for defaultValue in select tag\n\tif (type == 'select' && normalizedProps.defaultValue != null) {\n\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\tif (normalizedProps.multiple) {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.defaultValue.indexOf(child.props.value) != -1;\n\t\t\t} else {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.defaultValue == child.props.value;\n\t\t\t}\n\t\t});\n\t}\n\n\tif (props.class && !props.className) {\n\t\tnormalizedProps.class = props.class;\n\t\tObject.defineProperty(\n\t\t\tnormalizedProps,\n\t\t\t'className',\n\t\t\tclassNameDescriptorNonEnumberable\n\t\t);\n\t} else if (props.className && !props.class) {\n\t\tnormalizedProps.class = normalizedProps.className = props.className;\n\t} else if (props.class && props.className) {\n\t\tnormalizedProps.class = normalizedProps.className = props.className;\n\t}\n\n\tvnode.props = normalizedProps;\n}\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\t// only normalize props on Element nodes\n\tif (typeof vnode.type === 'string') {\n\t\thandleDomVNode(vnode);\n\t}\n\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tif (oldVNodeHook) oldVNodeHook(vnode);\n};\n\n// Only needed for react-relay\nlet currentComponent;\nconst oldBeforeRender = options._render;\noptions._render = function (vnode) {\n\tif (oldBeforeRender) {\n\t\toldBeforeRender(vnode);\n\t}\n\tcurrentComponent = vnode._component;\n};\n\nconst oldDiffed = options.diffed;\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.diffed = function (vnode) {\n\tif (oldDiffed) {\n\t\toldDiffed(vnode);\n\t}\n\n\tconst props = vnode.props;\n\tconst dom = vnode._dom;\n\n\tif (\n\t\tdom != null &&\n\t\tvnode.type === 'textarea' &&\n\t\t'value' in props &&\n\t\tprops.value !== dom.value\n\t) {\n\t\tdom.value = props.value == null ? '' : props.value;\n\t}\n\n\tcurrentComponent = null;\n};\n\n// This is a very very private internal function for React it\n// is used to sort-of do runtime dependency injection.\nexport const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\n\tReactCurrentDispatcher: {\n\t\tcurrent: {\n\t\t\treadContext(context) {\n\t\t\t\treturn currentComponent._globalContext[context._id].props.value;\n\t\t\t},\n\t\t\tuseCallback,\n\t\t\tuseContext,\n\t\t\tuseDebugValue,\n\t\t\tuseDeferredValue,\n\t\t\tuseEffect,\n\t\t\tuseId,\n\t\t\tuseImperativeHandle,\n\t\t\tuseInsertionEffect,\n\t\t\tuseLayoutEffect,\n\t\t\tuseMemo,\n\t\t\t// useMutableSource, // experimental-only and replaced by uSES, likely not worth supporting\n\t\t\tuseReducer,\n\t\t\tuseRef,\n\t\t\tuseState,\n\t\t\tuseSyncExternalStore,\n\t\t\tuseTransition\n\t\t}\n\t}\n};\n","import {\n\tcreateElement,\n\trender as preactRender,\n\tcloneElement as preactCloneElement,\n\tcreateRef,\n\tComponent,\n\tcreateContext,\n\tFragment\n} from 'preact';\nimport {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue\n} from 'preact/hooks';\nimport {\n\tuseInsertionEffect,\n\tstartTransition,\n\tuseDeferredValue,\n\tuseSyncExternalStore,\n\tuseTransition\n} from './hooks';\nimport { PureComponent } from './PureComponent';\nimport { memo } from './memo';\nimport { forwardRef } from './forwardRef';\nimport { Children } from './Children';\nimport { Suspense, lazy } from './suspense';\nimport { SuspenseList } from './suspense-list';\nimport { createPortal } from './portals';\nimport {\n\thydrate,\n\trender,\n\tREACT_ELEMENT_TYPE,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n} from './render';\n\nconst version = '18.3.1'; // trick libraries to think we are react\n\n/**\n * Legacy version of createElement.\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor\n */\nfunction createFactory(type) {\n\treturn createElement.bind(null, type);\n}\n\n/**\n * Check if the passed element is a valid (p)react node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isValidElement(element) {\n\treturn !!element && element.$$typeof === REACT_ELEMENT_TYPE;\n}\n\n/**\n * Check if the passed element is a Fragment node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isFragment(element) {\n\treturn isValidElement(element) && element.type === Fragment;\n}\n\n/**\n * Check if the passed element is a Memo node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isMemo(element) {\n\treturn (\n\t\t!!element &&\n\t\t!!element.displayName &&\n\t\t(typeof element.displayName === 'string' ||\n\t\t\telement.displayName instanceof String) &&\n\t\telement.displayName.startsWith('Memo(')\n\t);\n}\n\n/**\n * Wrap `cloneElement` to abort if the passed element is not a valid element and apply\n * all vnode normalizations.\n * @param {import('./internal').VNode} element The vnode to clone\n * @param {object} props Props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Optional component children\n */\nfunction cloneElement(element) {\n\tif (!isValidElement(element)) return element;\n\treturn preactCloneElement.apply(null, arguments);\n}\n\n/**\n * Remove a component tree from the DOM, including state and event handlers.\n * @param {import('./internal').PreactElement} container\n * @returns {boolean}\n */\nfunction unmountComponentAtNode(container) {\n\tif (container._children) {\n\t\tpreactRender(null, container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Get the matching DOM node for a component\n * @param {import('./internal').Component} component\n * @returns {import('./internal').PreactElement | null}\n */\nfunction findDOMNode(component) {\n\treturn (\n\t\t(component &&\n\t\t\t(component.base || (component.nodeType === 1 && component))) ||\n\t\tnull\n\t);\n}\n\n/**\n * Deprecated way to control batched rendering inside the reconciler, but we\n * already schedule in batches inside our rendering code\n * @template Arg\n * @param {(arg: Arg) => void} callback function that triggers the updated\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n */\n// eslint-disable-next-line camelcase\nconst unstable_batchedUpdates = (callback, arg) => callback(arg);\n\n/**\n * In React, `flushSync` flushes the entire tree and forces a rerender. It's\n * implmented here as a no-op.\n * @template Arg\n * @template Result\n * @param {(arg: Arg) => Result} callback function that runs before the flush\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n * @returns\n */\nconst flushSync = (callback, arg) => callback(arg);\n\n/**\n * Strict Mode is not implemented in Preact, so we provide a stand-in for it\n * that just renders its children without imposing any restrictions.\n */\nconst StrictMode = Fragment;\n\n// compat to react-is\nexport const isElement = isValidElement;\n\nexport * from 'preact/hooks';\nexport {\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tisFragment,\n\tisMemo,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\tuseInsertionEffect,\n\tstartTransition,\n\tuseDeferredValue,\n\tuseSyncExternalStore,\n\tuseTransition,\n\t// eslint-disable-next-line camelcase\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n\n// React copies the named exports to the default one.\nexport default {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseInsertionEffect,\n\tuseTransition,\n\tuseDeferredValue,\n\tuseSyncExternalStore,\n\tstartTransition,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tisElement,\n\tisFragment,\n\tisMemo,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n","const ENCODED_ENTITIES = /[\"&<]/;\n\n/** @param {string} str */\nexport function encodeEntities(str) {\n\t// Skip all work for strings with no entities needing encoding:\n\tif (str.length === 0 || ENCODED_ENTITIES.test(str) === false) return str;\n\n\tlet last = 0,\n\t\ti = 0,\n\t\tout = '',\n\t\tch = '';\n\n\t// Seek forward in str until the next entity char:\n\tfor (; i < str.length; i++) {\n\t\tswitch (str.charCodeAt(i)) {\n\t\t\tcase 34:\n\t\t\t\tch = '"';\n\t\t\t\tbreak;\n\t\t\tcase 38:\n\t\t\t\tch = '&';\n\t\t\t\tbreak;\n\t\t\tcase 60:\n\t\t\t\tch = '<';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tcontinue;\n\t\t}\n\t\t// Append skipped/buffered characters and the encoded entity:\n\t\tif (i !== last) out += str.slice(last, i);\n\t\tout += ch;\n\t\t// Start the next seek/buffer after the entity's offset:\n\t\tlast = i + 1;\n\t}\n\tif (i !== last) out += str.slice(last, i);\n\treturn out;\n}\n","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { options, Fragment } from 'preact';\nimport { encodeEntities } from './utils';\nimport { IS_NON_DIMENSIONAL } from '../../src/constants';\n\nlet vnodeId = 0;\n\nconst isArray = Array.isArray;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\tif (!props) props = {};\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = props,\n\t\tref,\n\t\ti;\n\n\tif ('ref' in normalizedProps) {\n\t\tnormalizedProps = {};\n\t\tfor (i in props) {\n\t\t\tif (i == 'ref') {\n\t\t\t\tref = props[i];\n\t\t\t} else {\n\t\t\t\tnormalizedProps[i] = props[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @type {VNode & { __source: any; __self: any }} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t_index: -1,\n\t\t_flags: 0,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\n/**\n * Create a template vnode. This function is not expected to be\n * used directly, but rather through a precompile JSX transform\n * @param {string[]} templates\n * @param {Array<string | null | VNode>} exprs\n * @returns {VNode}\n */\nfunction jsxTemplate(templates, ...exprs) {\n\tconst vnode = createVNode(Fragment, { tpl: templates, exprs });\n\t// Bypass render to string top level Fragment optimization\n\tvnode.key = vnode._vnode;\n\treturn vnode;\n}\n\nconst JS_TO_CSS = {};\nconst CSS_REGEX = /[A-Z]/g;\n\n/**\n * Unwrap potential signals.\n * @param {*} value\n * @returns {*}\n */\nfunction normalizeAttrValue(value) {\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.valueOf === 'function'\n\t\t? value.valueOf()\n\t\t: value;\n}\n\n/**\n * Serialize an HTML attribute to a string. This function is not\n * expected to be used directly, but rather through a precompile\n * JSX transform\n * @param {string} name The attribute name\n * @param {*} value The attribute value\n * @returns {string}\n */\nfunction jsxAttr(name, value) {\n\tif (options.attr) {\n\t\tconst result = options.attr(name, value);\n\t\tif (typeof result === 'string') return result;\n\t}\n\n\tvalue = normalizeAttrValue(value);\n\n\tif (name === 'ref' || name === 'key') return '';\n\tif (name === 'style' && typeof value === 'object') {\n\t\tlet str = '';\n\t\tfor (let prop in value) {\n\t\t\tlet val = value[prop];\n\t\t\tif (val != null && val !== '') {\n\t\t\t\tconst name =\n\t\t\t\t\tprop[0] == '-'\n\t\t\t\t\t\t? prop\n\t\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t\t\t(JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\t\tlet suffix = ';';\n\t\t\t\tif (\n\t\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t\t// Exclude custom-attributes\n\t\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t\t!IS_NON_DIMENSIONAL.test(name)\n\t\t\t\t) {\n\t\t\t\t\tsuffix = 'px;';\n\t\t\t\t}\n\t\t\t\tstr = str + name + ':' + val + suffix;\n\t\t\t}\n\t\t}\n\t\treturn name + '=\"' + encodeEntities(str) + '\"';\n\t}\n\n\tif (\n\t\tvalue == null ||\n\t\tvalue === false ||\n\t\ttypeof value === 'function' ||\n\t\ttypeof value === 'object'\n\t) {\n\t\treturn '';\n\t} else if (value === true) return name;\n\n\treturn name + '=\"' + encodeEntities('' + value) + '\"';\n}\n\n/**\n * Escape a dynamic child passed to `jsxTemplate`. This function\n * is not expected to be used directly, but rather through a\n * precompile JSX transform\n * @param {*} value\n * @returns {string | null | VNode | Array<string | null | VNode>}\n */\nfunction jsxEscape(value) {\n\tif (\n\t\tvalue == null ||\n\t\ttypeof value === 'boolean' ||\n\t\ttypeof value === 'function'\n\t) {\n\t\treturn null;\n\t}\n\n\tif (typeof value === 'object') {\n\t\t// Check for VNode\n\t\tif (value.constructor === undefined) return value;\n\n\t\tif (isArray(value)) {\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tvalue[i] = jsxEscape(value[i]);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t}\n\n\treturn encodeEntities('' + value);\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment,\n\t// precompiled JSX transform\n\tjsxTemplate,\n\tjsxAttr,\n\tjsxEscape\n};\n","'use client';\n/**\n * Copyright 2025 Aiden Bai, Million Software, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software\n * and associated documentation files (the “Software”), to deal in the Software without restriction,\n * including without limitation the rights to use, copy, modify, merge, publish, distribute,\n * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n// src/polyfills.ts\nif (!Array.prototype.toSorted) {\n Object.defineProperty(Array.prototype, \"toSorted\", {\n value: function(compareFn) {\n return [...this].sort(compareFn);\n },\n writable: true,\n configurable: true\n });\n}\n\n// src/index.ts\nimport \"bippy\";\n\n// src/core/index.ts\nimport { signal as signal7 } from \"@preact/signals\";\nimport {\n detectReactBuildType,\n getRDTHook,\n getType as getType5,\n isInstrumentationActive\n} from \"bippy\";\n\n// src/new-outlines/index.ts\nimport {\n didFiberCommit as didFiberCommit2,\n getDisplayName as getDisplayName5,\n getFiberId as getFiberId3,\n getNearestHostFibers,\n getTimings as getTimings3,\n getType as getType4,\n isCompositeFiber as isCompositeFiber2\n} from \"bippy\";\n\n// src/core/instrumentation.ts\nimport { signal as signal5 } from \"@preact/signals\";\nimport {\n ClassComponentTag as ClassComponentTag2,\n ForwardRefTag as ForwardRefTag2,\n FunctionComponentTag as FunctionComponentTag3,\n MemoComponentTag as MemoComponentTag3,\n SimpleMemoComponentTag as SimpleMemoComponentTag3,\n didFiberCommit,\n getDisplayName as getDisplayName4,\n getFiberId as getFiberId2,\n getMutatedHostFibers,\n getTimings as getTimings2,\n getType as getType3,\n hasMemoCache as hasMemoCache2,\n instrument,\n traverseContexts,\n traverseProps,\n traverseRenderedFibers\n} from \"bippy\";\nimport { isValidElement } from \"preact\";\n\n// src/core/utils.ts\nimport { getType } from \"bippy\";\nfunction descending(a, b) {\n return b - a;\n}\nfunction getComponentGroupNames(group) {\n let result = group[0].name;\n const len = group.length;\n const max = Math.min(4, len);\n for (let i = 1; i < max; i++) {\n result += `, ${group[i].name}`;\n }\n return result;\n}\nfunction getComponentGroupTotalTime(group) {\n let result = group[0].time;\n for (let i = 1, len = group.length; i < len; i++) {\n result += group[i].time;\n }\n return result;\n}\nfunction componentGroupHasForget(group) {\n for (let i = 0, len = group.length; i < len; i++) {\n if (group[i].forget) {\n return true;\n }\n }\n return false;\n}\nvar getLabelText = (groupedAggregatedRenders) => {\n let labelText = \"\";\n const componentsByCount = /* @__PURE__ */ new Map();\n for (const aggregatedRender of groupedAggregatedRenders) {\n const { forget, time, aggregatedCount, name } = aggregatedRender;\n if (!componentsByCount.has(aggregatedCount)) {\n componentsByCount.set(aggregatedCount, []);\n }\n const components = componentsByCount.get(aggregatedCount);\n if (components) {\n components.push({ name, forget, time: time ?? 0 });\n }\n }\n const sortedCounts = Array.from(componentsByCount.keys()).sort(descending);\n const parts = [];\n let cumulativeTime = 0;\n for (const count of sortedCounts) {\n const componentGroup = componentsByCount.get(count);\n if (!componentGroup) continue;\n let text = getComponentGroupNames(componentGroup);\n const totalTime = getComponentGroupTotalTime(componentGroup);\n const hasForget = componentGroupHasForget(componentGroup);\n cumulativeTime += totalTime;\n if (componentGroup.length > 4) {\n text += \"\\u2026\";\n }\n if (count > 1) {\n text += ` \\xD7 ${count}`;\n }\n if (hasForget) {\n text = `\\u2728${text}`;\n }\n parts.push(text);\n }\n labelText = parts.join(\", \");\n if (!labelText.length) return null;\n if (labelText.length > 40) {\n labelText = `${labelText.slice(0, 40)}\\u2026`;\n }\n if (cumulativeTime >= 0.01) {\n labelText += ` (${Number(cumulativeTime.toFixed(2))}ms)`;\n }\n return labelText;\n};\nfunction isEqual(a, b) {\n return a === b || a !== a && b !== b;\n}\nvar playNotificationSound = (audioContext) => {\n const oscillator = audioContext.createOscillator();\n const gainNode = audioContext.createGain();\n oscillator.connect(gainNode);\n gainNode.connect(audioContext.destination);\n const options = {\n type: \"sine\",\n freq: [\n 392,\n // 523.25,\n 600\n // 659.25\n ],\n duration: 0.3,\n gain: 0.12\n };\n const frequencies = options.freq;\n const timePerNote = options.duration / frequencies.length;\n frequencies.forEach((freq, i) => {\n oscillator.frequency.setValueAtTime(\n freq,\n audioContext.currentTime + i * timePerNote\n );\n });\n oscillator.type = options.type;\n gainNode.gain.setValueAtTime(options.gain, audioContext.currentTime);\n gainNode.gain.setTargetAtTime(\n 0,\n audioContext.currentTime + options.duration * 0.7,\n 0.05\n );\n oscillator.start();\n oscillator.stop(audioContext.currentTime + options.duration);\n};\n\n// src/web/utils/outline.ts\nvar batchGetBoundingRects = (elements) => {\n return new Promise((resolve) => {\n const results = /* @__PURE__ */ new Map();\n const observer = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n const element = entry.target;\n const bounds = entry.boundingClientRect;\n results.set(element, bounds);\n }\n observer.disconnect();\n resolve(results);\n });\n for (const element of elements) {\n observer.observe(element);\n }\n });\n};\nvar RENDER_PHASE_STRING_TO_ENUM = {\n mount: 1 /* Mount */,\n update: 2 /* Update */,\n unmount: 4 /* Unmount */\n};\n\n// src/web/views/inspector/timeline/utils.ts\nimport {\n ClassComponentTag,\n ForwardRefTag,\n FunctionComponentTag as FunctionComponentTag2,\n MemoComponentTag as MemoComponentTag2,\n SimpleMemoComponentTag as SimpleMemoComponentTag2\n} from \"bippy\";\n\n// src/web/views/inspector/utils.ts\nimport {\n FunctionComponentTag,\n getDisplayName as getDisplayName3,\n getTimings,\n isCompositeFiber,\n isHostFiber,\n traverseFiber\n} from \"bippy\";\n\n// src/web/views/inspector/index.tsx\nimport { computed, untracked, useSignalEffect } from \"@preact/signals\";\nimport { Component } from \"preact\";\nimport { useEffect as useEffect6, useRef as useRef5 } from \"preact/hooks\";\n\n// src/web/components/icon/index.tsx\nimport { forwardRef } from \"preact/compat\";\nimport { jsx, jsxs } from \"preact/jsx-runtime\";\nvar Icon = forwardRef(({\n size = 15,\n name,\n fill = \"currentColor\",\n stroke = \"currentColor\",\n className,\n externalURL = \"\",\n style\n}, ref) => {\n const width = Array.isArray(size) ? size[0] : size;\n const height = Array.isArray(size) ? size[1] || size[0] : size;\n const path = `${externalURL}#${name}`;\n return /* @__PURE__ */ jsxs(\n \"svg\",\n {\n ref,\n width: `${width}px`,\n height: `${height}px`,\n fill,\n stroke,\n className,\n style: {\n ...style,\n minWidth: `${width}px`,\n maxWidth: `${width}px`,\n minHeight: `${height}px`,\n maxHeight: `${height}px`\n },\n children: [\n /* @__PURE__ */ jsx(\"title\", { children: name }),\n /* @__PURE__ */ jsx(\"use\", { href: path })\n ]\n }\n );\n});\n\n// src/web/state.ts\nimport { signal } from \"@preact/signals\";\n\n// src/web/constants.ts\nvar SAFE_AREA = 24;\nvar MIN_SIZE = {\n width: 550,\n height: 350,\n initialHeight: 400\n};\nvar MIN_CONTAINER_WIDTH = 240;\nvar LOCALSTORAGE_KEY = \"react-scan-widget-settings-v2\";\nvar LOCALSTORAGE_COLLAPSED_KEY = \"react-scan-widget-collapsed-v1\";\nvar LOCALSTORAGE_LAST_VIEW_KEY = \"react-scan-widget-last-view-v1\";\n\n// src/web/utils/constants.ts\nvar IS_CLIENT = typeof window !== \"undefined\";\n\n// src/web/utils/helpers.ts\nimport {\n MemoComponentTag,\n SimpleMemoComponentTag,\n SuspenseComponentTag,\n getDisplayName,\n hasMemoCache\n} from \"bippy\";\n\n// ../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs\nfunction r(e) {\n var t, f, n = \"\";\n if (\"string\" == typeof e || \"number\" == typeof e) n += e;\n else if (\"object\" == typeof e) if (Array.isArray(e)) {\n var o = e.length;\n for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += \" \"), n += f);\n } else for (f in e) e[f] && (n && (n += \" \"), n += f);\n return n;\n}\nfunction clsx() {\n for (var e, t, f = 0, n = \"\", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += \" \"), n += t);\n return n;\n}\n\n// ../../node_modules/.pnpm/tailwind-merge@2.5.5/node_modules/tailwind-merge/dist/bundle-mjs.mjs\nvar CLASS_PART_SEPARATOR = \"-\";\nvar createClassGroupUtils = (config) => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = (className) => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n if (classParts[0] === \"\" && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nvar getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : void 0;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return void 0;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nvar arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nvar getGroupIdForArbitraryProperty = (className) => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(\":\"));\n if (property) {\n return \"arbitrary..\" + property;\n }\n }\n};\nvar createClassMap = (config) => {\n const {\n theme,\n prefix\n } = config;\n const classMap = {\n nextPart: /* @__PURE__ */ new Map(),\n validators: []\n };\n const prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);\n prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {\n processClassesRecursively(classGroup, classMap, classGroupId, theme);\n });\n return classMap;\n};\nvar processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach((classDefinition) => {\n if (typeof classDefinition === \"string\") {\n const classPartObjectToEdit = classDefinition === \"\" ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === \"function\") {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup2]) => {\n processClassesRecursively(classGroup2, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nvar getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: /* @__PURE__ */ new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nvar isThemeGetter = (func) => func.isThemeGetter;\nvar getPrefixedClassGroupEntries = (classGroupEntries, prefix) => {\n if (!prefix) {\n return classGroupEntries;\n }\n return classGroupEntries.map(([classGroupId, classGroup]) => {\n const prefixedClassGroup = classGroup.map((classDefinition) => {\n if (typeof classDefinition === \"string\") {\n return prefix + classDefinition;\n }\n if (typeof classDefinition === \"object\") {\n return Object.fromEntries(Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]));\n }\n return classDefinition;\n });\n return [classGroupId, prefixedClassGroup];\n });\n};\nvar createLruCache = (maxCacheSize) => {\n if (maxCacheSize < 1) {\n return {\n get: () => void 0,\n set: () => {\n }\n };\n }\n let cacheSize = 0;\n let cache2 = /* @__PURE__ */ new Map();\n let previousCache = /* @__PURE__ */ new Map();\n const update = (key, value) => {\n cache2.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache2;\n cache2 = /* @__PURE__ */ new Map();\n }\n };\n return {\n get(key) {\n let value = cache2.get(key);\n if (value !== void 0) {\n return value;\n }\n if ((value = previousCache.get(key)) !== void 0) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache2.has(key)) {\n cache2.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nvar IMPORTANT_MODIFIER = \"!\";\nvar createParseClassName = (config) => {\n const {\n separator,\n experimentalParseClassName\n } = config;\n const isSeparatorSingleCharacter = separator.length === 1;\n const firstSeparatorCharacter = separator[0];\n const separatorLength = separator.length;\n const parseClassName = (className) => {\n const modifiers = [];\n let bracketDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0) {\n if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + separatorLength;\n continue;\n }\n if (currentCharacter === \"/\") {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === \"[\") {\n bracketDepth++;\n } else if (currentCharacter === \"]\") {\n bracketDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER);\n const baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : void 0;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (experimentalParseClassName) {\n return (className) => experimentalParseClassName({\n className,\n parseClassName\n });\n }\n return parseClassName;\n};\nvar sortModifiers = (modifiers) => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach((modifier) => {\n const isArbitraryVariant = modifier[0] === \"[\";\n if (isArbitraryVariant) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n};\nvar createConfigUtils = (config) => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n ...createClassGroupUtils(config)\n});\nvar SPLIT_CLASSES_REGEX = /\\s+/;\nvar mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds\n } = configUtils;\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = \"\";\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n let hasPostfixModifier = Boolean(maybePostfixModifierPosition);\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n result = originalClassName + (result.length > 0 ? \" \" + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n result = originalClassName + (result.length > 0 ? \" \" + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(\":\");\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n result = originalClassName + (result.length > 0 ? \" \" + result : result);\n }\n return result;\n};\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = \"\";\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += \" \");\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nvar toValue = (mix) => {\n if (typeof mix === \"string\") {\n return mix;\n }\n let resolvedValue;\n let string = \"\";\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += \" \");\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nvar fromTheme = (key) => {\n const themeGetter = (theme) => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nvar arbitraryValueRegex = /^\\[(?:([a-z-]+):)?(.+)\\]$/i;\nvar fractionRegex = /^\\d+\\/\\d+$/;\nvar stringLengths = /* @__PURE__ */ new Set([\"px\", \"full\", \"screen\"]);\nvar tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nvar lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nvar colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\\(.+\\)$/;\nvar shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nvar imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nvar isLength = (value) => isNumber(value) || stringLengths.has(value) || fractionRegex.test(value);\nvar isArbitraryLength = (value) => getIsArbitraryValue(value, \"length\", isLengthOnly);\nvar isNumber = (value) => Boolean(value) && !Number.isNaN(Number(value));\nvar isArbitraryNumber = (value) => getIsArbitraryValue(value, \"number\", isNumber);\nvar isInteger = (value) => Boolean(value) && Number.isInteger(Number(value));\nvar isPercent = (value) => value.endsWith(\"%\") && isNumber(value.slice(0, -1));\nvar isArbitraryValue = (value) => arbitraryValueRegex.test(value);\nvar isTshirtSize = (value) => tshirtUnitRegex.test(value);\nvar sizeLabels = /* @__PURE__ */ new Set([\"length\", \"size\", \"percentage\"]);\nvar isArbitrarySize = (value) => getIsArbitraryValue(value, sizeLabels, isNever);\nvar isArbitraryPosition = (value) => getIsArbitraryValue(value, \"position\", isNever);\nvar imageLabels = /* @__PURE__ */ new Set([\"image\", \"url\"]);\nvar isArbitraryImage = (value) => getIsArbitraryValue(value, imageLabels, isImage);\nvar isArbitraryShadow = (value) => getIsArbitraryValue(value, \"\", isShadow);\nvar isAny = () => true;\nvar getIsArbitraryValue = (value, label, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return typeof label === \"string\" ? result[1] === label : label.has(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nvar isLengthOnly = (value) => (\n // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n // For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\n lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n);\nvar isNever = () => false;\nvar isShadow = (value) => shadowRegex.test(value);\nvar isImage = (value) => imageRegex.test(value);\nvar getDefaultConfig = () => {\n const colors = fromTheme(\"colors\");\n const spacing = fromTheme(\"spacing\");\n const blur = fromTheme(\"blur\");\n const brightness = fromTheme(\"brightness\");\n const borderColor = fromTheme(\"borderColor\");\n const borderRadius = fromTheme(\"borderRadius\");\n const borderSpacing = fromTheme(\"borderSpacing\");\n const borderWidth = fromTheme(\"borderWidth\");\n const contrast = fromTheme(\"contrast\");\n const grayscale = fromTheme(\"grayscale\");\n const hueRotate = fromTheme(\"hueRotate\");\n const invert = fromTheme(\"invert\");\n const gap = fromTheme(\"gap\");\n const gradientColorStops = fromTheme(\"gradientColorStops\");\n const gradientColorStopPositions = fromTheme(\"gradientColorStopPositions\");\n const inset = fromTheme(\"inset\");\n const margin = fromTheme(\"margin\");\n const opacity = fromTheme(\"opacity\");\n const padding = fromTheme(\"padding\");\n const saturate = fromTheme(\"saturate\");\n const scale = fromTheme(\"scale\");\n const sepia = fromTheme(\"sepia\");\n const skew = fromTheme(\"skew\");\n const space = fromTheme(\"space\");\n const translate = fromTheme(\"translate\");\n const getOverscroll = () => [\"auto\", \"contain\", \"none\"];\n const getOverflow = () => [\"auto\", \"hidden\", \"clip\", \"visible\", \"scroll\"];\n const getSpacingWithAutoAndArbitrary = () => [\"auto\", isArbitraryValue, spacing];\n const getSpacingWithArbitrary = () => [isArbitraryValue, spacing];\n const getLengthWithEmptyAndArbitrary = () => [\"\", isLength, isArbitraryLength];\n const getNumberWithAutoAndArbitrary = () => [\"auto\", isNumber, isArbitraryValue];\n const getPositions = () => [\"bottom\", \"center\", \"left\", \"left-bottom\", \"left-top\", \"right\", \"right-bottom\", \"right-top\", \"top\"];\n const getLineStyles = () => [\"solid\", \"dashed\", \"dotted\", \"double\", \"none\"];\n const getBlendModes = () => [\"normal\", \"multiply\", \"screen\", \"overlay\", \"darken\", \"lighten\", \"color-dodge\", \"color-burn\", \"hard-light\", \"soft-light\", \"difference\", \"exclusion\", \"hue\", \"saturation\", \"color\", \"luminosity\"];\n const getAlign = () => [\"start\", \"end\", \"center\", \"between\", \"around\", \"evenly\", \"stretch\"];\n const getZeroAndEmpty = () => [\"\", \"0\", isArbitraryValue];\n const getBreaks = () => [\"auto\", \"avoid\", \"all\", \"avoid-page\", \"page\", \"left\", \"right\", \"column\"];\n const getNumberAndArbitrary = () => [isNumber, isArbitraryValue];\n return {\n cacheSize: 500,\n separator: \":\",\n theme: {\n colors: [isAny],\n spacing: [isLength, isArbitraryLength],\n blur: [\"none\", \"\", isTshirtSize, isArbitraryValue],\n brightness: getNumberAndArbitrary(),\n borderColor: [colors],\n borderRadius: [\"none\", \"\", \"full\", isTshirtSize, isArbitraryValue],\n borderSpacing: getSpacingWithArbitrary(),\n borderWidth: getLengthWithEmptyAndArbitrary(),\n contrast: getNumberAndArbitrary(),\n grayscale: getZeroAndEmpty(),\n hueRotate: getNumberAndArbitrary(),\n invert: getZeroAndEmpty(),\n gap: getSpacingWithArbitrary(),\n gradientColorStops: [colors],\n gradientColorStopPositions: [isPercent, isArbitraryLength],\n inset: getSpacingWithAutoAndArbitrary(),\n margin: getSpacingWithAutoAndArbitrary(),\n opacity: getNumberAndArbitrary(),\n padding: getSpacingWithArbitrary(),\n saturate: getNumberAndArbitrary(),\n scale: getNumberAndArbitrary(),\n sepia: getZeroAndEmpty(),\n skew: getNumberAndArbitrary(),\n space: getSpacingWithArbitrary(),\n translate: getSpacingWithArbitrary()\n },\n classGroups: {\n // Layout\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: [\"auto\", \"square\", \"video\", isArbitraryValue]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n */\n container: [\"container\"],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isTshirtSize]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n \"break-after\": [{\n \"break-after\": getBreaks()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n \"break-before\": [{\n \"break-before\": getBreaks()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n \"break-inside\": [{\n \"break-inside\": [\"auto\", \"avoid\", \"avoid-page\", \"avoid-column\"]\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n \"box-decoration\": [{\n \"box-decoration\": [\"slice\", \"clone\"]\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: [\"border\", \"content\"]\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\"block\", \"inline-block\", \"inline\", \"flex\", \"inline-flex\", \"table\", \"inline-table\", \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\", \"table-footer-group\", \"table-header-group\", \"table-row-group\", \"table-row\", \"flow-root\", \"grid\", \"inline-grid\", \"contents\", \"list-item\", \"hidden\"],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: [\"right\", \"left\", \"none\", \"start\", \"end\"]\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: [\"left\", \"right\", \"both\", \"none\", \"start\", \"end\"]\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: [\"isolate\", \"isolation-auto\"],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n \"object-fit\": [{\n object: [\"contain\", \"cover\", \"fill\", \"none\", \"scale-down\"]\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n \"object-position\": [{\n object: [...getPositions(), isArbitraryValue]\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: getOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n \"overflow-x\": [{\n \"overflow-x\": getOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n \"overflow-y\": [{\n \"overflow-y\": getOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: getOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n \"overscroll-x\": [{\n \"overscroll-x\": getOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n \"overscroll-y\": [{\n \"overscroll-y\": getOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: [\"static\", \"fixed\", \"absolute\", \"relative\", \"sticky\"],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: [inset]\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n \"inset-x\": [{\n \"inset-x\": [inset]\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n \"inset-y\": [{\n \"inset-y\": [inset]\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: [inset]\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: [inset]\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: [inset]\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: [inset]\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: [inset]\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: [inset]\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: [\"visible\", \"invisible\", \"collapse\"],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [\"auto\", isInteger, isArbitraryValue]\n }],\n // Flexbox and Grid\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: getSpacingWithAutoAndArbitrary()\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n \"flex-direction\": [{\n flex: [\"row\", \"row-reverse\", \"col\", \"col-reverse\"]\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n \"flex-wrap\": [{\n flex: [\"wrap\", \"wrap-reverse\", \"nowrap\"]\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [\"1\", \"auto\", \"initial\", \"none\", isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: getZeroAndEmpty()\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: getZeroAndEmpty()\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [\"first\", \"last\", \"none\", isInteger, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n \"grid-cols\": [{\n \"grid-cols\": [isAny]\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n \"col-start-end\": [{\n col: [\"auto\", {\n span: [\"full\", isInteger, isArbitraryValue]\n }, isArbitraryValue]\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n \"col-start\": [{\n \"col-start\": getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n \"col-end\": [{\n \"col-end\": getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n \"grid-rows\": [{\n \"grid-rows\": [isAny]\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n \"row-start-end\": [{\n row: [\"auto\", {\n span: [isInteger, isArbitraryValue]\n }, isArbitraryValue]\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n \"row-start\": [{\n \"row-start\": getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n \"row-end\": [{\n \"row-end\": getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n \"grid-flow\": [{\n \"grid-flow\": [\"row\", \"col\", \"dense\", \"row-dense\", \"col-dense\"]\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n \"auto-cols\": [{\n \"auto-cols\": [\"auto\", \"min\", \"max\", \"fr\", isArbitraryValue]\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n \"auto-rows\": [{\n \"auto-rows\": [\"auto\", \"min\", \"max\", \"fr\", isArbitraryValue]\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: [gap]\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n \"gap-x\": [{\n \"gap-x\": [gap]\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n \"gap-y\": [{\n \"gap-y\": [gap]\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n \"justify-content\": [{\n justify: [\"normal\", ...getAlign()]\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n \"justify-items\": [{\n \"justify-items\": [\"start\", \"end\", \"center\", \"stretch\"]\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n \"justify-self\": [{\n \"justify-self\": [\"auto\", \"start\", \"end\", \"center\", \"stretch\"]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n \"align-content\": [{\n content: [\"normal\", ...getAlign(), \"baseline\"]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n \"align-items\": [{\n items: [\"start\", \"end\", \"center\", \"baseline\", \"stretch\"]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n \"align-self\": [{\n self: [\"auto\", \"start\", \"end\", \"center\", \"stretch\", \"baseline\"]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n \"place-content\": [{\n \"place-content\": [...getAlign(), \"baseline\"]\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n \"place-items\": [{\n \"place-items\": [\"start\", \"end\", \"center\", \"baseline\", \"stretch\"]\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n \"place-self\": [{\n \"place-self\": [\"auto\", \"start\", \"end\", \"center\", \"stretch\"]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: [padding]\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: [padding]\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: [padding]\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: [padding]\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: [padding]\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: [padding]\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: [padding]\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: [padding]\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: [padding]\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: [margin]\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: [margin]\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: [margin]\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: [margin]\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: [margin]\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: [margin]\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: [margin]\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: [margin]\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: [margin]\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/space\n */\n \"space-x\": [{\n \"space-x\": [space]\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/space\n */\n \"space-x-reverse\": [\"space-x-reverse\"],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/space\n */\n \"space-y\": [{\n \"space-y\": [space]\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/space\n */\n \"space-y-reverse\": [\"space-y-reverse\"],\n // Sizing\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [\"auto\", \"min\", \"max\", \"fit\", \"svw\", \"lvw\", \"dvw\", isArbitraryValue, spacing]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n \"min-w\": [{\n \"min-w\": [isArbitraryValue, spacing, \"min\", \"max\", \"fit\"]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n \"max-w\": [{\n \"max-w\": [isArbitraryValue, spacing, \"none\", \"full\", \"min\", \"max\", \"fit\", \"prose\", {\n screen: [isTshirtSize]\n }, isTshirtSize]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: [isArbitraryValue, spacing, \"auto\", \"min\", \"max\", \"fit\", \"svh\", \"lvh\", \"dvh\"]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n \"min-h\": [{\n \"min-h\": [isArbitraryValue, spacing, \"min\", \"max\", \"fit\", \"svh\", \"lvh\", \"dvh\"]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n \"max-h\": [{\n \"max-h\": [isArbitraryValue, spacing, \"min\", \"max\", \"fit\", \"svh\", \"lvh\", \"dvh\"]\n }],\n /**\n * Size\n * @see https://tailwindcss.com/docs/size\n */\n size: [{\n size: [isArbitraryValue, spacing, \"auto\", \"min\", \"max\", \"fit\"]\n }],\n // Typography\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n \"font-size\": [{\n text: [\"base\", isTshirtSize, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n \"font-smoothing\": [\"antialiased\", \"subpixel-antialiased\"],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n \"font-style\": [\"italic\", \"not-italic\"],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n \"font-weight\": [{\n font: [\"thin\", \"extralight\", \"light\", \"normal\", \"medium\", \"semibold\", \"bold\", \"extrabold\", \"black\", isArbitraryNumber]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n \"font-family\": [{\n font: [isAny]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n \"fvn-normal\": [\"normal-nums\"],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n \"fvn-ordinal\": [\"ordinal\"],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n \"fvn-slashed-zero\": [\"slashed-zero\"],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n \"fvn-figure\": [\"lining-nums\", \"oldstyle-nums\"],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n \"fvn-spacing\": [\"proportional-nums\", \"tabular-nums\"],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n \"fvn-fraction\": [\"diagonal-fractions\", \"stacked-fractions\"],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [\"tighter\", \"tight\", \"normal\", \"wide\", \"wider\", \"widest\", isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n \"line-clamp\": [{\n \"line-clamp\": [\"none\", isNumber, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [\"none\", \"tight\", \"snug\", \"normal\", \"relaxed\", \"loose\", isLength, isArbitraryValue]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n \"list-image\": [{\n \"list-image\": [\"none\", isArbitraryValue]\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n \"list-style-type\": [{\n list: [\"none\", \"disc\", \"decimal\", isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n \"list-style-position\": [{\n list: [\"inside\", \"outside\"]\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/placeholder-color\n */\n \"placeholder-color\": [{\n placeholder: [colors]\n }],\n /**\n * Placeholder Opacity\n * @see https://tailwindcss.com/docs/placeholder-opacity\n */\n \"placeholder-opacity\": [{\n \"placeholder-opacity\": [opacity]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n \"text-alignment\": [{\n text: [\"left\", \"center\", \"right\", \"justify\", \"start\", \"end\"]\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n \"text-color\": [{\n text: [colors]\n }],\n /**\n * Text Opacity\n * @see https://tailwindcss.com/docs/text-opacity\n */\n \"text-opacity\": [{\n \"text-opacity\": [opacity]\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n \"text-decoration\": [\"underline\", \"overline\", \"line-through\", \"no-underline\"],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n \"text-decoration-style\": [{\n decoration: [...getLineStyles(), \"wavy\"]\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n \"text-decoration-thickness\": [{\n decoration: [\"auto\", \"from-font\", isLength, isArbitraryLength]\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n \"underline-offset\": [{\n \"underline-offset\": [\"auto\", isLength, isArbitraryValue]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n \"text-decoration-color\": [{\n decoration: [colors]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n \"text-transform\": [\"uppercase\", \"lowercase\", \"capitalize\", \"normal-case\"],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n \"text-overflow\": [\"truncate\", \"text-ellipsis\", \"text-clip\"],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n \"text-wrap\": [{\n text: [\"wrap\", \"nowrap\", \"balance\", \"pretty\"]\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: getSpacingWithArbitrary()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n \"vertical-align\": [{\n align: [\"baseline\", \"top\", \"middle\", \"bottom\", \"text-top\", \"text-bottom\", \"sub\", \"super\", isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: [\"normal\", \"nowrap\", \"pre\", \"pre-line\", \"pre-wrap\", \"break-spaces\"]\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: [\"normal\", \"words\", \"all\", \"keep\"]\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: [\"none\", \"manual\", \"auto\"]\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: [\"none\", isArbitraryValue]\n }],\n // Backgrounds\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n \"bg-attachment\": [{\n bg: [\"fixed\", \"local\", \"scroll\"]\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n \"bg-clip\": [{\n \"bg-clip\": [\"border\", \"padding\", \"content\", \"text\"]\n }],\n /**\n * Background Opacity\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/background-opacity\n */\n \"bg-opacity\": [{\n \"bg-opacity\": [opacity]\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n \"bg-origin\": [{\n \"bg-origin\": [\"border\", \"padding\", \"content\"]\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n \"bg-position\": [{\n bg: [...getPositions(), isArbitraryPosition]\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n \"bg-repeat\": [{\n bg: [\"no-repeat\", {\n repeat: [\"\", \"x\", \"y\", \"round\", \"space\"]\n }]\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n \"bg-size\": [{\n bg: [\"auto\", \"cover\", \"contain\", isArbitrarySize]\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n \"bg-image\": [{\n bg: [\"none\", {\n \"gradient-to\": [\"t\", \"tr\", \"r\", \"br\", \"b\", \"bl\", \"l\", \"tl\"]\n }, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n \"bg-color\": [{\n bg: [colors]\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n \"gradient-from-pos\": [{\n from: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n \"gradient-via-pos\": [{\n via: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n \"gradient-to-pos\": [{\n to: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n \"gradient-from\": [{\n from: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n \"gradient-via\": [{\n via: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n \"gradient-to\": [{\n to: [gradientColorStops]\n }],\n // Borders\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: [borderRadius]\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-s\": [{\n \"rounded-s\": [borderRadius]\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-e\": [{\n \"rounded-e\": [borderRadius]\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-t\": [{\n \"rounded-t\": [borderRadius]\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-r\": [{\n \"rounded-r\": [borderRadius]\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-b\": [{\n \"rounded-b\": [borderRadius]\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-l\": [{\n \"rounded-l\": [borderRadius]\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-ss\": [{\n \"rounded-ss\": [borderRadius]\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-se\": [{\n \"rounded-se\": [borderRadius]\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-ee\": [{\n \"rounded-ee\": [borderRadius]\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-es\": [{\n \"rounded-es\": [borderRadius]\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-tl\": [{\n \"rounded-tl\": [borderRadius]\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-tr\": [{\n \"rounded-tr\": [borderRadius]\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-br\": [{\n \"rounded-br\": [borderRadius]\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-bl\": [{\n \"rounded-bl\": [borderRadius]\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w\": [{\n border: [borderWidth]\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-x\": [{\n \"border-x\": [borderWidth]\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-y\": [{\n \"border-y\": [borderWidth]\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-s\": [{\n \"border-s\": [borderWidth]\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-e\": [{\n \"border-e\": [borderWidth]\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-t\": [{\n \"border-t\": [borderWidth]\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-r\": [{\n \"border-r\": [borderWidth]\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-b\": [{\n \"border-b\": [borderWidth]\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-l\": [{\n \"border-l\": [borderWidth]\n }],\n /**\n * Border Opacity\n * @see https://tailwindcss.com/docs/border-opacity\n */\n \"border-opacity\": [{\n \"border-opacity\": [opacity]\n }],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n \"border-style\": [{\n border: [...getLineStyles(), \"hidden\"]\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/divide-width\n */\n \"divide-x\": [{\n \"divide-x\": [borderWidth]\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n \"divide-x-reverse\": [\"divide-x-reverse\"],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/divide-width\n */\n \"divide-y\": [{\n \"divide-y\": [borderWidth]\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n \"divide-y-reverse\": [\"divide-y-reverse\"],\n /**\n * Divide Opacity\n * @see https://tailwindcss.com/docs/divide-opacity\n */\n \"divide-opacity\": [{\n \"divide-opacity\": [opacity]\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/divide-style\n */\n \"divide-style\": [{\n divide: getLineStyles()\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color\": [{\n border: [borderColor]\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color-x\": [{\n \"border-x\": [borderColor]\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color-y\": [{\n \"border-y\": [borderColor]\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color-s\": [{\n \"border-s\": [borderColor]\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color-e\": [{\n \"border-e\": [borderColor]\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color-t\": [{\n \"border-t\": [borderColor]\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color-r\": [{\n \"border-r\": [borderColor]\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color-b\": [{\n \"border-b\": [borderColor]\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color-l\": [{\n \"border-l\": [borderColor]\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n \"divide-color\": [{\n divide: [borderColor]\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n \"outline-style\": [{\n outline: [\"\", ...getLineStyles()]\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n \"outline-offset\": [{\n \"outline-offset\": [isLength, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n \"outline-w\": [{\n outline: [isLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n \"outline-color\": [{\n outline: [colors]\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/ring-width\n */\n \"ring-w\": [{\n ring: getLengthWithEmptyAndArbitrary()\n }],\n /**\n * Ring Width Inset\n * @see https://tailwindcss.com/docs/ring-width\n */\n \"ring-w-inset\": [\"ring-inset\"],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/ring-color\n */\n \"ring-color\": [{\n ring: [colors]\n }],\n /**\n * Ring Opacity\n * @see https://tailwindcss.com/docs/ring-opacity\n */\n \"ring-opacity\": [{\n \"ring-opacity\": [opacity]\n }],\n /**\n * Ring Offset Width\n * @see https://tailwindcss.com/docs/ring-offset-width\n */\n \"ring-offset-w\": [{\n \"ring-offset\": [isLength, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://tailwindcss.com/docs/ring-offset-color\n */\n \"ring-offset-color\": [{\n \"ring-offset\": [colors]\n }],\n // Effects\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\"\", \"inner\", \"none\", isTshirtSize, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow-color\n */\n \"shadow-color\": [{\n shadow: [isAny]\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [opacity]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n \"mix-blend\": [{\n \"mix-blend\": [...getBlendModes(), \"plus-lighter\", \"plus-darker\"]\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n \"bg-blend\": [{\n \"bg-blend\": getBlendModes()\n }],\n // Filters\n /**\n * Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\"\", \"none\"]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: [blur]\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [brightness]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [contrast]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n \"drop-shadow\": [{\n \"drop-shadow\": [\"\", \"none\", isTshirtSize, isArbitraryValue]\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: [grayscale]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n \"hue-rotate\": [{\n \"hue-rotate\": [hueRotate]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: [invert]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [saturate]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: [sepia]\n }],\n /**\n * Backdrop Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n \"backdrop-filter\": [{\n \"backdrop-filter\": [\"\", \"none\"]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n \"backdrop-blur\": [{\n \"backdrop-blur\": [blur]\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n \"backdrop-brightness\": [{\n \"backdrop-brightness\": [brightness]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n \"backdrop-contrast\": [{\n \"backdrop-contrast\": [contrast]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n \"backdrop-grayscale\": [{\n \"backdrop-grayscale\": [grayscale]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n \"backdrop-hue-rotate\": [{\n \"backdrop-hue-rotate\": [hueRotate]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n \"backdrop-invert\": [{\n \"backdrop-invert\": [invert]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n \"backdrop-opacity\": [{\n \"backdrop-opacity\": [opacity]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n \"backdrop-saturate\": [{\n \"backdrop-saturate\": [saturate]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n \"backdrop-sepia\": [{\n \"backdrop-sepia\": [sepia]\n }],\n // Tables\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n \"border-collapse\": [{\n border: [\"collapse\", \"separate\"]\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n \"border-spacing\": [{\n \"border-spacing\": [borderSpacing]\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n \"border-spacing-x\": [{\n \"border-spacing-x\": [borderSpacing]\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n \"border-spacing-y\": [{\n \"border-spacing-y\": [borderSpacing]\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n \"table-layout\": [{\n table: [\"auto\", \"fixed\"]\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: [\"top\", \"bottom\"]\n }],\n // Transitions and Animation\n /**\n * Tranisition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: [\"none\", \"all\", \"\", \"colors\", \"opacity\", \"shadow\", \"transform\", isArbitraryValue]\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: getNumberAndArbitrary()\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: [\"linear\", \"in\", \"out\", \"in-out\", isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: getNumberAndArbitrary()\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: [\"none\", \"spin\", \"ping\", \"pulse\", \"bounce\", isArbitraryValue]\n }],\n // Transforms\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [\"\", \"gpu\", \"none\"]\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: [scale]\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n \"scale-x\": [{\n \"scale-x\": [scale]\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n \"scale-y\": [{\n \"scale-y\": [scale]\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: [isInteger, isArbitraryValue]\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n \"translate-x\": [{\n \"translate-x\": [translate]\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n \"translate-y\": [{\n \"translate-y\": [translate]\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n \"skew-x\": [{\n \"skew-x\": [skew]\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n \"skew-y\": [{\n \"skew-y\": [skew]\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n \"transform-origin\": [{\n origin: [\"center\", \"top\", \"top-right\", \"right\", \"bottom-right\", \"bottom\", \"bottom-left\", \"left\", \"top-left\", isArbitraryValue]\n }],\n // Interactivity\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: [\"auto\", colors]\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: [\"none\", \"auto\"]\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: [\"auto\", \"default\", \"pointer\", \"wait\", \"text\", \"move\", \"help\", \"not-allowed\", \"none\", \"context-menu\", \"progress\", \"cell\", \"crosshair\", \"vertical-text\", \"alias\", \"copy\", \"no-drop\", \"grab\", \"grabbing\", \"all-scroll\", \"col-resize\", \"row-resize\", \"n-resize\", \"e-resize\", \"s-resize\", \"w-resize\", \"ne-resize\", \"nw-resize\", \"se-resize\", \"sw-resize\", \"ew-resize\", \"ns-resize\", \"nesw-resize\", \"nwse-resize\", \"zoom-in\", \"zoom-out\", isArbitraryValue]\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n \"caret-color\": [{\n caret: [colors]\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n \"pointer-events\": [{\n \"pointer-events\": [\"none\", \"auto\"]\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: [\"none\", \"y\", \"x\", \"\"]\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n \"scroll-behavior\": [{\n scroll: [\"auto\", \"smooth\"]\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-m\": [{\n \"scroll-m\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-mx\": [{\n \"scroll-mx\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-my\": [{\n \"scroll-my\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-ms\": [{\n \"scroll-ms\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-me\": [{\n \"scroll-me\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-mt\": [{\n \"scroll-mt\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-mr\": [{\n \"scroll-mr\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-mb\": [{\n \"scroll-mb\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-ml\": [{\n \"scroll-ml\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-p\": [{\n \"scroll-p\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-px\": [{\n \"scroll-px\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-py\": [{\n \"scroll-py\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-ps\": [{\n \"scroll-ps\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-pe\": [{\n \"scroll-pe\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-pt\": [{\n \"scroll-pt\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-pr\": [{\n \"scroll-pr\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-pb\": [{\n \"scroll-pb\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-pl\": [{\n \"scroll-pl\": getSpacingWithArbitrary()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n \"snap-align\": [{\n snap: [\"start\", \"end\", \"center\", \"align-none\"]\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n \"snap-stop\": [{\n snap: [\"normal\", \"always\"]\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n \"snap-type\": [{\n snap: [\"none\", \"x\", \"y\", \"both\"]\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n \"snap-strictness\": [{\n snap: [\"mandatory\", \"proximity\"]\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: [\"auto\", \"none\", \"manipulation\"]\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n \"touch-x\": [{\n \"touch-pan\": [\"x\", \"left\", \"right\"]\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n \"touch-y\": [{\n \"touch-pan\": [\"y\", \"up\", \"down\"]\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n \"touch-pz\": [\"touch-pinch-zoom\"],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: [\"none\", \"text\", \"all\", \"auto\"]\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n \"will-change\": [{\n \"will-change\": [\"auto\", \"scroll\", \"contents\", \"transform\", isArbitraryValue]\n }],\n // SVG\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: [colors, \"none\"]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n \"stroke-w\": [{\n stroke: [isLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: [colors, \"none\"]\n }],\n // Accessibility\n /**\n * Screen Readers\n * @see https://tailwindcss.com/docs/screen-readers\n */\n sr: [\"sr-only\", \"not-sr-only\"],\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n \"forced-color-adjust\": [{\n \"forced-color-adjust\": [\"auto\", \"none\"]\n }]\n },\n conflictingClassGroups: {\n overflow: [\"overflow-x\", \"overflow-y\"],\n overscroll: [\"overscroll-x\", \"overscroll-y\"],\n inset: [\"inset-x\", \"inset-y\", \"start\", \"end\", \"top\", \"right\", \"bottom\", \"left\"],\n \"inset-x\": [\"right\", \"left\"],\n \"inset-y\": [\"top\", \"bottom\"],\n flex: [\"basis\", \"grow\", \"shrink\"],\n gap: [\"gap-x\", \"gap-y\"],\n p: [\"px\", \"py\", \"ps\", \"pe\", \"pt\", \"pr\", \"pb\", \"pl\"],\n px: [\"pr\", \"pl\"],\n py: [\"pt\", \"pb\"],\n m: [\"mx\", \"my\", \"ms\", \"me\", \"mt\", \"mr\", \"mb\", \"ml\"],\n mx: [\"mr\", \"ml\"],\n my: [\"mt\", \"mb\"],\n size: [\"w\", \"h\"],\n \"font-size\": [\"leading\"],\n \"fvn-normal\": [\"fvn-ordinal\", \"fvn-slashed-zero\", \"fvn-figure\", \"fvn-spacing\", \"fvn-fraction\"],\n \"fvn-ordinal\": [\"fvn-normal\"],\n \"fvn-slashed-zero\": [\"fvn-normal\"],\n \"fvn-figure\": [\"fvn-normal\"],\n \"fvn-spacing\": [\"fvn-normal\"],\n \"fvn-fraction\": [\"fvn-normal\"],\n \"line-clamp\": [\"display\", \"overflow\"],\n rounded: [\"rounded-s\", \"rounded-e\", \"rounded-t\", \"rounded-r\", \"rounded-b\", \"rounded-l\", \"rounded-ss\", \"rounded-se\", \"rounded-ee\", \"rounded-es\", \"rounded-tl\", \"rounded-tr\", \"rounded-br\", \"rounded-bl\"],\n \"rounded-s\": [\"rounded-ss\", \"rounded-es\"],\n \"rounded-e\": [\"rounded-se\", \"rounded-ee\"],\n \"rounded-t\": [\"rounded-tl\", \"rounded-tr\"],\n \"rounded-r\": [\"rounded-tr\", \"rounded-br\"],\n \"rounded-b\": [\"rounded-br\", \"rounded-bl\"],\n \"rounded-l\": [\"rounded-tl\", \"rounded-bl\"],\n \"border-spacing\": [\"border-spacing-x\", \"border-spacing-y\"],\n \"border-w\": [\"border-w-s\", \"border-w-e\", \"border-w-t\", \"border-w-r\", \"border-w-b\", \"border-w-l\"],\n \"border-w-x\": [\"border-w-r\", \"border-w-l\"],\n \"border-w-y\": [\"border-w-t\", \"border-w-b\"],\n \"border-color\": [\"border-color-s\", \"border-color-e\", \"border-color-t\", \"border-color-r\", \"border-color-b\", \"border-color-l\"],\n \"border-color-x\": [\"border-color-r\", \"border-color-l\"],\n \"border-color-y\": [\"border-color-t\", \"border-color-b\"],\n \"scroll-m\": [\"scroll-mx\", \"scroll-my\", \"scroll-ms\", \"scroll-me\", \"scroll-mt\", \"scroll-mr\", \"scroll-mb\", \"scroll-ml\"],\n \"scroll-mx\": [\"scroll-mr\", \"scroll-ml\"],\n \"scroll-my\": [\"scroll-mt\", \"scroll-mb\"],\n \"scroll-p\": [\"scroll-px\", \"scroll-py\", \"scroll-ps\", \"scroll-pe\", \"scroll-pt\", \"scroll-pr\", \"scroll-pb\", \"scroll-pl\"],\n \"scroll-px\": [\"scroll-pr\", \"scroll-pl\"],\n \"scroll-py\": [\"scroll-pt\", \"scroll-pb\"],\n touch: [\"touch-x\", \"touch-y\", \"touch-pz\"],\n \"touch-x\": [\"touch\"],\n \"touch-y\": [\"touch\"],\n \"touch-pz\": [\"touch\"]\n },\n conflictingClassGroupModifiers: {\n \"font-size\": [\"leading\"]\n }\n };\n};\nvar twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);\n\n// src/web/utils/helpers.ts\nvar cn = (...inputs) => {\n return twMerge(clsx(inputs));\n};\nvar isFirefox = typeof navigator !== \"undefined\" && navigator.userAgent.includes(\"Firefox\");\nvar throttle = (callback, delay) => {\n let lastCall = 0;\n return (e) => {\n const now = Date.now();\n if (now - lastCall >= delay) {\n lastCall = now;\n return callback(e);\n }\n return void 0;\n };\n};\nvar readLocalStorage = (storageKey) => {\n if (!IS_CLIENT) return null;\n try {\n const stored = localStorage.getItem(storageKey);\n return stored ? JSON.parse(stored) : null;\n } catch {\n return null;\n }\n};\nvar saveLocalStorage = (storageKey, state) => {\n if (!IS_CLIENT) return;\n try {\n window.localStorage.setItem(storageKey, JSON.stringify(state));\n } catch {\n }\n};\nvar removeLocalStorage = (storageKey) => {\n if (!IS_CLIENT) return;\n try {\n window.localStorage.removeItem(storageKey);\n } catch {\n }\n};\nvar LazyComponentTag = 24;\nvar ProfilerTag = 12;\nvar getExtendedDisplayName = (fiber) => {\n if (!fiber) {\n return {\n name: \"Unknown\",\n wrappers: [],\n wrapperTypes: []\n };\n }\n const { tag, type, elementType } = fiber;\n let name = getDisplayName(type);\n const wrappers = [];\n const wrapperTypes = [];\n if (hasMemoCache(fiber) || tag === SimpleMemoComponentTag || tag === MemoComponentTag || type?.$$typeof === Symbol.for(\"react.memo\") || elementType?.$$typeof === Symbol.for(\"react.memo\")) {\n const compiler = hasMemoCache(fiber);\n wrapperTypes.push({\n type: \"memo\",\n title: compiler ? \"This component has been auto-memoized by the React Compiler.\" : \"Memoized component that skips re-renders if props are the same\",\n compiler\n });\n }\n if (tag === LazyComponentTag) {\n wrapperTypes.push({\n type: \"lazy\",\n title: \"Lazily loaded component that supports code splitting\"\n });\n }\n if (tag === SuspenseComponentTag) {\n wrapperTypes.push({\n type: \"suspense\",\n title: \"Component that can suspend while content is loading\"\n });\n }\n if (tag === ProfilerTag) {\n wrapperTypes.push({\n type: \"profiler\",\n title: \"Component that measures rendering performance\"\n });\n }\n if (typeof name === \"string\") {\n const wrapperRegex = /^(\\w+)\\((.*)\\)$/;\n let currentName = name;\n while (wrapperRegex.test(currentName)) {\n const match = currentName.match(wrapperRegex);\n if (match?.[1] && match?.[2]) {\n wrappers.unshift(match[1]);\n currentName = match[2];\n } else {\n break;\n }\n }\n name = currentName;\n }\n return {\n name: name || \"Unknown\",\n wrappers,\n wrapperTypes\n };\n};\n\n// src/web/state.ts\nvar signalIsSettingsOpen = /* @__PURE__ */ signal(false);\nvar signalRefWidget = /* @__PURE__ */ signal(\n null\n);\nvar defaultWidgetConfig = {\n corner: \"bottom-right\",\n dimensions: {\n isFullWidth: false,\n isFullHeight: false,\n width: MIN_SIZE.width,\n height: MIN_SIZE.height,\n position: { x: SAFE_AREA, y: SAFE_AREA }\n },\n lastDimensions: {\n isFullWidth: false,\n isFullHeight: false,\n width: MIN_SIZE.width,\n height: MIN_SIZE.height,\n position: { x: SAFE_AREA, y: SAFE_AREA }\n },\n componentsTree: {\n width: MIN_CONTAINER_WIDTH\n }\n};\nvar getInitialWidgetConfig = () => {\n const stored = readLocalStorage(LOCALSTORAGE_KEY);\n if (!stored) {\n saveLocalStorage(LOCALSTORAGE_KEY, {\n corner: defaultWidgetConfig.corner,\n dimensions: defaultWidgetConfig.dimensions,\n lastDimensions: defaultWidgetConfig.lastDimensions,\n componentsTree: defaultWidgetConfig.componentsTree\n });\n return defaultWidgetConfig;\n }\n return {\n corner: stored.corner ?? defaultWidgetConfig.corner,\n dimensions: stored.dimensions ?? defaultWidgetConfig.dimensions,\n lastDimensions: stored.lastDimensions ?? stored.dimensions ?? defaultWidgetConfig.lastDimensions,\n componentsTree: stored.componentsTree ?? defaultWidgetConfig.componentsTree\n };\n};\nvar signalWidget = signal(getInitialWidgetConfig());\nvar updateDimensions = () => {\n if (!IS_CLIENT) return;\n const { dimensions } = signalWidget.value;\n const { width, height, position } = dimensions;\n signalWidget.value = {\n ...signalWidget.value,\n dimensions: {\n isFullWidth: width >= window.innerWidth - SAFE_AREA * 2,\n isFullHeight: height >= window.innerHeight - SAFE_AREA * 2,\n width,\n height,\n position\n }\n };\n};\nvar signalWidgetViews = signal({\n view: \"none\"\n});\nvar storedCollapsed = readLocalStorage(\n LOCALSTORAGE_COLLAPSED_KEY\n);\nvar signalWidgetCollapsed = /* @__PURE__ */ signal(storedCollapsed ?? null);\n\n// src/web/utils/preact/constant.ts\nimport {\n createElement\n} from \"preact\";\nfunction CONSTANT_UPDATE() {\n return false;\n}\nfunction constant(Component3) {\n function Memoed(props) {\n this.shouldComponentUpdate = CONSTANT_UPDATE;\n return createElement(Component3, props);\n }\n Memoed.displayName = `Memo(${Component3.displayName || Component3.name})`;\n Memoed.prototype.isReactComponent = true;\n Memoed._forwarded = true;\n return Memoed;\n}\n\n// src/web/views/inspector/components-tree/index.tsx\nimport {\n useCallback as useCallback2,\n useEffect as useEffect2,\n useMemo as useMemo2,\n useRef as useRef2,\n useState as useState2\n} from \"preact/hooks\";\n\n// src/web/hooks/use-virtual-list.ts\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from \"preact/hooks\";\nvar useVirtualList = (options) => {\n const { count, getScrollElement, estimateSize, overscan = 5 } = options;\n const [scrollTop, setScrollTop] = useState(0);\n const [containerHeight, setContainerHeight] = useState(0);\n const refResizeObserver = useRef();\n const refScrollElement = useRef(null);\n const refRafId = useRef(null);\n const itemHeight = estimateSize();\n const updateContainer = useCallback((entries) => {\n if (!refScrollElement.current) return;\n const height = entries?.[0]?.contentRect.height ?? refScrollElement.current.getBoundingClientRect().height;\n setContainerHeight(height);\n }, []);\n const debouncedUpdateContainer = useCallback(() => {\n if (refRafId.current !== null) {\n cancelAnimationFrame(refRafId.current);\n }\n refRafId.current = requestAnimationFrame(() => {\n updateContainer();\n refRafId.current = null;\n });\n }, [updateContainer]);\n useEffect(() => {\n const element = getScrollElement();\n if (!element) return;\n refScrollElement.current = element;\n const handleScroll = () => {\n if (!refScrollElement.current) return;\n setScrollTop(refScrollElement.current.scrollTop);\n };\n updateContainer();\n if (!refResizeObserver.current) {\n refResizeObserver.current = new ResizeObserver(() => {\n debouncedUpdateContainer();\n });\n }\n refResizeObserver.current.observe(element);\n element.addEventListener(\"scroll\", handleScroll, { passive: true });\n const mutationObserver = new MutationObserver(debouncedUpdateContainer);\n mutationObserver.observe(element, {\n attributes: true,\n childList: true,\n subtree: true\n });\n return () => {\n element.removeEventListener(\"scroll\", handleScroll);\n if (refResizeObserver.current) {\n refResizeObserver.current.disconnect();\n }\n mutationObserver.disconnect();\n if (refRafId.current !== null) {\n cancelAnimationFrame(refRafId.current);\n }\n };\n }, [getScrollElement, updateContainer, debouncedUpdateContainer]);\n const visibleRange = useMemo(() => {\n const start2 = Math.floor(scrollTop / itemHeight);\n const visibleCount = Math.ceil(containerHeight / itemHeight);\n return {\n start: Math.max(0, start2 - overscan),\n end: Math.min(count, start2 + visibleCount + overscan)\n };\n }, [scrollTop, itemHeight, containerHeight, count, overscan]);\n const items = useMemo(() => {\n const virtualItems = [];\n for (let index = visibleRange.start; index < visibleRange.end; index++) {\n virtualItems.push({\n key: index,\n index,\n start: index * itemHeight\n });\n }\n return virtualItems;\n }, [visibleRange, itemHeight]);\n return {\n virtualItems: items,\n totalSize: count * itemHeight,\n scrollTop,\n containerHeight\n };\n};\n\n// src/web/utils/pin.ts\nvar metadata = readLocalStorage(\"react-scann-pinned\");\nvar getFiberPath = (fiber) => {\n const pathSegments = [];\n let currentFiber = fiber;\n while (currentFiber) {\n const elementType = currentFiber.elementType;\n const name = typeof elementType === \"function\" ? elementType.displayName || elementType.name : typeof elementType === \"string\" ? elementType : \"Unknown\";\n const index = currentFiber.index !== void 0 ? `[${currentFiber.index}]` : \"\";\n pathSegments.unshift(`${name}${index}`);\n currentFiber = currentFiber.return ?? null;\n }\n return pathSegments.join(\"::\");\n};\n\n// src/web/views/inspector/states.ts\nimport { signal as signal2 } from \"@preact/signals\";\n\n// src/web/views/inspector/flash-overlay.ts\nvar fadeOutTimers = /* @__PURE__ */ new WeakMap();\nvar trackElementPosition = (element, callback) => {\n const handleScroll = callback.bind(null, element);\n document.addEventListener(\"scroll\", handleScroll, {\n passive: true,\n capture: true\n });\n return () => {\n document.removeEventListener(\"scroll\", handleScroll, { capture: true });\n };\n};\nvar flashManager = {\n activeFlashes: /* @__PURE__ */ new Map(),\n create(container) {\n const existingOverlay = container.querySelector(\n \".react-scan-flash-overlay\"\n );\n const overlay = existingOverlay instanceof HTMLElement ? existingOverlay : (() => {\n const newOverlay = document.createElement(\"div\");\n newOverlay.className = \"react-scan-flash-overlay\";\n container.appendChild(newOverlay);\n const scrollCleanup = trackElementPosition(container, () => {\n if (container.querySelector(\".react-scan-flash-overlay\")) {\n this.create(container);\n }\n });\n this.activeFlashes.set(container, {\n element: container,\n overlay: newOverlay,\n scrollCleanup\n });\n return newOverlay;\n })();\n const existingTimer = fadeOutTimers.get(overlay);\n if (existingTimer) {\n clearTimeout(existingTimer);\n fadeOutTimers.delete(overlay);\n }\n requestAnimationFrame(() => {\n overlay.style.transition = \"none\";\n overlay.style.opacity = \"0.9\";\n const timerId = setTimeout(() => {\n overlay.style.transition = \"opacity 150ms ease-out\";\n overlay.style.opacity = \"0\";\n const cleanupTimer = setTimeout(() => {\n if (overlay.parentNode) {\n overlay.parentNode.removeChild(overlay);\n }\n const entry = this.activeFlashes.get(container);\n if (entry?.scrollCleanup) {\n entry.scrollCleanup();\n }\n this.activeFlashes.delete(container);\n fadeOutTimers.delete(overlay);\n }, 150);\n fadeOutTimers.set(overlay, cleanupTimer);\n }, 300);\n fadeOutTimers.set(overlay, timerId);\n });\n },\n cleanup(container) {\n const entry = this.activeFlashes.get(container);\n if (entry) {\n const existingTimer = fadeOutTimers.get(entry.overlay);\n if (existingTimer) {\n clearTimeout(existingTimer);\n fadeOutTimers.delete(entry.overlay);\n }\n if (entry.overlay.parentNode) {\n entry.overlay.parentNode.removeChild(entry.overlay);\n }\n if (entry.scrollCleanup) {\n entry.scrollCleanup();\n }\n this.activeFlashes.delete(container);\n }\n },\n cleanupAll() {\n for (const [, entry] of this.activeFlashes) {\n this.cleanup(entry.element);\n }\n }\n};\n\n// src/web/views/inspector/states.ts\nvar TIMELINE_MAX_UPDATES = 1e3;\nvar timelineStateDefault = {\n updates: [],\n currentFiber: null,\n totalUpdates: 0,\n windowOffset: 0,\n currentIndex: 0,\n isViewingHistory: false,\n latestFiber: null,\n isVisible: false,\n playbackSpeed: 1\n};\nvar timelineState = signal2(timelineStateDefault);\nvar inspectorUpdateSignal = signal2(0);\nvar pendingUpdates = [];\nvar batchTimeout = null;\nvar batchUpdates = () => {\n if (pendingUpdates.length === 0) return;\n const batchedUpdates = [...pendingUpdates];\n const { updates, totalUpdates, currentIndex, isViewingHistory } = timelineState.value;\n const newUpdates = [...updates];\n let newTotalUpdates = totalUpdates;\n for (const { update } of batchedUpdates) {\n if (newUpdates.length >= TIMELINE_MAX_UPDATES) {\n newUpdates.shift();\n }\n newUpdates.push(update);\n newTotalUpdates++;\n }\n const newWindowOffset = Math.max(0, newTotalUpdates - TIMELINE_MAX_UPDATES);\n let newCurrentIndex;\n if (isViewingHistory) {\n if (currentIndex === totalUpdates - 1) {\n newCurrentIndex = newUpdates.length - 1;\n } else if (currentIndex === 0) {\n newCurrentIndex = 0;\n } else {\n if (newWindowOffset === 0) {\n newCurrentIndex = currentIndex;\n } else {\n newCurrentIndex = currentIndex - 1;\n }\n }\n } else {\n newCurrentIndex = newUpdates.length - 1;\n }\n const lastUpdate = batchedUpdates[batchedUpdates.length - 1];\n timelineState.value = {\n ...timelineState.value,\n latestFiber: lastUpdate.fiber,\n updates: newUpdates,\n totalUpdates: newTotalUpdates,\n windowOffset: newWindowOffset,\n currentIndex: newCurrentIndex,\n isViewingHistory\n };\n pendingUpdates = pendingUpdates.slice(batchedUpdates.length);\n};\nvar timelineActions = {\n showTimeline: () => {\n timelineState.value = {\n ...timelineState.value,\n isVisible: true\n };\n },\n hideTimeline: () => {\n timelineState.value = {\n ...timelineState.value,\n isVisible: false,\n currentIndex: timelineState.value.updates.length - 1\n };\n },\n updateFrame: (index, isViewingHistory) => {\n timelineState.value = {\n ...timelineState.value,\n currentIndex: index,\n isViewingHistory\n };\n },\n updatePlaybackSpeed: (speed) => {\n timelineState.value = {\n ...timelineState.value,\n playbackSpeed: speed\n };\n },\n addUpdate: (update, latestFiber) => {\n pendingUpdates.push({ update, fiber: latestFiber });\n if (!batchTimeout) {\n const processBatch = () => {\n batchUpdates();\n batchTimeout = null;\n if (pendingUpdates.length > 0) {\n batchTimeout = setTimeout(processBatch, 96);\n }\n };\n batchTimeout = setTimeout(processBatch, 96);\n }\n },\n reset: () => {\n if (batchTimeout) {\n clearTimeout(batchTimeout);\n batchTimeout = null;\n }\n pendingUpdates = [];\n timelineState.value = timelineStateDefault;\n }\n};\n\n// src/web/views/inspector/components-tree/state.ts\nimport { signal as signal3 } from \"@preact/signals\";\nvar searchState = signal3({\n query: \"\",\n matches: [],\n currentMatchIndex: -1\n});\nvar signalSkipTreeUpdate = /* @__PURE__ */ signal3(false);\n\n// src/web/views/inspector/components-tree/index.tsx\nimport { Fragment, jsx as jsx2, jsxs as jsxs2 } from \"preact/jsx-runtime\";\nvar flattenTree = (nodes, depth = 0, parentPath = null) => {\n return nodes.reduce((acc, node, index) => {\n const nodePath = node.element ? getFiberPath(node.fiber) : `${parentPath}-${index}`;\n const renderData = node.fiber?.type ? getRenderData(node.fiber) : void 0;\n const flatNode = {\n ...node,\n depth,\n nodeId: nodePath,\n parentId: parentPath,\n fiber: node.fiber,\n renderData\n };\n acc.push(flatNode);\n if (node.children?.length) {\n acc.push(...flattenTree(node.children, depth + 1, nodePath));\n }\n return acc;\n }, []);\n};\nvar getMaxDepth = (nodes) => {\n return nodes.reduce((max, node) => Math.max(max, node.depth), 0);\n};\nvar calculateIndentSize = (containerWidth, maxDepth) => {\n const MIN_INDENT = 0;\n const MAX_INDENT = 24;\n const MIN_TOTAL_INDENT = 24;\n if (maxDepth <= 0) return MAX_INDENT;\n const availableSpace = Math.max(0, containerWidth - MIN_CONTAINER_WIDTH);\n if (availableSpace < MIN_TOTAL_INDENT) return MIN_INDENT;\n const targetTotalIndent = Math.min(\n availableSpace * 0.3,\n maxDepth * MAX_INDENT\n );\n const baseIndent = targetTotalIndent / maxDepth;\n return Math.max(MIN_INDENT, Math.min(MAX_INDENT, baseIndent));\n};\nvar VALID_TYPES = [\"memo\", \"forwardRef\", \"lazy\", \"suspense\"];\nvar parseTypeSearch = (query) => {\n const typeMatch = query.match(/\\[(.*?)\\]/);\n if (!typeMatch) return null;\n const typeSearches = [];\n const parts = typeMatch[1].split(\",\");\n for (const part of parts) {\n const trimmed = part.trim().toLowerCase();\n if (trimmed) typeSearches.push(trimmed);\n }\n return typeSearches;\n};\nvar isValidTypeSearch = (typeSearches) => {\n if (typeSearches.length === 0) return false;\n for (const search of typeSearches) {\n let isValid = false;\n for (const validType of VALID_TYPES) {\n if (validType.toLowerCase().includes(search)) {\n isValid = true;\n break;\n }\n }\n if (!isValid) return false;\n }\n return true;\n};\nvar matchesTypeSearch = (typeSearches, wrapperTypes) => {\n if (typeSearches.length === 0) return true;\n if (!wrapperTypes.length) return false;\n for (const search of typeSearches) {\n let foundMatch = false;\n for (const wrapper of wrapperTypes) {\n if (wrapper.type.toLowerCase().includes(search)) {\n foundMatch = true;\n break;\n }\n }\n if (!foundMatch) return false;\n }\n return true;\n};\nvar useNodeHighlighting = (node, searchValue) => {\n return useMemo2(() => {\n const { query, matches } = searchValue;\n const isMatch = matches.some((match) => match.nodeId === node.nodeId);\n const typeSearches = parseTypeSearch(query) || [];\n const searchQuery = query ? query.replace(/\\[.*?\\]/, \"\").trim() : \"\";\n if (!query || !isMatch) {\n return {\n highlightedText: /* @__PURE__ */ jsx2(\"span\", { className: \"truncate\", children: node.label }),\n typeHighlight: false\n };\n }\n let matchesType = true;\n if (typeSearches.length > 0) {\n if (!node.fiber) {\n matchesType = false;\n } else {\n const { wrapperTypes } = getExtendedDisplayName(node.fiber);\n matchesType = matchesTypeSearch(typeSearches, wrapperTypes);\n }\n }\n let textContent = /* @__PURE__ */ jsx2(\"span\", { className: \"truncate\", children: node.label });\n if (searchQuery) {\n try {\n if (searchQuery.startsWith(\"/\") && searchQuery.endsWith(\"/\")) {\n const pattern = searchQuery.slice(1, -1);\n const regex = new RegExp(`(${pattern})`, \"i\");\n const parts = node.label.split(regex);\n textContent = /* @__PURE__ */ jsx2(\"span\", { className: \"tree-node-search-highlight\", children: parts.map(\n (part, index) => regex.test(part) ? /* @__PURE__ */ jsx2(\n \"span\",\n {\n className: cn(\"regex\", {\n start: regex.test(part) && index === 0,\n middle: regex.test(part) && index % 2 === 1,\n end: regex.test(part) && index === parts.length - 1,\n \"!ml-0\": index === 1\n }),\n children: part\n },\n `${node.nodeId}-${part}`\n ) : part\n ) });\n } else {\n const lowerLabel = node.label.toLowerCase();\n const lowerQuery = searchQuery.toLowerCase();\n const index = lowerLabel.indexOf(lowerQuery);\n if (index >= 0) {\n textContent = /* @__PURE__ */ jsxs2(\"span\", { className: \"tree-node-search-highlight\", children: [\n node.label.slice(0, index),\n /* @__PURE__ */ jsx2(\"span\", { className: \"single\", children: node.label.slice(index, index + searchQuery.length) }),\n node.label.slice(index + searchQuery.length)\n ] });\n }\n }\n } catch {\n }\n }\n return {\n highlightedText: textContent,\n typeHighlight: matchesType && typeSearches.length > 0\n };\n }, [node.label, node.nodeId, node.fiber, searchValue]);\n};\nvar formatTime = (time) => {\n if (time > 0) {\n if (time < 0.1 - Number.EPSILON) {\n return \"< 0.1\";\n }\n if (time < 1e3) {\n return Number(time.toFixed(1)).toString();\n }\n return `${(time / 1e3).toFixed(1)}k`;\n }\n return \"0\";\n};\nvar TreeNodeItem = ({\n node,\n nodeIndex,\n hasChildren,\n isCollapsed,\n handleTreeNodeClick,\n handleTreeNodeToggle,\n searchValue\n}) => {\n const refRenderCount = useRef2(null);\n const refPrevRenderCount = useRef2(node.renderData?.renderCount ?? 0);\n const { highlightedText, typeHighlight } = useNodeHighlighting(\n node,\n searchValue\n );\n useEffect2(() => {\n const currentRenderCount = node.renderData?.renderCount;\n const element = refRenderCount.current;\n if (!element || !refPrevRenderCount.current || !currentRenderCount || refPrevRenderCount.current === currentRenderCount) {\n return;\n }\n element.classList.remove(\"count-flash\");\n void element.offsetWidth;\n element.classList.add(\"count-flash\");\n refPrevRenderCount.current = currentRenderCount;\n }, [node.renderData?.renderCount]);\n const renderTimeInfo = useMemo2(() => {\n if (!node.renderData) return null;\n const { selfTime, totalTime, renderCount } = node.renderData;\n if (!renderCount) {\n return null;\n }\n return /* @__PURE__ */ jsx2(\n \"span\",\n {\n className: cn(\n \"flex items-center gap-x-0.5 ml-1.5\",\n \"text-[10px] text-neutral-400\"\n ),\n children: /* @__PURE__ */ jsxs2(\n \"span\",\n {\n ref: refRenderCount,\n title: `Self time: ${formatTime(selfTime)}ms\nTotal time: ${formatTime(totalTime)}ms`,\n className: \"count-badge\",\n children: [\n \"\\xD7\",\n renderCount\n ]\n }\n )\n }\n );\n }, [node.renderData]);\n const componentTypes = useMemo2(() => {\n if (!node.fiber) return null;\n const { wrapperTypes } = getExtendedDisplayName(node.fiber);\n const firstWrapperType = wrapperTypes[0];\n return /* @__PURE__ */ jsxs2(\n \"span\",\n {\n className: cn(\n \"flex items-center gap-x-1\",\n \"text-[10px] text-neutral-400 tracking-wide\",\n \"overflow-hidden\"\n ),\n children: [\n firstWrapperType && /* @__PURE__ */ jsxs2(Fragment, { children: [\n /* @__PURE__ */ jsx2(\n \"span\",\n {\n title: firstWrapperType?.title,\n className: cn(\n \"rounded py-[1px] px-1\",\n \"bg-neutral-700 text-neutral-300\",\n \"truncate\",\n firstWrapperType.type === \"memo\" && \"bg-[#8e61e3] text-white\",\n typeHighlight && \"bg-yellow-300 text-black\"\n ),\n children: firstWrapperType.type\n },\n firstWrapperType.type\n ),\n firstWrapperType.compiler && /* @__PURE__ */ jsx2(\"span\", { className: \"text-yellow-300 ml-1\", children: \"\\u2728\" })\n ] }),\n wrapperTypes.length > 1 && `\\xD7${wrapperTypes.length}`,\n renderTimeInfo\n ]\n }\n );\n }, [node.fiber, typeHighlight, renderTimeInfo]);\n return /* @__PURE__ */ jsxs2(\n \"button\",\n {\n type: \"button\",\n title: node.title,\n \"data-index\": nodeIndex,\n className: cn(\n \"flex items-center gap-x-1\",\n \"pl-1 pr-2\",\n \"w-full h-7\",\n \"text-left\",\n \"rounded\",\n \"cursor-pointer select-none\"\n ),\n onClick: handleTreeNodeClick,\n children: [\n /* @__PURE__ */ jsx2(\n \"button\",\n {\n type: \"button\",\n \"data-index\": nodeIndex,\n onClick: handleTreeNodeToggle,\n className: cn(\"w-6 h-6 flex items-center justify-center\", \"text-left\"),\n children: hasChildren && /* @__PURE__ */ jsx2(\n Icon,\n {\n name: \"icon-chevron-right\",\n size: 12,\n className: cn(\"transition-transform\", !isCollapsed && \"rotate-90\")\n }\n )\n }\n ),\n highlightedText,\n componentTypes\n ]\n }\n );\n};\nvar ComponentsTree = () => {\n const refContainer = useRef2(null);\n const refMainContainer = useRef2(null);\n const refSearchInputContainer = useRef2(null);\n const refSearchInput = useRef2(null);\n const refSelectedElement = useRef2(null);\n const refMaxTreeDepth = useRef2(0);\n const refIsHovering = useRef2(false);\n const refIsResizing = useRef2(false);\n const refResizeHandle = useRef2(null);\n const [flattenedNodes, setFlattenedNodes] = useState2([]);\n const [collapsedNodes, setCollapsedNodes] = useState2(/* @__PURE__ */ new Set());\n const [selectedIndex, setSelectedIndex] = useState2(\n void 0\n );\n const [searchValue, setSearchValue] = useState2(searchState.value);\n const visibleNodes = useMemo2(() => {\n const visible = [];\n const nodes = flattenedNodes;\n const nodeMap = new Map(nodes.map((node) => [node.nodeId, node]));\n for (const node of nodes) {\n let isVisible = true;\n let currentNode = node;\n while (currentNode.parentId) {\n const parent = nodeMap.get(currentNode.parentId);\n if (!parent) break;\n if (collapsedNodes.has(parent.nodeId)) {\n isVisible = false;\n break;\n }\n currentNode = parent;\n }\n if (isVisible) {\n visible.push(node);\n }\n }\n return visible;\n }, [collapsedNodes, flattenedNodes]);\n const ITEM_HEIGHT = 28;\n const { virtualItems, totalSize } = useVirtualList({\n count: visibleNodes.length,\n getScrollElement: () => refContainer.current,\n estimateSize: () => ITEM_HEIGHT,\n overscan: 5\n });\n const handleElementClick = useCallback2(\n (element) => {\n refIsHovering.current = true;\n refSearchInput.current?.blur();\n signalSkipTreeUpdate.value = true;\n const { parentCompositeFiber } = getCompositeComponentFromElement(element);\n if (!parentCompositeFiber) return;\n Store.inspectState.value = {\n kind: \"focused\",\n focusedDomElement: element,\n fiber: parentCompositeFiber\n };\n const nodeIndex = visibleNodes.findIndex(\n (node) => node.element === element\n );\n if (nodeIndex !== -1) {\n setSelectedIndex(nodeIndex);\n const itemTop = nodeIndex * ITEM_HEIGHT;\n const container = refContainer.current;\n if (container) {\n const containerHeight = container.clientHeight;\n const scrollTop = container.scrollTop;\n if (itemTop < scrollTop || itemTop + ITEM_HEIGHT > scrollTop + containerHeight) {\n container.scrollTo({\n top: Math.max(0, itemTop - containerHeight / 2),\n behavior: \"instant\"\n });\n }\n }\n }\n },\n [visibleNodes]\n );\n const handleTreeNodeClick = useCallback2(\n (e) => {\n const target = e.currentTarget;\n const index = Number(target.dataset.index);\n if (Number.isNaN(index)) return;\n const element = visibleNodes[index].element;\n if (!element) return;\n handleElementClick(element);\n },\n [visibleNodes, handleElementClick]\n );\n const handleToggle = useCallback2((nodeId) => {\n setCollapsedNodes((prev) => {\n const next = new Set(prev);\n if (next.has(nodeId)) {\n next.delete(nodeId);\n } else {\n next.add(nodeId);\n }\n return next;\n });\n }, []);\n const handleTreeNodeToggle = useCallback2(\n (e) => {\n e.stopPropagation();\n const target = e.target;\n const index = Number(target.dataset.index);\n if (Number.isNaN(index)) return;\n const nodeId = visibleNodes[index].nodeId;\n handleToggle(nodeId);\n },\n [visibleNodes, handleToggle]\n );\n const handleOnChangeSearch = useCallback2(\n (query) => {\n refSearchInputContainer.current?.classList.remove(\"!border-red-500\");\n const matches = [];\n if (!query) {\n searchState.value = { query, matches, currentMatchIndex: -1 };\n return;\n }\n if (query.includes(\"[\") && !query.includes(\"]\")) {\n if (query.length > query.indexOf(\"[\") + 1) {\n refSearchInputContainer.current?.classList.add(\"!border-red-500\");\n return;\n }\n }\n const typeSearches = parseTypeSearch(query) || [];\n if (query.includes(\"[\")) {\n if (!isValidTypeSearch(typeSearches)) {\n refSearchInputContainer.current?.classList.add(\"!border-red-500\");\n return;\n }\n }\n const searchQuery = query.replace(/\\[.*?\\]/, \"\").trim();\n const isRegex = /^\\/.*\\/$/.test(searchQuery);\n let matchesLabel = (_label) => false;\n if (searchQuery.startsWith(\"/\") && !isRegex) {\n if (searchQuery.length > 1) {\n refSearchInputContainer.current?.classList.add(\"!border-red-500\");\n return;\n }\n }\n if (isRegex) {\n try {\n const pattern = searchQuery.slice(1, -1);\n const regex = new RegExp(pattern, \"i\");\n matchesLabel = (label) => regex.test(label);\n } catch {\n refSearchInputContainer.current?.classList.add(\"!border-red-500\");\n return;\n }\n } else if (searchQuery) {\n const lowerQuery = searchQuery.toLowerCase();\n matchesLabel = (label) => label.toLowerCase().includes(lowerQuery);\n }\n for (const node of flattenedNodes) {\n let matchesSearch = true;\n if (searchQuery) {\n matchesSearch = matchesLabel(node.label);\n }\n if (matchesSearch && typeSearches.length > 0) {\n if (!node.fiber) {\n matchesSearch = false;\n } else {\n const { wrapperTypes } = getExtendedDisplayName(node.fiber);\n matchesSearch = matchesTypeSearch(typeSearches, wrapperTypes);\n }\n }\n if (matchesSearch) {\n matches.push(node);\n }\n }\n searchState.value = {\n query,\n matches,\n currentMatchIndex: matches.length > 0 ? 0 : -1\n };\n if (matches.length > 0) {\n const firstMatch = matches[0];\n const nodeIndex = visibleNodes.findIndex(\n (node) => node.nodeId === firstMatch.nodeId\n );\n if (nodeIndex !== -1) {\n const itemTop = nodeIndex * ITEM_HEIGHT;\n const container = refContainer.current;\n if (container) {\n const containerHeight = container.clientHeight;\n container.scrollTo({\n top: Math.max(0, itemTop - containerHeight / 2),\n behavior: \"instant\"\n });\n }\n }\n }\n },\n [flattenedNodes, visibleNodes]\n );\n const handleInputChange = useCallback2(\n (e) => {\n const target = e.currentTarget;\n if (!target) return;\n handleOnChangeSearch(target.value);\n },\n [handleOnChangeSearch]\n );\n const navigateSearch = useCallback2(\n (direction) => {\n const { matches, currentMatchIndex } = searchState.value;\n if (matches.length === 0) return;\n const newIndex = direction === \"next\" ? (currentMatchIndex + 1) % matches.length : (currentMatchIndex - 1 + matches.length) % matches.length;\n searchState.value = {\n ...searchState.value,\n currentMatchIndex: newIndex\n };\n const currentMatch = matches[newIndex];\n const nodeIndex = visibleNodes.findIndex(\n (node) => node.nodeId === currentMatch.nodeId\n );\n if (nodeIndex !== -1) {\n setSelectedIndex(nodeIndex);\n const itemTop = nodeIndex * ITEM_HEIGHT;\n const container = refContainer.current;\n if (container) {\n const containerHeight = container.clientHeight;\n container.scrollTo({\n top: Math.max(0, itemTop - containerHeight / 2),\n behavior: \"instant\"\n });\n }\n }\n },\n [visibleNodes]\n );\n const updateContainerWidths = useCallback2((width) => {\n if (refMainContainer.current) {\n refMainContainer.current.style.width = `${width}px`;\n }\n if (refContainer.current) {\n refContainer.current.style.width = `${width}px`;\n const indentSize = calculateIndentSize(width, refMaxTreeDepth.current);\n refContainer.current.style.setProperty(\n \"--indentation-size\",\n `${indentSize}px`\n );\n }\n }, []);\n const updateResizeDirection = useCallback2((width) => {\n if (!refResizeHandle.current) return;\n const parentWidth = signalWidget.value.dimensions.width;\n const maxWidth = Math.floor(parentWidth - MIN_CONTAINER_WIDTH / 2);\n refResizeHandle.current.classList.remove(\n \"cursor-ew-resize\",\n \"cursor-w-resize\",\n \"cursor-e-resize\"\n );\n if (width <= MIN_CONTAINER_WIDTH) {\n refResizeHandle.current.classList.add(\"cursor-w-resize\");\n } else if (width >= maxWidth) {\n refResizeHandle.current.classList.add(\"cursor-e-resize\");\n } else {\n refResizeHandle.current.classList.add(\"cursor-ew-resize\");\n }\n }, []);\n const handleResize = useCallback2(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!refContainer.current) return;\n refContainer.current.style.setProperty(\"pointer-events\", \"none\");\n refIsResizing.current = true;\n const startX = e.clientX;\n const startWidth = refContainer.current.offsetWidth;\n const parentWidth = signalWidget.value.dimensions.width;\n const maxWidth = Math.floor(parentWidth - MIN_CONTAINER_WIDTH / 2);\n updateResizeDirection(startWidth);\n const handlePointerMove = (e2) => {\n const delta = startX - e2.clientX;\n const newWidth = startWidth + delta;\n updateResizeDirection(newWidth);\n const clampedWidth = Math.min(\n maxWidth,\n Math.max(MIN_CONTAINER_WIDTH, newWidth)\n );\n updateContainerWidths(clampedWidth);\n };\n const handlePointerUp = () => {\n if (!refContainer.current) return;\n refContainer.current.style.removeProperty(\"pointer-events\");\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp);\n signalWidget.value = {\n ...signalWidget.value,\n componentsTree: {\n ...signalWidget.value.componentsTree,\n width: refContainer.current.offsetWidth\n }\n };\n saveLocalStorage(LOCALSTORAGE_KEY, signalWidget.value);\n refIsResizing.current = false;\n };\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp);\n },\n [updateContainerWidths, updateResizeDirection]\n );\n useEffect2(() => {\n if (!refContainer.current) return;\n const currentWidth = refContainer.current.offsetWidth;\n updateResizeDirection(currentWidth);\n return signalWidget.subscribe(() => {\n if (!refContainer.current) return;\n updateResizeDirection(refContainer.current.offsetWidth);\n });\n }, [updateResizeDirection]);\n const onPointerLeave = useCallback2(() => {\n refIsHovering.current = false;\n }, []);\n useEffect2(() => {\n let isInitialTreeBuild = true;\n const buildTreeFromElements = (elements) => {\n const nodeMap = /* @__PURE__ */ new Map();\n const rootNodes = [];\n for (const { element, name, fiber } of elements) {\n if (!element) continue;\n let title = name;\n const { name: componentName, wrappers } = getExtendedDisplayName(fiber);\n if (componentName) {\n if (wrappers.length > 0) {\n title = `${wrappers.join(\"(\")}(${componentName})${\")\".repeat(wrappers.length)}`;\n } else {\n title = componentName;\n }\n }\n nodeMap.set(element, {\n label: componentName || name,\n title,\n children: [],\n element,\n fiber\n });\n }\n for (const { element, depth } of elements) {\n if (!element) continue;\n const node = nodeMap.get(element);\n if (!node) continue;\n if (depth === 0) {\n rootNodes.push(node);\n } else {\n let parent = element.parentElement;\n while (parent) {\n const parentNode = nodeMap.get(parent);\n if (parentNode) {\n parentNode.children = parentNode.children || [];\n parentNode.children.push(node);\n break;\n }\n parent = parent.parentElement;\n }\n }\n }\n return rootNodes;\n };\n const updateTree = () => {\n const element = refSelectedElement.current;\n if (!element) return;\n const inspectableElements = getInspectableElements();\n const tree = buildTreeFromElements(inspectableElements);\n if (tree.length > 0) {\n const flattened = flattenTree(tree);\n const newMaxDepth = getMaxDepth(flattened);\n refMaxTreeDepth.current = newMaxDepth;\n updateContainerWidths(signalWidget.value.componentsTree.width);\n setFlattenedNodes(flattened);\n if (isInitialTreeBuild) {\n isInitialTreeBuild = false;\n const focusedIndex = flattened.findIndex(\n (node) => node.element === element\n );\n if (focusedIndex !== -1) {\n const itemTop = focusedIndex * ITEM_HEIGHT;\n const container = refContainer.current;\n if (container) {\n setTimeout(() => {\n container.scrollTo({\n top: itemTop,\n behavior: \"instant\"\n });\n }, 96);\n }\n }\n }\n }\n };\n const unsubscribeStore = Store.inspectState.subscribe((state) => {\n if (state.kind === \"focused\") {\n if (signalSkipTreeUpdate.value) {\n return;\n }\n handleOnChangeSearch(\"\");\n refSelectedElement.current = state.focusedDomElement;\n updateTree();\n }\n });\n let rafId = 0;\n const unsubscribeUpdates = inspectorUpdateSignal.subscribe(() => {\n if (Store.inspectState.value.kind === \"focused\") {\n cancelAnimationFrame(rafId);\n if (refIsResizing.current) return;\n rafId = requestAnimationFrame(() => {\n signalSkipTreeUpdate.value = false;\n updateTree();\n });\n }\n });\n return () => {\n unsubscribeStore();\n unsubscribeUpdates();\n searchState.value = {\n query: \"\",\n matches: [],\n currentMatchIndex: -1\n };\n };\n }, []);\n useEffect2(() => {\n const handleKeyDown = (e) => {\n if (!refIsHovering.current) return;\n if (!selectedIndex) return;\n switch (e.key) {\n case \"ArrowUp\": {\n e.preventDefault();\n e.stopPropagation();\n if (selectedIndex > 0) {\n const currentNode = visibleNodes[selectedIndex - 1];\n if (currentNode?.element) {\n handleElementClick(currentNode.element);\n }\n }\n return;\n }\n case \"ArrowDown\": {\n e.preventDefault();\n e.stopPropagation();\n if (selectedIndex < visibleNodes.length - 1) {\n const currentNode = visibleNodes[selectedIndex + 1];\n if (currentNode?.element) {\n handleElementClick(currentNode.element);\n }\n }\n return;\n }\n case \"ArrowLeft\": {\n e.preventDefault();\n e.stopPropagation();\n const currentNode = visibleNodes[selectedIndex];\n if (currentNode?.nodeId) {\n handleToggle(currentNode.nodeId);\n }\n return;\n }\n case \"ArrowRight\": {\n e.preventDefault();\n e.stopPropagation();\n const currentNode = visibleNodes[selectedIndex];\n if (currentNode?.nodeId) {\n handleToggle(currentNode.nodeId);\n }\n return;\n }\n }\n };\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [selectedIndex, visibleNodes, handleElementClick, handleToggle]);\n useEffect2(() => {\n return searchState.subscribe(setSearchValue);\n }, []);\n useEffect2(() => {\n const unsubscribe = signalWidget.subscribe((state) => {\n refMainContainer.current?.style.setProperty(\"transition\", \"width 0.1s\");\n updateContainerWidths(state.componentsTree.width);\n setTimeout(() => {\n refMainContainer.current?.style.removeProperty(\"transition\");\n }, 500);\n });\n return unsubscribe;\n }, []);\n return /* @__PURE__ */ jsxs2(\"div\", { className: \"react-scan-components-tree flex\", children: [\n /* @__PURE__ */ jsx2(\n \"div\",\n {\n ref: refResizeHandle,\n onPointerDown: handleResize,\n className: \"relative resize-v-line\",\n children: /* @__PURE__ */ jsx2(\"span\", { children: /* @__PURE__ */ jsx2(Icon, { name: \"icon-ellipsis\", size: 18 }) })\n }\n ),\n /* @__PURE__ */ jsxs2(\"div\", { ref: refMainContainer, className: \"flex flex-col h-full\", children: [\n /* @__PURE__ */ jsx2(\"div\", { className: \"p-2 border-b border-[#1e1e1e]\", children: /* @__PURE__ */ jsxs2(\n \"div\",\n {\n ref: refSearchInputContainer,\n title: `Search components by:\n\n\\u2022 Name (e.g., \"Button\") \\u2014 Case insensitive, matches any part\n\n\\u2022 Regular Expression (e.g., \"/^Button/\") \\u2014 Use forward slashes\n\n\\u2022 Wrapper Type (e.g., \"[memo,forwardRef]\"):\n - Available types: memo, forwardRef, lazy, suspense\n - Matches any part of type name (e.g., \"mo\" matches \"memo\")\n - Use commas for multiple types\n\n\\u2022 Combined Search:\n - Mix name/regex with type: \"button [for]\"\n - Will match components satisfying both conditions\n\n\\u2022 Navigation:\n - Enter \\u2192 Next match\n - Shift + Enter \\u2192 Previous match\n - Cmd/Ctrl + Enter \\u2192 Select and focus match\n`,\n className: cn(\n \"relative\",\n \"flex items-center gap-x-1 px-2\",\n \"rounded\",\n \"border border-transparent\",\n \"focus-within:border-[#454545]\",\n \"bg-[#1e1e1e] text-neutral-300\",\n \"transition-colors\",\n \"whitespace-nowrap\",\n \"overflow-hidden\"\n ),\n children: [\n /* @__PURE__ */ jsx2(Icon, { name: \"icon-search\", size: 12, className: \" text-neutral-500\" }),\n /* @__PURE__ */ jsx2(\"div\", { className: \"relative flex-1 h-7 overflow-hidden\", children: /* @__PURE__ */ jsx2(\n \"input\",\n {\n ref: refSearchInput,\n type: \"text\",\n value: searchState.value.query,\n onClick: (e) => {\n e.stopPropagation();\n e.currentTarget.focus();\n },\n onPointerDown: (e) => {\n e.stopPropagation();\n },\n onKeyDown: (e) => {\n if (e.key === \"Escape\") {\n e.currentTarget.blur();\n }\n if (searchState.value.matches.length) {\n if (e.key === \"Enter\" && e.shiftKey) {\n navigateSearch(\"prev\");\n } else if (e.key === \"Enter\") {\n if (e.metaKey || e.ctrlKey) {\n e.preventDefault();\n e.stopPropagation();\n handleElementClick(\n searchState.value.matches[searchState.value.currentMatchIndex].element\n );\n e.currentTarget.focus();\n } else {\n navigateSearch(\"next\");\n }\n }\n }\n },\n onChange: handleInputChange,\n className: \"absolute inset-y-0 inset-x-1\",\n placeholder: \"Component name, /regex/, or [type]\"\n }\n ) }),\n searchState.value.query ? /* @__PURE__ */ jsxs2(Fragment, { children: [\n /* @__PURE__ */ jsxs2(\"span\", { className: \"flex items-center gap-x-0.5 text-xs text-neutral-500\", children: [\n searchState.value.currentMatchIndex + 1,\n \"|\",\n searchState.value.matches.length\n ] }),\n !!searchState.value.matches.length && /* @__PURE__ */ jsxs2(Fragment, { children: [\n /* @__PURE__ */ jsx2(\n \"button\",\n {\n type: \"button\",\n onClick: (e) => {\n e.stopPropagation();\n navigateSearch(\"prev\");\n },\n className: \"button rounded w-4 h-4 flex items-center justify-center text-neutral-400 hover:text-neutral-300\",\n children: /* @__PURE__ */ jsx2(\n Icon,\n {\n name: \"icon-chevron-right\",\n className: \"-rotate-90\",\n size: 12\n }\n )\n }\n ),\n /* @__PURE__ */ jsx2(\n \"button\",\n {\n type: \"button\",\n onClick: (e) => {\n e.stopPropagation();\n navigateSearch(\"next\");\n },\n className: \"button rounded w-4 h-4 flex items-center justify-center text-neutral-400 hover:text-neutral-300\",\n children: /* @__PURE__ */ jsx2(\n Icon,\n {\n name: \"icon-chevron-right\",\n className: \"rotate-90\",\n size: 12\n }\n )\n }\n )\n ] }),\n /* @__PURE__ */ jsx2(\n \"button\",\n {\n type: \"button\",\n onClick: (e) => {\n e.stopPropagation();\n handleOnChangeSearch(\"\");\n },\n className: \"button rounded w-4 h-4 flex items-center justify-center text-neutral-400 hover:text-neutral-300\",\n children: /* @__PURE__ */ jsx2(Icon, { name: \"icon-close\", size: 12 })\n }\n )\n ] }) : !!flattenedNodes.length && /* @__PURE__ */ jsx2(\"span\", { className: \"text-xs text-neutral-500\", children: flattenedNodes.length })\n ]\n }\n ) }),\n /* @__PURE__ */ jsx2(\"div\", { className: \"flex-1 overflow-hidden\", children: /* @__PURE__ */ jsx2(\n \"div\",\n {\n ref: refContainer,\n onPointerLeave,\n className: \"tree h-full overflow-auto will-change-transform\",\n children: /* @__PURE__ */ jsx2(\n \"div\",\n {\n className: \"relative w-full\",\n style: {\n height: totalSize\n },\n children: virtualItems.map((virtualItem) => {\n const node = visibleNodes[virtualItem.index];\n if (!node) return null;\n const isSelected = Store.inspectState.value.kind === \"focused\" && node.element === Store.inspectState.value.focusedDomElement;\n const isKeyboardSelected = virtualItem.index === selectedIndex;\n return /* @__PURE__ */ jsx2(\n \"div\",\n {\n className: cn(\n \"absolute left-0 w-full overflow-hidden\",\n \"text-neutral-400 hover:text-neutral-300\",\n \"bg-transparent hover:bg-[#5f3f9a]/20\",\n (isSelected || isKeyboardSelected) && \"text-neutral-300 bg-[#5f3f9a]/40 hover:bg-[#5f3f9a]/40\"\n ),\n style: {\n top: virtualItem.start,\n height: ITEM_HEIGHT\n },\n children: /* @__PURE__ */ jsx2(\n \"div\",\n {\n className: \"w-full h-full\",\n style: {\n paddingLeft: `calc(${node.depth} * var(--indentation-size))`\n },\n children: /* @__PURE__ */ jsx2(\n TreeNodeItem,\n {\n node,\n nodeIndex: virtualItem.index,\n hasChildren: !!node.children?.length,\n isCollapsed: collapsedNodes.has(node.nodeId),\n handleTreeNodeClick,\n handleTreeNodeToggle,\n searchValue\n }\n )\n }\n )\n },\n node.nodeId\n );\n })\n }\n )\n }\n ) })\n ] })\n ] });\n};\n\n// src/web/views/inspector/what-changed.tsx\nimport { memo as memo2 } from \"preact/compat\";\nimport {\n useEffect as useEffect5,\n useRef as useRef4,\n useState as useState6\n} from \"preact/hooks\";\n\n// src/web/components/copy-to-clipboard/index.tsx\nimport { memo } from \"preact/compat\";\nimport { useCallback as useCallback3, useEffect as useEffect3, useState as useState3 } from \"preact/hooks\";\nimport { jsx as jsx3 } from \"preact/jsx-runtime\";\nvar CopyToClipboard = /* @__PURE__ */ memo(\n ({\n text,\n children,\n onCopy,\n className,\n iconSize = 14\n }) => {\n const [isCopied, setIsCopied] = useState3(false);\n useEffect3(() => {\n if (isCopied) {\n const timeout2 = setTimeout(() => setIsCopied(false), 600);\n return () => {\n clearTimeout(timeout2);\n };\n }\n }, [isCopied]);\n const copyToClipboard = useCallback3(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n navigator.clipboard.writeText(text).then(\n () => {\n setIsCopied(true);\n onCopy?.(true, text);\n },\n () => {\n onCopy?.(false, text);\n }\n );\n },\n [text, onCopy]\n );\n const ClipboardIcon = /* @__PURE__ */ jsx3(\n \"button\",\n {\n onClick: copyToClipboard,\n type: \"button\",\n className: cn(\n \"z-10\",\n \"flex items-center justify-center\",\n \"hover:text-dev-pink-400\",\n \"transition-colors duration-200 ease-in-out\",\n \"cursor-pointer\",\n `size-[${iconSize}px]`,\n className\n ),\n children: /* @__PURE__ */ jsx3(\n Icon,\n {\n name: `icon-${isCopied ? \"check\" : \"copy\"}`,\n size: [iconSize],\n className: cn(isCopied && \"text-green-500\")\n }\n )\n }\n );\n if (!children) {\n return ClipboardIcon;\n }\n return children({\n ClipboardIcon,\n onClick: copyToClipboard\n });\n }\n);\n\n// src/web/views/inspector/diff-value.tsx\nimport { useState as useState4 } from \"preact/hooks\";\nimport { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs3 } from \"preact/jsx-runtime\";\nvar ArrayHeader = ({\n length,\n expanded,\n onToggle,\n isNegative\n}) => /* @__PURE__ */ jsxs3(\"div\", { className: \"flex items-center gap-1\", children: [\n /* @__PURE__ */ jsx4(\n \"button\",\n {\n type: \"button\",\n onClick: onToggle,\n className: \"flex items-center p-0 opacity-50\",\n children: /* @__PURE__ */ jsx4(\n Icon,\n {\n name: \"icon-chevron-right\",\n size: 12,\n className: cn(\n \"transition-[color,transform]\",\n isNegative ? \"text-[#f87171]\" : \"text-[#4ade80]\",\n expanded && \"rotate-90\"\n )\n }\n )\n }\n ),\n /* @__PURE__ */ jsxs3(\"span\", { children: [\n \"Array(\",\n length,\n \")\"\n ] })\n] });\nvar TreeNode = ({\n value,\n path,\n isNegative\n}) => {\n const [isExpanded, setIsExpanded] = useState4(false);\n const canExpand = value !== null && typeof value === \"object\" && !(value instanceof Date);\n if (!canExpand) {\n return /* @__PURE__ */ jsxs3(\"div\", { className: \"flex items-center gap-1\", children: [\n /* @__PURE__ */ jsxs3(\"span\", { className: \"text-gray-500\", children: [\n path,\n \":\"\n ] }),\n /* @__PURE__ */ jsx4(\"span\", { className: \"truncate\", children: formatValuePreview(value) })\n ] });\n }\n const entries = Object.entries(value);\n return /* @__PURE__ */ jsxs3(\"div\", { className: \"flex flex-col\", children: [\n /* @__PURE__ */ jsxs3(\"div\", { className: \"flex items-center gap-1\", children: [\n /* @__PURE__ */ jsx4(\n \"button\",\n {\n type: \"button\",\n onClick: () => setIsExpanded(!isExpanded),\n className: \"flex items-center p-0 opacity-50\",\n children: /* @__PURE__ */ jsx4(\n Icon,\n {\n name: \"icon-chevron-right\",\n size: 12,\n className: cn(\n \"transition-[color,transform]\",\n isNegative ? \"text-[#f87171]\" : \"text-[#4ade80]\",\n isExpanded && \"rotate-90\"\n )\n }\n )\n }\n ),\n /* @__PURE__ */ jsxs3(\"span\", { className: \"text-gray-500\", children: [\n path,\n \":\"\n ] }),\n !isExpanded && /* @__PURE__ */ jsx4(\"span\", { className: \"truncate\", children: value instanceof Date ? formatValuePreview(value) : `{${Object.keys(value).join(\", \")}}` })\n ] }),\n isExpanded && /* @__PURE__ */ jsx4(\"div\", { className: \"pl-5 border-l border-[#333] mt-0.5 ml-1 flex flex-col gap-0.5\", children: entries.map(([key, val]) => /* @__PURE__ */ jsx4(\n TreeNode,\n {\n value: val,\n path: key,\n isNegative\n },\n key\n )) })\n ] });\n};\nvar DiffValueView = ({\n value,\n expanded,\n onToggle,\n isNegative\n}) => {\n const { value: safeValue, error } = safeGetValue(value);\n if (error) {\n return /* @__PURE__ */ jsx4(\"span\", { className: \"text-gray-500 font-italic\", children: error });\n }\n const isExpandable = safeValue !== null && typeof safeValue === \"object\" && !(safeValue instanceof Promise);\n if (!isExpandable) {\n return /* @__PURE__ */ jsx4(\"span\", { children: formatValuePreview(safeValue) });\n }\n if (Array.isArray(safeValue)) {\n return /* @__PURE__ */ jsxs3(\"div\", { className: \"flex flex-col gap-1 relative\", children: [\n /* @__PURE__ */ jsx4(\n ArrayHeader,\n {\n length: safeValue.length,\n expanded,\n onToggle,\n isNegative\n }\n ),\n expanded && /* @__PURE__ */ jsx4(\"div\", { className: \"pl-2 border-l border-[#333] mt-0.5 ml-1 flex flex-col gap-0.5\", children: safeValue.map((item, index) => /* @__PURE__ */ jsx4(\n TreeNode,\n {\n value: item,\n path: index.toString(),\n isNegative\n },\n index.toString()\n )) }),\n /* @__PURE__ */ jsx4(\n CopyToClipboard,\n {\n text: formatForClipboard(safeValue),\n className: \"absolute top-0.5 right-0.5 opacity-0 transition-opacity group-hover:opacity-100 self-end\",\n children: ({ ClipboardIcon }) => /* @__PURE__ */ jsx4(Fragment2, { children: ClipboardIcon })\n }\n )\n ] });\n }\n return /* @__PURE__ */ jsxs3(\"div\", { className: \"flex items-start gap-1 relative\", children: [\n /* @__PURE__ */ jsx4(\n \"button\",\n {\n type: \"button\",\n onClick: onToggle,\n className: cn(\"flex items-center\", \"p-0 mt-0.5 mr-1\", \"opacity-50\"),\n children: /* @__PURE__ */ jsx4(\n Icon,\n {\n name: \"icon-chevron-right\",\n size: 12,\n className: cn(\n \"transition-[color,transform]\",\n isNegative ? \"text-[#f87171]\" : \"text-[#4ade80]\",\n expanded && \"rotate-90\"\n )\n }\n )\n }\n ),\n /* @__PURE__ */ jsx4(\"div\", { className: \"flex-1\", children: !expanded ? /* @__PURE__ */ jsx4(\"span\", { children: formatValuePreview(safeValue) }) : /* @__PURE__ */ jsx4(\"div\", { className: \"pl-2 border-l border-[#333] mt-0.5 ml-1 flex flex-col gap-0.5\", children: Object.entries(safeValue).map(([key, val]) => /* @__PURE__ */ jsx4(\n TreeNode,\n {\n value: val,\n path: key,\n isNegative\n },\n key\n )) }) }),\n /* @__PURE__ */ jsx4(\n CopyToClipboard,\n {\n text: formatForClipboard(safeValue),\n className: \"absolute top-0.5 right-0.5 opacity-0 transition-opacity group-hover:opacity-100 self-end\",\n children: ({ ClipboardIcon }) => /* @__PURE__ */ jsx4(Fragment2, { children: ClipboardIcon })\n }\n )\n ] });\n};\n\n// src/web/views/inspector/whats-changed/use-change-store.ts\nimport { useEffect as useEffect4, useRef as useRef3, useState as useState5 } from \"preact/hooks\";\nimport { getFiberId } from \"bippy\";\nimport { signal as signal4 } from \"@preact/signals\";\nvar CHANGES_QUEUE_INTERVAL = 50;\nvar inspectorState = signal4({\n fiber: null,\n fiberProps: { current: [], changes: /* @__PURE__ */ new Set() },\n fiberState: { current: [], changes: /* @__PURE__ */ new Set() },\n fiberContext: { current: [], changes: /* @__PURE__ */ new Set() }\n});\nvar getContextChangesValue = (discriminated) => {\n switch (discriminated.kind) {\n case \"initialized\": {\n return discriminated.changes.currentValue;\n }\n case \"partially-initialized\": {\n return discriminated.value;\n }\n }\n};\nvar processChanges = (changes, targetMap) => {\n for (const change of changes) {\n const existing = targetMap.get(change.name);\n if (existing) {\n targetMap.set(existing.name, {\n count: existing.count + 1,\n currentValue: change.value,\n id: existing.name,\n lastUpdated: Date.now(),\n name: existing.name,\n previousValue: change.prevValue\n });\n continue;\n }\n targetMap.set(change.name, {\n count: 1,\n currentValue: change.value,\n id: change.name,\n lastUpdated: Date.now(),\n name: change.name,\n previousValue: change.prevValue\n });\n }\n};\nvar processContextChanges = (contextChanges, aggregatedChanges) => {\n for (const change of contextChanges) {\n const existing = aggregatedChanges.contextChanges.get(change.contextType);\n if (existing) {\n if (isEqual(getContextChangesValue(existing), change.value)) {\n continue;\n }\n if (existing.kind === \"partially-initialized\") {\n aggregatedChanges.contextChanges.set(change.contextType, {\n kind: \"initialized\",\n changes: {\n count: 1,\n currentValue: change.value,\n id: change.contextType.toString(),\n // come back to this why was this ever expected to be a number?\n lastUpdated: Date.now(),\n name: change.name,\n previousValue: existing.value\n }\n });\n continue;\n }\n aggregatedChanges.contextChanges.set(change.contextType, {\n kind: \"initialized\",\n changes: {\n count: existing.changes.count + 1,\n currentValue: change.value,\n id: change.contextType.toString(),\n lastUpdated: Date.now(),\n name: change.name,\n previousValue: existing.changes.currentValue\n }\n });\n continue;\n }\n aggregatedChanges.contextChanges.set(change.contextType, {\n kind: \"partially-initialized\",\n id: change.contextType.toString(),\n lastUpdated: Date.now(),\n name: change.name,\n value: change.value\n });\n }\n};\nvar collapseQueue = (queue) => {\n const localAggregatedChanges = {\n contextChanges: /* @__PURE__ */ new Map(),\n propsChanges: /* @__PURE__ */ new Map(),\n stateChanges: /* @__PURE__ */ new Map()\n };\n queue.forEach((changes) => {\n processContextChanges(changes.contextChanges, localAggregatedChanges);\n processChanges(changes.stateChanges, localAggregatedChanges.stateChanges);\n processChanges(changes.propsChanges, localAggregatedChanges.propsChanges);\n });\n return localAggregatedChanges;\n};\nvar mergeSimpleChanges = (existingChanges, incomingChanges) => {\n const mergedChanges = /* @__PURE__ */ new Map();\n existingChanges.forEach((value, key) => {\n mergedChanges.set(key, value);\n });\n incomingChanges.forEach((incomingChange, key) => {\n const existing = mergedChanges.get(key);\n if (!existing) {\n mergedChanges.set(key, incomingChange);\n return;\n }\n mergedChanges.set(key, {\n count: existing.count + incomingChange.count,\n currentValue: incomingChange.currentValue,\n id: incomingChange.id,\n lastUpdated: incomingChange.lastUpdated,\n name: incomingChange.name,\n previousValue: incomingChange.previousValue\n });\n });\n return mergedChanges;\n};\nvar mergeContextChanges = (existing, incoming) => {\n const contextChanges = /* @__PURE__ */ new Map();\n existing.contextChanges.forEach((value, key) => {\n contextChanges.set(key, value);\n });\n incoming.contextChanges.forEach((incomingChange, key) => {\n const existingChange = contextChanges.get(key);\n if (!existingChange) {\n contextChanges.set(key, incomingChange);\n return;\n }\n if (getContextChangesValue(incomingChange) === getContextChangesValue(existingChange)) {\n return;\n }\n switch (existingChange.kind) {\n case \"initialized\": {\n switch (incomingChange.kind) {\n case \"initialized\": {\n const preInitEntryOffset = 1;\n contextChanges.set(key, {\n kind: \"initialized\",\n changes: {\n ...incomingChange.changes,\n // if existing was initialized, the pre-initialization done by the collapsed queue was not necessary, so we need to increment count to account for the preInit entry\n count: incomingChange.changes.count + existingChange.changes.count + preInitEntryOffset,\n currentValue: incomingChange.changes.currentValue,\n previousValue: incomingChange.changes.previousValue\n // we always want to show this value, since this will be the true state transition (if you make the previousValue the last seen currentValue, u will have weird behavior with primitive state updates)\n }\n });\n return;\n }\n case \"partially-initialized\": {\n contextChanges.set(key, {\n kind: \"initialized\",\n changes: {\n count: existingChange.changes.count + 1,\n currentValue: incomingChange.value,\n id: incomingChange.id,\n lastUpdated: incomingChange.lastUpdated,\n name: incomingChange.name,\n previousValue: existingChange.changes.currentValue\n }\n });\n return;\n }\n }\n }\n case \"partially-initialized\": {\n switch (incomingChange.kind) {\n case \"initialized\": {\n contextChanges.set(key, {\n kind: \"initialized\",\n changes: {\n count: incomingChange.changes.count + 1,\n currentValue: incomingChange.changes.currentValue,\n id: incomingChange.changes.id,\n lastUpdated: incomingChange.changes.lastUpdated,\n name: incomingChange.changes.name,\n previousValue: existingChange.value\n }\n });\n return;\n }\n case \"partially-initialized\": {\n contextChanges.set(key, {\n kind: \"initialized\",\n changes: {\n count: 1,\n currentValue: incomingChange.value,\n id: incomingChange.id,\n lastUpdated: incomingChange.lastUpdated,\n name: incomingChange.name,\n previousValue: existingChange.value\n }\n });\n return;\n }\n }\n }\n }\n });\n return contextChanges;\n};\nvar mergeChanges = (existing, incoming) => {\n const contextChanges = mergeContextChanges(existing, incoming);\n const propChanges = mergeSimpleChanges(\n existing.propsChanges,\n incoming.propsChanges\n );\n const stateChanges = mergeSimpleChanges(\n existing.stateChanges,\n incoming.stateChanges\n );\n return {\n contextChanges,\n propsChanges: propChanges,\n stateChanges\n };\n};\nvar calculateTotalChanges = (changes) => {\n return Array.from(changes.propsChanges.values()).reduce(\n (acc, change) => acc + change.count,\n 0\n ) + Array.from(changes.stateChanges.values()).reduce(\n (acc, change) => acc + change.count,\n 0\n ) + Array.from(changes.contextChanges.values()).filter(\n (change) => change.kind === \"initialized\"\n ).reduce((acc, change) => acc + change.changes.count, 0);\n};\nvar useInspectedFiberChangeStore = (opts) => {\n const pendingChanges = useRef3({ queue: [] });\n const [aggregatedChanges, setAggregatedChanges] = useState5({\n propsChanges: /* @__PURE__ */ new Map(),\n stateChanges: /* @__PURE__ */ new Map(),\n contextChanges: /* @__PURE__ */ new Map()\n });\n const fiber = Store.inspectState.value.kind === \"focused\" ? Store.inspectState.value.fiber : null;\n const fiberId = fiber ? getFiberId(fiber) : null;\n useEffect4(() => {\n const interval = setInterval(() => {\n if (pendingChanges.current.queue.length === 0) return;\n setAggregatedChanges((prevAggregatedChanges) => {\n const queueChanges = collapseQueue(pendingChanges.current.queue);\n const merged = mergeChanges(prevAggregatedChanges, queueChanges);\n const prevTotal = calculateTotalChanges(prevAggregatedChanges);\n const newTotal = calculateTotalChanges(merged);\n const changeCount = newTotal - prevTotal;\n opts?.onChangeUpdate?.(changeCount);\n return merged;\n });\n pendingChanges.current.queue = [];\n }, CHANGES_QUEUE_INTERVAL);\n return () => {\n clearInterval(interval);\n };\n }, [fiber]);\n useEffect4(() => {\n if (!fiberId) {\n return;\n }\n const listener = (change) => {\n pendingChanges.current?.queue.push(change);\n };\n let listeners = Store.changesListeners.get(fiberId);\n if (!listeners) {\n listeners = [];\n Store.changesListeners.set(fiberId, listeners);\n }\n listeners.push(listener);\n return () => {\n setAggregatedChanges({\n propsChanges: /* @__PURE__ */ new Map(),\n stateChanges: /* @__PURE__ */ new Map(),\n contextChanges: /* @__PURE__ */ new Map()\n });\n pendingChanges.current.queue = [];\n Store.changesListeners.set(\n fiberId,\n Store.changesListeners.get(fiberId)?.filter((l) => l !== listener) ?? []\n );\n };\n }, [fiberId]);\n useEffect4(() => {\n return () => {\n setAggregatedChanges({\n propsChanges: /* @__PURE__ */ new Map(),\n stateChanges: /* @__PURE__ */ new Map(),\n contextChanges: /* @__PURE__ */ new Map()\n });\n pendingChanges.current.queue = [];\n };\n }, [fiberId]);\n return aggregatedChanges;\n};\n\n// src/web/views/inspector/what-changed.tsx\nimport { getDisplayName as getDisplayName2, getType as getType2 } from \"bippy\";\nimport { Fragment as Fragment3, jsx as jsx5, jsxs as jsxs4 } from \"preact/jsx-runtime\";\nvar safeGetValue2 = (value) => {\n if (value === null || value === void 0) return { value };\n if (typeof value === \"function\") return { value };\n if (typeof value !== \"object\") return { value };\n if (isPromise(value)) {\n return { value: \"Promise\" };\n }\n try {\n const proto = Object.getPrototypeOf(value);\n if (proto === Promise.prototype || proto?.constructor?.name === \"Promise\") {\n return { value: \"Promise\" };\n }\n return { value };\n } catch {\n return { value: null, error: \"Error accessing value\" };\n }\n};\nvar WhatChanged = /* @__PURE__ */ memo2(() => {\n const [isExpanded, setIsExpanded] = useState6(true);\n const aggregatedChanges = useInspectedFiberChangeStore();\n const [hasInitialized, setHasInitialized] = useState6(false);\n const hasAnyChanges = calculateTotalChanges(aggregatedChanges) > 0;\n useEffect5(() => {\n if (!hasInitialized && hasAnyChanges) {\n const timer = setTimeout(() => {\n setHasInitialized(true);\n requestAnimationFrame(() => {\n setIsExpanded(true);\n });\n }, 0);\n return () => clearTimeout(timer);\n }\n }, [hasInitialized, hasAnyChanges]);\n const initializedContextChanges = new Map(\n Array.from(aggregatedChanges.contextChanges.entries()).filter(([, value]) => value.kind === \"initialized\").map(([key, value]) => [\n key,\n // biome-ignore lint/style/noNonNullAssertion: <explanation>\n value.kind === \"partially-initialized\" ? null : value.changes\n ])\n );\n const fiber = Store.inspectState.value.kind === \"focused\" ? Store.inspectState.value.fiber : null;\n if (!fiber) {\n return;\n }\n return /* @__PURE__ */ jsxs4(Fragment3, { children: [\n /* @__PURE__ */ jsx5(WhatsChangedHeader, {}),\n /* @__PURE__ */ jsxs4(\"div\", { className: \"overflow-hidden h-full flex flex-col gap-y-2\", children: [\n /* @__PURE__ */ jsxs4(\"div\", { className: \"flex flex-col gap-2 px-3 pt-2\", children: [\n /* @__PURE__ */ jsxs4(\"span\", { className: \"text-sm font-medium text-[#888]\", children: [\n \"Why did\",\n \" \",\n /* @__PURE__ */ jsx5(\"span\", { className: \"text-[#A855F7]\", children: getDisplayName2(fiber) }),\n \" \",\n \"render?\"\n ] }),\n !hasAnyChanges && /* @__PURE__ */ jsxs4(\"div\", { className: \"text-sm text-[#737373] bg-[#1E1E1E] rounded-md p-4 flex flex-col gap-4\", children: [\n /* @__PURE__ */ jsx5(\"div\", { children: \"No changes detected since selecting\" }),\n /* @__PURE__ */ jsx5(\"div\", { children: \"The props, state, and context changes within your component will be reported here\" })\n ] })\n ] }),\n /* @__PURE__ */ jsxs4(\n \"div\",\n {\n className: cn(\n \"flex flex-col gap-y-2 pl-3 relative overflow-y-auto h-full\"\n ),\n children: [\n /* @__PURE__ */ jsx5(\n Section,\n {\n changes: aggregatedChanges.propsChanges,\n title: \"Changed Props\",\n isExpanded\n }\n ),\n /* @__PURE__ */ jsx5(\n Section,\n {\n renderName: (name) => renderStateName(\n name,\n getDisplayName2(getType2(fiber)) ?? \"Unknown Component\"\n ),\n changes: aggregatedChanges.stateChanges,\n title: \"Changed State\",\n isExpanded\n }\n ),\n /* @__PURE__ */ jsx5(\n Section,\n {\n changes: initializedContextChanges,\n title: \"Changed Context\",\n isExpanded\n }\n )\n ]\n }\n )\n ] })\n ] });\n});\nvar renderStateName = (key, componentName) => {\n if (Number.isNaN(Number(key))) {\n return key;\n }\n const n = Number.parseInt(key);\n const getOrdinalSuffix = (num) => {\n const lastDigit = num % 10;\n const lastTwoDigits = num % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 13) {\n return \"th\";\n }\n switch (lastDigit) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n };\n return /* @__PURE__ */ jsxs4(\"span\", { className: \"truncate\", children: [\n /* @__PURE__ */ jsxs4(\"span\", { className: \"text-white\", children: [\n n,\n getOrdinalSuffix(n),\n \" hook\",\n \" \"\n ] }),\n /* @__PURE__ */ jsxs4(\"span\", { style: { color: \"#666\" }, children: [\n \"called in \",\n /* @__PURE__ */ jsx5(\"i\", { className: \"text-[#A855F7] truncate\", children: componentName })\n ] })\n ] });\n};\nvar WhatsChangedHeader = memo2(() => {\n const refProps = useRef4(null);\n const refState = useRef4(null);\n const refContext = useRef4(null);\n const refStats = useRef4({\n isPropsChanged: false,\n isStateChanged: false,\n isContextChanged: false\n });\n useEffect5(() => {\n const flash = throttle(() => {\n const flashElements = [];\n if (refProps.current?.dataset.flash === \"true\") {\n flashElements.push(refProps.current);\n }\n if (refState.current?.dataset.flash === \"true\") {\n flashElements.push(refState.current);\n }\n if (refContext.current?.dataset.flash === \"true\") {\n flashElements.push(refContext.current);\n }\n for (const element of flashElements) {\n element.classList.remove(\"count-flash-white\");\n void element.offsetWidth;\n element.classList.add(\"count-flash-white\");\n }\n }, 400);\n const unsubscribe = timelineState.subscribe((state) => {\n if (!refProps.current || !refState.current || !refContext.current) {\n return;\n }\n const { currentIndex, updates } = state;\n const currentUpdate = updates[currentIndex];\n if (!currentUpdate || currentIndex === 0) {\n return;\n }\n flash();\n refStats.current = {\n isPropsChanged: (currentUpdate.props?.changes?.size ?? 0) > 0,\n isStateChanged: (currentUpdate.state?.changes?.size ?? 0) > 0,\n isContextChanged: (currentUpdate.context?.changes?.size ?? 0) > 0\n };\n if (refProps.current.dataset.flash !== \"true\") {\n refProps.current.dataset.flash = refStats.current.isPropsChanged.toString();\n }\n if (refState.current.dataset.flash !== \"true\") {\n refState.current.dataset.flash = refStats.current.isStateChanged.toString();\n }\n if (refContext.current.dataset.flash !== \"true\") {\n refContext.current.dataset.flash = refStats.current.isContextChanged.toString();\n }\n });\n return unsubscribe;\n }, []);\n return /* @__PURE__ */ jsx5(\n \"button\",\n {\n type: \"button\",\n className: cn(\n \"react-section-header\",\n \"overflow-hidden\",\n \"max-h-0\",\n \"transition-[max-height]\"\n ),\n children: /* @__PURE__ */ jsx5(\"div\", { className: cn(\"flex-1 react-scan-expandable\"), children: /* @__PURE__ */ jsx5(\"div\", { className: \"overflow-hidden\", children: /* @__PURE__ */ jsxs4(\"div\", { className: \"flex items-center whitespace-nowrap\", children: [\n /* @__PURE__ */ jsx5(\"div\", { className: \"flex items-center gap-x-2\", children: \"What changed?\" }),\n /* @__PURE__ */ jsxs4(\n \"div\",\n {\n className: cn(\n \"ml-auto\",\n \"change-scope\",\n \"transition-opacity duration-300 delay-150\"\n ),\n children: [\n /* @__PURE__ */ jsx5(\"div\", { ref: refProps, children: \"props\" }),\n /* @__PURE__ */ jsx5(\"div\", { ref: refState, children: \"state\" }),\n /* @__PURE__ */ jsx5(\"div\", { ref: refContext, children: \"context\" })\n ]\n }\n )\n ] }) }) })\n }\n );\n});\nvar identity = (x) => x;\nvar Section = /* @__PURE__ */ memo2(\n ({ title, changes, renderName = identity }) => {\n const [expandedFns, setExpandedFns] = useState6(/* @__PURE__ */ new Set());\n const [expandedEntries, setExpandedEntries] = useState6(/* @__PURE__ */ new Set());\n const entries = Array.from(changes.entries());\n if (changes.size === 0) {\n return null;\n }\n return /* @__PURE__ */ jsxs4(\"div\", { children: [\n /* @__PURE__ */ jsx5(\"div\", { className: \"text-xs text-[#888] mb-1.5\", children: title }),\n /* @__PURE__ */ jsx5(\"div\", { className: \"flex flex-col gap-2\", children: entries.map(([entryKey, change]) => {\n const isEntryExpanded = expandedEntries.has(String(entryKey));\n const { value: prevValue, error: prevError } = safeGetValue2(\n change.previousValue\n );\n const { value: currValue, error: currError } = safeGetValue2(\n change.currentValue\n );\n const diff = getObjectDiff(prevValue, currValue);\n return /* @__PURE__ */ jsxs4(\"div\", { children: [\n /* @__PURE__ */ jsx5(\n \"button\",\n {\n onClick: () => {\n setExpandedEntries((prev) => {\n const next = new Set(prev);\n if (next.has(String(entryKey))) {\n next.delete(String(entryKey));\n } else {\n next.add(String(entryKey));\n }\n return next;\n });\n },\n className: \"flex items-center gap-2 w-full bg-transparent border-none p-0 cursor-pointer text-white text-xs\",\n children: /* @__PURE__ */ jsxs4(\"div\", { className: \"flex items-center gap-1.5 flex-1\", children: [\n /* @__PURE__ */ jsx5(\n Icon,\n {\n name: \"icon-chevron-right\",\n size: 12,\n className: cn(\n \"text-[#666] transition-transform duration-200 ease-[cubic-bezier(0.25,0.1,0.25,1)]\",\n {\n \"rotate-90\": isEntryExpanded\n }\n )\n }\n ),\n /* @__PURE__ */ jsxs4(\"div\", { className: \"whitespace-pre-wrap break-words text-left font-medium flex items-center gap-x-1.5\", children: [\n renderName(change.name),\n /* @__PURE__ */ jsx5(\n CountBadge,\n {\n count: change.count,\n isFunction: typeof change.currentValue === \"function\",\n showWarning: diff.changes.length === 0,\n forceFlash: true\n }\n )\n ] })\n ] })\n }\n ),\n /* @__PURE__ */ jsx5(\n \"div\",\n {\n className: cn(\"react-scan-expandable\", {\n \"react-scan-expanded\": isEntryExpanded\n }),\n children: /* @__PURE__ */ jsx5(\"div\", { className: \"pl-3 text-xs font-mono border-l-1 border-[#333]\", children: /* @__PURE__ */ jsx5(\"div\", { className: \"flex flex-col gap-0.5\", children: prevError || currError ? /* @__PURE__ */ jsx5(\n AccessError,\n {\n currError,\n prevError\n }\n ) : diff.changes.length > 0 ? /* @__PURE__ */ jsx5(\n DiffChange,\n {\n change,\n diff,\n expandedFns,\n renderName,\n setExpandedFns,\n title\n }\n ) : /* @__PURE__ */ jsx5(\n ReferenceOnlyChange,\n {\n currValue,\n entryKey,\n expandedFns,\n prevValue,\n setExpandedFns\n }\n ) }) })\n }\n )\n ] }, entryKey);\n }) })\n ] });\n }\n);\nvar AccessError = ({\n prevError,\n currError\n}) => {\n return /* @__PURE__ */ jsxs4(Fragment3, { children: [\n prevError && /* @__PURE__ */ jsx5(\"div\", { className: \"text-[#f87171] bg-[#2a1515] pr-1.5 py-[3px] rounded italic\", children: prevError }),\n currError && /* @__PURE__ */ jsx5(\"div\", { className: \"text-[#4ade80] bg-[#1a2a1a] pr-1.5 py-[3px] rounded italic mt-0.5\", children: currError })\n ] });\n};\nvar DiffChange = ({\n diff,\n title,\n renderName,\n change,\n expandedFns,\n setExpandedFns\n}) => {\n return diff.changes.map((diffChange, i) => {\n const { value: prevDiffValue, error: prevDiffError } = safeGetValue2(\n diffChange.prevValue\n );\n const { value: currDiffValue, error: currDiffError } = safeGetValue2(\n diffChange.currentValue\n );\n const isFunction = typeof prevDiffValue === \"function\" || typeof currDiffValue === \"function\";\n let path;\n if (title === \"Props\") {\n path = diffChange.path.length > 0 ? `${renderName(String(change.name))}.${formatPath(diffChange.path)}` : void 0;\n }\n if (title === \"State\" && diffChange.path.length > 0) {\n path = `state.${formatPath(diffChange.path)}`;\n }\n if (!path) {\n path = formatPath(diffChange.path);\n }\n return /* @__PURE__ */ jsxs4(\n \"div\",\n {\n className: cn(\n \"flex flex-col gap-y-1\",\n i < diff.changes.length - 1 && \"mb-4\"\n ),\n children: [\n path && /* @__PURE__ */ jsx5(\"div\", { className: \"text-[#666] text-[10px]\", children: path }),\n /* @__PURE__ */ jsxs4(\n \"button\",\n {\n type: \"button\",\n className: cn(\n \"group\",\n \"flex items-start\",\n \"py-[3px] px-1.5\",\n \"text-left text-[#f87171] bg-[#2a1515]\",\n \"rounded\",\n \"overflow-hidden break-all\",\n isFunction && \"cursor-pointer\"\n ),\n onClick: isFunction ? () => {\n const fnKey = `${formatPath(diffChange.path)}-prev`;\n setExpandedFns((prev) => {\n const next = new Set(prev);\n if (next.has(fnKey)) {\n next.delete(fnKey);\n } else {\n next.add(fnKey);\n }\n return next;\n });\n } : void 0,\n children: [\n /* @__PURE__ */ jsx5(\"span\", { className: \"w-3 flex items-center justify-center opacity-50\", children: \"-\" }),\n /* @__PURE__ */ jsx5(\"span\", { className: \"flex-1 whitespace-nowrap font-mono\", children: prevDiffError ? /* @__PURE__ */ jsx5(\"span\", { className: \"italic text-[#f87171]\", children: prevDiffError }) : isFunction ? /* @__PURE__ */ jsxs4(\"div\", { className: \"flex gap-1 items-start flex-col\", children: [\n /* @__PURE__ */ jsxs4(\"div\", { className: \"flex gap-1 items-start w-full\", children: [\n /* @__PURE__ */ jsx5(\"span\", { className: \"flex-1 max-h-40\", children: formatFunctionPreview(\n prevDiffValue,\n expandedFns.has(`${formatPath(diffChange.path)}-prev`)\n ) }),\n typeof prevDiffValue === \"function\" && /* @__PURE__ */ jsx5(\n CopyToClipboard,\n {\n text: prevDiffValue.toString(),\n className: \"opacity-0 transition-opacity group-hover:opacity-100\",\n children: ({ ClipboardIcon }) => /* @__PURE__ */ jsx5(Fragment3, { children: ClipboardIcon })\n }\n )\n ] }),\n prevDiffValue?.toString() === currDiffValue?.toString() && /* @__PURE__ */ jsx5(\"div\", { className: \"text-[10px] text-[#666] italic\", children: \"Function reference changed\" })\n ] }) : /* @__PURE__ */ jsx5(\n DiffValueView,\n {\n value: prevDiffValue,\n expanded: expandedFns.has(\n `${formatPath(diffChange.path)}-prev`\n ),\n onToggle: () => {\n const key = `${formatPath(diffChange.path)}-prev`;\n setExpandedFns((prev) => {\n const next = new Set(prev);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n return next;\n });\n },\n isNegative: true\n }\n ) })\n ]\n }\n ),\n /* @__PURE__ */ jsxs4(\n \"button\",\n {\n type: \"button\",\n className: cn(\n \"group\",\n \"flex items-start\",\n \"py-[3px] px-1.5\",\n \"text-left text-[#4ade80] bg-[#1a2a1a]\",\n \"rounded\",\n \"overflow-hidden break-all\",\n isFunction && \"cursor-pointer\"\n ),\n onClick: isFunction ? () => {\n const fnKey = `${formatPath(diffChange.path)}-current`;\n setExpandedFns((prev) => {\n const next = new Set(prev);\n if (next.has(fnKey)) {\n next.delete(fnKey);\n } else {\n next.add(fnKey);\n }\n return next;\n });\n } : void 0,\n children: [\n /* @__PURE__ */ jsx5(\"span\", { className: \"w-3 flex items-center justify-center opacity-50\", children: \"+\" }),\n /* @__PURE__ */ jsx5(\"span\", { className: \"flex-1 whitespace-pre-wrap font-mono\", children: currDiffError ? /* @__PURE__ */ jsx5(\"span\", { className: \"italic text-[#4ade80]\", children: currDiffError }) : isFunction ? /* @__PURE__ */ jsxs4(\"div\", { className: \"flex gap-1 items-start flex-col\", children: [\n /* @__PURE__ */ jsxs4(\"div\", { className: \"flex gap-1 items-start w-full\", children: [\n /* @__PURE__ */ jsx5(\"span\", { className: \"flex-1\", children: formatFunctionPreview(\n currDiffValue,\n expandedFns.has(`${formatPath(diffChange.path)}-current`)\n ) }),\n typeof currDiffValue === \"function\" && /* @__PURE__ */ jsx5(\n CopyToClipboard,\n {\n text: currDiffValue.toString(),\n className: \"opacity-0 transition-opacity group-hover:opacity-100\",\n children: ({ ClipboardIcon }) => /* @__PURE__ */ jsx5(Fragment3, { children: ClipboardIcon })\n }\n )\n ] }),\n prevDiffValue?.toString() === currDiffValue?.toString() && /* @__PURE__ */ jsx5(\"div\", { className: \"text-[10px] text-[#666] italic\", children: \"Function reference changed\" })\n ] }) : /* @__PURE__ */ jsx5(\n DiffValueView,\n {\n value: currDiffValue,\n expanded: expandedFns.has(\n `${formatPath(diffChange.path)}-current`\n ),\n onToggle: () => {\n const key = `${formatPath(diffChange.path)}-current`;\n setExpandedFns((prev) => {\n const next = new Set(prev);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n return next;\n });\n },\n isNegative: false\n }\n ) })\n ]\n }\n )\n ]\n },\n `${path}-${change.name}-${i}`\n );\n });\n};\nvar ReferenceOnlyChange = ({\n prevValue,\n currValue,\n entryKey,\n expandedFns,\n setExpandedFns\n}) => {\n return /* @__PURE__ */ jsxs4(Fragment3, { children: [\n /* @__PURE__ */ jsxs4(\"div\", { className: \"group flex gap-0.5 items-start text-[#f87171] bg-[#2a1515] py-[3px] px-1.5 rounded\", children: [\n /* @__PURE__ */ jsx5(\"span\", { className: \"w-3 flex items-center justify-center opacity-50\", children: \"-\" }),\n /* @__PURE__ */ jsx5(\"span\", { className: \"flex-1 overflow-hidden whitespace-pre-wrap font-mono\", children: /* @__PURE__ */ jsx5(\n DiffValueView,\n {\n value: prevValue,\n expanded: expandedFns.has(`${String(entryKey)}-prev`),\n onToggle: () => {\n const key = `${String(entryKey)}-prev`;\n setExpandedFns((prev) => {\n const next = new Set(prev);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n return next;\n });\n },\n isNegative: true\n }\n ) })\n ] }),\n /* @__PURE__ */ jsxs4(\"div\", { className: \"group flex gap-0.5 items-start text-[#4ade80] bg-[#1a2a1a] py-[3px] px-1.5 rounded mt-0.5\", children: [\n /* @__PURE__ */ jsx5(\"span\", { className: \"w-3 flex items-center justify-center opacity-50\", children: \"+\" }),\n /* @__PURE__ */ jsx5(\"span\", { className: \"flex-1 overflow-hidden whitespace-pre-wrap font-mono\", children: /* @__PURE__ */ jsx5(\n DiffValueView,\n {\n value: currValue,\n expanded: expandedFns.has(`${String(entryKey)}-current`),\n onToggle: () => {\n const key = `${String(entryKey)}-current`;\n setExpandedFns((prev) => {\n const next = new Set(prev);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n return next;\n });\n },\n isNegative: false\n }\n ) })\n ] }),\n typeof currValue === \"object\" && currValue !== null && /* @__PURE__ */ jsxs4(\"div\", { className: \"text-[#666] text-[10px] italic mt-1 flex items-center gap-x-1\", children: [\n /* @__PURE__ */ jsx5(\n Icon,\n {\n name: \"icon-triangle-alert\",\n className: \"text-yellow-500 mb-px\",\n size: 14\n }\n ),\n /* @__PURE__ */ jsx5(\"span\", { children: \"Reference changed but objects are structurally the same\" })\n ] })\n ] });\n};\nvar CountBadge = ({\n count,\n forceFlash,\n isFunction,\n showWarning\n}) => {\n const refIsFirstRender = useRef4(true);\n const refBadge = useRef4(null);\n const refPrevCount = useRef4(count);\n useEffect5(() => {\n const element = refBadge.current;\n if (!element || refPrevCount.current === count) {\n return;\n }\n element.classList.remove(\"count-flash\");\n void element.offsetWidth;\n element.classList.add(\"count-flash\");\n refPrevCount.current = count;\n }, [count]);\n useEffect5(() => {\n if (refIsFirstRender.current) {\n refIsFirstRender.current = false;\n return;\n }\n if (forceFlash) {\n let timer = setTimeout(() => {\n refBadge.current?.classList.add(\"count-flash-white\");\n timer = setTimeout(() => {\n refBadge.current?.classList.remove(\"count-flash-white\");\n }, 300);\n }, 500);\n return () => {\n clearTimeout(timer);\n };\n }\n }, [forceFlash]);\n return /* @__PURE__ */ jsxs4(\"div\", { ref: refBadge, className: \"count-badge\", children: [\n showWarning && /* @__PURE__ */ jsx5(\n Icon,\n {\n name: \"icon-triangle-alert\",\n className: \"text-yellow-500 mb-px\",\n size: 14\n }\n ),\n isFunction && /* @__PURE__ */ jsx5(Icon, { name: \"icon-function\", className: \"text-[#A855F7] mb-px\", size: 14 }),\n \"x\",\n count\n ] });\n};\n\n// src/web/views/inspector/index.tsx\nimport { jsx as jsx6, jsxs as jsxs5 } from \"preact/jsx-runtime\";\nvar globalInspectorState = {\n lastRendered: /* @__PURE__ */ new Map(),\n expandedPaths: /* @__PURE__ */ new Set(),\n cleanup: () => {\n globalInspectorState.lastRendered.clear();\n globalInspectorState.expandedPaths.clear();\n flashManager.cleanupAll();\n resetTracking();\n timelineActions.reset();\n }\n};\nvar InspectorErrorBoundary = class extends Component {\n constructor() {\n super(...arguments);\n this.state = {\n hasError: false,\n error: null\n };\n this.handleReset = () => {\n this.setState({ hasError: false, error: null });\n globalInspectorState.cleanup();\n };\n }\n static getDerivedStateFromError(e) {\n return { hasError: true, error: e };\n }\n render() {\n if (this.state.hasError) {\n return /* @__PURE__ */ jsxs5(\"div\", { className: \"p-4 bg-red-950/50 h-screen backdrop-blur-sm\", children: [\n /* @__PURE__ */ jsxs5(\"div\", { className: \"flex items-center gap-2 mb-3 text-red-400 font-medium\", children: [\n /* @__PURE__ */ jsx6(Icon, { name: \"icon-flame\", className: \"text-red-500\", size: 16 }),\n \"Something went wrong in the inspector\"\n ] }),\n /* @__PURE__ */ jsx6(\"div\", { className: \"p-3 bg-black/40 rounded font-mono text-xs text-red-300 mb-4 break-words\", children: this.state.error?.message || JSON.stringify(this.state.error) }),\n /* @__PURE__ */ jsx6(\n \"button\",\n {\n type: \"button\",\n onClick: this.handleReset,\n className: \"px-4 py-2 bg-red-500 hover:bg-red-600 text-white rounded-md text-sm font-medium transition-colors flex items-center justify-center gap-2\",\n children: \"Reset Inspector\"\n }\n )\n ] });\n }\n return this.props.children;\n }\n};\nvar inspectorContainerClassName = computed(\n () => cn(\n \"react-scan-inspector\",\n \"flex-1\",\n \"opacity-0\",\n \"overflow-y-auto overflow-x-hidden\",\n \"transition-opacity delay-0\",\n \"pointer-events-none\",\n !signalIsSettingsOpen.value && \"opacity-100 delay-300 pointer-events-auto\"\n )\n);\nvar Inspector = /* @__PURE__ */ constant(() => {\n const refLastInspectedFiber = useRef5(null);\n const processUpdate = (fiber) => {\n if (!fiber) return;\n refLastInspectedFiber.current = fiber;\n const { data: inspectorData, shouldUpdate } = collectInspectorData(fiber);\n if (shouldUpdate) {\n const update = {\n timestamp: Date.now(),\n fiberInfo: extractMinimalFiberInfo(fiber),\n props: inspectorData.fiberProps,\n state: inspectorData.fiberState,\n context: inspectorData.fiberContext,\n stateNames: getStateNames(fiber)\n };\n timelineActions.addUpdate(update, fiber);\n }\n };\n useSignalEffect(() => {\n const state = Store.inspectState.value;\n untracked(() => {\n if (state.kind !== \"focused\" || !state.focusedDomElement) {\n refLastInspectedFiber.current = null;\n globalInspectorState.cleanup();\n return;\n }\n if (state.kind === \"focused\") {\n signalIsSettingsOpen.value = false;\n }\n const { parentCompositeFiber } = getCompositeFiberFromElement(\n state.focusedDomElement,\n state.fiber\n );\n if (!parentCompositeFiber) {\n Store.inspectState.value = {\n kind: \"inspect-off\"\n };\n signalWidgetViews.value = {\n view: \"none\"\n };\n return;\n }\n const isNewComponent = refLastInspectedFiber.current?.type !== parentCompositeFiber.type;\n if (isNewComponent) {\n refLastInspectedFiber.current = parentCompositeFiber;\n globalInspectorState.cleanup();\n processUpdate(parentCompositeFiber);\n }\n });\n });\n useSignalEffect(() => {\n inspectorUpdateSignal.value;\n untracked(() => {\n const inspectState = Store.inspectState.value;\n if (inspectState.kind !== \"focused\" || !inspectState.focusedDomElement) {\n refLastInspectedFiber.current = null;\n globalInspectorState.cleanup();\n return;\n }\n const { parentCompositeFiber } = getCompositeFiberFromElement(\n inspectState.focusedDomElement,\n inspectState.fiber\n );\n if (!parentCompositeFiber) {\n Store.inspectState.value = {\n kind: \"inspect-off\"\n };\n signalWidgetViews.value = {\n view: \"none\"\n };\n return;\n }\n processUpdate(parentCompositeFiber);\n if (!inspectState.focusedDomElement.isConnected) {\n refLastInspectedFiber.current = null;\n globalInspectorState.cleanup();\n Store.inspectState.value = {\n kind: \"inspecting\",\n hoveredDomElement: null\n };\n }\n });\n });\n useEffect6(() => {\n return () => {\n globalInspectorState.cleanup();\n };\n }, []);\n return /* @__PURE__ */ jsx6(InspectorErrorBoundary, { children: /* @__PURE__ */ jsx6(\"div\", { className: inspectorContainerClassName, children: /* @__PURE__ */ jsx6(\"div\", { className: \"w-full h-full\", children: /* @__PURE__ */ jsx6(WhatChanged, {}) }) }) });\n});\nvar ViewInspector = /* @__PURE__ */ constant(() => {\n if (Store.inspectState.value.kind !== \"focused\") return null;\n return /* @__PURE__ */ jsxs5(InspectorErrorBoundary, { children: [\n /* @__PURE__ */ jsx6(Inspector, {}),\n /* @__PURE__ */ jsx6(ComponentsTree, {})\n ] });\n});\n\n// src/web/views/inspector/utils.ts\nvar getFiberFromElement = (element) => {\n if (\"__REACT_DEVTOOLS_GLOBAL_HOOK__\" in window) {\n const hook = window.__REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (!hook?.renderers) return null;\n for (const [, renderer] of Array.from(hook.renderers)) {\n try {\n const fiber = renderer.findFiberByHostInstance?.(element);\n if (fiber) return fiber;\n } catch {\n }\n }\n }\n if (\"_reactRootContainer\" in element) {\n const elementWithRoot = element;\n const rootContainer2 = elementWithRoot._reactRootContainer;\n return rootContainer2?._internalRoot?.current?.child ?? null;\n }\n for (const key in element) {\n if (key.startsWith(\"__reactInternalInstance$\") || key.startsWith(\"__reactFiber\")) {\n const elementWithFiber = element;\n return elementWithFiber[key];\n }\n }\n return null;\n};\nvar getFirstStateNode = (fiber) => {\n let current = fiber;\n while (current) {\n if (current.stateNode instanceof Element) {\n return current.stateNode;\n }\n if (!current.child) {\n break;\n }\n current = current.child;\n }\n while (current) {\n if (current.stateNode instanceof Element) {\n return current.stateNode;\n }\n if (!current.return) {\n break;\n }\n current = current.return;\n }\n return null;\n};\nvar getNearestFiberFromElement = (element) => {\n if (!element) return null;\n try {\n const fiber = getFiberFromElement(element);\n if (!fiber) return null;\n const res = getParentCompositeFiber(fiber);\n return res ? res[0] : null;\n } catch {\n return null;\n }\n};\nvar getParentCompositeFiber = (fiber) => {\n let current = fiber;\n let prevHost = null;\n while (current) {\n if (isCompositeFiber(current)) return [current, prevHost];\n if (isHostFiber(current) && !prevHost) prevHost = current;\n current = current.return;\n }\n return null;\n};\nvar isFiberInTree = (fiber, root) => {\n {\n const res = !!traverseFiber(root, (searchFiber) => searchFiber === fiber);\n return res;\n }\n};\nvar getAssociatedFiberRect = async (element) => {\n const associatedFiber = getNearestFiberFromElement(element);\n if (!associatedFiber) return null;\n const stateNode = getFirstStateNode(associatedFiber);\n if (!stateNode) return null;\n const rect = (await batchGetBoundingRects([stateNode])).get(stateNode);\n if (!rect) return null;\n return rect;\n};\nvar getCompositeComponentFromElement = (element) => {\n const associatedFiber = getNearestFiberFromElement(element);\n if (!associatedFiber) return {};\n const stateNode = getFirstStateNode(associatedFiber);\n if (!stateNode) return {};\n const parentCompositeFiberInfo = getParentCompositeFiber(associatedFiber);\n if (!parentCompositeFiberInfo) {\n return {};\n }\n const [parentCompositeFiber] = parentCompositeFiberInfo;\n return {\n parentCompositeFiber\n };\n};\nvar getCompositeFiberFromElement = (element, knownFiber) => {\n if (!element.isConnected) return {};\n let fiber = knownFiber ?? getNearestFiberFromElement(element);\n if (!fiber) return {};\n let curr = fiber;\n let rootFiber = null;\n let currentRootFiber = null;\n while (curr) {\n if (!curr.stateNode) {\n curr = curr.return;\n continue;\n }\n if (ReactScanInternals.instrumentation?.fiberRoots.has(curr.stateNode)) {\n rootFiber = curr;\n currentRootFiber = curr.stateNode.current;\n break;\n }\n curr = curr.return;\n }\n if (!rootFiber || !currentRootFiber) return {};\n fiber = isFiberInTree(fiber, currentRootFiber) ? fiber : fiber.alternate ?? fiber;\n if (!fiber) return {};\n if (!getFirstStateNode(fiber)) return {};\n const parentCompositeFiber = getParentCompositeFiber(fiber)?.[0];\n if (!parentCompositeFiber) return {};\n return {\n parentCompositeFiber: isFiberInTree(parentCompositeFiber, currentRootFiber) ? parentCompositeFiber : parentCompositeFiber.alternate ?? parentCompositeFiber\n };\n};\nvar getChangedPropsDetailed = (fiber) => {\n const currentProps = fiber.memoizedProps ?? {};\n const previousProps = fiber.alternate?.memoizedProps ?? {};\n const changes = [];\n for (const key in currentProps) {\n if (key === \"children\") continue;\n const currentValue = currentProps[key];\n const prevValue = previousProps[key];\n if (!isEqual(currentValue, prevValue)) {\n changes.push({\n name: key,\n value: currentValue,\n prevValue,\n type: 1 /* Props */\n });\n }\n }\n return changes;\n};\nvar nonVisualTags = /* @__PURE__ */ new Set([\n \"HTML\",\n \"HEAD\",\n \"META\",\n \"TITLE\",\n \"BASE\",\n \"SCRIPT\",\n \"SCRIPT\",\n \"STYLE\",\n \"LINK\",\n \"NOSCRIPT\",\n \"SOURCE\",\n \"TRACK\",\n \"EMBED\",\n \"OBJECT\",\n \"PARAM\",\n \"TEMPLATE\",\n \"PORTAL\",\n \"SLOT\",\n \"AREA\",\n \"XML\",\n \"DOCTYPE\",\n \"COMMENT\"\n]);\nvar findComponentDOMNode = (fiber, excludeNonVisualTags = true) => {\n if (fiber.stateNode && \"nodeType\" in fiber.stateNode) {\n const element = fiber.stateNode;\n if (excludeNonVisualTags && element.tagName && nonVisualTags.has(element.tagName.toLowerCase())) {\n return null;\n }\n return element;\n }\n let child = fiber.child;\n while (child) {\n const result = findComponentDOMNode(child, excludeNonVisualTags);\n if (result) return result;\n child = child.sibling;\n }\n return null;\n};\nvar getInspectableElements = (root = document.body) => {\n const result = [];\n const findInspectableFiber = (element) => {\n if (!element) return null;\n const { parentCompositeFiber } = getCompositeComponentFromElement(element);\n if (!parentCompositeFiber) return null;\n const componentRoot = findComponentDOMNode(parentCompositeFiber);\n return componentRoot === element ? element : null;\n };\n const traverse = (element, depth = 0) => {\n const inspectable = findInspectableFiber(element);\n if (inspectable) {\n const { parentCompositeFiber } = getCompositeComponentFromElement(inspectable);\n if (!parentCompositeFiber) return;\n result.push({\n element: inspectable,\n depth,\n name: getDisplayName3(parentCompositeFiber.type) ?? \"Unknown\",\n fiber: parentCompositeFiber\n });\n }\n for (const child of Array.from(element.children)) {\n traverse(child, inspectable ? depth + 1 : depth);\n }\n };\n traverse(root);\n return result;\n};\nvar formatForClipboard = (value) => {\n try {\n if (value === null) return \"null\";\n if (value === void 0) return \"undefined\";\n if (isPromise(value)) return \"Promise\";\n if (typeof value === \"function\") {\n const fnStr = value.toString();\n try {\n const formatted = fnStr.replace(/\\s+/g, \" \").replace(/{\\s+/g, \"{\\n \").replace(/;\\s+/g, \";\\n \").replace(/}\\s*$/g, \"\\n}\").replace(/\\(\\s+/g, \"(\").replace(/\\s+\\)/g, \")\").replace(/,\\s+/g, \", \");\n return formatted;\n } catch {\n return fnStr;\n }\n }\n switch (true) {\n case value instanceof Date:\n return value.toISOString();\n case value instanceof RegExp:\n return value.toString();\n case value instanceof Error:\n return `${value.name}: ${value.message}`;\n case value instanceof Map:\n return JSON.stringify(Array.from(value.entries()), null, 2);\n case value instanceof Set:\n return JSON.stringify(Array.from(value), null, 2);\n case value instanceof DataView:\n return JSON.stringify(\n Array.from(new Uint8Array(value.buffer)),\n null,\n 2\n );\n case value instanceof ArrayBuffer:\n return JSON.stringify(Array.from(new Uint8Array(value)), null, 2);\n case (ArrayBuffer.isView(value) && \"length\" in value):\n return JSON.stringify(\n Array.from(value),\n null,\n 2\n );\n case Array.isArray(value):\n return JSON.stringify(value, null, 2);\n case typeof value === \"object\":\n return JSON.stringify(value, null, 2);\n default:\n return String(value);\n }\n } catch {\n return String(value);\n }\n};\nvar areFunctionsEqual = (prev, current) => {\n try {\n if (typeof prev !== \"function\" || typeof current !== \"function\") {\n return false;\n }\n return prev.toString() === current.toString();\n } catch {\n return false;\n }\n};\nvar getObjectDiff = (prev, current, path = [], seen = /* @__PURE__ */ new WeakSet()) => {\n if (prev === current) {\n return { type: \"primitive\", changes: [], hasDeepChanges: false };\n }\n if (typeof prev === \"function\" && typeof current === \"function\") {\n const isSameFunction = areFunctionsEqual(prev, current);\n return {\n type: \"primitive\",\n changes: [\n {\n path,\n prevValue: prev,\n currentValue: current,\n sameFunction: isSameFunction\n }\n ],\n hasDeepChanges: !isSameFunction\n };\n }\n if (prev === null || current === null || prev === void 0 || current === void 0 || typeof prev !== \"object\" || typeof current !== \"object\") {\n return {\n type: \"primitive\",\n changes: [{ path, prevValue: prev, currentValue: current }],\n hasDeepChanges: true\n };\n }\n if (seen.has(prev) || seen.has(current)) {\n return {\n type: \"object\",\n changes: [{ path, prevValue: \"[Circular]\", currentValue: \"[Circular]\" }],\n hasDeepChanges: false\n };\n }\n seen.add(prev);\n seen.add(current);\n const prevObj = prev;\n const currentObj = current;\n const allKeys = /* @__PURE__ */ new Set([\n ...Object.keys(prevObj),\n ...Object.keys(currentObj)\n ]);\n const changes = [];\n let hasDeepChanges = false;\n for (const key of allKeys) {\n const prevValue = prevObj[key];\n const currentValue = currentObj[key];\n if (prevValue !== currentValue) {\n if (typeof prevValue === \"object\" && typeof currentValue === \"object\" && prevValue !== null && currentValue !== null) {\n const nestedDiff = getObjectDiff(\n prevValue,\n currentValue,\n [...path, key],\n seen\n );\n changes.push(...nestedDiff.changes);\n if (nestedDiff.hasDeepChanges) {\n hasDeepChanges = true;\n }\n } else {\n changes.push({\n path: [...path, key],\n prevValue,\n currentValue\n });\n hasDeepChanges = true;\n }\n }\n }\n return {\n type: \"object\",\n changes,\n hasDeepChanges\n };\n};\nvar formatPath = (path) => {\n if (path.length === 0) return \"\";\n return path.reduce((acc, segment, i) => {\n if (/^\\d+$/.test(segment)) {\n return `${acc}[${segment}]`;\n }\n return i === 0 ? segment : `${acc}.${segment}`;\n }, \"\");\n};\nfunction hackyJsFormatter(code) {\n const normalizedCode = code.replace(/\\s+/g, \" \").trim();\n const rawTokens = [];\n let current = \"\";\n for (let i = 0; i < normalizedCode.length; i++) {\n const c = normalizedCode[i];\n if (c === \"=\" && normalizedCode[i + 1] === \">\") {\n if (current.trim()) rawTokens.push(current.trim());\n rawTokens.push(\"=>\");\n current = \"\";\n i++;\n continue;\n }\n if (/[(){}[\\];,<>:\\?!]/.test(c)) {\n if (current.trim()) {\n rawTokens.push(current.trim());\n }\n rawTokens.push(c);\n current = \"\";\n } else if (/\\s/.test(c)) {\n if (current.trim()) {\n rawTokens.push(current.trim());\n }\n current = \"\";\n } else {\n current += c;\n }\n }\n if (current.trim()) {\n rawTokens.push(current.trim());\n }\n const merged = [];\n for (let i = 0; i < rawTokens.length; i++) {\n const t = rawTokens[i];\n const n = rawTokens[i + 1];\n if (t === \"(\" && n === \")\" || t === \"[\" && n === \"]\" || t === \"{\" && n === \"}\" || t === \"<\" && n === \">\") {\n merged.push(t + n);\n i++;\n } else {\n merged.push(t);\n }\n }\n const arrowParamSet = /* @__PURE__ */ new Set();\n const genericSet = /* @__PURE__ */ new Set();\n function findMatchingPair(openTok, closeTok, startIndex) {\n let depth = 0;\n for (let j = startIndex; j < merged.length; j++) {\n const token = merged[j];\n if (token === openTok) depth++;\n else if (token === closeTok) {\n depth--;\n if (depth === 0) return j;\n }\n }\n return -1;\n }\n for (let i = 0; i < merged.length; i++) {\n const t = merged[i];\n if (t === \"(\") {\n const closeIndex = findMatchingPair(\"(\", \")\", i);\n if (closeIndex !== -1 && merged[closeIndex + 1] === \"=>\") {\n for (let k = i; k <= closeIndex; k++) {\n arrowParamSet.add(k);\n }\n }\n }\n }\n for (let i = 1; i < merged.length; i++) {\n const prev = merged[i - 1];\n const t = merged[i];\n if (/^[a-zA-Z0-9_$]+$/.test(prev) && t === \"<\") {\n const closeIndex = findMatchingPair(\"<\", \">\", i);\n if (closeIndex !== -1) {\n for (let k = i; k <= closeIndex; k++) {\n genericSet.add(k);\n }\n }\n }\n }\n let indentLevel = 0;\n const indentStr = \" \";\n const lines = [];\n let line = \"\";\n function pushLine() {\n if (line.trim()) {\n lines.push(line.replace(/\\s+$/, \"\"));\n }\n line = \"\";\n }\n function newLine() {\n pushLine();\n line = indentStr.repeat(indentLevel);\n }\n const stack = [];\n function stackTop() {\n return stack.length ? stack[stack.length - 1] : null;\n }\n function placeToken(tok, noSpaceBefore = false) {\n if (!line.trim()) {\n line += tok;\n } else {\n if (noSpaceBefore || /^[),;:\\].}>]$/.test(tok)) {\n line += tok;\n } else {\n line += ` ${tok}`;\n }\n }\n }\n for (let i = 0; i < merged.length; i++) {\n const tok = merged[i];\n const next = merged[i + 1] || \"\";\n if ([\"(\", \"{\", \"[\", \"<\"].includes(tok)) {\n placeToken(tok);\n stack.push(tok);\n if (tok === \"{\") {\n indentLevel++;\n newLine();\n } else if (tok === \"(\" || tok === \"[\" || tok === \"<\") {\n if (arrowParamSet.has(i) && tok === \"(\" || genericSet.has(i) && tok === \"<\") {\n } else {\n const directClose = {\n \"(\": \")\",\n \"[\": \"]\",\n \"<\": \">\"\n }[tok];\n if (next !== directClose && next !== \"()\" && next !== \"[]\" && next !== \"<>\") {\n indentLevel++;\n newLine();\n }\n }\n }\n } else if ([\")\", \"}\", \"]\", \">\"].includes(tok)) {\n const opening = stackTop();\n if (tok === \")\" && opening === \"(\" || tok === \"]\" && opening === \"[\" || tok === \">\" && opening === \"<\") {\n if (!(arrowParamSet.has(i) && tok === \")\") && !(genericSet.has(i) && tok === \">\")) {\n indentLevel = Math.max(indentLevel - 1, 0);\n newLine();\n }\n } else if (tok === \"}\" && opening === \"{\") {\n indentLevel = Math.max(indentLevel - 1, 0);\n newLine();\n }\n stack.pop();\n placeToken(tok);\n if (tok === \"}\") {\n newLine();\n }\n } else if (/^\\(\\)|\\[\\]|\\{\\}|\\<\\>$/.test(tok)) {\n placeToken(tok);\n } else if (tok === \"=>\") {\n placeToken(tok);\n } else if (tok === \";\") {\n placeToken(tok, true);\n newLine();\n } else if (tok === \",\") {\n placeToken(tok, true);\n const top = stackTop();\n if (!(arrowParamSet.has(i) && top === \"(\") && !(genericSet.has(i) && top === \"<\")) {\n if (top && [\"{\", \"[\", \"(\", \"<\"].includes(top)) {\n newLine();\n }\n }\n } else {\n placeToken(tok);\n }\n }\n pushLine();\n return lines.join(\"\\n\").replace(/\\n\\s*\\n+/g, \"\\n\").trim();\n}\nvar formatFunctionPreview = (fn, expanded = false) => {\n try {\n const fnStr = fn.toString();\n const match = fnStr.match(\n /(?:function\\s*)?(?:\\(([^)]*)\\)|([^=>\\s]+))\\s*=>?/\n );\n if (!match) return \"\\u0192\";\n const params = match[1] || match[2] || \"\";\n const cleanParams = params.replace(/\\s+/g, \"\");\n if (!expanded) {\n return `\\u0192 (${cleanParams}) => ...`;\n }\n return hackyJsFormatter(fnStr);\n } catch {\n return \"\\u0192\";\n }\n};\nvar formatValuePreview = (value) => {\n if (value === null) return \"null\";\n if (value === void 0) return \"undefined\";\n if (typeof value === \"string\")\n return `\"${value.length > 150 ? `${value.slice(0, 20)}...` : value}\"`;\n if (typeof value === \"number\" || typeof value === \"boolean\")\n return String(value);\n if (typeof value === \"function\") return formatFunctionPreview(value);\n if (Array.isArray(value)) return `Array(${value.length})`;\n if (value instanceof Map) return `Map(${value.size})`;\n if (value instanceof Set) return `Set(${value.size})`;\n if (value instanceof Date) return value.toISOString();\n if (value instanceof RegExp) return value.toString();\n if (value instanceof Error) return `${value.name}: ${value.message}`;\n if (typeof value === \"object\") {\n const keys = Object.keys(value);\n return `{${keys.length > 2 ? `${keys.slice(0, 2).join(\", \")}, ...` : keys.join(\", \")}}`;\n }\n return String(value);\n};\nvar safeGetValue = (value) => {\n if (value === null || value === void 0) return { value };\n if (typeof value === \"function\") return { value };\n if (typeof value !== \"object\") return { value };\n if (value instanceof Promise) {\n return { value: \"Promise\" };\n }\n try {\n const proto = Object.getPrototypeOf(value);\n if (proto === Promise.prototype || proto?.constructor?.name === \"Promise\") {\n return { value: \"Promise\" };\n }\n return { value };\n } catch {\n return { value: null, error: \"Error accessing value\" };\n }\n};\nvar isPromise = (value) => {\n return !!value && (value instanceof Promise || typeof value === \"object\" && \"then\" in value);\n};\nvar extractMinimalFiberInfo = (fiber) => {\n const timings = getTimings(fiber);\n return {\n displayName: getDisplayName3(fiber) || \"Unknown\",\n type: fiber.type,\n key: fiber.key,\n id: fiber.index,\n selfTime: timings?.selfTime ?? null,\n totalTime: timings?.totalTime ?? null\n };\n};\n\n// src/web/views/inspector/timeline/utils.ts\nvar propsTracker = /* @__PURE__ */ new Map();\nvar stateTracker = /* @__PURE__ */ new Map();\nvar contextTracker = /* @__PURE__ */ new Map();\nvar lastComponentType = null;\nvar STATE_NAME_REGEX = /\\[(?<name>\\w+),\\s*set\\w+\\]/g;\nvar getStateNames = (fiber) => {\n const componentSource = fiber.type?.toString?.() || \"\";\n return componentSource ? Array.from(\n componentSource.matchAll(STATE_NAME_REGEX),\n (m) => m.groups?.name ?? \"\"\n ) : [];\n};\nvar resetTracking = () => {\n propsTracker.clear();\n stateTracker.clear();\n contextTracker.clear();\n lastComponentType = null;\n};\nvar isInitialComponentUpdate = (fiber) => {\n const isNewComponent = fiber.type !== lastComponentType;\n lastComponentType = fiber.type;\n return isNewComponent;\n};\nvar trackChange = (tracker, key, currentValue, previousValue) => {\n const existing = tracker.get(key);\n const isInitialValue = tracker === propsTracker || tracker === contextTracker;\n const hasChanged = !isEqual(currentValue, previousValue);\n if (!existing) {\n tracker.set(key, {\n count: hasChanged && isInitialValue ? 1 : 0,\n currentValue,\n previousValue,\n lastUpdated: Date.now()\n });\n return {\n hasChanged,\n count: hasChanged && isInitialValue ? 1 : isInitialValue ? 0 : 1\n };\n }\n if (!isEqual(existing.currentValue, currentValue)) {\n const newCount = existing.count + 1;\n tracker.set(key, {\n count: newCount,\n currentValue,\n previousValue: existing.currentValue,\n lastUpdated: Date.now()\n });\n return { hasChanged: true, count: newCount };\n }\n return { hasChanged: false, count: existing.count };\n};\nvar getStateFromFiber = (fiber) => {\n if (!fiber) return {};\n if (fiber.tag === FunctionComponentTag2 || fiber.tag === ForwardRefTag || fiber.tag === SimpleMemoComponentTag2 || fiber.tag === MemoComponentTag2) {\n let memoizedState = fiber.memoizedState;\n const state = {};\n let index = 0;\n while (memoizedState) {\n if (memoizedState.queue && memoizedState.memoizedState !== void 0) {\n state[index] = memoizedState.memoizedState;\n }\n memoizedState = memoizedState.next;\n index++;\n }\n return state;\n }\n if (fiber.tag === ClassComponentTag) {\n return fiber.memoizedState || {};\n }\n return {};\n};\nvar collectPropsChanges = (fiber) => {\n const currentProps = fiber.memoizedProps || {};\n const prevProps = fiber.alternate?.memoizedProps || {};\n const current = {};\n const prev = {};\n const allProps = Object.keys(currentProps);\n for (const key of allProps) {\n if (key in currentProps) {\n current[key] = currentProps[key];\n prev[key] = prevProps[key];\n }\n }\n const changes = getChangedPropsDetailed(fiber).map((change) => ({\n name: change.name,\n value: change.value,\n prevValue: change.prevValue\n }));\n return { current, prev, changes };\n};\nvar collectStateChanges = (fiber) => {\n const current = getStateFromFiber(fiber);\n const prev = fiber.alternate ? getStateFromFiber(fiber.alternate) : {};\n const changes = [];\n for (const [index, value] of Object.entries(current)) {\n const stateKey = fiber.tag === ClassComponentTag ? index : Number(index);\n if (fiber.alternate && !isEqual(prev[index], value)) {\n changes.push({\n name: stateKey,\n value,\n prevValue: prev[index]\n });\n }\n }\n return { current, prev, changes };\n};\nvar collectContextChanges = (fiber) => {\n const currentContexts = getAllFiberContexts(fiber);\n const prevContexts = fiber.alternate ? getAllFiberContexts(fiber.alternate) : /* @__PURE__ */ new Map();\n const current = {};\n const prev = {};\n const changes = [];\n const seenContexts = /* @__PURE__ */ new Set();\n for (const [contextType, ctx2] of currentContexts) {\n const name = ctx2.displayName;\n const contextKey = contextType;\n if (seenContexts.has(contextKey)) continue;\n seenContexts.add(contextKey);\n current[name] = ctx2.value;\n const prevCtx = prevContexts.get(contextType);\n if (prevCtx) {\n prev[name] = prevCtx.value;\n if (!isEqual(prevCtx.value, ctx2.value)) {\n changes.push({\n name,\n value: ctx2.value,\n prevValue: prevCtx.value,\n contextType\n });\n }\n }\n }\n return { current, prev, changes };\n};\nvar collectInspectorData = (fiber) => {\n const emptySection = () => ({\n current: [],\n changes: /* @__PURE__ */ new Set(),\n changesCounts: /* @__PURE__ */ new Map()\n });\n if (!fiber) {\n return {\n data: {\n fiberProps: emptySection(),\n fiberState: emptySection(),\n fiberContext: emptySection()\n },\n shouldUpdate: false\n };\n }\n let hasNewChanges = false;\n const isInitialUpdate = isInitialComponentUpdate(fiber);\n const propsData = emptySection();\n if (fiber.memoizedProps) {\n const { current, changes } = collectPropsChanges(fiber);\n for (const [key, value] of Object.entries(current)) {\n propsData.current.push({\n name: key,\n value: isPromise(value) ? { type: \"promise\", displayValue: \"Promise\" } : value\n });\n }\n for (const change of changes) {\n const { hasChanged, count } = trackChange(\n propsTracker,\n change.name,\n change.value,\n change.prevValue\n );\n if (hasChanged) {\n hasNewChanges = true;\n propsData.changes.add(change.name);\n propsData.changesCounts.set(change.name, count);\n }\n }\n }\n const stateData = emptySection();\n const { current: stateCurrent, changes: stateChanges } = collectStateChanges(fiber);\n for (const [index, value] of Object.entries(stateCurrent)) {\n const stateKey = fiber.tag === ClassComponentTag ? index : Number(index);\n stateData.current.push({ name: stateKey, value });\n }\n for (const change of stateChanges) {\n const { hasChanged, count } = trackChange(\n stateTracker,\n change.name,\n change.value,\n change.prevValue\n );\n if (hasChanged) {\n hasNewChanges = true;\n stateData.changes.add(change.name);\n stateData.changesCounts.set(change.name, count);\n }\n }\n const contextData = emptySection();\n const { current: contextCurrent, changes: contextChanges } = collectContextChanges(fiber);\n for (const [name, value] of Object.entries(contextCurrent)) {\n contextData.current.push({ name, value });\n }\n if (!isInitialUpdate) {\n for (const change of contextChanges) {\n const { hasChanged, count } = trackChange(\n contextTracker,\n change.name,\n change.value,\n change.prevValue\n );\n if (hasChanged) {\n hasNewChanges = true;\n contextData.changes.add(change.name);\n contextData.changesCounts.set(change.name, count);\n }\n }\n }\n if (!hasNewChanges && !isInitialUpdate) {\n propsData.changes.clear();\n stateData.changes.clear();\n contextData.changes.clear();\n }\n return {\n data: {\n fiberProps: propsData,\n fiberState: stateData,\n fiberContext: contextData\n },\n shouldUpdate: hasNewChanges || isInitialUpdate\n };\n};\nvar fiberContextsCache = /* @__PURE__ */ new WeakMap();\nvar getAllFiberContexts = (fiber) => {\n if (!fiber) {\n return /* @__PURE__ */ new Map();\n }\n const cachedContexts = fiberContextsCache.get(fiber);\n if (cachedContexts) {\n return cachedContexts;\n }\n const contexts = /* @__PURE__ */ new Map();\n let currentFiber = fiber;\n while (currentFiber) {\n const dependencies = currentFiber.dependencies;\n if (dependencies?.firstContext) {\n let contextItem = dependencies.firstContext;\n while (contextItem) {\n const memoizedValue = contextItem.memoizedValue;\n const displayName = contextItem.context?.displayName;\n if (!contexts.has(memoizedValue)) {\n contexts.set(contextItem.context, {\n value: memoizedValue,\n displayName: displayName ?? \"UnnamedContext\",\n contextType: null\n });\n }\n if (contextItem === contextItem.next) {\n break;\n }\n contextItem = contextItem.next;\n }\n }\n currentFiber = currentFiber.return;\n }\n fiberContextsCache.set(fiber, contexts);\n return contexts;\n};\nvar collectInspectorDataWithoutCounts = (fiber) => {\n const emptySection = () => ({\n current: [],\n changes: /* @__PURE__ */ new Set(),\n changesCounts: /* @__PURE__ */ new Map()\n });\n if (!fiber) {\n return {\n fiberProps: emptySection(),\n fiberState: emptySection(),\n fiberContext: emptySection()\n };\n }\n const propsData = emptySection();\n if (fiber.memoizedProps) {\n const { current: current2, changes: changes2 } = collectPropsChanges(fiber);\n for (const [key, value] of Object.entries(current2)) {\n propsData.current.push({\n name: key,\n value: isPromise(value) ? { type: \"promise\", displayValue: \"Promise\" } : value\n });\n }\n for (const change of changes2) {\n propsData.changes.add(change.name);\n propsData.changesCounts.set(change.name, 1);\n }\n }\n const stateData = emptySection();\n if (fiber.memoizedState) {\n const { current: current2, changes: changes2 } = collectStateChanges(fiber);\n for (const [key, value] of Object.entries(current2)) {\n stateData.current.push({\n name: key,\n value: isPromise(value) ? { type: \"promise\", displayValue: \"Promise\" } : value\n });\n }\n for (const change of changes2) {\n stateData.changes.add(change.name);\n stateData.changesCounts.set(change.name, 1);\n }\n }\n const contextData = emptySection();\n const { current, changes } = collectContextChanges(fiber);\n for (const [key, value] of Object.entries(current)) {\n contextData.current.push({\n name: key,\n value: isPromise(value) ? { type: \"promise\", displayValue: \"Promise\" } : value\n });\n }\n for (const change of changes) {\n contextData.changes.add(change.name);\n contextData.changesCounts.set(change.name, 1);\n }\n return {\n // data: {\n fiberProps: propsData,\n fiberState: stateData,\n fiberContext: contextData\n // },\n };\n};\n\n// src/core/instrumentation.ts\nvar fps = 0;\nvar lastTime = performance.now();\nvar frameCount = 0;\nvar initedFps = false;\nvar updateFPS = () => {\n frameCount++;\n const now = performance.now();\n if (now - lastTime >= 1e3) {\n fps = frameCount;\n frameCount = 0;\n lastTime = now;\n }\n requestAnimationFrame(updateFPS);\n};\nvar getFPS = () => {\n if (!initedFps) {\n initedFps = true;\n updateFPS();\n fps = 60;\n }\n return fps;\n};\nvar isValueUnstable = (prevValue, nextValue) => {\n const prevValueString = fastSerialize(prevValue);\n const nextValueString = fastSerialize(nextValue);\n return prevValueString === nextValueString && unstableTypes.includes(typeof prevValue) && unstableTypes.includes(typeof nextValue);\n};\nvar unstableTypes = [\"function\", \"object\"];\nvar cache = /* @__PURE__ */ new WeakMap();\nfunction fastSerialize(value, depth = 0) {\n if (depth < 0) return \"\\u2026\";\n switch (typeof value) {\n case \"function\":\n return value.toString();\n case \"string\":\n return value;\n case \"number\":\n case \"boolean\":\n case \"undefined\":\n return String(value);\n case \"object\":\n break;\n default:\n return String(value);\n }\n if (value === null) return \"null\";\n if (cache.has(value)) {\n const cached = cache.get(value);\n if (cached !== void 0) {\n return cached;\n }\n }\n if (Array.isArray(value)) {\n const str2 = value.length ? `[${value.length}]` : \"[]\";\n cache.set(value, str2);\n return str2;\n }\n if (isValidElement(value)) {\n const type = getDisplayName4(value.type) ?? \"\";\n const propCount = value.props ? Object.keys(value.props).length : 0;\n const str2 = `<${type} ${propCount}>`;\n cache.set(value, str2);\n return str2;\n }\n if (Object.getPrototypeOf(value) === Object.prototype) {\n const keys = Object.keys(value);\n const str2 = keys.length ? `{${keys.length}}` : \"{}\";\n cache.set(value, str2);\n return str2;\n }\n const ctor = value && typeof value === \"object\" ? value.constructor : void 0;\n if (ctor && typeof ctor === \"function\" && ctor.name) {\n const str2 = `${ctor.name}{\\u2026}`;\n cache.set(value, str2);\n return str2;\n }\n const tagString = Object.prototype.toString.call(value).slice(8, -1);\n const str = `${tagString}{\\u2026}`;\n cache.set(value, str);\n return str;\n}\nvar getStateChanges = (fiber) => {\n if (!fiber) return [];\n const changes = [];\n if (fiber.tag === FunctionComponentTag3 || fiber.tag === ForwardRefTag2 || fiber.tag === SimpleMemoComponentTag3 || fiber.tag === MemoComponentTag3) {\n let memoizedState = fiber.memoizedState;\n let prevState = fiber.alternate?.memoizedState;\n let index = 0;\n while (memoizedState) {\n if (memoizedState.queue && memoizedState.memoizedState !== void 0) {\n const change = {\n type: 2 /* FunctionalState */,\n name: index.toString(),\n value: memoizedState.memoizedState,\n prevValue: prevState?.memoizedState\n };\n if (!isEqual(change.prevValue, change.value)) {\n changes.push(change);\n }\n }\n memoizedState = memoizedState.next;\n prevState = prevState?.next;\n index++;\n }\n return changes;\n }\n if (fiber.tag === ClassComponentTag2) {\n const change = {\n type: 3 /* ClassState */,\n name: \"state\",\n value: fiber.memoizedState,\n prevValue: fiber.alternate?.memoizedState\n };\n if (!isEqual(change.prevValue, change.value)) {\n changes.push(change);\n }\n return changes;\n }\n return changes;\n};\nvar lastContextId = 0;\nvar contextIdMap = /* @__PURE__ */ new WeakMap();\nvar getContextId = (contextFiber) => {\n const existing = contextIdMap.get(contextFiber);\n if (existing) {\n return existing;\n }\n lastContextId++;\n contextIdMap.set(contextFiber, lastContextId);\n return lastContextId;\n};\nfunction getContextChangesTraversal(nextValue, prevValue) {\n if (!nextValue || !prevValue) return;\n const nextMemoizedValue = nextValue.memoizedValue;\n const change = {\n type: 4 /* Context */,\n name: nextValue.context.displayName ?? \"Context.Provider\",\n value: nextMemoizedValue,\n contextType: getContextId(nextValue.context)\n // unstable: false,\n };\n this.push(change);\n}\nvar getContextChanges = (fiber) => {\n const changes = [];\n traverseContexts(fiber, getContextChangesTraversal.bind(changes));\n return changes;\n};\nvar instrumentationInstances = /* @__PURE__ */ new Map();\nvar inited = false;\nvar getAllInstances = () => Array.from(instrumentationInstances.values());\nfunction isRenderUnnecessaryTraversal(_propsName, prevValue, nextValue) {\n if (!isEqual(prevValue, nextValue) && !isValueUnstable(prevValue, nextValue)) {\n this.isRequiredChange = true;\n }\n}\nvar isRenderUnnecessary = (fiber) => {\n if (!didFiberCommit(fiber)) return true;\n const mutatedHostFibers = getMutatedHostFibers(fiber);\n for (const mutatedHostFiber of mutatedHostFibers) {\n const state = {\n isRequiredChange: false\n };\n traverseProps(mutatedHostFiber, isRenderUnnecessaryTraversal.bind(state));\n if (state.isRequiredChange) return false;\n }\n return true;\n};\nvar TRACK_UNNECESSARY_RENDERS = false;\nvar RENDER_DEBOUNCE_MS = 16;\nvar renderDataMap = /* @__PURE__ */ new WeakMap();\nfunction getFiberIdentifier(fiber) {\n return String(getFiberId2(fiber));\n}\nfunction getRenderData(fiber) {\n const id = getFiberIdentifier(fiber);\n const keyMap = renderDataMap.get(getType3(fiber));\n if (keyMap) {\n return keyMap.get(id);\n }\n return void 0;\n}\nfunction setRenderData(fiber, value) {\n const type = getType3(fiber.type);\n const id = getFiberIdentifier(fiber);\n let keyMap = renderDataMap.get(type);\n if (!keyMap) {\n keyMap = /* @__PURE__ */ new Map();\n renderDataMap.set(type, keyMap);\n }\n keyMap.set(id, value);\n}\nvar trackRender = (fiber, fiberSelfTime, fiberTotalTime, hasChanges, hasDomMutations) => {\n const currentTimestamp = Date.now();\n const existingData = getRenderData(fiber);\n if ((hasChanges || hasDomMutations) && (!existingData || currentTimestamp - (existingData.lastRenderTimestamp || 0) > RENDER_DEBOUNCE_MS)) {\n const renderData = existingData || {\n selfTime: 0,\n totalTime: 0,\n renderCount: 0,\n lastRenderTimestamp: currentTimestamp\n };\n renderData.renderCount = (renderData.renderCount || 0) + 1;\n renderData.selfTime = fiberSelfTime || 0;\n renderData.totalTime = fiberTotalTime || 0;\n renderData.lastRenderTimestamp = currentTimestamp;\n setRenderData(fiber, { ...renderData });\n }\n};\nvar createInstrumentation = (instanceKey, config) => {\n const instrumentation = {\n // this will typically be false, but in cases where a user provides showToolbar: true, this will be true\n isPaused: signal5(!ReactScanInternals.options.value.enabled),\n fiberRoots: /* @__PURE__ */ new WeakSet()\n };\n instrumentationInstances.set(instanceKey, {\n key: instanceKey,\n config,\n instrumentation\n });\n if (!inited) {\n inited = true;\n instrument({\n name: \"react-scan\",\n onActive: config.onActive,\n onCommitFiberRoot(_rendererID, root) {\n instrumentation.fiberRoots.add(root);\n const allInstances = getAllInstances();\n for (const instance of allInstances) {\n instance.config.onCommitStart();\n }\n traverseRenderedFibers(\n root.current,\n (fiber, phase) => {\n const type = getType3(fiber.type);\n if (!type) return null;\n const allInstances2 = getAllInstances();\n const validInstancesIndicies = [];\n for (let i = 0, len = allInstances2.length; i < len; i++) {\n const instance = allInstances2[i];\n if (!instance.config.isValidFiber(fiber)) continue;\n validInstancesIndicies.push(i);\n }\n if (!validInstancesIndicies.length) return null;\n const changes = [];\n if (allInstances2.some((instance) => instance.config.trackChanges)) {\n const changesProps = collectPropsChanges(fiber).changes;\n const changesState = collectStateChanges(fiber).changes;\n const changesContext = collectContextChanges(fiber).changes;\n changes.push.apply(\n null,\n changesProps.map(\n (change) => ({\n type: 1 /* Props */,\n name: change.name,\n value: change.value\n })\n )\n );\n for (const change of changesState) {\n if (fiber.tag === ClassComponentTag2) {\n changes.push({\n type: 3 /* ClassState */,\n name: change.name.toString(),\n value: change.value\n });\n } else {\n changes.push({\n type: 2 /* FunctionalState */,\n name: change.name.toString(),\n value: change.value\n });\n }\n }\n changes.push.apply(\n null,\n changesContext.map(\n (change) => ({\n type: 4 /* Context */,\n name: change.name,\n value: change.value,\n contextType: Number(change.contextType)\n })\n )\n );\n }\n const { selfTime: fiberSelfTime, totalTime: fiberTotalTime } = getTimings2(fiber);\n const fps2 = getFPS();\n const render2 = {\n phase: RENDER_PHASE_STRING_TO_ENUM[phase],\n componentName: getDisplayName4(type),\n count: 1,\n changes,\n time: fiberSelfTime,\n forget: hasMemoCache2(fiber),\n // todo: allow this to be toggle-able through toolbar\n // todo: performance optimization: if the last fiber measure was very off screen, do not run isRenderUnnecessary\n unnecessary: TRACK_UNNECESSARY_RENDERS ? isRenderUnnecessary(fiber) : null,\n didCommit: didFiberCommit(fiber),\n fps: fps2\n };\n const hasChanges = changes.length > 0;\n const hasDomMutations = getMutatedHostFibers(fiber).length > 0;\n if (phase === \"update\") {\n trackRender(\n fiber,\n fiberSelfTime,\n fiberTotalTime,\n hasChanges,\n hasDomMutations\n );\n }\n for (let i = 0, len = validInstancesIndicies.length; i < len; i++) {\n const index = validInstancesIndicies[i];\n const instance = allInstances2[index];\n instance.config.onRender(fiber, [render2]);\n }\n }\n );\n for (const instance of allInstances) {\n instance.config.onCommitFinish();\n }\n },\n onPostCommitFiberRoot() {\n const allInstances = getAllInstances();\n for (const instance of allInstances) {\n instance.config.onPostCommitFiberRoot();\n }\n }\n });\n }\n return instrumentation;\n};\n\n// src/web/utils/log.ts\nvar log = (renders) => {\n const logMap = /* @__PURE__ */ new Map();\n for (let i = 0, len = renders.length; i < len; i++) {\n const render2 = renders[i];\n if (!render2.componentName) continue;\n const changeLog = logMap.get(render2.componentName) ?? [];\n renders;\n const labelText = getLabelText([\n {\n aggregatedCount: 1,\n computedKey: null,\n name: render2.componentName,\n frame: null,\n ...render2,\n changes: {\n // TODO(Alexis): use a faster reduction method\n type: render2.changes.reduce((set, change) => set | change.type, 0),\n unstable: render2.changes.some((change) => change.unstable)\n },\n phase: render2.phase,\n computedCurrent: null\n }\n ]);\n if (!labelText) continue;\n let prevChangedProps = null;\n let nextChangedProps = null;\n if (render2.changes) {\n for (let i2 = 0, len2 = render2.changes.length; i2 < len2; i2++) {\n const { name, prevValue, nextValue, unstable, type } = render2.changes[i2];\n if (type === 1 /* Props */) {\n prevChangedProps ??= {};\n nextChangedProps ??= {};\n prevChangedProps[`${unstable ? \"\\u26A0\\uFE0F\" : \"\"}${name} (prev)`] = prevValue;\n nextChangedProps[`${unstable ? \"\\u26A0\\uFE0F\" : \"\"}${name} (next)`] = nextValue;\n } else {\n changeLog.push({\n prev: prevValue,\n next: nextValue,\n type: type === 4 /* Context */ ? \"context\" : \"state\",\n unstable: unstable ?? false\n });\n }\n }\n }\n if (prevChangedProps && nextChangedProps) {\n changeLog.push({\n prev: prevChangedProps,\n next: nextChangedProps,\n type: \"props\",\n unstable: false\n });\n }\n logMap.set(labelText, changeLog);\n }\n for (const [name, changeLog] of Array.from(logMap.entries())) {\n console.group(\n `%c${name}`,\n \"background: hsla(0,0%,70%,.3); border-radius:3px; padding: 0 2px;\"\n );\n for (const { type, prev, next, unstable } of changeLog) {\n console.log(`${type}:`, unstable ? \"\\u26A0\\uFE0F\" : \"\", prev, \"!==\", next);\n }\n console.groupEnd();\n }\n};\nvar logIntro = () => {\n if (window.hideIntro) {\n window.hideIntro = void 0;\n return;\n }\n console.log(\n \"%c[\\xB7] %cReact Scan\",\n \"font-weight:bold;color:#7a68e8;font-size:20px;\",\n \"font-weight:bold;font-size:14px;\"\n );\n console.log(\n \"Try React Scan Monitoring to target performance issues in production: https://react-scan.com/monitoring\"\n );\n};\n\n// src/new-outlines/canvas.ts\nvar OUTLINE_ARRAY_SIZE = 7;\nvar MONO_FONT = \"Menlo,Consolas,Monaco,Liberation Mono,Lucida Console,monospace\";\nvar INTERPOLATION_SPEED = 0.1;\nvar lerp = (start2, end) => {\n return Math.floor(start2 + (end - start2) * INTERPOLATION_SPEED);\n};\nvar MAX_PARTS_LENGTH = 4;\nvar MAX_LABEL_LENGTH = 40;\nvar TOTAL_FRAMES = 45;\nvar PRIMARY_COLOR = \"115,97,230\";\nfunction sortEntry(prev, next) {\n return next[0] - prev[0];\n}\nfunction getSortedEntries(countByNames) {\n const entries = [...countByNames.entries()];\n return entries.sort(sortEntry);\n}\nfunction getLabelTextPart([count, names]) {\n let part = `${names.slice(0, MAX_PARTS_LENGTH).join(\", \")} \\xD7${count}`;\n if (part.length > MAX_LABEL_LENGTH) {\n part = `${part.slice(0, MAX_LABEL_LENGTH)}\\u2026`;\n }\n return part;\n}\nvar getLabelText2 = (outlines) => {\n const nameByCount = /* @__PURE__ */ new Map();\n for (const { name, count } of outlines) {\n nameByCount.set(name, (nameByCount.get(name) || 0) + count);\n }\n const countByNames = /* @__PURE__ */ new Map();\n for (const [name, count] of nameByCount) {\n const names = countByNames.get(count);\n if (names) {\n names.push(name);\n } else {\n countByNames.set(count, [name]);\n }\n }\n const partsEntries = getSortedEntries(countByNames);\n let labelText = getLabelTextPart(partsEntries[0]);\n for (let i = 1, len = partsEntries.length; i < len; i++) {\n labelText += \", \" + getLabelTextPart(partsEntries[i]);\n }\n if (labelText.length > MAX_LABEL_LENGTH) {\n return `${labelText.slice(0, MAX_LABEL_LENGTH)}\\u2026`;\n }\n return labelText;\n};\nvar getAreaFromOutlines = (outlines) => {\n let area = 0;\n for (const outline of outlines) {\n area += outline.width * outline.height;\n }\n return area;\n};\nvar updateOutlines = (activeOutlines2, outlines) => {\n for (const { id, name, count, x, y, width, height, didCommit } of outlines) {\n const outline = {\n id,\n name,\n count,\n x,\n y,\n width,\n height,\n frame: 0,\n targetX: x,\n targetY: y,\n targetWidth: width,\n targetHeight: height,\n didCommit\n };\n const key = String(outline.id);\n const existingOutline = activeOutlines2.get(key);\n if (existingOutline) {\n existingOutline.count++;\n existingOutline.frame = 0;\n existingOutline.targetX = x;\n existingOutline.targetY = y;\n existingOutline.targetWidth = width;\n existingOutline.targetHeight = height;\n existingOutline.didCommit = didCommit;\n } else {\n activeOutlines2.set(key, outline);\n }\n }\n};\nvar updateScroll = (activeOutlines2, deltaX, deltaY) => {\n for (const outline of activeOutlines2.values()) {\n const newX = outline.x - deltaX;\n const newY = outline.y - deltaY;\n outline.targetX = newX;\n outline.targetY = newY;\n }\n};\nvar initCanvas = (canvas2, dpr2) => {\n const ctx2 = canvas2.getContext(\"2d\", { alpha: true });\n if (ctx2) {\n ctx2.scale(dpr2, dpr2);\n }\n return ctx2;\n};\nvar drawCanvas = (ctx2, canvas2, dpr2, activeOutlines2) => {\n ctx2.clearRect(0, 0, canvas2.width / dpr2, canvas2.height / dpr2);\n const groupedOutlinesMap = /* @__PURE__ */ new Map();\n const rectMap = /* @__PURE__ */ new Map();\n for (const outline of activeOutlines2.values()) {\n const {\n x,\n y,\n width,\n height,\n targetX,\n targetY,\n targetWidth,\n targetHeight,\n frame\n } = outline;\n if (targetX !== x) {\n outline.x = lerp(x, targetX);\n }\n if (targetY !== y) {\n outline.y = lerp(y, targetY);\n }\n if (targetWidth !== width) {\n outline.width = lerp(width, targetWidth);\n }\n if (targetHeight !== height) {\n outline.height = lerp(height, targetHeight);\n }\n const labelKey = `${targetX ?? x},${targetY ?? y}`;\n const rectKey = `${labelKey},${targetWidth ?? width},${targetHeight ?? height}`;\n const outlines = groupedOutlinesMap.get(labelKey);\n if (outlines) {\n outlines.push(outline);\n } else {\n groupedOutlinesMap.set(labelKey, [outline]);\n }\n const alpha = 1 - frame / TOTAL_FRAMES;\n outline.frame++;\n const rect = rectMap.get(rectKey) || {\n x,\n y,\n width,\n height,\n alpha\n };\n if (alpha > rect.alpha) {\n rect.alpha = alpha;\n }\n rectMap.set(rectKey, rect);\n }\n for (const { x, y, width, height, alpha } of rectMap.values()) {\n ctx2.strokeStyle = `rgba(${PRIMARY_COLOR},${alpha})`;\n ctx2.lineWidth = 1;\n ctx2.beginPath();\n ctx2.rect(x, y, width, height);\n ctx2.stroke();\n ctx2.fillStyle = `rgba(${PRIMARY_COLOR},${alpha * 0.1})`;\n ctx2.fill();\n }\n ctx2.font = `11px ${MONO_FONT}`;\n const labelMap = /* @__PURE__ */ new Map();\n ctx2.textRendering = \"optimizeSpeed\";\n for (const outlines of groupedOutlinesMap.values()) {\n const first = outlines[0];\n const { x, y, frame } = first;\n const alpha = 1 - frame / TOTAL_FRAMES;\n const text = getLabelText2(outlines);\n const { width } = ctx2.measureText(text);\n const height = 11;\n labelMap.set(`${x},${y},${width},${text}`, {\n text,\n width,\n height,\n alpha,\n x,\n y,\n outlines\n });\n let labelY = y - height - 4;\n if (labelY < 0) {\n labelY = 0;\n }\n if (frame > TOTAL_FRAMES) {\n for (const outline of outlines) {\n activeOutlines2.delete(String(outline.id));\n }\n }\n }\n const sortedLabels = Array.from(labelMap.entries()).sort(\n ([_, a], [__, b]) => {\n return getAreaFromOutlines(b.outlines) - getAreaFromOutlines(a.outlines);\n }\n );\n for (const [labelKey, label] of sortedLabels) {\n if (!labelMap.has(labelKey)) continue;\n for (const [otherKey, otherLabel] of labelMap.entries()) {\n if (labelKey === otherKey) continue;\n const { x, y, width, height } = label;\n const {\n x: otherX,\n y: otherY,\n width: otherWidth,\n height: otherHeight\n } = otherLabel;\n if (x + width > otherX && otherX + otherWidth > x && y + height > otherY && otherY + otherHeight > y) {\n label.text = getLabelText2(label.outlines.concat(otherLabel.outlines));\n label.width = ctx2.measureText(label.text).width;\n labelMap.delete(otherKey);\n }\n }\n }\n for (const label of labelMap.values()) {\n const { x, y, alpha, width, height, text } = label;\n let labelY = y - height - 4;\n if (labelY < 0) {\n labelY = 0;\n }\n ctx2.fillStyle = `rgba(${PRIMARY_COLOR},${alpha})`;\n ctx2.fillRect(x, labelY, width + 4, height + 4);\n ctx2.fillStyle = `rgba(255,255,255,${alpha})`;\n ctx2.fillText(text, x + 2, labelY + height);\n }\n return activeOutlines2.size > 0;\n};\n\n// src/new-outlines/index.ts\nvar workerCode = \"\\\"use strict\\\";(()=>{var D=\\\"Menlo,Consolas,Monaco,Liberation Mono,Lucida Console,monospace\\\";var M=(t,i)=>Math.floor(t+(i-t)*.1);var _=\\\"115,97,230\\\";function F(t,i){return i[0]-t[0]}function I(t){return[...t.entries()].sort(F)}function $([t,i]){let o=`${i.slice(0,4).join(\\\", \\\")} \\\\xD7${t}`;return o.length>40&&(o=`${o.slice(0,40)}\\\\u2026`),o}var S=t=>{let i=new Map;for(let{name:e,count:u}of t)i.set(e,(i.get(e)||0)+u);let o=new Map;for(let[e,u]of i){let A=o.get(u);A?A.push(e):o.set(u,[e])}let h=I(o),s=$(h[0]);for(let e=1,u=h.length;e<u;e++)s+=\\\", \\\"+$(h[e]);return s.length>40?`${s.slice(0,40)}\\\\u2026`:s},X=t=>{let i=0;for(let o of t)i+=o.width*o.height;return i};var N=(t,i)=>{let o=t.getContext(\\\"2d\\\",{alpha:!0});return o&&o.scale(i,i),o},Y=(t,i,o,h)=>{t.clearRect(0,0,i.width/o,i.height/o);let s=new Map,e=new Map;for(let n of h.values()){let{x:r,y:c,width:a,height:g,targetX:l,targetY:d,targetWidth:f,targetHeight:p,frame:O}=n;l!==r&&(n.x=M(r,l)),d!==c&&(n.y=M(c,d)),f!==a&&(n.width=M(a,f)),p!==g&&(n.height=M(g,p));let w=`${l??r},${d??c}`,y=`${w},${f??a},${p??g}`,v=s.get(w);v?v.push(n):s.set(w,[n]);let E=1-O/45;n.frame++;let x=e.get(y)||{x:r,y:c,width:a,height:g,alpha:E};E>x.alpha&&(x.alpha=E),e.set(y,x)}for(let{x:n,y:r,width:c,height:a,alpha:g}of e.values())t.strokeStyle=`rgba(${_},${g})`,t.lineWidth=1,t.beginPath(),t.rect(n,r,c,a),t.stroke(),t.fillStyle=`rgba(${_},${g*.1})`,t.fill();t.font=`11px ${D}`;let u=new Map;t.textRendering=\\\"optimizeSpeed\\\";for(let n of s.values()){let r=n[0],{x:c,y:a,frame:g}=r,l=1-g/45,d=S(n),{width:f}=t.measureText(d),p=11;u.set(`${c},${a},${f},${d}`,{text:d,width:f,height:p,alpha:l,x:c,y:a,outlines:n});let O=a-p-4;if(O<0&&(O=0),g>45)for(let w of n)h.delete(String(w.id))}let A=Array.from(u.entries()).sort(([n,r],[c,a])=>X(a.outlines)-X(r.outlines));for(let[n,r]of A)if(u.has(n))for(let[c,a]of u.entries()){if(n===c)continue;let{x:g,y:l,width:d,height:f}=r,{x:p,y:O,width:w,height:y}=a;g+d>p&&p+w>g&&l+f>O&&O+y>l&&(r.text=S(r.outlines.concat(a.outlines)),r.width=t.measureText(r.text).width,u.delete(c))}for(let n of u.values()){let{x:r,y:c,alpha:a,width:g,height:l,text:d}=n,f=c-l-4;f<0&&(f=0),t.fillStyle=`rgba(${_},${a})`,t.fillRect(r,f,g+4,l+4),t.fillStyle=`rgba(255,255,255,${a})`,t.fillText(d,r+2,f+l)}return h.size>0};var m=null,L=null,b=1,T=new Map,C=null,R=()=>{if(!L||!m)return;Y(L,m,b,T)?C=requestAnimationFrame(R):C=null};self.onmessage=t=>{let{type:i}=t.data;if(i===\\\"init\\\"&&(m=t.data.canvas,b=t.data.dpr,m&&(m.width=t.data.width,m.height=t.data.height,L=N(m,b))),!(!m||!L)){if(i===\\\"resize\\\"){b=t.data.dpr,m.width=t.data.width*b,m.height=t.data.height*b,L.resetTransform(),L.scale(b,b),R();return}if(i===\\\"draw-outlines\\\"){let{data:o,names:h}=t.data,s=new Float32Array(o);for(let e=0;e<s.length;e+=7){let u=s[e+2],A=s[e+3],n=s[e+4],r=s[e+5],c=s[e+6],a={id:s[e],name:h[e/7],count:s[e+1],x:u,y:A,width:n,height:r,frame:0,targetX:u,targetY:A,targetWidth:n,targetHeight:r,didCommit:c},g=String(a.id),l=T.get(g);l?(l.count++,l.frame=0,l.targetX=u,l.targetY=A,l.targetWidth=n,l.targetHeight=r,l.didCommit=c):T.set(g,a)}C||(C=requestAnimationFrame(R));return}if(i===\\\"scroll\\\"){let{deltaX:o,deltaY:h}=t.data;for(let s of T.values()){let e=s.x-o,u=s.y-h;s.targetX=e,s.targetY=u}}}};})();\\n\";\nvar worker = null;\nvar canvas = null;\nvar ctx = null;\nvar dpr = 1;\nvar animationFrameId = null;\nvar activeOutlines = /* @__PURE__ */ new Map();\nvar blueprintMap = /* @__PURE__ */ new Map();\nvar blueprintMapKeys = /* @__PURE__ */ new Set();\nvar outlineFiber = (fiber) => {\n if (!isCompositeFiber2(fiber)) return;\n const name = typeof fiber.type === \"string\" ? fiber.type : getDisplayName5(fiber);\n if (!name) return;\n const blueprint = blueprintMap.get(fiber);\n const nearestFibers = getNearestHostFibers(fiber);\n const didCommit = didFiberCommit2(fiber);\n if (!blueprint) {\n blueprintMap.set(fiber, {\n name,\n count: 1,\n elements: nearestFibers.map((fiber2) => fiber2.stateNode),\n didCommit: didCommit ? 1 : 0\n });\n blueprintMapKeys.add(fiber);\n } else {\n blueprint.count++;\n }\n};\nvar mergeRects = (rects) => {\n const firstRect = rects[0];\n if (rects.length === 1) return firstRect;\n let minX;\n let minY;\n let maxX;\n let maxY;\n for (let i = 0, len = rects.length; i < len; i++) {\n const rect = rects[i];\n minX = minX == null ? rect.x : Math.min(minX, rect.x);\n minY = minY == null ? rect.y : Math.min(minY, rect.y);\n maxX = maxX == null ? rect.x + rect.width : Math.max(maxX, rect.x + rect.width);\n maxY = maxY == null ? rect.y + rect.height : Math.max(maxY, rect.y + rect.height);\n }\n if (minX == null || minY == null || maxX == null || maxY == null) {\n return rects[0];\n }\n return new DOMRect(minX, minY, maxX - minX, maxY - minY);\n};\nfunction onIntersect(entries, observer) {\n const newEntries = [];\n for (const entry of entries) {\n const element = entry.target;\n if (!this.seenElements.has(element)) {\n this.seenElements.add(element);\n newEntries.push(entry);\n }\n }\n if (newEntries.length > 0 && this.resolveNext) {\n this.resolveNext(newEntries);\n this.resolveNext = null;\n }\n if (this.seenElements.size === this.uniqueElements.size) {\n observer.disconnect();\n this.done = true;\n if (this.resolveNext) {\n this.resolveNext([]);\n }\n }\n}\nvar getBatchedRectMap = async function* (elements) {\n const state = {\n uniqueElements: new Set(elements),\n seenElements: /* @__PURE__ */ new Set(),\n resolveNext: null,\n done: false\n };\n const observer = new IntersectionObserver(onIntersect.bind(state));\n for (const element of state.uniqueElements) {\n observer.observe(element);\n }\n while (!state.done) {\n const entries = await new Promise(\n (resolve) => {\n state.resolveNext = resolve;\n }\n );\n if (entries.length > 0) {\n yield entries;\n }\n }\n};\nvar SupportedArrayBuffer = typeof SharedArrayBuffer !== \"undefined\" ? SharedArrayBuffer : ArrayBuffer;\nvar flushOutlines = async () => {\n const elements = [];\n for (const fiber of blueprintMapKeys) {\n const blueprint = blueprintMap.get(fiber);\n if (!blueprint) continue;\n for (let i = 0; i < blueprint.elements.length; i++) {\n if (!(blueprint.elements[i] instanceof Element)) {\n continue;\n }\n elements.push(blueprint.elements[i]);\n }\n }\n const rectsMap = /* @__PURE__ */ new Map();\n for await (const entries of getBatchedRectMap(elements)) {\n for (const entry of entries) {\n const element = entry.target;\n const rect = entry.intersectionRect;\n if (entry.isIntersecting && rect.width && rect.height) {\n rectsMap.set(element, rect);\n }\n }\n const blueprints = [];\n const blueprintRects = [];\n const blueprintIds = [];\n for (const fiber of blueprintMapKeys) {\n const blueprint = blueprintMap.get(fiber);\n if (!blueprint) continue;\n const rects = [];\n for (let i = 0; i < blueprint.elements.length; i++) {\n const element = blueprint.elements[i];\n const rect = rectsMap.get(element);\n if (!rect) continue;\n rects.push(rect);\n }\n if (!rects.length) continue;\n blueprints.push(blueprint);\n blueprintRects.push(mergeRects(rects));\n blueprintIds.push(getFiberId3(fiber));\n }\n if (blueprints.length > 0) {\n const arrayBuffer = new SupportedArrayBuffer(\n blueprints.length * OUTLINE_ARRAY_SIZE * 4\n );\n const sharedView = new Float32Array(arrayBuffer);\n const blueprintNames = new Array(blueprints.length);\n let outlineData;\n for (let i = 0, len = blueprints.length; i < len; i++) {\n const blueprint = blueprints[i];\n const id = blueprintIds[i];\n const { x, y, width, height } = blueprintRects[i];\n const { count, name, didCommit } = blueprint;\n if (worker) {\n const scaledIndex = i * OUTLINE_ARRAY_SIZE;\n sharedView[scaledIndex] = id;\n sharedView[scaledIndex + 1] = count;\n sharedView[scaledIndex + 2] = x;\n sharedView[scaledIndex + 3] = y;\n sharedView[scaledIndex + 4] = width;\n sharedView[scaledIndex + 5] = height;\n sharedView[scaledIndex + 6] = didCommit;\n blueprintNames[i] = name;\n } else {\n outlineData ||= new Array(blueprints.length);\n outlineData[i] = {\n id,\n name,\n count,\n x,\n y,\n width,\n height,\n didCommit\n };\n }\n }\n if (worker) {\n worker.postMessage({\n type: \"draw-outlines\",\n data: arrayBuffer,\n names: blueprintNames\n });\n } else if (canvas && ctx && outlineData) {\n updateOutlines(activeOutlines, outlineData);\n if (!animationFrameId) {\n animationFrameId = requestAnimationFrame(draw);\n }\n }\n }\n }\n for (const fiber of blueprintMapKeys) {\n blueprintMap.delete(fiber);\n blueprintMapKeys.delete(fiber);\n }\n};\nvar draw = () => {\n if (!ctx || !canvas) return;\n const shouldContinue = drawCanvas(ctx, canvas, dpr, activeOutlines);\n if (shouldContinue) {\n animationFrameId = requestAnimationFrame(draw);\n } else {\n animationFrameId = null;\n }\n};\nvar IS_OFFSCREEN_CANVAS_WORKER_SUPPORTED = typeof OffscreenCanvas !== \"undefined\" && typeof Worker !== \"undefined\";\nvar getDpr = () => {\n return Math.min(window.devicePixelRatio || 1, 2);\n};\nvar getCanvasEl = () => {\n cleanup();\n const host = document.createElement(\"div\");\n host.setAttribute(\"data-react-scan\", \"true\");\n const shadowRoot2 = host.attachShadow({ mode: \"open\" });\n const canvasEl = document.createElement(\"canvas\");\n canvasEl.style.position = \"fixed\";\n canvasEl.style.top = \"0\";\n canvasEl.style.left = \"0\";\n canvasEl.style.pointerEvents = \"none\";\n canvasEl.style.zIndex = \"2147483646\";\n canvasEl.setAttribute(\"aria-hidden\", \"true\");\n shadowRoot2.appendChild(canvasEl);\n if (!canvasEl) return null;\n dpr = getDpr();\n canvas = canvasEl;\n const { innerWidth, innerHeight } = window;\n canvasEl.style.width = `${innerWidth}px`;\n canvasEl.style.height = `${innerHeight}px`;\n const width = innerWidth * dpr;\n const height = innerHeight * dpr;\n canvasEl.width = width;\n canvasEl.height = height;\n if (IS_OFFSCREEN_CANVAS_WORKER_SUPPORTED && !window.__REACT_SCAN_EXTENSION__) {\n try {\n worker = new Worker(\n URL.createObjectURL(\n new Blob([workerCode], { type: \"application/javascript\" })\n )\n );\n const offscreenCanvas = canvasEl.transferControlToOffscreen();\n worker?.postMessage(\n {\n type: \"init\",\n canvas: offscreenCanvas,\n width: canvasEl.width,\n height: canvasEl.height,\n dpr\n },\n [offscreenCanvas]\n );\n } catch (e) {\n console.warn(\"Failed to initialize OffscreenCanvas worker:\", e);\n }\n }\n if (!worker) {\n ctx = initCanvas(canvasEl, dpr);\n }\n let isResizeScheduled = false;\n window.addEventListener(\"resize\", () => {\n if (!isResizeScheduled) {\n isResizeScheduled = true;\n setTimeout(() => {\n const width2 = window.innerWidth;\n const height2 = window.innerHeight;\n dpr = getDpr();\n canvasEl.style.width = `${width2}px`;\n canvasEl.style.height = `${height2}px`;\n if (worker) {\n worker.postMessage({\n type: \"resize\",\n width: width2,\n height: height2,\n dpr\n });\n } else {\n canvasEl.width = width2 * dpr;\n canvasEl.height = height2 * dpr;\n if (ctx) {\n ctx.resetTransform();\n ctx.scale(dpr, dpr);\n }\n draw();\n }\n isResizeScheduled = false;\n });\n }\n });\n let prevScrollX = window.scrollX;\n let prevScrollY = window.scrollY;\n let isScrollScheduled = false;\n window.addEventListener(\"scroll\", () => {\n if (!isScrollScheduled) {\n isScrollScheduled = true;\n setTimeout(() => {\n const { scrollX, scrollY } = window;\n const deltaX = scrollX - prevScrollX;\n const deltaY = scrollY - prevScrollY;\n prevScrollX = scrollX;\n prevScrollY = scrollY;\n if (worker) {\n worker.postMessage({\n type: \"scroll\",\n deltaX,\n deltaY\n });\n } else {\n requestAnimationFrame(\n updateScroll.bind(null, activeOutlines, deltaX, deltaY)\n );\n }\n isScrollScheduled = false;\n }, 16 * 2);\n }\n });\n setInterval(() => {\n if (blueprintMapKeys.size) {\n requestAnimationFrame(flushOutlines);\n }\n }, 16 * 2);\n shadowRoot2.appendChild(canvasEl);\n return host;\n};\nvar hasStopped = () => {\n return globalThis.__REACT_SCAN_STOP__;\n};\nvar cleanup = () => {\n const host = document.querySelector(\"[data-react-scan]\");\n if (host) {\n host.remove();\n }\n};\nvar reportRenderToListeners = (fiber) => {\n if (isCompositeFiber2(fiber)) {\n if (ReactScanInternals.options.value.showToolbar !== false && Store.inspectState.value.kind === \"focused\") {\n const reportFiber = fiber;\n const { selfTime } = getTimings3(fiber);\n const displayName = getDisplayName5(fiber.type);\n const fiberId = getFiberId3(reportFiber);\n const currentData = Store.reportData.get(fiberId);\n const existingCount = currentData?.count ?? 0;\n const existingTime = currentData?.time ?? 0;\n const changes = [];\n const listeners = Store.changesListeners.get(getFiberId3(fiber));\n if (listeners?.length) {\n const propsChanges = getChangedPropsDetailed(\n fiber\n ).map((change) => ({\n type: 1 /* Props */,\n name: change.name,\n value: change.value,\n prevValue: change.prevValue,\n unstable: false\n }));\n const stateChanges = getStateChanges(fiber);\n const fiberContext = getContextChanges(fiber);\n const contextChanges = fiberContext.map(\n (info) => ({\n name: info.name,\n type: 4 /* Context */,\n value: info.value,\n contextType: info.contextType\n })\n );\n listeners.forEach((listener) => {\n listener({\n propsChanges,\n stateChanges,\n contextChanges\n });\n });\n }\n const fiberData = {\n count: existingCount + 1,\n time: existingTime + selfTime || 0,\n renders: [],\n displayName,\n type: getType4(fiber.type) || null,\n changes\n };\n Store.reportData.set(fiberId, fiberData);\n needsReport = true;\n }\n }\n};\nvar needsReport = false;\nvar reportInterval;\nvar startReportInterval = () => {\n clearInterval(reportInterval);\n reportInterval = setInterval(() => {\n if (needsReport) {\n Store.lastReportTime.value = Date.now();\n needsReport = false;\n }\n }, 50);\n};\nvar isValidFiber = (fiber) => {\n if (ignoredProps.has(fiber.memoizedProps)) {\n return false;\n }\n return true;\n};\nvar initReactScanInstrumentation = (setupToolbar) => {\n if (hasStopped()) return;\n let schedule;\n let mounted = false;\n const scheduleSetup = () => {\n if (mounted) {\n return;\n }\n if (schedule) {\n cancelAnimationFrame(schedule);\n }\n schedule = requestAnimationFrame(() => {\n mounted = true;\n const host = getCanvasEl();\n if (host) {\n document.documentElement.appendChild(host);\n }\n setupToolbar();\n });\n };\n const instrumentation = createInstrumentation(\"react-scan-devtools-0.1.0\", {\n onCommitStart: () => {\n ReactScanInternals.options.value.onCommitStart?.();\n },\n onActive: () => {\n if (hasStopped()) return;\n scheduleSetup();\n if (!window.__REACT_SCAN_EXTENSION__) {\n globalThis.__REACT_SCAN__ = {\n ReactScanInternals\n };\n }\n startReportInterval();\n logIntro();\n },\n onError: () => {\n },\n isValidFiber,\n onRender: (fiber, renders) => {\n if (isCompositeFiber2(fiber)) {\n Store.interactionListeningForRenders?.(fiber, renders);\n }\n const isOverlayPaused = ReactScanInternals.instrumentation?.isPaused.value;\n const isInspectorInactive = Store.inspectState.value.kind === \"inspect-off\" || Store.inspectState.value.kind === \"uninitialized\";\n const shouldFullyAbort = isOverlayPaused && isInspectorInactive;\n if (shouldFullyAbort) {\n return;\n }\n if (!isOverlayPaused) {\n outlineFiber(fiber);\n }\n if (ReactScanInternals.options.value.log) {\n log(renders);\n }\n if (Store.inspectState.value.kind === \"focused\") {\n inspectorUpdateSignal.value = Date.now();\n }\n if (!isInspectorInactive) {\n reportRenderToListeners(fiber);\n }\n ReactScanInternals.options.value.onRender?.(fiber, renders);\n },\n onCommitFinish: () => {\n scheduleSetup();\n ReactScanInternals.options.value.onCommitFinish?.();\n },\n onPostCommitFiberRoot() {\n scheduleSetup();\n },\n trackChanges: false\n });\n ReactScanInternals.instrumentation = instrumentation;\n};\n\n// src/web/assets/css/styles.css\nvar styles_default = \"*, ::before, ::after {\\n --tw-border-spacing-x: 0;\\n --tw-border-spacing-y: 0;\\n --tw-translate-x: 0;\\n --tw-translate-y: 0;\\n --tw-rotate: 0;\\n --tw-skew-x: 0;\\n --tw-skew-y: 0;\\n --tw-scale-x: 1;\\n --tw-scale-y: 1;\\n --tw-pan-x: ;\\n --tw-pan-y: ;\\n --tw-pinch-zoom: ;\\n --tw-scroll-snap-strictness: proximity;\\n --tw-gradient-from-position: ;\\n --tw-gradient-via-position: ;\\n --tw-gradient-to-position: ;\\n --tw-ordinal: ;\\n --tw-slashed-zero: ;\\n --tw-numeric-figure: ;\\n --tw-numeric-spacing: ;\\n --tw-numeric-fraction: ;\\n --tw-ring-inset: ;\\n --tw-ring-offset-width: 0px;\\n --tw-ring-offset-color: #fff;\\n --tw-ring-color: rgb(59 130 246 / 0.5);\\n --tw-ring-offset-shadow: 0 0 #0000;\\n --tw-ring-shadow: 0 0 #0000;\\n --tw-shadow: 0 0 #0000;\\n --tw-shadow-colored: 0 0 #0000;\\n --tw-blur: ;\\n --tw-brightness: ;\\n --tw-contrast: ;\\n --tw-grayscale: ;\\n --tw-hue-rotate: ;\\n --tw-invert: ;\\n --tw-saturate: ;\\n --tw-sepia: ;\\n --tw-drop-shadow: ;\\n --tw-backdrop-blur: ;\\n --tw-backdrop-brightness: ;\\n --tw-backdrop-contrast: ;\\n --tw-backdrop-grayscale: ;\\n --tw-backdrop-hue-rotate: ;\\n --tw-backdrop-invert: ;\\n --tw-backdrop-opacity: ;\\n --tw-backdrop-saturate: ;\\n --tw-backdrop-sepia: ;\\n --tw-contain-size: ;\\n --tw-contain-layout: ;\\n --tw-contain-paint: ;\\n --tw-contain-style: ;\\n}\\n\\n::backdrop {\\n --tw-border-spacing-x: 0;\\n --tw-border-spacing-y: 0;\\n --tw-translate-x: 0;\\n --tw-translate-y: 0;\\n --tw-rotate: 0;\\n --tw-skew-x: 0;\\n --tw-skew-y: 0;\\n --tw-scale-x: 1;\\n --tw-scale-y: 1;\\n --tw-pan-x: ;\\n --tw-pan-y: ;\\n --tw-pinch-zoom: ;\\n --tw-scroll-snap-strictness: proximity;\\n --tw-gradient-from-position: ;\\n --tw-gradient-via-position: ;\\n --tw-gradient-to-position: ;\\n --tw-ordinal: ;\\n --tw-slashed-zero: ;\\n --tw-numeric-figure: ;\\n --tw-numeric-spacing: ;\\n --tw-numeric-fraction: ;\\n --tw-ring-inset: ;\\n --tw-ring-offset-width: 0px;\\n --tw-ring-offset-color: #fff;\\n --tw-ring-color: rgb(59 130 246 / 0.5);\\n --tw-ring-offset-shadow: 0 0 #0000;\\n --tw-ring-shadow: 0 0 #0000;\\n --tw-shadow: 0 0 #0000;\\n --tw-shadow-colored: 0 0 #0000;\\n --tw-blur: ;\\n --tw-brightness: ;\\n --tw-contrast: ;\\n --tw-grayscale: ;\\n --tw-hue-rotate: ;\\n --tw-invert: ;\\n --tw-saturate: ;\\n --tw-sepia: ;\\n --tw-drop-shadow: ;\\n --tw-backdrop-blur: ;\\n --tw-backdrop-brightness: ;\\n --tw-backdrop-contrast: ;\\n --tw-backdrop-grayscale: ;\\n --tw-backdrop-hue-rotate: ;\\n --tw-backdrop-invert: ;\\n --tw-backdrop-opacity: ;\\n --tw-backdrop-saturate: ;\\n --tw-backdrop-sepia: ;\\n --tw-contain-size: ;\\n --tw-contain-layout: ;\\n --tw-contain-paint: ;\\n --tw-contain-style: ;\\n}/*\\n! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com\\n*//*\\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\\n*/\\n\\n*,\\n::before,\\n::after {\\n box-sizing: border-box; /* 1 */\\n border-width: 0; /* 2 */\\n border-style: solid; /* 2 */\\n border-color: #e5e7eb; /* 2 */\\n}\\n\\n::before,\\n::after {\\n --tw-content: '';\\n}\\n\\n/*\\n1. Use a consistent sensible line-height in all browsers.\\n2. Prevent adjustments of font size after orientation changes in iOS.\\n3. Use a more readable tab size.\\n4. Use the user's configured `sans` font-family by default.\\n5. Use the user's configured `sans` font-feature-settings by default.\\n6. Use the user's configured `sans` font-variation-settings by default.\\n7. Disable tap highlights on iOS\\n*/\\n\\nhtml,\\n:host {\\n line-height: 1.5; /* 1 */\\n -webkit-text-size-adjust: 100%; /* 2 */\\n -moz-tab-size: 4; /* 3 */\\n -o-tab-size: 4;\\n tab-size: 4; /* 3 */\\n font-family: ui-sans-serif, system-ui, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\"; /* 4 */\\n font-feature-settings: normal; /* 5 */\\n font-variation-settings: normal; /* 6 */\\n -webkit-tap-highlight-color: transparent; /* 7 */\\n}\\n\\n/*\\n1. Remove the margin in all browsers.\\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\\n*/\\n\\nbody {\\n margin: 0; /* 1 */\\n line-height: inherit; /* 2 */\\n}\\n\\n/*\\n1. Add the correct height in Firefox.\\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\\n3. Ensure horizontal rules are visible by default.\\n*/\\n\\nhr {\\n height: 0; /* 1 */\\n color: inherit; /* 2 */\\n border-top-width: 1px; /* 3 */\\n}\\n\\n/*\\nAdd the correct text decoration in Chrome, Edge, and Safari.\\n*/\\n\\nabbr:where([title]) {\\n -webkit-text-decoration: underline dotted;\\n text-decoration: underline dotted;\\n}\\n\\n/*\\nRemove the default font size and weight for headings.\\n*/\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n font-size: inherit;\\n font-weight: inherit;\\n}\\n\\n/*\\nReset links to optimize for opt-in styling instead of opt-out.\\n*/\\n\\na {\\n color: inherit;\\n text-decoration: inherit;\\n}\\n\\n/*\\nAdd the correct font weight in Edge and Safari.\\n*/\\n\\nb,\\nstrong {\\n font-weight: bolder;\\n}\\n\\n/*\\n1. Use the user's configured `mono` font-family by default.\\n2. Use the user's configured `mono` font-feature-settings by default.\\n3. Use the user's configured `mono` font-variation-settings by default.\\n4. Correct the odd `em` font sizing in all browsers.\\n*/\\n\\ncode,\\nkbd,\\nsamp,\\npre {\\n font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace; /* 1 */\\n font-feature-settings: normal; /* 2 */\\n font-variation-settings: normal; /* 3 */\\n font-size: 1em; /* 4 */\\n}\\n\\n/*\\nAdd the correct font size in all browsers.\\n*/\\n\\nsmall {\\n font-size: 80%;\\n}\\n\\n/*\\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\\n*/\\n\\nsub,\\nsup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline;\\n}\\n\\nsub {\\n bottom: -0.25em;\\n}\\n\\nsup {\\n top: -0.5em;\\n}\\n\\n/*\\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\\n3. Remove gaps between table borders by default.\\n*/\\n\\ntable {\\n text-indent: 0; /* 1 */\\n border-color: inherit; /* 2 */\\n border-collapse: collapse; /* 3 */\\n}\\n\\n/*\\n1. Change the font styles in all browsers.\\n2. Remove the margin in Firefox and Safari.\\n3. Remove default padding in all browsers.\\n*/\\n\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n font-family: inherit; /* 1 */\\n font-feature-settings: inherit; /* 1 */\\n font-variation-settings: inherit; /* 1 */\\n font-size: 100%; /* 1 */\\n font-weight: inherit; /* 1 */\\n line-height: inherit; /* 1 */\\n letter-spacing: inherit; /* 1 */\\n color: inherit; /* 1 */\\n margin: 0; /* 2 */\\n padding: 0; /* 3 */\\n}\\n\\n/*\\nRemove the inheritance of text transform in Edge and Firefox.\\n*/\\n\\nbutton,\\nselect {\\n text-transform: none;\\n}\\n\\n/*\\n1. Correct the inability to style clickable types in iOS and Safari.\\n2. Remove default button styles.\\n*/\\n\\nbutton,\\ninput:where([type='button']),\\ninput:where([type='reset']),\\ninput:where([type='submit']) {\\n -webkit-appearance: button; /* 1 */\\n background-color: transparent; /* 2 */\\n background-image: none; /* 2 */\\n}\\n\\n/*\\nUse the modern Firefox focus style for all focusable elements.\\n*/\\n\\n:-moz-focusring {\\n outline: auto;\\n}\\n\\n/*\\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\\n*/\\n\\n:-moz-ui-invalid {\\n box-shadow: none;\\n}\\n\\n/*\\nAdd the correct vertical alignment in Chrome and Firefox.\\n*/\\n\\nprogress {\\n vertical-align: baseline;\\n}\\n\\n/*\\nCorrect the cursor style of increment and decrement buttons in Safari.\\n*/\\n\\n::-webkit-inner-spin-button,\\n::-webkit-outer-spin-button {\\n height: auto;\\n}\\n\\n/*\\n1. Correct the odd appearance in Chrome and Safari.\\n2. Correct the outline style in Safari.\\n*/\\n\\n[type='search'] {\\n -webkit-appearance: textfield; /* 1 */\\n outline-offset: -2px; /* 2 */\\n}\\n\\n/*\\nRemove the inner padding in Chrome and Safari on macOS.\\n*/\\n\\n::-webkit-search-decoration {\\n -webkit-appearance: none;\\n}\\n\\n/*\\n1. Correct the inability to style clickable types in iOS and Safari.\\n2. Change font properties to `inherit` in Safari.\\n*/\\n\\n::-webkit-file-upload-button {\\n -webkit-appearance: button; /* 1 */\\n font: inherit; /* 2 */\\n}\\n\\n/*\\nAdd the correct display in Chrome and Safari.\\n*/\\n\\nsummary {\\n display: list-item;\\n}\\n\\n/*\\nRemoves the default spacing and border for appropriate elements.\\n*/\\n\\nblockquote,\\ndl,\\ndd,\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6,\\nhr,\\nfigure,\\np,\\npre {\\n margin: 0;\\n}\\n\\nfieldset {\\n margin: 0;\\n padding: 0;\\n}\\n\\nlegend {\\n padding: 0;\\n}\\n\\nol,\\nul,\\nmenu {\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n}\\n\\n/*\\nReset default styling for dialogs.\\n*/\\ndialog {\\n padding: 0;\\n}\\n\\n/*\\nPrevent resizing textareas horizontally by default.\\n*/\\n\\ntextarea {\\n resize: vertical;\\n}\\n\\n/*\\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\\n2. Set the default placeholder color to the user's configured gray 400 color.\\n*/\\n\\ninput::-moz-placeholder, textarea::-moz-placeholder {\\n opacity: 1; /* 1 */\\n color: #9ca3af; /* 2 */\\n}\\n\\ninput::placeholder,\\ntextarea::placeholder {\\n opacity: 1; /* 1 */\\n color: #9ca3af; /* 2 */\\n}\\n\\n/*\\nSet the default cursor for buttons.\\n*/\\n\\nbutton,\\n[role=\\\"button\\\"] {\\n cursor: pointer;\\n}\\n\\n/*\\nMake sure disabled buttons don't get the pointer cursor.\\n*/\\n:disabled {\\n cursor: default;\\n}\\n\\n/*\\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\\n This can trigger a poorly considered lint error in some tools but is included by design.\\n*/\\n\\nimg,\\nsvg,\\nvideo,\\ncanvas,\\naudio,\\niframe,\\nembed,\\nobject {\\n display: block; /* 1 */\\n vertical-align: middle; /* 2 */\\n}\\n\\n/*\\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\\n*/\\n\\nimg,\\nvideo {\\n max-width: 100%;\\n height: auto;\\n}\\n\\n/* Make elements with the HTML hidden attribute stay hidden by default */\\n[hidden]:where(:not([hidden=\\\"until-found\\\"])) {\\n display: none;\\n}\\n.\\\\!container {\\n width: 100% !important;\\n}\\n.container {\\n width: 100%;\\n}\\n@media (min-width: 640px) {\\n\\n .\\\\!container {\\n max-width: 640px !important;\\n }\\n\\n .container {\\n max-width: 640px;\\n }\\n}\\n@media (min-width: 768px) {\\n\\n .\\\\!container {\\n max-width: 768px !important;\\n }\\n\\n .container {\\n max-width: 768px;\\n }\\n}\\n@media (min-width: 1024px) {\\n\\n .\\\\!container {\\n max-width: 1024px !important;\\n }\\n\\n .container {\\n max-width: 1024px;\\n }\\n}\\n@media (min-width: 1280px) {\\n\\n .\\\\!container {\\n max-width: 1280px !important;\\n }\\n\\n .container {\\n max-width: 1280px;\\n }\\n}\\n@media (min-width: 1536px) {\\n\\n .\\\\!container {\\n max-width: 1536px !important;\\n }\\n\\n .container {\\n max-width: 1536px;\\n }\\n}\\n.pointer-events-none {\\n pointer-events: none;\\n}\\n.pointer-events-auto {\\n pointer-events: auto;\\n}\\n.visible {\\n visibility: visible;\\n}\\n.static {\\n position: static;\\n}\\n.fixed {\\n position: fixed;\\n}\\n.absolute {\\n position: absolute;\\n}\\n.relative {\\n position: relative;\\n}\\n.sticky {\\n position: sticky;\\n}\\n.inset-0 {\\n inset: 0px;\\n}\\n.inset-x-1 {\\n left: 4px;\\n right: 4px;\\n}\\n.inset-y-0 {\\n top: 0px;\\n bottom: 0px;\\n}\\n.-right-1 {\\n right: -4px;\\n}\\n.-right-2\\\\.5 {\\n right: -10px;\\n}\\n.-top-1 {\\n top: -4px;\\n}\\n.-top-2\\\\.5 {\\n top: -10px;\\n}\\n.bottom-0 {\\n bottom: 0px;\\n}\\n.bottom-4 {\\n bottom: 16px;\\n}\\n.left-0 {\\n left: 0px;\\n}\\n.left-3 {\\n left: 12px;\\n}\\n.right-0 {\\n right: 0px;\\n}\\n.right-0\\\\.5 {\\n right: 2px;\\n}\\n.right-2 {\\n right: 8px;\\n}\\n.right-4 {\\n right: 16px;\\n}\\n.top-0 {\\n top: 0px;\\n}\\n.top-0\\\\.5 {\\n top: 2px;\\n}\\n.top-1\\\\/2 {\\n top: 50%;\\n}\\n.top-2 {\\n top: 8px;\\n}\\n.z-10 {\\n z-index: 10;\\n}\\n.z-100 {\\n z-index: 100;\\n}\\n.z-50 {\\n z-index: 50;\\n}\\n.z-\\\\[124124124124\\\\] {\\n z-index: 124124124124;\\n}\\n.z-\\\\[214748365\\\\] {\\n z-index: 214748365;\\n}\\n.z-\\\\[214748367\\\\] {\\n z-index: 214748367;\\n}\\n.m-\\\\[2px\\\\] {\\n margin: 2px;\\n}\\n.mx-0\\\\.5 {\\n margin-left: 2px;\\n margin-right: 2px;\\n}\\n.\\\\!ml-0 {\\n margin-left: 0px !important;\\n}\\n.mb-1\\\\.5 {\\n margin-bottom: 6px;\\n}\\n.mb-2 {\\n margin-bottom: 8px;\\n}\\n.mb-3 {\\n margin-bottom: 12px;\\n}\\n.mb-4 {\\n margin-bottom: 16px;\\n}\\n.mb-px {\\n margin-bottom: 1px;\\n}\\n.ml-1 {\\n margin-left: 4px;\\n}\\n.ml-1\\\\.5 {\\n margin-left: 6px;\\n}\\n.ml-auto {\\n margin-left: auto;\\n}\\n.mr-0\\\\.5 {\\n margin-right: 2px;\\n}\\n.mr-1 {\\n margin-right: 4px;\\n}\\n.mr-1\\\\.5 {\\n margin-right: 6px;\\n}\\n.mr-16 {\\n margin-right: 64px;\\n}\\n.mr-auto {\\n margin-right: auto;\\n}\\n.mt-0\\\\.5 {\\n margin-top: 2px;\\n}\\n.mt-1 {\\n margin-top: 4px;\\n}\\n.mt-4 {\\n margin-top: 16px;\\n}\\n.block {\\n display: block;\\n}\\n.inline {\\n display: inline;\\n}\\n.flex {\\n display: flex;\\n}\\n.table {\\n display: table;\\n}\\n.hidden {\\n display: none;\\n}\\n.aspect-square {\\n aspect-ratio: 1 / 1;\\n}\\n.h-1 {\\n height: 4px;\\n}\\n.h-1\\\\.5 {\\n height: 6px;\\n}\\n.h-10 {\\n height: 40px;\\n}\\n.h-12 {\\n height: 48px;\\n}\\n.h-4 {\\n height: 16px;\\n}\\n.h-4\\\\/5 {\\n height: 80%;\\n}\\n.h-6 {\\n height: 24px;\\n}\\n.h-7 {\\n height: 28px;\\n}\\n.h-8 {\\n height: 32px;\\n}\\n.h-\\\\[150px\\\\] {\\n height: 150px;\\n}\\n.h-\\\\[235px\\\\] {\\n height: 235px;\\n}\\n.h-\\\\[28px\\\\] {\\n height: 28px;\\n}\\n.h-\\\\[48px\\\\] {\\n height: 48px;\\n}\\n.h-\\\\[50px\\\\] {\\n height: 50px;\\n}\\n.h-\\\\[calc\\\\(100\\\\%-150px\\\\)\\\\] {\\n height: calc(100% - 150px);\\n}\\n.h-\\\\[calc\\\\(100\\\\%-200px\\\\)\\\\] {\\n height: calc(100% - 200px);\\n}\\n.h-\\\\[calc\\\\(100\\\\%-25px\\\\)\\\\] {\\n height: calc(100% - 25px);\\n}\\n.h-\\\\[calc\\\\(100\\\\%-40px\\\\)\\\\] {\\n height: calc(100% - 40px);\\n}\\n.h-\\\\[calc\\\\(100\\\\%-48px\\\\)\\\\] {\\n height: calc(100% - 48px);\\n}\\n.h-fit {\\n height: -moz-fit-content;\\n height: fit-content;\\n}\\n.h-full {\\n height: 100%;\\n}\\n.h-screen {\\n height: 100vh;\\n}\\n.max-h-0 {\\n max-height: 0px;\\n}\\n.max-h-40 {\\n max-height: 160px;\\n}\\n.max-h-9 {\\n max-height: 36px;\\n}\\n.min-h-9 {\\n min-height: 36px;\\n}\\n.min-h-\\\\[48px\\\\] {\\n min-height: 48px;\\n}\\n.min-h-fit {\\n min-height: -moz-fit-content;\\n min-height: fit-content;\\n}\\n.w-1 {\\n width: 4px;\\n}\\n.w-1\\\\/2 {\\n width: 50%;\\n}\\n.w-1\\\\/3 {\\n width: 33.333333%;\\n}\\n.w-2\\\\/4 {\\n width: 50%;\\n}\\n.w-3 {\\n width: 12px;\\n}\\n.w-4 {\\n width: 16px;\\n}\\n.w-4\\\\/5 {\\n width: 80%;\\n}\\n.w-6 {\\n width: 24px;\\n}\\n.w-80 {\\n width: 320px;\\n}\\n.w-\\\\[20px\\\\] {\\n width: 20px;\\n}\\n.w-\\\\[72px\\\\] {\\n width: 72px;\\n}\\n.w-\\\\[90\\\\%\\\\] {\\n width: 90%;\\n}\\n.w-\\\\[calc\\\\(100\\\\%-200px\\\\)\\\\] {\\n width: calc(100% - 200px);\\n}\\n.w-fit {\\n width: -moz-fit-content;\\n width: fit-content;\\n}\\n.w-full {\\n width: 100%;\\n}\\n.w-px {\\n width: 1px;\\n}\\n.w-screen {\\n width: 100vw;\\n}\\n.min-w-0 {\\n min-width: 0px;\\n}\\n.min-w-\\\\[200px\\\\] {\\n min-width: 200px;\\n}\\n.min-w-fit {\\n min-width: -moz-fit-content;\\n min-width: fit-content;\\n}\\n.max-w-md {\\n max-width: 448px;\\n}\\n.flex-1 {\\n flex: 1 1 0%;\\n}\\n.shrink-0 {\\n flex-shrink: 0;\\n}\\n.grow {\\n flex-grow: 1;\\n}\\n.-translate-y-1\\\\/2 {\\n --tw-translate-y: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.-translate-y-\\\\[200\\\\%\\\\] {\\n --tw-translate-y: -200%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.translate-y-0 {\\n --tw-translate-y: 0px;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.translate-y-1 {\\n --tw-translate-y: 4px;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.-rotate-90 {\\n --tw-rotate: -90deg;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.rotate-0 {\\n --tw-rotate: 0deg;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.rotate-180 {\\n --tw-rotate: 180deg;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.rotate-90 {\\n --tw-rotate: 90deg;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.scale-110 {\\n --tw-scale-x: 1.1;\\n --tw-scale-y: 1.1;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.transform {\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n@keyframes fadeIn {\\n\\n 0% {\\n opacity: 0;\\n }\\n\\n 100% {\\n opacity: 1;\\n }\\n}\\n.animate-fade-in {\\n animation: fadeIn ease-in forwards;\\n}\\n.cursor-default {\\n cursor: default;\\n}\\n.cursor-e-resize {\\n cursor: e-resize;\\n}\\n.cursor-ew-resize {\\n cursor: ew-resize;\\n}\\n.cursor-move {\\n cursor: move;\\n}\\n.cursor-nesw-resize {\\n cursor: nesw-resize;\\n}\\n.cursor-ns-resize {\\n cursor: ns-resize;\\n}\\n.cursor-nwse-resize {\\n cursor: nwse-resize;\\n}\\n.cursor-pointer {\\n cursor: pointer;\\n}\\n.cursor-w-resize {\\n cursor: w-resize;\\n}\\n.select-none {\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n}\\n.resize {\\n resize: both;\\n}\\n.appearance-none {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n}\\n.flex-col {\\n flex-direction: column;\\n}\\n.items-start {\\n align-items: flex-start;\\n}\\n.items-end {\\n align-items: flex-end;\\n}\\n.items-center {\\n align-items: center;\\n}\\n.items-stretch {\\n align-items: stretch;\\n}\\n.justify-start {\\n justify-content: flex-start;\\n}\\n.justify-end {\\n justify-content: flex-end;\\n}\\n.justify-center {\\n justify-content: center;\\n}\\n.justify-between {\\n justify-content: space-between;\\n}\\n.gap-0\\\\.5 {\\n gap: 2px;\\n}\\n.gap-1 {\\n gap: 4px;\\n}\\n.gap-1\\\\.5 {\\n gap: 6px;\\n}\\n.gap-2 {\\n gap: 8px;\\n}\\n.gap-4 {\\n gap: 16px;\\n}\\n.gap-x-0\\\\.5 {\\n -moz-column-gap: 2px;\\n column-gap: 2px;\\n}\\n.gap-x-1 {\\n -moz-column-gap: 4px;\\n column-gap: 4px;\\n}\\n.gap-x-1\\\\.5 {\\n -moz-column-gap: 6px;\\n column-gap: 6px;\\n}\\n.gap-x-2 {\\n -moz-column-gap: 8px;\\n column-gap: 8px;\\n}\\n.gap-x-3 {\\n -moz-column-gap: 12px;\\n column-gap: 12px;\\n}\\n.gap-x-4 {\\n -moz-column-gap: 16px;\\n column-gap: 16px;\\n}\\n.gap-y-0\\\\.5 {\\n row-gap: 2px;\\n}\\n.gap-y-1 {\\n row-gap: 4px;\\n}\\n.gap-y-2 {\\n row-gap: 8px;\\n}\\n.gap-y-4 {\\n row-gap: 16px;\\n}\\n.space-y-1\\\\.5 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-y-reverse: 0;\\n margin-top: calc(6px * calc(1 - var(--tw-space-y-reverse)));\\n margin-bottom: calc(6px * var(--tw-space-y-reverse));\\n}\\n.divide-y > :not([hidden]) ~ :not([hidden]) {\\n --tw-divide-y-reverse: 0;\\n border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\\n border-bottom-width: calc(1px * var(--tw-divide-y-reverse));\\n}\\n.divide-zinc-800 > :not([hidden]) ~ :not([hidden]) {\\n --tw-divide-opacity: 1;\\n border-color: rgb(39 39 42 / var(--tw-divide-opacity, 1));\\n}\\n.place-self-center {\\n place-self: center;\\n}\\n.self-end {\\n align-self: flex-end;\\n}\\n.overflow-auto {\\n overflow: auto;\\n}\\n.overflow-hidden {\\n overflow: hidden;\\n}\\n.\\\\!overflow-visible {\\n overflow: visible !important;\\n}\\n.overflow-x-auto {\\n overflow-x: auto;\\n}\\n.overflow-y-auto {\\n overflow-y: auto;\\n}\\n.overflow-x-hidden {\\n overflow-x: hidden;\\n}\\n.truncate {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n.whitespace-nowrap {\\n white-space: nowrap;\\n}\\n.whitespace-pre-wrap {\\n white-space: pre-wrap;\\n}\\n.text-wrap {\\n text-wrap: wrap;\\n}\\n.break-words {\\n overflow-wrap: break-word;\\n}\\n.break-all {\\n word-break: break-all;\\n}\\n.rounded {\\n border-radius: 4px;\\n}\\n.rounded-full {\\n border-radius: 9999px;\\n}\\n.rounded-lg {\\n border-radius: 8px;\\n}\\n.rounded-md {\\n border-radius: 6px;\\n}\\n.rounded-sm {\\n border-radius: 2px;\\n}\\n.rounded-l-md {\\n border-top-left-radius: 6px;\\n border-bottom-left-radius: 6px;\\n}\\n.rounded-l-sm {\\n border-top-left-radius: 2px;\\n border-bottom-left-radius: 2px;\\n}\\n.rounded-r-md {\\n border-top-right-radius: 6px;\\n border-bottom-right-radius: 6px;\\n}\\n.rounded-r-sm {\\n border-top-right-radius: 2px;\\n border-bottom-right-radius: 2px;\\n}\\n.rounded-t-lg {\\n border-top-left-radius: 8px;\\n border-top-right-radius: 8px;\\n}\\n.rounded-t-sm {\\n border-top-left-radius: 2px;\\n border-top-right-radius: 2px;\\n}\\n.rounded-bl-lg {\\n border-bottom-left-radius: 8px;\\n}\\n.rounded-br-lg {\\n border-bottom-right-radius: 8px;\\n}\\n.rounded-tl-lg {\\n border-top-left-radius: 8px;\\n}\\n.rounded-tr-lg {\\n border-top-right-radius: 8px;\\n}\\n.border {\\n border-width: 1px;\\n}\\n.border-4 {\\n border-width: 4px;\\n}\\n.border-b {\\n border-bottom-width: 1px;\\n}\\n.border-l {\\n border-left-width: 1px;\\n}\\n.border-l-0 {\\n border-left-width: 0px;\\n}\\n.border-l-1 {\\n border-left-width: 1px;\\n}\\n.border-r {\\n border-right-width: 1px;\\n}\\n.border-t {\\n border-top-width: 1px;\\n}\\n.border-none {\\n border-style: none;\\n}\\n.\\\\!border-red-500 {\\n --tw-border-opacity: 1 !important;\\n border-color: rgb(239 68 68 / var(--tw-border-opacity, 1)) !important;\\n}\\n.border-\\\\[\\\\#1e1e1e\\\\] {\\n --tw-border-opacity: 1;\\n border-color: rgb(30 30 30 / var(--tw-border-opacity, 1));\\n}\\n.border-\\\\[\\\\#222\\\\] {\\n --tw-border-opacity: 1;\\n border-color: rgb(34 34 34 / var(--tw-border-opacity, 1));\\n}\\n.border-\\\\[\\\\#27272A\\\\] {\\n --tw-border-opacity: 1;\\n border-color: rgb(39 39 42 / var(--tw-border-opacity, 1));\\n}\\n.border-\\\\[\\\\#333\\\\] {\\n --tw-border-opacity: 1;\\n border-color: rgb(51 51 51 / var(--tw-border-opacity, 1));\\n}\\n.border-transparent {\\n border-color: transparent;\\n}\\n.border-zinc-800 {\\n --tw-border-opacity: 1;\\n border-color: rgb(39 39 42 / var(--tw-border-opacity, 1));\\n}\\n.bg-\\\\[\\\\#0A0A0A\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(10 10 10 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#141414\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(20 20 20 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#18181B\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(24 24 27 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#18181B\\\\]\\\\/50 {\\n background-color: rgb(24 24 27 / 0.5);\\n}\\n.bg-\\\\[\\\\#1D3A66\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(29 58 102 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#1E1E1E\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(30 30 30 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#1a2a1a\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(26 42 26 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#1e1e1e\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(30 30 30 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#214379d4\\\\] {\\n background-color: #214379d4;\\n}\\n.bg-\\\\[\\\\#27272A\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(39 39 42 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#2a1515\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(42 21 21 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#412162\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(65 33 98 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#44444a\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(68 68 74 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#4b4b4b\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(75 75 75 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#5f3f9a\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(95 63 154 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#5f3f9a\\\\]\\\\/40 {\\n background-color: rgb(95 63 154 / 0.4);\\n}\\n.bg-\\\\[\\\\#6a369e\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(106 54 158 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#7521c8\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(117 33 200 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#8e61e3\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(142 97 227 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#EFD81A\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(239 216 26 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#b77116\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(183 113 22 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#b94040\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(185 64 64 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#d36cff\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(211 108 255 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[\\\\#efd81a6b\\\\] {\\n background-color: #efd81a6b;\\n}\\n.bg-black {\\n --tw-bg-opacity: 1;\\n background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1));\\n}\\n.bg-black\\\\/40 {\\n background-color: rgb(0 0 0 / 0.4);\\n}\\n.bg-gray-200 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));\\n}\\n.bg-green-500\\\\/50 {\\n background-color: rgb(34 197 94 / 0.5);\\n}\\n.bg-green-500\\\\/60 {\\n background-color: rgb(34 197 94 / 0.6);\\n}\\n.bg-neutral-700 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(64 64 64 / var(--tw-bg-opacity, 1));\\n}\\n.bg-purple-500 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(168 85 247 / var(--tw-bg-opacity, 1));\\n}\\n.bg-purple-500\\\\/90 {\\n background-color: rgb(168 85 247 / 0.9);\\n}\\n.bg-purple-800 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(107 33 168 / var(--tw-bg-opacity, 1));\\n}\\n.bg-red-500 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1));\\n}\\n.bg-red-500\\\\/90 {\\n background-color: rgb(239 68 68 / 0.9);\\n}\\n.bg-red-950\\\\/50 {\\n background-color: rgb(69 10 10 / 0.5);\\n}\\n.bg-transparent {\\n background-color: transparent;\\n}\\n.bg-white {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n}\\n.bg-yellow-300 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(253 224 71 / var(--tw-bg-opacity, 1));\\n}\\n.bg-zinc-800 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(39 39 42 / var(--tw-bg-opacity, 1));\\n}\\n.bg-zinc-900\\\\/30 {\\n background-color: rgb(24 24 27 / 0.3);\\n}\\n.bg-zinc-900\\\\/50 {\\n background-color: rgb(24 24 27 / 0.5);\\n}\\n.p-0 {\\n padding: 0px;\\n}\\n.p-1 {\\n padding: 4px;\\n}\\n.p-2 {\\n padding: 8px;\\n}\\n.p-3 {\\n padding: 12px;\\n}\\n.p-4 {\\n padding: 16px;\\n}\\n.p-5 {\\n padding: 20px;\\n}\\n.p-6 {\\n padding: 24px;\\n}\\n.px-1 {\\n padding-left: 4px;\\n padding-right: 4px;\\n}\\n.px-1\\\\.5 {\\n padding-left: 6px;\\n padding-right: 6px;\\n}\\n.px-2 {\\n padding-left: 8px;\\n padding-right: 8px;\\n}\\n.px-2\\\\.5 {\\n padding-left: 10px;\\n padding-right: 10px;\\n}\\n.px-3 {\\n padding-left: 12px;\\n padding-right: 12px;\\n}\\n.px-4 {\\n padding-left: 16px;\\n padding-right: 16px;\\n}\\n.py-0\\\\.5 {\\n padding-top: 2px;\\n padding-bottom: 2px;\\n}\\n.py-1 {\\n padding-top: 4px;\\n padding-bottom: 4px;\\n}\\n.py-1\\\\.5 {\\n padding-top: 6px;\\n padding-bottom: 6px;\\n}\\n.py-2 {\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n.py-3 {\\n padding-top: 12px;\\n padding-bottom: 12px;\\n}\\n.py-4 {\\n padding-top: 16px;\\n padding-bottom: 16px;\\n}\\n.py-\\\\[1px\\\\] {\\n padding-top: 1px;\\n padding-bottom: 1px;\\n}\\n.py-\\\\[3px\\\\] {\\n padding-top: 3px;\\n padding-bottom: 3px;\\n}\\n.py-\\\\[5px\\\\] {\\n padding-top: 5px;\\n padding-bottom: 5px;\\n}\\n.pb-2 {\\n padding-bottom: 8px;\\n}\\n.pl-1 {\\n padding-left: 4px;\\n}\\n.pl-2 {\\n padding-left: 8px;\\n}\\n.pl-2\\\\.5 {\\n padding-left: 10px;\\n}\\n.pl-3 {\\n padding-left: 12px;\\n}\\n.pl-5 {\\n padding-left: 20px;\\n}\\n.pl-6 {\\n padding-left: 24px;\\n}\\n.pr-1 {\\n padding-right: 4px;\\n}\\n.pr-1\\\\.5 {\\n padding-right: 6px;\\n}\\n.pr-2 {\\n padding-right: 8px;\\n}\\n.pr-2\\\\.5 {\\n padding-right: 10px;\\n}\\n.pt-0 {\\n padding-top: 0px;\\n}\\n.pt-2 {\\n padding-top: 8px;\\n}\\n.pt-5 {\\n padding-top: 20px;\\n}\\n.text-left {\\n text-align: left;\\n}\\n.font-mono {\\n font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace;\\n}\\n.text-\\\\[10px\\\\] {\\n font-size: 10px;\\n}\\n.text-\\\\[11px\\\\] {\\n font-size: 11px;\\n}\\n.text-\\\\[13px\\\\] {\\n font-size: 13px;\\n}\\n.text-\\\\[14px\\\\] {\\n font-size: 14px;\\n}\\n.text-\\\\[17px\\\\] {\\n font-size: 17px;\\n}\\n.text-\\\\[8px\\\\] {\\n font-size: 8px;\\n}\\n.text-sm {\\n font-size: 14px;\\n line-height: 20px;\\n}\\n.text-xs {\\n font-size: 12px;\\n line-height: 16px;\\n}\\n.font-bold {\\n font-weight: 700;\\n}\\n.font-medium {\\n font-weight: 500;\\n}\\n.font-semibold {\\n font-weight: 600;\\n}\\n.uppercase {\\n text-transform: uppercase;\\n}\\n.lowercase {\\n text-transform: lowercase;\\n}\\n.capitalize {\\n text-transform: capitalize;\\n}\\n.italic {\\n font-style: italic;\\n}\\n.leading-6 {\\n line-height: 24px;\\n}\\n.leading-none {\\n line-height: 1;\\n}\\n.tracking-wide {\\n letter-spacing: 0.025em;\\n}\\n.text-\\\\[\\\\#4ade80\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(74 222 128 / var(--tw-text-opacity, 1));\\n}\\n.text-\\\\[\\\\#5a5a5a\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(90 90 90 / var(--tw-text-opacity, 1));\\n}\\n.text-\\\\[\\\\#65656D\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(101 101 109 / var(--tw-text-opacity, 1));\\n}\\n.text-\\\\[\\\\#666\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(102 102 102 / var(--tw-text-opacity, 1));\\n}\\n.text-\\\\[\\\\#6E6E77\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(110 110 119 / var(--tw-text-opacity, 1));\\n}\\n.text-\\\\[\\\\#6F6F78\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(111 111 120 / var(--tw-text-opacity, 1));\\n}\\n.text-\\\\[\\\\#7346a0\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(115 70 160 / var(--tw-text-opacity, 1));\\n}\\n.text-\\\\[\\\\#737373\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(115 115 115 / var(--tw-text-opacity, 1));\\n}\\n.text-\\\\[\\\\#888\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(136 136 136 / var(--tw-text-opacity, 1));\\n}\\n.text-\\\\[\\\\#8E61E3\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(142 97 227 / var(--tw-text-opacity, 1));\\n}\\n.text-\\\\[\\\\#999\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(153 153 153 / var(--tw-text-opacity, 1));\\n}\\n.text-\\\\[\\\\#A1A1AA\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(161 161 170 / var(--tw-text-opacity, 1));\\n}\\n.text-\\\\[\\\\#A855F7\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(168 85 247 / var(--tw-text-opacity, 1));\\n}\\n.text-\\\\[\\\\#E4E4E7\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(228 228 231 / var(--tw-text-opacity, 1));\\n}\\n.text-\\\\[\\\\#d36cff\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(211 108 255 / var(--tw-text-opacity, 1));\\n}\\n.text-\\\\[\\\\#f87171\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(248 113 113 / var(--tw-text-opacity, 1));\\n}\\n.text-black {\\n --tw-text-opacity: 1;\\n color: rgb(0 0 0 / var(--tw-text-opacity, 1));\\n}\\n.text-gray-100 {\\n --tw-text-opacity: 1;\\n color: rgb(243 244 246 / var(--tw-text-opacity, 1));\\n}\\n.text-gray-300 {\\n --tw-text-opacity: 1;\\n color: rgb(209 213 219 / var(--tw-text-opacity, 1));\\n}\\n.text-gray-400 {\\n --tw-text-opacity: 1;\\n color: rgb(156 163 175 / var(--tw-text-opacity, 1));\\n}\\n.text-gray-500 {\\n --tw-text-opacity: 1;\\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\\n}\\n.text-green-500 {\\n --tw-text-opacity: 1;\\n color: rgb(34 197 94 / var(--tw-text-opacity, 1));\\n}\\n.text-neutral-300 {\\n --tw-text-opacity: 1;\\n color: rgb(212 212 212 / var(--tw-text-opacity, 1));\\n}\\n.text-neutral-400 {\\n --tw-text-opacity: 1;\\n color: rgb(163 163 163 / var(--tw-text-opacity, 1));\\n}\\n.text-neutral-500 {\\n --tw-text-opacity: 1;\\n color: rgb(115 115 115 / var(--tw-text-opacity, 1));\\n}\\n.text-purple-400 {\\n --tw-text-opacity: 1;\\n color: rgb(192 132 252 / var(--tw-text-opacity, 1));\\n}\\n.text-red-300 {\\n --tw-text-opacity: 1;\\n color: rgb(252 165 165 / var(--tw-text-opacity, 1));\\n}\\n.text-red-400 {\\n --tw-text-opacity: 1;\\n color: rgb(248 113 113 / var(--tw-text-opacity, 1));\\n}\\n.text-red-500 {\\n --tw-text-opacity: 1;\\n color: rgb(239 68 68 / var(--tw-text-opacity, 1));\\n}\\n.text-white {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.text-white\\\\/30 {\\n color: rgb(255 255 255 / 0.3);\\n}\\n.text-white\\\\/70 {\\n color: rgb(255 255 255 / 0.7);\\n}\\n.text-yellow-300 {\\n --tw-text-opacity: 1;\\n color: rgb(253 224 71 / var(--tw-text-opacity, 1));\\n}\\n.text-yellow-500 {\\n --tw-text-opacity: 1;\\n color: rgb(234 179 8 / var(--tw-text-opacity, 1));\\n}\\n.text-zinc-200 {\\n --tw-text-opacity: 1;\\n color: rgb(228 228 231 / var(--tw-text-opacity, 1));\\n}\\n.text-zinc-400 {\\n --tw-text-opacity: 1;\\n color: rgb(161 161 170 / var(--tw-text-opacity, 1));\\n}\\n.text-zinc-500 {\\n --tw-text-opacity: 1;\\n color: rgb(113 113 122 / var(--tw-text-opacity, 1));\\n}\\n.text-zinc-600 {\\n --tw-text-opacity: 1;\\n color: rgb(82 82 91 / var(--tw-text-opacity, 1));\\n}\\n.opacity-0 {\\n opacity: 0;\\n}\\n.opacity-100 {\\n opacity: 1;\\n}\\n.opacity-50 {\\n opacity: 0.5;\\n}\\n.shadow-lg {\\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.outline {\\n outline-style: solid;\\n}\\n.ring-1 {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\\n}\\n.ring-white\\\\/\\\\[0\\\\.08\\\\] {\\n --tw-ring-color: rgb(255 255 255 / 0.08);\\n}\\n.blur {\\n --tw-blur: blur(8px);\\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\\n}\\n.\\\\!filter {\\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important;\\n}\\n.filter {\\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\\n}\\n.backdrop-blur-sm {\\n --tw-backdrop-blur: blur(4px);\\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\\n}\\n.transition {\\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-\\\\[border-radius\\\\] {\\n transition-property: border-radius;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-\\\\[color\\\\2c transform\\\\] {\\n transition-property: color,transform;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-\\\\[max-height\\\\] {\\n transition-property: max-height;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-\\\\[opacity\\\\] {\\n transition-property: opacity;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-all {\\n transition-property: all;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-colors {\\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-none {\\n transition-property: none;\\n}\\n.transition-opacity {\\n transition-property: opacity;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-transform {\\n transition-property: transform;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.delay-0 {\\n transition-delay: 0s;\\n}\\n.delay-150 {\\n transition-delay: 150ms;\\n}\\n.delay-300 {\\n transition-delay: 300ms;\\n}\\n.\\\\!duration-0 {\\n transition-duration: 0s !important;\\n}\\n.duration-0 {\\n transition-duration: 0s;\\n}\\n.duration-200 {\\n transition-duration: 200ms;\\n}\\n.duration-300 {\\n transition-duration: 300ms;\\n}\\n.ease-\\\\[cubic-bezier\\\\(0\\\\.23\\\\2c 1\\\\2c 0\\\\.32\\\\2c 1\\\\)\\\\] {\\n transition-timing-function: cubic-bezier(0.23,1,0.32,1);\\n}\\n.ease-\\\\[cubic-bezier\\\\(0\\\\.25\\\\2c 0\\\\.1\\\\2c 0\\\\.25\\\\2c 1\\\\)\\\\] {\\n transition-timing-function: cubic-bezier(0.25,0.1,0.25,1);\\n}\\n.ease-in-out {\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n}\\n.ease-out {\\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\\n}\\n.will-change-transform {\\n will-change: transform;\\n}\\n.animation-duration-300 {\\n animation-duration: .3s;\\n}\\n.animation-delay-300 {\\n animation-delay: .3s;\\n}\\n.\\\\[touch-action\\\\:none\\\\] {\\n touch-action: none;\\n}\\n\\n* {\\n outline: none !important;\\n text-rendering: optimizeLegibility;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n backface-visibility: hidden;\\n\\n /* WebKit (Chrome, Safari, Edge) specific scrollbar styles */\\n &::-webkit-scrollbar {\\n width: 6px;\\n height: 6px;\\n }\\n\\n &::-webkit-scrollbar-track {\\n border-radius: 10px;\\n background: transparent;\\n }\\n\\n &::-webkit-scrollbar-thumb {\\n border-radius: 10px;\\n background: rgba(255, 255, 255, 0.3);\\n }\\n\\n &::-webkit-scrollbar-thumb:hover {\\n background: rgba(255, 255, 255, 0.4);\\n }\\n\\n &::-webkit-scrollbar-corner {\\n background: transparent;\\n }\\n}\\n\\n@-moz-document url-prefix() {\\n * {\\n scrollbar-width: thin;\\n scrollbar-color: rgba(255, 255, 255, 0.4) transparent;\\n scrollbar-width: 6px;\\n }\\n}\\n\\nbutton:hover {\\n background-image: none;\\n}\\n\\nbutton {\\n outline: 2px solid transparent;\\n outline-offset: 2px;\\n border-style: none;\\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n transition-timing-function: linear;\\n cursor: pointer;\\n}\\n\\ninput {\\n border-style: none;\\n background-color: transparent;\\n background-image: none;\\n outline: 2px solid transparent;\\n outline-offset: 2px;\\n}\\n\\ninput::-moz-placeholder {\\n font-size: 12px;\\n line-height: 16px;\\n font-style: italic;\\n --tw-text-opacity: 1;\\n color: rgb(115 115 115 / var(--tw-text-opacity, 1));\\n}\\n\\ninput::placeholder {\\n font-size: 12px;\\n line-height: 16px;\\n font-style: italic;\\n --tw-text-opacity: 1;\\n color: rgb(115 115 115 / var(--tw-text-opacity, 1));\\n}\\n\\ninput:-moz-placeholder-shown {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\\ninput:placeholder-shown {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\\nsvg {\\n height: auto;\\n width: auto;\\n pointer-events: none;\\n}\\n\\n/*\\n Using CSS content with data attributes is more performant than:\\n 1. React re-renders with JSX text content\\n 2. Direct DOM manipulation methods:\\n - element.textContent (creates/updates text nodes, triggers repaint)\\n - element.innerText (triggers reflow by computing styles & layout)\\n - element.innerHTML (heavy parsing, triggers reflow, security risks)\\n 3. Multiple data attributes with complex CSS concatenation\\n\\n This approach:\\n - Avoids React reconciliation\\n - Uses browser's native CSS engine (optimized content updates)\\n - Minimizes main thread work\\n - Reduces DOM operations\\n - Avoids forced reflows (layout recalculation)\\n - Only triggers necessary repaints\\n - Keeps pseudo-element updates in render layer\\n*/\\n.with-data-text {\\n overflow: hidden;\\n &::before {\\n content: attr(data-text);\\n }\\n &::before {\\n display: block;\\n }\\n &::before {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n }\\n}\\n\\n#react-scan-toolbar {\\n position: fixed;\\n left: 0px;\\n top: 0px;\\n display: flex;\\n flex-direction: column;\\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace;\\n font-size: 13px;\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n --tw-bg-opacity: 1;\\n background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1));\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n cursor: move;\\n opacity: 0;\\n z-index: 2147483678;\\n}\\n\\n@keyframes fadeIn {\\n\\n 0% {\\n opacity: 0;\\n }\\n\\n 100% {\\n opacity: 1;\\n }\\n}\\n\\n#react-scan-toolbar {\\n animation: fadeIn ease-in forwards;\\n animation-duration: .3s;\\n animation-delay: .3s;\\n --tw-shadow: 0 4px 12px rgba(0,0,0,0.2);\\n --tw-shadow-colored: 0 4px 12px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n place-self: start;\\n\\n /* [CURSOR GENERATED] Anti-blur fixes:\\n * We removed will-change-transform and replaced it with these properties\\n * because will-change was causing stacking context issues and inconsistent\\n * text rendering. The new properties work together to force proper\\n * GPU acceleration without z-index side effects:\\n */\\n transform: translate3d(\\n 0,\\n 0,\\n 0\\n ); /* Forces GPU acceleration without causing stacking issues */\\n backface-visibility: hidden; /* Prevents blurry text during transforms */\\n perspective: 1000; /* Creates proper 3D context for crisp text */ /* Ensures consistent text rendering across browsers */\\n transform-style: preserve-3d;\\n}\\n\\n.button {\\n &:hover {\\n background: rgba(255, 255, 255, 0.1);\\n }\\n\\n &:active {\\n background: rgba(255, 255, 255, 0.15);\\n }\\n}\\n\\n.resize-line-wrapper {\\n position: absolute;\\n overflow: hidden;\\n}\\n\\n.resize-line {\\n position: absolute;\\n inset: 0px;\\n overflow: hidden;\\n --tw-bg-opacity: 1;\\n background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1));\\n transition-property: all;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n\\n svg {\\n position: absolute;\\n }\\n\\n svg {\\n top: 50%;\\n }\\n\\n svg {\\n left: 50%;\\n }\\n\\n svg {\\n --tw-translate-x: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n\\n svg {\\n --tw-translate-y: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n}\\n\\n.resize-right,\\n.resize-left {\\n top: 0px;\\n bottom: 0px;\\n width: 24px;\\n cursor: ew-resize;\\n\\n .resize-line-wrapper {\\n top: 0px;\\n bottom: 0px;\\n }\\n\\n .resize-line-wrapper {\\n width: 50%;\\n }\\n\\n &:hover {\\n .resize-line {\\n --tw-translate-x: 0px;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n }\\n}\\n.resize-right {\\n right: 0px;\\n --tw-translate-x: 50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n\\n .resize-line-wrapper {\\n right: 0px;\\n }\\n .resize-line {\\n border-top-right-radius: 8px;\\n border-bottom-right-radius: 8px;\\n }\\n .resize-line {\\n --tw-translate-x: -100%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n}\\n\\n.resize-left {\\n left: 0px;\\n --tw-translate-x: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n\\n .resize-line-wrapper {\\n left: 0px;\\n }\\n .resize-line {\\n border-top-left-radius: 8px;\\n border-bottom-left-radius: 8px;\\n }\\n .resize-line {\\n --tw-translate-x: 100%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n}\\n\\n.resize-top,\\n.resize-bottom {\\n left: 0px;\\n right: 0px;\\n height: 24px;\\n cursor: ns-resize;\\n\\n .resize-line-wrapper {\\n left: 0px;\\n right: 0px;\\n }\\n\\n .resize-line-wrapper {\\n height: 50%;\\n }\\n\\n &:hover {\\n .resize-line {\\n --tw-translate-y: 0px;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n }\\n}\\n.resize-top {\\n top: 0px;\\n --tw-translate-y: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n\\n .resize-line-wrapper {\\n top: 0px;\\n }\\n .resize-line {\\n border-top-left-radius: 8px;\\n border-top-right-radius: 8px;\\n }\\n .resize-line {\\n --tw-translate-y: 100%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n}\\n\\n.resize-bottom {\\n bottom: 0px;\\n --tw-translate-y: 50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n\\n .resize-line-wrapper {\\n bottom: 0px;\\n }\\n .resize-line {\\n border-bottom-right-radius: 8px;\\n border-bottom-left-radius: 8px;\\n }\\n .resize-line {\\n --tw-translate-y: -100%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n}\\n\\n.react-scan-header {\\n display: flex;\\n align-items: center;\\n -moz-column-gap: 8px;\\n column-gap: 8px;\\n padding-left: 12px;\\n padding-right: 8px;\\n min-height: 36px;\\n border-bottom-width: 1px;\\n --tw-border-opacity: 1;\\n border-color: rgb(34 34 34 / var(--tw-border-opacity, 1));\\n overflow: hidden;\\n white-space: nowrap;\\n}\\n\\n.react-scan-replay-button,\\n.react-scan-close-button {\\n display: flex;\\n align-items: center;\\n padding: 4px;\\n min-width: -moz-fit-content;\\n min-width: fit-content;\\n border-radius: 4px;\\n transition-property: all;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 300ms;\\n}\\n\\n.react-scan-replay-button {\\n position: relative;\\n overflow: hidden;\\n background-color: rgb(168 85 247 / 0.5) !important;\\n\\n &:hover {\\n background-color: rgb(168 85 247 / 0.25);\\n }\\n\\n &.disabled {\\n opacity: 0.5;\\n }\\n\\n &.disabled {\\n pointer-events: none;\\n }\\n\\n &:before {\\n content: \\\"\\\";\\n }\\n\\n &:before {\\n position: absolute;\\n }\\n\\n &:before {\\n inset: 0px;\\n }\\n\\n &:before {\\n --tw-translate-x: -100%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n\\n &:before {\\n animation: shimmer 2s infinite;\\n background: linear-gradient(\\n to right,\\n transparent,\\n rgba(142, 97, 227, 0.3),\\n transparent\\n );\\n }\\n}\\n\\n.react-scan-close-button {\\n background-color: rgb(255 255 255 / 0.1);\\n\\n &:hover {\\n background-color: rgb(255 255 255 / 0.15);\\n }\\n}\\n\\n@keyframes shimmer {\\n 100% {\\n --tw-translate-x: 100%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n}\\n\\n.react-section-header {\\n position: sticky;\\n z-index: 100;\\n display: flex;\\n align-items: center;\\n -moz-column-gap: 8px;\\n column-gap: 8px;\\n padding-left: 12px;\\n padding-right: 12px;\\n height: 28px;\\n width: 100%;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n --tw-text-opacity: 1;\\n color: rgb(136 136 136 / var(--tw-text-opacity, 1));\\n border-bottom-width: 1px;\\n --tw-border-opacity: 1;\\n border-color: rgb(34 34 34 / var(--tw-border-opacity, 1));\\n --tw-bg-opacity: 1;\\n background-color: rgb(10 10 10 / var(--tw-bg-opacity, 1));\\n}\\n\\n.react-scan-section {\\n display: flex;\\n flex-direction: column;\\n padding-left: 8px;\\n padding-right: 8px;\\n --tw-text-opacity: 1;\\n color: rgb(136 136 136 / var(--tw-text-opacity, 1));\\n}\\n\\n.react-scan-section::before {\\n --tw-text-opacity: 1;\\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\\n --tw-content: attr(data-section);\\n content: var(--tw-content);\\n}\\n\\n.react-scan-section {\\n font-size: 12px;\\n line-height: 16px;\\n\\n > .react-scan-property {\\n margin-left: -14px;\\n }\\n}\\n\\n.react-scan-property {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n padding-left: 32px;\\n border-left-width: 1px;\\n border-color: transparent;\\n overflow: hidden;\\n}\\n\\n.react-scan-property-content {\\n display: flex;\\n flex: 1 1 0%;\\n flex-direction: column;\\n min-height: 28px;\\n max-width: 100%;\\n overflow: hidden;\\n}\\n\\n.react-scan-string {\\n color: #9ecbff;\\n}\\n\\n.react-scan-number {\\n color: #79c7ff;\\n}\\n\\n.react-scan-boolean {\\n color: #56b6c2;\\n}\\n\\n.react-scan-key {\\n width: -moz-fit-content;\\n width: fit-content;\\n max-width: 240px;\\n white-space: nowrap;\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n\\n.react-scan-input {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n --tw-bg-opacity: 1;\\n background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1));\\n}\\n\\n@keyframes blink {\\n from {\\n opacity: 1;\\n }\\n to {\\n opacity: 0;\\n }\\n}\\n\\n.react-scan-arrow {\\n position: absolute;\\n top: 0px;\\n left: 28px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n cursor: pointer;\\n height: 28px;\\n width: 24px;\\n --tw-translate-x: -100%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n z-index: 10;\\n\\n > svg {\\n transition-property: transform;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n }\\n}\\n\\n.react-scan-expandable {\\n display: grid;\\n grid-template-rows: 0fr;\\n transition-property: all;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 75ms;\\n\\n &.react-scan-expanded {\\n grid-template-rows: 1fr;\\n }\\n\\n &.react-scan-expanded {\\n transition-duration: 100ms;\\n }\\n}\\n\\n.react-scan-nested {\\n position: relative;\\n overflow: hidden;\\n\\n &:before {\\n content: \\\"\\\";\\n }\\n\\n &:before {\\n position: absolute;\\n }\\n\\n &:before {\\n top: 0px;\\n }\\n\\n &:before {\\n left: 0px;\\n }\\n\\n &:before {\\n height: 100%;\\n }\\n\\n &:before {\\n width: 1px;\\n }\\n\\n &:before {\\n background-color: rgb(107 114 128 / 0.3);\\n }\\n}\\n\\n.react-scan-settings {\\n position: absolute;\\n inset: 0px;\\n display: flex;\\n flex-direction: column;\\n gap: 16px;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n padding-left: 16px;\\n padding-right: 16px;\\n --tw-text-opacity: 1;\\n color: rgb(136 136 136 / var(--tw-text-opacity, 1));\\n\\n > div {\\n display: flex;\\n }\\n\\n > div {\\n align-items: center;\\n }\\n\\n > div {\\n justify-content: space-between;\\n }\\n\\n > div {\\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n }\\n\\n > div {\\n transition-duration: 300ms;\\n }\\n}\\n\\n.react-scan-preview-line {\\n position: relative;\\n display: flex;\\n min-height: 28px;\\n align-items: center;\\n -moz-column-gap: 8px;\\n column-gap: 8px;\\n}\\n\\n.react-scan-flash-overlay {\\n position: absolute;\\n inset: 0px;\\n opacity: 0;\\n z-index: 50;\\n pointer-events: none;\\n transition-property: opacity;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n mix-blend-mode: multiply;\\n background-color: rgb(168 85 247 / 0.9);\\n}\\n\\n.react-scan-toggle {\\n position: relative;\\n display: inline-flex;\\n height: 24px;\\n width: 40px;\\n\\n input {\\n position: absolute;\\n }\\n\\n input {\\n inset: 0px;\\n }\\n\\n input {\\n z-index: 20;\\n }\\n\\n input {\\n opacity: 0;\\n }\\n\\n input {\\n cursor: pointer;\\n }\\n\\n input {\\n height: 100%;\\n }\\n\\n input {\\n width: 100%;\\n }\\n\\n input:checked {\\n + div {\\n --tw-bg-opacity: 1;\\n background-color: rgb(95 63 154 / var(--tw-bg-opacity, 1));\\n }\\n + div {\\n\\n &::before {\\n --tw-translate-x: 100%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n\\n &::before {\\n left: auto;\\n }\\n\\n &::before {\\n --tw-border-opacity: 1;\\n border-color: rgb(95 63 154 / var(--tw-border-opacity, 1));\\n }\\n }\\n }\\n\\n > div {\\n position: absolute;\\n }\\n\\n > div {\\n inset: 4px;\\n }\\n\\n > div {\\n --tw-bg-opacity: 1;\\n background-color: rgb(64 64 64 / var(--tw-bg-opacity, 1));\\n }\\n\\n > div {\\n border-radius: 9999px;\\n }\\n\\n > div {\\n pointer-events: none;\\n }\\n\\n > div {\\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n }\\n\\n > div {\\n transition-duration: 300ms;\\n }\\n\\n > div {\\n\\n &:before {\\n --tw-content: '';\\n content: var(--tw-content);\\n }\\n\\n &:before {\\n position: absolute;\\n }\\n\\n &:before {\\n top: 50%;\\n }\\n\\n &:before {\\n left: 0px;\\n }\\n\\n &:before {\\n --tw-translate-y: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n\\n &:before {\\n height: 16px;\\n }\\n\\n &:before {\\n width: 16px;\\n }\\n\\n &:before {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n }\\n\\n &:before {\\n border-width: 2px;\\n }\\n\\n &:before {\\n --tw-border-opacity: 1;\\n border-color: rgb(64 64 64 / var(--tw-border-opacity, 1));\\n }\\n\\n &:before {\\n border-radius: 9999px;\\n }\\n\\n &:before {\\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n }\\n\\n &:before {\\n transition-property: all;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n }\\n\\n &:before {\\n transition-duration: 300ms;\\n }\\n }\\n}\\n\\n.react-scan-flash-active {\\n opacity: 0.4;\\n transition-property: opacity;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 300ms;\\n}\\n\\n.react-scan-inspector-overlay {\\n display: flex;\\n flex-direction: column;\\n opacity: 0;\\n transition-property: opacity;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 300ms;\\n\\n &.fade-out {\\n opacity: 0;\\n }\\n\\n &.fade-in {\\n opacity: 1;\\n }\\n}\\n\\n.react-scan-what-changed {\\n ul {\\n list-style-type: disc;\\n }\\n ul {\\n padding-left: 16px;\\n }\\n\\n li {\\n white-space: nowrap;\\n }\\n\\n li {\\n > div {\\n display: flex;\\n }\\n > div {\\n align-items: center;\\n }\\n > div {\\n justify-content: space-between;\\n }\\n > div {\\n -moz-column-gap: 8px;\\n column-gap: 8px;\\n }\\n }\\n}\\n\\n.count-badge {\\n display: flex;\\n align-items: center;\\n -moz-column-gap: 8px;\\n column-gap: 8px;\\n padding-left: 6px;\\n padding-right: 6px;\\n padding-top: 2px;\\n padding-bottom: 2px;\\n border-radius: 4px;\\n font-size: 12px;\\n line-height: 16px;\\n font-weight: 500;\\n --tw-numeric-spacing: tabular-nums;\\n font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);\\n --tw-text-opacity: 1;\\n color: rgb(168 85 247 / var(--tw-text-opacity, 1));\\n background-color: rgb(168 85 247 / 0.1);\\n transform-origin: center;\\n transition-property: all;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-delay: 150ms;\\n transition-duration: 300ms;\\n}\\n\\n@keyframes countFlash {\\n\\n 0% {\\n background-color: rgba(168, 85, 247, 0.3);\\n transform: scale(1.05);\\n }\\n\\n 100% {\\n background-color: rgba(168, 85, 247, 0.1);\\n transform: scale(1);\\n }\\n}\\n\\n.count-flash {\\n animation: countFlash .3s ease-out forwards;\\n}\\n\\n@keyframes countFlashShake {\\n\\n 0% {\\n transform: translateX(0);\\n }\\n\\n 25% {\\n transform: translateX(-5px);\\n }\\n\\n 50% {\\n transform: translateX(5px) scale(1.1);\\n }\\n\\n 75% {\\n transform: translateX(-5px);\\n }\\n\\n 100% {\\n transform: translateX(0);\\n }\\n}\\n\\n.count-flash-white {\\n animation: countFlashShake .3s ease-out forwards;\\n transition-delay: 500ms !important;\\n}\\n\\n.change-scope {\\n display: flex;\\n align-items: center;\\n -moz-column-gap: 4px;\\n column-gap: 4px;\\n --tw-text-opacity: 1;\\n color: rgb(102 102 102 / var(--tw-text-opacity, 1));\\n font-size: 12px;\\n line-height: 16px;\\n font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace;\\n\\n > div {\\n padding-left: 6px;\\n padding-right: 6px;\\n }\\n\\n > div {\\n padding-top: 2px;\\n padding-bottom: 2px;\\n }\\n\\n > div {\\n transform-origin: center;\\n }\\n\\n > div {\\n border-radius: 4px;\\n }\\n\\n > div {\\n font-size: 12px;\\n line-height: 16px;\\n }\\n\\n > div {\\n font-weight: 500;\\n }\\n\\n > div {\\n --tw-numeric-spacing: tabular-nums;\\n font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);\\n }\\n\\n > div {\\n transform-origin: center;\\n }\\n\\n > div {\\n transition-property: all;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n }\\n\\n > div {\\n transition-delay: 150ms;\\n }\\n\\n > div {\\n transition-duration: 300ms;\\n }\\n\\n > div {\\n\\n &[data-flash=\\\"true\\\"] {\\n background-color: rgb(168 85 247 / 0.1);\\n }\\n\\n &[data-flash=\\\"true\\\"] {\\n --tw-text-opacity: 1;\\n color: rgb(168 85 247 / var(--tw-text-opacity, 1));\\n }\\n }\\n}\\n\\n.react-scan-slider {\\n position: relative;\\n min-height: 24px;\\n\\n > input {\\n position: absolute;\\n }\\n\\n > input {\\n inset: 0px;\\n }\\n\\n > input {\\n opacity: 0;\\n }\\n\\n &:before {\\n --tw-content: '';\\n content: var(--tw-content);\\n }\\n\\n &:before {\\n position: absolute;\\n }\\n\\n &:before {\\n left: 0px;\\n right: 0px;\\n }\\n\\n &:before {\\n top: 50%;\\n }\\n\\n &:before {\\n --tw-translate-y: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n\\n &:before {\\n height: 6px;\\n }\\n\\n &:before {\\n background-color: rgb(142 97 227 / 0.4);\\n }\\n\\n &:before {\\n border-radius: 8px;\\n }\\n\\n &:before {\\n pointer-events: none;\\n }\\n\\n &:after {\\n --tw-content: '';\\n content: var(--tw-content);\\n }\\n\\n &:after {\\n position: absolute;\\n }\\n\\n &:after {\\n left: 0px;\\n right: 0px;\\n }\\n\\n &:after {\\n top: -8px;\\n bottom: -8px;\\n }\\n\\n &:after {\\n z-index: -10;\\n }\\n\\n span {\\n position: absolute;\\n }\\n\\n span {\\n left: 0px;\\n }\\n\\n span {\\n top: 50%;\\n }\\n\\n span {\\n --tw-translate-y: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n\\n span {\\n height: 10px;\\n }\\n\\n span {\\n width: 10px;\\n }\\n\\n span {\\n border-radius: 8px;\\n }\\n\\n span {\\n --tw-bg-opacity: 1;\\n background-color: rgb(142 97 227 / var(--tw-bg-opacity, 1));\\n }\\n\\n span {\\n pointer-events: none;\\n }\\n\\n span {\\n transition-property: transform;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n }\\n\\n span {\\n transition-duration: 75ms;\\n }\\n}\\n\\n.resize-v-line {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n min-width: 4px;\\n max-width: 4px;\\n height: 100%;\\n width: 100%;\\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n\\n &:hover,\\n &:active {\\n > span {\\n --tw-bg-opacity: 1;\\n background-color: rgb(34 34 34 / var(--tw-bg-opacity, 1));\\n }\\n\\n svg {\\n opacity: 1;\\n }\\n }\\n\\n &::before {\\n --tw-content: \\\"\\\";\\n content: var(--tw-content);\\n }\\n\\n &::before {\\n position: absolute;\\n }\\n\\n &::before {\\n inset: 0px;\\n }\\n\\n &::before {\\n left: 50%;\\n }\\n\\n &::before {\\n --tw-translate-x: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n\\n &::before {\\n width: 1px;\\n }\\n\\n &::before {\\n --tw-bg-opacity: 1;\\n background-color: rgb(34 34 34 / var(--tw-bg-opacity, 1));\\n }\\n\\n &::before {\\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n }\\n\\n > span {\\n position: absolute;\\n }\\n\\n > span {\\n left: 50%;\\n }\\n\\n > span {\\n top: 50%;\\n }\\n\\n > span {\\n --tw-translate-x: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n\\n > span {\\n --tw-translate-y: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n\\n > span {\\n height: 18px;\\n }\\n\\n > span {\\n width: 6px;\\n }\\n\\n > span {\\n border-radius: 4px;\\n }\\n\\n > span {\\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n }\\n\\n svg {\\n position: absolute;\\n }\\n\\n svg {\\n left: 50%;\\n }\\n\\n svg {\\n top: 50%;\\n }\\n\\n svg {\\n --tw-translate-x: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n\\n svg {\\n --tw-translate-y: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n\\n svg {\\n --tw-rotate: 90deg;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n\\n svg {\\n --tw-text-opacity: 1;\\n color: rgb(163 163 163 / var(--tw-text-opacity, 1));\\n }\\n\\n svg {\\n opacity: 0;\\n }\\n\\n svg {\\n transition-property: opacity;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n }\\n\\n svg {\\n z-index: 50;\\n }\\n}\\n\\n.tree-node-search-highlight {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n\\n span {\\n padding-top: 1px;\\n padding-bottom: 1px;\\n }\\n\\n span {\\n border-radius: 2px;\\n }\\n\\n span {\\n --tw-bg-opacity: 1;\\n background-color: rgb(253 224 71 / var(--tw-bg-opacity, 1));\\n }\\n\\n span {\\n font-weight: 500;\\n }\\n\\n span {\\n --tw-text-opacity: 1;\\n color: rgb(0 0 0 / var(--tw-text-opacity, 1));\\n }\\n\\n .single {\\n margin-right: 1px;\\n }\\n\\n .single {\\n padding-left: 2px;\\n padding-right: 2px;\\n }\\n\\n .regex {\\n padding-left: 2px;\\n padding-right: 2px;\\n }\\n\\n .start {\\n margin-left: 1px;\\n }\\n\\n .start {\\n border-top-left-radius: 2px;\\n border-bottom-left-radius: 2px;\\n }\\n\\n .end {\\n margin-right: 1px;\\n }\\n\\n .end {\\n border-top-right-radius: 2px;\\n border-bottom-right-radius: 2px;\\n }\\n\\n .middle {\\n margin-left: 1px;\\n margin-right: 1px;\\n }\\n\\n .middle {\\n border-radius: 2px;\\n }\\n}\\n\\n.react-scan-toolbar-notification {\\n position: absolute;\\n left: 0px;\\n right: 0px;\\n display: flex;\\n align-items: center;\\n -moz-column-gap: 8px;\\n column-gap: 8px;\\n padding: 4px;\\n padding-left: 8px;\\n font-size: 10px;\\n --tw-text-opacity: 1;\\n color: rgb(212 212 212 / var(--tw-text-opacity, 1));\\n background-color: rgb(0 0 0 / 0.9);\\n transition-property: transform;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n\\n &:before {\\n --tw-content: '';\\n content: var(--tw-content);\\n }\\n\\n &:before {\\n position: absolute;\\n }\\n\\n &:before {\\n left: 0px;\\n right: 0px;\\n }\\n\\n &:before {\\n --tw-bg-opacity: 1;\\n background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1));\\n }\\n\\n &:before {\\n height: 8px;\\n }\\n\\n &.position-top {\\n top: 100%;\\n }\\n\\n &.position-top {\\n --tw-translate-y: -100%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n\\n &.position-top {\\n border-bottom-right-radius: 8px;\\n border-bottom-left-radius: 8px;\\n }\\n\\n &.position-top {\\n\\n &::before {\\n top: 0px;\\n }\\n\\n &::before {\\n --tw-translate-y: -100%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n }\\n\\n &.position-bottom {\\n bottom: 100%;\\n }\\n\\n &.position-bottom {\\n --tw-translate-y: 100%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n\\n &.position-bottom {\\n border-top-left-radius: 8px;\\n border-top-right-radius: 8px;\\n }\\n\\n &.position-bottom {\\n\\n &::before {\\n bottom: 0px;\\n }\\n\\n &::before {\\n --tw-translate-y: 100%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n }\\n\\n &.is-open {\\n --tw-translate-y: 0px;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n}\\n\\n.react-scan-header-item {\\n position: absolute;\\n inset: 0px;\\n --tw-translate-y: -200%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n transition-property: transform;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 300ms;\\n\\n &.is-visible {\\n --tw-translate-y: 0px;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n }\\n}\\n\\n.react-scan-components-tree:has(.resize-v-line:hover, .resize-v-line:active)\\n .tree {\\n overflow: hidden;\\n}\\n\\n.react-scan-expandable {\\n display: grid;\\n grid-template-rows: 0fr;\\n overflow: hidden;\\n transition-property: all;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 75ms;\\n transition-timing-function: ease-out;\\n\\n > * {\\n min-height: 0;\\n }\\n\\n &.react-scan-expanded {\\n grid-template-rows: 1fr;\\n transition-duration: 100ms;\\n }\\n}\\n\\n.after\\\\:absolute::after {\\n content: var(--tw-content);\\n position: absolute;\\n}\\n\\n.after\\\\:inset-0::after {\\n content: var(--tw-content);\\n inset: 0px;\\n}\\n\\n.after\\\\:left-1\\\\/2::after {\\n content: var(--tw-content);\\n left: 50%;\\n}\\n\\n.after\\\\:top-\\\\[100\\\\%\\\\]::after {\\n content: var(--tw-content);\\n top: 100%;\\n}\\n\\n.after\\\\:h-\\\\[6px\\\\]::after {\\n content: var(--tw-content);\\n height: 6px;\\n}\\n\\n.after\\\\:w-\\\\[10px\\\\]::after {\\n content: var(--tw-content);\\n width: 10px;\\n}\\n\\n.after\\\\:-translate-x-1\\\\/2::after {\\n content: var(--tw-content);\\n --tw-translate-x: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n\\n@keyframes fadeOut {\\n\\n 0% {\\n content: var(--tw-content);\\n opacity: 1;\\n }\\n\\n 100% {\\n content: var(--tw-content);\\n opacity: 0;\\n }\\n}\\n\\n.after\\\\:animate-\\\\[fadeOut_1s_ease-out_forwards\\\\]::after {\\n content: var(--tw-content);\\n animation: fadeOut 1s ease-out forwards;\\n}\\n\\n.after\\\\:border-l-\\\\[5px\\\\]::after {\\n content: var(--tw-content);\\n border-left-width: 5px;\\n}\\n\\n.after\\\\:border-r-\\\\[5px\\\\]::after {\\n content: var(--tw-content);\\n border-right-width: 5px;\\n}\\n\\n.after\\\\:border-t-\\\\[6px\\\\]::after {\\n content: var(--tw-content);\\n border-top-width: 6px;\\n}\\n\\n.after\\\\:border-l-transparent::after {\\n content: var(--tw-content);\\n border-left-color: transparent;\\n}\\n\\n.after\\\\:border-r-transparent::after {\\n content: var(--tw-content);\\n border-right-color: transparent;\\n}\\n\\n.after\\\\:border-t-white::after {\\n content: var(--tw-content);\\n --tw-border-opacity: 1;\\n border-top-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n\\n.after\\\\:bg-purple-500\\\\/30::after {\\n content: var(--tw-content);\\n background-color: rgb(168 85 247 / 0.3);\\n}\\n\\n.after\\\\:content-\\\\[\\\\\\\"\\\\\\\"\\\\]::after {\\n --tw-content: \\\"\\\";\\n content: var(--tw-content);\\n}\\n\\n.focus-within\\\\:border-\\\\[\\\\#454545\\\\]:focus-within {\\n --tw-border-opacity: 1;\\n border-color: rgb(69 69 69 / var(--tw-border-opacity, 1));\\n}\\n\\n.hover\\\\:bg-\\\\[\\\\#0f0f0f\\\\]:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(15 15 15 / var(--tw-bg-opacity, 1));\\n}\\n\\n.hover\\\\:bg-\\\\[\\\\#18181B\\\\]:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(24 24 27 / var(--tw-bg-opacity, 1));\\n}\\n\\n.hover\\\\:bg-\\\\[\\\\#34343b\\\\]:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(52 52 59 / var(--tw-bg-opacity, 1));\\n}\\n\\n.hover\\\\:bg-\\\\[\\\\#5f3f9a\\\\]\\\\/20:hover {\\n background-color: rgb(95 63 154 / 0.2);\\n}\\n\\n.hover\\\\:bg-\\\\[\\\\#5f3f9a\\\\]\\\\/40:hover {\\n background-color: rgb(95 63 154 / 0.4);\\n}\\n\\n.hover\\\\:bg-red-600:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(220 38 38 / var(--tw-bg-opacity, 1));\\n}\\n\\n.hover\\\\:bg-zinc-700:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(63 63 70 / var(--tw-bg-opacity, 1));\\n}\\n\\n.hover\\\\:bg-zinc-800\\\\/50:hover {\\n background-color: rgb(39 39 42 / 0.5);\\n}\\n\\n.hover\\\\:text-neutral-300:hover {\\n --tw-text-opacity: 1;\\n color: rgb(212 212 212 / var(--tw-text-opacity, 1));\\n}\\n\\n.hover\\\\:text-white:hover {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n\\n.group:hover .group-hover\\\\:bg-\\\\[\\\\#21437982\\\\] {\\n background-color: #21437982;\\n}\\n\\n.group:hover .group-hover\\\\:bg-\\\\[\\\\#5b2d89\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(91 45 137 / var(--tw-bg-opacity, 1));\\n}\\n\\n.group:hover .group-hover\\\\:bg-\\\\[\\\\#6a6a6a\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(106 106 106 / var(--tw-bg-opacity, 1));\\n}\\n\\n.group:hover .group-hover\\\\:bg-\\\\[\\\\#efda1a2f\\\\] {\\n background-color: #efda1a2f;\\n}\\n\\n.group:hover .group-hover\\\\:opacity-100 {\\n opacity: 1;\\n}\\n\\n.peer\\\\/bottom:hover ~ .peer-hover\\\\/bottom\\\\:rounded-b-none {\\n border-bottom-right-radius: 0px;\\n border-bottom-left-radius: 0px;\\n}\\n\\n.peer\\\\/left:hover ~ .peer-hover\\\\/left\\\\:rounded-l-none {\\n border-top-left-radius: 0px;\\n border-bottom-left-radius: 0px;\\n}\\n\\n.peer\\\\/right:hover ~ .peer-hover\\\\/right\\\\:rounded-r-none {\\n border-top-right-radius: 0px;\\n border-bottom-right-radius: 0px;\\n}\\n\\n.peer\\\\/top:hover ~ .peer-hover\\\\/top\\\\:rounded-t-none {\\n border-top-left-radius: 0px;\\n border-top-right-radius: 0px;\\n}\\n\";\n\n// src/web/toolbar.tsx\nimport { Component as Component2, render } from \"preact\";\n\n// src/web/widget/index.tsx\nimport { createContext as createContext2 } from \"preact\";\nimport { useCallback as useCallback6, useEffect as useEffect19, useRef as useRef16, useState as useState21 } from \"preact/hooks\";\n\n// src/web/views/index.tsx\nimport { computed as computed3 } from \"@preact/signals\";\n\n// src/web/widget/header.tsx\nimport { useEffect as useEffect8, useState as useState9 } from \"preact/hooks\";\n\n// src/web/hooks/use-delayed-value.ts\nimport { useEffect as useEffect7, useState as useState7 } from \"preact/hooks\";\nvar useDelayedValue = (value, onDelay, offDelay = onDelay) => {\n const [delayedValue, setDelayedValue] = useState7(value);\n useEffect7(() => {\n if (value === delayedValue) return;\n const delay = value ? onDelay : offDelay;\n const timeout2 = setTimeout(() => setDelayedValue(value), delay);\n return () => clearTimeout(timeout2);\n }, [value, onDelay, offDelay]);\n return delayedValue;\n};\n\n// src/web/views/inspector/header.tsx\nimport { computed as computed2, untracked as untracked2, useSignalEffect as useSignalEffect2 } from \"@preact/signals\";\nimport { useMemo as useMemo3, useRef as useRef6, useState as useState8 } from \"preact/hooks\";\nimport { Fragment as Fragment4, jsx as jsx7, jsxs as jsxs6 } from \"preact/jsx-runtime\";\nvar headerInspectClassName = computed2(\n () => cn(\n \"absolute inset-0 flex items-center gap-x-2\",\n \"translate-y-0\",\n \"transition-transform duration-300\",\n signalIsSettingsOpen.value && \"-translate-y-[200%]\"\n )\n);\nvar HeaderInspect = () => {\n const refReRenders = useRef6(null);\n const refTiming = useRef6(null);\n const [currentFiber, setCurrentFiber] = useState8(null);\n useSignalEffect2(() => {\n const state = Store.inspectState.value;\n if (state.kind === \"focused\") {\n setCurrentFiber(state.fiber);\n }\n });\n useSignalEffect2(() => {\n const state = timelineState.value;\n untracked2(() => {\n if (Store.inspectState.value.kind !== \"focused\") return;\n if (!refReRenders.current || !refTiming.current) return;\n const { totalUpdates, currentIndex, updates, isVisible, windowOffset } = state;\n const reRenders = Math.max(0, totalUpdates - 1);\n const headerText = isVisible ? `#${windowOffset + currentIndex} Re-render` : reRenders > 0 ? `\\xD7${reRenders}` : \"\";\n let formattedTime;\n if (reRenders > 0 && currentIndex >= 0 && currentIndex < updates.length) {\n const time = updates[currentIndex]?.fiberInfo?.selfTime;\n formattedTime = time > 0 ? time < 0.1 - Number.EPSILON ? \"< 0.1ms\" : `${Number(time.toFixed(1))}ms` : void 0;\n }\n refReRenders.current.dataset.text = headerText ? ` \\u2022 ${headerText}` : \"\";\n refTiming.current.dataset.text = formattedTime ? ` \\u2022 ${formattedTime}` : \"\";\n });\n });\n const componentName = useMemo3(() => {\n if (!currentFiber) return null;\n const { name, wrappers, wrapperTypes } = getExtendedDisplayName(currentFiber);\n const title = wrappers.length ? `${wrappers.join(\"(\")}(${name})${\")\".repeat(wrappers.length)}` : name ?? \"\";\n const firstWrapperType = wrapperTypes[0];\n return /* @__PURE__ */ jsxs6(\"span\", { title, className: \"flex items-center gap-x-1\", children: [\n name ?? \"Unknown\",\n /* @__PURE__ */ jsx7(\n \"span\",\n {\n title: firstWrapperType?.title,\n className: \"flex items-center gap-x-1 text-[10px] text-purple-400\",\n children: !!firstWrapperType && /* @__PURE__ */ jsxs6(Fragment4, { children: [\n /* @__PURE__ */ jsx7(\n \"span\",\n {\n className: cn(\n \"rounded py-[1px] px-1\",\n \"truncate\",\n firstWrapperType.compiler && \"bg-purple-800 text-neutral-400\",\n !firstWrapperType.compiler && \"bg-neutral-700 text-neutral-300\",\n firstWrapperType.type === \"memo\" && \"bg-[#5f3f9a] text-white\"\n ),\n children: firstWrapperType.type\n },\n firstWrapperType.type\n ),\n firstWrapperType.compiler && /* @__PURE__ */ jsx7(\"span\", { className: \"text-yellow-300\", children: \"\\u2728\" })\n ] })\n }\n ),\n wrapperTypes.length > 1 && /* @__PURE__ */ jsxs6(\"span\", { className: \"text-[10px] text-neutral-400\", children: [\n \"\\xD7\",\n wrapperTypes.length - 1\n ] })\n ] });\n }, [currentFiber]);\n return /* @__PURE__ */ jsxs6(\"div\", { className: headerInspectClassName, children: [\n componentName,\n /* @__PURE__ */ jsxs6(\"div\", { className: \"flex items-center gap-x-2 mr-auto text-xs text-[#888]\", children: [\n /* @__PURE__ */ jsx7(\n \"span\",\n {\n ref: refReRenders,\n className: \"with-data-text cursor-pointer !overflow-visible\",\n title: \"Click to toggle between rerenders and total renders\"\n }\n ),\n /* @__PURE__ */ jsx7(\"span\", { ref: refTiming, className: \"with-data-text !overflow-visible\" })\n ] })\n ] });\n};\n\n// src/web/widget/header.tsx\nimport { jsx as jsx8, jsxs as jsxs7 } from \"preact/jsx-runtime\";\nvar Header = () => {\n const isInitialView = useDelayedValue(\n Store.inspectState.value.kind === \"focused\",\n 150,\n 0\n );\n const handleClose = () => {\n signalWidgetViews.value = {\n view: \"none\"\n };\n Store.inspectState.value = {\n kind: \"inspect-off\"\n };\n };\n const isHeaderIsNotifications = signalWidgetViews.value.view === \"notifications\";\n if (isHeaderIsNotifications) {\n return;\n }\n return /* @__PURE__ */ jsxs7(\"div\", { className: \"react-scan-header\", children: [\n /* @__PURE__ */ jsx8(\"div\", { className: \"relative flex-1 h-full\", children: /* @__PURE__ */ jsx8(\n \"div\",\n {\n className: cn(\n \"react-scan-header-item is-visible\",\n !isInitialView && \"!duration-0\"\n ),\n children: /* @__PURE__ */ jsx8(HeaderInspect, {})\n }\n ) }),\n /* @__PURE__ */ jsx8(\n \"button\",\n {\n type: \"button\",\n title: \"Close\",\n className: \"react-scan-close-button\",\n onClick: handleClose,\n children: /* @__PURE__ */ jsx8(Icon, { name: \"icon-close\" })\n }\n )\n ] });\n};\n\n// src/web/views/toolbar/index.tsx\nimport { useSignalEffect as useSignalEffect3 } from \"@preact/signals\";\nimport {\n useCallback as useCallback4,\n useEffect as useEffect16,\n useLayoutEffect as useLayoutEffect2,\n useState as useState20\n} from \"preact/hooks\";\n\n// src/web/components/toggle/index.tsx\nimport { jsx as jsx9, jsxs as jsxs8 } from \"preact/jsx-runtime\";\nvar Toggle = ({\n className,\n ...props\n}) => {\n return /* @__PURE__ */ jsxs8(\"div\", { className: cn(\"react-scan-toggle\", className), children: [\n /* @__PURE__ */ jsx9(\n \"input\",\n {\n type: \"checkbox\",\n ...props\n }\n ),\n /* @__PURE__ */ jsx9(\"div\", {})\n ] });\n};\n\n// src/web/widget/fps-meter.tsx\nimport { useEffect as useEffect9, useState as useState10 } from \"preact/hooks\";\nimport { Fragment as Fragment5, jsx as jsx10, jsxs as jsxs9 } from \"preact/jsx-runtime\";\nvar FpsMeterInner = ({ fps: fps2 }) => {\n const getColor = (fps3) => {\n if (fps3 < 30) return \"#EF4444\";\n if (fps3 < 50) return \"#F59E0B\";\n return \"rgb(214,132,245)\";\n };\n return /* @__PURE__ */ jsxs9(\n \"div\",\n {\n className: cn(\n \"flex items-center gap-x-1 px-2 w-full\",\n \"h-6\",\n \"rounded-md\",\n \"font-mono leading-none\",\n \"bg-[#141414]\",\n \"ring-1 ring-white/[0.08]\"\n ),\n children: [\n /* @__PURE__ */ jsx10(\n \"div\",\n {\n style: { color: getColor(fps2) },\n className: \"text-sm font-semibold tracking-wide transition-colors ease-in-out w-full flex justify-center items-center\",\n children: fps2\n }\n ),\n /* @__PURE__ */ jsx10(\"span\", { className: \"text-white/30 text-[11px] font-medium tracking-wide ml-auto min-w-fit\", children: \"FPS\" })\n ]\n }\n );\n};\nvar FPSMeter = () => {\n const [fps2, setFps] = useState10(null);\n useEffect9(() => {\n const intervalId = setInterval(() => {\n setFps(getFPS());\n }, 200);\n return () => clearInterval(intervalId);\n }, []);\n return /* @__PURE__ */ jsx10(\n \"div\",\n {\n className: cn(\n \"flex items-center justify-end gap-x-2 px-1 ml-1 w-[72px]\",\n \"whitespace-nowrap text-sm text-white\"\n ),\n children: fps2 === null ? /* @__PURE__ */ jsx10(Fragment5, { children: \"\\uFE0F\" }) : /* @__PURE__ */ jsx10(FpsMeterInner, { fps: fps2 })\n }\n );\n};\n\n// src/web/views/notifications/data.ts\nimport { createContext } from \"preact\";\nimport { useContext } from \"preact/hooks\";\n\n// src/core/notifications/event-tracking.ts\nimport { useSyncExternalStore } from \"preact/compat\";\n\n// src/core/monitor/constants.ts\nimport * as React from \"react\";\nvar isTest = IS_CLIENT && /**\n * @see https://docs.cypress.io/faq/questions/using-cypress-faq#Is-there-any-way-to-detect-if-my-app-is-running-under-Cypress\n */\n(window.Cypress || /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/webdriver\n */\nnavigator.webdriver) || /**\n * @see https://stackoverflow.com/a/60491322\n */\n// @ts-expect-error jest is a global in test\ntypeof jest !== \"undefined\";\n\n// src/core/monitor/utils.ts\nvar not_globally_unique_generateId = () => {\n if (!IS_CLIENT) {\n return \"0\";\n }\n if (window.reactScanIdCounter === void 0) {\n window.reactScanIdCounter = 0;\n }\n return `${++window.reactScanIdCounter}`;\n};\n\n// src/core/notifications/performance-utils.ts\nvar THROW_INVARIANTS = false;\nvar invariantError = (message) => {\n if (THROW_INVARIANTS) {\n throw new Error(message);\n }\n};\nvar iife = (fn) => fn();\nvar BoundedArray = class _BoundedArray extends Array {\n constructor(capacity = 25) {\n super();\n this.capacity = capacity;\n }\n push(...items) {\n const result = super.push(...items);\n while (this.length > this.capacity) {\n this.shift();\n }\n return result;\n }\n // do not couple capacity with a default param, it must be explicit\n static fromArray(array, capacity) {\n const arr = new _BoundedArray(capacity);\n arr.push(...array);\n return arr;\n }\n};\n\n// src/core/notifications/interaction-store.ts\nvar Store2 = class {\n constructor(initialValue) {\n this.subscribers = /* @__PURE__ */ new Set();\n this.currentValue = initialValue;\n }\n subscribe(subscriber) {\n this.subscribers.add(subscriber);\n subscriber(this.currentValue);\n return () => {\n this.subscribers.delete(subscriber);\n };\n }\n setState(data) {\n this.currentValue = data;\n this.subscribers.forEach((subscriber) => subscriber(data));\n }\n getCurrentState() {\n return this.currentValue;\n }\n};\nvar MAX_INTERACTION_BATCH = 150;\nvar interactionStore = new Store2(\n new BoundedArray(MAX_INTERACTION_BATCH)\n);\n\n// src/core/notifications/performance.ts\nimport {\n getDisplayName as getDisplayName7,\n getTimings as getTimings4,\n hasMemoCache as hasMemoCache3,\n isHostFiber as isHostFiber2,\n traverseFiber as traverseFiber2\n} from \"bippy\";\n\n// src/core/notifications/performance-store.ts\nvar MAX_CHANNEL_SIZE = 50;\nvar PerformanceEntryChannels = class {\n constructor() {\n this.channels = {};\n }\n publish(item, to, createIfNoChannel = true) {\n const existingChannel = this.channels[to];\n if (!existingChannel) {\n if (!createIfNoChannel) {\n return;\n }\n this.channels[to] = {\n callbacks: new BoundedArray(MAX_CHANNEL_SIZE),\n state: new BoundedArray(MAX_CHANNEL_SIZE)\n };\n this.channels[to].state.push(item);\n return;\n }\n existingChannel.state.push(item);\n existingChannel.callbacks.forEach((cb) => cb(item));\n }\n getAvailableChannels() {\n return BoundedArray.fromArray(Object.keys(this.channels), MAX_CHANNEL_SIZE);\n }\n subscribe(to, cb, dropFirst = false) {\n const defer = () => {\n if (!dropFirst) {\n this.channels[to].state.forEach((item) => {\n cb(item);\n });\n }\n return () => {\n const filtered = this.channels[to].callbacks.filter(\n (subscribed) => subscribed !== cb\n );\n this.channels[to].callbacks = BoundedArray.fromArray(\n filtered,\n MAX_CHANNEL_SIZE\n );\n };\n };\n const existing = this.channels[to];\n if (!existing) {\n this.channels[to] = {\n callbacks: new BoundedArray(MAX_CHANNEL_SIZE),\n state: new BoundedArray(MAX_CHANNEL_SIZE)\n };\n this.channels[to].callbacks.push(cb);\n return defer();\n }\n existing.callbacks.push(cb);\n return defer();\n }\n updateChannelState(channel, updater, createIfNoChannel = true) {\n const existingChannel = this.channels[channel];\n if (!existingChannel) {\n if (!createIfNoChannel) {\n return;\n }\n const state = new BoundedArray(MAX_CHANNEL_SIZE);\n const newChannel = {\n callbacks: new BoundedArray(MAX_CHANNEL_SIZE),\n state\n };\n this.channels[channel] = newChannel;\n newChannel.state = updater(state);\n return;\n }\n existingChannel.state = updater(existingChannel.state);\n }\n getChannelState(channel) {\n return this.channels[channel].state ?? new BoundedArray(MAX_CHANNEL_SIZE);\n }\n};\nvar performanceEntryChannels = new PerformanceEntryChannels();\n\n// src/core/monitor/performance.ts\nimport { getDisplayName as getDisplayName6 } from \"bippy\";\nvar DEFAULT_FILTERS = {\n skipProviders: true,\n skipHocs: true,\n skipContainers: true,\n skipMinified: true,\n skipUtilities: true,\n skipBoundaries: true\n};\nvar FILTER_PATTERNS = {\n providers: [/Provider$/, /^Provider$/, /^Context$/],\n hocs: [/^with[A-Z]/, /^forward(?:Ref)?$/i, /^Forward(?:Ref)?\\(/],\n containers: [/^(?:App)?Container$/, /^Root$/, /^ReactDev/],\n utilities: [\n /^Fragment$/,\n /^Suspense$/,\n /^ErrorBoundary$/,\n /^Portal$/,\n /^Consumer$/,\n /^Layout$/,\n /^Router/,\n /^Hydration/\n ],\n boundaries: [/^Boundary$/, /Boundary$/, /^Provider$/, /Provider$/]\n};\nvar shouldIncludeInPath = (name, filters = DEFAULT_FILTERS) => {\n const patternsToCheck = [];\n if (filters.skipProviders) patternsToCheck.push(...FILTER_PATTERNS.providers);\n if (filters.skipHocs) patternsToCheck.push(...FILTER_PATTERNS.hocs);\n if (filters.skipContainers)\n patternsToCheck.push(...FILTER_PATTERNS.containers);\n if (filters.skipUtilities) patternsToCheck.push(...FILTER_PATTERNS.utilities);\n if (filters.skipBoundaries)\n patternsToCheck.push(...FILTER_PATTERNS.boundaries);\n return !patternsToCheck.some((pattern) => pattern.test(name));\n};\nvar minifiedPatterns = [\n /^[a-z]$/,\n // Single lowercase letter\n /^[a-z][0-9]$/,\n // Lowercase letter followed by number\n /^_+$/,\n // Just underscores\n /^[A-Za-z][_$]$/,\n // Letter followed by underscore or dollar\n /^[a-z]{1,2}$/\n // 1-2 lowercase letters\n];\nvar isMinified = (name) => {\n for (let i = 0; i < minifiedPatterns.length; i++) {\n if (minifiedPatterns[i].test(name)) return true;\n }\n const hasNoVowels = !/[aeiou]/i.test(name);\n const hasMostlyNumbers = (name.match(/\\d/g)?.length ?? 0) > name.length / 2;\n const isSingleWordLowerCase = /^[a-z]+$/.test(name);\n const hasRandomLookingChars = /[$_]{2,}/.test(name);\n return Number(hasNoVowels) + Number(hasMostlyNumbers) + Number(isSingleWordLowerCase) + Number(hasRandomLookingChars) >= 2;\n};\nvar getInteractionPath = (initialFiber, filters = DEFAULT_FILTERS) => {\n if (!initialFiber) return [];\n const currentName = getDisplayName6(initialFiber.type);\n if (!currentName) return [];\n const stack = new Array();\n let fiber = initialFiber;\n while (fiber.return) {\n const name = getCleanComponentName(fiber.type);\n if (name && !isMinified(name) && shouldIncludeInPath(name, filters) && name.toLowerCase() !== name) {\n stack.push(name);\n }\n fiber = fiber.return;\n }\n const fullPath = new Array(stack.length);\n for (let i = 0; i < stack.length; i++) {\n fullPath[i] = stack[stack.length - i - 1];\n }\n return fullPath;\n};\nvar getCleanComponentName = (component) => {\n const name = getDisplayName6(component);\n if (!name) return \"\";\n return name.replace(\n /^(?:Memo|Forward(?:Ref)?|With.*?)\\((?<inner>.*?)\\)$/,\n \"$<inner>\"\n );\n};\n\n// src/core/notifications/performance.ts\nvar getFirstNameFromAncestor = (fiber, accept = () => true) => {\n let curr = fiber;\n while (curr) {\n const currName = getDisplayName7(curr.type);\n if (currName && accept(currName)) {\n return currName;\n }\n curr = curr.return;\n }\n return null;\n};\nvar unsubscribeTrackVisibilityChange;\nvar lastVisibilityHiddenAt = \"never-hidden\";\nvar trackVisibilityChange = () => {\n unsubscribeTrackVisibilityChange?.();\n const onVisibilityChange = () => {\n if (document.hidden) {\n lastVisibilityHiddenAt = Date.now();\n }\n };\n document.addEventListener(\"visibilitychange\", onVisibilityChange);\n unsubscribeTrackVisibilityChange = () => {\n document.removeEventListener(\"visibilitychange\", onVisibilityChange);\n };\n};\nvar getInteractionType = (eventName) => {\n if ([\"pointerup\", \"click\"].includes(eventName)) {\n return \"pointer\";\n }\n if (eventName.includes(\"key\")) {\n }\n if ([\"keydown\", \"keyup\"].includes(eventName)) {\n return \"keyboard\";\n }\n return null;\n};\nvar onEntryAnimationId = null;\nvar setupPerformanceListener = (onEntry) => {\n trackVisibilityChange();\n const interactionMap = /* @__PURE__ */ new Map();\n const interactionTargetMap = /* @__PURE__ */ new Map();\n const processInteractionEntry = (entry) => {\n if (!entry.interactionId) return;\n if (entry.interactionId && entry.target && !interactionTargetMap.has(entry.interactionId)) {\n interactionTargetMap.set(entry.interactionId, entry.target);\n }\n if (entry.target) {\n let current = entry.target;\n while (current) {\n if (current.id === \"react-scan-toolbar-root\" || current.id === \"react-scan-root\") {\n return;\n }\n current = current.parentElement;\n }\n }\n const existingInteraction = interactionMap.get(entry.interactionId);\n if (existingInteraction) {\n if (entry.duration > existingInteraction.latency) {\n existingInteraction.entries = [entry];\n existingInteraction.latency = entry.duration;\n } else if (entry.duration === existingInteraction.latency && entry.startTime === existingInteraction.entries[0].startTime) {\n existingInteraction.entries.push(entry);\n }\n } else {\n const interactionType = getInteractionType(entry.name);\n if (!interactionType) {\n return;\n }\n const interaction = {\n id: entry.interactionId,\n latency: entry.duration,\n entries: [entry],\n target: entry.target,\n type: interactionType,\n startTime: entry.startTime,\n endTime: Date.now(),\n processingStart: entry.processingStart,\n processingEnd: entry.processingEnd,\n duration: entry.duration,\n inputDelay: entry.processingStart - entry.startTime,\n processingDuration: entry.processingEnd - entry.processingStart,\n presentationDelay: entry.duration - (entry.processingEnd - entry.startTime),\n // componentPath:\n timestamp: Date.now(),\n timeSinceTabInactive: lastVisibilityHiddenAt === \"never-hidden\" ? \"never-hidden\" : Date.now() - lastVisibilityHiddenAt,\n visibilityState: document.visibilityState,\n timeOrigin: performance.timeOrigin,\n referrer: document.referrer\n };\n interactionMap.set(interaction.id, interaction);\n if (!onEntryAnimationId) {\n onEntryAnimationId = requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n onEntry(interactionMap.get(interaction.id));\n onEntryAnimationId = null;\n });\n });\n }\n }\n };\n const po = new PerformanceObserver((list) => {\n const entries = list.getEntries();\n for (let i = 0, len = entries.length; i < len; i++) {\n const entry = entries[i];\n processInteractionEntry(entry);\n }\n });\n try {\n po.observe({\n type: \"event\",\n buffered: true,\n durationThreshold: 16\n });\n po.observe({\n type: \"first-input\",\n buffered: true\n });\n } catch {\n }\n return () => po.disconnect();\n};\nvar setupPerformancePublisher = () => {\n return setupPerformanceListener((entry) => {\n performanceEntryChannels.publish(\n {\n kind: \"entry-received\",\n entry\n },\n \"recording\"\n );\n });\n};\nvar MAX_INTERACTION_TASKS = 25;\nvar tasks = new BoundedArray(MAX_INTERACTION_TASKS);\nvar getAssociatedDetailedTimingInteraction = (entry, activeTasks) => {\n let closestTask = null;\n for (const task of activeTasks) {\n if (task.type !== entry.type) {\n continue;\n }\n if (closestTask === null) {\n closestTask = task;\n continue;\n }\n const getAbsoluteDiff = (task2, entry2) => Math.abs(task2.startDateTime) - (entry2.startTime + entry2.timeOrigin);\n if (getAbsoluteDiff(task, entry) < getAbsoluteDiff(closestTask, entry)) {\n closestTask = task;\n }\n }\n return closestTask;\n};\nvar listenForPerformanceEntryInteractions = (onComplete) => {\n const unsubscribe = performanceEntryChannels.subscribe(\n \"recording\",\n (event) => {\n const associatedDetailedInteraction = event.kind === \"auto-complete-race\" ? tasks.find((task) => task.interactionUUID === event.interactionUUID) : getAssociatedDetailedTimingInteraction(event.entry, tasks);\n if (!associatedDetailedInteraction) {\n return;\n }\n const completedInteraction = associatedDetailedInteraction.completeInteraction(event);\n onComplete(completedInteraction);\n }\n );\n return unsubscribe;\n};\nvar trackDetailedTiming = ({\n onMicroTask,\n onRAF,\n onTimeout,\n abort\n}) => {\n queueMicrotask(() => {\n if (abort?.() === true) {\n return;\n }\n if (!onMicroTask()) {\n return;\n }\n requestAnimationFrame(() => {\n if (abort?.() === true) {\n return;\n }\n if (!onRAF()) {\n return;\n }\n setTimeout(() => {\n if (abort?.() === true) {\n return;\n }\n onTimeout();\n }, 0);\n });\n });\n};\nvar getTargetInteractionDetails = (target) => {\n const associatedFiber = getFiberFromElement(target);\n if (!associatedFiber) {\n return;\n }\n let componentName = associatedFiber ? getDisplayName7(associatedFiber?.type) : \"N/A\";\n if (!componentName) {\n componentName = getFirstNameFromAncestor(associatedFiber, (name) => name.length > 2) ?? \"N/A\";\n }\n if (!componentName) {\n return;\n }\n const componentPath = getInteractionPath(associatedFiber);\n return {\n componentPath,\n childrenTree: {},\n componentName,\n elementFiber: associatedFiber\n };\n};\nvar setupDetailedPointerTimingListener = (kind, options) => {\n let instrumentationIdInControl = null;\n const getEvent = (info) => {\n switch (kind) {\n case \"pointer\": {\n if (info.phase === \"start\") {\n return \"pointerup\";\n }\n if (info.target instanceof HTMLInputElement || info.target instanceof HTMLSelectElement) {\n return \"change\";\n }\n return \"click\";\n }\n case \"keyboard\": {\n if (info.phase === \"start\") {\n return \"keydown\";\n }\n return \"change\";\n }\n }\n };\n const lastInteractionRef = {\n current: {\n kind: \"uninitialized-stage\",\n interactionUUID: not_globally_unique_generateId(),\n // the first interaction uses this\n stageStart: Date.now(),\n interactionType: kind\n }\n };\n const onInteractionStart = (e) => {\n const path = e.composedPath();\n if (path.some(\n (el) => el instanceof Element && el.id === \"react-scan-toolbar-root\"\n )) {\n return;\n }\n if (Date.now() - lastInteractionRef.current.stageStart > 2e3) {\n lastInteractionRef.current = {\n kind: \"uninitialized-stage\",\n interactionUUID: not_globally_unique_generateId(),\n stageStart: Date.now(),\n interactionType: kind\n };\n }\n if (lastInteractionRef.current.kind !== \"uninitialized-stage\") {\n return;\n }\n const pointerUpStart = performance.now();\n options?.onStart?.(lastInteractionRef.current.interactionUUID);\n const details = getTargetInteractionDetails(e.target);\n if (!details) {\n options?.onError?.(lastInteractionRef.current.interactionUUID);\n return;\n }\n const fiberRenders = {};\n const stopListeningForRenders = listenForRenders(fiberRenders);\n lastInteractionRef.current = {\n ...lastInteractionRef.current,\n interactionType: kind,\n blockingTimeStart: Date.now(),\n childrenTree: details.childrenTree,\n componentName: details.componentName,\n componentPath: details.componentPath,\n fiberRenders,\n kind: \"interaction-start\",\n interactionStartDetail: pointerUpStart,\n stopListeningForRenders\n };\n const event = getEvent({ phase: \"end\", target: e.target });\n document.addEventListener(event, onLastJS, {\n once: true\n });\n requestAnimationFrame(() => {\n document.removeEventListener(event, onLastJS);\n });\n };\n document.addEventListener(\n getEvent({ phase: \"start\" }),\n // biome-ignore lint/suspicious/noExplicitAny: shut up biome\n onInteractionStart,\n {\n capture: true\n }\n );\n const onLastJS = (e, instrumentationId, abort) => {\n if (lastInteractionRef.current.kind !== \"interaction-start\" && instrumentationId === instrumentationIdInControl) {\n if (kind === \"pointer\" && e.target instanceof HTMLSelectElement) {\n lastInteractionRef.current = {\n kind: \"uninitialized-stage\",\n interactionUUID: not_globally_unique_generateId(),\n stageStart: Date.now(),\n interactionType: kind\n };\n return;\n }\n options?.onError?.(lastInteractionRef.current.interactionUUID);\n lastInteractionRef.current = {\n kind: \"uninitialized-stage\",\n interactionUUID: not_globally_unique_generateId(),\n stageStart: Date.now(),\n interactionType: kind\n };\n invariantError(\"pointer -> click\");\n return;\n }\n instrumentationIdInControl = instrumentationId;\n trackDetailedTiming({\n abort,\n onMicroTask: () => {\n if (lastInteractionRef.current.kind === \"uninitialized-stage\") {\n return false;\n }\n lastInteractionRef.current = {\n ...lastInteractionRef.current,\n kind: \"js-end-stage\",\n jsEndDetail: performance.now()\n };\n return true;\n },\n onRAF: () => {\n if (lastInteractionRef.current.kind !== \"js-end-stage\" && lastInteractionRef.current.kind !== \"raf-stage\") {\n options?.onError?.(lastInteractionRef.current.interactionUUID);\n invariantError(\"bad transition to raf\");\n lastInteractionRef.current = {\n kind: \"uninitialized-stage\",\n interactionUUID: not_globally_unique_generateId(),\n stageStart: Date.now(),\n interactionType: kind\n };\n return false;\n }\n lastInteractionRef.current = {\n ...lastInteractionRef.current,\n kind: \"raf-stage\",\n rafStart: performance.now()\n };\n return true;\n },\n onTimeout: () => {\n if (lastInteractionRef.current.kind !== \"raf-stage\") {\n options?.onError?.(lastInteractionRef.current.interactionUUID);\n lastInteractionRef.current = {\n kind: \"uninitialized-stage\",\n interactionUUID: not_globally_unique_generateId(),\n stageStart: Date.now(),\n interactionType: kind\n };\n invariantError(\"raf->timeout\");\n return;\n }\n const now = Date.now();\n const timeoutStage = Object.freeze({\n ...lastInteractionRef.current,\n kind: \"timeout-stage\",\n blockingTimeEnd: now,\n commitEnd: performance.now()\n });\n lastInteractionRef.current = {\n kind: \"uninitialized-stage\",\n interactionUUID: not_globally_unique_generateId(),\n stageStart: now,\n interactionType: kind\n };\n let completed = false;\n const completeInteraction = (event) => {\n completed = true;\n const latency = event.kind === \"auto-complete-race\" ? event.detailedTiming.commitEnd - event.detailedTiming.interactionStartDetail : event.entry.latency;\n const finalInteraction = {\n detailedTiming: timeoutStage,\n latency,\n completedAt: Date.now(),\n flushNeeded: true\n };\n options?.onComplete?.(\n timeoutStage.interactionUUID,\n finalInteraction,\n event\n );\n const newTasks = tasks.filter(\n (task2) => task2.interactionUUID !== timeoutStage.interactionUUID\n );\n tasks = BoundedArray.fromArray(newTasks, MAX_INTERACTION_TASKS);\n return finalInteraction;\n };\n const task = {\n completeInteraction,\n endDateTime: Date.now(),\n startDateTime: timeoutStage.blockingTimeStart,\n type: kind,\n interactionUUID: timeoutStage.interactionUUID\n };\n tasks.push(task);\n if (!isPerformanceEventAvailable()) {\n const newTasks = tasks.filter(\n (task2) => task2.interactionUUID !== timeoutStage.interactionUUID\n );\n tasks = BoundedArray.fromArray(newTasks, MAX_INTERACTION_TASKS);\n completeInteraction({\n kind: \"auto-complete-race\",\n // redundant\n detailedTiming: timeoutStage,\n interactionUUID: timeoutStage.interactionUUID\n });\n } else {\n setTimeout(() => {\n if (completed) {\n return;\n }\n completeInteraction({\n kind: \"auto-complete-race\",\n // redundant\n detailedTiming: timeoutStage,\n interactionUUID: timeoutStage.interactionUUID\n });\n const newTasks = tasks.filter(\n (task2) => task2.interactionUUID !== timeoutStage.interactionUUID\n );\n tasks = BoundedArray.fromArray(newTasks, MAX_INTERACTION_TASKS);\n }, 1e3);\n }\n }\n });\n };\n const onKeyPress = (e) => {\n const id = not_globally_unique_generateId();\n onLastJS(e, id, () => id !== instrumentationIdInControl);\n };\n if (kind === \"keyboard\") {\n document.addEventListener(\"keypress\", onKeyPress);\n }\n return () => {\n document.removeEventListener(\n getEvent({ phase: \"start\" }),\n // biome-ignore lint/suspicious/noExplicitAny: shut up biome\n onInteractionStart,\n {\n capture: true\n }\n );\n document.removeEventListener(\"keypress\", onKeyPress);\n };\n};\nvar getHostFromFiber = (fiber) => {\n return traverseFiber2(fiber, (node) => {\n if (isHostFiber2(node)) {\n return true;\n }\n })?.stateNode;\n};\nvar isPerformanceEventAvailable = () => {\n return \"PerformanceEventTiming\" in globalThis;\n};\nvar listenForRenders = (fiberRenders) => {\n const listener = (fiber) => {\n const displayName = getDisplayName7(fiber.type);\n if (!displayName) {\n return;\n }\n const existing = fiberRenders[displayName];\n if (!existing) {\n const parents = /* @__PURE__ */ new Set();\n const res = fiber.return && getParentCompositeFiber(fiber.return);\n const parentCompositeName = res && getDisplayName7(res[0]);\n if (parentCompositeName) {\n parents.add(parentCompositeName);\n }\n const { selfTime: selfTime2, totalTime: totalTime2 } = getTimings4(fiber);\n const newChanges2 = collectInspectorDataWithoutCounts(fiber);\n const emptySection2 = {\n current: [],\n changes: /* @__PURE__ */ new Set(),\n changesCounts: /* @__PURE__ */ new Map()\n };\n const changes = {\n fiberProps: newChanges2.fiberProps || emptySection2,\n fiberState: newChanges2.fiberState || emptySection2,\n fiberContext: newChanges2.fiberContext || emptySection2\n };\n fiberRenders[displayName] = {\n renderCount: 1,\n hasMemoCache: hasMemoCache3(fiber),\n wasFiberRenderMount: wasFiberRenderMount(fiber),\n parents,\n selfTime: selfTime2,\n totalTime: totalTime2,\n nodeInfo: [\n {\n element: getHostFromFiber(fiber),\n name: getDisplayName7(fiber.type) ?? \"Unknown\",\n selfTime: getTimings4(fiber).selfTime\n }\n ],\n changes\n };\n return;\n }\n const parentType = getParentCompositeFiber(fiber)?.[0]?.type;\n if (parentType) {\n const res = fiber.return && getParentCompositeFiber(fiber.return);\n const parentCompositeName = res && getDisplayName7(res[0]);\n if (parentCompositeName) {\n existing.parents.add(parentCompositeName);\n }\n }\n const { selfTime, totalTime } = getTimings4(fiber);\n const newChanges = collectInspectorDataWithoutCounts(fiber);\n if (!newChanges) return;\n const emptySection = {\n current: [],\n changes: /* @__PURE__ */ new Set(),\n changesCounts: /* @__PURE__ */ new Map()\n };\n existing.wasFiberRenderMount = existing.wasFiberRenderMount || wasFiberRenderMount(fiber);\n existing.hasMemoCache = existing.hasMemoCache || hasMemoCache3(fiber);\n existing.changes = {\n fiberProps: mergeSectionData(\n existing.changes?.fiberProps || emptySection,\n newChanges.fiberProps || emptySection\n ),\n fiberState: mergeSectionData(\n existing.changes?.fiberState || emptySection,\n newChanges.fiberState || emptySection\n ),\n fiberContext: mergeSectionData(\n existing.changes?.fiberContext || emptySection,\n newChanges.fiberContext || emptySection\n )\n };\n existing.renderCount += 1;\n existing.selfTime += selfTime;\n existing.totalTime += totalTime;\n existing.nodeInfo.push({\n element: getHostFromFiber(fiber),\n name: getDisplayName7(fiber.type) ?? \"Unknown\",\n selfTime: getTimings4(fiber).selfTime\n });\n };\n Store.interactionListeningForRenders = listener;\n return () => {\n if (Store.interactionListeningForRenders === listener) {\n Store.interactionListeningForRenders = null;\n }\n };\n};\nvar mergeSectionData = (existing, newData) => {\n const mergedSection = {\n current: [...existing.current],\n changes: /* @__PURE__ */ new Set(),\n changesCounts: /* @__PURE__ */ new Map()\n };\n for (const value of newData.current) {\n if (!mergedSection.current.some((item) => item.name === value.name)) {\n mergedSection.current.push(value);\n }\n }\n for (const change of newData.changes) {\n if (typeof change === \"string\" || typeof change === \"number\") {\n mergedSection.changes.add(change);\n const existingCount = existing.changesCounts.get(change) || 0;\n const newCount = newData.changesCounts.get(change) || 0;\n mergedSection.changesCounts.set(change, existingCount + newCount);\n }\n }\n return mergedSection;\n};\nvar wasFiberRenderMount = (fiber) => {\n if (!fiber.alternate) {\n return true;\n }\n const prevFiber = fiber.alternate;\n const wasMounted = prevFiber && prevFiber.memoizedState != null && prevFiber.memoizedState.element != null && prevFiber.memoizedState.isDehydrated !== true;\n const isMounted = fiber.memoizedState != null && fiber.memoizedState.element != null && fiber.memoizedState.isDehydrated !== true;\n return !wasMounted && isMounted;\n};\n\n// src/web/utils/create-store.ts\nvar createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = replace ?? (typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (selectorOrListener, listener) => {\n let selector;\n let actualListener;\n if (listener) {\n selector = selectorOrListener;\n actualListener = listener;\n } else {\n actualListener = selectorOrListener;\n }\n let currentSlice = selector ? selector(state) : void 0;\n const wrappedListener = (newState, previousState) => {\n if (selector) {\n const nextSlice = selector(newState);\n const prevSlice = selector(previousState);\n if (!Object.is(currentSlice, nextSlice)) {\n currentSlice = nextSlice;\n actualListener(nextSlice, prevSlice);\n }\n } else {\n actualListener(newState, previousState);\n }\n };\n listeners.add(wrappedListener);\n return () => listeners.delete(wrappedListener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nvar createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\n// src/core/notifications/event-tracking.ts\nvar accumulatedFiberRendersOverTask = null;\nvar debugEventStore = createStore()((set) => ({\n state: {\n events: []\n },\n actions: {\n addEvent: (event) => {\n set((store) => ({\n state: {\n events: [...store.state.events, event]\n }\n }));\n },\n clear: () => {\n set({\n state: {\n events: []\n }\n });\n }\n }\n}));\nvar EVENT_STORE_CAPACITY = 200;\nvar toolbarEventStore = createStore()(\n (set, get) => {\n const listeners = /* @__PURE__ */ new Set();\n return {\n state: {\n events: new BoundedArray(EVENT_STORE_CAPACITY)\n },\n actions: {\n addEvent: (event) => {\n listeners.forEach((listener) => listener(event));\n const events = [...get().state.events, event];\n const applyOverlapCheckToLongRenderEvent = (longRenderEvent, onOverlap) => {\n const overlapsWith = events.find((event2) => {\n if (event2.kind === \"long-render\") {\n return;\n }\n if (event2.id === longRenderEvent.id) {\n return;\n }\n if (longRenderEvent.data.startAt <= event2.data.startAt && longRenderEvent.data.endAt <= event2.data.endAt && longRenderEvent.data.endAt >= event2.data.startAt) {\n return true;\n }\n if (event2.data.startAt <= longRenderEvent.data.startAt && event2.data.endAt >= longRenderEvent.data.startAt) {\n return true;\n }\n if (longRenderEvent.data.startAt <= event2.data.startAt && longRenderEvent.data.endAt >= event2.data.endAt) {\n return true;\n }\n });\n if (overlapsWith) {\n onOverlap(overlapsWith);\n }\n };\n const toRemove = /* @__PURE__ */ new Set();\n events.forEach((event2) => {\n if (event2.kind === \"interaction\") return;\n applyOverlapCheckToLongRenderEvent(event2, () => {\n toRemove.add(event2.id);\n });\n });\n const withRemovedEvents = events.filter(\n (event2) => !toRemove.has(event2.id)\n );\n set(() => ({\n state: {\n events: BoundedArray.fromArray(\n withRemovedEvents,\n EVENT_STORE_CAPACITY\n )\n }\n }));\n },\n addListener: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n clear: () => {\n set({\n state: {\n events: new BoundedArray(EVENT_STORE_CAPACITY)\n }\n });\n }\n }\n };\n }\n);\nvar useToolbarEventLog = () => {\n return useSyncExternalStore(\n toolbarEventStore.subscribe,\n toolbarEventStore.getState\n );\n};\nvar taskDirtyAt = null;\nvar taskDirtyOrigin = null;\nvar previousTrackCurrentMouseOverElementCallback = null;\nvar overToolbar;\nvar trackCurrentMouseOverToolbar = () => {\n const callback = (e) => {\n overToolbar = e.composedPath().map((path) => path.id).filter(Boolean).includes(\"react-scan-toolbar\");\n };\n document.addEventListener(\"mouseover\", callback);\n previousTrackCurrentMouseOverElementCallback = callback;\n return () => {\n if (previousTrackCurrentMouseOverElementCallback) {\n document.removeEventListener(\n \"mouseover\",\n previousTrackCurrentMouseOverElementCallback\n );\n }\n };\n};\nvar startDirtyTaskTracking = () => {\n const onVisibilityChange = () => {\n taskDirtyAt = performance.now();\n taskDirtyOrigin = performance.timeOrigin;\n };\n document.addEventListener(\"visibilitychange\", onVisibilityChange);\n return () => {\n document.removeEventListener(\"visibilitychange\", onVisibilityChange);\n };\n};\nvar HIGH_SEVERITY_FPS_DROP_TIME = 150;\nvar framesDrawnInTheLastSecond = [];\nfunction startLongPipelineTracking() {\n let rafHandle;\n let timeoutHandle;\n function measure() {\n let unSub = null;\n accumulatedFiberRendersOverTask = null;\n accumulatedFiberRendersOverTask = {};\n unSub = listenForRenders(accumulatedFiberRendersOverTask);\n const startOrigin = performance.timeOrigin;\n const startTime = performance.now();\n rafHandle = requestAnimationFrame(() => {\n timeoutHandle = setTimeout(() => {\n const endNow = performance.now();\n const duration = endNow - startTime;\n const endOrigin = performance.timeOrigin;\n framesDrawnInTheLastSecond.push(endNow + endOrigin);\n const framesInTheLastSecond = framesDrawnInTheLastSecond.filter(\n (frameAt) => endNow + endOrigin - frameAt <= 1e3\n );\n const fps2 = framesInTheLastSecond.length;\n framesDrawnInTheLastSecond = framesInTheLastSecond;\n const taskConsideredDirty = taskDirtyAt !== null && taskDirtyOrigin !== null ? endNow + endOrigin - (taskDirtyOrigin + taskDirtyAt) < 100 : null;\n const wasTaskInfluencedByToolbar = overToolbar !== null && overToolbar;\n if (duration > HIGH_SEVERITY_FPS_DROP_TIME && !taskConsideredDirty && document.visibilityState === \"visible\" && !wasTaskInfluencedByToolbar) {\n const endAt = endOrigin + endNow;\n const startAt = startTime + startOrigin;\n toolbarEventStore.getState().actions.addEvent({\n kind: \"long-render\",\n id: not_globally_unique_generateId(),\n data: {\n endAt,\n startAt,\n meta: {\n // biome-ignore lint/style/noNonNullAssertion: invariant: this will exist by this point\n fiberRenders: accumulatedFiberRendersOverTask,\n latency: duration,\n fps: fps2\n }\n }\n });\n }\n taskDirtyAt = null;\n taskDirtyOrigin = null;\n unSub?.();\n measure();\n }, 0);\n });\n return unSub;\n }\n const measureUnSub = measure();\n return () => {\n measureUnSub();\n cancelAnimationFrame(rafHandle);\n clearTimeout(timeoutHandle);\n };\n}\nvar startTimingTracking = () => {\n const unSubPerformance = setupPerformancePublisher();\n const unSubMouseOver = trackCurrentMouseOverToolbar();\n const unSubDirtyTaskTracking = startDirtyTaskTracking();\n const unSubLongPipelineTracking = startLongPipelineTracking();\n const onComplete = async (_, finalInteraction, event) => {\n toolbarEventStore.getState().actions.addEvent({\n kind: \"interaction\",\n id: not_globally_unique_generateId(),\n data: {\n startAt: finalInteraction.detailedTiming.blockingTimeStart,\n endAt: performance.now() + performance.timeOrigin,\n meta: { ...finalInteraction, kind: event.kind }\n // TODO, will need interaction specific metadata here\n }\n });\n const existingCompletedInteractions = performanceEntryChannels.getChannelState(\"recording\");\n finalInteraction.detailedTiming.stopListeningForRenders();\n if (existingCompletedInteractions.length) {\n performanceEntryChannels.updateChannelState(\n \"recording\",\n () => new BoundedArray(MAX_CHANNEL_SIZE)\n );\n }\n };\n const unSubDetailedPointerTiming = setupDetailedPointerTimingListener(\n \"pointer\",\n {\n onComplete\n }\n );\n const unSubDetailedKeyboardTiming = setupDetailedPointerTimingListener(\n \"keyboard\",\n {\n onComplete\n }\n );\n const unSubInteractions = listenForPerformanceEntryInteractions(\n (completedInteraction) => {\n interactionStore.setState(\n BoundedArray.fromArray(\n interactionStore.getCurrentState().concat(completedInteraction),\n MAX_INTERACTION_BATCH\n )\n );\n }\n );\n return () => {\n unSubMouseOver();\n unSubDirtyTaskTracking();\n unSubLongPipelineTracking();\n unSubPerformance();\n unSubDetailedPointerTiming();\n unSubInteractions();\n unSubDetailedKeyboardTiming();\n };\n};\n\n// src/web/views/notifications/data.ts\nvar getComponentName = (path) => {\n const filteredPath = path.filter((item) => item.length > 2);\n if (filteredPath.length === 0) {\n return path.at(-1) ?? \"Unknown\";\n }\n return filteredPath.at(-1);\n};\nvar getTotalTime = (timing) => {\n switch (timing.kind) {\n case \"interaction\": {\n const {\n renderTime,\n otherJSTime,\n framePreparation,\n frameConstruction,\n frameDraw\n } = timing;\n return renderTime + otherJSTime + framePreparation + frameConstruction + (frameDraw ?? 0);\n }\n case \"dropped-frames\": {\n return timing.otherTime + timing.renderTime;\n }\n }\n};\nvar isRenderMemoizable = (groupedFiberRender) => {\n if (groupedFiberRender.wasFiberRenderMount) {\n return false;\n }\n if (groupedFiberRender.hasMemoCache) {\n return false;\n }\n return groupedFiberRender.changes.context.length === 0 && groupedFiberRender.changes.props.length === 0 && groupedFiberRender.changes.state.length === 0;\n};\nvar getEventSeverity = (event) => {\n const totalTime = getTotalTime(event.timing);\n switch (event.kind) {\n case \"interaction\": {\n if (totalTime < 200) return \"low\";\n if (totalTime < 500) return \"needs-improvement\";\n return \"high\";\n }\n case \"dropped-frames\": {\n if (totalTime < 50) return \"low\";\n if (totalTime < HIGH_SEVERITY_FPS_DROP_TIME) return \"needs-improvement\";\n return \"high\";\n }\n }\n};\nvar useNotificationsContext = () => useContext(NotificationStateContext);\nvar NotificationStateContext = createContext(null);\n\n// src/web/views/notifications/icons.tsx\nimport { jsx as jsx11, jsxs as jsxs10 } from \"preact/jsx-runtime\";\nvar ChevronRight = ({\n size = 24,\n className\n}) => /* @__PURE__ */ jsx11(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n className: cn([\"lucide lucide-chevron-right\", className]),\n children: /* @__PURE__ */ jsx11(\"path\", { d: \"m9 18 6-6-6-6\" })\n }\n);\nvar Notification = ({\n className = \"\",\n size = 24,\n events = []\n}) => {\n const hasHighSeverity = events.includes(true);\n const totalSevere = events.filter((e) => e).length;\n const displayCount = totalSevere > 99 ? \">99\" : totalSevere;\n const badgeSize = hasHighSeverity ? Math.max(size * 0.6, 14) : Math.max(size * 0.4, 6);\n return /* @__PURE__ */ jsxs10(\"div\", { className: \"relative\", children: [\n /* @__PURE__ */ jsxs10(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n className: `lucide lucide-bell ${className}`,\n children: [\n /* @__PURE__ */ jsx11(\"path\", { d: \"M10.268 21a2 2 0 0 0 3.464 0\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\" })\n ]\n }\n ),\n events.length > 0 && totalSevere > 0 && ReactScanInternals.options.value.showNotificationCount && /* @__PURE__ */ jsx11(\n \"div\",\n {\n className: cn([\n \"absolute\",\n hasHighSeverity ? \"-top-2.5 -right-2.5\" : \"-top-1 -right-1\",\n \"rounded-full\",\n \"flex items-center justify-center\",\n \"text-[8px] font-medium text-white\",\n \"aspect-square\",\n hasHighSeverity ? \"bg-red-500/90\" : \"bg-purple-500/90\"\n ]),\n style: {\n width: `${badgeSize}px`,\n height: `${badgeSize}px`,\n padding: hasHighSeverity ? \"0.5px\" : \"0\"\n },\n children: hasHighSeverity && displayCount\n }\n )\n ] });\n};\nvar CloseIcon = ({\n className = \"\",\n size = 24\n}) => /* @__PURE__ */ jsxs10(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n className,\n children: [\n /* @__PURE__ */ jsx11(\"path\", { d: \"M18 6 6 18\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"m6 6 12 12\" })\n ]\n }\n);\nvar VolumeOnIcon = ({\n className = \"\",\n size = 24\n}) => /* @__PURE__ */ jsxs10(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n className,\n children: [\n /* @__PURE__ */ jsx11(\"path\", { d: \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"M16 9a5 5 0 0 1 0 6\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"M19.364 18.364a9 9 0 0 0 0-12.728\" })\n ]\n }\n);\nvar VolumeOffIcon = ({\n className = \"\",\n size = 24\n}) => /* @__PURE__ */ jsxs10(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n className,\n children: [\n /* @__PURE__ */ jsx11(\"path\", { d: \"M16 9a5 5 0 0 1 .95 2.293\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"M19.364 5.636a9 9 0 0 1 1.889 9.96\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"m2 2 20 20\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"m7 7-.587.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298V11\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"M9.828 4.172A.686.686 0 0 1 11 4.657v.686\" })\n ]\n }\n);\nvar ArrowLeft = ({\n size = 24,\n className\n}) => /* @__PURE__ */ jsxs10(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n className: cn([\"lucide lucide-arrow-left\", className]),\n children: [\n /* @__PURE__ */ jsx11(\"path\", { d: \"m12 19-7-7 7-7\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"M19 12H5\" })\n ]\n }\n);\nvar PointerIcon = ({\n className = \"\",\n size = 24\n}) => /* @__PURE__ */ jsxs10(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n className,\n children: [\n /* @__PURE__ */ jsx11(\"path\", { d: \"M14 4.1 12 6\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"m5.1 8-2.9-.8\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"m6 12-1.9 2\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"M7.2 2.2 8 5.1\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z\" })\n ]\n }\n);\nvar KeyboardIcon = ({\n className = \"\",\n size = 24\n}) => /* @__PURE__ */ jsxs10(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n className,\n children: [\n /* @__PURE__ */ jsx11(\"path\", { d: \"M10 8h.01\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"M12 12h.01\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"M14 8h.01\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"M16 12h.01\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"M18 8h.01\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"M6 8h.01\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"M7 16h10\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"M8 12h.01\" }),\n /* @__PURE__ */ jsx11(\"rect\", { width: \"20\", height: \"16\", x: \"2\", y: \"4\", rx: \"2\" })\n ]\n }\n);\nvar ClearIcon = ({\n className = \"\",\n size = 24\n}) => {\n return /* @__PURE__ */ jsxs10(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n className,\n style: { transform: \"rotate(180deg)\" },\n children: [\n /* @__PURE__ */ jsx11(\"circle\", { cx: \"12\", cy: \"12\", r: \"10\" }),\n /* @__PURE__ */ jsx11(\"path\", { d: \"m4.9 4.9 14.2 14.2\" })\n ]\n }\n );\n};\nvar TrendingDownIcon = ({\n className = \"\",\n size = 24\n}) => /* @__PURE__ */ jsxs10(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className,\n children: [\n /* @__PURE__ */ jsx11(\"polyline\", { points: \"22 17 13.5 8.5 8.5 13.5 2 7\" }),\n /* @__PURE__ */ jsx11(\"polyline\", { points: \"16 17 22 17 22 11\" })\n ]\n }\n);\n\n// src/web/views/notifications/notifications.tsx\nimport { forwardRef as forwardRef2 } from \"preact/compat\";\nimport { useEffect as useEffect15, useRef as useRef13, useState as useState19 } from \"preact/hooks\";\n\n// src/web/views/notifications/details-routes.tsx\nimport { useEffect as useEffect12, useRef as useRef10, useState as useState16 } from \"preact/compat\";\n\n// src/web/views/notifications/popover.tsx\nimport {\n createPortal,\n useContext as useContext2,\n useEffect as useEffect10,\n useRef as useRef8,\n useState as useState11\n} from \"preact/compat\";\nimport { Fragment as Fragment6, jsx as jsx12, jsxs as jsxs11 } from \"preact/jsx-runtime\";\nvar Popover = ({\n children,\n triggerContent,\n wrapperProps\n}) => {\n const [popoverState, setPopoverState] = useState11(\"closed\");\n const [elBoundingRect, setElBoundingRect] = useState11(null);\n const [viewportSize, setViewportSize] = useState11({\n width: window.innerWidth,\n height: window.innerHeight\n });\n const triggerRef = useRef8(null);\n const popoverRef = useRef8(null);\n const portalEl = useContext2(ToolbarElementContext);\n const isHoveredRef = useRef8(false);\n useEffect10(() => {\n const handleResize = () => {\n setViewportSize({\n width: window.innerWidth,\n height: window.innerHeight\n });\n updateRect();\n };\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n const updateRect = () => {\n if (triggerRef.current && portalEl) {\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const portalRect = portalEl.getBoundingClientRect();\n const centerX = triggerRect.left + triggerRect.width / 2;\n const centerY = triggerRect.top;\n const rect = new DOMRect(\n centerX - portalRect.left,\n centerY - portalRect.top,\n triggerRect.width,\n triggerRect.height\n );\n setElBoundingRect(rect);\n }\n };\n useEffect10(() => {\n updateRect();\n }, [triggerRef.current]);\n useEffect10(() => {\n if (popoverState === \"opening\") {\n const timer = setTimeout(() => setPopoverState(\"open\"), 120);\n return () => clearTimeout(timer);\n } else if (popoverState === \"closing\") {\n const timer = setTimeout(() => setPopoverState(\"closed\"), 120);\n return () => clearTimeout(timer);\n }\n }, [popoverState]);\n useEffect10(() => {\n const interval = setInterval(() => {\n if (!isHoveredRef.current && popoverState !== \"closed\") {\n setPopoverState(\"closing\");\n }\n }, 1e3);\n return () => clearInterval(interval);\n }, [popoverState]);\n const handleMouseEnter = () => {\n isHoveredRef.current = true;\n updateRect();\n setPopoverState(\"opening\");\n };\n const handleMouseLeave = () => {\n isHoveredRef.current = false;\n updateRect();\n setPopoverState(\"closing\");\n };\n const getPopoverPosition = () => {\n if (!elBoundingRect || !portalEl) return { top: 0, left: 0 };\n const portalRect = portalEl.getBoundingClientRect();\n const popoverWidth = 175;\n const popoverHeight = popoverRef.current?.offsetHeight || 40;\n const safeArea = 5;\n const viewportX = elBoundingRect.x + portalRect.left;\n const viewportY = elBoundingRect.y + portalRect.top;\n let left = viewportX;\n let top = viewportY - 4;\n if (left - popoverWidth / 2 < safeArea) {\n left = safeArea + popoverWidth / 2;\n } else if (left + popoverWidth / 2 > viewportSize.width - safeArea) {\n left = viewportSize.width - safeArea - popoverWidth / 2;\n }\n if (top - popoverHeight < safeArea) {\n top = viewportY + elBoundingRect.height + 4;\n }\n return {\n top: top - portalRect.top,\n left: left - portalRect.left\n };\n };\n return /* @__PURE__ */ jsxs11(Fragment6, { children: [\n portalEl && elBoundingRect && popoverState !== \"closed\" && createPortal(\n /* @__PURE__ */ jsx12(\n \"div\",\n {\n ref: popoverRef,\n className: cn([\n \"absolute z-100 bg-white text-black rounded-lg px-3 py-2 shadow-lg\",\n \"transform transition-all duration-120 ease-[cubic-bezier(0.23,1,0.32,1)]\",\n 'after:content-[\"\"] after:absolute after:top-[100%]',\n \"after:left-1/2 after:-translate-x-1/2\",\n \"after:w-[10px] after:h-[6px]\",\n \"after:border-l-[5px] after:border-l-transparent\",\n \"after:border-r-[5px] after:border-r-transparent\",\n \"after:border-t-[6px] after:border-t-white\",\n \"pointer-events-none\",\n popoverState === \"opening\" || popoverState === \"closing\" ? \"opacity-0 translate-y-1\" : \"opacity-100 translate-y-0\"\n ]),\n style: {\n top: getPopoverPosition().top + \"px\",\n left: getPopoverPosition().left + \"px\",\n transform: \"translate(-50%, -100%)\",\n minWidth: \"175px\"\n },\n children\n }\n ),\n portalEl\n ),\n /* @__PURE__ */ jsx12(\n \"div\",\n {\n ref: triggerRef,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ...wrapperProps,\n children: triggerContent\n }\n )\n ] });\n};\n\n// src/web/views/notifications/notification-tabs.tsx\nimport { Fragment as Fragment7, jsx as jsx13, jsxs as jsxs12 } from \"preact/jsx-runtime\";\nvar NotificationTabs = ({\n selectedEvent: _\n}) => {\n const { notificationState, setNotificationState, setRoute } = useNotificationsContext();\n return /* @__PURE__ */ jsxs12(\n \"div\",\n {\n className: cn([\n \"flex w-full justify-between items-center px-3 py-2 text-xs\"\n ]),\n children: [\n /* @__PURE__ */ jsxs12(\n \"div\",\n {\n className: cn([\n \"bg-[#18181B] flex items-center gap-x-1 p-1 rounded-sm\"\n ]),\n children: [\n /* @__PURE__ */ jsx13(\n \"button\",\n {\n onClick: () => {\n setRoute({\n route: \"render-visualization\",\n routeMessage: null\n });\n },\n className: cn([\n \"w-1/2 flex items-center justify-center whitespace-nowrap py-[5px] px-1 gap-x-1\",\n notificationState.route === \"render-visualization\" || notificationState.route === \"render-explanation\" ? \"text-white bg-[#7521c8] rounded-sm\" : \"text-[#6E6E77] bg-[#18181B] rounded-sm\"\n ]),\n children: \"Ranked\"\n }\n ),\n /* @__PURE__ */ jsx13(\n \"button\",\n {\n onClick: () => {\n setRoute({\n route: \"other-visualization\",\n routeMessage: null\n });\n },\n className: cn([\n \"w-1/2 flex items-center justify-center whitespace-nowrap py-[5px] px-1 gap-x-1\",\n notificationState.route === \"other-visualization\" ? \"text-white bg-[#7521c8] rounded-sm\" : \"text-[#6E6E77] bg-[#18181B] rounded-sm\"\n ]),\n children: \"Overview\"\n }\n ),\n /* @__PURE__ */ jsx13(\n \"button\",\n {\n onClick: () => {\n setRoute({\n route: \"optimize\",\n routeMessage: null\n });\n },\n className: cn([\n \"w-1/2 flex items-center justify-center whitespace-nowrap py-[5px] px-1 gap-x-1\",\n notificationState.route === \"optimize\" ? \"text-white bg-[#7521c8] rounded-sm\" : \"text-[#6E6E77] bg-[#18181B] rounded-sm\"\n ]),\n children: /* @__PURE__ */ jsx13(\"span\", { children: \"Prompts\" })\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsx13(\n Popover,\n {\n triggerContent: /* @__PURE__ */ jsx13(\n \"button\",\n {\n onClick: () => {\n setNotificationState((prev) => {\n if (prev.audioNotificationsOptions.enabled && prev.audioNotificationsOptions.audioContext.state !== \"closed\") {\n prev.audioNotificationsOptions.audioContext.close();\n }\n const prevEnabledState = prev.audioNotificationsOptions.enabled;\n localStorage.setItem(\n \"react-scan-notifications-audio\",\n String(!prevEnabledState)\n );\n const audioContext = new AudioContext();\n if (!prev.audioNotificationsOptions.enabled) {\n playNotificationSound(audioContext);\n }\n if (prevEnabledState) {\n audioContext.close();\n }\n return {\n ...prev,\n audioNotificationsOptions: prevEnabledState ? {\n audioContext: null,\n enabled: false\n } : {\n audioContext,\n enabled: true\n }\n };\n });\n },\n className: \"ml-auto\",\n children: /* @__PURE__ */ jsxs12(\n \"div\",\n {\n className: cn([\n \"flex gap-x-2 justify-center items-center text-[#6E6E77]\"\n ]),\n children: [\n /* @__PURE__ */ jsx13(\"span\", { children: \"Alerts\" }),\n notificationState.audioNotificationsOptions.enabled ? /* @__PURE__ */ jsx13(VolumeOnIcon, { size: 16, className: \"text-[#6E6E77]\" }) : /* @__PURE__ */ jsx13(VolumeOffIcon, { size: 16, className: \"text-[#6E6E77]\" })\n ]\n }\n )\n }\n ),\n children: /* @__PURE__ */ jsx13(Fragment7, { children: \"Play a chime when a slowdown is recorded\" })\n }\n )\n ]\n }\n );\n};\n\n// src/web/views/notifications/optimize.tsx\nimport { useState as useState12 } from \"preact/hooks\";\nimport { Fragment as Fragment8, jsx as jsx14, jsxs as jsxs13 } from \"preact/jsx-runtime\";\nvar formatReactData = (groupedFiberRenders) => {\n let text = \"\";\n const filteredFibers = groupedFiberRenders.toSorted((a, b) => b.totalTime - a.totalTime).slice(0, 30).filter((fiber) => fiber.totalTime > 5);\n filteredFibers.forEach((fiberRender) => {\n let localText = \"\";\n localText += \"Component Name:\";\n localText += fiberRender.name;\n localText += \"\\n\";\n localText += `Rendered: ${fiberRender.count} times\n`;\n localText += `Sum of self times for ${fiberRender.name} is ${fiberRender.totalTime.toFixed(0)}ms\n`;\n if (fiberRender.changes.props.length > 0) {\n localText += `Changed props for all ${fiberRender.name} instances (\"name:count\" pairs)\n`;\n fiberRender.changes.props.forEach((change) => {\n localText += `${change.name}:${change.count}x\n`;\n });\n }\n if (fiberRender.changes.state.length > 0) {\n localText += `Changed state for all ${fiberRender.name} instances (\"hook index:count\" pairs)\n`;\n fiberRender.changes.state.forEach((change) => {\n localText += `${change.index}:${change.count}x\n`;\n });\n }\n if (fiberRender.changes.context.length > 0) {\n localText += `Changed context for all ${fiberRender.name} instances (\"context display name (if exists):count\" pairs)\n`;\n fiberRender.changes.context.forEach((change) => {\n localText += `${change.name}:${change.count}x\n`;\n });\n }\n text += localText;\n text += \"\\n\";\n });\n return text;\n};\nvar generateInteractionDataPrompt = ({\n renderTime,\n eHandlerTimeExcludingRenders,\n toRafTime,\n commitTime,\n framePresentTime,\n formattedReactData\n}) => {\n return `I will provide you with a set of high level, and low level performance data about an interaction in a React App:\n### High level\n- react component render time: ${renderTime.toFixed(0)}ms\n- how long it took to run javascript event handlers (EXCLUDING REACT RENDERS): ${eHandlerTimeExcludingRenders.toFixed(0)}ms\n- how long it took from the last event handler time, to the last request animation frame: ${toRafTime.toFixed(0)}ms\n\t- things like prepaint, style recalculations, layerization, async web API's like observers may occur during this time\n- how long it took from the last request animation frame to when the dom was committed: ${commitTime.toFixed(0)}ms\n\t- during this period you will see paint, commit, potential style recalcs, and other misc browser activity. Frequently high times here imply css that makes the browser do a lot of work, or mutating expensive dom properties during the event handler stage. This can be many things, but it narrows the problem scope significantly when this is high\n${framePresentTime === null ? \"\" : `- how long it took from dom commit for the frame to be presented: ${framePresentTime.toFixed(0)}ms. This is when information about how to paint the next frame is sent to the compositor threads, and when the GPU does work. If this is high, look for issues that may be a bottleneck for operations occurring during this time`}\n\n### Low level\nWe also have lower level information about react components, such as their render time, and which props/state/context changed when they re-rendered.\n${formattedReactData}`;\n};\nvar generateInteractionOptimizationPrompt = ({\n interactionType,\n name,\n componentPath,\n time,\n renderTime,\n eHandlerTimeExcludingRenders,\n toRafTime,\n commitTime,\n framePresentTime,\n formattedReactData\n}) => `You will attempt to implement a performance improvement to a user interaction in a React app. You will be provided with data about the interaction, and the slow down.\n\nYour should split your goals into 2 parts:\n- identifying the problem\n- fixing the problem\n\t- it is okay to implement a fix even if you aren't 100% sure the fix solves the performance problem. When you aren't sure, you should tell the user to try repeating the interaction, and feeding the \"Formatted Data\" in the React Scan notifications optimize tab. This allows you to start a debugging flow with the user, where you attempt a fix, and observe the result. The user may make a mistake when they pass you the formatted data, so must make sure, given the data passed to you, that the associated data ties to the same interaction you were trying to debug.\n\n\nMake sure to check if the user has the react compiler enabled (project dependent, configured through build tool), so you don't unnecessarily memoize components. If it is, you do not need to worry about memoizing user components\n\nOne challenge you may face is the performance problem lies in a node_module, not in user code. If you are confident the problem originates because of a node_module, there are multiple strategies, which are context dependent:\n- you can try to work around the problem, knowing which module is slow\n- you can determine if its possible to resolve the problem in the node_module by modifying non node_module code\n- you can monkey patch the node_module to experiment and see if it's really the problem (you can modify a functions properties to hijack the call for example)\n- you can determine if it's feasible to replace whatever node_module is causing the problem with a performant option (this is an extreme)\n\nThe interaction was a ${interactionType} on the component named ${name}. This component has the following ancestors ${componentPath}. This is the path from the component, to the root. This should be enough information to figure out where this component is in the user's code base\n\nThis path is the component that was clicked, so it should tell you roughly where component had an event handler that triggered a state change.\n\nPlease note that the leaf node of this path might not be user code (if they use a UI library), and they may contain many wrapper components that just pass through children that aren't relevant to the actual click. So make you sure analyze the path and understand what the user code is doing\n\nWe have a set of high level, and low level data about the performance issue.\n\nThe click took ${time.toFixed(0)}ms from interaction start, to when a new frame was presented to a user.\n\nWe also provide you with a breakdown of what the browser spent time on during the period of interaction start to frame presentation.\n\n- react component render time: ${renderTime.toFixed(0)}ms\n- how long it took to run javascript event handlers (EXCLUDING REACT RENDERS): ${eHandlerTimeExcludingRenders.toFixed(0)}ms\n- how long it took from the last event handler time, to the last request animation frame: ${toRafTime.toFixed(0)}ms\n\t- things like prepaint, style recalculations, layerization, async web API's like observers may occur during this time\n- how long it took from the last request animation frame to when the dom was committed: ${commitTime.toFixed(0)}ms\n\t- during this period you will see paint, commit, potential style recalcs, and other misc browser activity. Frequently high times here imply css that makes the browser do a lot of work, or mutating expensive dom properties during the event handler stage. This can be many things, but it narrows the problem scope significantly when this is high\n${framePresentTime === null ? \"\" : `- how long it took from dom commit for the frame to be presented: ${framePresentTime.toFixed(0)}ms. This is when information about how to paint the next frame is sent to the compositor threads, and when the GPU does work. If this is high, look for issues that may be a bottleneck for operations occurring during this time`}\n\n\nWe also have lower level information about react components, such as their render time, and which props/state/context changed when they re-rendered.\n\n${formattedReactData}\n\nYou may notice components have many renders, but much fewer props/state/context changes. This normally implies most of the components could of been memoized to avoid computation\n\nIt's also important to remember if a component had no props/state/context change, and it was memoized, it would not render. So the flow should be:\n- find the most expensive components\n- see what's causing them to render\n- determine how you can make those state/props/context not change for a large set of the renders\n- once there are no more changes left, you can memoize the component so it no longer unnecessarily re-renders. \n\nAn important thing to note is that if you see a lot of react renders (some components with very high render counts), but javascript excluding renders is much higher than render time, it is possible that the components with lots of renders run hooks like useEffect/useLayoutEffect, which run during the JS event handler period.\n\nIt's also good to note that react profiles hook times in development, and if many hooks are called (lets say 5,000 components all called a useEffect), it will have to profile every single one. And it may also be the case the comparison of the hooks dependency can be expensive, and that would not be tracked in render time.\n\nIf a node_module is the component with high renders, you can experiment to see if that component is the root issue (because of hooks). You should use the same instructions for node_module debugging mentioned previously.\n\n`;\nvar generateFrameDropOptimizationPrompt = ({\n renderTime,\n otherTime,\n formattedReactData\n}) => `You will attempt to implement a performance improvement to a large slowdown in a react app\n\nYour should split your goals into 2 parts:\n- identifying the problem\n- fixing the problem\n\t- it is okay to implement a fix even if you aren't 100% sure the fix solves the performance problem. When you aren't sure, you should tell the user to try repeating the interaction, and feeding the \"Formatted Data\" in the React Scan notifications optimize tab. This allows you to start a debugging flow with the user, where you attempt a fix, and observe the result. The user may make a mistake when they pass you the formatted data, so must make sure, given the data passed to you, that the associated data ties to the same interaction you were trying to debug.\n\nMake sure to check if the user has the react compiler enabled (project dependent, configured through build tool), so you don't unnecessarily memoize components. If it is, you do not need to worry about memoizing user components\n\nOne challenge you may face is the performance problem lies in a node_module, not in user code. If you are confident the problem originates because of a node_module, there are multiple strategies, which are context dependent:\n- you can try to work around the problem, knowing which module is slow\n- you can determine if its possible to resolve the problem in the node_module by modifying non node_module code\n- you can monkey patch the node_module to experiment and see if it's really the problem (you can modify a functions properties to hijack the call for example)\n- you can determine if it's feasible to replace whatever node_module is causing the problem with a performant option (this is an extreme)\n\n\nWe have the high level time of how much react spent rendering, and what else the browser spent time on during this slowdown\n\n- react component render time: ${renderTime.toFixed(0)}ms\n- other time: ${otherTime}ms\n\n\nWe also have lower level information about react components, such as their render time, and which props/state/context changed when they re-rendered.\n\n${formattedReactData}\n\nYou may notice components have many renders, but much fewer props/state/context changes. This normally implies most of the components could of been memoized to avoid computation\n\nIt's also important to remember if a component had no props/state/context change, and it was memoized, it would not render. So the flow should be:\n- find the most expensive components\n- see what's causing them to render\n- determine how you can make those state/props/context not change for a large set of the renders\n- once there are no more changes left, you can memoize the component so it no longer unnecessarily re-renders. \n\nAn important thing to note is that if you see a lot of react renders (some components with very high render counts), but other time is much higher than render time, it is possible that the components with lots of renders run hooks like useEffect/useLayoutEffect, which run outside of what we profile (just react render time).\n\nIt's also good to note that react profiles hook times in development, and if many hooks are called (lets say 5,000 components all called a useEffect), it will have to profile every single one. And it may also be the case the comparison of the hooks dependency can be expensive, and that would not be tracked in render time.\n\nIf a node_module is the component with high renders, you can experiment to see if that component is the root issue (because of hooks). You should use the same instructions for node_module debugging mentioned previously.\n\nIf renders don't seem to be the problem, see if there are any expensive CSS properties being added/mutated, or any expensive DOM Element mutations/new elements being created that could cause this slowdown. \n`;\nvar generateFrameDropExplanationPrompt = ({\n renderTime,\n otherTime,\n formattedReactData\n}) => `Your goal will be to help me find the source of a performance problem in a React App. I collected a large dataset about this specific performance problem.\n\nWe have the high level time of how much react spent rendering, and what else the browser spent time on during this slowdown\n\n- react component render time: ${renderTime.toFixed(0)}ms\n- other time (other JavaScript, hooks like useEffect, style recalculations, layerization, paint & commit and everything else the browser might do to draw a new frame after javascript mutates the DOM): ${otherTime}ms\n\n\nWe also have lower level information about react components, such as their render time, and which props/state/context changed when they re-rendered.\n\n${formattedReactData}\n\nYou may notice components have many renders, but much fewer props/state/context changes. This normally implies most of the components could of been memoized to avoid computation\n\nIt's also important to remember if a component had no props/state/context change, and it was memoized, it would not render. So a flow we can go through is:\n- find the most expensive components\n- see what's causing them to render\n- determine how you can make those state/props/context not change for a large set of the renders\n- once there are no more changes left, you can memoize the component so it no longer unnecessarily re-renders. \n\n\nAn important thing to note is that if you see a lot of react renders (some components with very high render counts), but other time is much higher than render time, it is possible that the components with lots of renders run hooks like useEffect/useLayoutEffect, which run outside of what we profile (just react render time).\n\nIt's also good to note that react profiles hook times in development, and if many hooks are called (lets say 5,000 components all called a useEffect), it will have to profile every single one, and this can add significant overhead when thousands of effects ran.\n\nIf it's not possible to explain the root problem from this data, please ask me for more data explicitly, and what we would need to know to find the source of the performance problem.\n`;\nvar generateFrameDropDataPrompt = ({\n renderTime,\n otherTime,\n formattedReactData\n}) => `I will provide you with a set of high level, and low level performance data about a large frame drop in a React App:\n### High level\n- react component render time: ${renderTime.toFixed(0)}ms\n- how long it took to run everything else (other JavaScript, hooks like useEffect, style recalculations, layerization, paint & commit and everything else the browser might do to draw a new frame after javascript mutates the DOM): ${otherTime}ms\n\n### Low level\nWe also have lower level information about react components, such as their render time, and which props/state/context changed when they re-rendered.\n${formattedReactData}`;\nvar generateInteractionExplanationPrompt = ({\n interactionType,\n name,\n time,\n renderTime,\n eHandlerTimeExcludingRenders,\n toRafTime,\n commitTime,\n framePresentTime,\n formattedReactData\n}) => `Your goal will be to help me find the source of a performance problem. I collected a large dataset about this specific performance problem.\n\nThere was a ${interactionType} on a component named ${name}. This means, roughly, the component that handled the ${interactionType} event was named ${name}.\n\nWe have a set of high level, and low level data about the performance issue.\n\nThe click took ${time.toFixed(0)}ms from interaction start, to when a new frame was presented to a user.\n\nWe also provide you with a breakdown of what the browser spent time on during the period of interaction start to frame presentation.\n\n- react component render time: ${renderTime.toFixed(0)}ms\n- how long it took to run javascript event handlers (EXCLUDING REACT RENDERS): ${eHandlerTimeExcludingRenders.toFixed(0)}ms\n- how long it took from the last event handler time, to the last request animation frame: ${toRafTime.toFixed(0)}ms\n\t- things like prepaint, style recalculations, layerization, async web API's like observers may occur during this time\n- how long it took from the last request animation frame to when the dom was committed: ${commitTime.toFixed(0)}ms\n\t- during this period you will see paint, commit, potential style recalcs, and other misc browser activity. Frequently high times here imply css that makes the browser do a lot of work, or mutating expensive dom properties during the event handler stage. This can be many things, but it narrows the problem scope significantly when this is high\n${framePresentTime === null ? \"\" : `- how long it took from dom commit for the frame to be presented: ${framePresentTime.toFixed(0)}ms. This is when information about how to paint the next frame is sent to the compositor threads, and when the GPU does work. If this is high, look for issues that may be a bottleneck for operations occurring during this time`}\n\nWe also have lower level information about react components, such as their render time, and which props/state/context changed when they re-rendered.\n\n${formattedReactData}\n\n\nYou may notice components have many renders, but much fewer props/state/context changes. This normally implies most of the components could of been memoized to avoid computation\n\nIt's also important to remember if a component had no props/state/context change, and it was memoized, it would not render. So a flow we can go through is:\n- find the most expensive components\n- see what's causing them to render\n- determine how you can make those state/props/context not change for a large set of the renders\n- once there are no more changes left, you can memoize the component so it no longer unnecessarily re-renders. \n\n\nAn important thing to note is that if you see a lot of react renders (some components with very high render counts), but javascript excluding renders is much higher than render time, it is possible that the components with lots of renders run hooks like useEffect/useLayoutEffect, which run during the JS event handler period.\n\nIt's also good to note that react profiles hook times in development, and if many hooks are called (lets say 5,000 components all called a useEffect), it will have to profile every single one. And it may also be the case the comparison of the hooks dependency can be expensive, and that would not be tracked in render time.\n\nIf it's not possible to explain the root problem from this data, please ask me for more data explicitly, and what we would need to know to find the source of the performance problem.\n`;\nvar getLLMPrompt = (activeTab, selectedEvent) => iife(() => {\n switch (activeTab) {\n case \"data\": {\n switch (selectedEvent.kind) {\n case \"dropped-frames\": {\n return generateFrameDropDataPrompt({\n formattedReactData: formatReactData(\n selectedEvent.groupedFiberRenders\n ),\n renderTime: selectedEvent.groupedFiberRenders.reduce(\n (prev, curr) => prev + curr.totalTime,\n 0\n ),\n otherTime: selectedEvent.timing.otherTime\n });\n }\n case \"interaction\": {\n return generateInteractionDataPrompt({\n commitTime: selectedEvent.timing.frameConstruction,\n eHandlerTimeExcludingRenders: selectedEvent.timing.otherJSTime,\n formattedReactData: formatReactData(\n selectedEvent.groupedFiberRenders\n ),\n framePresentTime: selectedEvent.timing.frameDraw,\n renderTime: selectedEvent.groupedFiberRenders.reduce(\n (prev, curr) => prev + curr.totalTime,\n 0\n ),\n toRafTime: selectedEvent.timing.framePreparation\n });\n }\n }\n }\n case \"explanation\": {\n switch (selectedEvent.kind) {\n case \"dropped-frames\": {\n return generateFrameDropExplanationPrompt({\n formattedReactData: formatReactData(\n selectedEvent.groupedFiberRenders\n ),\n renderTime: selectedEvent.groupedFiberRenders.reduce(\n (prev, curr) => prev + curr.totalTime,\n 0\n ),\n otherTime: selectedEvent.timing.otherTime\n });\n }\n case \"interaction\": {\n return generateInteractionExplanationPrompt({\n commitTime: selectedEvent.timing.frameConstruction,\n eHandlerTimeExcludingRenders: selectedEvent.timing.otherJSTime,\n formattedReactData: formatReactData(\n selectedEvent.groupedFiberRenders\n ),\n framePresentTime: selectedEvent.timing.frameDraw,\n interactionType: selectedEvent.type,\n name: getComponentName(selectedEvent.componentPath),\n renderTime: selectedEvent.groupedFiberRenders.reduce(\n (prev, curr) => prev + curr.totalTime,\n 0\n ),\n time: getTotalTime(selectedEvent.timing),\n toRafTime: selectedEvent.timing.framePreparation\n });\n }\n }\n }\n case \"fix\": {\n switch (selectedEvent.kind) {\n case \"dropped-frames\": {\n return generateFrameDropOptimizationPrompt({\n formattedReactData: formatReactData(\n selectedEvent.groupedFiberRenders\n ),\n renderTime: selectedEvent.groupedFiberRenders.reduce(\n (prev, curr) => prev + curr.totalTime,\n 0\n ),\n otherTime: selectedEvent.timing.otherTime\n });\n }\n case \"interaction\": {\n return generateInteractionOptimizationPrompt({\n commitTime: selectedEvent.timing.frameConstruction,\n componentPath: selectedEvent.componentPath.join(\">\"),\n eHandlerTimeExcludingRenders: selectedEvent.timing.otherJSTime,\n formattedReactData: formatReactData(\n selectedEvent.groupedFiberRenders\n ),\n framePresentTime: selectedEvent.timing.frameDraw,\n interactionType: selectedEvent.type,\n name: getComponentName(selectedEvent.componentPath),\n renderTime: selectedEvent.groupedFiberRenders.reduce(\n (prev, curr) => prev + curr.totalTime,\n 0\n ),\n time: getTotalTime(selectedEvent.timing),\n toRafTime: selectedEvent.timing.framePreparation\n });\n }\n }\n }\n }\n});\nvar Optimize = ({\n selectedEvent\n}) => {\n const [activeTab, setActiveTab] = useState12(\n \"fix\"\n );\n const [copying, setCopying] = useState12(false);\n return /* @__PURE__ */ jsxs13(\"div\", { className: cn([\"w-full h-full\"]), children: [\n /* @__PURE__ */ jsxs13(\n \"div\",\n {\n className: cn([\n \"border border-[#27272A] rounded-sm h-4/5 text-xs overflow-hidden\"\n ]),\n children: [\n /* @__PURE__ */ jsx14(\"div\", { className: cn([\"bg-[#18181B] p-1 rounded-t-sm\"]), children: /* @__PURE__ */ jsxs13(\"div\", { className: cn([\"flex items-center gap-x-1\"]), children: [\n /* @__PURE__ */ jsx14(\n \"button\",\n {\n onClick: () => setActiveTab(\"fix\"),\n className: cn([\n \"flex items-center justify-center whitespace-nowrap py-1.5 px-3 rounded-sm\",\n activeTab === \"fix\" ? \"text-white bg-[#7521c8]\" : \"text-[#6E6E77] hover:text-white\"\n ]),\n children: \"Fix\"\n }\n ),\n /* @__PURE__ */ jsx14(\n \"button\",\n {\n onClick: () => setActiveTab(\"explanation\"),\n className: cn([\n \"flex items-center justify-center whitespace-nowrap py-1.5 px-3 rounded-sm\",\n activeTab === \"explanation\" ? \"text-white bg-[#7521c8]\" : \"text-[#6E6E77] hover:text-white\"\n ]),\n children: \"Explanation\"\n }\n ),\n /* @__PURE__ */ jsx14(\n \"button\",\n {\n onClick: () => setActiveTab(\"data\"),\n className: cn([\n \"flex items-center justify-center whitespace-nowrap py-1.5 px-3 rounded-sm\",\n activeTab === \"data\" ? \"text-white bg-[#7521c8]\" : \"text-[#6E6E77] hover:text-white\"\n ]),\n children: \"Data\"\n }\n )\n ] }) }),\n /* @__PURE__ */ jsx14(\"div\", { className: cn([\"overflow-y-auto h-full\"]), children: /* @__PURE__ */ jsx14(\n \"pre\",\n {\n className: cn([\n \"p-2 h-full\",\n \"whitespace-pre-wrap break-words\",\n \"text-gray-300 font-mono \"\n ]),\n children: getLLMPrompt(activeTab, selectedEvent)\n }\n ) })\n ]\n }\n ),\n /* @__PURE__ */ jsxs13(\n \"button\",\n {\n onClick: async () => {\n const text = getLLMPrompt(activeTab, selectedEvent);\n await navigator.clipboard.writeText(text);\n setCopying(true);\n setTimeout(() => setCopying(false), 1e3);\n },\n className: cn([\n \"mt-4 px-4 py-2 bg-[#18181B] text-[#6E6E77] rounded-sm\",\n \"hover:text-white transition-colors duration-200\",\n \"flex items-center justify-center gap-x-2 text-xs\"\n ]),\n children: [\n /* @__PURE__ */ jsx14(\"span\", { children: copying ? \"Copied!\" : \"Copy Prompt\" }),\n /* @__PURE__ */ jsx14(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: cn([\n \"transition-transform duration-200\",\n copying && \"scale-110\"\n ]),\n children: copying ? /* @__PURE__ */ jsx14(\"path\", { d: \"M20 6L9 17l-5-5\" }) : /* @__PURE__ */ jsxs13(Fragment8, { children: [\n /* @__PURE__ */ jsx14(\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\" }),\n /* @__PURE__ */ jsx14(\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" })\n ] })\n }\n )\n ]\n }\n )\n ] });\n};\n\n// src/web/views/notifications/other-visualization.tsx\nimport { useContext as useContext3, useEffect as useEffect11, useState as useState13 } from \"preact/hooks\";\nimport { Fragment as Fragment9, jsx as jsx15, jsxs as jsxs14 } from \"preact/jsx-runtime\";\nvar getTimeData = (selectedEvent, isProduction2) => {\n switch (selectedEvent.kind) {\n // todo: push instead of conditional spread\n case \"dropped-frames\": {\n const timeData = [\n ...isProduction2 ? [\n {\n name: \"Total Processing Time\",\n time: getTotalTime(selectedEvent.timing),\n color: \"bg-red-500\",\n kind: \"total-processing-time\"\n }\n ] : [\n {\n name: \"Renders\",\n time: selectedEvent.timing.renderTime,\n color: \"bg-purple-500\",\n kind: \"render\"\n },\n {\n name: \"JavaScript, DOM updates, Draw Frame\",\n time: selectedEvent.timing.otherTime,\n color: \"bg-[#4b4b4b]\",\n kind: \"other-frame-drop\"\n }\n ]\n ];\n return timeData;\n }\n case \"interaction\": {\n const timeData = [\n ...!isProduction2 ? [\n {\n name: \"Renders\",\n time: selectedEvent.timing.renderTime,\n color: \"bg-purple-500\",\n kind: \"render\"\n }\n ] : [],\n {\n name: isProduction2 ? \"React Renders, Hooks, Other JavaScript\" : \"JavaScript/React Hooks \",\n time: selectedEvent.timing.otherJSTime,\n color: \"bg-[#EFD81A]\",\n kind: \"other-javascript\"\n },\n {\n name: \"Update DOM and Draw New Frame\",\n time: getTotalTime(selectedEvent.timing) - selectedEvent.timing.renderTime - selectedEvent.timing.otherJSTime,\n color: \"bg-[#1D3A66]\",\n kind: \"other-not-javascript\"\n }\n ];\n return timeData;\n }\n }\n};\nvar OtherVisualization = ({\n selectedEvent\n}) => {\n const [isProduction2] = useState13(getIsProduction() ?? false);\n const { notificationState } = useNotificationsContext();\n const [expandedItems, setExpandedItems] = useState13(\n notificationState.routeMessage?.name ? [notificationState.routeMessage.name] : []\n );\n const timeData = getTimeData(selectedEvent, isProduction2);\n const root = useContext3(ToolbarElementContext);\n useEffect11(() => {\n if (notificationState.routeMessage?.name) {\n const container = root?.querySelector(\"#overview-scroll-container\");\n const element = root?.querySelector(\n `#react-scan-overview-bar-${notificationState.routeMessage.name}`\n );\n if (container && element) {\n const elementTop = element.getBoundingClientRect().top;\n const containerTop = container.getBoundingClientRect().top;\n const scrollOffset = elementTop - containerTop;\n container.scrollTop = container.scrollTop + scrollOffset;\n }\n }\n }, [notificationState.route]);\n useEffect11(() => {\n if (notificationState.route === \"other-visualization\") {\n setExpandedItems(\n (prev) => notificationState.routeMessage?.name ? [notificationState.routeMessage.name] : prev\n );\n }\n }, [notificationState.route]);\n const totalTime = timeData.reduce((acc, item) => acc + item.time, 0);\n return /* @__PURE__ */ jsxs14(\"div\", { className: \"rounded-sm border border-zinc-800 text-xs\", children: [\n /* @__PURE__ */ jsx15(\"div\", { className: \"p-2 border-b border-zinc-800 bg-zinc-900/50\", children: /* @__PURE__ */ jsxs14(\"div\", { className: \"flex items-center justify-between\", children: [\n /* @__PURE__ */ jsx15(\"h3\", { className: \"text-xs font-medium\", children: \"What was time spent on?\" }),\n /* @__PURE__ */ jsxs14(\"span\", { className: \"text-xs text-zinc-400\", children: [\n \"Total: \",\n totalTime.toFixed(0),\n \"ms\"\n ] })\n ] }) }),\n /* @__PURE__ */ jsx15(\"div\", { className: \"divide-y divide-zinc-800\", children: timeData.map((entry) => {\n const isExpanded = expandedItems.includes(entry.kind);\n return /* @__PURE__ */ jsxs14(\"div\", { id: `react-scan-overview-bar-${entry.kind}`, children: [\n /* @__PURE__ */ jsx15(\n \"button\",\n {\n onClick: () => setExpandedItems(\n (prev) => prev.includes(entry.kind) ? prev.filter((item) => item !== entry.kind) : [...prev, entry.kind]\n ),\n className: \"w-full px-3 py-2 flex items-center gap-4 hover:bg-zinc-800/50 transition-colors\",\n children: /* @__PURE__ */ jsxs14(\"div\", { className: \"flex-1\", children: [\n /* @__PURE__ */ jsxs14(\"div\", { className: \"flex items-center justify-between mb-2\", children: [\n /* @__PURE__ */ jsxs14(\"div\", { className: \"flex items-center gap-0.5\", children: [\n /* @__PURE__ */ jsx15(\n \"svg\",\n {\n className: `h-4 w-4 text-zinc-400 transition-transform ${isExpanded ? \"rotate-90\" : \"\"}`,\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /* @__PURE__ */ jsx15(\n \"path\",\n {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M9 5l7 7-7 7\"\n }\n )\n }\n ),\n /* @__PURE__ */ jsx15(\"span\", { className: \"font-medium flex items-center text-left\", children: entry.name })\n ] }),\n /* @__PURE__ */ jsxs14(\"span\", { className: \" text-zinc-400\", children: [\n entry.time.toFixed(0),\n \"ms\"\n ] })\n ] }),\n /* @__PURE__ */ jsx15(\"div\", { className: \"h-1 bg-zinc-800 rounded-full overflow-hidden\", children: /* @__PURE__ */ jsx15(\n \"div\",\n {\n className: `h-full ${entry.color} transition-all`,\n style: {\n width: `${entry.time / totalTime * 100}%`\n }\n }\n ) })\n ] })\n }\n ),\n isExpanded && /* @__PURE__ */ jsx15(\"div\", { className: \"bg-zinc-900/30 border-t border-zinc-800 px-2.5 py-3\", children: /* @__PURE__ */ jsx15(\"p\", { className: \" text-zinc-400 mb-4 text-xs\", children: iife(() => {\n switch (selectedEvent.kind) {\n case \"interaction\": {\n switch (entry.kind) {\n case \"render\": {\n return /* @__PURE__ */ jsx15(\n Explanation,\n {\n input: getRenderInput(selectedEvent)\n }\n );\n }\n case \"other-javascript\": {\n return /* @__PURE__ */ jsx15(\n Explanation,\n {\n input: getJSInput(selectedEvent)\n }\n );\n }\n case \"other-not-javascript\": {\n return /* @__PURE__ */ jsx15(\n Explanation,\n {\n input: getDrawInput(selectedEvent)\n }\n );\n }\n }\n }\n case \"dropped-frames\": {\n switch (entry.kind) {\n case \"total-processing-time\": {\n return /* @__PURE__ */ jsx15(\n Explanation,\n {\n input: {\n kind: \"total-processing\",\n data: {\n time: getTotalTime(selectedEvent.timing)\n }\n }\n }\n );\n }\n case \"render\": {\n return /* @__PURE__ */ jsx15(Fragment9, { children: /* @__PURE__ */ jsx15(\n Explanation,\n {\n input: {\n kind: \"render\",\n data: {\n topByTime: selectedEvent.groupedFiberRenders.toSorted(\n (a, b) => b.totalTime - a.totalTime\n ).slice(0, 3).map((render2) => ({\n name: render2.name,\n percentage: render2.totalTime / getTotalTime(\n selectedEvent.timing\n )\n }))\n }\n }\n }\n ) });\n }\n case \"other-frame-drop\": {\n return /* @__PURE__ */ jsx15(\n Explanation,\n {\n input: {\n kind: \"other\"\n }\n }\n );\n }\n }\n }\n }\n }) }) })\n ] }, entry.kind);\n }) })\n ] });\n};\nvar getDrawInput = (event) => {\n const renderCount = event.groupedFiberRenders.reduce(\n (prev, curr) => prev + curr.count,\n 0\n );\n const renderTime = event.timing.renderTime;\n const totalTime = getTotalTime(event.timing);\n const renderPercentage = renderTime / totalTime * 100;\n if (renderCount > 100) {\n return {\n kind: \"high-render-count-update-dom-draw-frame\",\n data: {\n count: renderCount,\n percentageOfTotal: renderPercentage,\n copyButton: /* @__PURE__ */ jsx15(CopyPromptButton, {})\n }\n };\n }\n return {\n kind: \"update-dom-draw-frame\",\n data: {\n copyButton: /* @__PURE__ */ jsx15(CopyPromptButton, {})\n }\n };\n};\nvar CopyPromptButton = () => {\n const [copying, setCopying] = useState13(false);\n const { notificationState } = useNotificationsContext();\n return /* @__PURE__ */ jsxs14(\n \"button\",\n {\n onClick: async () => {\n if (!notificationState.selectedEvent) {\n return;\n }\n await navigator.clipboard.writeText(\n getLLMPrompt(\"explanation\", notificationState.selectedEvent)\n );\n setCopying(true);\n setTimeout(() => setCopying(false), 1e3);\n },\n className: \"bg-zinc-800 flex hover:bg-zinc-700 text-zinc-200 px-2 py-1 rounded gap-x-3\",\n children: [\n /* @__PURE__ */ jsx15(\"span\", { children: copying ? \"Copied!\" : \"Copy Prompt\" }),\n /* @__PURE__ */ jsx15(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: cn([\n \"transition-transform duration-200\",\n copying && \"scale-110\"\n ]),\n children: copying ? /* @__PURE__ */ jsx15(\"path\", { d: \"M20 6L9 17l-5-5\" }) : /* @__PURE__ */ jsxs14(Fragment9, { children: [\n /* @__PURE__ */ jsx15(\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\" }),\n /* @__PURE__ */ jsx15(\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" })\n ] })\n }\n )\n ]\n }\n );\n};\nvar getRenderInput = (event) => {\n if (event.timing.renderTime / getTotalTime(event.timing) > 0.3) {\n return {\n kind: \"render\",\n data: {\n topByTime: event.groupedFiberRenders.toSorted((a, b) => b.totalTime - a.totalTime).slice(0, 3).map((e) => ({\n percentage: e.totalTime / getTotalTime(event.timing),\n name: e.name\n }))\n }\n };\n }\n return {\n kind: \"other\"\n };\n};\nvar getJSInput = (event) => {\n const renderCount = event.groupedFiberRenders.reduce(\n (prev, curr) => prev + curr.count,\n 0\n );\n if (event.timing.otherJSTime / getTotalTime(event.timing) < 0.2) {\n return {\n kind: \"js-explanation-base\"\n };\n }\n if (event.groupedFiberRenders.find((render2) => render2.count > 200) || event.groupedFiberRenders.reduce((prev, curr) => prev + curr.count, 0) > 500) {\n return {\n kind: \"high-render-count-high-js\",\n data: {\n renderCount,\n topByCount: event.groupedFiberRenders.filter((groupedRender) => groupedRender.count > 100).toSorted((a, b) => b.count - a.count).slice(0, 3)\n }\n };\n }\n if (event.timing.otherJSTime / getTotalTime(event.timing) > 0.3) {\n if (event.timing.renderTime > 0.2) {\n return {\n kind: \"js-explanation-base\"\n };\n }\n return {\n kind: \"low-render-count-high-js\",\n data: {\n renderCount\n }\n };\n }\n return {\n kind: \"js-explanation-base\"\n };\n};\nvar Explanation = ({ input }) => {\n switch (input.kind) {\n case \"total-processing\": {\n return /* @__PURE__ */ jsxs14(\n \"div\",\n {\n className: cn([\n \"text-[#E4E4E7] text-[10px] leading-6 flex flex-col gap-y-2\"\n ]),\n children: [\n /* @__PURE__ */ jsxs14(\"p\", { children: [\n \"This is the time it took to draw the entire frame that was presented to the user. To be at 60FPS, this number needs to be \",\n \"<=16ms\"\n ] }),\n /* @__PURE__ */ jsx15(\"p\", { children: 'To debug the issue, check the \"Ranked\" tab to see if there are significant component renders' }),\n /* @__PURE__ */ jsx15(\"p\", { children: \"On a production React build, React Scan can't access the time it took for component to render. To get that information, run React Scan on a development build\" }),\n /* @__PURE__ */ jsxs14(\"p\", { children: [\n \"To understand precisely what caused the slowdown while in production, use the \",\n /* @__PURE__ */ jsx15(\"strong\", { children: \"Chrome profiler\" }),\n \" and analyze the function call times.\"\n ] }),\n /* @__PURE__ */ jsx15(\"p\", {})\n ]\n }\n );\n }\n case \"render\": {\n return /* @__PURE__ */ jsxs14(\n \"div\",\n {\n className: cn([\n \"text-[#E4E4E7] text-[10px] leading-6 flex flex-col gap-y-2\"\n ]),\n children: [\n /* @__PURE__ */ jsx15(\"p\", { children: \"This is the time it took React to run components, and internal logic to handle the output of your component.\" }),\n /* @__PURE__ */ jsxs14(\"div\", { className: cn([\"flex flex-col\"]), children: [\n /* @__PURE__ */ jsx15(\"p\", { children: \"The slowest components for this time period were:\" }),\n input.data.topByTime.map((item) => /* @__PURE__ */ jsxs14(\"div\", { children: [\n /* @__PURE__ */ jsx15(\"strong\", { children: item.name }),\n \":\",\n \" \",\n (item.percentage * 100).toFixed(0),\n \"% of total\"\n ] }, item.name))\n ] }),\n /* @__PURE__ */ jsx15(\"p\", { children: 'To view the render times of all your components, and what caused them to render, go to the \"Ranked\" tab' }),\n /* @__PURE__ */ jsx15(\"p\", { children: 'The \"Ranked\" tab shows the render times of every component.' }),\n /* @__PURE__ */ jsx15(\"p\", { children: \"The render times of the same components are grouped together into one bar.\" }),\n /* @__PURE__ */ jsx15(\"p\", { children: \"Clicking the component will show you what props, state, or context caused the component to re-render.\" })\n ]\n }\n );\n }\n case \"js-explanation-base\": {\n return /* @__PURE__ */ jsxs14(\n \"div\",\n {\n className: cn([\n \"text-[#E4E4E7] text-[10px] leading-6 flex flex-col gap-y-2\"\n ]),\n children: [\n /* @__PURE__ */ jsx15(\"p\", { children: \"This is the period when JavaScript hooks and other JavaScript outside of React Renders run.\" }),\n /* @__PURE__ */ jsxs14(\"p\", { children: [\n \"The most common culprit for high JS time is expensive hooks, like expensive callbacks inside of \",\n /* @__PURE__ */ jsx15(\"code\", { children: \"useEffect\" }),\n \"'s or a large number of useEffect's called, but this can also be JavaScript event handlers (\",\n /* @__PURE__ */ jsx15(\"code\", { children: \"'onclick'\" }),\n \", \",\n /* @__PURE__ */ jsx15(\"code\", { children: \"'onchange'\" }),\n \") that performed expensive computation.\"\n ] }),\n /* @__PURE__ */ jsx15(\"p\", { children: \"If you have lots of components rendering that call hooks, like useEffect, it can add significant overhead even if the callbacks are not expensive. If this is the case, you can try optimizing the renders of those components to avoid the hook from having to run.\" }),\n /* @__PURE__ */ jsxs14(\"p\", { children: [\n \"You should profile your app using the\",\n \" \",\n /* @__PURE__ */ jsx15(\"strong\", { children: \"Chrome DevTools profiler\" }),\n \" to learn exactly which functions took the longest to execute.\"\n ] })\n ]\n }\n );\n }\n case \"high-render-count-high-js\": {\n return /* @__PURE__ */ jsxs14(\n \"div\",\n {\n className: cn([\n \"text-[#E4E4E7] text-[10px] leading-6 flex flex-col gap-y-2\"\n ]),\n children: [\n /* @__PURE__ */ jsx15(\"p\", { children: \"This is the period when JavaScript hooks and other JavaScript outside of React Renders run.\" }),\n input.data.renderCount === 0 ? /* @__PURE__ */ jsxs14(Fragment9, { children: [\n /* @__PURE__ */ jsx15(\"p\", { children: \"There were no renders, which means nothing related to React caused this slowdown. The most likely cause of the slowdown is a slow JavaScript event handler, or code related to a Web API\" }),\n /* @__PURE__ */ jsxs14(\"p\", { children: [\n \"You should try to reproduce the slowdown while profiling your website with the\",\n /* @__PURE__ */ jsx15(\"strong\", { children: \"Chrome DevTools profiler\" }),\n \" to see exactly what functions took the longest to execute.\"\n ] })\n ] }) : /* @__PURE__ */ jsxs14(Fragment9, { children: [\n \" \",\n /* @__PURE__ */ jsxs14(\"p\", { children: [\n \"There were \",\n /* @__PURE__ */ jsx15(\"strong\", { children: input.data.renderCount }),\n \" renders, which could have contributed to the high JavaScript/Hook time if they ran lots of hooks, like \",\n /* @__PURE__ */ jsx15(\"code\", { children: \"useEffects\" }),\n \".\"\n ] }),\n /* @__PURE__ */ jsxs14(\"div\", { className: cn([\"flex flex-col\"]), children: [\n /* @__PURE__ */ jsx15(\"p\", { children: \"You should try optimizing the renders of:\" }),\n input.data.topByCount.map((item) => /* @__PURE__ */ jsxs14(\"div\", { children: [\n \"- \",\n /* @__PURE__ */ jsx15(\"strong\", { children: item.name }),\n \" (rendered \",\n item.count,\n \"x)\"\n ] }, item.name))\n ] }),\n \"and then checking if the problem still exists.\",\n /* @__PURE__ */ jsxs14(\"p\", { children: [\n \"You can also try profiling your app using the\",\n \" \",\n /* @__PURE__ */ jsx15(\"strong\", { children: \"Chrome DevTools profiler\" }),\n \" to see exactly what functions took the longest to execute.\"\n ] })\n ] })\n ]\n }\n );\n }\n case \"low-render-count-high-js\": {\n return /* @__PURE__ */ jsxs14(\n \"div\",\n {\n className: cn([\n \"text-[#E4E4E7] text-[10px] leading-6 flex flex-col gap-y-2\"\n ]),\n children: [\n /* @__PURE__ */ jsx15(\"p\", { children: \"This is the period when JavaScript hooks and other JavaScript outside of React Renders run.\" }),\n /* @__PURE__ */ jsxs14(\"p\", { children: [\n \"There were only \",\n /* @__PURE__ */ jsx15(\"strong\", { children: input.data.renderCount }),\n \" renders detected, which means either you had very expensive hooks like\",\n \" \",\n /* @__PURE__ */ jsx15(\"code\", { children: \"useEffect\" }),\n \"/\",\n /* @__PURE__ */ jsx15(\"code\", { children: \"useLayoutEffect\" }),\n \", or there is other JavaScript running during this interaction that took up the majority of the time.\"\n ] }),\n /* @__PURE__ */ jsxs14(\"p\", { children: [\n \"To understand precisely what caused the slowdown, use the\",\n \" \",\n /* @__PURE__ */ jsx15(\"strong\", { children: \"Chrome profiler\" }),\n \" and analyze the function call times.\"\n ] })\n ]\n }\n );\n }\n case \"high-render-count-update-dom-draw-frame\": {\n return /* @__PURE__ */ jsxs14(\n \"div\",\n {\n className: cn([\n \"text-[#E4E4E7] text-[10px] leading-6 flex flex-col gap-y-2\"\n ]),\n children: [\n /* @__PURE__ */ jsx15(\"p\", { children: \"These are the calculations the browser is forced to do in response to the JavaScript that ran during the interaction.\" }),\n /* @__PURE__ */ jsx15(\"p\", { children: \"This can be caused by CSS updates/CSS recalculations, or new DOM elements/DOM mutations.\" }),\n /* @__PURE__ */ jsxs14(\"p\", { children: [\n \"During this interaction, there were\",\n \" \",\n /* @__PURE__ */ jsx15(\"strong\", { children: input.data.count }),\n \" renders, which was\",\n \" \",\n /* @__PURE__ */ jsxs14(\"strong\", { children: [\n input.data.percentageOfTotal.toFixed(0),\n \"%\"\n ] }),\n \" of the time spent processing\"\n ] }),\n /* @__PURE__ */ jsx15(\"p\", { children: \"The work performed as a result of the renders may have forced the browser to spend a lot of time to draw the next frame.\" }),\n /* @__PURE__ */ jsx15(\"p\", { children: 'You can try optimizing the renders to see if the performance problem still exists using the \"Ranked\" tab.' }),\n /* @__PURE__ */ jsx15(\"p\", { children: \"If you use an AI-based code editor, you can export the performance data collected as a prompt.\" }),\n /* @__PURE__ */ jsx15(\"p\", { children: input.data.copyButton }),\n /* @__PURE__ */ jsx15(\"p\", { children: \"Provide this formatted data to the model and ask it to find, or fix, what could be causing this performance problem.\" }),\n /* @__PURE__ */ jsx15(\"p\", { children: 'For a larger selection of prompts, try the \"Prompts\" tab' })\n ]\n }\n );\n }\n case \"update-dom-draw-frame\": {\n return /* @__PURE__ */ jsxs14(\n \"div\",\n {\n className: cn([\n \"text-[#E4E4E7] text-[10px] leading-6 flex flex-col gap-y-2\"\n ]),\n children: [\n /* @__PURE__ */ jsx15(\"p\", { children: \"These are the calculations the browser is forced to do in response to the JavaScript that ran during the interaction.\" }),\n /* @__PURE__ */ jsx15(\"p\", { children: \"This can be caused by CSS updates/CSS recalculations, or new DOM elements/DOM mutations.\" }),\n /* @__PURE__ */ jsx15(\"p\", { children: \"If you use an AI-based code editor, you can export the performance data collected as a prompt.\" }),\n /* @__PURE__ */ jsx15(\"p\", { children: input.data.copyButton }),\n /* @__PURE__ */ jsx15(\"p\", { children: \"Provide this formatted data to the model and ask it to find, or fix, what could be causing this performance problem.\" }),\n /* @__PURE__ */ jsx15(\"p\", { children: 'For a larger selection of prompts, try the \"Prompts\" tab' })\n ]\n }\n );\n }\n case \"other\": {\n return /* @__PURE__ */ jsxs14(\n \"div\",\n {\n className: cn([\n \"text-[#E4E4E7] text-[10px] leading-6 flex flex-col gap-y-2\"\n ]),\n children: [\n /* @__PURE__ */ jsxs14(\"p\", { children: [\n \"This is the time it took to run everything other than React renders. This can be hooks like \",\n /* @__PURE__ */ jsx15(\"code\", { children: \"useEffect\" }),\n \", other JavaScript not part of React, or work the browser has to do to update the DOM and draw the next frame.\"\n ] }),\n /* @__PURE__ */ jsxs14(\"p\", { children: [\n \"To get a better picture of what happened, profile your app using the\",\n \" \",\n /* @__PURE__ */ jsx15(\"strong\", { children: \"Chrome profiler\" }),\n \" when the performance problem arises.\"\n ] })\n ]\n }\n );\n }\n }\n};\n\n// src/web/views/notifications/render-bar-chart.tsx\nimport { useRef as useRef9, useState as useState14 } from \"preact/hooks\";\n\n// src/core/notifications/outline-overlay.ts\nimport { signal as signal6 } from \"@preact/signals\";\nvar highlightCanvas = null;\nvar highlightCtx = null;\nvar animationFrame = null;\nvar HighlightStore = signal6({\n kind: \"idle\",\n current: null\n});\nvar currFrame = null;\nvar drawHighlights = () => {\n if (currFrame) {\n cancelAnimationFrame(currFrame);\n }\n currFrame = requestAnimationFrame(() => {\n if (!highlightCanvas || !highlightCtx) {\n return;\n }\n highlightCtx.clearRect(0, 0, highlightCanvas.width, highlightCanvas.height);\n const color = \"hsl(271, 76%, 53%)\";\n const state = HighlightStore.value;\n const { alpha, current } = iife(() => {\n switch (state.kind) {\n case \"transition\": {\n const current2 = state.current?.alpha && state.current.alpha > 0 ? state.current : state.transitionTo;\n return {\n alpha: current2 ? current2.alpha : 0,\n current: current2\n };\n }\n case \"move-out\": {\n return { alpha: state.current?.alpha ?? 0, current: state.current };\n }\n case \"idle\": {\n return { alpha: 1, current: state.current };\n }\n }\n state;\n });\n current?.rects.forEach((rect) => {\n if (!highlightCtx) {\n return;\n }\n highlightCtx.shadowColor = color;\n highlightCtx.shadowBlur = 6;\n highlightCtx.strokeStyle = color;\n highlightCtx.lineWidth = 2;\n highlightCtx.globalAlpha = alpha;\n highlightCtx.beginPath();\n highlightCtx.rect(rect.left, rect.top, rect.width, rect.height);\n highlightCtx.stroke();\n highlightCtx.shadowBlur = 0;\n highlightCtx.beginPath();\n highlightCtx.rect(rect.left, rect.top, rect.width, rect.height);\n highlightCtx.stroke();\n });\n switch (state.kind) {\n case \"move-out\": {\n if (state.current.alpha === 0) {\n HighlightStore.value = {\n kind: \"idle\",\n current: null\n };\n return;\n }\n if (state.current.alpha <= 0.01) {\n state.current.alpha = 0;\n }\n state.current.alpha = Math.max(0, state.current.alpha - 0.03);\n drawHighlights();\n return;\n }\n case \"transition\": {\n if (state.current && state.current.alpha > 0) {\n state.current.alpha = Math.max(0, state.current.alpha - 0.03);\n drawHighlights();\n return;\n }\n if (state.transitionTo.alpha === 1) {\n HighlightStore.value = {\n kind: \"idle\",\n current: state.transitionTo\n };\n return;\n }\n state.transitionTo.alpha = Math.min(state.transitionTo.alpha + 0.03, 1);\n drawHighlights();\n }\n case \"idle\": {\n return;\n }\n }\n });\n};\nvar handleResizeListener = null;\nvar createHighlightCanvas = (root) => {\n highlightCanvas = document.createElement(\"canvas\");\n highlightCtx = highlightCanvas.getContext(\"2d\", { alpha: true });\n if (!highlightCtx) return null;\n const dpr2 = window.devicePixelRatio || 1;\n const { innerWidth, innerHeight } = window;\n highlightCanvas.style.width = `${innerWidth}px`;\n highlightCanvas.style.height = `${innerHeight}px`;\n highlightCanvas.width = innerWidth * dpr2;\n highlightCanvas.height = innerHeight * dpr2;\n highlightCanvas.style.position = \"fixed\";\n highlightCanvas.style.left = \"0\";\n highlightCanvas.style.top = \"0\";\n highlightCanvas.style.pointerEvents = \"none\";\n highlightCanvas.style.zIndex = \"2147483600\";\n highlightCtx.scale(dpr2, dpr2);\n root.appendChild(highlightCanvas);\n if (handleResizeListener) {\n window.removeEventListener(\"resize\", handleResizeListener);\n }\n const handleResize = () => {\n if (!highlightCanvas || !highlightCtx) return;\n const dpr3 = window.devicePixelRatio || 1;\n const { innerWidth: innerWidth2, innerHeight: innerHeight2 } = window;\n highlightCanvas.style.width = `${innerWidth2}px`;\n highlightCanvas.style.height = `${innerHeight2}px`;\n highlightCanvas.width = innerWidth2 * dpr3;\n highlightCanvas.height = innerHeight2 * dpr3;\n highlightCtx.scale(dpr3, dpr3);\n drawHighlights();\n };\n handleResizeListener = handleResize;\n window.addEventListener(\"resize\", handleResize);\n HighlightStore.subscribe(() => {\n requestAnimationFrame(() => {\n drawHighlights();\n });\n });\n return cleanup2;\n};\nfunction cleanup2() {\n if (animationFrame) {\n cancelAnimationFrame(animationFrame);\n animationFrame = null;\n }\n if (highlightCanvas?.parentNode) {\n highlightCanvas.parentNode.removeChild(highlightCanvas);\n }\n highlightCanvas = null;\n highlightCtx = null;\n}\n\n// src/web/views/notifications/render-bar-chart.tsx\nimport { jsx as jsx16, jsxs as jsxs15 } from \"preact/jsx-runtime\";\nvar fadeOutHighlights = () => {\n const curr = HighlightStore.value.current ? HighlightStore.value.current : HighlightStore.value.kind === \"transition\" ? HighlightStore.value.transitionTo : null;\n if (!curr) {\n return;\n }\n if (HighlightStore.value.kind === \"transition\") {\n HighlightStore.value = {\n kind: \"move-out\",\n // because we want to dynamically fade this value\n current: HighlightStore.value.current?.alpha === 0 ? (\n // we want to only start fading from transition if current is done animating out\n HighlightStore.value.transitionTo\n ) : (\n // if current doesn't exist then transition must exist\n HighlightStore.value.current ?? HighlightStore.value.transitionTo\n )\n };\n return;\n }\n HighlightStore.value = {\n kind: \"move-out\",\n current: {\n alpha: 0,\n ...curr\n }\n };\n};\nvar RenderBarChart = ({\n selectedEvent\n}) => {\n const totalInteractionTime = getTotalTime(selectedEvent.timing);\n const nonRender = totalInteractionTime - selectedEvent.timing.renderTime;\n const [isProduction2] = useState14(getIsProduction());\n const events = selectedEvent.groupedFiberRenders;\n const bars = events.map((event) => ({\n event,\n kind: \"render\",\n totalTime: isProduction2 ? event.count : event.totalTime\n }));\n const isShowingExtraInfo = iife(() => {\n switch (selectedEvent.kind) {\n case \"dropped-frames\": {\n return selectedEvent.timing.renderTime / totalInteractionTime < 0.1;\n }\n case \"interaction\": {\n return (selectedEvent.timing.otherJSTime + selectedEvent.timing.renderTime) / totalInteractionTime < 0.2;\n }\n }\n });\n if (selectedEvent.kind === \"interaction\" && !isProduction2) {\n bars.push({\n kind: \"other-javascript\",\n totalTime: selectedEvent.timing.otherJSTime\n });\n }\n if (isShowingExtraInfo && !isProduction2) {\n if (selectedEvent.kind === \"interaction\") {\n bars.push({\n kind: \"other-not-javascript\",\n totalTime: getTotalTime(selectedEvent.timing) - selectedEvent.timing.renderTime - selectedEvent.timing.otherJSTime\n });\n } else {\n bars.push({\n kind: \"other-frame-drop\",\n totalTime: nonRender\n });\n }\n }\n const debouncedMouseEnter = useRef9({\n lastCallAt: null,\n timer: null\n });\n const totalBarTime = bars.reduce((prev, curr) => prev + curr.totalTime, 0);\n return /* @__PURE__ */ jsxs15(\"div\", { className: cn([\"flex flex-col h-full w-full gap-y-1\"]), children: [\n iife(() => {\n if (isProduction2 && bars.length === 0) {\n return /* @__PURE__ */ jsxs15(\"div\", { className: \"flex flex-col items-center justify-center h-full text-zinc-400\", children: [\n /* @__PURE__ */ jsx16(\"p\", { className: \"text-sm w-full text-left text-white mb-1.5\", children: \"No data available\" }),\n /* @__PURE__ */ jsx16(\"p\", { className: \"text-x w-full text-lefts\", children: \"No data was collected during this period\" })\n ] });\n }\n if (bars.length === 0) {\n return /* @__PURE__ */ jsxs15(\"div\", { className: \"flex flex-col items-center justify-center h-full text-zinc-400\", children: [\n /* @__PURE__ */ jsx16(\"p\", { className: \"text-sm w-full text-left text-white mb-1.5\", children: \"No renders collected\" }),\n /* @__PURE__ */ jsx16(\"p\", { className: \"text-x w-full text-lefts\", children: \"There were no renders during this period\" })\n ] });\n }\n }),\n bars.toSorted((a, b) => b.totalTime - a.totalTime).map((bar) => /* @__PURE__ */ jsx16(\n RenderBar,\n {\n bars,\n bar,\n debouncedMouseEnter,\n totalBarTime,\n isProduction: isProduction2\n },\n bar.kind === \"render\" ? bar.event.id : bar.kind\n ))\n ] });\n};\nvar getTransitionState = (state) => {\n if (!state.current) {\n return \"fading-in\";\n }\n if (state.current.alpha > 0) {\n return \"fading-out\";\n }\n return \"fading-in\";\n};\nvar RenderBar = ({\n bar,\n debouncedMouseEnter,\n totalBarTime,\n isProduction: isProduction2,\n bars,\n depth = 0\n}) => {\n const { setNotificationState, setRoute } = useNotificationsContext();\n const [isExpanded, setIsExpanded] = useState14(false);\n const isLeaf = bar.kind === \"render\" ? bar.event.parents.size === 0 : true;\n const parentBars = bars.filter(\n (otherBar) => otherBar.kind === \"render\" && bar.kind === \"render\" ? bar.event.parents.has(otherBar.event.name) && otherBar.event.name !== bar.event.name : false\n );\n const missingParentNames = bar.kind === \"render\" ? Array.from(bar.event.parents).filter(\n (parentName) => !bars.some(\n (b) => b.kind === \"render\" && b.event.name === parentName\n )\n ) : [];\n const handleBarClick = () => {\n if (bar.kind === \"render\") {\n setNotificationState((prev) => ({\n ...prev,\n selectedFiber: bar.event\n }));\n setRoute({\n route: \"render-explanation\",\n routeMessage: null\n });\n } else {\n setRoute({\n route: \"other-visualization\",\n routeMessage: {\n kind: \"auto-open-overview-accordion\",\n name: bar.kind\n }\n });\n }\n };\n return /* @__PURE__ */ jsxs15(\"div\", { className: \"w-full\", children: [\n /* @__PURE__ */ jsxs15(\n \"div\",\n {\n className: cn([\"w-full flex items-center relative text-xs min-w-0\"]),\n children: [\n /* @__PURE__ */ jsxs15(\n \"button\",\n {\n onMouseLeave: () => {\n debouncedMouseEnter.current.timer && clearTimeout(debouncedMouseEnter.current.timer);\n fadeOutHighlights();\n },\n onMouseEnter: async () => {\n const highlightBars = async () => {\n debouncedMouseEnter.current.lastCallAt = Date.now();\n if (bar.kind !== \"render\") {\n const curr = HighlightStore.value.current ? HighlightStore.value.current : HighlightStore.value.kind === \"transition\" ? HighlightStore.value.transitionTo : null;\n if (!curr) {\n HighlightStore.value = {\n kind: \"idle\",\n current: null\n };\n return;\n }\n HighlightStore.value = {\n kind: \"move-out\",\n current: {\n alpha: 0,\n ...curr\n }\n };\n return;\n }\n const state = HighlightStore.value;\n const currentState = iife(() => {\n switch (state.kind) {\n case \"transition\": {\n return state.transitionTo;\n }\n case \"idle\":\n case \"move-out\": {\n return state.current;\n }\n }\n });\n const stateRects = [];\n if (state.kind === \"transition\") {\n const transitionState = getTransitionState(state);\n iife(() => {\n switch (transitionState) {\n case \"fading-in\": {\n HighlightStore.value = {\n kind: \"transition\",\n current: state.transitionTo,\n transitionTo: {\n rects: stateRects,\n alpha: 0,\n name: bar.event.name\n }\n };\n return;\n }\n case \"fading-out\": {\n HighlightStore.value = {\n kind: \"transition\",\n current: HighlightStore.value.current ? {\n alpha: 0,\n ...HighlightStore.value.current\n } : null,\n transitionTo: {\n rects: stateRects,\n alpha: 0,\n name: bar.event.name\n }\n };\n return;\n }\n }\n });\n } else {\n HighlightStore.value = {\n kind: \"transition\",\n transitionTo: {\n rects: stateRects,\n alpha: 0,\n name: bar.event.name\n },\n current: currentState ? {\n alpha: 0,\n ...currentState\n } : null\n };\n }\n const trueElements = bar.event.elements.filter(\n (element) => element instanceof Element\n );\n for await (const entries of getBatchedRectMap(trueElements)) {\n entries.forEach(({ boundingClientRect }) => {\n stateRects.push(boundingClientRect);\n });\n drawHighlights();\n }\n };\n if (debouncedMouseEnter.current.lastCallAt && Date.now() - debouncedMouseEnter.current.lastCallAt < 200) {\n debouncedMouseEnter.current.timer && clearTimeout(debouncedMouseEnter.current.timer);\n debouncedMouseEnter.current.timer = setTimeout(() => {\n highlightBars();\n }, 200);\n return;\n }\n highlightBars();\n },\n onClick: handleBarClick,\n className: cn([\n \"h-full w-[90%] flex items-center hover:bg-[#0f0f0f] rounded-l-md min-w-0 relative\"\n ]),\n children: [\n /* @__PURE__ */ jsx16(\n \"div\",\n {\n style: {\n minWidth: \"fit-content\",\n width: `${bar.totalTime / totalBarTime * 100}%`\n },\n className: cn([\n \"flex items-center rounded-sm text-white text-xs h-[28px] shrink-0\",\n bar.kind === \"render\" && \"bg-[#412162] group-hover:bg-[#5b2d89]\",\n bar.kind === \"other-frame-drop\" && \"bg-[#44444a] group-hover:bg-[#6a6a6a]\",\n bar.kind === \"other-javascript\" && \"bg-[#efd81a6b] group-hover:bg-[#efda1a2f]\",\n bar.kind === \"other-not-javascript\" && \"bg-[#214379d4] group-hover:bg-[#21437982]\"\n ])\n }\n ),\n /* @__PURE__ */ jsx16(\n \"div\",\n {\n className: cn([\n \"absolute inset-0 flex items-center px-2\",\n \"min-w-0\"\n ]),\n children: /* @__PURE__ */ jsxs15(\"div\", { className: \"flex items-center gap-x-2 min-w-0 w-full\", children: [\n /* @__PURE__ */ jsx16(\"span\", { className: cn([\"truncate\"]), children: iife(() => {\n switch (bar.kind) {\n case \"other-frame-drop\": {\n return \"JavaScript, DOM updates, Draw Frame\";\n }\n case \"other-javascript\": {\n return \"JavaScript/React Hooks\";\n }\n case \"other-not-javascript\": {\n return \"Update DOM and Draw New Frame\";\n }\n case \"render\": {\n return bar.event.name;\n }\n }\n }) }),\n bar.kind === \"render\" && isRenderMemoizable(bar.event) && /* @__PURE__ */ jsx16(\n \"div\",\n {\n style: {\n lineHeight: \"10px\"\n },\n className: cn([\n \"px-1 py-0.5 bg-[#6a369e] flex items-center rounded-sm font-semibold text-[8px] shrink-0\"\n ]),\n children: \"Memoizable\"\n }\n )\n ] })\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs15(\n \"button\",\n {\n onClick: () => bar.kind === \"render\" && !isLeaf && setIsExpanded(!isExpanded),\n className: cn([\n \"flex items-center min-w-fit shrink-0 rounded-r-md h-[28px]\",\n !isLeaf && \"hover:bg-[#0f0f0f]\",\n bar.kind === \"render\" && !isLeaf ? \"cursor-pointer\" : \"cursor-default\"\n ]),\n children: [\n /* @__PURE__ */ jsx16(\"div\", { className: \"w-[20px] flex items-center justify-center\", children: bar.kind === \"render\" && !isLeaf && /* @__PURE__ */ jsx16(\n ChevronRight,\n {\n className: cn(\n \"transition-transform\",\n isExpanded && \"rotate-90\"\n ),\n size: 16\n }\n ) }),\n /* @__PURE__ */ jsxs15(\n \"div\",\n {\n style: {\n minWidth: isLeaf ? \"fit-content\" : isProduction2 ? \"30px\" : \"60px\"\n },\n className: \"flex items-center justify-end gap-x-1\",\n children: [\n bar.kind === \"render\" && /* @__PURE__ */ jsxs15(\"span\", { className: cn([\"text-[10px]\"]), children: [\n \"x\",\n bar.event.count\n ] }),\n (bar.kind !== \"render\" || !isProduction2) && /* @__PURE__ */ jsxs15(\"span\", { className: \"text-[10px] text-[#7346a0] pr-1\", children: [\n bar.totalTime < 1 ? \"<1\" : bar.totalTime.toFixed(0),\n \"ms\"\n ] })\n ]\n }\n )\n ]\n }\n ),\n depth === 0 && /* @__PURE__ */ jsx16(\n \"div\",\n {\n className: cn([\n \"absolute right-0 top-1/2 transition-none -translate-y-1/2 bg-white text-black px-2 py-1 rounded text-xs opacity-0 group-hover:opacity-100 transition-opacity mr-16\",\n \"pointer-events-none\"\n ]),\n children: \"Click to learn more\"\n }\n )\n ]\n }\n ),\n isExpanded && (parentBars.length > 0 || missingParentNames.length > 0) && /* @__PURE__ */ jsxs15(\"div\", { className: \"pl-3 flex flex-col gap-y-1 mt-1\", children: [\n parentBars.toSorted((a, b) => b.totalTime - a.totalTime).map((parentBar, i) => /* @__PURE__ */ jsx16(\n RenderBar,\n {\n depth: depth + 1,\n bar: parentBar,\n debouncedMouseEnter,\n totalBarTime,\n isProduction: isProduction2,\n bars\n },\n i\n )),\n missingParentNames.map((parentName) => /* @__PURE__ */ jsx16(\"div\", { className: \"w-full\", children: /* @__PURE__ */ jsx16(\"div\", { className: \"w-full flex items-center relative text-xs\", children: /* @__PURE__ */ jsxs15(\"div\", { className: \"h-full w-full flex items-center relative\", children: [\n /* @__PURE__ */ jsx16(\"div\", { className: \"flex items-center rounded-sm text-white text-xs h-[28px] w-full\" }),\n /* @__PURE__ */ jsx16(\"div\", { className: \"absolute inset-0 flex items-center px-2\", children: /* @__PURE__ */ jsx16(\"span\", { className: \"truncate whitespace-nowrap text-white/70 w-full\", children: parentName }) })\n ] }) }) }, parentName))\n ] })\n ] });\n};\n\n// src/web/views/notifications/render-explanation.tsx\nimport { useLayoutEffect, useState as useState15 } from \"preact/hooks\";\nimport { Fragment as Fragment10, jsx as jsx17, jsxs as jsxs16 } from \"preact/jsx-runtime\";\nvar RenderExplanation = ({\n selectedEvent: _,\n selectedFiber\n}) => {\n const { setRoute } = useNotificationsContext();\n const [tipisShown, setTipIsShown] = useState15(true);\n const [isProduction2] = useState15(getIsProduction());\n useLayoutEffect(() => {\n const res = localStorage.getItem(\"react-scan-tip-shown\");\n const asBool = res === \"true\" ? true : res === \"false\" ? false : null;\n if (asBool === null) {\n setTipIsShown(true);\n localStorage.setItem(\"react-scan-tip-is-shown\", \"true\");\n return;\n }\n if (!asBool) {\n setTipIsShown(false);\n }\n }, []);\n const isMemoizable = selectedFiber.changes.context.length === 0 && selectedFiber.changes.props.length === 0 && selectedFiber.changes.state.length === 0;\n return /* @__PURE__ */ jsxs16(\n \"div\",\n {\n className: cn([\n \"w-full min-h-fit h-full flex flex-col py-4 pt-0 rounded-sm\"\n ]),\n children: [\n /* @__PURE__ */ jsxs16(\"div\", { className: cn([\"flex items-start gap-x-4 \"]), children: [\n /* @__PURE__ */ jsxs16(\n \"button\",\n {\n onClick: () => {\n setRoute({\n route: \"render-visualization\",\n routeMessage: null\n });\n },\n className: cn([\n \"text-white hover:bg-[#34343b] flex gap-x-1 justify-center items-center mb-4 w-fit px-2.5 py-1.5 text-xs rounded-sm bg-[#18181B]\"\n ]),\n children: [\n /* @__PURE__ */ jsx17(ArrowLeft, { size: 14 }),\n \" \",\n /* @__PURE__ */ jsx17(\"span\", { children: \"Overview\" })\n ]\n }\n ),\n /* @__PURE__ */ jsxs16(\"div\", { className: cn([\"flex flex-col gap-y-1\"]), children: [\n /* @__PURE__ */ jsx17(\n \"div\",\n {\n className: cn([\"text-sm font-bold text-white overflow-x-hidden\"]),\n children: /* @__PURE__ */ jsx17(\"div\", { className: \"flex items-center gap-x-2 truncate\", children: selectedFiber.name })\n }\n ),\n /* @__PURE__ */ jsxs16(\"div\", { className: cn([\"flex gap-x-2\"]), children: [\n !isProduction2 && /* @__PURE__ */ jsx17(Fragment10, { children: /* @__PURE__ */ jsxs16(\"div\", { className: cn([\"text-xs text-gray-400\"]), children: [\n \"\\u2022 Render time: \",\n selectedFiber.totalTime.toFixed(0),\n \"ms\"\n ] }) }),\n /* @__PURE__ */ jsxs16(\"div\", { className: cn([\"text-xs text-gray-400 mb-4\"]), children: [\n \"\\u2022 Renders: \",\n selectedFiber.count,\n \"x\"\n ] })\n ] })\n ] })\n ] }),\n tipisShown && !isMemoizable && /* @__PURE__ */ jsxs16(\n \"div\",\n {\n className: cn([\n \"w-full mb-4 bg-[#0A0A0A] border border-[#27272A] rounded-sm overflow-hidden flex relative\"\n ]),\n children: [\n /* @__PURE__ */ jsx17(\n \"button\",\n {\n onClick: () => {\n setTipIsShown(false);\n localStorage.setItem(\"react-scan-tip-shown\", \"false\");\n },\n className: cn([\n \"absolute right-2 top-2 rounded-sm p-1 hover:bg-[#18181B]\"\n ]),\n children: /* @__PURE__ */ jsx17(CloseIcon, { size: 12 })\n }\n ),\n /* @__PURE__ */ jsx17(\"div\", { className: cn([\"w-1 bg-[#d36cff]\"]) }),\n /* @__PURE__ */ jsxs16(\"div\", { className: cn([\"flex-1\"]), children: [\n /* @__PURE__ */ jsx17(\n \"div\",\n {\n className: cn([\"px-3 py-2 text-gray-100 text-xs font-semibold\"]),\n children: \"How to stop renders\"\n }\n ),\n /* @__PURE__ */ jsx17(\"div\", { className: cn([\"px-3 pb-2 text-gray-400 text-[10px]\"]), children: \"Stop the following props, state and context from changing between renders, and wrap the component in React.memo if not already\" })\n ] })\n ]\n }\n ),\n isMemoizable && /* @__PURE__ */ jsxs16(\n \"div\",\n {\n className: cn([\n \"w-full mb-4 bg-[#0A0A0A] border border-[#27272A] rounded-sm overflow-hidden flex\"\n ]),\n children: [\n /* @__PURE__ */ jsx17(\"div\", { className: cn([\"w-1 bg-[#d36cff]\"]) }),\n /* @__PURE__ */ jsxs16(\"div\", { className: cn([\"flex-1\"]), children: [\n /* @__PURE__ */ jsx17(\n \"div\",\n {\n className: cn([\"px-3 py-2 text-gray-100 text-sm font-semibold\"]),\n children: \"No changes detected\"\n }\n ),\n /* @__PURE__ */ jsx17(\"div\", { className: cn([\"px-3 pb-2 text-gray-400 text-xs\"]), children: \"This component would not of rendered if it was memoized\" })\n ] })\n ]\n }\n ),\n /* @__PURE__ */ jsxs16(\"div\", { className: cn([\"flex w-full\"]), children: [\n /* @__PURE__ */ jsxs16(\n \"div\",\n {\n className: cn([\n \"flex flex-col border border-[#27272A] rounded-l-sm overflow-hidden w-1/3\"\n ]),\n children: [\n /* @__PURE__ */ jsx17(\n \"div\",\n {\n className: cn([\n \"text-[14px] font-semibold px-2 py-2 bg-[#18181B] text-white flex justify-center\"\n ]),\n children: \"Changed Props\"\n }\n ),\n selectedFiber.changes.props.length > 0 ? selectedFiber.changes.props.toSorted((a, b) => b.count - a.count).map((change) => /* @__PURE__ */ jsxs16(\n \"div\",\n {\n className: cn([\n \"flex flex-col justify-between items-center border-t overflow-x-auto border-[#27272A] px-1 py-1 text-wrap bg-[#0A0A0A] text-[10px]\"\n ]),\n children: [\n /* @__PURE__ */ jsx17(\"span\", { className: cn([\"text-white \"]), children: change.name }),\n /* @__PURE__ */ jsxs16(\n \"div\",\n {\n className: cn([\" text-[8px] text-[#d36cff] pl-1 py-1 \"]),\n children: [\n change.count,\n \"/\",\n selectedFiber.count,\n \"x\"\n ]\n }\n )\n ]\n },\n change.name\n )) : /* @__PURE__ */ jsx17(\n \"div\",\n {\n className: cn([\n \"flex items-center justify-center h-full bg-[#0A0A0A] text-[#A1A1AA] border-t border-[#27272A]\"\n ]),\n children: \"No changes\"\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs16(\n \"div\",\n {\n className: cn([\n \"flex flex-col border border-[#27272A] border-l-0 overflow-hidden w-1/3\"\n ]),\n children: [\n /* @__PURE__ */ jsx17(\n \"div\",\n {\n className: cn([\n \" text-[14px] font-semibold px-2 py-2 bg-[#18181B] text-white flex justify-center\"\n ]),\n children: \"Changed State\"\n }\n ),\n selectedFiber.changes.state.length > 0 ? selectedFiber.changes.state.toSorted((a, b) => b.count - a.count).map((change) => /* @__PURE__ */ jsxs16(\n \"div\",\n {\n className: cn([\n \"flex flex-col justify-between items-center border-t overflow-x-auto border-[#27272A] px-1 py-1 text-wrap bg-[#0A0A0A] text-[10px]\"\n ]),\n children: [\n /* @__PURE__ */ jsxs16(\"span\", { className: cn([\"text-white \"]), children: [\n \"index \",\n change.index\n ] }),\n /* @__PURE__ */ jsxs16(\n \"div\",\n {\n className: cn([\n \"rounded-full text-[#d36cff] pl-1 py-1 text-[8px]\"\n ]),\n children: [\n change.count,\n \"/\",\n selectedFiber.count,\n \"x\"\n ]\n }\n )\n ]\n },\n change.index\n )) : /* @__PURE__ */ jsx17(\n \"div\",\n {\n className: cn([\n \"flex items-center justify-center h-full bg-[#0A0A0A] text-[#A1A1AA] border-t border-[#27272A]\"\n ]),\n children: \"No changes\"\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs16(\n \"div\",\n {\n className: cn([\n \"flex flex-col border border-[#27272A] border-l-0 rounded-r-sm overflow-hidden w-1/3\"\n ]),\n children: [\n /* @__PURE__ */ jsx17(\n \"div\",\n {\n className: cn([\n \" text-[14px] font-semibold px-2 py-2 bg-[#18181B] text-white flex justify-center\"\n ]),\n children: \"Changed Context\"\n }\n ),\n selectedFiber.changes.context.length > 0 ? selectedFiber.changes.context.toSorted((a, b) => b.count - a.count).map((change) => /* @__PURE__ */ jsxs16(\n \"div\",\n {\n className: cn([\n \"flex flex-col justify-between items-center border-t border-[#27272A] px-1 py-1 bg-[#0A0A0A] text-[10px] overflow-x-auto\"\n ]),\n children: [\n /* @__PURE__ */ jsx17(\"span\", { className: cn([\"text-white \"]), children: change.name }),\n /* @__PURE__ */ jsxs16(\n \"div\",\n {\n className: cn([\n \"rounded-full text-[#d36cff] pl-1 py-1 text-[8px] text-wrap\"\n ]),\n children: [\n change.count,\n \"/\",\n selectedFiber.count,\n \"x\"\n ]\n }\n )\n ]\n },\n change.name\n )) : /* @__PURE__ */ jsx17(\n \"div\",\n {\n className: cn([\n \"flex items-center justify-center h-full bg-[#0A0A0A] text-[#A1A1AA] border-t border-[#27272A] py-2\"\n ]),\n children: \"No changes\"\n }\n )\n ]\n }\n )\n ] })\n ]\n }\n );\n};\n\n// src/web/views/notifications/details-routes.tsx\nimport { Fragment as Fragment11, jsx as jsx18, jsxs as jsxs17 } from \"preact/jsx-runtime\";\nvar DetailsRoutes = () => {\n const { notificationState, setNotificationState } = useNotificationsContext();\n const [dots, setDots] = useState16(\"...\");\n const containerRef = useRef10(null);\n useEffect12(() => {\n const interval = setInterval(() => {\n setDots((prev) => {\n if (prev === \"...\") return \"\";\n return prev + \".\";\n });\n }, 500);\n return () => clearInterval(interval);\n }, []);\n if (!notificationState.selectedEvent) {\n return /* @__PURE__ */ jsxs17(\n \"div\",\n {\n ref: containerRef,\n className: cn([\n \"h-full w-full flex flex-col items-center justify-center relative py-2 px-4\"\n ]),\n children: [\n /* @__PURE__ */ jsx18(\n \"div\",\n {\n className: cn([\n \"p-2 flex justify-center items-center border-[#27272A] absolute top-0 right-0\"\n ]),\n children: /* @__PURE__ */ jsx18(\n \"button\",\n {\n onClick: () => {\n signalWidgetViews.value = {\n view: \"none\"\n };\n },\n children: /* @__PURE__ */ jsx18(CloseIcon, { size: 18, className: \"text-[#6F6F78]\" })\n }\n )\n }\n ),\n /* @__PURE__ */ jsx18(\n \"div\",\n {\n className: cn([\n \"flex flex-col items-start pt-5 bg-[#0A0A0A] p-5 rounded-sm max-w-md\",\n \" shadow-lg\"\n ]),\n children: /* @__PURE__ */ jsxs17(\"div\", { className: cn([\"flex flex-col items-start gap-y-4\"]), children: [\n /* @__PURE__ */ jsx18(\"div\", { className: cn([\"flex items-center\"]), children: /* @__PURE__ */ jsxs17(\"span\", { className: cn([\"text-zinc-400 font-medium text-[17px]\"]), children: [\n \"Scanning for slowdowns\",\n dots\n ] }) }),\n notificationState.events.length !== 0 && /* @__PURE__ */ jsxs17(\"p\", { className: cn([\"text-xs\"]), children: [\n \"Click on an item in the\",\n \" \",\n /* @__PURE__ */ jsx18(\"span\", { className: cn([\"text-purple-400\"]), children: \"History\" }),\n \" list to get started\"\n ] }),\n /* @__PURE__ */ jsx18(\"p\", { className: cn([\"text-zinc-600 text-xs\"]), children: \"You don't need to keep this panel open for React Scan to record slowdowns\" }),\n /* @__PURE__ */ jsx18(\"p\", { className: cn([\"text-zinc-600 text-xs\"]), children: \"Enable audio alerts to hear a delightful ding every time a large slowdown is recorded\" }),\n /* @__PURE__ */ jsx18(\n \"button\",\n {\n onClick: () => {\n if (notificationState.audioNotificationsOptions.enabled) {\n setNotificationState((prev) => {\n if (prev.audioNotificationsOptions.audioContext?.state !== \"closed\") {\n prev.audioNotificationsOptions.audioContext?.close();\n }\n localStorage.setItem(\"react-scan-notifications-audio\", \"false\");\n return {\n ...prev,\n audioNotificationsOptions: {\n audioContext: null,\n enabled: false\n }\n };\n });\n return;\n }\n localStorage.setItem(\"react-scan-notifications-audio\", \"true\");\n const audioContext = new AudioContext();\n playNotificationSound(audioContext);\n setNotificationState((prev) => ({\n ...prev,\n audioNotificationsOptions: {\n enabled: true,\n audioContext\n }\n }));\n },\n className: cn([\n \"px-4 py-2 bg-zinc-800 hover:bg-zinc-700 rounded-sm w-full\",\n \" text-sm flex items-center gap-x-2 justify-center\"\n ]),\n children: notificationState.audioNotificationsOptions.enabled ? /* @__PURE__ */ jsx18(Fragment11, { children: /* @__PURE__ */ jsx18(\"span\", { className: \"flex items-center gap-x-1\", children: \"Disable audio alerts\" }) }) : /* @__PURE__ */ jsx18(Fragment11, { children: /* @__PURE__ */ jsx18(\"span\", { className: \"flex items-center gap-x-1\", children: \"Enable audio alerts\" }) })\n }\n )\n ] })\n }\n )\n ]\n }\n );\n }\n switch (notificationState.route) {\n case \"render-visualization\": {\n return /* @__PURE__ */ jsx18(TabLayout, { children: /* @__PURE__ */ jsx18(RenderBarChart, { selectedEvent: notificationState.selectedEvent }) });\n }\n case \"render-explanation\": {\n if (!notificationState.selectedFiber) {\n throw new Error(\n \"Invariant: must have selected fiber when viewing render explanation\"\n );\n }\n return /* @__PURE__ */ jsx18(TabLayout, { children: /* @__PURE__ */ jsx18(\n RenderExplanation,\n {\n selectedFiber: notificationState.selectedFiber,\n selectedEvent: notificationState.selectedEvent\n }\n ) });\n }\n case \"other-visualization\": {\n return /* @__PURE__ */ jsx18(TabLayout, { children: /* @__PURE__ */ jsx18(\n \"div\",\n {\n className: cn([\"flex w-full h-full flex-col overflow-y-auto\"]),\n id: \"overview-scroll-container\",\n children: /* @__PURE__ */ jsx18(\n OtherVisualization,\n {\n selectedEvent: notificationState.selectedEvent\n }\n )\n }\n ) });\n }\n case \"optimize\": {\n return /* @__PURE__ */ jsx18(TabLayout, { children: /* @__PURE__ */ jsx18(Optimize, { selectedEvent: notificationState.selectedEvent }) });\n }\n }\n notificationState.route;\n};\nvar TabLayout = ({ children }) => {\n const { notificationState } = useNotificationsContext();\n if (!notificationState.selectedEvent) {\n throw new Error(\n \"Invariant: d must have selected event when viewing render explanation\"\n );\n }\n return /* @__PURE__ */ jsxs17(\"div\", { className: cn([`w-full h-full flex flex-col gap-y-2`]), children: [\n /* @__PURE__ */ jsx18(\"div\", { className: cn([\"h-[50px] w-full\"]), children: /* @__PURE__ */ jsx18(NotificationTabs, { selectedEvent: notificationState.selectedEvent }) }),\n /* @__PURE__ */ jsx18(\n \"div\",\n {\n className: cn([\"h-calc(100%-50px) flex flex-col overflow-y-auto px-3\"]),\n children\n }\n )\n ] });\n};\n\n// src/web/views/notifications/notification-header.tsx\nimport { jsx as jsx19, jsxs as jsxs18 } from \"preact/jsx-runtime\";\nvar NotificationHeader = ({\n selectedEvent\n}) => {\n const severity = getEventSeverity(selectedEvent);\n switch (selectedEvent.kind) {\n case \"interaction\": {\n return (\n // h-[48px] is a hack to adjust for header size\n /* @__PURE__ */ jsx19(\n \"div\",\n {\n className: cn([`w-full flex border-b border-[#27272A] min-h-[48px]`]),\n children: /* @__PURE__ */ jsxs18(\n \"div\",\n {\n className: cn([\n \"min-w-fit w-full justify-start flex items-center border-r border-[#27272A] pl-5 pr-2 text-sm gap-x-4\"\n ]),\n children: [\n /* @__PURE__ */ jsxs18(\"div\", { className: cn([\"flex items-center gap-x-2 \"]), children: [\n /* @__PURE__ */ jsx19(\"span\", { className: cn([\"text-[#5a5a5a] mr-0.5\"]), children: selectedEvent.type === \"click\" ? \"Clicked \" : \"Typed in \" }),\n /* @__PURE__ */ jsx19(\"span\", { children: getComponentName(selectedEvent.componentPath) }),\n /* @__PURE__ */ jsxs18(\n \"div\",\n {\n className: cn([\n \"w-fit flex items-center justify-center h-fit text-white px-1 rounded-sm font-semibold text-[10px] whitespace-nowrap\",\n severity === \"low\" && \"bg-green-500/50\",\n severity === \"needs-improvement\" && \"bg-[#b77116]\",\n severity === \"high\" && \"bg-[#b94040]\"\n ]),\n children: [\n getTotalTime(selectedEvent.timing).toFixed(0),\n \"ms processing time\"\n ]\n }\n )\n ] }),\n /* @__PURE__ */ jsx19(\n \"div\",\n {\n className: cn([\"flex items-center gap-x-2 justify-end ml-auto\"]),\n children: /* @__PURE__ */ jsx19(\n \"div\",\n {\n className: cn([\n \"p-2 flex justify-center items-center border-[#27272A]\"\n ]),\n children: /* @__PURE__ */ jsx19(\n \"button\",\n {\n onClick: () => {\n signalWidgetViews.value = {\n view: \"none\"\n };\n },\n title: \"Close\",\n children: /* @__PURE__ */ jsx19(CloseIcon, { size: 18, className: \"text-[#6F6F78]\" })\n }\n )\n }\n )\n }\n )\n ]\n }\n )\n }\n )\n );\n }\n case \"dropped-frames\": {\n return /* @__PURE__ */ jsx19(\n \"div\",\n {\n className: cn([`w-full flex border-b border-[#27272A] min-h-[48px]`]),\n children: /* @__PURE__ */ jsxs18(\n \"div\",\n {\n className: cn([\n \"min-w-fit w-full justify-start flex items-center border-r border-[#27272A] pl-5 pr-2 text-sm gap-x-4\"\n ]),\n children: [\n /* @__PURE__ */ jsxs18(\"div\", { className: cn([\"flex items-center gap-x-2 \"]), children: [\n \"FPS Drop\",\n /* @__PURE__ */ jsxs18(\n \"div\",\n {\n className: cn([\n \"w-fit flex items-center justify-center h-fit text-white px-1 rounded-sm font-semibold text-[10px] whitespace-nowrap\",\n severity === \"low\" && \"bg-green-500/50\",\n severity === \"needs-improvement\" && \"bg-[#b77116]\",\n severity === \"high\" && \"bg-[#b94040]\"\n ]),\n children: [\n \"dropped to \",\n selectedEvent.fps,\n \" FPS\"\n ]\n }\n )\n ] }),\n /* @__PURE__ */ jsx19(\n \"div\",\n {\n className: cn([\n \"flex items-center gap-x-2 w-2/4 justify-end ml-auto\"\n ]),\n children: /* @__PURE__ */ jsx19(\n \"div\",\n {\n className: cn([\n \"p-2 flex justify-center items-center border-[#27272A]\"\n ]),\n children: /* @__PURE__ */ jsx19(\n \"button\",\n {\n onClick: () => {\n signalWidgetViews.value = {\n view: \"none\"\n };\n },\n children: /* @__PURE__ */ jsx19(CloseIcon, { size: 18, className: \"text-[#6F6F78]\" })\n }\n )\n }\n )\n }\n )\n ]\n }\n )\n }\n );\n }\n }\n};\n\n// src/web/views/notifications/slowdown-history.tsx\nimport { useEffect as useEffect14, useRef as useRef12, useState as useState18 } from \"preact/compat\";\n\n// src/web/views/notifications/collapsed-event.tsx\nimport { useEffect as useEffect13, useRef as useRef11, useState as useState17 } from \"preact/hooks\";\nimport { jsx as jsx20, jsxs as jsxs19 } from \"preact/jsx-runtime\";\nvar useNestedFlash = ({\n flashingItemsCount,\n totalEvents\n}) => {\n const [newFlash, setNewFlash] = useState17(false);\n const flashedFor = useRef11(0);\n const lastFlashTime = useRef11(0);\n useEffect13(() => {\n if (flashedFor.current >= totalEvents) {\n return;\n }\n const now = Date.now();\n const debounceTime = 250;\n const timeSinceLastFlash = now - lastFlashTime.current;\n if (timeSinceLastFlash >= debounceTime) {\n setNewFlash(false);\n const timeout2 = setTimeout(() => {\n flashedFor.current = totalEvents;\n lastFlashTime.current = Date.now();\n setNewFlash(true);\n setTimeout(() => {\n setNewFlash(false);\n }, 2e3);\n }, 50);\n return () => clearTimeout(timeout2);\n } else {\n const delayNeeded = debounceTime - timeSinceLastFlash;\n const timeout2 = setTimeout(() => {\n setNewFlash(false);\n setTimeout(() => {\n flashedFor.current = totalEvents;\n lastFlashTime.current = Date.now();\n setNewFlash(true);\n setTimeout(() => {\n setNewFlash(false);\n }, 2e3);\n }, 50);\n }, delayNeeded);\n return () => clearTimeout(timeout2);\n }\n }, [flashingItemsCount]);\n return newFlash;\n};\nvar CollapsedItem = ({\n item,\n shouldFlash\n}) => {\n const [expanded, setExpanded] = useState17(false);\n const severity = item.events.map(getEventSeverity).reduce((prev, curr) => {\n switch (curr) {\n case \"high\": {\n return \"high\";\n }\n case \"needs-improvement\": {\n return prev === \"high\" ? \"high\" : \"needs-improvement\";\n }\n case \"low\": {\n return prev;\n }\n }\n }, \"low\");\n const flashingItemsCount = item.events.reduce(\n (prev, curr) => shouldFlash(curr.id) ? prev + 1 : prev,\n 0\n );\n const shouldFlashAgain = useNestedFlash({\n flashingItemsCount,\n totalEvents: item.events.length\n });\n return /* @__PURE__ */ jsxs19(\"div\", { className: cn([\"flex flex-col gap-y-0.5\"]), children: [\n /* @__PURE__ */ jsxs19(\n \"button\",\n {\n onClick: () => setExpanded((expanded2) => !expanded2),\n className: cn([\n \"pl-2 py-1.5 text-sm flex items-center rounded-sm hover:bg-[#18181B] relative overflow-hidden\",\n shouldFlashAgain && !expanded && \"after:absolute after:inset-0 after:bg-purple-500/30 after:animate-[fadeOut_1s_ease-out_forwards]\"\n ]),\n children: [\n /* @__PURE__ */ jsxs19(\n \"div\",\n {\n className: cn([\n \"w-4/5 flex items-center justify-start h-full text-xs truncate gap-x-1.5\"\n ]),\n children: [\n /* @__PURE__ */ jsx20(\"span\", { className: cn([\"min-w-fit\"]), children: /* @__PURE__ */ jsx20(\n ChevronRight,\n {\n className: cn([\n \"text-[#A1A1AA] transition-transform\",\n expanded ? \"rotate-90\" : \"\"\n ]),\n size: 14\n },\n `chevron-${item.timestamp}`\n ) }),\n /* @__PURE__ */ jsx20(\"span\", { className: cn([\"text-xs\"]), children: item.kind === \"collapsed-frame-drops\" ? \"FPS Drops\" : getComponentName(item.events.at(0)?.componentPath ?? []) })\n ]\n }\n ),\n /* @__PURE__ */ jsx20(\n \"div\",\n {\n className: cn([\"ml-auto min-w-fit flex justify-end items-center\"]),\n children: /* @__PURE__ */ jsxs19(\n \"div\",\n {\n style: {\n lineHeight: \"10px\"\n },\n className: cn([\n \"w-fit flex items-center text-[10px] justify-center h-full text-white px-1 py-1 rounded-sm font-semibold\",\n severity === \"low\" && \"bg-green-500/60\",\n severity === \"needs-improvement\" && \"bg-[#b77116] text-[10px]\",\n severity === \"high\" && \"bg-[#b94040]\"\n ]),\n children: [\n \"x\",\n item.events.length\n ]\n }\n )\n }\n )\n ]\n }\n ),\n expanded && /* @__PURE__ */ jsx20(IndentedContent, { children: item.events.toSorted((a, b) => b.timestamp - a.timestamp).map((event) => /* @__PURE__ */ jsx20(\n SlowdownHistoryItem,\n {\n event,\n shouldFlash: shouldFlash(event.id)\n }\n )) })\n ] });\n};\nvar IndentedContent = ({\n children\n}) => /* @__PURE__ */ jsxs19(\"div\", { className: \"relative pl-6 flex flex-col gap-y-1\", children: [\n /* @__PURE__ */ jsx20(\"div\", { className: \"absolute left-3 top-0 bottom-0 w-px bg-[#27272A]\" }),\n children\n] });\n\n// src/web/views/notifications/slowdown-history.tsx\nimport { jsx as jsx21, jsxs as jsxs20 } from \"preact/jsx-runtime\";\nvar useFlashManager = (events) => {\n const prevEventsRef = useRef12([]);\n const [newEventIds, setNewEventIds] = useState18(/* @__PURE__ */ new Set());\n const isInitialMount = useRef12(true);\n useEffect14(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n prevEventsRef.current = events;\n return;\n }\n const currentIds = new Set(events.map((e) => e.id));\n const prevIds = new Set(prevEventsRef.current.map((e) => e.id));\n const newIds = /* @__PURE__ */ new Set();\n currentIds.forEach((id) => {\n if (!prevIds.has(id)) {\n newIds.add(id);\n }\n });\n if (newIds.size > 0) {\n setNewEventIds(newIds);\n setTimeout(() => {\n setNewEventIds(/* @__PURE__ */ new Set());\n }, 2e3);\n }\n prevEventsRef.current = events;\n }, [events]);\n return (id) => newEventIds.has(id);\n};\nvar useFlash = ({ shouldFlash }) => {\n const [isFlashing, setIsFlashing] = useState18(shouldFlash);\n useEffect14(() => {\n if (shouldFlash) {\n setIsFlashing(true);\n const timer = setTimeout(() => {\n setIsFlashing(false);\n }, 1e3);\n return () => clearTimeout(timer);\n }\n }, [shouldFlash]);\n return isFlashing;\n};\nvar SlowdownHistoryItem = ({\n event,\n shouldFlash\n}) => {\n const { notificationState, setNotificationState } = useNotificationsContext();\n const severity = getEventSeverity(event);\n const isFlashing = useFlash({ shouldFlash });\n switch (event.kind) {\n case \"interaction\": {\n return /* @__PURE__ */ jsxs20(\n \"button\",\n {\n onClick: () => {\n setNotificationState((prev) => ({\n ...prev,\n selectedEvent: event,\n route: \"render-visualization\",\n selectedFiber: null\n }));\n },\n className: cn([\n \"pl-2 py-1.5 text-sm flex w-full items-center rounded-sm hover:bg-[#18181B] relative overflow-hidden\",\n event.id === notificationState.selectedEvent?.id && \"bg-[#18181B]\",\n isFlashing && \"after:absolute after:inset-0 after:bg-purple-500/30 after:animate-[fadeOut_1s_ease-out_forwards]\"\n ]),\n children: [\n /* @__PURE__ */ jsxs20(\n \"div\",\n {\n className: cn([\n \"w-4/5 flex items-center justify-start h-full gap-x-1.5\"\n ]),\n children: [\n /* @__PURE__ */ jsx21(\"span\", { className: cn([\"min-w-fit text-xs\"]), children: iife(() => {\n switch (event.type) {\n case \"click\": {\n return /* @__PURE__ */ jsx21(PointerIcon, { size: 14 });\n }\n case \"keyboard\": {\n return /* @__PURE__ */ jsx21(KeyboardIcon, { size: 14 });\n }\n }\n }) }),\n /* @__PURE__ */ jsx21(\"span\", { className: cn([\"text-xs pr-1 truncate\"]), children: getComponentName(event.componentPath) })\n ]\n }\n ),\n /* @__PURE__ */ jsx21(\n \"div\",\n {\n className: cn([\" min-w-fit flex justify-end items-center ml-auto\"]),\n children: /* @__PURE__ */ jsx21(\n \"div\",\n {\n style: {\n lineHeight: \"10px\"\n },\n className: cn([\n \"gap-x-0.5 w-fit flex items-end justify-center h-full text-white px-1 py-1 rounded-sm font-semibold text-[10px]\",\n severity === \"low\" && \"bg-green-500/50\",\n severity === \"needs-improvement\" && \"bg-[#b77116] text-[10px]\",\n severity === \"high\" && \"bg-[#b94040]\"\n ]),\n children: /* @__PURE__ */ jsxs20(\n \"div\",\n {\n style: {\n lineHeight: \"10px\"\n },\n className: cn([\"text-[10px] text-white flex items-end\"]),\n children: [\n getTotalTime(event.timing).toFixed(0),\n \"ms\"\n ]\n }\n )\n }\n )\n }\n )\n ]\n }\n );\n }\n case \"dropped-frames\": {\n return /* @__PURE__ */ jsxs20(\n \"button\",\n {\n onClick: () => {\n setNotificationState((prev) => ({\n ...prev,\n selectedEvent: event,\n // explicitly force back to render-visualization since the user might get confused when they don't see the detailed view immediately when clicking the view\n route: \"render-visualization\",\n selectedFiber: null\n }));\n },\n className: cn([\n \"pl-2 py-1.5 w-full text-sm flex items-center rounded-sm hover:bg-[#18181B] relative overflow-hidden\",\n event.id === notificationState.selectedEvent?.id && \"bg-[#18181B]\",\n isFlashing && \"after:absolute after:inset-0 after:bg-purple-500/30 after:animate-[fadeOut_1s_ease-out_forwards]\"\n ]),\n children: [\n /* @__PURE__ */ jsxs20(\n \"div\",\n {\n className: cn([\n \"w-4/5 flex items-center justify-start h-full text-xs truncate\"\n ]),\n children: [\n /* @__PURE__ */ jsx21(TrendingDownIcon, { size: 14, className: \"mr-1.5\" }),\n \" FPS Drop\"\n ]\n }\n ),\n /* @__PURE__ */ jsx21(\n \"div\",\n {\n className: cn([\" min-w-fit flex justify-end items-center ml-auto\"]),\n children: /* @__PURE__ */ jsxs20(\n \"div\",\n {\n style: {\n lineHeight: \"10px\"\n },\n className: cn([\n \"w-fit flex items-center justify-center h-full text-white px-1 py-1 rounded-sm text-[10px] font-bold\",\n severity === \"low\" && \"bg-green-500/60\",\n severity === \"needs-improvement\" && \"bg-[#b77116] text-[10px]\",\n severity === \"high\" && \"bg-[#b94040]\"\n ]),\n children: [\n event.fps,\n \" FPS\"\n ]\n }\n )\n }\n )\n ]\n }\n );\n }\n }\n};\nvar collapseEvents = (events) => {\n const newEvents = events.reduce((prev, curr) => {\n const lastEvent = prev.at(-1);\n if (!lastEvent) {\n return [\n {\n kind: \"single\",\n event: curr,\n timestamp: curr.timestamp\n }\n ];\n }\n switch (lastEvent.kind) {\n case \"collapsed-keyboard\": {\n if (curr.kind === \"interaction\" && curr.type === \"keyboard\" && // must be on the same semantic component, it would be ideal to compare on fiberId, but i digress\n curr.componentPath.join(\"-\") === lastEvent.events[0].componentPath.join(\"-\")) {\n const eventsWithoutLast = prev.filter((e) => e !== lastEvent);\n return [\n ...eventsWithoutLast,\n {\n kind: \"collapsed-keyboard\",\n events: [...lastEvent.events, curr],\n timestamp: Math.max(\n ...[...lastEvent.events, curr].map((e) => e.timestamp)\n )\n }\n ];\n }\n return [\n ...prev,\n {\n kind: \"single\",\n event: curr,\n timestamp: curr.timestamp\n }\n ];\n }\n case \"single\": {\n if (lastEvent.event.kind === \"interaction\" && lastEvent.event.type === \"keyboard\" && curr.kind === \"interaction\" && curr.type === \"keyboard\" && lastEvent.event.componentPath.join(\"-\") === curr.componentPath.join(\"-\")) {\n const eventsWithoutLast = prev.filter((e) => e !== lastEvent);\n return [\n ...eventsWithoutLast,\n {\n kind: \"collapsed-keyboard\",\n events: [lastEvent.event, curr],\n timestamp: Math.max(lastEvent.event.timestamp, curr.timestamp)\n }\n ];\n }\n if (lastEvent.event.kind === \"dropped-frames\" && curr.kind === \"dropped-frames\") {\n const eventsWithoutLast = prev.filter((e) => e !== lastEvent);\n return [\n ...eventsWithoutLast,\n {\n kind: \"collapsed-frame-drops\",\n events: [lastEvent.event, curr],\n timestamp: Math.max(lastEvent.event.timestamp, curr.timestamp)\n }\n ];\n }\n return [\n ...prev,\n {\n kind: \"single\",\n event: curr,\n timestamp: curr.timestamp\n }\n ];\n }\n case \"collapsed-frame-drops\": {\n if (curr.kind === \"dropped-frames\") {\n const eventsWithoutLast = prev.filter((e) => e !== lastEvent);\n return [\n ...eventsWithoutLast,\n {\n kind: \"collapsed-frame-drops\",\n events: [...lastEvent.events, curr],\n timestamp: Math.max(\n ...[...lastEvent.events, curr].map((e) => e.timestamp)\n )\n }\n ];\n }\n return [\n ...prev,\n {\n kind: \"single\",\n event: curr,\n timestamp: curr.timestamp\n }\n ];\n }\n }\n }, []);\n return newEvents;\n};\nvar useLaggedEvents = (lagMs = 150) => {\n const { notificationState } = useNotificationsContext();\n const [laggedEvents, setLaggedEvents] = useState18(notificationState.events);\n useEffect14(() => {\n setTimeout(() => {\n setLaggedEvents(notificationState.events);\n }, lagMs);\n }, [notificationState.events]);\n return [laggedEvents, setLaggedEvents];\n};\nvar SlowdownHistory = () => {\n const { notificationState, setNotificationState } = useNotificationsContext();\n const shouldFlash = useFlashManager(notificationState.events);\n const [laggedEvents, setLaggedEvents] = useLaggedEvents();\n const collapsedEvents = collapseEvents(laggedEvents).toSorted(\n (a, b) => b.timestamp - a.timestamp\n );\n return /* @__PURE__ */ jsxs20(\n \"div\",\n {\n className: cn([\n `w-full h-full gap-y-2 flex flex-col border-r border-[#27272A] overflow-y-auto`\n ]),\n children: [\n /* @__PURE__ */ jsxs20(\n \"div\",\n {\n className: cn([\n \"text-sm text-[#65656D] pl-3 pr-1 w-full flex items-center justify-between\"\n ]),\n children: [\n /* @__PURE__ */ jsx21(\"span\", { children: \"History\" }),\n /* @__PURE__ */ jsx21(\n Popover,\n {\n wrapperProps: {\n className: \"h-full flex items-center justify-center ml-auto\"\n },\n triggerContent: /* @__PURE__ */ jsx21(\n \"button\",\n {\n className: cn([\"hover:bg-[#18181B] rounded-full p-2\"]),\n title: \"Clear all events\",\n onClick: () => {\n toolbarEventStore.getState().actions.clear();\n setNotificationState((prev) => ({\n ...prev,\n selectedEvent: null,\n selectedFiber: null,\n route: prev.route === \"other-visualization\" ? \"other-visualization\" : \"render-visualization\"\n }));\n setLaggedEvents([]);\n },\n children: /* @__PURE__ */ jsx21(ClearIcon, { className: cn([\"\"]), size: 16 })\n }\n ),\n children: /* @__PURE__ */ jsx21(\"div\", { className: cn([\"w-full flex justify-center\"]), children: \"Clear all events\" })\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs20(\"div\", { className: cn([\"flex flex-col px-1 gap-y-1\"]), children: [\n collapsedEvents.length === 0 && /* @__PURE__ */ jsx21(\n \"div\",\n {\n className: cn([\n \"flex items-center justify-center text-zinc-500 text-sm py-4\"\n ]),\n children: \"No Events\"\n }\n ),\n collapsedEvents.map(\n (historyItem) => iife(() => {\n switch (historyItem.kind) {\n case \"collapsed-keyboard\": {\n return /* @__PURE__ */ jsx21(CollapsedItem, { shouldFlash, item: historyItem });\n }\n case \"single\": {\n return /* @__PURE__ */ jsx21(\n SlowdownHistoryItem,\n {\n event: historyItem.event,\n shouldFlash: shouldFlash(historyItem.event.id)\n },\n historyItem.event.id\n );\n }\n case \"collapsed-frame-drops\": {\n return /* @__PURE__ */ jsx21(CollapsedItem, { shouldFlash, item: historyItem });\n }\n }\n })\n )\n ] })\n ]\n }\n );\n};\n\n// src/web/views/notifications/notifications.tsx\nimport { Fragment as Fragment12, jsx as jsx22, jsxs as jsxs21 } from \"preact/jsx-runtime\";\nvar getGroupedFiberRenders = (fiberRenders) => {\n const res = Object.values(fiberRenders).map((render2) => ({\n id: not_globally_unique_generateId(),\n totalTime: render2.nodeInfo.reduce((prev, curr) => prev + curr.selfTime, 0),\n count: render2.nodeInfo.length,\n name: render2.nodeInfo[0].name,\n // invariant, at least one exists,\n deletedAll: false,\n parents: render2.parents,\n hasMemoCache: render2.hasMemoCache,\n wasFiberRenderMount: render2.wasFiberRenderMount,\n // it would be nice if we calculated the % of components memoizable, but this would have to be calculated downstream before it got aggregated\n elements: render2.nodeInfo.map((node) => node.element),\n changes: {\n context: render2.changes.fiberContext.current.filter(\n (change) => render2.changes.fiberContext.changesCounts.get(change.name)\n ).map((change) => ({\n name: String(change.name),\n count: render2.changes.fiberContext.changesCounts.get(change.name) ?? 0\n })),\n props: render2.changes.fiberProps.current.filter(\n (change) => render2.changes.fiberProps.changesCounts.get(change.name)\n ).map((change) => ({\n name: String(change.name),\n count: render2.changes.fiberProps.changesCounts.get(change.name) ?? 0\n })),\n state: render2.changes.fiberState.current.filter(\n (change) => render2.changes.fiberState.changesCounts.get(Number(change.name))\n ).map((change) => ({\n index: change.name,\n count: render2.changes.fiberState.changesCounts.get(Number(change.name)) ?? 0\n }))\n }\n }));\n return res;\n};\nvar useGarbageCollectElements = (notificationEvents) => {\n useEffect15(() => {\n const checkElementsExistence = () => {\n notificationEvents.forEach((event) => {\n if (!event.groupedFiberRenders) return;\n event.groupedFiberRenders.forEach((render2) => {\n if (render2.deletedAll) return;\n if (!render2.elements || render2.elements.length === 0) {\n render2.deletedAll = true;\n return;\n }\n const initialLength = render2.elements.length;\n render2.elements = render2.elements.filter((element) => {\n return element && element.isConnected;\n });\n if (render2.elements.length === 0 && initialLength > 0) {\n render2.deletedAll = true;\n }\n });\n });\n };\n const intervalId = setInterval(checkElementsExistence, 5e3);\n return () => {\n clearInterval(intervalId);\n };\n }, [notificationEvents]);\n};\nvar useAppNotifications = () => {\n const log2 = useToolbarEventLog();\n const notificationEvents = [];\n useGarbageCollectElements(notificationEvents);\n log2.state.events.forEach((event) => {\n const fiberRenders = event.kind === \"interaction\" ? event.data.meta.detailedTiming.fiberRenders : event.data.meta.fiberRenders;\n const groupedFiberRenders = getGroupedFiberRenders(fiberRenders);\n const renderTime = groupedFiberRenders.reduce(\n (prev, curr) => prev + curr.totalTime,\n 0\n );\n switch (event.kind) {\n case \"interaction\": {\n const { commitEnd, jsEndDetail, interactionStartDetail, rafStart } = event.data.meta.detailedTiming;\n if (jsEndDetail - interactionStartDetail - renderTime < 0) {\n invariantError(\"js time must be longer than render time\");\n }\n const otherJSTime = Math.max(\n 0,\n jsEndDetail - interactionStartDetail - renderTime\n );\n const frameDraw = Math.max(\n event.data.meta.latency - (commitEnd - interactionStartDetail),\n 0\n );\n notificationEvents.push({\n componentPath: event.data.meta.detailedTiming.componentPath,\n groupedFiberRenders,\n id: event.id,\n kind: \"interaction\",\n memory: null,\n timestamp: event.data.startAt,\n type: event.data.meta.detailedTiming.interactionType === \"keyboard\" ? \"keyboard\" : \"click\",\n timing: {\n renderTime,\n kind: \"interaction\",\n otherJSTime,\n framePreparation: rafStart - jsEndDetail,\n frameConstruction: commitEnd - rafStart,\n frameDraw\n }\n });\n return;\n }\n case \"long-render\": {\n notificationEvents.push({\n kind: \"dropped-frames\",\n id: event.id,\n memory: null,\n timing: {\n kind: \"dropped-frames\",\n renderTime,\n otherTime: event.data.meta.latency\n },\n groupedFiberRenders,\n timestamp: event.data.startAt,\n fps: event.data.meta.fps\n });\n return;\n }\n }\n });\n return notificationEvents;\n};\nvar timeout = 1e3;\nvar NotificationAudio = () => {\n const { notificationState, setNotificationState } = useNotificationsContext();\n const playedFor = useRef13(null);\n const debounceTimeout = useRef13(null);\n const lastPlayedTime = useRef13(0);\n const [laggedEvents] = useLaggedEvents();\n const alertEventsCount = laggedEvents.filter(\n // todo: make this configurable\n (event) => getEventSeverity(event) === \"high\"\n ).length;\n useEffect15(() => {\n const audioEnabledString = localStorage.getItem(\n \"react-scan-notifications-audio\"\n );\n if (audioEnabledString !== \"false\" && audioEnabledString !== \"true\") {\n localStorage.setItem(\"react-scan-notifications-audio\", \"false\");\n return;\n }\n const audioEnabled = audioEnabledString === \"false\" ? false : true;\n if (audioEnabled) {\n setNotificationState((prev) => {\n if (prev.audioNotificationsOptions.enabled) {\n return prev;\n }\n return {\n ...prev,\n audioNotificationsOptions: {\n enabled: true,\n audioContext: new AudioContext()\n }\n };\n });\n return;\n }\n }, []);\n useEffect15(() => {\n const { audioNotificationsOptions } = notificationState;\n if (!audioNotificationsOptions.enabled) {\n return;\n }\n if (alertEventsCount === 0) {\n return;\n }\n if (playedFor.current && playedFor.current >= alertEventsCount) {\n return;\n }\n if (debounceTimeout.current) {\n clearTimeout(debounceTimeout.current);\n }\n const now = Date.now();\n const timeSinceLastPlay = now - lastPlayedTime.current;\n const remainingDebounceTime = Math.max(0, timeout - timeSinceLastPlay);\n debounceTimeout.current = setTimeout(() => {\n playNotificationSound(audioNotificationsOptions.audioContext);\n playedFor.current = alertEventsCount;\n lastPlayedTime.current = Date.now();\n debounceTimeout.current = null;\n }, remainingDebounceTime);\n }, [alertEventsCount]);\n useEffect15(() => {\n if (alertEventsCount !== 0) {\n return;\n }\n playedFor.current = null;\n }, [alertEventsCount]);\n useEffect15(() => {\n return () => {\n if (debounceTimeout.current) {\n clearTimeout(debounceTimeout.current);\n }\n };\n }, []);\n return null;\n};\nvar NotificationWrapper = forwardRef2((_, ref) => {\n const events = useAppNotifications();\n const [notificationState, setNotificationState] = useState19({\n detailsExpanded: false,\n events,\n filterBy: \"latest\",\n moreInfoExpanded: false,\n route: \"render-visualization\",\n selectedEvent: events.toSorted((a, b) => a.timestamp - b.timestamp).at(-1) ?? null,\n selectedFiber: null,\n routeMessage: null,\n audioNotificationsOptions: {\n enabled: false,\n audioContext: null\n }\n });\n notificationState.events = events;\n return /* @__PURE__ */ jsxs21(\n NotificationStateContext.Provider,\n {\n value: {\n notificationState,\n setNotificationState,\n setRoute: ({ route, routeMessage }) => {\n setNotificationState((prev) => {\n const newState = { ...prev, route, routeMessage };\n switch (route) {\n case \"render-visualization\": {\n fadeOutHighlights();\n return {\n ...newState,\n selectedFiber: null\n };\n }\n case \"optimize\": {\n fadeOutHighlights();\n return {\n ...newState,\n selectedFiber: null\n };\n }\n case \"other-visualization\": {\n fadeOutHighlights();\n return {\n ...newState,\n selectedFiber: null\n };\n }\n case \"render-explanation\": {\n fadeOutHighlights();\n return newState;\n }\n }\n route;\n });\n }\n },\n children: [\n /* @__PURE__ */ jsx22(NotificationAudio, {}),\n /* @__PURE__ */ jsx22(Notifications, { ref })\n ]\n }\n );\n});\nvar Notifications = forwardRef2((_, ref) => {\n const { notificationState } = useNotificationsContext();\n return /* @__PURE__ */ jsxs21(\"div\", { ref, className: cn([\"h-full w-full flex flex-col\"]), children: [\n notificationState.selectedEvent && /* @__PURE__ */ jsxs21(\n \"div\",\n {\n className: cn([\n \"w-full h-[48px] flex flex-col\",\n notificationState.moreInfoExpanded && \"h-[235px]\",\n notificationState.moreInfoExpanded && notificationState.selectedEvent.kind === \"dropped-frames\" && \"h-[150px]\"\n ]),\n children: [\n /* @__PURE__ */ jsx22(NotificationHeader, { selectedEvent: notificationState.selectedEvent }),\n notificationState.moreInfoExpanded && /* @__PURE__ */ jsx22(MoreInfo, {})\n ]\n }\n ),\n /* @__PURE__ */ jsxs21(\n \"div\",\n {\n className: cn([\n \"flex \",\n notificationState.selectedEvent ? \"h-[calc(100%-48px)]\" : \"h-full\",\n notificationState.moreInfoExpanded && \"h-[calc(100%-200px)]\",\n notificationState.moreInfoExpanded && notificationState.selectedEvent?.kind === \"dropped-frames\" && \"h-[calc(100%-150px)]\"\n ]),\n children: [\n /* @__PURE__ */ jsx22(\"div\", { className: cn([\"h-full min-w-[200px]\"]), children: /* @__PURE__ */ jsx22(SlowdownHistory, {}) }),\n /* @__PURE__ */ jsx22(\"div\", { className: cn([\"w-[calc(100%-200px)] h-full overflow-y-auto\"]), children: /* @__PURE__ */ jsx22(DetailsRoutes, {}) })\n ]\n }\n )\n ] });\n});\nvar MoreInfo = () => {\n const { notificationState } = useNotificationsContext();\n if (!notificationState.selectedEvent) {\n throw new Error(\"Invariant must have selected event for more info\");\n }\n const event = notificationState.selectedEvent;\n return /* @__PURE__ */ jsx22(\n \"div\",\n {\n className: cn([\n \"px-4 py-2 border-b border-[#27272A] bg-[#18181B]/50 h-[calc(100%-40px)]\",\n event.kind === \"dropped-frames\" && `h-[calc(100%-25px)]`\n ]),\n children: /* @__PURE__ */ jsx22(\"div\", { className: cn([\"flex flex-col gap-y-4 h-full\"]), children: iife(() => {\n switch (event.kind) {\n case \"interaction\": {\n return /* @__PURE__ */ jsxs21(Fragment12, { children: [\n /* @__PURE__ */ jsxs21(\"div\", { className: cn([\"flex items-center gap-x-3\"]), children: [\n /* @__PURE__ */ jsx22(\"span\", { className: \"text-[#6F6F78] text-xs font-medium\", children: event.type === \"click\" ? \"Clicked component location\" : \"Typed in component location\" }),\n /* @__PURE__ */ jsx22(\"div\", { className: \"font-mono text-[#E4E4E7] flex items-center bg-[#27272A] pl-2 py-1 rounded-sm overflow-x-auto\", children: event.componentPath.toReversed().map((part, i) => /* @__PURE__ */ jsxs21(Fragment12, { children: [\n /* @__PURE__ */ jsx22(\n \"span\",\n {\n style: {\n lineHeight: \"14px\"\n },\n className: \"text-[10px] whitespace-nowrap\",\n children: part\n },\n part\n ),\n i < event.componentPath.length - 1 && /* @__PURE__ */ jsx22(\"span\", { className: \"text-[#6F6F78] mx-0.5\", children: \"\\u2039\" })\n ] })) })\n ] }),\n /* @__PURE__ */ jsxs21(\"div\", { className: cn([\"flex items-center gap-x-3\"]), children: [\n /* @__PURE__ */ jsx22(\"span\", { className: \"text-[#6F6F78] text-xs font-medium\", children: \"Total Time\" }),\n /* @__PURE__ */ jsxs21(\"span\", { className: \"text-[#E4E4E7] bg-[#27272A] px-1.5 py-1 rounded-sm text-xs\", children: [\n getTotalTime(event.timing).toFixed(0),\n \"ms\"\n ] })\n ] }),\n /* @__PURE__ */ jsxs21(\"div\", { className: cn([\"flex items-center gap-x-3\"]), children: [\n /* @__PURE__ */ jsx22(\"span\", { className: \"text-[#6F6F78] text-xs font-medium\", children: \"Occurred\" }),\n /* @__PURE__ */ jsx22(\"span\", { className: \"text-[#E4E4E7] bg-[#27272A] px-1.5 py-1 rounded-sm text-xs\", children: `${((Date.now() - event.timestamp) / 1e3).toFixed(0)}s ago` })\n ] })\n ] });\n }\n case \"dropped-frames\": {\n return /* @__PURE__ */ jsxs21(Fragment12, { children: [\n /* @__PURE__ */ jsxs21(\"div\", { className: cn([\"flex items-center gap-x-3\"]), children: [\n /* @__PURE__ */ jsx22(\"span\", { className: \"text-[#6F6F78] text-xs font-medium\", children: \"Total Time\" }),\n /* @__PURE__ */ jsxs21(\"span\", { className: \"text-[#E4E4E7] bg-[#27272A] px-1.5 py-1 rounded-sm text-xs\", children: [\n getTotalTime(event.timing).toFixed(0),\n \"ms\"\n ] })\n ] }),\n /* @__PURE__ */ jsxs21(\"div\", { className: cn([\"flex items-center gap-x-3\"]), children: [\n /* @__PURE__ */ jsx22(\"span\", { className: \"text-[#6F6F78] text-xs font-medium\", children: \"Occurred\" }),\n /* @__PURE__ */ jsx22(\"span\", { className: \"text-[#E4E4E7] bg-[#27272A] px-1.5 py-1 rounded-sm text-xs\", children: `${((Date.now() - event.timestamp) / 1e3).toFixed(0)}s ago` })\n ] })\n ] });\n }\n }\n }) })\n }\n );\n};\n\n// src/web/views/toolbar/index.tsx\nimport { jsx as jsx23, jsxs as jsxs22 } from \"preact/jsx-runtime\";\nvar Toolbar = constant(() => {\n const events = useAppNotifications();\n const [laggedEvents, setLaggedEvents] = useState20(events);\n useEffect16(() => {\n const timeout2 = setTimeout(() => {\n setLaggedEvents(events);\n }, 500 + 100);\n return () => {\n clearTimeout(timeout2);\n };\n }, [events]);\n const inspectState = Store.inspectState;\n const isInspectActive = inspectState.value.kind === \"inspecting\";\n const isInspectFocused = inspectState.value.kind === \"focused\";\n const [seenEvents, setSeenEvents] = useState20([]);\n const onToggleInspect = useCallback4(() => {\n const currentState = Store.inspectState.value;\n switch (currentState.kind) {\n case \"inspecting\": {\n signalWidgetViews.value = {\n view: \"none\"\n };\n Store.inspectState.value = {\n kind: \"inspect-off\"\n };\n return;\n }\n case \"focused\": {\n signalWidgetViews.value = {\n view: \"inspector\"\n };\n Store.inspectState.value = {\n kind: \"inspecting\",\n hoveredDomElement: null\n };\n return;\n }\n // todo: auto select the root fibers first stateNode, and tell the user to select the element\n case \"inspect-off\": {\n signalWidgetViews.value = {\n view: \"none\"\n };\n Store.inspectState.value = {\n kind: \"inspecting\",\n hoveredDomElement: null\n };\n return;\n }\n case \"uninitialized\": {\n return;\n }\n }\n }, []);\n const onToggleActive = useCallback4((e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!ReactScanInternals.instrumentation) {\n return;\n }\n const isPaused = !ReactScanInternals.instrumentation.isPaused.value;\n ReactScanInternals.instrumentation.isPaused.value = isPaused;\n const existingLocalStorageOptions = readLocalStorage(\"react-scan-options\");\n saveLocalStorage(\"react-scan-options\", {\n ...existingLocalStorageOptions,\n enabled: !isPaused\n });\n }, []);\n useSignalEffect3(() => {\n const state = Store.inspectState.value;\n if (state.kind === \"uninitialized\") {\n Store.inspectState.value = {\n kind: \"inspect-off\"\n };\n }\n });\n let inspectIcon = null;\n let inspectColor = \"#999\";\n if (isInspectActive) {\n inspectIcon = /* @__PURE__ */ jsx23(Icon, { name: \"icon-inspect\" });\n inspectColor = \"#8e61e3\";\n } else if (isInspectFocused) {\n inspectIcon = /* @__PURE__ */ jsx23(Icon, { name: \"icon-focus\" });\n inspectColor = \"#8e61e3\";\n } else {\n inspectIcon = /* @__PURE__ */ jsx23(Icon, { name: \"icon-inspect\" });\n inspectColor = \"#999\";\n }\n useLayoutEffect2(() => {\n if (signalWidgetViews.value.view !== \"notifications\") {\n return;\n }\n const ids = new Set(events.map((event) => event.id));\n setSeenEvents([...ids.values()]);\n }, [events.length, signalWidgetViews.value.view]);\n return /* @__PURE__ */ jsxs22(\"div\", { className: \"flex max-h-9 min-h-9 flex-1 items-stretch overflow-hidden\", children: [\n /* @__PURE__ */ jsx23(\"div\", { className: \"h-full flex items-center min-w-fit\", children: /* @__PURE__ */ jsx23(\n \"button\",\n {\n type: \"button\",\n id: \"react-scan-inspect-element\",\n title: \"Inspect element\",\n onClick: onToggleInspect,\n className: \"button flex items-center justify-center h-full w-full pl-3 pr-2.5\",\n style: { color: inspectColor },\n children: inspectIcon\n }\n ) }),\n /* @__PURE__ */ jsx23(\"div\", { className: \"h-full flex items-center justify-center\", children: /* @__PURE__ */ jsx23(\n \"button\",\n {\n type: \"button\",\n id: \"react-scan-notifications\",\n title: \"Notifications\",\n onClick: () => {\n if (Store.inspectState.value.kind !== \"inspect-off\") {\n Store.inspectState.value = {\n kind: \"inspect-off\"\n };\n }\n switch (signalWidgetViews.value.view) {\n case \"inspector\": {\n Store.inspectState.value = {\n kind: \"inspect-off\"\n };\n const ids = new Set(events.map((event) => event.id));\n setSeenEvents([...ids.values()]);\n signalWidgetViews.value = {\n view: \"notifications\"\n };\n return;\n }\n case \"notifications\": {\n signalWidgetViews.value = {\n view: \"none\"\n };\n return;\n }\n case \"none\": {\n const ids = new Set(events.map((event) => event.id));\n setSeenEvents([...ids.values()]);\n signalWidgetViews.value = {\n view: \"notifications\"\n };\n return;\n }\n }\n },\n className: \"button flex items-center justify-center h-full pl-2.5 pr-2.5\",\n style: { color: inspectColor },\n children: /* @__PURE__ */ jsx23(\n Notification,\n {\n events: laggedEvents.filter((event) => !seenEvents.includes(event.id)).map((event) => getEventSeverity(event) === \"high\"),\n size: 16,\n className: cn([\n \"text-[#999]\",\n signalWidgetViews.value.view === \"notifications\" && \"text-[#8E61E3]\"\n ])\n }\n )\n }\n ) }),\n /* @__PURE__ */ jsx23(\n Toggle,\n {\n checked: !ReactScanInternals.instrumentation?.isPaused.value,\n onChange: onToggleActive,\n className: \"place-self-center\",\n title: \"Outline Re-renders\"\n }\n ),\n ReactScanInternals.options.value.showFPS && /* @__PURE__ */ jsx23(FPSMeter, {})\n ] });\n});\n\n// src/web/views/index.tsx\nimport { jsx as jsx24, jsxs as jsxs23 } from \"preact/jsx-runtime\";\nvar isInspecting = computed3(\n () => Store.inspectState.value.kind === \"inspecting\"\n);\nvar headerClassName = computed3(\n () => cn(\n \"relative\",\n \"flex-1\",\n \"flex flex-col\",\n \"rounded-t-lg\",\n \"overflow-hidden\",\n \"opacity-100\",\n \"transition-[opacity]\",\n isInspecting.value && \"opacity-0 duration-0 delay-0\"\n )\n);\nvar isInspectorViewOpen = computed3(\n () => signalWidgetViews.value.view === \"inspector\"\n);\nvar isNotificationsViewOpen = computed3(\n () => signalWidgetViews.value.view === \"notifications\"\n);\nvar Content = () => {\n return /* @__PURE__ */ jsxs23(\n \"div\",\n {\n className: cn(\n \"flex flex-1 flex-col\",\n \"overflow-hidden z-10\",\n \"rounded-lg\",\n \"bg-black\",\n \"opacity-100\",\n \"transition-[border-radius]\",\n \"peer-hover/left:rounded-l-none\",\n \"peer-hover/right:rounded-r-none\",\n \"peer-hover/top:rounded-t-none\",\n \"peer-hover/bottom:rounded-b-none\"\n ),\n children: [\n /* @__PURE__ */ jsxs23(\"div\", { className: headerClassName, children: [\n /* @__PURE__ */ jsx24(Header, {}),\n /* @__PURE__ */ jsxs23(\n \"div\",\n {\n className: cn(\n \"relative\",\n \"flex-1 flex\",\n \"text-white\",\n \"bg-[#0A0A0A]\",\n \"transition-opacity delay-150\",\n \"overflow-hidden\",\n \"border-b border-[#222]\"\n ),\n children: [\n /* @__PURE__ */ jsx24(ContentView, { isOpen: isInspectorViewOpen, children: /* @__PURE__ */ jsx24(ViewInspector, {}) }),\n /* @__PURE__ */ jsx24(ContentView, { isOpen: isNotificationsViewOpen, children: /* @__PURE__ */ jsx24(NotificationWrapper, {}) })\n ]\n }\n )\n ] }),\n /* @__PURE__ */ jsx24(Toolbar, {})\n ]\n }\n );\n};\nvar ContentView = ({ isOpen, children }) => {\n return /* @__PURE__ */ jsx24(\n \"div\",\n {\n className: cn(\n \"flex-1\",\n \"opacity-0\",\n \"overflow-y-auto overflow-x-hidden\",\n \"transition-opacity delay-0\",\n \"pointer-events-none\",\n isOpen.value && \"opacity-100 delay-150 pointer-events-auto\"\n ),\n children: /* @__PURE__ */ jsx24(\"div\", { className: \"absolute inset-0 flex\", children })\n }\n );\n};\n\n// src/web/views/inspector/overlay/index.tsx\nimport { getDisplayName as getDisplayName8 } from \"bippy\";\nimport { useEffect as useEffect17, useRef as useRef14 } from \"preact/hooks\";\n\n// src/web/utils/lerp.ts\nvar lerp2 = (start2, end, t) => {\n return start2 + (end - start2) * t;\n};\n\n// src/web/views/inspector/overlay/index.tsx\nimport { Fragment as Fragment13, jsx as jsx25, jsxs as jsxs24 } from \"preact/jsx-runtime\";\nvar ANIMATION_CONFIG = {\n frameInterval: 1e3 / 60,\n speeds: {\n fast: 0.51,\n slow: 0.1,\n off: 0\n }\n};\nvar OVERLAY_DPR = IS_CLIENT ? window.devicePixelRatio || 1 : 1;\nvar ScanOverlay = () => {\n const refCanvas = useRef14(null);\n const refEventCatcher = useRef14(null);\n const refCurrentRect = useRef14(null);\n const refCurrentLockIconRect = useRef14(null);\n const refLastHoveredElement = useRef14(null);\n const refRafId = useRef14(0);\n const refTimeout = useRef14();\n const refCleanupMap = useRef14(\n /* @__PURE__ */ new Map()\n );\n const refIsFadingOut = useRef14(false);\n const refLastFrameTime = useRef14(0);\n const drawLockIcon = (ctx2, x, y, size) => {\n ctx2.save();\n ctx2.strokeStyle = \"white\";\n ctx2.fillStyle = \"white\";\n ctx2.lineWidth = 1.5;\n const shackleWidth = size * 0.6;\n const shackleHeight = size * 0.5;\n const shackleX = x + (size - shackleWidth) / 2;\n const shackleY = y;\n ctx2.beginPath();\n ctx2.arc(\n shackleX + shackleWidth / 2,\n shackleY + shackleHeight / 2,\n shackleWidth / 2,\n Math.PI,\n 0,\n false\n );\n ctx2.stroke();\n const bodyWidth = size * 0.8;\n const bodyHeight = size * 0.5;\n const bodyX = x + (size - bodyWidth) / 2;\n const bodyY = y + shackleHeight / 2;\n ctx2.fillRect(bodyX, bodyY, bodyWidth, bodyHeight);\n ctx2.restore();\n };\n const drawStatsPill = (ctx2, rect, kind, fiber) => {\n if (!fiber) return;\n const pillHeight = 24;\n const pillPadding = 8;\n const componentName = (fiber?.type && getDisplayName8(fiber.type)) ?? \"Unknown\";\n const text = componentName;\n ctx2.save();\n ctx2.font = \"12px system-ui, -apple-system, sans-serif\";\n const textMetrics = ctx2.measureText(text);\n const textWidth = textMetrics.width;\n const lockIconSize = kind === \"locked\" ? 14 : 0;\n const lockIconPadding = kind === \"locked\" ? 6 : 0;\n const pillWidth = textWidth + pillPadding * 2 + lockIconSize + lockIconPadding;\n const pillX = rect.left;\n const pillY = rect.top - pillHeight - 4;\n ctx2.fillStyle = \"rgb(37, 37, 38, .75)\";\n ctx2.beginPath();\n ctx2.roundRect(pillX, pillY, pillWidth, pillHeight, 3);\n ctx2.fill();\n if (kind === \"locked\") {\n const lockX = pillX + pillPadding;\n const lockY = pillY + (pillHeight - lockIconSize) / 2 + 2;\n drawLockIcon(ctx2, lockX, lockY, lockIconSize);\n refCurrentLockIconRect.current = {\n x: lockX,\n y: lockY,\n width: lockIconSize,\n height: lockIconSize\n };\n } else {\n refCurrentLockIconRect.current = null;\n }\n ctx2.fillStyle = \"white\";\n ctx2.textBaseline = \"middle\";\n const textX = pillX + pillPadding + (kind === \"locked\" ? lockIconSize + lockIconPadding : 0);\n ctx2.fillText(text, textX, pillY + pillHeight / 2);\n ctx2.restore();\n };\n const drawRect = (canvas2, ctx2, kind, fiber) => {\n if (!refCurrentRect.current) return;\n const rect = refCurrentRect.current;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n ctx2.strokeStyle = \"rgba(142, 97, 227, 0.5)\";\n ctx2.fillStyle = \"rgba(173, 97, 230, 0.10)\";\n if (kind === \"locked\") {\n ctx2.setLineDash([]);\n } else {\n ctx2.setLineDash([4]);\n }\n ctx2.lineWidth = 1;\n ctx2.fillRect(rect.left, rect.top, rect.width, rect.height);\n ctx2.strokeRect(rect.left, rect.top, rect.width, rect.height);\n drawStatsPill(ctx2, rect, kind, fiber);\n };\n const animate = (canvas2, ctx2, targetRect, kind, parentCompositeFiber, onComplete) => {\n const speed = ReactScanInternals.options.value.animationSpeed;\n const t = ANIMATION_CONFIG.speeds[speed] ?? ANIMATION_CONFIG.speeds.off;\n const animationFrame2 = (timestamp) => {\n if (timestamp - refLastFrameTime.current < ANIMATION_CONFIG.frameInterval) {\n refRafId.current = requestAnimationFrame(animationFrame2);\n return;\n }\n refLastFrameTime.current = timestamp;\n if (!refCurrentRect.current) {\n cancelAnimationFrame(refRafId.current);\n return;\n }\n refCurrentRect.current = {\n left: lerp2(refCurrentRect.current.left, targetRect.left, t),\n top: lerp2(refCurrentRect.current.top, targetRect.top, t),\n width: lerp2(refCurrentRect.current.width, targetRect.width, t),\n height: lerp2(refCurrentRect.current.height, targetRect.height, t)\n };\n drawRect(canvas2, ctx2, kind, parentCompositeFiber);\n const stillMoving = Math.abs(refCurrentRect.current.left - targetRect.left) > 0.1 || Math.abs(refCurrentRect.current.top - targetRect.top) > 0.1 || Math.abs(refCurrentRect.current.width - targetRect.width) > 0.1 || Math.abs(refCurrentRect.current.height - targetRect.height) > 0.1;\n if (stillMoving) {\n refRafId.current = requestAnimationFrame(animationFrame2);\n } else {\n refCurrentRect.current = targetRect;\n drawRect(canvas2, ctx2, kind, parentCompositeFiber);\n cancelAnimationFrame(refRafId.current);\n ctx2.restore();\n onComplete?.();\n }\n };\n cancelAnimationFrame(refRafId.current);\n clearTimeout(refTimeout.current);\n refRafId.current = requestAnimationFrame(animationFrame2);\n refTimeout.current = setTimeout(() => {\n cancelAnimationFrame(refRafId.current);\n refCurrentRect.current = targetRect;\n drawRect(canvas2, ctx2, kind, parentCompositeFiber);\n ctx2.restore();\n onComplete?.();\n }, 1e3);\n };\n const setupOverlayAnimation = (canvas2, ctx2, targetRect, kind, parentCompositeFiber) => {\n ctx2.save();\n if (!refCurrentRect.current) {\n refCurrentRect.current = targetRect;\n drawRect(canvas2, ctx2, kind, parentCompositeFiber);\n ctx2.restore();\n return;\n }\n animate(canvas2, ctx2, targetRect, kind, parentCompositeFiber);\n };\n const drawHoverOverlay = async (overlayElement, canvas2, ctx2, kind) => {\n if (!overlayElement || !canvas2 || !ctx2) return;\n const { parentCompositeFiber } = getCompositeComponentFromElement(overlayElement);\n const targetRect = await getAssociatedFiberRect(overlayElement);\n if (!parentCompositeFiber || !targetRect) return;\n setupOverlayAnimation(canvas2, ctx2, targetRect, kind, parentCompositeFiber);\n };\n const unsubscribeAll = () => {\n for (const cleanup3 of refCleanupMap.current.values()) {\n cleanup3?.();\n }\n };\n const cleanupCanvas = (canvas2) => {\n const ctx2 = canvas2.getContext(\"2d\");\n if (ctx2) {\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n refCurrentRect.current = null;\n refCurrentLockIconRect.current = null;\n refLastHoveredElement.current = null;\n canvas2.classList.remove(\"fade-in\");\n refIsFadingOut.current = false;\n };\n const startFadeOut = (onComplete) => {\n if (!refCanvas.current || refIsFadingOut.current) return;\n const handleTransitionEnd = (e) => {\n if (!refCanvas.current || e.propertyName !== \"opacity\" || !refIsFadingOut.current) {\n return;\n }\n refCanvas.current.removeEventListener(\n \"transitionend\",\n handleTransitionEnd\n );\n cleanupCanvas(refCanvas.current);\n onComplete?.();\n };\n const existingListener = refCleanupMap.current.get(\"fade-out\");\n if (existingListener) {\n existingListener();\n refCleanupMap.current.delete(\"fade-out\");\n }\n refCanvas.current.addEventListener(\"transitionend\", handleTransitionEnd);\n refCleanupMap.current.set(\"fade-out\", () => {\n refCanvas.current?.removeEventListener(\n \"transitionend\",\n handleTransitionEnd\n );\n });\n refIsFadingOut.current = true;\n refCanvas.current.classList.remove(\"fade-in\");\n requestAnimationFrame(() => {\n refCanvas.current?.classList.add(\"fade-out\");\n });\n };\n const startFadeIn = () => {\n if (!refCanvas.current) return;\n refIsFadingOut.current = false;\n refCanvas.current.classList.remove(\"fade-out\");\n requestAnimationFrame(() => {\n refCanvas.current?.classList.add(\"fade-in\");\n });\n };\n const handleHoverableElement = (componentElement) => {\n if (componentElement === refLastHoveredElement.current) return;\n refLastHoveredElement.current = componentElement;\n if (nonVisualTags.has(componentElement.tagName)) {\n startFadeOut();\n } else {\n startFadeIn();\n }\n Store.inspectState.value = {\n kind: \"inspecting\",\n hoveredDomElement: componentElement\n };\n };\n const handleNonHoverableArea = () => {\n if (!refCurrentRect.current || !refCanvas.current || refIsFadingOut.current) {\n return;\n }\n startFadeOut();\n };\n const handlePointerMove = throttle((e) => {\n const state = Store.inspectState.peek();\n if (state.kind !== \"inspecting\" || !refEventCatcher.current) return;\n refEventCatcher.current.style.pointerEvents = \"none\";\n const element = document.elementFromPoint(e?.clientX ?? 0, e?.clientY ?? 0);\n refEventCatcher.current.style.removeProperty(\"pointer-events\");\n clearTimeout(refTimeout.current);\n if (element && element !== refCanvas.current) {\n const { parentCompositeFiber } = getCompositeComponentFromElement(\n element\n );\n if (parentCompositeFiber) {\n const componentElement = findComponentDOMNode(parentCompositeFiber);\n if (componentElement) {\n handleHoverableElement(componentElement);\n return;\n }\n }\n }\n handleNonHoverableArea();\n }, 32);\n const isClickInLockIcon = (e, canvas2) => {\n const currentRect = refCurrentLockIconRect.current;\n if (!currentRect) return false;\n const rect = canvas2.getBoundingClientRect();\n const scaleX = canvas2.width / rect.width;\n const scaleY = canvas2.height / rect.height;\n const x = (e.clientX - rect.left) * scaleX;\n const y = (e.clientY - rect.top) * scaleY;\n const adjustedX = x / OVERLAY_DPR;\n const adjustedY = y / OVERLAY_DPR;\n return adjustedX >= currentRect.x && adjustedX <= currentRect.x + currentRect.width && adjustedY >= currentRect.y && adjustedY <= currentRect.y + currentRect.height;\n };\n const handleLockIconClick = (state) => {\n if (state.kind === \"focused\") {\n Store.inspectState.value = {\n kind: \"inspecting\",\n hoveredDomElement: state.focusedDomElement\n };\n }\n };\n const handleElementClick = (e) => {\n const clickableElements = [\n \"react-scan-inspect-element\",\n \"react-scan-power\"\n ];\n if (e.target instanceof HTMLElement && clickableElements.includes(e.target.id)) {\n return;\n }\n const tagName = refLastHoveredElement.current?.tagName;\n if (tagName && nonVisualTags.has(tagName)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n const element = refLastHoveredElement.current ?? document.elementFromPoint(e.clientX, e.clientY);\n if (!element) return;\n const clickedEl = e.composedPath().at(0);\n if (clickedEl instanceof HTMLElement && clickableElements.includes(clickedEl.id)) {\n const syntheticEvent = new MouseEvent(e.type, e);\n syntheticEvent.__reactScanSyntheticEvent = true;\n clickedEl.dispatchEvent(syntheticEvent);\n return;\n }\n const { parentCompositeFiber } = getCompositeComponentFromElement(\n element\n );\n if (!parentCompositeFiber) return;\n const componentElement = findComponentDOMNode(parentCompositeFiber);\n if (!componentElement) {\n refLastHoveredElement.current = null;\n Store.inspectState.value = {\n kind: \"inspect-off\"\n };\n return;\n }\n Store.inspectState.value = {\n kind: \"focused\",\n focusedDomElement: componentElement,\n fiber: parentCompositeFiber\n };\n };\n const handleClick = (e) => {\n if (e.__reactScanSyntheticEvent) {\n return;\n }\n const state = Store.inspectState.peek();\n const canvas2 = refCanvas.current;\n if (!canvas2 || !refEventCatcher.current) return;\n if (isClickInLockIcon(e, canvas2)) {\n e.preventDefault();\n e.stopPropagation();\n handleLockIconClick(state);\n return;\n }\n if (state.kind === \"inspecting\") {\n handleElementClick(e);\n }\n };\n const handleKeyDown = (e) => {\n if (e.key !== \"Escape\") return;\n const state = Store.inspectState.peek();\n const canvas2 = refCanvas.current;\n if (!canvas2) return;\n if (document.activeElement?.id === \"react-scan-root\") {\n return;\n }\n signalWidgetViews.value = {\n view: \"none\"\n };\n if (state.kind === \"focused\" || state.kind === \"inspecting\") {\n e.preventDefault();\n e.stopPropagation();\n switch (state.kind) {\n case \"focused\": {\n startFadeIn();\n refCurrentRect.current = null;\n refLastHoveredElement.current = state.focusedDomElement;\n Store.inspectState.value = {\n kind: \"inspecting\",\n hoveredDomElement: state.focusedDomElement\n };\n break;\n }\n case \"inspecting\": {\n startFadeOut(() => {\n signalIsSettingsOpen.value = false;\n Store.inspectState.value = {\n kind: \"inspect-off\"\n };\n });\n break;\n }\n }\n }\n };\n const handleStateChange = (state, canvas2, ctx2) => {\n refCleanupMap.current.get(state.kind)?.();\n if (refEventCatcher.current) {\n if (state.kind !== \"inspecting\") {\n refEventCatcher.current.style.pointerEvents = \"none\";\n }\n }\n if (refRafId.current) {\n cancelAnimationFrame(refRafId.current);\n }\n let unsubReport;\n switch (state.kind) {\n case \"inspect-off\":\n startFadeOut();\n return;\n case \"inspecting\":\n drawHoverOverlay(state.hoveredDomElement, canvas2, ctx2, \"inspecting\");\n break;\n case \"focused\":\n if (!state.focusedDomElement) return;\n if (refLastHoveredElement.current !== state.focusedDomElement) {\n refLastHoveredElement.current = state.focusedDomElement;\n }\n signalWidgetViews.value = {\n view: \"inspector\"\n };\n drawHoverOverlay(state.focusedDomElement, canvas2, ctx2, \"locked\");\n unsubReport = Store.lastReportTime.subscribe(() => {\n if (refRafId.current && refCurrentRect.current) {\n const { parentCompositeFiber } = getCompositeComponentFromElement(\n state.focusedDomElement\n );\n if (parentCompositeFiber) {\n drawHoverOverlay(state.focusedDomElement, canvas2, ctx2, \"locked\");\n }\n }\n });\n if (unsubReport) {\n refCleanupMap.current.set(state.kind, unsubReport);\n }\n break;\n }\n };\n const updateCanvasSize = (canvas2, ctx2) => {\n const rect = canvas2.getBoundingClientRect();\n canvas2.width = rect.width * OVERLAY_DPR;\n canvas2.height = rect.height * OVERLAY_DPR;\n ctx2.scale(OVERLAY_DPR, OVERLAY_DPR);\n ctx2.save();\n };\n const handleResizeOrScroll = () => {\n const state = Store.inspectState.peek();\n const canvas2 = refCanvas.current;\n if (!canvas2) return;\n const ctx2 = canvas2?.getContext(\"2d\");\n if (!ctx2) return;\n cancelAnimationFrame(refRafId.current);\n clearTimeout(refTimeout.current);\n updateCanvasSize(canvas2, ctx2);\n refCurrentRect.current = null;\n if (state.kind === \"focused\" && state.focusedDomElement) {\n drawHoverOverlay(state.focusedDomElement, canvas2, ctx2, \"locked\");\n } else if (state.kind === \"inspecting\" && state.hoveredDomElement) {\n drawHoverOverlay(state.hoveredDomElement, canvas2, ctx2, \"inspecting\");\n }\n };\n const handlePointerDown = (e) => {\n const state = Store.inspectState.peek();\n const canvas2 = refCanvas.current;\n if (!canvas2) return;\n if (state.kind === \"inspecting\" || isClickInLockIcon(e, canvas2)) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n };\n useEffect17(() => {\n const canvas2 = refCanvas.current;\n if (!canvas2) return;\n const ctx2 = canvas2?.getContext(\"2d\");\n if (!ctx2) return;\n updateCanvasSize(canvas2, ctx2);\n const unSubState = Store.inspectState.subscribe((state) => {\n handleStateChange(state, canvas2, ctx2);\n });\n window.addEventListener(\"scroll\", handleResizeOrScroll, { passive: true });\n window.addEventListener(\"resize\", handleResizeOrScroll, { passive: true });\n document.addEventListener(\"pointermove\", handlePointerMove, {\n passive: true,\n capture: true\n });\n document.addEventListener(\"pointerdown\", handlePointerDown, {\n capture: true\n });\n document.addEventListener(\"click\", handleClick, { capture: true });\n document.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => {\n unsubscribeAll();\n unSubState();\n window.removeEventListener(\"scroll\", handleResizeOrScroll);\n window.removeEventListener(\"resize\", handleResizeOrScroll);\n document.removeEventListener(\"pointermove\", handlePointerMove, {\n capture: true\n });\n document.removeEventListener(\"click\", handleClick, { capture: true });\n document.removeEventListener(\"pointerdown\", handlePointerDown, {\n capture: true\n });\n document.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n if (refRafId.current) {\n cancelAnimationFrame(refRafId.current);\n }\n clearTimeout(refTimeout.current);\n };\n }, []);\n return /* @__PURE__ */ jsxs24(Fragment13, { children: [\n /* @__PURE__ */ jsx25(\n \"div\",\n {\n ref: refEventCatcher,\n className: cn(\"fixed top-0 left-0 w-screen h-screen\", \"z-[214748365]\"),\n style: {\n pointerEvents: \"none\"\n }\n }\n ),\n /* @__PURE__ */ jsx25(\n \"canvas\",\n {\n ref: refCanvas,\n dir: \"ltr\",\n className: cn(\n \"react-scan-inspector-overlay\",\n \"fixed top-0 left-0 w-screen h-screen\",\n \"pointer-events-none\",\n \"z-[214748367]\"\n )\n }\n )\n ] });\n};\n\n// src/web/widget/helpers.ts\nvar WindowDimensions = class {\n constructor(width, height) {\n this.width = width;\n this.height = height;\n this.maxWidth = width - SAFE_AREA * 2;\n this.maxHeight = height - SAFE_AREA * 2;\n }\n rightEdge(width) {\n return this.width - width - SAFE_AREA;\n }\n bottomEdge(height) {\n return this.height - height - SAFE_AREA;\n }\n isFullWidth(width) {\n return width >= this.maxWidth;\n }\n isFullHeight(height) {\n return height >= this.maxHeight;\n }\n};\nvar cachedWindowDimensions;\nvar getWindowDimensions = () => {\n const currentWidth = window.innerWidth;\n const currentHeight = window.innerHeight;\n if (cachedWindowDimensions && cachedWindowDimensions.width === currentWidth && cachedWindowDimensions.height === currentHeight) {\n return cachedWindowDimensions;\n }\n cachedWindowDimensions = new WindowDimensions(currentWidth, currentHeight);\n return cachedWindowDimensions;\n};\nvar getOppositeCorner = (position, currentCorner, isFullScreen, isFullWidth, isFullHeight) => {\n if (isFullScreen) {\n if (position === \"top-left\") return \"bottom-right\";\n if (position === \"top-right\") return \"bottom-left\";\n if (position === \"bottom-left\") return \"top-right\";\n if (position === \"bottom-right\") return \"top-left\";\n const [vertical, horizontal] = currentCorner.split(\"-\");\n if (position === \"left\") return `${vertical}-right`;\n if (position === \"right\") return `${vertical}-left`;\n if (position === \"top\") return `bottom-${horizontal}`;\n if (position === \"bottom\") return `top-${horizontal}`;\n }\n if (isFullWidth) {\n if (position === \"left\")\n return `${currentCorner.split(\"-\")[0]}-right`;\n if (position === \"right\")\n return `${currentCorner.split(\"-\")[0]}-left`;\n }\n if (isFullHeight) {\n if (position === \"top\")\n return `bottom-${currentCorner.split(\"-\")[1]}`;\n if (position === \"bottom\")\n return `top-${currentCorner.split(\"-\")[1]}`;\n }\n return currentCorner;\n};\nvar calculatePosition = (corner, width, height) => {\n const isRTL = getComputedStyle(document.body).direction === \"rtl\";\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const isMinimized = width === MIN_SIZE.width;\n const effectiveWidth = isMinimized ? width : Math.min(width, windowWidth - SAFE_AREA * 2);\n const effectiveHeight = isMinimized ? height : Math.min(height, windowHeight - SAFE_AREA * 2);\n let x;\n let y;\n let leftBound = SAFE_AREA;\n let rightBound = windowWidth - effectiveWidth - SAFE_AREA;\n let topBound = SAFE_AREA;\n let bottomBound = windowHeight - effectiveHeight - SAFE_AREA;\n switch (corner) {\n case \"top-right\":\n x = isRTL ? -leftBound : rightBound;\n y = topBound;\n break;\n case \"bottom-right\":\n x = isRTL ? -leftBound : rightBound;\n y = bottomBound;\n break;\n case \"bottom-left\":\n x = isRTL ? -rightBound : leftBound;\n y = bottomBound;\n break;\n case \"top-left\":\n x = isRTL ? -rightBound : leftBound;\n y = topBound;\n break;\n default:\n x = leftBound;\n y = topBound;\n break;\n }\n if (isMinimized) {\n if (isRTL) {\n x = Math.min(\n -leftBound,\n Math.max(x, -rightBound)\n );\n } else {\n x = Math.max(\n leftBound,\n Math.min(x, rightBound)\n );\n }\n y = Math.max(\n topBound,\n Math.min(y, bottomBound)\n );\n }\n return { x, y };\n};\nvar positionMatchesCorner = (position, corner) => {\n const [vertical, horizontal] = corner.split(\"-\");\n return position !== vertical && position !== horizontal;\n};\nvar getHandleVisibility = (position, corner, isFullWidth, isFullHeight) => {\n if (isFullWidth && isFullHeight) {\n return true;\n }\n if (!isFullWidth && !isFullHeight) {\n return positionMatchesCorner(position, corner);\n }\n if (isFullWidth) {\n return position !== corner.split(\"-\")[0];\n }\n if (isFullHeight) {\n return position !== corner.split(\"-\")[1];\n }\n return false;\n};\nvar calculateBoundedSize = (currentSize, delta, isWidth) => {\n const min = isWidth ? MIN_SIZE.width : MIN_SIZE.initialHeight;\n const max = isWidth ? getWindowDimensions().maxWidth : getWindowDimensions().maxHeight;\n const newSize = currentSize + delta;\n return Math.min(Math.max(min, newSize), max);\n};\nvar calculateNewSizeAndPosition = (position, initialSize, initialPosition, deltaX, deltaY) => {\n const isRTL = getComputedStyle(document.body).direction === \"rtl\";\n const maxWidth = window.innerWidth - SAFE_AREA * 2;\n const maxHeight = window.innerHeight - SAFE_AREA * 2;\n let newWidth = initialSize.width;\n let newHeight = initialSize.height;\n let newX = initialPosition.x;\n let newY = initialPosition.y;\n if (isRTL && position.includes(\"right\")) {\n const availableWidth = -initialPosition.x + initialSize.width - SAFE_AREA;\n const proposedWidth = Math.min(initialSize.width + deltaX, availableWidth);\n newWidth = Math.min(maxWidth, Math.max(MIN_SIZE.width, proposedWidth));\n newX = initialPosition.x + (newWidth - initialSize.width);\n }\n if (isRTL && position.includes(\"left\")) {\n const availableWidth = window.innerWidth - initialPosition.x - SAFE_AREA;\n const proposedWidth = Math.min(initialSize.width - deltaX, availableWidth);\n newWidth = Math.min(maxWidth, Math.max(MIN_SIZE.width, proposedWidth));\n }\n if (!isRTL && position.includes(\"right\")) {\n const availableWidth = window.innerWidth - initialPosition.x - SAFE_AREA;\n const proposedWidth = Math.min(initialSize.width + deltaX, availableWidth);\n newWidth = Math.min(maxWidth, Math.max(MIN_SIZE.width, proposedWidth));\n }\n if (!isRTL && position.includes(\"left\")) {\n const availableWidth = initialPosition.x + initialSize.width - SAFE_AREA;\n const proposedWidth = Math.min(initialSize.width - deltaX, availableWidth);\n newWidth = Math.min(maxWidth, Math.max(MIN_SIZE.width, proposedWidth));\n newX = initialPosition.x - (newWidth - initialSize.width);\n }\n if (position.includes(\"bottom\")) {\n const availableHeight = window.innerHeight - initialPosition.y - SAFE_AREA;\n const proposedHeight = Math.min(\n initialSize.height + deltaY,\n availableHeight\n );\n newHeight = Math.min(\n maxHeight,\n Math.max(MIN_SIZE.initialHeight, proposedHeight)\n );\n }\n if (position.includes(\"top\")) {\n const availableHeight = initialPosition.y + initialSize.height - SAFE_AREA;\n const proposedHeight = Math.min(\n initialSize.height - deltaY,\n availableHeight\n );\n newHeight = Math.min(\n maxHeight,\n Math.max(MIN_SIZE.initialHeight, proposedHeight)\n );\n newY = initialPosition.y - (newHeight - initialSize.height);\n }\n let leftBound = SAFE_AREA;\n let rightBound = window.innerWidth - SAFE_AREA - newWidth;\n let topBound = SAFE_AREA;\n let bottomBound = window.innerHeight - SAFE_AREA - newHeight;\n if (isRTL) {\n newX = Math.min(\n -leftBound,\n Math.max(newX, -rightBound)\n );\n } else {\n newX = Math.max(\n leftBound,\n Math.min(newX, rightBound)\n );\n }\n newY = Math.max(\n topBound,\n Math.min(newY, bottomBound)\n );\n return {\n newSize: { width: newWidth, height: newHeight },\n newPosition: { x: newX, y: newY }\n };\n};\nvar getClosestCorner = (position) => {\n const windowDims = getWindowDimensions();\n const distances = {\n \"top-left\": Math.hypot(position.x, position.y),\n \"top-right\": Math.hypot(windowDims.maxWidth - position.x, position.y),\n \"bottom-left\": Math.hypot(position.x, windowDims.maxHeight - position.y),\n \"bottom-right\": Math.hypot(\n windowDims.maxWidth - position.x,\n windowDims.maxHeight - position.y\n )\n };\n let closest = \"top-left\";\n for (const key in distances) {\n if (distances[key] < distances[closest]) {\n closest = key;\n }\n }\n return closest;\n};\nvar getBestCorner = (mouseX, mouseY, initialMouseX, initialMouseY, threshold = 100) => {\n const deltaX = initialMouseX !== void 0 ? mouseX - initialMouseX : 0;\n const deltaY = initialMouseY !== void 0 ? mouseY - initialMouseY : 0;\n const windowCenterX = window.innerWidth / 2;\n const windowCenterY = window.innerHeight / 2;\n const movingRight = deltaX > threshold;\n const movingLeft = deltaX < -threshold;\n const movingDown = deltaY > threshold;\n const movingUp = deltaY < -threshold;\n if (movingRight || movingLeft) {\n const isBottom = mouseY > windowCenterY;\n return movingRight ? isBottom ? \"bottom-right\" : \"top-right\" : isBottom ? \"bottom-left\" : \"top-left\";\n }\n if (movingDown || movingUp) {\n const isRight = mouseX > windowCenterX;\n return movingDown ? isRight ? \"bottom-right\" : \"bottom-left\" : isRight ? \"top-right\" : \"top-left\";\n }\n return mouseX > windowCenterX ? mouseY > windowCenterY ? \"bottom-right\" : \"top-right\" : mouseY > windowCenterY ? \"bottom-left\" : \"top-left\";\n};\n\n// src/web/widget/resize-handle.tsx\nimport { useCallback as useCallback5, useEffect as useEffect18, useRef as useRef15 } from \"preact/hooks\";\nimport { jsx as jsx26 } from \"preact/jsx-runtime\";\nvar ResizeHandle = ({ position }) => {\n const refContainer = useRef15(null);\n const prevWidth = useRef15(null);\n const prevHeight = useRef15(null);\n const prevCorner = useRef15(null);\n useEffect18(() => {\n const container = refContainer.current;\n if (!container) return;\n const updateVisibility = () => {\n container.classList.remove(\"pointer-events-none\");\n const isFocused = Store.inspectState.value.kind === \"focused\";\n const shouldShow = signalWidgetViews.value.view !== \"none\";\n const isVisible = (isFocused || shouldShow) && getHandleVisibility(\n position,\n signalWidget.value.corner,\n signalWidget.value.dimensions.isFullWidth,\n signalWidget.value.dimensions.isFullHeight\n );\n if (isVisible) {\n container.classList.remove(\n \"hidden\",\n \"pointer-events-none\",\n \"opacity-0\"\n );\n } else {\n container.classList.add(\"hidden\", \"pointer-events-none\", \"opacity-0\");\n }\n };\n const unsubscribeSignalWidget = signalWidget.subscribe((state) => {\n if (prevWidth.current !== null && prevHeight.current !== null && prevCorner.current !== null && state.dimensions.width === prevWidth.current && state.dimensions.height === prevHeight.current && state.corner === prevCorner.current) {\n return;\n }\n updateVisibility();\n prevWidth.current = state.dimensions.width;\n prevHeight.current = state.dimensions.height;\n prevCorner.current = state.corner;\n });\n const unsubscribeInspectState = Store.inspectState.subscribe(() => {\n updateVisibility();\n });\n return () => {\n unsubscribeSignalWidget();\n unsubscribeInspectState();\n prevWidth.current = null;\n prevHeight.current = null;\n prevCorner.current = null;\n };\n }, []);\n const handleResize = useCallback5(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n const widget = signalRefWidget.value;\n if (!widget) return;\n const containerStyle = widget.style;\n const { dimensions } = signalWidget.value;\n const initialX = e.clientX;\n const initialY = e.clientY;\n const initialWidth = dimensions.width;\n const initialHeight = dimensions.height;\n const initialPosition = dimensions.position;\n signalWidget.value = {\n ...signalWidget.value,\n dimensions: {\n ...dimensions,\n isFullWidth: false,\n isFullHeight: false,\n width: initialWidth,\n height: initialHeight,\n position: initialPosition\n }\n };\n let rafId = null;\n const handlePointerMove = (e2) => {\n if (rafId) return;\n containerStyle.transition = \"none\";\n rafId = requestAnimationFrame(() => {\n const { newSize, newPosition } = calculateNewSizeAndPosition(\n position,\n { width: initialWidth, height: initialHeight },\n initialPosition,\n e2.clientX - initialX,\n e2.clientY - initialY\n );\n containerStyle.transform = `translate3d(${newPosition.x}px, ${newPosition.y}px, 0)`;\n containerStyle.width = `${newSize.width}px`;\n containerStyle.height = `${newSize.height}px`;\n const maxTreeWidth = Math.floor(newSize.width - MIN_CONTAINER_WIDTH / 2);\n const currentTreeWidth = signalWidget.value.componentsTree.width;\n const newTreeWidth = Math.min(\n maxTreeWidth,\n Math.max(MIN_CONTAINER_WIDTH, currentTreeWidth)\n );\n signalWidget.value = {\n ...signalWidget.value,\n dimensions: {\n isFullWidth: false,\n isFullHeight: false,\n width: newSize.width,\n height: newSize.height,\n position: newPosition\n },\n componentsTree: {\n ...signalWidget.value.componentsTree,\n width: newTreeWidth\n }\n };\n rafId = null;\n });\n };\n const handlePointerUp = () => {\n if (rafId) {\n cancelAnimationFrame(rafId);\n rafId = null;\n }\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp);\n const { dimensions: dimensions2, corner } = signalWidget.value;\n const windowDims = getWindowDimensions();\n const isCurrentFullWidth = windowDims.isFullWidth(dimensions2.width);\n const isCurrentFullHeight = windowDims.isFullHeight(dimensions2.height);\n const isFullScreen = isCurrentFullWidth && isCurrentFullHeight;\n let newCorner = corner;\n if (isFullScreen || isCurrentFullWidth || isCurrentFullHeight) {\n newCorner = getClosestCorner(dimensions2.position);\n }\n const newPosition = calculatePosition(\n newCorner,\n dimensions2.width,\n dimensions2.height\n );\n const onTransitionEnd = () => {\n widget.removeEventListener(\"transitionend\", onTransitionEnd);\n };\n widget.addEventListener(\"transitionend\", onTransitionEnd);\n containerStyle.transform = `translate3d(${newPosition.x}px, ${newPosition.y}px, 0)`;\n signalWidget.value = {\n ...signalWidget.value,\n corner: newCorner,\n dimensions: {\n isFullWidth: isCurrentFullWidth,\n isFullHeight: isCurrentFullHeight,\n width: dimensions2.width,\n height: dimensions2.height,\n position: newPosition\n },\n lastDimensions: {\n isFullWidth: isCurrentFullWidth,\n isFullHeight: isCurrentFullHeight,\n width: dimensions2.width,\n height: dimensions2.height,\n position: newPosition\n }\n };\n saveLocalStorage(LOCALSTORAGE_KEY, {\n corner: newCorner,\n dimensions: signalWidget.value.dimensions,\n lastDimensions: signalWidget.value.lastDimensions,\n componentsTree: signalWidget.value.componentsTree\n });\n };\n document.addEventListener(\"pointermove\", handlePointerMove, {\n passive: true\n });\n document.addEventListener(\"pointerup\", handlePointerUp);\n },\n []\n );\n const handleDoubleClick = useCallback5(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n const widget = signalRefWidget.value;\n if (!widget) return;\n const containerStyle = widget.style;\n const { dimensions, corner } = signalWidget.value;\n const windowDims = getWindowDimensions();\n const isCurrentFullWidth = windowDims.isFullWidth(dimensions.width);\n const isCurrentFullHeight = windowDims.isFullHeight(dimensions.height);\n const isFullScreen = isCurrentFullWidth && isCurrentFullHeight;\n const isPartiallyMaximized = (isCurrentFullWidth || isCurrentFullHeight) && !isFullScreen;\n let newWidth = dimensions.width;\n let newHeight = dimensions.height;\n const newCorner = getOppositeCorner(\n position,\n corner,\n isFullScreen,\n isCurrentFullWidth,\n isCurrentFullHeight\n );\n if (position === \"left\" || position === \"right\") {\n newWidth = isCurrentFullWidth ? dimensions.width : windowDims.maxWidth;\n if (isPartiallyMaximized) {\n newWidth = isCurrentFullWidth ? MIN_SIZE.width : windowDims.maxWidth;\n }\n } else {\n newHeight = isCurrentFullHeight ? dimensions.height : windowDims.maxHeight;\n if (isPartiallyMaximized) {\n newHeight = isCurrentFullHeight ? MIN_SIZE.initialHeight : windowDims.maxHeight;\n }\n }\n if (isFullScreen) {\n if (position === \"left\" || position === \"right\") {\n newWidth = MIN_SIZE.width;\n } else {\n newHeight = MIN_SIZE.initialHeight;\n }\n }\n const newPosition = calculatePosition(newCorner, newWidth, newHeight);\n const newDimensions = {\n isFullWidth: windowDims.isFullWidth(newWidth),\n isFullHeight: windowDims.isFullHeight(newHeight),\n width: newWidth,\n height: newHeight,\n position: newPosition\n };\n const maxTreeWidth = Math.floor(newWidth - MIN_SIZE.width / 2);\n const currentTreeWidth = signalWidget.value.componentsTree.width;\n const defaultWidth = Math.floor(newWidth * 0.3);\n const newTreeWidth = isCurrentFullWidth ? MIN_CONTAINER_WIDTH : (position === \"left\" || position === \"right\") && !isCurrentFullWidth ? Math.min(maxTreeWidth, Math.max(MIN_CONTAINER_WIDTH, defaultWidth)) : Math.min(\n maxTreeWidth,\n Math.max(MIN_CONTAINER_WIDTH, currentTreeWidth)\n );\n requestAnimationFrame(() => {\n signalWidget.value = {\n corner: newCorner,\n dimensions: newDimensions,\n lastDimensions: dimensions,\n componentsTree: {\n ...signalWidget.value.componentsTree,\n width: newTreeWidth\n }\n };\n containerStyle.transition = \"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\";\n containerStyle.width = `${newWidth}px`;\n containerStyle.height = `${newHeight}px`;\n containerStyle.transform = `translate3d(${newPosition.x}px, ${newPosition.y}px, 0)`;\n });\n saveLocalStorage(LOCALSTORAGE_KEY, {\n corner: newCorner,\n dimensions: newDimensions,\n lastDimensions: dimensions,\n componentsTree: {\n ...signalWidget.value.componentsTree,\n width: newTreeWidth\n }\n });\n },\n []\n );\n return /* @__PURE__ */ jsx26(\n \"div\",\n {\n ref: refContainer,\n onPointerDown: handleResize,\n onDblClick: handleDoubleClick,\n className: cn(\n \"absolute z-50\",\n \"flex items-center justify-center\",\n \"group\",\n \"transition-colors select-none\",\n \"peer\",\n {\n \"resize-left peer/left\": position === \"left\",\n \"resize-right peer/right z-10\": position === \"right\",\n \"resize-top peer/top\": position === \"top\",\n \"resize-bottom peer/bottom\": position === \"bottom\"\n }\n ),\n children: /* @__PURE__ */ jsx26(\"span\", { className: \"resize-line-wrapper\", children: /* @__PURE__ */ jsx26(\"span\", { className: \"resize-line\", children: /* @__PURE__ */ jsx26(\n Icon,\n {\n name: \"icon-ellipsis\",\n size: 18,\n className: cn(\n \"text-neutral-400\",\n (position === \"left\" || position === \"right\") && \"rotate-90\"\n )\n }\n ) }) })\n }\n );\n};\n\n// src/web/widget/index.tsx\nimport { Fragment as Fragment14, jsx as jsx27, jsxs as jsxs25 } from \"preact/jsx-runtime\";\nvar COLLAPSED_SIZE = {\n horizontal: { width: 20, height: 48 },\n vertical: { width: 48, height: 20 }\n};\nvar Widget = () => {\n const refWidget = useRef16(null);\n const refShouldOpen = useRef16(false);\n const refInitialMinimizedWidth = useRef16(0);\n const refInitialMinimizedHeight = useRef16(0);\n const refExpandingFromCollapsed = useRef16(false);\n const updateWidgetPosition = useCallback6((shouldSave = true) => {\n if (!refWidget.current) return;\n const { corner } = signalWidget.value;\n let newWidth;\n let newHeight;\n if (signalWidgetCollapsed.value) {\n const orientation = signalWidgetCollapsed.value.orientation || \"horizontal\";\n const size = COLLAPSED_SIZE[orientation];\n newWidth = size.width;\n newHeight = size.height;\n } else if (refShouldOpen.current) {\n const lastDims = signalWidget.value.lastDimensions;\n newWidth = calculateBoundedSize(lastDims.width, 0, true);\n newHeight = calculateBoundedSize(lastDims.height, 0, false);\n if (refExpandingFromCollapsed.current) {\n refExpandingFromCollapsed.current = false;\n }\n } else {\n newWidth = refInitialMinimizedWidth.current;\n newHeight = refInitialMinimizedHeight.current;\n }\n const newPosition = calculatePosition(corner, newWidth, newHeight);\n let finalPosition = newPosition;\n if (signalWidgetCollapsed.value) {\n const { corner: collapsedCorner, orientation = \"horizontal\" } = signalWidgetCollapsed.value;\n const size = COLLAPSED_SIZE[orientation];\n switch (collapsedCorner) {\n case \"top-left\":\n finalPosition = orientation === \"horizontal\" ? { x: -1, y: SAFE_AREA } : { x: SAFE_AREA, y: -1 };\n break;\n case \"bottom-left\":\n finalPosition = orientation === \"horizontal\" ? { x: -1, y: window.innerHeight - size.height - SAFE_AREA } : { x: SAFE_AREA, y: window.innerHeight - size.height + 1 };\n break;\n case \"top-right\":\n finalPosition = orientation === \"horizontal\" ? { x: window.innerWidth - size.width + 1, y: SAFE_AREA } : { x: window.innerWidth - size.width - SAFE_AREA, y: -1 };\n break;\n case \"bottom-right\":\n default:\n finalPosition = orientation === \"horizontal\" ? {\n x: window.innerWidth - size.width + 1,\n y: window.innerHeight - size.height - SAFE_AREA\n } : {\n x: window.innerWidth - size.width - SAFE_AREA,\n y: window.innerHeight - size.height + 1\n };\n break;\n }\n }\n const isTooSmall = newWidth < MIN_SIZE.width || newHeight < MIN_SIZE.initialHeight;\n const shouldPersist = shouldSave && !isTooSmall;\n const container = refWidget.current;\n const containerStyle = container.style;\n let rafId = null;\n const onTransitionEnd = () => {\n updateDimensions();\n container.removeEventListener(\"transitionend\", onTransitionEnd);\n if (rafId) {\n cancelAnimationFrame(rafId);\n rafId = null;\n }\n };\n container.addEventListener(\"transitionend\", onTransitionEnd);\n containerStyle.transition = \"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\";\n rafId = requestAnimationFrame(() => {\n containerStyle.width = `${newWidth}px`;\n containerStyle.height = `${newHeight}px`;\n containerStyle.transform = `translate3d(${finalPosition.x}px, ${finalPosition.y}px, 0)`;\n rafId = null;\n });\n const newDimensions = {\n isFullWidth: newWidth >= window.innerWidth - SAFE_AREA * 2,\n isFullHeight: newHeight >= window.innerHeight - SAFE_AREA * 2,\n width: newWidth,\n height: newHeight,\n position: finalPosition\n };\n signalWidget.value = {\n corner,\n dimensions: newDimensions,\n lastDimensions: refShouldOpen ? signalWidget.value.lastDimensions : newWidth > refInitialMinimizedWidth.current ? newDimensions : signalWidget.value.lastDimensions,\n componentsTree: signalWidget.value.componentsTree\n };\n if (shouldPersist) {\n saveLocalStorage(LOCALSTORAGE_KEY, {\n corner: signalWidget.value.corner,\n dimensions: signalWidget.value.dimensions,\n lastDimensions: signalWidget.value.lastDimensions,\n componentsTree: signalWidget.value.componentsTree\n });\n }\n updateDimensions();\n }, []);\n const handleDrag = useCallback6(\n (e) => {\n e.preventDefault();\n if (!refWidget.current || e.target.closest(\"button\"))\n return;\n const container = refWidget.current;\n const containerStyle = container.style;\n const { dimensions } = signalWidget.value;\n const initialMouseX = e.clientX;\n const initialMouseY = e.clientY;\n const initialX = dimensions.position.x;\n const initialY = dimensions.position.y;\n let currentX = initialX;\n let currentY = initialY;\n let rafId = null;\n let hasMoved = false;\n let lastMouseX = initialMouseX;\n let lastMouseY = initialMouseY;\n const handlePointerMove = (e2) => {\n if (rafId) return;\n hasMoved = true;\n lastMouseX = e2.clientX;\n lastMouseY = e2.clientY;\n rafId = requestAnimationFrame(() => {\n const deltaX = lastMouseX - initialMouseX;\n const deltaY = lastMouseY - initialMouseY;\n currentX = Number(initialX) + deltaX;\n currentY = Number(initialY) + deltaY;\n containerStyle.transition = \"none\";\n containerStyle.transform = `translate3d(${currentX}px, ${currentY}px, 0)`;\n const widgetRight = currentX + dimensions.width;\n const widgetBottom = currentY + dimensions.height;\n const outsideLeft = Math.max(0, -currentX);\n const outsideRight = Math.max(0, widgetRight - window.innerWidth);\n const outsideTop = Math.max(0, -currentY);\n const outsideBottom = Math.max(0, widgetBottom - window.innerHeight);\n const horizontalOutside = Math.min(\n dimensions.width,\n outsideLeft + outsideRight\n );\n const verticalOutside = Math.min(\n dimensions.height,\n outsideTop + outsideBottom\n );\n const areaOutside = horizontalOutside * dimensions.height + verticalOutside * dimensions.width - horizontalOutside * verticalOutside;\n const totalArea = dimensions.width * dimensions.height;\n let shouldCollapse = areaOutside > totalArea * 0.35;\n if (!shouldCollapse && ReactScanInternals.options.value.showFPS) {\n const fpsRight = currentX + dimensions.width;\n const fpsLeft = fpsRight - 100;\n const fpsFullyOutside = fpsRight <= 0 || fpsLeft >= window.innerWidth || currentY + dimensions.height <= 0 || currentY >= window.innerHeight;\n shouldCollapse = fpsFullyOutside;\n }\n if (shouldCollapse) {\n const widgetCenterX = currentX + dimensions.width / 2;\n const widgetCenterY = currentY + dimensions.height / 2;\n const screenCenterX = window.innerWidth / 2;\n const screenCenterY = window.innerHeight / 2;\n let targetCorner;\n if (widgetCenterX < screenCenterX) {\n targetCorner = widgetCenterY < screenCenterY ? \"top-left\" : \"bottom-left\";\n } else {\n targetCorner = widgetCenterY < screenCenterY ? \"top-right\" : \"bottom-right\";\n }\n let orientation;\n const horizontalOverflow = Math.max(outsideLeft, outsideRight);\n const verticalOverflow = Math.max(outsideTop, outsideBottom);\n orientation = horizontalOverflow > verticalOverflow ? \"horizontal\" : \"vertical\";\n signalWidget.value = {\n ...signalWidget.value,\n corner: targetCorner,\n lastDimensions: {\n ...dimensions,\n position: calculatePosition(\n targetCorner,\n dimensions.width,\n dimensions.height\n )\n }\n };\n const collapsedPosition = {\n corner: targetCorner,\n orientation\n };\n signalWidgetCollapsed.value = collapsedPosition;\n saveLocalStorage(LOCALSTORAGE_COLLAPSED_KEY, collapsedPosition);\n saveLocalStorage(LOCALSTORAGE_KEY, signalWidget.value);\n updateWidgetPosition(false);\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerEnd);\n if (rafId) {\n cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n rafId = null;\n });\n };\n const handlePointerEnd = () => {\n if (!container) return;\n if (rafId) {\n cancelAnimationFrame(rafId);\n rafId = null;\n }\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerEnd);\n const totalDeltaX = Math.abs(lastMouseX - initialMouseX);\n const totalDeltaY = Math.abs(lastMouseY - initialMouseY);\n const totalMovement = Math.sqrt(\n totalDeltaX * totalDeltaX + totalDeltaY * totalDeltaY\n );\n if (!hasMoved || totalMovement < 60) return;\n const newCorner = getBestCorner(\n lastMouseX,\n lastMouseY,\n initialMouseX,\n initialMouseY,\n Store.inspectState.value.kind === \"focused\" ? 80 : 40\n );\n if (newCorner === signalWidget.value.corner) {\n containerStyle.transition = \"transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)\";\n const currentPosition = signalWidget.value.dimensions.position;\n requestAnimationFrame(() => {\n containerStyle.transform = `translate3d(${currentPosition.x}px, ${currentPosition.y}px, 0)`;\n });\n return;\n }\n const snappedPosition = calculatePosition(\n newCorner,\n dimensions.width,\n dimensions.height\n );\n if (currentX === initialX && currentY === initialY) return;\n const onTransitionEnd = () => {\n containerStyle.transition = \"none\";\n updateDimensions();\n container.removeEventListener(\"transitionend\", onTransitionEnd);\n if (rafId) {\n cancelAnimationFrame(rafId);\n rafId = null;\n }\n };\n container.addEventListener(\"transitionend\", onTransitionEnd);\n containerStyle.transition = \"transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)\";\n requestAnimationFrame(() => {\n containerStyle.transform = `translate3d(${snappedPosition.x}px, ${snappedPosition.y}px, 0)`;\n });\n signalWidget.value = {\n corner: newCorner,\n dimensions: {\n isFullWidth: dimensions.isFullWidth,\n isFullHeight: dimensions.isFullHeight,\n width: dimensions.width,\n height: dimensions.height,\n position: snappedPosition\n },\n lastDimensions: signalWidget.value.lastDimensions,\n componentsTree: signalWidget.value.componentsTree\n };\n saveLocalStorage(LOCALSTORAGE_KEY, {\n corner: newCorner,\n dimensions: signalWidget.value.dimensions,\n lastDimensions: signalWidget.value.lastDimensions,\n componentsTree: signalWidget.value.componentsTree\n });\n };\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerEnd);\n },\n []\n );\n const handleCollapsedDrag = useCallback6(\n (e) => {\n e.preventDefault();\n if (!refWidget.current || !signalWidgetCollapsed.value) return;\n const { corner: collapsedCorner, orientation = \"horizontal\" } = signalWidgetCollapsed.value;\n const initialMouseX = e.clientX;\n const initialMouseY = e.clientY;\n let rafId = null;\n let hasExpanded = false;\n const DRAG_THRESHOLD = 50;\n const handlePointerMove = (e2) => {\n if (hasExpanded || rafId) return;\n const deltaX = e2.clientX - initialMouseX;\n const deltaY = e2.clientY - initialMouseY;\n let shouldExpand = false;\n if (orientation === \"horizontal\") {\n if (collapsedCorner.endsWith(\"left\") && deltaX > DRAG_THRESHOLD) {\n shouldExpand = true;\n } else if (collapsedCorner.endsWith(\"right\") && deltaX < -DRAG_THRESHOLD) {\n shouldExpand = true;\n }\n } else {\n if (collapsedCorner.startsWith(\"top\") && deltaY > DRAG_THRESHOLD) {\n shouldExpand = true;\n } else if (collapsedCorner.startsWith(\"bottom\") && deltaY < -DRAG_THRESHOLD) {\n shouldExpand = true;\n }\n }\n if (shouldExpand) {\n hasExpanded = true;\n signalWidgetCollapsed.value = null;\n saveLocalStorage(LOCALSTORAGE_COLLAPSED_KEY, null);\n if (refInitialMinimizedWidth.current === 0 && refWidget.current) {\n requestAnimationFrame(() => {\n if (refWidget.current) {\n refWidget.current.style.width = \"min-content\";\n const naturalWidth = refWidget.current.offsetWidth;\n refInitialMinimizedWidth.current = naturalWidth || 300;\n const lastDims = signalWidget.value.lastDimensions;\n const targetWidth = calculateBoundedSize(\n lastDims.width,\n 0,\n true\n );\n const targetHeight = calculateBoundedSize(\n lastDims.height,\n 0,\n false\n );\n let newX = e2.clientX - targetWidth / 2;\n let newY = e2.clientY - targetHeight / 2;\n newX = Math.max(\n SAFE_AREA,\n Math.min(newX, window.innerWidth - targetWidth - SAFE_AREA)\n );\n newY = Math.max(\n SAFE_AREA,\n Math.min(newY, window.innerHeight - targetHeight - SAFE_AREA)\n );\n signalWidget.value = {\n ...signalWidget.value,\n dimensions: {\n ...signalWidget.value.dimensions,\n position: { x: newX, y: newY }\n }\n };\n updateWidgetPosition(true);\n const savedView = readLocalStorage(\n LOCALSTORAGE_LAST_VIEW_KEY\n );\n signalWidgetViews.value = savedView || { view: \"none\" };\n setTimeout(() => {\n if (refWidget.current) {\n const dragEvent = new PointerEvent(\"pointerdown\", {\n clientX: e2.clientX,\n clientY: e2.clientY,\n pointerId: e2.pointerId,\n bubbles: true\n });\n refWidget.current.dispatchEvent(dragEvent);\n }\n }, 100);\n }\n });\n } else {\n updateWidgetPosition(true);\n const savedView = readLocalStorage(\n LOCALSTORAGE_LAST_VIEW_KEY\n );\n signalWidgetViews.value = savedView || { view: \"none\" };\n }\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerEnd);\n }\n };\n const handlePointerEnd = () => {\n if (rafId) {\n cancelAnimationFrame(rafId);\n rafId = null;\n }\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerEnd);\n };\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerEnd);\n },\n []\n );\n useEffect19(() => {\n if (!refWidget.current) return;\n removeLocalStorage(LOCALSTORAGE_LAST_VIEW_KEY);\n if (!signalWidgetCollapsed.value) {\n refWidget.current.style.width = \"min-content\";\n refInitialMinimizedHeight.current = 36;\n refInitialMinimizedWidth.current = refWidget.current.offsetWidth;\n } else {\n refInitialMinimizedHeight.current = 36;\n refInitialMinimizedWidth.current = 0;\n }\n refWidget.current.style.maxWidth = `calc(100vw - ${SAFE_AREA * 2}px)`;\n refWidget.current.style.maxHeight = `calc(100vh - ${SAFE_AREA * 2}px)`;\n updateWidgetPosition();\n if (Store.inspectState.value.kind !== \"focused\" && !signalWidgetCollapsed.value && !refExpandingFromCollapsed.current) {\n signalWidget.value = {\n ...signalWidget.value,\n dimensions: {\n isFullWidth: false,\n isFullHeight: false,\n width: refInitialMinimizedWidth.current,\n height: refInitialMinimizedHeight.current,\n position: signalWidget.value.dimensions.position\n }\n };\n }\n signalRefWidget.value = refWidget.current;\n const unsubscribeSignalWidget = signalWidget.subscribe((widget) => {\n if (!refWidget.current) return;\n const { x, y } = widget.dimensions.position;\n const { width, height } = widget.dimensions;\n const container = refWidget.current;\n requestAnimationFrame(() => {\n container.style.transform = `translate3d(${x}px, ${y}px, 0)`;\n container.style.width = `${width}px`;\n container.style.height = `${height}px`;\n });\n });\n const unsubscribeSignalWidgetViews = signalWidgetViews.subscribe(\n (state) => {\n refShouldOpen.current = state.view !== \"none\";\n updateWidgetPosition();\n if (!signalWidgetCollapsed.value) {\n if (state.view !== \"none\") {\n saveLocalStorage(LOCALSTORAGE_LAST_VIEW_KEY, state);\n } else {\n removeLocalStorage(LOCALSTORAGE_LAST_VIEW_KEY);\n }\n }\n }\n );\n const unsubscribeStoreInspectState = Store.inspectState.subscribe(\n (state) => {\n refShouldOpen.current = state.kind === \"focused\";\n updateWidgetPosition();\n }\n );\n const handleWindowResize = () => {\n updateWidgetPosition(true);\n };\n window.addEventListener(\"resize\", handleWindowResize, { passive: true });\n return () => {\n window.removeEventListener(\"resize\", handleWindowResize);\n unsubscribeSignalWidgetViews();\n unsubscribeStoreInspectState();\n unsubscribeSignalWidget();\n saveLocalStorage(LOCALSTORAGE_KEY, {\n ...defaultWidgetConfig,\n corner: signalWidget.value.corner\n });\n };\n }, []);\n const [_, setTriggerRender] = useState21(false);\n useEffect19(() => {\n setTriggerRender(true);\n }, []);\n const isCollapsed = signalWidgetCollapsed.value;\n let arrowRotationClass = \"\";\n if (isCollapsed) {\n const { orientation = \"horizontal\", corner } = isCollapsed;\n if (orientation === \"horizontal\") {\n arrowRotationClass = corner?.endsWith(\"right\") ? \"rotate-180\" : \"\";\n } else {\n arrowRotationClass = corner?.startsWith(\"bottom\") ? \"-rotate-90\" : \"rotate-90\";\n }\n }\n return /* @__PURE__ */ jsxs25(Fragment14, { children: [\n /* @__PURE__ */ jsx27(ScanOverlay, {}),\n /* @__PURE__ */ jsx27(ToolbarElementContext.Provider, { value: refWidget.current, children: /* @__PURE__ */ jsx27(\n \"div\",\n {\n id: \"react-scan-toolbar\",\n dir: \"ltr\",\n ref: refWidget,\n onPointerDown: !isCollapsed ? handleDrag : handleCollapsedDrag,\n className: cn(\n \"fixed inset-0\",\n isCollapsed ? (() => {\n const { orientation = \"horizontal\", corner } = isCollapsed;\n if (orientation === \"horizontal\") {\n return corner?.endsWith(\"right\") ? \"rounded-tl-lg rounded-bl-lg shadow-lg\" : \"rounded-tr-lg rounded-br-lg shadow-lg\";\n } else {\n return corner?.startsWith(\"bottom\") ? \"rounded-tl-lg rounded-tr-lg shadow-lg\" : \"rounded-bl-lg rounded-br-lg shadow-lg\";\n }\n })() : \"rounded-lg shadow-lg\",\n \"flex flex-col\",\n \"font-mono text-[13px]\",\n \"user-select-none\",\n \"opacity-0\",\n isCollapsed ? \"cursor-pointer\" : \"cursor-move\",\n \"z-[124124124124]\",\n \"animate-fade-in animation-duration-300 animation-delay-300\",\n \"will-change-transform\",\n \"[touch-action:none]\"\n ),\n children: isCollapsed ? /* @__PURE__ */ jsx27(\n \"button\",\n {\n type: \"button\",\n onClick: () => {\n signalWidgetCollapsed.value = null;\n saveLocalStorage(LOCALSTORAGE_COLLAPSED_KEY, null);\n if (refInitialMinimizedWidth.current === 0 && refWidget.current) {\n requestAnimationFrame(() => {\n if (refWidget.current) {\n refWidget.current.style.width = \"min-content\";\n const naturalWidth = refWidget.current.offsetWidth;\n refInitialMinimizedWidth.current = naturalWidth || 300;\n updateWidgetPosition(true);\n }\n });\n }\n const savedView = readLocalStorage(\n LOCALSTORAGE_LAST_VIEW_KEY\n );\n signalWidgetViews.value = savedView || { view: \"none\" };\n },\n className: \"flex items-center justify-center w-full h-full text-white\",\n title: \"Expand toolbar\",\n children: /* @__PURE__ */ jsx27(\n Icon,\n {\n name: \"icon-chevron-right\",\n size: 16,\n className: cn(\"transition-transform\", arrowRotationClass)\n }\n )\n }\n ) : /* @__PURE__ */ jsxs25(Fragment14, { children: [\n /* @__PURE__ */ jsx27(ResizeHandle, { position: \"top\" }),\n /* @__PURE__ */ jsx27(ResizeHandle, { position: \"bottom\" }),\n /* @__PURE__ */ jsx27(ResizeHandle, { position: \"left\" }),\n /* @__PURE__ */ jsx27(ResizeHandle, { position: \"right\" }),\n /* @__PURE__ */ jsx27(Content, {})\n ] })\n }\n ) })\n ] });\n};\nvar ToolbarElementContext = createContext2(null);\n\n// src/web/components/svg-sprite/index.tsx\nimport { jsx as jsx28, jsxs as jsxs26 } from \"preact/jsx-runtime\";\nvar SvgSprite = () => {\n return /* @__PURE__ */ jsxs26(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", style: \"display: none;\", children: [\n /* @__PURE__ */ jsx28(\"title\", { children: \"React Scan Icons\" }),\n /* @__PURE__ */ jsxs26(\"symbol\", { id: \"icon-inspect\", viewBox: \"0 0 24 24\", fill: \"none\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: [\n /* @__PURE__ */ jsx28(\"path\", { d: \"M12.034 12.681a.498.498 0 0 1 .647-.647l9 3.5a.5.5 0 0 1-.033.943l-3.444 1.068a1 1 0 0 0-.66.66l-1.067 3.443a.5.5 0 0 1-.943.033z\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M5 3a2 2 0 0 0-2 2\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M19 3a2 2 0 0 1 2 2\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M5 21a2 2 0 0 1-2-2\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M9 3h1\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M9 21h2\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M14 3h1\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M3 9v1\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M21 9v2\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M3 14v1\" })\n ] }),\n /* @__PURE__ */ jsxs26(\"symbol\", { id: \"icon-focus\", viewBox: \"0 0 24 24\", fill: \"none\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: [\n /* @__PURE__ */ jsx28(\"path\", { d: \"M12.034 12.681a.498.498 0 0 1 .647-.647l9 3.5a.5.5 0 0 1-.033.943l-3.444 1.068a1 1 0 0 0-.66.66l-1.067 3.443a.5.5 0 0 1-.943.033z\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M21 11V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6\" })\n ] }),\n /* @__PURE__ */ jsx28(\"symbol\", { id: \"icon-next\", viewBox: \"0 0 24 24\", fill: \"none\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: /* @__PURE__ */ jsx28(\"path\", { d: \"M6 9h6V5l7 7-7 7v-4H6V9z\" }) }),\n /* @__PURE__ */ jsx28(\"symbol\", { id: \"icon-previous\", viewBox: \"0 0 24 24\", fill: \"none\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: /* @__PURE__ */ jsx28(\"path\", { d: \"M18 15h-6v4l-7-7 7-7v4h6v6z\" }) }),\n /* @__PURE__ */ jsxs26(\"symbol\", { id: \"icon-close\", viewBox: \"0 0 24 24\", fill: \"none\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: [\n /* @__PURE__ */ jsx28(\"line\", { x1: \"18\", y1: \"6\", x2: \"6\", y2: \"18\" }),\n /* @__PURE__ */ jsx28(\"line\", { x1: \"6\", y1: \"6\", x2: \"18\", y2: \"18\" })\n ] }),\n /* @__PURE__ */ jsxs26(\"symbol\", { id: \"icon-replay\", viewBox: \"0 0 24 24\", fill: \"none\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: [\n /* @__PURE__ */ jsx28(\"path\", { d: \"M3 7V5a2 2 0 0 1 2-2h2\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M17 3h2a2 2 0 0 1 2 2v2\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M21 17v2a2 2 0 0 1-2 2h-2\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M7 21H5a2 2 0 0 1-2-2v-2\" }),\n /* @__PURE__ */ jsx28(\"circle\", { cx: \"12\", cy: \"12\", r: \"1\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0\" })\n ] }),\n /* @__PURE__ */ jsxs26(\"symbol\", { id: \"icon-ellipsis\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: [\n /* @__PURE__ */ jsx28(\"circle\", { cx: \"12\", cy: \"12\", r: \"1\" }),\n /* @__PURE__ */ jsx28(\"circle\", { cx: \"19\", cy: \"12\", r: \"1\" }),\n /* @__PURE__ */ jsx28(\"circle\", { cx: \"5\", cy: \"12\", r: \"1\" })\n ] }),\n /* @__PURE__ */ jsxs26(\"symbol\", { id: \"icon-copy\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: [\n /* @__PURE__ */ jsx28(\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" })\n ] }),\n /* @__PURE__ */ jsx28(\"symbol\", { id: \"icon-check\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: /* @__PURE__ */ jsx28(\"path\", { d: \"M20 6 9 17l-5-5\" }) }),\n /* @__PURE__ */ jsx28(\"symbol\", { id: \"icon-chevron-right\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: /* @__PURE__ */ jsx28(\"path\", { d: \"m9 18 6-6-6-6\" }) }),\n /* @__PURE__ */ jsxs26(\"symbol\", { id: \"icon-settings\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: [\n /* @__PURE__ */ jsx28(\"path\", { d: \"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\" }),\n /* @__PURE__ */ jsx28(\"circle\", { cx: \"12\", cy: \"12\", r: \"3\" })\n ] }),\n /* @__PURE__ */ jsx28(\"symbol\", { id: \"icon-flame\", viewBox: \"0 0 24 24\", children: /* @__PURE__ */ jsx28(\"path\", { d: \"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z\" }) }),\n /* @__PURE__ */ jsxs26(\"symbol\", { id: \"icon-function\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: [\n /* @__PURE__ */ jsx28(\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", ry: \"2\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M9 11.2h5.7\" })\n ] }),\n /* @__PURE__ */ jsxs26(\"symbol\", { id: \"icon-triangle-alert\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: [\n /* @__PURE__ */ jsx28(\"path\", { d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M12 9v4\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M12 17h.01\" })\n ] }),\n /* @__PURE__ */ jsxs26(\"symbol\", { id: \"icon-gallery-horizontal-end\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: [\n /* @__PURE__ */ jsx28(\"path\", { d: \"M2 7v10\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M6 5v14\" }),\n /* @__PURE__ */ jsx28(\"rect\", { width: \"12\", height: \"18\", x: \"10\", y: \"3\", rx: \"2\" })\n ] }),\n /* @__PURE__ */ jsxs26(\"symbol\", { id: \"icon-search\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: [\n /* @__PURE__ */ jsx28(\"circle\", { cx: \"11\", cy: \"11\", r: \"8\" }),\n /* @__PURE__ */ jsx28(\"line\", { x1: \"21\", y1: \"21\", x2: \"16.65\", y2: \"16.65\" })\n ] }),\n /* @__PURE__ */ jsxs26(\"symbol\", { id: \"icon-lock\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: [\n /* @__PURE__ */ jsx28(\"rect\", { width: \"18\", height: \"11\", x: \"3\", y: \"11\", rx: \"2\", ry: \"2\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M7 11V7a5 5 0 0 1 10 0v4\" })\n ] }),\n /* @__PURE__ */ jsxs26(\"symbol\", { id: \"icon-lock-open\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: [\n /* @__PURE__ */ jsx28(\"rect\", { width: \"18\", height: \"11\", x: \"3\", y: \"11\", rx: \"2\", ry: \"2\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M7 11V7a5 5 0 0 1 9.9-1\" })\n ] }),\n /* @__PURE__ */ jsxs26(\"symbol\", { id: \"icon-sanil\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", children: [\n /* @__PURE__ */ jsx28(\"path\", { d: \"M2 13a6 6 0 1 0 12 0 4 4 0 1 0-8 0 2 2 0 0 0 4 0\" }),\n /* @__PURE__ */ jsx28(\"circle\", { cx: \"10\", cy: \"13\", r: \"8\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M2 21h12c4.4 0 8-3.6 8-8V7a2 2 0 1 0-4 0v6\" }),\n /* @__PURE__ */ jsx28(\"path\", { d: \"M18 3 19.1 5.2\" })\n ] })\n ] });\n};\n\n// src/web/toolbar.tsx\nimport { Fragment as Fragment15, jsx as jsx29, jsxs as jsxs27 } from \"preact/jsx-runtime\";\nvar ToolbarErrorBoundary = class extends Component2 {\n constructor() {\n super(...arguments);\n this.state = { hasError: false, error: null };\n this.handleReset = () => {\n this.setState({ hasError: false, error: null });\n };\n }\n static getDerivedStateFromError(error) {\n return { hasError: true, error };\n }\n render() {\n if (this.state.hasError) {\n return /* @__PURE__ */ jsx29(\"div\", { className: \"fixed bottom-4 right-4 z-[124124124124]\", children: /* @__PURE__ */ jsxs27(\"div\", { className: \"p-3 bg-black rounded-lg shadow-lg w-80\", children: [\n /* @__PURE__ */ jsxs27(\"div\", { className: \"flex items-center gap-2 mb-2 text-red-400 text-sm font-medium\", children: [\n /* @__PURE__ */ jsx29(Icon, { name: \"icon-flame\", className: \"text-red-500\", size: 14 }),\n \"React Scan ran into a problem\"\n ] }),\n /* @__PURE__ */ jsx29(\"div\", { className: \"p-2 bg-black rounded font-mono text-xs text-red-300 mb-3 break-words\", children: this.state.error?.message || JSON.stringify(this.state.error) }),\n /* @__PURE__ */ jsx29(\n \"button\",\n {\n type: \"button\",\n onClick: this.handleReset,\n className: \"px-3 py-1.5 bg-red-500 hover:bg-red-600 text-white rounded text-xs font-medium transition-colors flex items-center justify-center gap-1.5\",\n children: \"Restart\"\n }\n )\n ] }) });\n }\n return this.props.children;\n }\n};\nvar createToolbar = (root) => {\n const container = document.createElement(\"div\");\n container.id = \"react-scan-toolbar-root\";\n window.__REACT_SCAN_TOOLBAR_CONTAINER__ = container;\n root.appendChild(container);\n render(\n /* @__PURE__ */ jsx29(ToolbarErrorBoundary, { children: /* @__PURE__ */ jsxs27(Fragment15, { children: [\n /* @__PURE__ */ jsx29(SvgSprite, {}),\n /* @__PURE__ */ jsx29(Widget, {})\n ] }) }),\n container\n );\n const originalRemove = container.remove.bind(container);\n container.remove = () => {\n window.__REACT_SCAN_TOOLBAR_CONTAINER__ = void 0;\n if (container.hasChildNodes()) {\n render(null, container);\n render(null, container);\n }\n originalRemove();\n };\n return container;\n};\n\n// package.json\nvar package_default = {\n name: \"react-scan\",\n version: \"0.4.3\",\n description: \"Scan your React app for renders\",\n keywords: [\n \"react\",\n \"react-scan\",\n \"react scan\",\n \"render\",\n \"performance\"\n ],\n homepage: \"https://react-scan.million.dev\",\n bugs: {\n url: \"https://github.com/aidenybai/react-scan/issues\"\n },\n repository: {\n type: \"git\",\n url: \"git+https://github.com/aidenybai/react-scan.git\"\n },\n license: \"MIT\",\n author: {\n name: \"Aiden Bai\",\n email: \"aiden@million.dev\",\n url: \"https://million.dev\"\n },\n scripts: {\n \"dev:kitchen\": \"node dist/cli.js http://localhost:5173\",\n build: \"npm run build:css && NODE_ENV=production tsup\",\n postbuild: \"pnpm copy-astro && node ../../scripts/version-warning.mjs\",\n \"build:copy\": \"npm run build:css && NODE_ENV=production tsup && cat dist/auto.global.js | pbcopy\",\n \"copy-astro\": \"cp -R src/core/monitor/params/astro dist/core/monitor/params\",\n \"dev:css\": \"postcss ./src/web/assets/css/styles.tailwind.css -o ./src/web/assets/css/styles.css --watch\",\n \"dev:tsup\": \"NODE_ENV=development tsup --watch\",\n dev: \"pnpm copy-astro && npm-run-all --parallel dev:css dev:tsup\",\n \"build:css\": \"postcss ./src/web/assets/css/styles.tailwind.css -o ./src/web/assets/css/styles.css\",\n pack: \"npm version patch && pnpm build && npm pack\",\n \"pack:bump\": `bun scripts/bump-version.js && nr pack && echo $(pwd)/react-scan-$(node -p \"require('./package.json').version\").tgz | pbcopy`,\n prettier: \"prettier --config .prettierrc.mjs -w src\",\n publint: \"publint\",\n test: \"vitest\",\n lint: \"biome lint src && pnpm typecheck\",\n format: \"biome format . --write\",\n check: \"biome check . --write\",\n typecheck: \"tsc --noEmit\"\n },\n exports: {\n \"./package.json\": \"./package.json\",\n \"./monitoring\": {\n types: \"./dist/core/monitor/index.d.ts\",\n import: \"./dist/core/monitor/index.mjs\",\n require: \"./dist/core/monitor/index.js\"\n },\n \"./monitoring/next\": {\n types: \"./dist/core/monitor/params/next.d.ts\",\n import: \"./dist/core/monitor/params/next.mjs\",\n require: \"./dist/core/monitor/params/next.js\"\n },\n \"./monitoring/react-router-legacy\": {\n types: \"./dist/core/monitor/params/react-router-v5.d.ts\",\n import: \"./dist/core/monitor/params/react-router-v5.mjs\",\n require: \"./dist/core/monitor/params/react-router-v5.js\"\n },\n \"./monitoring/react-router\": {\n types: \"./dist/core/monitor/params/react-router-v6.d.ts\",\n import: \"./dist/core/monitor/params/react-router-v6.mjs\",\n require: \"./dist/core/monitor/params/react-router-v6.js\"\n },\n \"./monitoring/remix\": {\n types: \"./dist/core/monitor/params/remix.d.ts\",\n import: \"./dist/core/monitor/params/remix.mjs\",\n require: \"./dist/core/monitor/params/remix.js\"\n },\n \"./monitoring/astro\": {\n import: \"./dist/core/monitor/params/astro/index.ts\"\n },\n \".\": {\n production: {\n import: {\n types: \"./dist/index.d.mts\",\n \"react-server\": \"./dist/rsc-shim.mjs\",\n default: \"./dist/index.mjs\"\n },\n require: {\n types: \"./dist/index.d.mts\",\n \"react-server\": \"./dist/rsc-shim.js\",\n default: \"./dist/index.mjs\"\n }\n },\n development: {\n import: {\n types: \"./dist/index.d.mts\",\n \"react-server\": \"./dist/rsc-shim.mjs\",\n default: \"./dist/index.mjs\"\n },\n require: {\n types: \"./dist/index.d.ts\",\n \"react-server\": \"./dist/rsc-shim.js\",\n default: \"./dist/index.js\"\n }\n },\n default: {\n import: {\n types: \"./dist/index.d.mts\",\n \"react-server\": \"./dist/rsc-shim.mjs\",\n default: \"./dist/index.mjs\"\n },\n require: {\n types: \"./dist/index.d.ts\",\n \"react-server\": \"./dist/rsc-shim.js\",\n default: \"./dist/index.js\"\n }\n }\n },\n \"./all-environments\": {\n types: \"./dist/core/all-environments.d.ts\",\n import: \"./dist/core/all-environments.mjs\",\n require: \"./dist/core/all-environments.js\"\n },\n \"./install-hook\": {\n types: \"./dist/install-hook.d.ts\",\n import: \"./dist/install-hook.mjs\",\n require: \"./dist/install-hook.js\"\n },\n \"./auto\": {\n production: {\n import: {\n types: \"./dist/rsc-shim.d.mts\",\n \"react-server\": \"./dist/rsc-shim.mjs\",\n default: \"./dist/rsc-shim.mjs\"\n },\n require: {\n types: \"./dist/rsc-shim.d.ts\",\n \"react-server\": \"./dist/rsc-shim.js\",\n default: \"./dist/rsc-shim.js\"\n }\n },\n development: {\n import: {\n types: \"./dist/auto.d.mts\",\n \"react-server\": \"./dist/rsc-shim.mjs\",\n default: \"./dist/auto.mjs\"\n },\n require: {\n types: \"./dist/auto.d.ts\",\n \"react-server\": \"./dist/rsc-shim.js\",\n default: \"./dist/auto.js\"\n }\n }\n },\n \"./dist/*\": \"./dist/*.js\",\n \"./dist/*.js\": \"./dist/*.js\",\n \"./dist/*.mjs\": \"./dist/*.mjs\",\n \"./react-component-name/vite\": {\n types: \"./dist/react-component-name/vite.d.ts\",\n import: \"./dist/react-component-name/vite.mjs\",\n require: \"./dist/react-component-name/vite.js\"\n },\n \"./react-component-name/webpack\": {\n types: \"./dist/react-component-name/webpack.d.ts\",\n import: \"./dist/react-component-name/webpack.mjs\",\n require: \"./dist/react-component-name/webpack.js\"\n },\n \"./react-component-name/esbuild\": {\n types: \"./dist/react-component-name/esbuild.d.ts\",\n import: \"./dist/react-component-name/esbuild.mjs\",\n require: \"./dist/react-component-name/esbuild.js\"\n },\n \"./react-component-name/rspack\": {\n types: \"./dist/react-component-name/rspack.d.ts\",\n import: \"./dist/react-component-name/rspack.mjs\",\n require: \"./dist/react-component-name/rspack.js\"\n },\n \"./react-component-name/rolldown\": {\n types: \"./dist/react-component-name/rolldown.d.ts\",\n import: \"./dist/react-component-name/rolldown.mjs\",\n require: \"./dist/react-component-name/rolldown.js\"\n },\n \"./react-component-name/rollup\": {\n types: \"./dist/react-component-name/rollup.d.ts\",\n import: \"./dist/react-component-name/rollup.mjs\",\n require: \"./dist/react-component-name/rollup.js\"\n },\n \"./react-component-name/astro\": {\n types: \"./dist/react-component-name/astro.d.ts\",\n import: \"./dist/react-component-name/astro.mjs\",\n require: \"./dist/react-component-name/astro.js\"\n },\n \"./react-component-name/loader\": {\n types: \"./dist/react-component-name/loader.d.ts\",\n import: \"./dist/react-component-name/loader.mjs\",\n require: \"./dist/react-component-name/loader.js\"\n }\n },\n main: \"dist/index.js\",\n module: \"dist/index.mjs\",\n browser: \"dist/auto.global.js\",\n types: \"dist/index.d.ts\",\n typesVersions: {\n \"*\": {\n monitoring: [\n \"./dist/core/monitor/index.d.ts\"\n ],\n \"monitoring/next\": [\n \"./dist/core/monitor/params/next.d.ts\"\n ],\n \"monitoring/react-router-legacy\": [\n \"./dist/core/monitor/params/react-router-v5.d.ts\"\n ],\n \"monitoring/react-router\": [\n \"./dist/core/monitor/params/react-router-v6.d.ts\"\n ],\n \"monitoring/remix\": [\n \"./dist/core/monitor/params/remix.d.ts\"\n ],\n \"monitoring/astro\": [\n \"./dist/core/monitor/params/astro/index.ts\"\n ],\n \"react-component-name/vite\": [\n \"./dist/react-component-name/vite.d.ts\"\n ],\n \"react-component-name/webpack\": [\n \"./dist/react-component-name/webpack.d.ts\"\n ],\n \"react-component-name/esbuild\": [\n \"./dist/react-component-name/esbuild.d.ts\"\n ],\n \"react-component-name/rspack\": [\n \"./dist/react-component-name/rspack.d.ts\"\n ],\n \"react-component-name/rolldown\": [\n \"./dist/react-component-name/rolldown.d.ts\"\n ],\n \"react-component-name/rollup\": [\n \"./dist/react-component-name/rollup.d.ts\"\n ],\n \"react-component-name/astro\": [\n \"./dist/react-component-name/astro.d.ts\"\n ],\n \"react-component-name/loader\": [\n \"./dist/react-component-name/loader.d.ts\"\n ]\n }\n },\n bin: \"bin/cli.js\",\n files: [\n \"dist\",\n \"bin\",\n \"package.json\",\n \"README.md\",\n \"LICENSE\",\n \"auto.d.ts\"\n ],\n dependencies: {\n \"@babel/core\": \"^7.26.0\",\n \"@babel/generator\": \"^7.26.2\",\n \"@babel/types\": \"^7.26.0\",\n \"@clack/core\": \"^0.3.5\",\n \"@clack/prompts\": \"^0.8.2\",\n \"@pivanov/utils\": \"0.0.2\",\n \"@preact/signals\": \"^1.3.1\",\n \"@rollup/pluginutils\": \"^5.1.3\",\n \"@types/node\": \"^20.17.9\",\n bippy: \"^0.3.8\",\n esbuild: \"^0.25.0\",\n \"estree-walker\": \"^3.0.3\",\n kleur: \"^4.1.5\",\n mri: \"^1.2.0\",\n playwright: \"^1.49.0\",\n preact: \"^10.25.1\",\n tsx: \"^4.19.3\"\n },\n devDependencies: {\n \"@esbuild-plugins/tsconfig-paths\": \"^0.1.2\",\n \"@remix-run/react\": \"*\",\n \"@types/babel__core\": \"^7.20.5\",\n \"@types/react\": \"^18.0.0\",\n \"@types/react-router\": \"^5.1.0\",\n \"@vercel/style-guide\": \"^6.0.0\",\n clsx: \"^2.1.1\",\n \"es-module-lexer\": \"^1.5.4\",\n next: \"*\",\n \"npm-run-all\": \"^4.1.5\",\n \"postcss-cli\": \"^11.0.0\",\n prettier: \"^3.3.3\",\n publint: \"^0.2.12\",\n react: \"*\",\n \"react-dom\": \"*\",\n \"react-router\": \"^5.0.0\",\n \"react-router-dom\": \"^5.0.0 || ^6.0.0 || ^7.0.0\",\n \"tailwind-merge\": \"^2.5.5\",\n terser: \"^5.36.0\",\n tsup: \"^8.0.0\",\n vitest: \"^1.0.0\"\n },\n peerDependencies: {\n \"@remix-run/react\": \">=1.0.0\",\n next: \">=13.0.0\",\n react: \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-router\": \"^5.0.0 || ^6.0.0 || ^7.0.0\",\n \"react-router-dom\": \"^5.0.0 || ^6.0.0 || ^7.0.0\"\n },\n peerDependenciesMeta: {\n \"@remix-run/react\": {\n optional: true\n },\n next: {\n optional: true\n },\n \"react-router\": {\n optional: true\n },\n \"react-router-dom\": {\n optional: true\n }\n },\n optionalDependencies: {\n unplugin: \"2.1.0\"\n },\n publishConfig: {\n access: \"public\"\n }\n};\n\n// src/core/index.ts\nvar rootContainer = null;\nvar shadowRoot = null;\nvar initRootContainer = () => {\n if (rootContainer && shadowRoot) {\n return { rootContainer, shadowRoot };\n }\n rootContainer = document.createElement(\"div\");\n rootContainer.id = \"react-scan-root\";\n shadowRoot = rootContainer.attachShadow({ mode: \"open\" });\n const cssStyles = document.createElement(\"style\");\n cssStyles.textContent = styles_default;\n shadowRoot.appendChild(cssStyles);\n document.documentElement.appendChild(rootContainer);\n return { rootContainer, shadowRoot };\n};\nvar Store = {\n wasDetailsOpen: signal7(true),\n isInIframe: signal7(IS_CLIENT && window.self !== window.top),\n inspectState: signal7({\n kind: \"uninitialized\"\n }),\n monitor: signal7(null),\n fiberRoots: /* @__PURE__ */ new Set(),\n reportData: /* @__PURE__ */ new Map(),\n legacyReportData: /* @__PURE__ */ new Map(),\n lastReportTime: signal7(0),\n interactionListeningForRenders: null,\n changesListeners: /* @__PURE__ */ new Map()\n};\nvar ReactScanInternals = {\n instrumentation: null,\n componentAllowList: null,\n options: signal7({\n enabled: true,\n // includeChildren: true,\n // playSound: false,\n log: false,\n showToolbar: true,\n // renderCountThreshold: 0,\n // report: undefined,\n // alwaysShowLabels: false,\n animationSpeed: \"fast\",\n dangerouslyForceRunInProduction: false,\n showFPS: true,\n showNotificationCount: true,\n allowInIframe: false\n // smoothlyAnimateOutlines: true,\n // trackUnnecessaryRenders: false,\n }),\n runInAllEnvironments: false,\n onRender: null,\n scheduledOutlines: /* @__PURE__ */ new Map(),\n activeOutlines: /* @__PURE__ */ new Map(),\n Store,\n version: package_default.version\n};\nif (IS_CLIENT && window.__REACT_SCAN_EXTENSION__) {\n window.__REACT_SCAN_VERSION__ = ReactScanInternals.version;\n}\nfunction isOptionKey(key) {\n return key in ReactScanInternals.options.value;\n}\nvar validateOptions = (options) => {\n const errors = [];\n const validOptions = {};\n for (const key in options) {\n if (!isOptionKey(key)) continue;\n const value = options[key];\n switch (key) {\n case \"enabled\":\n // case 'includeChildren':\n case \"log\":\n case \"showToolbar\":\n // case 'report':\n // case 'alwaysShowLabels':\n case \"showNotificationCount\":\n case \"dangerouslyForceRunInProduction\":\n case \"showFPS\":\n case \"allowInIframe\":\n if (typeof value !== \"boolean\") {\n errors.push(`- ${key} must be a boolean. Got \"${value}\"`);\n } else {\n validOptions[key] = value;\n }\n break;\n // case 'renderCountThreshold':\n // case 'resetCountTimeout':\n // if (typeof value !== 'number' || value < 0) {\n // errors.push(`- ${key} must be a non-negative number. Got \"${value}\"`);\n // } else {\n // validOptions[key] = value as number;\n // }\n // break;\n case \"animationSpeed\":\n if (![\"slow\", \"fast\", \"off\"].includes(value)) {\n errors.push(\n `- Invalid animation speed \"${value}\". Using default \"fast\"`\n );\n } else {\n validOptions[key] = value;\n }\n break;\n case \"onCommitStart\":\n if (typeof value !== \"function\") {\n errors.push(`- ${key} must be a function. Got \"${value}\"`);\n } else {\n validOptions.onCommitStart = value;\n }\n break;\n case \"onCommitFinish\":\n if (typeof value !== \"function\") {\n errors.push(`- ${key} must be a function. Got \"${value}\"`);\n } else {\n validOptions.onCommitFinish = value;\n }\n break;\n case \"onRender\":\n if (typeof value !== \"function\") {\n errors.push(`- ${key} must be a function. Got \"${value}\"`);\n } else {\n validOptions.onRender = value;\n }\n break;\n case \"onPaintStart\":\n case \"onPaintFinish\":\n if (typeof value !== \"function\") {\n errors.push(`- ${key} must be a function. Got \"${value}\"`);\n } else {\n validOptions[key] = value;\n }\n break;\n // case 'trackUnnecessaryRenders': {\n // validOptions.trackUnnecessaryRenders =\n // typeof value === 'boolean' ? value : false;\n // break;\n // }\n // case 'smoothlyAnimateOutlines': {\n // validOptions.smoothlyAnimateOutlines =\n // typeof value === 'boolean' ? value : false;\n // break;\n // }\n default:\n errors.push(`- Unknown option \"${key}\"`);\n }\n }\n if (errors.length > 0) {\n console.warn(`[React Scan] Invalid options:\n${errors.join(\"\\n\")}`);\n }\n return validOptions;\n};\nvar getReport = (type) => {\n if (type) {\n for (const reportData of Array.from(Store.legacyReportData.values())) {\n if (reportData.type === type) {\n return reportData;\n }\n }\n return null;\n }\n return Store.legacyReportData;\n};\nvar setOptions = (userOptions) => {\n try {\n const validOptions = validateOptions(userOptions);\n if (Object.keys(validOptions).length === 0) {\n return;\n }\n const shouldInitToolbar = \"showToolbar\" in validOptions && validOptions.showToolbar !== void 0;\n const newOptions = {\n ...ReactScanInternals.options.value,\n ...validOptions\n };\n const { instrumentation } = ReactScanInternals;\n if (instrumentation && \"enabled\" in validOptions) {\n instrumentation.isPaused.value = validOptions.enabled === false;\n }\n ReactScanInternals.options.value = newOptions;\n try {\n const existing = readLocalStorage(\n \"react-scan-options\"\n )?.enabled;\n if (typeof existing === \"boolean\") {\n newOptions.enabled = existing;\n }\n } catch (e) {\n if (ReactScanInternals.options.value._debug === \"verbose\") {\n console.error(\n \"[React Scan Internal Error]\",\n \"Failed to create notifications outline canvas\",\n e\n );\n }\n }\n saveLocalStorage(\"react-scan-options\", newOptions);\n if (shouldInitToolbar) {\n initToolbar(!!newOptions.showToolbar);\n }\n return newOptions;\n } catch (e) {\n if (ReactScanInternals.options.value._debug === \"verbose\") {\n console.error(\n \"[React Scan Internal Error]\",\n \"Failed to create notifications outline canvas\",\n e\n );\n }\n }\n};\nvar getOptions = () => ReactScanInternals.options;\nvar isProduction = null;\nvar rdtHook;\nvar getIsProduction = () => {\n if (isProduction !== null) {\n return isProduction;\n }\n rdtHook ??= getRDTHook();\n for (const renderer of rdtHook.renderers.values()) {\n const buildType = detectReactBuildType(renderer);\n if (buildType === \"production\") {\n isProduction = true;\n }\n }\n return isProduction;\n};\nvar start = () => {\n try {\n if (!IS_CLIENT) {\n return;\n }\n if (!ReactScanInternals.runInAllEnvironments && getIsProduction() && !ReactScanInternals.options.value.dangerouslyForceRunInProduction) {\n return;\n }\n const localStorageOptions = readLocalStorage(\"react-scan-options\");\n if (localStorageOptions) {\n const validLocalOptions = validateOptions(localStorageOptions);\n if (Object.keys(validLocalOptions).length > 0) {\n ReactScanInternals.options.value = {\n ...ReactScanInternals.options.value,\n ...validLocalOptions\n };\n }\n }\n const options = getOptions();\n initReactScanInstrumentation(() => {\n initToolbar(!!options.value.showToolbar);\n });\n if (!Store.monitor.value && IS_CLIENT) {\n setTimeout(() => {\n if (isInstrumentationActive()) return;\n console.error(\n \"[React Scan] Failed to load. Must import React Scan before React runs.\"\n );\n }, 5e3);\n }\n } catch (e) {\n if (ReactScanInternals.options.value._debug === \"verbose\") {\n console.error(\n \"[React Scan Internal Error]\",\n \"Failed to create notifications outline canvas\",\n e\n );\n }\n }\n};\nvar initToolbar = (showToolbar) => {\n window.reactScanCleanupListeners?.();\n const cleanupTimingTracking = startTimingTracking();\n const cleanupOutlineCanvas = createNotificationsOutlineCanvas();\n window.reactScanCleanupListeners = () => {\n cleanupTimingTracking();\n cleanupOutlineCanvas?.();\n };\n const windowToolbarContainer = window.__REACT_SCAN_TOOLBAR_CONTAINER__;\n if (!showToolbar) {\n windowToolbarContainer?.remove();\n return;\n }\n windowToolbarContainer?.remove();\n const { shadowRoot: shadowRoot2 } = initRootContainer();\n createToolbar(shadowRoot2);\n};\nvar createNotificationsOutlineCanvas = () => {\n try {\n const highlightRoot = document.documentElement;\n return createHighlightCanvas(highlightRoot);\n } catch (e) {\n if (ReactScanInternals.options.value._debug === \"verbose\") {\n console.error(\n \"[React Scan Internal Error]\",\n \"Failed to create notifications outline canvas\",\n e\n );\n }\n }\n};\nvar scan = (options = {}) => {\n setOptions(options);\n const isInIframe = Store.isInIframe.value;\n if (isInIframe && !ReactScanInternals.options.value.allowInIframe && !ReactScanInternals.runInAllEnvironments) {\n return;\n }\n if (options.enabled === false && options.showToolbar !== true) {\n return;\n }\n start();\n};\nvar useScan = (options = {}) => {\n setOptions(options);\n start();\n};\nvar onRender = (type, _onRender) => {\n const prevOnRender = ReactScanInternals.onRender;\n ReactScanInternals.onRender = (fiber, renders) => {\n prevOnRender?.(fiber, renders);\n if (getType5(fiber.type) === type) {\n _onRender(fiber, renders);\n }\n };\n};\nvar ignoredProps = /* @__PURE__ */ new WeakSet();\nvar ignoreScan = (node) => {\n if (node && typeof node === \"object\") {\n ignoredProps.add(node);\n }\n};\nexport {\n ReactScanInternals,\n Store,\n getIsProduction,\n getOptions,\n getReport,\n ignoreScan,\n ignoredProps,\n onRender,\n scan,\n setOptions,\n start,\n useScan\n};\n","/**\n * React Scan adapter for React DevTools integration\n * Provides a clean interface to control React Scan from the DevTools UI\n */\n\nimport type { AggregatedChanges, ChangeInfo, ComponentPerformanceData, ComponentTreeNode, FocusedComponentRenderInfo, PerformanceSummary, ReactDevtoolsScanOptions, ScanInstance } from './types'\nimport { _fiberRoots, getDisplayName, getFiberId, isCompositeFiber } from 'bippy'\nimport { getOptions as getScanOptions, ReactScanInternals, scan, setOptions as setScanOptions } from 'react-scan'\n\n// Helper to get shared internals from global window\nfunction getGlobalObject(key: string) {\n if (typeof window === 'undefined')\n return undefined\n\n // Check parent window (Host App) first\n try {\n if (window.parent && window.parent !== window && (window.parent as any)[key]) {\n return (window.parent as any)[key]\n }\n }\n catch (e) {\n // Accessing parent might fail cross-origin\n }\n\n // Fallback to current window\n if ((window as any)[key]) {\n return (window as any)[key]\n }\n\n return undefined\n}\n\nfunction getInternals() {\n // react-scan exposes internals at window.__REACT_SCAN__.ReactScanInternals\n try {\n if (typeof window !== 'undefined') {\n // Check parent window first (Host App)\n if (window.parent && window.parent !== window && (window.parent as any).__REACT_SCAN__?.ReactScanInternals) {\n return (window.parent as any).__REACT_SCAN__.ReactScanInternals\n }\n // Then check current window\n if ((window as any).__REACT_SCAN__?.ReactScanInternals) {\n return (window as any).__REACT_SCAN__.ReactScanInternals\n }\n }\n }\n catch {\n // Accessing parent might fail cross-origin\n }\n return ReactScanInternals\n}\n\nfunction getSetOptions() {\n // react-scan exposes setOptions via the module export\n // We need to use the one from the same react-scan instance\n try {\n if (typeof window !== 'undefined') {\n // Check parent window first (Host App)\n if (window.parent && window.parent !== window && (window.parent as any).__REACT_SCAN__?.setOptions) {\n return (window.parent as any).__REACT_SCAN__.setOptions\n }\n // Then check current window\n if ((window as any).__REACT_SCAN__?.setOptions) {\n return (window as any).__REACT_SCAN__.setOptions\n }\n }\n }\n catch {\n // Accessing parent might fail cross-origin\n }\n return setScanOptions\n}\n\nfunction getGetOptions() {\n return getGlobalObject('__REACT_SCAN_GET_OPTIONS__') || getScanOptions\n}\n\nfunction getScan() {\n return getGlobalObject('__REACT_SCAN_SCAN__') || scan\n}\n\n/**\n * Update toolbar visibility in the shadow DOM\n */\nfunction updateToolbarVisibility(visible: boolean) {\n if (typeof document === 'undefined')\n return\n\n try {\n const update = () => {\n const root = document.getElementById('react-scan-root')\n if (!root || !root.shadowRoot)\n return\n\n let style = root.shadowRoot.getElementById('react-scan-devtools-style')\n if (!style) {\n style = document.createElement('style')\n style.id = 'react-scan-devtools-style'\n root.shadowRoot.appendChild(style)\n }\n\n style.textContent = visible ? '' : '#react-scan-toolbar { display: none !important; }'\n }\n\n // Try immediately\n update()\n\n // And retry in next frame to ensure DOM is ready if just initialized\n requestAnimationFrame(update)\n // And one more time for good measure given React Scan's async nature\n setTimeout(update, 100)\n }\n catch (e) {\n // Ignore errors\n }\n}\n\nlet scanInstance: ScanInstance | null = null\nlet currentOptions: ReactDevtoolsScanOptions = {}\n\n// Store for focused component render tracking\ninterface FocusedComponentTracker {\n componentName: string\n renderCount: number\n changes: AggregatedChanges\n timestamp: number\n unsubscribe: (() => void) | null\n}\n\nlet focusedComponentTracker: FocusedComponentTracker | null = null\nconst focusedComponentChangeCallbacks = new Set<(info: FocusedComponentRenderInfo) => void>()\n\n/**\n * Convert react-scan's internal changes format to our serializable format\n */\nfunction convertChangesToSerializable(changesMap: Map<string, any>): ChangeInfo[] {\n const result: ChangeInfo[] = []\n changesMap.forEach((value, key) => {\n result.push({\n name: value.changes?.name || key,\n previousValue: serializeValue(value.changes?.previousValue),\n currentValue: serializeValue(value.changes?.currentValue),\n count: value.changes?.count || 1,\n })\n })\n return result\n}\n\n/**\n * Serialize a value for RPC transfer\n */\nfunction serializeValue(value: any): any {\n if (value === undefined)\n return undefined\n if (value === null)\n return null\n if (typeof value === 'function')\n return `[Function: ${value.name || 'anonymous'}]`\n if (typeof value === 'symbol')\n return `[Symbol: ${value.description || ''}]`\n if (value instanceof Element)\n return `[Element: ${value.tagName}]`\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n if (value.length > 10)\n return `[Array(${value.length})]`\n return value.map(serializeValue)\n }\n // Handle React elements\n if (value.$$typeof)\n return `[React Element]`\n // Handle circular references and complex objects\n try {\n const keys = Object.keys(value)\n if (keys.length > 20)\n return `[Object with ${keys.length} keys]`\n const serialized: Record<string, any> = {}\n for (const key of keys.slice(0, 20)) {\n serialized[key] = serializeValue(value[key])\n }\n return serialized\n }\n catch {\n return '[Object]'\n }\n }\n return value\n}\n\n/**\n * Get the current focused fiber and its ID\n */\nfunction getFocusedFiberInfo(): { fiber: any, fiberId: string } | null {\n try {\n const { Store } = getInternals()\n if (Store?.inspectState?.value?.kind === 'focused') {\n const fiber = Store.inspectState.value.fiber\n if (fiber) {\n // Use bippy's getFiberId to get the correct fiber ID that matches react-scan's internal usage\n const fiberId = getFiberId(fiber)\n return { fiber, fiberId }\n }\n }\n return null\n }\n catch {\n return null\n }\n}\n\n/**\n * Subscribe to changes for a specific fiber ID\n */\nfunction subscribeToFiberChanges(fiberId: string, callback: (changes: any) => void): () => void {\n try {\n const { Store } = getInternals()\n if (!Store?.changesListeners)\n return () => {}\n\n let listeners = Store.changesListeners.get(fiberId)\n if (!listeners) {\n listeners = []\n Store.changesListeners.set(fiberId, listeners)\n }\n\n listeners.push(callback)\n\n return () => {\n const currentListeners = Store.changesListeners.get(fiberId)\n if (currentListeners) {\n const index = currentListeners.indexOf(callback)\n if (index > -1) {\n currentListeners.splice(index, 1)\n }\n }\n }\n }\n catch {\n return () => {}\n }\n}\n\n/**\n * Setup onRender callback to track focused component renders\n * This is more reliable than changesListeners as it doesn't depend on showToolbar\n */\nfunction setupOnRenderCallback(): () => void {\n try {\n const internals = getInternals()\n if (!internals) {\n return () => {}\n }\n\n // Get the current onRender callback if any\n const originalOnRender = internals.options?.value?.onRender\n\n // Create our render tracking callback\n const trackingOnRender = (fiber: any, renders: any[]) => {\n // Call original callback first\n if (originalOnRender) {\n originalOnRender(fiber, renders)\n }\n\n // Always track fiber render count for component tree\n trackFiberRender(fiber)\n\n // Check if we have a focused component tracker\n if (!focusedComponentTracker) {\n return\n }\n\n // Get the fiber name to compare with focused component\n const fiberName = getDisplayName(fiber.type) || 'Unknown'\n\n // Compare by component name (simpler approach)\n if (fiberName !== focusedComponentTracker.componentName) {\n return\n }\n\n // Update tracker\n focusedComponentTracker.renderCount++\n focusedComponentTracker.timestamp = Date.now()\n\n // Extract changes directly from fiber since react-scan's trackChanges is false by default\n const propsChanges: ChangeInfo[] = []\n const stateChanges: ChangeInfo[] = []\n const contextChanges: ChangeInfo[] = []\n\n try {\n // Get props changes\n const currentProps = fiber.memoizedProps || {}\n const prevProps = fiber.alternate?.memoizedProps || {}\n\n for (const key of Object.keys(currentProps)) {\n if (key === 'children')\n continue\n const prevValue = prevProps[key]\n const currentValue = currentProps[key]\n if (prevValue !== currentValue) {\n propsChanges.push({\n name: key,\n previousValue: serializeValue(prevValue),\n currentValue: serializeValue(currentValue),\n count: 1,\n })\n }\n }\n\n // Get state changes (for functional components with hooks)\n let currentState = fiber.memoizedState\n let prevState = fiber.alternate?.memoizedState\n let hookIndex = 0\n\n while (currentState) {\n // Check if this is a useState/useReducer hook (has memoizedState)\n if (currentState.memoizedState !== undefined) {\n const currentValue = currentState.memoizedState\n const prevValue = prevState?.memoizedState\n\n if (prevValue !== currentValue && prevState) {\n stateChanges.push({\n name: `Hook ${hookIndex + 1}`,\n previousValue: serializeValue(prevValue),\n currentValue: serializeValue(currentValue),\n count: 1,\n })\n }\n }\n\n currentState = currentState.next\n prevState = prevState?.next\n hookIndex++\n }\n }\n catch {\n // Ignore extraction errors\n }\n\n // Accumulate changes - increment count if same name exists, otherwise add new\n for (const change of propsChanges) {\n const existing = focusedComponentTracker.changes.propsChanges.find(c => c.name === change.name)\n if (existing) {\n existing.count++\n existing.previousValue = change.previousValue\n existing.currentValue = change.currentValue\n }\n else {\n focusedComponentTracker.changes.propsChanges.push(change)\n }\n }\n\n for (const change of stateChanges) {\n const existing = focusedComponentTracker.changes.stateChanges.find(c => c.name === change.name)\n if (existing) {\n existing.count++\n existing.previousValue = change.previousValue\n existing.currentValue = change.currentValue\n }\n else {\n focusedComponentTracker.changes.stateChanges.push(change)\n }\n }\n\n for (const change of contextChanges) {\n const existing = focusedComponentTracker.changes.contextChanges.find(c => c.name === change.name)\n if (existing) {\n existing.count++\n existing.previousValue = change.previousValue\n existing.currentValue = change.currentValue\n }\n else {\n focusedComponentTracker.changes.contextChanges.push(change)\n }\n }\n\n // Notify all callbacks\n const info: FocusedComponentRenderInfo = {\n componentName: focusedComponentTracker.componentName,\n renderCount: focusedComponentTracker.renderCount,\n changes: focusedComponentTracker.changes,\n timestamp: focusedComponentTracker.timestamp,\n }\n\n focusedComponentChangeCallbacks.forEach((cb) => {\n try {\n cb(info)\n }\n catch {\n // Ignore callback errors\n }\n })\n }\n\n // Set onRender directly on window.__REACT_SCAN__.ReactScanInternals.options.value\n try {\n const globalReactScan = (window as any).__REACT_SCAN__\n if (globalReactScan?.ReactScanInternals?.options?.value) {\n const currentOpts = globalReactScan.ReactScanInternals.options.value\n globalReactScan.ReactScanInternals.options.value = {\n ...currentOpts,\n onRender: trackingOnRender,\n }\n }\n }\n catch {\n // Ignore errors setting onRender\n }\n\n // Ensure instrumentation is not paused if we want to track renders\n if (internals.instrumentation?.isPaused) {\n internals.instrumentation.isPaused.value = false\n }\n\n return () => {\n // Restore original onRender callback\n try {\n const globalReactScan = (window as any).__REACT_SCAN__\n if (globalReactScan?.ReactScanInternals?.options?.value) {\n globalReactScan.ReactScanInternals.options.value.onRender = originalOnRender || null\n }\n }\n catch (e) {\n // ignore\n }\n }\n }\n catch {\n return () => {}\n }\n}\n\n// Track whether onRender callback is set up\nlet onRenderCleanup: (() => void) | null = null\n\n// Internal FPS counter\nlet fps = 60\nlet frameCount = 0\nlet lastTime = typeof performance !== 'undefined' ? performance.now() : Date.now()\n\nconst updateFPS = () => {\n if (typeof performance === 'undefined' || typeof requestAnimationFrame === 'undefined')\n return\n\n frameCount++\n const now = performance.now()\n if (now - lastTime >= 1000) {\n fps = frameCount\n frameCount = 0\n lastTime = now\n }\n requestAnimationFrame(updateFPS)\n}\n\n// Start FPS tracking\nif (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(updateFPS)\n}\n\n// Component render count tracking\nconst componentRenderCounts = new Map<number, number>()\n\n/**\n * Find React fiber from a DOM element\n */\nfunction getFiberFromElement(element: Element): any {\n // React 16+ uses __reactFiber$ prefix\n // React 17+ might use __reactInternalInstance$\n const keys = Object.keys(element)\n for (const key of keys) {\n if (key.startsWith('__reactFiber$') || key.startsWith('__reactInternalInstance$')) {\n return (element as any)[key]\n }\n }\n return null\n}\n\n/**\n * Find the root fiber by traversing up the tree\n */\nfunction findRootFiber(fiber: any): any {\n if (!fiber)\n return null\n\n let current = fiber\n while (current.return) {\n current = current.return\n }\n\n // current is now the HostRoot fiber\n // The FiberRoot is stored in current.stateNode\n return current.stateNode || current\n}\n\n/**\n * Get fiber roots by finding React root containers in the DOM\n */\nfunction getFiberRoots(): Set<any> {\n const roots = new Set<any>()\n\n const findRootsInDocument = (doc: Document) => {\n try {\n // Common React root element IDs\n const rootSelectors = ['#root', '#app', '#__next', '[data-reactroot]', '#react-root']\n\n for (const selector of rootSelectors) {\n const elements = doc.querySelectorAll(selector)\n elements.forEach((element) => {\n // Try the element itself first\n let fiber = getFiberFromElement(element)\n\n // If not found, try the first child element (React usually attaches fiber to rendered elements)\n if (!fiber && element.firstElementChild) {\n fiber = getFiberFromElement(element.firstElementChild)\n }\n\n // Try any descendant with fiber\n if (!fiber) {\n const descendants = element.querySelectorAll('*')\n for (const desc of descendants) {\n fiber = getFiberFromElement(desc)\n if (fiber)\n break\n }\n }\n\n if (fiber) {\n const rootFiber = findRootFiber(fiber)\n if (rootFiber) {\n roots.add(rootFiber)\n }\n }\n })\n }\n\n // Also try to find any element with React fiber\n if (roots.size === 0) {\n const allElements = doc.querySelectorAll('*')\n for (const element of allElements) {\n const fiber = getFiberFromElement(element)\n if (fiber) {\n const rootFiber = findRootFiber(fiber)\n if (rootFiber) {\n roots.add(rootFiber)\n break // Found one root, that's enough\n }\n }\n }\n }\n }\n catch {\n // Ignore errors\n }\n }\n\n try {\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Try parent window first (Host App where React runs)\n if (window.parent && window.parent !== window) {\n try {\n findRootsInDocument(window.parent.document)\n }\n catch {\n // Cross-origin access denied\n }\n }\n\n // Also try current window\n if (roots.size === 0) {\n findRootsInDocument(document)\n }\n }\n\n // Fallback: Try bippy's _fiberRoots\n if (roots.size === 0 && _fiberRoots) {\n // WeakSet cannot be iterated, but we can try to use it if it's actually a Set\n if (typeof (_fiberRoots as any).forEach === 'function') {\n (_fiberRoots as any).forEach((root: any) => roots.add(root))\n }\n }\n }\n catch {\n // Ignore errors\n }\n\n return roots\n}\n\n/**\n * Get render count for a fiber from react-scan's reportData\n */\nfunction getFiberRenderCount(fiber: any): number {\n try {\n const fiberId = getFiberId(fiber)\n // Check our local tracking first\n const localCount = componentRenderCounts.get(fiberId)\n if (localCount !== undefined) {\n return localCount\n }\n\n // Try to get from react-scan's Store.reportData\n const { Store } = getInternals()\n if (Store?.reportData) {\n const componentName = getDisplayName(fiber.type) || 'Unknown'\n let totalCount = 0\n Store.reportData.forEach((data: any) => {\n if (data.componentName === componentName) {\n totalCount += data.count || 0\n }\n })\n return totalCount\n }\n }\n catch {\n // Ignore errors\n }\n return 0\n}\n\n/**\n * Collect all composite component descendants from a fiber subtree\n */\nfunction collectCompositeDescendants(fiber: any, depth: number, maxDepth: number, results: ComponentTreeNode[]): void {\n if (!fiber || depth > maxDepth)\n return\n\n try {\n const isComposite = isCompositeFiber(fiber)\n const name = getDisplayName(fiber.type)\n\n if (isComposite && name) {\n // Found a composite component, add it to results\n const node = buildTreeNode(fiber, depth, maxDepth)\n if (node) {\n results.push(node)\n }\n }\n else {\n // Not composite, continue searching in children\n let child = fiber.child\n while (child) {\n collectCompositeDescendants(child, depth, maxDepth, results)\n child = child.sibling\n }\n }\n }\n catch {\n // Ignore errors\n }\n}\n\n/**\n * Build component tree node from fiber\n */\nfunction buildTreeNode(fiber: any, depth: number = 0, maxDepth: number = 50): ComponentTreeNode | null {\n if (!fiber || depth > maxDepth)\n return null\n\n try {\n // Only include composite components (not DOM elements)\n const isComposite = isCompositeFiber(fiber)\n const name = getDisplayName(fiber.type)\n\n // For composite components, create a node\n if (isComposite && name) {\n const fiberId = getFiberId(fiber)\n const renderCount = getFiberRenderCount(fiber)\n\n const node: ComponentTreeNode = {\n id: String(fiberId),\n name,\n type: typeof fiber.type === 'function' ? 'function' : 'class',\n renderCount,\n lastRenderTime: 0,\n children: [],\n }\n\n // Process children - collect all composite descendants\n let child = fiber.child\n while (child) {\n collectCompositeDescendants(child, depth + 1, maxDepth, node.children)\n child = child.sibling\n }\n\n return node\n }\n\n // For non-composite fibers, traverse children to find composite descendants\n let child = fiber.child\n const compositeChildren: ComponentTreeNode[] = []\n while (child) {\n collectCompositeDescendants(child, depth, maxDepth, compositeChildren)\n child = child.sibling\n }\n\n // If we found composite children but this fiber isn't composite,\n // return the first child as a proxy (or null if multiple)\n if (compositeChildren.length === 1) {\n return compositeChildren[0]\n }\n\n return null\n }\n catch {\n return null\n }\n}\n\n/**\n * Extract component tree from fiber roots\n */\nfunction extractComponentTree(): ComponentTreeNode[] {\n const trees: ComponentTreeNode[] = []\n\n try {\n const fiberRoots = getFiberRoots()\n\n fiberRoots.forEach((root: any) => {\n // FiberRoot has current property pointing to the HostRoot fiber\n const rootFiber = root.current || root\n if (!rootFiber)\n return\n\n // The actual component tree starts from the HostRoot's child\n let child = rootFiber.child\n while (child) {\n const node = buildTreeNode(child, 0)\n if (node) {\n trees.push(node)\n }\n child = child.sibling\n }\n })\n }\n catch {\n // Ignore errors\n }\n\n return trees\n}\n\n/**\n * Track render count for a fiber (called from onRender callback)\n */\nfunction trackFiberRender(fiber: any): void {\n try {\n const fiberId = getFiberId(fiber)\n const current = componentRenderCounts.get(fiberId) || 0\n componentRenderCounts.set(fiberId, current + 1)\n }\n catch {\n // Ignore errors\n }\n}\n\n/**\n * Extract performance data from React Scan internals\n */\nfunction extractPerformanceData(): ComponentPerformanceData[] {\n const performanceData: ComponentPerformanceData[] = []\n\n try {\n const { Store } = getInternals()\n\n if (!Store || !Store.reportData) {\n return performanceData\n }\n\n const componentStats = new Map<string, {\n renderCount: number\n totalTime: number\n unnecessaryRenders: number\n lastRenderTime: number | null\n }>()\n\n Store.reportData.forEach((renderData) => {\n const componentName = renderData.componentName || 'Unknown'\n const existing = componentStats.get(componentName) || {\n renderCount: 0,\n totalTime: 0,\n unnecessaryRenders: 0,\n lastRenderTime: null,\n }\n\n existing.renderCount += renderData.count || 0\n existing.totalTime += renderData.time || 0\n\n if (renderData.unnecessary) {\n existing.unnecessaryRenders++\n }\n\n if (renderData.time !== null && renderData.time !== undefined) {\n existing.lastRenderTime = renderData.time\n }\n\n componentStats.set(componentName, existing)\n })\n\n componentStats.forEach((stats, componentName) => {\n performanceData.push({\n componentName,\n renderCount: stats.renderCount,\n totalTime: stats.totalTime,\n averageTime: stats.renderCount > 0 ? stats.totalTime / stats.renderCount : 0,\n unnecessaryRenders: stats.unnecessaryRenders,\n lastRenderTime: stats.lastRenderTime,\n })\n })\n\n performanceData.sort((a, b) => b.totalTime - a.totalTime)\n }\n catch {\n // Ignore extraction errors\n }\n\n return performanceData\n}\n\n/**\n * Calculate performance summary\n */\nfunction calculatePerformanceSummary(data: ComponentPerformanceData[]): PerformanceSummary {\n const totalRenders = data.reduce((sum, item) => sum + item.renderCount, 0)\n const totalComponents = data.length\n const unnecessaryRenders = data.reduce((sum, item) => sum + item.unnecessaryRenders, 0)\n const totalTime = data.reduce((sum, item) => sum + item.totalTime, 0)\n const averageRenderTime = totalRenders > 0 ? totalTime / totalRenders : 0\n const slowestComponents = data.slice(0, 10)\n\n return {\n totalRenders,\n totalComponents,\n unnecessaryRenders,\n averageRenderTime,\n slowestComponents,\n }\n}\n\n/**\n * Create a scan instance with DevTools integration\n */\nfunction createScanInstance(options: ReactDevtoolsScanOptions): ScanInstance {\n currentOptions = options\n\n return {\n getOptions: () => currentOptions,\n\n setOptions: (newOptions: Partial<ReactDevtoolsScanOptions>) => {\n currentOptions = { ...currentOptions, ...newOptions }\n\n // We need to force showToolbar to true in the actual options passed to react-scan\n // so that the container/inspector is initialized. We'll handle visibility via CSS.\n const effectiveOptions = { ...currentOptions }\n if (effectiveOptions.enabled) {\n effectiveOptions.showToolbar = true\n }\n\n if (currentOptions.enabled) {\n const scanFn = getScan()\n if (scanFn) {\n scanFn(effectiveOptions)\n }\n else {\n getSetOptions()(effectiveOptions)\n }\n\n // Apply visibility override\n updateToolbarVisibility(!!currentOptions.showToolbar)\n }\n else {\n getSetOptions()(effectiveOptions)\n }\n },\n\n start: () => {\n const internals = getInternals()\n const { instrumentation } = internals || {}\n\n if (instrumentation && instrumentation.isPaused) {\n instrumentation.isPaused.value = false\n }\n\n const options = { ...currentOptions, enabled: true }\n // Force showToolbar to true\n const effectiveOptions = { ...options, showToolbar: true }\n\n const scanFn = getScan()\n const isInstrumented = internals?.instrumentation && !internals.instrumentation.isPaused.value\n\n // Only reinitialize if not already instrumented\n if (scanFn) {\n // Always call scanFn to ensure options are applied and it's active\n scanFn(effectiveOptions)\n }\n else {\n // Fallback to setOptions if scanFn not available\n const current = getGetOptions()()?.value || {}\n const hasChanges = Object.keys(effectiveOptions).some((key) => {\n return effectiveOptions[key as keyof ReactDevtoolsScanOptions] !== current[key as keyof typeof current]\n })\n\n if (hasChanges || !isInstrumented) {\n getSetOptions()(effectiveOptions)\n }\n }\n\n currentOptions = options\n // Apply visibility override\n updateToolbarVisibility(!!currentOptions.showToolbar)\n\n // Re-apply onRender callback AFTER scan() has reset options\n // This is critical because scan() calls setOptions() which replaces the entire options.value object\n if (onRenderCleanup) {\n onRenderCleanup()\n }\n onRenderCleanup = setupOnRenderCallback()\n },\n\n stop: () => {\n const options = { ...currentOptions, enabled: false }\n currentOptions = options\n getSetOptions()(options)\n },\n\n isActive: () => {\n const opts = getGetOptions()()\n if (opts && typeof opts === 'object' && 'value' in opts) {\n return opts.value.enabled === true\n }\n return opts?.enabled === true\n },\n\n hideToolbar: () => {\n currentOptions.showToolbar = false\n updateToolbarVisibility(false)\n },\n\n showToolbar: () => {\n currentOptions.showToolbar = true\n updateToolbarVisibility(true)\n },\n\n getToolbarVisibility: () => {\n const opts = getGetOptions()()\n if (opts && typeof opts === 'object' && 'value' in opts) {\n return opts.value.showToolbar !== false\n }\n return opts?.showToolbar !== false\n },\n\n getPerformanceData: () => {\n return extractPerformanceData()\n },\n\n getPerformanceSummary: () => {\n const data = extractPerformanceData()\n return calculatePerformanceSummary(data)\n },\n\n clearPerformanceData: () => {\n try {\n const { Store } = getInternals()\n if (Store?.reportData) {\n Store.reportData.clear()\n }\n if (Store?.legacyReportData) {\n Store.legacyReportData.clear()\n }\n }\n catch {\n // Ignore errors\n }\n },\n\n startInspecting: () => {\n try {\n const { Store } = getInternals()\n if (Store?.inspectState) {\n Store.inspectState.value = {\n kind: 'inspecting',\n hoveredDomElement: null,\n }\n }\n }\n catch {\n // Ignore errors\n }\n },\n\n stopInspecting: () => {\n try {\n const { Store } = getInternals()\n if (Store?.inspectState) {\n Store.inspectState.value = {\n kind: 'inspect-off',\n }\n }\n }\n catch {\n // Ignore errors\n }\n },\n\n isInspecting: () => {\n try {\n const { Store } = getInternals()\n if (Store?.inspectState) {\n return Store.inspectState.value.kind === 'inspecting'\n }\n return false\n }\n catch {\n return false\n }\n },\n\n focusComponent: (fiber: any) => {\n try {\n const { Store } = getInternals()\n if (!fiber || !Store?.inspectState)\n return\n\n let domElement: Element | null = null\n if (fiber.stateNode && fiber.stateNode instanceof Element) {\n domElement = fiber.stateNode\n }\n\n if (domElement) {\n Store.inspectState.value = {\n kind: 'focused',\n focusedDomElement: domElement,\n fiber,\n }\n }\n }\n catch {\n // Ignore errors\n }\n },\n\n getFocusedComponent: () => {\n try {\n const { Store } = getInternals()\n if (Store?.inspectState) {\n const state = Store.inspectState.value\n if (state.kind === 'focused') {\n const fiberId = getFiberId(state.fiber)\n return {\n componentName: getDisplayName(state.fiber.type) || 'Unknown',\n componentId: String(fiberId),\n fiber: state.fiber,\n domElement: state.focusedDomElement,\n }\n }\n }\n return null\n }\n catch {\n return null\n }\n },\n\n onInspectStateChange: (callback: (state: any) => void) => {\n try {\n const { Store } = getInternals()\n if (Store?.inspectState) {\n // Set up the onRender callback for tracking renders\n if (!onRenderCleanup) {\n onRenderCleanup = setupOnRenderCallback()\n }\n\n // Subscribe to inspect state changes\n const unsubscribe = Store.inspectState.subscribe((state: any) => {\n // Update focused component tracker when state changes\n if (state.kind === 'focused') {\n const componentName = getDisplayName(state.fiber?.type) || 'Unknown'\n const fiberInfo = getFocusedFiberInfo()\n\n // Initialize or update tracker\n if (!focusedComponentTracker || focusedComponentTracker.componentName !== componentName) {\n // Clean up previous subscription\n if (focusedComponentTracker?.unsubscribe) {\n focusedComponentTracker.unsubscribe()\n }\n\n focusedComponentTracker = {\n componentName,\n renderCount: 0,\n changes: { propsChanges: [], stateChanges: [], contextChanges: [] },\n timestamp: Date.now(),\n unsubscribe: null,\n }\n\n // Subscribe to changes for this fiber using the correct fiberId from bippy\n // This is a backup mechanism - main tracking is done via onRender callback\n if (fiberInfo) {\n focusedComponentTracker.unsubscribe = subscribeToFiberChanges(fiberInfo.fiberId, (changes: any) => {\n if (focusedComponentTracker) {\n focusedComponentTracker.renderCount++\n focusedComponentTracker.timestamp = Date.now()\n\n // Convert changes to serializable format\n // changes is { propsChanges: [...], stateChanges: [...], contextChanges: [...] }\n if (changes.propsChanges && Array.isArray(changes.propsChanges)) {\n focusedComponentTracker.changes.propsChanges = changes.propsChanges.map((c: any) => ({\n name: c.name || 'unknown',\n previousValue: serializeValue(c.prevValue),\n currentValue: serializeValue(c.value),\n count: 1,\n }))\n }\n if (changes.stateChanges && Array.isArray(changes.stateChanges)) {\n focusedComponentTracker.changes.stateChanges = changes.stateChanges.map((c: any) => ({\n name: c.name || `Hook ${c.index || 0}`,\n previousValue: serializeValue(c.prevValue),\n currentValue: serializeValue(c.value),\n count: 1,\n }))\n }\n if (changes.contextChanges && Array.isArray(changes.contextChanges)) {\n focusedComponentTracker.changes.contextChanges = changes.contextChanges.map((c: any) => ({\n name: c.name || 'Context',\n previousValue: serializeValue(c.prevValue),\n currentValue: serializeValue(c.value),\n count: 1,\n }))\n }\n\n // Notify all callbacks\n const info: FocusedComponentRenderInfo = {\n componentName: focusedComponentTracker.componentName,\n renderCount: focusedComponentTracker.renderCount,\n changes: focusedComponentTracker.changes,\n timestamp: focusedComponentTracker.timestamp,\n }\n\n focusedComponentChangeCallbacks.forEach((cb) => {\n try {\n cb(info)\n }\n catch {\n // Ignore callback errors\n }\n })\n }\n })\n }\n }\n }\n else if (state.kind === 'inspect-off') {\n // Don't clear the tracker here - it will be managed by setFocusedComponentByName\n // The tracker needs to persist to continue tracking renders after selection\n }\n\n // Call the original callback\n callback(state)\n })\n return unsubscribe\n }\n return () => {}\n }\n catch {\n return () => {}\n }\n },\n\n getFPS: () => fps,\n\n getFocusedComponentRenderInfo: () => {\n if (!focusedComponentTracker)\n return null\n\n return {\n componentName: focusedComponentTracker.componentName,\n renderCount: focusedComponentTracker.renderCount,\n changes: focusedComponentTracker.changes,\n timestamp: focusedComponentTracker.timestamp,\n }\n },\n\n onFocusedComponentChange: (callback: (info: FocusedComponentRenderInfo) => void) => {\n focusedComponentChangeCallbacks.add(callback)\n return () => {\n focusedComponentChangeCallbacks.delete(callback)\n }\n },\n\n /**\n * Set the focused component by name for render tracking\n * This is used when inspectState.kind is not 'focused' but we still want to track renders\n */\n setFocusedComponentByName: (componentName: string) => {\n // Clean up previous tracker\n if (focusedComponentTracker?.unsubscribe) {\n focusedComponentTracker.unsubscribe()\n }\n\n // Create new tracker\n focusedComponentTracker = {\n componentName,\n renderCount: 0,\n changes: { propsChanges: [], stateChanges: [], contextChanges: [] },\n timestamp: Date.now(),\n unsubscribe: null,\n }\n\n // Ensure onRender callback is set up for tracking\n if (!onRenderCleanup) {\n onRenderCleanup = setupOnRenderCallback()\n }\n },\n\n clearFocusedComponentChanges: () => {\n if (focusedComponentTracker) {\n focusedComponentTracker.renderCount = 0\n focusedComponentTracker.changes = { propsChanges: [], stateChanges: [], contextChanges: [] }\n focusedComponentTracker.timestamp = Date.now()\n }\n },\n\n /**\n * Get the component tree with render counts\n */\n getComponentTree: () => {\n return extractComponentTree()\n },\n\n /**\n * Clear component render count tracking\n */\n clearComponentTree: () => {\n componentRenderCounts.clear()\n },\n }\n}\n\n/**\n * Get or create the scan instance\n */\nexport function getScanInstance(options?: ReactDevtoolsScanOptions): ScanInstance {\n if (!scanInstance && options) {\n scanInstance = createScanInstance(options)\n }\n\n if (!scanInstance) {\n throw new Error('Scan instance not initialized. Call initScan first.')\n }\n\n return scanInstance\n}\n\n/**\n * Reset the scan instance\n */\nexport function resetScanInstance(): void {\n scanInstance = null\n currentOptions = {}\n}\n","/**\n * React Scan Plugin for React DevTools\n *\n * This plugin integrates React Scan into the React DevTools plugin system,\n * providing performance monitoring and analysis capabilities.\n */\n\nimport type { ReactDevtoolsScanOptions, ScanInstance } from './types'\nimport { getDisplayName, getFiberId } from 'bippy'\nimport { getScanInstance, resetScanInstance } from './adapter'\n\n/**\n * React Scan plugin configuration\n */\nexport interface ScanPluginConfig extends ReactDevtoolsScanOptions {\n /**\n * Whether to auto-start scan on plugin load\n * @default true\n */\n autoStart?: boolean\n}\n\n/**\n * Create React Scan plugin\n *\n * @param config - Plugin configuration\n * @returns DevTools plugin instance\n *\n * @example\n * ```typescript\n * import { createScanPlugin } from '@react-devtools-plus/scan/plugin';\n *\n * const scanPlugin = createScanPlugin({\n * enabled: true,\n * showToolbar: true,\n * autoStart: true,\n * });\n * ```\n */\nexport function createScanPlugin(config: ScanPluginConfig = {}): any {\n let scanInstance: ScanInstance | null = null\n let context: any = null\n\n const {\n autoStart = true,\n ...scanOptions\n } = config\n\n // Event emitter for plugin events\n const eventHandlers: Map<string, Set<(data: any) => void>> = new Map()\n\n const emit = (eventName: string, data: any) => {\n const handlers = eventHandlers.get(eventName)\n if (handlers) {\n handlers.forEach((handler) => {\n if (typeof handler === 'function') {\n try {\n handler(data)\n }\n catch {\n // Ignore event handler errors\n }\n }\n })\n }\n }\n\n const subscribe = (eventName: string, handler: (data: any) => void) => {\n if (!eventHandlers.has(eventName)) {\n eventHandlers.set(eventName, new Set())\n }\n eventHandlers.get(eventName)!.add(handler)\n\n // Return unsubscribe function\n return () => {\n const handlers = eventHandlers.get(eventName)\n if (handlers) {\n handlers.delete(handler)\n }\n }\n }\n\n return {\n id: 'react-scan',\n name: 'React Scan',\n description: 'Performance monitoring and analysis for React applications',\n version: '1.0.0',\n\n // Expose subscribe method for event subscriptions\n subscribe,\n\n /**\n * Plugin setup\n */\n async setup(ctx: any) {\n context = ctx\n\n // Always initialize the scan instance, and start by default\n const initOptions = {\n enabled: autoStart !== false,\n ...scanOptions,\n }\n\n // Always create the scan instance so RPC methods work\n scanInstance = getScanInstance(initOptions)\n\n // Always call scan() to start scanning by default (unless autoStart explicitly false)\n if (autoStart !== false) {\n // Use adapter's start which handles globals correctly\n scanInstance.start()\n }\n\n // Set up inspect state change listener\n try {\n const scan = getScanInstance()\n if (scan) {\n // Track the last hovered component during inspection\n let lastInspectedComponent: { componentName: string, componentId?: string } | null = null\n\n scan.onInspectStateChange((state: any) => {\n // Emit inspect state change event\n // Sanitize state for RPC\n const sanitizedState = {\n kind: state.kind,\n // Include component name if available\n componentName: state.fiber ? (state.fiber.type?.displayName || state.fiber.type?.name || 'Unknown') : undefined,\n }\n emit('inspect-state-changed', sanitizedState)\n\n // Track component during inspecting state - save hovered component info\n if (state.kind === 'inspecting' && state.fiber) {\n const componentName = getDisplayName(state.fiber.type) || 'Unknown'\n const componentId = String(getFiberId(state.fiber))\n lastInspectedComponent = { componentName, componentId }\n }\n\n // If a component is focused, emit focused component info and set up tracking\n if (state.kind === 'focused') {\n const focusedComponent = scan.getFocusedComponent()\n if (focusedComponent) {\n // Sanitize for RPC - remove non-serializable fields\n const { fiber, domElement, ...serializableComponent } = focusedComponent as any\n emit('component-focused', serializableComponent)\n // Set up render tracking\n scan.setFocusedComponentByName(focusedComponent.componentName)\n }\n }\n\n // When inspection ends (inspect-off), emit the last inspected component\n if (state.kind === 'inspect-off' && lastInspectedComponent) {\n emit('component-focused', lastInspectedComponent)\n scan.setFocusedComponentByName(lastInspectedComponent.componentName)\n lastInspectedComponent = null\n }\n })\n\n // Subscribe to focused component render changes\n scan.onFocusedComponentChange((info) => {\n emit('focused-component-render', info)\n })\n }\n }\n catch {\n // Ignore errors setting up inspect state listener\n }\n\n // Listen for component tree changes if context supports it\n // Listen to component tree changes if supported\n if (ctx.on) {\n ctx.on('component-tree-changed', (_event: any) => {\n // Component tree changed, could update UI here\n })\n }\n\n // Register RPC functions if context supports it\n if (ctx.registerRPC) {\n ctx.registerRPC('getScanOptions', () => {\n try {\n const scan = getScanInstance()\n return scan?.getOptions() || null\n }\n catch {\n return null\n }\n })\n\n ctx.registerRPC('setScanOptions', (options: Partial<ReactDevtoolsScanOptions>) => {\n try {\n const scan = getScanInstance()\n if (scan) {\n scan.setOptions(options)\n return true\n }\n return false\n }\n catch {\n return false\n }\n })\n\n ctx.registerRPC('startScan', () => {\n try {\n const scan = getScanInstance()\n if (scan) {\n scan.start()\n return true\n }\n return false\n }\n catch {\n return false\n }\n })\n\n ctx.registerRPC('stopScan', () => {\n try {\n const scan = getScanInstance()\n if (scan) {\n scan.stop()\n return true\n }\n return false\n }\n catch {\n return false\n }\n })\n\n ctx.registerRPC('isScanActive', () => {\n try {\n const scan = getScanInstance()\n return scan?.isActive() || false\n }\n catch {\n return false\n }\n })\n }\n },\n\n /**\n * Plugin teardown\n */\n async teardown() {\n if (scanInstance) {\n scanInstance.stop()\n scanInstance = null\n }\n\n resetScanInstance()\n context = null\n },\n\n /**\n * RPC methods exposed to other plugins\n */\n rpc: {\n /**\n * Get current scan options\n */\n getOptions: () => {\n try {\n const scan = getScanInstance()\n return scan?.getOptions() || null\n }\n catch {\n return null\n }\n },\n\n /**\n * Set scan options\n */\n setOptions: (options: Partial<ReactDevtoolsScanOptions>) => {\n try {\n const scan = getScanInstance()\n if (scan) {\n scan.setOptions(options)\n return true\n }\n return false\n }\n catch {\n return false\n }\n },\n\n /**\n * Start scan\n */\n start: () => {\n try {\n const scanInst = getScanInstance()\n if (scanInst) {\n scanInst.start()\n return true\n }\n // Auto-initialize if not started\n if (!scanInstance) {\n scanInstance = getScanInstance(config)\n scanInstance.start()\n return true\n }\n return false\n }\n catch {\n return false\n }\n },\n\n /**\n * Stop scan\n */\n stop: () => {\n try {\n const scan = getScanInstance()\n if (scan) {\n scan.stop()\n return true\n }\n return false\n }\n catch {\n return false\n }\n },\n\n /**\n * Check if scan is active\n */\n isActive: () => {\n try {\n const scan = getScanInstance()\n return scan?.isActive() || false\n }\n catch {\n return false\n }\n },\n\n /**\n * Hide the React Scan toolbar\n */\n hideToolbar: () => {\n try {\n const scan = getScanInstance()\n if (scan) {\n scan.hideToolbar()\n return true\n }\n return false\n }\n catch {\n return false\n }\n },\n\n /**\n * Show the React Scan toolbar\n */\n showToolbar: () => {\n try {\n const scan = getScanInstance()\n if (scan) {\n scan.showToolbar()\n return true\n }\n return false\n }\n catch {\n return false\n }\n },\n\n /**\n * Get toolbar visibility state\n */\n getToolbarVisibility: () => {\n try {\n const scan = getScanInstance()\n return scan?.getToolbarVisibility() || false\n }\n catch {\n return false\n }\n },\n\n /**\n * Get performance data for all components\n */\n getPerformanceData: () => {\n try {\n const scan = getScanInstance()\n return scan?.getPerformanceData() || []\n }\n catch {\n return []\n }\n },\n\n /**\n * Get aggregated performance summary\n */\n getPerformanceSummary: () => {\n try {\n const scan = getScanInstance()\n if (!scan) {\n return {\n totalRenders: 0,\n totalComponents: 0,\n unnecessaryRenders: 0,\n averageRenderTime: 0,\n slowestComponents: [],\n }\n }\n return scan.getPerformanceSummary()\n }\n catch {\n return {\n totalRenders: 0,\n totalComponents: 0,\n unnecessaryRenders: 0,\n averageRenderTime: 0,\n slowestComponents: [],\n }\n }\n },\n\n /**\n * Clear all performance data\n */\n clearPerformanceData: () => {\n try {\n const scan = getScanInstance()\n if (scan) {\n scan.clearPerformanceData()\n return true\n }\n return false\n }\n catch {\n return false\n }\n },\n\n /**\n * Get current FPS\n */\n getFPS: () => {\n try {\n const scan = getScanInstance()\n return scan?.getFPS() || 0\n }\n catch {\n return 0\n }\n },\n\n /**\n * Start component inspection mode\n */\n startInspecting: () => {\n try {\n const scan = getScanInstance()\n if (scan) {\n scan.startInspecting()\n return true\n }\n return false\n }\n catch {\n return false\n }\n },\n\n /**\n * Stop component inspection mode\n */\n stopInspecting: () => {\n try {\n const scan = getScanInstance()\n if (scan) {\n scan.stopInspecting()\n return true\n }\n return false\n }\n catch {\n return false\n }\n },\n\n /**\n * Check if inspection mode is active\n */\n isInspecting: () => {\n try {\n const scan = getScanInstance()\n return scan?.isInspecting() || false\n }\n catch {\n return false\n }\n },\n\n /**\n * Focus on a specific component\n */\n focusComponent: (fiber: any) => {\n try {\n const scan = getScanInstance()\n if (scan && fiber) {\n scan.focusComponent(fiber)\n return true\n }\n return false\n }\n catch {\n return false\n }\n },\n\n /**\n * Get currently focused component\n */\n getFocusedComponent: () => {\n try {\n const scan = getScanInstance()\n const component = scan?.getFocusedComponent() || null\n if (component) {\n // Sanitize for RPC - remove non-serializable fields\n const { fiber, domElement, ...serializableComponent } = component as any\n return serializableComponent\n }\n return null\n }\n catch {\n return null\n }\n },\n\n /**\n * Get focused component render info with changes\n */\n getFocusedComponentRenderInfo: () => {\n try {\n const scan = getScanInstance()\n return scan?.getFocusedComponentRenderInfo() || null\n }\n catch {\n return null\n }\n },\n\n /**\n * Clear focused component changes\n */\n clearFocusedComponentChanges: () => {\n try {\n const scan = getScanInstance()\n if (scan) {\n scan.clearFocusedComponentChanges()\n return true\n }\n return false\n }\n catch {\n return false\n }\n },\n\n /**\n * Set focused component by name for render tracking\n */\n setFocusedComponentByName: (componentName: string) => {\n try {\n const scan = getScanInstance()\n if (scan && componentName) {\n scan.setFocusedComponentByName(componentName)\n return true\n }\n return false\n }\n catch {\n return false\n }\n },\n\n /**\n * Get the component tree with render counts\n */\n getComponentTree: () => {\n try {\n const scan = getScanInstance()\n return scan?.getComponentTree() || []\n }\n catch {\n return []\n }\n },\n\n /**\n * Clear component tree render counts\n */\n clearComponentTree: () => {\n try {\n const scan = getScanInstance()\n if (scan) {\n scan.clearComponentTree()\n return true\n }\n return false\n }\n catch {\n return false\n }\n },\n },\n\n /**\n * Event handlers\n */\n on: {\n 'component-mounted': (_event: any) => {\n // React Scan automatically tracks component mounts\n },\n\n 'component-updated': (_event: any) => {\n // React Scan automatically tracks component updates\n },\n },\n }\n}\n\n/**\n * Default React Scan plugin instance\n */\nexport const scanPlugin = createScanPlugin()\n","/**\n * React DevTools Scan - Integration layer for react-scan\n *\n * @packageDocumentation\n */\n\nimport type { IntegrationMode, ReactDevtoolsScanOptions, ScanInstance } from './types'\nimport { getOptions, ReactScanInternals, scan, setOptions } from 'react-scan'\nimport { getScanInstance, resetScanInstance } from './adapter'\n\n/**\n * Initialize React Scan with DevTools integration\n *\n * @param options - Configuration options for React Scan\n * @returns Scan instance for further control\n *\n * @example\n * ```typescript\n * import { initScan } from '@react-devtools-plus/scan';\n *\n * // Initialize with default options\n * const scanInstance = initScan();\n *\n * // Initialize with custom options\n * const scanInstance = initScan({\n * enabled: true,\n * showToolbar: true,\n * animationSpeed: 'fast',\n * trackUnnecessaryRenders: true,\n * integrationMode: 'overlay'\n * });\n * ```\n */\nexport function initScan(options: ReactDevtoolsScanOptions = {}): ScanInstance {\n // Set default options\n const defaultOptions: ReactDevtoolsScanOptions = {\n enabled: process.env.NODE_ENV === 'development',\n integrationMode: 'overlay',\n syncWithDevtools: true,\n ...options,\n }\n\n if (typeof window !== 'undefined') {\n // Check if already initialized (Singleton pattern)\n if ((window as any).__REACT_SCAN_INTERNALS__) {\n // Ensure runInAllEnvironments is true on existing instance\n const existingInternals = (window as any).__REACT_SCAN_INTERNALS__\n if (existingInternals) {\n existingInternals.runInAllEnvironments = true\n }\n\n // Update options on existing instance\n const setOpts = (window as any).__REACT_SCAN_SET_OPTIONS__\n if (setOpts) {\n setOpts(defaultOptions)\n }\n\n // Return adapter for existing instance\n return getScanInstance(defaultOptions)\n }\n\n // Manually expose internals to window for DevTools integration\n ;(window as any).__REACT_SCAN_INTERNALS__ = ReactScanInternals\n ;(window as any).__REACT_SCAN_SET_OPTIONS__ = setOptions\n ;(window as any).__REACT_SCAN_GET_OPTIONS__ = getOptions\n ;(window as any).__REACT_SCAN_SCAN__ = scan\n }\n\n // Initialize scan with the options\n scan(defaultOptions)\n\n // Return the scan instance for further control\n return getScanInstance(defaultOptions)\n}\n\n/**\n * Get the current scan instance\n *\n * @returns Current scan instance or null if not initialized\n *\n * @example\n * ```typescript\n * import { getScan } from '@react-devtools-plus/scan';\n *\n * const scanInstance = getScan();\n * if (scanInstance) {\n * // Check if scan is active\n * scanInstance.isActive();\n * }\n * ```\n */\nexport function getScan(): ScanInstance | null {\n try {\n return getScanInstance()\n }\n catch {\n return null\n }\n}\n\n/**\n * Reset the scan instance (useful for testing)\n *\n * @example\n * ```typescript\n * import { resetScan } from '@react-devtools-plus/scan';\n *\n * // Reset for testing\n * resetScan();\n * ```\n */\nexport function resetScan(): void {\n resetScanInstance()\n}\n\n// Re-export types\nexport type { IntegrationMode, ReactDevtoolsScanOptions, ScanInstance }\n\n// Re-export plugin\nexport { createScanPlugin, scanPlugin } from './plugin'\nexport type { ScanPluginConfig } from './plugin'\n\n// Re-export react-scan exports for convenience\nexport {\n getOptions,\n onRender,\n ReactScanInternals, // Export Internals for advanced integration\n scan,\n setOptions,\n useScan,\n} from 'react-scan'\n\n// Re-export react-scan types\nexport type { Options } from 'react-scan'\n"],"mappings":"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","names":["fn","e","rdtHook","i","e","e","e","rdtHook","onRender","rdtHook","_a","slice","options","vnodeId","isValidElement","rerenderQueue","prevDebounce","defer","depthSort","CAPTURE_REGEX","eventClock","eventProxy","eventProxyCapture","i","EMPTY_OBJ","EMPTY_ARR","IS_NON_DIMENSIONAL","isArray","Array","assign","obj","props","removeNode","node","parentNode","removeChild","createElement","type","children","key","ref","normalizedProps","arguments","length","call","defaultProps","createVNode","original","vnode","__k","__","__b","__e","__c","constructor","__v","__i","__u","Fragment","props","children","BaseComponent","context","this","getDomSibling","vnode","childIndex","__","__i","sibling","__k","length","__e","type","updateParentDomPointers","i","child","__c","base","enqueueRender","c","__d","rerenderQueue","push","process","__r","prevDebounce","options","debounceRendering","defer","component","newVNode","oldVNode","oldDom","commitQueue","refQueue","l","sort","depthSort","shift","__v","__P","assign","diff","__n","namespaceURI","__u","commitRoot","diffChildren","parentDom","renderResult","newParentVNode","oldParentVNode","globalContext","namespace","excessDomChildren","isHydrating","childVNode","newDom","firstChildDom","result","shouldPlace","oldChildren","EMPTY_ARR","newChildrenLength","constructNewChildrenArray","EMPTY_OBJ","ref","applyRef","insert","nextSibling","skewedIndex","matchingIndex","oldChildrenLength","remainingOldChildren","skew","Array","constructor","String","createVNode","isArray","undefined","__b","key","findMatchingIndex","unmount","parentVNode","parentNode","insertBefore","nodeType","toChildArray","out","some","x","y","matched","setStyle","style","value","setProperty","IS_NON_DIMENSIONAL","test","dom","name","oldValue","useCapture","lowerCaseName","o","cssText","replace","CAPTURE_REGEX","toLowerCase","slice","_attached","eventClock","addEventListener","eventProxyCapture","eventProxy","removeEventListener","e","removeAttribute","setAttribute","createEventProxy","eventHandler","_dispatched","event","tmp","isNew","oldProps","oldState","snapshot","clearProcessingException","newProps","isClassComponent","provider","componentContext","renderHook","count","newType","outer","prototype","render","contextType","__E","doRender","sub","state","__h","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","cloneNode","then","MODE_HYDRATE","indexOf","removeNode","markAsForce","diffElementNodes","diffed","forEach","root","cb","call","node","map","newHtml","oldHtml","newChildren","inputValue","checked","localName","document","createTextNode","createElementNS","is","__m","data","childNodes","attributes","__html","innerHTML","content","hasRefUnmount","current","skipRemove","r","componentWillUnmount","replaceNode","documentElement","createElement","firstChild","createContext","defaultValue","Context","props","subs","ctx","this","getChildContext","Set","__c","componentWillUnmount","shouldComponentUpdate","_props","value","forEach","c","__e","enqueueRender","sub","add","old","delete","call","children","i","__","Provider","__l","Consumer","contextValue","contextType","slice","EMPTY_ARR","options","error","vnode","oldVNode","errorInfo","component","ctor","handled","constructor","getDerivedStateFromError","setState","__d","componentDidCatch","__E","e","vnodeId","isValidElement","undefined","BaseComponent","prototype","update","callback","s","__s","state","assign","__v","_sb","push","forceUpdate","__h","render","Fragment","rerenderQueue","defer","Promise","then","bind","resolve","setTimeout","depthSort","a","b","__b","process","__r","CAPTURE_REGEX","eventClock","eventProxy","createEventProxy","eventProxyCapture","currentIndex","currentComponent","previousComponent","prevRaf","currentHook","afterPaintEffects","options","_options","oldBeforeDiff","__b","oldBeforeRender","__r","oldAfterDiff","diffed","oldCommit","__c","oldBeforeUnmount","unmount","oldRoot","__","getHookState","index","type","__h","hooks","__H","length","push","useState","initialState","useReducer","invokeOrReturn","reducer","init","hookState","_reducer","action","currentValue","__N","nextValue","setState","__f","updateHookState","p","s","c","stateHooks","filter","x","every","prevScu","call","this","shouldUpdate","props","forEach","hookItem","shouldComponentUpdate","prevCWU","componentWillUpdate","__e","tmp","useEffect","callback","args","state","__s","argsChanged","_pendingArgs","useLayoutEffect","useRef","initialValue","useMemo","current","useMemo","factory","args","state","getHookState","currentIndex","argsChanged","__H","__","__h","useCallback","callback","currentHook","useContext","context","provider","currentComponent","__c","c","sub","props","value","flushAfterPaintEffects","component","afterPaintEffects","shift","__P","__H","__h","forEach","invokeCleanup","invokeEffect","e","options","__e","__v","__b","vnode","currentComponent","oldBeforeDiff","__","parentDom","__k","__m","oldRoot","__r","oldBeforeRender","currentIndex","hooks","__c","previousComponent","hookItem","__N","_pendingArgs","diffed","oldAfterDiff","c","length","push","prevRaf","requestAnimationFrame","afterNextFrame","commitQueue","some","filter","cb","oldCommit","unmount","oldBeforeUnmount","hasErrored","s","HAS_RAF","callback","raf","done","clearTimeout","timeout","cancelAnimationFrame","setTimeout","hook","comp","cleanup","argsChanged","oldArgs","newArgs","arg","index","invokeOrReturn","f","BRAND_SYMBOL","Symbol","for","endBatch","batchDepth","error","hasError","batchedEffect","effect","batchIteration","next","_nextBatchedEffect","_flags","needsToRecompute","_callback","err","evalContext","batchedEffect","untracked","fn","prevContext","batchDepth","batchIteration","globalVersion","addDependency","signal","node","_node","_target","_version","_source","_prevSource","_sources","_nextSource","_prevTarget","_nextTarget","_rollbackNode","_flags","_subscribe","Signal","value","options","this","_value","_targets","_watched","watched","_unwatched","unwatched","name","prototype","brand","BRAND_SYMBOL","_refresh","targets","_this$_watched","call","_unsubscribe","prev","next","_this$_unwatched","subscribe","effect","valueOf","toString","toJSON","peek","Object","defineProperty","get","set","Error","_notify","endBatch","needsToRecompute","target","prepareSources","rollbackNode","cleanupSources","head","Computed","undefined","_fn","_globalVersion","OUTDATED","err","computed","cleanupEffect","cleanup","_cleanup","disposeEffect","endEffect","Effect","_nextBatchedEffect","_callback","finish","_start","bind","_dispose","dispose","Symbol","hook","hookName","hookFn","options","bind","currentComponent","finishUpdate","setCurrentUpdater","updater","_start","SignalValue","data","currentSignal","useSignal","value","s","useMemo","v","this","__v","__","__c","_updateFlags","_updater","_callback","_this$base","end","isValidElement","base","nodeType","setState","computed","displayName","Object","defineProperties","Signal","prototype","constructor","configurable","undefined","type","props","get","__b","old","vnode","signalProps","i","__np","peek","component","update","effect","createUpdater","error","oldVNode","dom","__e","renderedProps","updaters","_updaters","prop","_dispose","signal","createPropUpdater","_update","propSignal","setAsProperty","ownerSVGElement","changeSignal","newSignal","newProps","setAttribute","removeAttribute","index","Component","shouldComponentUpdate","state","hasSignals","_sources","__f","u","hasHooksState","HAS_PENDING_UPDATE","useSignalEffect","cb","callback","useRef","current","useEffect","effect","assign","obj","props","i","shallowDiffers","a","b","useSyncExternalStore","subscribe","getSnapshot","value","_useState","useState","_instance","__","_getSnapshot","forceUpdate","useLayoutEffect","didSnapshotChange","useEffect","inst","x","y","latestGetSnapshot","prevValue","nextValue","error","useLayoutEffect","PureComponent","p","c","this","props","context","memo","comparer","shouldUpdate","nextProps","ref","updateRef","call","current","shallowDiffers","Memoed","shouldComponentUpdate","createElement","displayName","name","prototype","isReactComponent","__f","type","Component","isPureReactComponent","state","oldDiffHook","options","__b","vnode","REACT_FORWARD_SYMBOL","Symbol","for","forwardRef","fn","Forwarded","clone","assign","$$typeof","render","oldCatchError","options","__e","error","newVNode","oldVNode","errorInfo","then","component","vnode","__","__c","__k","oldUnmount","unmount","detachedClone","detachedParent","parentDom","__H","forEach","effect","assign","__P","map","child","removeOriginal","originalParent","__v","appendChild","Suspense","this","__u","_suspenders","__b","suspended","__a","SuspenseList","this","_next","_map","options","unmount","vnode","component","__c","__R","__u","type","oldUnmount","Suspense","prototype","Component","promise","suspendingVNode","suspendingComponent","c","_suspenders","push","resolve","suspended","__v","resolved","onResolved","onSuspensionComplete","state","__a","suspendedVNode","__k","removeOriginal","__P","__O","setState","__b","pop","forceUpdate","then","componentWillUnmount","render","props","detachedParent","document","createElement","detachedComponent","detachedClone","fallback","Fragment","children","list","child","node","delete","revealOrder","size","length","ContextProvider","getChildContext","context","Portal","_this","container","_container","_temp","root","__m","__","nodeType","parentNode","childNodes","contains","insertBefore","before","removeChild","splice","indexOf","createPortal","el","containerInfo","delegated","get","unsuspend","wrappedUnsuspend","Map","toChildArray","reverse","i","set","componentDidUpdate","componentDidMount","forEach","REACT_ELEMENT_TYPE","Symbol","for","CAMEL_PROPS","ON_ANI","CAMEL_REPLACE","IS_DOM","onChangeInputType","test","Component","prototype","isReactComponent","forEach","key","Object","defineProperty","configurable","get","this","set","v","writable","value","oldEventHook","options","event","empty","isPropagationStopped","cancelBubble","isDefaultPrevented","defaultPrevented","e","persist","nativeEvent","currentComponent","classNameDescriptorNonEnumberable","enumerable","class","oldVNodeHook","vnode","type","props","normalizedProps","isNonDashedType","indexOf","i","IS_DOM","lowerCased","toLowerCase","onChangeInputType","ON_ANI","test","CAMEL_PROPS","replace","CAMEL_REPLACE","multiple","Array","isArray","toChildArray","children","child","selected","defaultValue","className","$$typeof","REACT_ELEMENT_TYPE","oldBeforeRender","__r","__c","oldDiffed","diffed","dom","__e","vnodeId","createVNode","type","props","key","isStaticChildren","__source","__self","ref","i","normalizedProps","vnode","__k","__","__b","__e","__c","constructor","__v","vnodeId","__i","__u","defaultProps","options","a","b","i","D","u","r","e","t","f","n","o","k","cn","LazyComponentTag","d","A","q","y","T","_a","e2","M","fiberId","l","x","w","h","c","j","fn","m","_b","fps2","i2","_","isValidFiber","C","$","e","e","e","Store","fiberId","_a","_b","c","fps","frameCount","lastTime","updateFPS","getFiberFromElement","child","a","b","options","scanInstance","e","ctx","scan","_a","getScan","e"]}
|