@syntrologie/adapt-nav 2.17.0 → 2.18.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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/editor.ts", "../src/summarize.ts", "../src/types.ts"],
4
- "sourcesContent": ["/**\n * Adaptive Nav - Editor Component\n *\n * Lit web component that displays nav tip cards with detection badges,\n * inline editing (Title, Description, Link URL, Icon, Category), and rationale.\n *\n * Custom events:\n * navigate-home \u2014 user clicked back\n * dirty-change \u2014 { dirty: boolean }\n */\n\nimport { html, LitElement, nothing } from 'lit';\n\nimport { describeTrigger, summarizeNavItem } from './summarize';\nimport { isOwnAction, type NavConfig, type NavTipAction, type RuleStrategy } from './types';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface FlatItem {\n key: string;\n index: number;\n summary: string;\n trigger: string;\n rationale?: string;\n firstAnchor: string | null;\n firstPage: string | null;\n tip: NavTipAction;\n}\n\ninterface DetectionEntry {\n found: boolean;\n}\n\n// ============================================================================\n// Targeting Extraction\n// ============================================================================\n\nconst isRuleStrategy = (s: unknown): s is RuleStrategy<boolean> =>\n typeof s === 'object' &&\n s !== null &&\n (s as Record<string, unknown>).type === 'rules' &&\n Array.isArray((s as Record<string, unknown>).rules);\n\nconst extractFirstPage = (triggerWhen?: unknown): string | null => {\n if (!triggerWhen || !isRuleStrategy(triggerWhen)) return null;\n for (const rule of triggerWhen.rules) {\n for (const cond of rule.conditions) {\n const c = cond as Record<string, unknown>;\n if (c.type === 'page_url' && typeof c.url === 'string') return c.url;\n }\n }\n return null;\n};\n\nconst extractFirstAnchor = (triggerWhen?: unknown): string | null => {\n if (!triggerWhen || !isRuleStrategy(triggerWhen)) return null;\n for (const rule of triggerWhen.rules) {\n for (const cond of rule.conditions) {\n const c = cond as Record<string, unknown>;\n if (c.type === 'anchor_visible' && typeof c.anchorId === 'string') return c.anchorId;\n }\n }\n return null;\n};\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst flattenItems = (config: NavConfig): FlatItem[] => {\n const actions = (config.actions || []).filter(isOwnAction);\n return actions.map((tip, i) => {\n // Prefer the tip's own anchor (real pipeline data ships the target here).\n // Fall back to an `anchor_visible` condition inside triggerWhen for older configs.\n const tipAnchor = tip.kind === 'nav:tip' ? tip.config.anchor?.selector : undefined;\n const rawRoute = tip.kind === 'nav:tip' ? tip.config.anchor?.route : undefined;\n const tipRoute = typeof rawRoute === 'string' ? rawRoute : undefined;\n return {\n key: String(i),\n index: i,\n summary: summarizeNavItem(tip),\n trigger: describeTrigger(tip.triggerWhen),\n rationale: tip.rationale?.why,\n firstAnchor: tipAnchor || extractFirstAnchor(tip.triggerWhen),\n firstPage: tipRoute || extractFirstPage(tip.triggerWhen),\n tip,\n };\n });\n};\n\nconst runDetection = (items: FlatItem[]): Map<string, DetectionEntry> => {\n const map = new Map<string, DetectionEntry>();\n const currentPath = window.location.pathname;\n\n for (const item of items) {\n // Page match\n let pageMatch = true;\n if (item.firstPage) {\n const pattern = item.firstPage;\n const regex = new RegExp(\n `^${pattern.replace(/\\*\\*/g, '.*').replace(/(?<!\\.)(\\*)/g, '[^/]*')}$`\n );\n pageMatch = regex.test(currentPath);\n }\n\n // Anchor match\n let anchorFound = false;\n if (item.firstAnchor) {\n try {\n anchorFound = document.querySelector(item.firstAnchor) !== null;\n } catch {\n // Invalid selector\n }\n } else {\n anchorFound = pageMatch;\n }\n\n map.set(item.key, { found: pageMatch && anchorFound });\n }\n return map;\n};\n\n// ============================================================================\n// Element\n// ============================================================================\n\nexport class NavEditorLit extends LitElement {\n static override properties = {\n config: { attribute: false },\n onChange: { attribute: false },\n _editingKey: { state: true },\n _detectionMap: { state: true },\n };\n\n config: NavConfig | null = null;\n onChange: ((updated: Record<string, unknown>) => void) | null = null;\n\n private _editingKey: string | null = null;\n private _detectionMap: Map<string, DetectionEntry> = new Map();\n private _detectionInterval: ReturnType<typeof setInterval> | null = null;\n private _onPopstate = () => this._runDetection();\n\n override createRenderRoot() {\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n window.addEventListener('popstate', this._onPopstate);\n // Run detection on an interval (matches React's 2s interval)\n this._detectionInterval = setInterval(() => this._runDetection(), 2000);\n }\n\n override disconnectedCallback(): void {\n window.removeEventListener('popstate', this._onPopstate);\n if (this._detectionInterval) {\n clearInterval(this._detectionInterval);\n this._detectionInterval = null;\n }\n super.disconnectedCallback();\n }\n\n override firstUpdated(): void {\n this._runDetection();\n // No auto-dirty on load \u2014 only dirty when user makes changes (matching React behavior).\n }\n\n private _runDetection = () => {\n if (!this.config) return;\n this._detectionMap = runDetection(flattenItems(this.config));\n };\n\n // ---- Actions ----\n\n private _handleBack = () => {\n if (this._editingKey !== null) {\n this._editingKey = null;\n } else {\n this.dispatchEvent(new CustomEvent('navigate-home', { bubbles: true }));\n }\n };\n\n private _handleItemClick = (key: string) => {\n this._editingKey = key;\n };\n\n private _handleFieldChange = (index: number, field: string, value: unknown) => {\n if (!this.config || !this.onChange) return;\n\n const ownActions = (this.config.actions || []).filter(isOwnAction).slice();\n const tip = { ...ownActions[index], config: { ...ownActions[index].config } };\n (tip.config as Record<string, unknown>)[field] = value;\n ownActions[index] = tip;\n\n const otherActions = (this.config.actions || []).filter((a) => !isOwnAction(a));\n const updated = { ...this.config, actions: [...otherActions, ...ownActions] };\n this.onChange(updated as unknown as Record<string, unknown>);\n\n this.dispatchEvent(new CustomEvent('dirty-change', { detail: { dirty: true }, bubbles: true }));\n };\n\n // ---- Render ----\n\n private _handleBadgeClick = (item: FlatItem, e: Event) => {\n e.stopPropagation();\n const href = item.tip.config.href;\n if (!href) return;\n // SPA navigate via pushState + popstate\n window.history.pushState({}, '', href);\n window.dispatchEvent(new PopStateEvent('popstate'));\n };\n\n private _renderDetectionBadge = (item: FlatItem) => {\n const detection = this._detectionMap.get(item.key);\n const found = detection?.found ?? false;\n\n if (found) {\n return html`<button type=\"button\"\n title=\"Click to scroll to element\"\n @click=${(e: Event) => this._handleBadgeClick(item, e)}\n class=\"se-shrink-0 se-w-2 se-h-2 se-rounded-full se-border-none se-cursor-pointer\"\n style=\"background:#22c55e\"\n ></button>`;\n }\n return html`<button type=\"button\"\n title=\"Click to navigate to page\"\n @click=${(e: Event) => this._handleBadgeClick(item, e)}\n class=\"se-shrink-0 se-w-2 se-h-2 se-rounded-full se-border-none se-cursor-pointer\"\n style=\"background:#ef4444\"\n ></button>`;\n };\n\n private _renderEditMode = (item: FlatItem) => {\n const tip = item.tip;\n return html`\n <div class=\"se-py-1\">\n <div class=\"se-flex se-items-center se-gap-2 se-mb-3 se-text-[13px] se-font-semibold se-text-text-primary\">\n <span>\uD83E\uDDED</span>\n <span>${item.summary}</span>\n </div>\n\n <div class=\"se-mb-3\">\n <label class=\"se-text-[11px] se-font-semibold se-text-text-secondary se-mb-1 se-block\">Title</label>\n <input type=\"text\" .value=${tip.config.title}\n @input=${(e: Event) => this._handleFieldChange(item.index, 'title', (e.target as HTMLInputElement).value)}\n class=\"se-w-full se-p-2 se-rounded se-border se-border-border-primary se-bg-input-field-bg se-text-text-primary se-text-sm\" />\n </div>\n\n <div class=\"se-mb-3\">\n <label class=\"se-text-[11px] se-font-semibold se-text-text-secondary se-mb-1 se-block\">Description</label>\n <input type=\"text\" .value=${tip.config.description}\n @input=${(e: Event) => this._handleFieldChange(item.index, 'description', (e.target as HTMLInputElement).value)}\n class=\"se-w-full se-p-2 se-rounded se-border se-border-border-primary se-bg-input-field-bg se-text-text-primary se-text-sm\" />\n </div>\n\n <div class=\"se-mb-3\">\n <label class=\"se-text-[11px] se-font-semibold se-text-text-secondary se-mb-1 se-block\">Link URL</label>\n <input type=\"text\" .value=${tip.config.href || ''} placeholder=\"Optional\"\n @input=${(e: Event) => this._handleFieldChange(item.index, 'href', (e.target as HTMLInputElement).value)}\n class=\"se-w-full se-p-2 se-rounded se-border se-border-border-primary se-bg-input-field-bg se-text-text-primary se-text-sm\" />\n </div>\n\n <div class=\"se-mb-3\">\n <label class=\"se-text-[11px] se-font-semibold se-text-text-secondary se-mb-1 se-block\">Icon</label>\n <input type=\"text\" .value=${tip.config.icon || ''} placeholder=\"e.g., \uD83E\uDDED\"\n @input=${(e: Event) => this._handleFieldChange(item.index, 'icon', (e.target as HTMLInputElement).value)}\n class=\"se-w-full se-p-2 se-rounded se-border se-border-border-primary se-bg-input-field-bg se-text-text-primary se-text-sm\" />\n </div>\n\n <div class=\"se-mb-3\">\n <label class=\"se-text-[11px] se-font-semibold se-text-text-secondary se-mb-1 se-block\">Category</label>\n <input type=\"text\" .value=${tip.config.category || ''} placeholder=\"Optional\"\n @input=${(e: Event) => this._handleFieldChange(item.index, 'category', (e.target as HTMLInputElement).value)}\n class=\"se-w-full se-p-2 se-rounded se-border se-border-border-primary se-bg-input-field-bg se-text-text-primary se-text-sm\" />\n </div>\n\n ${\n tip.rationale\n ? html`\n <div>\n <span class=\"se-text-[11px] se-font-semibold se-text-text-secondary se-mb-1 se-block\">AI Rationale</span>\n <div class=\"se-p-2 se-rounded se-border se-border-dashed se-border-border-primary se-bg-card-bg se-text-text-secondary se-text-xs se-mb-2\">\n ${tip.rationale.why}\n </div>\n </div>\n `\n : nothing\n }\n </div>\n `;\n };\n\n private _renderListMode = (items: FlatItem[]) => {\n if (items.length === 0) {\n return html`<div class=\"se-text-center se-py-8 se-px-4 se-text-text-secondary se-text-sm\">\n No tips configured.\n </div>`;\n }\n\n return html`\n <div class=\"se-text-[11px] se-font-semibold se-uppercase se-tracking-wider se-text-text-secondary se-mb-2 se-px-1\">\n TIPS <span class=\"se-text-text-tertiary se-font-normal\">${items.length}</span>\n </div>\n ${items.map(\n (item) => html`\n <div\n data-item-key=${item.key}\n data-card-body\n @click=${() => this._handleItemClick(item.key)}\n class=\"se-p-3 se-rounded-lg se-border se-border-border-primary se-bg-card-bg se-cursor-pointer se-mb-2 se-transition-all hover:se-border-pink-4/40 hover:se-bg-pink-4/5\"\n >\n <div class=\"se-flex se-items-center se-gap-2\">\n ${this._renderDetectionBadge(item)}\n <span class=\"se-flex-1 se-overflow-hidden se-text-ellipsis se-whitespace-nowrap se-text-sm se-text-text-primary\">\n ${item.summary}\n </span>\n </div>\n ${\n item.trigger !== 'All pages'\n ? html`\n <div class=\"se-text-[10px] se-text-text-tertiary se-mt-1\">\uD83D\uDCCD ${item.trigger}</div>\n `\n : nothing\n }\n ${\n item.rationale\n ? html`\n <div class=\"se-text-[10px] se-text-text-tertiary se-mt-1\">WHY: ${item.rationale}</div>\n `\n : nothing\n }\n </div>\n `\n )}\n `;\n };\n\n override render() {\n if (!this.config) {\n return html`<div class=\"se-p-8 se-text-center se-text-text-secondary se-text-sm\">Loading...</div>`;\n }\n\n const items = flattenItems(this.config);\n const editItem =\n this._editingKey !== null ? items.find((it) => it.key === this._editingKey) : null;\n\n return html`\n <div class=\"se-flex se-flex-col se-h-full\">\n <!-- Header (no Back button \u2014 panel provides that) -->\n <div class=\"se-px-4 se-pt-3 se-pb-1\">\n <h2 class=\"se-m-0 se-text-base se-font-semibold se-text-text-primary\">Navigation Tips</h2>\n <p class=\"se-m-0 se-mt-0.5 se-text-xs se-text-text-secondary\">\n ${items.length} tip${items.length !== 1 ? 's' : ''}\n </p>\n </div>\n\n <div class=\"se-flex-1 se-overflow-auto se-p-4\">\n ${\n editItem\n ? html`\n <button type=\"button\" @click=${() => {\n this._editingKey = null;\n }}\n class=\"se-mb-3 se-py-1 se-px-2 se-rounded se-border-none se-bg-card-bg se-text-text-secondary se-text-xs se-cursor-pointer\"\n >\u2190 Back to list</button>\n ${this._renderEditMode(editItem)}\n `\n : this._renderListMode(items)\n }\n </div>\n </div>\n `;\n }\n}\n\ncustomElements.define('se-nav-editor', NavEditorLit);\n", "/**\n * Human-readable summary generation for Nav items.\n * Pure functions \u2014 no DOM access, just string formatting.\n */\n\nimport type { DecisionStrategy, NavTipAction, RuleStrategy } from './types';\n\nconst MAX_TITLE_LEN = 30;\n\nfunction truncate(text: string, max: number): string {\n if (text.length <= max) return text;\n return `${text.slice(0, max).trimEnd()}...`;\n}\n\nfunction isRuleStrategy(s: unknown): s is RuleStrategy<boolean> {\n return (\n typeof s === 'object' &&\n s !== null &&\n (s as Record<string, unknown>).type === 'rules' &&\n Array.isArray((s as Record<string, unknown>).rules)\n );\n}\n\n/**\n * Parse a triggerWhen strategy into a human-readable trigger description.\n */\nexport function describeTrigger(triggerWhen?: DecisionStrategy<boolean> | null): string {\n if (!triggerWhen) return 'All pages';\n if (!isRuleStrategy(triggerWhen)) return 'All pages';\n\n const pages: string[] = [];\n const anchors: string[] = [];\n\n for (const rule of triggerWhen.rules) {\n for (const condition of rule.conditions) {\n if (condition.type === 'page_url' && typeof (condition as any).url === 'string') {\n pages.push((condition as any).url);\n }\n if (condition.type === 'anchor_visible' && typeof (condition as any).anchorId === 'string') {\n anchors.push((condition as any).anchorId);\n }\n }\n }\n\n const parts: string[] = [];\n if (pages.length > 0) parts.push(pages[0]);\n if (anchors.length > 0) parts.push(anchors[0]);\n\n return parts.length > 0 ? parts.join(' \\u00b7 ') : 'All pages';\n}\n\n/**\n * Generate a one-liner summary for a Nav tip.\n */\nexport function summarizeNavItem(item: NavTipAction): string {\n const icon = item.config.icon || '\\u{1F9ED}';\n const title = truncate(item.config.title, MAX_TITLE_LEN);\n return `${icon} ${title}`;\n}\n", "/**\n * Adaptive Nav - Types\n *\n * Type definitions for the navigation tips accordion adaptive.\n * Demonstrates compositional action pattern with per-item triggerWhen.\n */\n\n// ============================================================================\n// Decision Strategy Types (from runtime-sdk)\n// ============================================================================\n\n/**\n * Simplified DecisionStrategy type for this package.\n * Full definition is in @syntrologie/runtime-sdk.\n */\nexport type DecisionStrategy<T = unknown> =\n | RuleStrategy<T>\n | ScoreStrategy<T>\n | ModelStrategy<T>\n | ExternalStrategy<T>;\n\nexport interface RuleStrategy<T = unknown> {\n type: 'rules';\n rules: Array<{\n conditions: Array<Record<string, unknown>>;\n value: T;\n }>;\n default: T;\n}\n\nexport interface ScoreStrategy<T = unknown> {\n type: 'score';\n field: string;\n threshold: number;\n above: T;\n below: T;\n}\n\nexport interface ModelStrategy<T = unknown> {\n type: 'model';\n modelId: string;\n inputs: string[];\n outputMapping: Record<string, T>;\n default: T;\n}\n\nexport interface ExternalStrategy<T = unknown> {\n type: 'external';\n endpoint: string;\n method?: 'GET' | 'POST';\n default: T;\n timeoutMs?: number;\n}\n\n// ============================================================================\n// Event Scope Types (from sdk-contracts)\n// ============================================================================\n\n// ============================================================================\n// Nav Tip Action Types\n// ============================================================================\n\n/**\n * Single navigation tip configuration.\n * This is a \"compositional action\" \u2014 rendered as an accordion item by the parent.\n */\nexport interface NavTipAction {\n /** Action kind identifier */\n kind: 'nav:tip';\n /** Tip configuration */\n config: {\n /** Unique identifier for this tip */\n id: string;\n /** Accordion header text */\n title: string;\n /** Expanded body text */\n description: string;\n /**\n * Target anchor: route = where to go, selector = what to highlight/focus.\n * - Same page + valid selector \u2192 scroll + pulse + focus\n * - Same page + no selector/\"*\" \u2192 no-op (already there)\n * - Different page \u2192 navigate via pushState + popstate\n */\n anchor?: AnchorId;\n /** @deprecated Use anchor instead. Falls back to { route: href, selector: \"*\" } */\n href?: string;\n /** Optional icon (emoji or icon key) */\n icon?: string;\n /** Whether the link opens in a new tab */\n external?: boolean;\n /** Category for grouping */\n category?: string;\n };\n /** Optional per-item activation strategy */\n triggerWhen?: DecisionStrategy<boolean> | null;\n /** Toast config when triggerWhen transitions false \u2192 true. Required when triggerWhen is set (use null to opt out). */\n notify?: { title?: string; body?: string; icon?: string } | null;\n /** AI-generated reasoning for why this tip was recommended */\n rationale?: {\n why: string;\n confidence?: number;\n };\n}\n\n/** @deprecated Use NavTipAction instead */\nexport type NavLinkAction = NavTipAction;\n\n// ============================================================================\n// Nav Widget Configuration\n// ============================================================================\n\n/**\n * Expand behavior for the accordion.\n */\nexport type NavExpandBehavior = 'single' | 'multiple';\n\n/**\n * Theme for the navigation widget.\n */\nexport type NavTheme = 'light' | 'dark' | 'auto';\n\n/**\n * Full configuration for the adaptive-nav widget.\n */\nexport interface NavConfig {\n /** Expand behavior */\n expandBehavior: NavExpandBehavior;\n /** Color theme */\n theme: NavTheme;\n /** Navigation tips (compositional actions) */\n actions: NavTipAction[];\n}\n\n// ============================================================================\n// Widget Props Types\n// ============================================================================\n\n/**\n * Runtime services passed to the widget.\n */\nexport interface NavWidgetRuntime {\n /** Synchronously evaluate a decision strategy */\n evaluateSync: <T>(strategy: DecisionStrategy<T>) => { value: T; isFallback: boolean };\n /** Context manager for subscribing to changes */\n context: {\n subscribe: (callback: () => void) => () => void;\n };\n /** Event bus for publishing interactions */\n events: {\n publish: (name: string, props?: Record<string, unknown>) => void;\n };\n /** Event accumulator for event_count-based triggerWhen */\n accumulator?: {\n subscribe: (callback: () => void) => () => void;\n register: (key: string, predicate: (event: any) => boolean) => void;\n };\n}\n\n/**\n * Props passed to the NavWidget component.\n */\nexport interface NavWidgetProps {\n /** Widget configuration */\n config: NavConfig;\n /** Runtime services */\n runtime: NavWidgetRuntime;\n /** Instance ID for telemetry */\n instanceId: string;\n}\n\n// ============================================================================\n// Navigation Action Types (merged from adaptive-navigation)\n// ============================================================================\n\nimport type { AnchorId } from '@syntrologie/sdk-contracts';\n\ninterface BaseAction {\n label?: string;\n}\n\nexport interface ScrollToAction extends BaseAction {\n kind: 'navigation:scrollTo';\n anchorId: AnchorId;\n behavior?: ScrollBehavior;\n block?: ScrollLogicalPosition;\n inline?: ScrollLogicalPosition;\n}\n\nexport interface NavigateAction extends BaseAction {\n kind: 'navigation:navigate';\n url: string;\n target?: '_self' | '_blank';\n /** When true, always use full page navigation (window.location.href) even for same-origin URLs. */\n forceFullNavigation?: boolean;\n}\n\n// ============================================================================\n// Action Namespace\n// ============================================================================\n\nexport const ACTION_NAMESPACES = ['nav', 'navigation'] as const;\n\n/**\n * Returns true if the action belongs to this adaptive package.\n * Uses prefix matching so new kinds (e.g. nav:dropdown) are automatically included.\n * Covers both `nav:*` (compositional) and `navigation:*` (executor) prefixes.\n */\nexport function isOwnAction(action: { kind: string }): boolean {\n return ACTION_NAMESPACES.some((ns) => action.kind.startsWith(`${ns}:`));\n}\n\n// ============================================================================\n// Executor Types (from shared contracts)\n// ============================================================================\n\nexport type {\n ActionExecutor,\n ExecutorCleanup,\n ExecutorContext,\n ExecutorResult,\n ExecutorUpdate,\n} from '@syntrologie/sdk-contracts';\n\n// ============================================================================\n// Editor Types (from sdk-contracts)\n// ============================================================================\n\nexport type { EditorPanelProps } from '@syntrologie/sdk-contracts';\n"],
5
- "mappings": "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",
6
- "names": ["isRuleStrategy"]
3
+ "sources": ["../../../../node_modules/react/cjs/react.development.js", "../../../../node_modules/react/index.js", "../../../../node_modules/react/cjs/react-jsx-runtime.development.js", "../../../../node_modules/react/jsx-runtime.js", "../../../../node_modules/react-dom/cjs/react-dom.development.js", "../../../../node_modules/react-dom/index.js", "../../../shared-editor-ui/dist/components/AnchorPicker.js", "../../../../node_modules/css-selector-generator/src/utilities-iselement.ts", "../../../../node_modules/css-selector-generator/src/types.ts", "../../../../node_modules/css-selector-generator/src/utilities-typescript.ts", "../../../../node_modules/css-selector-generator/src/utilities-messages.ts", "../../../../node_modules/css-selector-generator/src/utilities-options.ts", "../../../../node_modules/css-selector-generator/src/utilities-data.ts", "../../../../node_modules/css-selector-generator/src/utilities-dom.ts", "../../../../node_modules/css-selector-generator/src/constants.ts", "../../../../node_modules/css-selector-generator/src/selector-attribute.ts", "../../../../node_modules/css-selector-generator/src/selector-class.ts", "../../../../node_modules/css-selector-generator/src/selector-id.ts", "../../../../node_modules/css-selector-generator/src/selector-nth-child.ts", "../../../../node_modules/css-selector-generator/src/selector-tag.ts", "../../../../node_modules/css-selector-generator/src/selector-nth-of-type.ts", "../../../../node_modules/css-selector-generator/src/utilities-powerset.ts", "../../../../node_modules/css-selector-generator/src/utilities-cartesian.ts", "../../../../node_modules/css-selector-generator/src/utilities-selectors.ts", "../../../../node_modules/css-selector-generator/src/utilities-element-data.ts", "../../../../node_modules/css-selector-generator/src/selector-fallback.ts", "../../../../node_modules/css-selector-generator/src/index.ts", "../../../shared-editor-ui/dist/components/BeforeAfterToggle.js", "../../../shared-editor-ui/dist/components/ConditionStatusLine.js", "../../../shared-editor-ui/dist/components/DetectionBadge.js", "../../../shared-editor-ui/dist/components/DismissedSection.js", "../../../shared-editor-ui/dist/components/EditBackButton.js", "../../../shared-editor-ui/dist/components/EditorBody.js", "../../../shared-editor-ui/dist/components/EditorCard.js", "../../../shared-editor-ui/dist/components/EditorFooter.js", "../../../shared-editor-ui/dist/components/EditorHeader.js", "../../../shared-editor-ui/dist/components/EditorInput.js", "../../../shared-editor-ui/dist/components/EditorLayout.js", "../../../shared-editor-ui/dist/components/EditorPanelShell.js", "../../../design-system/dist/tokens/colors.js", "../../../design-system/dist/tokens/effects.js", "../../../design-system/dist/tailwind-preset.js", "../../../design-system/dist/tokens/panel-shell.js", "../../../shared-editor-ui/dist/components/EditorSelect.js", "../../../shared-editor-ui/dist/components/EditorTextarea.js", "../../../shared-editor-ui/dist/components/ElementHighlight.js", "../../../shared-editor-ui/dist/hooks/useElementRect.js", "../../../shared-editor-ui/dist/components/EmptyState.js", "../../../shared-editor-ui/dist/components/GroupHeader.js", "../../../shared-editor-ui/dist/components/itemCardHeader.js", "../../../shared-editor-ui/dist/components/TriggerJourney.js", "../../../shared-editor-ui/dist/controllers/PanelShellController.js", "../../../shared-editor-ui/dist/hooks/useTriggerWhenStatus.js", "../../../../tests/fixtures/action-step-field-mapping.json", "../../../shared-editor-ui/dist/utils/elementChainRecommender.js", "../src/editor.ts", "../src/summarize.ts", "../src/types.ts", "../../../shared-editor-ui/src/components/AnchorPickerLit.ts", "../../../shared-editor-ui/src/utils/selectorGenerator.ts", "../../../shared-editor-ui/src/components/AnchorPillLit.ts", "../../../shared-editor-ui/src/components/EditorCardLit.ts", "../../../shared-editor-ui/src/components/EditorPanelShellLit.ts", "../../../shared-editor-ui/src/components/EditorTextareaLit.ts", "../../../shared-editor-ui/src/components/ElementHighlightLit.ts", "../../../shared-editor-ui/src/components/EmptyStateLit.ts", "../../../shared-editor-ui/src/components/GroupHeaderLit.ts"],
4
+ "sourcesContent": ["/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function defineDeprecationWarning(methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n console.warn(\n \"%s(...) is deprecated in plain JavaScript React classes. %s\",\n info[0],\n info[1]\n );\n }\n });\n }\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable)\n return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n function warnNoop(publicInstance, callerName) {\n publicInstance =\n ((publicInstance = publicInstance.constructor) &&\n (publicInstance.displayName || publicInstance.name)) ||\n \"ReactClass\";\n var warningKey = publicInstance + \".\" + callerName;\n didWarnStateUpdateForUnmountedComponent[warningKey] ||\n (console.error(\n \"Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.\",\n callerName,\n publicInstance\n ),\n (didWarnStateUpdateForUnmountedComponent[warningKey] = !0));\n }\n function Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function ComponentDummy() {}\n function PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function noop() {}\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function cloneAndReplaceKey(oldElement, newKey) {\n newKey = ReactElement(\n oldElement.type,\n newKey,\n oldElement.props,\n oldElement._owner,\n oldElement._debugStack,\n oldElement._debugTask\n );\n oldElement._store &&\n (newKey._store.validated = oldElement._store.validated);\n return newKey;\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n function escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n }\n function getElementKey(element, index) {\n return \"object\" === typeof element &&\n null !== element &&\n null != element.key\n ? (checkKeyStringCoercion(element.key), escape(\"\" + element.key))\n : index.toString(36);\n }\n function resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"),\n (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n }\n function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback) {\n invokeCallback = children;\n callback = callback(invokeCallback);\n var childKey =\n \"\" === nameSoFar ? \".\" + getElementKey(invokeCallback, 0) : nameSoFar;\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != childKey &&\n (escapedPrefix =\n childKey.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (null != callback.key &&\n ((invokeCallback && invokeCallback.key === callback.key) ||\n checkKeyStringCoercion(callback.key)),\n (escapedPrefix = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (invokeCallback && invokeCallback.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n childKey\n )),\n \"\" !== nameSoFar &&\n null != invokeCallback &&\n isValidElement(invokeCallback) &&\n null == invokeCallback.key &&\n invokeCallback._store &&\n !invokeCallback._store.validated &&\n (escapedPrefix._store.validated = 2),\n (callback = escapedPrefix)),\n array.push(callback));\n return 1;\n }\n invokeCallback = 0;\n childKey = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = childKey + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n i === children.entries &&\n (didWarnAboutMaps ||\n console.warn(\n \"Using Maps as children is not supported. Use an array of keyed ReactElements instead.\"\n ),\n (didWarnAboutMaps = !0)),\n children = i.call(children),\n i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = childKey + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n }\n function mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n }\n function lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ioInfo = payload._ioInfo;\n null != ioInfo && (ioInfo.start = ioInfo.end = performance.now());\n ioInfo = payload._result;\n var thenable = ioInfo();\n thenable.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status) {\n payload._status = 1;\n payload._result = moduleObject;\n var _ioInfo = payload._ioInfo;\n null != _ioInfo && (_ioInfo.end = performance.now());\n void 0 === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = moduleObject));\n }\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status) {\n payload._status = 2;\n payload._result = error;\n var _ioInfo2 = payload._ioInfo;\n null != _ioInfo2 && (_ioInfo2.end = performance.now());\n void 0 === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n }\n );\n ioInfo = payload._ioInfo;\n if (null != ioInfo) {\n ioInfo.value = thenable;\n var displayName = thenable.displayName;\n \"string\" === typeof displayName && (ioInfo.name = displayName);\n }\n -1 === payload._status &&\n ((payload._status = 0), (payload._result = thenable));\n }\n if (1 === payload._status)\n return (\n (ioInfo = payload._result),\n void 0 === ioInfo &&\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\\n\\nDid you accidentally put curly braces around the import?\",\n ioInfo\n ),\n \"default\" in ioInfo ||\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\",\n ioInfo\n ),\n ioInfo.default\n );\n throw payload._result;\n }\n function resolveDispatcher() {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher;\n }\n function releaseAsyncTransition() {\n ReactSharedInternals.asyncTransitions--;\n }\n function enqueueTask(task) {\n if (null === enqueueTaskImpl)\n try {\n var requireString = (\"require\" + Math.random()).slice(0, 7);\n enqueueTaskImpl = (module && module[requireString]).call(\n module,\n \"timers\"\n ).setImmediate;\n } catch (_err) {\n enqueueTaskImpl = function (callback) {\n !1 === didWarnAboutMessageChannel &&\n ((didWarnAboutMessageChannel = !0),\n \"undefined\" === typeof MessageChannel &&\n console.error(\n \"This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning.\"\n ));\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(void 0);\n };\n }\n return enqueueTaskImpl(task);\n }\n function aggregateErrors(errors) {\n return 1 < errors.length && \"function\" === typeof AggregateError\n ? new AggregateError(errors)\n : errors[0];\n }\n function popActScope(prevActQueue, prevActScopeDepth) {\n prevActScopeDepth !== actScopeDepth - 1 &&\n console.error(\n \"You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. \"\n );\n actScopeDepth = prevActScopeDepth;\n }\n function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n var queue = ReactSharedInternals.actQueue;\n if (null !== queue)\n if (0 !== queue.length)\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n });\n return;\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n else ReactSharedInternals.actQueue = null;\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((queue = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(queue))\n : resolve(returnValue);\n }\n function flushActQueue(queue) {\n if (!isFlushing) {\n isFlushing = !0;\n var i = 0;\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n do {\n ReactSharedInternals.didUsePromise = !1;\n var continuation = callback(!1);\n if (null !== continuation) {\n if (ReactSharedInternals.didUsePromise) {\n queue[i] = callback;\n queue.splice(0, i);\n return;\n }\n callback = continuation;\n } else break;\n } while (1);\n }\n queue.length = 0;\n } catch (error) {\n queue.splice(0, i + 1), ReactSharedInternals.thrownErrors.push(error);\n } finally {\n isFlushing = !1;\n }\n }\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator,\n didWarnStateUpdateForUnmountedComponent = {},\n ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, \"forceUpdate\");\n },\n enqueueReplaceState: function (publicInstance) {\n warnNoop(publicInstance, \"replaceState\");\n },\n enqueueSetState: function (publicInstance) {\n warnNoop(publicInstance, \"setState\");\n }\n },\n assign = Object.assign,\n emptyObject = {};\n Object.freeze(emptyObject);\n Component.prototype.isReactComponent = {};\n Component.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n };\n Component.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n };\n var deprecatedAPIs = {\n isMounted: [\n \"isMounted\",\n \"Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks.\"\n ],\n replaceState: [\n \"replaceState\",\n \"Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236).\"\n ]\n };\n for (fnName in deprecatedAPIs)\n deprecatedAPIs.hasOwnProperty(fnName) &&\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n ComponentDummy.prototype = Component.prototype;\n deprecatedAPIs = PureComponent.prototype = new ComponentDummy();\n deprecatedAPIs.constructor = PureComponent;\n assign(deprecatedAPIs, Component.prototype);\n deprecatedAPIs.isPureReactComponent = !0;\n var isArrayImpl = Array.isArray,\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals = {\n H: null,\n A: null,\n T: null,\n S: null,\n actQueue: null,\n asyncTransitions: 0,\n isBatchingLegacy: !1,\n didScheduleLegacyUpdate: !1,\n didUsePromise: !1,\n thrownErrors: [],\n getCurrentStack: null,\n recentlyCreatedOwnerStacks: 0\n },\n hasOwnProperty = Object.prototype.hasOwnProperty,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n deprecatedAPIs = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown, didWarnAboutOldJSXRuntime;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = deprecatedAPIs.react_stack_bottom_frame.bind(\n deprecatedAPIs,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutMaps = !1,\n userProvidedKeyEscapeRegex = /\\/+/g,\n reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n didWarnAboutMessageChannel = !1,\n enqueueTaskImpl = null,\n actScopeDepth = 0,\n didWarnNoAwaitAct = !1,\n isFlushing = !1,\n queueSeveralMicrotasks =\n \"function\" === typeof queueMicrotask\n ? function (callback) {\n queueMicrotask(function () {\n return queueMicrotask(callback);\n });\n }\n : enqueueTask;\n deprecatedAPIs = Object.freeze({\n __proto__: null,\n c: function (size) {\n return resolveDispatcher().useMemoCache(size);\n }\n });\n var fnName = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\n exports.Activity = REACT_ACTIVITY_TYPE;\n exports.Children = fnName;\n exports.Component = Component;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.PureComponent = PureComponent;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\n exports.__COMPILER_RUNTIME = deprecatedAPIs;\n exports.act = function (callback) {\n var prevActQueue = ReactSharedInternals.actQueue,\n prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n var queue = (ReactSharedInternals.actQueue =\n null !== prevActQueue ? prevActQueue : []),\n didAwaitActCall = !1;\n try {\n var result = callback();\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n (popActScope(prevActQueue, prevActScopeDepth),\n (callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n if (\n null !== result &&\n \"object\" === typeof result &&\n \"function\" === typeof result.then\n ) {\n var thenable = result;\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);\"\n ));\n });\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n thenable.then(\n function (returnValue) {\n popActScope(prevActQueue, prevActScopeDepth);\n if (0 === prevActScopeDepth) {\n try {\n flushActQueue(queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue,\n resolve,\n reject\n );\n });\n } catch (error$0) {\n ReactSharedInternals.thrownErrors.push(error$0);\n }\n if (0 < ReactSharedInternals.thrownErrors.length) {\n var _thrownError = aggregateErrors(\n ReactSharedInternals.thrownErrors\n );\n ReactSharedInternals.thrownErrors.length = 0;\n reject(_thrownError);\n }\n } else resolve(returnValue);\n },\n function (error) {\n popActScope(prevActQueue, prevActScopeDepth);\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((error = aggregateErrors(\n ReactSharedInternals.thrownErrors\n )),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(error))\n : reject(error);\n }\n );\n }\n };\n }\n var returnValue$jscomp$0 = result;\n popActScope(prevActQueue, prevActScopeDepth);\n 0 === prevActScopeDepth &&\n (flushActQueue(queue),\n 0 !== queue.length &&\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\\n\\nawait act(() => ...)\"\n ));\n }),\n (ReactSharedInternals.actQueue = null));\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n ((callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n 0 === prevActScopeDepth\n ? ((ReactSharedInternals.actQueue = queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue$jscomp$0,\n resolve,\n reject\n );\n }))\n : resolve(returnValue$jscomp$0);\n }\n };\n };\n exports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n };\n exports.cacheSignal = function () {\n return null;\n };\n exports.captureOwnerStack = function () {\n var getCurrentStack = ReactSharedInternals.getCurrentStack;\n return null === getCurrentStack ? null : getCurrentStack();\n };\n exports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" +\n element +\n \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = element._owner;\n if (null != config) {\n var JSCompiler_inline_result;\n a: {\n if (\n hasOwnProperty.call(config, \"ref\") &&\n (JSCompiler_inline_result = Object.getOwnPropertyDescriptor(\n config,\n \"ref\"\n ).get) &&\n JSCompiler_inline_result.isReactWarning\n ) {\n JSCompiler_inline_result = !1;\n break a;\n }\n JSCompiler_inline_result = void 0 !== config.ref;\n }\n JSCompiler_inline_result && (owner = getOwner());\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (key = \"\" + config.key));\n for (propName in config)\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n }\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n JSCompiler_inline_result = Array(propName);\n for (var i = 0; i < propName; i++)\n JSCompiler_inline_result[i] = arguments[i + 2];\n props.children = JSCompiler_inline_result;\n }\n props = ReactElement(\n element.type,\n key,\n props,\n owner,\n element._debugStack,\n element._debugTask\n );\n for (key = 2; key < arguments.length; key++)\n validateChildKeys(arguments[key]);\n return props;\n };\n exports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n defaultValue._currentRenderer = null;\n defaultValue._currentRenderer2 = null;\n return defaultValue;\n };\n exports.createElement = function (type, config, children) {\n for (var i = 2; i < arguments.length; i++)\n validateChildKeys(arguments[i]);\n i = {};\n var key = null;\n if (null != config)\n for (propName in (didWarnAboutOldJSXRuntime ||\n !(\"__self\" in config) ||\n \"key\" in config ||\n ((didWarnAboutOldJSXRuntime = !0),\n console.warn(\n \"Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform\"\n )),\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (key = \"\" + config.key)),\n config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (i[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) i.children = children;\n else if (1 < childrenLength) {\n for (\n var childArray = Array(childrenLength), _i = 0;\n _i < childrenLength;\n _i++\n )\n childArray[_i] = arguments[_i + 2];\n Object.freeze && Object.freeze(childArray);\n i.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === i[propName] && (i[propName] = childrenLength[propName]);\n key &&\n defineKeyPropWarningGetter(\n i,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n var propName = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return ReactElement(\n type,\n key,\n i,\n getOwner(),\n propName ? Error(\"react-stack-top-frame\") : unknownOwnerDebugStack,\n propName ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.createRef = function () {\n var refObject = { current: null };\n Object.seal(refObject);\n return refObject;\n };\n exports.forwardRef = function (render) {\n null != render && render.$$typeof === REACT_MEMO_TYPE\n ? console.error(\n \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).\"\n )\n : \"function\" !== typeof render\n ? console.error(\n \"forwardRef requires a render function but was given %s.\",\n null === render ? \"null\" : typeof render\n )\n : 0 !== render.length &&\n 2 !== render.length &&\n console.error(\n \"forwardRef render functions accept exactly two parameters: props and ref. %s\",\n 1 === render.length\n ? \"Did you forget to use the ref parameter?\"\n : \"Any additional parameter will be undefined.\"\n );\n null != render &&\n null != render.defaultProps &&\n console.error(\n \"forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?\"\n );\n var elementType = { $$typeof: REACT_FORWARD_REF_TYPE, render: render },\n ownName;\n Object.defineProperty(elementType, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n render.name ||\n render.displayName ||\n (Object.defineProperty(render, \"name\", { value: name }),\n (render.displayName = name));\n }\n });\n return elementType;\n };\n exports.isValidElement = isValidElement;\n exports.lazy = function (ctor) {\n ctor = { _status: -1, _result: ctor };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: ctor,\n _init: lazyInitializer\n },\n ioInfo = {\n name: \"lazy\",\n start: -1,\n end: -1,\n value: null,\n owner: null,\n debugStack: Error(\"react-stack-top-frame\"),\n debugTask: console.createTask ? console.createTask(\"lazy()\") : null\n };\n ctor._ioInfo = ioInfo;\n lazyType._debugInfo = [{ awaited: ioInfo }];\n return lazyType;\n };\n exports.memo = function (type, compare) {\n null == type &&\n console.error(\n \"memo: The first argument must be a component. Instead received: %s\",\n null === type ? \"null\" : typeof type\n );\n compare = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n var ownName;\n Object.defineProperty(compare, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n type.name ||\n type.displayName ||\n (Object.defineProperty(type, \"name\", { value: name }),\n (type.displayName = name));\n }\n });\n return compare;\n };\n exports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n currentTransition._updatedFibers = new Set();\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n (ReactSharedInternals.asyncTransitions++,\n returnValue.then(releaseAsyncTransition, releaseAsyncTransition),\n returnValue.then(noop, reportGlobalError));\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null === prevTransition &&\n currentTransition._updatedFibers &&\n ((scope = currentTransition._updatedFibers.size),\n currentTransition._updatedFibers.clear(),\n 10 < scope &&\n console.warn(\n \"Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.\"\n )),\n null !== prevTransition &&\n null !== currentTransition.types &&\n (null !== prevTransition.types &&\n prevTransition.types !== currentTransition.types &&\n console.error(\n \"We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React.\"\n ),\n (prevTransition.types = currentTransition.types)),\n (ReactSharedInternals.T = prevTransition);\n }\n };\n exports.unstable_useCacheRefresh = function () {\n return resolveDispatcher().useCacheRefresh();\n };\n exports.use = function (usable) {\n return resolveDispatcher().use(usable);\n };\n exports.useActionState = function (action, initialState, permalink) {\n return resolveDispatcher().useActionState(\n action,\n initialState,\n permalink\n );\n };\n exports.useCallback = function (callback, deps) {\n return resolveDispatcher().useCallback(callback, deps);\n };\n exports.useContext = function (Context) {\n var dispatcher = resolveDispatcher();\n Context.$$typeof === REACT_CONSUMER_TYPE &&\n console.error(\n \"Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?\"\n );\n return dispatcher.useContext(Context);\n };\n exports.useDebugValue = function (value, formatterFn) {\n return resolveDispatcher().useDebugValue(value, formatterFn);\n };\n exports.useDeferredValue = function (value, initialValue) {\n return resolveDispatcher().useDeferredValue(value, initialValue);\n };\n exports.useEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useEffect(create, deps);\n };\n exports.useEffectEvent = function (callback) {\n return resolveDispatcher().useEffectEvent(callback);\n };\n exports.useId = function () {\n return resolveDispatcher().useId();\n };\n exports.useImperativeHandle = function (ref, create, deps) {\n return resolveDispatcher().useImperativeHandle(ref, create, deps);\n };\n exports.useInsertionEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useInsertionEffect(create, deps);\n };\n exports.useLayoutEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useLayoutEffect(create, deps);\n };\n exports.useMemo = function (create, deps) {\n return resolveDispatcher().useMemo(create, deps);\n };\n exports.useOptimistic = function (passthrough, reducer) {\n return resolveDispatcher().useOptimistic(passthrough, reducer);\n };\n exports.useReducer = function (reducer, initialArg, init) {\n return resolveDispatcher().useReducer(reducer, initialArg, init);\n };\n exports.useRef = function (initialValue) {\n return resolveDispatcher().useRef(initialValue);\n };\n exports.useState = function (initialState) {\n return resolveDispatcher().useState(initialState);\n };\n exports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n ) {\n return resolveDispatcher().useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n };\n exports.useTransition = function () {\n return resolveDispatcher().useTransition();\n };\n exports.version = \"19.2.1\";\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n", "/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n", "/**\n * @license React\n * react-dom.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function noop() {}\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n try {\n testStringCoercion(key);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n JSCompiler_inline_result &&\n (console.error(\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n key[Symbol.toStringTag]) ||\n key.constructor.name ||\n \"Object\"\n ),\n testStringCoercion(key));\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n }\n function getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n }\n function getValueDescriptorExpectingObjectForWarning(thing) {\n return null === thing\n ? \"`null`\"\n : void 0 === thing\n ? \"`undefined`\"\n : \"\" === thing\n ? \"an empty string\"\n : 'something with type \"' + typeof thing + '\"';\n }\n function getValueDescriptorExpectingEnumForWarning(thing) {\n return null === thing\n ? \"`null`\"\n : void 0 === thing\n ? \"`undefined`\"\n : \"\" === thing\n ? \"an empty string\"\n : \"string\" === typeof thing\n ? JSON.stringify(thing)\n : \"number\" === typeof thing\n ? \"`\" + thing + \"`\"\n : 'something with type \"' + typeof thing + '\"';\n }\n function resolveDispatcher() {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher;\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(\n \"Invalid form element. requestFormReset must be passed a form that was rendered by React.\"\n );\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n (\"function\" === typeof Map &&\n null != Map.prototype &&\n \"function\" === typeof Map.prototype.forEach &&\n \"function\" === typeof Set &&\n null != Set.prototype &&\n \"function\" === typeof Set.prototype.clear &&\n \"function\" === typeof Set.prototype.forEach) ||\n console.error(\n \"React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\"\n );\n exports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\n exports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(\"Target container is not a DOM element.\");\n return createPortal$1(children, container, null, key);\n };\n exports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn))\n return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f() &&\n console.error(\n \"flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.\"\n );\n }\n };\n exports.preconnect = function (href, options) {\n \"string\" === typeof href && href\n ? null != options && \"object\" !== typeof options\n ? console.error(\n \"ReactDOM.preconnect(): Expected the `options` argument (second) to be an object but encountered %s instead. The only supported option at this time is `crossOrigin` which accepts a string.\",\n getValueDescriptorExpectingEnumForWarning(options)\n )\n : null != options &&\n \"string\" !== typeof options.crossOrigin &&\n console.error(\n \"ReactDOM.preconnect(): Expected the `crossOrigin` option (second argument) to be a string but encountered %s instead. Try removing this option or passing a string value instead.\",\n getValueDescriptorExpectingObjectForWarning(options.crossOrigin)\n )\n : console.error(\n \"ReactDOM.preconnect(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.\",\n getValueDescriptorExpectingObjectForWarning(href)\n );\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n };\n exports.prefetchDNS = function (href) {\n if (\"string\" !== typeof href || !href)\n console.error(\n \"ReactDOM.prefetchDNS(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.\",\n getValueDescriptorExpectingObjectForWarning(href)\n );\n else if (1 < arguments.length) {\n var options = arguments[1];\n \"object\" === typeof options && options.hasOwnProperty(\"crossOrigin\")\n ? console.error(\n \"ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. It looks like the you are attempting to set a crossOrigin property for this DNS lookup hint. Browsers do not perform DNS queries using CORS and setting this attribute on the resource hint has no effect. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.\",\n getValueDescriptorExpectingEnumForWarning(options)\n )\n : console.error(\n \"ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.\",\n getValueDescriptorExpectingEnumForWarning(options)\n );\n }\n \"string\" === typeof href && Internals.d.D(href);\n };\n exports.preinit = function (href, options) {\n \"string\" === typeof href && href\n ? null == options || \"object\" !== typeof options\n ? console.error(\n \"ReactDOM.preinit(): Expected the `options` argument (second) to be an object with an `as` property describing the type of resource to be preinitialized but encountered %s instead.\",\n getValueDescriptorExpectingEnumForWarning(options)\n )\n : \"style\" !== options.as &&\n \"script\" !== options.as &&\n console.error(\n 'ReactDOM.preinit(): Expected the `as` property in the `options` argument (second) to contain a valid value describing the type of resource to be preinitialized but encountered %s instead. Valid values for `as` are \"style\" and \"script\".',\n getValueDescriptorExpectingEnumForWarning(options.as)\n )\n : console.error(\n \"ReactDOM.preinit(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.\",\n getValueDescriptorExpectingObjectForWarning(href)\n );\n if (\n \"string\" === typeof href &&\n options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence\n ? options.precedence\n : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n };\n exports.preinitModule = function (href, options) {\n var encountered = \"\";\n (\"string\" === typeof href && href) ||\n (encountered +=\n \" The `href` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(href) +\n \".\");\n void 0 !== options && \"object\" !== typeof options\n ? (encountered +=\n \" The `options` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options) +\n \".\")\n : options &&\n \"as\" in options &&\n \"script\" !== options.as &&\n (encountered +=\n \" The `as` option encountered was \" +\n getValueDescriptorExpectingEnumForWarning(options.as) +\n \".\");\n if (encountered)\n console.error(\n \"ReactDOM.preinitModule(): Expected up to two arguments, a non-empty `href` string and, optionally, an `options` object with a valid `as` property.%s\",\n encountered\n );\n else\n switch (\n ((encountered =\n options && \"string\" === typeof options.as ? options.as : \"script\"),\n encountered)\n ) {\n case \"script\":\n break;\n default:\n (encountered =\n getValueDescriptorExpectingEnumForWarning(encountered)),\n console.error(\n 'ReactDOM.preinitModule(): Currently the only supported \"as\" type for this function is \"script\" but received \"%s\" instead. This warning was generated for `href` \"%s\". In the future other module types will be supported, aligning with the import-attributes proposal. Learn more here: (https://github.com/tc39/proposal-import-attributes)',\n encountered,\n href\n );\n }\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as)\n (encountered = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n )),\n Internals.d.M(href, {\n crossOrigin: encountered,\n integrity:\n \"string\" === typeof options.integrity\n ? options.integrity\n : void 0,\n nonce:\n \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n } else null == options && Internals.d.M(href);\n };\n exports.preload = function (href, options) {\n var encountered = \"\";\n (\"string\" === typeof href && href) ||\n (encountered +=\n \" The `href` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(href) +\n \".\");\n null == options || \"object\" !== typeof options\n ? (encountered +=\n \" The `options` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options) +\n \".\")\n : (\"string\" === typeof options.as && options.as) ||\n (encountered +=\n \" The `as` option encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options.as) +\n \".\");\n encountered &&\n console.error(\n 'ReactDOM.preload(): Expected two arguments, a non-empty `href` string and an `options` object with an `as` property valid for a `<link rel=\"preload\" as=\"...\" />` tag.%s',\n encountered\n );\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n encountered = options.as;\n var crossOrigin = getCrossOriginStringAs(\n encountered,\n options.crossOrigin\n );\n Internals.d.L(href, encountered, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet\n ? options.imageSrcSet\n : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes\n ? options.imageSizes\n : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n };\n exports.preloadModule = function (href, options) {\n var encountered = \"\";\n (\"string\" === typeof href && href) ||\n (encountered +=\n \" The `href` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(href) +\n \".\");\n void 0 !== options && \"object\" !== typeof options\n ? (encountered +=\n \" The `options` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options) +\n \".\")\n : options &&\n \"as\" in options &&\n \"string\" !== typeof options.as &&\n (encountered +=\n \" The `as` option encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options.as) +\n \".\");\n encountered &&\n console.error(\n 'ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `<link rel=\"modulepreload\" as=\"...\" />` tag.%s',\n encountered\n );\n \"string\" === typeof href &&\n (options\n ? ((encountered = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n )),\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: encountered,\n integrity:\n \"string\" === typeof options.integrity\n ? options.integrity\n : void 0\n }))\n : Internals.d.m(href));\n };\n exports.requestFormReset = function (form) {\n Internals.d.r(form);\n };\n exports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n };\n exports.useFormState = function (action, initialState, permalink) {\n return resolveDispatcher().useFormState(action, initialState, permalink);\n };\n exports.useFormStatus = function () {\n return resolveDispatcher().useHostTransitionStatus();\n };\n exports.version = \"19.2.1\";\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n", "'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n", "import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * AnchorPicker \u2014 Shared Element Picker Overlay\n *\n * Full-page overlay that lets the user hover and click to select a DOM element.\n * Returns the element, its CSS selector, and a human-readable description.\n *\n * Renders via createPortal to document.body. Uses inline styles (not Tailwind)\n * because it lives outside the editor's style scope.\n *\n * EXCEPTION: This component MUST stay on document.body (not in shadow root).\n * It uses document.elementFromPoint() to detect host page elements under the\n * cursor. If placed inside a shadow root, the overlay would block detection\n * of underlying host elements.\n *\n * Instructions / cancel UI should be rendered by the consumer in their own\n * panel \u2014 this component only provides the page overlay.\n */\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { generateSelector, getElementDescription, validateSelector, } from '../utils/selectorGenerator';\nconst HIGHLIGHT_COLOR = '#3b82f6';\nconst HIGHLIGHT_BG = 'rgba(59, 130, 246, 0.1)';\nexport function AnchorPicker({ isActive, onPick, onCancel, passthroughClicks = false, excludeSelector = '[data-syntro-editor-panel], [data-shadow-canvas-id], .syntro-tooltip, .syntro-modal, .syntro-highlight, [data-syntro-anchor-picker]', }) {\n const [hoveredElement, setHoveredElement] = useState(null);\n const [hoveredSelector, setHoveredSelector] = useState('');\n const overlayRef = useRef(null);\n const handleMouseMove = useCallback((e) => {\n const overlay = overlayRef.current;\n // In passthrough mode the overlay is already pointerEvents:'none',\n // so elementFromPoint can see through it \u2014 no toggle needed.\n // In non-passthrough mode, temporarily disable to detect elements underneath.\n if (overlay && !passthroughClicks) {\n overlay.style.pointerEvents = 'none';\n }\n const elementAtPoint = document.elementFromPoint(e.clientX, e.clientY);\n if (overlay && !passthroughClicks) {\n overlay.style.pointerEvents = 'auto';\n }\n if (!elementAtPoint) {\n setHoveredElement(null);\n setHoveredSelector('');\n return;\n }\n if (excludeSelector && elementAtPoint.closest(excludeSelector)) {\n setHoveredElement(null);\n setHoveredSelector('');\n return;\n }\n if (['HTML', 'BODY', 'HEAD'].includes(elementAtPoint.tagName)) {\n setHoveredElement(null);\n setHoveredSelector('');\n return;\n }\n setHoveredElement(elementAtPoint);\n const selector = generateSelector(elementAtPoint);\n setHoveredSelector(selector);\n }, [excludeSelector, passthroughClicks]);\n const handleClick = useCallback((e) => {\n if (passthroughClicks)\n return; // Let click propagate to PostHog\n e.preventDefault();\n e.stopPropagation();\n if (hoveredElement && hoveredSelector) {\n if (validateSelector(hoveredSelector, hoveredElement)) {\n onPick({\n element: hoveredElement,\n selector: hoveredSelector,\n description: getElementDescription(hoveredElement),\n });\n }\n else {\n const newSelector = generateSelector(hoveredElement);\n onPick({\n element: hoveredElement,\n selector: newSelector,\n description: getElementDescription(hoveredElement),\n });\n }\n }\n }, [passthroughClicks, hoveredElement, hoveredSelector, onPick]);\n const handleKeyDown = useCallback((e) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n onCancel();\n }\n }, [onCancel]);\n useEffect(() => {\n if (!isActive)\n return;\n document.addEventListener('mousemove', handleMouseMove, true);\n // In passthrough mode, don't register click handler \u2014 let clicks reach PostHog\n if (!passthroughClicks) {\n document.addEventListener('click', handleClick, true);\n }\n document.addEventListener('keydown', handleKeyDown, true);\n return () => {\n document.removeEventListener('mousemove', handleMouseMove, true);\n if (!passthroughClicks) {\n document.removeEventListener('click', handleClick, true);\n }\n document.removeEventListener('keydown', handleKeyDown, true);\n };\n }, [isActive, passthroughClicks, handleMouseMove, handleClick, handleKeyDown]);\n if (!isActive)\n return null;\n const rect = hoveredElement?.getBoundingClientRect();\n return createPortal(_jsxs(\"div\", { ref: overlayRef, \"data-syntro-anchor-picker\": true, style: {\n position: 'fixed',\n inset: 0,\n cursor: 'crosshair',\n zIndex: 2147483644,\n pointerEvents: passthroughClicks ? 'none' : undefined,\n }, children: [_jsx(\"div\", { style: {\n position: 'absolute',\n inset: 0,\n background: 'rgba(0, 0, 0, 0.08)',\n pointerEvents: 'none',\n } }), hoveredElement && rect && (_jsx(\"div\", { style: {\n position: 'fixed',\n left: rect.left - 2,\n top: rect.top - 2,\n width: rect.width + 4,\n height: rect.height + 4,\n border: `2px solid ${HIGHLIGHT_COLOR}`,\n backgroundColor: HIGHLIGHT_BG,\n borderRadius: '4px',\n boxShadow: '0 0 0 9999px rgba(0, 0, 0, 0.2)',\n pointerEvents: 'none',\n transition: 'all 0.1s ease-out',\n } })), hoveredElement && rect && (_jsxs(\"div\", { className: \"se-text-xs\", style: {\n position: 'fixed',\n left: Math.max(8, Math.min(rect.left, window.innerWidth - 320)),\n top: Math.max(8, rect.top - 68),\n backgroundColor: '#1e293b',\n color: '#e2e8f0',\n padding: '8px 12px',\n borderRadius: '6px',\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.3)',\n zIndex: 1,\n fontFamily: 'monospace',\n maxWidth: '300px',\n pointerEvents: 'none',\n }, children: [_jsx(\"div\", { className: \"se-text-xs\", style: {\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n marginBottom: '4px',\n color: '#94a3b8',\n }, children: \"Click to select\" }), _jsx(\"div\", { style: {\n color: '#38bdf8',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }, children: hoveredSelector }), _jsx(\"div\", { style: {\n marginTop: '4px',\n color: '#cbd5e1',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }, children: getElementDescription(hoveredElement) })] }))] }), document.body);\n}\n", "/**\n * Guard function that checks if provided `input` is an Element.\n */\nexport function isElement(input: unknown): input is Element {\n return (\n typeof input === \"object\" &&\n input !== null &&\n (input as Element).nodeType === Node.ELEMENT_NODE\n );\n}\n", "declare const opaqueId: unique symbol;\n\ndeclare interface Tagged<Token> {\n readonly [opaqueId]: Token;\n}\n\nexport type Opaque<Type, Token = unknown> = Type & Tagged<Token>;\n\nexport type ObjectValues<T> = T[keyof T];\n\n// TODO rename to \"CssSelector\"\nexport type CssSelectorGenerated = Opaque<string, \"CssSelector\">;\n\nexport const OPERATOR = {\n NONE: \"\",\n DESCENDANT: \" \",\n CHILD: \" > \",\n} as const;\n\nexport type OperatorValue = ObjectValues<typeof OPERATOR>;\n\nexport interface ElementSelectorData {\n value: CssSelectorGenerated;\n include: boolean;\n}\n\nexport interface ElementData {\n element: Element;\n operator: OperatorValue;\n selectors: Partial<Record<CssSelectorType, ElementSelectorData[]>>;\n}\n\nexport type CssSelector = string;\nexport type CssSelectors = CssSelector[];\n\ntype CssSelectorMatchFn = (input: string) => boolean;\nexport type CssSelectorMatch = RegExp | string | CssSelectorMatchFn;\n\nexport const CSS_SELECTOR_TYPE = {\n id: \"id\",\n class: \"class\",\n tag: \"tag\",\n attribute: \"attribute\",\n nthchild: \"nthchild\",\n nthoftype: \"nthoftype\",\n} as const;\n\nexport type CssSelectorType = ObjectValues<typeof CSS_SELECTOR_TYPE>;\nexport type CssSelectorTypes = CssSelectorType[];\n\nexport type CssSelectorsByType = Partial<Record<CssSelectorType, CssSelectors>>;\n\nexport type CssSelectorData = Partial<\n Record<CssSelectorType, string[] | string[][]>\n>;\n\nexport type CssSelectorGeneratorOptionsInput = Partial<{\n // List of selector types to use. They will be prioritised by their order.\n selectors: CssSelectorTypes;\n // List of selectors that should be prioritised.\n whitelist: CssSelectorMatch[];\n // List of selectors that should be ignored.\n blacklist: CssSelectorMatch[];\n // Root element inside which the selector will be generated. If not set, the document root will be used.\n root: ParentNode | null;\n // If set to `true`, the generator will test combinations of selectors of single type (e.g. multiple class selectors).\n combineWithinSelector: boolean;\n // If set to `true`, the generator will try to test combinations of selectors of different types (e.g. tag + class name).\n combineBetweenSelectors: boolean;\n // If set to `true`, all generated selectors will include the TAG part. Even if tag selector type is not included in `selectors` option.\n includeTag: boolean;\n // Maximum number of combinations of a selector type. This is handy for performance reasons, e.g. when elements have too many classnames.\n maxCombinations: number;\n // Maximum number of selector candidates to be tested for each element. This is handy for performance reasons, e.g. when elements can produce large number of combinations of various types of selectors.\n maxCandidates: number;\n // Experimental. If set to `true` and the \"root\" option is set, the fallback selectors will use \":scope\" pseudo-class to make the selectors shorter and simpler.\n useScope: boolean;\n // Limits the number of results (selectors) to be generated.\n maxResults: number;\n}>;\n\nexport type CssSelectorGeneratorOptions = Required<\n Omit<CssSelectorGeneratorOptionsInput, \"selectors\"> & {\n selectors: CssSelectorTypes;\n }\n>;\n\nexport interface IdentifiableParent {\n foundElements: Element[];\n selector: CssSelector;\n}\n\nexport type PatternMatcher = (input: string) => boolean;\n", "/**\n * Checks whether value is one of the enum's values.\n */\nexport function isEnumValue<T extends Record<string, unknown>>(\n haystack: T,\n needle: unknown,\n): needle is T[keyof T] {\n return Object.values(haystack).includes(needle);\n}\n", "const libraryName = \"CssSelectorGenerator\";\n\n/**\n * Convenient wrapper for `console.warn` using consistent formatting.\n */\nexport function showWarning(id = \"unknown problem\", ...args: unknown[]): void {\n // eslint-disable-next-line no-console\n console.warn(`${libraryName}: ${id}`, ...args);\n}\n", "import {\n CSS_SELECTOR_TYPE,\n CssSelectorGeneratorOptions,\n CssSelectorMatch,\n CssSelectorTypes,\n} from \"./types.js\";\nimport { getRootNode } from \"./utilities-dom.js\";\nimport { isEnumValue } from \"./utilities-typescript.js\";\nimport { showWarning } from \"./utilities-messages.js\";\n\nexport const DEFAULT_OPTIONS = {\n selectors: [\n CSS_SELECTOR_TYPE.id,\n CSS_SELECTOR_TYPE.class,\n CSS_SELECTOR_TYPE.tag,\n CSS_SELECTOR_TYPE.attribute,\n ] as CssSelectorTypes,\n // if set to true, always include tag name\n includeTag: false,\n whitelist: [] as CssSelectorMatch[],\n blacklist: [] as CssSelectorMatch[],\n combineWithinSelector: true,\n combineBetweenSelectors: true,\n root: null,\n maxCombinations: Number.POSITIVE_INFINITY,\n maxCandidates: Number.POSITIVE_INFINITY,\n useScope: false,\n} as CssSelectorGeneratorOptions;\n\n/**\n * Makes sure returned value is a list containing only valid selector types.\n * @param input\n */\nexport function sanitizeSelectorTypes(input: unknown): CssSelectorTypes {\n if (!Array.isArray(input)) {\n return [];\n }\n return input.filter((item) => isEnumValue(CSS_SELECTOR_TYPE, item));\n}\n\n/**\n * Checks whether provided value is of type RegExp.\n */\nexport function isRegExp(input: unknown): input is RegExp {\n return input instanceof RegExp;\n}\n\n/**\n * Checks whether provided value is usable in whitelist or blacklist.\n * @param input\n */\nexport function isCssSelectorMatch(input: unknown): input is CssSelectorMatch {\n return [\"string\", \"function\"].includes(typeof input) || isRegExp(input);\n}\n\n/**\n * Converts input to a list of valid values for whitelist or blacklist.\n */\nexport function sanitizeCssSelectorMatchList(\n input: unknown,\n): CssSelectorMatch[] {\n if (!Array.isArray(input)) {\n return [];\n }\n return input.filter(isCssSelectorMatch);\n}\n\n/**\n * Checks whether provided value is valid Node.\n */\nexport function isNode(input: unknown): input is Node {\n return input instanceof Node;\n}\n\n/**\n * Checks whether provided value is valid ParentNode.\n */\nexport function isParentNode(input: unknown): input is ParentNode {\n const validParentNodeTypes: number[] = [\n Node.DOCUMENT_NODE,\n Node.DOCUMENT_FRAGMENT_NODE, // this includes Shadow DOM root\n Node.ELEMENT_NODE,\n ];\n\n return isNode(input) && validParentNodeTypes.includes(input.nodeType);\n}\n\n/**\n * Makes sure that the root node in options is valid.\n */\nexport function sanitizeRoot(input: unknown, element: Element): ParentNode {\n if (isParentNode(input)) {\n if (!input.contains(element)) {\n showWarning(\n \"element root mismatch\",\n \"Provided root does not contain the element. This will most likely result in producing a fallback selector using element's real root node. If you plan to use the selector using provided root (e.g. `root.querySelector`), it will not work as intended.\",\n );\n }\n return input;\n }\n\n const rootNode = element.getRootNode({ composed: false });\n if (isParentNode(rootNode)) {\n if (rootNode !== document) {\n showWarning(\n \"shadow root inferred\",\n \"You did not provide a root and the element is a child of Shadow DOM. This will produce a selector using ShadowRoot as a root. If you plan to use the selector using document as a root (e.g. `document.querySelector`), it will not work as intended.\",\n );\n }\n return rootNode;\n }\n\n return getRootNode(element);\n}\n\n/**\n * Makes sure that the output is a number, usable as `maxResults` option in\n * powerset generator.\n */\nexport function sanitizeMaxNumber(input?: unknown): number {\n return typeof input === \"number\" ? input : Number.POSITIVE_INFINITY;\n}\n\n/**\n * Makes sure the options object contains all required keys.\n */\nexport function sanitizeOptions(\n element: Element,\n custom_options = {},\n): CssSelectorGeneratorOptions {\n const options = {\n ...DEFAULT_OPTIONS,\n ...custom_options,\n };\n\n return {\n selectors: sanitizeSelectorTypes(options.selectors),\n whitelist: sanitizeCssSelectorMatchList(options.whitelist),\n blacklist: sanitizeCssSelectorMatchList(options.blacklist),\n root: sanitizeRoot(options.root, element),\n combineWithinSelector: !!options.combineWithinSelector,\n combineBetweenSelectors: !!options.combineBetweenSelectors,\n includeTag: !!options.includeTag,\n maxCombinations: sanitizeMaxNumber(options.maxCombinations),\n maxCandidates: sanitizeMaxNumber(options.maxCandidates),\n useScope: !!options.useScope,\n maxResults: sanitizeMaxNumber(options.maxResults),\n };\n}\n", "import { CssSelectorMatch, PatternMatcher } from \"./types.js\";\nimport { isRegExp } from \"./utilities-options.js\";\nimport { showWarning } from \"./utilities-messages.js\";\n\n/**\n * Creates array containing only items included in all input arrays.\n */\nexport function getIntersection<T>(items: T[][] = []): T[] {\n const [firstItem = [], ...otherItems] = items;\n if (otherItems.length === 0) {\n return firstItem;\n }\n return otherItems.reduce((accumulator, currentValue) => {\n return accumulator.filter((item) => currentValue.includes(item));\n }, firstItem);\n}\n\n/**\n * Converts array of arrays into a flat array.\n */\nexport function flattenArray<T>(input: T[][]): T[] {\n return ([] as T[]).concat(...input);\n}\n\n/**\n * Convert string that can contain wildcards (asterisks) to RegExp source.\n */\nexport function wildcardToRegExp(input: string): string {\n return (\n input\n // convert all special characters used by RegExp, except an asterisk\n .replace(/[|\\\\{}()[\\]^$+?.]/g, \"\\\\$&\")\n // convert asterisk to pattern that matches anything\n .replace(/\\*/g, \".+\")\n );\n}\n\n/**\n * Creates function that will test list of provided matchers against input.\n * Used for white/blacklist functionality.\n */\nexport function createPatternMatcher(list: CssSelectorMatch[]): PatternMatcher {\n const matchFunctions = list.map((item) => {\n if (isRegExp(item)) {\n return (input: string) => item.test(input);\n }\n\n if (typeof item === \"function\") {\n return (input: string) => {\n const result = item(input);\n if (typeof result !== \"boolean\") {\n showWarning(\n \"pattern matcher function invalid\",\n \"Provided pattern matching function does not return boolean. It's result will be ignored.\",\n item,\n );\n return false;\n }\n return result;\n };\n }\n\n if (typeof item === \"string\") {\n const re = new RegExp(\"^\" + wildcardToRegExp(item) + \"$\");\n return (input: string) => re.test(input);\n }\n\n showWarning(\n \"pattern matcher invalid\",\n \"Pattern matching only accepts strings, regular expressions and/or functions. This item is invalid and will be ignored.\",\n item,\n );\n return () => false;\n });\n\n return (input: string) =>\n matchFunctions.some((matchFunction) => matchFunction(input));\n}\n", "import { isElement } from \"./utilities-iselement.js\";\nimport { CssSelector } from \"./types.js\";\nimport { getIntersection } from \"./utilities-data.js\";\nimport { sanitizeRoot } from \"./utilities-options.js\";\n\n/**\n * Check whether element is matched uniquely by selector.\n */\nexport function testSelector(\n elements: Element[],\n selector: CssSelector,\n root?: Node,\n): boolean {\n const result = Array.from(\n sanitizeRoot(root, elements[0]).querySelectorAll(selector),\n );\n return (\n result.length === elements.length &&\n elements.every((element) => result.includes(element))\n );\n}\n\n/**\n * Test whether selector targets element. It does not have to be a unique match.\n */\nexport function testMultiSelector(\n element: Element,\n selector: CssSelector,\n root: ParentNode,\n): boolean {\n const result = Array.from(\n sanitizeRoot(root, element).querySelectorAll(selector),\n );\n return result.includes(element);\n}\n\n/**\n * Find all parents of a single element.\n */\nexport function getElementParents(\n element: Element,\n root?: ParentNode,\n): Element[] {\n root = root ?? getRootNode(element);\n const result = [];\n let parent: Element | null = element;\n while (isElement(parent) && parent !== root) {\n result.push(parent);\n parent = parent.parentElement;\n }\n return result;\n}\n\n/**\n * Find all common parents of elements.\n */\nexport function getParents(elements: Element[], root?: ParentNode): Element[] {\n return getIntersection(\n elements.map((element) => getElementParents(element, root)),\n );\n}\n\n/**\n * Returns root node for given element. This needs to be used because of document-less environments, e.g. jsdom.\n */\nexport function getRootNode(element: Element): ParentNode {\n // The `:root` selector always returns a parent node. The `null` return value is not applicable here.\n return element.ownerDocument.querySelector(\":root\") as ParentNode;\n}\n", "import { CSS_SELECTOR_TYPE } from \"./types.js\";\n\nexport const SELECTOR_SEPARATOR = \", \";\n\n// RegExp that will match invalid patterns that can be used in ID attribute.\nexport const INVALID_ID_RE = new RegExp(\n [\n \"^$\", // empty or not set\n \"\\\\s\", // contains whitespace\n ].join(\"|\"),\n);\n\n// RegExp that will match invalid patterns that can be used in class attribute.\nexport const INVALID_CLASS_RE = new RegExp(\n [\n \"^$\", // empty or not set\n ].join(\"|\"),\n);\n\n// Order in which a combined selector is constructed.\nexport const SELECTOR_PATTERN = [\n CSS_SELECTOR_TYPE.nthoftype,\n CSS_SELECTOR_TYPE.tag,\n CSS_SELECTOR_TYPE.id,\n CSS_SELECTOR_TYPE.class,\n CSS_SELECTOR_TYPE.attribute,\n CSS_SELECTOR_TYPE.nthchild,\n];\n", "import { sanitizeSelectorItem } from \"./utilities-selectors.js\";\nimport { createPatternMatcher, getIntersection } from \"./utilities-data.js\";\nimport { CssSelectorGenerated } from \"./types.js\";\n\ninterface AttributeData {\n name: string;\n value: string;\n}\n\n// List of attributes to be ignored. These are handled by different selector types.\nexport const attributeBlacklistMatch = createPatternMatcher([\n \"class\",\n \"id\",\n // Angular attributes\n \"ng-*\",\n]);\n\n/**\n * Get simplified attribute selector for an element.\n */\nexport function attributeNodeToSimplifiedSelector({\n name,\n}: AttributeData): CssSelectorGenerated {\n return `[${name}]` as CssSelectorGenerated;\n}\n\n/**\n * Get attribute selector for an element.\n */\nexport function attributeNodeToSelector({\n name,\n value,\n}: AttributeData): CssSelectorGenerated {\n return `[${name}='${value}']` as CssSelectorGenerated;\n}\n\n/**\n * Checks whether an attribute should be used as a selector.\n */\nexport function isValidAttributeNode(\n { nodeName, nodeValue }: Node,\n element: Element,\n): boolean {\n // form input value should not be used as a selector\n const tagName = element.tagName.toLowerCase();\n if ([\"input\", \"option\"].includes(tagName) && nodeName === \"value\") {\n return false;\n }\n\n // ignore Base64-encoded strings as 'src' attribute values (e.g. in tags like img, audio, video, iframe, object, embed).\n if (nodeName === \"src\" && nodeValue?.startsWith(\"data:\")) {\n return false;\n }\n\n return !attributeBlacklistMatch(nodeName);\n}\n\n/**\n * Sanitize all attribute data. We want to do it once, before we start to generate simplified/full selectors from the same data.\n */\nfunction sanitizeAttributeData({ nodeName, nodeValue }: Node): AttributeData {\n return {\n name: sanitizeSelectorItem(nodeName),\n value: sanitizeSelectorItem(nodeValue ?? undefined),\n };\n}\n\n/**\n * Get attribute selectors for an element.\n */\nexport function getElementAttributeSelectors(\n element: Element,\n): CssSelectorGenerated[] {\n const validAttributes = Array.from(element.attributes)\n .filter((attributeNode) => isValidAttributeNode(attributeNode, element))\n .map(sanitizeAttributeData);\n return [\n ...validAttributes.map(attributeNodeToSimplifiedSelector),\n ...validAttributes.map(attributeNodeToSelector),\n ];\n}\n\n/**\n * Get attribute selectors matching all elements.\n */\nexport function getAttributeSelectors(\n elements: Element[],\n): CssSelectorGenerated[] {\n const elementSelectors = elements.map(getElementAttributeSelectors);\n return getIntersection(elementSelectors);\n}\n", "import { sanitizeSelectorItem } from \"./utilities-selectors.js\";\nimport { INVALID_CLASS_RE } from \"./constants.js\";\nimport { CssSelectorGenerated } from \"./types.js\";\nimport { getIntersection } from \"./utilities-data.js\";\n\n/**\n * Get class selectors for an element.\n */\nexport function getElementClassSelectors(\n element: Element,\n): CssSelectorGenerated[] {\n return (element.getAttribute(\"class\") ?? \"\")\n .trim()\n .split(/\\s+/)\n .filter((item) => !INVALID_CLASS_RE.test(item))\n .map((item) => `.${sanitizeSelectorItem(item)}` as CssSelectorGenerated);\n}\n\n/**\n * Get class selectors matching all elements.\n */\nexport function getClassSelectors(elements: Element[]): CssSelectorGenerated[] {\n const elementSelectors = elements.map(getElementClassSelectors);\n return getIntersection(elementSelectors);\n}\n", "import { sanitizeSelectorItem } from \"./utilities-selectors.js\";\nimport { INVALID_ID_RE } from \"./constants.js\";\nimport { testSelector } from \"./utilities-dom.js\";\nimport { CssSelectorGenerated } from \"./types.js\";\n\n/**\n * Get ID selector for an element.\n * */\nexport function getElementIdSelectors(\n element: Element,\n): CssSelectorGenerated[] {\n const id = element.getAttribute(\"id\") ?? \"\";\n const selector = `#${sanitizeSelectorItem(id)}` as CssSelectorGenerated;\n const rootNode = element.getRootNode({ composed: false });\n return !INVALID_ID_RE.test(id) && testSelector([element], selector, rootNode)\n ? [selector]\n : [];\n}\n\n/**\n * Get ID selector for an element.\n */\nexport function getIdSelector(elements: Element[]): CssSelectorGenerated[] {\n return elements.length === 0 || elements.length > 1\n ? []\n : getElementIdSelectors(elements[0]);\n}\n", "import { CssSelectorGenerated } from \"./types.js\";\nimport { getIntersection } from \"./utilities-data.js\";\n\n/**\n * Get nth-child selector for an element.\n */\nexport function getElementNthChildSelector(\n element: Element,\n): CssSelectorGenerated[] {\n const siblings = element.parentElement?.children;\n if (siblings) {\n for (let i = 0; i < siblings.length; i++) {\n if (siblings[i] === element) {\n return [`:nth-child(${String(i + 1)})` as CssSelectorGenerated];\n }\n }\n }\n\n return [];\n}\n\n/**\n * Get nth-child selector matching all elements.\n */\nexport function getNthChildSelector(\n elements: Element[],\n): CssSelectorGenerated[] {\n return getIntersection(elements.map(getElementNthChildSelector));\n}\n", "import { sanitizeSelectorItem } from \"./utilities-selectors.js\";\nimport { CssSelector, CssSelectorGenerated } from \"./types.js\";\nimport { flattenArray } from \"./utilities-data.js\";\n\n/**\n * Get tag selector for an element.\n */\nexport function getElementTagSelectors(\n element: Element,\n): CssSelectorGenerated[] {\n return [\n sanitizeSelectorItem(element.tagName.toLowerCase()) as CssSelectorGenerated,\n ];\n}\n\n/**\n * Get tag selector for list of elements.\n */\nexport function getTagSelector(elements: Element[]): CssSelector[] {\n const selectors = [\n ...new Set(flattenArray(elements.map(getElementTagSelectors))),\n ];\n return selectors.length === 0 || selectors.length > 1 ? [] : [selectors[0]];\n}\n", "import { getTagSelector } from \"./selector-tag.js\";\nimport { CssSelectorGenerated } from \"./types.js\";\nimport { getIntersection } from \"./utilities-data.js\";\n\n/**\n * Get nth-of-type selector for an element.\n */\nexport function getElementNthOfTypeSelector(\n element: Element,\n): CssSelectorGenerated[] {\n const tag = getTagSelector([element])[0];\n const parentElement = element.parentElement;\n\n if (parentElement) {\n const siblings = Array.from(parentElement.children).filter(\n (element) => element.tagName.toLowerCase() === tag,\n );\n const elementIndex = siblings.indexOf(element);\n if (elementIndex > -1) {\n return [\n `${tag}:nth-of-type(${String(elementIndex + 1)})` as CssSelectorGenerated,\n ];\n }\n }\n\n return [];\n}\n\n/**\n * Get Nth-of-type selector matching all elements.\n */\nexport function getNthOfTypeSelector(\n elements: Element[],\n): CssSelectorGenerated[] {\n return getIntersection(elements.map(getElementNthOfTypeSelector));\n}\n", "interface powerSetGeneratorOptions {\n maxResults?: number;\n}\n\nexport function* powerSetGenerator<T>(\n input: T[] = [],\n { maxResults = Number.POSITIVE_INFINITY }: powerSetGeneratorOptions = {},\n): IterableIterator<T[]> {\n let resultCounter = 0;\n let offsets = generateOffsets(1);\n\n while (offsets.length <= input.length && resultCounter < maxResults) {\n resultCounter += 1;\n const result = offsets.map((offset) => input[offset]);\n yield result;\n offsets = bumpOffsets(offsets, input.length - 1);\n }\n}\n\n/**\n * Generates power set of input items.\n */\nexport function getPowerSet<T>(\n input: T[] = [],\n { maxResults = Number.POSITIVE_INFINITY }: powerSetGeneratorOptions = {},\n): T[][] {\n return Array.from(powerSetGenerator(input, { maxResults }));\n}\n\n/**\n * Helper function used by `getPowerSet`. Updates internal pointers.\n */\nfunction bumpOffsets(offsets: number[] = [], maxValue = 0): number[] {\n const size = offsets.length;\n if (size === 0) {\n return [];\n }\n const result = [...offsets];\n result[size - 1] += 1;\n for (let index = size - 1; index >= 0; index--) {\n if (result[index] > maxValue) {\n if (index === 0) {\n return generateOffsets(size + 1);\n } else {\n result[index - 1]++;\n result[index] = result[index - 1] + 1;\n }\n }\n }\n\n if (result[size - 1] > maxValue) {\n return generateOffsets(size + 1);\n }\n\n return result;\n}\n\n/**\n * Generates array of size N, filled with numbers sequence starting from 0.\n */\nfunction generateOffsets(size = 1): number[] {\n return Array.from(Array(size).keys());\n}\n", "/**\n * Generates cartesian product out of input object.\n */\nexport function* cartesianProductGenerator<T>(\n input: Record<string, T[]> = {},\n): Generator<Record<string, T>> {\n const entries = Object.entries(input);\n if (entries.length === 0) return;\n\n // Use iterative stack-based approach to yield results one at a time\n // This avoids recursion overhead while maintaining lazy evaluation\n const stack: { index: number; partial: Record<string, T> }[] = [\n { index: entries.length - 1, partial: {} },\n ];\n\n while (stack.length > 0) {\n const item = stack.pop();\n if (!item) break;\n const { index, partial } = item;\n\n if (index < 0) {\n yield partial;\n continue;\n }\n\n const [key, values] = entries[index];\n // Push in reverse order so we process in correct order\n for (let i = values.length - 1; i >= 0; i--) {\n stack.push({\n index: index - 1,\n partial: { ...partial, [key]: values[i] },\n });\n }\n }\n}\n", "import { SELECTOR_PATTERN } from \"./constants.js\";\nimport {\n getAttributeSelectors,\n getElementAttributeSelectors,\n} from \"./selector-attribute.js\";\nimport {\n getClassSelectors,\n getElementClassSelectors,\n} from \"./selector-class.js\";\nimport { getElementIdSelectors, getIdSelector } from \"./selector-id.js\";\nimport {\n getElementNthChildSelector,\n getNthChildSelector,\n} from \"./selector-nth-child.js\";\nimport {\n getElementNthOfTypeSelector,\n getNthOfTypeSelector,\n} from \"./selector-nth-of-type.js\";\nimport { getElementTagSelectors, getTagSelector } from \"./selector-tag.js\";\nimport { createPatternMatcher } from \"./utilities-data.js\";\nimport { getParents, testSelector } from \"./utilities-dom.js\";\nimport {\n CSS_SELECTOR_TYPE,\n CssSelector,\n CssSelectorData,\n CssSelectorGenerated,\n CssSelectorGeneratorOptions,\n CssSelectorType,\n CssSelectorTypes,\n IdentifiableParent,\n OPERATOR,\n PatternMatcher,\n} from \"./types.js\";\nimport { isElement } from \"./utilities-iselement.js\";\nimport { getPowerSet, powerSetGenerator } from \"./utilities-powerset.js\";\nimport { cartesianProductGenerator } from \"./utilities-cartesian.js\";\n\nexport const ESCAPED_COLON = \":\".charCodeAt(0).toString(16).toUpperCase();\n\n// Square brackets need to be escaped, but eslint has a problem with that.\n/* eslint-disable-next-line no-useless-escape */\nexport const SPECIAL_CHARACTERS_RE = /[ !\"#$%&'()\\[\\]{|}<>*+,./;=?@^`~\\\\]/;\n\n/**\n * Escapes special characters used by CSS selector items.\n */\nexport function sanitizeSelectorItem(input = \"\"): string {\n // This should not be necessary, but just to be sure, let's keep the legacy sanitizer in place, for backwards compatibility.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return CSS ? CSS.escape(input) : legacySanitizeSelectorItem(input);\n}\n\n/**\n * Legacy version of escaping utility, originally used for IE11-. Should\n * probably be replaced by a polyfill:\n * https://github.com/mathiasbynens/CSS.escape\n */\nexport function legacySanitizeSelectorItem(input = \"\"): string {\n return input\n .split(\"\")\n .map((character) => {\n if (character === \":\") {\n return `\\\\${ESCAPED_COLON} `;\n }\n if (SPECIAL_CHARACTERS_RE.test(character)) {\n return `\\\\${character}`;\n }\n\n // needed for backwards compatibility\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return escape(character).replace(/%/g, \"\\\\\");\n })\n .join(\"\");\n}\n\nexport const SELECTOR_TYPE_GETTERS: Record<\n CssSelectorType,\n (elements: Element[]) => CssSelector[]\n> = {\n tag: getTagSelector,\n id: getIdSelector,\n class: getClassSelectors,\n attribute: getAttributeSelectors,\n nthchild: getNthChildSelector,\n nthoftype: getNthOfTypeSelector,\n} as const;\n\nexport const ELEMENT_SELECTOR_TYPE_GETTERS: Record<\n CssSelectorType,\n (element: Element) => CssSelectorGenerated[]\n> = {\n tag: getElementTagSelectors,\n id: getElementIdSelectors,\n class: getElementClassSelectors,\n attribute: getElementAttributeSelectors,\n nthchild: getElementNthChildSelector,\n nthoftype: getElementNthOfTypeSelector,\n} as const;\n\n/**\n * Creates selector of given type for single element.\n */\nexport function getElementSelectorsByType(\n element: Element,\n selectorType: CssSelectorType,\n): CssSelectorGenerated[] {\n return ELEMENT_SELECTOR_TYPE_GETTERS[selectorType](element);\n}\n\n/**\n * Returns list of selectors of given type for the element.\n */\nexport function getSelectorsByType(\n elements: Element[],\n selector_type: CssSelectorType,\n): CssSelector[] {\n const getter = SELECTOR_TYPE_GETTERS[selector_type];\n return getter(elements);\n}\n\n/**\n * Remove blacklisted selectors from list.\n */\nexport function filterSelectors(\n list: CssSelector[] = [],\n matchBlacklist: PatternMatcher,\n matchWhitelist: PatternMatcher,\n): CssSelector[] {\n return list.filter((item) => matchWhitelist(item) || !matchBlacklist(item));\n}\n\n/**\n * Prioritise whitelisted selectors in list.\n */\nexport function orderSelectors(\n list: CssSelector[] = [],\n matchWhitelist: PatternMatcher,\n): CssSelector[] {\n return list.sort((a, b) => {\n const a_is_whitelisted = matchWhitelist(a);\n const b_is_whitelisted = matchWhitelist(b);\n if (a_is_whitelisted && !b_is_whitelisted) {\n return -1;\n }\n if (!a_is_whitelisted && b_is_whitelisted) {\n return 1;\n }\n return 0;\n });\n}\n\n/**\n * Yields list of unique selectors applicable to given element.\n */\nexport function* allSelectorsGenerator(\n elements: Element[],\n options: CssSelectorGeneratorOptions,\n): IterableIterator<CssSelector> {\n const yieldedSelectors = new Set<string>();\n const selectors_list = getSelectorsList(elements, options);\n for (const selector of selectorTypeCombinationsGenerator(\n selectors_list,\n options,\n )) {\n if (!yieldedSelectors.has(selector)) {\n yieldedSelectors.add(selector);\n yield selector;\n }\n }\n}\n\n/**\n * Creates object containing all selector types and their potential values.\n */\nexport function getSelectorsList(\n elements: Element[],\n options: CssSelectorGeneratorOptions,\n): CssSelectorData {\n const { blacklist, whitelist, combineWithinSelector, maxCombinations } =\n options;\n\n const matchBlacklist = createPatternMatcher(blacklist);\n const matchWhitelist = createPatternMatcher(whitelist);\n\n const reducer = (data: CssSelectorData, selector_type: CssSelectorType) => {\n const selectors_by_type = getSelectorsByType(elements, selector_type);\n const filtered_selectors = filterSelectors(\n selectors_by_type,\n matchBlacklist,\n matchWhitelist,\n );\n const found_selectors = orderSelectors(filtered_selectors, matchWhitelist);\n\n // Use Array.from with a length limit to avoid materializing huge power sets\n // This provides lazy evaluation while respecting maxCombinations\n data[selector_type] = combineWithinSelector\n ? Array.from(\n powerSetGenerator(found_selectors, { maxResults: maxCombinations }),\n )\n : found_selectors.map((item) => [item]);\n\n return data;\n };\n\n return getSelectorsToGet(options).reduce(reducer, {});\n}\n\n/**\n * Creates list of selector types that we will need to generate the selector.\n */\nexport function getSelectorsToGet(\n options: CssSelectorGeneratorOptions,\n): CssSelectorTypes {\n const { selectors, includeTag } = options;\n\n const selectors_to_get = [...selectors];\n if (includeTag && !selectors_to_get.includes(\"tag\")) {\n selectors_to_get.push(\"tag\");\n }\n return selectors_to_get;\n}\n\n/**\n * Adds \"tag\" to a list, if it does not contain it. Used to modify selectors\n * list when includeTag option is enabled to make sure all results contain the\n * TAG part.\n */\nfunction addTagTypeIfNeeded(list: CssSelectorTypes): CssSelectorTypes {\n return list.includes(CSS_SELECTOR_TYPE.tag) ||\n list.includes(CSS_SELECTOR_TYPE.nthoftype)\n ? [...list]\n : [...list, CSS_SELECTOR_TYPE.tag];\n}\n\n/**\n * Generates list of possible selector type combinations.\n */\nexport function combineSelectorTypes(\n options: CssSelectorGeneratorOptions,\n): CssSelectorTypes[] {\n const { selectors, combineBetweenSelectors, includeTag, maxCandidates } =\n options;\n\n const combinations = combineBetweenSelectors\n ? getPowerSet(selectors, { maxResults: maxCandidates })\n : selectors.map((item) => [item]);\n\n return includeTag ? combinations.map(addTagTypeIfNeeded) : combinations;\n}\n\n/**\n * Generates list of combined CSS selectors.\n */\nexport function* selectorTypeCombinationsGenerator(\n selectors_list: CssSelectorData,\n options: CssSelectorGeneratorOptions,\n): IterableIterator<CssSelector> {\n for (const item of combineSelectorTypes(options)) {\n yield* constructedSelectorsGenerator(item, selectors_list);\n }\n}\n\n/**\n * Generates all variations of possible selectors from provided data.\n */\nexport function* constructedSelectorsGenerator(\n selector_types: CssSelectorTypes,\n selectors_by_type: CssSelectorData,\n): IterableIterator<CssSelector> {\n const data: CssSelectorData = {};\n\n for (const selector_type of selector_types) {\n const selector_variants = selectors_by_type[selector_type];\n if (selector_variants && selector_variants.length > 0) {\n data[selector_type] = selector_variants;\n }\n }\n\n for (const combination of cartesianProductGenerator<string | string[]>(\n data,\n )) {\n yield constructSelector(combination);\n }\n}\n\n/**\n * Creates selector for given selector type. Combines several parts if needed.\n */\nexport function constructSelectorType(\n selector_type: CssSelectorType,\n selectors_data: CssSelectorData,\n): CssSelector {\n return selectors_data[selector_type]\n ? selectors_data[selector_type].join(\"\")\n : \"\";\n}\n\n/**\n * Converts selector data object to a selector.\n */\nexport function constructSelector(\n selectorData: CssSelectorData = {},\n): CssSelector {\n const pattern = [...SELECTOR_PATTERN];\n // selector \"nthoftype\" already contains \"tag\"\n if (\n selectorData[CSS_SELECTOR_TYPE.tag] &&\n selectorData[CSS_SELECTOR_TYPE.nthoftype]\n ) {\n pattern.splice(pattern.indexOf(CSS_SELECTOR_TYPE.tag), 1);\n }\n\n return pattern\n .map((type) => constructSelectorType(type, selectorData))\n .join(\"\");\n}\n\n/**\n * Generates combinations of child and descendant selectors within root\n * selector.\n */\nfunction generateCandidateCombinations(\n selectors: CssSelector[],\n rootSelector: CssSelector,\n): CssSelector[] {\n return [\n ...selectors.map(\n (selector) => rootSelector + OPERATOR.DESCENDANT + selector,\n ),\n ...selectors.map((selector) => rootSelector + OPERATOR.CHILD + selector),\n ];\n}\n\n/**\n * Generates a list of selector candidates that can potentially match target\n * element.\n */\nfunction* candidatesGenerator(\n selectors: IterableIterator<CssSelector>,\n rootSelector: CssSelector,\n): IterableIterator<CssSelector> {\n if (rootSelector === \"\") {\n yield* selectors;\n } else {\n for (const selector of selectors) {\n yield* generateCandidateCombinations([selector], rootSelector);\n }\n }\n}\n\n/**\n * Tries to find unique CSS selectors for element within given parent.\n */\nexport function* selectorWithinRootGenerator(\n elements: Element[],\n root: ParentNode,\n rootSelector: CssSelector = \"\",\n options: CssSelectorGeneratorOptions,\n): IterableIterator<CssSelector, undefined> {\n const elementSelectorsIterator = allSelectorsGenerator(elements, options);\n for (const candidateSelector of candidatesGenerator(\n elementSelectorsIterator,\n rootSelector,\n )) {\n if (testSelector(elements, candidateSelector, root)) {\n yield candidateSelector;\n }\n }\n // TODO remove the `undefined` return value when the main function is rewritten to use the generator directly\n return;\n}\n/**\n * Climbs through parents of the element and finds the ones that are identifiable by unique CSS selector.\n */\nexport function* closestIdentifiableParentGenerator(\n elements: Element[],\n root: ParentNode,\n rootSelector: CssSelector = \"\",\n options: CssSelectorGeneratorOptions,\n): IterableIterator<IdentifiableParent> {\n if (elements.length === 0) {\n return null;\n }\n\n const candidatesList = [\n elements.length > 1 ? elements : [],\n ...getParents(elements, root).map((element) => [element]),\n ];\n\n for (const currentElements of candidatesList) {\n for (const selectorWithinRoot of selectorWithinRootGenerator(\n currentElements,\n root,\n rootSelector,\n options,\n )) {\n yield {\n foundElements: currentElements,\n selector: selectorWithinRoot,\n };\n }\n }\n}\n\ninterface SelectorGeneratorProps {\n elements: Element[];\n root: ParentNode;\n rootSelector: CssSelector;\n options: CssSelectorGeneratorOptions;\n}\n\n/**\n * Recursively travels through parents, finds the ones that are identifiable and then tries to find a unique selector within that context.\n */\nexport function* selectorGenerator({\n elements,\n root,\n rootSelector = \"\",\n options,\n}: SelectorGeneratorProps): IterableIterator<CssSelector> {\n let currentRoot = root;\n let partialSelector = rootSelector;\n let shouldContinue = true;\n\n while (shouldContinue) {\n let foundAny = false;\n\n for (const item of closestIdentifiableParentGenerator(\n elements,\n currentRoot,\n partialSelector,\n options,\n )) {\n const { foundElements, selector } = item;\n foundAny = true;\n\n if (testSelector(elements, selector, root)) {\n yield selector;\n } else {\n // First non-matching selector - use its parent for next iteration\n currentRoot = foundElements[0];\n partialSelector = selector;\n break; // Try from this parent in next iteration\n }\n }\n\n if (!foundAny) {\n shouldContinue = false;\n }\n }\n}\n\n/**\n * Converts input into list of elements, removing duplicates and non-elements.\n */\nexport function sanitizeSelectorNeedle(needle: unknown): Element[] {\n if (needle instanceof NodeList || needle instanceof HTMLCollection) {\n needle = Array.from(needle);\n }\n const elements = (Array.isArray(needle) ? needle : [needle]).filter(\n isElement,\n );\n return [...new Set(elements)];\n}\n", "import {\n CSS_SELECTOR_TYPE,\n CssSelectorGenerated,\n CssSelectorTypes,\n ElementData,\n ElementSelectorData,\n OPERATOR,\n OperatorValue,\n} from \"./types.js\";\nimport { SELECTOR_PATTERN } from \"./constants.js\";\nimport { getElementSelectorsByType } from \"./utilities-selectors.js\";\n\n/**\n * Creates data describing a specific selector.\n */\nexport function createElementSelectorData(\n selector: CssSelectorGenerated,\n): ElementSelectorData {\n return {\n value: selector,\n include: false,\n };\n}\n\n/**\n * Creates data describing an element within CssSelector chain.\n */\nexport function createElementData(\n element: Element,\n selectorTypes: CssSelectorTypes,\n operator: OperatorValue = OPERATOR.NONE,\n): ElementData {\n const selectors = {};\n selectorTypes.forEach((selectorType) => {\n Reflect.set(\n selectors,\n selectorType,\n getElementSelectorsByType(element, selectorType).map(\n createElementSelectorData,\n ),\n );\n });\n return {\n element,\n operator,\n selectors,\n };\n}\n\n/**\n * Constructs selector from element data.\n */\nexport function constructElementSelector({\n selectors,\n operator,\n}: ElementData): CssSelectorGenerated {\n let pattern = [...SELECTOR_PATTERN];\n // `nthoftype` already contains tag\n if (\n selectors[CSS_SELECTOR_TYPE.tag] &&\n selectors[CSS_SELECTOR_TYPE.nthoftype]\n ) {\n pattern = pattern.filter((item) => item !== CSS_SELECTOR_TYPE.tag);\n }\n\n let selector = \"\";\n pattern.forEach((selectorType) => {\n const selectorsOfType = selectors[selectorType] ?? [];\n selectorsOfType.forEach(({ value, include }) => {\n if (include) {\n selector += value;\n }\n });\n });\n\n return (operator + selector) as CssSelectorGenerated;\n}\n", "import { getElementParents } from \"./utilities-dom.js\";\nimport { SELECTOR_SEPARATOR } from \"./constants.js\";\nimport { CSS_SELECTOR_TYPE, CssSelector, OPERATOR } from \"./types.js\";\nimport {\n constructElementSelector,\n createElementData,\n} from \"./utilities-element-data.js\";\n\n/**\n * Creates fallback selector for single element.\n */\nexport function getElementFallbackSelector(\n element: Element,\n root?: ParentNode,\n): CssSelector {\n const parentElements = getElementParents(element, root).reverse();\n const elementsData = parentElements.map((element) => {\n const elementData = createElementData(\n element,\n [CSS_SELECTOR_TYPE.nthchild],\n OPERATOR.CHILD,\n );\n (elementData.selectors.nthchild ?? []).forEach((selectorData) => {\n selectorData.include = true;\n });\n return elementData;\n });\n\n return [\n root ? \":scope\" : \":root\",\n ...elementsData.map(constructElementSelector),\n ].join(\"\");\n}\n\n/**\n * Creates chain of :nth-child selectors from root to the elements.\n */\nexport function getFallbackSelector(\n elements: Element[],\n root?: ParentNode,\n): CssSelector {\n return elements\n .map((element) => getElementFallbackSelector(element, root))\n .join(SELECTOR_SEPARATOR);\n}\n", "import { getFallbackSelector } from \"./selector-fallback.js\";\nimport { sanitizeOptions } from \"./utilities-options.js\";\nimport {\n sanitizeSelectorNeedle,\n selectorGenerator,\n} from \"./utilities-selectors.js\";\nimport { CssSelector, CssSelectorGeneratorOptionsInput } from \"./types.js\";\nimport { getRootNode } from \"./utilities-dom.js\";\nimport { SELECTOR_SEPARATOR } from \"./constants.js\";\n\n/**\n * Generates unique CSS selector for an element.\n */\nexport function getCssSelector(\n needle: Element | Element[],\n custom_options: Omit<CssSelectorGeneratorOptionsInput, \"maxResults\"> = {},\n): CssSelector {\n const options = { ...custom_options, maxResults: 1 };\n const generator = cssSelectorGenerator(needle, options);\n const firstResult = generator.next();\n return firstResult.value as CssSelector;\n}\n\n/**\n * Generates unique CSS selector for an element.\n */\nexport function* cssSelectorGenerator(\n needle: Element | Element[],\n custom_options: CssSelectorGeneratorOptionsInput = {},\n): IterableIterator<CssSelector> {\n const elements = sanitizeSelectorNeedle(needle as unknown);\n const options = sanitizeOptions(elements[0], custom_options);\n const root = options.root ?? getRootNode(elements[0]);\n let foundResults = 0;\n\n for (const selector of selectorGenerator({\n elements,\n options,\n root,\n rootSelector: \"\",\n })) {\n yield selector;\n foundResults++;\n if (foundResults >= options.maxResults) {\n return;\n }\n }\n\n // if failed to find single selector matching all elements, try to find\n // selector for each standalone element and join them together\n if (elements.length > 1) {\n yield elements\n .map((element) => getCssSelector(element, options))\n .join(SELECTOR_SEPARATOR);\n foundResults++;\n if (foundResults >= options.maxResults) {\n return;\n }\n }\n\n yield getFallbackSelector(elements, options.useScope ? root : undefined);\n}\n\nexport default getCssSelector;\n", "import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { cn } from '../cn';\nexport function BeforeAfterToggle({ mode, onToggle }) {\n return (_jsxs(\"div\", { className: \"se-flex se-mb-3 se-rounded-lg se-overflow-hidden se-border se-border-border-primary\", children: [_jsx(\"button\", { type: \"button\", onClick: () => onToggle('before'), className: cn('se-flex-1 se-py-1.5 se-px-3 se-border-none se-text-sm se-font-semibold se-cursor-pointer focus-visible:se-shadow-focus-primary focus-visible:se-outline-none', mode === 'before'\n ? 'se-bg-blue-5/30 se-text-blue-5'\n : 'se-bg-transparent se-text-text-secondary'), children: \"Before\" }), _jsx(\"button\", { type: \"button\", onClick: () => onToggle('after'), className: cn('se-flex-1 se-py-1.5 se-px-3 se-border-none se-border-l se-border-border-primary se-text-sm se-font-semibold se-cursor-pointer focus-visible:se-shadow-focus-primary focus-visible:se-outline-none', mode === 'after'\n ? 'se-bg-blue-5/30 se-text-blue-5'\n : 'se-bg-transparent se-text-text-secondary'), children: \"After\" })] }));\n}\n", "import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\n/**\n * ConditionStatusLine \u2014 inline triggerWhen diagnostic on EditorCard.\n *\n * Shows a compact one-line status for items with triggerWhen conditions.\n * Click to expand per-condition detail.\n */\nimport { Check, Clock, X } from 'lucide-react';\nimport { useState } from 'react';\nimport { cn } from '../cn';\nfunction ProgressBar({ current, target }) {\n const pct = Math.min(100, Math.round((current / Math.max(target, 1)) * 100));\n return (_jsx(\"span\", { className: \"se-inline-block se-w-12 se-h-1.5 se-rounded-full se-bg-white/20 se-align-middle se-ml-1\", title: `${current}/${target} (${pct}%)`, children: _jsx(\"span\", { className: cn('se-block se-h-full se-rounded-full se-transition-all', pct >= 100 ? 'se-bg-green-4' : 'se-bg-blue-4'), style: { width: `${pct}%` } }) }));\n}\nfunction ConditionRow({ cs }) {\n return (_jsxs(\"div\", { className: \"se-flex se-items-center se-gap-1 se-pl-3 se-text-[12px] se-font-medium se-text-text-secondary\", children: [cs.passed ? (_jsx(Check, { className: \"se-w-3 se-h-3 se-text-green-4\" })) : (_jsx(X, { className: \"se-w-3 se-h-3 se-text-red-4\" })), _jsxs(\"span\", { children: [cs.type, \":\"] }), _jsx(\"span\", { className: \"se-text-text-secondary\", children: cs.formatted.label }), cs.formatted.progress && (_jsxs(_Fragment, { children: [_jsx(ProgressBar, { current: cs.formatted.progress.current, target: cs.formatted.progress.target }), _jsxs(\"span\", { className: \"se-text-text-secondary se-ml-0.5\", children: [cs.formatted.progress.current, \"/\", cs.formatted.progress.target] })] }))] }));\n}\nexport function ConditionStatusLine({ status }) {\n const [expanded, setExpanded] = useState(false);\n if (!status)\n return null;\n const { visible, conditions } = status;\n const passedCount = conditions.filter((c) => c.passed).length;\n const totalCount = conditions.length;\n // Icon: visible = green check, hidden = clock\n const StatusIcon = visible ? Check : Clock;\n const iconColor = visible ? 'se-text-green-4' : 'se-text-yellow-5';\n // Single condition: show inline detail\n // Multi condition: show summary, click to expand\n const isSingle = totalCount === 1;\n if (isSingle) {\n const cs = conditions[0];\n return (_jsxs(\"div\", { className: \"se-text-[12px] se-font-medium se-text-text-secondary se-mt-0.5 se-flex se-items-center se-gap-1\", children: [_jsx(StatusIcon, { className: cn('se-w-3 se-h-3', iconColor) }), _jsxs(\"span\", { children: [cs.type, \":\"] }), _jsx(\"span\", { className: \"se-text-text-secondary\", children: cs.formatted.label }), cs.formatted.progress && (_jsxs(_Fragment, { children: [_jsx(ProgressBar, { current: cs.formatted.progress.current, target: cs.formatted.progress.target }), _jsxs(\"span\", { className: \"se-text-text-secondary se-ml-0.5\", children: [cs.formatted.progress.current, \"/\", cs.formatted.progress.target] })] }))] }));\n }\n // Multi-condition: summary line + expandable detail\n return (_jsxs(\"div\", { className: \"se-mt-0.5\", children: [_jsxs(\"button\", { type: \"button\", className: \"se-flex se-items-center se-gap-1 se-text-[12px] se-font-medium se-text-text-secondary se-bg-transparent se-border-none se-cursor-pointer se-p-0 hover:se-text-text-primary\", onClick: (e) => {\n e.stopPropagation();\n setExpanded(!expanded);\n }, children: [_jsx(StatusIcon, { className: cn('se-w-3 se-h-3', iconColor) }), _jsxs(\"span\", { children: [passedCount, \" of \", totalCount, \" conditions met\"] }), _jsx(\"span\", { className: \"se-text-[11px] se-ml-0.5\", children: expanded ? '\\u25b2' : '\\u25bc' })] }), expanded && (_jsx(\"div\", { className: \"se-mt-0.5 se-space-y-0.5\", children: conditions.map((cs, i) => (_jsx(ConditionRow, { cs: cs }, i))) }))] }));\n}\n", "import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { cn } from '../cn';\nexport function DetectionBadge({ found, onClick }) {\n const title = onClick\n ? found\n ? 'Click to scroll to element'\n : 'Click to navigate to page'\n : found\n ? 'Found on this page'\n : 'Not found on this page';\n const textColor = found ? 'se-text-green-4' : 'se-text-text-tertiary';\n const dotColor = found ? 'se-bg-green-4' : 'se-bg-text-tertiary';\n const classes = cn('se-inline-flex se-items-center se-gap-1 se-text-xs se-font-medium se-shrink-0', textColor, onClick && 'se-cursor-pointer hover:se-opacity-80');\n const dot = (_jsx(\"span\", { \"data-indicator\": \"\", className: cn('se-w-1.5 se-h-1.5 se-rounded-full', dotColor) }));\n if (onClick) {\n return (_jsxs(\"button\", { type: \"button\", className: cn(classes, 'se-border-none se-bg-transparent se-p-0'), title: title, onClick: (e) => {\n e.stopPropagation();\n onClick(e);\n }, children: [dot, \"GoTo\"] }));\n }\n return (_jsxs(\"span\", { className: classes, title: title, children: [dot, \"GoTo\"] }));\n}\n", "import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useState } from 'react';\nexport function DismissedSection({ count, children }) {\n const [isOpen, setIsOpen] = useState(false);\n return (_jsxs(\"div\", { className: \"se-mt-4 se-cursor-pointer se-select-none\", children: [_jsxs(\"div\", { role: \"button\", tabIndex: 0, className: \"se-text-xs se-font-semibold se-text-text-secondary se-flex se-items-center se-gap-1.5 se-cursor-pointer\", onClick: () => setIsOpen(!isOpen), onKeyDown: (e) => {\n if (e.key === 'Enter' || e.key === ' ')\n setIsOpen(!isOpen);\n }, children: [_jsx(\"span\", { children: isOpen ? '\\u25be' : '\\u25b8' }), _jsxs(\"span\", { children: [\"Dismissed (\", count, \")\"] })] }), isOpen && _jsx(\"div\", { className: \"se-mt-1.5\", children: children })] }));\n}\n", "import { jsx as _jsx } from \"react/jsx-runtime\";\nexport function EditBackButton({ onClick, label = '\\u2190 List' }) {\n return (_jsx(\"button\", { type: \"button\", onClick: onClick, className: \"se-h-10 se-px-4 se-py-2 se-rounded-md se-bg-btn-neutral se-text-btn-neutral-text se-border se-border-btn-neutral-border hover:se-text-btn-neutral-text-hover se-text-sm se-font-medium se-cursor-pointer se-mt-2 se-inline-flex se-items-center se-justify-center focus-visible:se-shadow-focus-primary focus-visible:se-outline-none\", children: label }));\n}\n", "import { jsx as _jsx } from \"react/jsx-runtime\";\nexport function EditorBody({ children }) {\n return _jsx(\"div\", { className: \"se-flex-1 se-overflow-auto se-p-6\", children: children });\n}\n", "import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { cn } from '../cn';\nexport function EditorCard({ children, itemKey, onClick, onMouseEnter, onMouseLeave, className, validated, }) {\n return (\n // biome-ignore lint/a11y/noStaticElementInteractions: onMouseEnter/onMouseLeave are for presentational hover highlighting, not user interaction\n _jsx(\"div\", { \"data-item-key\": itemKey, role: onClick ? 'button' : undefined, tabIndex: onClick ? 0 : undefined, onClick: onClick, onKeyDown: onClick\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick();\n }\n }\n : undefined, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, className: cn('se-py-2 se-px-2.5 se-rounded-lg se-border se-bg-card-bg se-shadow-sm se-mb-1 se-text-sm se-text-text-primary', validated ? 'se-border-green-4/50 se-shadow-glow-green' : 'se-border-border-primary', onClick &&\n 'se-cursor-pointer hover:se-border-border-primary/80 hover:se-bg-sidebar-hover se-transition-colors', className), children: children }));\n}\n", "import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function EditorFooter({ onSave, onPublish }) {\n return (_jsxs(\"div\", { className: \"se-py-3 se-px-4 se-border-t se-border-border-primary se-flex se-gap-2\", children: [_jsx(\"button\", { type: \"button\", onClick: onSave, className: \"se-flex-1 se-h-10 se-px-4 se-py-2 se-rounded-md se-bg-btn-neutral se-text-btn-neutral-text se-border se-border-btn-neutral-border hover:se-text-btn-neutral-text-hover se-text-sm se-font-medium se-cursor-pointer se-inline-flex se-items-center se-justify-center focus-visible:se-shadow-focus-primary focus-visible:se-outline-none\", children: \"Save Draft\" }), _jsx(\"button\", { type: \"button\", onClick: onPublish, className: \"se-flex-1 se-h-10 se-px-4 se-py-2 se-rounded-md se-border-none se-bg-btn-primary se-text-btn-primary-text hover:se-bg-btn-primary-hover se-text-sm se-font-medium se-cursor-pointer se-inline-flex se-items-center se-justify-center focus-visible:se-shadow-focus-primary focus-visible:se-outline-none\", children: \"Publish\" })] }));\n}\n", "import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function EditorHeader({ title, subtitle }) {\n return (_jsxs(\"div\", { className: \"se-px-4 se-pt-3 se-pb-2\", children: [_jsx(\"h2\", { className: \"se-m-0 se-text-base se-font-semibold se-text-text-primary\", children: title }), subtitle && (_jsx(\"p\", { className: \"se-mt-0.5 se-mb-0 se-text-xs se-text-text-secondary\", children: subtitle }))] }));\n}\n", "import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useId } from 'react';\nimport { cn } from '../cn';\nexport function EditorInput({ label, className, id, ...props }) {\n const generatedId = useId();\n const inputId = id || generatedId;\n return (_jsxs(\"div\", { children: [label && (_jsx(\"label\", { htmlFor: inputId, className: \"se-text-sm se-font-medium se-text-input-field-text-label se-mb-1 se-block\", children: label })), _jsx(\"input\", { id: inputId, ...props, className: cn('se-w-full se-py-2 se-px-3 se-rounded-lg se-border se-border-input-field-border se-bg-slate-grey-3 se-text-text-primary se-text-sm se-font-[inherit] se-mb-2 se-box-border', 'placeholder:se-text-input-field-text-placeholder', 'focus:se-border-input-field-border-selected focus:se-outline-none focus:se-shadow-focus-primary', 'disabled:se-bg-input-field-bg-disabled disabled:se-cursor-not-allowed disabled:se-opacity-50', className) })] }));\n}\n", "import { jsx as _jsx } from \"react/jsx-runtime\";\nexport function EditorLayout({ children }) {\n return _jsx(\"div\", { className: \"se-flex se-flex-col se-h-full se-font-sans\", children: children });\n}\n", "import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\n/**\n * EditorPanelShell \u2014 moveable, resizable wrapper for editor sidebars.\n *\n * Renders:\n * 1. A fixed FAB button (Syntrologie logo) at the panel's bottom-left corner.\n * Click toggles open/minimized. Drag moves the entire panel.\n * 2. A resizable panel container with semi-transparent background and backdrop blur.\n * Supports docked (left/right edge, full height) and free-floating modes.\n * Position, size, and dock state persist in localStorage.\n */\nimport { panelShell } from '@syntro/design-system';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { cn } from '../cn';\n// =============================================================================\n// Constants\n// =============================================================================\nconst STORAGE_KEY = 'syntro:editor-panel';\nconst MIN_WIDTH = panelShell.behavior.minWidth;\nconst MIN_HEIGHT = panelShell.behavior.minHeight;\nconst FAB_SIZE = panelShell.fab.size;\nconst FAB_INSET = panelShell.fab.inset;\nconst SNAP_THRESHOLD = panelShell.behavior.snapThreshold;\nconst DRAG_THRESHOLD = panelShell.behavior.dragThreshold;\nconst HANDLE_SIZE = panelShell.behavior.handleSize;\n// =============================================================================\n// Logo\n// =============================================================================\n/** Syntrologie logo mark \u2014 inline SVG to avoid CSP issues. */\nfunction SyntroLogo() {\n return (_jsxs(\"svg\", { \"aria-hidden\": \"true\", width: \"28\", height: \"18\", viewBox: \"0 0 101 63\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", children: [_jsx(\"g\", { clipPath: \"url(#syntro-fab-clip)\", children: _jsx(\"path\", { d: \"M51.989 0.284C52.386 0.29 52.808 0.341 53.192 0.443C53.769 0.596 54.362 0.983 54.745 1.442C55.895 2.822 56.767 4.782 57.669 6.357C59.947 10.334 62.152 14.372 64.498 18.307C64.671 18.597 65.127 19.343 65.475 19.411C66.654 19.641 79.278 11.523 81.123 10.317C80.704 8.6 80.624 7.21 81.334 5.525C82.014 3.916 83.317 2.651 84.946 2.019C86.593 1.366 88.286 1.42 89.902 2.123C91.486 2.795 92.733 4.076 93.363 5.677C95.111 10.218 91.347 15.013 86.561 14.442C85.392 14.302 84.649 13.927 83.6 13.441C76.542 18.247 69.094 22.597 61.207 25.907C60.153 26.349 59.42 26.6 58.519 27.328C60.583 27.43 87.034 24.236 87.878 23.781C87.926 23.755 88.048 23.697 88.08 23.652C88.244 23.421 88.277 23.007 88.376 22.735C88.819 21.511 89.563 20.379 90.604 19.586C91.887 18.608 93.6 18.093 95.208 18.324C96.992 18.581 98.67 19.55 99.74 21.005C100.733 22.364 101.141 24.064 100.875 25.726C100.607 27.394 99.692 28.888 98.329 29.887C96.02 31.573 92.641 31.613 90.392 29.789C89.579 29.13 89.177 28.535 88.566 27.692C86.692 28.103 83.447 28.463 81.472 28.73C76.577 29.399 71.671 29.99 66.756 30.504C65.752 30.608 59.279 31.013 58.779 31.24L58.781 31.387C59.106 31.577 66.974 33.025 68.328 33.358C72.475 34.405 76.572 35.64 80.606 37.06C82.709 37.818 84.721 38.686 86.814 39.457C88.505 38.051 89.243 36.875 91.925 36.841C93.665 36.833 95.339 37.506 96.589 38.717C97.986 40.087 98.415 41.541 98.429 43.422C98.417 44.842 98.099 45.978 97.229 47.137C96.168 48.531 94.597 49.447 92.86 49.682C91.161 49.922 89.437 49.472 88.073 48.431C86.201 47.02 85.795 45.462 85.488 43.323C85.255 43.193 85.018 43.071 84.776 42.958C83.907 42.553 78.511 40.359 77.911 40.577C77.837 41.147 78.926 42.592 79.243 43.155L84.336 52.073C85.165 53.529 86.027 54.991 86.789 56.483C87.253 57.391 87.414 58.355 87.056 59.343C86.557 60.722 85.014 61.408 83.626 61.438C81.429 61.427 79.228 61.427 77.029 61.427L62.967 61.427L35.549 61.435C33.337 61.436 20.693 61.626 19.579 61.199C18.758 60.889 18.093 60.265 17.732 59.465C17.455 58.844 17.335 57.994 17.577 57.361C18.242 55.623 19.5 53.659 20.438 52.043L28.119 39.028C28.9 37.701 31.213 33.891 31.7 32.634C25.671 32.936 18.736 32.547 12.6 32.721C11.75 34.138 10.992 35.281 9.368 35.935C7.744 36.588 5.704 36.604 4.097 35.922C2.546 35.272 1.319 34.028 0.69 32.468C0.053 30.839 0.086 29.025 0.781 27.42C2.812 22.739 9.259 22.202 12.05 26.464C12.555 27.235 12.774 27.84 13.104 28.703L26.462 28.711C28.926 28.713 31.729 28.779 34.17 28.668C35.279 26.892 36.442 24.733 37.515 22.901L45.376 9.375C46.797 6.902 48.214 4.368 49.685 1.924C50.222 1.032 50.962 0.493 51.989 0.284ZM22.119 57.31C23.512 57.503 26.045 57.431 27.526 57.429L36.661 57.42L68.412 57.422C73.113 57.421 77.994 57.351 82.68 57.438L75.664 45.098C74.562 43.171 73.093 40.773 72.104 38.827C71.245 38.351 70.291 38.109 69.335 37.848C59.189 35.076 48.669 33.421 38.172 32.796C37.642 32.764 36.994 32.766 36.469 32.794L25.855 50.865C24.634 52.935 23.364 55.302 22.119 57.31ZM52.216 5.513C49.384 10.611 46.473 15.665 43.484 20.673C42.193 22.878 40.862 25.071 39.63 27.31C39.46 27.618 39.36 27.782 39.453 28.133C40.522 28.342 45.866 26.973 47.112 26.644C49.169 26.137 60.135 22.684 61.174 21.436C61.248 21.163 61.287 21.069 61.125 20.762C60.279 19.163 59.326 17.527 58.435 15.958L53.592 7.329C53.355 6.915 52.677 5.599 52.216 5.513ZM96.18 26.494C96.963 25.713 97.12 24.502 96.563 23.547C96.005 22.592 94.872 22.133 93.807 22.432C92.972 22.666 92.324 23.327 92.108 24.167C91.892 25.007 92.14 25.899 92.758 26.507C93.396 27.134 94.327 27.361 95.182 27.096C95.558 26.98 95.901 26.773 96.18 26.494ZM87.871 10.399C89.147 10.087 89.941 8.813 89.659 7.529C89.377 6.246 88.122 5.422 86.832 5.673C85.97 5.841 85.266 6.463 84.994 7.298C84.722 8.133 84.923 9.05 85.52 9.694C86.118 10.339 87.017 10.608 87.871 10.399ZM91.505 40.879C90.185 41.122 89.31 42.388 89.55 43.709C89.791 45.03 91.055 45.907 92.377 45.669C93.22 45.517 93.921 44.933 94.223 44.131C94.525 43.329 94.383 42.428 93.85 41.758C93.29 41.055 92.389 40.717 91.505 40.879ZM9.138 29.557C9.005 28.88 8.592 28.292 8.001 27.937C7.409 27.583 6.696 27.495 6.036 27.697C5.665 27.81 5.326 28.011 5.048 28.282C4.24 29.07 4.079 30.31 4.66 31.278C5.241 32.247 6.411 32.688 7.487 32.346C8.666 31.97 9.376 30.771 9.138 29.557Z\", fill: \"currentColor\" }) }), _jsx(\"defs\", { children: _jsx(\"clipPath\", { id: \"syntro-fab-clip\", children: _jsx(\"rect\", { width: \"101\", height: \"63\", fill: \"white\" }) }) })] }));\n}\n// =============================================================================\n// Geometry Helpers\n// =============================================================================\nfunction getDefaultGeometry() {\n return {\n x: 0,\n y: 0,\n width: MIN_WIDTH,\n height: typeof window !== 'undefined' ? window.innerHeight : 800,\n docked: 'left',\n };\n}\nfunction loadGeometry(storageKey) {\n if (typeof window === 'undefined')\n return getDefaultGeometry();\n try {\n const raw = localStorage.getItem(storageKey);\n if (raw) {\n const parsed = JSON.parse(raw);\n return {\n x: typeof parsed.x === 'number' ? parsed.x : 0,\n y: typeof parsed.y === 'number' ? parsed.y : 0,\n width: Math.max(MIN_WIDTH, typeof parsed.width === 'number' ? parsed.width : MIN_WIDTH),\n height: Math.max(MIN_HEIGHT, typeof parsed.height === 'number' ? parsed.height : window.innerHeight),\n docked: parsed.docked === 'left' || parsed.docked === 'right' ? parsed.docked : null,\n };\n }\n }\n catch {\n /* ignore corrupt localStorage */\n }\n return getDefaultGeometry();\n}\nfunction saveGeometry(storageKey, geo) {\n try {\n localStorage.setItem(storageKey, JSON.stringify(geo));\n }\n catch {\n /* ignore full localStorage */\n }\n}\n/** Compute the panel's actual pixel rect (resolving docked positions). */\nfunction getPanelRect(geo) {\n if (geo.docked === 'left') {\n return { top: 0, left: 0, width: geo.width, height: window.innerHeight };\n }\n if (geo.docked === 'right') {\n return {\n top: 0,\n left: window.innerWidth - geo.width,\n width: geo.width,\n height: window.innerHeight,\n };\n }\n const { x: left, y: top, width, height } = geo;\n return { top, left, width, height };\n}\n/** Compute FAB position from panel geometry (top-left of panel). */\nfunction getFabPosition(geo) {\n const rect = getPanelRect(geo);\n return {\n left: rect.left + FAB_INSET,\n top: rect.top + FAB_INSET,\n };\n}\n/** Clamp geometry so the FAB (top-left) remains visible. */\nfunction clampToViewport(geo) {\n if (geo.docked)\n return geo;\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n return {\n ...geo,\n x: Math.max(-(geo.width - FAB_SIZE), Math.min(geo.x, vw - FAB_SIZE)),\n y: Math.max(-FAB_INSET, Math.min(geo.y, vh - FAB_SIZE - FAB_INSET)),\n };\n}\n/** Convert docked geometry to undocked pixel coordinates. */\nfunction undockGeometry(geo) {\n const rect = getPanelRect(geo);\n return {\n x: rect.left,\n y: rect.top,\n width: geo.width,\n height: rect.height,\n docked: null,\n };\n}\n// =============================================================================\n// Resize Handle Definitions\n// =============================================================================\nconst RESIZE_HANDLES = [\n {\n dir: 'n',\n style: { top: 0, left: HANDLE_SIZE, right: HANDLE_SIZE, height: HANDLE_SIZE },\n cursor: 'ns-resize',\n },\n {\n dir: 's',\n style: { bottom: 0, left: HANDLE_SIZE, right: HANDLE_SIZE, height: HANDLE_SIZE },\n cursor: 'ns-resize',\n },\n {\n dir: 'e',\n style: { right: 0, top: HANDLE_SIZE, bottom: HANDLE_SIZE, width: HANDLE_SIZE },\n cursor: 'ew-resize',\n },\n {\n dir: 'w',\n style: { left: 0, top: HANDLE_SIZE, bottom: HANDLE_SIZE, width: HANDLE_SIZE },\n cursor: 'ew-resize',\n },\n {\n dir: 'ne',\n style: { top: 0, right: 0, width: HANDLE_SIZE * 2, height: HANDLE_SIZE * 2 },\n cursor: 'nesw-resize',\n },\n {\n dir: 'nw',\n style: { top: 0, left: 0, width: HANDLE_SIZE * 2, height: HANDLE_SIZE * 2 },\n cursor: 'nwse-resize',\n },\n {\n dir: 'se',\n style: { bottom: 0, right: 0, width: HANDLE_SIZE * 2, height: HANDLE_SIZE * 2 },\n cursor: 'nwse-resize',\n },\n {\n dir: 'sw',\n style: { bottom: 0, left: 0, width: HANDLE_SIZE * 2, height: HANDLE_SIZE * 2 },\n cursor: 'nesw-resize',\n },\n];\n// =============================================================================\n// Component\n// =============================================================================\nexport function EditorPanelShell({ isOpen, onToggle, panelId, zIndex = 2147483647, children, }) {\n const storageKey = panelId ? `syntro:editor-panel:${panelId}` : STORAGE_KEY;\n const [geometry, setGeometry] = useState(() => loadGeometry(storageKey));\n const geoRef = useRef(geometry);\n geoRef.current = geometry;\n const panelRef = useRef(null);\n const fabRef = useRef(null);\n // Drag state (refs for performance \u2014 no re-renders during drag)\n const isDragging = useRef(false);\n const hasMoved = useRef(false);\n const dragOffset = useRef({ x: 0, y: 0 });\n const startPanelPos = useRef({ x: 0, y: 0 });\n const pendingGeo = useRef(null);\n // Resize state\n const activeResize = useRef(null);\n const resizeStartMouse = useRef({ x: 0, y: 0 });\n const resizeStartGeo = useRef(getDefaultGeometry());\n // Persist geometry on change\n useEffect(() => {\n saveGeometry(storageKey, geometry);\n }, [storageKey, geometry]);\n // Viewport clamping on window resize\n useEffect(() => {\n const handler = () => setGeometry((prev) => clampToViewport(prev));\n window.addEventListener('resize', handler);\n return () => window.removeEventListener('resize', handler);\n }, []);\n // ---- FAB DRAG HANDLERS ----\n const handleFabPointerDown = useCallback((e) => {\n isDragging.current = true;\n hasMoved.current = false;\n const rect = getPanelRect(geoRef.current);\n startPanelPos.current = { x: rect.left, y: rect.top };\n dragOffset.current = {\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n };\n e.target.setPointerCapture(e.pointerId);\n e.preventDefault();\n }, []);\n const handleFabPointerMove = useCallback((e) => {\n if (!isDragging.current)\n return;\n const newX = e.clientX - dragOffset.current.x;\n const newY = e.clientY - dragOffset.current.y;\n if (!hasMoved.current) {\n const dx = Math.abs(newX - startPanelPos.current.x);\n const dy = Math.abs(newY - startPanelPos.current.y);\n if (dx < DRAG_THRESHOLD && dy < DRAG_THRESHOLD)\n return;\n hasMoved.current = true;\n }\n const geo = geoRef.current;\n const height = geo.docked ? window.innerHeight : geo.height;\n // Update panel DOM directly for performance (bypass React re-render)\n if (panelRef.current) {\n panelRef.current.style.left = `${newX}px`;\n panelRef.current.style.top = `${newY}px`;\n panelRef.current.style.right = 'auto';\n panelRef.current.style.height = `${height}px`;\n }\n if (fabRef.current) {\n fabRef.current.style.left = `${newX + FAB_INSET}px`;\n fabRef.current.style.top = `${newY + FAB_INSET}px`;\n }\n pendingGeo.current = { x: newX, y: newY, width: geo.width, height, docked: null };\n }, []);\n const handleFabPointerUp = useCallback((e) => {\n e.target.releasePointerCapture(e.pointerId);\n const wasDragging = hasMoved.current;\n isDragging.current = false;\n hasMoved.current = false;\n if (!wasDragging) {\n onToggle();\n return;\n }\n if (pendingGeo.current) {\n const geo = pendingGeo.current;\n // Edge snapping\n if (geo.x <= SNAP_THRESHOLD) {\n setGeometry({ ...geo, docked: 'left', x: 0, y: 0 });\n }\n else if (geo.x + geo.width >= window.innerWidth - SNAP_THRESHOLD) {\n setGeometry({ ...geo, docked: 'right', x: 0, y: 0 });\n }\n else {\n setGeometry(geo);\n }\n pendingGeo.current = null;\n }\n }, [onToggle]);\n // ---- RESIZE HANDLERS ----\n const handleResizePointerDown = useCallback((e) => {\n const dir = e.currentTarget.dataset.resizeDir;\n if (!dir)\n return;\n let geo = geoRef.current;\n // Undock if currently docked\n if (geo.docked) {\n geo = undockGeometry(geo);\n geoRef.current = geo;\n setGeometry(geo);\n }\n activeResize.current = dir;\n resizeStartMouse.current = { x: e.clientX, y: e.clientY };\n resizeStartGeo.current = { ...geo };\n e.target.setPointerCapture(e.pointerId);\n e.preventDefault();\n }, []);\n const handleResizePointerMove = useCallback((e) => {\n if (!activeResize.current)\n return;\n const dx = e.clientX - resizeStartMouse.current.x;\n const dy = e.clientY - resizeStartMouse.current.y;\n const dir = activeResize.current;\n const start = resizeStartGeo.current;\n let { x, y, width, height } = start;\n if (dir.includes('e'))\n width = Math.max(MIN_WIDTH, start.width + dx);\n if (dir.includes('w')) {\n const newW = Math.max(MIN_WIDTH, start.width - dx);\n x = start.x + start.width - newW;\n width = newW;\n }\n if (dir.includes('s'))\n height = Math.max(MIN_HEIGHT, start.height + dy);\n if (dir.includes('n')) {\n const newH = Math.max(MIN_HEIGHT, start.height - dy);\n y = start.y + start.height - newH;\n height = newH;\n }\n // Update DOM directly for performance\n if (panelRef.current) {\n panelRef.current.style.left = `${x}px`;\n panelRef.current.style.top = `${y}px`;\n panelRef.current.style.width = `${width}px`;\n panelRef.current.style.height = `${height}px`;\n }\n if (fabRef.current) {\n fabRef.current.style.left = `${x + FAB_INSET}px`;\n fabRef.current.style.top = `${y + FAB_INSET}px`;\n }\n pendingGeo.current = { x, y, width, height, docked: null };\n }, []);\n const handleResizePointerUp = useCallback((e) => {\n e.target.releasePointerCapture(e.pointerId);\n activeResize.current = null;\n if (pendingGeo.current) {\n setGeometry(pendingGeo.current);\n pendingGeo.current = null;\n }\n }, []);\n // ---- COMPUTED STYLES ----\n const isDocked = geometry.docked !== null;\n const fabPos = getFabPosition(geometry);\n const panelStyle = {\n position: 'fixed',\n zIndex,\n background: panelShell.background,\n backdropFilter: `blur(${panelShell.backdropBlur})`,\n WebkitBackdropFilter: `blur(${panelShell.backdropBlur})`,\n boxShadow: isDocked\n ? geometry.docked === 'right'\n ? panelShell.shadows.dockedRight\n : panelShell.shadows.dockedLeft\n : panelShell.shadows.floating,\n // Prevent wheel scroll from chaining to the page behind the panel.\n // overflow-y: auto makes this a scroll container so overscroll-behavior applies.\n overflowY: 'auto',\n overscrollBehavior: 'contain',\n };\n if (geometry.docked === 'left') {\n panelStyle.top = 0;\n panelStyle.left = 0;\n panelStyle.width = geometry.width;\n panelStyle.height = '100vh';\n }\n else if (geometry.docked === 'right') {\n panelStyle.top = 0;\n panelStyle.right = 0;\n panelStyle.width = geometry.width;\n panelStyle.height = '100vh';\n }\n else {\n panelStyle.top = geometry.y;\n panelStyle.left = geometry.x;\n panelStyle.width = geometry.width;\n panelStyle.height = geometry.height;\n }\n const fabStyle = {\n position: 'fixed',\n left: fabPos.left,\n top: fabPos.top,\n zIndex,\n width: FAB_SIZE,\n height: FAB_SIZE,\n borderRadius: '50%',\n border: panelShell.fab.border,\n cursor: 'grab',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: panelShell.fab.background,\n color: panelShell.fab.color,\n boxShadow: isOpen ? panelShell.fab.shadowOpen : panelShell.fab.shadowClosed,\n transition: 'box-shadow 150ms ease',\n touchAction: 'none',\n userSelect: 'none',\n WebkitUserSelect: 'none',\n };\n return (_jsxs(_Fragment, { children: [isOpen && (_jsxs(\"div\", { ref: panelRef, ...(panelId ? { id: panelId } : {}), \"data-syntro-editor-panel\": true, \"data-syntro-editor-ui\": \"panel\", className: cn('syntro-editor-scope se-fixed se-flex se-flex-col se-text-text-primary se-backdrop-blur-xl se-font-sans se-antialiased se-overflow-hidden', isDocked\n ? geometry.docked === 'right'\n ? 'se-border-l se-border-border-primary'\n : 'se-border-r se-border-border-primary'\n : 'se-rounded-lg se-border se-border-border-primary'), style: panelStyle, children: [RESIZE_HANDLES.map(({ dir, style, cursor }) => (_jsx(\"div\", { \"data-syntro-editor-ui\": `resize-${dir}`, \"data-resize-dir\": dir, onPointerDown: handleResizePointerDown, onPointerMove: handleResizePointerMove, onPointerUp: handleResizePointerUp, style: {\n position: 'absolute',\n ...style,\n cursor,\n zIndex: 1,\n touchAction: 'none',\n } }, dir))), children] })), _jsx(\"div\", { className: \"syntro-editor-scope\", \"data-syntro-editor-ui\": \"fab-wrapper\", style: { display: 'contents' }, children: _jsx(\"button\", { ref: fabRef, type: \"button\", \"data-syntro-fab\": true, \"data-syntro-editor-ui\": \"fab\", onPointerDown: handleFabPointerDown, onPointerMove: handleFabPointerMove, onPointerUp: handleFabPointerUp, style: fabStyle, title: isOpen ? 'Minimize panel' : 'Open panel', children: _jsx(SyntroLogo, {}) }) })] }));\n}\n", "/**\n * Syntro Design System - Color Tokens\n *\n * This file contains all color tokens from the Figma design system.\n * Colors are organized by scale and semantic meaning.\n *\n * @see https://www.figma.com/design/U0Ol5vM7FQvgPfIgCAgxgb/Design-System\n */\n// ============================================================================\n// BASE COLORS\n// ============================================================================\nexport const base = {\n white: '#ffffff',\n black: '#000000',\n};\n// ============================================================================\n// BRAND COLORS\n// ============================================================================\nexport const brand = {\n 0: '#2c0b0a',\n 1: '#5b1715',\n 2: '#89221f',\n 3: '#b72e2a',\n 4: '#d44844',\n 5: '#dd6d69',\n 6: '#e5918f',\n 7: '#eeb6b4',\n 8: '#f6dada',\n 9: '#faebea',\n};\n// ============================================================================\n// NEUTRAL COLORS\n// ============================================================================\nexport const slateGrey = {\n 0: '#07080a',\n 1: '#0f1318',\n 2: '#0e1114',\n 3: '#1c222a',\n 4: '#2b333f',\n 5: '#394454',\n 6: '#475569',\n 7: '#677384',\n 8: '#87919f',\n 9: '#a8afba',\n 10: '#cbd0d7',\n 11: '#e8eaee',\n 12: '#f6f7f9',\n};\n// ============================================================================\n// SEMANTIC COLOR SCALES\n// ============================================================================\nexport const green = {\n 0: '#07230a',\n 1: '#0e4514',\n 2: '#16681e',\n 3: '#1d8a28',\n 4: '#24ad32',\n 5: '#4fbd5a',\n 6: '#7acd82',\n 7: '#a5deab',\n 8: '#d0eed3',\n 9: '#e5f6e7',\n};\nexport const yellow = {\n 0: '#301f09',\n 1: '#5f3e12',\n 2: '#8f5e1b',\n 3: '#be7d24',\n 4: '#ee9c2d',\n 5: '#f1b057',\n 6: '#f5c481',\n 7: '#f8d7ab',\n 8: '#fcebd5',\n 9: '#fdf5ea',\n};\nexport const red = {\n 0: '#330707',\n 1: '#660f0e',\n 2: '#991616',\n 3: '#cc1e1d',\n 4: '#ff2524',\n 5: '#ff5150',\n 6: '#ff7c7c',\n 7: '#ffa8a7',\n 8: '#ffd3d3',\n 9: '#ffe9e9',\n};\nexport const blue = {\n 0: '#051533',\n 1: '#0a2a66',\n 2: '#0f3f98',\n 3: '#1454cb',\n 4: '#1969fe',\n 5: '#4787fe',\n 6: '#75a5fe',\n 7: '#a3c3ff',\n 8: '#d1e1ff',\n 9: '#e8f0ff',\n};\nexport const orange = {\n 0: '#662500',\n 1: '#993d00',\n 2: '#cc5800',\n 3: '#ff7700',\n 4: '#fea85d',\n 5: '#fec58f',\n 6: '#ffd6ae',\n 7: '#fee6cd',\n 8: '#fff1e1',\n 9: '#fff8f0',\n};\nexport const purple = {\n 0: '#151229',\n 1: '#2a2452',\n 2: '#40357c',\n 3: '#5547a5',\n 4: '#6a59ce',\n 5: '#887ad8',\n 6: '#a69be2',\n 7: '#c3bdeb',\n 8: '#e1def5',\n 9: '#f0eefa',\n};\nexport const pink = {\n 0: '#37091f',\n 1: '#69123c',\n 2: '#9b1c58',\n 3: '#cd2575',\n 4: '#ff2e92',\n 5: '#ff58a8',\n 6: '#ff82be',\n 7: '#ffabd3',\n 8: '#ffd5e9',\n 9: '#ffeaf4',\n};\n// ============================================================================\n// LEGACY COLORS (Being phased out)\n// ============================================================================\nexport const legacy = {\n aqua: {\n 0: '#0c5f8d',\n 1: '#146b99',\n 2: '#1d78a6',\n 3: '#2e89b6',\n 4: '#4a9fc4',\n 5: '#6bb4d1',\n 6: '#93cce0',\n 7: '#bddff0',\n 8: '#dceef8',\n 9: '#f2f8fc',\n },\n violet: {\n 0: '#6927da',\n 1: '#7839ee',\n 2: '#875bf7',\n 3: '#a48afb',\n 4: '#c3b4fd',\n 5: '#ddd6fe',\n 6: '#ece9fe',\n 7: '#f5f3ff',\n 8: '#fbfaff',\n },\n fuchsia: {\n 0: '#9f1ab1',\n 1: '#ba24d5',\n 2: '#d444f1',\n 3: '#e478fa',\n 4: '#eeaafd',\n 5: '#f6d0fe',\n 6: '#fbe8ff',\n 7: '#fdf4ff',\n 8: '#fefaff',\n },\n pink: {\n 0: '#a10f5f',\n 1: '#dd2590',\n 2: '#ee46bc',\n 3: '#f670c7',\n 4: '#faa7e0',\n 5: '#fcceee',\n 6: '#fce7f6',\n 7: '#fdf2fa',\n 8: '#fef6fb',\n },\n};\n// ============================================================================\n// TEXT TOKENS\n// ============================================================================\nexport const text = {\n primary: slateGrey[10],\n secondary: slateGrey[9],\n tertiary: slateGrey[8],\n};\n// ============================================================================\n// BACKGROUND TOKENS\n// ============================================================================\nexport const background = {\n primary: slateGrey[2],\n secondary: slateGrey[0],\n};\n// ============================================================================\n// BORDER TOKENS\n// ============================================================================\nexport const border = {\n primary: slateGrey[4],\n secondary: slateGrey[3],\n};\n// ============================================================================\n// BUTTON TOKENS\n// ============================================================================\nexport const button = {\n primary: {\n text: base.white,\n icon: base.white,\n border: brand[3],\n backgroundDefault: brand[3],\n backgroundHover: brand[2],\n },\n neutral: {\n text: slateGrey[10],\n textHover: base.white,\n icon: slateGrey[10],\n iconHover: base.white,\n border: slateGrey[4],\n background: slateGrey[2],\n },\n link: {\n text: base.white,\n icon: base.white,\n hover: brand[5],\n },\n error: {\n text: red[5],\n hover: red[6],\n },\n success: {\n text: green[5],\n hover: green[6],\n },\n};\n// ============================================================================\n// BADGE TOKENS\n// ============================================================================\nexport const badge = {\n slateGrey: {\n content: slateGrey[10],\n pillOutline: slateGrey[10],\n borderPrimary: slateGrey[5],\n borderSecondary: slateGrey[5],\n background: slateGrey[3],\n },\n brand: {\n content: brand[9],\n pillOutline: brand[9],\n borderPrimary: brand[6],\n borderSecondary: brand[6],\n background: brand[0],\n },\n red: {\n content: red[8],\n pillOutline: red[4],\n borderPrimary: red[2],\n borderSecondary: red[2],\n background: red[0],\n },\n yellow: {\n content: yellow[8],\n pillOutline: yellow[4],\n borderPrimary: yellow[2],\n borderSecondary: yellow[2],\n background: yellow[0],\n },\n green: {\n content: green[8],\n pillOutline: green[4],\n borderPrimary: green[2],\n borderSecondary: green[2],\n background: green[0],\n },\n purple: {\n content: purple[8],\n pillOutline: purple[4],\n borderPrimary: purple[2],\n borderSecondary: purple[2],\n background: purple[0],\n },\n blue: {\n content: blue[8],\n pillOutline: blue[4],\n borderPrimary: blue[2],\n borderSecondary: blue[2],\n background: blue[0],\n },\n orange: {\n content: orange[8],\n pillOutline: orange[4],\n borderPrimary: orange[2],\n borderSecondary: orange[2],\n background: orange[0],\n },\n pink: {\n content: pink[8],\n pillOutline: pink[4],\n borderPrimary: pink[2],\n borderSecondary: pink[2],\n background: pink[0],\n },\n};\n// ============================================================================\n// BADGE BANNER TOKENS\n// ============================================================================\nexport const badgeBanner = {\n green: {\n content: green[8],\n border: green[2],\n background: green[0],\n },\n yellow: {\n content: yellow[8],\n border: yellow[2],\n background: yellow[0],\n },\n red: {\n content: red[8],\n border: red[2],\n background: red[0],\n },\n};\n// ============================================================================\n// ALERT TOKENS\n// ============================================================================\nexport const alert = {\n green: {\n content: green[1],\n background: green[9],\n },\n yellow: {\n content: yellow[1],\n background: yellow[9],\n },\n red: {\n content: red[1],\n background: red[9],\n },\n};\n// ============================================================================\n// TAG TOKENS\n// ============================================================================\nexport const tag = {\n content: slateGrey[10],\n border: slateGrey[4],\n background: slateGrey[3],\n};\n// ============================================================================\n// MENU TOKENS\n// ============================================================================\nexport const menu = {\n backgroundDefault: slateGrey[2],\n backgroundHover: slateGrey[1],\n selected: slateGrey[3],\n};\n// ============================================================================\n// INPUT/DROPDOWN TOKENS\n// ============================================================================\nexport const inputDropdown = {\n background: slateGrey[2],\n icon: slateGrey[10],\n borderDefault: slateGrey[4],\n borderSelected: brand[3],\n textLabel: slateGrey[9],\n textPlaceholder: slateGrey[8],\n textHint: slateGrey[8],\n};\nexport const inputField = {\n backgroundDefault: slateGrey[2],\n backgroundDisabled: slateGrey[0],\n textLabel: slateGrey[9],\n textPlaceholder: slateGrey[8],\n textHint: slateGrey[8],\n textError: red[5],\n iconDefault: slateGrey[9],\n iconPlaceholder: slateGrey[10],\n iconError: red[5],\n borderDefault: slateGrey[4],\n borderSelected: brand[3],\n borderError: red[5],\n};\n// ============================================================================\n// TOGGLE TOKENS\n// ============================================================================\nexport const toggle = {\n handleDefault: base.white,\n handleDisabled: slateGrey[10],\n off: {\n backgroundDefault: slateGrey[4],\n backgroundHover: slateGrey[5],\n backgroundDisabled: slateGrey[4],\n },\n on: {\n backgroundDefault: green[3],\n backgroundHover: green[2],\n backgroundDisabled: slateGrey[4],\n },\n};\n// ============================================================================\n// CHECKBOX TOKENS\n// ============================================================================\nexport const checkbox = {\n off: {\n backgroundDefault: '#00000000',\n backgroundHover: slateGrey[5],\n backgroundDisabled: slateGrey[2],\n border: slateGrey[6],\n },\n on: {\n backgroundDefault: green[0],\n backgroundHover: green[1],\n backgroundDisabled: slateGrey[2],\n border: green[3],\n },\n};\n// ============================================================================\n// AVATAR TOKENS\n// ============================================================================\nexport const avatar = {\n content: slateGrey[10],\n background: slateGrey[4],\n};\n// ============================================================================\n// PROGRESS BAR & SLIDER TOKENS\n// ============================================================================\nexport const progressBarSlider = {\n background: slateGrey[4],\n active: green[3],\n};\n// ============================================================================\n// CARD TOKENS\n// ============================================================================\nexport const card = {\n background: slateGrey[1],\n content: slateGrey[9],\n border: slateGrey[4],\n};\n// ============================================================================\n// SIDEBAR TOKENS\n// ============================================================================\nexport const sidebar = {\n backgroundDefault: slateGrey[1],\n backgroundHover: slateGrey[3],\n backgroundActive: slateGrey[4],\n border: slateGrey[4],\n contentPrimary: slateGrey[10],\n contentSecondary: slateGrey[9],\n contentTertiary: slateGrey[8],\n};\n// ============================================================================\n// MODAL TOKENS\n// ============================================================================\nexport const modal = {\n background: slateGrey[1],\n content: slateGrey[9],\n border: slateGrey[4],\n};\n// ============================================================================\n// TAB TOKENS\n// ============================================================================\nexport const tab = {\n activeBackground: slateGrey[3],\n activeContent: brand[5],\n inactiveContent: slateGrey[9],\n border: slateGrey[4],\n};\n// ============================================================================\n// TABLE TOKENS\n// ============================================================================\nexport const table = {\n header: {\n textDefault: slateGrey[9],\n textHover: slateGrey[8],\n backgroundDefault: slateGrey[1],\n },\n border: slateGrey[4],\n cell: {\n textPrimary: slateGrey[10],\n textSecondary: slateGrey[9],\n backgroundDefault: slateGrey[2],\n backgroundHover: slateGrey[1],\n },\n};\n// ============================================================================\n// BREADCRUMBS TOKENS\n// ============================================================================\nexport const breadcrumbs = {\n textPrimaryDefault: slateGrey[10],\n textPrimaryHover: slateGrey[10],\n textSecondaryDefault: slateGrey[8],\n textSecondaryHover: slateGrey[9],\n iconPrimary: slateGrey[10],\n iconSecondary: slateGrey[8],\n};\n// ============================================================================\n// LOADING INDICATOR TOKENS\n// ============================================================================\nexport const loadingIndicator = {\n background: green[1],\n active: green[5],\n};\n// ============================================================================\n// DATE PICKER TOKENS\n// ============================================================================\nexport const datePicker = {\n textDefault: slateGrey[10],\n textSelected: base.white,\n textDisabled: slateGrey[7],\n backgroundDefault: slateGrey[2],\n backgroundMiddle: slateGrey[3],\n backgroundSelected: brand[3],\n border: slateGrey[4],\n};\n// ============================================================================\n// MISC TOKENS\n// ============================================================================\nexport const scroll = slateGrey[9];\n// ============================================================================\n// EXPORTS\n// ============================================================================\nexport const colors = {\n base,\n brand,\n slateGrey,\n green,\n yellow,\n red,\n blue,\n orange,\n purple,\n pink,\n legacy,\n text,\n background,\n border,\n button,\n badge,\n badgeBanner,\n alert,\n tag,\n menu,\n inputDropdown,\n inputField,\n toggle,\n checkbox,\n avatar,\n progressBarSlider,\n card,\n sidebar,\n modal,\n tab,\n table,\n breadcrumbs,\n loadingIndicator,\n datePicker,\n scroll,\n};\nexport default colors;\n", "/**\n * Syntro Design System - Effect Tokens\n *\n * Non-color effect tokens from the Figma design system:\n * shadows, focus rings, backdrop blurs, and overlays.\n *\n * @see https://www.figma.com/design/U0Ol5vM7FQvgPfIgCAgxgb/Design-System\n */\n// ============================================================================\n// SHADOW SCALE\n// ============================================================================\n/**\n * Figma shadow scale using rgba(16,24,40,...) base.\n * Each step increases vertical offset and blur radius.\n */\nexport const shadows = {\n xs: '0 1px 2px 0 rgba(16,24,40,0.05)',\n sm: '0 1px 3px 0 rgba(16,24,40,0.10), 0 1px 2px -1px rgba(16,24,40,0.10)',\n md: '0 4px 6px -1px rgba(16,24,40,0.10), 0 2px 4px -2px rgba(16,24,40,0.10)',\n lg: '0 10px 15px -3px rgba(16,24,40,0.10), 0 4px 6px -4px rgba(16,24,40,0.10)',\n xl: '0 20px 25px -5px rgba(16,24,40,0.10), 0 8px 10px -6px rgba(16,24,40,0.10)',\n '2xl': '0 25px 50px -12px rgba(16,24,40,0.25)',\n '3xl': '0 35px 60px -15px rgba(16,24,40,0.35)',\n inner: 'inset 0 2px 4px 0 rgba(16,24,40,0.05)',\n none: 'none',\n};\n// ============================================================================\n// FOCUS RINGS\n// ============================================================================\n/**\n * Focus ring shadows \u2014 4px spread + xs shadow for depth.\n * Used via `shadow-focus-primary`, `shadow-focus-neutral`, `shadow-focus-error`.\n *\n * Colors reference design system color tokens:\n * primary \u2192 brand-5 (#dd6d69)\n * neutral \u2192 slateGrey-8 (#87919f)\n * error \u2192 red-5 (#ff5150)\n */\nexport const focusRings = {\n primary: '0 0 0 4px rgba(221,109,105,0.25), 0 1px 2px 0 rgba(16,24,40,0.05)',\n neutral: '0 0 0 4px rgba(135,145,159,0.25), 0 1px 2px 0 rgba(16,24,40,0.05)',\n error: '0 0 0 4px rgba(255,81,80,0.25), 0 1px 2px 0 rgba(16,24,40,0.05)',\n};\n// ============================================================================\n// BACKDROP BLUR\n// ============================================================================\n/**\n * Figma backdrop blur scale.\n */\nexport const backdropBlur = {\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '40px',\n};\n// ============================================================================\n// OVERLAY\n// ============================================================================\n/**\n * Modal/dialog overlay backgrounds.\n * solid \u2192 full-screen scrim (opaque)\n * blur \u2192 lighter scrim intended to pair with backdrop-blur\n */\nexport const overlay = {\n solid: 'rgba(0,0,0,0.70)',\n blur: 'rgba(0,0,0,0.25)',\n};\n// ============================================================================\n// PRODUCT GLOW SHADOWS\n// ============================================================================\n/**\n * Product-specific glow shadows not in the Figma shadow scale.\n * Used for validated states, brand highlights, and UI depth cues.\n */\nexport const glowShadows = {\n 'glow-green': '0 0 20px -8px rgba(34,197,94,0.3)',\n 'glow-brand': '0 0 25px rgba(212,72,68,0.25)',\n 'glow-brand-sm': '0 0 0 1px rgba(212,72,68,0.15)',\n 'glow-brand-md': '0 0 0 2px rgba(212,72,68,0.3)',\n 'glow-brand-active': '0 0.375rem 0.875rem -0.625rem rgba(212,72,68,0.8)',\n 'glow-brand-tab': '0 0.5rem 1.25rem -0.75rem rgba(212,72,68,0.7)',\n 'glow-brand-nav': '0 0.625rem 1.875rem -1.125rem rgba(212,72,68,0.9)',\n};\n// ============================================================================\n// ELEVATION SHADOWS\n// ============================================================================\n/**\n * Dark-on-dark elevation shadows for card depth.\n */\nexport const elevationShadows = {\n 'elevation-sm': '0 8px 24px -16px rgba(0,0,0,0.6)',\n 'elevation-md': '0 12px 32px -18px rgba(0,0,0,0.6)',\n 'elevation-lg': '0 18px 48px -24px rgba(0,0,0,0.65)',\n 'elevation-card': '0 0.75rem 2rem -1.25rem rgba(0,0,0,0.7)',\n 'elevation-card-soft': '0 0.75rem 2.375rem -0.75rem rgba(0,0,0,0.4)',\n 'elevation-card-tight': '0 0.625rem 1.625rem -1.125rem rgba(0,0,0,0.6)',\n};\n// ============================================================================\n// ANIMATION TIMING CONSTANTS\n// ============================================================================\n/**\n * Shared animation duration constants for consistent motion across the UI.\n */\nexport const animationDuration = {\n DURATION_SHORT: '150ms',\n DURATION_MEDIUM: '200ms',\n DURATION_LONG: '300ms',\n};\n// ============================================================================\n// DEFAULT EXPORT\n// ============================================================================\nexport const effects = {\n shadows,\n focusRings,\n backdropBlur,\n overlay,\n glowShadows,\n elevationShadows,\n animationDuration,\n};\nexport default effects;\n", "/**\n * Syntro Design System - Tailwind Preset\n *\n * Import and extend this preset in your Tailwind config to use the design system.\n *\n * @example\n * ```typescript\n * import { syntroPreset } from '@syntro/design-system/tailwind-preset';\n *\n * export default {\n * presets: [syntroPreset],\n * content: ['./src/**\\/*.{ts,tsx}'],\n * };\n * ```\n */\nimport { colors } from './tokens/colors';\nimport { backdropBlur, elevationShadows, focusRings, glowShadows, overlay, shadows, } from './tokens/effects';\nexport const syntroPreset = {\n darkMode: ['class'],\n theme: {\n extend: {\n colors: {\n // Base colors\n white: colors.base.white,\n black: colors.base.black,\n // Brand scale\n brand: {\n 0: colors.brand[0],\n 1: colors.brand[1],\n 2: colors.brand[2],\n 3: colors.brand[3],\n 4: colors.brand[4],\n 5: colors.brand[5],\n 6: colors.brand[6],\n 7: colors.brand[7],\n 8: colors.brand[8],\n 9: colors.brand[9],\n DEFAULT: colors.brand[3],\n },\n // Neutral scale (Slate Grey)\n 'slate-grey': {\n 0: colors.slateGrey[0],\n 1: colors.slateGrey[1],\n 2: colors.slateGrey[2],\n 3: colors.slateGrey[3],\n 4: colors.slateGrey[4],\n 5: colors.slateGrey[5],\n 6: colors.slateGrey[6],\n 7: colors.slateGrey[7],\n 8: colors.slateGrey[8],\n 9: colors.slateGrey[9],\n 10: colors.slateGrey[10],\n 11: colors.slateGrey[11],\n 12: colors.slateGrey[12],\n DEFAULT: colors.slateGrey[6],\n },\n // Semantic color scales\n green: {\n 0: colors.green[0],\n 1: colors.green[1],\n 2: colors.green[2],\n 3: colors.green[3],\n 4: colors.green[4],\n 5: colors.green[5],\n 6: colors.green[6],\n 7: colors.green[7],\n 8: colors.green[8],\n 9: colors.green[9],\n DEFAULT: colors.green[4],\n },\n yellow: {\n 0: colors.yellow[0],\n 1: colors.yellow[1],\n 2: colors.yellow[2],\n 3: colors.yellow[3],\n 4: colors.yellow[4],\n 5: colors.yellow[5],\n 6: colors.yellow[6],\n 7: colors.yellow[7],\n 8: colors.yellow[8],\n 9: colors.yellow[9],\n DEFAULT: colors.yellow[4],\n },\n red: {\n 0: colors.red[0],\n 1: colors.red[1],\n 2: colors.red[2],\n 3: colors.red[3],\n 4: colors.red[4],\n 5: colors.red[5],\n 6: colors.red[6],\n 7: colors.red[7],\n 8: colors.red[8],\n 9: colors.red[9],\n DEFAULT: colors.red[4],\n },\n blue: {\n 0: colors.blue[0],\n 1: colors.blue[1],\n 2: colors.blue[2],\n 3: colors.blue[3],\n 4: colors.blue[4],\n 5: colors.blue[5],\n 6: colors.blue[6],\n 7: colors.blue[7],\n 8: colors.blue[8],\n 9: colors.blue[9],\n DEFAULT: colors.blue[4],\n },\n orange: {\n 0: colors.orange[0],\n 1: colors.orange[1],\n 2: colors.orange[2],\n 3: colors.orange[3],\n 4: colors.orange[4],\n 5: colors.orange[5],\n 6: colors.orange[6],\n 7: colors.orange[7],\n 8: colors.orange[8],\n 9: colors.orange[9],\n DEFAULT: colors.orange[3],\n },\n purple: {\n 0: colors.purple[0],\n 1: colors.purple[1],\n 2: colors.purple[2],\n 3: colors.purple[3],\n 4: colors.purple[4],\n 5: colors.purple[5],\n 6: colors.purple[6],\n 7: colors.purple[7],\n 8: colors.purple[8],\n 9: colors.purple[9],\n DEFAULT: colors.purple[4],\n },\n pink: {\n 0: colors.pink[0],\n 1: colors.pink[1],\n 2: colors.pink[2],\n 3: colors.pink[3],\n 4: colors.pink[4],\n 5: colors.pink[5],\n 6: colors.pink[6],\n 7: colors.pink[7],\n 8: colors.pink[8],\n 9: colors.pink[9],\n DEFAULT: colors.pink[4],\n },\n // Semantic tokens\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n text: {\n primary: colors.text.primary,\n secondary: colors.text.secondary,\n tertiary: colors.text.tertiary,\n DEFAULT: colors.text.primary,\n },\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n background: {\n primary: colors.background.primary,\n secondary: colors.background.secondary,\n DEFAULT: colors.background.primary,\n },\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n border: {\n primary: colors.border.primary,\n secondary: colors.border.secondary,\n DEFAULT: colors.border.primary,\n },\n // Component tokens - Button\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n 'btn-primary': {\n DEFAULT: colors.button.primary.backgroundDefault,\n hover: colors.button.primary.backgroundHover,\n text: colors.button.primary.text,\n border: colors.button.primary.border,\n },\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n 'btn-neutral': {\n DEFAULT: colors.button.neutral.background,\n text: colors.button.neutral.text,\n 'text-hover': colors.button.neutral.textHover,\n border: colors.button.neutral.border,\n },\n 'btn-link': {\n text: colors.button.link.text,\n hover: colors.button.link.hover,\n },\n 'btn-error': {\n text: colors.button.error.text,\n hover: colors.button.error.hover,\n },\n 'btn-success': {\n text: colors.button.success.text,\n hover: colors.button.success.hover,\n },\n // Component tokens - Card\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n card: {\n bg: colors.card.background,\n content: colors.card.content,\n border: colors.card.border,\n },\n // Component tokens - Modal\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n modal: {\n bg: colors.modal.background,\n content: colors.modal.content,\n border: colors.modal.border,\n },\n // Component tokens - Sidebar\n sidebar: {\n DEFAULT: colors.sidebar.backgroundDefault,\n hover: colors.sidebar.backgroundHover,\n active: colors.sidebar.backgroundActive,\n border: colors.sidebar.border,\n 'content-primary': colors.sidebar.contentPrimary,\n 'content-secondary': colors.sidebar.contentSecondary,\n 'content-tertiary': colors.sidebar.contentTertiary,\n },\n // Component tokens - Tab\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n tab: {\n 'active-bg': colors.tab.activeBackground,\n 'active-content': colors.tab.activeContent,\n 'inactive-content': colors.tab.inactiveContent,\n border: colors.tab.border,\n },\n // Component tokens - Table\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n 'table-header': {\n text: colors.table.header.textDefault,\n 'text-hover': colors.table.header.textHover,\n bg: colors.table.header.backgroundDefault,\n },\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n 'table-cell': {\n // biome-ignore lint: Tailwind preset defines semantic token names, not usage of shadcn color classes\n 'text-primary': colors.table.cell.textPrimary,\n // biome-ignore lint: Tailwind preset defines semantic token names, not usage of shadcn color classes\n 'text-secondary': colors.table.cell.textSecondary,\n bg: colors.table.cell.backgroundDefault,\n 'bg-hover': colors.table.cell.backgroundHover,\n },\n 'table-border': colors.table.border,\n // Component tokens - Input\n 'input-field': {\n bg: colors.inputField.backgroundDefault,\n 'bg-disabled': colors.inputField.backgroundDisabled,\n 'text-label': colors.inputField.textLabel,\n 'text-placeholder': colors.inputField.textPlaceholder,\n 'text-hint': colors.inputField.textHint,\n 'text-error': colors.inputField.textError,\n border: colors.inputField.borderDefault,\n 'border-selected': colors.inputField.borderSelected,\n 'border-error': colors.inputField.borderError,\n },\n // Component tokens - Badge (9 variants)\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n 'badge-slate': {\n content: colors.badge.slateGrey.content,\n outline: colors.badge.slateGrey.pillOutline,\n border: colors.badge.slateGrey.borderPrimary,\n bg: colors.badge.slateGrey.background,\n },\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n 'badge-brand': {\n content: colors.badge.brand.content,\n outline: colors.badge.brand.pillOutline,\n border: colors.badge.brand.borderPrimary,\n bg: colors.badge.brand.background,\n },\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n 'badge-green': {\n content: colors.badge.green.content,\n outline: colors.badge.green.pillOutline,\n border: colors.badge.green.borderPrimary,\n bg: colors.badge.green.background,\n },\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n 'badge-yellow': {\n content: colors.badge.yellow.content,\n outline: colors.badge.yellow.pillOutline,\n border: colors.badge.yellow.borderPrimary,\n bg: colors.badge.yellow.background,\n },\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n 'badge-red': {\n content: colors.badge.red.content,\n outline: colors.badge.red.pillOutline,\n border: colors.badge.red.borderPrimary,\n bg: colors.badge.red.background,\n },\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n 'badge-blue': {\n content: colors.badge.blue.content,\n outline: colors.badge.blue.pillOutline,\n border: colors.badge.blue.borderPrimary,\n bg: colors.badge.blue.background,\n },\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n 'badge-purple': {\n content: colors.badge.purple.content,\n outline: colors.badge.purple.pillOutline,\n border: colors.badge.purple.borderPrimary,\n bg: colors.badge.purple.background,\n },\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n 'badge-orange': {\n content: colors.badge.orange.content,\n outline: colors.badge.orange.pillOutline,\n border: colors.badge.orange.borderPrimary,\n bg: colors.badge.orange.background,\n },\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n 'badge-pink': {\n content: colors.badge.pink.content,\n outline: colors.badge.pink.pillOutline,\n border: colors.badge.pink.borderPrimary,\n bg: colors.badge.pink.background,\n },\n // Component tokens - Toggle\n toggle: {\n handle: colors.toggle.handleDefault,\n 'handle-disabled': colors.toggle.handleDisabled,\n 'off-bg': colors.toggle.off.backgroundDefault,\n 'off-bg-hover': colors.toggle.off.backgroundHover,\n 'on-bg': colors.toggle.on.backgroundDefault,\n 'on-bg-hover': colors.toggle.on.backgroundHover,\n },\n // Component tokens - Menu\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n menu: {\n DEFAULT: colors.menu.backgroundDefault,\n hover: colors.menu.backgroundHover,\n selected: colors.menu.selected,\n },\n // Component tokens - Alert\n 'alert-green': {\n content: colors.alert.green.content,\n bg: colors.alert.green.background,\n },\n 'alert-yellow': {\n content: colors.alert.yellow.content,\n bg: colors.alert.yellow.background,\n },\n 'alert-red': {\n content: colors.alert.red.content,\n bg: colors.alert.red.background,\n },\n },\n // Typography\n fontSize: {\n xs: ['0.75rem', { lineHeight: '1rem' }],\n sm: ['0.875rem', { lineHeight: '1.25rem' }],\n base: ['1rem', { lineHeight: '1.5rem' }],\n lg: ['1.125rem', { lineHeight: '1.75rem' }],\n xl: ['1.25rem', { lineHeight: '1.75rem' }],\n '2xl': ['1.5rem', { lineHeight: '2rem' }],\n '3xl': ['1.875rem', { lineHeight: '2.25rem' }],\n '4xl': ['2.25rem', { lineHeight: '2.5rem' }],\n '5xl': ['3rem', { lineHeight: '1' }],\n '6xl': ['3.75rem', { lineHeight: '1' }],\n },\n // Spacing\n spacing: {\n 0: '0',\n 1: '0.25rem',\n 2: '0.5rem',\n 3: '0.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 8: '2rem',\n 10: '2.5rem',\n 12: '3rem',\n 16: '4rem',\n 20: '5rem',\n 24: '6rem',\n 32: '8rem',\n },\n // Border radius\n borderRadius: {\n none: '0',\n sm: '0.125rem',\n DEFAULT: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n full: '9999px',\n },\n // Box shadow \u2014 Figma shadow scale + product glows + elevation\n boxShadow: {\n ...shadows,\n ...glowShadows,\n ...elevationShadows,\n DEFAULT: shadows.sm,\n // Focus rings (4px spread + xs shadow)\n 'focus-primary': focusRings.primary,\n 'focus-neutral': focusRings.neutral,\n 'focus-error': focusRings.error,\n },\n // Backdrop blur \u2014 Figma scale\n // biome-ignore lint: Tailwind preset intentionally maps design tokens from source\n backdropBlur: {\n sm: backdropBlur.sm,\n md: backdropBlur.md,\n lg: backdropBlur.lg,\n xl: backdropBlur.xl,\n },\n // Overlay background colors\n backgroundColor: {\n 'overlay-solid': overlay.solid,\n 'overlay-blur': overlay.blur,\n },\n // Animation\n keyframes: {\n 'fade-in': {\n '0%': { opacity: '0' },\n '100%': { opacity: '1' },\n },\n 'fade-out': {\n '0%': { opacity: '1' },\n '100%': { opacity: '0' },\n },\n 'slide-in-from-top': {\n '0%': { transform: 'translateY(-100%)' },\n '100%': { transform: 'translateY(0)' },\n },\n 'slide-in-from-bottom': {\n '0%': { transform: 'translateY(100%)' },\n '100%': { transform: 'translateY(0)' },\n },\n 'slide-in-from-left': {\n '0%': { transform: 'translateX(-100%)' },\n '100%': { transform: 'translateX(0)' },\n },\n 'slide-in-from-right': {\n '0%': { transform: 'translateX(100%)' },\n '100%': { transform: 'translateX(0)' },\n },\n },\n animation: {\n 'fade-in': 'fade-in 0.2s ease-out',\n 'fade-out': 'fade-out 0.2s ease-out',\n 'slide-in-from-top': 'slide-in-from-top 0.3s ease-out',\n 'slide-in-from-bottom': 'slide-in-from-bottom 0.3s ease-out',\n 'slide-in-from-left': 'slide-in-from-left 0.3s ease-out',\n 'slide-in-from-right': 'slide-in-from-right 0.3s ease-out',\n },\n },\n },\n};\nexport default syntroPreset;\n", "/**\n * Syntro Design System \u2014 Editor Panel Shell Tokens\n *\n * Single source of truth for the floating editor panel's visuals and behavior.\n * Consumed by:\n * - packages/shared-editor-ui/src/components/EditorPanelShell.tsx (React)\n * - packages/shared-editor-ui/src/controllers/PanelShellController.ts (Lit)\n *\n * Any change here updates both React and Lit panels in one step \u2014 no drift.\n */\nimport { base, brand } from './colors';\n// ============================================================================\n// Panel background & shadows\n// ============================================================================\n/** Dark gradient rendered behind the panel contents (backdrop-blur layered on). */\nexport const panelBackground = 'linear-gradient(160deg, rgba(7,8,10,0.84) 0%, rgba(14,17,20,0.88) 45%, rgba(15,19,24,0.84) 100%)';\n/** Outer shadows for the panel, indexed by dock state. */\nexport const panelShadows = {\n /** Free-floating panel \u2014 shadow all sides. */\n floating: '0 8px 60px rgba(0,0,0,0.5)',\n /** Docked to left \u2014 shadow cast rightward into page. */\n dockedLeft: '20px 0 60px rgba(0,0,0,0.5)',\n /** Docked to right \u2014 shadow cast leftward into page. */\n dockedRight: '-20px 0 60px rgba(0,0,0,0.5)',\n};\n/** Backdrop-filter blur radius applied to the panel surface. */\nexport const panelBackdropBlur = '12px';\n// ============================================================================\n// FAB (floating action button) visuals\n// ============================================================================\nexport const fab = {\n /** Diameter in pixels. */\n size: 56,\n /** Inset from the panel's top-left corner in pixels. */\n inset: 12,\n /** Background color (always the brand black). */\n background: base.black,\n /** Icon / logo color. */\n color: base.white,\n /** Border \u2014 2px brand red ring. */\n border: `2px solid ${brand[3]}`,\n /** Shadow when the panel is open (inner ring for \"active\" state). */\n shadowOpen: '0 4px 24px rgba(0,0,0,0.6), 0 0 0 2px rgba(255,255,255,0.08)',\n /** Shadow when the panel is closed. */\n shadowClosed: '0 4px 24px rgba(0,0,0,0.6)',\n};\n// ============================================================================\n// Behavior: resize, drag, snap\n// ============================================================================\nexport const panelBehavior = {\n /** Minimum panel width when resizing or undocked. */\n minWidth: 480,\n /** Minimum panel height when resizing or undocked. */\n minHeight: 400,\n /** Edge thickness of resize handles in pixels. */\n handleSize: 8,\n /** Pixels the FAB must move before a press becomes a drag (vs a click). */\n dragThreshold: 5,\n /** Distance from a viewport edge that triggers edge-dock snapping. */\n snapThreshold: 20,\n};\n// ============================================================================\n// Aggregate export\n// ============================================================================\nexport const panelShell = {\n background: panelBackground,\n shadows: panelShadows,\n backdropBlur: panelBackdropBlur,\n fab,\n behavior: panelBehavior,\n};\nexport default panelShell;\n", "import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useId } from 'react';\nimport { cn } from '../cn';\nexport function EditorSelect({ label, className, children, id, ...props }) {\n const generatedId = useId();\n const selectId = id || generatedId;\n return (_jsxs(\"div\", { children: [label && (_jsx(\"label\", { htmlFor: selectId, className: \"se-text-sm se-font-medium se-text-input-field-text-label se-mb-1 se-block\", children: label })), _jsx(\"select\", { id: selectId, ...props, className: cn('se-w-full se-py-2 se-px-3 se-rounded-lg se-border se-border-input-field-border se-bg-slate-grey-3 se-text-text-primary se-text-sm se-mb-2', 'focus:se-border-input-field-border-selected focus:se-outline-none focus:se-shadow-focus-primary', 'disabled:se-bg-input-field-bg-disabled disabled:se-cursor-not-allowed disabled:se-opacity-50', className), children: children })] }));\n}\n", "import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useEffect, useId, useRef } from 'react';\nimport { cn } from '../cn';\nexport function EditorTextarea({ label, className, value, id, ...props }) {\n const ref = useRef(null);\n const generatedId = useId();\n const textareaId = id || generatedId;\n // Auto-resize to fit content\n useEffect(() => {\n const el = ref.current;\n if (!el)\n return;\n el.style.height = 'auto';\n el.style.height = `${el.scrollHeight}px`;\n }, []);\n return (_jsxs(\"div\", { children: [label && (_jsx(\"label\", { htmlFor: textareaId, className: \"se-text-sm se-font-medium se-text-input-field-text-label se-mb-1 se-block\", children: label })), _jsx(\"textarea\", { id: textareaId, ref: ref, value: value, ...props, className: cn('se-w-full se-py-2 se-px-3 se-rounded-lg se-border se-border-input-field-border se-bg-slate-grey-3 se-text-text-primary se-text-sm se-font-[inherit] se-mb-2 se-resize-y se-min-h-[60px] se-max-h-[50vh] se-overflow-y-auto se-box-border', 'placeholder:se-text-input-field-text-placeholder', 'focus:se-border-input-field-border-selected focus:se-outline-none focus:se-shadow-focus-primary', 'disabled:se-bg-input-field-bg-disabled disabled:se-cursor-not-allowed disabled:se-opacity-50', className) })] }));\n}\n", "import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { createPortal } from 'react-dom';\nimport { useElementRect } from '../hooks/useElementRect';\nexport function ElementHighlight({ element, color, bgColor = 'transparent', borderStyle = 'solid', borderWidth = 2, label, labelIcon, showRemove, onRemove, onClick, zIndex = 2147483644, padding = 2, showDimensions, className, }) {\n const rect = useElementRect(element);\n if (!rect)\n return null;\n // Build dimensions label from element metadata\n const dimensionsLabel = showDimensions\n ? (() => {\n const tag = element.tagName.toLowerCase();\n const id = element.id ? `#${element.id}` : '';\n const cls = element.className && typeof element.className === 'string'\n ? `.${element.className.split(' ').filter(Boolean).slice(0, 2).join('.')}`\n : '';\n return `${tag}${id}${cls} \\u2014 ${Math.round(rect.width)}\\u00d7${Math.round(rect.height)}`;\n })()\n : null;\n const displayLabel = label || dimensionsLabel;\n return createPortal(\n // biome-ignore lint/a11y/noStaticElementInteractions: overlay highlight element is conditionally interactive based on onClick prop\n _jsx(\"div\", { \"data-syntro-highlight\": true, \"data-syntro-editor-ui\": \"highlight\", className: className, role: onClick ? 'button' : undefined, tabIndex: onClick ? 0 : undefined, onClick: onClick\n ? (e) => {\n e.stopPropagation();\n e.preventDefault();\n onClick();\n }\n : undefined, onKeyDown: onClick\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.stopPropagation();\n e.preventDefault();\n onClick();\n }\n }\n : undefined, style: {\n position: 'fixed',\n top: rect.top - padding,\n left: rect.left - padding,\n width: rect.width + padding * 2,\n height: rect.height + padding * 2,\n border: `${borderWidth}px ${borderStyle} ${color}`,\n backgroundColor: bgColor,\n borderRadius: '4px',\n zIndex,\n pointerEvents: onClick || onRemove ? 'auto' : 'none',\n cursor: onClick ? 'pointer' : 'default',\n transition: 'all 0.05s ease-out',\n boxSizing: 'border-box',\n }, children: displayLabel && (_jsxs(\"div\", { \"data-syntro-highlight-label\": true, \"data-syntro-editor-ui\": \"highlight-label\", className: \"se-text-xs\", style: {\n position: 'absolute',\n top: '-22px',\n left: 0,\n background: showDimensions\n ? `${color.replace(')', ',0.85)').replace('rgb(', 'rgba(')}`\n : color,\n color: '#fff',\n fontWeight: 600,\n fontFamily: showDimensions ? 'monospace' : 'inherit',\n padding: '1px 6px',\n borderRadius: '4px',\n whiteSpace: 'nowrap',\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n pointerEvents: 'auto',\n }, children: [labelIcon, displayLabel, showRemove && onRemove && (_jsx(\"button\", { type: \"button\", className: \"se-text-xs\", \"data-syntro-highlight-remove\": true, \"data-syntro-editor-ui\": \"highlight-remove\", onClick: (e) => {\n e.stopPropagation();\n e.preventDefault();\n onRemove();\n }, style: {\n background: 'rgba(0,0,0,0.4)',\n border: 'none',\n color: '#fff',\n borderRadius: '50%',\n width: '16px',\n height: '16px',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 0,\n lineHeight: 1,\n }, children: \"\\u00D7\" }))] })) }), document.body);\n}\n", "import { useCallback, useEffect, useState } from 'react';\n/**\n * Returns a live DOMRect for an element, updating on scroll, resize,\n * and element size changes.\n *\n * Uses requestAnimationFrame to batch updates and avoid layout thrashing.\n */\nexport function useElementRect(element) {\n const [rect, setRect] = useState(null);\n const update = useCallback(() => {\n if (element) {\n setRect(element.getBoundingClientRect());\n }\n }, [element]);\n useEffect(() => {\n if (!element) {\n setRect(null);\n return;\n }\n // Initial measurement\n setRect(element.getBoundingClientRect());\n let rafId = null;\n const scheduleUpdate = () => {\n if (rafId != null)\n return;\n rafId = requestAnimationFrame(() => {\n rafId = null;\n update();\n });\n };\n // Scroll (capture phase catches nested scroll containers)\n window.addEventListener('scroll', scheduleUpdate, true);\n window.addEventListener('resize', scheduleUpdate);\n // Observe element size changes\n const ro = new ResizeObserver(scheduleUpdate);\n ro.observe(element);\n return () => {\n window.removeEventListener('scroll', scheduleUpdate, true);\n window.removeEventListener('resize', scheduleUpdate);\n ro.disconnect();\n if (rafId != null)\n cancelAnimationFrame(rafId);\n };\n }, [element, update]);\n return rect;\n}\n", "import { jsx as _jsx } from \"react/jsx-runtime\";\nexport function EmptyState({ message }) {\n return (_jsx(\"div\", { className: \"se-text-center se-py-8 se-px-4 se-text-text-secondary se-text-sm\", children: message }));\n}\n", "import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { cn } from '../cn';\nexport function GroupHeader({ label, count, className }) {\n return (_jsxs(\"div\", { className: cn('se-text-xs se-font-bold se-text-text-primary se-uppercase se-tracking-wide se-py-1 se-pb-2 se-flex se-items-center se-justify-between', className), children: [_jsx(\"span\", { children: label }), _jsx(\"span\", { className: \"se-text-xs se-text-text-secondary se-bg-badge-slate-bg se-px-1.5 se-py-0.5 se-rounded-lg\", children: count })] }));\n}\n", "/**\n * itemCardHeader \u2014 pure render helper for the header row used by every\n * adaptive editor's item cards (Overlay, Content, Nav, FAQ).\n *\n * The header row is the consistent part of the card UX: a label that may be\n * clickable, an optional kind tag, the anchor status pill (`<se-anchor-pill>`\n * or any html template), and an optional delete button. Each editor still\n * controls its own card body (description, trigger badge, rationale, etc.)\n * because the body content varies per editor.\n *\n * This is a render function, not a custom element, because the surrounding\n * card uses light DOM and needs the header to compose cleanly with sibling\n * markup. It also keeps consumer call sites a single function call.\n */\nimport { html, nothing } from 'lit';\nexport function itemCardHeader(opts) {\n const { label, labelClickable = false, onLabelClick, kindShort, statusPill = nothing, onDelete, deleteTestid, deleteLabel = 'Delete', } = opts;\n return html `\n <div class=\"se-flex se-items-center se-gap-2\">\n <span\n role=${labelClickable ? 'button' : nothing}\n tabindex=${labelClickable ? '0' : nothing}\n @click=${labelClickable && onLabelClick ? onLabelClick : nothing}\n @keydown=${labelClickable && onLabelClick\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onLabelClick();\n }\n }\n : nothing}\n class=\"se-flex-1 se-overflow-hidden se-text-ellipsis se-whitespace-nowrap se-text-sm se-text-text-primary ${labelClickable ? 'se-cursor-pointer' : ''}\"\n >\n ${label}\n </span>\n ${kindShort ? html `<span class=\"se-text-[10px] se-text-text-tertiary se-uppercase\">${kindShort}</span>` : nothing}\n ${statusPill}\n ${onDelete\n ? html `<button\n type=\"button\"\n data-testid=${deleteTestid ?? 'delete-item'}\n aria-label=${deleteLabel}\n @click=${(e) => {\n e.stopPropagation();\n onDelete(e);\n }}\n class=\"se-shrink-0 se-px-1.5 se-py-0.5 se-text-xs se-text-text-tertiary hover:se-text-red-4 se-bg-transparent se-border-none se-cursor-pointer\"\n >\u2715</button>`\n : nothing}\n </div>\n `;\n}\n", "import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * TriggerJourney \u2014 compact horizontal node graph for triggerWhen conditions.\n *\n * Displays each condition as a small circle node connected by lines.\n * Nodes light up green as conditions are met.\n */\nimport { Check } from 'lucide-react';\nimport { cn } from '../cn';\n/* ------------------------------------------------------------------ */\n/* Internal: small progress bar for event_count nodes */\n/* ------------------------------------------------------------------ */\nfunction ProgressBar({ current, target }) {\n const pct = Math.min(100, Math.round((current / Math.max(target, 1)) * 100));\n return (_jsxs(\"div\", { className: \"se-flex se-items-center se-gap-0.5\", children: [_jsx(\"span\", { className: \"se-inline-block se-w-8 se-h-1 se-rounded-full se-bg-white/20\", title: `${current}/${target} (${pct}%)`, children: _jsx(\"span\", { className: cn('se-block se-h-full se-rounded-full se-transition-all', pct >= 100 ? 'se-bg-green-4' : 'se-bg-blue-4'), style: { width: `${pct}%` } }) }), _jsxs(\"span\", { className: \"se-text-[11px] se-font-medium se-text-text-secondary\", children: [current, \"/\", target] })] }));\n}\n/* ------------------------------------------------------------------ */\n/* Internal: single journey node with label + optional connection */\n/* ------------------------------------------------------------------ */\nfunction JourneyNode({ cs, isLast }) {\n const hasProgress = !!cs.formatted.progress;\n const inProgress = !cs.passed && hasProgress && cs.formatted.progress.current > 0;\n return (_jsxs(\"div\", { className: \"se-flex se-items-center se-gap-0\", children: [_jsxs(\"div\", { className: \"se-flex se-flex-col se-items-center se-min-w-0\", children: [_jsx(\"div\", { \"data-journey-node\": true, \"data-passed\": cs.passed ? 'true' : 'false', className: cn('se-w-4 se-h-4 se-rounded-full se-border-2 se-flex se-items-center se-justify-center se-shrink-0', cs.passed\n ? 'se-bg-green-4 se-border-green-4'\n : inProgress\n ? 'se-bg-blue-4 se-border-blue-4'\n : 'se-bg-transparent se-border-white/30'), children: cs.passed && _jsx(Check, { className: \"se-w-2.5 se-h-2.5 se-text-white\" }) }), _jsx(\"span\", { className: \"se-text-[11px] se-font-medium se-text-text-secondary se-truncate se-max-w-[60px] se-text-center se-mt-0.5\", title: cs.formatted.instruction, children: cs.formatted.shortLabel }), hasProgress && (_jsx(ProgressBar, { current: cs.formatted.progress.current, target: cs.formatted.progress.target }))] }), !isLast && (_jsx(\"div\", { \"data-journey-line\": true, className: cn('se-h-0.5 se-w-4 se-self-start se-mt-2 se-shrink-0', cs.passed ? 'se-bg-green-4' : 'se-bg-white/20') }))] }));\n}\n/* ------------------------------------------------------------------ */\n/* Main component */\n/* ------------------------------------------------------------------ */\nexport function TriggerJourney({ status }) {\n if (!status || status.conditions.length === 0) {\n return (_jsx(\"div\", { className: \"se-mt-1 se-text-[12px] se-font-medium se-text-text-secondary se-italic\", children: \"Always Present\" }));\n }\n const { conditions } = status;\n const allPassed = conditions.every((c) => c.passed);\n const isMulti = conditions.length > 1;\n return (_jsxs(\"div\", { className: \"se-mt-1\", children: [_jsx(\"div\", { className: \"se-flex se-items-start\", children: conditions.map((cs, i) => (_jsx(JourneyNode, { cs: cs, isLast: i === conditions.length - 1 }, i))) }), allPassed && isMulti && (_jsxs(\"div\", { className: \"se-flex se-items-center se-gap-1 se-mt-1 se-text-[12px] se-text-green-4\", children: [_jsx(Check, { className: \"se-w-3 se-h-3\" }), _jsx(\"span\", { children: \"All conditions met\" })] }))] }));\n}\n", "/**\n * PanelShellController \u2014 Lit ReactiveController for draggable/resizable panels.\n *\n * Owns geometry state (position, size, dock), pointer-event handlers for the\n * drag FAB and 8 resize handles, localStorage persistence, and viewport\n * clamping. A consuming LitElement calls `attachFab(el)` / `attachHandle(el, dir)`\n * on its rendered DOM to hook up pointer events, and reads `panelStyles` /\n * `fabStyles` to position the panel + FAB.\n *\n * Why a controller, not a wrapper element: `<slot>`-based wrapper elements\n * don't compose well in light DOM (Lit wipes children on render), and shadow\n * DOM breaks Playwright child selectors used by E2E tests. A ReactiveController\n * is the Lit-idiomatic way to share stateful logic across elements.\n *\n * Emits one callback: `onToggle` when the FAB is pressed without dragging.\n */\nimport { panelShell } from '@syntro/design-system';\n// =============================================================================\n// Constants\n// =============================================================================\nconst DEFAULTS = {\n minWidth: panelShell.behavior.minWidth,\n minHeight: panelShell.behavior.minHeight,\n dragThreshold: panelShell.behavior.dragThreshold,\n snapThreshold: panelShell.behavior.snapThreshold,\n fabSize: panelShell.fab.size,\n fabInset: panelShell.fab.inset,\n storageKey: 'syntro:editor-panel',\n};\nconst HANDLE_SIZE = panelShell.behavior.handleSize;\n// =============================================================================\n// Helpers\n// =============================================================================\nexport function makeResizeHandles() {\n return [\n {\n dir: 'n',\n style: {\n top: '0',\n left: `${HANDLE_SIZE}px`,\n right: `${HANDLE_SIZE}px`,\n height: `${HANDLE_SIZE}px`,\n },\n cursor: 'ns-resize',\n },\n {\n dir: 's',\n style: {\n bottom: '0',\n left: `${HANDLE_SIZE}px`,\n right: `${HANDLE_SIZE}px`,\n height: `${HANDLE_SIZE}px`,\n },\n cursor: 'ns-resize',\n },\n {\n dir: 'e',\n style: {\n right: '0',\n top: `${HANDLE_SIZE}px`,\n bottom: `${HANDLE_SIZE}px`,\n width: `${HANDLE_SIZE}px`,\n },\n cursor: 'ew-resize',\n },\n {\n dir: 'w',\n style: {\n left: '0',\n top: `${HANDLE_SIZE}px`,\n bottom: `${HANDLE_SIZE}px`,\n width: `${HANDLE_SIZE}px`,\n },\n cursor: 'ew-resize',\n },\n {\n dir: 'ne',\n style: {\n top: '0',\n right: '0',\n width: `${HANDLE_SIZE * 2}px`,\n height: `${HANDLE_SIZE * 2}px`,\n },\n cursor: 'nesw-resize',\n },\n {\n dir: 'nw',\n style: {\n top: '0',\n left: '0',\n width: `${HANDLE_SIZE * 2}px`,\n height: `${HANDLE_SIZE * 2}px`,\n },\n cursor: 'nwse-resize',\n },\n {\n dir: 'se',\n style: {\n bottom: '0',\n right: '0',\n width: `${HANDLE_SIZE * 2}px`,\n height: `${HANDLE_SIZE * 2}px`,\n },\n cursor: 'nwse-resize',\n },\n {\n dir: 'sw',\n style: {\n bottom: '0',\n left: '0',\n width: `${HANDLE_SIZE * 2}px`,\n height: `${HANDLE_SIZE * 2}px`,\n },\n cursor: 'nesw-resize',\n },\n ];\n}\n// =============================================================================\n// Controller\n// =============================================================================\nexport class PanelShellController {\n constructor(host, options = {}) {\n this._panelEl = null;\n this._fabEl = null;\n // Drag state\n this._isDragging = false;\n this._hasMoved = false;\n this._dragOffset = { x: 0, y: 0 };\n this._startPanelPos = { x: 0, y: 0 };\n this._pendingGeo = null;\n // Resize state\n this._activeResize = null;\n this._resizeStartMouse = { x: 0, y: 0 };\n // ---- FAB pointer handlers ----\n this.handleFabPointerDown = (e) => {\n this._isDragging = true;\n this._hasMoved = false;\n const rect = this.rect;\n this._startPanelPos = { x: rect.left, y: rect.top };\n this._dragOffset = { x: e.clientX - rect.left, y: e.clientY - rect.top };\n try {\n e.target.setPointerCapture(e.pointerId);\n }\n catch {\n // best-effort\n }\n e.preventDefault();\n };\n this.handleFabPointerMove = (e) => {\n if (!this._isDragging)\n return;\n const newX = e.clientX - this._dragOffset.x;\n const newY = e.clientY - this._dragOffset.y;\n if (!this._hasMoved) {\n const dx = Math.abs(newX - this._startPanelPos.x);\n const dy = Math.abs(newY - this._startPanelPos.y);\n if (dx < this.opts.dragThreshold && dy < this.opts.dragThreshold)\n return;\n this._hasMoved = true;\n }\n const geo = this._geometry;\n const height = geo.docked ? window.innerHeight : geo.height;\n this._writeStylesDuringGesture({ x: newX, y: newY, width: geo.width, height });\n this._pendingGeo = { x: newX, y: newY, width: geo.width, height, docked: null };\n };\n this.handleFabPointerUp = (e) => {\n try {\n e.target.releasePointerCapture(e.pointerId);\n }\n catch {\n // best-effort\n }\n const wasDragging = this._hasMoved;\n this._isDragging = false;\n this._hasMoved = false;\n if (!wasDragging) {\n this.opts.onToggle?.();\n return;\n }\n if (this._pendingGeo) {\n const geo = this._pendingGeo;\n if (geo.x <= this.opts.snapThreshold) {\n this._commit({ ...geo, docked: 'left', x: 0, y: 0 });\n }\n else if (geo.x + geo.width >= window.innerWidth - this.opts.snapThreshold) {\n this._commit({ ...geo, docked: 'right', x: 0, y: 0 });\n }\n else {\n this._commit(geo);\n }\n this._pendingGeo = null;\n }\n };\n // ---- Resize pointer handlers ----\n this.handleResizePointerDown = (dir, e) => {\n let geo = this._geometry;\n if (geo.docked) {\n geo = this._undockGeometry(geo);\n this._commit(geo);\n }\n this._activeResize = dir;\n this._resizeStartMouse = { x: e.clientX, y: e.clientY };\n this._resizeStartGeo = { ...geo };\n try {\n e.target.setPointerCapture(e.pointerId);\n }\n catch {\n // best-effort\n }\n e.preventDefault();\n };\n this.handleResizePointerMove = (e) => {\n if (!this._activeResize)\n return;\n const dx = e.clientX - this._resizeStartMouse.x;\n const dy = e.clientY - this._resizeStartMouse.y;\n const dir = this._activeResize;\n const start = this._resizeStartGeo;\n let { x, y, width, height } = start;\n if (dir.includes('e'))\n width = Math.max(this.opts.minWidth, start.width + dx);\n if (dir.includes('w')) {\n const newW = Math.max(this.opts.minWidth, start.width - dx);\n x = start.x + start.width - newW;\n width = newW;\n }\n if (dir.includes('s'))\n height = Math.max(this.opts.minHeight, start.height + dy);\n if (dir.includes('n')) {\n const newH = Math.max(this.opts.minHeight, start.height - dy);\n y = start.y + start.height - newH;\n height = newH;\n }\n this._writeStylesDuringGesture({ x, y, width, height });\n this._pendingGeo = { x, y, width, height, docked: null };\n };\n this.handleResizePointerUp = (e) => {\n try {\n e.target.releasePointerCapture(e.pointerId);\n }\n catch {\n // best-effort\n }\n this._activeResize = null;\n if (this._pendingGeo) {\n this._commit(this._pendingGeo);\n this._pendingGeo = null;\n }\n };\n this._onWindowResize = () => {\n this._commit(this._clampToViewport(this._geometry));\n };\n this.host = host;\n this.opts = {\n storageKey: options.storageKey ?? DEFAULTS.storageKey,\n minWidth: options.minWidth ?? DEFAULTS.minWidth,\n minHeight: options.minHeight ?? DEFAULTS.minHeight,\n dragThreshold: options.dragThreshold ?? DEFAULTS.dragThreshold,\n snapThreshold: options.snapThreshold ?? DEFAULTS.snapThreshold,\n fabSize: options.fabSize ?? DEFAULTS.fabSize,\n fabInset: options.fabInset ?? DEFAULTS.fabInset,\n onToggle: options.onToggle,\n defaultGeometry: this._resolveDefaultGeometry(options.defaultGeometry),\n };\n this._geometry = this.opts.defaultGeometry;\n this._resizeStartGeo = this._geometry;\n host.addController(this);\n }\n // ---- Public API ----\n /** Current geometry (read-only snapshot). */\n get geometry() {\n return this._geometry;\n }\n /** Pixel rect of the panel, resolving docked positions. */\n get rect() {\n return this._panelRect(this._geometry);\n }\n /** Pixel right edge of the panel (useful for positioning adjacent UI). */\n get rightEdge() {\n const r = this.rect;\n return r.left + r.width;\n }\n /** Set geometry directly \u2014 useful for testing or external state sync. */\n setGeometry(geo) {\n this._geometry = geo;\n this._saveGeometry(geo);\n this.host.requestUpdate();\n }\n /** Reset geometry to default (and clear persisted state). */\n reset() {\n this._geometry = this.opts.defaultGeometry;\n try {\n localStorage.removeItem(this.opts.storageKey);\n }\n catch {\n // ignore\n }\n this.host.requestUpdate();\n }\n /** Styles to apply to the panel element. */\n panelStyles() {\n const geo = this._geometry;\n const blur = `blur(${panelShell.backdropBlur})`;\n const shadow = geo.docked === 'right'\n ? panelShell.shadows.dockedRight\n : geo.docked === 'left'\n ? panelShell.shadows.dockedLeft\n : panelShell.shadows.floating;\n const styles = {\n position: 'fixed',\n pointerEvents: 'auto',\n background: panelShell.background,\n backdropFilter: blur,\n webkitBackdropFilter: blur,\n boxShadow: shadow,\n overflow: 'hidden',\n };\n if (geo.docked === 'left') {\n styles.top = '0';\n styles.left = '0';\n styles.width = `${geo.width}px`;\n styles.height = '100vh';\n }\n else if (geo.docked === 'right') {\n styles.top = '0';\n styles.right = '0';\n styles.width = `${geo.width}px`;\n styles.height = '100vh';\n }\n else {\n styles.top = `${geo.y}px`;\n styles.left = `${geo.x}px`;\n styles.width = `${geo.width}px`;\n styles.height = `${geo.height}px`;\n }\n return styles;\n }\n /** Styles to apply to the FAB button. `isOpen` adjusts the shadow. */\n fabStyles(isOpen) {\n const rect = this.rect;\n return {\n position: 'fixed',\n left: `${rect.left + this.opts.fabInset}px`,\n top: `${rect.top + rect.height - this.opts.fabSize - this.opts.fabInset}px`,\n pointerEvents: 'auto',\n width: `${this.opts.fabSize}px`,\n height: `${this.opts.fabSize}px`,\n borderRadius: '50%',\n border: panelShell.fab.border,\n cursor: 'grab',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: panelShell.fab.background,\n color: panelShell.fab.color,\n boxShadow: isOpen ? panelShell.fab.shadowOpen : panelShell.fab.shadowClosed,\n transition: 'box-shadow 150ms ease',\n touchAction: 'none',\n userSelect: 'none',\n webkitUserSelect: 'none',\n };\n }\n /** Direction descriptors for the 8 resize handles. */\n get handles() {\n return makeResizeHandles();\n }\n /** Bind the current panel element so the controller can direct-write styles during drag/resize. */\n attachPanel(el) {\n this._panelEl = el;\n }\n /** Bind the current FAB element. */\n attachFab(el) {\n this._fabEl = el;\n }\n // ---- ReactiveController lifecycle ----\n hostConnected() {\n this._geometry = this._loadGeometry();\n this.host.requestUpdate();\n if (typeof window !== 'undefined') {\n window.addEventListener('resize', this._onWindowResize);\n }\n }\n hostDisconnected() {\n if (typeof window !== 'undefined') {\n window.removeEventListener('resize', this._onWindowResize);\n }\n }\n // ---- Internals ----\n _commit(geo) {\n this._geometry = geo;\n this._saveGeometry(geo);\n this.host.requestUpdate();\n }\n _writeStylesDuringGesture({ x, y, width, height, }) {\n if (this._panelEl) {\n this._panelEl.style.left = `${x}px`;\n this._panelEl.style.top = `${y}px`;\n this._panelEl.style.right = 'auto';\n this._panelEl.style.width = `${width}px`;\n this._panelEl.style.height = `${height}px`;\n }\n if (this._fabEl) {\n this._fabEl.style.left = `${x + this.opts.fabInset}px`;\n this._fabEl.style.top = `${y + height - this.opts.fabSize - this.opts.fabInset}px`;\n }\n }\n _clampToViewport(geo) {\n if (geo.docked)\n return geo;\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n // FAB sits at panel's bottom-left: fabTop = geo.y + geo.height - fabSize - fabInset.\n // Keep fabTop in [0, vh - fabSize] so the FAB stays on-screen even if the panel\n // extends above the viewport top or below the viewport bottom.\n const minY = this.opts.fabSize + this.opts.fabInset - geo.height;\n const maxY = vh - geo.height + this.opts.fabInset;\n return {\n ...geo,\n x: Math.max(-(geo.width - this.opts.fabSize), Math.min(geo.x, vw - this.opts.fabSize)),\n y: Math.max(minY, Math.min(geo.y, maxY)),\n };\n }\n _undockGeometry(geo) {\n const r = this._panelRect(geo);\n return { x: r.left, y: r.top, width: geo.width, height: r.height, docked: null };\n }\n _panelRect(geo) {\n if (geo.docked === 'left') {\n return { top: 0, left: 0, width: geo.width, height: window.innerHeight };\n }\n if (geo.docked === 'right') {\n return {\n top: 0,\n left: window.innerWidth - geo.width,\n width: geo.width,\n height: window.innerHeight,\n };\n }\n const { x: left, y: top, width, height } = geo;\n return { top, left, width, height };\n }\n _loadGeometry() {\n if (typeof window === 'undefined')\n return this.opts.defaultGeometry;\n try {\n const raw = localStorage.getItem(this.opts.storageKey);\n if (!raw)\n return this.opts.defaultGeometry;\n const p = JSON.parse(raw);\n return {\n x: typeof p.x === 'number' ? p.x : 0,\n y: typeof p.y === 'number' ? p.y : 0,\n width: Math.max(this.opts.minWidth, typeof p.width === 'number' ? p.width : this.opts.minWidth),\n height: Math.max(this.opts.minHeight, typeof p.height === 'number' ? p.height : window.innerHeight),\n docked: p.docked === 'left' || p.docked === 'right' ? p.docked : null,\n };\n }\n catch {\n return this.opts.defaultGeometry;\n }\n }\n _saveGeometry(geo) {\n try {\n localStorage.setItem(this.opts.storageKey, JSON.stringify(geo));\n }\n catch {\n // ignore\n }\n }\n _resolveDefaultGeometry(partial) {\n const w = typeof window !== 'undefined' ? window : null;\n const base = {\n x: 0,\n y: 0,\n width: DEFAULTS.minWidth,\n height: w ? w.innerHeight : 800,\n docked: 'left',\n };\n return { ...base, ...(partial ?? {}) };\n }\n}\n", "/**\n * useTriggerWhenStatus \u2014 live triggerWhen evaluation for editor diagnostics.\n *\n * Delegates condition evaluation to the runtime's evaluateSync() method,\n * eliminating duplicated logic. Subscribes to the EventAccumulator for\n * reactive updates.\n *\n * NOTE: This hook accesses `window.SynOS.handle.runtime` directly\n * because EditorPanelProps doesn't expose runtime. This is safe \u2014\n * the editor only runs after runtime bootstrap.\n */\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { formatConditionLabel } from '../formatConditionLabel';\n/**\n * Build a RuntimeLike from the real SynOS.handle.runtime.\n */\nfunction getRuntime() {\n const rt = window.SynOS?.handle?.runtime;\n if (!rt?.evaluateSync)\n return null;\n return {\n evaluateSync: rt.evaluateSync.bind(rt),\n accumulator: rt.accumulator,\n };\n}\n/**\n * Evaluate all conditions in a triggerWhen RuleStrategy via the runtime engine.\n */\nfunction evaluateTriggerWhen(triggerWhen, runtime) {\n if (triggerWhen.type !== 'rules' || !triggerWhen.rules?.length) {\n return { visible: !!triggerWhen.default, isFallback: true, conditions: [] };\n }\n const result = runtime.evaluateSync(triggerWhen);\n const conditions = (result.matchInfo?.evaluatedConditions ?? []).map(({ condition, result: passed }) => {\n // Get live accumulator count for event_count progress display\n const accCount = condition.type === 'event_count' && runtime.accumulator\n ? runtime.accumulator.getCount(condition.key, condition.withinMs)\n : undefined;\n const formatted = formatConditionLabel(condition, accCount);\n return { type: condition.type, passed, formatted };\n });\n return { visible: result.value, isFallback: result.isFallback, conditions };\n}\n/**\n * Hook: live triggerWhen evaluation for a list of action items.\n *\n * @param items Array of items with id + optional triggerWhen\n * @returns Map from item id \u2192 TriggerWhenStatus (null for items without triggerWhen)\n */\nexport function useTriggerWhenStatus(items) {\n const [statuses, setStatuses] = useState(new Map());\n const itemsRef = useRef(items);\n itemsRef.current = items;\n const evaluate = useCallback(() => {\n const runtime = getRuntime();\n if (!runtime)\n return;\n const map = new Map();\n for (const item of itemsRef.current) {\n if (!item.triggerWhen) {\n map.set(item.id, null);\n }\n else {\n map.set(item.id, evaluateTriggerWhen(item.triggerWhen, runtime));\n }\n }\n setStatuses(map);\n }, []);\n useEffect(() => {\n // Initial evaluation\n evaluate();\n // Subscribe to accumulator changes for reactive event_count updates\n const runtime = getRuntime();\n const unsubs = [];\n if (runtime?.accumulator) {\n unsubs.push(runtime.accumulator.subscribe(evaluate));\n }\n // Poll every 2s for non-accumulator conditions (page_url, viewport, etc.)\n const interval = setInterval(evaluate, 2000);\n return () => {\n unsubs.forEach((u) => u());\n clearInterval(interval);\n };\n }, [evaluate]);\n return statuses;\n}\n", "{\n \"field_mapping\": {\n \"event\": {\n \"action_step_key\": \"event\",\n \"hogql\": \"event\",\n \"athena\": \"event_category\",\n \"athena_transform\": \"category_map\",\n \"runtime_event_field\": \"name\",\n \"runtime_transform\": \"event_name_map\"\n },\n \"text\": {\n \"action_step_key\": \"text\",\n \"hogql\": \"properties.$el_text\",\n \"athena\": \"el_text\",\n \"runtime_element_field\": \"$el_text\"\n },\n \"tag_name\": {\n \"action_step_key\": \"tag_name\",\n \"hogql\": \"properties.$el_tag_name\",\n \"athena\": \"tag_name\",\n \"runtime_element_field\": \"tag_name\"\n },\n \"url\": {\n \"action_step_key\": \"url\",\n \"hogql\": \"properties.$current_url\",\n \"hogql_match\": \"like\",\n \"athena\": \"pathname\",\n \"athena_match\": \"like\",\n \"athena_transform\": \"url_to_path\",\n \"runtime_prop\": \"url\"\n },\n \"selector\": {\n \"action_step_key\": \"selector\",\n \"hogql\": \"properties.$el_selector\",\n \"athena\": \"el_selector\",\n \"runtime_element_field\": null\n }\n },\n \"event_category_map\": {\n \"$autocapture\": \"click\",\n \"$pageview\": \"pageview\",\n \"$pageleave\": \"pageleave\",\n \"$feature_flag_called\": \"feature_flag\"\n },\n \"event_name_map\": {\n \"$autocapture\": \"ui.click\",\n \"$pageview\": \"nav.page_view\",\n \"$pageleave\": \"nav.page_leave\"\n },\n \"interactive_tags\": [\"a\", \"button\", \"input\", \"select\", \"textarea\", \"form\", \"summary\"],\n \"interactive_roles\": [\n \"button\",\n \"link\",\n \"menuitem\",\n \"tab\",\n \"switch\",\n \"checkbox\",\n \"radio\",\n \"option\"\n ],\n \"test_cases\": [\n {\n \"name\": \"CTA button click \u2014 span inside anchor\",\n \"action_step\": {\n \"event\": \"$autocapture\",\n \"tag_name\": \"a\",\n \"text\": \"Start Free Filing\"\n },\n \"posthog_event\": {\n \"event\": \"$autocapture\",\n \"properties\": {\n \"$current_url\": \"https://taxinator.com/\",\n \"$el_text\": \"Start Free Filing\",\n \"$elements\": [\n { \"tag_name\": \"span\", \"$el_text\": \"Start Free Filing\" },\n {\n \"tag_name\": \"a\",\n \"$el_text\": \"Start Free Filing \u2192\",\n \"attr__href\": \"/dashboard\",\n \"attr__data-cta\": \"hero-primary\"\n },\n { \"tag_name\": \"div\", \"$el_text\": \"\" },\n { \"tag_name\": \"section\", \"$el_text\": \"\" }\n ]\n }\n },\n \"should_match_hogql\": true,\n \"should_match_athena\": true,\n \"recommended_index\": 1,\n \"expected_action_step_from_recommended\": {\n \"event\": \"$autocapture\",\n \"tag_name\": \"a\",\n \"text\": \"Start Free Filing \u2192\",\n \"url\": \"https://taxinator.com/\"\n }\n },\n {\n \"name\": \"Pageview from link href\",\n \"action_step\": {\n \"event\": \"$pageview\",\n \"url\": \"/pricing\"\n },\n \"posthog_event\": {\n \"event\": \"$pageview\",\n \"properties\": {\n \"$current_url\": \"https://taxinator.com/pricing\",\n \"$elements\": [\n { \"tag_name\": \"a\", \"$el_text\": \"See Plans & Pricing\", \"attr__href\": \"/pricing\" }\n ]\n }\n },\n \"should_match_hogql\": true,\n \"should_match_athena\": true,\n \"recommended_index\": 0,\n \"expected_action_step_from_recommended\": {\n \"event\": \"$pageview\",\n \"tag_name\": \"a\",\n \"text\": \"See Plans & Pricing\",\n \"url\": \"https://taxinator.com/pricing\"\n }\n },\n {\n \"name\": \"Non-matching \u2014 wrong tag and text\",\n \"action_step\": {\n \"event\": \"$autocapture\",\n \"tag_name\": \"button\",\n \"text\": \"Submit\"\n },\n \"posthog_event\": {\n \"event\": \"$autocapture\",\n \"properties\": {\n \"$current_url\": \"https://taxinator.com/\",\n \"$el_text\": \"Cancel\",\n \"$elements\": [\n { \"tag_name\": \"span\", \"$el_text\": \"Cancel\" },\n { \"tag_name\": \"a\", \"$el_text\": \"Cancel\", \"attr__href\": \"/home\" }\n ]\n }\n },\n \"should_match_hogql\": false,\n \"should_match_athena\": false,\n \"recommended_index\": 1,\n \"expected_action_step_from_recommended\": {\n \"event\": \"$autocapture\",\n \"tag_name\": \"a\",\n \"text\": \"Cancel\",\n \"url\": \"https://taxinator.com/\"\n }\n },\n {\n \"name\": \"Selector only \u2014 matches HogQL and Athena\",\n \"action_step\": {\n \"event\": \"$autocapture\",\n \"selector\": \"#signup-btn\"\n },\n \"posthog_event\": {\n \"event\": \"$autocapture\",\n \"properties\": {\n \"$current_url\": \"https://taxinator.com/\",\n \"$el_selector\": \"#signup-btn\",\n \"$elements\": [\n { \"tag_name\": \"button\", \"$el_text\": \"Sign Up\", \"$el_selector\": \"#signup-btn\" }\n ]\n }\n },\n \"should_match_hogql\": true,\n \"should_match_athena\": true,\n \"recommended_index\": 0,\n \"expected_action_step_from_recommended\": {\n \"event\": \"$autocapture\",\n \"tag_name\": \"button\",\n \"text\": \"Sign Up\",\n \"url\": \"https://taxinator.com/\",\n \"selector\": \"#signup-btn\"\n }\n },\n {\n \"name\": \"No interactive ancestor \u2014 falls back to elements[0]\",\n \"action_step\": {\n \"event\": \"$autocapture\",\n \"tag_name\": \"div\",\n \"text\": \"Hero Banner\"\n },\n \"posthog_event\": {\n \"event\": \"$autocapture\",\n \"properties\": {\n \"$current_url\": \"https://taxinator.com/\",\n \"$el_text\": \"Hero Banner\",\n \"$elements\": [\n { \"tag_name\": \"div\", \"$el_text\": \"Hero Banner\" },\n { \"tag_name\": \"section\", \"$el_text\": \"\" },\n { \"tag_name\": \"main\", \"$el_text\": \"\" }\n ]\n }\n },\n \"should_match_hogql\": true,\n \"should_match_athena\": true,\n \"recommended_index\": 0,\n \"expected_action_step_from_recommended\": {\n \"event\": \"$autocapture\",\n \"tag_name\": \"div\",\n \"text\": \"Hero Banner\",\n \"url\": \"https://taxinator.com/\"\n }\n }\n ]\n}\n", "/**\n * Element Chain Recommender\n *\n * Given PostHog's $elements array, recommends which element the user\n * most likely intended to track for a KPI, and builds a PostHog action\n * step from that element.\n *\n * The interactive_tags and interactive_roles are loaded from the shared\n * field mapping fixture so the recommendation heuristic stays in sync\n * with the warehouse and runtime predicate matching.\n */\n// Loaded from the shared fixture at build time.\n// The fixture is the single source of truth \u2014 do NOT hardcode these lists.\nimport fieldMapping from '../../../../tests/fixtures/action-step-field-mapping.json';\nconst INTERACTIVE_TAGS = new Set(fieldMapping.interactive_tags);\nconst INTERACTIVE_ROLES = new Set(fieldMapping.interactive_roles);\n/**\n * Find the index of the recommended element in the $elements chain.\n * Returns the first interactive element, or 0 if none found.\n */\nexport function findRecommendedIndex(elements) {\n if (elements.length === 0)\n return 0;\n for (let i = 0; i < elements.length; i++) {\n const el = elements[i];\n if (INTERACTIVE_TAGS.has(el.tag_name))\n return i;\n const role = (el.attr__role ?? el.role);\n if (role && INTERACTIVE_ROLES.has(role))\n return i;\n }\n return 0;\n}\n/**\n * Build a PostHog action step from a selected element in the chain.\n * Does NOT include `selector` \u2014 it's not supported in Athena.\n *\n * The `url` field stores the PATHNAME of the page where the user clicked,\n * not the full URL. This matches how the backend generates SQL:\n * step.url \u2192 `pathname LIKE '%<url>%'`\n * Storing the full URL (including the editor token / query string) makes\n * the stored KPI data ugly, leaks editor tokens into saved configs, and\n * forces the backend to re-parse on every query. Strip at the boundary.\n */\nfunction pageUrlToPathname(pageUrl) {\n try {\n const u = new URL(pageUrl);\n return u.pathname || pageUrl;\n }\n catch {\n return pageUrl;\n }\n}\nexport function buildActionStepFromElement(element, pageUrl, options = {}) {\n const { inferPageview = false } = options;\n const href = element.attr__href;\n const isInternalLink = element.tag_name === 'a' && href && !href.startsWith('http') && !href.startsWith('//');\n const step = {\n event: inferPageview && isInternalLink ? '$pageview' : '$autocapture',\n tag_name: element.tag_name,\n url: pageUrlToPathname(pageUrl),\n };\n const text = (element.$el_text || '').trim();\n if (text) {\n step.text = text.slice(0, 100); // Truncate long text\n }\n // Don't truncate the selector. Silently chopping mid-attribute (e.g.\n // `[data-id=\"...`) would persist a syntactically broken CSS selector that\n // happens to match exact-equal in Athena (because both sides truncate the\n // same way) but is useless to anyone \u2014 diff tools, IDE re-resolvers,\n // future visualization. If posthog-js produces a >500-char selector, let\n // the backend Pydantic 422 the request: a loud error users can react to,\n // not a silent corruption.\n const selector = (element.$el_selector || '').trim();\n if (selector) {\n step.selector = selector;\n }\n return step;\n}\n", "/**\n * Adaptive Nav - Editor Component\n *\n * Lit web component that displays nav tip cards with route-aware\n * status pill (Locate / Go to / Not found), inline editing, and per-tip\n * delete. Borrows the card UX from OverlayEditorLit.\n *\n * Custom events:\n * navigate-home \u2014 user clicked back\n * dirty-change \u2014 { dirty: boolean }\n * se-navigate-to-page \u2014 { route } when the user clicks \"Go to /<route>\"\n */\n\nimport type { AnchorId } from '@syntrologie/sdk-contracts';\nimport { itemCardHeader } from '@syntrologie/shared-editor-ui';\nimport { html, LitElement, nothing } from 'lit';\n\nimport { describeTrigger, summarizeNavItem } from './summarize';\nimport { isOwnAction, type NavConfig, type NavTipAction } from './types';\n// Side-effect import: registers <se-anchor-pill>.\nimport '@syntrologie/shared-editor-ui/lit-elements';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface FlatItem {\n key: string;\n index: number;\n /** Card label. Prefers top-level `title` (authoring), falls back to summarizeNavItem. */\n summary: string;\n trigger: string;\n rationale?: string;\n /**\n * Description shown on the card. Prefers the top-level authoring `description`\n * (the pipeline writes a \"why this tip exists\" string), falls back to the\n * runtime `tip.config.description` (what end users see in the expanded tip).\n */\n description?: string;\n /** Top-level `validation` checklist \u2014 what success looks like when this tip lands. */\n validation?: string[];\n /** Anchor selector (for scroll/locate). Undefined when the tip has no per-tip anchor. */\n selector?: string;\n /** First declared route from the anchor (or legacy `href`). Undefined for routeless tips. */\n route?: string;\n tip: NavTipAction;\n}\n\ntype AnchorState = 'locate' | 'navigate' | 'missing';\n\ninterface DetectionEntry {\n state: AnchorState;\n}\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst getCurrentPath = () => window.location.pathname;\n\nconst routeMatchesCurrent = (route: string): boolean => {\n const current = getCurrentPath();\n if (route === current) return true;\n if (route === '/' && current === '') return true;\n if (route === '' && current === '/') return true;\n if (route.endsWith('/*')) return current.startsWith(route.slice(0, -2));\n return false;\n};\n\nconst firstRoute = (anchor: AnchorId | undefined): string | undefined => {\n const r = anchor?.route;\n if (!r) return undefined;\n return Array.isArray(r) ? r[0] : r;\n};\n\nconst flattenItems = (config: NavConfig): FlatItem[] => {\n const actions = (config.actions || []).filter(isOwnAction);\n return actions.map((tip, i) => {\n const anchor = tip.kind === 'nav:tip' ? tip.config.anchor : undefined;\n const legacyHref = tip.kind === 'nav:tip' ? tip.config.href : undefined;\n const selector = anchor?.selector && anchor.selector !== '*' ? anchor.selector : undefined;\n const route = firstRoute(anchor) ?? legacyHref;\n\n // Pick up top-level authoring fields the pipeline writes (parity with\n // overlay/content/FAQ items): `title`, `description`, `validation`.\n const raw = tip as unknown as Record<string, unknown>;\n const topTitle = typeof raw.title === 'string' ? (raw.title as string) : undefined;\n const topDescription =\n typeof raw.description === 'string' ? (raw.description as string) : undefined;\n const validationRaw = Array.isArray(raw.validation) ? (raw.validation as unknown[]) : undefined;\n const validation = validationRaw\n ? validationRaw.filter((v): v is string => typeof v === 'string')\n : undefined;\n\n return {\n key: String(i),\n index: i,\n summary: topTitle || summarizeNavItem(tip),\n trigger: describeTrigger(tip.triggerWhen),\n rationale: tip.rationale?.why,\n description: topDescription || (tip.kind === 'nav:tip' ? tip.config.description : undefined),\n validation: validation && validation.length > 0 ? validation : undefined,\n selector,\n route: typeof route === 'string' ? route : undefined,\n tip,\n };\n });\n};\n\nconst detectItem = (item: FlatItem): DetectionEntry => {\n // No declared route \u2192 treat the tip as \"this page\"; only the selector\n // determines whether we can locate it.\n const onCurrentRoute = !item.route || item.route === '**' || routeMatchesCurrent(item.route);\n if (!onCurrentRoute) return { state: 'navigate' };\n if (!item.selector) {\n // No selector \u2192 there's nothing to scroll to here. Don't show \"Locate\"\n // (would do nothing) or \"Not found\" (misleading); keep it neutral by\n // calling it 'missing' which renders a disabled badge.\n return { state: 'missing' };\n }\n try {\n const found = document.querySelector(item.selector) !== null;\n return { state: found ? 'locate' : 'missing' };\n } catch {\n return { state: 'missing' };\n }\n};\n\nconst runDetection = (items: FlatItem[]): Map<string, DetectionEntry> => {\n const map = new Map<string, DetectionEntry>();\n for (const item of items) map.set(item.key, detectItem(item));\n return map;\n};\n\n// ============================================================================\n// Element\n// ============================================================================\n\nexport class NavEditorLit extends LitElement {\n static override properties = {\n config: { attribute: false },\n onChange: { attribute: false },\n _editingKey: { state: true },\n _detectionMap: { state: true },\n };\n\n config: NavConfig | null = null;\n onChange: ((updated: Record<string, unknown>) => void) | null = null;\n\n private _editingKey: string | null = null;\n private _detectionMap: Map<string, DetectionEntry> = new Map();\n private _onPopstate = () => this._runDetection();\n\n override createRenderRoot() {\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n window.addEventListener('popstate', this._onPopstate);\n }\n\n override disconnectedCallback(): void {\n window.removeEventListener('popstate', this._onPopstate);\n super.disconnectedCallback();\n }\n\n override firstUpdated(): void {\n this._runDetection();\n }\n\n override updated(changed: Map<string | number | symbol, unknown>) {\n super.updated(changed);\n if (changed.has('config')) this._runDetection();\n }\n\n private _runDetection = () => {\n if (!this.config) return;\n this._detectionMap = runDetection(flattenItems(this.config));\n };\n\n // ---- Actions ----\n\n private _handleItemClick = (key: string) => {\n this._editingKey = key;\n };\n\n private _emitConfig(updated: NavConfig) {\n if (!this.onChange) return;\n this.onChange(updated as unknown as Record<string, unknown>);\n this.dispatchEvent(new CustomEvent('dirty-change', { detail: { dirty: true }, bubbles: true }));\n }\n\n private _handleFieldChange = (index: number, field: string, value: unknown) => {\n if (!this.config) return;\n const ownActions = (this.config.actions || []).filter(isOwnAction).slice();\n const tip = { ...ownActions[index], config: { ...ownActions[index].config } };\n (tip.config as Record<string, unknown>)[field] = value;\n ownActions[index] = tip;\n const otherActions = (this.config.actions || []).filter((a) => !isOwnAction(a));\n this._emitConfig({ ...this.config, actions: [...otherActions, ...ownActions] });\n };\n\n private _handleDelete = (index: number, e: Event) => {\n e.stopPropagation();\n if (!this.config) return;\n const ownActions = (this.config.actions || []).filter(isOwnAction);\n const target = ownActions[index];\n if (!target) return;\n const remaining = (this.config.actions || []).filter((a) => a !== target);\n this._emitConfig({ ...this.config, actions: remaining });\n if (this._editingKey === String(index)) this._editingKey = null;\n };\n\n private _handleLocate = (item: FlatItem, e: Event) => {\n e.stopPropagation();\n if (!item.selector) return;\n this.dispatchEvent(\n new CustomEvent('se-hover-element', {\n detail: { selector: item.selector },\n bubbles: true,\n composed: true,\n })\n );\n };\n\n private _handleNavigateToRoute = (item: FlatItem, e: Event) => {\n e.stopPropagation();\n if (!item.route) return;\n // adaptive-nav doesn't depend on editor-sdk; bubble a custom event so\n // the host editor can call spaNavigate.\n this.dispatchEvent(\n new CustomEvent('se-navigate-to-page', {\n detail: { route: item.route },\n bubbles: true,\n composed: true,\n })\n );\n };\n\n // ---- Render ----\n\n private _renderAnchorButton = (item: FlatItem) => {\n const state = this._detectionMap.get(item.key)?.state ?? 'missing';\n return html`<se-anchor-pill\n .state=${state}\n .selector=${item.selector}\n .route=${item.route}\n testid-prefix=\"locate-nav\"\n testid-key=${item.key}\n @se-anchor-locate=${(e: Event) => this._handleLocate(item, e)}\n @se-anchor-navigate=${(e: Event) => this._handleNavigateToRoute(item, e)}\n ></se-anchor-pill>`;\n };\n\n private _renderEditMode = (item: FlatItem) => {\n const tip = item.tip;\n return html`\n <div class=\"se-py-1\">\n <div class=\"se-flex se-items-center se-gap-2 se-mb-3 se-text-[13px] se-font-semibold se-text-text-primary\">\n <span>\uD83E\uDDED</span>\n <span>${item.summary}</span>\n </div>\n\n <div class=\"se-mb-3\">\n <label class=\"se-text-[11px] se-font-semibold se-text-text-secondary se-mb-1 se-block\">Title</label>\n <input type=\"text\" .value=${tip.config.title}\n @input=${(e: Event) => this._handleFieldChange(item.index, 'title', (e.target as HTMLInputElement).value)}\n class=\"se-w-full se-p-2 se-rounded se-border se-border-border-primary se-bg-input-field-bg se-text-text-primary se-text-sm\" />\n </div>\n\n <div class=\"se-mb-3\">\n <label class=\"se-text-[11px] se-font-semibold se-text-text-secondary se-mb-1 se-block\">Description</label>\n <input type=\"text\" .value=${tip.config.description}\n @input=${(e: Event) => this._handleFieldChange(item.index, 'description', (e.target as HTMLInputElement).value)}\n class=\"se-w-full se-p-2 se-rounded se-border se-border-border-primary se-bg-input-field-bg se-text-text-primary se-text-sm\" />\n </div>\n\n <div class=\"se-mb-3\">\n <label class=\"se-text-[11px] se-font-semibold se-text-text-secondary se-mb-1 se-block\">Link URL</label>\n <input type=\"text\" .value=${tip.config.href || ''} placeholder=\"Optional\"\n @input=${(e: Event) => this._handleFieldChange(item.index, 'href', (e.target as HTMLInputElement).value)}\n class=\"se-w-full se-p-2 se-rounded se-border se-border-border-primary se-bg-input-field-bg se-text-text-primary se-text-sm\" />\n </div>\n\n <div class=\"se-mb-3\">\n <label class=\"se-text-[11px] se-font-semibold se-text-text-secondary se-mb-1 se-block\">Icon</label>\n <input type=\"text\" .value=${tip.config.icon || ''} placeholder=\"e.g., \uD83E\uDDED\"\n @input=${(e: Event) => this._handleFieldChange(item.index, 'icon', (e.target as HTMLInputElement).value)}\n class=\"se-w-full se-p-2 se-rounded se-border se-border-border-primary se-bg-input-field-bg se-text-text-primary se-text-sm\" />\n </div>\n\n <div class=\"se-mb-3\">\n <label class=\"se-text-[11px] se-font-semibold se-text-text-secondary se-mb-1 se-block\">Category</label>\n <input type=\"text\" .value=${tip.config.category || ''} placeholder=\"Optional\"\n @input=${(e: Event) => this._handleFieldChange(item.index, 'category', (e.target as HTMLInputElement).value)}\n class=\"se-w-full se-p-2 se-rounded se-border se-border-border-primary se-bg-input-field-bg se-text-text-primary se-text-sm\" />\n </div>\n\n ${\n tip.rationale\n ? html`\n <div>\n <span class=\"se-text-[11px] se-font-semibold se-text-text-secondary se-mb-1 se-block\">AI Rationale</span>\n <div class=\"se-p-2 se-rounded se-border se-border-dashed se-border-border-primary se-bg-card-bg se-text-text-secondary se-text-xs se-mb-2\">\n ${tip.rationale.why}\n </div>\n </div>\n `\n : nothing\n }\n </div>\n `;\n };\n\n private _renderItemCard = (item: FlatItem) => html`\n <div\n data-item-key=${item.key}\n data-card-body\n @click=${() => this._handleItemClick(item.key)}\n class=\"se-p-3 se-rounded-lg se-border se-border-border-primary se-bg-card-bg se-cursor-pointer se-mb-2 se-transition-all hover:se-border-pink-4/40 hover:se-bg-pink-4/5\"\n >\n ${itemCardHeader({\n label: item.summary,\n statusPill: this._renderAnchorButton(item),\n onDelete: (e: Event) => this._handleDelete(item.index, e),\n deleteTestid: `delete-nav-${item.key}`,\n deleteLabel: 'Delete tip',\n })}\n ${\n item.description\n ? html`<div\n data-testid=${`nav-description-${item.key}`}\n class=\"se-text-[11px] se-text-text-secondary se-mt-1.5 se-line-clamp-2\"\n >${item.description}</div>`\n : nothing\n }\n ${\n item.trigger !== 'All pages'\n ? html`\n <div\n data-testid=${`nav-trigger-${item.key}`}\n class=\"se-text-[10px] se-text-text-tertiary se-mt-1\"\n >\uD83D\uDCCD ${item.trigger}</div>\n `\n : nothing\n }\n ${\n item.validation && item.validation.length > 0\n ? html`<div\n data-testid=${`nav-validation-${item.key}`}\n class=\"se-mt-1.5 se-flex se-flex-col se-gap-0.5\"\n >\n ${item.validation.map(\n (line) => html`<div\n class=\"se-text-[10px] se-text-text-tertiary se-flex se-items-start se-gap-1\"\n ><span class=\"se-text-text-tertiary\">\u2713</span><span>${line}</span></div>`\n )}\n </div>`\n : nothing\n }\n ${\n item.rationale\n ? html`\n <div class=\"se-text-[10px] se-text-text-tertiary se-mt-1\">WHY: ${item.rationale}</div>\n `\n : nothing\n }\n </div>\n `;\n\n private _renderListMode = (items: FlatItem[]) => {\n if (items.length === 0) {\n return html`<div class=\"se-text-center se-py-8 se-px-4 se-text-text-secondary se-text-sm\">\n No tips configured.\n </div>`;\n }\n\n return html`\n <div class=\"se-text-[11px] se-font-semibold se-uppercase se-tracking-wider se-text-text-secondary se-mb-2 se-px-1\">\n TIPS <span class=\"se-text-text-tertiary se-font-normal\">${items.length}</span>\n </div>\n ${items.map(this._renderItemCard)}\n `;\n };\n\n override render() {\n if (!this.config) {\n return html`<div class=\"se-p-8 se-text-center se-text-text-secondary se-text-sm\">Loading...</div>`;\n }\n\n const items = flattenItems(this.config);\n const editItem =\n this._editingKey !== null ? items.find((it) => it.key === this._editingKey) : null;\n\n return html`\n <div class=\"se-flex se-flex-col se-h-full\">\n <!-- Header (no Back button \u2014 panel provides that) -->\n <div class=\"se-px-4 se-pt-3 se-pb-1\">\n <h2 class=\"se-m-0 se-text-base se-font-semibold se-text-text-primary\">Navigation Tips</h2>\n <p class=\"se-m-0 se-mt-0.5 se-text-xs se-text-text-secondary\">\n ${items.length} tip${items.length !== 1 ? 's' : ''}\n </p>\n </div>\n\n <div class=\"se-flex-1 se-overflow-auto se-p-4\">\n ${\n editItem\n ? html`\n <button type=\"button\" @click=${() => {\n this._editingKey = null;\n }}\n class=\"se-mb-3 se-py-1 se-px-2 se-rounded se-border-none se-bg-card-bg se-text-text-secondary se-text-xs se-cursor-pointer\"\n >\u2190 Back to list</button>\n ${this._renderEditMode(editItem)}\n `\n : this._renderListMode(items)\n }\n </div>\n </div>\n `;\n }\n}\n\ncustomElements.define('se-nav-editor', NavEditorLit);\n", "/**\n * Human-readable summary generation for Nav items.\n * Pure functions \u2014 no DOM access, just string formatting.\n */\n\nimport type { DecisionStrategy, NavTipAction, RuleStrategy } from './types';\n\nconst MAX_TITLE_LEN = 30;\n\nfunction truncate(text: string, max: number): string {\n if (text.length <= max) return text;\n return `${text.slice(0, max).trimEnd()}...`;\n}\n\nfunction isRuleStrategy(s: unknown): s is RuleStrategy<boolean> {\n return (\n typeof s === 'object' &&\n s !== null &&\n (s as Record<string, unknown>).type === 'rules' &&\n Array.isArray((s as Record<string, unknown>).rules)\n );\n}\n\n/**\n * Parse a triggerWhen strategy into a human-readable trigger description.\n */\nexport function describeTrigger(triggerWhen?: DecisionStrategy<boolean> | null): string {\n if (!triggerWhen) return 'All pages';\n if (!isRuleStrategy(triggerWhen)) return 'All pages';\n\n const pages: string[] = [];\n const anchors: string[] = [];\n\n for (const rule of triggerWhen.rules) {\n for (const condition of rule.conditions) {\n if (condition.type === 'page_url' && typeof (condition as any).url === 'string') {\n pages.push((condition as any).url);\n }\n if (condition.type === 'anchor_visible' && typeof (condition as any).anchorId === 'string') {\n anchors.push((condition as any).anchorId);\n }\n }\n }\n\n const parts: string[] = [];\n if (pages.length > 0) parts.push(pages[0]);\n if (anchors.length > 0) parts.push(anchors[0]);\n\n return parts.length > 0 ? parts.join(' \\u00b7 ') : 'All pages';\n}\n\n/**\n * Generate a one-liner summary for a Nav tip.\n */\nexport function summarizeNavItem(item: NavTipAction): string {\n const icon = item.config.icon || '\\u{1F9ED}';\n const title = truncate(item.config.title, MAX_TITLE_LEN);\n return `${icon} ${title}`;\n}\n", "/**\n * Adaptive Nav - Types\n *\n * Type definitions for the navigation tips accordion adaptive.\n * Demonstrates compositional action pattern with per-item triggerWhen.\n */\n\n// ============================================================================\n// Decision Strategy Types (from runtime-sdk)\n// ============================================================================\n\n/**\n * Simplified DecisionStrategy type for this package.\n * Full definition is in @syntrologie/runtime-sdk.\n */\nexport type DecisionStrategy<T = unknown> =\n | RuleStrategy<T>\n | ScoreStrategy<T>\n | ModelStrategy<T>\n | ExternalStrategy<T>;\n\nexport interface RuleStrategy<T = unknown> {\n type: 'rules';\n rules: Array<{\n conditions: Array<Record<string, unknown>>;\n value: T;\n }>;\n default: T;\n}\n\nexport interface ScoreStrategy<T = unknown> {\n type: 'score';\n field: string;\n threshold: number;\n above: T;\n below: T;\n}\n\nexport interface ModelStrategy<T = unknown> {\n type: 'model';\n modelId: string;\n inputs: string[];\n outputMapping: Record<string, T>;\n default: T;\n}\n\nexport interface ExternalStrategy<T = unknown> {\n type: 'external';\n endpoint: string;\n method?: 'GET' | 'POST';\n default: T;\n timeoutMs?: number;\n}\n\n// ============================================================================\n// Event Scope Types (from sdk-contracts)\n// ============================================================================\n\n// ============================================================================\n// Nav Tip Action Types\n// ============================================================================\n\n/**\n * Single navigation tip configuration.\n * This is a \"compositional action\" \u2014 rendered as an accordion item by the parent.\n */\nexport interface NavTipAction {\n /** Action kind identifier */\n kind: 'nav:tip';\n /** Tip configuration */\n config: {\n /** Unique identifier for this tip */\n id: string;\n /** Accordion header text */\n title: string;\n /** Expanded body text */\n description: string;\n /**\n * Target anchor: route = where to go, selector = what to highlight/focus.\n * - Same page + valid selector \u2192 scroll + pulse + focus\n * - Same page + no selector/\"*\" \u2192 no-op (already there)\n * - Different page \u2192 navigate via pushState + popstate\n */\n anchor?: AnchorId;\n /** @deprecated Use anchor instead. Falls back to { route: href, selector: \"*\" } */\n href?: string;\n /** Optional icon (emoji or icon key) */\n icon?: string;\n /** Whether the link opens in a new tab */\n external?: boolean;\n /** Category for grouping */\n category?: string;\n };\n /** Optional per-item activation strategy */\n triggerWhen?: DecisionStrategy<boolean> | null;\n /** Toast config when triggerWhen transitions false \u2192 true. Required when triggerWhen is set (use null to opt out). */\n notify?: { title?: string; body?: string; icon?: string } | null;\n /** AI-generated reasoning for why this tip was recommended */\n rationale?: {\n why: string;\n confidence?: number;\n };\n}\n\n/** @deprecated Use NavTipAction instead */\nexport type NavLinkAction = NavTipAction;\n\n// ============================================================================\n// Nav Widget Configuration\n// ============================================================================\n\n/**\n * Expand behavior for the accordion.\n */\nexport type NavExpandBehavior = 'single' | 'multiple';\n\n/**\n * Theme for the navigation widget.\n */\nexport type NavTheme = 'light' | 'dark' | 'auto';\n\n/**\n * Full configuration for the adaptive-nav widget.\n */\nexport interface NavConfig {\n /** Expand behavior */\n expandBehavior: NavExpandBehavior;\n /** Color theme */\n theme: NavTheme;\n /** Navigation tips (compositional actions) */\n actions: NavTipAction[];\n}\n\n// ============================================================================\n// Widget Props Types\n// ============================================================================\n\n/**\n * Runtime services passed to the widget.\n */\nexport interface NavWidgetRuntime {\n /** Synchronously evaluate a decision strategy */\n evaluateSync: <T>(strategy: DecisionStrategy<T>) => { value: T; isFallback: boolean };\n /** Context manager for subscribing to changes */\n context: {\n subscribe: (callback: () => void) => () => void;\n };\n /** Event bus for publishing interactions */\n events: {\n publish: (name: string, props?: Record<string, unknown>) => void;\n };\n /** Event accumulator for event_count-based triggerWhen */\n accumulator?: {\n subscribe: (callback: () => void) => () => void;\n register: (key: string, predicate: (event: any) => boolean) => void;\n };\n}\n\n/**\n * Props passed to the NavWidget component.\n */\nexport interface NavWidgetProps {\n /** Widget configuration */\n config: NavConfig;\n /** Runtime services */\n runtime: NavWidgetRuntime;\n /** Instance ID for telemetry */\n instanceId: string;\n}\n\n// ============================================================================\n// Navigation Action Types (merged from adaptive-navigation)\n// ============================================================================\n\nimport type { AnchorId } from '@syntrologie/sdk-contracts';\n\ninterface BaseAction {\n label?: string;\n}\n\nexport interface ScrollToAction extends BaseAction {\n kind: 'navigation:scrollTo';\n anchorId: AnchorId;\n behavior?: ScrollBehavior;\n block?: ScrollLogicalPosition;\n inline?: ScrollLogicalPosition;\n}\n\nexport interface NavigateAction extends BaseAction {\n kind: 'navigation:navigate';\n url: string;\n target?: '_self' | '_blank';\n /** When true, always use full page navigation (window.location.href) even for same-origin URLs. */\n forceFullNavigation?: boolean;\n}\n\n// ============================================================================\n// Action Namespace\n// ============================================================================\n\nexport const ACTION_NAMESPACES = ['nav', 'navigation'] as const;\n\n/**\n * Returns true if the action belongs to this adaptive package.\n * Uses prefix matching so new kinds (e.g. nav:dropdown) are automatically included.\n * Covers both `nav:*` (compositional) and `navigation:*` (executor) prefixes.\n */\nexport function isOwnAction(action: { kind: string }): boolean {\n return ACTION_NAMESPACES.some((ns) => action.kind.startsWith(`${ns}:`));\n}\n\n// ============================================================================\n// Executor Types (from shared contracts)\n// ============================================================================\n\nexport type {\n ActionExecutor,\n ExecutorCleanup,\n ExecutorContext,\n ExecutorResult,\n ExecutorUpdate,\n} from '@syntrologie/sdk-contracts';\n\n// ============================================================================\n// Editor Types (from sdk-contracts)\n// ============================================================================\n\nexport type { EditorPanelProps } from '@syntrologie/sdk-contracts';\n", "/**\n * AnchorPickerLit \u2014 Shared Element Picker Overlay (Lit web component).\n *\n * Full-page overlay that lets the user hover and click to select a DOM element.\n * Returns the element, its CSS selector, and a human-readable description\n * via custom events.\n *\n * The overlay is rendered into a portal div appended to document.body, NOT\n * into the component's own render root. This is necessary because the editor\n * panel applies `backdrop-filter: blur(...)` which, in Chrome, creates a new\n * containing block for `position: fixed` descendants. Without the portal, the\n * highlight box coordinates (from getBoundingClientRect, which are viewport-\n * relative) would be interpreted relative to the panel, causing the highlight\n * to appear far off from the actual hovered element.\n *\n * Lit port of AnchorPicker.tsx \u2014 preserves all behavior including:\n * - Mouse tracking with elementFromPoint detection\n * - Passthrough click mode for PostHog integration\n * - Element highlight with info tooltip\n * - Escape key cancellation\n * - Exclude selector filtering\n */\n\nimport { colors } from '@syntro/design-system';\nimport { html, LitElement, render as litRender, nothing } from 'lit';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport {\n generateSelector,\n getElementDescription,\n validateSelector,\n} from '../utils/selectorGenerator';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface PickedElement {\n element: Element;\n selector: string;\n description: string;\n}\n\n// =============================================================================\n// Constants\n// =============================================================================\n\nconst HIGHLIGHT_COLOR = colors.blue[4];\n// rgba triple matches colors.blue[4] (#1969fe \u2192 25, 105, 254) at 10% alpha.\nconst HIGHLIGHT_BG = 'rgba(25, 105, 254, 0.1)';\n\nconst DEFAULT_EXCLUDE_SELECTOR =\n '[data-syntro-editor-panel], [data-shadow-canvas-id], .syntro-tooltip, .syntro-modal, .syntro-highlight, [data-syntro-anchor-picker]';\n\n// =============================================================================\n// Component\n// =============================================================================\n\nexport class AnchorPickerLit extends LitElement {\n static override properties = {\n isActive: { type: Boolean, attribute: 'is-active' },\n passthroughClicks: { type: Boolean, attribute: 'passthrough-clicks' },\n excludeSelector: { type: String, attribute: 'exclude-selector' },\n // Internal reactive state (not attributes)\n _hoveredElement: { state: true },\n _hoveredSelector: { state: true },\n };\n\n isActive = false;\n passthroughClicks = false;\n excludeSelector: string = DEFAULT_EXCLUDE_SELECTOR;\n\n // Internal state\n private _hoveredElement: Element | null = null;\n private _hoveredSelector = '';\n\n // DOM ref for the overlay (lives in _portalDiv, not in this element)\n private _overlayEl: HTMLDivElement | null = null;\n\n // Portal div appended to document.body to escape backdrop-filter containing block\n private _portalDiv: HTMLDivElement | null = null;\n\n // No _bound* wrappers needed \u2014 methods are arrow class fields\n\n override createRenderRoot() {\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.isActive) {\n this._attachDocumentListeners();\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._detachDocumentListeners();\n this._destroyPortal();\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('isActive')) {\n if (this.isActive) {\n this._attachDocumentListeners();\n } else {\n this._detachDocumentListeners();\n this._hoveredElement = null;\n this._hoveredSelector = '';\n }\n }\n\n // Sync portal on every state change (active/hover/selector all affect portal content)\n this._syncPortal();\n }\n\n // ---- PORTAL MANAGEMENT ----\n\n /**\n * Create or update the body-level portal div.\n * Rendering into document.body ensures position:fixed coordinates are\n * relative to the viewport, not an ancestor with backdrop-filter.\n */\n private _syncPortal(): void {\n if (!this.isActive) {\n this._destroyPortal();\n return;\n }\n\n if (!this._portalDiv) {\n this._portalDiv = document.createElement('div');\n this._portalDiv.setAttribute('data-syntro-anchor-picker-container', '');\n document.body.appendChild(this._portalDiv);\n }\n\n litRender(this._overlayTemplate(), this._portalDiv);\n this._overlayEl = this._portalDiv.querySelector<HTMLDivElement>('[data-syntro-anchor-picker]');\n }\n\n private _destroyPortal(): void {\n if (this._portalDiv) {\n litRender(nothing, this._portalDiv);\n this._portalDiv.remove();\n this._portalDiv = null;\n this._overlayEl = null;\n }\n }\n\n // ---- DOCUMENT LISTENERS ----\n\n private _attachDocumentListeners(): void {\n document.addEventListener('mousemove', this._handleMouseMove, true);\n if (!this.passthroughClicks) {\n document.addEventListener('click', this._handleClick, true);\n }\n document.addEventListener('keydown', this._handleKeyDown, true);\n }\n\n private _detachDocumentListeners(): void {\n document.removeEventListener('mousemove', this._handleMouseMove, true);\n document.removeEventListener('click', this._handleClick, true);\n document.removeEventListener('keydown', this._handleKeyDown, true);\n }\n\n // ---- EVENT HANDLERS ----\n\n /**\n * Resolve the shadow host this picker lives inside, if any. When the picker\n * is mounted inside a shadow root (e.g. the editor SDK mounts inside\n * `<smart-canvas>`'s shadow), `document.elementFromPoint` returns the shadow\n * *host*, not the host page element beneath. Temporarily disabling pointer\n * events on the host lets hit-testing fall through to the host page.\n */\n private _getShadowHost(): HTMLElement | null {\n const root = this.getRootNode();\n if (root instanceof ShadowRoot) return root.host as HTMLElement;\n return null;\n }\n\n private _handleMouseMove = (e: MouseEvent): void => {\n const overlay = this._overlayEl;\n const shadowHost = this._getShadowHost();\n\n // In passthrough mode the overlay is already pointerEvents:'none',\n // so elementFromPoint can see through it -- no toggle needed.\n // In non-passthrough mode, temporarily disable to detect elements underneath.\n if (overlay && !this.passthroughClicks) {\n overlay.style.pointerEvents = 'none';\n }\n // If we're inside a shadow root, temporarily hide the host so\n // elementFromPoint can reach the host page underneath. `pointer-events`\n // doesn't work here because any fixed-position descendant inside the\n // shadow tree with pointer-events:auto (e.g. a canvas overlay) causes\n // elementFromPoint to return the shadow host regardless of what the\n // host's own pointer-events is. `visibility:hidden` removes the entire\n // subtree from hit-testing without triggering layout reflow.\n const prevHostVis = shadowHost?.style.visibility;\n if (shadowHost) shadowHost.style.visibility = 'hidden';\n\n const elementAtPoint = document.elementFromPoint(e.clientX, e.clientY);\n\n if (shadowHost) shadowHost.style.visibility = prevHostVis ?? '';\n if (overlay && !this.passthroughClicks) {\n overlay.style.pointerEvents = 'auto';\n }\n\n if (!elementAtPoint) {\n this._hoveredElement = null;\n this._hoveredSelector = '';\n return;\n }\n\n if (this.excludeSelector && elementAtPoint.closest(this.excludeSelector)) {\n this._hoveredElement = null;\n this._hoveredSelector = '';\n return;\n }\n\n if (['HTML', 'BODY', 'HEAD'].includes(elementAtPoint.tagName)) {\n this._hoveredElement = null;\n this._hoveredSelector = '';\n return;\n }\n\n this._hoveredElement = elementAtPoint;\n this._hoveredSelector = generateSelector(elementAtPoint);\n };\n\n private _handleClick = (e: MouseEvent): void => {\n if (this.passthroughClicks) return; // Let click propagate to PostHog\n\n e.preventDefault();\n e.stopPropagation();\n\n if (this._hoveredElement && this._hoveredSelector) {\n let selector = this._hoveredSelector;\n if (!validateSelector(selector, this._hoveredElement)) {\n selector = generateSelector(this._hoveredElement);\n }\n\n this.dispatchEvent(\n new CustomEvent<PickedElement>('pick', {\n detail: {\n element: this._hoveredElement,\n selector,\n description: getElementDescription(this._hoveredElement),\n },\n bubbles: true,\n composed: true,\n })\n );\n }\n };\n\n private _handleKeyDown = (e: KeyboardEvent): void => {\n if (e.key === 'Escape') {\n e.preventDefault();\n this.dispatchEvent(\n new CustomEvent('cancel', {\n bubbles: true,\n composed: true,\n })\n );\n }\n };\n\n // ---- RENDER ----\n\n // The component itself renders nothing \u2014 all overlay HTML lives in _portalDiv\n // (a div appended to document.body), managed by _syncPortal().\n override render() {\n return nothing;\n }\n\n private _overlayTemplate() {\n if (!this.isActive) return nothing;\n\n const hovered = this._hoveredElement;\n const rect = hovered?.getBoundingClientRect() ?? null;\n\n return html`\n <div\n data-syntro-anchor-picker\n style=${styleMap({\n position: 'fixed',\n inset: '0',\n cursor: 'crosshair',\n zIndex: '2147483644',\n pointerEvents: this.passthroughClicks ? 'none' : 'auto',\n })}\n >\n <!-- Semi-transparent overlay -->\n <div\n style=${styleMap({\n position: 'absolute',\n inset: '0',\n background: 'rgba(0, 0, 0, 0.08)',\n pointerEvents: 'none',\n })}\n ></div>\n\n <!-- Element highlight -->\n ${\n hovered && rect\n ? html`<div\n style=${styleMap({\n position: 'fixed',\n left: `${rect.left - 2}px`,\n top: `${rect.top - 2}px`,\n width: `${rect.width + 4}px`,\n height: `${rect.height + 4}px`,\n border: `2px solid ${HIGHLIGHT_COLOR}`,\n backgroundColor: HIGHLIGHT_BG,\n borderRadius: '4px',\n boxShadow: '0 0 0 9999px rgba(0, 0, 0, 0.2)',\n pointerEvents: 'none',\n transition: 'all 0.1s ease-out',\n })}\n ></div>`\n : nothing\n }\n\n <!-- Element info tooltip near hovered element -->\n ${\n hovered && rect\n ? html`<div\n class=\"se-text-xs\"\n style=${styleMap({\n position: 'fixed',\n left: `${Math.max(8, Math.min(rect.left, window.innerWidth - 320))}px`,\n top: `${Math.max(8, rect.top - 68)}px`,\n backgroundColor: colors.slateGrey[3],\n color: colors.slateGrey[11],\n padding: '8px 12px',\n borderRadius: '6px',\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.3)',\n zIndex: '1',\n fontFamily: 'monospace',\n maxWidth: '300px',\n pointerEvents: 'none',\n })}\n >\n <div\n class=\"se-text-xs\"\n style=${styleMap({\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n marginBottom: '4px',\n color: colors.slateGrey[9],\n })}\n >\n Click to select\n </div>\n <div\n style=${styleMap({\n color: colors.blue[5],\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n })}\n >\n ${this._hoveredSelector}\n </div>\n <div\n style=${styleMap({\n marginTop: '4px',\n color: colors.slateGrey[10],\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n })}\n >\n ${getElementDescription(hovered)}\n </div>\n </div>`\n : nothing\n }\n </div>\n `;\n }\n}\n\nif (!customElements.get('se-anchor-picker')) {\n customElements.define('se-anchor-picker', AnchorPickerLit);\n}\n", "import { getCssSelector } from 'css-selector-generator';\n\nexport interface SelectorOptions {\n includeTag?: boolean;\n preferTestIds?: boolean;\n maxCombinations?: number;\n}\n\nconst DEFAULT_OPTIONS: SelectorOptions = {\n includeTag: true,\n preferTestIds: true,\n maxCombinations: 100,\n};\n\n/**\n * Generates a CSS selector for a given DOM element.\n * Uses css-selector-generator with settings optimized for:\n * - Stability (prefers IDs, data-testid, stable classes)\n * - Readability (includes tag names)\n * - Uniqueness (generates unique selectors)\n */\nexport function generateSelector(element: Element, options: SelectorOptions = {}): string {\n const opts = { ...DEFAULT_OPTIONS, ...options };\n\n // Build selector types in priority order\n const selectors: Array<'id' | 'class' | 'tag' | 'attribute' | 'nthchild' | 'nthoftype'> = [];\n\n // Always prioritize ID if available\n selectors.push('id');\n\n // Include data-testid and other stable attributes\n if (opts.preferTestIds) {\n selectors.push('attribute');\n }\n\n // Then class names (filtered to exclude dynamic ones)\n selectors.push('class');\n\n // Tag names for context\n selectors.push('tag');\n\n // Fallbacks for uniqueness\n selectors.push('nthchild');\n selectors.push('nthoftype');\n\n try {\n const selector = getCssSelector(element, {\n selectors,\n includeTag: opts.includeTag,\n maxCombinations: opts.maxCombinations,\n // Blacklist common dynamic class patterns\n blacklist: [\n // Dynamic class patterns\n /^[a-z]+-[a-f0-9]{5,}$/i, // hash-based classes like \"css-1abc23\"\n /^_[a-zA-Z0-9]+$/, // CSS module classes like \"_1abc23\"\n /^svelte-[a-z0-9]+$/i, // Svelte scoped classes\n /^vue-[a-z0-9]+$/i, // Vue scoped classes\n /^emotion-[0-9]+$/, // Emotion CSS-in-JS\n /^sc-[a-zA-Z]+$/, // styled-components\n // State classes that may change\n /^(is-|has-|js-)/,\n /^(active|selected|focused|disabled|hidden|visible)$/,\n // Animation/transition classes\n /^(fade|slide|animate)/,\n /-(enter|leave|active)(-active|-done)?$/,\n ],\n // Whitelist stable attribute selectors\n whitelist: [\n /^data-testid$/,\n /^data-cy$/,\n /^data-test$/,\n /^data-qa$/,\n /^aria-label$/,\n /^role$/,\n /^name$/,\n /^type$/,\n /^href$/,\n ],\n });\n\n return selector;\n } catch (error) {\n console.warn('[SelectorGenerator] Failed to generate selector:', error);\n // Fallback: try simpler approach\n return generateFallbackSelector(element);\n }\n}\n\n/**\n * Fallback selector generation when the library fails.\n * Creates a path-based selector from the element to the body.\n */\nfunction generateFallbackSelector(element: Element): string {\n const path: string[] = [];\n let current: Element | null = element;\n\n while (current && current !== document.body && current !== document.documentElement) {\n let selector = current.tagName.toLowerCase();\n\n // Add ID if present\n if (current.id) {\n selector = `#${CSS.escape(current.id)}`;\n path.unshift(selector);\n break; // ID is unique enough\n }\n\n // Add nth-child for specificity\n const parent: Element | null = current.parentElement;\n if (parent) {\n const siblings = Array.from(parent.children);\n const index = siblings.indexOf(current) + 1;\n selector += `:nth-child(${index})`;\n }\n\n path.unshift(selector);\n current = parent;\n }\n\n return path.join(' > ');\n}\n\n/**\n * Validates that a selector correctly targets the expected element.\n */\nexport function validateSelector(selector: string, expectedElement: Element): boolean {\n try {\n const matched = document.querySelector(selector);\n return matched === expectedElement;\n } catch {\n return false;\n }\n}\n\n/**\n * Gets a human-readable description of an element for UI display.\n */\nexport function getElementDescription(element: Element): string {\n const tag = element.tagName.toLowerCase();\n const id = element.id ? `#${element.id}` : '';\n const classes =\n element.className && typeof element.className === 'string'\n ? `.${element.className\n .split(' ')\n .filter((c) => c && !isDynamicClass(c))\n .slice(0, 2)\n .join('.')}`\n : '';\n\n // Get text content preview\n const text = element.textContent?.trim().slice(0, 30) || '';\n const textPreview = text ? ` \"${text}${text.length >= 30 ? '...' : ''}\"` : '';\n\n return `${tag}${id}${classes}${textPreview}`.trim();\n}\n\n/**\n * Checks if a class name appears to be dynamically generated.\n */\nfunction isDynamicClass(className: string): boolean {\n const dynamicPatterns = [\n /^[a-z]+-[a-f0-9]{5,}$/i,\n /^_[a-zA-Z0-9]+$/,\n /^svelte-[a-z0-9]+$/i,\n /^vue-[a-z0-9]+$/i,\n /^emotion-[0-9]+$/,\n /^sc-[a-zA-Z]+$/,\n ];\n return dynamicPatterns.some((pattern) => pattern.test(className));\n}\n", "/**\n * AnchorPillLit (`<se-anchor-pill>`) \u2014 three-state status pill for editor item\n * cards that point at a DOM anchor on a route.\n *\n * \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n * \u2502 State \u2502 Label \u2502 Color \u2502 Click event \u2502\n * \u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n * \u2502 locate \u2502 \"Locate\" \u2502 green \u2502 se-anchor-locate {selector} \u2502\n * \u2502 navigate \u2502 \"Go to /<route> \u2192\" \u2502 green \u2502 se-anchor-navigate {route} \u2502\n * \u2502 missing \u2502 \"Not found\" \u2502 red \u2502 (no event \u2014 disabled) \u2502\n * \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n *\n * Light-DOM render so the host editor's tailwind classes apply. Events are\n * `composed: true, bubbles: true` so consumers can listen at the editor root.\n *\n * Used by:\n * - editor-sdk's ContentEditorLit + OverlayEditorLit (with selector + route)\n * - adaptive-nav's NavEditorLit\n * - adaptive-faq's group headers (navigate-only via the same pattern)\n */\n\nimport { html, LitElement } from 'lit';\n\nexport type AnchorPillState = 'locate' | 'navigate' | 'missing';\n\nexport class AnchorPillLit extends LitElement {\n static override properties = {\n state: { type: String },\n route: { type: String },\n selector: { type: String },\n /** Stable id used to build a deterministic data-testid. */\n testidKey: { type: String, attribute: 'testid-key' },\n /** Prefix for the data-testid: e.g. \"locate-content\", \"locate-overlay\". */\n testidPrefix: { type: String, attribute: 'testid-prefix' },\n };\n\n state: AnchorPillState = 'missing';\n route: string | undefined = undefined;\n selector: string | undefined = undefined;\n testidKey = 'no-anchor';\n testidPrefix = 'anchor-pill';\n\n override createRenderRoot() {\n return this;\n }\n\n private _onLocate = (e: Event) => {\n e.stopPropagation();\n this.dispatchEvent(\n new CustomEvent('se-anchor-locate', {\n detail: { selector: this.selector },\n bubbles: true,\n composed: true,\n })\n );\n };\n\n private _onNavigate = (e: Event) => {\n e.stopPropagation();\n if (!this.route) return;\n this.dispatchEvent(\n new CustomEvent('se-anchor-navigate', {\n detail: { route: this.route },\n bubbles: true,\n composed: true,\n })\n );\n };\n\n override render() {\n // Sized to match the surrounding row's text size + line-height so the\n // pill visually aligns instead of looking like a smaller floating chip.\n // Row labels use `se-text-sm` (14px); pill stays one notch tighter at\n // text-xs (12px) so it reads as a control, but matches leading-5 for\n // baseline alignment, and uses real button-style padding so text isn't\n // crammed edge-to-edge.\n const baseCls =\n 'se-shrink-0 se-inline-flex se-items-center se-justify-center se-gap-1 se-px-3 se-py-1 se-rounded-md se-border se-text-xs se-font-semibold se-leading-5 se-cursor-pointer se-whitespace-nowrap';\n const greenCls = 'se-border-green-4/60 se-bg-green-4/10 se-text-green-5 hover:se-bg-green-4/20';\n const redCls = 'se-border-red-4/60 se-bg-red-4/10 se-text-red-5 se-cursor-not-allowed';\n const testid = `${this.testidPrefix}-${this.testidKey}`;\n\n if (this.state === 'locate') {\n return html`<button\n type=\"button\"\n data-testid=${testid}\n data-state=\"locate\"\n title=\"Scroll to element\"\n @click=${this._onLocate}\n class=\"${baseCls} ${greenCls}\"\n >\n Locate\n </button>`;\n }\n if (this.state === 'navigate' && this.route) {\n return html`<button\n type=\"button\"\n data-testid=${testid}\n data-state=\"navigate\"\n title=${`Navigate to ${this.route}`}\n @click=${this._onNavigate}\n class=\"${baseCls} ${greenCls}\"\n >\n Go to ${this.route}\n </button>`;\n }\n return html`<span\n data-testid=${testid}\n data-state=\"missing\"\n title=\"Anchor not available on this page\"\n class=\"${baseCls} ${redCls}\"\n >\n Not found\n </span>`;\n }\n}\n\n// Guard against double-registration. Required because this package's\n// `package.json` exports map `.` to `dist/` and `./lit-elements` to `src/`,\n// so a value re-export of AnchorPillLit from `index.ts` would create two\n// module identities each calling define and triggering NotSupportedError.\n// We don't re-export the value from index.ts today, but this guard means a\n// future contributor can do so without booby-trapping the tests.\nif (!customElements.get('se-anchor-pill')) {\n customElements.define('se-anchor-pill', AnchorPillLit);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'se-anchor-pill': AnchorPillLit;\n }\n}\n", "import { html, LitElement } from 'lit';\n\n/**\n * EditorCardLit \u2014 card wrapper for editor item lists.\n *\n * Uses shadow DOM so <slot> projects children into the styled wrapper div.\n * Dispatches card-mouseenter, card-mouseleave, card-click custom events\n * with composed: true so they cross the shadow boundary.\n */\nexport class EditorCardLit extends LitElement {\n static override properties = {\n itemKey: { type: String, attribute: 'item-key' },\n cardClass: { type: String, attribute: 'card-class' },\n validated: { type: Boolean },\n clickable: { type: Boolean },\n };\n\n itemKey = '';\n cardClass: string | undefined;\n validated = false;\n clickable = false;\n\n private _handleClick = () => {\n if (!this.clickable) return;\n this.dispatchEvent(\n new CustomEvent('card-click', {\n detail: { itemKey: this.itemKey },\n bubbles: true,\n composed: true,\n })\n );\n };\n\n private _handleKeyDown = (e: KeyboardEvent) => {\n if (!this.clickable) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this._handleClick();\n }\n };\n\n private _handleMouseEnter = () => {\n this.dispatchEvent(\n new CustomEvent('card-mouseenter', {\n detail: { itemKey: this.itemKey },\n bubbles: true,\n composed: true,\n })\n );\n };\n\n private _handleMouseLeave = () => {\n this.dispatchEvent(\n new CustomEvent('card-mouseleave', {\n detail: { itemKey: this.itemKey },\n bubbles: true,\n composed: true,\n })\n );\n };\n\n override render() {\n const base = 'py-2 px-2.5 rounded-lg border shadow-sm mb-1 text-sm';\n const borderCls = this.validated ? 'border-green-500/50' : 'border-white/10';\n const bgCls = 'bg-white/[0.02]';\n const colorCls = 'text-slate-200';\n const interactiveCls = this.clickable\n ? 'cursor-pointer hover:border-white/20 hover:bg-white/[0.04] transition-colors'\n : '';\n\n return html`\n <style>\n :host { display: block; }\n .card {\n padding: 8px 10px;\n border-radius: 8px;\n border: 1px solid rgba(255,255,255,0.1);\n background: rgba(255,255,255,0.02);\n box-shadow: 0 1px 2px rgba(0,0,0,0.1);\n margin-bottom: 4px;\n font-size: 14px;\n color: #e2e8f0;\n }\n .card.validated {\n border-color: rgba(34,197,94,0.5);\n box-shadow: 0 0 8px rgba(34,197,94,0.15);\n }\n .card.clickable {\n cursor: pointer;\n transition: border-color 0.15s, background 0.15s;\n }\n .card.clickable:hover {\n border-color: rgba(255,255,255,0.2);\n background: rgba(255,255,255,0.04);\n }\n </style>\n <div\n class=\"card ${this.validated ? 'validated' : ''} ${this.clickable ? 'clickable' : ''}\"\n data-item-key=${this.itemKey}\n role=${this.clickable ? 'button' : ''}\n tabindex=${this.clickable ? '0' : ''}\n @click=${this._handleClick}\n @keydown=${this._handleKeyDown}\n @mouseenter=${this._handleMouseEnter}\n @mouseleave=${this._handleMouseLeave}\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\nif (!customElements.get('se-editor-card')) {\n customElements.define('se-editor-card', EditorCardLit);\n}\n", "/**\n * EditorPanelShellLit \u2014 moveable, resizable wrapper for editor sidebars (Lit web component).\n *\n * Renders:\n * 1. A fixed FAB button (Syntrologie logo) at the panel's bottom-left corner.\n * Click toggles open/minimized. Drag moves the entire panel.\n * 2. A resizable panel container with semi-transparent background and backdrop blur.\n * Supports docked (left/right edge, full height) and free-floating modes.\n * Position, size, and dock state persist in localStorage.\n *\n * Lit port of EditorPanelShell.tsx \u2014 preserves all behavior including:\n * - FAB drag with pointer capture and edge snapping\n * - 8-direction resize handles with direct DOM manipulation for performance\n * - localStorage persistence of geometry\n * - Viewport clamping on window resize\n */\n\nimport { panelShell } from '@syntro/design-system';\nimport { html, LitElement, nothing } from 'lit';\nimport { styleMap } from 'lit/directives/style-map.js';\n\n// =============================================================================\n// Types\n// =============================================================================\n\ninterface PanelGeometry {\n x: number;\n y: number;\n width: number;\n height: number;\n docked: 'left' | 'right' | null;\n}\n\ntype ResizeDir = 'n' | 'ne' | 'e' | 'se' | 's' | 'sw' | 'w' | 'nw';\n\n// =============================================================================\n// Constants\n// =============================================================================\n\nconst STORAGE_KEY = 'syntro:editor-panel';\nconst MIN_WIDTH = panelShell.behavior.minWidth;\nconst MIN_HEIGHT = panelShell.behavior.minHeight;\nconst FAB_SIZE = panelShell.fab.size;\nconst FAB_INSET = panelShell.fab.inset;\nconst SNAP_THRESHOLD = panelShell.behavior.snapThreshold;\nconst DRAG_THRESHOLD = panelShell.behavior.dragThreshold;\nconst HANDLE_SIZE = panelShell.behavior.handleSize;\n\n// =============================================================================\n// Geometry Helpers\n// =============================================================================\n\nfunction getDefaultGeometry(): PanelGeometry {\n return {\n x: 0,\n y: 0,\n width: MIN_WIDTH,\n height: typeof window !== 'undefined' ? window.innerHeight : 800,\n docked: 'left',\n };\n}\n\nfunction loadGeometry(storageKey: string): PanelGeometry {\n if (typeof window === 'undefined') return getDefaultGeometry();\n try {\n const raw = localStorage.getItem(storageKey);\n if (raw) {\n const parsed = JSON.parse(raw);\n return {\n x: typeof parsed.x === 'number' ? parsed.x : 0,\n y: typeof parsed.y === 'number' ? parsed.y : 0,\n width: Math.max(MIN_WIDTH, typeof parsed.width === 'number' ? parsed.width : MIN_WIDTH),\n height: Math.max(\n MIN_HEIGHT,\n typeof parsed.height === 'number' ? parsed.height : window.innerHeight\n ),\n docked: parsed.docked === 'left' || parsed.docked === 'right' ? parsed.docked : null,\n };\n }\n } catch {\n /* ignore corrupt localStorage */\n }\n return getDefaultGeometry();\n}\n\nfunction saveGeometry(storageKey: string, geo: PanelGeometry): void {\n try {\n localStorage.setItem(storageKey, JSON.stringify(geo));\n } catch {\n /* ignore full localStorage */\n }\n}\n\nfunction getPanelRect(geo: PanelGeometry): {\n top: number;\n left: number;\n width: number;\n height: number;\n} {\n if (geo.docked === 'left') {\n return { top: 0, left: 0, width: geo.width, height: window.innerHeight };\n }\n if (geo.docked === 'right') {\n return {\n top: 0,\n left: window.innerWidth - geo.width,\n width: geo.width,\n height: window.innerHeight,\n };\n }\n const { x: left, y: top, width, height } = geo;\n return { top, left, width, height };\n}\n\nfunction getFabPosition(geo: PanelGeometry): { left: number; top: number } {\n const rect = getPanelRect(geo);\n return {\n left: rect.left + FAB_INSET,\n top: rect.top + FAB_INSET,\n };\n}\n\nfunction clampToViewport(geo: PanelGeometry): PanelGeometry {\n if (geo.docked) return geo;\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n return {\n ...geo,\n x: Math.max(-(geo.width - FAB_SIZE), Math.min(geo.x, vw - FAB_SIZE)),\n y: Math.max(-FAB_INSET, Math.min(geo.y, vh - FAB_SIZE - FAB_INSET)),\n };\n}\n\nfunction undockGeometry(geo: PanelGeometry): PanelGeometry {\n const rect = getPanelRect(geo);\n return {\n x: rect.left,\n y: rect.top,\n width: geo.width,\n height: rect.height,\n docked: null,\n };\n}\n\n// =============================================================================\n// Resize Handle Definitions\n// =============================================================================\n\ninterface ResizeHandleDef {\n dir: ResizeDir;\n style: Record<string, string>;\n cursor: string;\n}\n\nconst RESIZE_HANDLES: ResizeHandleDef[] = [\n {\n dir: 'n',\n style: {\n top: '0',\n left: `${HANDLE_SIZE}px`,\n right: `${HANDLE_SIZE}px`,\n height: `${HANDLE_SIZE}px`,\n },\n cursor: 'ns-resize',\n },\n {\n dir: 's',\n style: {\n bottom: '0',\n left: `${HANDLE_SIZE}px`,\n right: `${HANDLE_SIZE}px`,\n height: `${HANDLE_SIZE}px`,\n },\n cursor: 'ns-resize',\n },\n {\n dir: 'e',\n style: {\n right: '0',\n top: `${HANDLE_SIZE}px`,\n bottom: `${HANDLE_SIZE}px`,\n width: `${HANDLE_SIZE}px`,\n },\n cursor: 'ew-resize',\n },\n {\n dir: 'w',\n style: {\n left: '0',\n top: `${HANDLE_SIZE}px`,\n bottom: `${HANDLE_SIZE}px`,\n width: `${HANDLE_SIZE}px`,\n },\n cursor: 'ew-resize',\n },\n {\n dir: 'ne',\n style: { top: '0', right: '0', width: `${HANDLE_SIZE * 2}px`, height: `${HANDLE_SIZE * 2}px` },\n cursor: 'nesw-resize',\n },\n {\n dir: 'nw',\n style: { top: '0', left: '0', width: `${HANDLE_SIZE * 2}px`, height: `${HANDLE_SIZE * 2}px` },\n cursor: 'nwse-resize',\n },\n {\n dir: 'se',\n style: {\n bottom: '0',\n right: '0',\n width: `${HANDLE_SIZE * 2}px`,\n height: `${HANDLE_SIZE * 2}px`,\n },\n cursor: 'nwse-resize',\n },\n {\n dir: 'sw',\n style: {\n bottom: '0',\n left: '0',\n width: `${HANDLE_SIZE * 2}px`,\n height: `${HANDLE_SIZE * 2}px`,\n },\n cursor: 'nesw-resize',\n },\n];\n\n// =============================================================================\n// SVG Logo (inline template)\n// =============================================================================\n\nconst syntroLogoSvg = html`<svg\n aria-hidden=\"true\"\n width=\"28\"\n height=\"18\"\n viewBox=\"0 0 101 63\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <g clip-path=\"url(#syntro-fab-clip)\">\n <path\n d=\"M51.989 0.284C52.386 0.29 52.808 0.341 53.192 0.443C53.769 0.596 54.362 0.983 54.745 1.442C55.895 2.822 56.767 4.782 57.669 6.357C59.947 10.334 62.152 14.372 64.498 18.307C64.671 18.597 65.127 19.343 65.475 19.411C66.654 19.641 79.278 11.523 81.123 10.317C80.704 8.6 80.624 7.21 81.334 5.525C82.014 3.916 83.317 2.651 84.946 2.019C86.593 1.366 88.286 1.42 89.902 2.123C91.486 2.795 92.733 4.076 93.363 5.677C95.111 10.218 91.347 15.013 86.561 14.442C85.392 14.302 84.649 13.927 83.6 13.441C76.542 18.247 69.094 22.597 61.207 25.907C60.153 26.349 59.42 26.6 58.519 27.328C60.583 27.43 87.034 24.236 87.878 23.781C87.926 23.755 88.048 23.697 88.08 23.652C88.244 23.421 88.277 23.007 88.376 22.735C88.819 21.511 89.563 20.379 90.604 19.586C91.887 18.608 93.6 18.093 95.208 18.324C96.992 18.581 98.67 19.55 99.74 21.005C100.733 22.364 101.141 24.064 100.875 25.726C100.607 27.394 99.692 28.888 98.329 29.887C96.02 31.573 92.641 31.613 90.392 29.789C89.579 29.13 89.177 28.535 88.566 27.692C86.692 28.103 83.447 28.463 81.472 28.73C76.577 29.399 71.671 29.99 66.756 30.504C65.752 30.608 59.279 31.013 58.779 31.24L58.781 31.387C59.106 31.577 66.974 33.025 68.328 33.358C72.475 34.405 76.572 35.64 80.606 37.06C82.709 37.818 84.721 38.686 86.814 39.457C88.505 38.051 89.243 36.875 91.925 36.841C93.665 36.833 95.339 37.506 96.589 38.717C97.986 40.087 98.415 41.541 98.429 43.422C98.417 44.842 98.099 45.978 97.229 47.137C96.168 48.531 94.597 49.447 92.86 49.682C91.161 49.922 89.437 49.472 88.073 48.431C86.201 47.02 85.795 45.462 85.488 43.323C85.255 43.193 85.018 43.071 84.776 42.958C83.907 42.553 78.511 40.359 77.911 40.577C77.837 41.147 78.926 42.592 79.243 43.155L84.336 52.073C85.165 53.529 86.027 54.991 86.789 56.483C87.253 57.391 87.414 58.355 87.056 59.343C86.557 60.722 85.014 61.408 83.626 61.438C81.429 61.427 79.228 61.427 77.029 61.427L62.967 61.427L35.549 61.435C33.337 61.436 20.693 61.626 19.579 61.199C18.758 60.889 18.093 60.265 17.732 59.465C17.455 58.844 17.335 57.994 17.577 57.361C18.242 55.623 19.5 53.659 20.438 52.043L28.119 39.028C28.9 37.701 31.213 33.891 31.7 32.634C25.671 32.936 18.736 32.547 12.6 32.721C11.75 34.138 10.992 35.281 9.368 35.935C7.744 36.588 5.704 36.604 4.097 35.922C2.546 35.272 1.319 34.028 0.69 32.468C0.053 30.839 0.086 29.025 0.781 27.42C2.812 22.739 9.259 22.202 12.05 26.464C12.555 27.235 12.774 27.84 13.104 28.703L26.462 28.711C28.926 28.713 31.729 28.779 34.17 28.668C35.279 26.892 36.442 24.733 37.515 22.901L45.376 9.375C46.797 6.902 48.214 4.368 49.685 1.924C50.222 1.032 50.962 0.493 51.989 0.284ZM22.119 57.31C23.512 57.503 26.045 57.431 27.526 57.429L36.661 57.42L68.412 57.422C73.113 57.421 77.994 57.351 82.68 57.438L75.664 45.098C74.562 43.171 73.093 40.773 72.104 38.827C71.245 38.351 70.291 38.109 69.335 37.848C59.189 35.076 48.669 33.421 38.172 32.796C37.642 32.764 36.994 32.766 36.469 32.794L25.855 50.865C24.634 52.935 23.364 55.302 22.119 57.31ZM52.216 5.513C49.384 10.611 46.473 15.665 43.484 20.673C42.193 22.878 40.862 25.071 39.63 27.31C39.46 27.618 39.36 27.782 39.453 28.133C40.522 28.342 45.866 26.973 47.112 26.644C49.169 26.137 60.135 22.684 61.174 21.436C61.248 21.163 61.287 21.069 61.125 20.762C60.279 19.163 59.326 17.527 58.435 15.958L53.592 7.329C53.355 6.915 52.677 5.599 52.216 5.513ZM96.18 26.494C96.963 25.713 97.12 24.502 96.563 23.547C96.005 22.592 94.872 22.133 93.807 22.432C92.972 22.666 92.324 23.327 92.108 24.167C91.892 25.007 92.14 25.899 92.758 26.507C93.396 27.134 94.327 27.361 95.182 27.096C95.558 26.98 95.901 26.773 96.18 26.494ZM87.871 10.399C89.147 10.087 89.941 8.813 89.659 7.529C89.377 6.246 88.122 5.422 86.832 5.673C85.97 5.841 85.266 6.463 84.994 7.298C84.722 8.133 84.923 9.05 85.52 9.694C86.118 10.339 87.017 10.608 87.871 10.399ZM91.505 40.879C90.185 41.122 89.31 42.388 89.55 43.709C89.791 45.03 91.055 45.907 92.377 45.669C93.22 45.517 93.921 44.933 94.223 44.131C94.525 43.329 94.383 42.428 93.85 41.758C93.29 41.055 92.389 40.717 91.505 40.879ZM9.138 29.557C9.005 28.88 8.592 28.292 8.001 27.937C7.409 27.583 6.696 27.495 6.036 27.697C5.665 27.81 5.326 28.011 5.048 28.282C4.24 29.07 4.079 30.31 4.66 31.278C5.241 32.247 6.411 32.688 7.487 32.346C8.666 31.97 9.376 30.771 9.138 29.557Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"syntro-fab-clip\">\n <rect width=\"101\" height=\"63\" fill=\"white\" />\n </clipPath>\n </defs>\n</svg>`;\n\n// =============================================================================\n// Component\n// =============================================================================\n\nexport class EditorPanelShellLit extends LitElement {\n static override properties = {\n isOpen: { type: Boolean, attribute: 'is-open' },\n panelId: { type: String, attribute: 'panel-id' },\n zIndex: { type: Number, attribute: 'z-index' },\n };\n\n isOpen = false;\n panelId: string | undefined;\n zIndex = 2147483647;\n\n // Internal geometry state\n private _geometry: PanelGeometry = getDefaultGeometry();\n\n // DOM refs (set in render via query after update)\n private _panelEl: HTMLDivElement | null = null;\n private _fabEl: HTMLButtonElement | null = null;\n\n // Drag state (imperative refs for performance -- no re-renders during drag)\n private _isDragging = false;\n private _hasMoved = false;\n private _dragOffset = { x: 0, y: 0 };\n private _startPanelPos = { x: 0, y: 0 };\n private _pendingGeo: PanelGeometry | null = null;\n\n // Resize state\n private _activeResize: ResizeDir | null = null;\n private _resizeStartMouse = { x: 0, y: 0 };\n private _resizeStartGeo: PanelGeometry = getDefaultGeometry();\n\n // No _bound* wrapper needed \u2014 method is an arrow class field\n\n private get _storageKey(): string {\n return this.panelId ? `syntro:editor-panel:${this.panelId}` : STORAGE_KEY;\n }\n\n override createRenderRoot() {\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._geometry = loadGeometry(this._storageKey);\n window.addEventListener('resize', this._handleWindowResize);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener('resize', this._handleWindowResize);\n }\n\n override updated(): void {\n // Cache DOM refs after each render\n this._panelEl = this.querySelector<HTMLDivElement>('[data-syntro-editor-panel]');\n this._fabEl = this.querySelector<HTMLButtonElement>('[data-syntro-fab]');\n }\n\n // ---- HELPERS ----\n\n private _updateGeometry(geo: PanelGeometry): void {\n this._geometry = geo;\n saveGeometry(this._storageKey, geo);\n this.requestUpdate();\n }\n\n private _handleWindowResize = (): void => {\n this._updateGeometry(clampToViewport(this._geometry));\n };\n\n private _emitToggle(): void {\n this.dispatchEvent(\n new CustomEvent('toggle', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n // ---- FAB DRAG HANDLERS ----\n\n private _handleFabPointerDown(e: PointerEvent): void {\n this._isDragging = true;\n this._hasMoved = false;\n const rect = getPanelRect(this._geometry);\n this._startPanelPos = { x: rect.left, y: rect.top };\n this._dragOffset = {\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n };\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\n e.preventDefault();\n }\n\n private _handleFabPointerMove(e: PointerEvent): void {\n if (!this._isDragging) return;\n\n const newX = e.clientX - this._dragOffset.x;\n const newY = e.clientY - this._dragOffset.y;\n\n if (!this._hasMoved) {\n const dx = Math.abs(newX - this._startPanelPos.x);\n const dy = Math.abs(newY - this._startPanelPos.y);\n if (dx < DRAG_THRESHOLD && dy < DRAG_THRESHOLD) return;\n this._hasMoved = true;\n }\n\n const geo = this._geometry;\n const height = geo.docked ? window.innerHeight : geo.height;\n\n // Update panel DOM directly for performance (bypass Lit re-render)\n if (this._panelEl) {\n this._panelEl.style.left = `${newX}px`;\n this._panelEl.style.top = `${newY}px`;\n this._panelEl.style.right = 'auto';\n this._panelEl.style.height = `${height}px`;\n }\n if (this._fabEl) {\n this._fabEl.style.left = `${newX + FAB_INSET}px`;\n this._fabEl.style.top = `${newY + FAB_INSET}px`;\n }\n\n this._pendingGeo = { x: newX, y: newY, width: geo.width, height, docked: null };\n }\n\n private _handleFabPointerUp(e: PointerEvent): void {\n (e.target as HTMLElement).releasePointerCapture(e.pointerId);\n const wasDragging = this._hasMoved;\n this._isDragging = false;\n this._hasMoved = false;\n\n if (!wasDragging) {\n this._emitToggle();\n return;\n }\n\n if (this._pendingGeo) {\n const geo = this._pendingGeo;\n // Edge snapping\n if (geo.x <= SNAP_THRESHOLD) {\n this._updateGeometry({ ...geo, docked: 'left', x: 0, y: 0 });\n } else if (geo.x + geo.width >= window.innerWidth - SNAP_THRESHOLD) {\n this._updateGeometry({ ...geo, docked: 'right', x: 0, y: 0 });\n } else {\n this._updateGeometry(geo);\n }\n this._pendingGeo = null;\n }\n }\n\n // ---- RESIZE HANDLERS ----\n\n private _handleResizePointerDown(e: PointerEvent): void {\n const dir = (e.currentTarget as HTMLElement).dataset.resizeDir as ResizeDir;\n if (!dir) return;\n let geo = this._geometry;\n // Undock if currently docked\n if (geo.docked) {\n geo = undockGeometry(geo);\n this._updateGeometry(geo);\n }\n this._activeResize = dir;\n this._resizeStartMouse = { x: e.clientX, y: e.clientY };\n this._resizeStartGeo = { ...geo };\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\n e.preventDefault();\n }\n\n private _handleResizePointerMove(e: PointerEvent): void {\n if (!this._activeResize) return;\n\n const dx = e.clientX - this._resizeStartMouse.x;\n const dy = e.clientY - this._resizeStartMouse.y;\n const dir = this._activeResize;\n const start = this._resizeStartGeo;\n let { x, y, width, height } = start;\n\n if (dir.includes('e')) width = Math.max(MIN_WIDTH, start.width + dx);\n if (dir.includes('w')) {\n const newW = Math.max(MIN_WIDTH, start.width - dx);\n x = start.x + start.width - newW;\n width = newW;\n }\n if (dir.includes('s')) height = Math.max(MIN_HEIGHT, start.height + dy);\n if (dir.includes('n')) {\n const newH = Math.max(MIN_HEIGHT, start.height - dy);\n y = start.y + start.height - newH;\n height = newH;\n }\n\n // Update DOM directly for performance\n if (this._panelEl) {\n this._panelEl.style.left = `${x}px`;\n this._panelEl.style.top = `${y}px`;\n this._panelEl.style.width = `${width}px`;\n this._panelEl.style.height = `${height}px`;\n }\n if (this._fabEl) {\n this._fabEl.style.left = `${x + FAB_INSET}px`;\n this._fabEl.style.top = `${y + FAB_INSET}px`;\n }\n\n this._pendingGeo = { x, y, width, height, docked: null };\n }\n\n private _handleResizePointerUp(e: PointerEvent): void {\n (e.target as HTMLElement).releasePointerCapture(e.pointerId);\n this._activeResize = null;\n if (this._pendingGeo) {\n this._updateGeometry(this._pendingGeo);\n this._pendingGeo = null;\n }\n }\n\n // ---- COMPUTED STYLES ----\n\n private _getPanelClasses(): string {\n const geo = this._geometry;\n const isDocked = geo.docked !== null;\n const base =\n 'syntro-editor-scope se-fixed se-flex se-flex-col se-text-text-primary se-backdrop-blur-xl se-font-sans se-antialiased se-overflow-hidden';\n if (isDocked) {\n return geo.docked === 'right'\n ? `${base} se-border-l se-border-border-primary`\n : `${base} se-border-r se-border-border-primary`;\n }\n return `${base} se-rounded-lg se-border se-border-border-primary`;\n }\n\n private _getPanelStyles(): Record<string, string> {\n const geo = this._geometry;\n const isDocked = geo.docked !== null;\n const styles: Record<string, string> = {\n position: 'fixed',\n zIndex: String(this.zIndex),\n // Re-enable pointer events \u2014 parent editor container uses pointer-events:none\n // so clicks pass through to elements beneath (e.g., the launcher FAB).\n pointerEvents: 'auto',\n background: panelShell.background,\n backdropFilter: `blur(${panelShell.backdropBlur})`,\n webkitBackdropFilter: `blur(${panelShell.backdropBlur})`,\n boxShadow: isDocked\n ? geo.docked === 'right'\n ? panelShell.shadows.dockedRight\n : panelShell.shadows.dockedLeft\n : panelShell.shadows.floating,\n overflowY: 'auto',\n overscrollBehavior: 'contain',\n };\n\n if (geo.docked === 'left') {\n styles.top = '0';\n styles.left = '0';\n styles.width = `${geo.width}px`;\n styles.height = '100vh';\n } else if (geo.docked === 'right') {\n styles.top = '0';\n styles.right = '0';\n styles.width = `${geo.width}px`;\n styles.height = '100vh';\n } else {\n styles.top = `${geo.y}px`;\n styles.left = `${geo.x}px`;\n styles.width = `${geo.width}px`;\n styles.height = `${geo.height}px`;\n }\n\n return styles;\n }\n\n private _getFabStyles(): Record<string, string> {\n const fabPos = getFabPosition(this._geometry);\n return {\n position: 'fixed',\n left: `${fabPos.left}px`,\n top: `${fabPos.top}px`,\n zIndex: String(this.zIndex),\n // Re-enable pointer events \u2014 parent editor container uses pointer-events:none\n pointerEvents: 'auto',\n width: `${FAB_SIZE}px`,\n height: `${FAB_SIZE}px`,\n borderRadius: '50%',\n border: panelShell.fab.border,\n cursor: 'grab',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: panelShell.fab.background,\n color: panelShell.fab.color,\n boxShadow: this.isOpen ? panelShell.fab.shadowOpen : panelShell.fab.shadowClosed,\n transition: 'box-shadow 150ms ease',\n touchAction: 'none',\n userSelect: 'none',\n webkitUserSelect: 'none',\n };\n }\n\n // ---- RENDER ----\n\n override render() {\n return html`\n ${\n this.isOpen\n ? html`<div\n data-syntro-editor-panel\n data-syntro-editor-ui=\"panel\"\n class=${this._getPanelClasses()}\n style=${styleMap(this._getPanelStyles())}\n ${this.panelId ? html`` : nothing}\n id=${this.panelId ?? nothing}\n >\n ${RESIZE_HANDLES.map(\n (h) =>\n html`<div\n data-syntro-editor-ui=\"resize-${h.dir}\"\n data-resize-dir=${h.dir}\n @pointerdown=${this._handleResizePointerDown}\n @pointermove=${this._handleResizePointerMove}\n @pointerup=${this._handleResizePointerUp}\n style=${styleMap({\n position: 'absolute',\n ...h.style,\n cursor: h.cursor,\n zIndex: '1',\n touchAction: 'none',\n })}\n ></div>`\n )}\n <slot></slot>\n </div>`\n : nothing\n }\n\n <div\n class=\"syntro-editor-scope\"\n data-syntro-editor-ui=\"fab-wrapper\"\n style=\"display: contents\"\n >\n <button\n type=\"button\"\n data-syntro-fab\n data-syntro-editor-ui=\"fab\"\n @pointerdown=${this._handleFabPointerDown}\n @pointermove=${this._handleFabPointerMove}\n @pointerup=${this._handleFabPointerUp}\n style=${styleMap(this._getFabStyles())}\n title=${this.isOpen ? 'Minimize panel' : 'Open panel'}\n >\n ${syntroLogoSvg}\n </button>\n </div>\n `;\n }\n}\n\nif (!customElements.get('se-editor-panel-shell')) {\n customElements.define('se-editor-panel-shell', EditorPanelShellLit);\n}\n", "import { html, LitElement } from 'lit';\n\nlet _textareaIdCounter = 0;\n\nexport class EditorTextareaLit extends LitElement {\n static override properties = {\n label: { type: String },\n textareaClass: { type: String, attribute: 'textarea-class' },\n textareaId: { type: String, attribute: 'textarea-id' },\n name: { type: String },\n value: { type: String },\n placeholder: { type: String },\n disabled: { type: Boolean },\n required: { type: Boolean },\n readonly: { type: Boolean },\n rows: { type: Number },\n };\n\n label: string | undefined;\n textareaClass: string | undefined;\n textareaId: string | undefined;\n name: string | undefined;\n value: string | undefined;\n placeholder: string | undefined;\n disabled = false;\n required = false;\n readonly = false;\n rows: number | undefined;\n\n private _generatedId: string;\n\n constructor() {\n super();\n this._generatedId = `se-textarea-${++_textareaIdCounter}`;\n }\n\n override createRenderRoot() {\n return this;\n }\n\n override updated() {\n // Auto-resize to fit content (mirrors the React useEffect auto-resize)\n const el = this.querySelector('textarea');\n if (el) {\n el.style.height = 'auto';\n el.style.height = `${el.scrollHeight}px`;\n }\n }\n\n private _handleChange(e: Event) {\n const target = e.target as HTMLTextAreaElement;\n this.value = target.value;\n // Trigger auto-resize on each change\n target.style.height = 'auto';\n target.style.height = `${target.scrollHeight}px`;\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: { value: target.value },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _handleInput(e: Event) {\n const target = e.target as HTMLTextAreaElement;\n this.value = target.value;\n target.style.height = 'auto';\n target.style.height = `${target.scrollHeight}px`;\n this.dispatchEvent(\n new CustomEvent('input', {\n detail: { value: target.value },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n override render() {\n const id = this.textareaId || this._generatedId;\n const classes = [\n 'se-w-full se-py-2 se-px-3 se-rounded-lg se-border se-border-input-field-border se-bg-slate-grey-3 se-text-text-primary se-text-sm se-font-[inherit] se-mb-2 se-resize-y se-min-h-[60px] se-max-h-[50vh] se-overflow-y-auto se-box-border',\n 'placeholder:se-text-input-field-text-placeholder',\n 'focus:se-border-input-field-border-selected focus:se-outline-none focus:se-shadow-focus-primary',\n 'disabled:se-bg-input-field-bg-disabled disabled:se-cursor-not-allowed disabled:se-opacity-50',\n this.textareaClass || '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return html`\n <div>\n ${\n this.label\n ? html`<label\n for=${id}\n class=\"se-text-sm se-font-medium se-text-input-field-text-label se-mb-1 se-block\"\n >${this.label}</label>`\n : ''\n }\n <textarea\n id=${id}\n class=${classes}\n name=${this.name ?? ''}\n placeholder=${this.placeholder ?? ''}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readonly}\n rows=${this.rows ?? ''}\n @change=${this._handleChange}\n @input=${this._handleInput}\n >${this.value ?? ''}</textarea>\n </div>\n `;\n }\n}\n\nif (!customElements.get('se-editor-textarea')) {\n customElements.define('se-editor-textarea', EditorTextareaLit);\n}\n", "/**\n * ElementHighlightLit \u2014 DOM overlay that highlights a specific element (Lit web component).\n *\n * Tracks element position via scroll/resize listeners and ResizeObserver.\n * Renders with position: fixed and inline styles exclusively.\n *\n * Must stay in light DOM (document.body) for same-tree visual stacking context\n * when highlighting host page elements.\n *\n * Lit port of ElementHighlight.tsx \u2014 preserves all behavior including:\n * - Live DOMRect tracking (scroll, resize, ResizeObserver)\n * - requestAnimationFrame-batched updates\n * - Configurable border, label, remove button\n * - Dimensions display mode\n * - Click/keyboard interaction support\n */\n\nimport { colors } from '@syntro/design-system';\nimport { html, LitElement, nothing } from 'lit';\nimport { styleMap } from 'lit/directives/style-map.js';\n\n// =============================================================================\n// Component\n// =============================================================================\n\nexport class ElementHighlightLit extends LitElement {\n static override properties = {\n element: { attribute: false },\n color: { type: String },\n bgColor: { type: String, attribute: 'bg-color' },\n borderStyle: { type: String, attribute: 'border-style' },\n borderWidth: { type: Number, attribute: 'border-width' },\n label: { type: String },\n showRemove: { type: Boolean, attribute: 'show-remove' },\n showDimensions: { type: Boolean, attribute: 'show-dimensions' },\n zIndex: { type: Number, attribute: 'z-index' },\n padding: { type: Number },\n interactive: { type: Boolean },\n // Internal state\n _rect: { state: true },\n };\n\n element: HTMLElement | null = null;\n color: string = colors.blue[4];\n bgColor = 'transparent';\n borderStyle: 'solid' | 'dashed' = 'solid';\n borderWidth = 2;\n label: string | undefined;\n showRemove = false;\n showDimensions = false;\n zIndex = 2147483644;\n padding = 2;\n /** When true, the highlight is clickable and emits 'highlight-click' events. */\n interactive = false;\n\n // Internal tracked rect\n private _rect: DOMRect | null = null;\n\n // Observer/listener cleanup\n private _resizeObserver: ResizeObserver | null = null;\n private _rafId: number | null = null;\n // No _bound* wrapper needed \u2014 method is an arrow class field\n\n override createRenderRoot() {\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._attachTracking();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._detachTracking();\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('element')) {\n // Re-attach tracking when the element changes\n this._detachTracking();\n this._attachTracking();\n }\n }\n\n // ---- RECT TRACKING (mirrors useElementRect) ----\n\n private _attachTracking(): void {\n if (!this.element) {\n this._rect = null;\n return;\n }\n\n // Initial measurement\n this._rect = this.element.getBoundingClientRect();\n\n // Scroll (capture phase catches nested scroll containers)\n window.addEventListener('scroll', this._scheduleUpdate, true);\n window.addEventListener('resize', this._scheduleUpdate);\n\n // Observe element size changes\n this._resizeObserver = new ResizeObserver(this._scheduleUpdate);\n this._resizeObserver.observe(this.element);\n }\n\n private _detachTracking(): void {\n window.removeEventListener('scroll', this._scheduleUpdate, true);\n window.removeEventListener('resize', this._scheduleUpdate);\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = null;\n }\n if (this._rafId != null) {\n cancelAnimationFrame(this._rafId);\n this._rafId = null;\n }\n }\n\n private _scheduleUpdate = (): void => {\n if (this._rafId != null) return;\n this._rafId = requestAnimationFrame(() => {\n this._rafId = null;\n if (this.element) {\n this._rect = this.element.getBoundingClientRect();\n }\n });\n };\n\n // ---- EVENT HANDLERS ----\n\n private _handleClick(e: Event): void {\n e.stopPropagation();\n e.preventDefault();\n this.dispatchEvent(\n new CustomEvent('highlight-click', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _handleKeyDown(e: KeyboardEvent): void {\n if (e.key === 'Enter' || e.key === ' ') {\n e.stopPropagation();\n e.preventDefault();\n this.dispatchEvent(\n new CustomEvent('highlight-click', {\n bubbles: true,\n composed: true,\n })\n );\n }\n }\n\n private _handleRemove(e: Event): void {\n e.stopPropagation();\n e.preventDefault();\n this.dispatchEvent(\n new CustomEvent('highlight-remove', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n // ---- RENDER ----\n\n override render() {\n const rect = this._rect;\n if (!rect) return nothing;\n\n const el = this.element;\n const hasInteraction = this.interactive || this.showRemove;\n\n // Build dimensions label from element metadata\n let dimensionsLabel: string | null = null;\n if (this.showDimensions && el) {\n const tag = el.tagName.toLowerCase();\n const id = el.id ? `#${el.id}` : '';\n const cls =\n el.className && typeof el.className === 'string'\n ? `.${el.className.split(' ').filter(Boolean).slice(0, 2).join('.')}`\n : '';\n dimensionsLabel = `${tag}${id}${cls} \\u2014 ${Math.round(rect.width)}\\u00d7${Math.round(rect.height)}`;\n }\n\n const displayLabel = this.label || dimensionsLabel;\n\n // Label background: semi-transparent for dimensions mode, solid for regular\n const labelBg = this.showDimensions\n ? `${this.color.replace(')', ',0.85)').replace('rgb(', 'rgba(')}`\n : this.color;\n\n return html`\n <div\n data-syntro-highlight\n data-syntro-editor-ui=\"highlight\"\n role=${this.interactive ? 'button' : nothing}\n tabindex=${this.interactive ? '0' : nothing}\n @click=${this.interactive ? this._handleClick : nothing}\n @keydown=${this.interactive ? this._handleKeyDown : nothing}\n style=${styleMap({\n position: 'fixed',\n top: `${rect.top - this.padding}px`,\n left: `${rect.left - this.padding}px`,\n width: `${rect.width + this.padding * 2}px`,\n height: `${rect.height + this.padding * 2}px`,\n border: `${this.borderWidth}px ${this.borderStyle} ${this.color}`,\n backgroundColor: this.bgColor,\n borderRadius: '4px',\n zIndex: String(this.zIndex),\n pointerEvents: hasInteraction ? 'auto' : 'none',\n cursor: this.interactive ? 'pointer' : 'default',\n transition: 'all 0.05s ease-out',\n boxSizing: 'border-box',\n })}\n >\n ${\n displayLabel\n ? html`<div\n data-syntro-highlight-label\n data-syntro-editor-ui=\"highlight-label\"\n class=\"se-text-xs\"\n style=${styleMap({\n position: 'absolute',\n top: '-22px',\n left: '0',\n background: labelBg,\n color: '#fff',\n fontWeight: '600',\n fontFamily: this.showDimensions ? 'monospace' : 'inherit',\n padding: '1px 6px',\n borderRadius: '4px',\n whiteSpace: 'nowrap',\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n pointerEvents: 'auto',\n })}\n >\n <slot name=\"label-icon\"></slot>\n ${displayLabel}\n ${\n this.showRemove\n ? html`<button\n type=\"button\"\n class=\"se-text-xs\"\n data-syntro-highlight-remove\n data-syntro-editor-ui=\"highlight-remove\"\n @click=${this._handleRemove}\n style=${styleMap({\n background: 'rgba(0,0,0,0.4)',\n border: 'none',\n color: '#fff',\n borderRadius: '50%',\n width: '16px',\n height: '16px',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '0',\n lineHeight: '1',\n })}\n >\n \\u00d7\n </button>`\n : nothing\n }\n </div>`\n : nothing\n }\n </div>\n `;\n }\n}\n\nif (!customElements.get('se-element-highlight')) {\n customElements.define('se-element-highlight', ElementHighlightLit);\n}\n", "import { html, LitElement } from 'lit';\n\nexport class EmptyStateLit extends LitElement {\n static override properties = {\n message: { type: String },\n };\n\n message = '';\n\n override createRenderRoot() {\n return this;\n }\n\n override render() {\n return html`\n <div class=\"se-text-center se-py-8 se-px-4 se-text-text-secondary se-text-sm\">\n ${this.message}\n </div>\n `;\n }\n}\n\nif (!customElements.get('se-empty-state')) {\n customElements.define('se-empty-state', EmptyStateLit);\n}\n", "import { html, LitElement } from 'lit';\n\nexport class GroupHeaderLit extends LitElement {\n static override properties = {\n label: { type: String },\n count: { type: Number },\n headerClass: { type: String, attribute: 'header-class' },\n };\n\n label = '';\n count = 0;\n headerClass: string | undefined;\n\n override createRenderRoot() {\n return this;\n }\n\n override render() {\n const classes = [\n 'se-text-xs se-font-bold se-text-text-primary se-uppercase se-tracking-wide se-py-1 se-pb-2 se-flex se-items-center se-justify-between',\n this.headerClass || '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return html`\n <div class=${classes}>\n <span>${this.label}</span>\n <span class=\"se-text-xs se-text-text-secondary se-bg-badge-slate-bg se-px-1.5 se-py-0.5 se-rounded-lg\">\n ${this.count}\n </span>\n </div>\n `;\n }\n}\n\nif (!customElements.get('se-group-header')) {\n customElements.define('se-group-header', GroupHeaderLit);\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["escape", "tag", "element", "element", "import_jsx_runtime", "import_jsx_runtime", "import_react", "import_jsx_runtime", "import_jsx_runtime", "import_react", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_react", "import_jsx_runtime", "import_jsx_runtime", "import_react", "import_jsx_runtime", "import_react", "import_jsx_runtime", "import_react", "import_jsx_runtime", "import_react_dom", "import_react", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "HANDLE_SIZE", "import_react", "html", "LitElement", "nothing", "text", "html", "nothing", "DEFAULT_OPTIONS", "generateSelector", "validateSelector", "getElementDescription", "tag", "text", "overlay", "generateSelector", "validateSelector", "getElementDescription", "nothing", "html", "html", "LitElement", "html", "LitElement", "base", "html", "LitElement", "nothing", "styleMap", "MIN_WIDTH", "MIN_HEIGHT", "FAB_SIZE", "FAB_INSET", "SNAP_THRESHOLD", "DRAG_THRESHOLD", "HANDLE_SIZE", "RESIZE_HANDLES", "base", "html", "LitElement", "html", "LitElement", "nothing", "styleMap", "tag", "html", "LitElement", "html", "LitElement", "LitElement", "html", "nothing"]
7
7
  }