aeo.js 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/react.js +9 -2
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +9 -2
- package/dist/react.mjs.map +1 -1
- package/dist/vue.js +9 -2
- package/dist/vue.js.map +1 -1
- package/dist/vue.mjs +9 -2
- package/dist/vue.mjs.map +1 -1
- package/dist/widget.js +9 -2
- package/dist/widget.js.map +1 -1
- package/dist/widget.mjs +9 -2
- package/dist/widget.mjs.map +1 -1
- package/package.json +1 -1
package/dist/react.js
CHANGED
|
@@ -1189,8 +1189,15 @@ var AeoWidget = class {
|
|
|
1189
1189
|
const mdPath = this.getMarkdownPath();
|
|
1190
1190
|
const response = await fetch(mdPath);
|
|
1191
1191
|
let content;
|
|
1192
|
-
|
|
1193
|
-
|
|
1192
|
+
const contentType = response.headers.get("content-type") || "";
|
|
1193
|
+
if (response.ok && !contentType.includes("text/html")) {
|
|
1194
|
+
const text = await response.text();
|
|
1195
|
+
const trimmed = text.trimStart();
|
|
1196
|
+
if (trimmed.startsWith("<!") || trimmed.startsWith("<html") || trimmed.startsWith("<HTML")) {
|
|
1197
|
+
content = extractDOMToMarkdown();
|
|
1198
|
+
} else {
|
|
1199
|
+
content = text;
|
|
1200
|
+
}
|
|
1194
1201
|
} else {
|
|
1195
1202
|
content = extractDOMToMarkdown();
|
|
1196
1203
|
}
|
package/dist/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/widget/styles.ts","../src/widget/icons.ts","../src/widget/extract.ts","../src/widget/core.ts","../src/widget/react.tsx"],"names":["_a","useRef","useEffect","jsx"],"mappings":"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","file":"react.js","sourcesContent":["export interface ThemeConfig {\n background?: string;\n text?: string;\n accent?: string;\n badge?: string;\n}\n\nexport function getStyles(theme?: ThemeConfig): string {\n const t = {\n background: theme?.background || '#0a0a0f',\n text: theme?.text || '#a0a0a8',\n accent: theme?.accent || '#e8e8ea',\n badge: theme?.badge || '#4ADE80',\n };\n\n return `\n @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&display=swap');\n\n .aeo-toggle {\n position: fixed;\n z-index: 2147483647;\n font-family: 'JetBrains Mono', monospace;\n font-size: 14px;\n animation: aeo-fade-in 0.3s ease;\n }\n\n .aeo-toggle.aeo-bottom-right {\n bottom: 20px;\n right: 20px;\n }\n\n .aeo-toggle.aeo-bottom-left {\n bottom: 20px;\n left: 20px;\n }\n\n .aeo-toggle.aeo-top-right {\n top: 20px;\n right: 20px;\n }\n\n .aeo-toggle.aeo-top-left {\n top: 20px;\n left: 20px;\n }\n\n .aeo-toggle-inner {\n display: flex;\n background: ${t.background};\n backdrop-filter: blur(10px);\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 24px;\n padding: 4px;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);\n }\n\n .aeo-toggle-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n border: none;\n background: transparent;\n color: ${t.text};\n cursor: pointer;\n border-radius: 20px;\n transition: all 0.2s ease;\n font-family: inherit;\n font-size: 14px;\n font-weight: 500;\n }\n\n .aeo-toggle-btn svg {\n width: 16px;\n height: 16px;\n fill: currentColor;\n }\n\n .aeo-toggle-btn:hover {\n background: rgba(255, 255, 255, 0.05);\n }\n\n .aeo-toggle-btn.aeo-active {\n background: ${t.accent};\n color: ${t.background};\n }\n\n /* Full-screen overlay */\n .aeo-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n background: #000;\n z-index: 2147483646;\n display: flex;\n flex-direction: column;\n animation: aeo-fade-in 0.2s ease;\n font-family: 'JetBrains Mono', monospace;\n isolation: isolate;\n }\n\n /* Top bar */\n .aeo-topbar {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 24px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n background: rgba(255, 255, 255, 0.02);\n flex-shrink: 0;\n }\n\n .aeo-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: rgba(74, 222, 128, 0.1);\n color: ${t.badge};\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.8px;\n border: 1px solid rgba(74, 222, 128, 0.2);\n }\n\n .aeo-badge-dot {\n width: 6px;\n height: 6px;\n background: ${t.badge};\n border-radius: 50%;\n flex-shrink: 0;\n }\n\n .aeo-route-tab {\n display: inline-flex;\n align-items: center;\n padding: 6px 14px;\n background: rgba(255, 255, 255, 0.05);\n color: ${t.accent};\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n border: 1px solid rgba(255, 255, 255, 0.08);\n }\n\n .aeo-topbar-spacer {\n flex: 1;\n }\n\n .aeo-topbar-actions {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .aeo-topbar-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background: transparent;\n color: ${t.text};\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n font-family: inherit;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n }\n\n .aeo-topbar-btn:hover:not(:disabled) {\n background: rgba(255, 255, 255, 0.05);\n color: ${t.accent};\n border-color: rgba(255, 255, 255, 0.2);\n }\n\n .aeo-topbar-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .aeo-topbar-btn svg {\n width: 14px;\n height: 14px;\n fill: currentColor;\n }\n\n .aeo-close-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background: transparent;\n color: ${t.text};\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n font-family: inherit;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n }\n\n .aeo-close-btn:hover {\n background: rgba(255, 60, 60, 0.1);\n color: #ff6b6b;\n border-color: rgba(255, 60, 60, 0.3);\n }\n\n .aeo-close-btn svg {\n width: 14px;\n height: 14px;\n fill: none;\n stroke: currentColor;\n }\n\n /* View tabs */\n .aeo-view-tabs {\n display: flex;\n gap: 2px;\n background: rgba(255, 255, 255, 0.05);\n border-radius: 8px;\n padding: 2px;\n border: 1px solid rgba(255, 255, 255, 0.08);\n }\n\n .aeo-view-tab {\n padding: 5px 12px;\n background: transparent;\n color: ${t.text};\n border: none;\n border-radius: 6px;\n font-family: inherit;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .aeo-view-tab:hover {\n background: rgba(255, 255, 255, 0.05);\n }\n\n .aeo-view-tab.aeo-view-active {\n background: rgba(255, 255, 255, 0.1);\n color: ${t.accent};\n }\n\n /* Metadata bar */\n .aeo-meta-bar {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n margin-bottom: 24px;\n background: rgba(255, 255, 255, 0.03);\n border: 1px solid rgba(255, 255, 255, 0.06);\n border-radius: 8px;\n font-size: 12px;\n color: ${t.text};\n }\n\n .aeo-meta-label {\n color: rgba(160, 160, 168, 0.5);\n margin-right: 4px;\n }\n\n .aeo-meta-sep {\n width: 1px;\n height: 14px;\n background: rgba(255, 255, 255, 0.1);\n }\n\n /* Rendered markdown view */\n .aeo-rendered {\n color: ${t.text};\n line-height: 1.75;\n font-size: 14px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n .aeo-rendered .aeo-r-h1 {\n font-size: 28px;\n font-weight: 700;\n color: ${t.accent};\n margin: 0 0 16px;\n padding-bottom: 12px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n line-height: 1.3;\n }\n\n .aeo-rendered .aeo-r-h2 {\n font-size: 22px;\n font-weight: 600;\n color: ${t.accent};\n margin: 32px 0 12px;\n line-height: 1.3;\n }\n\n .aeo-rendered .aeo-r-h3 {\n font-size: 18px;\n font-weight: 600;\n color: ${t.accent};\n margin: 24px 0 8px;\n line-height: 1.4;\n }\n\n .aeo-rendered .aeo-r-h4,\n .aeo-rendered .aeo-r-h5,\n .aeo-rendered .aeo-r-h6 {\n font-size: 15px;\n font-weight: 600;\n color: ${t.accent};\n margin: 20px 0 8px;\n }\n\n .aeo-rendered .aeo-r-p {\n margin: 0 0 12px;\n }\n\n .aeo-rendered .aeo-r-list {\n margin: 0 0 16px;\n padding-left: 24px;\n }\n\n .aeo-rendered .aeo-r-list li {\n margin: 4px 0;\n }\n\n .aeo-rendered .aeo-r-quote {\n margin: 16px 0;\n padding: 12px 20px;\n border-left: 3px solid ${t.badge};\n background: rgba(255, 255, 255, 0.02);\n color: ${t.text};\n font-style: italic;\n }\n\n .aeo-rendered .aeo-r-hr {\n border: none;\n border-top: 1px solid rgba(255, 255, 255, 0.08);\n margin: 24px 0;\n }\n\n .aeo-rendered .aeo-r-code {\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: 8px;\n padding: 16px;\n margin: 16px 0;\n font-family: 'JetBrains Mono', monospace;\n font-size: 13px;\n overflow-x: auto;\n color: ${t.badge};\n }\n\n .aeo-rendered .aeo-r-inline-code {\n background: rgba(255, 255, 255, 0.06);\n padding: 2px 6px;\n border-radius: 4px;\n font-family: 'JetBrains Mono', monospace;\n font-size: 0.9em;\n color: ${t.badge};\n }\n\n .aeo-rendered .aeo-r-link {\n color: #fff;\n text-decoration: none;\n border-bottom: 1px solid rgba(255, 255, 255, 0.3);\n transition: border-color 0.15s ease;\n }\n\n .aeo-rendered .aeo-r-link:hover {\n border-color: #fff;\n }\n\n .aeo-rendered strong {\n color: ${t.accent};\n font-weight: 600;\n }\n\n .aeo-rendered em {\n font-style: italic;\n opacity: 0.9;\n }\n\n /* Content area */\n .aeo-content-area {\n flex: 1;\n overflow-y: auto;\n padding: 40px 24px;\n }\n\n .aeo-content-wrapper {\n max-width: 800px;\n margin: 0 auto;\n }\n\n .aeo-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 16px;\n padding: 80px 24px;\n color: ${t.text};\n }\n\n .aeo-loading svg {\n width: 24px;\n height: 24px;\n fill: ${t.text};\n animation: aeo-spin 1s linear infinite;\n }\n\n .aeo-loading span {\n font-size: 13px;\n opacity: 0.6;\n }\n\n /* Markdown source display */\n .aeo-markdown-source {\n font-family: 'JetBrains Mono', monospace;\n font-size: 13px;\n line-height: 1.7;\n color: ${t.text};\n background: transparent;\n margin: 0;\n padding: 0;\n border: none;\n white-space: pre-wrap;\n word-wrap: break-word;\n overflow-x: auto;\n }\n\n .aeo-markdown-source code {\n font-family: inherit;\n background: transparent;\n }\n\n .aeo-markdown-source .hl-fm {\n color: rgba(160, 160, 168, 0.5);\n }\n\n .aeo-markdown-source .hl-heading {\n color: ${t.accent};\n font-weight: 600;\n }\n\n .aeo-markdown-source .hl-bold {\n color: ${t.accent};\n font-weight: 600;\n }\n\n .aeo-markdown-source .hl-italic {\n font-style: italic;\n color: ${t.accent};\n opacity: 0.85;\n }\n\n .aeo-markdown-source .hl-code {\n color: ${t.badge};\n }\n\n .aeo-markdown-source .hl-link {\n color: rgba(160, 160, 168, 0.6);\n }\n\n .aeo-markdown-source .hl-link-text {\n color: #fff;\n }\n\n .aeo-markdown-source .hl-link-url {\n color: rgba(160, 160, 168, 0.4);\n }\n\n .aeo-markdown-source .hl-quote {\n color: ${t.text};\n opacity: 0.7;\n font-style: italic;\n }\n\n .aeo-markdown-source .hl-hr {\n color: rgba(160, 160, 168, 0.3);\n }\n\n .aeo-error {\n text-align: center;\n padding: 80px 24px;\n color: ${t.text};\n }\n\n .aeo-error p {\n margin: 0 0 16px;\n font-size: 14px;\n }\n\n .aeo-attribution {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n color: rgba(160, 160, 168, 0.5);\n font-size: 11px;\n text-decoration: none;\n transition: color 0.15s ease;\n }\n\n .aeo-attribution:hover {\n color: ${t.accent};\n }\n\n .aeo-error a {\n color: #fff;\n text-decoration: none;\n padding: 8px 16px;\n border: 1px solid rgba(255, 255, 255, 0.15);\n border-radius: 8px;\n display: inline-block;\n margin: 4px;\n font-size: 13px;\n transition: all 0.15s ease;\n }\n\n .aeo-error a:hover {\n background: rgba(255, 255, 255, 0.05);\n border-color: rgba(255, 255, 255, 0.25);\n }\n\n .aeo-toast {\n position: fixed;\n bottom: 100px;\n left: 50%;\n transform: translateX(-50%) translateY(20px);\n background: ${t.background};\n color: ${t.accent};\n padding: 10px 20px;\n border-radius: 8px;\n border: 1px solid rgba(255, 255, 255, 0.15);\n font-family: 'JetBrains Mono', monospace;\n font-size: 13px;\n opacity: 0;\n transition: all 0.3s ease;\n z-index: 2147483647;\n }\n\n .aeo-toast.aeo-toast-show {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n\n @keyframes aeo-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n @keyframes aeo-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n\n @media (max-width: 640px) {\n .aeo-toggle {\n bottom: 12px !important;\n right: 12px !important;\n left: auto !important;\n top: auto !important;\n }\n\n .aeo-toggle-btn {\n padding: 6px 12px;\n font-size: 13px;\n }\n\n .aeo-toggle-btn span {\n display: none;\n }\n\n .aeo-topbar {\n padding: 10px 16px;\n gap: 8px;\n flex-wrap: wrap;\n }\n\n .aeo-topbar-btn span {\n display: none;\n }\n\n .aeo-close-btn span {\n display: none;\n }\n\n .aeo-view-tabs {\n order: 10;\n width: 100%;\n justify-content: center;\n }\n\n .aeo-meta-bar {\n font-size: 11px;\n gap: 8px;\n }\n\n .aeo-content-area {\n padding: 24px 16px;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .aeo-toggle,\n .aeo-overlay,\n .aeo-toast {\n animation: none;\n transition: none;\n }\n }\n `.trim();\n}\n","export interface Icons {\n human: string;\n ai: string;\n close: string;\n copy: string;\n download: string;\n spinner: string;\n}\n\nexport function getIcons(): Icons {\n return {\n human: `<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 2C10.9 2 10 2.9 10 4C10 5.1 10.9 6 12 6C13.1 6 14 5.1 14 4C14 2.9 13.1 2 12 2ZM10 7C10 7 8 7 8 9V13C8 13 8 14 9 14H10V21C10 21 10 22 11 22H13C13 22 14 22 14 21V14H15C15 14 16 14 16 13V9C16 7 14 7 14 7H10Z\" fill=\"currentColor\"/>\n </svg>`,\n\n ai: `<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11 2a1 1 0 0 1 2 0v2h3a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H8a3 3 0 0 1-3-3V7a3 3 0 0 1 3-3h3V2ZM9.5 7a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Zm5 0a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Z\"/>\n <rect x=\"6\" y=\"17\" width=\"12\" height=\"5\" rx=\"2\"/>\n <rect x=\"1\" y=\"8\" width=\"3\" height=\"4\" rx=\"1.5\"/>\n <rect x=\"20\" y=\"8\" width=\"3\" height=\"4\" rx=\"1.5\"/>\n </svg>`,\n\n close: `<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M18 6L6 18M6 6L18 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>`,\n\n copy: `<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z\" fill=\"currentColor\"/>\n </svg>`,\n\n download: `<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 20H19V18H5V20ZM19 9H15V3H9V9H5L12 16L19 9Z\" fill=\"currentColor\"/>\n </svg>`,\n\n spinner: `<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 2V6M12 18V22M4.93 4.93L7.76 7.76M16.24 16.24L19.07 19.07M2 12H6M18 12H22M4.93 19.07L7.76 16.24M16.24 7.76L19.07 4.93\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>`,\n };\n}\n","export function extractDOMToMarkdown(): string {\n const lines: string[] = [];\n const processed = new WeakSet();\n\n // Add page title\n const title = document.title;\n if (title) {\n lines.push(`# ${title}`, '');\n }\n\n // Add meta description\n const description = document.querySelector('meta[name=\"description\"]') as HTMLMetaElement;\n if (description?.content) {\n lines.push(`> ${description.content}`, '');\n }\n\n // Find main content area\n const mainContent = findMainContent();\n if (mainContent) {\n processNode(mainContent, lines, processed);\n } else {\n // Fallback to body\n processNode(document.body, lines, processed);\n }\n\n return lines.join('\\n').trim();\n}\n\nfunction findMainContent(): Element | null {\n const selectors = [\n 'main',\n '[role=\"main\"]',\n 'article',\n '.content',\n '.main-content',\n '#content',\n '#main-content',\n '.container',\n '.wrapper',\n ];\n\n for (const selector of selectors) {\n const element = document.querySelector(selector);\n if (element) return element;\n }\n\n return null;\n}\n\nfunction processNode(node: Node, lines: string[], processed: WeakSet<object>): void {\n if (processed.has(node)) return;\n processed.add(node);\n\n // Skip certain elements\n if (node instanceof HTMLElement) {\n const tagName = node.tagName.toLowerCase();\n const skipTags = ['script', 'style', 'noscript', 'iframe', 'svg', 'canvas', 'video', 'audio'];\n if (skipTags.includes(tagName)) return;\n\n // Skip hidden elements\n const style = window.getComputedStyle(node);\n if (style.display === 'none' || style.visibility === 'hidden') return;\n\n // Skip navigation and footer elements (unless they contain important content)\n if (tagName === 'nav' || tagName === 'footer' || node.classList.contains('nav') || node.classList.contains('footer')) {\n if (!hasImportantContent(node)) return;\n }\n\n // Skip the aeo widget itself\n if (node.classList.contains('aeo-toggle') || node.classList.contains('aeo-overlay')) return;\n }\n\n if (node instanceof HTMLElement) {\n const tagName = node.tagName.toLowerCase();\n\n switch (tagName) {\n case 'h1':\n lines.push('', `# ${getTextContent(node)}`, '');\n break;\n case 'h2':\n lines.push('', `## ${getTextContent(node)}`, '');\n break;\n case 'h3':\n lines.push('', `### ${getTextContent(node)}`, '');\n break;\n case 'h4':\n lines.push('', `#### ${getTextContent(node)}`, '');\n break;\n case 'h5':\n lines.push('', `##### ${getTextContent(node)}`, '');\n break;\n case 'h6':\n lines.push('', `###### ${getTextContent(node)}`, '');\n break;\n case 'p':\n const text = getTextContent(node);\n if (text) lines.push('', text, '');\n break;\n case 'blockquote':\n const quoteText = getTextContent(node);\n if (quoteText) {\n lines.push('', ...quoteText.split('\\n').map(line => `> ${line}`), '');\n }\n break;\n case 'pre':\n const codeElement = node.querySelector('code');\n if (codeElement) {\n const lang = extractLanguage(codeElement);\n lines.push('', `\\`\\`\\`${lang}`, getTextContent(codeElement), '\\`\\`\\`', '');\n } else {\n lines.push('', '\\`\\`\\`', getTextContent(node), '\\`\\`\\`', '');\n }\n break;\n case 'code':\n if (node.parentElement?.tagName.toLowerCase() !== 'pre') {\n const codeText = getTextContent(node);\n if (codeText && !lines[lines.length - 1]?.includes(codeText)) {\n lines[lines.length - 1] = (lines[lines.length - 1] || '') + ` \\`${codeText}\\` `;\n }\n }\n break;\n case 'ul':\n case 'ol':\n processListItems(node as HTMLUListElement | HTMLOListElement, lines, processed, tagName === 'ol');\n lines.push('');\n break;\n case 'a':\n const href = (node as HTMLAnchorElement).href;\n const linkText = getTextContent(node);\n if (linkText && href && !href.startsWith('javascript:')) {\n const markdown = `[${linkText}](${href})`;\n if (!lines[lines.length - 1]?.includes(markdown)) {\n lines[lines.length - 1] = (lines[lines.length - 1] || '') + ' ' + markdown + ' ';\n }\n } else {\n processChildren(node, lines, processed);\n }\n break;\n case 'img':\n const img = node as HTMLImageElement;\n if (img.src && img.alt) {\n lines.push('', ``, '');\n }\n break;\n case 'table':\n processTable(node as HTMLTableElement, lines);\n lines.push('');\n break;\n case 'strong':\n case 'b':\n const boldText = getTextContent(node);\n if (boldText) {\n lines[lines.length - 1] = (lines[lines.length - 1] || '') + ` **${boldText}** `;\n }\n break;\n case 'em':\n case 'i':\n const italicText = getTextContent(node);\n if (italicText) {\n lines[lines.length - 1] = (lines[lines.length - 1] || '') + ` *${italicText}* `;\n }\n break;\n case 'hr':\n lines.push('', '---', '');\n break;\n default:\n processChildren(node, lines, processed);\n }\n } else if (node.nodeType === Node.TEXT_NODE) {\n const text = node.textContent?.trim();\n if (text && !isWhitespaceOnly(text)) {\n if (lines.length === 0 || lines[lines.length - 1] === '') {\n lines.push(text);\n } else {\n lines[lines.length - 1] += ' ' + text;\n }\n }\n } else {\n processChildren(node, lines, processed);\n }\n}\n\nfunction processChildren(node: Node, lines: string[], processed: WeakSet<object>): void {\n for (const child of Array.from(node.childNodes)) {\n processNode(child, lines, processed);\n }\n}\n\nfunction processListItems(list: HTMLUListElement | HTMLOListElement, lines: string[], processed: WeakSet<object>, isOrdered: boolean): void {\n const items = Array.from(list.querySelectorAll(':scope > li'));\n items.forEach((item, index) => {\n const prefix = isOrdered ? `${index + 1}. ` : '- ';\n const text = getTextContent(item);\n if (text) {\n lines.push(prefix + text);\n }\n processed.add(item);\n });\n}\n\nfunction processTable(table: HTMLTableElement, lines: string[]): void {\n const rows = Array.from(table.querySelectorAll('tr'));\n if (rows.length === 0) return;\n\n const headers = Array.from(rows[0].querySelectorAll('th, td')).map(cell => getTextContent(cell));\n if (headers.length > 0) {\n lines.push('', '| ' + headers.join(' | ') + ' |');\n lines.push('|' + headers.map(() => ' --- ').join('|') + '|');\n\n for (let i = 1; i < rows.length; i++) {\n const cells = Array.from(rows[i].querySelectorAll('td')).map(cell => getTextContent(cell));\n if (cells.length > 0) {\n lines.push('| ' + cells.join(' | ') + ' |');\n }\n }\n }\n}\n\nfunction getTextContent(node: Node): string {\n // Use innerText for elements — it inserts spaces at element boundaries\n // (e.g. <span>with</span><span>modern</span> → \"with modern\" not \"withmodern\")\n if (node instanceof HTMLElement) {\n return node.innerText?.trim().replace(/\\s+/g, ' ') || '';\n }\n return node.textContent?.trim().replace(/\\s+/g, ' ') || '';\n}\n\nfunction isWhitespaceOnly(text: string): boolean {\n return /^\\s*$/.test(text);\n}\n\nfunction hasImportantContent(node: HTMLElement): boolean {\n const importantKeywords = ['documentation', 'docs', 'api', 'guide', 'tutorial', 'reference'];\n const text = node.textContent?.toLowerCase() || '';\n return importantKeywords.some(keyword => text.includes(keyword));\n}\n\nfunction extractLanguage(codeElement: Element): string {\n const classes = Array.from(codeElement.classList);\n for (const cls of classes) {\n if (cls.startsWith('language-')) {\n return cls.replace('language-', '');\n }\n if (cls.startsWith('lang-')) {\n return cls.replace('lang-', '');\n }\n }\n\n const pre = codeElement.closest('pre');\n if (pre) {\n const preClasses = Array.from(pre.classList);\n for (const cls of preClasses) {\n if (cls.startsWith('language-')) {\n return cls.replace('language-', '');\n }\n if (cls.startsWith('lang-')) {\n return cls.replace('lang-', '');\n }\n }\n }\n\n return '';\n}\n","import type { AeoConfig } from '../types';\nimport { getStyles } from './styles';\nimport { getIcons } from './icons';\nimport { extractDOMToMarkdown } from './extract';\n\nexport interface AeoWidgetOptions {\n config?: Partial<AeoConfig>;\n container?: HTMLElement;\n}\n\nexport class AeoWidget {\n private config: AeoConfig;\n private container: HTMLElement;\n private isAIMode: boolean = false;\n private toggleElement?: HTMLElement;\n private overlayElement?: HTMLElement;\n private styleElement?: HTMLStyleElement;\n\n constructor(options: AeoWidgetOptions = {}) {\n this.config = this.resolveConfig(options.config);\n this.container = options.container || document.body;\n\n if (this.config.widget?.enabled !== false) {\n this.init();\n }\n }\n\n private resolveConfig(config?: Partial<AeoConfig>): AeoConfig {\n const defaultConfig: AeoConfig = {\n title: document.title || 'Website',\n description: '',\n url: window.location.origin,\n contentDir: 'docs',\n outDir: 'dist',\n generators: {\n robotsTxt: true,\n llmsTxt: true,\n llmsFullTxt: true,\n rawMarkdown: true,\n manifest: true,\n sitemap: true,\n aiIndex: true,\n },\n widget: {\n enabled: true,\n position: 'bottom-right',\n theme: {\n background: '#0a0a0f',\n text: '#a0a0a8',\n accent: '#e8e8ea',\n badge: '#4ADE80',\n },\n humanLabel: 'Human',\n aiLabel: 'AI',\n showBadge: true,\n },\n };\n\n return { ...defaultConfig, ...config };\n }\n\n private init(): void {\n this.injectStyles();\n this.createToggle();\n this.bindEvents();\n }\n\n private injectStyles(): void {\n if (this.styleElement) return;\n\n this.styleElement = document.createElement('style');\n this.styleElement.textContent = getStyles(this.config.widget?.theme);\n document.head.appendChild(this.styleElement);\n }\n\n private createToggle(): void {\n const position = this.config.widget?.position || 'bottom-right';\n const icons = getIcons();\n\n this.toggleElement = document.createElement('div');\n this.toggleElement.className = `aeo-toggle aeo-${position}`;\n this.toggleElement.innerHTML = `\n <div class=\"aeo-toggle-inner\">\n <button class=\"aeo-toggle-btn aeo-human-btn aeo-active\" data-mode=\"human\">\n ${icons.human}\n <span>${this.config.widget?.humanLabel || 'Human'}</span>\n </button>\n <button class=\"aeo-toggle-btn aeo-ai-btn\" data-mode=\"ai\">\n ${icons.ai}\n <span>${this.config.widget?.aiLabel || 'AI'}</span>\n </button>\n </div>\n `;\n\n this.container.appendChild(this.toggleElement);\n }\n\n private bindEvents(): void {\n if (!this.toggleElement) return;\n\n this.toggleElement.addEventListener('click', (e) => {\n const target = e.target as HTMLElement;\n const btn = target.closest('.aeo-toggle-btn') as HTMLElement;\n if (!btn) return;\n\n const mode = btn.dataset.mode;\n if (mode === 'ai' && !this.isAIMode) {\n this.switchToAI();\n } else if (mode === 'human' && this.isAIMode) {\n this.switchToHuman();\n }\n });\n\n document.addEventListener('keydown', (e) => {\n if (e.key === 'Escape' && this.overlayElement) {\n this.closeOverlay();\n }\n });\n }\n\n private async switchToAI(): Promise<void> {\n this.isAIMode = true;\n this.updateToggleState();\n await this.showOverlay();\n }\n\n private switchToHuman(): void {\n this.isAIMode = false;\n this.updateToggleState();\n this.closeOverlay();\n }\n\n private updateToggleState(): void {\n if (!this.toggleElement) return;\n\n const humanBtn = this.toggleElement.querySelector('.aeo-human-btn');\n const aiBtn = this.toggleElement.querySelector('.aeo-ai-btn');\n\n if (this.isAIMode) {\n humanBtn?.classList.remove('aeo-active');\n aiBtn?.classList.add('aeo-active');\n } else {\n humanBtn?.classList.add('aeo-active');\n aiBtn?.classList.remove('aeo-active');\n }\n }\n\n private getMarkdownPath(): string {\n const currentPath = window.location.pathname;\n if (currentPath === '/' || currentPath.endsWith('/')) {\n return `${currentPath}index.md`;\n }\n return `${currentPath}.md`;\n }\n\n private async showOverlay(): Promise<void> {\n const icons = getIcons();\n const mdPath = this.getMarkdownPath();\n\n this.overlayElement = document.createElement('div');\n this.overlayElement.className = 'aeo-overlay';\n this.overlayElement.innerHTML = `\n <div class=\"aeo-topbar\">\n ${this.config.widget?.showBadge !== false ? '<span class=\"aeo-badge\"><span class=\"aeo-badge-dot\"></span>LLM-READY</span>' : ''}\n <span class=\"aeo-route-tab\">${mdPath}</span>\n <div class=\"aeo-view-tabs\">\n <button class=\"aeo-view-tab aeo-view-active\" data-view=\"rendered\">Rendered</button>\n <button class=\"aeo-view-tab\" data-view=\"source\">Source</button>\n </div>\n <div class=\"aeo-topbar-spacer\"></div>\n <a class=\"aeo-attribution\" href=\"https://aeojs.org\" target=\"_blank\" rel=\"noopener\">by aeo.js</a>\n <div class=\"aeo-topbar-actions\">\n <button class=\"aeo-topbar-btn aeo-copy-btn\" disabled>\n ${icons.copy}\n <span>Copy</span>\n </button>\n <button class=\"aeo-topbar-btn aeo-download-btn\" disabled>\n ${icons.download}\n <span>Download .md</span>\n </button>\n <button class=\"aeo-close-btn\">\n ${icons.close}\n <span>Close</span>\n </button>\n </div>\n </div>\n <div class=\"aeo-content-area\">\n <div class=\"aeo-content-wrapper\">\n <div class=\"aeo-loading\">\n ${icons.spinner}\n <span>Loading AI-optimized content...</span>\n </div>\n </div>\n </div>\n `;\n\n this.container.appendChild(this.overlayElement);\n\n const closeBtn = this.overlayElement.querySelector('.aeo-close-btn');\n closeBtn?.addEventListener('click', () => this.closeOverlay());\n\n // View tab switching\n const viewTabs = this.overlayElement.querySelectorAll('.aeo-view-tab');\n viewTabs.forEach(tab => {\n tab.addEventListener('click', () => {\n viewTabs.forEach(t => t.classList.remove('aeo-view-active'));\n tab.classList.add('aeo-view-active');\n const view = (tab as HTMLElement).dataset.view;\n const rendered = this.overlayElement?.querySelector('.aeo-rendered') as HTMLElement;\n const source = this.overlayElement?.querySelector('.aeo-markdown-source') as HTMLElement;\n if (rendered && source) {\n rendered.style.display = view === 'rendered' ? 'block' : 'none';\n source.style.display = view === 'source' ? 'block' : 'none';\n }\n });\n });\n\n await this.loadContent();\n }\n\n /**\n * Strip YAML frontmatter from markdown content.\n */\n private stripFrontmatter(md: string): { frontmatter: Record<string, string>; body: string } {\n const frontmatter: Record<string, string> = {};\n let body = md;\n\n if (md.startsWith('---')) {\n const endIndex = md.indexOf('---', 3);\n if (endIndex !== -1) {\n const fmBlock = md.slice(3, endIndex).trim();\n body = md.slice(endIndex + 3).trim();\n for (const line of fmBlock.split('\\n')) {\n const colonIdx = line.indexOf(':');\n if (colonIdx > 0) {\n const key = line.slice(0, colonIdx).trim();\n const val = line.slice(colonIdx + 1).trim().replace(/^[\"']|[\"']$/g, '');\n frontmatter[key] = val;\n }\n }\n }\n }\n\n return { frontmatter, body };\n }\n\n /**\n * Convert markdown to simple rendered HTML for the \"Rendered\" view.\n */\n private renderMarkdown(md: string): string {\n const esc = (s: string) => s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n\n const lines = md.split('\\n');\n const html: string[] = [];\n let inList = false;\n let inCode = false;\n let codeContent: string[] = [];\n\n for (const line of lines) {\n const trimmed = line.trim();\n\n // Code blocks\n if (trimmed.startsWith('```')) {\n if (inCode) {\n html.push(`<pre class=\"aeo-r-code\"><code>${esc(codeContent.join('\\n'))}</code></pre>`);\n codeContent = [];\n inCode = false;\n } else {\n if (inList) { html.push('</ul>'); inList = false; }\n inCode = true;\n }\n continue;\n }\n if (inCode) { codeContent.push(line); continue; }\n\n // Empty line\n if (!trimmed) {\n if (inList) { html.push('</ul>'); inList = false; }\n continue;\n }\n\n // Headings\n const headingMatch = trimmed.match(/^(#{1,6})\\s+(.*)/);\n if (headingMatch) {\n if (inList) { html.push('</ul>'); inList = false; }\n const level = headingMatch[1].length;\n html.push(`<h${level} class=\"aeo-r-h${level}\">${this.renderInlineMarkdown(esc(headingMatch[2]))}</h${level}>`);\n continue;\n }\n\n // Horizontal rule\n if (/^(-{3,}|\\*{3,}|_{3,})$/.test(trimmed)) {\n if (inList) { html.push('</ul>'); inList = false; }\n html.push('<hr class=\"aeo-r-hr\">');\n continue;\n }\n\n // Blockquote\n if (trimmed.startsWith('>')) {\n if (inList) { html.push('</ul>'); inList = false; }\n html.push(`<blockquote class=\"aeo-r-quote\">${this.renderInlineMarkdown(esc(trimmed.slice(1).trim()))}</blockquote>`);\n continue;\n }\n\n // List items\n const listMatch = trimmed.match(/^[-*+]\\s+(.*)/);\n if (listMatch) {\n if (!inList) { html.push('<ul class=\"aeo-r-list\">'); inList = true; }\n html.push(`<li>${this.renderInlineMarkdown(esc(listMatch[1]))}</li>`);\n continue;\n }\n\n // Regular paragraph\n if (inList) { html.push('</ul>'); inList = false; }\n html.push(`<p class=\"aeo-r-p\">${this.renderInlineMarkdown(esc(trimmed))}</p>`);\n }\n\n if (inList) html.push('</ul>');\n if (inCode) html.push(`<pre class=\"aeo-r-code\"><code>${esc(codeContent.join('\\n'))}</code></pre>`);\n\n return html.join('\\n');\n }\n\n private renderInlineMarkdown(text: string): string {\n // Bold\n let out = text.replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>');\n // Italic\n out = out.replace(/(?<!\\*)\\*(?!\\*)(.+?)(?<!\\*)\\*(?!\\*)/g, '<em>$1</em>');\n // Inline code\n out = out.replace(/`([^`]+)`/g, '<code class=\"aeo-r-inline-code\">$1</code>');\n // Links\n out = out.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<a class=\"aeo-r-link\" href=\"$2\" target=\"_blank\" rel=\"noopener\">$1</a>');\n return out;\n }\n\n private async loadContent(): Promise<void> {\n if (!this.overlayElement) return;\n\n const wrapper = this.overlayElement.querySelector('.aeo-content-wrapper');\n if (!wrapper) return;\n\n try {\n const mdPath = this.getMarkdownPath();\n const response = await fetch(mdPath);\n let content: string;\n\n if (response.ok) {\n content = await response.text();\n } else {\n content = extractDOMToMarkdown();\n }\n\n const { frontmatter, body } = this.stripFrontmatter(content);\n\n // Build frontmatter metadata bar\n const metaItems: string[] = [];\n if (frontmatter.title) metaItems.push(`<span class=\"aeo-meta-label\">Title:</span> ${this.escHtml(frontmatter.title)}`);\n if (frontmatter.url) metaItems.push(`<span class=\"aeo-meta-label\">URL:</span> <a class=\"aeo-r-link\" href=\"${this.escHtml(frontmatter.url)}\" target=\"_blank\" rel=\"noopener\">${this.escHtml(frontmatter.url)}</a>`);\n const metaBar = metaItems.length > 0\n ? `<div class=\"aeo-meta-bar\">${metaItems.join('<span class=\"aeo-meta-sep\"></span>')}</div>`\n : '';\n\n wrapper.innerHTML = `\n ${metaBar}\n <div class=\"aeo-rendered\">${this.renderMarkdown(body)}</div>\n <pre class=\"aeo-markdown-source\" style=\"display:none\"><code>${this.highlightMarkdown(content)}</code></pre>\n `;\n\n const copyBtn = this.overlayElement.querySelector('.aeo-copy-btn') as HTMLButtonElement;\n const downloadBtn = this.overlayElement.querySelector('.aeo-download-btn') as HTMLButtonElement;\n\n if (copyBtn) {\n copyBtn.disabled = false;\n copyBtn.addEventListener('click', () => this.copyToClipboard(content));\n }\n\n if (downloadBtn) {\n downloadBtn.disabled = false;\n downloadBtn.addEventListener('click', () => this.downloadMarkdown(content));\n }\n\n } catch {\n wrapper.innerHTML = `\n <div class=\"aeo-error\">\n <p>Unable to load AI-optimized content.</p>\n <p>Try these alternatives:</p>\n <div>\n <a href=\"/llms.txt\" target=\"_blank\">llms.txt</a>\n <a href=\"/llms-full.txt\" target=\"_blank\">llms-full.txt</a>\n </div>\n </div>\n `;\n }\n }\n\n private escHtml(s: string): string {\n return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"');\n }\n\n private highlightMarkdown(md: string): string {\n const esc = (s: string) => s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n\n const lines = md.split('\\n');\n const out: string[] = [];\n let inFrontmatter = false;\n let inCode = false;\n let frontmatterStart = lines[0]?.trim() === '---';\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const trimmed = line.trim();\n\n // Frontmatter handling\n if (i === 0 && frontmatterStart) {\n inFrontmatter = true;\n out.push(`<span class=\"hl-fm\">${esc(line)}</span>`);\n continue;\n }\n if (inFrontmatter) {\n if (trimmed === '---') {\n inFrontmatter = false;\n out.push(`<span class=\"hl-fm\">${esc(line)}</span>`);\n } else {\n out.push(`<span class=\"hl-fm\">${esc(line)}</span>`);\n }\n continue;\n }\n\n // Code block\n if (trimmed.startsWith('```')) {\n inCode = !inCode;\n out.push(`<span class=\"hl-code\">${esc(line)}</span>`);\n continue;\n }\n if (inCode) {\n out.push(`<span class=\"hl-code\">${esc(line)}</span>`);\n continue;\n }\n\n // Headings\n if (/^#{1,6}\\s/.test(trimmed)) {\n out.push(`<span class=\"hl-heading\">${esc(line)}</span>`);\n continue;\n }\n\n // Horizontal rule\n if (/^(-{3,}|\\*{3,}|_{3,})$/.test(trimmed)) {\n out.push(`<span class=\"hl-hr\">${esc(line)}</span>`);\n continue;\n }\n\n // Blockquote\n if (trimmed.startsWith('>')) {\n out.push(`<span class=\"hl-quote\">${esc(line)}</span>`);\n continue;\n }\n\n // List items\n if (/^[-*+]\\s/.test(trimmed) || /^\\d+\\.\\s/.test(trimmed)) {\n out.push(this.highlightInline(esc(line)));\n continue;\n }\n\n // Regular text with inline highlights\n out.push(this.highlightInline(esc(line)));\n }\n\n return out.join('\\n');\n }\n\n private highlightInline(escaped: string): string {\n // Bold **text**\n let text = escaped.replace(/\\*\\*(.+?)\\*\\*/g, '<span class=\"hl-bold\">**$1**</span>');\n // Italic *text*\n text = text.replace(/(?<!\\*)\\*(?!\\*)(.+?)(?<!\\*)\\*(?!\\*)/g, '<span class=\"hl-italic\">*$1*</span>');\n // Inline code `text`\n text = text.replace(/`([^`]+)`/g, '<span class=\"hl-code\">`$1`</span>');\n // Links [text](url)\n text = text.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<span class=\"hl-link\">[<span class=\"hl-link-text\">$1</span>](<span class=\"hl-link-url\">$2</span>)</span>');\n return text;\n }\n\n private closeOverlay(): void {\n if (this.overlayElement) {\n this.overlayElement.remove();\n this.overlayElement = undefined;\n }\n this.switchToHuman();\n }\n\n private async copyToClipboard(text: string): Promise<void> {\n try {\n await navigator.clipboard.writeText(text);\n this.showToast('Copied to clipboard!');\n } catch {\n this.showToast('Failed to copy');\n }\n }\n\n private downloadMarkdown(content: string): void {\n const blob = new Blob([content], { type: 'text/markdown' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `${this.sanitizeFilename(document.title)}.md`;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n }\n\n private sanitizeFilename(name: string): string {\n return name.replace(/[^a-z0-9]/gi, '-').toLowerCase();\n }\n\n private showToast(message: string): void {\n const toast = document.createElement('div');\n toast.className = 'aeo-toast';\n toast.textContent = message;\n this.container.appendChild(toast);\n\n setTimeout(() => {\n toast.classList.add('aeo-toast-show');\n }, 10);\n\n setTimeout(() => {\n toast.classList.remove('aeo-toast-show');\n setTimeout(() => toast.remove(), 300);\n }, 2000);\n }\n\n public destroy(): void {\n this.toggleElement?.remove();\n this.overlayElement?.remove();\n this.styleElement?.remove();\n }\n}\n\nexport function createAeoWidget(options?: AeoWidgetOptions): AeoWidget {\n return new AeoWidget(options);\n}\n","import React, { useEffect, useRef } from 'react';\nimport type { AeoConfig } from '../types';\nimport { AeoWidget, type AeoWidgetOptions } from './core';\n\nexport interface AeoWidgetProps {\n config?: Partial<AeoConfig>;\n className?: string;\n}\n\nexport const AeoWidgetComponent: React.FC<AeoWidgetProps> = ({ config, className }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const widgetRef = useRef<AeoWidget | null>(null);\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const options: AeoWidgetOptions = {\n config,\n container: containerRef.current,\n };\n\n widgetRef.current = new AeoWidget(options);\n\n return () => {\n widgetRef.current?.destroy();\n };\n }, [config]);\n\n return <div ref={containerRef} className={className} />;\n};\n\n// Export with a simpler name\nexport { AeoWidgetComponent as AeoWidget };"]}
|
|
1
|
+
{"version":3,"sources":["../src/widget/styles.ts","../src/widget/icons.ts","../src/widget/extract.ts","../src/widget/core.ts","../src/widget/react.tsx"],"names":["_a","useRef","useEffect","jsx"],"mappings":";;;;;;;;AAOO,SAAS,UAAU,KAAA,EAA6B;AACrD,EAAA,MAAM,CAAA,GAAI;AAAA,IACR,UAAA,EAAA,CAAY,+BAAO,UAAA,KAAc,SAAA;AAAA,IACjC,IAAA,EAAA,CAAM,+BAAO,IAAA,KAAQ,SAAA;AAAA,IACrB,MAAA,EAAA,CAAQ,+BAAO,MAAA,KAAU,SAAA;AAAA,IACzB,KAAA,EAAA,CAAO,+BAAO,KAAA,KAAS;AAAA,GACzB;AAEA,EAAA,OAAO;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,kBAAA,EAiCW,EAAE,UAAU,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAejB,EAAE,IAAI,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA,kBAAA,EAoBD,EAAE,MAAM,CAAA;AAAA,aAAA,EACb,EAAE,UAAU,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAqCZ,EAAE,KAAK,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,kBAAA,EAaF,EAAE,KAAK,CAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAUZ,EAAE,MAAM,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAuBR,EAAE,IAAI,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,aAAA,EAaN,EAAE,MAAM,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAqBR,EAAE,IAAI,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,aAAA,EAqCN,EAAE,IAAI,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,aAAA,EAgBN,EAAE,MAAM,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAeR,EAAE,IAAI,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,aAAA,EAgBN,EAAE,IAAI,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,aAAA,EASN,EAAE,MAAM,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,aAAA,EAUR,EAAE,MAAM,CAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,aAAA,EAQR,EAAE,MAAM,CAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAUR,EAAE,MAAM,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,6BAAA,EAoBQ,EAAE,KAAK,CAAA;AAAA;AAAA,aAAA,EAEvB,EAAE,IAAI,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAmBN,EAAE,KAAK,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EASP,EAAE,KAAK,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA,aAAA,EAeP,EAAE,MAAM,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EA4BR,EAAE,IAAI,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,YAAA,EAMP,EAAE,IAAI,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAcL,EAAE,IAAI,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA,aAAA,EAoBN,EAAE,MAAM,CAAA;AAAA;AAAA;;AAAA;AAAA,aAAA,EAKR,EAAE,MAAM,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,aAAA,EAMR,EAAE,MAAM,CAAA;AAAA;AAAA;;AAAA;AAAA,aAAA,EAKR,EAAE,KAAK,CAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA,aAAA,EAgBP,EAAE,IAAI,CAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,aAAA,EAYN,EAAE,IAAI,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,aAAA,EAmBN,EAAE,MAAM,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAA,EAyBH,EAAE,UAAU,CAAA;AAAA,aAAA,EACjB,EAAE,MAAM,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,CAAA,CAiFnB,IAAA,EAAK;AACT;;;ACzmBO,SAAS,QAAA,GAAkB;AAChC,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,CAAA;AAAA;AAAA,UAAA,CAAA;AAAA,IAIP,EAAA,EAAI,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAA,CAAA;AAAA,IAOJ,KAAA,EAAO,CAAA;AAAA;AAAA,UAAA,CAAA;AAAA,IAIP,IAAA,EAAM,CAAA;AAAA;AAAA,UAAA,CAAA;AAAA,IAIN,QAAA,EAAU,CAAA;AAAA;AAAA,UAAA,CAAA;AAAA,IAIV,OAAA,EAAS,CAAA;AAAA;AAAA,UAAA;AAAA,GAGX;AACF;;;ACtCO,SAAS,oBAAA,GAA+B;AAC7C,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,MAAM,SAAA,uBAAgB,OAAA,EAAQ;AAG9B,EAAA,MAAM,QAAQ,QAAA,CAAS,KAAA;AACvB,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,EAAI,EAAE,CAAA;AAAA,EAC7B;AAGA,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,aAAA,CAAc,0BAA0B,CAAA;AACrE,EAAA,IAAI,2CAAa,OAAA,EAAS;AACxB,IAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAK,WAAA,CAAY,OAAO,IAAI,EAAE,CAAA;AAAA,EAC3C;AAGA,EAAA,MAAM,cAAc,eAAA,EAAgB;AACpC,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,WAAA,CAAY,WAAA,EAAa,OAAO,SAAS,CAAA;AAAA,EAC3C,CAAA,MAAO;AAEL,IAAA,WAAA,CAAY,QAAA,CAAS,IAAA,EAAM,KAAA,EAAO,SAAS,CAAA;AAAA,EAC7C;AAEA,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,CAAE,IAAA,EAAK;AAC/B;AAEA,SAAS,eAAA,GAAkC;AACzC,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,MAAA;AAAA,IACA,eAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC/C,IAAA,IAAI,SAAS,OAAO,OAAA;AAAA,EACtB;AAEA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,WAAA,CAAY,IAAA,EAAY,KAAA,EAAiB,SAAA,EAAkC;AAjDpF,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAkDE,EAAA,IAAI,SAAA,CAAU,GAAA,CAAI,IAAI,CAAA,EAAG;AACzB,EAAA,SAAA,CAAU,IAAI,IAAI,CAAA;AAGlB,EAAA,IAAI,gBAAgB,WAAA,EAAa;AAC/B,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,CAAQ,WAAA,EAAY;AACzC,IAAA,MAAM,QAAA,GAAW,CAAC,QAAA,EAAU,OAAA,EAAS,YAAY,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,OAAA,EAAS,OAAO,CAAA;AAC5F,IAAA,IAAI,QAAA,CAAS,QAAA,CAAS,OAAO,CAAA,EAAG;AAGhC,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,gBAAA,CAAiB,IAAI,CAAA;AAC1C,IAAA,IAAI,KAAA,CAAM,OAAA,KAAY,MAAA,IAAU,KAAA,CAAM,eAAe,QAAA,EAAU;AAG/D,IAAA,IAAI,OAAA,KAAY,KAAA,IAAS,OAAA,KAAY,QAAA,IAAY,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,KAAK,CAAA,IAAK,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,QAAQ,CAAA,EAAG;AACpH,MAAA,IAAI,CAAC,mBAAA,CAAoB,IAAI,CAAA,EAAG;AAAA,IAClC;AAGA,IAAA,IAAI,IAAA,CAAK,UAAU,QAAA,CAAS,YAAY,KAAK,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,aAAa,CAAA,EAAG;AAAA,EACvF;AAEA,EAAA,IAAI,gBAAgB,WAAA,EAAa;AAC/B,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,CAAQ,WAAA,EAAY;AAEzC,IAAA,QAAQ,OAAA;AAAS,MACf,KAAK,IAAA;AACH,QAAA,KAAA,CAAM,KAAK,EAAA,EAAI,CAAA,EAAA,EAAK,eAAe,IAAI,CAAC,IAAI,EAAE,CAAA;AAC9C,QAAA;AAAA,MACF,KAAK,IAAA;AACH,QAAA,KAAA,CAAM,KAAK,EAAA,EAAI,CAAA,GAAA,EAAM,eAAe,IAAI,CAAC,IAAI,EAAE,CAAA;AAC/C,QAAA;AAAA,MACF,KAAK,IAAA;AACH,QAAA,KAAA,CAAM,KAAK,EAAA,EAAI,CAAA,IAAA,EAAO,eAAe,IAAI,CAAC,IAAI,EAAE,CAAA;AAChD,QAAA;AAAA,MACF,KAAK,IAAA;AACH,QAAA,KAAA,CAAM,KAAK,EAAA,EAAI,CAAA,KAAA,EAAQ,eAAe,IAAI,CAAC,IAAI,EAAE,CAAA;AACjD,QAAA;AAAA,MACF,KAAK,IAAA;AACH,QAAA,KAAA,CAAM,KAAK,EAAA,EAAI,CAAA,MAAA,EAAS,eAAe,IAAI,CAAC,IAAI,EAAE,CAAA;AAClD,QAAA;AAAA,MACF,KAAK,IAAA;AACH,QAAA,KAAA,CAAM,KAAK,EAAA,EAAI,CAAA,OAAA,EAAU,eAAe,IAAI,CAAC,IAAI,EAAE,CAAA;AACnD,QAAA;AAAA,MACF,KAAK,GAAA;AACH,QAAA,MAAM,IAAA,GAAO,eAAe,IAAI,CAAA;AAChC,QAAA,IAAI,IAAA,EAAM,KAAA,CAAM,IAAA,CAAK,EAAA,EAAI,MAAM,EAAE,CAAA;AACjC,QAAA;AAAA,MACF,KAAK,YAAA;AACH,QAAA,MAAM,SAAA,GAAY,eAAe,IAAI,CAAA;AACrC,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,KAAA,CAAM,IAAA,CAAK,EAAA,EAAI,GAAG,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA,CAAE,GAAA,CAAI,CAAA,IAAA,KAAQ,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,GAAG,EAAE,CAAA;AAAA,QACtE;AACA,QAAA;AAAA,MACF,KAAK,KAAA;AACH,QAAA,MAAM,WAAA,GAAc,IAAA,CAAK,aAAA,CAAc,MAAM,CAAA;AAC7C,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,MAAM,IAAA,GAAO,gBAAgB,WAAW,CAAA;AACxC,UAAA,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,MAAA,EAAS,IAAI,IAAI,cAAA,CAAe,WAAW,CAAA,EAAG,KAAA,EAAU,EAAE,CAAA;AAAA,QAC3E,CAAA,MAAO;AACL,UAAA,KAAA,CAAM,KAAK,EAAA,EAAI,KAAA,EAAU,eAAe,IAAI,CAAA,EAAG,OAAU,EAAE,CAAA;AAAA,QAC7D;AACA,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,IAAA,CAAA,CAAI,EAAA,GAAA,IAAA,CAAK,aAAA,KAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAoB,OAAA,CAAQ,mBAAkB,KAAA,EAAO;AACvD,UAAA,MAAM,QAAA,GAAW,eAAe,IAAI,CAAA;AACpC,UAAA,IAAI,QAAA,IAAY,GAAC,EAAA,GAAA,KAAA,CAAM,KAAA,CAAM,SAAS,CAAC,CAAA,KAAtB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAyB,QAAA,CAAS,QAAA,CAAA,CAAA,EAAW;AAC5D,YAAA,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,GAAA,CAAK,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,IAAK,EAAA,IAAM,CAAA,GAAA,EAAM,QAAQ,CAAA,GAAA,CAAA;AAAA,UAC5E;AAAA,QACF;AACA,QAAA;AAAA,MACF,KAAK,IAAA;AAAA,MACL,KAAK,IAAA;AACH,QAAA,gBAAA,CAAiB,IAAA,EAA6C,KAAA,EAAO,SAAA,EAAW,OAAA,KAAY,IAAI,CAAA;AAChG,QAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AACb,QAAA;AAAA,MACF,KAAK,GAAA;AACH,QAAA,MAAM,OAAQ,IAAA,CAA2B,IAAA;AACzC,QAAA,MAAM,QAAA,GAAW,eAAe,IAAI,CAAA;AACpC,QAAA,IAAI,YAAY,IAAA,IAAQ,CAAC,IAAA,CAAK,UAAA,CAAW,aAAa,CAAA,EAAG;AACvD,UAAA,MAAM,QAAA,GAAW,CAAA,CAAA,EAAI,QAAQ,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAA;AACtC,UAAA,IAAI,EAAA,CAAC,WAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,KAAtB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAyB,SAAS,QAAA,CAAA,CAAA,EAAW;AAChD,YAAA,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,GAAA,CAAK,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,IAAK,EAAA,IAAM,GAAA,GAAM,QAAA,GAAW,GAAA;AAAA,UAC/E;AAAA,QACF,CAAA,MAAO;AACL,UAAA,eAAA,CAAgB,IAAA,EAAM,OAAO,SAAS,CAAA;AAAA,QACxC;AACA,QAAA;AAAA,MACF,KAAK,KAAA;AACH,QAAA,MAAM,GAAA,GAAM,IAAA;AACZ,QAAA,IAAI,GAAA,CAAI,GAAA,IAAO,GAAA,CAAI,GAAA,EAAK;AACtB,UAAA,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,EAAA,EAAK,GAAA,CAAI,GAAG,CAAA,EAAA,EAAK,GAAA,CAAI,GAAG,CAAA,CAAA,CAAA,EAAK,EAAE,CAAA;AAAA,QAChD;AACA,QAAA;AAAA,MACF,KAAK,OAAA;AACH,QAAA,YAAA,CAAa,MAA0B,KAAK,CAAA;AAC5C,QAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AACb,QAAA;AAAA,MACF,KAAK,QAAA;AAAA,MACL,KAAK,GAAA;AACH,QAAA,MAAM,QAAA,GAAW,eAAe,IAAI,CAAA;AACpC,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,GAAA,CAAK,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,IAAK,EAAA,IAAM,CAAA,GAAA,EAAM,QAAQ,CAAA,GAAA,CAAA;AAAA,QAC5E;AACA,QAAA;AAAA,MACF,KAAK,IAAA;AAAA,MACL,KAAK,GAAA;AACH,QAAA,MAAM,UAAA,GAAa,eAAe,IAAI,CAAA;AACtC,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,GAAA,CAAK,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,IAAK,EAAA,IAAM,CAAA,EAAA,EAAK,UAAU,CAAA,EAAA,CAAA;AAAA,QAC7E;AACA,QAAA;AAAA,MACF,KAAK,IAAA;AACH,QAAA,KAAA,CAAM,IAAA,CAAK,EAAA,EAAI,KAAA,EAAO,EAAE,CAAA;AACxB,QAAA;AAAA,MACF;AACE,QAAA,eAAA,CAAgB,IAAA,EAAM,OAAO,SAAS,CAAA;AAAA;AAC1C,EACF,CAAA,MAAA,IAAW,IAAA,CAAK,QAAA,KAAa,IAAA,CAAK,SAAA,EAAW;AAC3C,IAAA,MAAM,IAAA,GAAA,CAAO,EAAA,GAAA,IAAA,CAAK,WAAA,KAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAkB,IAAA,EAAA;AAC/B,IAAA,IAAI,IAAA,IAAQ,CAAC,gBAAA,CAAiB,IAAI,CAAA,EAAG;AACnC,MAAA,IAAI,KAAA,CAAM,WAAW,CAAA,IAAK,KAAA,CAAM,MAAM,MAAA,GAAS,CAAC,MAAM,EAAA,EAAI;AACxD,QAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,MACjB,CAAA,MAAO;AACL,QAAA,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,IAAK,GAAA,GAAM,IAAA;AAAA,MACnC;AAAA,IACF;AAAA,EACF,CAAA,MAAO;AACL,IAAA,eAAA,CAAgB,IAAA,EAAM,OAAO,SAAS,CAAA;AAAA,EACxC;AACF;AAEA,SAAS,eAAA,CAAgB,IAAA,EAAY,KAAA,EAAiB,SAAA,EAAkC;AACtF,EAAA,KAAA,MAAW,KAAA,IAAS,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,UAAU,CAAA,EAAG;AAC/C,IAAA,WAAA,CAAY,KAAA,EAAO,OAAO,SAAS,CAAA;AAAA,EACrC;AACF;AAEA,SAAS,gBAAA,CAAiB,IAAA,EAA2C,KAAA,EAAiB,SAAA,EAA4B,SAAA,EAA0B;AAC1I,EAAA,MAAM,QAAQ,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,gBAAA,CAAiB,aAAa,CAAC,CAAA;AAC7D,EAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAA,EAAM,KAAA,KAAU;AAC7B,IAAA,MAAM,MAAA,GAAS,SAAA,GAAY,CAAA,EAAG,KAAA,GAAQ,CAAC,CAAA,EAAA,CAAA,GAAO,IAAA;AAC9C,IAAA,MAAM,IAAA,GAAO,eAAe,IAAI,CAAA;AAChC,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,KAAA,CAAM,IAAA,CAAK,SAAS,IAAI,CAAA;AAAA,IAC1B;AACA,IAAA,SAAA,CAAU,IAAI,IAAI,CAAA;AAAA,EACpB,CAAC,CAAA;AACH;AAEA,SAAS,YAAA,CAAa,OAAyB,KAAA,EAAuB;AACpE,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,gBAAA,CAAiB,IAAI,CAAC,CAAA;AACpD,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AAEvB,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,gBAAA,CAAiB,QAAQ,CAAC,CAAA,CAAE,GAAA,CAAI,CAAA,IAAA,KAAQ,cAAA,CAAe,IAAI,CAAC,CAAA;AAC/F,EAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACtB,IAAA,KAAA,CAAM,KAAK,EAAA,EAAI,IAAA,GAAO,QAAQ,IAAA,CAAK,KAAK,IAAI,IAAI,CAAA;AAChD,IAAA,KAAA,CAAM,IAAA,CAAK,GAAA,GAAM,OAAA,CAAQ,GAAA,CAAI,MAAM,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,GAAI,GAAG,CAAA;AAE3D,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,gBAAA,CAAiB,IAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAA,IAAA,KAAQ,cAAA,CAAe,IAAI,CAAC,CAAA;AACzF,MAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,QAAA,KAAA,CAAM,KAAK,IAAA,GAAO,KAAA,CAAM,IAAA,CAAK,KAAK,IAAI,IAAI,CAAA;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,eAAe,IAAA,EAAoB;AA1N5C,EAAA,IAAA,EAAA,EAAA,EAAA;AA6NE,EAAA,IAAI,gBAAgB,WAAA,EAAa;AAC/B,IAAA,OAAA,CAAA,CAAO,UAAK,SAAA,KAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgB,IAAA,EAAA,CAAO,OAAA,CAAQ,QAAQ,GAAA,CAAA,KAAQ,EAAA;AAAA,EACxD;AACA,EAAA,OAAA,CAAA,CAAO,UAAK,WAAA,KAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAkB,IAAA,EAAA,CAAO,OAAA,CAAQ,QAAQ,GAAA,CAAA,KAAQ,EAAA;AAC1D;AAEA,SAAS,iBAAiB,IAAA,EAAuB;AAC/C,EAAA,OAAO,OAAA,CAAQ,KAAK,IAAI,CAAA;AAC1B;AAEA,SAAS,oBAAoB,IAAA,EAA4B;AAvOzD,EAAA,IAAA,EAAA;AAwOE,EAAA,MAAM,oBAAoB,CAAC,eAAA,EAAiB,QAAQ,KAAA,EAAO,OAAA,EAAS,YAAY,WAAW,CAAA;AAC3F,EAAA,MAAM,IAAA,GAAA,CAAA,CAAO,EAAA,GAAA,IAAA,CAAK,WAAA,KAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAkB,WAAA,EAAA,KAAiB,EAAA;AAChD,EAAA,OAAO,kBAAkB,IAAA,CAAK,CAAA,OAAA,KAAW,IAAA,CAAK,QAAA,CAAS,OAAO,CAAC,CAAA;AACjE;AAEA,SAAS,gBAAgB,WAAA,EAA8B;AACrD,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,IAAA,CAAK,WAAA,CAAY,SAAS,CAAA;AAChD,EAAA,KAAA,MAAW,OAAO,OAAA,EAAS;AACzB,IAAA,IAAI,GAAA,CAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAC/B,MAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,WAAA,EAAa,EAAE,CAAA;AAAA,IACpC;AACA,IAAA,IAAI,GAAA,CAAI,UAAA,CAAW,OAAO,CAAA,EAAG;AAC3B,MAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA;AAAA,IAChC;AAAA,EACF;AAEA,EAAA,MAAM,GAAA,GAAM,WAAA,CAAY,OAAA,CAAQ,KAAK,CAAA;AACrC,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,MAAM,UAAA,GAAa,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,SAAS,CAAA;AAC3C,IAAA,KAAA,MAAW,OAAO,UAAA,EAAY;AAC5B,MAAA,IAAI,GAAA,CAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAC/B,QAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,WAAA,EAAa,EAAE,CAAA;AAAA,MACpC;AACA,MAAA,IAAI,GAAA,CAAI,UAAA,CAAW,OAAO,CAAA,EAAG;AAC3B,QAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,EAAA;AACT;;;AC5PO,IAAM,YAAN,MAAgB;AAAA,EAQrB,WAAA,CAAY,OAAA,GAA4B,EAAC,EAAG;AAL5C,IAAA,IAAA,CAAQ,QAAA,GAAoB,KAAA;AAb9B,IAAA,IAAA,EAAA;AAmBI,IAAA,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,OAAA,CAAQ,MAAM,CAAA;AAC/C,IAAA,IAAA,CAAK,SAAA,GAAY,OAAA,CAAQ,SAAA,IAAa,QAAA,CAAS,IAAA;AAE/C,IAAA,IAAA,CAAA,CAAI,EAAA,GAAA,IAAA,CAAK,MAAA,CAAO,MAAA,KAAZ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAoB,aAAY,KAAA,EAAO;AACzC,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,EACF;AAAA,EAEQ,cAAc,MAAA,EAAwC;AAC5D,IAAA,MAAM,aAAA,GAA2B;AAAA,MAC/B,KAAA,EAAO,SAAS,KAAA,IAAS,SAAA;AAAA,MACzB,WAAA,EAAa,EAAA;AAAA,MACb,GAAA,EAAK,OAAO,QAAA,CAAS,MAAA;AAAA,MACrB,UAAA,EAAY,MAAA;AAAA,MACZ,MAAA,EAAQ,MAAA;AAAA,MACR,UAAA,EAAY;AAAA,QACV,SAAA,EAAW,IAAA;AAAA,QACX,OAAA,EAAS,IAAA;AAAA,QACT,WAAA,EAAa,IAAA;AAAA,QACb,WAAA,EAAa,IAAA;AAAA,QACb,QAAA,EAAU,IAAA;AAAA,QACV,OAAA,EAAS,IAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,IAAA;AAAA,QACT,QAAA,EAAU,cAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL,UAAA,EAAY,SAAA;AAAA,UACZ,IAAA,EAAM,SAAA;AAAA,UACN,MAAA,EAAQ,SAAA;AAAA,UACR,KAAA,EAAO;AAAA,SACT;AAAA,QACA,UAAA,EAAY,OAAA;AAAA,QACZ,OAAA,EAAS,IAAA;AAAA,QACT,SAAA,EAAW;AAAA;AACb,KACF;AAEA,IAAA,OAAO,EAAE,GAAG,aAAA,EAAe,GAAG,MAAA,EAAO;AAAA,EACvC;AAAA,EAEQ,IAAA,GAAa;AACnB,IAAA,IAAA,CAAK,YAAA,EAAa;AAClB,IAAA,IAAA,CAAK,YAAA,EAAa;AAClB,IAAA,IAAA,CAAK,UAAA,EAAW;AAAA,EAClB;AAAA,EAEQ,YAAA,GAAqB;AAnE/B,IAAA,IAAA,EAAA;AAoEI,IAAA,IAAI,KAAK,YAAA,EAAc;AAEvB,IAAA,IAAA,CAAK,YAAA,GAAe,QAAA,CAAS,aAAA,CAAc,OAAO,CAAA;AAClD,IAAA,IAAA,CAAK,aAAa,WAAA,GAAc,SAAA,CAAA,CAAU,UAAK,MAAA,CAAO,MAAA,KAAZ,mBAAoB,KAAK,CAAA;AACnE,IAAA,QAAA,CAAS,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,YAAY,CAAA;AAAA,EAC7C;AAAA,EAEQ,YAAA,GAAqB;AA3E/B,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA4EI,IAAA,MAAM,QAAA,GAAA,CAAA,CAAW,EAAA,GAAA,IAAA,CAAK,MAAA,CAAO,MAAA,KAAZ,mBAAoB,QAAA,KAAY,cAAA;AACjD,IAAA,MAAM,QAAQ,QAAA,EAAS;AAEvB,IAAA,IAAA,CAAK,aAAA,GAAgB,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AACjD,IAAA,IAAA,CAAK,aAAA,CAAc,SAAA,GAAY,CAAA,eAAA,EAAkB,QAAQ,CAAA,CAAA;AACzD,IAAA,IAAA,CAAK,cAAc,SAAA,GAAY;AAAA;AAAA;AAAA,UAAA,EAGvB,MAAM,KAAK;AAAA,gBAAA,EAAA,CAAA,CACL,EAAA,GAAA,IAAA,CAAK,MAAA,CAAO,MAAA,KAAZ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAoB,eAAc,OAAO,CAAA;AAAA;AAAA;AAAA,UAAA,EAG/C,MAAM,EAAE;AAAA,gBAAA,EAAA,CAAA,CACF,EAAA,GAAA,IAAA,CAAK,MAAA,CAAO,MAAA,KAAZ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAoB,YAAW,IAAI,CAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAKjD,IAAA,IAAA,CAAK,SAAA,CAAU,WAAA,CAAY,IAAA,CAAK,aAAa,CAAA;AAAA,EAC/C;AAAA,EAEQ,UAAA,GAAmB;AACzB,IAAA,IAAI,CAAC,KAAK,aAAA,EAAe;AAEzB,IAAA,IAAA,CAAK,aAAA,CAAc,gBAAA,CAAiB,OAAA,EAAS,CAAC,CAAA,KAAM;AAClD,MAAA,MAAM,SAAS,CAAA,CAAE,MAAA;AACjB,MAAA,MAAM,GAAA,GAAM,MAAA,CAAO,OAAA,CAAQ,iBAAiB,CAAA;AAC5C,MAAA,IAAI,CAAC,GAAA,EAAK;AAEV,MAAA,MAAM,IAAA,GAAO,IAAI,OAAA,CAAQ,IAAA;AACzB,MAAA,IAAI,IAAA,KAAS,IAAA,IAAQ,CAAC,IAAA,CAAK,QAAA,EAAU;AACnC,QAAA,IAAA,CAAK,UAAA,EAAW;AAAA,MAClB,CAAA,MAAA,IAAW,IAAA,KAAS,OAAA,IAAW,IAAA,CAAK,QAAA,EAAU;AAC5C,QAAA,IAAA,CAAK,aAAA,EAAc;AAAA,MACrB;AAAA,IACF,CAAC,CAAA;AAED,IAAA,QAAA,CAAS,gBAAA,CAAiB,SAAA,EAAW,CAAC,CAAA,KAAM;AAC1C,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,IAAY,IAAA,CAAK,cAAA,EAAgB;AAC7C,QAAA,IAAA,CAAK,YAAA,EAAa;AAAA,MACpB;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,MAAc,UAAA,GAA4B;AACxC,IAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,IAAA,IAAA,CAAK,iBAAA,EAAkB;AACvB,IAAA,MAAM,KAAK,WAAA,EAAY;AAAA,EACzB;AAAA,EAEQ,aAAA,GAAsB;AAC5B,IAAA,IAAA,CAAK,QAAA,GAAW,KAAA;AAChB,IAAA,IAAA,CAAK,iBAAA,EAAkB;AACvB,IAAA,IAAA,CAAK,YAAA,EAAa;AAAA,EACpB;AAAA,EAEQ,iBAAA,GAA0B;AAChC,IAAA,IAAI,CAAC,KAAK,aAAA,EAAe;AAEzB,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,aAAA,CAAc,aAAA,CAAc,gBAAgB,CAAA;AAClE,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,aAAA,CAAc,aAAA,CAAc,aAAa,CAAA;AAE5D,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAU,UAAU,MAAA,CAAO,YAAA,CAAA;AAC3B,MAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,UAAU,GAAA,CAAI,YAAA,CAAA;AAAA,IACvB,CAAA,MAAO;AACL,MAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAU,UAAU,GAAA,CAAI,YAAA,CAAA;AACxB,MAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,UAAU,MAAA,CAAO,YAAA,CAAA;AAAA,IAC1B;AAAA,EACF;AAAA,EAEQ,eAAA,GAA0B;AAChC,IAAA,MAAM,WAAA,GAAc,OAAO,QAAA,CAAS,QAAA;AACpC,IAAA,IAAI,WAAA,KAAgB,GAAA,IAAO,WAAA,CAAY,QAAA,CAAS,GAAG,CAAA,EAAG;AACpD,MAAA,OAAO,GAAG,WAAW,CAAA,QAAA,CAAA;AAAA,IACvB;AACA,IAAA,OAAO,GAAG,WAAW,CAAA,GAAA,CAAA;AAAA,EACvB;AAAA,EAEA,MAAc,WAAA,GAA6B;AA3J7C,IAAA,IAAA,EAAA;AA4JI,IAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,IAAA,MAAM,MAAA,GAAS,KAAK,eAAA,EAAgB;AAEpC,IAAA,IAAA,CAAK,cAAA,GAAiB,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAClD,IAAA,IAAA,CAAK,eAAe,SAAA,GAAY,aAAA;AAChC,IAAA,IAAA,CAAK,eAAe,SAAA,GAAY;AAAA;AAAA,QAAA,EAAA,CAAA,CAE1B,UAAK,MAAA,CAAO,MAAA,KAAZ,mBAAoB,SAAA,MAAc,KAAA,GAAQ,gFAAgF,EAAE;AAAA,oCAAA,EAChG,MAAM,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAA,EAS9B,MAAM,IAAI;AAAA;AAAA;AAAA;AAAA,YAAA,EAIV,MAAM,QAAQ;AAAA;AAAA;AAAA;AAAA,YAAA,EAId,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAA,EAQX,MAAM,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAOvB,IAAA,IAAA,CAAK,SAAA,CAAU,WAAA,CAAY,IAAA,CAAK,cAAc,CAAA;AAE9C,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,cAAA,CAAe,aAAA,CAAc,gBAAgB,CAAA;AACnE,IAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAU,gBAAA,CAAiB,OAAA,EAAS,MAAM,IAAA,CAAK,YAAA,EAAa,CAAA;AAG5D,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,cAAA,CAAe,gBAAA,CAAiB,eAAe,CAAA;AACrE,IAAA,QAAA,CAAS,QAAQ,CAAA,GAAA,KAAO;AACtB,MAAA,GAAA,CAAI,gBAAA,CAAiB,SAAS,MAAM;AA5M1C,QAAA,IAAAA,GAAAA,EAAA,EAAA;AA6MQ,QAAA,QAAA,CAAS,QAAQ,CAAA,CAAA,KAAK,CAAA,CAAE,SAAA,CAAU,MAAA,CAAO,iBAAiB,CAAC,CAAA;AAC3D,QAAA,GAAA,CAAI,SAAA,CAAU,IAAI,iBAAiB,CAAA;AACnC,QAAA,MAAM,IAAA,GAAQ,IAAoB,OAAA,CAAQ,IAAA;AAC1C,QAAA,MAAM,YAAWA,GAAAA,GAAA,IAAA,CAAK,cAAA,KAAL,IAAA,GAAA,MAAA,GAAAA,IAAqB,aAAA,CAAc,eAAA,CAAA;AACpD,QAAA,MAAM,MAAA,GAAA,CAAS,EAAA,GAAA,IAAA,CAAK,cAAA,KAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAqB,aAAA,CAAc,sBAAA,CAAA;AAClD,QAAA,IAAI,YAAY,MAAA,EAAQ;AACtB,UAAA,QAAA,CAAS,KAAA,CAAM,OAAA,GAAU,IAAA,KAAS,UAAA,GAAa,OAAA,GAAU,MAAA;AACzD,UAAA,MAAA,CAAO,KAAA,CAAM,OAAA,GAAU,IAAA,KAAS,QAAA,GAAW,OAAA,GAAU,MAAA;AAAA,QACvD;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAED,IAAA,MAAM,KAAK,WAAA,EAAY;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKQ,iBAAiB,EAAA,EAAmE;AAC1F,IAAA,MAAM,cAAsC,EAAC;AAC7C,IAAA,IAAI,IAAA,GAAO,EAAA;AAEX,IAAA,IAAI,EAAA,CAAG,UAAA,CAAW,KAAK,CAAA,EAAG;AACxB,MAAA,MAAM,QAAA,GAAW,EAAA,CAAG,OAAA,CAAQ,KAAA,EAAO,CAAC,CAAA;AACpC,MAAA,IAAI,aAAa,EAAA,EAAI;AACnB,QAAA,MAAM,UAAU,EAAA,CAAG,KAAA,CAAM,CAAA,EAAG,QAAQ,EAAE,IAAA,EAAK;AAC3C,QAAA,IAAA,GAAO,EAAA,CAAG,KAAA,CAAM,QAAA,GAAW,CAAC,EAAE,IAAA,EAAK;AACnC,QAAA,KAAA,MAAW,IAAA,IAAQ,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,EAAG;AACtC,UAAA,MAAM,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AACjC,UAAA,IAAI,WAAW,CAAA,EAAG;AAChB,YAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,QAAQ,EAAE,IAAA,EAAK;AACzC,YAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,QAAA,GAAW,CAAC,EAAE,IAAA,EAAK,CAAE,OAAA,CAAQ,cAAA,EAAgB,EAAE,CAAA;AACtE,YAAA,WAAA,CAAY,GAAG,CAAA,GAAI,GAAA;AAAA,UACrB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,IAAA,OAAO,EAAE,aAAa,IAAA,EAAK;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKQ,eAAe,EAAA,EAAoB;AACzC,IAAA,MAAM,GAAA,GAAM,CAAC,CAAA,KAAc,CAAA,CAAE,QAAQ,IAAA,EAAM,OAAO,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,MAAM,CAAA,CAAE,OAAA,CAAQ,MAAM,MAAM,CAAA;AAE9F,IAAA,MAAM,KAAA,GAAQ,EAAA,CAAG,KAAA,CAAM,IAAI,CAAA;AAC3B,IAAA,MAAM,OAAiB,EAAC;AACxB,IAAA,IAAI,MAAA,GAAS,KAAA;AACb,IAAA,IAAI,MAAA,GAAS,KAAA;AACb,IAAA,IAAI,cAAwB,EAAC;AAE7B,IAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,MAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAG1B,MAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA,EAAG;AAC7B,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,IAAA,CAAK,IAAA,CAAK,iCAAiC,GAAA,CAAI,WAAA,CAAY,KAAK,IAAI,CAAC,CAAC,CAAA,aAAA,CAAe,CAAA;AACrF,UAAA,WAAA,GAAc,EAAC;AACf,UAAA,MAAA,GAAS,KAAA;AAAA,QACX,CAAA,MAAO;AACL,UAAA,IAAI,MAAA,EAAQ;AAAE,YAAA,IAAA,CAAK,KAAK,OAAO,CAAA;AAAG,YAAA,MAAA,GAAS,KAAA;AAAA,UAAO;AAClD,UAAA,MAAA,GAAS,IAAA;AAAA,QACX;AACA,QAAA;AAAA,MACF;AACA,MAAA,IAAI,MAAA,EAAQ;AAAE,QAAA,WAAA,CAAY,KAAK,IAAI,CAAA;AAAG,QAAA;AAAA,MAAU;AAGhD,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,IAAI,MAAA,EAAQ;AAAE,UAAA,IAAA,CAAK,KAAK,OAAO,CAAA;AAAG,UAAA,MAAA,GAAS,KAAA;AAAA,QAAO;AAClD,QAAA;AAAA,MACF;AAGA,MAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,KAAA,CAAM,kBAAkB,CAAA;AACrD,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,IAAI,MAAA,EAAQ;AAAE,UAAA,IAAA,CAAK,KAAK,OAAO,CAAA;AAAG,UAAA,MAAA,GAAS,KAAA;AAAA,QAAO;AAClD,QAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,CAAC,CAAA,CAAE,MAAA;AAC9B,QAAA,IAAA,CAAK,KAAK,CAAA,EAAA,EAAK,KAAK,CAAA,eAAA,EAAkB,KAAK,KAAK,IAAA,CAAK,oBAAA,CAAqB,GAAA,CAAI,YAAA,CAAa,CAAC,CAAC,CAAC,CAAC,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,CAAG,CAAA;AAC7G,QAAA;AAAA,MACF;AAGA,MAAA,IAAI,wBAAA,CAAyB,IAAA,CAAK,OAAO,CAAA,EAAG;AAC1C,QAAA,IAAI,MAAA,EAAQ;AAAE,UAAA,IAAA,CAAK,KAAK,OAAO,CAAA;AAAG,UAAA,MAAA,GAAS,KAAA;AAAA,QAAO;AAClD,QAAA,IAAA,CAAK,KAAK,uBAAuB,CAAA;AACjC,QAAA;AAAA,MACF;AAGA,MAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA,EAAG;AAC3B,QAAA,IAAI,MAAA,EAAQ;AAAE,UAAA,IAAA,CAAK,KAAK,OAAO,CAAA;AAAG,UAAA,MAAA,GAAS,KAAA;AAAA,QAAO;AAClD,QAAA,IAAA,CAAK,IAAA,CAAK,CAAA,gCAAA,EAAmC,IAAA,CAAK,oBAAA,CAAqB,GAAA,CAAI,OAAA,CAAQ,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,EAAM,CAAC,CAAC,CAAA,aAAA,CAAe,CAAA;AACnH,QAAA;AAAA,MACF;AAGA,MAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,KAAA,CAAM,eAAe,CAAA;AAC/C,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,IAAI,CAAC,MAAA,EAAQ;AAAE,UAAA,IAAA,CAAK,KAAK,yBAAyB,CAAA;AAAG,UAAA,MAAA,GAAS,IAAA;AAAA,QAAM;AACpE,QAAA,IAAA,CAAK,IAAA,CAAK,CAAA,IAAA,EAAO,IAAA,CAAK,oBAAA,CAAqB,GAAA,CAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA,KAAA,CAAO,CAAA;AACpE,QAAA;AAAA,MACF;AAGA,MAAA,IAAI,MAAA,EAAQ;AAAE,QAAA,IAAA,CAAK,KAAK,OAAO,CAAA;AAAG,QAAA,MAAA,GAAS,KAAA;AAAA,MAAO;AAClD,MAAA,IAAA,CAAK,IAAA,CAAK,sBAAsB,IAAA,CAAK,oBAAA,CAAqB,IAAI,OAAO,CAAC,CAAC,CAAA,IAAA,CAAM,CAAA;AAAA,IAC/E;AAEA,IAAA,IAAI,MAAA,EAAQ,IAAA,CAAK,IAAA,CAAK,OAAO,CAAA;AAC7B,IAAA,IAAI,MAAA,EAAQ,IAAA,CAAK,IAAA,CAAK,CAAA,8BAAA,EAAiC,GAAA,CAAI,YAAY,IAAA,CAAK,IAAI,CAAC,CAAC,CAAA,aAAA,CAAe,CAAA;AAEjG,IAAA,OAAO,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,EACvB;AAAA,EAEQ,qBAAqB,IAAA,EAAsB;AAEjD,IAAA,IAAI,GAAA,GAAM,IAAA,CAAK,OAAA,CAAQ,gBAAA,EAAkB,qBAAqB,CAAA;AAE9D,IAAA,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,sCAAA,EAAwC,aAAa,CAAA;AAEvE,IAAA,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,YAAA,EAAc,2CAA2C,CAAA;AAE3E,IAAA,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,0BAAA,EAA4B,uEAAuE,CAAA;AACrH,IAAA,OAAO,GAAA;AAAA,EACT;AAAA,EAEA,MAAc,WAAA,GAA6B;AACzC,IAAA,IAAI,CAAC,KAAK,cAAA,EAAgB;AAE1B,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,cAAA,CAAe,aAAA,CAAc,sBAAsB,CAAA;AACxE,IAAA,IAAI,CAAC,OAAA,EAAS;AAEd,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,KAAK,eAAA,EAAgB;AACpC,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAM,CAAA;AACnC,MAAA,IAAI,OAAA;AAEJ,MAAA,MAAM,WAAA,GAAc,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,IAAK,EAAA;AAC5D,MAAA,IAAI,SAAS,EAAA,IAAM,CAAC,WAAA,CAAY,QAAA,CAAS,WAAW,CAAA,EAAG;AACrD,QAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AAEjC,QAAA,MAAM,OAAA,GAAU,KAAK,SAAA,EAAU;AAC/B,QAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,IAAI,CAAA,IAAK,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA,IAAK,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA,EAAG;AAC1F,UAAA,OAAA,GAAU,oBAAA,EAAqB;AAAA,QACjC,CAAA,MAAO;AACL,UAAA,OAAA,GAAU,IAAA;AAAA,QACZ;AAAA,MACF,CAAA,MAAO;AACL,QAAA,OAAA,GAAU,oBAAA,EAAqB;AAAA,MACjC;AAEA,MAAA,MAAM,EAAE,WAAA,EAAa,IAAA,EAAK,GAAI,IAAA,CAAK,iBAAiB,OAAO,CAAA;AAG3D,MAAA,MAAM,YAAsB,EAAC;AAC7B,MAAA,IAAI,WAAA,CAAY,KAAA,EAAO,SAAA,CAAU,IAAA,CAAK,CAAA,2CAAA,EAA8C,KAAK,OAAA,CAAQ,WAAA,CAAY,KAAK,CAAC,CAAA,CAAE,CAAA;AACrH,MAAA,IAAI,YAAY,GAAA,EAAK,SAAA,CAAU,IAAA,CAAK,CAAA,qEAAA,EAAwE,KAAK,OAAA,CAAQ,WAAA,CAAY,GAAG,CAAC,oCAAoC,IAAA,CAAK,OAAA,CAAQ,WAAA,CAAY,GAAG,CAAC,CAAA,IAAA,CAAM,CAAA;AAChN,MAAA,MAAM,OAAA,GAAU,UAAU,MAAA,GAAS,CAAA,GAC/B,6BAA6B,SAAA,CAAU,IAAA,CAAK,oCAAoC,CAAC,CAAA,MAAA,CAAA,GACjF,EAAA;AAEJ,MAAA,OAAA,CAAQ,SAAA,GAAY;AAAA,QAAA,EAChB,OAAO;AAAA,kCAAA,EACmB,IAAA,CAAK,cAAA,CAAe,IAAI,CAAC,CAAA;AAAA,oEAAA,EACS,IAAA,CAAK,iBAAA,CAAkB,OAAO,CAAC,CAAA;AAAA,MAAA,CAAA;AAG/F,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,cAAA,CAAe,aAAA,CAAc,eAAe,CAAA;AACjE,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,cAAA,CAAe,aAAA,CAAc,mBAAmB,CAAA;AAEzE,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,OAAA,CAAQ,QAAA,GAAW,KAAA;AACnB,QAAA,OAAA,CAAQ,iBAAiB,OAAA,EAAS,MAAM,IAAA,CAAK,eAAA,CAAgB,OAAO,CAAC,CAAA;AAAA,MACvE;AAEA,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,WAAA,CAAY,QAAA,GAAW,KAAA;AACvB,QAAA,WAAA,CAAY,iBAAiB,OAAA,EAAS,MAAM,IAAA,CAAK,gBAAA,CAAiB,OAAO,CAAC,CAAA;AAAA,MAC5E;AAAA,IAEF,CAAA,CAAA,MAAQ;AACN,MAAA,OAAA,CAAQ,SAAA,GAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA;AAAA,IAUtB;AAAA,EACF;AAAA,EAEQ,QAAQ,CAAA,EAAmB;AACjC,IAAA,OAAO,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,OAAO,EAAE,OAAA,CAAQ,IAAA,EAAM,MAAM,CAAA,CAAE,QAAQ,IAAA,EAAM,MAAM,CAAA,CAAE,OAAA,CAAQ,MAAM,QAAQ,CAAA;AAAA,EACpG;AAAA,EAEQ,kBAAkB,EAAA,EAAoB;AAvZhD,IAAA,IAAA,EAAA;AAwZI,IAAA,MAAM,GAAA,GAAM,CAAC,CAAA,KAAc,CAAA,CAAE,QAAQ,IAAA,EAAM,OAAO,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,MAAM,CAAA,CAAE,OAAA,CAAQ,MAAM,MAAM,CAAA;AAE9F,IAAA,MAAM,KAAA,GAAQ,EAAA,CAAG,KAAA,CAAM,IAAI,CAAA;AAC3B,IAAA,MAAM,MAAgB,EAAC;AACvB,IAAA,IAAI,aAAA,GAAgB,KAAA;AACpB,IAAA,IAAI,MAAA,GAAS,KAAA;AACb,IAAA,IAAI,gBAAA,GAAA,CAAA,CAAmB,EAAA,GAAA,KAAA,CAAM,CAAC,CAAA,KAAP,mBAAU,IAAA,EAAA,MAAW,KAAA;AAE5C,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,MAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA;AACpB,MAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAG1B,MAAA,IAAI,CAAA,KAAM,KAAK,gBAAA,EAAkB;AAC/B,QAAA,aAAA,GAAgB,IAAA;AAChB,QAAA,GAAA,CAAI,IAAA,CAAK,CAAA,oBAAA,EAAuB,GAAA,CAAI,IAAI,CAAC,CAAA,OAAA,CAAS,CAAA;AAClD,QAAA;AAAA,MACF;AACA,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,IAAI,YAAY,KAAA,EAAO;AACrB,UAAA,aAAA,GAAgB,KAAA;AAChB,UAAA,GAAA,CAAI,IAAA,CAAK,CAAA,oBAAA,EAAuB,GAAA,CAAI,IAAI,CAAC,CAAA,OAAA,CAAS,CAAA;AAAA,QACpD,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,IAAA,CAAK,CAAA,oBAAA,EAAuB,GAAA,CAAI,IAAI,CAAC,CAAA,OAAA,CAAS,CAAA;AAAA,QACpD;AACA,QAAA;AAAA,MACF;AAGA,MAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA,EAAG;AAC7B,QAAA,MAAA,GAAS,CAAC,MAAA;AACV,QAAA,GAAA,CAAI,IAAA,CAAK,CAAA,sBAAA,EAAyB,GAAA,CAAI,IAAI,CAAC,CAAA,OAAA,CAAS,CAAA;AACpD,QAAA;AAAA,MACF;AACA,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,GAAA,CAAI,IAAA,CAAK,CAAA,sBAAA,EAAyB,GAAA,CAAI,IAAI,CAAC,CAAA,OAAA,CAAS,CAAA;AACpD,QAAA;AAAA,MACF;AAGA,MAAA,IAAI,WAAA,CAAY,IAAA,CAAK,OAAO,CAAA,EAAG;AAC7B,QAAA,GAAA,CAAI,IAAA,CAAK,CAAA,yBAAA,EAA4B,GAAA,CAAI,IAAI,CAAC,CAAA,OAAA,CAAS,CAAA;AACvD,QAAA;AAAA,MACF;AAGA,MAAA,IAAI,wBAAA,CAAyB,IAAA,CAAK,OAAO,CAAA,EAAG;AAC1C,QAAA,GAAA,CAAI,IAAA,CAAK,CAAA,oBAAA,EAAuB,GAAA,CAAI,IAAI,CAAC,CAAA,OAAA,CAAS,CAAA;AAClD,QAAA;AAAA,MACF;AAGA,MAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA,EAAG;AAC3B,QAAA,GAAA,CAAI,IAAA,CAAK,CAAA,uBAAA,EAA0B,GAAA,CAAI,IAAI,CAAC,CAAA,OAAA,CAAS,CAAA;AACrD,QAAA;AAAA,MACF;AAGA,MAAA,IAAI,WAAW,IAAA,CAAK,OAAO,KAAK,UAAA,CAAW,IAAA,CAAK,OAAO,CAAA,EAAG;AACxD,QAAA,GAAA,CAAI,KAAK,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,IAAI,CAAC,CAAC,CAAA;AACxC,QAAA;AAAA,MACF;AAGA,MAAA,GAAA,CAAI,KAAK,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,IAAI,CAAC,CAAC,CAAA;AAAA,IAC1C;AAEA,IAAA,OAAO,GAAA,CAAI,KAAK,IAAI,CAAA;AAAA,EACtB;AAAA,EAEQ,gBAAgB,OAAA,EAAyB;AAE/C,IAAA,IAAI,IAAA,GAAO,OAAA,CAAQ,OAAA,CAAQ,gBAAA,EAAkB,qCAAqC,CAAA;AAElF,IAAA,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,sCAAA,EAAwC,qCAAqC,CAAA;AAEjG,IAAA,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,YAAA,EAAc,mCAAmC,CAAA;AAErE,IAAA,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,0BAAA,EAA4B,0GAA0G,CAAA;AAC1J,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,YAAA,GAAqB;AAC3B,IAAA,IAAI,KAAK,cAAA,EAAgB;AACvB,MAAA,IAAA,CAAK,eAAe,MAAA,EAAO;AAC3B,MAAA,IAAA,CAAK,cAAA,GAAiB,MAAA;AAAA,IACxB;AACA,IAAA,IAAA,CAAK,aAAA,EAAc;AAAA,EACrB;AAAA,EAEA,MAAc,gBAAgB,IAAA,EAA6B;AACzD,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,IAAI,CAAA;AACxC,MAAA,IAAA,CAAK,UAAU,sBAAsB,CAAA;AAAA,IACvC,CAAA,CAAA,MAAQ;AACN,MAAA,IAAA,CAAK,UAAU,gBAAgB,CAAA;AAAA,IACjC;AAAA,EACF;AAAA,EAEQ,iBAAiB,OAAA,EAAuB;AAC9C,IAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,CAAC,OAAO,CAAA,EAAG,EAAE,IAAA,EAAM,eAAA,EAAiB,CAAA;AAC1D,IAAA,MAAM,GAAA,GAAM,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AACpC,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA;AACpC,IAAA,CAAA,CAAE,IAAA,GAAO,GAAA;AACT,IAAA,CAAA,CAAE,WAAW,CAAA,EAAG,IAAA,CAAK,gBAAA,CAAiB,QAAA,CAAS,KAAK,CAAC,CAAA,GAAA,CAAA;AACrD,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,CAAC,CAAA;AAC3B,IAAA,CAAA,CAAE,KAAA,EAAM;AACR,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,CAAC,CAAA;AAC3B,IAAA,GAAA,CAAI,gBAAgB,GAAG,CAAA;AAAA,EACzB;AAAA,EAEQ,iBAAiB,IAAA,EAAsB;AAC7C,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,aAAA,EAAe,GAAG,EAAE,WAAA,EAAY;AAAA,EACtD;AAAA,EAEQ,UAAU,OAAA,EAAuB;AACvC,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAC1C,IAAA,KAAA,CAAM,SAAA,GAAY,WAAA;AAClB,IAAA,KAAA,CAAM,WAAA,GAAc,OAAA;AACpB,IAAA,IAAA,CAAK,SAAA,CAAU,YAAY,KAAK,CAAA;AAEhC,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,KAAA,CAAM,SAAA,CAAU,IAAI,gBAAgB,CAAA;AAAA,IACtC,GAAG,EAAE,CAAA;AAEL,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,KAAA,CAAM,SAAA,CAAU,OAAO,gBAAgB,CAAA;AACvC,MAAA,UAAA,CAAW,MAAM,KAAA,CAAM,MAAA,EAAO,EAAG,GAAG,CAAA;AAAA,IACtC,GAAG,GAAI,CAAA;AAAA,EACT;AAAA,EAEO,OAAA,GAAgB;AA3hBzB,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA4hBI,IAAA,CAAA,EAAA,GAAA,IAAA,CAAK,kBAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAoB,MAAA,EAAA;AACpB,IAAA,CAAA,EAAA,GAAA,IAAA,CAAK,mBAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAqB,MAAA,EAAA;AACrB,IAAA,CAAA,EAAA,GAAA,IAAA,CAAK,iBAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmB,MAAA,EAAA;AAAA,EACrB;AACF,CAAA;ACvhBO,IAAM,kBAAA,GAA+C,CAAC,EAAE,MAAA,EAAQ,WAAU,KAAM;AACrF,EAAA,MAAM,YAAA,GAAeC,aAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,SAAA,GAAYA,aAAyB,IAAI,CAAA;AAE/C,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAE3B,IAAA,MAAM,OAAA,GAA4B;AAAA,MAChC,MAAA;AAAA,MACA,WAAW,YAAA,CAAa;AAAA,KAC1B;AAEA,IAAA,SAAA,CAAU,OAAA,GAAU,IAAI,SAAA,CAAU,OAAO,CAAA;AAEzC,IAAA,OAAO,MAAM;AAvBjB,MAAA,IAAA,EAAA;AAwBM,MAAA,CAAA,EAAA,GAAA,SAAA,CAAU,YAAV,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmB,OAAA,EAAA;AAAA,IACrB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBAAOC,cAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,YAAA,EAAc,SAAA,EAAsB,CAAA;AACvD","file":"react.js","sourcesContent":["export interface ThemeConfig {\n background?: string;\n text?: string;\n accent?: string;\n badge?: string;\n}\n\nexport function getStyles(theme?: ThemeConfig): string {\n const t = {\n background: theme?.background || '#0a0a0f',\n text: theme?.text || '#a0a0a8',\n accent: theme?.accent || '#e8e8ea',\n badge: theme?.badge || '#4ADE80',\n };\n\n return `\n @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&display=swap');\n\n .aeo-toggle {\n position: fixed;\n z-index: 2147483647;\n font-family: 'JetBrains Mono', monospace;\n font-size: 14px;\n animation: aeo-fade-in 0.3s ease;\n }\n\n .aeo-toggle.aeo-bottom-right {\n bottom: 20px;\n right: 20px;\n }\n\n .aeo-toggle.aeo-bottom-left {\n bottom: 20px;\n left: 20px;\n }\n\n .aeo-toggle.aeo-top-right {\n top: 20px;\n right: 20px;\n }\n\n .aeo-toggle.aeo-top-left {\n top: 20px;\n left: 20px;\n }\n\n .aeo-toggle-inner {\n display: flex;\n background: ${t.background};\n backdrop-filter: blur(10px);\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 24px;\n padding: 4px;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);\n }\n\n .aeo-toggle-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n border: none;\n background: transparent;\n color: ${t.text};\n cursor: pointer;\n border-radius: 20px;\n transition: all 0.2s ease;\n font-family: inherit;\n font-size: 14px;\n font-weight: 500;\n }\n\n .aeo-toggle-btn svg {\n width: 16px;\n height: 16px;\n fill: currentColor;\n }\n\n .aeo-toggle-btn:hover {\n background: rgba(255, 255, 255, 0.05);\n }\n\n .aeo-toggle-btn.aeo-active {\n background: ${t.accent};\n color: ${t.background};\n }\n\n /* Full-screen overlay */\n .aeo-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n background: #000;\n z-index: 2147483646;\n display: flex;\n flex-direction: column;\n animation: aeo-fade-in 0.2s ease;\n font-family: 'JetBrains Mono', monospace;\n isolation: isolate;\n }\n\n /* Top bar */\n .aeo-topbar {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 24px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n background: rgba(255, 255, 255, 0.02);\n flex-shrink: 0;\n }\n\n .aeo-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: rgba(74, 222, 128, 0.1);\n color: ${t.badge};\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.8px;\n border: 1px solid rgba(74, 222, 128, 0.2);\n }\n\n .aeo-badge-dot {\n width: 6px;\n height: 6px;\n background: ${t.badge};\n border-radius: 50%;\n flex-shrink: 0;\n }\n\n .aeo-route-tab {\n display: inline-flex;\n align-items: center;\n padding: 6px 14px;\n background: rgba(255, 255, 255, 0.05);\n color: ${t.accent};\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n border: 1px solid rgba(255, 255, 255, 0.08);\n }\n\n .aeo-topbar-spacer {\n flex: 1;\n }\n\n .aeo-topbar-actions {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .aeo-topbar-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background: transparent;\n color: ${t.text};\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n font-family: inherit;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n }\n\n .aeo-topbar-btn:hover:not(:disabled) {\n background: rgba(255, 255, 255, 0.05);\n color: ${t.accent};\n border-color: rgba(255, 255, 255, 0.2);\n }\n\n .aeo-topbar-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .aeo-topbar-btn svg {\n width: 14px;\n height: 14px;\n fill: currentColor;\n }\n\n .aeo-close-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background: transparent;\n color: ${t.text};\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n font-family: inherit;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n }\n\n .aeo-close-btn:hover {\n background: rgba(255, 60, 60, 0.1);\n color: #ff6b6b;\n border-color: rgba(255, 60, 60, 0.3);\n }\n\n .aeo-close-btn svg {\n width: 14px;\n height: 14px;\n fill: none;\n stroke: currentColor;\n }\n\n /* View tabs */\n .aeo-view-tabs {\n display: flex;\n gap: 2px;\n background: rgba(255, 255, 255, 0.05);\n border-radius: 8px;\n padding: 2px;\n border: 1px solid rgba(255, 255, 255, 0.08);\n }\n\n .aeo-view-tab {\n padding: 5px 12px;\n background: transparent;\n color: ${t.text};\n border: none;\n border-radius: 6px;\n font-family: inherit;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .aeo-view-tab:hover {\n background: rgba(255, 255, 255, 0.05);\n }\n\n .aeo-view-tab.aeo-view-active {\n background: rgba(255, 255, 255, 0.1);\n color: ${t.accent};\n }\n\n /* Metadata bar */\n .aeo-meta-bar {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n margin-bottom: 24px;\n background: rgba(255, 255, 255, 0.03);\n border: 1px solid rgba(255, 255, 255, 0.06);\n border-radius: 8px;\n font-size: 12px;\n color: ${t.text};\n }\n\n .aeo-meta-label {\n color: rgba(160, 160, 168, 0.5);\n margin-right: 4px;\n }\n\n .aeo-meta-sep {\n width: 1px;\n height: 14px;\n background: rgba(255, 255, 255, 0.1);\n }\n\n /* Rendered markdown view */\n .aeo-rendered {\n color: ${t.text};\n line-height: 1.75;\n font-size: 14px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n .aeo-rendered .aeo-r-h1 {\n font-size: 28px;\n font-weight: 700;\n color: ${t.accent};\n margin: 0 0 16px;\n padding-bottom: 12px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n line-height: 1.3;\n }\n\n .aeo-rendered .aeo-r-h2 {\n font-size: 22px;\n font-weight: 600;\n color: ${t.accent};\n margin: 32px 0 12px;\n line-height: 1.3;\n }\n\n .aeo-rendered .aeo-r-h3 {\n font-size: 18px;\n font-weight: 600;\n color: ${t.accent};\n margin: 24px 0 8px;\n line-height: 1.4;\n }\n\n .aeo-rendered .aeo-r-h4,\n .aeo-rendered .aeo-r-h5,\n .aeo-rendered .aeo-r-h6 {\n font-size: 15px;\n font-weight: 600;\n color: ${t.accent};\n margin: 20px 0 8px;\n }\n\n .aeo-rendered .aeo-r-p {\n margin: 0 0 12px;\n }\n\n .aeo-rendered .aeo-r-list {\n margin: 0 0 16px;\n padding-left: 24px;\n }\n\n .aeo-rendered .aeo-r-list li {\n margin: 4px 0;\n }\n\n .aeo-rendered .aeo-r-quote {\n margin: 16px 0;\n padding: 12px 20px;\n border-left: 3px solid ${t.badge};\n background: rgba(255, 255, 255, 0.02);\n color: ${t.text};\n font-style: italic;\n }\n\n .aeo-rendered .aeo-r-hr {\n border: none;\n border-top: 1px solid rgba(255, 255, 255, 0.08);\n margin: 24px 0;\n }\n\n .aeo-rendered .aeo-r-code {\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: 8px;\n padding: 16px;\n margin: 16px 0;\n font-family: 'JetBrains Mono', monospace;\n font-size: 13px;\n overflow-x: auto;\n color: ${t.badge};\n }\n\n .aeo-rendered .aeo-r-inline-code {\n background: rgba(255, 255, 255, 0.06);\n padding: 2px 6px;\n border-radius: 4px;\n font-family: 'JetBrains Mono', monospace;\n font-size: 0.9em;\n color: ${t.badge};\n }\n\n .aeo-rendered .aeo-r-link {\n color: #fff;\n text-decoration: none;\n border-bottom: 1px solid rgba(255, 255, 255, 0.3);\n transition: border-color 0.15s ease;\n }\n\n .aeo-rendered .aeo-r-link:hover {\n border-color: #fff;\n }\n\n .aeo-rendered strong {\n color: ${t.accent};\n font-weight: 600;\n }\n\n .aeo-rendered em {\n font-style: italic;\n opacity: 0.9;\n }\n\n /* Content area */\n .aeo-content-area {\n flex: 1;\n overflow-y: auto;\n padding: 40px 24px;\n }\n\n .aeo-content-wrapper {\n max-width: 800px;\n margin: 0 auto;\n }\n\n .aeo-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 16px;\n padding: 80px 24px;\n color: ${t.text};\n }\n\n .aeo-loading svg {\n width: 24px;\n height: 24px;\n fill: ${t.text};\n animation: aeo-spin 1s linear infinite;\n }\n\n .aeo-loading span {\n font-size: 13px;\n opacity: 0.6;\n }\n\n /* Markdown source display */\n .aeo-markdown-source {\n font-family: 'JetBrains Mono', monospace;\n font-size: 13px;\n line-height: 1.7;\n color: ${t.text};\n background: transparent;\n margin: 0;\n padding: 0;\n border: none;\n white-space: pre-wrap;\n word-wrap: break-word;\n overflow-x: auto;\n }\n\n .aeo-markdown-source code {\n font-family: inherit;\n background: transparent;\n }\n\n .aeo-markdown-source .hl-fm {\n color: rgba(160, 160, 168, 0.5);\n }\n\n .aeo-markdown-source .hl-heading {\n color: ${t.accent};\n font-weight: 600;\n }\n\n .aeo-markdown-source .hl-bold {\n color: ${t.accent};\n font-weight: 600;\n }\n\n .aeo-markdown-source .hl-italic {\n font-style: italic;\n color: ${t.accent};\n opacity: 0.85;\n }\n\n .aeo-markdown-source .hl-code {\n color: ${t.badge};\n }\n\n .aeo-markdown-source .hl-link {\n color: rgba(160, 160, 168, 0.6);\n }\n\n .aeo-markdown-source .hl-link-text {\n color: #fff;\n }\n\n .aeo-markdown-source .hl-link-url {\n color: rgba(160, 160, 168, 0.4);\n }\n\n .aeo-markdown-source .hl-quote {\n color: ${t.text};\n opacity: 0.7;\n font-style: italic;\n }\n\n .aeo-markdown-source .hl-hr {\n color: rgba(160, 160, 168, 0.3);\n }\n\n .aeo-error {\n text-align: center;\n padding: 80px 24px;\n color: ${t.text};\n }\n\n .aeo-error p {\n margin: 0 0 16px;\n font-size: 14px;\n }\n\n .aeo-attribution {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n color: rgba(160, 160, 168, 0.5);\n font-size: 11px;\n text-decoration: none;\n transition: color 0.15s ease;\n }\n\n .aeo-attribution:hover {\n color: ${t.accent};\n }\n\n .aeo-error a {\n color: #fff;\n text-decoration: none;\n padding: 8px 16px;\n border: 1px solid rgba(255, 255, 255, 0.15);\n border-radius: 8px;\n display: inline-block;\n margin: 4px;\n font-size: 13px;\n transition: all 0.15s ease;\n }\n\n .aeo-error a:hover {\n background: rgba(255, 255, 255, 0.05);\n border-color: rgba(255, 255, 255, 0.25);\n }\n\n .aeo-toast {\n position: fixed;\n bottom: 100px;\n left: 50%;\n transform: translateX(-50%) translateY(20px);\n background: ${t.background};\n color: ${t.accent};\n padding: 10px 20px;\n border-radius: 8px;\n border: 1px solid rgba(255, 255, 255, 0.15);\n font-family: 'JetBrains Mono', monospace;\n font-size: 13px;\n opacity: 0;\n transition: all 0.3s ease;\n z-index: 2147483647;\n }\n\n .aeo-toast.aeo-toast-show {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n\n @keyframes aeo-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n @keyframes aeo-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n\n @media (max-width: 640px) {\n .aeo-toggle {\n bottom: 12px !important;\n right: 12px !important;\n left: auto !important;\n top: auto !important;\n }\n\n .aeo-toggle-btn {\n padding: 6px 12px;\n font-size: 13px;\n }\n\n .aeo-toggle-btn span {\n display: none;\n }\n\n .aeo-topbar {\n padding: 10px 16px;\n gap: 8px;\n flex-wrap: wrap;\n }\n\n .aeo-topbar-btn span {\n display: none;\n }\n\n .aeo-close-btn span {\n display: none;\n }\n\n .aeo-view-tabs {\n order: 10;\n width: 100%;\n justify-content: center;\n }\n\n .aeo-meta-bar {\n font-size: 11px;\n gap: 8px;\n }\n\n .aeo-content-area {\n padding: 24px 16px;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .aeo-toggle,\n .aeo-overlay,\n .aeo-toast {\n animation: none;\n transition: none;\n }\n }\n `.trim();\n}\n","export interface Icons {\n human: string;\n ai: string;\n close: string;\n copy: string;\n download: string;\n spinner: string;\n}\n\nexport function getIcons(): Icons {\n return {\n human: `<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 2C10.9 2 10 2.9 10 4C10 5.1 10.9 6 12 6C13.1 6 14 5.1 14 4C14 2.9 13.1 2 12 2ZM10 7C10 7 8 7 8 9V13C8 13 8 14 9 14H10V21C10 21 10 22 11 22H13C13 22 14 22 14 21V14H15C15 14 16 14 16 13V9C16 7 14 7 14 7H10Z\" fill=\"currentColor\"/>\n </svg>`,\n\n ai: `<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11 2a1 1 0 0 1 2 0v2h3a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H8a3 3 0 0 1-3-3V7a3 3 0 0 1 3-3h3V2ZM9.5 7a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Zm5 0a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Z\"/>\n <rect x=\"6\" y=\"17\" width=\"12\" height=\"5\" rx=\"2\"/>\n <rect x=\"1\" y=\"8\" width=\"3\" height=\"4\" rx=\"1.5\"/>\n <rect x=\"20\" y=\"8\" width=\"3\" height=\"4\" rx=\"1.5\"/>\n </svg>`,\n\n close: `<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M18 6L6 18M6 6L18 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>`,\n\n copy: `<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z\" fill=\"currentColor\"/>\n </svg>`,\n\n download: `<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 20H19V18H5V20ZM19 9H15V3H9V9H5L12 16L19 9Z\" fill=\"currentColor\"/>\n </svg>`,\n\n spinner: `<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 2V6M12 18V22M4.93 4.93L7.76 7.76M16.24 16.24L19.07 19.07M2 12H6M18 12H22M4.93 19.07L7.76 16.24M16.24 7.76L19.07 4.93\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>`,\n };\n}\n","export function extractDOMToMarkdown(): string {\n const lines: string[] = [];\n const processed = new WeakSet();\n\n // Add page title\n const title = document.title;\n if (title) {\n lines.push(`# ${title}`, '');\n }\n\n // Add meta description\n const description = document.querySelector('meta[name=\"description\"]') as HTMLMetaElement;\n if (description?.content) {\n lines.push(`> ${description.content}`, '');\n }\n\n // Find main content area\n const mainContent = findMainContent();\n if (mainContent) {\n processNode(mainContent, lines, processed);\n } else {\n // Fallback to body\n processNode(document.body, lines, processed);\n }\n\n return lines.join('\\n').trim();\n}\n\nfunction findMainContent(): Element | null {\n const selectors = [\n 'main',\n '[role=\"main\"]',\n 'article',\n '.content',\n '.main-content',\n '#content',\n '#main-content',\n '.container',\n '.wrapper',\n ];\n\n for (const selector of selectors) {\n const element = document.querySelector(selector);\n if (element) return element;\n }\n\n return null;\n}\n\nfunction processNode(node: Node, lines: string[], processed: WeakSet<object>): void {\n if (processed.has(node)) return;\n processed.add(node);\n\n // Skip certain elements\n if (node instanceof HTMLElement) {\n const tagName = node.tagName.toLowerCase();\n const skipTags = ['script', 'style', 'noscript', 'iframe', 'svg', 'canvas', 'video', 'audio'];\n if (skipTags.includes(tagName)) return;\n\n // Skip hidden elements\n const style = window.getComputedStyle(node);\n if (style.display === 'none' || style.visibility === 'hidden') return;\n\n // Skip navigation and footer elements (unless they contain important content)\n if (tagName === 'nav' || tagName === 'footer' || node.classList.contains('nav') || node.classList.contains('footer')) {\n if (!hasImportantContent(node)) return;\n }\n\n // Skip the aeo widget itself\n if (node.classList.contains('aeo-toggle') || node.classList.contains('aeo-overlay')) return;\n }\n\n if (node instanceof HTMLElement) {\n const tagName = node.tagName.toLowerCase();\n\n switch (tagName) {\n case 'h1':\n lines.push('', `# ${getTextContent(node)}`, '');\n break;\n case 'h2':\n lines.push('', `## ${getTextContent(node)}`, '');\n break;\n case 'h3':\n lines.push('', `### ${getTextContent(node)}`, '');\n break;\n case 'h4':\n lines.push('', `#### ${getTextContent(node)}`, '');\n break;\n case 'h5':\n lines.push('', `##### ${getTextContent(node)}`, '');\n break;\n case 'h6':\n lines.push('', `###### ${getTextContent(node)}`, '');\n break;\n case 'p':\n const text = getTextContent(node);\n if (text) lines.push('', text, '');\n break;\n case 'blockquote':\n const quoteText = getTextContent(node);\n if (quoteText) {\n lines.push('', ...quoteText.split('\\n').map(line => `> ${line}`), '');\n }\n break;\n case 'pre':\n const codeElement = node.querySelector('code');\n if (codeElement) {\n const lang = extractLanguage(codeElement);\n lines.push('', `\\`\\`\\`${lang}`, getTextContent(codeElement), '\\`\\`\\`', '');\n } else {\n lines.push('', '\\`\\`\\`', getTextContent(node), '\\`\\`\\`', '');\n }\n break;\n case 'code':\n if (node.parentElement?.tagName.toLowerCase() !== 'pre') {\n const codeText = getTextContent(node);\n if (codeText && !lines[lines.length - 1]?.includes(codeText)) {\n lines[lines.length - 1] = (lines[lines.length - 1] || '') + ` \\`${codeText}\\` `;\n }\n }\n break;\n case 'ul':\n case 'ol':\n processListItems(node as HTMLUListElement | HTMLOListElement, lines, processed, tagName === 'ol');\n lines.push('');\n break;\n case 'a':\n const href = (node as HTMLAnchorElement).href;\n const linkText = getTextContent(node);\n if (linkText && href && !href.startsWith('javascript:')) {\n const markdown = `[${linkText}](${href})`;\n if (!lines[lines.length - 1]?.includes(markdown)) {\n lines[lines.length - 1] = (lines[lines.length - 1] || '') + ' ' + markdown + ' ';\n }\n } else {\n processChildren(node, lines, processed);\n }\n break;\n case 'img':\n const img = node as HTMLImageElement;\n if (img.src && img.alt) {\n lines.push('', ``, '');\n }\n break;\n case 'table':\n processTable(node as HTMLTableElement, lines);\n lines.push('');\n break;\n case 'strong':\n case 'b':\n const boldText = getTextContent(node);\n if (boldText) {\n lines[lines.length - 1] = (lines[lines.length - 1] || '') + ` **${boldText}** `;\n }\n break;\n case 'em':\n case 'i':\n const italicText = getTextContent(node);\n if (italicText) {\n lines[lines.length - 1] = (lines[lines.length - 1] || '') + ` *${italicText}* `;\n }\n break;\n case 'hr':\n lines.push('', '---', '');\n break;\n default:\n processChildren(node, lines, processed);\n }\n } else if (node.nodeType === Node.TEXT_NODE) {\n const text = node.textContent?.trim();\n if (text && !isWhitespaceOnly(text)) {\n if (lines.length === 0 || lines[lines.length - 1] === '') {\n lines.push(text);\n } else {\n lines[lines.length - 1] += ' ' + text;\n }\n }\n } else {\n processChildren(node, lines, processed);\n }\n}\n\nfunction processChildren(node: Node, lines: string[], processed: WeakSet<object>): void {\n for (const child of Array.from(node.childNodes)) {\n processNode(child, lines, processed);\n }\n}\n\nfunction processListItems(list: HTMLUListElement | HTMLOListElement, lines: string[], processed: WeakSet<object>, isOrdered: boolean): void {\n const items = Array.from(list.querySelectorAll(':scope > li'));\n items.forEach((item, index) => {\n const prefix = isOrdered ? `${index + 1}. ` : '- ';\n const text = getTextContent(item);\n if (text) {\n lines.push(prefix + text);\n }\n processed.add(item);\n });\n}\n\nfunction processTable(table: HTMLTableElement, lines: string[]): void {\n const rows = Array.from(table.querySelectorAll('tr'));\n if (rows.length === 0) return;\n\n const headers = Array.from(rows[0].querySelectorAll('th, td')).map(cell => getTextContent(cell));\n if (headers.length > 0) {\n lines.push('', '| ' + headers.join(' | ') + ' |');\n lines.push('|' + headers.map(() => ' --- ').join('|') + '|');\n\n for (let i = 1; i < rows.length; i++) {\n const cells = Array.from(rows[i].querySelectorAll('td')).map(cell => getTextContent(cell));\n if (cells.length > 0) {\n lines.push('| ' + cells.join(' | ') + ' |');\n }\n }\n }\n}\n\nfunction getTextContent(node: Node): string {\n // Use innerText for elements — it inserts spaces at element boundaries\n // (e.g. <span>with</span><span>modern</span> → \"with modern\" not \"withmodern\")\n if (node instanceof HTMLElement) {\n return node.innerText?.trim().replace(/\\s+/g, ' ') || '';\n }\n return node.textContent?.trim().replace(/\\s+/g, ' ') || '';\n}\n\nfunction isWhitespaceOnly(text: string): boolean {\n return /^\\s*$/.test(text);\n}\n\nfunction hasImportantContent(node: HTMLElement): boolean {\n const importantKeywords = ['documentation', 'docs', 'api', 'guide', 'tutorial', 'reference'];\n const text = node.textContent?.toLowerCase() || '';\n return importantKeywords.some(keyword => text.includes(keyword));\n}\n\nfunction extractLanguage(codeElement: Element): string {\n const classes = Array.from(codeElement.classList);\n for (const cls of classes) {\n if (cls.startsWith('language-')) {\n return cls.replace('language-', '');\n }\n if (cls.startsWith('lang-')) {\n return cls.replace('lang-', '');\n }\n }\n\n const pre = codeElement.closest('pre');\n if (pre) {\n const preClasses = Array.from(pre.classList);\n for (const cls of preClasses) {\n if (cls.startsWith('language-')) {\n return cls.replace('language-', '');\n }\n if (cls.startsWith('lang-')) {\n return cls.replace('lang-', '');\n }\n }\n }\n\n return '';\n}\n","import type { AeoConfig } from '../types';\nimport { getStyles } from './styles';\nimport { getIcons } from './icons';\nimport { extractDOMToMarkdown } from './extract';\n\nexport interface AeoWidgetOptions {\n config?: Partial<AeoConfig>;\n container?: HTMLElement;\n}\n\nexport class AeoWidget {\n private config: AeoConfig;\n private container: HTMLElement;\n private isAIMode: boolean = false;\n private toggleElement?: HTMLElement;\n private overlayElement?: HTMLElement;\n private styleElement?: HTMLStyleElement;\n\n constructor(options: AeoWidgetOptions = {}) {\n this.config = this.resolveConfig(options.config);\n this.container = options.container || document.body;\n\n if (this.config.widget?.enabled !== false) {\n this.init();\n }\n }\n\n private resolveConfig(config?: Partial<AeoConfig>): AeoConfig {\n const defaultConfig: AeoConfig = {\n title: document.title || 'Website',\n description: '',\n url: window.location.origin,\n contentDir: 'docs',\n outDir: 'dist',\n generators: {\n robotsTxt: true,\n llmsTxt: true,\n llmsFullTxt: true,\n rawMarkdown: true,\n manifest: true,\n sitemap: true,\n aiIndex: true,\n },\n widget: {\n enabled: true,\n position: 'bottom-right',\n theme: {\n background: '#0a0a0f',\n text: '#a0a0a8',\n accent: '#e8e8ea',\n badge: '#4ADE80',\n },\n humanLabel: 'Human',\n aiLabel: 'AI',\n showBadge: true,\n },\n };\n\n return { ...defaultConfig, ...config };\n }\n\n private init(): void {\n this.injectStyles();\n this.createToggle();\n this.bindEvents();\n }\n\n private injectStyles(): void {\n if (this.styleElement) return;\n\n this.styleElement = document.createElement('style');\n this.styleElement.textContent = getStyles(this.config.widget?.theme);\n document.head.appendChild(this.styleElement);\n }\n\n private createToggle(): void {\n const position = this.config.widget?.position || 'bottom-right';\n const icons = getIcons();\n\n this.toggleElement = document.createElement('div');\n this.toggleElement.className = `aeo-toggle aeo-${position}`;\n this.toggleElement.innerHTML = `\n <div class=\"aeo-toggle-inner\">\n <button class=\"aeo-toggle-btn aeo-human-btn aeo-active\" data-mode=\"human\">\n ${icons.human}\n <span>${this.config.widget?.humanLabel || 'Human'}</span>\n </button>\n <button class=\"aeo-toggle-btn aeo-ai-btn\" data-mode=\"ai\">\n ${icons.ai}\n <span>${this.config.widget?.aiLabel || 'AI'}</span>\n </button>\n </div>\n `;\n\n this.container.appendChild(this.toggleElement);\n }\n\n private bindEvents(): void {\n if (!this.toggleElement) return;\n\n this.toggleElement.addEventListener('click', (e) => {\n const target = e.target as HTMLElement;\n const btn = target.closest('.aeo-toggle-btn') as HTMLElement;\n if (!btn) return;\n\n const mode = btn.dataset.mode;\n if (mode === 'ai' && !this.isAIMode) {\n this.switchToAI();\n } else if (mode === 'human' && this.isAIMode) {\n this.switchToHuman();\n }\n });\n\n document.addEventListener('keydown', (e) => {\n if (e.key === 'Escape' && this.overlayElement) {\n this.closeOverlay();\n }\n });\n }\n\n private async switchToAI(): Promise<void> {\n this.isAIMode = true;\n this.updateToggleState();\n await this.showOverlay();\n }\n\n private switchToHuman(): void {\n this.isAIMode = false;\n this.updateToggleState();\n this.closeOverlay();\n }\n\n private updateToggleState(): void {\n if (!this.toggleElement) return;\n\n const humanBtn = this.toggleElement.querySelector('.aeo-human-btn');\n const aiBtn = this.toggleElement.querySelector('.aeo-ai-btn');\n\n if (this.isAIMode) {\n humanBtn?.classList.remove('aeo-active');\n aiBtn?.classList.add('aeo-active');\n } else {\n humanBtn?.classList.add('aeo-active');\n aiBtn?.classList.remove('aeo-active');\n }\n }\n\n private getMarkdownPath(): string {\n const currentPath = window.location.pathname;\n if (currentPath === '/' || currentPath.endsWith('/')) {\n return `${currentPath}index.md`;\n }\n return `${currentPath}.md`;\n }\n\n private async showOverlay(): Promise<void> {\n const icons = getIcons();\n const mdPath = this.getMarkdownPath();\n\n this.overlayElement = document.createElement('div');\n this.overlayElement.className = 'aeo-overlay';\n this.overlayElement.innerHTML = `\n <div class=\"aeo-topbar\">\n ${this.config.widget?.showBadge !== false ? '<span class=\"aeo-badge\"><span class=\"aeo-badge-dot\"></span>LLM-READY</span>' : ''}\n <span class=\"aeo-route-tab\">${mdPath}</span>\n <div class=\"aeo-view-tabs\">\n <button class=\"aeo-view-tab aeo-view-active\" data-view=\"rendered\">Rendered</button>\n <button class=\"aeo-view-tab\" data-view=\"source\">Source</button>\n </div>\n <div class=\"aeo-topbar-spacer\"></div>\n <a class=\"aeo-attribution\" href=\"https://aeojs.org\" target=\"_blank\" rel=\"noopener\">by aeo.js</a>\n <div class=\"aeo-topbar-actions\">\n <button class=\"aeo-topbar-btn aeo-copy-btn\" disabled>\n ${icons.copy}\n <span>Copy</span>\n </button>\n <button class=\"aeo-topbar-btn aeo-download-btn\" disabled>\n ${icons.download}\n <span>Download .md</span>\n </button>\n <button class=\"aeo-close-btn\">\n ${icons.close}\n <span>Close</span>\n </button>\n </div>\n </div>\n <div class=\"aeo-content-area\">\n <div class=\"aeo-content-wrapper\">\n <div class=\"aeo-loading\">\n ${icons.spinner}\n <span>Loading AI-optimized content...</span>\n </div>\n </div>\n </div>\n `;\n\n this.container.appendChild(this.overlayElement);\n\n const closeBtn = this.overlayElement.querySelector('.aeo-close-btn');\n closeBtn?.addEventListener('click', () => this.closeOverlay());\n\n // View tab switching\n const viewTabs = this.overlayElement.querySelectorAll('.aeo-view-tab');\n viewTabs.forEach(tab => {\n tab.addEventListener('click', () => {\n viewTabs.forEach(t => t.classList.remove('aeo-view-active'));\n tab.classList.add('aeo-view-active');\n const view = (tab as HTMLElement).dataset.view;\n const rendered = this.overlayElement?.querySelector('.aeo-rendered') as HTMLElement;\n const source = this.overlayElement?.querySelector('.aeo-markdown-source') as HTMLElement;\n if (rendered && source) {\n rendered.style.display = view === 'rendered' ? 'block' : 'none';\n source.style.display = view === 'source' ? 'block' : 'none';\n }\n });\n });\n\n await this.loadContent();\n }\n\n /**\n * Strip YAML frontmatter from markdown content.\n */\n private stripFrontmatter(md: string): { frontmatter: Record<string, string>; body: string } {\n const frontmatter: Record<string, string> = {};\n let body = md;\n\n if (md.startsWith('---')) {\n const endIndex = md.indexOf('---', 3);\n if (endIndex !== -1) {\n const fmBlock = md.slice(3, endIndex).trim();\n body = md.slice(endIndex + 3).trim();\n for (const line of fmBlock.split('\\n')) {\n const colonIdx = line.indexOf(':');\n if (colonIdx > 0) {\n const key = line.slice(0, colonIdx).trim();\n const val = line.slice(colonIdx + 1).trim().replace(/^[\"']|[\"']$/g, '');\n frontmatter[key] = val;\n }\n }\n }\n }\n\n return { frontmatter, body };\n }\n\n /**\n * Convert markdown to simple rendered HTML for the \"Rendered\" view.\n */\n private renderMarkdown(md: string): string {\n const esc = (s: string) => s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n\n const lines = md.split('\\n');\n const html: string[] = [];\n let inList = false;\n let inCode = false;\n let codeContent: string[] = [];\n\n for (const line of lines) {\n const trimmed = line.trim();\n\n // Code blocks\n if (trimmed.startsWith('```')) {\n if (inCode) {\n html.push(`<pre class=\"aeo-r-code\"><code>${esc(codeContent.join('\\n'))}</code></pre>`);\n codeContent = [];\n inCode = false;\n } else {\n if (inList) { html.push('</ul>'); inList = false; }\n inCode = true;\n }\n continue;\n }\n if (inCode) { codeContent.push(line); continue; }\n\n // Empty line\n if (!trimmed) {\n if (inList) { html.push('</ul>'); inList = false; }\n continue;\n }\n\n // Headings\n const headingMatch = trimmed.match(/^(#{1,6})\\s+(.*)/);\n if (headingMatch) {\n if (inList) { html.push('</ul>'); inList = false; }\n const level = headingMatch[1].length;\n html.push(`<h${level} class=\"aeo-r-h${level}\">${this.renderInlineMarkdown(esc(headingMatch[2]))}</h${level}>`);\n continue;\n }\n\n // Horizontal rule\n if (/^(-{3,}|\\*{3,}|_{3,})$/.test(trimmed)) {\n if (inList) { html.push('</ul>'); inList = false; }\n html.push('<hr class=\"aeo-r-hr\">');\n continue;\n }\n\n // Blockquote\n if (trimmed.startsWith('>')) {\n if (inList) { html.push('</ul>'); inList = false; }\n html.push(`<blockquote class=\"aeo-r-quote\">${this.renderInlineMarkdown(esc(trimmed.slice(1).trim()))}</blockquote>`);\n continue;\n }\n\n // List items\n const listMatch = trimmed.match(/^[-*+]\\s+(.*)/);\n if (listMatch) {\n if (!inList) { html.push('<ul class=\"aeo-r-list\">'); inList = true; }\n html.push(`<li>${this.renderInlineMarkdown(esc(listMatch[1]))}</li>`);\n continue;\n }\n\n // Regular paragraph\n if (inList) { html.push('</ul>'); inList = false; }\n html.push(`<p class=\"aeo-r-p\">${this.renderInlineMarkdown(esc(trimmed))}</p>`);\n }\n\n if (inList) html.push('</ul>');\n if (inCode) html.push(`<pre class=\"aeo-r-code\"><code>${esc(codeContent.join('\\n'))}</code></pre>`);\n\n return html.join('\\n');\n }\n\n private renderInlineMarkdown(text: string): string {\n // Bold\n let out = text.replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>');\n // Italic\n out = out.replace(/(?<!\\*)\\*(?!\\*)(.+?)(?<!\\*)\\*(?!\\*)/g, '<em>$1</em>');\n // Inline code\n out = out.replace(/`([^`]+)`/g, '<code class=\"aeo-r-inline-code\">$1</code>');\n // Links\n out = out.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<a class=\"aeo-r-link\" href=\"$2\" target=\"_blank\" rel=\"noopener\">$1</a>');\n return out;\n }\n\n private async loadContent(): Promise<void> {\n if (!this.overlayElement) return;\n\n const wrapper = this.overlayElement.querySelector('.aeo-content-wrapper');\n if (!wrapper) return;\n\n try {\n const mdPath = this.getMarkdownPath();\n const response = await fetch(mdPath);\n let content: string;\n\n const contentType = response.headers.get('content-type') || '';\n if (response.ok && !contentType.includes('text/html')) {\n const text = await response.text();\n // Guard against HTML being served from catch-all routes\n const trimmed = text.trimStart();\n if (trimmed.startsWith('<!') || trimmed.startsWith('<html') || trimmed.startsWith('<HTML')) {\n content = extractDOMToMarkdown();\n } else {\n content = text;\n }\n } else {\n content = extractDOMToMarkdown();\n }\n\n const { frontmatter, body } = this.stripFrontmatter(content);\n\n // Build frontmatter metadata bar\n const metaItems: string[] = [];\n if (frontmatter.title) metaItems.push(`<span class=\"aeo-meta-label\">Title:</span> ${this.escHtml(frontmatter.title)}`);\n if (frontmatter.url) metaItems.push(`<span class=\"aeo-meta-label\">URL:</span> <a class=\"aeo-r-link\" href=\"${this.escHtml(frontmatter.url)}\" target=\"_blank\" rel=\"noopener\">${this.escHtml(frontmatter.url)}</a>`);\n const metaBar = metaItems.length > 0\n ? `<div class=\"aeo-meta-bar\">${metaItems.join('<span class=\"aeo-meta-sep\"></span>')}</div>`\n : '';\n\n wrapper.innerHTML = `\n ${metaBar}\n <div class=\"aeo-rendered\">${this.renderMarkdown(body)}</div>\n <pre class=\"aeo-markdown-source\" style=\"display:none\"><code>${this.highlightMarkdown(content)}</code></pre>\n `;\n\n const copyBtn = this.overlayElement.querySelector('.aeo-copy-btn') as HTMLButtonElement;\n const downloadBtn = this.overlayElement.querySelector('.aeo-download-btn') as HTMLButtonElement;\n\n if (copyBtn) {\n copyBtn.disabled = false;\n copyBtn.addEventListener('click', () => this.copyToClipboard(content));\n }\n\n if (downloadBtn) {\n downloadBtn.disabled = false;\n downloadBtn.addEventListener('click', () => this.downloadMarkdown(content));\n }\n\n } catch {\n wrapper.innerHTML = `\n <div class=\"aeo-error\">\n <p>Unable to load AI-optimized content.</p>\n <p>Try these alternatives:</p>\n <div>\n <a href=\"/llms.txt\" target=\"_blank\">llms.txt</a>\n <a href=\"/llms-full.txt\" target=\"_blank\">llms-full.txt</a>\n </div>\n </div>\n `;\n }\n }\n\n private escHtml(s: string): string {\n return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"');\n }\n\n private highlightMarkdown(md: string): string {\n const esc = (s: string) => s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n\n const lines = md.split('\\n');\n const out: string[] = [];\n let inFrontmatter = false;\n let inCode = false;\n let frontmatterStart = lines[0]?.trim() === '---';\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const trimmed = line.trim();\n\n // Frontmatter handling\n if (i === 0 && frontmatterStart) {\n inFrontmatter = true;\n out.push(`<span class=\"hl-fm\">${esc(line)}</span>`);\n continue;\n }\n if (inFrontmatter) {\n if (trimmed === '---') {\n inFrontmatter = false;\n out.push(`<span class=\"hl-fm\">${esc(line)}</span>`);\n } else {\n out.push(`<span class=\"hl-fm\">${esc(line)}</span>`);\n }\n continue;\n }\n\n // Code block\n if (trimmed.startsWith('```')) {\n inCode = !inCode;\n out.push(`<span class=\"hl-code\">${esc(line)}</span>`);\n continue;\n }\n if (inCode) {\n out.push(`<span class=\"hl-code\">${esc(line)}</span>`);\n continue;\n }\n\n // Headings\n if (/^#{1,6}\\s/.test(trimmed)) {\n out.push(`<span class=\"hl-heading\">${esc(line)}</span>`);\n continue;\n }\n\n // Horizontal rule\n if (/^(-{3,}|\\*{3,}|_{3,})$/.test(trimmed)) {\n out.push(`<span class=\"hl-hr\">${esc(line)}</span>`);\n continue;\n }\n\n // Blockquote\n if (trimmed.startsWith('>')) {\n out.push(`<span class=\"hl-quote\">${esc(line)}</span>`);\n continue;\n }\n\n // List items\n if (/^[-*+]\\s/.test(trimmed) || /^\\d+\\.\\s/.test(trimmed)) {\n out.push(this.highlightInline(esc(line)));\n continue;\n }\n\n // Regular text with inline highlights\n out.push(this.highlightInline(esc(line)));\n }\n\n return out.join('\\n');\n }\n\n private highlightInline(escaped: string): string {\n // Bold **text**\n let text = escaped.replace(/\\*\\*(.+?)\\*\\*/g, '<span class=\"hl-bold\">**$1**</span>');\n // Italic *text*\n text = text.replace(/(?<!\\*)\\*(?!\\*)(.+?)(?<!\\*)\\*(?!\\*)/g, '<span class=\"hl-italic\">*$1*</span>');\n // Inline code `text`\n text = text.replace(/`([^`]+)`/g, '<span class=\"hl-code\">`$1`</span>');\n // Links [text](url)\n text = text.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<span class=\"hl-link\">[<span class=\"hl-link-text\">$1</span>](<span class=\"hl-link-url\">$2</span>)</span>');\n return text;\n }\n\n private closeOverlay(): void {\n if (this.overlayElement) {\n this.overlayElement.remove();\n this.overlayElement = undefined;\n }\n this.switchToHuman();\n }\n\n private async copyToClipboard(text: string): Promise<void> {\n try {\n await navigator.clipboard.writeText(text);\n this.showToast('Copied to clipboard!');\n } catch {\n this.showToast('Failed to copy');\n }\n }\n\n private downloadMarkdown(content: string): void {\n const blob = new Blob([content], { type: 'text/markdown' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `${this.sanitizeFilename(document.title)}.md`;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n }\n\n private sanitizeFilename(name: string): string {\n return name.replace(/[^a-z0-9]/gi, '-').toLowerCase();\n }\n\n private showToast(message: string): void {\n const toast = document.createElement('div');\n toast.className = 'aeo-toast';\n toast.textContent = message;\n this.container.appendChild(toast);\n\n setTimeout(() => {\n toast.classList.add('aeo-toast-show');\n }, 10);\n\n setTimeout(() => {\n toast.classList.remove('aeo-toast-show');\n setTimeout(() => toast.remove(), 300);\n }, 2000);\n }\n\n public destroy(): void {\n this.toggleElement?.remove();\n this.overlayElement?.remove();\n this.styleElement?.remove();\n }\n}\n\nexport function createAeoWidget(options?: AeoWidgetOptions): AeoWidget {\n return new AeoWidget(options);\n}\n","import React, { useEffect, useRef } from 'react';\nimport type { AeoConfig } from '../types';\nimport { AeoWidget, type AeoWidgetOptions } from './core';\n\nexport interface AeoWidgetProps {\n config?: Partial<AeoConfig>;\n className?: string;\n}\n\nexport const AeoWidgetComponent: React.FC<AeoWidgetProps> = ({ config, className }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const widgetRef = useRef<AeoWidget | null>(null);\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const options: AeoWidgetOptions = {\n config,\n container: containerRef.current,\n };\n\n widgetRef.current = new AeoWidget(options);\n\n return () => {\n widgetRef.current?.destroy();\n };\n }, [config]);\n\n return <div ref={containerRef} className={className} />;\n};\n\n// Export with a simpler name\nexport { AeoWidgetComponent as AeoWidget };"]}
|
package/dist/react.mjs
CHANGED
|
@@ -1187,8 +1187,15 @@ var AeoWidget = class {
|
|
|
1187
1187
|
const mdPath = this.getMarkdownPath();
|
|
1188
1188
|
const response = await fetch(mdPath);
|
|
1189
1189
|
let content;
|
|
1190
|
-
|
|
1191
|
-
|
|
1190
|
+
const contentType = response.headers.get("content-type") || "";
|
|
1191
|
+
if (response.ok && !contentType.includes("text/html")) {
|
|
1192
|
+
const text = await response.text();
|
|
1193
|
+
const trimmed = text.trimStart();
|
|
1194
|
+
if (trimmed.startsWith("<!") || trimmed.startsWith("<html") || trimmed.startsWith("<HTML")) {
|
|
1195
|
+
content = extractDOMToMarkdown();
|
|
1196
|
+
} else {
|
|
1197
|
+
content = text;
|
|
1198
|
+
}
|
|
1192
1199
|
} else {
|
|
1193
1200
|
content = extractDOMToMarkdown();
|
|
1194
1201
|
}
|