@seed-ship/mcp-ui-solid 1.0.42 → 1.0.43
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/components/UIResourceRenderer.cjs +16 -0
- package/dist/components/UIResourceRenderer.cjs.map +1 -1
- package/dist/components/UIResourceRenderer.d.ts.map +1 -1
- package/dist/components/UIResourceRenderer.js +16 -0
- package/dist/components/UIResourceRenderer.js.map +1 -1
- package/package.json +1 -1
- package/src/components/UIResourceRenderer.tsx +21 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -84,6 +84,22 @@ function renderCellValue(value) {
|
|
|
84
84
|
if (value === null || value === void 0) {
|
|
85
85
|
return "-";
|
|
86
86
|
}
|
|
87
|
+
if (typeof value === "object" && value !== null) {
|
|
88
|
+
if (value.url) {
|
|
89
|
+
const label = value.name || value.label || value.title || value.url;
|
|
90
|
+
const sanitizedLabel = purify_es.sanitize(String(label));
|
|
91
|
+
const sanitizedUrl = purify_es.sanitize(String(value.url));
|
|
92
|
+
return `<a href="${sanitizedUrl}" target="_blank" rel="noopener noreferrer" class="text-blue-600 dark:text-blue-400 hover:underline">${sanitizedLabel}</a>`;
|
|
93
|
+
}
|
|
94
|
+
if (value.name || value.label || value.title) {
|
|
95
|
+
return purify_es.sanitize(String(value.name || value.label || value.title));
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
return JSON.stringify(value);
|
|
99
|
+
} catch {
|
|
100
|
+
return "-";
|
|
101
|
+
}
|
|
102
|
+
}
|
|
87
103
|
let strValue = String(value);
|
|
88
104
|
strValue = strValue.replace(/\s*[–-]\s*undefined\s*$/gi, "");
|
|
89
105
|
strValue = strValue.replace(/^undefined\s*[–-]\s*/gi, "");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UIResourceRenderer.cjs","sources":["../../src/components/UIResourceRenderer.tsx"],"sourcesContent":["/**\n * UI Resource Renderer Component\n * Phase 0: Foundation with iframe sandbox and composite grid support\n */\n\nimport DOMPurify from 'dompurify'\nimport { Component, createSignal, Show, For, createMemo, createEffect } from 'solid-js'\nimport { isServer } from 'solid-js/web'\nimport type { UIComponent, UILayout, RendererError, ComponentType } from '../types'\nimport { validateComponent, DEFAULT_RESOURCE_LIMITS } from '../services/validation'\nimport { GenerativeUIErrorBoundary } from './GenerativeUIErrorBoundary'\nimport { marked } from 'marked'\n\n/**\n * Props for UIResourceRenderer\n */\nexport interface UIResourceRendererProps {\n /**\n * Single component or full layout to render\n */\n content: UIComponent | UILayout\n\n /**\n * Lazy loading (default: true)\n */\n lazyLoad?: boolean\n\n /**\n * Error callback\n */\n onError?: (error: RendererError) => void\n\n /**\n * Custom CSS class\n */\n class?: string\n}\n\n/**\n * Render a single chart component in a sandboxed iframe\n */\nfunction ChartRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n const [iframeUrl, setIframeUrl] = createSignal<string>()\n const [isLoading, setIsLoading] = createSignal(true)\n const [error, setError] = createSignal<string>()\n\n // Use createEffect instead of onMount for SSR compatibility\n // createEffect runs after hydration on client-side\n createEffect(() => {\n const chartParams = props.component.params as any\n if (!chartParams) return\n\n // Build Quickchart URL\n const chartConfig = {\n type: chartParams.type,\n data: chartParams.data,\n options: {\n ...chartParams.options,\n responsive: true,\n maintainAspectRatio: false,\n },\n }\n\n // Encode chart configuration for Quickchart API\n const configStr = encodeURIComponent(JSON.stringify(chartConfig))\n const url = `https://quickchart.io/chart?c=${configStr}&width=500&height=300&devicePixelRatio=2`\n\n // Validate domain (should always pass for quickchart.io)\n setIframeUrl(url)\n setIsLoading(false)\n })\n\n return (\n <div class=\"relative w-full h-full min-h-[300px] bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden\">\n <Show when={isLoading()}>\n <div class=\"absolute inset-0 flex items-center justify-center\">\n <div class=\"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600\" />\n </div>\n </Show>\n\n <Show when={error()}>\n <div class=\"absolute inset-0 flex items-center justify-center p-4\">\n <div class=\"text-center\">\n <p class=\"text-red-600 dark:text-red-400 text-sm font-medium\">Chart Error</p>\n <p class=\"text-gray-600 dark:text-gray-400 text-xs mt-1\">{error()}</p>\n </div>\n </div>\n </Show>\n\n <Show when={iframeUrl() && !error()}>\n <div class=\"w-full h-full p-4\">\n <Show when={(props.component.params as any).title}>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white mb-3\">\n {(props.component.params as any).title}\n </h3>\n </Show>\n <div class=\"w-full h-full\">\n <img\n src={iframeUrl()}\n alt=\"Chart visualization\"\n class=\"w-full h-auto max-h-[300px] object-contain\"\n onError={() => {\n setError('Failed to load chart')\n props.onError?.({\n type: 'render',\n message: 'Chart rendering failed',\n componentId: props.component.id,\n })\n }}\n />\n </div>\n </div>\n </Show>\n </div>\n )\n}\n\n/**\n * Smart cell value renderer that handles markdown links and other formats\n */\nfunction renderCellValue(value: any): string {\n // Handle null/undefined\n if (value === null || value === undefined) {\n return '-'\n }\n\n // Convert to string\n let strValue = String(value)\n\n // Clean up \"undefined\" patterns from backend data\n // Pattern 1: \"Text – undefined\" or \"Text - undefined\" → \"Text\"\n strValue = strValue.replace(/\\s*[–-]\\s*undefined\\s*$/gi, '')\n // Pattern 2: \"undefined – Text\" or \"undefined - Text\" → \"Text\"\n strValue = strValue.replace(/^undefined\\s*[–-]\\s*/gi, '')\n // Pattern 3: standalone \"undefined\" → \"-\"\n if (strValue.trim().toLowerCase() === 'undefined') {\n return '-'\n }\n // Pattern 4: empty string after cleanup → \"-\"\n if (strValue.trim() === '') {\n return '-'\n }\n\n // Detect and convert markdown links: [text](url)\n const markdownLinkRegex = /\\[([^\\]]+)\\]\\(([^)]+)\\)/g\n if (markdownLinkRegex.test(strValue)) {\n // Replace all markdown links with HTML links\n const htmlValue = strValue.replace(\n /\\[([^\\]]+)\\]\\(([^)]+)\\)/g,\n '<a href=\"$2\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-blue-600 dark:text-blue-400 hover:underline\">$1</a>'\n )\n return DOMPurify.sanitize(htmlValue, { ADD_ATTR: ['target', 'rel'] })\n }\n\n // Check if value contains markdown formatting (bold, italic, code, etc.)\n const hasMarkdown = /[*_`\\[\\]#]/.test(strValue)\n if (hasMarkdown) {\n // Parse with marked and sanitize\n const parsed = marked.parse(strValue, { async: false }) as string\n return DOMPurify.sanitize(parsed, { ADD_ATTR: ['target', 'rel'] })\n }\n\n // Plain text\n return strValue\n}\n\n/**\n * Render a table component\n */\nfunction TableRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n const tableParams = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden\">\n <div class=\"p-4\">\n <Show when={tableParams.title}>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white mb-3\">\n {tableParams.title}\n </h3>\n </Show>\n\n <div class=\"overflow-x-auto\">\n <table class=\"min-w-full divide-y divide-gray-200 dark:divide-gray-700 border-separate border-spacing-0\">\n <thead class=\"bg-gray-50 dark:bg-gray-900/50\">\n <tr>\n <For each={tableParams.columns}>\n {(column: any) => (\n <th\n scope=\"col\"\n class=\"px-6 py-3 text-left text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider border-b border-gray-200 dark:border-gray-700 first:pl-6 last:pr-6\"\n style={column.width ? { width: column.width } : {}}\n >\n {column.label}\n </th>\n )}\n </For>\n </tr>\n </thead>\n <tbody class=\"bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700\">\n <For each={tableParams.rows.slice(0, DEFAULT_RESOURCE_LIMITS.maxTableRows)}>\n {(row: any, i) => (\n <tr class={`hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors ${i() % 2 === 0 ? 'bg-white dark:bg-gray-800' : 'bg-gray-50/30 dark:bg-gray-800/50'}`}>\n <For each={tableParams.columns}>\n {(column: any) => (\n <td class=\"px-6 py-4 text-sm text-gray-700 dark:text-gray-200 whitespace-normal break-words leading-relaxed first:pl-6 last:pr-6\">\n <div innerHTML={renderCellValue(row[column.key])} />\n </td>\n )}\n </For>\n </tr>\n )}\n </For>\n </tbody>\n </table>\n </div>\n\n <Show when={tableParams.pagination}>\n <div class=\"mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400\">\n <span>\n Showing {tableParams.pagination.currentPage * tableParams.pagination.pageSize + 1} -{' '}\n {Math.min(\n (tableParams.pagination.currentPage + 1) * tableParams.pagination.pageSize,\n tableParams.pagination.totalRows\n )}{' '}\n of {tableParams.pagination.totalRows}\n </span>\n </div>\n </Show>\n </div>\n </div>\n )\n}\n\n/**\n * Render a metric card component\n */\nfunction MetricRenderer(props: { component: UIComponent }) {\n const metricParams = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4\">\n <div class=\"flex flex-col h-full justify-between\">\n <div>\n <p class=\"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide\">\n {metricParams.title}\n </p>\n <div class=\"mt-2 flex items-baseline\">\n <p class=\"text-2xl font-semibold text-gray-900 dark:text-white\">{metricParams.value}</p>\n <Show when={metricParams.unit}>\n <span class=\"ml-2 text-sm font-medium text-gray-500 dark:text-gray-400\">\n {metricParams.unit}\n </span>\n </Show>\n </div>\n </div>\n\n <Show when={metricParams.trend}>\n <div class=\"mt-3 flex items-center\">\n <span\n class={`text-sm font-medium ${metricParams.trend.direction === 'up'\n ? 'text-green-600 dark:text-green-400'\n : metricParams.trend.direction === 'down'\n ? 'text-red-600 dark:text-red-400'\n : 'text-gray-600 dark:text-gray-400'\n }`}\n >\n {metricParams.trend.direction === 'up'\n ? '�'\n : metricParams.trend.direction === 'down'\n ? '�'\n : '�'}{' '}\n {Math.abs(metricParams.trend.value)}%\n </span>\n </div>\n </Show>\n\n <Show when={metricParams.subtitle}>\n <p class=\"mt-2 text-xs text-gray-500 dark:text-gray-400\">{metricParams.subtitle}</p>\n </Show>\n </div>\n </div>\n )\n}\n\n/**\n * Extract image data from markdown image link format\n * Pattern: [](link-url)\\n*Photo by Author*\n */\nfunction extractImageFromMarkdown(content: string): { alt: string; imageUrl: string; linkUrl: string; credit: string } | null {\n // Pattern: [](link-url) followed by optional credit line\n const imagePattern = /\\[!\\[([^\\]]*)\\]\\(([^)]+)\\)\\]\\(([^)]+)\\)\\s*\\*([^*]+)\\*/\n const match = content.match(imagePattern)\n\n if (match) {\n return {\n alt: match[1] || 'Image',\n imageUrl: match[2],\n linkUrl: match[3],\n credit: match[4].trim()\n }\n }\n\n return null\n}\n\n/**\n * Render a text component (with optional markdown)\n */\nfunction TextRenderer(props: { component: UIComponent }) {\n const textParams = props.component.params as any\n\n // Check if this is an image markdown that should be rendered as image component\n const imageData = createMemo(() => {\n if (textParams.markdown && textParams.content) {\n return extractImageFromMarkdown(textParams.content)\n }\n return null\n })\n\n // Convert markdown to HTML if markdown flag is true (and not an image component)\n const htmlContent = createMemo(() => {\n if (textParams.markdown && !imageData()) {\n return marked.parse(textParams.content, { async: false }) as string\n }\n return textParams.content\n })\n\n // Render as image component if we extracted image data\n return (\n <Show\n when={imageData()}\n fallback={\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4\">\n <div\n class={`prose prose-sm dark:prose-invert max-w-none ${textParams.className || ''}`}\n innerHTML={htmlContent()}\n />\n </div>\n }\n >\n {(data) => (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col\">\n <div class=\"flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]\">\n <a href={data().linkUrl} target=\"_blank\" rel=\"noopener noreferrer\" class=\"cursor-zoom-in\">\n <img\n src={data().imageUrl}\n alt={data().alt}\n class=\"max-w-full max-h-[400px] object-contain rounded shadow-sm hover:opacity-90 transition-opacity\"\n loading=\"lazy\"\n />\n </a>\n </div>\n <div class=\"p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\">\n <p class=\"text-sm text-gray-600 dark:text-gray-400 text-center italic\">{data().credit}</p>\n </div>\n </div>\n )}\n </Show>\n )\n}\n\n/**\n * Render an iframe component\n */\nfunction IframeRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col\">\n <Show when={params.title}>\n <div class=\"px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900\">\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white\">{params.title}</h3>\n </div>\n </Show>\n <iframe\n src={params.url}\n title={params.title || 'Embedded content'}\n class=\"w-full border-0 flex-1\"\n style={`height: ${params.height || '400px'}; min-height: 300px;`}\n sandbox=\"allow-scripts allow-same-origin allow-popups allow-forms\"\n loading=\"lazy\"\n />\n </div>\n )\n}\n\n/**\n * Render an image component\n */\nfunction ImageRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col\">\n <div class=\"flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]\">\n <a href={params.url} target=\"_blank\" rel=\"noopener noreferrer\" class=\"cursor-zoom-in\">\n <img\n src={params.url}\n alt={params.alt || 'Image'}\n class=\"max-w-full max-h-[500px] object-contain rounded shadow-sm hover:opacity-95 transition-opacity\"\n loading=\"lazy\"\n />\n </a>\n </div>\n <Show when={params.caption}>\n <div class=\"p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\">\n <p class=\"text-sm text-gray-600 dark:text-gray-400 text-center\">{params.caption}</p>\n </div>\n </Show>\n </div>\n )\n}\n\n/**\n * Render a link component\n */\n/**\n * Render a link component\n */\nfunction LinkRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n\n return (\n <a\n href={params.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"flex items-center gap-3 p-4 bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors group h-full\"\n onClick={(e) => e.stopPropagation()}\n >\n <div class=\"p-2 bg-blue-50 dark:bg-blue-900/30 rounded-full text-blue-600 dark:text-blue-400 group-hover:bg-blue-100 dark:group-hover:bg-blue-900/50 shrink-0 transition-colors\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"w-5 h-5\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" />\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" />\n </svg>\n </div>\n <div class=\"flex-1 min-w-0\">\n <h4 class=\"text-sm font-medium text-gray-900 dark:text-white truncate group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors\">\n {params.label || params.url}\n </h4>\n <Show when={params.description}>\n <p class=\"text-xs text-gray-500 dark:text-gray-400 truncate\">{params.description}</p>\n </Show>\n </div>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"w-4 h-4 text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 shrink-0 transition-colors\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\" />\n </svg>\n </a>\n )\n}\n\n/**\n * Render a single component with error boundary\n */\nfunction ComponentRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n // Validate component before rendering\n const validation = validateComponent(props.component)\n if (!validation.valid) {\n props.onError?.({\n type: 'validation',\n message: 'Component validation failed',\n componentId: props.component.id,\n details: validation.errors,\n })\n\n return (\n <div class=\"w-full h-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4\">\n <p class=\"text-sm font-medium text-red-900 dark:text-red-100\">Validation Error</p>\n <p class=\"text-xs text-red-700 dark:text-red-300 mt-1\">\n {validation.errors?.[0]?.message || 'Unknown validation error'}\n </p>\n </div>\n )\n }\n\n // Render based on component type with enhanced error boundary\n return (\n <GenerativeUIErrorBoundary\n componentId={props.component.id}\n componentType={props.component.type}\n onError={props.onError}\n allowRetry={true}\n >\n <Show when={props.component.type === 'chart'}>\n <ChartRenderer component={props.component} onError={props.onError} />\n </Show>\n <Show when={props.component.type === 'table'}>\n <TableRenderer component={props.component} onError={props.onError} />\n </Show>\n <Show when={props.component.type === 'metric'}>\n <MetricRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'text'}>\n <TextRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'iframe'}>\n <IframeRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'image'}>\n <ImageRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'link'}>\n <LinkRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'action'}>\n <ActionRenderer component={props.component} />\n </Show>\n </GenerativeUIErrorBoundary>\n )\n}\n\n/**\n * Render an action component (button or link)\n */\nfunction ActionRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n let dispatchAction: ((toolName: string, toolParams: any) => void) | null = null\n\n // Initialize CustomEvent dispatcher only on client-side\n // Use createEffect instead of onMount for SSR compatibility\n createEffect(() => {\n if (typeof window !== 'undefined') {\n dispatchAction = (toolName: string, toolParams: any) => {\n const event = new CustomEvent('mcp-action', {\n detail: {\n toolName,\n params: toolParams,\n },\n bubbles: true,\n })\n window.dispatchEvent(event)\n }\n }\n })\n\n // Handle click to execute tool via window event\n const handleClick = (e: MouseEvent) => {\n if (params.action === 'tool-call' && params.toolName) {\n e.preventDefault()\n // SSR-safe: Only call if dispatcher was initialized client-side\n dispatchAction?.(params.toolName, params.params || {})\n }\n }\n\n if (params.type === 'link' || params.action === 'link') {\n return (\n <a\n href={params.url || '#'}\n target={params.url ? '_blank' : undefined}\n rel=\"noopener noreferrer\"\n class={`inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors\n ${params.variant === 'primary' ? 'bg-blue-600 text-white hover:bg-blue-700' :\n params.variant === 'outline' ? 'border border-gray-300 text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800' :\n 'text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300'}`}\n onClick={handleClick}\n >\n <Show when={params.icon}>\n <span>{params.icon}</span>\n </Show>\n {params.label}\n </a>\n )\n }\n\n return (\n <button\n type={params.action === 'submit' ? 'submit' : 'button'}\n disabled={params.disabled}\n class={`inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500\n ${params.variant === 'primary' ? 'bg-blue-600 text-white hover:bg-blue-700 shadow-sm' :\n params.variant === 'secondary' ? 'bg-gray-100 text-gray-900 hover:bg-gray-200 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600' :\n params.variant === 'outline' ? 'border border-gray-300 text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800' :\n params.variant === 'danger' ? 'bg-red-600 text-white hover:bg-red-700' :\n 'bg-transparent text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800'}\n ${params.disabled ? 'opacity-50 cursor-not-allowed' : ''}\n ${params.size === 'sm' ? 'px-3 py-1.5 text-xs' : params.size === 'lg' ? 'px-6 py-3 text-base' : ''}`}\n onClick={handleClick}\n >\n <Show when={params.icon}>\n <span>{params.icon}</span>\n </Show>\n {params.label}\n </button>\n )\n}\n\n/**\n * Main UIResourceRenderer component\n */\nexport const UIResourceRenderer: Component<UIResourceRendererProps> = (props) => {\n const layout = () => {\n // Check if content is a UIComponent (non-composite) vs UILayout (composite)\n if ('type' in props.content && (props.content as any).type !== 'composite') {\n return {\n id: 'single-component',\n components: [props.content as UIComponent],\n grid: {\n columns: 12,\n gap: '1rem',\n },\n } as UILayout\n }\n return props.content as UILayout\n }\n\n // Convert grid styles to CSS string\n const gridContainerStyle = () => {\n const layoutData = layout()\n return `grid-template-columns: repeat(${layoutData.grid.columns}, 1fr); gap: ${layoutData.grid.gap}`\n }\n\n // Convert component grid styles to CSS string\n const getGridStyleString = (component: UIComponent) => {\n // Defensive check for position field - default to full width\n if (!component.position) {\n return 'grid-column: 1 / span 12; grid-row: auto'\n }\n const { colStart, colSpan, rowStart, rowSpan = 1 } = component.position\n return `grid-column: ${colStart} / span ${colSpan}; grid-row: ${rowStart ? `${rowStart} / span ${rowSpan}` : 'auto'}`\n }\n\n const layoutData = layout()\n\n return (\n <div class={`w-full ${props.class || ''}`}>\n <div class=\"grid gap-4\" style={gridContainerStyle()}>\n <For each={layoutData.components}>\n {(component) => (\n <div style={getGridStyleString(component)}>\n <ComponentRenderer component={component} onError={props.onError} />\n </div>\n )}\n </For>\n </div>\n </div>\n )\n}\n"],"names":["ChartRenderer","props","iframeUrl","setIframeUrl","createSignal","isLoading","setIsLoading","error","setError","createEffect","chartParams","component","params","chartConfig","type","data","options","responsive","maintainAspectRatio","configStr","encodeURIComponent","JSON","stringify","url","_el$","_$getNextElement","_tmpl$5","_el$11","firstChild","_el$12","_co$2","_$getNextMarker","nextSibling","_el$13","_el$14","_co$3","_el$15","_el$16","_co$4","_$insert","_$createComponent","Show","when","children","_tmpl$","_el$3","_tmpl$2","_el$4","_el$5","_el$6","_$memo","_el$7","_tmpl$4","_el$1","_el$10","_co$","_el$9","_el$0","title","_el$8","_tmpl$3","addEventListener","onError","message","componentId","id","_$effect","_$setAttribute","renderCellValue","value","undefined","strValue","String","replace","trim","toLowerCase","markdownLinkRegex","test","htmlValue","DOMPurify","sanitize","ADD_ATTR","hasMarkdown","parsed","marked","parse","async","TableRenderer","tableParams","_el$17","_tmpl$7","_el$18","_el$38","_el$39","_co$8","_el$20","_el$21","_el$22","_el$23","_el$24","_el$40","_el$41","_co$9","_el$19","For","each","columns","column","_el$42","_tmpl$8","label","_$p","_$style","width","rows","slice","DEFAULT_RESOURCE_LIMITS","maxTableRows","row","i","_el$43","_tmpl$9","_el$44","_tmpl$0","_el$45","_$setProperty","key","_$className","pagination","_el$25","_tmpl$6","_el$26","_el$27","_el$32","_el$33","_co$5","_el$28","_el$34","_el$35","_co$6","_el$30","_el$36","_el$37","_co$7","currentPage","pageSize","Math","min","totalRows","MetricRenderer","metricParams","_el$46","_tmpl$12","_el$47","_el$48","_el$49","_el$50","_el$51","_el$53","_el$54","_co$0","_el$64","_el$65","_co$11","_el$66","_el$67","_co$12","unit","_el$52","_tmpl$1","trend","_el$55","_tmpl$10","_el$56","_el$59","_el$60","_co$1","_el$57","_el$61","_el$62","_co$10","_c$","direction","abs","subtitle","_el$63","_tmpl$11","extractImageFromMarkdown","content","imagePattern","match","alt","imageUrl","linkUrl","credit","TextRenderer","textParams","imageData","createMemo","markdown","htmlContent","fallback","_el$68","_tmpl$13","_el$69","_p$","_v$","className","_v$2","e","t","_el$70","_tmpl$14","_el$71","_el$72","_el$73","_el$74","_el$75","_v$3","_v$4","_v$5","a","IframeRenderer","_el$76","_tmpl$16","_el$80","_el$81","_co$13","_el$79","_el$77","_tmpl$15","_el$78","_v$6","_v$7","_v$8","height","ImageRenderer","_el$82","_tmpl$18","_el$83","_el$84","_el$85","_el$88","_el$89","_co$14","caption","_el$86","_tmpl$17","_el$87","_v$9","_v$0","_v$1","LinkRenderer","_el$90","_tmpl$20","_el$91","_el$92","_el$93","_el$95","_el$96","_co$15","$$click","stopPropagation","description","_el$94","_tmpl$19","_$runHydrationEvents","ComponentRenderer","validation","validateComponent","valid","details","errors","_el$97","_tmpl$21","_el$98","_el$99","GenerativeUIErrorBoundary","componentType","allowRetry","ActionRenderer","dispatchAction","window","toolName","toolParams","event","CustomEvent","detail","bubbles","dispatchEvent","handleClick","action","preventDefault","_el$100","_tmpl$23","_el$102","_el$103","_co$16","_el$104","_el$105","_co$17","icon","_el$101","_tmpl$22","_v$10","_v$11","_v$12","variant","_el$106","_tmpl$24","_el$108","_el$109","_co$18","_el$110","_el$111","_co$19","_el$107","_v$13","_v$14","disabled","_v$15","size","UIResourceRenderer","layout","components","grid","gap","gridContainerStyle","layoutData","getGridStyleString","position","colStart","colSpan","rowStart","rowSpan","_el$112","_tmpl$25","_el$113","_el$114","_tmpl$26","_v$16","class","_v$17","_$delegateEvents"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UIResourceRenderer.cjs","sources":["../../src/components/UIResourceRenderer.tsx"],"sourcesContent":["/**\n * UI Resource Renderer Component\n * Phase 0: Foundation with iframe sandbox and composite grid support\n */\n\nimport DOMPurify from 'dompurify'\nimport { Component, createSignal, Show, For, createMemo, createEffect } from 'solid-js'\nimport { isServer } from 'solid-js/web'\nimport type { UIComponent, UILayout, RendererError, ComponentType } from '../types'\nimport { validateComponent, DEFAULT_RESOURCE_LIMITS } from '../services/validation'\nimport { GenerativeUIErrorBoundary } from './GenerativeUIErrorBoundary'\nimport { marked } from 'marked'\n\n/**\n * Props for UIResourceRenderer\n */\nexport interface UIResourceRendererProps {\n /**\n * Single component or full layout to render\n */\n content: UIComponent | UILayout\n\n /**\n * Lazy loading (default: true)\n */\n lazyLoad?: boolean\n\n /**\n * Error callback\n */\n onError?: (error: RendererError) => void\n\n /**\n * Custom CSS class\n */\n class?: string\n}\n\n/**\n * Render a single chart component in a sandboxed iframe\n */\nfunction ChartRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n const [iframeUrl, setIframeUrl] = createSignal<string>()\n const [isLoading, setIsLoading] = createSignal(true)\n const [error, setError] = createSignal<string>()\n\n // Use createEffect instead of onMount for SSR compatibility\n // createEffect runs after hydration on client-side\n createEffect(() => {\n const chartParams = props.component.params as any\n if (!chartParams) return\n\n // Build Quickchart URL\n const chartConfig = {\n type: chartParams.type,\n data: chartParams.data,\n options: {\n ...chartParams.options,\n responsive: true,\n maintainAspectRatio: false,\n },\n }\n\n // Encode chart configuration for Quickchart API\n const configStr = encodeURIComponent(JSON.stringify(chartConfig))\n const url = `https://quickchart.io/chart?c=${configStr}&width=500&height=300&devicePixelRatio=2`\n\n // Validate domain (should always pass for quickchart.io)\n setIframeUrl(url)\n setIsLoading(false)\n })\n\n return (\n <div class=\"relative w-full h-full min-h-[300px] bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden\">\n <Show when={isLoading()}>\n <div class=\"absolute inset-0 flex items-center justify-center\">\n <div class=\"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600\" />\n </div>\n </Show>\n\n <Show when={error()}>\n <div class=\"absolute inset-0 flex items-center justify-center p-4\">\n <div class=\"text-center\">\n <p class=\"text-red-600 dark:text-red-400 text-sm font-medium\">Chart Error</p>\n <p class=\"text-gray-600 dark:text-gray-400 text-xs mt-1\">{error()}</p>\n </div>\n </div>\n </Show>\n\n <Show when={iframeUrl() && !error()}>\n <div class=\"w-full h-full p-4\">\n <Show when={(props.component.params as any).title}>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white mb-3\">\n {(props.component.params as any).title}\n </h3>\n </Show>\n <div class=\"w-full h-full\">\n <img\n src={iframeUrl()}\n alt=\"Chart visualization\"\n class=\"w-full h-auto max-h-[300px] object-contain\"\n onError={() => {\n setError('Failed to load chart')\n props.onError?.({\n type: 'render',\n message: 'Chart rendering failed',\n componentId: props.component.id,\n })\n }}\n />\n </div>\n </div>\n </Show>\n </div>\n )\n}\n\n/**\n * Smart cell value renderer that handles markdown links and other formats\n */\nfunction renderCellValue(value: any): string {\n // Handle null/undefined\n if (value === null || value === undefined) {\n return '-'\n }\n\n // Handle object with url/name properties (common source/link format from LLM)\n if (typeof value === 'object' && value !== null) {\n // Check for link-like objects: { url: \"...\", name/label/title: \"...\" }\n if (value.url) {\n const label = value.name || value.label || value.title || value.url\n const sanitizedLabel = DOMPurify.sanitize(String(label))\n const sanitizedUrl = DOMPurify.sanitize(String(value.url))\n return `<a href=\"${sanitizedUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-blue-600 dark:text-blue-400 hover:underline\">${sanitizedLabel}</a>`\n }\n // Fallback: extract meaningful text from object properties\n if (value.name || value.label || value.title) {\n return DOMPurify.sanitize(String(value.name || value.label || value.title))\n }\n // Last resort: JSON stringify for debugging (better than [object Object])\n try {\n return JSON.stringify(value)\n } catch {\n return '-'\n }\n }\n\n // Convert to string\n let strValue = String(value)\n\n // Clean up \"undefined\" patterns from backend data\n // Pattern 1: \"Text – undefined\" or \"Text - undefined\" → \"Text\"\n strValue = strValue.replace(/\\s*[–-]\\s*undefined\\s*$/gi, '')\n // Pattern 2: \"undefined – Text\" or \"undefined - Text\" → \"Text\"\n strValue = strValue.replace(/^undefined\\s*[–-]\\s*/gi, '')\n // Pattern 3: standalone \"undefined\" → \"-\"\n if (strValue.trim().toLowerCase() === 'undefined') {\n return '-'\n }\n // Pattern 4: empty string after cleanup → \"-\"\n if (strValue.trim() === '') {\n return '-'\n }\n\n // Detect and convert markdown links: [text](url)\n const markdownLinkRegex = /\\[([^\\]]+)\\]\\(([^)]+)\\)/g\n if (markdownLinkRegex.test(strValue)) {\n // Replace all markdown links with HTML links\n const htmlValue = strValue.replace(\n /\\[([^\\]]+)\\]\\(([^)]+)\\)/g,\n '<a href=\"$2\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-blue-600 dark:text-blue-400 hover:underline\">$1</a>'\n )\n return DOMPurify.sanitize(htmlValue, { ADD_ATTR: ['target', 'rel'] })\n }\n\n // Check if value contains markdown formatting (bold, italic, code, etc.)\n const hasMarkdown = /[*_`\\[\\]#]/.test(strValue)\n if (hasMarkdown) {\n // Parse with marked and sanitize\n const parsed = marked.parse(strValue, { async: false }) as string\n return DOMPurify.sanitize(parsed, { ADD_ATTR: ['target', 'rel'] })\n }\n\n // Plain text\n return strValue\n}\n\n/**\n * Render a table component\n */\nfunction TableRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n const tableParams = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden\">\n <div class=\"p-4\">\n <Show when={tableParams.title}>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white mb-3\">\n {tableParams.title}\n </h3>\n </Show>\n\n <div class=\"overflow-x-auto\">\n <table class=\"min-w-full divide-y divide-gray-200 dark:divide-gray-700 border-separate border-spacing-0\">\n <thead class=\"bg-gray-50 dark:bg-gray-900/50\">\n <tr>\n <For each={tableParams.columns}>\n {(column: any) => (\n <th\n scope=\"col\"\n class=\"px-6 py-3 text-left text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider border-b border-gray-200 dark:border-gray-700 first:pl-6 last:pr-6\"\n style={column.width ? { width: column.width } : {}}\n >\n {column.label}\n </th>\n )}\n </For>\n </tr>\n </thead>\n <tbody class=\"bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700\">\n <For each={tableParams.rows.slice(0, DEFAULT_RESOURCE_LIMITS.maxTableRows)}>\n {(row: any, i) => (\n <tr class={`hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors ${i() % 2 === 0 ? 'bg-white dark:bg-gray-800' : 'bg-gray-50/30 dark:bg-gray-800/50'}`}>\n <For each={tableParams.columns}>\n {(column: any) => (\n <td class=\"px-6 py-4 text-sm text-gray-700 dark:text-gray-200 whitespace-normal break-words leading-relaxed first:pl-6 last:pr-6\">\n <div innerHTML={renderCellValue(row[column.key])} />\n </td>\n )}\n </For>\n </tr>\n )}\n </For>\n </tbody>\n </table>\n </div>\n\n <Show when={tableParams.pagination}>\n <div class=\"mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400\">\n <span>\n Showing {tableParams.pagination.currentPage * tableParams.pagination.pageSize + 1} -{' '}\n {Math.min(\n (tableParams.pagination.currentPage + 1) * tableParams.pagination.pageSize,\n tableParams.pagination.totalRows\n )}{' '}\n of {tableParams.pagination.totalRows}\n </span>\n </div>\n </Show>\n </div>\n </div>\n )\n}\n\n/**\n * Render a metric card component\n */\nfunction MetricRenderer(props: { component: UIComponent }) {\n const metricParams = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4\">\n <div class=\"flex flex-col h-full justify-between\">\n <div>\n <p class=\"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide\">\n {metricParams.title}\n </p>\n <div class=\"mt-2 flex items-baseline\">\n <p class=\"text-2xl font-semibold text-gray-900 dark:text-white\">{metricParams.value}</p>\n <Show when={metricParams.unit}>\n <span class=\"ml-2 text-sm font-medium text-gray-500 dark:text-gray-400\">\n {metricParams.unit}\n </span>\n </Show>\n </div>\n </div>\n\n <Show when={metricParams.trend}>\n <div class=\"mt-3 flex items-center\">\n <span\n class={`text-sm font-medium ${metricParams.trend.direction === 'up'\n ? 'text-green-600 dark:text-green-400'\n : metricParams.trend.direction === 'down'\n ? 'text-red-600 dark:text-red-400'\n : 'text-gray-600 dark:text-gray-400'\n }`}\n >\n {metricParams.trend.direction === 'up'\n ? '�'\n : metricParams.trend.direction === 'down'\n ? '�'\n : '�'}{' '}\n {Math.abs(metricParams.trend.value)}%\n </span>\n </div>\n </Show>\n\n <Show when={metricParams.subtitle}>\n <p class=\"mt-2 text-xs text-gray-500 dark:text-gray-400\">{metricParams.subtitle}</p>\n </Show>\n </div>\n </div>\n )\n}\n\n/**\n * Extract image data from markdown image link format\n * Pattern: [](link-url)\\n*Photo by Author*\n */\nfunction extractImageFromMarkdown(content: string): { alt: string; imageUrl: string; linkUrl: string; credit: string } | null {\n // Pattern: [](link-url) followed by optional credit line\n const imagePattern = /\\[!\\[([^\\]]*)\\]\\(([^)]+)\\)\\]\\(([^)]+)\\)\\s*\\*([^*]+)\\*/\n const match = content.match(imagePattern)\n\n if (match) {\n return {\n alt: match[1] || 'Image',\n imageUrl: match[2],\n linkUrl: match[3],\n credit: match[4].trim()\n }\n }\n\n return null\n}\n\n/**\n * Render a text component (with optional markdown)\n */\nfunction TextRenderer(props: { component: UIComponent }) {\n const textParams = props.component.params as any\n\n // Check if this is an image markdown that should be rendered as image component\n const imageData = createMemo(() => {\n if (textParams.markdown && textParams.content) {\n return extractImageFromMarkdown(textParams.content)\n }\n return null\n })\n\n // Convert markdown to HTML if markdown flag is true (and not an image component)\n const htmlContent = createMemo(() => {\n if (textParams.markdown && !imageData()) {\n return marked.parse(textParams.content, { async: false }) as string\n }\n return textParams.content\n })\n\n // Render as image component if we extracted image data\n return (\n <Show\n when={imageData()}\n fallback={\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4\">\n <div\n class={`prose prose-sm dark:prose-invert max-w-none ${textParams.className || ''}`}\n innerHTML={htmlContent()}\n />\n </div>\n }\n >\n {(data) => (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col\">\n <div class=\"flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]\">\n <a href={data().linkUrl} target=\"_blank\" rel=\"noopener noreferrer\" class=\"cursor-zoom-in\">\n <img\n src={data().imageUrl}\n alt={data().alt}\n class=\"max-w-full max-h-[400px] object-contain rounded shadow-sm hover:opacity-90 transition-opacity\"\n loading=\"lazy\"\n />\n </a>\n </div>\n <div class=\"p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\">\n <p class=\"text-sm text-gray-600 dark:text-gray-400 text-center italic\">{data().credit}</p>\n </div>\n </div>\n )}\n </Show>\n )\n}\n\n/**\n * Render an iframe component\n */\nfunction IframeRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col\">\n <Show when={params.title}>\n <div class=\"px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900\">\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white\">{params.title}</h3>\n </div>\n </Show>\n <iframe\n src={params.url}\n title={params.title || 'Embedded content'}\n class=\"w-full border-0 flex-1\"\n style={`height: ${params.height || '400px'}; min-height: 300px;`}\n sandbox=\"allow-scripts allow-same-origin allow-popups allow-forms\"\n loading=\"lazy\"\n />\n </div>\n )\n}\n\n/**\n * Render an image component\n */\nfunction ImageRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col\">\n <div class=\"flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]\">\n <a href={params.url} target=\"_blank\" rel=\"noopener noreferrer\" class=\"cursor-zoom-in\">\n <img\n src={params.url}\n alt={params.alt || 'Image'}\n class=\"max-w-full max-h-[500px] object-contain rounded shadow-sm hover:opacity-95 transition-opacity\"\n loading=\"lazy\"\n />\n </a>\n </div>\n <Show when={params.caption}>\n <div class=\"p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\">\n <p class=\"text-sm text-gray-600 dark:text-gray-400 text-center\">{params.caption}</p>\n </div>\n </Show>\n </div>\n )\n}\n\n/**\n * Render a link component\n */\n/**\n * Render a link component\n */\nfunction LinkRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n\n return (\n <a\n href={params.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"flex items-center gap-3 p-4 bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors group h-full\"\n onClick={(e) => e.stopPropagation()}\n >\n <div class=\"p-2 bg-blue-50 dark:bg-blue-900/30 rounded-full text-blue-600 dark:text-blue-400 group-hover:bg-blue-100 dark:group-hover:bg-blue-900/50 shrink-0 transition-colors\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"w-5 h-5\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" />\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" />\n </svg>\n </div>\n <div class=\"flex-1 min-w-0\">\n <h4 class=\"text-sm font-medium text-gray-900 dark:text-white truncate group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors\">\n {params.label || params.url}\n </h4>\n <Show when={params.description}>\n <p class=\"text-xs text-gray-500 dark:text-gray-400 truncate\">{params.description}</p>\n </Show>\n </div>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"w-4 h-4 text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 shrink-0 transition-colors\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\" />\n </svg>\n </a>\n )\n}\n\n/**\n * Render a single component with error boundary\n */\nfunction ComponentRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n // Validate component before rendering\n const validation = validateComponent(props.component)\n if (!validation.valid) {\n props.onError?.({\n type: 'validation',\n message: 'Component validation failed',\n componentId: props.component.id,\n details: validation.errors,\n })\n\n return (\n <div class=\"w-full h-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4\">\n <p class=\"text-sm font-medium text-red-900 dark:text-red-100\">Validation Error</p>\n <p class=\"text-xs text-red-700 dark:text-red-300 mt-1\">\n {validation.errors?.[0]?.message || 'Unknown validation error'}\n </p>\n </div>\n )\n }\n\n // Render based on component type with enhanced error boundary\n return (\n <GenerativeUIErrorBoundary\n componentId={props.component.id}\n componentType={props.component.type}\n onError={props.onError}\n allowRetry={true}\n >\n <Show when={props.component.type === 'chart'}>\n <ChartRenderer component={props.component} onError={props.onError} />\n </Show>\n <Show when={props.component.type === 'table'}>\n <TableRenderer component={props.component} onError={props.onError} />\n </Show>\n <Show when={props.component.type === 'metric'}>\n <MetricRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'text'}>\n <TextRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'iframe'}>\n <IframeRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'image'}>\n <ImageRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'link'}>\n <LinkRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'action'}>\n <ActionRenderer component={props.component} />\n </Show>\n </GenerativeUIErrorBoundary>\n )\n}\n\n/**\n * Render an action component (button or link)\n */\nfunction ActionRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n let dispatchAction: ((toolName: string, toolParams: any) => void) | null = null\n\n // Initialize CustomEvent dispatcher only on client-side\n // Use createEffect instead of onMount for SSR compatibility\n createEffect(() => {\n if (typeof window !== 'undefined') {\n dispatchAction = (toolName: string, toolParams: any) => {\n const event = new CustomEvent('mcp-action', {\n detail: {\n toolName,\n params: toolParams,\n },\n bubbles: true,\n })\n window.dispatchEvent(event)\n }\n }\n })\n\n // Handle click to execute tool via window event\n const handleClick = (e: MouseEvent) => {\n if (params.action === 'tool-call' && params.toolName) {\n e.preventDefault()\n // SSR-safe: Only call if dispatcher was initialized client-side\n dispatchAction?.(params.toolName, params.params || {})\n }\n }\n\n if (params.type === 'link' || params.action === 'link') {\n return (\n <a\n href={params.url || '#'}\n target={params.url ? '_blank' : undefined}\n rel=\"noopener noreferrer\"\n class={`inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors\n ${params.variant === 'primary' ? 'bg-blue-600 text-white hover:bg-blue-700' :\n params.variant === 'outline' ? 'border border-gray-300 text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800' :\n 'text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300'}`}\n onClick={handleClick}\n >\n <Show when={params.icon}>\n <span>{params.icon}</span>\n </Show>\n {params.label}\n </a>\n )\n }\n\n return (\n <button\n type={params.action === 'submit' ? 'submit' : 'button'}\n disabled={params.disabled}\n class={`inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500\n ${params.variant === 'primary' ? 'bg-blue-600 text-white hover:bg-blue-700 shadow-sm' :\n params.variant === 'secondary' ? 'bg-gray-100 text-gray-900 hover:bg-gray-200 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600' :\n params.variant === 'outline' ? 'border border-gray-300 text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800' :\n params.variant === 'danger' ? 'bg-red-600 text-white hover:bg-red-700' :\n 'bg-transparent text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800'}\n ${params.disabled ? 'opacity-50 cursor-not-allowed' : ''}\n ${params.size === 'sm' ? 'px-3 py-1.5 text-xs' : params.size === 'lg' ? 'px-6 py-3 text-base' : ''}`}\n onClick={handleClick}\n >\n <Show when={params.icon}>\n <span>{params.icon}</span>\n </Show>\n {params.label}\n </button>\n )\n}\n\n/**\n * Main UIResourceRenderer component\n */\nexport const UIResourceRenderer: Component<UIResourceRendererProps> = (props) => {\n const layout = () => {\n // Check if content is a UIComponent (non-composite) vs UILayout (composite)\n if ('type' in props.content && (props.content as any).type !== 'composite') {\n return {\n id: 'single-component',\n components: [props.content as UIComponent],\n grid: {\n columns: 12,\n gap: '1rem',\n },\n } as UILayout\n }\n return props.content as UILayout\n }\n\n // Convert grid styles to CSS string\n const gridContainerStyle = () => {\n const layoutData = layout()\n return `grid-template-columns: repeat(${layoutData.grid.columns}, 1fr); gap: ${layoutData.grid.gap}`\n }\n\n // Convert component grid styles to CSS string\n const getGridStyleString = (component: UIComponent) => {\n // Defensive check for position field - default to full width\n if (!component.position) {\n return 'grid-column: 1 / span 12; grid-row: auto'\n }\n const { colStart, colSpan, rowStart, rowSpan = 1 } = component.position\n return `grid-column: ${colStart} / span ${colSpan}; grid-row: ${rowStart ? `${rowStart} / span ${rowSpan}` : 'auto'}`\n }\n\n const layoutData = layout()\n\n return (\n <div class={`w-full ${props.class || ''}`}>\n <div class=\"grid gap-4\" style={gridContainerStyle()}>\n <For each={layoutData.components}>\n {(component) => (\n <div style={getGridStyleString(component)}>\n <ComponentRenderer component={component} onError={props.onError} />\n </div>\n )}\n </For>\n </div>\n </div>\n )\n}\n"],"names":["ChartRenderer","props","iframeUrl","setIframeUrl","createSignal","isLoading","setIsLoading","error","setError","createEffect","chartParams","component","params","chartConfig","type","data","options","responsive","maintainAspectRatio","configStr","encodeURIComponent","JSON","stringify","url","_el$","_$getNextElement","_tmpl$5","_el$11","firstChild","_el$12","_co$2","_$getNextMarker","nextSibling","_el$13","_el$14","_co$3","_el$15","_el$16","_co$4","_$insert","_$createComponent","Show","when","children","_tmpl$","_el$3","_tmpl$2","_el$4","_el$5","_el$6","_$memo","_el$7","_tmpl$4","_el$1","_el$10","_co$","_el$9","_el$0","title","_el$8","_tmpl$3","addEventListener","onError","message","componentId","id","_$effect","_$setAttribute","renderCellValue","value","undefined","label","name","sanitizedLabel","DOMPurify","sanitize","String","sanitizedUrl","strValue","replace","trim","toLowerCase","markdownLinkRegex","test","htmlValue","ADD_ATTR","hasMarkdown","parsed","marked","parse","async","TableRenderer","tableParams","_el$17","_tmpl$7","_el$18","_el$38","_el$39","_co$8","_el$20","_el$21","_el$22","_el$23","_el$24","_el$40","_el$41","_co$9","_el$19","For","each","columns","column","_el$42","_tmpl$8","_$p","_$style","width","rows","slice","DEFAULT_RESOURCE_LIMITS","maxTableRows","row","i","_el$43","_tmpl$9","_el$44","_tmpl$0","_el$45","_$setProperty","key","_$className","pagination","_el$25","_tmpl$6","_el$26","_el$27","_el$32","_el$33","_co$5","_el$28","_el$34","_el$35","_co$6","_el$30","_el$36","_el$37","_co$7","currentPage","pageSize","Math","min","totalRows","MetricRenderer","metricParams","_el$46","_tmpl$12","_el$47","_el$48","_el$49","_el$50","_el$51","_el$53","_el$54","_co$0","_el$64","_el$65","_co$11","_el$66","_el$67","_co$12","unit","_el$52","_tmpl$1","trend","_el$55","_tmpl$10","_el$56","_el$59","_el$60","_co$1","_el$57","_el$61","_el$62","_co$10","_c$","direction","abs","subtitle","_el$63","_tmpl$11","extractImageFromMarkdown","content","imagePattern","match","alt","imageUrl","linkUrl","credit","TextRenderer","textParams","imageData","createMemo","markdown","htmlContent","fallback","_el$68","_tmpl$13","_el$69","_p$","_v$","className","_v$2","e","t","_el$70","_tmpl$14","_el$71","_el$72","_el$73","_el$74","_el$75","_v$3","_v$4","_v$5","a","IframeRenderer","_el$76","_tmpl$16","_el$80","_el$81","_co$13","_el$79","_el$77","_tmpl$15","_el$78","_v$6","_v$7","_v$8","height","ImageRenderer","_el$82","_tmpl$18","_el$83","_el$84","_el$85","_el$88","_el$89","_co$14","caption","_el$86","_tmpl$17","_el$87","_v$9","_v$0","_v$1","LinkRenderer","_el$90","_tmpl$20","_el$91","_el$92","_el$93","_el$95","_el$96","_co$15","$$click","stopPropagation","description","_el$94","_tmpl$19","_$runHydrationEvents","ComponentRenderer","validation","validateComponent","valid","details","errors","_el$97","_tmpl$21","_el$98","_el$99","GenerativeUIErrorBoundary","componentType","allowRetry","ActionRenderer","dispatchAction","window","toolName","toolParams","event","CustomEvent","detail","bubbles","dispatchEvent","handleClick","action","preventDefault","_el$100","_tmpl$23","_el$102","_el$103","_co$16","_el$104","_el$105","_co$17","icon","_el$101","_tmpl$22","_v$10","_v$11","_v$12","variant","_el$106","_tmpl$24","_el$108","_el$109","_co$18","_el$110","_el$111","_co$19","_el$107","_v$13","_v$14","disabled","_v$15","size","UIResourceRenderer","layout","components","grid","gap","gridContainerStyle","layoutData","getGridStyleString","position","colStart","colSpan","rowStart","rowSpan","_el$112","_tmpl$25","_el$113","_el$114","_tmpl$26","_v$16","class","_v$17","_$delegateEvents"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UIResourceRenderer.d.ts","sourceRoot":"","sources":["../../src/components/UIResourceRenderer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAqD,MAAM,UAAU,CAAA;AAEvF,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAiB,MAAM,UAAU,CAAA;AAKnF;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAA;IAE/B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IAExC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;
|
|
1
|
+
{"version":3,"file":"UIResourceRenderer.d.ts","sourceRoot":"","sources":["../../src/components/UIResourceRenderer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAqD,MAAM,UAAU,CAAA;AAEvF,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAiB,MAAM,UAAU,CAAA;AAKnF;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAA;IAE/B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IAExC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAulBD;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,CAAC,uBAAuB,CA+CjE,CAAA"}
|
|
@@ -82,6 +82,22 @@ function renderCellValue(value) {
|
|
|
82
82
|
if (value === null || value === void 0) {
|
|
83
83
|
return "-";
|
|
84
84
|
}
|
|
85
|
+
if (typeof value === "object" && value !== null) {
|
|
86
|
+
if (value.url) {
|
|
87
|
+
const label = value.name || value.label || value.title || value.url;
|
|
88
|
+
const sanitizedLabel = purify.sanitize(String(label));
|
|
89
|
+
const sanitizedUrl = purify.sanitize(String(value.url));
|
|
90
|
+
return `<a href="${sanitizedUrl}" target="_blank" rel="noopener noreferrer" class="text-blue-600 dark:text-blue-400 hover:underline">${sanitizedLabel}</a>`;
|
|
91
|
+
}
|
|
92
|
+
if (value.name || value.label || value.title) {
|
|
93
|
+
return purify.sanitize(String(value.name || value.label || value.title));
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
return JSON.stringify(value);
|
|
97
|
+
} catch {
|
|
98
|
+
return "-";
|
|
99
|
+
}
|
|
100
|
+
}
|
|
85
101
|
let strValue = String(value);
|
|
86
102
|
strValue = strValue.replace(/\s*[–-]\s*undefined\s*$/gi, "");
|
|
87
103
|
strValue = strValue.replace(/^undefined\s*[–-]\s*/gi, "");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UIResourceRenderer.js","sources":["../../src/components/UIResourceRenderer.tsx"],"sourcesContent":["/**\n * UI Resource Renderer Component\n * Phase 0: Foundation with iframe sandbox and composite grid support\n */\n\nimport DOMPurify from 'dompurify'\nimport { Component, createSignal, Show, For, createMemo, createEffect } from 'solid-js'\nimport { isServer } from 'solid-js/web'\nimport type { UIComponent, UILayout, RendererError, ComponentType } from '../types'\nimport { validateComponent, DEFAULT_RESOURCE_LIMITS } from '../services/validation'\nimport { GenerativeUIErrorBoundary } from './GenerativeUIErrorBoundary'\nimport { marked } from 'marked'\n\n/**\n * Props for UIResourceRenderer\n */\nexport interface UIResourceRendererProps {\n /**\n * Single component or full layout to render\n */\n content: UIComponent | UILayout\n\n /**\n * Lazy loading (default: true)\n */\n lazyLoad?: boolean\n\n /**\n * Error callback\n */\n onError?: (error: RendererError) => void\n\n /**\n * Custom CSS class\n */\n class?: string\n}\n\n/**\n * Render a single chart component in a sandboxed iframe\n */\nfunction ChartRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n const [iframeUrl, setIframeUrl] = createSignal<string>()\n const [isLoading, setIsLoading] = createSignal(true)\n const [error, setError] = createSignal<string>()\n\n // Use createEffect instead of onMount for SSR compatibility\n // createEffect runs after hydration on client-side\n createEffect(() => {\n const chartParams = props.component.params as any\n if (!chartParams) return\n\n // Build Quickchart URL\n const chartConfig = {\n type: chartParams.type,\n data: chartParams.data,\n options: {\n ...chartParams.options,\n responsive: true,\n maintainAspectRatio: false,\n },\n }\n\n // Encode chart configuration for Quickchart API\n const configStr = encodeURIComponent(JSON.stringify(chartConfig))\n const url = `https://quickchart.io/chart?c=${configStr}&width=500&height=300&devicePixelRatio=2`\n\n // Validate domain (should always pass for quickchart.io)\n setIframeUrl(url)\n setIsLoading(false)\n })\n\n return (\n <div class=\"relative w-full h-full min-h-[300px] bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden\">\n <Show when={isLoading()}>\n <div class=\"absolute inset-0 flex items-center justify-center\">\n <div class=\"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600\" />\n </div>\n </Show>\n\n <Show when={error()}>\n <div class=\"absolute inset-0 flex items-center justify-center p-4\">\n <div class=\"text-center\">\n <p class=\"text-red-600 dark:text-red-400 text-sm font-medium\">Chart Error</p>\n <p class=\"text-gray-600 dark:text-gray-400 text-xs mt-1\">{error()}</p>\n </div>\n </div>\n </Show>\n\n <Show when={iframeUrl() && !error()}>\n <div class=\"w-full h-full p-4\">\n <Show when={(props.component.params as any).title}>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white mb-3\">\n {(props.component.params as any).title}\n </h3>\n </Show>\n <div class=\"w-full h-full\">\n <img\n src={iframeUrl()}\n alt=\"Chart visualization\"\n class=\"w-full h-auto max-h-[300px] object-contain\"\n onError={() => {\n setError('Failed to load chart')\n props.onError?.({\n type: 'render',\n message: 'Chart rendering failed',\n componentId: props.component.id,\n })\n }}\n />\n </div>\n </div>\n </Show>\n </div>\n )\n}\n\n/**\n * Smart cell value renderer that handles markdown links and other formats\n */\nfunction renderCellValue(value: any): string {\n // Handle null/undefined\n if (value === null || value === undefined) {\n return '-'\n }\n\n // Convert to string\n let strValue = String(value)\n\n // Clean up \"undefined\" patterns from backend data\n // Pattern 1: \"Text – undefined\" or \"Text - undefined\" → \"Text\"\n strValue = strValue.replace(/\\s*[–-]\\s*undefined\\s*$/gi, '')\n // Pattern 2: \"undefined – Text\" or \"undefined - Text\" → \"Text\"\n strValue = strValue.replace(/^undefined\\s*[–-]\\s*/gi, '')\n // Pattern 3: standalone \"undefined\" → \"-\"\n if (strValue.trim().toLowerCase() === 'undefined') {\n return '-'\n }\n // Pattern 4: empty string after cleanup → \"-\"\n if (strValue.trim() === '') {\n return '-'\n }\n\n // Detect and convert markdown links: [text](url)\n const markdownLinkRegex = /\\[([^\\]]+)\\]\\(([^)]+)\\)/g\n if (markdownLinkRegex.test(strValue)) {\n // Replace all markdown links with HTML links\n const htmlValue = strValue.replace(\n /\\[([^\\]]+)\\]\\(([^)]+)\\)/g,\n '<a href=\"$2\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-blue-600 dark:text-blue-400 hover:underline\">$1</a>'\n )\n return DOMPurify.sanitize(htmlValue, { ADD_ATTR: ['target', 'rel'] })\n }\n\n // Check if value contains markdown formatting (bold, italic, code, etc.)\n const hasMarkdown = /[*_`\\[\\]#]/.test(strValue)\n if (hasMarkdown) {\n // Parse with marked and sanitize\n const parsed = marked.parse(strValue, { async: false }) as string\n return DOMPurify.sanitize(parsed, { ADD_ATTR: ['target', 'rel'] })\n }\n\n // Plain text\n return strValue\n}\n\n/**\n * Render a table component\n */\nfunction TableRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n const tableParams = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden\">\n <div class=\"p-4\">\n <Show when={tableParams.title}>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white mb-3\">\n {tableParams.title}\n </h3>\n </Show>\n\n <div class=\"overflow-x-auto\">\n <table class=\"min-w-full divide-y divide-gray-200 dark:divide-gray-700 border-separate border-spacing-0\">\n <thead class=\"bg-gray-50 dark:bg-gray-900/50\">\n <tr>\n <For each={tableParams.columns}>\n {(column: any) => (\n <th\n scope=\"col\"\n class=\"px-6 py-3 text-left text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider border-b border-gray-200 dark:border-gray-700 first:pl-6 last:pr-6\"\n style={column.width ? { width: column.width } : {}}\n >\n {column.label}\n </th>\n )}\n </For>\n </tr>\n </thead>\n <tbody class=\"bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700\">\n <For each={tableParams.rows.slice(0, DEFAULT_RESOURCE_LIMITS.maxTableRows)}>\n {(row: any, i) => (\n <tr class={`hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors ${i() % 2 === 0 ? 'bg-white dark:bg-gray-800' : 'bg-gray-50/30 dark:bg-gray-800/50'}`}>\n <For each={tableParams.columns}>\n {(column: any) => (\n <td class=\"px-6 py-4 text-sm text-gray-700 dark:text-gray-200 whitespace-normal break-words leading-relaxed first:pl-6 last:pr-6\">\n <div innerHTML={renderCellValue(row[column.key])} />\n </td>\n )}\n </For>\n </tr>\n )}\n </For>\n </tbody>\n </table>\n </div>\n\n <Show when={tableParams.pagination}>\n <div class=\"mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400\">\n <span>\n Showing {tableParams.pagination.currentPage * tableParams.pagination.pageSize + 1} -{' '}\n {Math.min(\n (tableParams.pagination.currentPage + 1) * tableParams.pagination.pageSize,\n tableParams.pagination.totalRows\n )}{' '}\n of {tableParams.pagination.totalRows}\n </span>\n </div>\n </Show>\n </div>\n </div>\n )\n}\n\n/**\n * Render a metric card component\n */\nfunction MetricRenderer(props: { component: UIComponent }) {\n const metricParams = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4\">\n <div class=\"flex flex-col h-full justify-between\">\n <div>\n <p class=\"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide\">\n {metricParams.title}\n </p>\n <div class=\"mt-2 flex items-baseline\">\n <p class=\"text-2xl font-semibold text-gray-900 dark:text-white\">{metricParams.value}</p>\n <Show when={metricParams.unit}>\n <span class=\"ml-2 text-sm font-medium text-gray-500 dark:text-gray-400\">\n {metricParams.unit}\n </span>\n </Show>\n </div>\n </div>\n\n <Show when={metricParams.trend}>\n <div class=\"mt-3 flex items-center\">\n <span\n class={`text-sm font-medium ${metricParams.trend.direction === 'up'\n ? 'text-green-600 dark:text-green-400'\n : metricParams.trend.direction === 'down'\n ? 'text-red-600 dark:text-red-400'\n : 'text-gray-600 dark:text-gray-400'\n }`}\n >\n {metricParams.trend.direction === 'up'\n ? '�'\n : metricParams.trend.direction === 'down'\n ? '�'\n : '�'}{' '}\n {Math.abs(metricParams.trend.value)}%\n </span>\n </div>\n </Show>\n\n <Show when={metricParams.subtitle}>\n <p class=\"mt-2 text-xs text-gray-500 dark:text-gray-400\">{metricParams.subtitle}</p>\n </Show>\n </div>\n </div>\n )\n}\n\n/**\n * Extract image data from markdown image link format\n * Pattern: [](link-url)\\n*Photo by Author*\n */\nfunction extractImageFromMarkdown(content: string): { alt: string; imageUrl: string; linkUrl: string; credit: string } | null {\n // Pattern: [](link-url) followed by optional credit line\n const imagePattern = /\\[!\\[([^\\]]*)\\]\\(([^)]+)\\)\\]\\(([^)]+)\\)\\s*\\*([^*]+)\\*/\n const match = content.match(imagePattern)\n\n if (match) {\n return {\n alt: match[1] || 'Image',\n imageUrl: match[2],\n linkUrl: match[3],\n credit: match[4].trim()\n }\n }\n\n return null\n}\n\n/**\n * Render a text component (with optional markdown)\n */\nfunction TextRenderer(props: { component: UIComponent }) {\n const textParams = props.component.params as any\n\n // Check if this is an image markdown that should be rendered as image component\n const imageData = createMemo(() => {\n if (textParams.markdown && textParams.content) {\n return extractImageFromMarkdown(textParams.content)\n }\n return null\n })\n\n // Convert markdown to HTML if markdown flag is true (and not an image component)\n const htmlContent = createMemo(() => {\n if (textParams.markdown && !imageData()) {\n return marked.parse(textParams.content, { async: false }) as string\n }\n return textParams.content\n })\n\n // Render as image component if we extracted image data\n return (\n <Show\n when={imageData()}\n fallback={\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4\">\n <div\n class={`prose prose-sm dark:prose-invert max-w-none ${textParams.className || ''}`}\n innerHTML={htmlContent()}\n />\n </div>\n }\n >\n {(data) => (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col\">\n <div class=\"flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]\">\n <a href={data().linkUrl} target=\"_blank\" rel=\"noopener noreferrer\" class=\"cursor-zoom-in\">\n <img\n src={data().imageUrl}\n alt={data().alt}\n class=\"max-w-full max-h-[400px] object-contain rounded shadow-sm hover:opacity-90 transition-opacity\"\n loading=\"lazy\"\n />\n </a>\n </div>\n <div class=\"p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\">\n <p class=\"text-sm text-gray-600 dark:text-gray-400 text-center italic\">{data().credit}</p>\n </div>\n </div>\n )}\n </Show>\n )\n}\n\n/**\n * Render an iframe component\n */\nfunction IframeRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col\">\n <Show when={params.title}>\n <div class=\"px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900\">\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white\">{params.title}</h3>\n </div>\n </Show>\n <iframe\n src={params.url}\n title={params.title || 'Embedded content'}\n class=\"w-full border-0 flex-1\"\n style={`height: ${params.height || '400px'}; min-height: 300px;`}\n sandbox=\"allow-scripts allow-same-origin allow-popups allow-forms\"\n loading=\"lazy\"\n />\n </div>\n )\n}\n\n/**\n * Render an image component\n */\nfunction ImageRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col\">\n <div class=\"flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]\">\n <a href={params.url} target=\"_blank\" rel=\"noopener noreferrer\" class=\"cursor-zoom-in\">\n <img\n src={params.url}\n alt={params.alt || 'Image'}\n class=\"max-w-full max-h-[500px] object-contain rounded shadow-sm hover:opacity-95 transition-opacity\"\n loading=\"lazy\"\n />\n </a>\n </div>\n <Show when={params.caption}>\n <div class=\"p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\">\n <p class=\"text-sm text-gray-600 dark:text-gray-400 text-center\">{params.caption}</p>\n </div>\n </Show>\n </div>\n )\n}\n\n/**\n * Render a link component\n */\n/**\n * Render a link component\n */\nfunction LinkRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n\n return (\n <a\n href={params.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"flex items-center gap-3 p-4 bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors group h-full\"\n onClick={(e) => e.stopPropagation()}\n >\n <div class=\"p-2 bg-blue-50 dark:bg-blue-900/30 rounded-full text-blue-600 dark:text-blue-400 group-hover:bg-blue-100 dark:group-hover:bg-blue-900/50 shrink-0 transition-colors\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"w-5 h-5\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" />\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" />\n </svg>\n </div>\n <div class=\"flex-1 min-w-0\">\n <h4 class=\"text-sm font-medium text-gray-900 dark:text-white truncate group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors\">\n {params.label || params.url}\n </h4>\n <Show when={params.description}>\n <p class=\"text-xs text-gray-500 dark:text-gray-400 truncate\">{params.description}</p>\n </Show>\n </div>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"w-4 h-4 text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 shrink-0 transition-colors\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\" />\n </svg>\n </a>\n )\n}\n\n/**\n * Render a single component with error boundary\n */\nfunction ComponentRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n // Validate component before rendering\n const validation = validateComponent(props.component)\n if (!validation.valid) {\n props.onError?.({\n type: 'validation',\n message: 'Component validation failed',\n componentId: props.component.id,\n details: validation.errors,\n })\n\n return (\n <div class=\"w-full h-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4\">\n <p class=\"text-sm font-medium text-red-900 dark:text-red-100\">Validation Error</p>\n <p class=\"text-xs text-red-700 dark:text-red-300 mt-1\">\n {validation.errors?.[0]?.message || 'Unknown validation error'}\n </p>\n </div>\n )\n }\n\n // Render based on component type with enhanced error boundary\n return (\n <GenerativeUIErrorBoundary\n componentId={props.component.id}\n componentType={props.component.type}\n onError={props.onError}\n allowRetry={true}\n >\n <Show when={props.component.type === 'chart'}>\n <ChartRenderer component={props.component} onError={props.onError} />\n </Show>\n <Show when={props.component.type === 'table'}>\n <TableRenderer component={props.component} onError={props.onError} />\n </Show>\n <Show when={props.component.type === 'metric'}>\n <MetricRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'text'}>\n <TextRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'iframe'}>\n <IframeRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'image'}>\n <ImageRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'link'}>\n <LinkRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'action'}>\n <ActionRenderer component={props.component} />\n </Show>\n </GenerativeUIErrorBoundary>\n )\n}\n\n/**\n * Render an action component (button or link)\n */\nfunction ActionRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n let dispatchAction: ((toolName: string, toolParams: any) => void) | null = null\n\n // Initialize CustomEvent dispatcher only on client-side\n // Use createEffect instead of onMount for SSR compatibility\n createEffect(() => {\n if (typeof window !== 'undefined') {\n dispatchAction = (toolName: string, toolParams: any) => {\n const event = new CustomEvent('mcp-action', {\n detail: {\n toolName,\n params: toolParams,\n },\n bubbles: true,\n })\n window.dispatchEvent(event)\n }\n }\n })\n\n // Handle click to execute tool via window event\n const handleClick = (e: MouseEvent) => {\n if (params.action === 'tool-call' && params.toolName) {\n e.preventDefault()\n // SSR-safe: Only call if dispatcher was initialized client-side\n dispatchAction?.(params.toolName, params.params || {})\n }\n }\n\n if (params.type === 'link' || params.action === 'link') {\n return (\n <a\n href={params.url || '#'}\n target={params.url ? '_blank' : undefined}\n rel=\"noopener noreferrer\"\n class={`inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors\n ${params.variant === 'primary' ? 'bg-blue-600 text-white hover:bg-blue-700' :\n params.variant === 'outline' ? 'border border-gray-300 text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800' :\n 'text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300'}`}\n onClick={handleClick}\n >\n <Show when={params.icon}>\n <span>{params.icon}</span>\n </Show>\n {params.label}\n </a>\n )\n }\n\n return (\n <button\n type={params.action === 'submit' ? 'submit' : 'button'}\n disabled={params.disabled}\n class={`inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500\n ${params.variant === 'primary' ? 'bg-blue-600 text-white hover:bg-blue-700 shadow-sm' :\n params.variant === 'secondary' ? 'bg-gray-100 text-gray-900 hover:bg-gray-200 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600' :\n params.variant === 'outline' ? 'border border-gray-300 text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800' :\n params.variant === 'danger' ? 'bg-red-600 text-white hover:bg-red-700' :\n 'bg-transparent text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800'}\n ${params.disabled ? 'opacity-50 cursor-not-allowed' : ''}\n ${params.size === 'sm' ? 'px-3 py-1.5 text-xs' : params.size === 'lg' ? 'px-6 py-3 text-base' : ''}`}\n onClick={handleClick}\n >\n <Show when={params.icon}>\n <span>{params.icon}</span>\n </Show>\n {params.label}\n </button>\n )\n}\n\n/**\n * Main UIResourceRenderer component\n */\nexport const UIResourceRenderer: Component<UIResourceRendererProps> = (props) => {\n const layout = () => {\n // Check if content is a UIComponent (non-composite) vs UILayout (composite)\n if ('type' in props.content && (props.content as any).type !== 'composite') {\n return {\n id: 'single-component',\n components: [props.content as UIComponent],\n grid: {\n columns: 12,\n gap: '1rem',\n },\n } as UILayout\n }\n return props.content as UILayout\n }\n\n // Convert grid styles to CSS string\n const gridContainerStyle = () => {\n const layoutData = layout()\n return `grid-template-columns: repeat(${layoutData.grid.columns}, 1fr); gap: ${layoutData.grid.gap}`\n }\n\n // Convert component grid styles to CSS string\n const getGridStyleString = (component: UIComponent) => {\n // Defensive check for position field - default to full width\n if (!component.position) {\n return 'grid-column: 1 / span 12; grid-row: auto'\n }\n const { colStart, colSpan, rowStart, rowSpan = 1 } = component.position\n return `grid-column: ${colStart} / span ${colSpan}; grid-row: ${rowStart ? `${rowStart} / span ${rowSpan}` : 'auto'}`\n }\n\n const layoutData = layout()\n\n return (\n <div class={`w-full ${props.class || ''}`}>\n <div class=\"grid gap-4\" style={gridContainerStyle()}>\n <For each={layoutData.components}>\n {(component) => (\n <div style={getGridStyleString(component)}>\n <ComponentRenderer component={component} onError={props.onError} />\n </div>\n )}\n </For>\n </div>\n </div>\n )\n}\n"],"names":["ChartRenderer","props","iframeUrl","setIframeUrl","createSignal","isLoading","setIsLoading","error","setError","createEffect","chartParams","component","params","chartConfig","type","data","options","responsive","maintainAspectRatio","configStr","encodeURIComponent","JSON","stringify","url","_el$","_$getNextElement","_tmpl$5","_el$11","firstChild","_el$12","_co$2","_$getNextMarker","nextSibling","_el$13","_el$14","_co$3","_el$15","_el$16","_co$4","_$insert","_$createComponent","Show","when","children","_tmpl$","_el$3","_tmpl$2","_el$4","_el$5","_el$6","_$memo","_el$7","_tmpl$4","_el$1","_el$10","_co$","_el$9","_el$0","title","_el$8","_tmpl$3","addEventListener","onError","message","componentId","id","_$effect","_$setAttribute","renderCellValue","value","undefined","strValue","String","replace","trim","toLowerCase","markdownLinkRegex","test","htmlValue","DOMPurify","sanitize","ADD_ATTR","hasMarkdown","parsed","marked","parse","async","TableRenderer","tableParams","_el$17","_tmpl$7","_el$18","_el$38","_el$39","_co$8","_el$20","_el$21","_el$22","_el$23","_el$24","_el$40","_el$41","_co$9","_el$19","For","each","columns","column","_el$42","_tmpl$8","label","_$p","_$style","width","rows","slice","DEFAULT_RESOURCE_LIMITS","maxTableRows","row","i","_el$43","_tmpl$9","_el$44","_tmpl$0","_el$45","_$setProperty","key","_$className","pagination","_el$25","_tmpl$6","_el$26","_el$27","_el$32","_el$33","_co$5","_el$28","_el$34","_el$35","_co$6","_el$30","_el$36","_el$37","_co$7","currentPage","pageSize","Math","min","totalRows","MetricRenderer","metricParams","_el$46","_tmpl$12","_el$47","_el$48","_el$49","_el$50","_el$51","_el$53","_el$54","_co$0","_el$64","_el$65","_co$11","_el$66","_el$67","_co$12","unit","_el$52","_tmpl$1","trend","_el$55","_tmpl$10","_el$56","_el$59","_el$60","_co$1","_el$57","_el$61","_el$62","_co$10","_c$","direction","abs","subtitle","_el$63","_tmpl$11","extractImageFromMarkdown","content","imagePattern","match","alt","imageUrl","linkUrl","credit","TextRenderer","textParams","imageData","createMemo","markdown","htmlContent","fallback","_el$68","_tmpl$13","_el$69","_p$","_v$","className","_v$2","e","t","_el$70","_tmpl$14","_el$71","_el$72","_el$73","_el$74","_el$75","_v$3","_v$4","_v$5","a","IframeRenderer","_el$76","_tmpl$16","_el$80","_el$81","_co$13","_el$79","_el$77","_tmpl$15","_el$78","_v$6","_v$7","_v$8","height","ImageRenderer","_el$82","_tmpl$18","_el$83","_el$84","_el$85","_el$88","_el$89","_co$14","caption","_el$86","_tmpl$17","_el$87","_v$9","_v$0","_v$1","LinkRenderer","_el$90","_tmpl$20","_el$91","_el$92","_el$93","_el$95","_el$96","_co$15","$$click","stopPropagation","description","_el$94","_tmpl$19","_$runHydrationEvents","ComponentRenderer","validation","validateComponent","valid","details","errors","_el$97","_tmpl$21","_el$98","_el$99","GenerativeUIErrorBoundary","componentType","allowRetry","ActionRenderer","dispatchAction","window","toolName","toolParams","event","CustomEvent","detail","bubbles","dispatchEvent","handleClick","action","preventDefault","_el$100","_tmpl$23","_el$102","_el$103","_co$16","_el$104","_el$105","_co$17","icon","_el$101","_tmpl$22","_v$10","_v$11","_v$12","variant","_el$106","_tmpl$24","_el$108","_el$109","_co$18","_el$110","_el$111","_co$19","_el$107","_v$13","_v$14","disabled","_v$15","size","UIResourceRenderer","layout","components","grid","gap","gridContainerStyle","layoutData","getGridStyleString","position","colStart","colSpan","rowStart","rowSpan","_el$112","_tmpl$25","_el$113","_el$114","_tmpl$26","_v$16","class","_v$17","_$delegateEvents"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UIResourceRenderer.js","sources":["../../src/components/UIResourceRenderer.tsx"],"sourcesContent":["/**\n * UI Resource Renderer Component\n * Phase 0: Foundation with iframe sandbox and composite grid support\n */\n\nimport DOMPurify from 'dompurify'\nimport { Component, createSignal, Show, For, createMemo, createEffect } from 'solid-js'\nimport { isServer } from 'solid-js/web'\nimport type { UIComponent, UILayout, RendererError, ComponentType } from '../types'\nimport { validateComponent, DEFAULT_RESOURCE_LIMITS } from '../services/validation'\nimport { GenerativeUIErrorBoundary } from './GenerativeUIErrorBoundary'\nimport { marked } from 'marked'\n\n/**\n * Props for UIResourceRenderer\n */\nexport interface UIResourceRendererProps {\n /**\n * Single component or full layout to render\n */\n content: UIComponent | UILayout\n\n /**\n * Lazy loading (default: true)\n */\n lazyLoad?: boolean\n\n /**\n * Error callback\n */\n onError?: (error: RendererError) => void\n\n /**\n * Custom CSS class\n */\n class?: string\n}\n\n/**\n * Render a single chart component in a sandboxed iframe\n */\nfunction ChartRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n const [iframeUrl, setIframeUrl] = createSignal<string>()\n const [isLoading, setIsLoading] = createSignal(true)\n const [error, setError] = createSignal<string>()\n\n // Use createEffect instead of onMount for SSR compatibility\n // createEffect runs after hydration on client-side\n createEffect(() => {\n const chartParams = props.component.params as any\n if (!chartParams) return\n\n // Build Quickchart URL\n const chartConfig = {\n type: chartParams.type,\n data: chartParams.data,\n options: {\n ...chartParams.options,\n responsive: true,\n maintainAspectRatio: false,\n },\n }\n\n // Encode chart configuration for Quickchart API\n const configStr = encodeURIComponent(JSON.stringify(chartConfig))\n const url = `https://quickchart.io/chart?c=${configStr}&width=500&height=300&devicePixelRatio=2`\n\n // Validate domain (should always pass for quickchart.io)\n setIframeUrl(url)\n setIsLoading(false)\n })\n\n return (\n <div class=\"relative w-full h-full min-h-[300px] bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden\">\n <Show when={isLoading()}>\n <div class=\"absolute inset-0 flex items-center justify-center\">\n <div class=\"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600\" />\n </div>\n </Show>\n\n <Show when={error()}>\n <div class=\"absolute inset-0 flex items-center justify-center p-4\">\n <div class=\"text-center\">\n <p class=\"text-red-600 dark:text-red-400 text-sm font-medium\">Chart Error</p>\n <p class=\"text-gray-600 dark:text-gray-400 text-xs mt-1\">{error()}</p>\n </div>\n </div>\n </Show>\n\n <Show when={iframeUrl() && !error()}>\n <div class=\"w-full h-full p-4\">\n <Show when={(props.component.params as any).title}>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white mb-3\">\n {(props.component.params as any).title}\n </h3>\n </Show>\n <div class=\"w-full h-full\">\n <img\n src={iframeUrl()}\n alt=\"Chart visualization\"\n class=\"w-full h-auto max-h-[300px] object-contain\"\n onError={() => {\n setError('Failed to load chart')\n props.onError?.({\n type: 'render',\n message: 'Chart rendering failed',\n componentId: props.component.id,\n })\n }}\n />\n </div>\n </div>\n </Show>\n </div>\n )\n}\n\n/**\n * Smart cell value renderer that handles markdown links and other formats\n */\nfunction renderCellValue(value: any): string {\n // Handle null/undefined\n if (value === null || value === undefined) {\n return '-'\n }\n\n // Handle object with url/name properties (common source/link format from LLM)\n if (typeof value === 'object' && value !== null) {\n // Check for link-like objects: { url: \"...\", name/label/title: \"...\" }\n if (value.url) {\n const label = value.name || value.label || value.title || value.url\n const sanitizedLabel = DOMPurify.sanitize(String(label))\n const sanitizedUrl = DOMPurify.sanitize(String(value.url))\n return `<a href=\"${sanitizedUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-blue-600 dark:text-blue-400 hover:underline\">${sanitizedLabel}</a>`\n }\n // Fallback: extract meaningful text from object properties\n if (value.name || value.label || value.title) {\n return DOMPurify.sanitize(String(value.name || value.label || value.title))\n }\n // Last resort: JSON stringify for debugging (better than [object Object])\n try {\n return JSON.stringify(value)\n } catch {\n return '-'\n }\n }\n\n // Convert to string\n let strValue = String(value)\n\n // Clean up \"undefined\" patterns from backend data\n // Pattern 1: \"Text – undefined\" or \"Text - undefined\" → \"Text\"\n strValue = strValue.replace(/\\s*[–-]\\s*undefined\\s*$/gi, '')\n // Pattern 2: \"undefined – Text\" or \"undefined - Text\" → \"Text\"\n strValue = strValue.replace(/^undefined\\s*[–-]\\s*/gi, '')\n // Pattern 3: standalone \"undefined\" → \"-\"\n if (strValue.trim().toLowerCase() === 'undefined') {\n return '-'\n }\n // Pattern 4: empty string after cleanup → \"-\"\n if (strValue.trim() === '') {\n return '-'\n }\n\n // Detect and convert markdown links: [text](url)\n const markdownLinkRegex = /\\[([^\\]]+)\\]\\(([^)]+)\\)/g\n if (markdownLinkRegex.test(strValue)) {\n // Replace all markdown links with HTML links\n const htmlValue = strValue.replace(\n /\\[([^\\]]+)\\]\\(([^)]+)\\)/g,\n '<a href=\"$2\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-blue-600 dark:text-blue-400 hover:underline\">$1</a>'\n )\n return DOMPurify.sanitize(htmlValue, { ADD_ATTR: ['target', 'rel'] })\n }\n\n // Check if value contains markdown formatting (bold, italic, code, etc.)\n const hasMarkdown = /[*_`\\[\\]#]/.test(strValue)\n if (hasMarkdown) {\n // Parse with marked and sanitize\n const parsed = marked.parse(strValue, { async: false }) as string\n return DOMPurify.sanitize(parsed, { ADD_ATTR: ['target', 'rel'] })\n }\n\n // Plain text\n return strValue\n}\n\n/**\n * Render a table component\n */\nfunction TableRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n const tableParams = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden\">\n <div class=\"p-4\">\n <Show when={tableParams.title}>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white mb-3\">\n {tableParams.title}\n </h3>\n </Show>\n\n <div class=\"overflow-x-auto\">\n <table class=\"min-w-full divide-y divide-gray-200 dark:divide-gray-700 border-separate border-spacing-0\">\n <thead class=\"bg-gray-50 dark:bg-gray-900/50\">\n <tr>\n <For each={tableParams.columns}>\n {(column: any) => (\n <th\n scope=\"col\"\n class=\"px-6 py-3 text-left text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider border-b border-gray-200 dark:border-gray-700 first:pl-6 last:pr-6\"\n style={column.width ? { width: column.width } : {}}\n >\n {column.label}\n </th>\n )}\n </For>\n </tr>\n </thead>\n <tbody class=\"bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700\">\n <For each={tableParams.rows.slice(0, DEFAULT_RESOURCE_LIMITS.maxTableRows)}>\n {(row: any, i) => (\n <tr class={`hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors ${i() % 2 === 0 ? 'bg-white dark:bg-gray-800' : 'bg-gray-50/30 dark:bg-gray-800/50'}`}>\n <For each={tableParams.columns}>\n {(column: any) => (\n <td class=\"px-6 py-4 text-sm text-gray-700 dark:text-gray-200 whitespace-normal break-words leading-relaxed first:pl-6 last:pr-6\">\n <div innerHTML={renderCellValue(row[column.key])} />\n </td>\n )}\n </For>\n </tr>\n )}\n </For>\n </tbody>\n </table>\n </div>\n\n <Show when={tableParams.pagination}>\n <div class=\"mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400\">\n <span>\n Showing {tableParams.pagination.currentPage * tableParams.pagination.pageSize + 1} -{' '}\n {Math.min(\n (tableParams.pagination.currentPage + 1) * tableParams.pagination.pageSize,\n tableParams.pagination.totalRows\n )}{' '}\n of {tableParams.pagination.totalRows}\n </span>\n </div>\n </Show>\n </div>\n </div>\n )\n}\n\n/**\n * Render a metric card component\n */\nfunction MetricRenderer(props: { component: UIComponent }) {\n const metricParams = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4\">\n <div class=\"flex flex-col h-full justify-between\">\n <div>\n <p class=\"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide\">\n {metricParams.title}\n </p>\n <div class=\"mt-2 flex items-baseline\">\n <p class=\"text-2xl font-semibold text-gray-900 dark:text-white\">{metricParams.value}</p>\n <Show when={metricParams.unit}>\n <span class=\"ml-2 text-sm font-medium text-gray-500 dark:text-gray-400\">\n {metricParams.unit}\n </span>\n </Show>\n </div>\n </div>\n\n <Show when={metricParams.trend}>\n <div class=\"mt-3 flex items-center\">\n <span\n class={`text-sm font-medium ${metricParams.trend.direction === 'up'\n ? 'text-green-600 dark:text-green-400'\n : metricParams.trend.direction === 'down'\n ? 'text-red-600 dark:text-red-400'\n : 'text-gray-600 dark:text-gray-400'\n }`}\n >\n {metricParams.trend.direction === 'up'\n ? '�'\n : metricParams.trend.direction === 'down'\n ? '�'\n : '�'}{' '}\n {Math.abs(metricParams.trend.value)}%\n </span>\n </div>\n </Show>\n\n <Show when={metricParams.subtitle}>\n <p class=\"mt-2 text-xs text-gray-500 dark:text-gray-400\">{metricParams.subtitle}</p>\n </Show>\n </div>\n </div>\n )\n}\n\n/**\n * Extract image data from markdown image link format\n * Pattern: [](link-url)\\n*Photo by Author*\n */\nfunction extractImageFromMarkdown(content: string): { alt: string; imageUrl: string; linkUrl: string; credit: string } | null {\n // Pattern: [](link-url) followed by optional credit line\n const imagePattern = /\\[!\\[([^\\]]*)\\]\\(([^)]+)\\)\\]\\(([^)]+)\\)\\s*\\*([^*]+)\\*/\n const match = content.match(imagePattern)\n\n if (match) {\n return {\n alt: match[1] || 'Image',\n imageUrl: match[2],\n linkUrl: match[3],\n credit: match[4].trim()\n }\n }\n\n return null\n}\n\n/**\n * Render a text component (with optional markdown)\n */\nfunction TextRenderer(props: { component: UIComponent }) {\n const textParams = props.component.params as any\n\n // Check if this is an image markdown that should be rendered as image component\n const imageData = createMemo(() => {\n if (textParams.markdown && textParams.content) {\n return extractImageFromMarkdown(textParams.content)\n }\n return null\n })\n\n // Convert markdown to HTML if markdown flag is true (and not an image component)\n const htmlContent = createMemo(() => {\n if (textParams.markdown && !imageData()) {\n return marked.parse(textParams.content, { async: false }) as string\n }\n return textParams.content\n })\n\n // Render as image component if we extracted image data\n return (\n <Show\n when={imageData()}\n fallback={\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4\">\n <div\n class={`prose prose-sm dark:prose-invert max-w-none ${textParams.className || ''}`}\n innerHTML={htmlContent()}\n />\n </div>\n }\n >\n {(data) => (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col\">\n <div class=\"flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]\">\n <a href={data().linkUrl} target=\"_blank\" rel=\"noopener noreferrer\" class=\"cursor-zoom-in\">\n <img\n src={data().imageUrl}\n alt={data().alt}\n class=\"max-w-full max-h-[400px] object-contain rounded shadow-sm hover:opacity-90 transition-opacity\"\n loading=\"lazy\"\n />\n </a>\n </div>\n <div class=\"p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\">\n <p class=\"text-sm text-gray-600 dark:text-gray-400 text-center italic\">{data().credit}</p>\n </div>\n </div>\n )}\n </Show>\n )\n}\n\n/**\n * Render an iframe component\n */\nfunction IframeRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col\">\n <Show when={params.title}>\n <div class=\"px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900\">\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white\">{params.title}</h3>\n </div>\n </Show>\n <iframe\n src={params.url}\n title={params.title || 'Embedded content'}\n class=\"w-full border-0 flex-1\"\n style={`height: ${params.height || '400px'}; min-height: 300px;`}\n sandbox=\"allow-scripts allow-same-origin allow-popups allow-forms\"\n loading=\"lazy\"\n />\n </div>\n )\n}\n\n/**\n * Render an image component\n */\nfunction ImageRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col\">\n <div class=\"flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]\">\n <a href={params.url} target=\"_blank\" rel=\"noopener noreferrer\" class=\"cursor-zoom-in\">\n <img\n src={params.url}\n alt={params.alt || 'Image'}\n class=\"max-w-full max-h-[500px] object-contain rounded shadow-sm hover:opacity-95 transition-opacity\"\n loading=\"lazy\"\n />\n </a>\n </div>\n <Show when={params.caption}>\n <div class=\"p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\">\n <p class=\"text-sm text-gray-600 dark:text-gray-400 text-center\">{params.caption}</p>\n </div>\n </Show>\n </div>\n )\n}\n\n/**\n * Render a link component\n */\n/**\n * Render a link component\n */\nfunction LinkRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n\n return (\n <a\n href={params.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"flex items-center gap-3 p-4 bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors group h-full\"\n onClick={(e) => e.stopPropagation()}\n >\n <div class=\"p-2 bg-blue-50 dark:bg-blue-900/30 rounded-full text-blue-600 dark:text-blue-400 group-hover:bg-blue-100 dark:group-hover:bg-blue-900/50 shrink-0 transition-colors\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"w-5 h-5\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" />\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" />\n </svg>\n </div>\n <div class=\"flex-1 min-w-0\">\n <h4 class=\"text-sm font-medium text-gray-900 dark:text-white truncate group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors\">\n {params.label || params.url}\n </h4>\n <Show when={params.description}>\n <p class=\"text-xs text-gray-500 dark:text-gray-400 truncate\">{params.description}</p>\n </Show>\n </div>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"w-4 h-4 text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 shrink-0 transition-colors\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\" />\n </svg>\n </a>\n )\n}\n\n/**\n * Render a single component with error boundary\n */\nfunction ComponentRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n // Validate component before rendering\n const validation = validateComponent(props.component)\n if (!validation.valid) {\n props.onError?.({\n type: 'validation',\n message: 'Component validation failed',\n componentId: props.component.id,\n details: validation.errors,\n })\n\n return (\n <div class=\"w-full h-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4\">\n <p class=\"text-sm font-medium text-red-900 dark:text-red-100\">Validation Error</p>\n <p class=\"text-xs text-red-700 dark:text-red-300 mt-1\">\n {validation.errors?.[0]?.message || 'Unknown validation error'}\n </p>\n </div>\n )\n }\n\n // Render based on component type with enhanced error boundary\n return (\n <GenerativeUIErrorBoundary\n componentId={props.component.id}\n componentType={props.component.type}\n onError={props.onError}\n allowRetry={true}\n >\n <Show when={props.component.type === 'chart'}>\n <ChartRenderer component={props.component} onError={props.onError} />\n </Show>\n <Show when={props.component.type === 'table'}>\n <TableRenderer component={props.component} onError={props.onError} />\n </Show>\n <Show when={props.component.type === 'metric'}>\n <MetricRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'text'}>\n <TextRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'iframe'}>\n <IframeRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'image'}>\n <ImageRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'link'}>\n <LinkRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'action'}>\n <ActionRenderer component={props.component} />\n </Show>\n </GenerativeUIErrorBoundary>\n )\n}\n\n/**\n * Render an action component (button or link)\n */\nfunction ActionRenderer(props: { component: UIComponent }) {\n const params = props.component.params as any\n let dispatchAction: ((toolName: string, toolParams: any) => void) | null = null\n\n // Initialize CustomEvent dispatcher only on client-side\n // Use createEffect instead of onMount for SSR compatibility\n createEffect(() => {\n if (typeof window !== 'undefined') {\n dispatchAction = (toolName: string, toolParams: any) => {\n const event = new CustomEvent('mcp-action', {\n detail: {\n toolName,\n params: toolParams,\n },\n bubbles: true,\n })\n window.dispatchEvent(event)\n }\n }\n })\n\n // Handle click to execute tool via window event\n const handleClick = (e: MouseEvent) => {\n if (params.action === 'tool-call' && params.toolName) {\n e.preventDefault()\n // SSR-safe: Only call if dispatcher was initialized client-side\n dispatchAction?.(params.toolName, params.params || {})\n }\n }\n\n if (params.type === 'link' || params.action === 'link') {\n return (\n <a\n href={params.url || '#'}\n target={params.url ? '_blank' : undefined}\n rel=\"noopener noreferrer\"\n class={`inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors\n ${params.variant === 'primary' ? 'bg-blue-600 text-white hover:bg-blue-700' :\n params.variant === 'outline' ? 'border border-gray-300 text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800' :\n 'text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300'}`}\n onClick={handleClick}\n >\n <Show when={params.icon}>\n <span>{params.icon}</span>\n </Show>\n {params.label}\n </a>\n )\n }\n\n return (\n <button\n type={params.action === 'submit' ? 'submit' : 'button'}\n disabled={params.disabled}\n class={`inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500\n ${params.variant === 'primary' ? 'bg-blue-600 text-white hover:bg-blue-700 shadow-sm' :\n params.variant === 'secondary' ? 'bg-gray-100 text-gray-900 hover:bg-gray-200 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600' :\n params.variant === 'outline' ? 'border border-gray-300 text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800' :\n params.variant === 'danger' ? 'bg-red-600 text-white hover:bg-red-700' :\n 'bg-transparent text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800'}\n ${params.disabled ? 'opacity-50 cursor-not-allowed' : ''}\n ${params.size === 'sm' ? 'px-3 py-1.5 text-xs' : params.size === 'lg' ? 'px-6 py-3 text-base' : ''}`}\n onClick={handleClick}\n >\n <Show when={params.icon}>\n <span>{params.icon}</span>\n </Show>\n {params.label}\n </button>\n )\n}\n\n/**\n * Main UIResourceRenderer component\n */\nexport const UIResourceRenderer: Component<UIResourceRendererProps> = (props) => {\n const layout = () => {\n // Check if content is a UIComponent (non-composite) vs UILayout (composite)\n if ('type' in props.content && (props.content as any).type !== 'composite') {\n return {\n id: 'single-component',\n components: [props.content as UIComponent],\n grid: {\n columns: 12,\n gap: '1rem',\n },\n } as UILayout\n }\n return props.content as UILayout\n }\n\n // Convert grid styles to CSS string\n const gridContainerStyle = () => {\n const layoutData = layout()\n return `grid-template-columns: repeat(${layoutData.grid.columns}, 1fr); gap: ${layoutData.grid.gap}`\n }\n\n // Convert component grid styles to CSS string\n const getGridStyleString = (component: UIComponent) => {\n // Defensive check for position field - default to full width\n if (!component.position) {\n return 'grid-column: 1 / span 12; grid-row: auto'\n }\n const { colStart, colSpan, rowStart, rowSpan = 1 } = component.position\n return `grid-column: ${colStart} / span ${colSpan}; grid-row: ${rowStart ? `${rowStart} / span ${rowSpan}` : 'auto'}`\n }\n\n const layoutData = layout()\n\n return (\n <div class={`w-full ${props.class || ''}`}>\n <div class=\"grid gap-4\" style={gridContainerStyle()}>\n <For each={layoutData.components}>\n {(component) => (\n <div style={getGridStyleString(component)}>\n <ComponentRenderer component={component} onError={props.onError} />\n </div>\n )}\n </For>\n </div>\n </div>\n )\n}\n"],"names":["ChartRenderer","props","iframeUrl","setIframeUrl","createSignal","isLoading","setIsLoading","error","setError","createEffect","chartParams","component","params","chartConfig","type","data","options","responsive","maintainAspectRatio","configStr","encodeURIComponent","JSON","stringify","url","_el$","_$getNextElement","_tmpl$5","_el$11","firstChild","_el$12","_co$2","_$getNextMarker","nextSibling","_el$13","_el$14","_co$3","_el$15","_el$16","_co$4","_$insert","_$createComponent","Show","when","children","_tmpl$","_el$3","_tmpl$2","_el$4","_el$5","_el$6","_$memo","_el$7","_tmpl$4","_el$1","_el$10","_co$","_el$9","_el$0","title","_el$8","_tmpl$3","addEventListener","onError","message","componentId","id","_$effect","_$setAttribute","renderCellValue","value","undefined","label","name","sanitizedLabel","DOMPurify","sanitize","String","sanitizedUrl","strValue","replace","trim","toLowerCase","markdownLinkRegex","test","htmlValue","ADD_ATTR","hasMarkdown","parsed","marked","parse","async","TableRenderer","tableParams","_el$17","_tmpl$7","_el$18","_el$38","_el$39","_co$8","_el$20","_el$21","_el$22","_el$23","_el$24","_el$40","_el$41","_co$9","_el$19","For","each","columns","column","_el$42","_tmpl$8","_$p","_$style","width","rows","slice","DEFAULT_RESOURCE_LIMITS","maxTableRows","row","i","_el$43","_tmpl$9","_el$44","_tmpl$0","_el$45","_$setProperty","key","_$className","pagination","_el$25","_tmpl$6","_el$26","_el$27","_el$32","_el$33","_co$5","_el$28","_el$34","_el$35","_co$6","_el$30","_el$36","_el$37","_co$7","currentPage","pageSize","Math","min","totalRows","MetricRenderer","metricParams","_el$46","_tmpl$12","_el$47","_el$48","_el$49","_el$50","_el$51","_el$53","_el$54","_co$0","_el$64","_el$65","_co$11","_el$66","_el$67","_co$12","unit","_el$52","_tmpl$1","trend","_el$55","_tmpl$10","_el$56","_el$59","_el$60","_co$1","_el$57","_el$61","_el$62","_co$10","_c$","direction","abs","subtitle","_el$63","_tmpl$11","extractImageFromMarkdown","content","imagePattern","match","alt","imageUrl","linkUrl","credit","TextRenderer","textParams","imageData","createMemo","markdown","htmlContent","fallback","_el$68","_tmpl$13","_el$69","_p$","_v$","className","_v$2","e","t","_el$70","_tmpl$14","_el$71","_el$72","_el$73","_el$74","_el$75","_v$3","_v$4","_v$5","a","IframeRenderer","_el$76","_tmpl$16","_el$80","_el$81","_co$13","_el$79","_el$77","_tmpl$15","_el$78","_v$6","_v$7","_v$8","height","ImageRenderer","_el$82","_tmpl$18","_el$83","_el$84","_el$85","_el$88","_el$89","_co$14","caption","_el$86","_tmpl$17","_el$87","_v$9","_v$0","_v$1","LinkRenderer","_el$90","_tmpl$20","_el$91","_el$92","_el$93","_el$95","_el$96","_co$15","$$click","stopPropagation","description","_el$94","_tmpl$19","_$runHydrationEvents","ComponentRenderer","validation","validateComponent","valid","details","errors","_el$97","_tmpl$21","_el$98","_el$99","GenerativeUIErrorBoundary","componentType","allowRetry","ActionRenderer","dispatchAction","window","toolName","toolParams","event","CustomEvent","detail","bubbles","dispatchEvent","handleClick","action","preventDefault","_el$100","_tmpl$23","_el$102","_el$103","_co$16","_el$104","_el$105","_co$17","icon","_el$101","_tmpl$22","_v$10","_v$11","_v$12","variant","_el$106","_tmpl$24","_el$108","_el$109","_co$18","_el$110","_el$111","_co$19","_el$107","_v$13","_v$14","disabled","_v$15","size","UIResourceRenderer","layout","components","grid","gap","gridContainerStyle","layoutData","getGridStyleString","position","colStart","colSpan","rowStart","rowSpan","_el$112","_tmpl$25","_el$113","_el$114","_tmpl$26","_v$16","class","_v$17","_$delegateEvents"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -127,6 +127,27 @@ function renderCellValue(value: any): string {
|
|
|
127
127
|
return '-'
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
+
// Handle object with url/name properties (common source/link format from LLM)
|
|
131
|
+
if (typeof value === 'object' && value !== null) {
|
|
132
|
+
// Check for link-like objects: { url: "...", name/label/title: "..." }
|
|
133
|
+
if (value.url) {
|
|
134
|
+
const label = value.name || value.label || value.title || value.url
|
|
135
|
+
const sanitizedLabel = DOMPurify.sanitize(String(label))
|
|
136
|
+
const sanitizedUrl = DOMPurify.sanitize(String(value.url))
|
|
137
|
+
return `<a href="${sanitizedUrl}" target="_blank" rel="noopener noreferrer" class="text-blue-600 dark:text-blue-400 hover:underline">${sanitizedLabel}</a>`
|
|
138
|
+
}
|
|
139
|
+
// Fallback: extract meaningful text from object properties
|
|
140
|
+
if (value.name || value.label || value.title) {
|
|
141
|
+
return DOMPurify.sanitize(String(value.name || value.label || value.title))
|
|
142
|
+
}
|
|
143
|
+
// Last resort: JSON stringify for debugging (better than [object Object])
|
|
144
|
+
try {
|
|
145
|
+
return JSON.stringify(value)
|
|
146
|
+
} catch {
|
|
147
|
+
return '-'
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
130
151
|
// Convert to string
|
|
131
152
|
let strValue = String(value)
|
|
132
153
|
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/.pnpm/csstype@3.2.1/node_modules/csstype/index.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/jsx.d.ts","../node_modules/.pnpm/@types+trusted-types@2.0.7/node_modules/@types/trusted-types/lib/index.d.ts","../node_modules/.pnpm/dompurify@3.3.0/node_modules/dompurify/dist/purify.es.d.mts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/reactive/scheduler.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/render/component.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/render/flow.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/render/Suspense.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/render/hydration.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/render/index.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/reactive/signal.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/reactive/observable.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/reactive/array.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/index.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/web/types/jsx.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/web/types/client.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/web/types/server-mock.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/web/types/index.d.ts","./src/types/index.ts","./src/services/validation.ts","./src/utils/logger.ts","./src/components/GenerativeUIErrorBoundary.tsx","../node_modules/.pnpm/marked@16.4.2/node_modules/marked/lib/marked.d.ts","./src/components/UIResourceRenderer.tsx","./src/hooks/useStreamingUI.ts","./src/components/StreamingUIRenderer.tsx","./src/components/index.ts","./src/hooks/index.ts","./src/services/component-registry.ts","./src/services/index.ts","./src/index.ts","./src/types-export.ts","./src/validation.ts","../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.25/node_modules/vite/types/hmrPayload.d.ts","../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.25/node_modules/vite/types/customEvent.d.ts","../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.25/node_modules/vite/types/hot.d.ts","../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.25/node_modules/vite/types/importGlob.d.ts","../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.25/node_modules/vite/types/importMeta.d.ts","../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.25/node_modules/vite/client.d.ts","./src/vite-env.d.ts","./src/components/ActionRenderer.tsx","./src/components/ArtifactRenderer.tsx","./src/components/CarouselRenderer.tsx","./src/components/FooterRenderer.tsx","./src/components/GenerativeUIErrorBoundary.default.ts","./src/components/UIResourceRenderer.default.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/compatibility/disposable.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/compatibility/indexable.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/compatibility/index.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/globals.typedarray.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/buffer.buffer.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/globals.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/web-globals/abortcontroller.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/web-globals/events.d.ts","../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/web-globals/fetch.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/assert.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/assert/strict.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/async_hooks.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/buffer.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/child_process.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/cluster.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/console.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/constants.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/crypto.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/dgram.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/dns.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/dns/promises.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/domain.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/events.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/fs.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/fs/promises.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/http.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/http2.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/https.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/inspector.generated.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/module.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/net.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/os.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/path.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/perf_hooks.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/process.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/punycode.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/querystring.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/readline.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/readline/promises.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/repl.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/sea.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/stream.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/stream/promises.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/stream/consumers.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/stream/web.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/string_decoder.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/test.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/timers.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/timers/promises.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/tls.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/trace_events.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/tty.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/url.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/util.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/v8.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/vm.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/wasi.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/worker_threads.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/zlib.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/index.d.ts"],"fileIdsList":[[61,73,111,158],[61,73,77,83,111,158],[61,81,111,158],[61,73,77,78,80,111,158],[61,73,78,79,81,84,111,158],[61,83,111,158],[61,63,73,77,78,79,81,82,111,158],[61,81,83,85,111,158],[61,84,111,158],[61,73,78,80,111,158],[61,78,86,87,89,111,158],[61,78,79,111,158],[61,79,88,111,158],[61,78,111,158],[61,111,158],[98,111,158],[111,155,158],[111,157,158],[158],[111,158,163,191],[111,158,159,164,169,177,188,199],[111,158,159,160,169,177],[111,158],[106,107,108,111,158],[111,158,161,200],[111,158,162,163,170,178],[111,158,163,188,196],[111,158,164,166,169,177],[111,157,158,165],[111,158,166,167],[111,158,168,169],[111,157,158,169],[111,158,169,170,171,188,199],[111,158,169,170,171,184,188,191],[111,158,166,169,172,177,188,199],[111,158,169,170,172,173,177,188,196,199],[111,158,172,174,188,196,199],[109,110,111,112,113,114,115,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],[111,158,169,175],[111,158,176,199,204],[111,158,166,169,177,188],[111,158,178],[111,158,179],[111,157,158,180],[111,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],[111,158,182],[111,158,183],[111,158,169,184,185],[111,158,184,186,200,202],[111,158,169,188,189,191],[111,158,190,191],[111,158,188,189],[111,158,191],[111,158,192],[111,155,158,188,193],[111,158,169,194,195],[111,158,194,195],[111,158,163,177,188,196],[111,158,197],[111,158,177,198],[111,158,172,183,199],[111,158,163,200],[111,158,188,201],[111,158,176,202],[111,158,203],[111,153,158],[111,153,158,169,171,180,188,191,199,202,204],[111,158,188,205],[62,111,158],[61,64,69,70,71,72,111,158],[60,111,158],[70,111,158],[61,64,69,111,158],[61,70,111,158],[65,66,67,68,111,158],[74,111,158],[73,75,76,111,158],[111,125,129,158,199],[111,125,158,188,199],[111,120,158],[111,122,125,158,196,199],[111,158,177,196],[111,158,206],[111,120,158,206],[111,122,125,158,177,199],[111,117,118,121,124,158,169,188,199],[111,125,132,158],[111,117,123,158],[111,125,146,147,158],[111,121,125,158,191,199,206],[111,146,158,206],[111,119,120,158,206],[111,125,158],[111,119,120,121,122,123,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,158],[111,125,140,158],[111,125,132,133,158],[111,123,125,133,134,158],[111,124,158],[111,117,120,125,158],[111,125,129,133,134,158],[111,129,158],[111,123,125,128,158,199],[111,117,122,125,132,158],[111,158,188],[111,120,125,146,158,204,206],[97,111,158],[93,111,158],[94,111,158],[95,96,111,158]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3da4cd58ec690f79203a86d5e973d9e73fc67d113c1f7dd06049839f89782995","impliedFormat":1},{"version":"5ad3e58181b335ff8794bcc3161a1506dbe8cebbce71a15b3dc7bfe56f076679","impliedFormat":99},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"2c2abae36b5a9319abf6a057f34bf2cc63d93b5135b4e8471eaa9519d24e51d5","impliedFormat":99},{"version":"a6d2eb77f390448a229ca63b4adadbcc549d203b8c038f1f7627a118f732969d","impliedFormat":99},{"version":"b886cc0d907b31ae7484a85da375bc8ac42f9986ec1e49c9c7c854956b0a928b","impliedFormat":99},{"version":"46b432f55912daaf98d11b81c5d06f8b78231c9ef101306ca5b3ef2cc7b6e9f0","impliedFormat":99},{"version":"8ab288ca80e5f2a9dab19955fcd9e81a244432cd7d256fdb5ea198ed5a44f0a4","impliedFormat":99},{"version":"0caadd121b8965f24d5c647a2ed01f5fc352772e4cea4bbca2ab78adedfdd921","impliedFormat":99},{"version":"b642b6a4b9b670338bc50281a6dd192fb7cc0b2f9d63d38c250bb1f02e828bbc","impliedFormat":99},{"version":"8e6b36766cbd3eed84e874fa9d1205f7b5e987fdf90d2574436be65040b2db91","impliedFormat":99},{"version":"c2e65a549ac9d227a9002d077af67bb1c77557a72bf39a85c4354831879078ed","affectsGlobalScope":true,"impliedFormat":99},{"version":"38f11ad59dfc38750b789f9f250742d0ce0da44e28f790a032cd15665b70f239","impliedFormat":99},{"version":"6e70da1429948b2ca8201ccc248bd2cb77cd6bbc4cf33f639c4b0f8f6a35cbd1","affectsGlobalScope":true,"impliedFormat":99},{"version":"601520abcca03c5fa2dc578075b1c0b560d6de0859832aabb7a567118034969d","impliedFormat":99},{"version":"91fce4c8d9954d0e9a48303e925541d8954bd468f532945d546eaf3654fdedb9","impliedFormat":99},{"version":"1da0ad9df4532256d79263966e73b04981e8563533142afbd214647a7bc14ec4","impliedFormat":99},{"version":"f8db03cdd070621b978744c04d42fc50232317bdfb114c2d1815bd5c8aef7386","impliedFormat":99},"c42add66cf3ee86c9fb5eb1fae22849cf38cf791581011e69de869742f71f824","4216d7e1fea8993693138286f0aef19ce00b3edeb457e3e0f5d13362eefaa3a3","1c60d5e6dbc713c4c8da52c42379367161869dfc8b32f4d1853406a4e0e4e1ee","cff4329e07f40fed123684027e81a4244fd6c21bcf046dbb882a6eaf355b4c50",{"version":"7dcb8433fd192c5f9612bd13252c5390b25417e22d6a7c18039976b24603331e","impliedFormat":99},"eb079d900bfa9ba7d0056aa9262fc6790998bcf84a21a5e104847c57a24ff723","73cfbcd4cfdc2db99f971b2bf3467a4cca6f801d99238e1fb71a4b502e383055","29fda32f8c7bdeace48162b8619ea00b466d8eb1909e6fc627bc6c4df235cf6c","b8ad44b5c257f608893d49f237e1857858e4976bcac1886760c62c14782b17ea","d08c3587c249b44f68c9ecbd38a02275a9c1efc475dc46c5cbca52921d661f9d","9f8d1d938a4f64b5266fab13d5d78d662e4babed1f6121720b53c3882e1c3bff","5332f4525ac4c7922d945f0186bf1a7f95c27f0be2a3fd90b5f1d74c19fe5405","d03b56edc7a0b70687ed92c719446aad4ad8adbad4f02690f46c6daab15ef899","53431ed95a601d2e4e181ac666cedae641f18de7074809f0bbd2206ad56014c6","2eab445d025e2322370f372b4650a8b269d24292a626e17597d46f00ff6079b2",{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"19efad8495a7a6b064483fccd1d2b427403dd84e67819f86d1c6ee3d7abf749c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1eef826bc4a19de22155487984e345a34c9cd511dd1170edc7a447cb8231dd4a","affectsGlobalScope":true,"impliedFormat":99},{"version":"5e2848c1cdc5564166091c2daaf8bee2ad09deddb3e79cad070685b12927a0c8","affectsGlobalScope":true},"e4851c2cf94cae60b87018f526c93dae3c102038d8697dbd4ab7f31a970258a2","73bef279ca5d043ef109dc2328130dc3f180293c8ee741d245e4305ce479ae1c","e665f536e1e68e576719c4224752ef4611d97ae499c2e97451c870e46251aa56","dc279a3f5102d8c836169ac99203f3945f574a4e39b0554bccfcbbb61f67b7c1","c9ea8df6588b403b74084c7e4ffa754d272c5c2d119f14096e44ec0810aca9fb","9bd2c48b4cb4244f04b22adcc5d63b743512c8cb5aebeceebdd0465dee8fd7a0",{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"2fd4c143eff88dabb57701e6a40e02a4dbc36d5eb1362e7964d32028056a782b","impliedFormat":1},{"version":"714435130b9015fae551788df2a88038471a5a11eb471f27c4ede86552842bc9","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"27fdb0da0daf3b337c5530c5f266efe046a6ceb606e395b346974e4360c36419","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"afbe24ab0d74694372baa632ecb28bb375be53f3be53f9b07ecd7fc994907de5","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"00877fef624f3171c2e44944fb63a55e2a9f9120d7c8b5eb4181c263c9a077cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"47ab634529c5955b6ad793474ae188fce3e6163e3a3fb5edd7e0e48f14435333","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"0225ecb9ed86bdb7a2c7fd01f1556906902929377b44483dc4b83e03b3ef227d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"f9ab232778f2842ffd6955f88b1049982fa2ecb764d129ee4893cbc290f41977","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"05db535df8bdc30d9116fe754a3473d1b6479afbc14ae8eb18b605c62677d518","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1}],"root":[[78,81],[83,92],[99,105]],"options":{"allowImportingTsExtensions":false,"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"jsx":1,"jsxImportSource":"solid-js","module":99,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[100,1],[101,1],[102,2],[103,1],[104,3],[81,4],[85,5],[105,6],[83,7],[86,8],[87,9],[84,10],[90,11],[88,12],[89,13],[79,14],[91,14],[78,15],[80,15],[92,12],[99,16],[155,17],[156,17],[157,18],[111,19],[158,20],[159,21],[160,22],[106,23],[109,24],[107,23],[108,23],[161,25],[162,26],[163,27],[164,28],[165,29],[166,30],[167,30],[168,31],[169,32],[170,33],[171,34],[112,23],[110,23],[172,35],[173,36],[174,37],[206,38],[175,39],[176,40],[177,41],[178,42],[179,43],[180,44],[181,45],[182,46],[183,47],[184,48],[185,48],[186,49],[187,23],[188,50],[190,51],[189,52],[191,53],[192,54],[193,55],[194,56],[195,57],[196,58],[197,59],[198,60],[199,61],[200,62],[201,63],[202,64],[203,65],[113,23],[114,23],[115,23],[154,66],[204,67],[205,68],[62,23],[116,23],[60,23],[63,69],[82,23],[73,70],[61,71],[72,72],[71,72],[64,23],[70,73],[67,15],[65,15],[66,74],[68,72],[69,75],[75,76],[77,77],[74,15],[76,23],[58,23],[59,23],[10,23],[11,23],[13,23],[12,23],[2,23],[14,23],[15,23],[16,23],[17,23],[18,23],[19,23],[20,23],[21,23],[3,23],[22,23],[23,23],[4,23],[24,23],[28,23],[25,23],[26,23],[27,23],[29,23],[30,23],[31,23],[5,23],[32,23],[33,23],[34,23],[35,23],[6,23],[39,23],[36,23],[37,23],[38,23],[40,23],[7,23],[41,23],[46,23],[47,23],[42,23],[43,23],[44,23],[45,23],[8,23],[51,23],[48,23],[49,23],[50,23],[52,23],[9,23],[53,23],[54,23],[55,23],[57,23],[56,23],[1,23],[132,78],[142,79],[131,78],[152,80],[123,81],[122,82],[151,83],[145,84],[150,85],[125,86],[139,87],[124,88],[148,89],[120,90],[119,83],[149,91],[121,92],[126,93],[127,23],[130,93],[117,23],[153,94],[143,95],[134,96],[135,97],[137,98],[133,99],[136,100],[146,83],[128,101],[129,102],[138,103],[118,104],[141,95],[140,93],[144,23],[147,105],[98,106],[94,107],[93,23],[95,108],[96,23],[97,109]],"affectedFilesPendingEmit":[[100,51],[101,51],[102,51],[103,51],[104,51],[81,51],[85,51],[105,51],[83,51],[86,51],[87,51],[84,51],[90,51],[88,51],[89,51],[79,51],[91,51],[78,51],[80,51],[92,51]],"emitSignatures":[78,79,80,81,83,84,85,86,87,88,89,90,91,92,100,101,102,103,104,105],"version":"5.9.3"}
|
|
1
|
+
{"fileNames":["../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/.pnpm/csstype@3.2.1/node_modules/csstype/index.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/jsx.d.ts","../node_modules/.pnpm/@types+trusted-types@2.0.7/node_modules/@types/trusted-types/lib/index.d.ts","../node_modules/.pnpm/dompurify@3.3.0/node_modules/dompurify/dist/purify.es.d.mts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/reactive/scheduler.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/render/component.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/render/flow.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/render/Suspense.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/render/hydration.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/render/index.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/reactive/signal.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/reactive/observable.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/reactive/array.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/types/index.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/web/types/jsx.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/web/types/client.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/web/types/server-mock.d.ts","../node_modules/.pnpm/solid-js@1.9.10/node_modules/solid-js/web/types/index.d.ts","./src/types/index.ts","./src/services/validation.ts","./src/utils/logger.ts","./src/components/GenerativeUIErrorBoundary.tsx","../node_modules/.pnpm/marked@16.4.2/node_modules/marked/lib/marked.d.ts","./src/components/UIResourceRenderer.tsx","./src/hooks/useStreamingUI.ts","./src/components/StreamingUIRenderer.tsx","./src/components/index.ts","./src/hooks/index.ts","./src/services/component-registry.ts","./src/services/index.ts","./src/index.ts","./src/types-export.ts","./src/validation.ts","../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.25/node_modules/vite/types/hmrPayload.d.ts","../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.25/node_modules/vite/types/customEvent.d.ts","../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.25/node_modules/vite/types/hot.d.ts","../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.25/node_modules/vite/types/importGlob.d.ts","../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.25/node_modules/vite/types/importMeta.d.ts","../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.25/node_modules/vite/client.d.ts","./src/vite-env.d.ts","./src/components/ActionRenderer.tsx","./src/components/ArtifactRenderer.tsx","./src/components/CarouselRenderer.tsx","./src/components/FooterRenderer.tsx","./src/components/GenerativeUIErrorBoundary.default.ts","./src/components/UIResourceRenderer.default.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/compatibility/disposable.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/compatibility/indexable.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/compatibility/index.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/globals.typedarray.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/buffer.buffer.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/globals.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/web-globals/abortcontroller.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/web-globals/events.d.ts","../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/web-globals/fetch.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/assert.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/assert/strict.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/async_hooks.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/buffer.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/child_process.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/cluster.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/console.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/constants.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/crypto.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/dgram.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/dns.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/dns/promises.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/domain.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/events.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/fs.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/fs/promises.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/http.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/http2.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/https.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/inspector.generated.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/module.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/net.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/os.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/path.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/perf_hooks.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/process.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/punycode.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/querystring.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/readline.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/readline/promises.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/repl.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/sea.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/stream.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/stream/promises.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/stream/consumers.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/stream/web.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/string_decoder.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/test.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/timers.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/timers/promises.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/tls.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/trace_events.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/tty.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/url.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/util.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/v8.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/vm.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/wasi.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/worker_threads.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/zlib.d.ts","../node_modules/.pnpm/@types+node@20.19.25/node_modules/@types/node/index.d.ts"],"fileIdsList":[[61,73,111,158],[61,73,77,83,111,158],[61,81,111,158],[61,73,77,78,80,111,158],[61,73,78,79,81,84,111,158],[61,83,111,158],[61,63,73,77,78,79,81,82,111,158],[61,81,83,85,111,158],[61,84,111,158],[61,73,78,80,111,158],[61,78,86,87,89,111,158],[61,78,79,111,158],[61,79,88,111,158],[61,78,111,158],[61,111,158],[98,111,158],[111,155,158],[111,157,158],[158],[111,158,163,191],[111,158,159,164,169,177,188,199],[111,158,159,160,169,177],[111,158],[106,107,108,111,158],[111,158,161,200],[111,158,162,163,170,178],[111,158,163,188,196],[111,158,164,166,169,177],[111,157,158,165],[111,158,166,167],[111,158,168,169],[111,157,158,169],[111,158,169,170,171,188,199],[111,158,169,170,171,184,188,191],[111,158,166,169,172,177,188,199],[111,158,169,170,172,173,177,188,196,199],[111,158,172,174,188,196,199],[109,110,111,112,113,114,115,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],[111,158,169,175],[111,158,176,199,204],[111,158,166,169,177,188],[111,158,178],[111,158,179],[111,157,158,180],[111,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],[111,158,182],[111,158,183],[111,158,169,184,185],[111,158,184,186,200,202],[111,158,169,188,189,191],[111,158,190,191],[111,158,188,189],[111,158,191],[111,158,192],[111,155,158,188,193],[111,158,169,194,195],[111,158,194,195],[111,158,163,177,188,196],[111,158,197],[111,158,177,198],[111,158,172,183,199],[111,158,163,200],[111,158,188,201],[111,158,176,202],[111,158,203],[111,153,158],[111,153,158,169,171,180,188,191,199,202,204],[111,158,188,205],[62,111,158],[61,64,69,70,71,72,111,158],[60,111,158],[70,111,158],[61,64,69,111,158],[61,70,111,158],[65,66,67,68,111,158],[74,111,158],[73,75,76,111,158],[111,125,129,158,199],[111,125,158,188,199],[111,120,158],[111,122,125,158,196,199],[111,158,177,196],[111,158,206],[111,120,158,206],[111,122,125,158,177,199],[111,117,118,121,124,158,169,188,199],[111,125,132,158],[111,117,123,158],[111,125,146,147,158],[111,121,125,158,191,199,206],[111,146,158,206],[111,119,120,158,206],[111,125,158],[111,119,120,121,122,123,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,158],[111,125,140,158],[111,125,132,133,158],[111,123,125,133,134,158],[111,124,158],[111,117,120,125,158],[111,125,129,133,134,158],[111,129,158],[111,123,125,128,158,199],[111,117,122,125,132,158],[111,158,188],[111,120,125,146,158,204,206],[97,111,158],[93,111,158],[94,111,158],[95,96,111,158]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3da4cd58ec690f79203a86d5e973d9e73fc67d113c1f7dd06049839f89782995","impliedFormat":1},{"version":"5ad3e58181b335ff8794bcc3161a1506dbe8cebbce71a15b3dc7bfe56f076679","impliedFormat":99},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"2c2abae36b5a9319abf6a057f34bf2cc63d93b5135b4e8471eaa9519d24e51d5","impliedFormat":99},{"version":"a6d2eb77f390448a229ca63b4adadbcc549d203b8c038f1f7627a118f732969d","impliedFormat":99},{"version":"b886cc0d907b31ae7484a85da375bc8ac42f9986ec1e49c9c7c854956b0a928b","impliedFormat":99},{"version":"46b432f55912daaf98d11b81c5d06f8b78231c9ef101306ca5b3ef2cc7b6e9f0","impliedFormat":99},{"version":"8ab288ca80e5f2a9dab19955fcd9e81a244432cd7d256fdb5ea198ed5a44f0a4","impliedFormat":99},{"version":"0caadd121b8965f24d5c647a2ed01f5fc352772e4cea4bbca2ab78adedfdd921","impliedFormat":99},{"version":"b642b6a4b9b670338bc50281a6dd192fb7cc0b2f9d63d38c250bb1f02e828bbc","impliedFormat":99},{"version":"8e6b36766cbd3eed84e874fa9d1205f7b5e987fdf90d2574436be65040b2db91","impliedFormat":99},{"version":"c2e65a549ac9d227a9002d077af67bb1c77557a72bf39a85c4354831879078ed","affectsGlobalScope":true,"impliedFormat":99},{"version":"38f11ad59dfc38750b789f9f250742d0ce0da44e28f790a032cd15665b70f239","impliedFormat":99},{"version":"6e70da1429948b2ca8201ccc248bd2cb77cd6bbc4cf33f639c4b0f8f6a35cbd1","affectsGlobalScope":true,"impliedFormat":99},{"version":"601520abcca03c5fa2dc578075b1c0b560d6de0859832aabb7a567118034969d","impliedFormat":99},{"version":"91fce4c8d9954d0e9a48303e925541d8954bd468f532945d546eaf3654fdedb9","impliedFormat":99},{"version":"1da0ad9df4532256d79263966e73b04981e8563533142afbd214647a7bc14ec4","impliedFormat":99},{"version":"f8db03cdd070621b978744c04d42fc50232317bdfb114c2d1815bd5c8aef7386","impliedFormat":99},"c42add66cf3ee86c9fb5eb1fae22849cf38cf791581011e69de869742f71f824","4216d7e1fea8993693138286f0aef19ce00b3edeb457e3e0f5d13362eefaa3a3","1c60d5e6dbc713c4c8da52c42379367161869dfc8b32f4d1853406a4e0e4e1ee","cff4329e07f40fed123684027e81a4244fd6c21bcf046dbb882a6eaf355b4c50",{"version":"7dcb8433fd192c5f9612bd13252c5390b25417e22d6a7c18039976b24603331e","impliedFormat":99},"951703853e22236e36c7c6024fb4214293006b89ccfc1c7d8565941c605143ed","73cfbcd4cfdc2db99f971b2bf3467a4cca6f801d99238e1fb71a4b502e383055","29fda32f8c7bdeace48162b8619ea00b466d8eb1909e6fc627bc6c4df235cf6c","b8ad44b5c257f608893d49f237e1857858e4976bcac1886760c62c14782b17ea","d08c3587c249b44f68c9ecbd38a02275a9c1efc475dc46c5cbca52921d661f9d","9f8d1d938a4f64b5266fab13d5d78d662e4babed1f6121720b53c3882e1c3bff","5332f4525ac4c7922d945f0186bf1a7f95c27f0be2a3fd90b5f1d74c19fe5405","d03b56edc7a0b70687ed92c719446aad4ad8adbad4f02690f46c6daab15ef899","53431ed95a601d2e4e181ac666cedae641f18de7074809f0bbd2206ad56014c6","2eab445d025e2322370f372b4650a8b269d24292a626e17597d46f00ff6079b2",{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"19efad8495a7a6b064483fccd1d2b427403dd84e67819f86d1c6ee3d7abf749c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1eef826bc4a19de22155487984e345a34c9cd511dd1170edc7a447cb8231dd4a","affectsGlobalScope":true,"impliedFormat":99},{"version":"5e2848c1cdc5564166091c2daaf8bee2ad09deddb3e79cad070685b12927a0c8","affectsGlobalScope":true},"e4851c2cf94cae60b87018f526c93dae3c102038d8697dbd4ab7f31a970258a2","73bef279ca5d043ef109dc2328130dc3f180293c8ee741d245e4305ce479ae1c","e665f536e1e68e576719c4224752ef4611d97ae499c2e97451c870e46251aa56","dc279a3f5102d8c836169ac99203f3945f574a4e39b0554bccfcbbb61f67b7c1","c9ea8df6588b403b74084c7e4ffa754d272c5c2d119f14096e44ec0810aca9fb","9bd2c48b4cb4244f04b22adcc5d63b743512c8cb5aebeceebdd0465dee8fd7a0",{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"2fd4c143eff88dabb57701e6a40e02a4dbc36d5eb1362e7964d32028056a782b","impliedFormat":1},{"version":"714435130b9015fae551788df2a88038471a5a11eb471f27c4ede86552842bc9","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"27fdb0da0daf3b337c5530c5f266efe046a6ceb606e395b346974e4360c36419","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"afbe24ab0d74694372baa632ecb28bb375be53f3be53f9b07ecd7fc994907de5","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"00877fef624f3171c2e44944fb63a55e2a9f9120d7c8b5eb4181c263c9a077cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"47ab634529c5955b6ad793474ae188fce3e6163e3a3fb5edd7e0e48f14435333","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"0225ecb9ed86bdb7a2c7fd01f1556906902929377b44483dc4b83e03b3ef227d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"f9ab232778f2842ffd6955f88b1049982fa2ecb764d129ee4893cbc290f41977","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"05db535df8bdc30d9116fe754a3473d1b6479afbc14ae8eb18b605c62677d518","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1}],"root":[[78,81],[83,92],[99,105]],"options":{"allowImportingTsExtensions":false,"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"jsx":1,"jsxImportSource":"solid-js","module":99,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[100,1],[101,1],[102,2],[103,1],[104,3],[81,4],[85,5],[105,6],[83,7],[86,8],[87,9],[84,10],[90,11],[88,12],[89,13],[79,14],[91,14],[78,15],[80,15],[92,12],[99,16],[155,17],[156,17],[157,18],[111,19],[158,20],[159,21],[160,22],[106,23],[109,24],[107,23],[108,23],[161,25],[162,26],[163,27],[164,28],[165,29],[166,30],[167,30],[168,31],[169,32],[170,33],[171,34],[112,23],[110,23],[172,35],[173,36],[174,37],[206,38],[175,39],[176,40],[177,41],[178,42],[179,43],[180,44],[181,45],[182,46],[183,47],[184,48],[185,48],[186,49],[187,23],[188,50],[190,51],[189,52],[191,53],[192,54],[193,55],[194,56],[195,57],[196,58],[197,59],[198,60],[199,61],[200,62],[201,63],[202,64],[203,65],[113,23],[114,23],[115,23],[154,66],[204,67],[205,68],[62,23],[116,23],[60,23],[63,69],[82,23],[73,70],[61,71],[72,72],[71,72],[64,23],[70,73],[67,15],[65,15],[66,74],[68,72],[69,75],[75,76],[77,77],[74,15],[76,23],[58,23],[59,23],[10,23],[11,23],[13,23],[12,23],[2,23],[14,23],[15,23],[16,23],[17,23],[18,23],[19,23],[20,23],[21,23],[3,23],[22,23],[23,23],[4,23],[24,23],[28,23],[25,23],[26,23],[27,23],[29,23],[30,23],[31,23],[5,23],[32,23],[33,23],[34,23],[35,23],[6,23],[39,23],[36,23],[37,23],[38,23],[40,23],[7,23],[41,23],[46,23],[47,23],[42,23],[43,23],[44,23],[45,23],[8,23],[51,23],[48,23],[49,23],[50,23],[52,23],[9,23],[53,23],[54,23],[55,23],[57,23],[56,23],[1,23],[132,78],[142,79],[131,78],[152,80],[123,81],[122,82],[151,83],[145,84],[150,85],[125,86],[139,87],[124,88],[148,89],[120,90],[119,83],[149,91],[121,92],[126,93],[127,23],[130,93],[117,23],[153,94],[143,95],[134,96],[135,97],[137,98],[133,99],[136,100],[146,83],[128,101],[129,102],[138,103],[118,104],[141,95],[140,93],[144,23],[147,105],[98,106],[94,107],[93,23],[95,108],[96,23],[97,109]],"affectedFilesPendingEmit":[[100,51],[101,51],[102,51],[103,51],[104,51],[81,51],[85,51],[105,51],[83,51],[86,51],[87,51],[84,51],[90,51],[88,51],[89,51],[79,51],[91,51],[78,51],[80,51],[92,51]],"emitSignatures":[78,79,80,81,83,84,85,86,87,88,89,90,91,92,100,101,102,103,104,105],"version":"5.9.3"}
|