weevar 1.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/engine/fiber.ts","../src/engine/hydration.ts","../src/engine/hitTest.ts","../src/engine/animationPause.ts","../src/engine/autoScroll.ts","../src/engine/layoutContext.ts","../src/engine/domLabel.ts","../src/engine/elementChildren.ts","../src/engine/identity.ts","../src/engine/layoutTypeFromParent.ts","../src/engine/layoutChangeFromReorder.ts","../src/engine/layoutChangeMove.ts","../src/engine/dropTargets.ts","../src/engine/flexOrderPreview.ts","../src/engine/insertionBar.ts","../src/engine/pendingMove.ts","../src/engine/pendingReorder.ts","../src/prompts/generate.ts","../src/prompts/generateBatched.ts","../src/engine/reorderTarget.ts","../src/engine/resolveIdentity.ts","../src/overlay/overlayStyles.ts","../src/overlay/PromptPanel.tsx","../src/overlay/WeevarShadowApp.tsx","../src/react/WeevarDev.tsx"],"names":["mid","prev","simpleHash","useState","useRef","triggerTop","useEffect","target","ordered","jsxs","jsx","HideTrayIcon","GlobeIcon","useCallback"],"mappings":"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A;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","file":"react.dev.mjs","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * React Fiber access is internal and may break across React versions (TRD §5).\n * Supports React 17–19 style keys on DOM nodes.\n */\n\nexport type FiberNode = any;\n\nexport function getFiberFromDOM(node: Element): FiberNode | null {\n const key = Object.keys(node).find(\n (k) => k.startsWith(\"__reactFiber$\") || k.startsWith(\"__reactInternalInstance$\"),\n );\n return key ? (node as any)[key] ?? null : null;\n}\n\nfunction getTypeName(type: unknown): string | undefined {\n if (typeof type === \"string\") return type;\n if (typeof type === \"function\") return type.name || \"Anonymous\";\n if (typeof type === \"object\" && type && \"displayName\" in type) {\n return String((type as { displayName?: string }).displayName || \"\");\n }\n if (typeof type === \"symbol\") return type.toString();\n return undefined;\n}\n\nfunction readDebugSource(fiber: FiberNode): { file: string; line: number; col: number } | undefined {\n const s = fiber?._debugSource;\n if (!s) return undefined;\n return {\n file: String(s.fileName ?? s.file ?? \"\"),\n line: Number(s.lineNumber ?? s.line ?? 0),\n col: Number(s.columnNumber ?? s.column ?? 0),\n };\n}\n\n/** Meaningful component/host tags along the return chain (best-effort). */\nconst TAG_HOST_PORTAL = 4;\nconst TAG_HOST_COMPONENT = 5;\nconst TAG_FUNCTION_COMPONENT = 0;\nconst TAG_CLASS_COMPONENT = 1;\nconst TAG_MEMO = 14;\nconst TAG_FORWARD_REF = 11;\nconst TAG_SIMPLE_MEMO = 15;\n\nfunction isSegmentFiber(fiber: FiberNode): boolean {\n const t = fiber?.tag;\n return (\n t === TAG_HOST_COMPONENT ||\n t === TAG_FUNCTION_COMPONENT ||\n t === TAG_CLASS_COMPONENT ||\n t === TAG_MEMO ||\n t === TAG_FORWARD_REF ||\n t === TAG_SIMPLE_MEMO\n );\n}\n\nexport function buildFiberPath(el: Element): import(\"./layoutTypes\").FiberPathSegment[] {\n const out: import(\"./layoutTypes\").FiberPathSegment[] = [];\n let fiber = getFiberFromDOM(el);\n if (!fiber) return out;\n\n const stack: import(\"./layoutTypes\").FiberPathSegment[] = [];\n let cur: FiberNode | null = fiber;\n while (cur) {\n if (isSegmentFiber(cur)) {\n const name = getTypeName(cur.type);\n const source = readDebugSource(cur);\n stack.push({\n componentName: name,\n key: cur.key ?? null,\n index: typeof cur.index === \"number\" ? cur.index : 0,\n source,\n });\n }\n cur = cur.return;\n }\n stack.reverse();\n return stack;\n}\n\n/** True if this DOM node’s fiber chain includes a React host portal (TRD portal hint). */\nexport function elementRendersViaPortalHost(el: Element): boolean {\n let fiber = getFiberFromDOM(el);\n if (!fiber) return false;\n let cur: FiberNode | null = fiber;\n while (cur) {\n if (cur.tag === TAG_HOST_PORTAL) return true;\n cur = cur.return;\n }\n return false;\n}\n\nexport function getNearestHostComponentName(el: Element): string | undefined {\n const path = buildFiberPath(el);\n for (let i = path.length - 1; i >= 0; i--) {\n const n = path[i]?.componentName;\n if (n && n !== \"Fragment\" && /^[A-Z]/.test(n)) return n;\n }\n return path[path.length - 1]?.componentName;\n}\n","import { getFiberFromDOM } from \"./fiber\";\n\n/** Heuristic: React has mounted (fiber on #root or its first child — dev builds). */\nexport function isLikelyReactHydrated(): boolean {\n const root = document.getElementById(\"root\");\n if (!root) return true;\n if (getFiberFromDOM(root)) return true;\n const first = root.firstElementChild;\n return first ? Boolean(getFiberFromDOM(first)) : false;\n}\n\nexport async function waitForReactHydration(timeoutMs = 5000): Promise<void> {\n const t0 = performance.now();\n while (performance.now() - t0 < timeoutMs) {\n if (isLikelyReactHydrated()) return;\n await new Promise<void>((r) => requestAnimationFrame(() => r()));\n }\n}\n","export const WEEVAR_HOST_ID = \"__weevar_host__\";\nexport const WEEVAR_BOOT_DOT_CLASS = \"__weevar_boot_dot__\";\n\nexport function isInsideWeevarOverlay(el: Node | null): boolean {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;\n const element = el as Element;\n const root = element.getRootNode();\n if (root instanceof ShadowRoot && root.host?.id === WEEVAR_HOST_ID) return true;\n if ((element as HTMLElement).id === WEEVAR_HOST_ID) return true;\n return false;\n}\n\n/** Topmost element under point that belongs to the host app (not Weevar chrome). */\nexport function hitTestHostPage(x: number, y: number): Element | null {\n const raw = document.elementFromPoint(x, y);\n if (!raw || isInsideWeevarOverlay(raw)) return null;\n if ((raw as HTMLElement).classList?.contains(WEEVAR_BOOT_DOT_CLASS)) return null;\n\n let cur: Element | null = raw;\n while (cur) {\n if (cur.id === WEEVAR_HOST_ID) return null;\n const parent = cur.parentElement;\n if (!parent && cur.parentNode instanceof ShadowRoot) {\n cur = (cur.parentNode as ShadowRoot).host;\n continue;\n }\n cur = parent;\n }\n return raw;\n}\n\n/**\n * Same as {@link hitTestHostPage}, but temporarily hides the Weevar host so\n * `elementFromPoint` can see nodes underneath the overlay during drag.\n */\nexport function hitTestHostPageUnderOverlay(x: number, y: number): Element | null {\n const host = document.getElementById(WEEVAR_HOST_ID) as HTMLElement | null;\n const prev = host?.style.visibility;\n if (host) host.style.visibility = \"hidden\";\n try {\n const raw = document.elementFromPoint(x, y);\n if (!raw || (raw as HTMLElement).classList?.contains(WEEVAR_BOOT_DOT_CLASS)) return null;\n if (isInsideWeevarOverlay(raw)) return null;\n\n let cur: Element | null = raw;\n while (cur) {\n if (cur.id === WEEVAR_HOST_ID) return null;\n const parent = cur.parentElement;\n if (!parent && cur.parentNode instanceof ShadowRoot) {\n cur = (cur.parentNode as ShadowRoot).host;\n continue;\n }\n cur = parent;\n }\n return raw;\n } finally {\n if (host) host.style.visibility = prev ?? \"\";\n }\n}\n","const CLASS = \"__weevar_pause_anim__\";\nlet refCount = 0;\nlet styleEl: HTMLStyleElement | null = null;\n\n/** Pauses CSS transitions/animations on the host page during drag (TRD §8). */\nexport function pushPauseHostAnimations(): () => void {\n if (!styleEl) {\n styleEl = document.createElement(\"style\");\n styleEl.textContent = `.${CLASS} * { transition: none !important; animation-play-state: paused !important; }`;\n document.head.appendChild(styleEl);\n }\n document.documentElement.classList.add(CLASS);\n refCount++;\n return () => {\n refCount = Math.max(0, refCount - 1);\n if (refCount === 0) document.documentElement.classList.remove(CLASS);\n };\n}\n","/** TRD §6: gentle viewport-edge autoscroll during drag. */\nexport function autoScrollForPoint(clientX: number, clientY: number): void {\n // Scroll only when the cursor is very close to the viewport edge.\n const edgeZone = 20;\n // Keep speed intentionally low for controllable drop targeting.\n const maxSpeed = 6;\n const viewportW = window.innerWidth;\n const viewportH = window.innerHeight;\n let viewportDx = 0;\n let viewportDy = 0;\n\n const leftViewport = clientX;\n const rightViewport = viewportW - clientX;\n const topViewport = clientY;\n const bottomViewport = viewportH - clientY;\n\n if (leftViewport < edgeZone) {\n viewportDx = -edgeSpeed(edgeZone - leftViewport, edgeZone, maxSpeed);\n } else if (rightViewport < edgeZone) {\n viewportDx = edgeSpeed(edgeZone - rightViewport, edgeZone, maxSpeed);\n }\n\n if (topViewport < edgeZone) {\n viewportDy = -edgeSpeed(edgeZone - topViewport, edgeZone, maxSpeed);\n } else if (bottomViewport < edgeZone) {\n viewportDy = edgeSpeed(edgeZone - bottomViewport, edgeZone, maxSpeed);\n }\n\n if (viewportDx === 0 && viewportDy === 0) return;\n window.scrollBy(viewportDx, viewportDy);\n}\n\nfunction edgeSpeed(depth: number, margin: number, maxSpeed: number): number {\n const t = Math.max(0, Math.min(1, depth / margin));\n // Gentle cubic ramp keeps movement smooth and easy to stop.\n return maxSpeed * t * t * t;\n}\n","export function layoutTypeLabel(parent: Element): string {\n const cs = getComputedStyle(parent);\n const d = cs.display;\n if (d === \"flex\" || d === \"inline-flex\")\n return `flex-${cs.flexDirection || \"row\"}`;\n if (d === \"grid\" || d === \"inline-grid\") return \"grid\";\n if (d === \"block\") return \"block\";\n return d || \"flow\";\n}\n\nexport function buildAncestorPath(el: Element, maxDepth = 8): string {\n const segments: string[] = [];\n let cur: Element | null = el;\n let depth = 0;\n while (cur && cur !== document.documentElement && depth < maxDepth) {\n segments.unshift(shortElementLabel(cur));\n cur = cur.parentElement;\n depth++;\n }\n return segments.join(\" › \");\n}\n\nfunction shortElementLabel(el: Element): string {\n const tag = el.tagName.toLowerCase();\n const cl = (el as HTMLElement).classList;\n if (!cl?.length) return tag;\n const first = cl[0];\n if (!first) return tag;\n if (first.length > 20) return `${tag}.${first.slice(0, 17)}…`;\n return `${tag}.${first}`;\n}\n","/** Label for hover: `div.flex.gap-4` style (PRD A.3) */\nexport function getDomLabel(el: Element): string {\n const tag = el.tagName.toLowerCase();\n const classes = (el as HTMLElement).classList;\n if (!classes || classes.length === 0) return tag;\n const parts = [tag];\n for (let i = 0; i < classes.length; i++) {\n parts.push(classes[i]!);\n if (parts.join(\".\").length > 48) break;\n }\n return parts.join(\".\");\n}\n","export function elementChildren(parent: Element): Element[] {\n return Array.from(parent.children).filter(\n (n): n is Element => n.nodeType === Node.ELEMENT_NODE,\n );\n}\n","import { getDomLabel } from \"./domLabel\";\nimport { elementChildren } from \"./elementChildren\";\nimport {\n buildFiberPath,\n elementRendersViaPortalHost,\n getNearestHostComponentName,\n} from \"./fiber\";\nimport type { DomPathSegment, ElementIdentity } from \"./layoutTypes\";\nimport { parseDataWvSource } from \"./parseDataWvSource\";\n\nfunction simpleHash(s: string): string {\n let h = 0;\n for (let i = 0; i < s.length; i++) h = (h * 31 + s.charCodeAt(i)) | 0;\n return String(h);\n}\n\nfunction domPathFromBody(el: Element): DomPathSegment[] {\n const chain: Element[] = [];\n let cur: Element | null = el;\n while (cur && cur !== document.body) {\n chain.push(cur);\n cur = cur.parentElement;\n }\n chain.reverse();\n return chain.map((node) => {\n const parent = node.parentElement;\n const idx =\n parent && node !== document.body ? elementChildren(parent).indexOf(node) : 0;\n const classes = (node as HTMLElement).classList\n ? Array.from((node as HTMLElement).classList)\n : [];\n return {\n tag: node.tagName.toLowerCase(),\n index: Math.max(0, idx),\n classes: classes.slice(0, 4),\n };\n });\n}\n\nexport function buildElementIdentity(el: Element): ElementIdentity {\n const classes = (el as HTMLElement).classList\n ? Array.from((el as HTMLElement).classList)\n : [];\n const text = (el.textContent ?? \"\").trim().slice(0, 120);\n const textSnippet = text.slice(0, 30);\n const fiberPath = buildFiberPath(el);\n const debugFromFiber = [...fiberPath].reverse().find((s) => s.source)?.source;\n const fromAttr = parseDataWvSource(el);\n const source = fromAttr ?? debugFromFiber;\n const testId = el.getAttribute(\"data-testid\") ?? undefined;\n const componentName = getNearestHostComponentName(el);\n const inPortal = elementRendersViaPortalHost(el);\n\n return {\n fiberPath: fiberPath.length ? fiberPath : undefined,\n source,\n domPath: domPathFromBody(el),\n tag: el.tagName.toLowerCase(),\n classList: classes,\n contentHash: simpleHash(text),\n textSnippet: textSnippet || undefined,\n label: componentName ? `<${componentName}>` : getDomLabel(el),\n componentName,\n testId,\n inPortal,\n };\n}\n","import type { LayoutType } from \"./layoutTypes\";\n\nexport function readLayoutType(parent: Element): LayoutType {\n const cs = getComputedStyle(parent);\n return {\n display: cs.display,\n flexDirection: cs.flexDirection || undefined,\n };\n}\n","import { buildElementIdentity } from \"./identity\";\nimport { readLayoutType } from \"./layoutTypeFromParent\";\nimport type { LayoutChange } from \"./layoutTypes\";\n\nexport function buildReorderLayoutChange(\n parent: Element,\n dragged: Element,\n fromIndex: number,\n toIndex: number,\n orderedElements: Element[],\n): LayoutChange {\n const siblings = orderedElements.map((el) => buildElementIdentity(el));\n return {\n kind: \"reorder\",\n target: buildElementIdentity(dragged),\n parent: buildElementIdentity(parent),\n fromIndex,\n toIndex,\n siblings,\n layoutType: readLayoutType(parent),\n };\n}\n","import { buildElementIdentity } from \"./identity\";\nimport { readLayoutType } from \"./layoutTypeFromParent\";\nimport type { LayoutChangeMove } from \"./layoutTypes\";\n\nexport function buildMoveLayoutChange(\n dragged: Element,\n fromParent: Element,\n toParent: Element,\n fromIndex: number,\n toIndex: number,\n orderedInTarget: Element[],\n): LayoutChangeMove {\n return {\n kind: \"move\",\n target: buildElementIdentity(dragged),\n fromParent: buildElementIdentity(fromParent),\n toParent: buildElementIdentity(toParent),\n fromIndex,\n toIndex,\n siblings: orderedInTarget.map((el) => buildElementIdentity(el)),\n destinationSiblings: orderedInTarget.map((el) => buildElementIdentity(el)),\n fromLayoutType: readLayoutType(fromParent),\n toLayoutType: readLayoutType(toParent),\n };\n}\n","import { elementChildren } from \"./elementChildren\";\n\nfunction isVisible(el: Element): boolean {\n const r = el.getClientRects();\n if (!r || r.length === 0) return false;\n const cs = getComputedStyle(el);\n if (cs.display === \"none\" || cs.visibility === \"hidden\" || Number(cs.opacity) === 0)\n return false;\n return true;\n}\n\nexport function isValidDropContainer(candidate: Element, dragged: Element): boolean {\n if (!(candidate instanceof Element)) return false;\n if (candidate === dragged) return false;\n if (dragged.contains(candidate)) return false;\n if (!isVisible(candidate)) return false;\n\n const cs = getComputedStyle(candidate);\n if (cs.display === \"contents\") return false;\n\n const d = cs.display;\n const isLayout =\n d === \"flex\" ||\n d === \"inline-flex\" ||\n d === \"grid\" ||\n d === \"inline-grid\" ||\n d === \"block\" ||\n d === \"inline-block\";\n\n if (!isLayout) return false;\n\n return true;\n}\n\n/** Walk from hit target upward to find a valid drop parent for `dragged`. */\nexport function findDropParent(hit: Element | null, dragged: Element): Element | null {\n let cur: Element | null = hit;\n while (cur && cur !== document.body) {\n if (isValidDropContainer(cur, dragged)) return cur;\n cur = cur.parentElement;\n }\n return null;\n}\n","const ORDER_PROP = \"order\";\n\nexport class FlexOrderPreview {\n private readonly previous = new Map<Element, string | null>();\n\n apply(ordered: Element[]): void {\n ordered.forEach((el, i) => {\n const hel = el as HTMLElement;\n const desired = String(i);\n const current = hel.style.getPropertyValue(ORDER_PROP);\n if (current === desired) return;\n if (!this.previous.has(el)) {\n this.previous.set(el, hel.style.getPropertyValue(ORDER_PROP));\n }\n hel.style.setProperty(ORDER_PROP, desired);\n });\n }\n\n clear(): void {\n for (const [el, prev] of this.previous) {\n const hel = el as HTMLElement;\n if (prev === null || prev === \"\") hel.style.removeProperty(ORDER_PROP);\n else hel.style.setProperty(ORDER_PROP, prev);\n }\n this.previous.clear();\n }\n}\n","type Bar = { left: number; top: number; width: number; height: number };\n\nexport function insertionBarBetween(\n ordered: globalThis.Element[],\n insertBeforeIndex: number,\n row: boolean,\n): Bar | null {\n if (ordered.length === 0) return null;\n const thick = 3;\n const pad = 2;\n\n if (insertBeforeIndex <= 0) {\n const r = ordered[0]!.getBoundingClientRect();\n if (row) {\n return {\n left: r.left - thick - 2,\n top: r.top - pad,\n width: thick,\n height: r.height + pad * 2,\n };\n }\n return {\n left: r.left - pad,\n top: r.top - thick - 2,\n width: r.width + pad * 2,\n height: thick,\n };\n }\n\n if (insertBeforeIndex >= ordered.length) {\n const r = ordered[ordered.length - 1]!.getBoundingClientRect();\n if (row) {\n return {\n left: r.right + 2,\n top: r.top - pad,\n width: thick,\n height: r.height + pad * 2,\n };\n }\n return {\n left: r.left - pad,\n top: r.bottom + 2,\n width: r.width + pad * 2,\n height: thick,\n };\n }\n\n const r0 = ordered[insertBeforeIndex - 1]!.getBoundingClientRect();\n const r1 = ordered[insertBeforeIndex]!.getBoundingClientRect();\n if (row) {\n const mid = (r0.right + r1.left) / 2;\n const top = Math.min(r0.top, r1.top) - pad;\n const bottom = Math.max(r0.bottom, r1.bottom) + pad;\n return { left: mid - thick / 2, top, width: thick, height: bottom - top };\n }\n const mid = (r0.bottom + r1.top) / 2;\n const left = Math.min(r0.left, r1.left) - pad;\n const right = Math.max(r0.right, r1.right) + pad;\n return { left, top: mid - thick / 2, width: right - left, height: thick };\n}\n","import { elementChildren } from \"./elementChildren\";\nimport type { PendingReorder } from \"./pendingReorder\";\n\nexport function createPendingCrossMove(\n dragged: Element,\n fromParent: Element,\n toParent: Element,\n desiredToOrder: Element[],\n): PendingReorder {\n const snapFrom = Array.from(fromParent.childNodes);\n const snapTo = Array.from(toParent.childNodes);\n\n function matchesTo(): boolean {\n const cur = elementChildren(toParent);\n if (cur.length !== desiredToOrder.length) return false;\n return cur.every((el, i) => el === desiredToOrder[i]);\n }\n\n function applyTo(): void {\n for (const el of desiredToOrder) toParent.appendChild(el);\n }\n\n applyTo();\n\n const obs = new MutationObserver(() => {\n if (!matchesTo()) applyTo();\n });\n obs.observe(toParent, { childList: true });\n if (fromParent !== toParent) obs.observe(fromParent, { childList: true });\n\n function revert(): void {\n obs.disconnect();\n while (fromParent.firstChild) fromParent.removeChild(fromParent.firstChild);\n for (const n of snapFrom) fromParent.appendChild(n);\n if (toParent !== fromParent) {\n while (toParent.firstChild) toParent.removeChild(toParent.firstChild);\n for (const n of snapTo) toParent.appendChild(n);\n }\n }\n\n return {\n disconnect: () => obs.disconnect(),\n revert,\n };\n}\n","import { elementChildren } from \"./elementChildren\";\n\nexport type PendingReorder = {\n revert: () => void;\n disconnect: () => void;\n};\n\n/**\n * Applies DOM order for `desired` element children and re-applies if React mutates `parent`'s childList.\n */\nexport function createPendingReorder(\n parent: Element,\n desired: Element[],\n): PendingReorder {\n const snapshot = Array.from(parent.childNodes);\n\n function currentElements(): Element[] {\n return elementChildren(parent);\n }\n\n function matches(): boolean {\n const cur = currentElements();\n if (cur.length !== desired.length) return false;\n return cur.every((el, i) => el === desired[i]);\n }\n\n function applyDesired(): void {\n for (const el of desired) parent.appendChild(el);\n }\n\n applyDesired();\n\n const observer = new MutationObserver(() => {\n if (!matches()) applyDesired();\n });\n observer.observe(parent, { childList: true });\n\n function revert(): void {\n observer.disconnect();\n while (parent.firstChild) parent.removeChild(parent.firstChild);\n for (const n of snapshot) parent.appendChild(n);\n }\n\n return {\n disconnect: () => observer.disconnect(),\n revert,\n };\n}\n","import type {\n ElementIdentity,\n GeneratedPrompt,\n LayoutChange,\n LayoutType,\n TargetTool,\n WeevarRuntimeConfig,\n} from \"../engine/layoutTypes\";\n\ntype PromptOptions = {\n targetTool: TargetTool | \"cursor\";\n config?: WeevarRuntimeConfig;\n};\n\nfunction lineText(line: number): string {\n return `line ${line}`;\n}\n\nfunction formatLocation(source?: { file: string; line: number; col: number }): string {\n if (!source) return \"\";\n return `${source.file}:${source.line}`;\n}\n\nfunction ordinal(n: number): string {\n const mod10 = n % 10;\n const mod100 = n % 100;\n if (mod10 === 1 && mod100 !== 11) return `${n}st`;\n if (mod10 === 2 && mod100 !== 12) return `${n}nd`;\n if (mod10 === 3 && mod100 !== 13) return `${n}rd`;\n return `${n}th`;\n}\n\nfunction cssTagRef(id: ElementIdentity): string {\n if (!id.classList.length) return `<${id.tag}>`;\n return `<${id.tag}.${id.classList.join(\".\")}>`;\n}\n\nfunction baseRef(id: ElementIdentity): string {\n if (id.componentName) return `<${id.componentName}>`;\n return cssTagRef(id);\n}\n\nfunction withDisambiguation(id: ElementIdentity, force = false): string {\n const root = baseRef(id);\n if (!force && id.componentName) return root;\n if (id.textSnippet) return `${root.replace(/>$/, \"\")} \"${id.textSnippet}\">`;\n if (id.classList.length && id.componentName) return `${root.replace(/>$/, \"\")}.${id.classList[0]}>`;\n return root;\n}\n\nfunction jsxRef(id: ElementIdentity): string {\n return `${withDisambiguation(id).replace(/>$/, \"\")} />`;\n}\n\nfunction domPathTail(id: ElementIdentity, segments = 3): string {\n const tail = id.domPath?.slice(-segments) ?? [];\n if (!tail.length) return \"\";\n return tail.map((s) => `${s.tag}[${s.index}]`).join(\">\");\n}\n\n/**\n * Non-lossy identifier for short prompts:\n * keeps human-readable symbol + concrete source/path anchors for deterministic edits.\n */\nfunction strictRef(id: ElementIdentity): string {\n const core = withDisambiguation(id, true);\n const src = id.source ? `${id.source.file}:${id.source.line}` : \"source:unknown\";\n const path = domPathTail(id);\n const hash = `h:${id.contentHash}`;\n return path ? `${core} {src:${src}; dom:${path}; ${hash}}` : `${core} {src:${src}; ${hash}}`;\n}\n\nfunction displacementAnchor(siblings: ElementIdentity[], toIndex: number): string {\n if (!siblings.length || siblings.length === 1) return \"as the only child\";\n if (toIndex <= 0) return \"first\";\n if (toIndex >= siblings.length - 1) return \"last\";\n const prev = siblings[toIndex - 1];\n return `after ${baseRef(prev)}`;\n}\n\nfunction detailedAnchor(siblings: ElementIdentity[], toIndex: number): string {\n if (!siblings.length || siblings.length === 1) return \"only child\";\n if (toIndex <= 0) return \"first child\";\n if (toIndex >= siblings.length - 1) {\n const prev = siblings[siblings.length - 2];\n return `last child, after ${jsxRef(prev)}`;\n }\n const prev = siblings[toIndex - 1];\n return `after ${jsxRef(prev)}`;\n}\n\nfunction formatLayoutType(layout: LayoutType): string {\n if (layout.display.includes(\"flex\")) {\n return layout.flexDirection ? `flex-${layout.flexDirection}` : \"flex\";\n }\n return layout.display;\n}\n\nfunction moveSiblings(change: Extract<LayoutChange, { kind: \"move\" }>): ElementIdentity[] {\n return change.destinationSiblings ?? change.siblings ?? [];\n}\n\nfunction buildSiblingRenderData(siblings: ElementIdentity[]) {\n const counts = new Map<string, number>();\n for (const s of siblings) {\n const k = baseRef(s);\n counts.set(k, (counts.get(k) ?? 0) + 1);\n }\n return siblings.map((s) => {\n const k = baseRef(s);\n const repeated = (counts.get(k) ?? 0) > 1;\n return withDisambiguation(s, repeated);\n });\n}\n\nfunction hasMissingSource(change: LayoutChange): boolean {\n if (change.kind === \"reorder\") return !change.target.source || !change.parent.source;\n return !change.target.source || !change.fromParent.source || !change.toParent.source;\n}\n\nfunction shortReorder(change: Extract<LayoutChange, { kind: \"reorder\" }>): string {\n const parentRef = strictRef(change.parent);\n const targetRef = strictRef(change.target);\n const file = change.parent.source?.file;\n const targetLine = change.target.source?.line;\n const anchor = displacementAnchor(change.siblings, change.toIndex);\n const pos = `child index ${change.toIndex} (position ${change.toIndex + 1}; ${anchor})`;\n const where = file ? ` in ${file}` : \"\";\n const line = targetLine ? ` (${lineText(targetLine)})` : \"\";\n const order = buildSiblingRenderData(change.siblings)\n .map((s, i) => `${i}: ${s}`)\n .join(\" | \");\n return `Reorder children of ${parentRef}${where}: move ${targetRef}${line} from child index ${change.fromIndex} (position ${change.fromIndex + 1}) to ${pos}. Resulting order: ${order}. Preserve all props and styles.`;\n}\n\nfunction shortMove(change: Extract<LayoutChange, { kind: \"move\" }>): string {\n const targetRef = strictRef(change.target);\n const fromRef = strictRef(change.fromParent);\n const toRef = strictRef(change.toParent);\n const fromLoc = formatLocation(change.fromParent.source);\n const toLoc = formatLocation(change.toParent.source);\n const siblings = moveSiblings(change);\n const anchor = displacementAnchor(siblings, change.toIndex);\n const shortAnchor =\n anchor === \"as the only child\"\n ? \"as the only child\"\n : anchor === \"first\"\n ? \"as the first child\"\n : anchor === \"last\"\n ? \"as the last child\"\n : `as ${anchor}`;\n const targetLine = change.target.source?.line;\n const line = targetLine ? ` (${lineText(targetLine)})` : \"\";\n const order = buildSiblingRenderData(siblings)\n .map((s, i) => `${i}: ${s}`)\n .join(\" | \");\n return `Move ${targetRef}${line} from ${fromRef}${fromLoc ? ` (${fromLoc})` : \"\"} (child index ${change.fromIndex}) into ${toRef}${toLoc ? ` (${toLoc})` : \"\"} at child index ${change.toIndex} (${shortAnchor}). Destination order after move: ${order}. Preserve all props.`;\n}\n\nfunction detailedReorder(change: Extract<LayoutChange, { kind: \"reorder\" }>, tool: PromptOptions[\"targetTool\"]): string {\n const file = change.parent.source?.file ?? \"unknown file\";\n const containerLine = change.parent.source?.line;\n const targetLine = change.target.source?.line;\n const refs = buildSiblingRenderData(change.siblings);\n const showPath = tool !== \"codex\";\n const lines = change.siblings\n .map((s, i) => {\n const moved = s === change.target ? \" ← moved\" : \"\";\n const loc = s.source\n ? showPath\n ? ` ${formatLocation(s.source)}`\n : ` line ${s.source.line}`\n : \"\";\n return `${i + 1}. ${refs[i]}${loc}${moved}`;\n })\n .join(\"\\n\");\n const heading = `# Reorder within ${baseRef(change.parent)}`;\n const fileLine = `**File:** ${file}`;\n const classSnippet = change.parent.classList.length\n ? ` — \\`<${change.parent.tag} className=\"${change.parent.classList.join(\" \")}\">\\``\n : \"\";\n const container = `**Container:** ${baseRef(change.parent)}${containerLine ? ` at line ${containerLine}` : \"\"}${classSnippet}`;\n const layout = `**Layout:** ${formatLayoutType(change.layoutType)}`;\n const move = [\n \"## Move\",\n `${jsxRef(change.target)}${targetLine ? ` (${lineText(targetLine)})` : \"\"}`,\n `From: index ${change.fromIndex} (${ordinal(change.fromIndex + 1)} child)`,\n `To: index ${change.toIndex} (${detailedAnchor(change.siblings, change.toIndex)})`,\n ].join(\"\\n\");\n const constraints = [\n \"## Constraints\",\n `- Preserve all props on ${baseRef(change.target)}`,\n `- Don't modify the ${formatLayoutType(change.layoutType)} layout`,\n \"- Don't introduce wrapper elements\",\n \"- Don't touch other components in this file\",\n ].join(\"\\n\");\n\n const parts = [heading, \"\", fileLine, container, layout, \"\", move, \"\", \"## New child order\", lines, \"\", constraints];\n if (tool === \"generic\") {\n parts.push(\"\", \"## Current code\", \"<!-- TODO: include source snippet -->\");\n }\n if (hasMissingSource(change)) {\n parts.push(\"\", \"_Tip: install `@weevar/vite-plugin` for source-accurate prompts._\");\n }\n return parts.join(\"\\n\");\n}\n\nfunction detailedMove(change: Extract<LayoutChange, { kind: \"move\" }>, tool: PromptOptions[\"targetTool\"]): string {\n const siblings = moveSiblings(change);\n const refs = buildSiblingRenderData(siblings);\n const showPath = tool !== \"codex\";\n const lines = siblings\n .map((s, i) => {\n const moved = s === change.target ? \" (moved)\" : \"\";\n const loc = s.source\n ? showPath\n ? ` ${formatLocation(s.source)}`\n : ` line ${s.source.line}`\n : \"\";\n return `${i + 1}. ${refs[i]}${loc}${moved}`;\n })\n .join(\"\\n\");\n const source = `**Source:** ${baseRef(change.fromParent)}${change.fromParent.source ? ` in ${formatLocation(change.fromParent.source)}` : \"\"} (${formatLayoutType(change.fromLayoutType)} layout)`;\n const destination = `**Destination:** ${baseRef(change.toParent)}${change.toParent.source ? ` in ${formatLocation(change.toParent.source)}` : \"\"} (${formatLayoutType(change.toLayoutType)} layout)`;\n const anchor = displacementAnchor(siblings, change.toIndex);\n const move = [\n \"## Move\",\n `${jsxRef(change.target)}${change.target.source ? ` at ${formatLocation(change.target.source)}` : \"\"}`,\n `Remove from: ${baseRef(change.fromParent)}, index ${change.fromIndex}`,\n `Insert into: ${baseRef(change.toParent)}, index ${change.toIndex} (${anchor})`,\n ].join(\"\\n\");\n const constraints = [\n \"## Constraints\",\n `- Preserve all props on ${baseRef(change.target)}`,\n `- Don't modify ${baseRef(change.fromParent)} beyond removing the element`,\n `- Don't modify ${baseRef(change.toParent)}'s layout or styling`,\n \"- Don't introduce wrapper elements\",\n ].join(\"\\n\");\n\n const parts = [\n `# Move ${baseRef(change.target)} across containers`,\n \"\",\n source,\n destination,\n \"\",\n move,\n \"\",\n \"## Destination order after move\",\n lines || \"1. (destination children unavailable)\",\n \"\",\n constraints,\n ];\n if (tool === \"generic\") {\n parts.push(\"\", \"## Current code\", \"<!-- TODO: include source snippet -->\");\n }\n if (hasMissingSource(change)) {\n parts.push(\"\", \"_Tip: install `@weevar/vite-plugin` for source-accurate prompts._\");\n }\n return parts.join(\"\\n\");\n}\n\nexport function generatePrompt(\n change: LayoutChange,\n options: PromptOptions,\n): GeneratedPrompt | null {\n if (change.kind === \"reorder\" && change.fromIndex === change.toIndex) return null;\n if (\n change.kind === \"move\" &&\n change.fromParent === change.toParent &&\n change.fromIndex === change.toIndex\n )\n return null;\n\n const targetTool = options.targetTool === \"cursor\" ? \"codex\" : options.targetTool;\n const short = change.kind === \"reorder\" ? shortReorder(change) : shortMove(change);\n const detailed =\n change.kind === \"reorder\"\n ? detailedReorder(change, targetTool)\n : detailedMove(change, targetTool);\n\n return {\n short,\n detailed,\n meta: {\n targetTool,\n timestamp: Date.now(),\n change,\n },\n };\n}\n\nexport function promptBody(p: GeneratedPrompt, len: \"short\" | \"detailed\"): string {\n return len === \"short\" ? p.short : p.detailed;\n}\n","import type { GeneratedPrompt, MoveSession, TargetTool } from \"../engine/layoutTypes\";\nimport { generatePrompt } from \"./generate\";\n\nfunction stripShortConstraint(short: string): string {\n return short.replace(/\\s+Preserve[^.]*\\.\\s*$/i, \"\").trim();\n}\n\nfunction stripDetailedHeadingAndConstraints(detailed: string): string {\n const noHeading = detailed.replace(/^#\\s+[^\\n]+\\n+/, \"\");\n return noHeading.replace(/\\n## Constraints[\\s\\S]*$/m, \"\").trim();\n}\n\nfunction firstFilePath(changeText: string): string | undefined {\n const m = changeText.match(/\\*\\*File:\\*\\*\\s+([^\\n]+)/);\n return m?.[1]?.trim();\n}\n\nfunction maybeOmitRepeatedFileForCodex(\n sectionBody: string,\n tool: TargetTool,\n prevFile?: string,\n): { body: string; file?: string } {\n const file = firstFilePath(sectionBody);\n if (tool !== \"codex\") return { body: sectionBody, file };\n if (!file || !prevFile || file !== prevFile) return { body: sectionBody, file };\n return {\n body: sectionBody.replace(/\\*\\*File:\\*\\*[^\\n]*\\n?/m, \"\").trim(),\n file,\n };\n}\n\nexport function generateBatchedPrompt(\n session: MoveSession,\n options: { targetTool: TargetTool },\n): GeneratedPrompt | null {\n if (!session.changes.length) return null;\n if (session.changes.length === 1) {\n return generatePrompt(session.changes[0].change, { targetTool: options.targetTool });\n }\n\n const sorted = [...session.changes].sort((a, b) => a.ordinal - b.ordinal);\n const perMove = sorted\n .map((c) => ({\n ordinal: c.ordinal,\n p: generatePrompt(c.change, { targetTool: options.targetTool }),\n }))\n .filter((x): x is { ordinal: number; p: GeneratedPrompt } => Boolean(x.p));\n\n if (!perMove.length) return null;\n\n const shortItems = perMove\n .map((x) => `${x.ordinal}. ${stripShortConstraint(x.p.short)}.`)\n .join(\"\\n\\n\");\n const short =\n `${perMove.length} layout changes (apply in order; each step's positions are relative to the state after prior steps):\\n\\n` +\n `${shortItems}\\n\\n` +\n `Preserve all props and styles. Don't introduce wrapper elements.`;\n\n let prevFile: string | undefined;\n const sections = perMove\n .map((x) => {\n const body = stripDetailedHeadingAndConstraints(x.p.detailed);\n const adjusted = maybeOmitRepeatedFileForCodex(body, options.targetTool, prevFile);\n prevFile = adjusted.file ?? prevFile;\n const withGeneric =\n options.targetTool === \"generic\"\n ? `${adjusted.body}\\n\\n<!-- TODO: include source snippets -->`\n : adjusted.body;\n return `## ${x.ordinal}. ${withGeneric}`;\n })\n .join(\"\\n\\n---\\n\\n\");\n\n const detailed =\n `# Multi-step layout change (${perMove.length} moves)\\n\\n` +\n `Apply these changes in the order listed below. Each section's positions and\\n` +\n `indices are relative to the state of the page **after the preceding sections\\n` +\n `have been applied**, not the original state.\\n\\n` +\n `---\\n\\n` +\n `${sections}\\n\\n` +\n `---\\n\\n` +\n `## Global constraints\\n\\n` +\n `- Preserve all props on every moved element\\n` +\n `- Don't introduce wrapper elements anywhere\\n` +\n `- Don't modify any layout, spacing, or styling on the containers\\n` +\n `- Apply changes strictly in the order listed. Each section's indices reflect\\n` +\n `the state *after* prior sections are applied\\n` +\n `- If a move references a position that doesn't exist in your current view of\\n` +\n `the file, the prior sections may not have been applied yet — apply them in\\n` +\n `order before continuing`;\n\n return {\n short,\n detailed,\n meta: {\n targetTool: options.targetTool,\n timestamp: Date.now(),\n change: perMove[perMove.length - 1].p.meta.change,\n },\n };\n}\n","import { elementChildren } from \"./elementChildren\";\n\nexport function reorderImmutable<T>(arr: readonly T[], from: number, to: number): T[] {\n const a = arr.slice() as T[];\n const [item] = a.splice(from, 1);\n a.splice(to, 0, item!);\n return a;\n}\n\n/**\n * Insertion index for `dragged` into `parent` (0..n). If `dragged` is not yet a child of `parent`,\n * append index is `elementChildren(parent).length`.\n */\nexport function computeDropIndex(\n parent: Element,\n dragged: Element,\n clientX: number,\n clientY: number,\n): number {\n const kids = elementChildren(parent);\n const inParent = kids.includes(dragged);\n const others = inParent ? kids.filter((k) => k !== dragged) : kids.slice();\n\n if (others.length === 0) return 0;\n\n const cs = getComputedStyle(parent);\n const flexDir = cs.flexDirection || \"row\";\n const isRowAxis =\n cs.display.includes(\"flex\") &&\n (flexDir === \"row\" || flexDir === \"row-reverse\");\n const pos = isRowAxis ? clientX : clientY;\n\n let insert = others.length;\n for (let i = 0; i < others.length; i++) {\n const r = others[i]!.getBoundingClientRect();\n const mid = isRowAxis ? r.left + r.width / 2 : r.top + r.height / 2;\n if (pos < mid) {\n insert = i;\n break;\n }\n }\n\n if (insert >= others.length) {\n return inParent ? kids.length - 1 : kids.length;\n }\n\n const anchor = others[insert]!;\n return kids.indexOf(anchor);\n}\n\n/** @deprecated use computeDropIndex */\nexport function computeReorderDomIndex(\n parent: Element,\n dragged: Element,\n clientX: number,\n clientY: number,\n): number {\n return computeDropIndex(parent, dragged, clientX, clientY);\n}\n\n/** Element order after moving `dragged` to `targetIndex` within the same parent. */\nexport function orderAfterMove(\n parent: Element,\n dragged: Element,\n targetIndex: number,\n): Element[] {\n const kids = elementChildren(parent);\n const from = kids.indexOf(dragged);\n if (from === -1) return kids;\n let to = targetIndex;\n if (to < 0) to = 0;\n if (to > kids.length - 1) to = kids.length - 1;\n return reorderImmutable(kids, from, to);\n}\n\n/** Order after inserting `dragged` into `parent` at `targetIndex` (possibly from another parent). */\nexport function orderAfterInsert(\n parent: Element,\n dragged: Element,\n targetIndex: number,\n): Element[] {\n const cur = elementChildren(parent).filter((k) => k !== dragged);\n const next = cur.slice();\n let i = Math.min(Math.max(0, targetIndex), next.length);\n next.splice(i, 0, dragged);\n return next;\n}\n\nexport function parentSupportsFlexOrderPreview(parent: Element): boolean {\n return getComputedStyle(parent).display.includes(\"flex\");\n}\n","import { elementChildren } from \"./elementChildren\";\nimport { buildFiberPath } from \"./fiber\";\nimport type { ElementIdentity } from \"./layoutTypes\";\nimport { parseDataWvSource } from \"./parseDataWvSource\";\n\nfunction simpleHash(s: string): string {\n let h = 0;\n for (let i = 0; i < s.length; i++) h = (h * 31 + s.charCodeAt(i)) | 0;\n return String(h);\n}\n\nfunction resolveDomPath(identity: ElementIdentity): Element | null {\n let cur: Element | null = document.body;\n for (const seg of identity.domPath) {\n if (!cur) return null;\n const kids = elementChildren(cur);\n const next = kids[seg.index];\n if (!next || next.tagName.toLowerCase() !== seg.tag) return null;\n cur = next;\n }\n return cur;\n}\n\nfunction resolveBySource(identity: ElementIdentity): Element | null {\n if (!identity.source) return null;\n const nodes = document.querySelectorAll(\"[data-wv-source]\");\n for (let i = 0; i < nodes.length; i++) {\n const el = nodes[i] as Element;\n const loc = parseDataWvSource(el);\n if (\n loc &&\n loc.file === identity.source.file &&\n loc.line === identity.source.line &&\n loc.col === identity.source.col\n )\n return el;\n }\n return null;\n}\n\nfunction resolveByFiberPathFingerprint(identity: ElementIdentity): Element | null {\n if (!identity.fiberPath?.length) return null;\n const want = JSON.stringify(identity.fiberPath);\n const max = 6000;\n let seen = 0;\n const tree = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);\n let n = tree.nextNode() as Element | null;\n while (n && seen < max) {\n seen++;\n try {\n const p = buildFiberPath(n);\n if (!p.length) {\n n = tree.nextNode() as Element | null;\n continue;\n }\n if (JSON.stringify(p) !== want) {\n n = tree.nextNode() as Element | null;\n continue;\n }\n if (n.tagName.toLowerCase() === identity.tag && matchesIdentity(n, identity)) return n;\n } catch {\n /* ignore fiber read errors */\n }\n n = tree.nextNode() as Element | null;\n }\n return null;\n}\n\nfunction resolveByContentScan(identity: ElementIdentity): Element | null {\n const tag = identity.tag.toUpperCase();\n const want = identity.contentHash;\n const max = 4000;\n let seen = 0;\n const walk = (root: Element) => {\n const stack: Element[] = [root];\n while (stack.length && seen < max) {\n const el = stack.pop()!;\n seen++;\n if (el.tagName !== tag) {\n for (let i = el.children.length - 1; i >= 0; i--)\n stack.push(el.children[i] as Element);\n continue;\n }\n const text = (el.textContent ?? \"\").trim().slice(0, 120);\n if (simpleHash(text) !== want) {\n for (let i = el.children.length - 1; i >= 0; i--)\n stack.push(el.children[i] as Element);\n continue;\n }\n const cl = (el as HTMLElement).classList;\n const cls = cl ? Array.from(cl) : [];\n if (identity.classList.length && cls.join(\" \") !== identity.classList.join(\" \")) {\n for (let i = el.children.length - 1; i >= 0; i--)\n stack.push(el.children[i] as Element);\n continue;\n }\n return el;\n }\n return null;\n };\n return walk(document.body);\n}\n\n/**\n * TRD §5 resolution order: fiber path fingerprint → source attribute → DOM path → content scan.\n */\nexport function resolveElementIdentity(identity: ElementIdentity): Element | null {\n const byFiber = resolveByFiberPathFingerprint(identity);\n if (byFiber) return byFiber;\n\n const bySource = resolveBySource(identity);\n if (bySource && matchesIdentity(bySource, identity)) return bySource;\n\n const byDom = resolveDomPath(identity);\n if (byDom && matchesIdentity(byDom, identity)) return byDom;\n\n return resolveByContentScan(identity);\n}\n\nfunction matchesIdentity(el: Element, identity: ElementIdentity): boolean {\n if (el.tagName.toLowerCase() !== identity.tag) return false;\n const text = (el.textContent ?? \"\").trim().slice(0, 120);\n if (simpleHash(text) !== identity.contentHash) return false;\n return true;\n}\n","/** Injected into Shadow DOM (PRD/TRD visual spec) */\nexport const OVERLAY_CSS = `\n@import url(\"https://fonts.googleapis.com/css2?family=Geist+Mono:wght@400&display=swap\");\n\n:root {\n --weevar-dark: #111113;\n --wv-bg: #0f1115;\n --wv-panel: #1a1d24;\n --wv-border: #2a2e38;\n --wv-accent: #0099ff;\n --wv-success: #00c896;\n --wv-danger: #ff4d4f;\n --wv-ui: 13px Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n --wv-mono: 12px Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n}\n\n* { box-sizing: border-box; }\n\n.wv-root {\n position: fixed;\n inset: 0;\n pointer-events: none;\n font: var(--wv-ui);\n color: #e8eaed;\n}\n\n.wv-root,\n.wv-root * {\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n}\n\n.wv-pe { pointer-events: auto; }\n\n.wv-dot {\n position: fixed;\n right: 12px;\n bottom: 12px;\n width: 8px;\n height: 8px;\n border-radius: 999px;\n background: var(--wv-accent);\n opacity: 0.55;\n border: none;\n padding: 0;\n cursor: pointer;\n pointer-events: auto;\n box-shadow: 0 4px 16px rgba(0,0,0,0.3);\n z-index: 5;\n}\n.wv-dot:hover { opacity: 0.9; }\n\n.wv-toolbar {\n position: fixed;\n top: 12px;\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n align-items: center;\n gap: 12px;\n height: 36px;\n padding: 0 12px;\n border-radius: 6px;\n background: rgba(15, 17, 21, 0.72);\n border: 1px solid var(--wv-border);\n backdrop-filter: blur(12px);\n -webkit-backdrop-filter: blur(12px);\n box-shadow: 0 4px 16px rgba(0,0,0,0.3);\n pointer-events: auto;\n z-index: 20;\n}\n\n.wv-toolbar-status {\n font-size: 13px;\n color: #c9cdd4;\n max-width: min(420px, 50vw);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.wv-toolbar-actions {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.wv-toolbar-link {\n border: none;\n background: transparent;\n color: #c9cdd4;\n font-size: 12px;\n cursor: pointer;\n padding: 0 2px;\n}\n.wv-toolbar-link:hover { color: #e8eaed; text-decoration: underline; }\n\n.wv-toolbar-generate {\n height: 26px;\n border-radius: 6px;\n border: 1px solid var(--wv-accent);\n background: var(--wv-accent);\n color: #0b0d10;\n font-size: 12px;\n font-weight: 600;\n padding: 0 10px;\n cursor: pointer;\n}\n.wv-toolbar-generate:disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n.wv-toolbar-close {\n margin-left: auto;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n border: 1px solid var(--wv-border);\n background: var(--wv-panel);\n color: #e8eaed;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n line-height: 1;\n}\n.wv-toolbar-close:hover {\n border-color: var(--wv-accent);\n color: var(--wv-accent);\n}\n\n.wv-outline {\n position: fixed;\n pointer-events: none;\n border: 2px solid rgba(0, 153, 255, 0.6);\n background: rgba(0, 153, 255, 0.05);\n border-radius: 2px;\n z-index: 2;\n}\n\n.wv-outline-selected {\n border-color: var(--wv-accent);\n background: rgba(0, 153, 255, 0.06);\n}\n\n.wv-label {\n position: fixed;\n pointer-events: none;\n z-index: 3;\n font: 11px var(--wv-mono);\n background: rgba(15, 17, 21, 0.92);\n color: #e8eaed;\n padding: 3px 6px;\n border-radius: 4px;\n border: 1px solid var(--wv-border);\n max-width: min(360px, 70vw);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wv-cursor-label {\n position: fixed;\n pointer-events: none;\n z-index: 31;\n display: inline-flex;\n height: 24px;\n padding: 5px 10px;\n justify-content: center;\n align-items: flex-start;\n gap: 10px;\n border-radius: 8px;\n background: rgba(17, 17, 19, 0.9);\n color: var(--weevar-light, #EBEBEB);\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n max-width: 210px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n.wv-markers {\n position: fixed;\n pointer-events: none;\n z-index: 4;\n}\n\n.wv-corner {\n position: absolute;\n width: 4px;\n height: 4px;\n background: var(--wv-accent);\n}\n\n.wv-drag-handle {\n position: fixed;\n width: 24px;\n height: 24px;\n padding: 5px 10px;\n justify-content: center;\n align-items: center;\n gap: 10px;\n border-radius: 8px;\n border: none;\n background: rgba(17, 17, 19, 0.9);\n pointer-events: auto;\n cursor: grab;\n z-index: 6;\n display: flex;\n box-shadow: 0 4px 16px rgba(0,0,0,0.3);\n}\n.wv-drag-handle:active { cursor: grabbing; }\n.wv-drag-handle svg { width: 16px; height: 16px; display: block; flex: 0 0 auto; }\n\n.wv-selected-top {\n position: fixed;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n z-index: 7;\n pointer-events: none;\n}\n\n.wv-selected-top .wv-drag-handle {\n position: static;\n pointer-events: auto;\n}\n\n.wv-selected-label {\n display: inline-flex;\n height: 24px;\n padding: 5px 10px;\n justify-content: center;\n align-items: flex-start;\n gap: 10px;\n border-radius: 8px;\n background: rgba(17, 17, 19, 0.9);\n color: var(--weevar-light, #EBEBEB);\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n max-width: 220px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wv-action-panel {\n position: fixed;\n width: 240px;\n padding: 10px;\n border-radius: 6px;\n background: rgba(26, 29, 36, 0.95);\n border: 1px solid var(--wv-border);\n backdrop-filter: blur(12px);\n -webkit-backdrop-filter: blur(12px);\n box-shadow: 0 4px 16px rgba(0,0,0,0.3);\n pointer-events: auto;\n z-index: 7;\n}\n\n.wv-action-title {\n font-size: 11px;\n color: #9aa0a6;\n margin-bottom: 6px;\n}\n\n.wv-path {\n font: 11px var(--wv-mono);\n color: #e8eaed;\n word-break: break-all;\n}\n\n.wv-pill {\n display: inline-block;\n margin-top: 8px;\n padding: 2px 8px;\n border-radius: 999px;\n font-size: 11px;\n border: 1px solid var(--wv-border);\n background: var(--wv-bg);\n color: #c9cdd4;\n}\n\n.wv-hint {\n margin-top: 8px;\n font-size: 11px;\n color: #9aa0a6;\n}\n\n.wv-insertion-bar {\n position: fixed;\n pointer-events: none;\n z-index: 8;\n background: var(--wv-accent);\n border-radius: 1px;\n animation: wv-pulse 0.8s ease-in-out infinite;\n}\n\n@keyframes wv-pulse {\n 0%, 100% { opacity: 0.55; }\n 50% { opacity: 1; }\n}\n\n.wv-drag-preview {\n position: fixed;\n z-index: 9;\n max-width: 200px;\n max-height: 120px;\n padding: 6px 8px;\n border-radius: 6px;\n border: 1px solid var(--wv-accent);\n background: rgba(26, 29, 36, 0.92);\n color: #e8eaed;\n font: 11px var(--wv-mono);\n pointer-events: none;\n box-shadow: 0 4px 16px rgba(0,0,0,0.35);\n transform: translate(14px, 14px);\n}\n\n.wv-prompt-drawer {\n position: fixed;\n top: 48px;\n right: 0;\n bottom: 0;\n width: 380px;\n max-width: 100vw;\n background: var(--wv-panel);\n border-left: 1px solid var(--wv-border);\n box-shadow: -8px 0 24px rgba(0,0,0,0.35);\n z-index: 30;\n display: flex;\n flex-direction: column;\n padding: 14px;\n gap: 10px;\n animation: wv-slide-in 0.12s ease-out;\n}\n\n.wv-settings-drawer {\n position: fixed;\n top: 48px;\n right: 0;\n bottom: 0;\n width: 380px;\n max-width: 100vw;\n background: var(--wv-panel);\n border-left: 1px solid var(--wv-border);\n box-shadow: -8px 0 24px rgba(0,0,0,0.35);\n z-index: 30;\n display: flex;\n flex-direction: column;\n padding: 14px;\n gap: 16px;\n animation: wv-slide-in 0.12s ease-out;\n}\n\n.wv-settings-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 2px;\n}\n\n.wv-settings-close {\n width: 28px;\n height: 28px;\n border-radius: 8px;\n border: 1px solid var(--wv-border);\n background: transparent;\n color: #e8eaed;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.wv-settings-section {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.wv-settings-content {\n display: flex;\n flex-direction: column;\n gap: 20px;\n overflow: auto;\n min-height: 0;\n padding: 14px 16px;\n box-sizing: border-box;\n}\n\n.wv-settings-label-row {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 8px;\n padding: 0 2px;\n color: var(--weevar-grey300, #868689);\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n}\n\n.wv-settings-label-inline {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.wv-settings-info-icon {\n color: #484848;\n transform: rotate(180deg);\n}\n\n.wv-settings-help-wrap {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n cursor: help;\n}\n\n.wv-settings-tool-list {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 1px;\n align-self: stretch;\n border-radius: 12px;\n overflow: hidden;\n}\n\n.wv-settings-row {\n border: none;\n border-bottom: solid var(--weevar-dark, #111113);\n border-bottom-width: 1px;\n background: rgba(235, 235, 235, 0.05);\n color: #A4A4A4;\n padding: 11px 10px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n align-self: stretch;\n cursor: pointer;\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n}\n\n.wv-settings-row:last-child {\n border-bottom: none;\n}\n\n.wv-settings-toggle-svg {\n display: block;\n width: 20px;\n height: 20px;\n flex: 0 0 auto;\n}\n\n.wv-settings-toggle-svg-on {\n width: 24px;\n height: 24px;\n filter: drop-shadow(0 0 1.5px rgba(53, 199, 89, 0.55));\n}\n\n.wv-settings-seg {\n display: flex;\n border-radius: 999px;\n overflow: hidden;\n border: 1px solid rgba(235, 235, 235, 0.04);\n}\n\n.wv-settings-seg-on,\n.wv-settings-seg-off {\n flex: 1;\n width: 100%;\n padding: 8px 0;\n cursor: pointer;\n border: none;\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 12px;\n font-style: normal;\n line-height: 100%;\n}\n\n.wv-settings-seg-off {\n background: rgba(235, 235, 235, 0.05);\n color: #A4A4A4;\n font-weight: 400;\n}\n\n.wv-settings-seg-on {\n background: #EBEBEB;\n color: var(--weevar-dark, #111113);\n font-weight: 500;\n}\n\n.wv-settings-foot {\n color: #58585d;\n font-size: 10px;\n}\n\n@keyframes wv-slide-in {\n from { transform: translateX(12px); opacity: 0.85; }\n to { transform: translateX(0); opacity: 1; }\n}\n\n/* Fixed slot next to dock: crossfade / slide when switching tray type */\n.wv-tray-stack {\n position: fixed;\n width: 250px;\n height: 340px;\n z-index: 25;\n pointer-events: auto;\n}\n.wv-tray-stack-layer {\n position: absolute;\n inset: 0;\n opacity: 0;\n transform: translateX(12px);\n transition:\n opacity 0.28s cubic-bezier(0.22, 1, 0.36, 1),\n transform 0.28s cubic-bezier(0.22, 1, 0.36, 1);\n pointer-events: none;\n}\n/* Hidden layers sit above the visible one in DOM order; .wv-pe on asides would still\n capture clicks unless every descendant is non-interactive. */\n.wv-tray-stack-layer:not(.wv-tray-stack-layer--visible) * {\n pointer-events: none !important;\n}\n.wv-tray-stack-layer--visible {\n opacity: 1;\n transform: translateX(0);\n pointer-events: auto;\n animation: wv-tray-draw-out 0.28s cubic-bezier(0.22, 1, 0.36, 1);\n}\n.wv-tray-stack .wv-summary-tray,\n.wv-tray-stack .wv-prompt-drawer {\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n width: auto;\n height: auto;\n margin: 0;\n animation: none;\n}\n\n@keyframes wv-tray-draw-out {\n from {\n opacity: 0;\n transform: translateX(12px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n.wv-prompt-header {\n font-size: 14px;\n font-weight: 600;\n color: #e8eaed;\n}\n\n.wv-schematic {\n height: 80px;\n border-radius: 6px;\n border: 1px solid var(--wv-border);\n background: var(--wv-bg);\n overflow: hidden;\n}\n\n.wv-schematic-inner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n height: 100%;\n padding: 8px;\n}\n\n.wv-schematic-col { flex: 1; min-width: 0; }\n.wv-schematic-title { font-size: 10px; color: #9aa0a6; margin-bottom: 4px; }\n.wv-schematic-row { display: flex; gap: 4px; flex-wrap: wrap; }\n.wv-schematic-cell {\n flex: 1 1 18px;\n min-width: 18px;\n height: 22px;\n border-radius: 4px;\n border: 1px solid var(--wv-border);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n color: #c9cdd4;\n background: #12151c;\n}\n.wv-schematic-hot {\n border-color: var(--wv-accent);\n color: #e8eaed;\n}\n.wv-schematic-arrow { color: #9aa0a6; font-size: 12px; padding: 0 2px; }\n\n.wv-tabs {\n display: flex;\n gap: 6px;\n}\n.wv-tab {\n flex: 1;\n height: 30px;\n border-radius: 6px;\n border: 1px solid var(--wv-border);\n background: var(--wv-bg);\n color: #c9cdd4;\n cursor: pointer;\n font-size: 12px;\n}\n.wv-tab-on {\n border-color: var(--wv-accent);\n color: #e8eaed;\n}\n\n.wv-prompt-body {\n flex: 1;\n min-height: 120px;\n max-height: 40vh;\n overflow: auto;\n margin: 0;\n padding: 10px;\n border-radius: 6px;\n border: 1px solid var(--wv-border);\n background: #0f1115;\n color: #e8eaed;\n font: 12px var(--wv-mono);\n white-space: pre-wrap;\n}\n\n.wv-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n font-size: 11px;\n color: #9aa0a6;\n}\n.wv-select {\n height: 32px;\n border-radius: 6px;\n border: 1px solid var(--wv-border);\n background: var(--wv-bg);\n color: #e8eaed;\n padding: 0 8px;\n}\n\n.wv-prompt-actions {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n.wv-btn {\n height: 32px;\n padding: 0 12px;\n border-radius: 6px;\n border: 1px solid var(--wv-border);\n background: var(--wv-bg);\n color: #e8eaed;\n cursor: pointer;\n font-size: 12px;\n}\n.wv-btn-primary {\n background: var(--wv-accent);\n border-color: var(--wv-accent);\n color: #0b0d10;\n font-weight: 600;\n}\n.wv-btn-danger {\n border-color: rgba(255, 77, 79, 0.45);\n color: #ff8588;\n}\n\n.wv-drop-zone {\n position: fixed;\n pointer-events: none;\n border: 1px dashed rgba(0, 153, 255, 0.45);\n background: rgba(0, 153, 255, 0.06);\n z-index: 7;\n border-radius: 6px;\n}\n\n.wv-badge {\n position: fixed;\n width: 22px;\n height: 22px;\n border-radius: 999px;\n background: #35c759;\n color: #fff;\n border: none;\n font-size: 12px;\n font-weight: 700;\n line-height: 22px;\n text-align: center;\n pointer-events: none;\n z-index: 10;\n}\n\n.wv-toast {\n position: fixed;\n left: 50%;\n bottom: 80px;\n transform: translateX(-50%);\n max-width: min(420px, 92vw);\n padding: 10px 14px;\n border-radius: 6px;\n border: 1px solid var(--wv-border);\n background: rgba(15, 17, 21, 0.95);\n color: #e8eaed;\n font-size: 12px;\n z-index: 40;\n box-shadow: 0 4px 16px rgba(0,0,0,0.35);\n}\n\n.wv-fixed-hint {\n color: #ffb84d;\n}\n\n.wv-panel-note {\n font-size: 12px;\n color: #c9cdd4;\n border-left: 2px solid var(--wv-border);\n padding-left: 8px;\n}\n\n/* Figma overlay redesign overrides */\n.wv-tool-button {\n position: fixed;\n right: 20px;\n bottom: 20px;\n width: 50px;\n height: 50px;\n padding: 14px;\n border: none;\n border-radius: 999px;\n background: var(--weevar-dark, #111113);\n color: #EBEBEB;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2), 0 4px 16px rgba(0, 0, 0, 0.1);\n}\n.wv-tool-button::after {\n content: attr(data-tooltip);\n position: absolute;\n z-index: 40;\n pointer-events: none;\n left: 50%;\n top: calc(100% - 4px);\n transform: translateX(-50%);\n display: inline-flex;\n padding: 4px 8px;\n justify-content: center;\n align-items: center;\n gap: 10px;\n border-radius: 4px;\n background: #2D2D31;\n color: rgba(241, 241, 241, 0.7);\n text-align: center;\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 10px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.12s ease;\n}\n.wv-tool-button[data-tooltip-align=\"left\"]::after {\n left: 0;\n transform: none;\n}\n.wv-tool-button[data-tooltip-align=\"right\"]::after {\n left: auto;\n right: 0;\n transform: none;\n}\n.wv-tool-button:hover::after {\n opacity: 1;\n visibility: visible;\n transition-delay: 1.6s;\n}\n.wv-tool-button[data-tooltip-suppress=\"true\"]::after {\n opacity: 0 !important;\n visibility: hidden !important;\n transition-delay: 0s !important;\n}\n.wv-tool-button-logo { width: 18px; height: 18px; color: #EBEBEB; }\n.wv-tool-button-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 22px;\n height: 22px;\n border-radius: 999px;\n background: #35c759;\n color: #fff;\n border: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 700;\n line-height: 22px;\n text-align: center;\n pointer-events: none;\n z-index: 12;\n}\n\n.wv-dock {\n position: fixed;\n right: 20px;\n bottom: 20px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n z-index: 26;\n pointer-events: auto;\n}\n\n.wv-toolbar {\n position: static;\n transform: none;\n width: 50px;\n height: 282px;\n border-radius: 100px;\n background: var(--weevar-dark, #111113);\n border: none;\n backdrop-filter: none;\n -webkit-backdrop-filter: none;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 10px 8px;\n cursor: grab;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2), 0 4px 16px rgba(0, 0, 0, 0.1);\n}\n.wv-toolbar:active { cursor: grabbing; }\n\n.wv-tool-icon {\n width: 34px;\n height: 34px;\n border-radius: 999px;\n border: none;\n background: transparent;\n color: #EBEBEB;\n font-size: 14px;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n}\n.wv-tool-icon-on { background: rgba(235, 235, 235, 0.08); color: #EBEBEB; }\n.wv-tool-icon:hover:not(:disabled) { background: rgba(235, 235, 235, 0.08); color: #EBEBEB; }\n.wv-tool-icon:disabled {\n opacity: 0.16;\n cursor: not-allowed;\n}\n.wv-tool-icon:disabled:hover {\n cursor: not-allowed;\n}\n\n.wv-toolbar-close {\n margin-left: 0;\n width: 50px;\n height: 50px;\n border-radius: 999px;\n border: none;\n background: var(--weevar-dark, #111113);\n color: #EBEBEB;\n font-size: 22px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2), 0 4px 16px rgba(0, 0, 0, 0.1);\n}\n\n.wv-tool-icon svg,\n.wv-toolbar-close svg {\n display: block;\n flex: 0 0 auto;\n width: 18px;\n height: 18px;\n margin: auto;\n}\n\n.wv-icon-pointer,\n.wv-icon-prompt {\n width: 20px !important;\n height: 20px !important;\n}\n\n.wv-summary-tray,\n.wv-prompt-drawer {\n position: fixed;\n right: 78px;\n bottom: 20px;\n width: 250px;\n height: 340px;\n border-radius: 24px;\n background: var(--weevar-dark, #111113);\n border: 1px solid rgba(235, 235, 235,0.04);\n padding: 8px 0 6px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n z-index: 25;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2), 0 4px 16px rgba(0, 0, 0, 0.1);\n}\n\n.wv-tray-head,\n.wv-tray-foot {\n flex: 0 0 auto;\n height: 24px;\n padding: 6px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: var(--weevar-grey200, #58585D);\n font: 400 10px Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n}\n.wv-tray-head,\n.wv-tray-foot {\n position: relative;\n}\n.wv-tray-head {\n margin-bottom: 6px;\n}\n.wv-tray-foot {\n margin-top: 6px;\n}\n.wv-tray-head::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: -6px;\n border-bottom: 1px solid var(--weevar-transparent, rgba(235, 235, 235, 0.05));\n}\n.wv-tray-foot::before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n top: -6px;\n border-top: 1px solid var(--weevar-transparent, rgba(235, 235, 235, 0.05));\n}\n.wv-tray-logo { color: #EBEBEB; display: block; width: 48px; height: 10px; }\n.wv-tray-hide-icon { display: block; width: 12px; height: 12px; color: #58585d; }\n.wv-tray-hide-btn {\n border: none;\n background: transparent;\n padding: 0;\n width: 12px;\n height: 12px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: #58585d;\n cursor: pointer;\n}\n\n.wv-toolbar-tooltip {\n position: fixed;\n z-index: 40;\n pointer-events: none;\n display: inline-flex;\n padding: 4px 8px;\n justify-content: center;\n align-items: center;\n gap: 10px;\n border-radius: 4px;\n background: #2D2D31;\n color: rgba(241, 241, 241, 0.7);\n text-align: center;\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 10px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n}\n\n.wv-settings-helper-tooltip {\n position: fixed;\n z-index: 41;\n pointer-events: none;\n transform: translateY(-50%);\n display: flex;\n width: 140px;\n padding: 5px 10px;\n align-items: center;\n gap: 10px;\n border-radius: 8px;\n background: #2D2D31;\n color: rgba(241, 241, 241, 0.7);\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 10px;\n font-style: normal;\n font-weight: 400;\n line-height: 140%;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2), 0 4px 16px rgba(0, 0, 0, 0.1);\n}\n.wv-tray-content {\n flex: 1 1 auto;\n min-height: 0;\n overflow: hidden;\n padding-bottom: 2px;\n}\n.wv-tray-content-summary {\n flex: 1 1 auto;\n min-height: 0;\n overflow: hidden;\n padding: 16px 16px 16px;\n box-sizing: border-box;\n}\n.wv-summary-content {\n position: relative;\n display: flex;\n flex-direction: column;\n height: 100%;\n justify-content: space-between;\n}\n.wv-summary-heading {\n display: flex;\n flex-direction: column;\n gap: 8px;\n line-height: 1;\n align-items: flex-start;\n width: 100%;\n}\n.wv-summary-kicker {\n color: #868689;\n text-align: left;\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n width: 100%;\n}\n.wv-summary-title {\n color: #EBEBEB;\n text-align: left;\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 24px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n width: 100%;\n}\n.wv-summary-main {\n display: flex;\n flex-direction: column;\n gap: 24px;\n margin: 0;\n}\n.wv-tray-content-selection {\n flex: 1 1 auto;\n display: flex;\n flex-direction: column;\n gap: 12px;\n overflow: hidden;\n min-height: 0;\n padding: 14px 16px;\n box-sizing: border-box;\n}\n.wv-tray-content-selection .wv-tray-card {\n margin: 0;\n}\n.wv-selection-path-card {\n flex: 0 0 auto;\n padding: 10px;\n display: flex;\n align-items: center;\n min-width: 0;\n}\n.wv-selection-path-card .wv-selection-path-text {\n display: block;\n min-width: 0;\n flex: 1 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--weevar-grey300, #868689);\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: 120%;\n}\n.wv-selection-css-card {\n flex: 1 1 auto;\n min-height: 0;\n padding: 0;\n overflow: hidden;\n}\n.wv-selection-css-scroll-wrap {\n position: relative;\n height: 100%;\n padding: 0;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n.wv-selection-css-scroll {\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: scroll;\n overflow-x: hidden;\n padding: 0;\n box-sizing: border-box;\n scrollbar-width: none;\n}\n.wv-selection-css-scroll::-webkit-scrollbar {\n width: 0;\n}\n.wv-selection-css-line {\n font-family: \"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 11px;\n font-style: normal;\n font-weight: 400;\n line-height: 170%;\n margin-bottom: 6px;\n padding: 0 10px;\n word-break: break-word;\n}\n.wv-selection-css-line:first-child { padding-top: 10px; }\n.wv-selection-css-line:last-child { padding-bottom: 10px; margin-bottom: 0; }\n.wv-selection-css-key { color: #AAA0FA; }\n.wv-selection-css-value { color: #868689; }\n.wv-selection-css-sep { color: #868689; }\n.wv-selection-css-key,\n.wv-selection-css-value,\n.wv-selection-css-sep {\n font-family: \"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace !important;\n font-size: 11px !important;\n font-style: normal !important;\n font-weight: 400 !important;\n line-height: 170% !important;\n}\n.wv-tray-foot span {\n color: var(--weevar-grey200, #58585D);\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 10px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n}\n.wv-tray-card {\n margin: 12px 16px 0;\n border-radius: 12px;\n background: rgba(235, 235, 235,0.05);\n min-height: 0;\n}\n.wv-overview-card {\n height: 110px;\n border-radius: 12px;\n background: transparent;\n display: grid;\n grid-template-columns: 1fr 1px 1fr;\n align-items: stretch;\n position: relative;\n overflow: hidden;\n margin: 0;\n width: 100%;\n}\n.wv-overview-divider {\n width: 1px;\n margin: 0;\n background: #111113;\n z-index: 1;\n}\n.wv-overview-stat {\n background: #18181A;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: space-between;\n padding: 14px 14px 18px;\n gap: 0;\n z-index: 1;\n}\n.wv-overview-orb {\n width: 44px;\n height: 44px;\n border-radius: 999px;\n border: 1px solid #3C3C41;\n background: transparent;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.wv-overview-orb--moved {\n position: relative;\n}\n.wv-overview-orb--moved::before {\n content: \"\";\n position: absolute;\n width: 32px;\n height: 32px;\n border-radius: 999px;\n background: #35C759;\n}\n.wv-overview-orb-value {\n position: absolute;\n inset: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: #111113;\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 16px;\n font-weight: 500;\n line-height: 100%;\n}\n.wv-overview-orb--tool svg {\n width: 32px;\n height: 32px;\n}\n.wv-overview-orb--tool::before {\n content: \"\";\n position: absolute;\n width: 32px;\n height: 32px;\n border-radius: 999px;\n background: #FFCC02;\n}\n.wv-overview-orb--tool {\n position: relative;\n}\n.wv-overview-orb--tool svg {\n position: relative;\n z-index: 1;\n width: 14px;\n height: 14px;\n display: block;\n}\n.wv-overview-label {\n color: var(--weevar-grey300, #868689);\n text-align: center;\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n white-space: nowrap;\n}\n.wv-doc-card {\n margin: 0;\n flex: 0 0 auto;\n border-radius: 12px;\n background: transparent;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 0;\n color: #EBEBEB;\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n line-height: 100%;\n}\n.wv-doc-icon {\n width: 24px;\n height: 30px;\n display: grid;\n place-items: center;\n flex: 0 0 auto;\n}\n.wv-doc-icon svg { width: 24px; height: 30px; display: block; }\n.wv-doc-copy {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n flex: 1 1 auto;\n}\n.wv-doc-title {\n color: #EBEBEB;\n text-align: left;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n}\n.wv-doc-site {\n color: #868689;\n text-align: left;\n font-size: 10px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n}\n.wv-doc-go {\n margin-left: auto;\n width: 30px;\n height: 30px;\n min-width: 30px;\n min-height: 30px;\n padding: 4px;\n border: none;\n border-radius: 999px;\n background: rgba(235, 235, 235,0.1);\n color: #EBEBEB;\n display: grid;\n place-items: center;\n line-height: 0;\n cursor: pointer;\n flex-shrink: 0;\n}\n.wv-doc-go svg {\n width: 14px;\n height: 14px;\n display: block;\n color: #EBEBEB;\n}\n\n.wv-prompt-drawer {\n top: auto;\n left: auto;\n bottom: 20px;\n}\n.wv-prompt-content {\n flex: 1 1 auto;\n display: flex;\n flex-direction: column;\n gap: 12px;\n height: 100%;\n min-height: 0;\n padding: 0 16px;\n box-sizing: border-box;\n overflow: hidden;\n}\n\n.wv-prompt-drawer .wv-tray-content {\n display: flex;\n flex: 1 1 auto;\n min-height: 0;\n padding-top: 14px;\n padding-bottom: 14px;\n}\n.wv-prompt-drawer .wv-tray-head {\n margin-bottom: 0;\n}\n.wv-prompt-drawer .wv-tray-foot {\n margin-top: 0;\n}\n.wv-prompt-card {\n flex: 1 1 auto;\n min-height: 0;\n border-radius: 12px;\n background: rgba(235, 235, 235,0.05);\n position: relative;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.wv-prompt-card-scroll {\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n overflow-x: hidden;\n padding-top: 10px;\n padding-right: 0;\n padding-bottom: 10px;\n padding-left: 10px;\n box-sizing: border-box;\n scrollbar-width: none;\n}\n.wv-prompt-card-scroll::-webkit-scrollbar {\n width: 0;\n height: 0;\n}\n.wv-prompt-scrollbar {\n position: absolute;\n top: 0;\n right: 2px;\n bottom: 0;\n width: 4px;\n pointer-events: none;\n}\n.wv-prompt-scrollbar-thumb {\n position: absolute;\n right: 0;\n width: 4px;\n border-radius: 999px;\n background: #111113;\n}\n.wv-prompt-card-title {\n color: #EBEBEB;\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 12px;\n font-weight: 400;\n line-height: 100%;\n margin-bottom: 12px;\n padding-right: 10px;\n}\n.wv-prompt-card-body {\n margin: 0;\n padding-right: 10px;\n color: #868689;\n white-space: pre-wrap;\n word-break: break-word;\n font-family: \"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 11px;\n line-height: 170%;\n}\n.wv-prompt-copy-btn {\n flex: 0 0 auto;\n padding: 8px 0;\n border-radius: 999px;\n border: none;\n background: rgba(235, 235, 235,0.05);\n color: #EBEBEB;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 10px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n cursor: pointer;\n}\n.wv-prompt-copy-btn:disabled {\n color: #EBEBEB;\n opacity: 0.35;\n cursor: not-allowed;\n}\n.wv-prompt-copy-btn:disabled:hover {\n cursor: not-allowed;\n}\n.wv-prompt-copy-btn.wv-prompt-copy-btn-on {\n color: var(--weevar-green, #7be5a3);\n}\n.wv-prompt-copy-btn svg {\n width: 12px;\n height: 12px;\n}\n.wv-prompt-copy-btn span {\n color: inherit;\n font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;\n font-size: 11px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n}\n\n.wv-badge {\n background: #35c759;\n color: #fff;\n border: none;\n width: 22px;\n height: 22px;\n line-height: 22px;\n z-index: 12;\n}\n\n/* Final Figma polish overrides */\n:root { --wv-accent: #7be5a3; }\n.wv-outline {\n border-radius: 4px !important;\n border: 1.5px solid var(--weevar-green, #7BE5A3) !important;\n background: rgba(123, 229, 163, 0.04) !important;\n}\n.wv-outline-selected {\n border-radius: 4px !important;\n border: 1.5px solid var(--weevar-green, #7BE5A3) !important;\n background: rgba(123, 229, 163, 0.04) !important;\n}\n.wv-label { background: rgba(22, 22, 30, 0.9); border: none; border-radius: 8px; padding: 5px 10px; color: #EBEBEB; }\n.wv-drag-handle { background: rgba(22, 22, 30, 0.9); border: none; border-radius: 8px; }\n.wv-handle-grid { background-image: radial-gradient(circle, #EBEBEB 1px, transparent 1px); }\n.wv-toast { background: rgba(22, 22, 30, 0.96); border: none; border-radius: 10px; color: #EBEBEB; }\n.wv-tool-icon { color: #d6d6da; }\n.wv-tool-icon-on { background: rgba(235, 235, 235, 0.08); color: #EBEBEB; }\n.wv-tool-icon:hover:not(:disabled) { background: rgba(235, 235, 235, 0.08); color: #EBEBEB; }\n.wv-tool-icon:disabled {\n opacity: 0.16;\n cursor: not-allowed;\n}\n.wv-tool-icon:disabled:hover {\n cursor: not-allowed;\n}\n.wv-summary-tray, .wv-prompt-drawer { border: none; }\n.wv-tray-head .wv-tray-logo { width: 48px; height: 10px; }\n.wv-doc-card { font-size: 12px; }\n.wv-prompt-header { display: block; margin: 0 16px; font-size: 12px; font-weight: 400; color: #EBEBEB; }\n.wv-tabs { display: none; }\n.wv-field { display: none; }\n.wv-prompt-actions { display: grid; grid-template-columns: 1fr; margin: 0 16px; }\n.wv-btn { border-radius: 999px; border: none; background: rgba(235, 235, 235,0.05); color: #EBEBEB; height: 28px; font-size: 10px; }\n.wv-btn:not(.wv-btn-primary), .wv-btn-danger { display: none; }\n.wv-btn-primary { font-weight: 400; }\n`;\n","import { useEffect, useRef, useState, type CSSProperties } from \"react\";\nimport type { WeevarRuntimeConfig } from \"../engine/layoutTypes\";\n\ntype Props = {\n promptText: string;\n canCopy: boolean;\n runtimeConfig?: WeevarRuntimeConfig;\n onCopy: () => void | Promise<void>;\n onClose: () => void;\n warningNote?: string | null;\n copyFlash: boolean;\n style?: CSSProperties;\n /** When stacked with other trays, hide from a11y tree while off-screen */\n hidden?: boolean;\n};\n\nexport function PromptPanel({\n promptText,\n canCopy,\n runtimeConfig: _runtimeConfig,\n onCopy,\n onClose,\n warningNote,\n copyFlash,\n style,\n hidden = false,\n}: Props) {\n void _runtimeConfig; // reserved for future panel-local template hooks\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const [scrollThumb, setScrollThumb] = useState<{ top: number; height: number; visible: boolean }>({\n top: 0,\n height: 0,\n visible: false,\n });\n\n useEffect(() => {\n const el = scrollRef.current;\n if (!el) return;\n\n const update = () => {\n const client = el.clientHeight;\n const scroll = el.scrollHeight;\n const maxScroll = scroll - client;\n if (maxScroll <= 0 || client <= 0) {\n setScrollThumb({ top: 0, height: 0, visible: false });\n return;\n }\n const trackInset = 10;\n const trackHeight = Math.max(0, client - trackInset * 2);\n const height = Math.max(20, (client / scroll) * trackHeight);\n const ratio = el.scrollTop / maxScroll;\n const travel = Math.max(0, trackHeight - height);\n const top = trackInset + ratio * travel;\n setScrollThumb({ top, height, visible: true });\n };\n\n update();\n el.addEventListener(\"scroll\", update, { passive: true });\n window.addEventListener(\"resize\", update);\n return () => {\n el.removeEventListener(\"scroll\", update);\n window.removeEventListener(\"resize\", update);\n };\n }, [promptText, copyFlash]);\n\n return (\n <aside\n className=\"wv-prompt-drawer wv-pe\"\n role=\"dialog\"\n aria-label=\"Generated prompt\"\n style={style}\n aria-hidden={hidden}\n >\n <div className=\"wv-tray-head\">\n <PromptLogo />\n <button type=\"button\" className=\"wv-tray-hide-btn\" aria-label=\"Hide tray\" onClick={onClose}>\n <HideTrayIcon />\n </button>\n </div>\n <div className=\"wv-tray-content wv-prompt-content\">\n <div className=\"wv-prompt-card\">\n <div ref={scrollRef} className=\"wv-prompt-card-scroll\">\n <div className=\"wv-prompt-card-title\">Prompt</div>\n <pre className=\"wv-prompt-card-body\">{promptText}</pre>\n </div>\n {scrollThumb.visible ? (\n <div className=\"wv-prompt-scrollbar\" aria-hidden>\n <div\n className=\"wv-prompt-scrollbar-thumb\"\n style={{ top: scrollThumb.top, height: scrollThumb.height }}\n />\n </div>\n ) : null}\n </div>\n <button\n type=\"button\"\n className={`wv-prompt-copy-btn ${copyFlash ? \"wv-prompt-copy-btn-on\" : \"\"}`}\n onClick={() => void onCopy()}\n disabled={!canCopy}\n >\n {copyFlash ? <CopySuccessIcon /> : <CopyIcon />}\n <span>{copyFlash ? \"Copied\" : \"Copy\"}</span>\n </button>\n {warningNote ? <div className=\"wv-panel-note\">{warningNote}</div> : null}\n </div>\n <div className=\"wv-tray-foot\">\n <span>v1.0.0</span>\n <GlobeIcon />\n </div>\n </aside>\n );\n}\n\nfunction PromptLogo() {\n return (\n <svg\n className=\"wv-tray-logo\"\n width=\"48\"\n height=\"10\"\n viewBox=\"0 0 48 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label=\"Weevar\"\n >\n <path d=\"M2.16888 9.97264C1.66872 9.97264 1.2504 9.76288 0.913931 9.34336C0.577459 8.92385 0.409223 8.34929 0.409223 7.6197C0.409223 7.24578 0.450145 6.82627 0.531989 6.36115C0.613834 5.88691 0.709319 5.40812 0.818445 4.92476C0.927571 4.4414 1.02306 3.98997 1.1049 3.57045C1.18675 3.14181 1.22767 2.78614 1.22767 2.50342C1.22767 2.30278 1.20039 2.14774 1.14582 2.0383C1.09126 1.91974 0.991228 1.86047 0.845727 1.86047C0.736601 1.86047 0.609287 1.91062 0.463786 2.01094C0.318284 2.11126 0.209158 2.30734 0.136408 2.59918L0 2.54446C0 1.76015 0.17733 1.13999 0.531989 0.683995C0.895743 0.227998 1.38226 0 1.99155 0C2.56446 0 2.96004 0.186959 3.1783 0.560876C3.40564 0.934793 3.51931 1.40447 3.51931 1.9699C3.51931 2.38942 3.47385 2.8363 3.38291 3.31053C3.30106 3.78477 3.20558 4.25901 3.09645 4.73324C2.98733 5.19836 2.88729 5.63155 2.79635 6.03283C2.71451 6.43411 2.67359 6.76699 2.67359 7.03146C2.67359 7.42362 2.77362 7.6197 2.97368 7.6197C3.0919 7.6197 3.25105 7.53762 3.45111 7.37346C3.65118 7.20018 3.86033 6.96762 4.07859 6.67579C4.30593 6.37483 4.52418 6.03739 4.73334 5.66347C4.9425 5.28044 5.11983 4.87916 5.26533 4.45964C5.24714 4.25901 5.2335 4.06749 5.22441 3.88509C5.21531 3.69357 5.21077 3.52485 5.21077 3.37893C5.21077 2.64934 5.27897 2.0611 5.41538 1.61423C5.56088 1.16735 5.74276 0.839033 5.96101 0.629275C6.17926 0.419517 6.40206 0.314637 6.62941 0.314637C6.94769 0.314637 7.23415 0.492476 7.48877 0.848153C7.7434 1.19471 7.87072 1.66895 7.87072 2.27086C7.87072 2.64478 7.80251 3.0643 7.6661 3.52941C7.5297 3.98541 7.30235 4.47332 6.98407 4.99316C6.95678 5.77747 7.04318 6.41131 7.24324 6.89466C7.44331 7.37802 7.69339 7.6197 7.99348 7.6197C8.18445 7.6197 8.38906 7.52394 8.60732 7.33242C8.83466 7.13178 9.04382 6.85819 9.23479 6.51163C9.42576 6.15595 9.58036 5.74555 9.69858 5.28044C9.82589 4.81532 9.88955 4.31829 9.88955 3.78933C9.88955 3.47925 9.86681 3.15549 9.82134 2.81806C9.78497 2.48062 9.73495 2.15686 9.67129 1.84678C9.61673 1.53671 9.55762 1.28135 9.49396 1.08071C9.49396 0.925672 9.55762 0.770634 9.68494 0.615595C9.82134 0.451437 9.99413 0.314637 10.2033 0.205198C10.4124 0.086639 10.6261 0.0273594 10.8444 0.0273594C11.0627 0.0273594 11.2718 0.104879 11.4719 0.259918C11.6719 0.414957 11.8356 0.688555 11.9629 1.08071C12.0903 1.46375 12.1539 2.01094 12.1539 2.7223C12.1539 3.71637 12.0266 4.65116 11.772 5.52668C11.5173 6.39307 11.1718 7.15914 10.7353 7.8249C10.3079 8.49065 9.83498 9.01505 9.31663 9.39808C8.79829 9.772 8.27084 9.95896 7.73431 9.95896C7.26143 9.95896 6.87039 9.81304 6.5612 9.5212C6.25201 9.22937 6.01103 8.83721 5.83824 8.34473C5.66546 7.85226 5.54269 7.30506 5.46994 6.70315C5.14256 7.48746 4.7879 8.12129 4.40596 8.60465C4.02402 9.07889 3.64208 9.42544 3.26014 9.64432C2.8782 9.8632 2.51445 9.97264 2.16888 9.97264Z\" fill=\"currentColor\" />\n <path d=\"M15.4244 10C14.7605 10 14.2104 9.86776 13.7739 9.60328C13.3374 9.32969 13.01 8.97401 12.7917 8.53625C12.5735 8.08938 12.4643 7.61058 12.4643 7.09986C12.4643 6.61651 12.5553 6.13315 12.7372 5.64979C12.9281 5.15732 13.2009 4.71044 13.5556 4.30917C13.9194 3.90789 14.3559 3.58413 14.8651 3.33789C15.3835 3.09166 15.9655 2.96854 16.6111 2.96854C17.4114 2.96854 17.9934 3.15093 18.3572 3.51573C18.73 3.87141 18.9164 4.30461 18.9164 4.81532C18.9164 5.25308 18.7982 5.65891 18.5618 6.03283C18.3344 6.39763 18.0298 6.69403 17.6478 6.92202C17.2659 7.1409 16.8476 7.25034 16.3929 7.25034C16.1564 7.25034 15.9155 7.21386 15.6699 7.1409C15.4244 7.06794 15.1834 6.95394 14.947 6.79891C14.9924 7.36434 15.1561 7.77474 15.438 8.0301C15.7199 8.28545 16.0564 8.41313 16.4474 8.41313C16.7203 8.41313 16.9931 8.36297 17.2659 8.26265C17.5387 8.15321 17.7888 8.01642 18.0161 7.85226C18.2526 7.67898 18.4344 7.49658 18.5618 7.30506L18.6572 7.37346C18.6572 7.8477 18.5572 8.25353 18.3572 8.59097C18.1662 8.91929 17.9116 9.18833 17.5933 9.39808C17.275 9.60784 16.9249 9.76288 16.5429 9.8632C16.1701 9.9544 15.7972 10 15.4244 10ZM15.7381 6.30643C16.0291 6.30643 16.2656 6.22435 16.4474 6.06019C16.6293 5.88691 16.7657 5.68627 16.8567 5.45828C16.9476 5.23028 16.9931 5.02964 16.9931 4.85636C16.9931 4.6466 16.934 4.47332 16.8157 4.33653C16.6975 4.19061 16.5338 4.11765 16.3247 4.11765C16.161 4.11765 15.9791 4.17693 15.779 4.29549C15.5881 4.41404 15.4153 4.61924 15.2607 4.91108C15.1061 5.1938 15.0061 5.59052 14.9606 6.10123C15.2516 6.23803 15.5108 6.30643 15.7381 6.30643Z\" fill=\"currentColor\" />\n <path d=\"M22.5378 10C21.874 10 21.3238 9.86776 20.8873 9.60328C20.4508 9.32969 20.1234 8.97401 19.9052 8.53625C19.6869 8.08938 19.5778 7.61058 19.5778 7.09986C19.5778 6.61651 19.6687 6.13315 19.8506 5.64979C20.0416 5.15732 20.3144 4.71044 20.669 4.30917C21.0328 3.90789 21.4693 3.58413 21.9786 3.33789C22.4969 3.09166 23.0789 2.96854 23.7246 2.96854C24.5248 2.96854 25.1068 3.15093 25.4706 3.51573C25.8434 3.87141 26.0299 4.30461 26.0299 4.81532C26.0299 5.25308 25.9116 5.65891 25.6752 6.03283C25.4479 6.39763 25.1432 6.69403 24.7613 6.92202C24.3793 7.1409 23.961 7.25034 23.5063 7.25034C23.2699 7.25034 23.0289 7.21386 22.7834 7.1409C22.5378 7.06794 22.2968 6.95394 22.0604 6.79891C22.1059 7.36434 22.2696 7.77474 22.5515 8.0301C22.8334 8.28545 23.1698 8.41313 23.5609 8.41313C23.8337 8.41313 24.1065 8.36297 24.3793 8.26265C24.6521 8.15321 24.9022 8.01642 25.1296 7.85226C25.366 7.67898 25.5479 7.49658 25.6752 7.30506L25.7707 7.37346C25.7707 7.8477 25.6707 8.25353 25.4706 8.59097C25.2796 8.91929 25.025 9.18833 24.7067 9.39808C24.3884 9.60784 24.0383 9.76288 23.6564 9.8632C23.2835 9.9544 22.9107 10 22.5378 10ZM22.8516 6.30643C23.1426 6.30643 23.379 6.22435 23.5609 6.06019C23.7428 5.88691 23.8792 5.68627 23.9701 5.45828C24.061 5.23028 24.1065 5.02964 24.1065 4.85636C24.1065 4.6466 24.0474 4.47332 23.9292 4.33653C23.811 4.19061 23.6473 4.11765 23.4381 4.11765C23.2744 4.11765 23.0926 4.17693 22.8925 4.29549C22.7015 4.41404 22.5287 4.61924 22.3741 4.91108C22.2195 5.1938 22.1195 5.59052 22.074 6.10123C22.365 6.23803 22.6242 6.30643 22.8516 6.30643Z\" fill=\"currentColor\" />\n <path d=\"M28.751 9.95896C28.2235 9.95896 27.8052 9.82216 27.496 9.54856C27.1868 9.26585 27.0322 8.83265 27.0322 8.24897C27.0322 7.91154 27.0732 7.5513 27.155 7.16826C27.246 6.78523 27.3323 6.44323 27.4142 6.14227C27.496 5.85043 27.5597 5.59508 27.6052 5.3762C27.6597 5.15732 27.687 4.9886 27.687 4.87004C27.687 4.72412 27.6552 4.61924 27.5915 4.5554C27.5279 4.49156 27.4506 4.45964 27.3596 4.45964C27.1414 4.45964 26.9595 4.56452 26.814 4.77428L26.7594 4.71956C26.7685 4.40948 26.8686 4.12677 27.0595 3.87141C27.2505 3.60693 27.496 3.39717 27.7961 3.24213C28.0962 3.0871 28.4009 3.00958 28.7101 3.00958C29.0556 3.00958 29.3512 3.11446 29.5967 3.32421C29.8422 3.52485 29.9559 3.84405 29.9377 4.28181C29.9286 4.47332 29.8923 4.715 29.8286 5.00684C29.774 5.29868 29.6967 5.64523 29.5967 6.04651C29.533 6.30187 29.4648 6.59371 29.3921 6.92202C29.3284 7.24122 29.2966 7.53306 29.2966 7.79754C29.2966 7.99818 29.3284 8.15777 29.3921 8.27633C29.4558 8.39489 29.5603 8.45417 29.7058 8.45417C29.8968 8.45417 30.106 8.34929 30.3333 8.13953C30.5697 7.92066 30.7744 7.56954 30.9471 7.08618C31.1199 6.59371 31.22 5.94163 31.2472 5.12996C31.2745 4.5098 31.2336 4.05837 31.1245 3.77565V3.70725C31.2063 3.57957 31.3291 3.45645 31.4928 3.33789C31.6656 3.21933 31.8565 3.12357 32.0657 3.05062C32.2748 2.96854 32.4704 2.9275 32.6522 2.9275C32.9432 2.9275 33.1888 3.06886 33.3888 3.35157C33.598 3.63429 33.6889 4.12677 33.6617 4.829C33.6435 5.50388 33.5207 6.11491 33.2934 6.66211C33.0751 7.2093 32.7886 7.6881 32.434 8.0985C32.0793 8.50889 31.6883 8.85089 31.2609 9.12449C30.8426 9.39808 30.4152 9.60784 29.9786 9.75376C29.5421 9.89056 29.1329 9.95896 28.751 9.95896Z\" fill=\"currentColor\" />\n <path d=\"M39.2501 9.97264C38.9318 9.97264 38.6545 9.86776 38.418 9.658C38.1816 9.44824 38.0634 9.10625 38.0634 8.63201C38.0634 8.58641 38.0634 8.54081 38.0634 8.49521C38.0634 8.44961 38.0679 8.40401 38.077 8.35841C37.8042 8.90561 37.495 9.31145 37.1494 9.57592C36.8129 9.83128 36.4719 9.95896 36.1264 9.95896C35.8081 9.95896 35.508 9.84952 35.2261 9.63064C34.9442 9.40264 34.7168 9.06977 34.544 8.63201C34.3713 8.19425 34.2849 7.6653 34.2849 7.04514C34.2849 6.40675 34.3713 5.83675 34.544 5.33516C34.7259 4.83356 34.9624 4.40948 35.2534 4.06293C35.5444 3.71637 35.8626 3.45645 36.2082 3.28317C36.5538 3.10078 36.8902 3.00958 37.2176 3.00958C37.5814 3.00958 37.9088 3.12358 38.1998 3.35157C38.4908 3.57045 38.6908 3.92157 38.8 4.40492C38.8272 4.24989 38.8454 4.10853 38.8545 3.98085C38.8727 3.85317 38.8818 3.76653 38.8818 3.72093C38.8909 3.47469 39.0137 3.29229 39.2501 3.17373C39.4956 3.05518 39.7639 2.9959 40.0549 2.9959C40.3095 2.9959 40.5505 3.04606 40.7779 3.14637C41.0052 3.24669 41.1598 3.41541 41.2416 3.65253L41.2689 3.73461C41.1598 3.98085 41.0507 4.27725 40.9415 4.6238C40.8324 4.97036 40.7324 5.33516 40.6415 5.71819C40.5505 6.09211 40.4778 6.46147 40.4232 6.82627C40.3686 7.18194 40.3414 7.49658 40.3414 7.77018C40.3414 8.07114 40.3732 8.28089 40.4368 8.39945C40.5005 8.50889 40.5778 8.56361 40.6687 8.56361C40.8233 8.56361 40.9643 8.45417 41.0916 8.23529L41.2007 8.29001C41.2007 8.60009 41.1007 8.88281 40.9006 9.13817C40.7006 9.39353 40.4505 9.59872 40.1504 9.75376C39.8503 9.89968 39.5502 9.97264 39.2501 9.97264ZM37.0267 8.23529C37.2631 8.23529 37.5223 8.02554 37.8042 7.60602C38.0952 7.17738 38.3453 6.56635 38.5544 5.77291C38.5726 5.69083 38.5908 5.61332 38.609 5.54036C38.6272 5.45828 38.6408 5.38076 38.6499 5.3078C38.5044 4.97036 38.3498 4.73324 38.1861 4.59644C38.0315 4.45052 37.8769 4.37756 37.7223 4.37756C37.495 4.37756 37.2813 4.50068 37.0812 4.74692C36.8902 4.98404 36.7311 5.285 36.6038 5.64979C36.4856 6.01459 36.4265 6.37939 36.4265 6.74419C36.4265 7.24578 36.481 7.6197 36.5901 7.86594C36.7084 8.11218 36.8539 8.23529 37.0267 8.23529Z\" fill=\"currentColor\" />\n <path d=\"M43.5804 9.95896C43.253 9.95896 42.962 9.82672 42.7074 9.56224C42.4528 9.28865 42.3254 8.90561 42.3254 8.41313C42.3254 8.17601 42.3527 7.90698 42.4073 7.60602C42.4619 7.30506 42.5255 6.99954 42.5983 6.68947C42.671 6.37027 42.7347 6.07387 42.7892 5.80027C42.8438 5.51756 42.8711 5.285 42.8711 5.1026C42.8711 4.91108 42.8347 4.7606 42.762 4.65116C42.6983 4.5326 42.6119 4.47332 42.5028 4.47332C42.33 4.47332 42.1527 4.59188 41.9708 4.829L41.8889 4.77428C41.8798 4.62836 41.9117 4.45508 41.9844 4.25445C42.0572 4.05381 42.1709 3.86229 42.3254 3.67989C42.48 3.48837 42.6756 3.32877 42.912 3.20109C43.1575 3.07342 43.444 3.00958 43.7714 3.00958C44.2533 3.00958 44.6035 3.15093 44.8217 3.43365C45.04 3.70725 45.1491 4.04013 45.1491 4.43228C45.1491 4.49612 45.1445 4.56452 45.1354 4.63748C45.1354 4.70132 45.1309 4.76516 45.1218 4.829C45.4492 4.23621 45.7902 3.78477 46.1449 3.47469C46.5086 3.15549 46.8451 2.9959 47.1543 2.9959C47.4453 2.9959 47.659 3.1099 47.7954 3.33789C47.9318 3.56589 48 3.83949 48 4.15869C48 4.45052 47.9409 4.74692 47.8227 5.04788C47.7135 5.34884 47.5453 5.59964 47.318 5.80027C47.0997 5.99179 46.8314 6.08299 46.5132 6.07387L46.4586 6.04651C46.4495 5.80939 46.3722 5.62243 46.2267 5.48564C46.0812 5.34884 45.9175 5.28044 45.7356 5.28044C45.4901 5.28044 45.2582 5.40356 45.04 5.64979C44.8308 5.89603 44.7262 6.25171 44.7262 6.71683C44.7262 6.99954 44.758 7.30506 44.8217 7.63338C44.8854 7.9617 44.9172 8.23985 44.9172 8.46785C44.9172 8.74145 44.8535 8.99225 44.7262 9.22025C44.5989 9.44824 44.4352 9.63064 44.2352 9.76744C44.0351 9.89512 43.8168 9.95896 43.5804 9.95896Z\" fill=\"currentColor\" />\n </svg>\n );\n}\n\nfunction HideTrayIcon() {\n return (\n <svg\n className=\"wv-tray-hide-icon\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden\n >\n <g clipPath=\"url(#wv-hide-tray-clip-prompt)\">\n <path d=\"M4 11L4 1M3 11L9 11C10.1046 11 11 10.1046 11 9L11 3C11 1.89543 10.1046 1 9 1L3 1C1.89543 1 1 1.89543 1 3L1 9C1 10.1046 1.89543 11 3 11Z\" stroke=\"currentColor\" strokeLinecap=\"round\" />\n </g>\n <defs>\n <clipPath id=\"wv-hide-tray-clip-prompt\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0 12) rotate(-90)\" />\n </clipPath>\n </defs>\n </svg>\n );\n}\n\nfunction CopyIcon() {\n return (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden>\n <path d=\"M8 6.45V8.55C8 10.3 7.3 11 5.55 11H3.45C1.7 11 1 10.3 1 8.55V6.45C1 4.7 1.7 4 3.45 4H5.55C7.3 4 8 4.7 8 6.45Z\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M11 3.45V5.55C11 7.3 10.3 8 8.55 8H8V6.45C8 4.7 7.3 4 5.55 4H4V3.45C4 1.7 4.7 1 6.45 1H8.55C10.3 1 11 1.7 11 3.45Z\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n );\n}\n\nfunction CopySuccessIcon() {\n return (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden>\n <path d=\"M11 5.55V3.45C11 1.7 10.3 1 8.55 1H6.45C4.7 1 4 1.7 4 3.45V4H5.55C7.3 4 8 4.7 8 6.45V8H8.55C10.3 8 11 7.3 11 5.55Z\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M8 8.55V6.45C8 4.7 7.3 4 5.55 4H3.45C1.7 4 1 4.7 1 6.45V8.55C1 10.3 1.7 11 3.45 11H5.55C7.3 11 8 10.3 8 8.55Z\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M3.04004 7.4999L4.01504 8.4749L5.96004 6.5249\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n );\n}\n\nfunction GlobeIcon() {\n return (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden>\n <circle cx=\"12\" cy=\"12\" r=\"8\" />\n <path d=\"M4 12h16M12 4c2.5 2.2 2.5 13.8 0 16M12 4c-2.5 2.2-2.5 13.8 0 16\" />\n </svg>\n );\n}\n","import type { CSSProperties } from \"react\";\nimport {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { pushPauseHostAnimations } from \"../engine/animationPause\";\nimport { autoScrollForPoint } from \"../engine/autoScroll\";\nimport {\n WEEVAR_BOOT_DOT_CLASS,\n hitTestHostPage,\n isInsideWeevarOverlay,\n} from \"../engine/hitTest\";\nimport { buildAncestorPath } from \"../engine/layoutContext\";\nimport { buildReorderLayoutChange } from \"../engine/layoutChangeFromReorder\";\nimport { buildMoveLayoutChange } from \"../engine/layoutChangeMove\";\nimport { findDropParent } from \"../engine/dropTargets\";\nimport { buildElementIdentity } from \"../engine/identity\";\nimport type {\n BatchedChange,\n ElementIdentity,\n GeneratedPrompt,\n LayoutChange,\n MoveSession,\n PromptLength,\n TargetTool,\n WeevarRuntimeConfig,\n} from \"../engine/layoutTypes\";\nimport { elementChildren } from \"../engine/elementChildren\";\nimport { FlexOrderPreview } from \"../engine/flexOrderPreview\";\nimport { insertionBarBetween } from \"../engine/insertionBar\";\nimport { createPendingCrossMove } from \"../engine/pendingMove\";\nimport { createPendingReorder, type PendingReorder } from \"../engine/pendingReorder\";\nimport { promptBody } from \"../engine/prompts\";\nimport { generateBatchedPrompt } from \"../prompts/generateBatched\";\nimport {\n computeDropIndex,\n orderAfterInsert,\n orderAfterMove,\n parentSupportsFlexOrderPreview,\n} from \"../engine/reorderTarget\";\nimport { resolveElementIdentity } from \"../engine/resolveIdentity\";\nimport { OVERLAY_CSS } from \"./overlayStyles\";\nimport { PromptPanel } from \"./PromptPanel\";\n\ntype FrameRects = { hover: DOMRect | null; selected: DOMRect | null };\n\ntype DragBar = { left: number; top: number; width: number; height: number };\n\nfunction sameDragBar(a: DragBar | null, b: DragBar | null): boolean {\n if (a == null && b == null) return true;\n if (a == null || b == null) return false;\n return a.left === b.left && a.top === b.top && a.width === b.width && a.height === b.height;\n}\n\nfunction sameDropZoneRect(a: DOMRect | null, b: DOMRect | null): boolean {\n if (a == null && b == null) return true;\n if (a == null || b == null) return false;\n return a.left === b.left && a.top === b.top && a.width === b.width && a.height === b.height;\n}\n\ntype DragSession = {\n dragged: Element;\n sourceParent: Element;\n fromIndex: number;\n dropParent: Element;\n dropIndex: number;\n preview: FlexOrderPreview;\n resumeAnimations: () => void;\n prevOpacity: string;\n pointerId: number;\n ghostEl: HTMLElement | null;\n grabOffsetX: number;\n grabOffsetY: number;\n};\n\ntype PanelState = {\n change: LayoutChange;\n prompt: GeneratedPrompt;\n len: PromptLength;\n tool: TargetTool;\n copyFlash: boolean;\n mode?: \"single\" | \"batched\";\n};\n\ntype BadgeRender = {\n ordinal: number;\n displayOrdinal: number;\n rect: DOMRect;\n};\n\ntype PointerSelectionInfo = {\n path: string;\n};\n\ntype RuntimeChangeRefs = {\n target: Element;\n fromParent: Element;\n toParent: Element;\n};\n\nconst POINTER_CURSOR_DATA_URI = `url(\"data:image/svg+xml;utf8,${encodeURIComponent(\n '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.80294 4.62999L15.8359 6.98999C19.3159 8.35199 21.0559 9.03299 20.9989 10.113C20.9409 11.193 19.1249 11.689 15.4929 12.679C14.4119 12.974 13.8709 13.121 13.4959 13.496C13.1209 13.871 12.9739 14.412 12.6789 15.493C11.6889 19.125 11.1929 20.941 10.1129 20.999C9.03294 21.057 8.35294 19.316 6.99094 15.836L4.62994 9.80299C3.20394 6.15899 2.48994 4.33799 3.41394 3.41399C4.33794 2.49099 6.15894 3.20399 9.80294 4.62999Z\" fill=\"#16161E\" stroke=\"#EBEBEB\" stroke-width=\"1.5\" stroke-linejoin=\"round\"/></svg>',\n)}\") 3 3, auto`;\n\n\nfunction identityBadgeKey(id: ElementIdentity): string {\n if (id.fiberPath?.length) return `fiber:${JSON.stringify(id.fiberPath)}`;\n if (id.source) {\n return `src:${id.source.file}:${id.source.line}:${id.source.col}|tag:${id.tag}|hash:${id.contentHash}|txt:${id.textSnippet ?? \"\"}`;\n }\n const cls = id.classList.join(\".\");\n const txt = id.textSnippet ?? \"\";\n const name = id.componentName ?? \"\";\n return `el:${name}|${id.tag}|${cls}|${txt}|hash:${id.contentHash}`;\n}\n\nfunction mergePromptChange(base: LayoutChange, next: LayoutChange): LayoutChange {\n if (next.kind === \"move\") {\n if (base.kind === \"move\") {\n return {\n ...next,\n target: base.target,\n fromParent: base.fromParent,\n fromIndex: base.fromIndex,\n fromLayoutType: base.fromLayoutType,\n };\n }\n return {\n kind: \"move\",\n target: base.target,\n fromParent: base.parent,\n toParent: next.toParent,\n fromIndex: base.fromIndex,\n toIndex: next.toIndex,\n destinationSiblings: next.destinationSiblings ?? next.siblings,\n siblings: next.destinationSiblings ?? next.siblings,\n fromLayoutType: base.layoutType,\n toLayoutType: next.toLayoutType,\n };\n }\n\n if (base.kind === \"move\") {\n return {\n ...base,\n target: base.target,\n toParent: next.parent,\n toIndex: next.toIndex,\n destinationSiblings: next.siblings,\n siblings: next.siblings,\n toLayoutType: next.layoutType,\n };\n }\n\n return {\n ...next,\n target: base.target,\n parent: base.parent,\n fromIndex: base.fromIndex,\n };\n}\n\nfunction compressSessionForPrompt(session: MoveSession): MoveSession {\n const out: BatchedChange[] = [];\n const byTarget = new Map<string, number>();\n for (const entry of session.changes) {\n const key = identityBadgeKey(entry.change.target);\n const idx = byTarget.get(key);\n if (idx == null) {\n out.push({ ...entry });\n byTarget.set(key, out.length - 1);\n continue;\n }\n const prev = out[idx];\n if (!prev) continue;\n out[idx] = {\n ...entry,\n ordinal: prev.ordinal,\n change: mergePromptChange(prev.change, entry.change),\n badgeAnchor: prev.badgeAnchor,\n capturedAt: prev.capturedAt,\n };\n }\n const changes = out.map((c, i) => ({ ...c, ordinal: i + 1 }));\n return { ...session, changes };\n}\n\nfunction truncateLabel(input: string): string {\n const s = input.trim().replace(/\\s+/g, \" \");\n if (s.length <= 20) return s;\n return `${s.slice(0, 20)}...`;\n}\n\nfunction buildSpecificElementLabel(el: Element): string {\n const tag = el.tagName.toLowerCase();\n const classList = Array.from((el as HTMLElement).classList ?? []);\n const classPart = classList.length ? `.${classList.slice(0, 2).join(\".\")}` : \"\";\n const directText = Array.from(el.childNodes)\n .filter((n) => n.nodeType === Node.TEXT_NODE)\n .map((n) => n.textContent ?? \"\")\n .join(\" \")\n .trim();\n const textLikeTags = new Set([\n \"p\",\n \"span\",\n \"a\",\n \"label\",\n \"small\",\n \"strong\",\n \"em\",\n \"b\",\n \"i\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"li\",\n \"blockquote\",\n \"code\",\n \"pre\",\n \"button\",\n ]);\n const textPart = (directText || (el.textContent ?? \"\").trim()).replace(/\\s+/g, \" \").trim();\n const raw = textLikeTags.has(tag) && textPart ? `${tag}: \"${textPart}\"` : `${tag}${classPart}`;\n return truncateLabel(raw || tag);\n}\n\nfunction rectsEqual(a: DOMRect | null, b: DOMRect | null): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n return (\n a.x === b.x &&\n a.y === b.y &&\n a.width === b.width &&\n a.height === b.height\n );\n}\n\ntype Props = {\n sessionOn: boolean;\n setSessionOn: (next: boolean) => void;\n disabled?: boolean;\n config?: WeevarRuntimeConfig;\n};\n\nexport function WeevarShadowApp({\n sessionOn,\n setSessionOn,\n disabled,\n config,\n}: Props) {\n const [activeTool, setActiveTool] = useState<\"summary\" | \"pointer\">(\"summary\");\n const [settingsOpen, setSettingsOpen] = useState(false);\n const [settingsTool, setSettingsTool] = useState<TargetTool>(\"claude-code\");\n const [settingsLen, setSettingsLen] = useState<PromptLength>(\"short\");\n\n const DOCK_WIDTH = 50;\n const DOCK_HEIGHT = 340;\n const TRIGGER_SIZE = 50;\n const TRIGGER_OFFSET_Y = DOCK_HEIGHT - TRIGGER_SIZE; // close button aligns with trigger button area\n\n type DockPos = { left: number; top: number };\n const clampDockPos = useCallback((pos: DockPos): DockPos => {\n const w = window.innerWidth;\n const h = window.innerHeight;\n return {\n left: Math.max(0, Math.min(pos.left, w - DOCK_WIDTH)),\n top: Math.max(0, Math.min(pos.top, h - DOCK_HEIGHT)),\n };\n }, []);\n\n const getDefaultDockPos = useCallback((): DockPos => {\n if (typeof window === \"undefined\") return { left: 0, top: 0 };\n // matches CSS right:20 bottom:20 for the dock (with width 50, height ~302).\n return {\n left: window.innerWidth - 20 - DOCK_WIDTH,\n top: window.innerHeight - 20 - DOCK_HEIGHT,\n };\n }, []);\n\n const [dockPos, setDockPos] = useState<DockPos>(() => getDefaultDockPos());\n const [triggerAtTop, setTriggerAtTop] = useState(false);\n const dockRef = useRef<HTMLDivElement | null>(null);\n const triggerBtnRef = useRef<HTMLButtonElement | null>(null);\n const dockDragRef = useRef<\n | null\n | {\n pointerId: number;\n mode: \"dock\" | \"trigger\";\n grabX: number;\n grabY: number;\n moved: boolean;\n startX: number;\n startY: number;\n }\n >(null);\n const triggerDragMovedRef = useRef(false);\n const resolveDockFromTrigger = useCallback(\n (triggerLeft: number, triggerTop: number) => {\n const topCandidate = clampDockPos({ left: triggerLeft, top: triggerTop });\n const bottomCandidate = clampDockPos({\n left: triggerLeft,\n top: triggerTop - TRIGGER_OFFSET_Y,\n });\n\n const topTriggerTop = topCandidate.top;\n const bottomTriggerTop = bottomCandidate.top + TRIGGER_OFFSET_Y;\n const topDelta = Math.abs(topTriggerTop - triggerTop);\n const bottomDelta = Math.abs(bottomTriggerTop - triggerTop);\n const useTop = topDelta <= bottomDelta;\n return {\n dock: useTop ? topCandidate : bottomCandidate,\n triggerAtTop: useTop,\n };\n },\n [TRIGGER_OFFSET_Y, clampDockPos],\n );\n\n const triggerTop = dockPos.top + (triggerAtTop ? 0 : TRIGGER_OFFSET_Y);\n const triggerTooltipAlign = useMemo(() => {\n const vw = window.innerWidth;\n const triggerCenterX = dockPos.left + TRIGGER_SIZE / 2;\n if (triggerCenterX < 100) return \"left\";\n if (triggerCenterX > vw - 100) return \"right\";\n return \"center\";\n }, [dockPos.left, TRIGGER_SIZE]);\n\n const hoverRef = useRef<Element | null>(null);\n const selectedRef = useRef<Element | null>(null);\n const selectedIdentityRef = useRef<ElementIdentity | null>(null);\n const pendingRef = useRef<PendingReorder | null>(null);\n const runtimeChangeRefsRef = useRef<Map<number, RuntimeChangeRefs>>(new Map());\n const dragSessionRef = useRef<DragSession | null>(null);\n const dragHandleRef = useRef<HTMLDivElement | null>(null);\n const panelRef = useRef<PanelState | null>(null);\n const dragMoveRaf = useRef<number | null>(null);\n const pendingDragEv = useRef<PointerEvent | null>(null);\n const forcedCursorTargetRef = useRef<HTMLElement | SVGElement | null>(null);\n const forcedCursorPrevValueRef = useRef<string>(\"\");\n const forcedCursorPrevPriorityRef = useRef<string>(\"\");\n const [rev, setRev] = useState(0);\n const bump = useCallback(() => setRev((n) => n + 1), []);\n\n const [isDragging, setIsDragging] = useState(false);\n const [dragUi, setDragUi] = useState<{ bar: DragBar | null } | null>(null);\n const dragOverlayEmitRef = useRef<{ bar: DragBar | null; zone: DOMRect | null } | null>(\n null,\n );\n const [dropZoneRect, setDropZoneRect] = useState<DOMRect | null>(null);\n const [toast, setToast] = useState<string | null>(null);\n const [pointerPos, setPointerPos] = useState<{ x: number; y: number } | null>(null);\n const [pointerInPage, setPointerInPage] = useState(false);\n\n const [panel, setPanel] = useState<PanelState | null>(null);\n panelRef.current = panel;\n const [promptOpen, setPromptOpen] = useState(false);\n /** When true, summary / pointer-property trays stay hidden until user re-opens from dock or picks an element. */\n const [traysDismissed, setTraysDismissed] = useState(false);\n const [moveSession, setMoveSession] = useState<MoveSession | null>(null);\n const [redoChanges, setRedoChanges] = useState<BatchedChange[]>([]);\n const [badgeTick, setBadgeTick] = useState(0);\n const [isTriggerDragging, setIsTriggerDragging] = useState(false);\n const [toolbarTooltip, setToolbarTooltip] = useState<{\n text: string;\n x: number;\n y: number;\n } | null>(null);\n const [helperTooltip, setHelperTooltip] = useState<{\n text: string;\n x: number;\n y: number;\n } | null>(null);\n const toolbarTooltipDelayRef = useRef<number | null>(null);\n const toolbarTooltipPendingRef = useRef<{ text: string; x: number; y: number } | null>(null);\n\n const framesRef = useRef<FrameRects>({ hover: null, selected: null });\n const [frames, setFrames] = useState<FrameRects>({\n hover: null,\n selected: null,\n });\n\n const readFrames = useCallback((): FrameRects => {\n const hover = hoverRef.current?.getBoundingClientRect() ?? null;\n const selected = selectedRef.current?.getBoundingClientRect() ?? null;\n return { hover, selected };\n }, []);\n\n useLayoutEffect(() => {\n if (!sessionOn || disabled || activeTool !== \"pointer\") return;\n let id = 0;\n const tick = () => {\n // During drag, flex preview mutates sibling layout every frame — polling rects here\n // forces React updates + layout thrash and freezes the main thread.\n if (!dragSessionRef.current) {\n const next = readFrames();\n const prev = framesRef.current;\n if (\n !rectsEqual(next.hover, prev.hover) ||\n !rectsEqual(next.selected, prev.selected)\n ) {\n framesRef.current = next;\n setFrames(next);\n }\n }\n id = requestAnimationFrame(tick);\n };\n id = requestAnimationFrame(tick);\n return () => cancelAnimationFrame(id);\n }, [sessionOn, disabled, activeTool, readFrames]);\n\n useEffect(() => {\n if (!sessionOn || !moveSession?.changes.length) return;\n const tick = () => {\n setBadgeTick((n) => (n + 1) % 100000);\n };\n // Avoid a 60fps rerender loop; badges only need occasional refresh.\n const intervalId = window.setInterval(tick, 250);\n window.addEventListener(\"resize\", tick);\n window.addEventListener(\"scroll\", tick, true);\n return () => {\n window.clearInterval(intervalId);\n window.removeEventListener(\"resize\", tick);\n window.removeEventListener(\"scroll\", tick, true);\n };\n }, [sessionOn, moveSession?.changes.length]);\n\n const disposePending = useCallback((revert: boolean) => {\n const p = pendingRef.current;\n if (!p) return;\n if (revert) p.revert();\n else p.disconnect();\n pendingRef.current = null;\n }, []);\n\n const cancelDrag = useCallback(() => {\n if (dragMoveRaf.current != null) {\n cancelAnimationFrame(dragMoveRaf.current);\n dragMoveRaf.current = null;\n }\n pendingDragEv.current = null;\n const s = dragSessionRef.current;\n if (!s) return;\n dragSessionRef.current = null;\n s.preview.clear();\n (s.dragged as HTMLElement).style.opacity = s.prevOpacity;\n s.ghostEl?.remove();\n s.resumeAnimations();\n try {\n dragHandleRef.current?.releasePointerCapture(s.pointerId);\n } catch {\n /* noop */\n }\n setIsDragging(false);\n dragOverlayEmitRef.current = null;\n setDragUi(null);\n setDropZoneRect(null);\n bump();\n }, [bump]);\n\n const clearSelection = useCallback(() => {\n selectedRef.current = null;\n selectedIdentityRef.current = null;\n hoverRef.current = null;\n framesRef.current = { hover: null, selected: null };\n setFrames({ hover: null, selected: null });\n bump();\n }, [bump]);\n\n const startDockDrag = useCallback(\n (e: React.PointerEvent<HTMLElement>) => {\n if (e.button !== 0) return;\n if (isDragging || dragSessionRef.current) return;\n if (e.target !== e.currentTarget) return;\n e.preventDefault();\n e.stopPropagation();\n\n const dockEl = dockRef.current;\n if (!dockEl) return;\n const rect = dockEl.getBoundingClientRect();\n\n dockDragRef.current = {\n pointerId: e.pointerId,\n mode: \"dock\",\n grabX: e.clientX - rect.left,\n grabY: e.clientY - rect.top,\n moved: false,\n startX: e.clientX,\n startY: e.clientY,\n };\n\n try {\n e.currentTarget.setPointerCapture(e.pointerId);\n } catch {\n /* noop */\n }\n },\n [isDragging],\n );\n\n const onDockDragMove = useCallback(\n (e: React.PointerEvent<HTMLElement>) => {\n const d = dockDragRef.current;\n if (!d || d.pointerId !== e.pointerId || d.mode !== \"dock\") return;\n\n const dist = Math.hypot(e.clientX - d.startX, e.clientY - d.startY);\n if (!d.moved && dist > 4) d.moved = true;\n\n setDockPos(\n clampDockPos({\n left: e.clientX - d.grabX,\n top: e.clientY - d.grabY,\n }),\n );\n },\n [clampDockPos],\n );\n\n const stopDockDrag = useCallback((e: React.PointerEvent<HTMLElement>) => {\n const d = dockDragRef.current;\n if (!d || d.pointerId !== e.pointerId || d.mode !== \"dock\") return;\n dockDragRef.current = null;\n }, []);\n\n const startTriggerDockDrag = useCallback(\n (e: React.PointerEvent<HTMLButtonElement>) => {\n if (e.button !== 0) return;\n if (disabled) return;\n e.preventDefault();\n e.stopPropagation();\n\n const btn = triggerBtnRef.current;\n if (!btn) return;\n const rect = btn.getBoundingClientRect();\n\n triggerDragMovedRef.current = false;\n setIsTriggerDragging(true);\n dockDragRef.current = {\n pointerId: e.pointerId,\n mode: \"trigger\",\n grabX: e.clientX - rect.left,\n grabY: e.clientY - rect.top,\n moved: false,\n startX: e.clientX,\n startY: e.clientY,\n };\n\n try {\n e.currentTarget.setPointerCapture(e.pointerId);\n } catch {\n /* noop */\n }\n },\n [disabled],\n );\n\n const onTriggerDockDragMove = useCallback(\n (e: React.PointerEvent<HTMLButtonElement>) => {\n const d = dockDragRef.current;\n if (!d || d.pointerId !== e.pointerId || d.mode !== \"trigger\") return;\n\n const dist = Math.hypot(e.clientX - d.startX, e.clientY - d.startY);\n if (!d.moved && dist > 4) {\n d.moved = true;\n triggerDragMovedRef.current = true;\n }\n\n const triggerLeft = e.clientX - d.grabX;\n const nextTriggerTop = e.clientY - d.grabY;\n const resolved = resolveDockFromTrigger(triggerLeft, nextTriggerTop);\n setTriggerAtTop(resolved.triggerAtTop);\n setDockPos(resolved.dock);\n },\n [resolveDockFromTrigger],\n );\n\n const stopTriggerDockDrag = useCallback((e: React.PointerEvent<HTMLButtonElement>) => {\n const d = dockDragRef.current;\n if (!d || d.pointerId !== e.pointerId || d.mode !== \"trigger\") return;\n dockDragRef.current = null;\n setIsTriggerDragging(false);\n }, []);\n\n useEffect(() => {\n if (!sessionOn) {\n setActiveTool(\"summary\");\n return;\n }\n if (activeTool === \"pointer\" || !dragSessionRef.current) return;\n cancelDrag();\n }, [sessionOn, activeTool, cancelDrag]);\n\n const appendBatchedChange = useCallback((change: LayoutChange, refs: RuntimeChangeRefs) => {\n setRedoChanges([]);\n setMoveSession((prev) => {\n const base: MoveSession = prev ?? { changes: [], startedAt: Date.now() };\n const nextOrdinal = base.changes.length + 1;\n const capturedAt = Date.now();\n const entry: BatchedChange = {\n ordinal: nextOrdinal,\n change,\n badgeAnchor: change.target,\n capturedAt,\n };\n runtimeChangeRefsRef.current.set(capturedAt, refs);\n const changes = [...base.changes, entry].map((c, i) => ({ ...c, ordinal: i + 1 }));\n if (changes.length > 20) {\n // eslint-disable-next-line no-console\n console.warn(\"[weevar] More than 20 batched changes captured.\");\n }\n return { ...base, changes };\n });\n }, []);\n\n const dismissAllTrays = useCallback(() => {\n setPromptOpen(false);\n setSettingsOpen(false);\n setTraysDismissed(true);\n }, []);\n\n const applyChangeToDom = useCallback((change: LayoutChange, refs?: RuntimeChangeRefs) => {\n if (change.kind === \"reorder\") {\n const parent = refs?.toParent ?? resolveElementIdentity(change.parent);\n const target = refs?.target ?? resolveElementIdentity(change.target);\n if (!parent || !target) return null;\n const ordered = orderAfterMove(parent, target, change.toIndex);\n return createPendingReorder(parent, ordered);\n }\n\n const target = refs?.target ?? resolveElementIdentity(change.target);\n const toParent = refs?.toParent ?? resolveElementIdentity(change.toParent);\n if (!target || !toParent) return null;\n const currentParent = target.parentElement;\n if (!currentParent) return null;\n\n if (currentParent === toParent) {\n const ordered = orderAfterMove(currentParent, target, change.toIndex);\n return createPendingReorder(currentParent, ordered);\n }\n\n const ordered = orderAfterInsert(toParent, target, change.toIndex);\n return createPendingCrossMove(target, currentParent, toParent, ordered);\n }, []);\n\n const applyInverseChangeToDom = useCallback((change: LayoutChange, refs?: RuntimeChangeRefs) => {\n if (change.kind === \"reorder\") {\n const parent = refs?.fromParent ?? resolveElementIdentity(change.parent);\n const target = refs?.target ?? resolveElementIdentity(change.target);\n if (!parent || !target) return null;\n const ordered = orderAfterMove(parent, target, change.fromIndex);\n return createPendingReorder(parent, ordered);\n }\n\n const target = refs?.target ?? resolveElementIdentity(change.target);\n const fromParent = refs?.fromParent ?? resolveElementIdentity(change.fromParent);\n if (!target || !fromParent) return null;\n const currentParent = target.parentElement;\n if (!currentParent) return null;\n\n if (currentParent === fromParent) {\n const ordered = orderAfterMove(fromParent, target, change.fromIndex);\n return createPendingReorder(fromParent, ordered);\n }\n\n const ordered = orderAfterInsert(fromParent, target, change.fromIndex);\n return createPendingCrossMove(target, currentParent, fromParent, ordered);\n }, []);\n\n const clearMoveSession = useCallback(() => {\n // Delete should fully restore the live page state from before this session,\n // so roll back all captured changes in reverse order.\n disposePending(false);\n if (moveSession?.changes.length) {\n for (let i = moveSession.changes.length - 1; i >= 0; i--) {\n const entry = moveSession.changes[i];\n if (!entry) continue;\n const refs = runtimeChangeRefsRef.current.get(entry.capturedAt);\n const rollback = applyInverseChangeToDom(entry.change, refs);\n rollback?.disconnect();\n }\n }\n pendingRef.current = null;\n runtimeChangeRefsRef.current.clear();\n setMoveSession(null);\n setRedoChanges([]);\n setPanel(null);\n }, [applyInverseChangeToDom, disposePending, moveSession]);\n\n const undoLastMove = useCallback(() => {\n setMoveSession((prev) => {\n if (!prev?.changes.length) return null;\n const undone = prev.changes[prev.changes.length - 1];\n const refs = runtimeChangeRefsRef.current.get(undone.capturedAt);\n disposePending(false);\n pendingRef.current = applyInverseChangeToDom(undone.change, refs);\n setRedoChanges((redo) => [...redo, undone]);\n const rest = prev.changes.slice(0, -1).map((c, i) => ({ ...c, ordinal: i + 1 }));\n if (!rest.length) {\n setPanel(null);\n return null;\n }\n return { ...prev, changes: rest };\n });\n dismissAllTrays();\n }, [applyInverseChangeToDom, dismissAllTrays, disposePending]);\n\n const redoLastMove = useCallback(() => {\n setRedoChanges((prevRedo) => {\n if (!prevRedo.length) return prevRedo;\n const restored = prevRedo[prevRedo.length - 1];\n const refs = runtimeChangeRefsRef.current.get(restored.capturedAt);\n disposePending(false);\n pendingRef.current = applyChangeToDom(restored.change, refs);\n setMoveSession((prevSession) => {\n const base: MoveSession = prevSession ?? { changes: [], startedAt: Date.now() };\n const changes = [...base.changes, restored].map((c, i) => ({ ...c, ordinal: i + 1 }));\n return { ...base, changes };\n });\n return prevRedo.slice(0, -1);\n });\n dismissAllTrays();\n }, [applyChangeToDom, dismissAllTrays, disposePending]);\n\n const generateFromBatch = useCallback(\n (tool: TargetTool, len: PromptLength) => {\n setTraysDismissed(false);\n setPromptOpen(true);\n const s = moveSession;\n if (!s?.changes.length) {\n setPanel(null);\n return;\n }\n const effectiveSession = compressSessionForPrompt(s);\n const prompt = generateBatchedPrompt(effectiveSession, { targetTool: tool });\n if (!prompt) {\n setPanel(null);\n return;\n }\n const last = effectiveSession.changes[effectiveSession.changes.length - 1];\n setPanel({\n change: last.change,\n prompt,\n len,\n tool,\n copyFlash: false,\n mode: \"batched\",\n });\n },\n [moveSession],\n );\n\n useEffect(() => {\n if (!sessionOn) {\n setTraysDismissed(false);\n setRedoChanges([]);\n }\n }, [sessionOn]);\n\n const commitDrag = useCallback(() => {\n const s = dragSessionRef.current;\n if (!s) return;\n const {\n dragged,\n sourceParent,\n dropParent,\n fromIndex,\n dropIndex,\n preview,\n resumeAnimations,\n prevOpacity,\n pointerId,\n ghostEl,\n } = s;\n dragSessionRef.current = null;\n preview.clear();\n (dragged as HTMLElement).style.opacity = prevOpacity;\n ghostEl?.remove();\n resumeAnimations();\n try {\n dragHandleRef.current?.releasePointerCapture(pointerId);\n } catch {\n /* noop */\n }\n setIsDragging(false);\n dragOverlayEmitRef.current = null;\n setDragUi(null);\n setDropZoneRect(null);\n if (dragMoveRaf.current != null) {\n cancelAnimationFrame(dragMoveRaf.current);\n dragMoveRaf.current = null;\n }\n pendingDragEv.current = null;\n\n if (dropParent === sourceParent && dropIndex === fromIndex) {\n bump();\n return;\n }\n\n // Prevent observer accumulation across multiple drops.\n disposePending(false);\n\n let change: LayoutChange;\n if (dropParent === sourceParent) {\n const ordered = orderAfterMove(sourceParent, dragged, dropIndex);\n pendingRef.current = createPendingReorder(sourceParent, ordered);\n change = buildReorderLayoutChange(\n sourceParent,\n dragged,\n fromIndex,\n dropIndex,\n ordered,\n );\n } else {\n const ordered = orderAfterInsert(dropParent, dragged, dropIndex);\n pendingRef.current = createPendingCrossMove(dragged, sourceParent, dropParent, ordered);\n change = buildMoveLayoutChange(\n dragged,\n sourceParent,\n dropParent,\n fromIndex,\n dropIndex,\n ordered,\n );\n }\n appendBatchedChange(change, {\n target: dragged,\n fromParent: sourceParent,\n toParent: dropParent,\n });\n selectedRef.current = null;\n selectedIdentityRef.current = null;\n bump();\n }, [appendBatchedChange, bump, disposePending]);\n\n useEffect(() => {\n if (!sessionOn) {\n hoverRef.current = null;\n cancelDrag();\n setToast(null);\n }\n }, [sessionOn, cancelDrag]);\n\n useEffect(() => {\n if (!sessionOn || disabled || activeTool !== \"pointer\" || promptOpen || isDragging) return;\n const id = window.setInterval(() => {\n const el = selectedRef.current;\n const ident = selectedIdentityRef.current;\n if (!el || !ident) return;\n if (document.contains(el)) return;\n const next = resolveElementIdentity(ident);\n if (next) {\n selectedRef.current = next;\n bump();\n } else {\n selectedRef.current = null;\n selectedIdentityRef.current = null;\n setToast(\"Selection lost after re-render\");\n bump();\n }\n }, 400);\n return () => window.clearInterval(id);\n }, [sessionOn, disabled, activeTool, promptOpen, isDragging, bump]);\n\n useEffect(() => {\n if (!toast) return;\n const t = window.setTimeout(() => setToast(null), 2200);\n return () => window.clearTimeout(t);\n }, [toast]);\n\n useEffect(() => {\n if (!sessionOn) return;\n const key = \"__weevarHistoryPatched__\";\n const win = window as Window & { [key: string]: boolean };\n const onNav = () => {\n setMoveSession((prev) => {\n if (!prev?.changes.length) return prev;\n setPanel(null);\n setToast(\"Session cleared on navigation.\");\n return null;\n });\n };\n window.addEventListener(\"popstate\", onNav);\n window.addEventListener(\"hashchange\", onNav);\n if (!win[key]) {\n win[key] = true;\n const origPush = history.pushState.bind(history);\n const origReplace = history.replaceState.bind(history);\n history.pushState = function (...args) {\n origPush(...args);\n window.dispatchEvent(new Event(\"popstate\"));\n };\n history.replaceState = function (...args) {\n origReplace(...args);\n window.dispatchEvent(new Event(\"popstate\"));\n };\n }\n return () => {\n window.removeEventListener(\"popstate\", onNav);\n window.removeEventListener(\"hashchange\", onNav);\n };\n }, [sessionOn]);\n\n useEffect(() => {\n if (!sessionOn || disabled || activeTool !== \"pointer\") return;\n const clearForcedCursorTarget = () => {\n const prev = forcedCursorTargetRef.current;\n if (!prev) return;\n if (forcedCursorPrevValueRef.current) {\n prev.style.setProperty(\n \"cursor\",\n forcedCursorPrevValueRef.current,\n forcedCursorPrevPriorityRef.current || \"\",\n );\n } else {\n prev.style.removeProperty(\"cursor\");\n }\n forcedCursorTargetRef.current = null;\n forcedCursorPrevValueRef.current = \"\";\n forcedCursorPrevPriorityRef.current = \"\";\n };\n\n const forceCursorOnTarget = (target: Element | null) => {\n const el =\n target instanceof HTMLElement || target instanceof SVGElement ? target : null;\n if (el === forcedCursorTargetRef.current) return;\n clearForcedCursorTarget();\n if (!el) return;\n forcedCursorTargetRef.current = el;\n forcedCursorPrevValueRef.current = el.style.getPropertyValue(\"cursor\");\n forcedCursorPrevPriorityRef.current = el.style.getPropertyPriority(\"cursor\");\n el.style.setProperty(\"cursor\", POINTER_CURSOR_DATA_URI, \"important\");\n };\n\n const onPointerMove = (e: PointerEvent) => {\n const overChrome = pointerOverWeevarChrome(e);\n if (!overChrome) {\n forceCursorOnTarget(document.elementFromPoint(e.clientX, e.clientY));\n } else {\n clearForcedCursorTarget();\n }\n setPointerInPage(true);\n setPointerPos({ x: e.clientX, y: e.clientY });\n if (dragSessionRef.current) return;\n if (promptOpen) return;\n if (overChrome) {\n if (hoverRef.current !== null) {\n hoverRef.current = null;\n bump();\n }\n return;\n }\n const el = hitTestHostPage(e.clientX, e.clientY);\n if (el !== hoverRef.current) {\n hoverRef.current = el;\n bump();\n }\n };\n\n const onPointerDownCapture = (e: PointerEvent) => {\n if (dragSessionRef.current) return;\n if (promptOpen) return;\n if (pointerOverWeevarChrome(e)) return;\n const el = hitTestHostPage(e.clientX, e.clientY);\n if (!el) {\n selectedRef.current = null;\n selectedIdentityRef.current = null;\n e.preventDefault();\n e.stopPropagation();\n bump();\n return;\n }\n selectedRef.current = el;\n selectedIdentityRef.current = buildElementIdentity(el);\n setTraysDismissed(false);\n e.preventDefault();\n e.stopPropagation();\n bump();\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== \"Escape\") return;\n const t = e.target;\n if (t instanceof HTMLElement) {\n if (t.tagName === \"INPUT\" || t.tagName === \"TEXTAREA\" || t.isContentEditable)\n return;\n }\n if (promptOpen) {\n e.preventDefault();\n e.stopPropagation();\n dismissAllTrays();\n setPanel(null);\n bump();\n return;\n }\n if (dragSessionRef.current) {\n e.preventDefault();\n e.stopPropagation();\n cancelDrag();\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n if (selectedRef.current) {\n selectedRef.current = null;\n selectedIdentityRef.current = null;\n bump();\n return;\n }\n setSessionOn(false);\n };\n\n document.addEventListener(\"pointermove\", onPointerMove, {\n capture: true,\n passive: true,\n });\n document.addEventListener(\"pointerdown\", onPointerDownCapture, {\n capture: true,\n passive: false,\n });\n document.addEventListener(\"keydown\", onKeyDown, { capture: true });\n const onWindowMouseLeave = () => {\n setPointerInPage(false);\n setPointerPos(null);\n };\n const onWindowBlur = () => {\n setPointerInPage(false);\n setPointerPos(null);\n };\n const onWindowMouseEnter = () => {\n setPointerInPage(true);\n };\n window.addEventListener(\"mouseleave\", onWindowMouseLeave, true);\n window.addEventListener(\"blur\", onWindowBlur, true);\n window.addEventListener(\"mouseenter\", onWindowMouseEnter, true);\n\n return () => {\n clearForcedCursorTarget();\n setPointerInPage(false);\n setPointerPos(null);\n document.removeEventListener(\"pointermove\", onPointerMove, {\n capture: true,\n });\n document.removeEventListener(\"pointerdown\", onPointerDownCapture, {\n capture: true,\n });\n document.removeEventListener(\"keydown\", onKeyDown, { capture: true });\n window.removeEventListener(\"mouseleave\", onWindowMouseLeave, true);\n window.removeEventListener(\"blur\", onWindowBlur, true);\n window.removeEventListener(\"mouseenter\", onWindowMouseEnter, true);\n };\n }, [\n sessionOn,\n disabled,\n activeTool,\n setSessionOn,\n bump,\n promptOpen,\n cancelDrag,\n setTraysDismissed,\n dismissAllTrays,\n ]);\n\n useEffect(() => {\n if (!(sessionOn && activeTool === \"pointer\")) {\n document.body.style.removeProperty(\"cursor\");\n document.documentElement.style.removeProperty(\"cursor\");\n const lock = document.getElementById(\"__weevar_pointer_cursor_lock__\");\n lock?.remove();\n return;\n }\n const prevBody = document.body.style.cursor;\n const prevRoot = document.documentElement.style.cursor;\n document.body.style.cursor = POINTER_CURSOR_DATA_URI;\n document.documentElement.style.cursor = POINTER_CURSOR_DATA_URI;\n const style = document.createElement(\"style\");\n style.id = \"__weevar_pointer_cursor_lock__\";\n style.textContent = `html,\nbody,\nbody *,\nbody *::before,\nbody *::after,\nbody *:hover,\nbody *:active,\nbody *:focus {\n cursor: ${POINTER_CURSOR_DATA_URI} !important;\n}`;\n const ensureLast = () => {\n if (document.head.lastElementChild !== style) document.head.appendChild(style);\n };\n ensureLast();\n const observer = new MutationObserver(ensureLast);\n observer.observe(document.head, { childList: true });\n return () => {\n document.body.style.cursor = prevBody;\n document.documentElement.style.cursor = prevRoot;\n observer.disconnect();\n style.remove();\n };\n }, [sessionOn, activeTool]);\n\n useEffect(() => {\n if (!isDragging) return;\n\n const flushDrag = () => {\n dragMoveRaf.current = null;\n const ev = pendingDragEv.current;\n pendingDragEv.current = null;\n if (!ev) return;\n const s = dragSessionRef.current;\n if (!s) return;\n ev.preventDefault();\n ev.stopPropagation();\n const { dragged, sourceParent, preview } = s;\n if (s.ghostEl) {\n s.ghostEl.style.left = `${ev.clientX - s.grabOffsetX}px`;\n s.ghostEl.style.top = `${ev.clientY - s.grabOffsetY}px`;\n }\n autoScrollForPoint(ev.clientX, ev.clientY);\n // Host already uses pointer-events:none — visibility toggle every frame was forcing layouts.\n const hit = hitTestHostPage(ev.clientX, ev.clientY);\n const dropParent = findDropParent(hit, dragged) ?? sourceParent;\n const dropIndex = computeDropIndex(dropParent, dragged, ev.clientX, ev.clientY);\n s.dropParent = dropParent;\n s.dropIndex = dropIndex;\n\n const ordered =\n dropParent === sourceParent\n ? orderAfterMove(sourceParent, dragged, dropIndex)\n : orderAfterInsert(dropParent, dragged, dropIndex);\n\n if (dropParent === sourceParent && parentSupportsFlexOrderPreview(sourceParent)) {\n preview.apply(ordered);\n } else {\n preview.clear();\n }\n\n const cs = getComputedStyle(dropParent);\n const row =\n cs.display.includes(\"flex\") &&\n [\"row\", \"row-reverse\"].includes(cs.flexDirection || \"\");\n const insertIdx = ordered.indexOf(dragged);\n const bar = insertionBarBetween(ordered, insertIdx, row);\n\n const nextZone =\n dropParent === sourceParent ? null : dropParent.getBoundingClientRect();\n const prevEmit = dragOverlayEmitRef.current;\n if (\n prevEmit === null ||\n !sameDragBar(prevEmit.bar, bar) ||\n !sameDropZoneRect(prevEmit.zone, nextZone)\n ) {\n dragOverlayEmitRef.current = { bar, zone: nextZone };\n setDragUi({ bar });\n setDropZoneRect(nextZone);\n }\n };\n\n const onMove = (e: PointerEvent) => {\n const s = dragSessionRef.current;\n if (!s) return;\n e.preventDefault();\n e.stopPropagation();\n pendingDragEv.current = e;\n if (dragMoveRaf.current != null) return;\n dragMoveRaf.current = requestAnimationFrame(flushDrag);\n };\n\n const onUp = (e: PointerEvent) => {\n const s = dragSessionRef.current;\n if (!s) return;\n e.preventDefault();\n e.stopPropagation();\n pendingDragEv.current = e;\n if (dragMoveRaf.current != null) {\n cancelAnimationFrame(dragMoveRaf.current);\n dragMoveRaf.current = null;\n }\n flushDrag();\n commitDrag();\n };\n\n document.addEventListener(\"pointermove\", onMove, { capture: true, passive: false });\n document.addEventListener(\"pointerup\", onUp, { capture: true, passive: false });\n document.addEventListener(\"pointercancel\", onUp, { capture: true, passive: false });\n\n return () => {\n document.removeEventListener(\"pointermove\", onMove, { capture: true });\n document.removeEventListener(\"pointerup\", onUp, { capture: true });\n document.removeEventListener(\"pointercancel\", onUp, { capture: true });\n if (dragMoveRaf.current != null) cancelAnimationFrame(dragMoveRaf.current);\n dragMoveRaf.current = null;\n pendingDragEv.current = null;\n };\n }, [isDragging, commitDrag]);\n\n const startDrag = useCallback(\n (e: React.PointerEvent) => {\n if (activeTool !== \"pointer\") return;\n if (panel) return;\n const dragged = selectedRef.current;\n const parent = dragged?.parentElement;\n if (!dragged || !parent) return;\n e.preventDefault();\n e.stopPropagation();\n\n const hel = dragged as HTMLElement;\n const dragRect = hel.getBoundingClientRect();\n const prevOpacity = hel.style.opacity;\n hel.style.opacity = \"0.3\";\n const ghostEl = hel.cloneNode(true) as HTMLElement;\n ghostEl.style.position = \"fixed\";\n ghostEl.style.left = `${dragRect.left}px`;\n ghostEl.style.top = `${dragRect.top}px`;\n ghostEl.style.width = `${dragRect.width}px`;\n ghostEl.style.height = `${dragRect.height}px`;\n ghostEl.style.margin = \"0\";\n ghostEl.style.pointerEvents = \"none\";\n ghostEl.style.opacity = \"0.55\";\n ghostEl.style.zIndex = \"2147483646\";\n ghostEl.style.transform = \"none\";\n ghostEl.style.transition = \"none\";\n ghostEl.style.boxSizing = \"border-box\";\n ghostEl.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(ghostEl);\n\n const preview = new FlexOrderPreview();\n const resume = pushPauseHostAnimations();\n const fromIndex = elementChildren(parent).indexOf(dragged);\n\n dragSessionRef.current = {\n dragged,\n sourceParent: parent,\n dropParent: parent,\n dropIndex: fromIndex,\n fromIndex,\n preview,\n resumeAnimations: resume,\n prevOpacity,\n pointerId: e.pointerId,\n ghostEl,\n grabOffsetX: e.clientX - dragRect.left,\n grabOffsetY: e.clientY - dragRect.top,\n };\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n dragOverlayEmitRef.current = null;\n setIsDragging(true);\n setDragUi({ bar: null });\n setDropZoneRect(null);\n bump();\n },\n [activeTool, bump, panel],\n );\n\n const selectedEl = selectedRef.current;\n const hoverEl = hoverRef.current;\n\n const pointerSelectionInfo = useMemo<PointerSelectionInfo | null>(() => {\n if (!selectedEl || promptOpen || activeTool !== \"pointer\") return null;\n const p = selectedEl.parentElement;\n if (!p) return null;\n return {\n path: buildAncestorPath(selectedEl),\n };\n }, [selectedEl, promptOpen, rev, activeTool]);\n\n const pointerPathDisplay = useMemo(() => {\n if (!pointerSelectionInfo) return \"\";\n return pointerSelectionInfo.path.replaceAll(\">\", \"›\");\n }, [pointerSelectionInfo]);\n\n const pointerCssProps = useMemo(() => {\n if (!selectedEl || activeTool !== \"pointer\") return [] as Array<{ key: string; value: string }>;\n const cs = window.getComputedStyle(selectedEl);\n const tag = selectedEl.tagName.toLowerCase();\n const hasDirectReadableText = Array.from(selectedEl.childNodes).some(\n (node) => node.nodeType === Node.TEXT_NODE && (node.textContent ?? \"\").trim().length > 0,\n );\n const isTextLikeTag = [\n \"p\",\n \"span\",\n \"a\",\n \"label\",\n \"small\",\n \"strong\",\n \"em\",\n \"b\",\n \"i\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"li\",\n \"blockquote\",\n \"code\",\n \"pre\",\n \"button\",\n \"input\",\n \"textarea\",\n ].includes(tag);\n const isTextSelection = isTextLikeTag || hasDirectReadableText;\n\n const textKeys = [\n \"color\",\n \"font-size\",\n \"font-weight\",\n \"font-family\",\n \"line-height\",\n \"letter-spacing\",\n \"text-align\",\n \"text-transform\",\n \"text-decoration-line\",\n \"text-decoration-color\",\n \"white-space\",\n ];\n const visualKeys = [\n \"background-color\",\n \"color\",\n \"border-color\",\n \"border-width\",\n \"border-radius\",\n \"box-shadow\",\n \"opacity\",\n \"display\",\n \"position\",\n \"width\",\n \"height\",\n \"padding\",\n \"margin\",\n ];\n const keys = isTextSelection ? textKeys : visualKeys;\n return keys\n .map((key) => ({ key, value: cs.getPropertyValue(key).trim() }))\n .filter((entry) => entry.value.length > 0 && entry.value !== \"normal\");\n }, [selectedEl, activeTool, rev]);\n\n\n const visibleBadges = useMemo((): BadgeRender[] => {\n void badgeTick;\n const changes = moveSession?.changes ?? [];\n if (!changes.length) return [];\n const latest = new Map<string, BatchedChange>();\n for (const c of changes) latest.set(identityBadgeKey(c.change.target), c);\n const out: BadgeRender[] = [];\n for (const c of latest.values()) {\n const el = resolveElementIdentity(c.badgeAnchor);\n if (!el) continue;\n out.push({ ordinal: c.ordinal, displayOrdinal: 0, rect: el.getBoundingClientRect() });\n }\n out.sort((a, b) => a.ordinal - b.ordinal);\n return out.map((b, i) => ({ ...b, displayOrdinal: i + 1 }));\n }, [moveSession, badgeTick]);\n\n const movedElementCount = useMemo(() => {\n const changes = moveSession?.changes ?? [];\n if (!changes.length) return 0;\n const unique = new Set<string>();\n for (const c of changes) unique.add(identityBadgeKey(c.change.target));\n return unique.size;\n }, [moveSession]);\n const selectedToolLabel = useMemo(() => {\n if (settingsTool === \"claude-code\") return \"Claude Code\";\n if (settingsTool === \"codex\") return \"Codex\";\n return \"Generic\";\n }, [settingsTool]);\n const pendingMoveCount = movedElementCount;\n const isSettingsActive = settingsOpen;\n const isPromptActive = promptOpen && !settingsOpen;\n const isSummaryActive = activeTool === \"summary\" && !isSettingsActive && !isPromptActive;\n const isPointerActive = activeTool === \"pointer\" && !isSettingsActive && !isPromptActive;\n const showSettingsTray = settingsOpen;\n const showPromptTray = promptOpen && !showSettingsTray;\n const showSummaryTray =\n !traysDismissed &&\n !showPromptTray &&\n !showSettingsTray &&\n (activeTool === \"summary\" || (activeTool === \"pointer\" && pointerSelectionInfo));\n const trayAnyOpen = showSummaryTray || showSettingsTray || showPromptTray;\n const trayStyle = useMemo((): CSSProperties => {\n const trayWidth = 250;\n const gap = 8;\n const minLeft = 8;\n const maxLeft = Math.max(minLeft, window.innerWidth - trayWidth - 8);\n const leftCandidate = dockPos.left - trayWidth - gap;\n const left =\n leftCandidate >= minLeft\n ? Math.min(leftCandidate, maxLeft)\n : Math.min(Math.max(dockPos.left + DOCK_WIDTH + gap, minLeft), maxLeft);\n return {\n left,\n top: dockPos.top,\n right: \"auto\",\n bottom: \"auto\",\n };\n }, [dockPos, DOCK_WIDTH]);\n\n const placeToolbarTooltip = useCallback((text: string, clientX: number, clientY: number) => {\n const estimatedWidth = Math.max(56, text.length * 6 + 16);\n // Keep tooltip away from tray direction:\n // on left half of viewport, render tooltip to the left of cursor; otherwise to the right.\n const placeLeft = clientX < window.innerWidth / 2;\n const rawX = placeLeft ? clientX - estimatedWidth + 2 : clientX + 6;\n const x = Math.min(Math.max(4, rawX), window.innerWidth - estimatedWidth - 4);\n const y = Math.min(Math.max(4, clientY + 16), window.innerHeight - 28);\n return { text, x, y };\n }, []);\n\n const scheduleToolbarTooltip = useCallback((text: string, clientX: number, clientY: number, delayMs = 1600) => {\n const pending = placeToolbarTooltip(text, clientX, clientY);\n toolbarTooltipPendingRef.current = pending;\n if (toolbarTooltipDelayRef.current != null) window.clearTimeout(toolbarTooltipDelayRef.current);\n toolbarTooltipDelayRef.current = window.setTimeout(() => {\n if (toolbarTooltipPendingRef.current) {\n setToolbarTooltip(toolbarTooltipPendingRef.current);\n }\n toolbarTooltipDelayRef.current = null;\n }, delayMs);\n }, [placeToolbarTooltip]);\n\n const showToolbarTooltip = useCallback((text: string, e: React.MouseEvent<HTMLElement>, delayMs = 1600) => {\n scheduleToolbarTooltip(text, e.clientX, e.clientY, delayMs);\n }, [scheduleToolbarTooltip]);\n\n const moveToolbarTooltip = useCallback((text: string, e: React.MouseEvent<HTMLElement>) => {\n const next = placeToolbarTooltip(text, e.clientX, e.clientY);\n toolbarTooltipPendingRef.current = next;\n setToolbarTooltip((prev) => {\n if (!prev || prev.text !== text) {\n return prev;\n }\n return { ...prev, x: next.x, y: next.y };\n });\n }, [placeToolbarTooltip]);\n\n const showToolbarTooltipFromPointer = useCallback((\n text: string,\n e: React.PointerEvent<HTMLElement>,\n delayMs = 1600,\n ) => {\n scheduleToolbarTooltip(text, e.clientX, e.clientY, delayMs);\n }, [scheduleToolbarTooltip]);\n\n const moveToolbarTooltipFromPointer = useCallback((text: string, e: React.PointerEvent<HTMLElement>) => {\n const next = placeToolbarTooltip(text, e.clientX, e.clientY);\n toolbarTooltipPendingRef.current = next;\n setToolbarTooltip((prev) => {\n if (!prev || prev.text !== text) return prev;\n return { ...prev, x: next.x, y: next.y };\n });\n }, [placeToolbarTooltip]);\n\n const hideToolbarTooltip = useCallback(() => {\n if (toolbarTooltipDelayRef.current != null) {\n window.clearTimeout(toolbarTooltipDelayRef.current);\n toolbarTooltipDelayRef.current = null;\n }\n toolbarTooltipPendingRef.current = null;\n setToolbarTooltip(null);\n }, []);\n\n useEffect(() => {\n // Prevent stale delayed tooltip state when toggling trigger <-> toolbar UI.\n hideToolbarTooltip();\n }, [sessionOn, hideToolbarTooltip]);\n\n const showHelperTooltip = useCallback((text: string, el: HTMLElement) => {\n const r = el.getBoundingClientRect();\n setHelperTooltip({\n text,\n x: r.right + 8,\n y: r.top + r.height / 2,\n });\n }, []);\n\n const hideHelperTooltip = useCallback(() => {\n setHelperTooltip(null);\n }, []);\n\n useEffect(() => {\n if (!sessionOn) return;\n const onShortcut = (e: KeyboardEvent) => {\n if (e.defaultPrevented) return;\n if (e.metaKey || e.ctrlKey || e.altKey) return;\n const t = e.target;\n if (t instanceof HTMLElement) {\n if (t.tagName === \"INPUT\" || t.tagName === \"TEXTAREA\" || t.isContentEditable) return;\n }\n\n const k = e.key.toLowerCase();\n if (k === \"escape\") {\n e.preventDefault();\n e.stopPropagation();\n cancelDrag();\n setSessionOn(false);\n return;\n }\n if (k === \"p\") {\n e.preventDefault();\n e.stopPropagation();\n setTraysDismissed(false);\n setSettingsOpen(false);\n generateFromBatch(settingsTool, settingsLen);\n return;\n }\n if (k === \"w\") {\n e.preventDefault();\n e.stopPropagation();\n setTraysDismissed(false);\n setActiveTool(\"pointer\");\n setPanel(null);\n setSettingsOpen(false);\n setPromptOpen(false);\n return;\n }\n if (k === \"o\") {\n e.preventDefault();\n e.stopPropagation();\n setTraysDismissed(false);\n setActiveTool(\"summary\");\n setPanel(null);\n setSettingsOpen(false);\n setPromptOpen(false);\n return;\n }\n if (k === \"d\") {\n e.preventDefault();\n e.stopPropagation();\n clearMoveSession();\n clearSelection();\n dismissAllTrays();\n return;\n }\n if (k === \"u\") {\n e.preventDefault();\n e.stopPropagation();\n undoLastMove();\n return;\n }\n if (k === \"r\") {\n e.preventDefault();\n e.stopPropagation();\n redoLastMove();\n }\n };\n\n document.addEventListener(\"keydown\", onShortcut, { capture: true });\n return () => {\n document.removeEventListener(\"keydown\", onShortcut, { capture: true });\n };\n }, [\n sessionOn,\n cancelDrag,\n setSessionOn,\n generateFromBatch,\n settingsTool,\n settingsLen,\n clearMoveSession,\n clearSelection,\n dismissAllTrays,\n undoLastMove,\n redoLastMove,\n ]);\n\n return (\n <>\n <style>{OVERLAY_CSS}</style>\n <div className=\"wv-root\" aria-hidden={!sessionOn}>\n {!sessionOn ? (\n <>\n <button\n type=\"button\"\n className=\"wv-tool-button wv-pe\"\n data-tooltip=\"Activate Weevar (⌘⇧E)\"\n data-tooltip-align={triggerTooltipAlign}\n data-tooltip-suppress={isTriggerDragging ? \"true\" : \"false\"}\n aria-label=\"Activate Weevar overlay\"\n disabled={disabled}\n ref={triggerBtnRef}\n onClick={() => {\n if (disabled) return;\n if (triggerDragMovedRef.current) {\n triggerDragMovedRef.current = false;\n return;\n }\n setSessionOn(true);\n }}\n onPointerDown={startTriggerDockDrag}\n onPointerMove={onTriggerDockDragMove}\n onPointerUp={stopTriggerDockDrag}\n onPointerCancel={stopTriggerDockDrag}\n style={{\n left: dockPos.left,\n top: triggerTop,\n right: \"auto\",\n bottom: \"auto\",\n }}\n >\n <LogomarkIcon className=\"wv-tool-button-logo\" />\n {pendingMoveCount > 0 ? (\n <span className=\"wv-tool-button-badge\" aria-label={`${pendingMoveCount} pending moves`}>\n {pendingMoveCount}\n </span>\n ) : null}\n </button>\n </>\n ) : (\n <>\n <div\n className=\"wv-dock\"\n ref={dockRef}\n style={{\n left: dockPos.left,\n top: dockPos.top,\n right: \"auto\",\n bottom: \"auto\",\n }}\n >\n {triggerAtTop ? (\n <button\n type=\"button\"\n className=\"wv-toolbar-close\"\n aria-label=\"Close overlay\"\n onMouseEnter={(e) => showToolbarTooltip(\"Close (Esc)\", e)}\n onMouseMove={(e) => moveToolbarTooltip(\"Close (Esc)\", e)}\n onMouseLeave={hideToolbarTooltip}\n onClick={() => {\n cancelDrag();\n setSessionOn(false);\n }}\n >\n <CloseIcon />\n </button>\n ) : null}\n <div\n className=\"wv-toolbar\"\n onPointerDown={startDockDrag}\n onPointerMove={onDockDragMove}\n onPointerUp={stopDockDrag}\n onPointerCancel={stopDockDrag}\n >\n <button\n type=\"button\"\n className={`wv-tool-icon ${isSummaryActive ? \"wv-tool-icon-on\" : \"\"}`}\n onMouseEnter={(e) => showToolbarTooltip(\"Overview (O)\", e)}\n onMouseMove={(e) => moveToolbarTooltip(\"Overview (O)\", e)}\n onMouseLeave={hideToolbarTooltip}\n onClick={() => {\n setTraysDismissed(false);\n setActiveTool(\"summary\");\n setPanel(null);\n setSettingsOpen(false);\n setPromptOpen(false);\n }}\n >\n <LogomarkIcon />\n </button>\n <button\n type=\"button\"\n className={`wv-tool-icon ${isPointerActive ? \"wv-tool-icon-on\" : \"\"}`}\n onMouseEnter={(e) => showToolbarTooltip(\"Pointer (W)\", e)}\n onMouseMove={(e) => moveToolbarTooltip(\"Pointer (W)\", e)}\n onMouseLeave={hideToolbarTooltip}\n onClick={() => {\n setTraysDismissed(false);\n setActiveTool(\"pointer\");\n setPanel(null);\n setSettingsOpen(false);\n setPromptOpen(false);\n }}\n >\n <PointerIcon />\n </button>\n <button\n type=\"button\"\n className={`wv-tool-icon ${isPromptActive ? \"wv-tool-icon-on\" : \"\"}`}\n onMouseEnter={(e) => showToolbarTooltip(\"Prompt (P)\", e)}\n onMouseMove={(e) => moveToolbarTooltip(\"Prompt (P)\", e)}\n onMouseLeave={hideToolbarTooltip}\n onClick={() => {\n setTraysDismissed(false);\n setSettingsOpen(false);\n generateFromBatch(settingsTool, settingsLen);\n }}\n >\n <PromptIcon />\n </button>\n <button\n type=\"button\"\n className=\"wv-tool-icon\"\n onMouseEnter={(e) => showToolbarTooltip(\"Undo (U)\", e)}\n onMouseMove={(e) => moveToolbarTooltip(\"Undo (U)\", e)}\n onMouseLeave={hideToolbarTooltip}\n disabled={!((moveSession?.changes.length ?? 0) > 0)}\n onClick={undoLastMove}\n >\n <UndoIcon />\n </button>\n <button\n type=\"button\"\n className=\"wv-tool-icon\"\n onMouseEnter={(e) => showToolbarTooltip(\"Redo (R)\", e)}\n onMouseMove={(e) => moveToolbarTooltip(\"Redo (R)\", e)}\n onMouseLeave={hideToolbarTooltip}\n disabled={redoChanges.length === 0}\n onClick={redoLastMove}\n >\n <RedoIcon />\n </button>\n <button\n type=\"button\"\n className=\"wv-tool-icon\"\n onMouseEnter={(e) => showToolbarTooltip(\"Delete (D)\", e)}\n onMouseMove={(e) => moveToolbarTooltip(\"Delete (D)\", e)}\n onMouseLeave={hideToolbarTooltip}\n disabled={!((moveSession?.changes.length ?? 0) > 0 || !!selectedEl)}\n onClick={() => {\n clearMoveSession();\n clearSelection();\n dismissAllTrays();\n }}\n >\n <TrashIcon />\n </button>\n <button\n type=\"button\"\n className={`wv-tool-icon ${isSettingsActive ? \"wv-tool-icon-on\" : \"\"}`}\n onMouseEnter={(e) => showToolbarTooltip(\"Settings\", e)}\n onMouseMove={(e) => moveToolbarTooltip(\"Settings\", e)}\n onMouseLeave={hideToolbarTooltip}\n onClick={() => {\n setTraysDismissed(false);\n setActiveTool(\"summary\");\n setPanel(null);\n setSettingsOpen(true);\n setPromptOpen(false);\n }}\n >\n <SettingsIcon />\n </button>\n </div>\n {!triggerAtTop ? (\n <button\n type=\"button\"\n className=\"wv-toolbar-close\"\n aria-label=\"Close overlay\"\n onMouseEnter={(e) => showToolbarTooltip(\"Close (Esc)\", e)}\n onMouseMove={(e) => moveToolbarTooltip(\"Close (Esc)\", e)}\n onMouseLeave={hideToolbarTooltip}\n onClick={() => {\n cancelDrag();\n setSessionOn(false);\n }}\n >\n <CloseIcon />\n </button>\n ) : null}\n </div>\n\n {trayAnyOpen ? (\n <div className=\"wv-tray-stack\" style={trayStyle}>\n <div\n className={`wv-tray-stack-layer${showSummaryTray ? \" wv-tray-stack-layer--visible\" : \"\"}`}\n aria-hidden={!showSummaryTray}\n >\n <aside className=\"wv-summary-tray wv-pe\" aria-hidden={!showSummaryTray}>\n <div className=\"wv-tray-head\">\n <WeevarWordmarkIcon />\n <button\n type=\"button\"\n className=\"wv-tray-hide-btn\"\n aria-label=\"Hide tray\"\n onClick={dismissAllTrays}\n >\n <HideTrayIcon />\n </button>\n </div>\n <div\n className={`wv-tray-content ${\n activeTool === \"pointer\" && pointerSelectionInfo\n ? \"wv-tray-content-selection\"\n : activeTool === \"summary\"\n ? \"wv-tray-content-summary\"\n : \"\"\n }`}\n style={\n activeTool === \"summary\"\n ? { paddingLeft: 16, paddingRight: 16 }\n : undefined\n }\n >\n {activeTool === \"summary\" ? (\n <>\n <div className=\"wv-summary-content\">\n <div className=\"wv-summary-heading\">\n <div className=\"wv-summary-kicker\" style={{ textAlign: \"left\", width: \"100%\" }}>\n Hey builder!\n </div>\n <div className=\"wv-summary-title\" style={{ textAlign: \"left\", width: \"100%\" }}>\n Overview\n </div>\n </div>\n <div className=\"wv-summary-main\">\n <div className=\"wv-tray-card wv-overview-card\">\n <div className=\"wv-overview-stat\">\n <span className=\"wv-overview-orb wv-overview-orb--moved\">\n <span className=\"wv-overview-orb-value\">{movedElementCount}</span>\n </span>\n <span className=\"wv-overview-label\">Total moved</span>\n </div>\n <span className=\"wv-overview-divider\" aria-hidden />\n <div className=\"wv-overview-stat\">\n <span className=\"wv-overview-orb wv-overview-orb--tool\">\n <AIToolIcon />\n </span>\n <span className=\"wv-overview-label\">{selectedToolLabel}</span>\n </div>\n </div>\n <div className=\"wv-tray-card wv-doc-card\">\n <span className=\"wv-doc-icon\"><DocumentationIcon /></span>\n <span className=\"wv-doc-copy\">\n <span className=\"wv-doc-title\">Documentation</span>\n <span className=\"wv-doc-site\">weevar.com</span>\n </span>\n <button\n type=\"button\"\n className=\"wv-doc-go\"\n onClick={() => {\n window.open(\"https://weevar.com\", \"_blank\", \"noopener,noreferrer\");\n }}\n >\n <ArrowRightIcon />\n </button>\n </div>\n </div>\n </div>\n </>\n ) : pointerSelectionInfo ? (\n <>\n <div className=\"wv-tray-card wv-selection-path-card\">\n <span className=\"wv-selection-path-text\">{pointerPathDisplay}</span>\n </div>\n <div className=\"wv-tray-card wv-selection-css-card\">\n <div className=\"wv-selection-css-scroll-wrap\">\n <div className=\"wv-selection-css-scroll\">\n {pointerCssProps.map((entry) => (\n <div key={entry.key} className=\"wv-selection-css-line\">\n <span className=\"wv-selection-css-key\">{entry.key}</span>\n <span className=\"wv-selection-css-sep\">: </span>\n <span className=\"wv-selection-css-value\">{entry.value}</span>\n <span className=\"wv-selection-css-sep\">;</span>\n </div>\n ))}\n </div>\n </div>\n </div>\n </>\n ) : null}\n </div>\n <div className=\"wv-tray-foot\">\n <span>v1.0.0</span>\n <GlobeIcon />\n </div>\n </aside>\n </div>\n\n <div\n className={`wv-tray-stack-layer${showSettingsTray ? \" wv-tray-stack-layer--visible\" : \"\"}`}\n aria-hidden={!showSettingsTray}\n >\n <SettingsTray\n tool={settingsTool}\n len={settingsLen}\n onTool={setSettingsTool}\n onLen={setSettingsLen}\n onClose={dismissAllTrays}\n onShowHelperTooltip={showHelperTooltip}\n onHideHelperTooltip={hideHelperTooltip}\n hidden={!showSettingsTray}\n />\n </div>\n\n <div\n className={`wv-tray-stack-layer${showPromptTray ? \" wv-tray-stack-layer--visible\" : \"\"}`}\n aria-hidden={!showPromptTray}\n >\n <PromptPanel\n hidden={!showPromptTray}\n promptText={panel ? promptBody(panel.prompt, panel.len) : \"No element moved yet\"}\n canCopy={!!panel}\n runtimeConfig={config}\n onClose={dismissAllTrays}\n copyFlash={panel?.copyFlash ?? false}\n onCopy={async () => {\n const p = panelRef.current;\n if (!p) return;\n const text = promptBody(p.prompt, p.len);\n await navigator.clipboard.writeText(text);\n setPanel((cur) => (cur ? { ...cur, copyFlash: true } : cur));\n window.setTimeout(() => {\n setPanel((cur) => (cur ? { ...cur, copyFlash: false } : cur));\n bump();\n }, 1200);\n }}\n />\n </div>\n </div>\n ) : null}\n\n {dropZoneRect && (\n <div\n className=\"wv-drop-zone\"\n style={{\n left: dropZoneRect.left,\n top: dropZoneRect.top,\n width: dropZoneRect.width,\n height: dropZoneRect.height,\n }}\n />\n )}\n {dragUi?.bar && (\n <div\n className=\"wv-insertion-bar\"\n style={{\n left: dragUi.bar.left,\n top: dragUi.bar.top,\n width: dragUi.bar.width,\n height: dragUi.bar.height,\n }}\n />\n )}\n {toast && (\n <div className=\"wv-toast wv-pe\" role=\"status\">\n {toast}\n </div>\n )}\n {toolbarTooltip ? (\n <div\n className=\"wv-toolbar-tooltip\"\n role=\"tooltip\"\n style={{ left: toolbarTooltip.x, top: toolbarTooltip.y }}\n >\n {toolbarTooltip.text}\n </div>\n ) : null}\n {helperTooltip ? (\n <div\n className=\"wv-settings-helper-tooltip\"\n role=\"tooltip\"\n style={{ left: helperTooltip.x, top: helperTooltip.y }}\n >\n {helperTooltip.text}\n </div>\n ) : null}\n {visibleBadges.map((b) => (\n <div\n key={`badge-${b.ordinal}`}\n className=\"wv-badge\"\n style={{ left: b.rect.left - 8, top: b.rect.top - 8 }}\n aria-label={`Move ${b.displayOrdinal}`}\n >\n {b.displayOrdinal}\n </div>\n ))}\n\n {activeTool === \"pointer\" &&\n frames.hover &&\n hoverEl &&\n (!selectedEl || hoverEl !== selectedEl) &&\n !isDragging &&\n !promptOpen && <Outline rect={frames.hover} variant=\"hover\" />}\n\n {activeTool === \"pointer\" && frames.selected && selectedEl && !promptOpen && (\n <>\n <Outline rect={frames.selected} variant=\"selected\" />\n <CornerMarkers rect={frames.selected} />\n <SelectedTopBar\n rect={frames.selected}\n text={buildSpecificElementLabel(selectedEl)}\n onDragStart={startDrag}\n dragRef={dragHandleRef}\n />\n </>\n )}\n\n {activeTool === \"pointer\" &&\n frames.hover &&\n hoverEl &&\n hoverEl !== selectedEl &&\n !isDragging &&\n !promptOpen &&\n pointerInPage &&\n pointerPos && (\n <CursorHoverLabel\n x={pointerPos.x}\n y={pointerPos.y}\n text={buildSpecificElementLabel(hoverEl)}\n />\n )}\n </>\n )}\n </div>\n </>\n );\n}\n\nfunction SettingsTray({\n tool,\n len,\n onTool,\n onLen,\n onClose,\n onShowHelperTooltip,\n onHideHelperTooltip,\n hidden = false,\n}: {\n tool: TargetTool;\n len: PromptLength;\n onTool: (t: TargetTool) => void;\n onLen: (l: PromptLength) => void;\n onClose: () => void;\n onShowHelperTooltip: (text: string, el: HTMLElement) => void;\n onHideHelperTooltip: () => void;\n hidden?: boolean;\n}) {\n return (\n <aside\n className=\"wv-summary-tray wv-settings-tray wv-pe\"\n role=\"dialog\"\n aria-label=\"Weevar settings\"\n aria-hidden={hidden}\n >\n <div className=\"wv-tray-head wv-settings-head\">\n <WeevarWordmarkIcon />\n <button type=\"button\" className=\"wv-tray-hide-btn\" aria-label=\"Hide tray\" onClick={onClose}>\n <HideTrayIcon />\n </button>\n </div>\n\n <div className=\"wv-tray-content wv-settings-content\">\n <div className=\"wv-settings-section\">\n <div className=\"wv-settings-label-row\">\n <span className=\"wv-settings-label-inline\">\n <span>Target Tool</span>\n <span\n className=\"wv-settings-help-wrap\"\n tabIndex={0}\n aria-label=\"Target tool help\"\n onMouseEnter={(e) =>\n onShowHelperTooltip(\"Tailor your prompt to fit the AI tool you use\", e.currentTarget)\n }\n onMouseLeave={onHideHelperTooltip}\n onFocus={(e) =>\n onShowHelperTooltip(\"Tailor your prompt to fit the AI tool you use\", e.currentTarget)\n }\n onBlur={onHideHelperTooltip}\n >\n <InfoIcon />\n </span>\n </span>\n </div>\n <div className=\"wv-settings-tool-list\">\n <button\n type=\"button\"\n className=\"wv-settings-row\"\n onClick={() => onTool(\"claude-code\")}\n >\n <span>Claude Code</span>\n <TargetToolToggle selected={tool === \"claude-code\"} />\n </button>\n <button\n type=\"button\"\n className=\"wv-settings-row\"\n onClick={() => onTool(\"codex\")}\n >\n <span>Codex</span>\n <TargetToolToggle selected={tool === \"codex\"} />\n </button>\n <button\n type=\"button\"\n className=\"wv-settings-row\"\n onClick={() => onTool(\"generic\")}\n >\n <span>Generic</span>\n <TargetToolToggle selected={tool === \"generic\"} />\n </button>\n </div>\n </div>\n\n <div className=\"wv-settings-section\">\n <div className=\"wv-settings-label-row\">\n <span className=\"wv-settings-label-inline\">\n <span>Prompt Style</span>\n <span\n className=\"wv-settings-help-wrap\"\n tabIndex={0}\n aria-label=\"Prompt style help\"\n onMouseEnter={(e) =>\n onShowHelperTooltip(\"Choose the level of detail included in your prompt\", e.currentTarget)\n }\n onMouseLeave={onHideHelperTooltip}\n onFocus={(e) =>\n onShowHelperTooltip(\"Choose the level of detail included in your prompt\", e.currentTarget)\n }\n onBlur={onHideHelperTooltip}\n >\n <InfoIcon />\n </span>\n </span>\n </div>\n <div className=\"wv-settings-seg\">\n <button\n type=\"button\"\n className={len === \"short\" ? \"wv-settings-seg-on\" : \"wv-settings-seg-off\"}\n onClick={() => onLen(\"short\")}\n >\n Short\n </button>\n <button\n type=\"button\"\n className={len === \"detailed\" ? \"wv-settings-seg-on\" : \"wv-settings-seg-off\"}\n onClick={() => onLen(\"detailed\")}\n >\n Detailed\n </button>\n </div>\n </div>\n </div>\n\n <div className=\"wv-tray-foot wv-settings-foot\">\n <span>v1.0.0</span>\n <GlobeIcon />\n </div>\n </aside>\n );\n}\n\nfunction eventFromWeevarChrome(e: PointerEvent | KeyboardEvent): boolean {\n return e.composedPath().some((n) => {\n if (!(n instanceof Element)) return false;\n return isInsideWeevarOverlay(n);\n });\n}\n\n/** True when coordinates hit Weevar UI (dock, trays, etc.), not the host page. */\nfunction pointerOverWeevarChrome(e: PointerEvent): boolean {\n if (eventFromWeevarChrome(e)) return true;\n const top = document.elementFromPoint(e.clientX, e.clientY);\n if (!top) return false;\n if (isInsideWeevarOverlay(top)) return true;\n return (\n top instanceof HTMLElement && top.classList.contains(WEEVAR_BOOT_DOT_CLASS)\n );\n}\n\nfunction Outline({\n rect,\n variant,\n}: {\n rect: DOMRect;\n variant: \"hover\" | \"selected\";\n}) {\n return (\n <div\n className={\n variant === \"selected\" ? \"wv-outline wv-outline-selected\" : \"wv-outline\"\n }\n style={{\n left: rect.left,\n top: rect.top,\n width: rect.width,\n height: rect.height,\n }}\n />\n );\n}\n\nfunction SelectedTopBar({\n rect,\n text,\n onDragStart,\n dragRef,\n}: {\n rect: DOMRect;\n text: string;\n onDragStart: (e: React.PointerEvent) => void;\n dragRef: React.MutableRefObject<HTMLDivElement | null>;\n}) {\n const pad = 4;\n let top = rect.top - 30;\n if (top < 4) top = rect.bottom + pad;\n const left = Math.min(Math.max(4, rect.left), window.innerWidth - 260);\n return (\n <div className=\"wv-selected-top\" style={{ left, top }}>\n <div\n ref={dragRef}\n className=\"wv-drag-handle\"\n title=\"Drag to reorder or move to another container\"\n role=\"presentation\"\n onPointerDown={onDragStart}\n >\n <SelectedDragIcon />\n </div>\n <div className=\"wv-selected-label\">{text}</div>\n </div>\n );\n}\n\nfunction CursorHoverLabel({ x, y, text }: { x: number; y: number; text: string }) {\n const left = Math.min(Math.max(6, x + 12), window.innerWidth - 220);\n const top = Math.min(Math.max(6, y - 26), window.innerHeight - 28);\n return (\n <div className=\"wv-cursor-label\" style={{ left, top }}>\n {text}\n </div>\n );\n}\n\nfunction SelectedDragIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden>\n <path d=\"M9.75 4.75H9.755V4.755H9.75V4.75Z\" stroke=\"#EBEBEB\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M10 4.75C10 4.8163 9.97366 4.87989 9.92678 4.92678C9.87989 4.97366 9.8163 5 9.75 5C9.6837 5 9.62011 4.97366 9.57322 4.92678C9.52634 4.87989 9.5 4.8163 9.5 4.75C9.5 4.6837 9.52634 4.62011 9.57322 4.57322C9.62011 4.52634 9.6837 4.5 9.75 4.5C9.8163 4.5 9.87989 4.52634 9.92678 4.57322C9.97366 4.62011 10 4.6837 10 4.75ZM9.75 7.995H9.755V8H9.75V7.995Z\" stroke=\"#EBEBEB\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M10 7.995C10 8.0613 9.97366 8.12489 9.92678 8.17177C9.87989 8.21866 9.8163 8.245 9.75 8.245C9.6837 8.245 9.62011 8.21866 9.57322 8.17177C9.52634 8.12489 9.5 8.0613 9.5 7.995C9.5 7.92869 9.52634 7.8651 9.57322 7.81822C9.62011 7.77133 9.6837 7.745 9.75 7.745C9.8163 7.745 9.87989 7.77133 9.92678 7.81822C9.97366 7.8651 10 7.92869 10 7.995ZM9.75 11.25H9.755V11.255H9.75V11.25Z\" stroke=\"#EBEBEB\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M10 11.25C10 11.3163 9.97366 11.3799 9.92678 11.4268C9.87989 11.4737 9.8163 11.5 9.75 11.5C9.6837 11.5 9.62011 11.4737 9.57322 11.4268C9.52634 11.3799 9.5 11.3163 9.5 11.25C9.5 11.1837 9.52634 11.1201 9.57322 11.0732C9.62011 11.0263 9.6837 11 9.75 11C9.8163 11 9.87989 11.0263 9.92678 11.0732C9.97366 11.1201 10 11.1837 10 11.25ZM6.25 4.75H6.255V4.755H6.25V4.75Z\" stroke=\"#EBEBEB\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M6.5 4.75C6.5 4.8163 6.47366 4.87989 6.42678 4.92678C6.37989 4.97366 6.3163 5 6.25 5C6.1837 5 6.12011 4.97366 6.07322 4.92678C6.02634 4.87989 6 4.8163 6 4.75C6 4.6837 6.02634 4.62011 6.07322 4.57322C6.12011 4.52634 6.1837 4.5 6.25 4.5C6.3163 4.5 6.37989 4.52634 6.42678 4.57322C6.47366 4.62011 6.5 4.6837 6.5 4.75ZM6.25 7.995H6.255V8H6.25V7.995Z\" stroke=\"#EBEBEB\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M6.5 7.995C6.5 8.0613 6.47366 8.12489 6.42678 8.17177C6.37989 8.21866 6.3163 8.245 6.25 8.245C6.1837 8.245 6.12011 8.21866 6.07322 8.17177C6.02634 8.12489 6 8.0613 6 7.995C6 7.92869 6.02634 7.8651 6.07322 7.81822C6.12011 7.77133 6.1837 7.745 6.25 7.745C6.3163 7.745 6.37989 7.77133 6.42678 7.81822C6.47366 7.8651 6.5 7.92869 6.5 7.995ZM6.25 11.25H6.255V11.255H6.25V11.25Z\" stroke=\"#EBEBEB\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M6.5 11.25C6.5 11.3163 6.47366 11.3799 6.42678 11.4268C6.37989 11.4737 6.3163 11.5 6.25 11.5C6.1837 11.5 6.12011 11.4737 6.07322 11.4268C6.02634 11.3799 6 11.3163 6 11.25C6 11.1837 6.02634 11.1201 6.07322 11.0732C6.12011 11.0263 6.1837 11 6.25 11C6.3163 11 6.37989 11.0263 6.42678 11.0732C6.47366 11.1201 6.5 11.1837 6.5 11.25Z\" stroke=\"#EBEBEB\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nfunction CornerMarkers({ rect }: { rect: DOMRect }) {\n const o = 2;\n const s = 4;\n const box: CSSProperties = {\n position: \"fixed\",\n left: rect.left - o,\n top: rect.top - o,\n width: rect.width + o * 2,\n height: rect.height + o * 2,\n pointerEvents: \"none\",\n zIndex: 4,\n };\n const corner: CSSProperties = {\n position: \"absolute\",\n width: s,\n height: s,\n background: \"var(--wv-accent)\",\n };\n return (\n <div style={box}>\n <span style={{ ...corner, left: 0, top: 0 }} />\n <span style={{ ...corner, right: 0, top: 0 }} />\n <span style={{ ...corner, left: 0, bottom: 0 }} />\n <span style={{ ...corner, right: 0, bottom: 0 }} />\n </div>\n );\n}\n\nfunction IconBase({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n >\n {children}\n </svg>\n );\n}\n\nfunction LogomarkIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden\n >\n <path\n d=\"M4.67677 16C4.05948 16 3.54321 15.7266 3.12795 15.1797C2.71268 14.6328 2.50505 13.8839 2.50505 12.9328C2.50505 12.4454 2.55556 11.8985 2.65657 11.2922C2.75758 10.674 2.87542 10.0498 3.0101 9.41975C3.14478 8.78967 3.26263 8.20119 3.36364 7.65432C3.46465 7.09556 3.51515 6.63192 3.51515 6.26338C3.51515 6.00183 3.48148 5.79973 3.41414 5.65706C3.3468 5.50252 3.22334 5.42524 3.04377 5.42524C2.90909 5.42524 2.75196 5.49063 2.57239 5.6214C2.39282 5.75217 2.25814 6.00777 2.16835 6.3882L2 6.31687C2 5.29447 2.21886 4.48605 2.65657 3.89163C3.1055 3.29721 3.70595 3 4.45791 3C5.16498 3 5.6532 3.24371 5.92256 3.73114C6.20314 4.21856 6.34343 4.83082 6.34343 5.5679C6.34343 6.11477 6.28732 6.6973 6.17508 7.3155C6.07407 7.9337 5.95623 8.5519 5.82155 9.1701C5.68687 9.77641 5.56341 10.3411 5.45118 10.8642C5.35017 11.3873 5.29966 11.8212 5.29966 12.166C5.29966 12.6772 5.42312 12.9328 5.67003 12.9328C5.81594 12.9328 6.01235 12.8258 6.25926 12.6118C6.50617 12.3859 6.76431 12.0828 7.03367 11.7023C7.31425 11.31 7.58361 10.8701 7.84175 10.3827C8.09989 9.8834 8.31874 9.36031 8.49832 8.81344C8.47587 8.5519 8.45903 8.30224 8.44781 8.06447C8.43659 7.81481 8.43098 7.59488 8.43098 7.40466C8.43098 6.45359 8.51515 5.68679 8.6835 5.10425C8.86308 4.52172 9.08754 4.09374 9.3569 3.8203C9.62626 3.54687 9.90123 3.41015 10.1818 3.41015C10.5746 3.41015 10.9282 3.64198 11.2424 4.10562C11.5567 4.55738 11.7138 5.17558 11.7138 5.96022C11.7138 6.44765 11.6296 6.99451 11.4613 7.60082C11.2929 8.19524 11.0123 8.83128 10.6195 9.50892C10.5859 10.5313 10.6925 11.3576 10.9394 11.9877C11.1863 12.6177 11.4949 12.9328 11.8653 12.9328C12.101 12.9328 12.3535 12.808 12.6229 12.5583C12.9035 12.2968 13.1616 11.9401 13.3973 11.4883C13.633 11.0247 13.8238 10.4897 13.9697 9.8834C14.1268 9.27709 14.2054 8.62917 14.2054 7.93964C14.2054 7.53544 14.1773 7.1134 14.1212 6.67353C14.0763 6.23365 14.0146 5.81161 13.936 5.40741C13.8687 5.0032 13.7957 4.67032 13.7172 4.40878C13.7172 4.20668 13.7957 4.00457 13.9529 3.80247C14.1212 3.58848 14.3345 3.41015 14.5926 3.26749C14.8507 3.11294 15.1145 3.03566 15.3838 3.03566C15.6532 3.03566 15.9113 3.13672 16.1582 3.33882C16.4052 3.54092 16.6072 3.89758 16.7643 4.40878C16.9214 4.90809 17 5.6214 17 6.5487C17 7.84454 16.8429 9.0631 16.5286 10.2044C16.2144 11.3338 15.7879 12.3324 15.2492 13.2003C14.7217 14.0681 14.138 14.7517 13.4983 15.251C12.8586 15.7385 12.2076 15.9822 11.5455 15.9822C10.9618 15.9822 10.4792 15.792 10.0976 15.4115C9.71605 15.0311 9.41863 14.5199 9.20539 13.8779C8.99214 13.2359 8.84063 12.5226 8.75084 11.738C8.3468 12.7604 7.90909 13.5866 7.43771 14.2167C6.96633 14.8349 6.49495 15.2867 6.02357 15.572C5.55219 15.8573 5.10325 16 4.67677 16Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\nfunction AIToolIcon() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden\n >\n <path\n d=\"M5.36207 2.61103C5.50334 2.04084 6.31408 2.04084 6.45536 2.61103C6.75047 3.80492 7.36605 4.89554 8.23567 5.76515C9.10528 6.63476 10.1959 7.25035 11.3898 7.54546C11.96 7.68674 11.96 8.49747 11.3898 8.63875L11.1626 8.69793C10.018 9.02356 8.9798 9.64591 8.15316 10.5019C7.32652 11.358 6.74081 12.4173 6.45536 13.5725L6.42099 13.6731C6.22881 14.1096 5.58798 14.1096 5.39643 13.6731L5.36207 13.5732C5.07656 12.4178 4.49075 11.3585 3.66399 10.5024C2.83724 9.6464 1.7989 9.02409 0.65419 8.69857L0.427642 8.63875C-0.142547 8.49747 -0.142547 7.68674 0.427642 7.54546C1.62153 7.25035 2.71214 6.63476 3.58176 5.76515C4.45137 4.89554 5.06696 3.80492 5.36207 2.61103ZM10.882 0.206184C10.9424 -0.0687282 11.3344 -0.0687282 11.3949 0.206184C11.5249 0.793001 11.8197 1.33051 12.2447 1.75551C12.6697 2.18051 13.2072 2.47533 13.794 2.60531C14.0695 2.6664 14.0695 3.05777 13.794 3.11886L13.6737 3.15004C13.1131 3.29756 12.6039 3.59663 12.202 4.01444C11.8002 4.43225 11.5211 4.95267 11.3955 5.51862L11.3796 5.56698C11.2924 5.77698 10.9838 5.77698 10.8966 5.56698L10.882 5.51862C10.7604 4.96963 10.4943 4.46308 10.1114 4.05137C9.72842 3.63965 9.24243 3.33771 8.70366 3.17677L8.48156 3.11886C8.20665 3.05777 8.20665 2.6664 8.48156 2.60531C9.06862 2.47554 9.60639 2.18082 10.0316 1.7558C10.4569 1.33079 10.7519 0.793166 10.882 0.206184Z\"\n fill=\"#111113\"\n />\n </svg>\n );\n}\n\nfunction DocumentationIcon() {\n return (\n <svg\n width=\"24\"\n height=\"30\"\n viewBox=\"0 0 24 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden\n >\n <path d=\"M12 0L12.1755 0.0105C12.5103 0.0499858 12.8221 0.201119 13.0605 0.439517C13.2989 0.677915 13.45 0.989675 13.4895 1.3245L13.5 1.5V7.5L13.5075 7.725C13.5612 8.43926 13.8686 9.11074 14.3743 9.61805C14.8799 10.1253 15.5504 10.435 16.2645 10.491L16.5 10.5H22.5L22.6755 10.5105C23.0103 10.55 23.3221 10.7011 23.5605 10.9395C23.7989 11.1779 23.95 11.4897 23.9895 11.8245L24 12V25.5C24.0001 26.6478 23.5615 27.7523 22.7741 28.5874C21.9866 29.4225 20.9098 29.9252 19.764 29.9925L19.5 30H4.5C3.35218 30.0001 2.24773 29.5615 1.41261 28.7741C0.57749 27.9866 0.0748387 26.9098 0.00750018 25.764L6.99067e-09 25.5V4.5C-6.39326e-05 3.35218 0.438488 2.24773 1.22593 1.41261C2.01336 0.57749 3.09016 0.0748387 4.236 0.00750017L4.5 0H12Z\" fill=\"#F8563F\"/>\n <path d=\"M22.5 7.49979H16.5L16.4985 1.49829L22.5 7.49979Z\" fill=\"#D1402A\"/>\n <path d=\"M12 24C14.7614 24 17 21.7614 17 19C17 16.2386 14.7614 14 12 14C9.23858 14 7 16.2386 7 19C7 21.7614 9.23858 24 12 24Z\" stroke=\"#FFEAE7\" strokeWidth=\"0.7\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M9.9998 14.5H10.4998C9.5248 17.42 9.5248 20.58 10.4998 23.5H9.9998\" stroke=\"#FFEAE7\" strokeWidth=\"0.7\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M13.5 14.5C14.475 17.42 14.475 20.58 13.5 23.5\" stroke=\"#FFEAE7\" strokeWidth=\"0.7\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M7.5 21V20.5C10.42 21.475 13.58 21.475 16.5 20.5V21\" stroke=\"#FFEAE7\" strokeWidth=\"0.7\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M7.5 17.5C10.42 16.525 13.58 16.525 16.5 17.5\" stroke=\"#FFEAE7\" strokeWidth=\"0.7\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n );\n}\n\nfunction PointerIcon() {\n return (\n <Icon18Base className=\"wv-icon-pointer\">\n <path d=\"M3.10071 5.81125L5.72984 14.2829C6.3524 16.2942 9.18745 16.323 9.85312 14.326L10.6289 11.9986C10.8444 11.3521 11.3521 10.8444 11.9986 10.6289L14.326 9.85312C16.323 9.18745 16.2894 6.35719 14.2829 5.72984L5.81125 3.10071C4.1447 2.58351 2.58351 4.1447 3.10071 5.81125Z\" />\n </Icon18Base>\n );\n}\nfunction PromptIcon() {\n return (\n <Icon18Base className=\"wv-icon-prompt\">\n <path d=\"M11.4 3H6.6C4.2 3 3 4.2 3 6.6V14.4C3 14.73 3.27 15 3.6 15H11.4C13.8 15 15 13.8 15 11.4V6.6C15 4.2 13.8 3 11.4 3Z\" />\n <path d=\"M6 8H12\" />\n <path d=\"M6 11H10\" />\n </Icon18Base>\n );\n}\nfunction TrashIcon() {\n return (\n <Icon18Base>\n <path d=\"M14.625 4.125L14.16 11.6437C14.0415 13.5645 13.9823 14.5253 13.5 15.216C13.2619 15.5574 12.9554 15.8455 12.6 16.062C11.8822 16.5 10.92 16.5 8.9955 16.5C7.068 16.5 6.10425 16.5 5.385 16.0613C5.02942 15.8443 4.72291 15.5557 4.485 15.2137C4.0035 14.5222 3.945 13.56 3.8295 11.6363L3.375 4.125M2.25 4.125H15.75M12.042 4.125L11.5298 3.069C11.19 2.367 11.0198 2.01675 10.7265 1.79775C10.6614 1.74924 10.5924 1.70609 10.5203 1.66875C10.1955 1.5 9.8055 1.5 9.02625 1.5C8.22675 1.5 7.827 1.5 7.49625 1.6755C7.42314 1.71466 7.3534 1.75981 7.28775 1.8105C6.9915 2.03775 6.82575 2.4015 6.49425 3.12825L6.03975 4.125M7.125 12.375V7.875M10.875 12.375V7.875\" />\n </Icon18Base>\n );\n}\nfunction SettingsIcon() {\n return (\n <Icon18Base>\n <path d=\"M9 11.25C10.2426 11.25 11.25 10.2426 11.25 9C11.25 7.75736 10.2426 6.75 9 6.75C7.75736 6.75 6.75 7.75736 6.75 9C6.75 10.2426 7.75736 11.25 9 11.25Z\" />\n <path d=\"M1.5 9.66007V8.34007C1.5 7.56007 2.1375 6.91507 2.925 6.91507C4.2825 6.91507 4.8375 5.95507 4.155 4.77757C3.765 4.10257 3.9975 3.22507 4.68 2.83507L5.9775 2.09257C6.57 1.74007 7.335 1.95007 7.6875 2.54257L7.77 2.68507C8.445 3.86257 9.555 3.86257 10.2375 2.68507L10.32 2.54257C10.6725 1.95007 11.4375 1.74007 12.03 2.09257L13.3275 2.83507C14.01 3.22507 14.2425 4.10257 13.8525 4.77757C13.17 5.95507 13.725 6.91507 15.0825 6.91507C15.8625 6.91507 16.5075 7.55257 16.5075 8.34007V9.66007C16.5075 10.4401 15.87 11.0851 15.0825 11.0851C13.725 11.0851 13.17 12.0451 13.8525 13.2226C14.2425 13.9051 14.01 14.7751 13.3275 15.1651L12.03 15.9076C11.4375 16.2601 10.6725 16.0501 10.32 15.4576L10.2375 15.3151C9.5625 14.1376 8.4525 14.1376 7.77 15.3151L7.6875 15.4576C7.335 16.0501 6.57 16.2601 5.9775 15.9076L4.68 15.1651C3.9975 14.7751 3.765 13.8976 4.155 13.2226C4.8375 12.0451 4.2825 11.0851 2.925 11.0851C2.1375 11.0851 1.5 10.4401 1.5 9.66007Z\" />\n </Icon18Base>\n );\n}\nfunction UndoIcon() {\n return (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden>\n <path d=\"M4.22704 13.773C5.44853 14.9945 7.13602 15.75 9 15.75C12.7279 15.75 15.75 12.7279 15.75 9C15.75 5.27209 12.7279 2.25 9 2.25C7.13602 2.25 5.44853 3.00552 4.22704 4.22704C3.60528 4.84879 2.25 6.375 2.25 6.375\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M2.25 3.375V6.375H5.25\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\nfunction RedoIcon() {\n return (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden>\n <path d=\"M13.773 13.773C12.5515 14.9945 10.864 15.75 9 15.75C5.27209 15.75 2.25 12.7279 2.25 9C2.25 5.27209 5.27209 2.25 9 2.25C10.864 2.25 12.5515 3.00552 13.773 4.22704C14.3947 4.84879 15.75 6.375 15.75 6.375\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M15.75 3.375V6.375H12.75\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\nfunction DragDotsIcon() {\n return (\n <Icon18Base>\n <path d=\"M13.875 11.625L13.875 11.6317L13.8683 11.6317L13.8683 11.625L13.875 11.625Z\" />\n <path d=\"M13.875 12C13.7755 12 13.6802 11.9605 13.6098 11.8902C13.5395 11.8198 13.5 11.7245 13.5 11.625C13.5 11.5255 13.5395 11.4302 13.6098 11.3598C13.6802 11.2895 13.7755 11.25 13.875 11.25C13.9745 11.25 14.0698 11.2895 14.1402 11.3598C14.2105 11.4302 14.25 11.5255 14.25 11.625C14.25 11.7245 14.2105 11.8198 14.1402 11.8902C14.0698 11.9605 13.9745 12 13.875 12ZM9.0075 11.625L9.0075 11.6325L9 11.6325L9 11.625L9.0075 11.625Z\" />\n <path d=\"M9.00732 12C8.90787 12 8.81249 11.9605 8.74216 11.8902C8.67183 11.8198 8.63232 11.7245 8.63232 11.625C8.63232 11.5255 8.67183 11.4302 8.74216 11.3598C8.81249 11.2895 8.90787 11.25 9.00732 11.25C9.10678 11.25 9.20216 11.2895 9.27249 11.3598C9.34282 11.4302 9.38232 11.5255 9.38232 11.625C9.38232 11.7245 9.34282 11.8198 9.27249 11.8902C9.20216 11.9605 9.10678 12 9.00732 12ZM4.12482 11.625L4.12482 11.6325L4.11732 11.6325L4.11732 11.625L4.12482 11.625Z\" />\n <path d=\"M4.125 12C4.02554 12 3.93016 11.9605 3.85984 11.8902C3.78951 11.8198 3.75 11.7245 3.75 11.625C3.75 11.5255 3.78951 11.4302 3.85984 11.3598C3.93016 11.2895 4.02554 11.25 4.125 11.25C4.22446 11.25 4.31984 11.2895 4.39017 11.3598C4.46049 11.4302 4.5 11.5255 4.5 11.625C4.5 11.7245 4.46049 11.8198 4.39017 11.8902C4.31984 11.9605 4.22446 12 4.125 12ZM13.875 6.375L13.875 6.3825L13.8675 6.3825L13.8675 6.375L13.875 6.375Z\" />\n <path d=\"M13.875 6.75C13.7755 6.75 13.6802 6.71049 13.6098 6.64017C13.5395 6.56984 13.5 6.47446 13.5 6.375C13.5 6.27554 13.5395 6.18016 13.6098 6.10984C13.6802 6.03951 13.7755 6 13.875 6C13.9745 6 14.0698 6.03951 14.1402 6.10984C14.2105 6.18016 14.25 6.27554 14.25 6.375C14.25 6.47446 14.2105 6.56984 14.1402 6.64017C14.0698 6.71049 13.9745 6.75 13.875 6.75ZM9.0075 6.375L9.0075 6.3825L9 6.3825L9 6.375L9.0075 6.375Z\" />\n <path d=\"M9.00732 6.75C8.90787 6.75 8.81249 6.71049 8.74216 6.64017C8.67183 6.56984 8.63232 6.47446 8.63232 6.375C8.63232 6.27554 8.67183 6.18016 8.74216 6.10984C8.81249 6.03951 8.90787 6 9.00732 6C9.10678 6 9.20216 6.03951 9.27249 6.10984C9.34282 6.18016 9.38232 6.27554 9.38232 6.375C9.38232 6.47446 9.34282 6.56984 9.27249 6.64017C9.20216 6.71049 9.10678 6.75 9.00732 6.75ZM4.12482 6.375L4.12482 6.3825L4.11732 6.3825L4.11732 6.375L4.12482 6.375Z\" />\n <path d=\"M4.125 6.75C4.02554 6.75 3.93016 6.71049 3.85984 6.64017C3.78951 6.56984 3.75 6.47446 3.75 6.375C3.75 6.27554 3.78951 6.18016 3.85984 6.10984C3.93016 6.03951 4.02554 6 4.125 6C4.22446 6 4.31984 6.03951 4.39017 6.10984C4.46049 6.18016 4.5 6.27554 4.5 6.375C4.5 6.47446 4.46049 6.56984 4.39017 6.64017C4.31984 6.71049 4.22446 6.75 4.125 6.75Z\" />\n </Icon18Base>\n );\n}\nfunction CloseIcon() {\n return (\n <Icon18Base>\n <path d=\"M4 14.0002L14.0002 4.00005\" />\n <path d=\"M14.0002 13.9999L4 3.99976\" />\n </Icon18Base>\n );\n}\n\nfunction InfoIcon() {\n return (\n <svg\n className=\"wv-settings-info-icon\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden\n >\n <path\n d=\"M7.00008 12.8334C10.2084 12.8334 12.8334 10.2084 12.8334 7.00008C12.8334 3.79175 10.2084 1.16675 7.00008 1.16675C3.79175 1.16675 1.16675 3.79175 1.16675 7.00008C1.16675 10.2084 3.79175 12.8334 7.00008 12.8334Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M7 4.66675V7.58341\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6.99683 9.33325H7.00207\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nfunction TargetToolToggle({ selected }: { selected: boolean }) {\n return selected ? (\n <svg\n className=\"wv-settings-toggle-svg wv-settings-toggle-svg-on\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden\n >\n <g clipPath=\"url(#wv-toggle-selected-clip)\">\n <path\n d=\"M18.125 14.375L18.2322 14.2678C19.3641 13.1359 20 11.6007 20 9.99996C20 8.39921 19.3641 6.86402 18.2322 5.73212L18.125 5.62493C16.9244 4.4243 15.2963 3.74992 13.5984 3.74992L6.40151 3.74992C4.7038 3.75044 3.07573 4.42483 1.87491 5.62493L1.76773 5.73212C0.63583 6.86402 -5.98136e-05 8.39921 -5.96737e-05 9.99996C-5.95337e-05 11.6007 0.635831 13.1359 1.76773 14.2678L1.87492 14.375C3.07573 15.5751 4.7038 16.2495 6.40151 16.25L13.5984 16.25C15.2961 16.2495 16.9242 15.5751 18.125 14.375Z\"\n fill=\"#EBEBEB\"\n fillOpacity=\"0.05\"\n />\n <path\n d=\"M15.9154 13.75C14.9209 14.3242 13.7389 14.4798 12.6297 14.1825C11.5204 13.8853 10.5746 13.1595 10.0004 12.165C9.42621 11.1704 9.27062 9.98846 9.56786 8.87917C9.86511 7.76989 10.5908 6.82412 11.5854 6.24992C12.0779 5.9656 12.6215 5.78107 13.1853 5.70686C13.7491 5.63264 14.3219 5.6702 14.8712 5.81738C15.9805 6.11463 16.9263 6.84036 17.5005 7.83493C18.0747 8.8295 18.2302 10.0114 17.933 11.1207C17.6357 12.23 16.91 13.1758 15.9154 13.75Z\"\n fill=\"#35C759\"\n />\n <path\n d=\"M15.9154 13.75C14.9209 14.3242 13.7389 14.4798 12.6297 14.1825C11.5204 13.8853 10.5746 13.1595 10.0004 12.165C9.42621 11.1704 9.27062 9.98846 9.56786 8.87917C9.86511 7.76989 10.5908 6.82412 11.5854 6.24992C12.0779 5.9656 12.6215 5.78107 13.1853 5.70686C13.7491 5.63264 14.3219 5.6702 14.8712 5.81738C15.9805 6.11463 16.9263 6.84036 17.5005 7.83493C18.0747 8.8295 18.2302 10.0114 17.933 11.1207C17.6357 12.23 16.91 13.1758 15.9154 13.75Z\"\n fill=\"none\"\n stroke=\"rgba(255,255,255,0.55)\"\n strokeWidth=\"1.25\"\n />\n </g>\n <defs>\n <clipPath id=\"wv-toggle-selected-clip\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n ) : (\n <svg\n className=\"wv-settings-toggle-svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden\n >\n <g clipPath=\"url(#wv-toggle-unselected-clip)\">\n <path\n d=\"M1.87498 5.62501L1.76779 5.7322C0.635893 6.86411 2.56136e-06 8.39929 2.84125e-06 10C3.12113e-06 11.6008 0.635894 13.136 1.76779 14.2679L1.87498 14.3751C3.07561 15.5757 4.70375 16.2501 6.40157 16.2501L13.5985 16.2501C15.2962 16.2496 16.9243 15.5752 18.1251 14.3751L18.2323 14.2679C19.3642 13.136 20.0001 11.6008 20.0001 10C20.0001 8.39929 19.3642 6.8641 18.2323 5.7322L18.1251 5.62501C16.9243 4.42491 15.2962 3.75053 13.5985 3.75L6.40157 3.75C4.70387 3.75053 3.07579 4.42491 1.87498 5.62501Z\"\n fill=\"#EBEBEB\"\n fillOpacity=\"0.05\"\n />\n <path\n d=\"M4.08456 6.25003C5.07913 5.67583 6.26106 5.52024 7.37034 5.81749C8.47963 6.11474 9.4254 6.84047 9.9996 7.83504C10.5738 8.82961 10.7294 10.0115 10.4321 11.1208C10.1349 12.2301 9.40916 13.1759 8.41459 13.7501C7.92213 14.0344 7.37849 14.2189 6.81471 14.2931C6.25094 14.3674 5.67806 14.3298 5.1288 14.1826C4.01952 13.8854 3.07374 13.1596 2.49955 12.1651C1.92535 11.1705 1.76976 9.98857 2.06701 8.87929C2.36425 7.77 3.08999 6.82423 4.08456 6.25003Z\"\n fill=\"#58585D\"\n />\n </g>\n <defs>\n <clipPath id=\"wv-toggle-unselected-clip\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(20 20) rotate(180)\" />\n </clipPath>\n </defs>\n </svg>\n );\n}\n\nfunction Icon18Base({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <svg\n className={className}\n viewBox=\"0 0 18 18\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n >\n {children}\n </svg>\n );\n}\nfunction CollapseIcon() {\n return (\n <IconBase>\n <path d=\"M8 6v12M16 8v8\" />\n </IconBase>\n );\n}\nfunction WeevarWordmarkIcon() {\n return (\n <svg\n className=\"wv-tray-logo\"\n width=\"48\"\n height=\"10\"\n viewBox=\"0 0 48 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label=\"Weevar\"\n >\n <path d=\"M2.16888 9.97264C1.66872 9.97264 1.2504 9.76288 0.913931 9.34336C0.577459 8.92385 0.409223 8.34929 0.409223 7.6197C0.409223 7.24578 0.450145 6.82627 0.531989 6.36115C0.613834 5.88691 0.709319 5.40812 0.818445 4.92476C0.927571 4.4414 1.02306 3.98997 1.1049 3.57045C1.18675 3.14181 1.22767 2.78614 1.22767 2.50342C1.22767 2.30278 1.20039 2.14774 1.14582 2.0383C1.09126 1.91974 0.991228 1.86047 0.845727 1.86047C0.736601 1.86047 0.609287 1.91062 0.463786 2.01094C0.318284 2.11126 0.209158 2.30734 0.136408 2.59918L0 2.54446C0 1.76015 0.17733 1.13999 0.531989 0.683995C0.895743 0.227998 1.38226 0 1.99155 0C2.56446 0 2.96004 0.186959 3.1783 0.560876C3.40564 0.934793 3.51931 1.40447 3.51931 1.9699C3.51931 2.38942 3.47385 2.8363 3.38291 3.31053C3.30106 3.78477 3.20558 4.25901 3.09645 4.73324C2.98733 5.19836 2.88729 5.63155 2.79635 6.03283C2.71451 6.43411 2.67359 6.76699 2.67359 7.03146C2.67359 7.42362 2.77362 7.6197 2.97368 7.6197C3.0919 7.6197 3.25105 7.53762 3.45111 7.37346C3.65118 7.20018 3.86033 6.96762 4.07859 6.67579C4.30593 6.37483 4.52418 6.03739 4.73334 5.66347C4.9425 5.28044 5.11983 4.87916 5.26533 4.45964C5.24714 4.25901 5.2335 4.06749 5.22441 3.88509C5.21531 3.69357 5.21077 3.52485 5.21077 3.37893C5.21077 2.64934 5.27897 2.0611 5.41538 1.61423C5.56088 1.16735 5.74276 0.839033 5.96101 0.629275C6.17926 0.419517 6.40206 0.314637 6.62941 0.314637C6.94769 0.314637 7.23415 0.492476 7.48877 0.848153C7.7434 1.19471 7.87072 1.66895 7.87072 2.27086C7.87072 2.64478 7.80251 3.0643 7.6661 3.52941C7.5297 3.98541 7.30235 4.47332 6.98407 4.99316C6.95678 5.77747 7.04318 6.41131 7.24324 6.89466C7.44331 7.37802 7.69339 7.6197 7.99348 7.6197C8.18445 7.6197 8.38906 7.52394 8.60732 7.33242C8.83466 7.13178 9.04382 6.85819 9.23479 6.51163C9.42576 6.15595 9.58036 5.74555 9.69858 5.28044C9.82589 4.81532 9.88955 4.31829 9.88955 3.78933C9.88955 3.47925 9.86681 3.15549 9.82134 2.81806C9.78497 2.48062 9.73495 2.15686 9.67129 1.84678C9.61673 1.53671 9.55762 1.28135 9.49396 1.08071C9.49396 0.925672 9.55762 0.770634 9.68494 0.615595C9.82134 0.451437 9.99413 0.314637 10.2033 0.205198C10.4124 0.086639 10.6261 0.0273594 10.8444 0.0273594C11.0627 0.0273594 11.2718 0.104879 11.4719 0.259918C11.6719 0.414957 11.8356 0.688555 11.9629 1.08071C12.0903 1.46375 12.1539 2.01094 12.1539 2.7223C12.1539 3.71637 12.0266 4.65116 11.772 5.52668C11.5173 6.39307 11.1718 7.15914 10.7353 7.8249C10.3079 8.49065 9.83498 9.01505 9.31663 9.39808C8.79829 9.772 8.27084 9.95896 7.73431 9.95896C7.26143 9.95896 6.87039 9.81304 6.5612 9.5212C6.25201 9.22937 6.01103 8.83721 5.83824 8.34473C5.66546 7.85226 5.54269 7.30506 5.46994 6.70315C5.14256 7.48746 4.7879 8.12129 4.40596 8.60465C4.02402 9.07889 3.64208 9.42544 3.26014 9.64432C2.8782 9.8632 2.51445 9.97264 2.16888 9.97264Z\" fill=\"currentColor\" />\n <path d=\"M15.4244 10C14.7605 10 14.2104 9.86776 13.7739 9.60328C13.3374 9.32969 13.01 8.97401 12.7917 8.53625C12.5735 8.08938 12.4643 7.61058 12.4643 7.09986C12.4643 6.61651 12.5553 6.13315 12.7372 5.64979C12.9281 5.15732 13.2009 4.71044 13.5556 4.30917C13.9194 3.90789 14.3559 3.58413 14.8651 3.33789C15.3835 3.09166 15.9655 2.96854 16.6111 2.96854C17.4114 2.96854 17.9934 3.15093 18.3572 3.51573C18.73 3.87141 18.9164 4.30461 18.9164 4.81532C18.9164 5.25308 18.7982 5.65891 18.5618 6.03283C18.3344 6.39763 18.0298 6.69403 17.6478 6.92202C17.2659 7.1409 16.8476 7.25034 16.3929 7.25034C16.1564 7.25034 15.9155 7.21386 15.6699 7.1409C15.4244 7.06794 15.1834 6.95394 14.947 6.79891C14.9924 7.36434 15.1561 7.77474 15.438 8.0301C15.7199 8.28545 16.0564 8.41313 16.4474 8.41313C16.7203 8.41313 16.9931 8.36297 17.2659 8.26265C17.5387 8.15321 17.7888 8.01642 18.0161 7.85226C18.2526 7.67898 18.4344 7.49658 18.5618 7.30506L18.6572 7.37346C18.6572 7.8477 18.5572 8.25353 18.3572 8.59097C18.1662 8.91929 17.9116 9.18833 17.5933 9.39808C17.275 9.60784 16.9249 9.76288 16.5429 9.8632C16.1701 9.9544 15.7972 10 15.4244 10ZM15.7381 6.30643C16.0291 6.30643 16.2656 6.22435 16.4474 6.06019C16.6293 5.88691 16.7657 5.68627 16.8567 5.45828C16.9476 5.23028 16.9931 5.02964 16.9931 4.85636C16.9931 4.6466 16.934 4.47332 16.8157 4.33653C16.6975 4.19061 16.5338 4.11765 16.3247 4.11765C16.161 4.11765 15.9791 4.17693 15.779 4.29549C15.5881 4.41404 15.4153 4.61924 15.2607 4.91108C15.1061 5.1938 15.0061 5.59052 14.9606 6.10123C15.2516 6.23803 15.5108 6.30643 15.7381 6.30643Z\" fill=\"currentColor\" />\n <path d=\"M22.5378 10C21.874 10 21.3238 9.86776 20.8873 9.60328C20.4508 9.32969 20.1234 8.97401 19.9052 8.53625C19.6869 8.08938 19.5778 7.61058 19.5778 7.09986C19.5778 6.61651 19.6687 6.13315 19.8506 5.64979C20.0416 5.15732 20.3144 4.71044 20.669 4.30917C21.0328 3.90789 21.4693 3.58413 21.9786 3.33789C22.4969 3.09166 23.0789 2.96854 23.7246 2.96854C24.5248 2.96854 25.1068 3.15093 25.4706 3.51573C25.8434 3.87141 26.0299 4.30461 26.0299 4.81532C26.0299 5.25308 25.9116 5.65891 25.6752 6.03283C25.4479 6.39763 25.1432 6.69403 24.7613 6.92202C24.3793 7.1409 23.961 7.25034 23.5063 7.25034C23.2699 7.25034 23.0289 7.21386 22.7834 7.1409C22.5378 7.06794 22.2968 6.95394 22.0604 6.79891C22.1059 7.36434 22.2696 7.77474 22.5515 8.0301C22.8334 8.28545 23.1698 8.41313 23.5609 8.41313C23.8337 8.41313 24.1065 8.36297 24.3793 8.26265C24.6521 8.15321 24.9022 8.01642 25.1296 7.85226C25.366 7.67898 25.5479 7.49658 25.6752 7.30506L25.7707 7.37346C25.7707 7.8477 25.6707 8.25353 25.4706 8.59097C25.2796 8.91929 25.025 9.18833 24.7067 9.39808C24.3884 9.60784 24.0383 9.76288 23.6564 9.8632C23.2835 9.9544 22.9107 10 22.5378 10ZM22.8516 6.30643C23.1426 6.30643 23.379 6.22435 23.5609 6.06019C23.7428 5.88691 23.8792 5.68627 23.9701 5.45828C24.061 5.23028 24.1065 5.02964 24.1065 4.85636C24.1065 4.6466 24.0474 4.47332 23.9292 4.33653C23.811 4.19061 23.6473 4.11765 23.4381 4.11765C23.2744 4.11765 23.0926 4.17693 22.8925 4.29549C22.7015 4.41404 22.5287 4.61924 22.3741 4.91108C22.2195 5.1938 22.1195 5.59052 22.074 6.10123C22.365 6.23803 22.6242 6.30643 22.8516 6.30643Z\" fill=\"currentColor\" />\n <path d=\"M28.751 9.95896C28.2235 9.95896 27.8052 9.82216 27.496 9.54856C27.1868 9.26585 27.0322 8.83265 27.0322 8.24897C27.0322 7.91154 27.0732 7.5513 27.155 7.16826C27.246 6.78523 27.3323 6.44323 27.4142 6.14227C27.496 5.85043 27.5597 5.59508 27.6052 5.3762C27.6597 5.15732 27.687 4.9886 27.687 4.87004C27.687 4.72412 27.6552 4.61924 27.5915 4.5554C27.5279 4.49156 27.4506 4.45964 27.3596 4.45964C27.1414 4.45964 26.9595 4.56452 26.814 4.77428L26.7594 4.71956C26.7685 4.40948 26.8686 4.12677 27.0595 3.87141C27.2505 3.60693 27.496 3.39717 27.7961 3.24213C28.0962 3.0871 28.4009 3.00958 28.7101 3.00958C29.0556 3.00958 29.3512 3.11446 29.5967 3.32421C29.8422 3.52485 29.9559 3.84405 29.9377 4.28181C29.9286 4.47332 29.8923 4.715 29.8286 5.00684C29.774 5.29868 29.6967 5.64523 29.5967 6.04651C29.533 6.30187 29.4648 6.59371 29.3921 6.92202C29.3284 7.24122 29.2966 7.53306 29.2966 7.79754C29.2966 7.99818 29.3284 8.15777 29.3921 8.27633C29.4558 8.39489 29.5603 8.45417 29.7058 8.45417C29.8968 8.45417 30.106 8.34929 30.3333 8.13953C30.5697 7.92066 30.7744 7.56954 30.9471 7.08618C31.1199 6.59371 31.22 5.94163 31.2472 5.12996C31.2745 4.5098 31.2336 4.05837 31.1245 3.77565V3.70725C31.2063 3.57957 31.3291 3.45645 31.4928 3.33789C31.6656 3.21933 31.8565 3.12357 32.0657 3.05062C32.2748 2.96854 32.4704 2.9275 32.6522 2.9275C32.9432 2.9275 33.1888 3.06886 33.3888 3.35157C33.598 3.63429 33.6889 4.12677 33.6617 4.829C33.6435 5.50388 33.5207 6.11491 33.2934 6.66211C33.0751 7.2093 32.7886 7.6881 32.434 8.0985C32.0793 8.50889 31.6883 8.85089 31.2609 9.12449C30.8426 9.39808 30.4152 9.60784 29.9786 9.75376C29.5421 9.89056 29.1329 9.95896 28.751 9.95896Z\" fill=\"currentColor\" />\n <path d=\"M39.2501 9.97264C38.9318 9.97264 38.6545 9.86776 38.418 9.658C38.1816 9.44824 38.0634 9.10625 38.0634 8.63201C38.0634 8.58641 38.0634 8.54081 38.0634 8.49521C38.0634 8.44961 38.0679 8.40401 38.077 8.35841C37.8042 8.90561 37.495 9.31145 37.1494 9.57592C36.8129 9.83128 36.4719 9.95896 36.1264 9.95896C35.8081 9.95896 35.508 9.84952 35.2261 9.63064C34.9442 9.40264 34.7168 9.06977 34.544 8.63201C34.3713 8.19425 34.2849 7.6653 34.2849 7.04514C34.2849 6.40675 34.3713 5.83675 34.544 5.33516C34.7259 4.83356 34.9624 4.40948 35.2534 4.06293C35.5444 3.71637 35.8626 3.45645 36.2082 3.28317C36.5538 3.10078 36.8902 3.00958 37.2176 3.00958C37.5814 3.00958 37.9088 3.12358 38.1998 3.35157C38.4908 3.57045 38.6908 3.92157 38.8 4.40492C38.8272 4.24989 38.8454 4.10853 38.8545 3.98085C38.8727 3.85317 38.8818 3.76653 38.8818 3.72093C38.8909 3.47469 39.0137 3.29229 39.2501 3.17373C39.4956 3.05518 39.7639 2.9959 40.0549 2.9959C40.3095 2.9959 40.5505 3.04606 40.7779 3.14637C41.0052 3.24669 41.1598 3.41541 41.2416 3.65253L41.2689 3.73461C41.1598 3.98085 41.0507 4.27725 40.9415 4.6238C40.8324 4.97036 40.7324 5.33516 40.6415 5.71819C40.5505 6.09211 40.4778 6.46147 40.4232 6.82627C40.3686 7.18194 40.3414 7.49658 40.3414 7.77018C40.3414 8.07114 40.3732 8.28089 40.4368 8.39945C40.5005 8.50889 40.5778 8.56361 40.6687 8.56361C40.8233 8.56361 40.9643 8.45417 41.0916 8.23529L41.2007 8.29001C41.2007 8.60009 41.1007 8.88281 40.9006 9.13817C40.7006 9.39353 40.4505 9.59872 40.1504 9.75376C39.8503 9.89968 39.5502 9.97264 39.2501 9.97264ZM37.0267 8.23529C37.2631 8.23529 37.5223 8.02554 37.8042 7.60602C38.0952 7.17738 38.3453 6.56635 38.5544 5.77291C38.5726 5.69083 38.5908 5.61332 38.609 5.54036C38.6272 5.45828 38.6408 5.38076 38.6499 5.3078C38.5044 4.97036 38.3498 4.73324 38.1861 4.59644C38.0315 4.45052 37.8769 4.37756 37.7223 4.37756C37.495 4.37756 37.2813 4.50068 37.0812 4.74692C36.8902 4.98404 36.7311 5.285 36.6038 5.64979C36.4856 6.01459 36.4265 6.37939 36.4265 6.74419C36.4265 7.24578 36.481 7.6197 36.5901 7.86594C36.7084 8.11218 36.8539 8.23529 37.0267 8.23529Z\" fill=\"currentColor\" />\n <path d=\"M43.5804 9.95896C43.253 9.95896 42.962 9.82672 42.7074 9.56224C42.4528 9.28865 42.3254 8.90561 42.3254 8.41313C42.3254 8.17601 42.3527 7.90698 42.4073 7.60602C42.4619 7.30506 42.5255 6.99954 42.5983 6.68947C42.671 6.37027 42.7347 6.07387 42.7892 5.80027C42.8438 5.51756 42.8711 5.285 42.8711 5.1026C42.8711 4.91108 42.8347 4.7606 42.762 4.65116C42.6983 4.5326 42.6119 4.47332 42.5028 4.47332C42.33 4.47332 42.1527 4.59188 41.9708 4.829L41.8889 4.77428C41.8798 4.62836 41.9117 4.45508 41.9844 4.25445C42.0572 4.05381 42.1709 3.86229 42.3254 3.67989C42.48 3.48837 42.6756 3.32877 42.912 3.20109C43.1575 3.07342 43.444 3.00958 43.7714 3.00958C44.2533 3.00958 44.6035 3.15093 44.8217 3.43365C45.04 3.70725 45.1491 4.04013 45.1491 4.43228C45.1491 4.49612 45.1445 4.56452 45.1354 4.63748C45.1354 4.70132 45.1309 4.76516 45.1218 4.829C45.4492 4.23621 45.7902 3.78477 46.1449 3.47469C46.5086 3.15549 46.8451 2.9959 47.1543 2.9959C47.4453 2.9959 47.659 3.1099 47.7954 3.33789C47.9318 3.56589 48 3.83949 48 4.15869C48 4.45052 47.9409 4.74692 47.8227 5.04788C47.7135 5.34884 47.5453 5.59964 47.318 5.80027C47.0997 5.99179 46.8314 6.08299 46.5132 6.07387L46.4586 6.04651C46.4495 5.80939 46.3722 5.62243 46.2267 5.48564C46.0812 5.34884 45.9175 5.28044 45.7356 5.28044C45.4901 5.28044 45.2582 5.40356 45.04 5.64979C44.8308 5.89603 44.7262 6.25171 44.7262 6.71683C44.7262 6.99954 44.758 7.30506 44.8217 7.63338C44.8854 7.9617 44.9172 8.23985 44.9172 8.46785C44.9172 8.74145 44.8535 8.99225 44.7262 9.22025C44.5989 9.44824 44.4352 9.63064 44.2352 9.76744C44.0351 9.89512 43.8168 9.95896 43.5804 9.95896Z\" fill=\"currentColor\" />\n </svg>\n );\n}\nfunction HideTrayIcon() {\n return (\n <svg\n className=\"wv-tray-hide-icon\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden\n >\n <g clipPath=\"url(#wv-hide-tray-clip)\">\n <path d=\"M4 11L4 1M3 11L9 11C10.1046 11 11 10.1046 11 9L11 3C11 1.89543 10.1046 1 9 1L3 1C1.89543 1 1 1.89543 1 3L1 9C1 10.1046 1.89543 11 3 11Z\" stroke=\"currentColor\" strokeLinecap=\"round\" />\n </g>\n <defs>\n <clipPath id=\"wv-hide-tray-clip\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0 12) rotate(-90)\" />\n </clipPath>\n </defs>\n </svg>\n );\n}\nfunction ArrowUpRightIcon() {\n return (\n <IconBase>\n <path d=\"M7 17L17 7M10 7h7v7\" />\n </IconBase>\n );\n}\nfunction ArrowRightIcon() {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden\n >\n <path\n d=\"M5.49854 3.4939L10.506 3.4939L10.506 8.50139\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeMiterlimit=\"10\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M3.49414 10.5061L10.4362 3.56408\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeMiterlimit=\"10\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\nfunction GlobeIcon() {\n return (\n <IconBase>\n <circle cx=\"12\" cy=\"12\" r=\"8\" />\n <path d=\"M4 12h16M12 4c2.5 2.2 2.5 13.8 0 16M12 4c-2.5 2.2-2.5 13.8 0 16\" />\n </IconBase>\n );\n}\n","import { createRoot, type Root } from \"react-dom/client\";\nimport {\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { waitForReactHydration } from \"../engine/hydration\";\nimport { WEEVAR_BOOT_DOT_CLASS, WEEVAR_HOST_ID } from \"../engine/hitTest\";\nimport { WeevarShadowApp } from \"../overlay/WeevarShadowApp\";\nimport type { WeevarKeybind, WeevarProps } from \"../types\";\n\nlet warnedAboutLegacyBootDot = false;\nlet warnedAboutForeignHostOwner = false;\nconst WEEVAR_HOST_OWNER_ATTR = \"data-wv-owner\";\nconst WEEVAR_OWNER_TOKEN_GLOBAL_KEY = \"__weevar_host_owner_token__\";\nconst WEEVAR_HOST_OWNER_TOKEN = (() => {\n const g = globalThis as typeof globalThis & {\n [WEEVAR_OWNER_TOKEN_GLOBAL_KEY]?: string;\n };\n if (!g[WEEVAR_OWNER_TOKEN_GLOBAL_KEY]) {\n g[WEEVAR_OWNER_TOKEN_GLOBAL_KEY] = `weevar-${Math.random().toString(36).slice(2)}`;\n }\n return g[WEEVAR_OWNER_TOKEN_GLOBAL_KEY];\n})();\n\nconst defaultMatchKeybind = (e: KeyboardEvent): boolean => {\n if (e.repeat) return false;\n if (e.key.toLowerCase() !== \"e\" || !e.shiftKey) return false;\n return e.metaKey || e.ctrlKey;\n};\n\nfunction matchCustomKeybind(e: KeyboardEvent, k: WeevarKeybind): boolean {\n if (e.repeat) return false;\n if (e.key.toLowerCase() !== k.key.toLowerCase()) return false;\n if (k.meta && !e.metaKey) return false;\n if (k.ctrl && !e.ctrlKey) return false;\n if (k.shift && !e.shiftKey) return false;\n if (k.alt && !e.altKey) return false;\n return true;\n}\n\nexport function Weevar(props: WeevarProps) {\n const { disabled, keybind, config } = props;\n const [sessionOn, setSessionOn] = useState(false);\n\n useEffect(() => {\n if (disabled) setSessionOn(false);\n }, [disabled]);\n const reactRootRef = useRef<Root | null>(null);\n const hostRef = useRef<HTMLElement | null>(null);\n\n const cleanupLegacyBootDots = useCallback(() => {\n const staleDots = document.querySelectorAll(`.${WEEVAR_BOOT_DOT_CLASS}`);\n if (!staleDots.length) return;\n staleDots.forEach((dot) => dot.remove());\n if (import.meta.env.DEV && !warnedAboutLegacyBootDot) {\n warnedAboutLegacyBootDot = true;\n console.warn(\n `[weevar] Removed ${staleDots.length} stale legacy boot dot node(s).`,\n );\n }\n }, []);\n\n const ensureShadowHost = useCallback((): boolean => {\n if (reactRootRef.current) return true;\n cleanupLegacyBootDots();\n\n const existingHost = document.getElementById(WEEVAR_HOST_ID) as HTMLElement | null;\n if (existingHost) {\n const owner = existingHost.getAttribute(WEEVAR_HOST_OWNER_ATTR);\n if (owner && owner !== WEEVAR_HOST_OWNER_TOKEN) {\n // During dev HMR/replay flows, an older Weevar instance can leave a host behind.\n // Reclaim only Weevar-owned hosts to avoid removing foreign DOM accidentally.\n if (owner.startsWith(\"weevar-\")) {\n existingHost.remove();\n } else {\n if (import.meta.env.DEV && !warnedAboutForeignHostOwner) {\n warnedAboutForeignHostOwner = true;\n console.warn(\n \"[weevar] Existing overlay host is owned by another instance; skipping host takeover.\",\n );\n }\n return false;\n }\n } else {\n existingHost.remove();\n }\n }\n\n const host = document.createElement(\"div\");\n host.id = WEEVAR_HOST_ID;\n host.setAttribute(WEEVAR_HOST_OWNER_ATTR, WEEVAR_HOST_OWNER_TOKEN);\n host.style.cssText =\n \"position:fixed;inset:0;pointer-events:none;z-index:2147483646;\";\n document.body.appendChild(host);\n\n const shadow = host.attachShadow({ mode: \"closed\" });\n const mount = document.createElement(\"div\");\n shadow.appendChild(mount);\n const root = createRoot(mount);\n hostRef.current = host;\n reactRootRef.current = root;\n return true;\n }, [cleanupLegacyBootDots]);\n\n const activate = useCallback(async () => {\n if (disabled) return;\n await waitForReactHydration();\n if (!ensureShadowHost()) return;\n setSessionOn(true);\n }, [disabled, ensureShadowHost]);\n\n const toggleSession = useCallback(async () => {\n if (disabled) return;\n await waitForReactHydration();\n if (!ensureShadowHost()) return;\n setSessionOn((s) => !s);\n }, [disabled, ensureShadowHost]);\n\n useEffect(() => {\n if (disabled) return;\n cleanupLegacyBootDots();\n void ensureShadowHost();\n }, [disabled, cleanupLegacyBootDots, ensureShadowHost]);\n\n useEffect(() => {\n if (disabled) return;\n if (!reactRootRef.current && !ensureShadowHost()) return;\n reactRootRef.current?.render(\n <WeevarShadowApp\n sessionOn={sessionOn}\n setSessionOn={setSessionOn}\n disabled={disabled}\n config={config}\n />,\n );\n }, [disabled, ensureShadowHost, sessionOn, config]);\n\n useEffect(() => {\n if (disabled) return;\n const onKey = (e: KeyboardEvent) => {\n const target = e.target as Node | null;\n if (target instanceof HTMLElement) {\n const tag = target.tagName;\n if (tag === \"INPUT\" || tag === \"TEXTAREA\" || target.isContentEditable)\n return;\n }\n const match = keybind\n ? matchCustomKeybind(e, keybind)\n : defaultMatchKeybind(e);\n if (!match) return;\n e.preventDefault();\n void toggleSession();\n };\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [disabled, keybind, toggleSession]);\n\n useEffect(() => {\n return () => {\n const ownedHost = hostRef.current;\n const root = reactRootRef.current;\n hostRef.current = null;\n reactRootRef.current = null;\n window.setTimeout(() => {\n root?.unmount();\n if (\n ownedHost &&\n ownedHost.getAttribute(WEEVAR_HOST_OWNER_ATTR) === WEEVAR_HOST_OWNER_TOKEN\n ) {\n ownedHost.remove();\n }\n }, 0);\n };\n }, []);\n\n return null;\n}\n"]}