@seed-ship/mcp-ui-solid 2.2.8 → 2.2.10
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 +313 -302
- package/dist/components/UIResourceRenderer.cjs.map +1 -1
- package/dist/components/UIResourceRenderer.d.ts.map +1 -1
- package/dist/components/UIResourceRenderer.js +313 -302
- package/dist/components/UIResourceRenderer.js.map +1 -1
- package/dist/services/validation.cjs +12 -0
- package/dist/services/validation.cjs.map +1 -1
- package/dist/services/validation.d.ts.map +1 -1
- package/dist/services/validation.js +12 -0
- package/dist/services/validation.js.map +1 -1
- package/package.json +1 -1
- package/src/components/ChartRenderer.test.tsx +43 -0
- package/src/components/UIResourceRenderer.tsx +59 -49
- package/src/services/validation.test.ts +40 -2
- package/src/services/validation.ts +16 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -19,7 +19,7 @@ import { ExpandableWrapper } from "./ExpandableWrapper.js";
|
|
|
19
19
|
import { RenderProvider } from "./RenderContext.js";
|
|
20
20
|
import { useAction } from "../hooks/useAction.js";
|
|
21
21
|
import { marked as k } from "../node_modules/.pnpm/marked@16.4.2/node_modules/marked/lib/marked.esm.js";
|
|
22
|
-
var _tmpl$ = /* @__PURE__ */ template(`<svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z">`), _tmpl$2 = /* @__PURE__ */ template(`<button>`), _tmpl$3 = /* @__PURE__ */ template(`<svg class="w-3 h-3 text-green-500"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M5 13l4 4L19 7">`), _tmpl$4 = /* @__PURE__ */ template(`<div class="absolute inset-0 flex items-center justify-center"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600">`), _tmpl$5 = /* @__PURE__ */ template(`<div class="absolute inset-0 flex items-center justify-center p-4"><div class=text-center><p class="text-red-600 dark:text-red-400 text-sm font-medium">Chart Error</p><p class="text-gray-600 dark:text-gray-400 text-xs mt-1">`), _tmpl$6 = /* @__PURE__ */ template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3">`), _tmpl$7 = /* @__PURE__ */ template(`<div class="w-full h-full p-4"><!$><!/><div class="w-full h-full"role=img><img class="w-full h-auto max-h-[300px] object-contain">`), _tmpl$8 = /* @__PURE__ */ template(`<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"><!$><!/><!$><!/><!$><!/>`), _tmpl$9 = /* @__PURE__ */ template(`<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">`), _tmpl$0 = /* @__PURE__ */ template(`<tr>`), _tmpl$1 = /* @__PURE__ */ template(`<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"><div>`), _tmpl$10 = /* @__PURE__ */ template(`<tbody class="bg-white dark:bg-gray-800 relative">`), _tmpl$11 = /* @__PURE__ */ template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Copy TSV`), _tmpl$12 = /* @__PURE__ */ template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download CSV`), _tmpl$13 = /* @__PURE__ */ template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download JSON`), _tmpl$14 = /* @__PURE__ */ template(`<div class="absolute right-0 mt-1 w-36 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-lg shadow-lg py-1 text-sm"><!$><!/><!$><!/><!$><!/>`), _tmpl$15 = /* @__PURE__ */ template(`<div class="absolute right-10 top-2 z-10"><button class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"title="Export table"aria-label="Export table"><svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path></svg></button><!$><!/>`), _tmpl$16 = /* @__PURE__ */ template(`<span class="ml-2 text-xs font-normal text-gray-400">(virtualized: <!$><!/> rows)`), _tmpl$17 = /* @__PURE__ */ template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3"><!$><!/><!$><!/>`), _tmpl$18 = /* @__PURE__ */ template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span>Showing <!$><!/> - <!$><!/> of <!$><!/>`), _tmpl$19 = /* @__PURE__ */ template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden group"><!$><!/><div class=p-4><!$><!/><div class=overflow-x-auto role=region tabindex=0><table class="min-w-full divide-y divide-gray-200 dark:divide-gray-700 border-separate border-spacing-0"><thead class="bg-gray-50 dark:bg-gray-900/50 sticky top-0 z-10"><tr></tr></thead><!$><!/></table></div><!$><!/>`), _tmpl$20 = /* @__PURE__ */ template(`<th scope=col 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 bg-gray-50 dark:bg-gray-900/50">`), _tmpl$21 = /* @__PURE__ */ template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$22 = /* @__PURE__ */ template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$23 = /* @__PURE__ */ template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$24 = /* @__PURE__ */ template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><div class="flex flex-col h-full justify-between"><div><p class="text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide"></p><div class="mt-2 flex items-baseline"><p class="text-2xl font-semibold text-gray-900 dark:text-white"></p><!$><!/></div></div><!$><!/><!$><!/>`), _tmpl$25 = /* @__PURE__ */ template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><div>`), _tmpl$26 = /* @__PURE__ */ template(`<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"><div class="flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]"><a target=_blank rel="noopener noreferrer"class=cursor-zoom-in><img class="max-w-full max-h-[400px] object-contain rounded shadow-sm hover:opacity-90 transition-opacity"loading=lazy></a></div><div class="p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800"><p class="text-sm text-gray-600 dark:text-gray-400 text-center italic">`, true, false, false), _tmpl$27 = /* @__PURE__ */ template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white">`), _tmpl$28 = /* @__PURE__ */ template(`<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"><!$><!/><iframe class="w-full border-0 flex-1"sandbox="allow-scripts allow-same-origin allow-popups allow-forms"loading=lazy>`, true, false, false), _tmpl$29 = /* @__PURE__ */ template(`<figcaption class="p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800"><p class="text-sm text-gray-600 dark:text-gray-400 text-center">`), _tmpl$30 = /* @__PURE__ */ template(`<figure><div class="flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]"><a target=_blank rel="noopener noreferrer"class="cursor-zoom-in focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded"><img class="max-w-full max-h-[500px] object-contain rounded shadow-sm hover:opacity-95 transition-opacity"loading=lazy></a></div><!$><!/>`, true, false, false), _tmpl$31 = /* @__PURE__ */ template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$32 = /* @__PURE__ */ template(`<a target=_blank rel="noopener noreferrer"><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"aria-hidden=true><svg xmlns=http://www.w3.org/2000/svg class="w-5 h-5"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></div><div class="flex-1 min-w-0"><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"></h4><!$><!/></div><svg xmlns=http://www.w3.org/2000/svg class="w-4 h-4 text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 shrink-0 transition-colors"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1=10 y1=14 x2=21 y2=3>`), _tmpl$33 = /* @__PURE__ */ template(`<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"><p class="text-sm font-medium text-red-900 dark:text-red-100">Validation Error</p><p class="text-xs text-red-700 dark:text-red-300 mt-1">`), _tmpl$34 = /* @__PURE__ */ template(`<span aria-hidden=true>`), _tmpl$35 = /* @__PURE__ */ template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$36 = /* @__PURE__ */ template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$37 = /* @__PURE__ */ template(`<button><!$><!/><!$><!/><!$><!/>`), _tmpl$38 = /* @__PURE__ */ template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$39 = /* @__PURE__ */ template(`<div class=mt-3><p class="text-xs font-medium text-red-700 dark:text-red-300">Suggestions:</p><ul class="mt-1 text-xs text-red-600 dark:text-red-400 list-disc list-inside">`), _tmpl$40 = /* @__PURE__ */ template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$41 = /* @__PURE__ */ template(`<div class="relative w-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4 group"><!$><!/><div class="flex items-start gap-3"><div class="p-2 bg-red-100 dark:bg-red-900/40 rounded-full shrink-0"><svg class="w-5 h-5 text-red-600 dark:text-red-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path></svg></div><div class="flex-1 min-w-0"><h4 class="text-sm font-semibold text-red-800 dark:text-red-200">Tool Error: <!$><!/></h4><p class="text-sm text-red-700 dark:text-red-300 mt-1"></p><!$><!/><!$><!/><!$><!/>`), _tmpl$42 = /* @__PURE__ */ template(`<li>`), _tmpl$43 = /* @__PURE__ */ template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white capitalize">`), _tmpl$44 = /* @__PURE__ */ template(`<div class="w-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden"><!$><!/><div class="p-4 prose prose-sm dark:prose-invert max-w-none">`), _tmpl$45 = /* @__PURE__ */ template(`<div><div class="grid gap-4"></div><!$><!/>`), _tmpl$46 = /* @__PURE__ */ template(`<div>`);
|
|
22
|
+
var _tmpl$ = /* @__PURE__ */ template(`<svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z">`), _tmpl$2 = /* @__PURE__ */ template(`<button>`), _tmpl$3 = /* @__PURE__ */ template(`<svg class="w-3 h-3 text-green-500"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M5 13l4 4L19 7">`), _tmpl$4 = /* @__PURE__ */ template(`<div class="p-4 bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700"><p class="text-red-500 dark:text-red-400 text-sm">Invalid chart data: missing data.datasets`), _tmpl$5 = /* @__PURE__ */ template(`<div class="absolute inset-0 flex items-center justify-center"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600">`), _tmpl$6 = /* @__PURE__ */ template(`<div class="absolute inset-0 flex items-center justify-center p-4"><div class=text-center><p class="text-red-600 dark:text-red-400 text-sm font-medium">Chart Error</p><p class="text-gray-600 dark:text-gray-400 text-xs mt-1">`), _tmpl$7 = /* @__PURE__ */ template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3">`), _tmpl$8 = /* @__PURE__ */ template(`<div class="w-full h-full p-4"><!$><!/><div class="w-full h-full"role=img><img class="w-full h-auto max-h-[300px] object-contain">`), _tmpl$9 = /* @__PURE__ */ template(`<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"><!$><!/><!$><!/><!$><!/>`), _tmpl$0 = /* @__PURE__ */ template(`<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">`), _tmpl$1 = /* @__PURE__ */ template(`<tr>`), _tmpl$10 = /* @__PURE__ */ template(`<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"><div>`), _tmpl$11 = /* @__PURE__ */ template(`<tbody class="bg-white dark:bg-gray-800 relative">`), _tmpl$12 = /* @__PURE__ */ template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Copy TSV`), _tmpl$13 = /* @__PURE__ */ template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download CSV`), _tmpl$14 = /* @__PURE__ */ template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download JSON`), _tmpl$15 = /* @__PURE__ */ template(`<div class="absolute right-0 mt-1 w-36 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-lg shadow-lg py-1 text-sm"><!$><!/><!$><!/><!$><!/>`), _tmpl$16 = /* @__PURE__ */ template(`<div class="absolute right-10 top-2 z-10"><button class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"title="Export table"aria-label="Export table"><svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path></svg></button><!$><!/>`), _tmpl$17 = /* @__PURE__ */ template(`<span class="ml-2 text-xs font-normal text-gray-400">(virtualized: <!$><!/> rows)`), _tmpl$18 = /* @__PURE__ */ template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3"><!$><!/><!$><!/>`), _tmpl$19 = /* @__PURE__ */ template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span>Showing <!$><!/> - <!$><!/> of <!$><!/>`), _tmpl$20 = /* @__PURE__ */ template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden group"><!$><!/><div class=p-4><!$><!/><div class=overflow-x-auto role=region tabindex=0><table class="min-w-full divide-y divide-gray-200 dark:divide-gray-700 border-separate border-spacing-0"><thead class="bg-gray-50 dark:bg-gray-900/50 sticky top-0 z-10"><tr></tr></thead><!$><!/></table></div><!$><!/>`), _tmpl$21 = /* @__PURE__ */ template(`<th scope=col 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 bg-gray-50 dark:bg-gray-900/50">`), _tmpl$22 = /* @__PURE__ */ template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$23 = /* @__PURE__ */ template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$24 = /* @__PURE__ */ template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$25 = /* @__PURE__ */ template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><div class="flex flex-col h-full justify-between"><div><p class="text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide"></p><div class="mt-2 flex items-baseline"><p class="text-2xl font-semibold text-gray-900 dark:text-white"></p><!$><!/></div></div><!$><!/><!$><!/>`), _tmpl$26 = /* @__PURE__ */ template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><div>`), _tmpl$27 = /* @__PURE__ */ template(`<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"><div class="flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]"><a target=_blank rel="noopener noreferrer"class=cursor-zoom-in><img class="max-w-full max-h-[400px] object-contain rounded shadow-sm hover:opacity-90 transition-opacity"loading=lazy></a></div><div class="p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800"><p class="text-sm text-gray-600 dark:text-gray-400 text-center italic">`, true, false, false), _tmpl$28 = /* @__PURE__ */ template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white">`), _tmpl$29 = /* @__PURE__ */ template(`<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"><!$><!/><iframe class="w-full border-0 flex-1"sandbox="allow-scripts allow-same-origin allow-popups allow-forms"loading=lazy>`, true, false, false), _tmpl$30 = /* @__PURE__ */ template(`<figcaption class="p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800"><p class="text-sm text-gray-600 dark:text-gray-400 text-center">`), _tmpl$31 = /* @__PURE__ */ template(`<figure><div class="flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]"><a target=_blank rel="noopener noreferrer"class="cursor-zoom-in focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded"><img class="max-w-full max-h-[500px] object-contain rounded shadow-sm hover:opacity-95 transition-opacity"loading=lazy></a></div><!$><!/>`, true, false, false), _tmpl$32 = /* @__PURE__ */ template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$33 = /* @__PURE__ */ template(`<a target=_blank rel="noopener noreferrer"><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"aria-hidden=true><svg xmlns=http://www.w3.org/2000/svg class="w-5 h-5"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></div><div class="flex-1 min-w-0"><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"></h4><!$><!/></div><svg xmlns=http://www.w3.org/2000/svg class="w-4 h-4 text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 shrink-0 transition-colors"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1=10 y1=14 x2=21 y2=3>`), _tmpl$34 = /* @__PURE__ */ template(`<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"><p class="text-sm font-medium text-red-900 dark:text-red-100">Validation Error</p><p class="text-xs text-red-700 dark:text-red-300 mt-1">`), _tmpl$35 = /* @__PURE__ */ template(`<span aria-hidden=true>`), _tmpl$36 = /* @__PURE__ */ template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$37 = /* @__PURE__ */ template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$38 = /* @__PURE__ */ template(`<button><!$><!/><!$><!/><!$><!/>`), _tmpl$39 = /* @__PURE__ */ template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$40 = /* @__PURE__ */ template(`<div class=mt-3><p class="text-xs font-medium text-red-700 dark:text-red-300">Suggestions:</p><ul class="mt-1 text-xs text-red-600 dark:text-red-400 list-disc list-inside">`), _tmpl$41 = /* @__PURE__ */ template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$42 = /* @__PURE__ */ template(`<div class="relative w-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4 group"><!$><!/><div class="flex items-start gap-3"><div class="p-2 bg-red-100 dark:bg-red-900/40 rounded-full shrink-0"><svg class="w-5 h-5 text-red-600 dark:text-red-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path></svg></div><div class="flex-1 min-w-0"><h4 class="text-sm font-semibold text-red-800 dark:text-red-200">Tool Error: <!$><!/></h4><p class="text-sm text-red-700 dark:text-red-300 mt-1"></p><!$><!/><!$><!/><!$><!/>`), _tmpl$43 = /* @__PURE__ */ template(`<li>`), _tmpl$44 = /* @__PURE__ */ template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white capitalize">`), _tmpl$45 = /* @__PURE__ */ template(`<div class="w-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden"><!$><!/><div class="p-4 prose prose-sm dark:prose-invert max-w-none">`), _tmpl$46 = /* @__PURE__ */ template(`<div><div class="grid gap-4"></div><!$><!/>`), _tmpl$47 = /* @__PURE__ */ template(`<div>`);
|
|
23
23
|
function CopyButton(props) {
|
|
24
24
|
const [copied, setCopied] = createSignal(false);
|
|
25
25
|
const handleCopy = async () => {
|
|
@@ -62,15 +62,19 @@ function CopyButton(props) {
|
|
|
62
62
|
})();
|
|
63
63
|
}
|
|
64
64
|
function ChartRenderer(props) {
|
|
65
|
+
var _a, _b;
|
|
65
66
|
const [useNative, setUseNative] = createSignal(false);
|
|
66
67
|
const [iframeUrl, setIframeUrl] = createSignal();
|
|
67
68
|
const [isLoading, setIsLoading] = createSignal(true);
|
|
68
69
|
const [error, setError] = createSignal();
|
|
69
70
|
const params = () => props.component.params;
|
|
70
71
|
const rendererPref = () => {
|
|
71
|
-
var
|
|
72
|
-
return ((
|
|
72
|
+
var _a2;
|
|
73
|
+
return ((_a2 = params()) == null ? void 0 : _a2.renderer) || "auto";
|
|
73
74
|
};
|
|
75
|
+
if (!((_b = (_a = params()) == null ? void 0 : _a.data) == null ? void 0 : _b.datasets)) {
|
|
76
|
+
return getNextElement(_tmpl$4);
|
|
77
|
+
}
|
|
74
78
|
createEffect(async () => {
|
|
75
79
|
const pref = rendererPref();
|
|
76
80
|
if (pref === "iframe") {
|
|
@@ -113,87 +117,94 @@ function ChartRenderer(props) {
|
|
|
113
117
|
setIframeUrl(url);
|
|
114
118
|
setIsLoading(false);
|
|
115
119
|
};
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
var
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
get when() {
|
|
143
|
-
return error();
|
|
144
|
-
},
|
|
145
|
-
get children() {
|
|
146
|
-
var _el$6 = getNextElement(_tmpl$5), _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling;
|
|
147
|
-
insert(_el$9, error);
|
|
148
|
-
return _el$6;
|
|
149
|
-
}
|
|
150
|
-
}), _el$17, _co$3);
|
|
151
|
-
insert(_el$4, createComponent(Show, {
|
|
152
|
-
get when() {
|
|
153
|
-
return memo(() => !!iframeUrl())() && !error();
|
|
154
|
-
},
|
|
155
|
-
get children() {
|
|
156
|
-
var _el$0 = getNextElement(_tmpl$7), _el$12 = _el$0.firstChild, [_el$13, _co$] = getNextMarker(_el$12.nextSibling), _el$10 = _el$13.nextSibling, _el$11 = _el$10.firstChild;
|
|
157
|
-
insert(_el$0, createComponent(Show, {
|
|
120
|
+
return createComponent(Show, {
|
|
121
|
+
get when() {
|
|
122
|
+
return useNative();
|
|
123
|
+
},
|
|
124
|
+
get fallback() {
|
|
125
|
+
return (() => {
|
|
126
|
+
var _el$5 = getNextElement(_tmpl$9), _el$15 = _el$5.firstChild, [_el$16, _co$2] = getNextMarker(_el$15.nextSibling), _el$17 = _el$16.nextSibling, [_el$18, _co$3] = getNextMarker(_el$17.nextSibling), _el$19 = _el$18.nextSibling, [_el$20, _co$4] = getNextMarker(_el$19.nextSibling);
|
|
127
|
+
insert(_el$5, createComponent(Show, {
|
|
128
|
+
get when() {
|
|
129
|
+
return isLoading();
|
|
130
|
+
},
|
|
131
|
+
get children() {
|
|
132
|
+
return getNextElement(_tmpl$5);
|
|
133
|
+
}
|
|
134
|
+
}), _el$16, _co$2);
|
|
135
|
+
insert(_el$5, createComponent(Show, {
|
|
136
|
+
get when() {
|
|
137
|
+
return error();
|
|
138
|
+
},
|
|
139
|
+
get children() {
|
|
140
|
+
var _el$7 = getNextElement(_tmpl$6), _el$8 = _el$7.firstChild, _el$9 = _el$8.firstChild, _el$0 = _el$9.nextSibling;
|
|
141
|
+
insert(_el$0, error);
|
|
142
|
+
return _el$7;
|
|
143
|
+
}
|
|
144
|
+
}), _el$18, _co$3);
|
|
145
|
+
insert(_el$5, createComponent(Show, {
|
|
158
146
|
get when() {
|
|
159
|
-
|
|
160
|
-
return (_a = params()) == null ? void 0 : _a.title;
|
|
147
|
+
return memo(() => !!iframeUrl())() && !error();
|
|
161
148
|
},
|
|
162
149
|
get children() {
|
|
163
|
-
var _el$1 = getNextElement(_tmpl$
|
|
164
|
-
insert(_el$1, (
|
|
165
|
-
|
|
166
|
-
|
|
150
|
+
var _el$1 = getNextElement(_tmpl$8), _el$13 = _el$1.firstChild, [_el$14, _co$] = getNextMarker(_el$13.nextSibling), _el$11 = _el$14.nextSibling, _el$12 = _el$11.firstChild;
|
|
151
|
+
insert(_el$1, createComponent(Show, {
|
|
152
|
+
get when() {
|
|
153
|
+
var _a2;
|
|
154
|
+
return (_a2 = params()) == null ? void 0 : _a2.title;
|
|
155
|
+
},
|
|
156
|
+
get children() {
|
|
157
|
+
var _el$10 = getNextElement(_tmpl$7);
|
|
158
|
+
insert(_el$10, () => {
|
|
159
|
+
var _a2;
|
|
160
|
+
return (_a2 = params()) == null ? void 0 : _a2.title;
|
|
161
|
+
});
|
|
162
|
+
return _el$10;
|
|
163
|
+
}
|
|
164
|
+
}), _el$14, _co$);
|
|
165
|
+
_el$12.addEventListener("error", () => {
|
|
166
|
+
var _a2;
|
|
167
|
+
setError("Failed to load chart");
|
|
168
|
+
(_a2 = props.onError) == null ? void 0 : _a2.call(props, {
|
|
169
|
+
type: "render",
|
|
170
|
+
message: "Chart rendering failed",
|
|
171
|
+
componentId: props.component.id
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
effect((_p$) => {
|
|
175
|
+
var _a2, _b2, _c, _d;
|
|
176
|
+
var _v$3 = ((_a2 = params()) == null ? void 0 : _a2.title) ? `Chart: ${(_b2 = params()) == null ? void 0 : _b2.title}` : "Chart visualization", _v$4 = iframeUrl(), _v$5 = ((_c = params()) == null ? void 0 : _c.title) ? `Chart: ${(_d = params()) == null ? void 0 : _d.title}` : "Chart visualization";
|
|
177
|
+
_v$3 !== _p$.e && setAttribute(_el$11, "aria-label", _p$.e = _v$3);
|
|
178
|
+
_v$4 !== _p$.t && setAttribute(_el$12, "src", _p$.t = _v$4);
|
|
179
|
+
_v$5 !== _p$.a && setAttribute(_el$12, "alt", _p$.a = _v$5);
|
|
180
|
+
return _p$;
|
|
181
|
+
}, {
|
|
182
|
+
e: void 0,
|
|
183
|
+
t: void 0,
|
|
184
|
+
a: void 0
|
|
167
185
|
});
|
|
168
186
|
return _el$1;
|
|
169
187
|
}
|
|
170
|
-
}), _el$
|
|
171
|
-
_el$
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
188
|
+
}), _el$20, _co$4);
|
|
189
|
+
return _el$5;
|
|
190
|
+
})();
|
|
191
|
+
},
|
|
192
|
+
get children() {
|
|
193
|
+
return createComponent(ChartJSRenderer, {
|
|
194
|
+
get component() {
|
|
195
|
+
return props.component;
|
|
196
|
+
},
|
|
197
|
+
onError: (err) => {
|
|
198
|
+
var _a2;
|
|
199
|
+
return (_a2 = props.onError) == null ? void 0 : _a2.call(props, {
|
|
175
200
|
type: "render",
|
|
176
|
-
message:
|
|
201
|
+
message: err.message,
|
|
177
202
|
componentId: props.component.id
|
|
178
203
|
});
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
_v$3 !== _p$.e && setAttribute(_el$10, "aria-label", _p$.e = _v$3);
|
|
184
|
-
_v$4 !== _p$.t && setAttribute(_el$11, "src", _p$.t = _v$4);
|
|
185
|
-
_v$5 !== _p$.a && setAttribute(_el$11, "alt", _p$.a = _v$5);
|
|
186
|
-
return _p$;
|
|
187
|
-
}, {
|
|
188
|
-
e: void 0,
|
|
189
|
-
t: void 0,
|
|
190
|
-
a: void 0
|
|
191
|
-
});
|
|
192
|
-
return _el$0;
|
|
193
|
-
}
|
|
194
|
-
}), _el$19, _co$4);
|
|
195
|
-
return _el$4;
|
|
196
|
-
})();
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
});
|
|
197
208
|
}
|
|
198
209
|
function renderCellValue(value) {
|
|
199
210
|
if (value === null || value === void 0) {
|
|
@@ -370,28 +381,28 @@ ${dataRows}`;
|
|
|
370
381
|
};
|
|
371
382
|
const tableId = `table-${Math.random().toString(36).slice(2, 9)}`;
|
|
372
383
|
const StandardTableBody = () => (() => {
|
|
373
|
-
var _el$
|
|
374
|
-
insert(_el$
|
|
384
|
+
var _el$21 = getNextElement(_tmpl$0);
|
|
385
|
+
insert(_el$21, createComponent(For, {
|
|
375
386
|
get each() {
|
|
376
387
|
return tableParams.rows.slice(0, DEFAULT_RESOURCE_LIMITS.maxTableRows);
|
|
377
388
|
},
|
|
378
389
|
children: (row, i) => (() => {
|
|
379
|
-
var _el$
|
|
380
|
-
insert(_el$
|
|
390
|
+
var _el$22 = getNextElement(_tmpl$1);
|
|
391
|
+
insert(_el$22, createComponent(For, {
|
|
381
392
|
get each() {
|
|
382
393
|
return tableParams.columns;
|
|
383
394
|
},
|
|
384
395
|
children: (column) => (() => {
|
|
385
|
-
var _el$
|
|
386
|
-
effect(() => setProperty(_el$
|
|
387
|
-
return _el$
|
|
396
|
+
var _el$23 = getNextElement(_tmpl$10), _el$24 = _el$23.firstChild;
|
|
397
|
+
effect(() => setProperty(_el$24, "innerHTML", renderCellValue(row[column.key])));
|
|
398
|
+
return _el$23;
|
|
388
399
|
})()
|
|
389
400
|
}));
|
|
390
|
-
effect(() => className(_el$
|
|
391
|
-
return _el$
|
|
401
|
+
effect(() => className(_el$22, `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"}`));
|
|
402
|
+
return _el$22;
|
|
392
403
|
})()
|
|
393
404
|
}));
|
|
394
|
-
return _el$
|
|
405
|
+
return _el$21;
|
|
395
406
|
})();
|
|
396
407
|
const VirtualizedTableBody = () => {
|
|
397
408
|
const v = virtualizer();
|
|
@@ -401,39 +412,39 @@ ${dataRows}`;
|
|
|
401
412
|
const opts = virtualizeOpts();
|
|
402
413
|
const rowHeight = opts.rowHeight ?? 48;
|
|
403
414
|
return (() => {
|
|
404
|
-
var _el$
|
|
405
|
-
setStyleProperty(_el$
|
|
406
|
-
insert(_el$
|
|
415
|
+
var _el$25 = getNextElement(_tmpl$11);
|
|
416
|
+
setStyleProperty(_el$25, "height", `${totalSize}px`);
|
|
417
|
+
insert(_el$25, createComponent(For, {
|
|
407
418
|
each: items,
|
|
408
419
|
children: (virtualRow) => {
|
|
409
420
|
const row = tableParams.rows[virtualRow.index];
|
|
410
421
|
return (() => {
|
|
411
|
-
var _el$
|
|
412
|
-
setStyleProperty(_el$
|
|
413
|
-
insert(_el$
|
|
422
|
+
var _el$26 = getNextElement(_tmpl$1);
|
|
423
|
+
setStyleProperty(_el$26, "height", `${rowHeight}px`);
|
|
424
|
+
insert(_el$26, createComponent(For, {
|
|
414
425
|
get each() {
|
|
415
426
|
return tableParams.columns;
|
|
416
427
|
},
|
|
417
428
|
children: (column) => (() => {
|
|
418
|
-
var _el$
|
|
419
|
-
effect(() => setProperty(_el$
|
|
420
|
-
return _el$
|
|
429
|
+
var _el$27 = getNextElement(_tmpl$10), _el$28 = _el$27.firstChild;
|
|
430
|
+
effect(() => setProperty(_el$28, "innerHTML", renderCellValue(row[column.key])));
|
|
431
|
+
return _el$27;
|
|
421
432
|
})()
|
|
422
433
|
}));
|
|
423
434
|
effect((_p$) => {
|
|
424
435
|
var _v$6 = `hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors absolute left-0 right-0 ${virtualRow.index % 2 === 0 ? "bg-white dark:bg-gray-800" : "bg-gray-50/30 dark:bg-gray-800/50"}`, _v$7 = `translateY(${virtualRow.start}px)`;
|
|
425
|
-
_v$6 !== _p$.e && className(_el$
|
|
426
|
-
_v$7 !== _p$.t && setStyleProperty(_el$
|
|
436
|
+
_v$6 !== _p$.e && className(_el$26, _p$.e = _v$6);
|
|
437
|
+
_v$7 !== _p$.t && setStyleProperty(_el$26, "transform", _p$.t = _v$7);
|
|
427
438
|
return _p$;
|
|
428
439
|
}, {
|
|
429
440
|
e: void 0,
|
|
430
441
|
t: void 0
|
|
431
442
|
});
|
|
432
|
-
return _el$
|
|
443
|
+
return _el$26;
|
|
433
444
|
})();
|
|
434
445
|
}
|
|
435
446
|
}));
|
|
436
|
-
return _el$
|
|
447
|
+
return _el$25;
|
|
437
448
|
})();
|
|
438
449
|
};
|
|
439
450
|
return createComponent(ExpandableWrapper, {
|
|
@@ -445,8 +456,8 @@ ${dataRows}`;
|
|
|
445
456
|
},
|
|
446
457
|
copyLabel: "Copy table (TSV)",
|
|
447
458
|
get children() {
|
|
448
|
-
var _el$
|
|
449
|
-
insert(_el$
|
|
459
|
+
var _el$29 = getNextElement(_tmpl$20), _el$78 = _el$29.firstChild, [_el$79, _co$16] = getNextMarker(_el$78.nextSibling), _el$44 = _el$79.nextSibling, _el$74 = _el$44.firstChild, [_el$75, _co$14] = getNextMarker(_el$74.nextSibling), _el$55 = _el$75.nextSibling, _el$56 = _el$55.firstChild, _el$57 = _el$56.firstChild, _el$58 = _el$57.firstChild, _el$59 = _el$57.nextSibling, [_el$60, _co$10] = getNextMarker(_el$59.nextSibling), _el$76 = _el$55.nextSibling, [_el$77, _co$15] = getNextMarker(_el$76.nextSibling);
|
|
460
|
+
insert(_el$29, createComponent(Show, {
|
|
450
461
|
when: exportable,
|
|
451
462
|
get fallback() {
|
|
452
463
|
return createComponent(CopyButton, {
|
|
@@ -456,95 +467,95 @@ ${dataRows}`;
|
|
|
456
467
|
});
|
|
457
468
|
},
|
|
458
469
|
get children() {
|
|
459
|
-
var _el$
|
|
460
|
-
_el$
|
|
461
|
-
insert(_el$
|
|
470
|
+
var _el$30 = getNextElement(_tmpl$16), _el$31 = _el$30.firstChild, _el$42 = _el$31.nextSibling, [_el$43, _co$8] = getNextMarker(_el$42.nextSibling);
|
|
471
|
+
_el$31.$$click = () => setShowExportMenu(!showExportMenu());
|
|
472
|
+
insert(_el$30, createComponent(Show, {
|
|
462
473
|
get when() {
|
|
463
474
|
return showExportMenu();
|
|
464
475
|
},
|
|
465
476
|
get children() {
|
|
466
|
-
var _el$
|
|
467
|
-
insert(_el$
|
|
477
|
+
var _el$32 = getNextElement(_tmpl$15), _el$36 = _el$32.firstChild, [_el$37, _co$5] = getNextMarker(_el$36.nextSibling), _el$38 = _el$37.nextSibling, [_el$39, _co$6] = getNextMarker(_el$38.nextSibling), _el$40 = _el$39.nextSibling, [_el$41, _co$7] = getNextMarker(_el$40.nextSibling);
|
|
478
|
+
insert(_el$32, createComponent(Show, {
|
|
468
479
|
get when() {
|
|
469
480
|
return exportFormats.includes("tsv");
|
|
470
481
|
},
|
|
471
482
|
get children() {
|
|
472
|
-
var _el$
|
|
473
|
-
_el$
|
|
483
|
+
var _el$33 = getNextElement(_tmpl$12);
|
|
484
|
+
_el$33.$$click = () => handleExport("tsv");
|
|
474
485
|
runHydrationEvents();
|
|
475
|
-
return _el$
|
|
486
|
+
return _el$33;
|
|
476
487
|
}
|
|
477
|
-
}), _el$
|
|
478
|
-
insert(_el$
|
|
488
|
+
}), _el$37, _co$5);
|
|
489
|
+
insert(_el$32, createComponent(Show, {
|
|
479
490
|
get when() {
|
|
480
491
|
return exportFormats.includes("csv");
|
|
481
492
|
},
|
|
482
493
|
get children() {
|
|
483
|
-
var _el$
|
|
484
|
-
_el$
|
|
494
|
+
var _el$34 = getNextElement(_tmpl$13);
|
|
495
|
+
_el$34.$$click = () => handleExport("csv");
|
|
485
496
|
runHydrationEvents();
|
|
486
|
-
return _el$
|
|
497
|
+
return _el$34;
|
|
487
498
|
}
|
|
488
|
-
}), _el$
|
|
489
|
-
insert(_el$
|
|
499
|
+
}), _el$39, _co$6);
|
|
500
|
+
insert(_el$32, createComponent(Show, {
|
|
490
501
|
get when() {
|
|
491
502
|
return exportFormats.includes("json");
|
|
492
503
|
},
|
|
493
504
|
get children() {
|
|
494
|
-
var _el$
|
|
495
|
-
_el$
|
|
505
|
+
var _el$35 = getNextElement(_tmpl$14);
|
|
506
|
+
_el$35.$$click = () => handleExport("json");
|
|
496
507
|
runHydrationEvents();
|
|
497
|
-
return _el$
|
|
508
|
+
return _el$35;
|
|
498
509
|
}
|
|
499
|
-
}), _el$
|
|
500
|
-
return _el$
|
|
510
|
+
}), _el$41, _co$7);
|
|
511
|
+
return _el$32;
|
|
501
512
|
}
|
|
502
|
-
}), _el$
|
|
513
|
+
}), _el$43, _co$8);
|
|
503
514
|
runHydrationEvents();
|
|
504
|
-
return _el$
|
|
515
|
+
return _el$30;
|
|
505
516
|
}
|
|
506
|
-
}), _el$
|
|
507
|
-
insert(_el$
|
|
517
|
+
}), _el$79, _co$16);
|
|
518
|
+
insert(_el$44, createComponent(Show, {
|
|
508
519
|
get when() {
|
|
509
520
|
return tableParams.title;
|
|
510
521
|
},
|
|
511
522
|
get children() {
|
|
512
|
-
var _el$
|
|
513
|
-
setAttribute(_el$
|
|
514
|
-
insert(_el$
|
|
515
|
-
insert(_el$
|
|
523
|
+
var _el$45 = getNextElement(_tmpl$18), _el$51 = _el$45.firstChild, [_el$52, _co$0] = getNextMarker(_el$51.nextSibling), _el$53 = _el$52.nextSibling, [_el$54, _co$1] = getNextMarker(_el$53.nextSibling);
|
|
524
|
+
setAttribute(_el$45, "id", `${tableId}-title`);
|
|
525
|
+
insert(_el$45, () => tableParams.title, _el$52, _co$0);
|
|
526
|
+
insert(_el$45, createComponent(Show, {
|
|
516
527
|
get when() {
|
|
517
528
|
return isVirtualizing();
|
|
518
529
|
},
|
|
519
530
|
get children() {
|
|
520
|
-
var _el$
|
|
521
|
-
_el$
|
|
522
|
-
insert(_el$
|
|
531
|
+
var _el$46 = getNextElement(_tmpl$17), _el$47 = _el$46.firstChild, _el$49 = _el$47.nextSibling, [_el$50, _co$9] = getNextMarker(_el$49.nextSibling);
|
|
532
|
+
_el$50.nextSibling;
|
|
533
|
+
insert(_el$46, () => {
|
|
523
534
|
var _a;
|
|
524
535
|
return (_a = tableParams.rows) == null ? void 0 : _a.length;
|
|
525
|
-
}, _el$
|
|
526
|
-
return _el$
|
|
536
|
+
}, _el$50, _co$9);
|
|
537
|
+
return _el$46;
|
|
527
538
|
}
|
|
528
|
-
}), _el$
|
|
529
|
-
return _el$
|
|
539
|
+
}), _el$54, _co$1);
|
|
540
|
+
return _el$45;
|
|
530
541
|
}
|
|
531
|
-
}), _el$
|
|
542
|
+
}), _el$75, _co$14);
|
|
532
543
|
var _ref$ = scrollContainerRef;
|
|
533
|
-
typeof _ref$ === "function" ? use(_ref$, _el$
|
|
534
|
-
insert(_el$
|
|
544
|
+
typeof _ref$ === "function" ? use(_ref$, _el$55) : scrollContainerRef = _el$55;
|
|
545
|
+
insert(_el$58, createComponent(For, {
|
|
535
546
|
get each() {
|
|
536
547
|
return tableParams.columns;
|
|
537
548
|
},
|
|
538
549
|
children: (column) => (() => {
|
|
539
|
-
var _el$
|
|
540
|
-
insert(_el$
|
|
541
|
-
effect((_$p) => style(_el$
|
|
550
|
+
var _el$80 = getNextElement(_tmpl$21);
|
|
551
|
+
insert(_el$80, () => column.label);
|
|
552
|
+
effect((_$p) => style(_el$80, column.width ? {
|
|
542
553
|
width: column.width
|
|
543
554
|
} : {}, _$p));
|
|
544
|
-
return _el$
|
|
555
|
+
return _el$80;
|
|
545
556
|
})()
|
|
546
557
|
}));
|
|
547
|
-
insert(_el$
|
|
558
|
+
insert(_el$56, createComponent(Show, {
|
|
548
559
|
get when() {
|
|
549
560
|
return isVirtualizing();
|
|
550
561
|
},
|
|
@@ -554,34 +565,34 @@ ${dataRows}`;
|
|
|
554
565
|
get children() {
|
|
555
566
|
return createComponent(VirtualizedTableBody, {});
|
|
556
567
|
}
|
|
557
|
-
}), _el$
|
|
558
|
-
insert(_el$
|
|
568
|
+
}), _el$60, _co$10);
|
|
569
|
+
insert(_el$44, createComponent(Show, {
|
|
559
570
|
get when() {
|
|
560
571
|
return tableParams.pagination;
|
|
561
572
|
},
|
|
562
573
|
get children() {
|
|
563
|
-
var _el$
|
|
564
|
-
insert(_el$
|
|
565
|
-
insert(_el$
|
|
566
|
-
insert(_el$
|
|
567
|
-
return _el$
|
|
574
|
+
var _el$61 = getNextElement(_tmpl$19), _el$62 = _el$61.firstChild, _el$63 = _el$62.firstChild, _el$68 = _el$63.nextSibling, [_el$69, _co$11] = getNextMarker(_el$68.nextSibling), _el$64 = _el$69.nextSibling, _el$70 = _el$64.nextSibling, [_el$71, _co$12] = getNextMarker(_el$70.nextSibling), _el$66 = _el$71.nextSibling, _el$72 = _el$66.nextSibling, [_el$73, _co$13] = getNextMarker(_el$72.nextSibling);
|
|
575
|
+
insert(_el$62, () => tableParams.pagination.currentPage * tableParams.pagination.pageSize + 1, _el$69, _co$11);
|
|
576
|
+
insert(_el$62, () => Math.min((tableParams.pagination.currentPage + 1) * tableParams.pagination.pageSize, tableParams.pagination.totalRows), _el$71, _co$12);
|
|
577
|
+
insert(_el$62, () => tableParams.pagination.totalRows, _el$73, _co$13);
|
|
578
|
+
return _el$61;
|
|
568
579
|
}
|
|
569
|
-
}), _el$
|
|
580
|
+
}), _el$77, _co$15);
|
|
570
581
|
effect((_p$) => {
|
|
571
582
|
var _v$8 = isVirtualizing() ? {
|
|
572
583
|
"max-height": "500px",
|
|
573
584
|
"overflow-y": "auto"
|
|
574
585
|
} : {}, _v$9 = tableParams.title || "Data table", _v$0 = tableParams.title ? `${tableId}-title` : void 0;
|
|
575
|
-
_p$.e = style(_el$
|
|
576
|
-
_v$9 !== _p$.t && setAttribute(_el$
|
|
577
|
-
_v$0 !== _p$.a && setAttribute(_el$
|
|
586
|
+
_p$.e = style(_el$55, _v$8, _p$.e);
|
|
587
|
+
_v$9 !== _p$.t && setAttribute(_el$55, "aria-label", _p$.t = _v$9);
|
|
588
|
+
_v$0 !== _p$.a && setAttribute(_el$56, "aria-labelledby", _p$.a = _v$0);
|
|
578
589
|
return _p$;
|
|
579
590
|
}, {
|
|
580
591
|
e: void 0,
|
|
581
592
|
t: void 0,
|
|
582
593
|
a: void 0
|
|
583
594
|
});
|
|
584
|
-
return _el$
|
|
595
|
+
return _el$29;
|
|
585
596
|
}
|
|
586
597
|
});
|
|
587
598
|
}
|
|
@@ -594,51 +605,51 @@ function MetricRenderer(props) {
|
|
|
594
605
|
return `${title}: ${value}${unit ? " " + unit : ""}`;
|
|
595
606
|
};
|
|
596
607
|
return (() => {
|
|
597
|
-
var _el$
|
|
598
|
-
insert(_el$
|
|
608
|
+
var _el$81 = getNextElement(_tmpl$25), _el$103 = _el$81.firstChild, [_el$104, _co$22] = getNextMarker(_el$103.nextSibling), _el$82 = _el$104.nextSibling, _el$83 = _el$82.firstChild, _el$84 = _el$83.firstChild, _el$85 = _el$84.nextSibling, _el$86 = _el$85.firstChild, _el$88 = _el$86.nextSibling, [_el$89, _co$17] = getNextMarker(_el$88.nextSibling), _el$99 = _el$83.nextSibling, [_el$100, _co$20] = getNextMarker(_el$99.nextSibling), _el$101 = _el$100.nextSibling, [_el$102, _co$21] = getNextMarker(_el$101.nextSibling);
|
|
609
|
+
insert(_el$81, createComponent(CopyButton, {
|
|
599
610
|
getText: getMetricText,
|
|
600
611
|
title: "Copy metric",
|
|
601
612
|
position: "top-right"
|
|
602
|
-
}), _el$
|
|
603
|
-
insert(_el$
|
|
604
|
-
insert(_el$
|
|
605
|
-
insert(_el$
|
|
613
|
+
}), _el$104, _co$22);
|
|
614
|
+
insert(_el$84, () => metricParams.title);
|
|
615
|
+
insert(_el$86, () => metricParams.value);
|
|
616
|
+
insert(_el$85, createComponent(Show, {
|
|
606
617
|
get when() {
|
|
607
618
|
return metricParams.unit;
|
|
608
619
|
},
|
|
609
620
|
get children() {
|
|
610
|
-
var _el$
|
|
611
|
-
insert(_el$
|
|
612
|
-
return _el$
|
|
621
|
+
var _el$87 = getNextElement(_tmpl$22);
|
|
622
|
+
insert(_el$87, () => metricParams.unit);
|
|
623
|
+
return _el$87;
|
|
613
624
|
}
|
|
614
|
-
}), _el$
|
|
615
|
-
insert(_el$
|
|
625
|
+
}), _el$89, _co$17);
|
|
626
|
+
insert(_el$82, createComponent(Show, {
|
|
616
627
|
get when() {
|
|
617
628
|
return metricParams.trend;
|
|
618
629
|
},
|
|
619
630
|
get children() {
|
|
620
|
-
var _el$
|
|
621
|
-
_el$
|
|
622
|
-
insert(_el$
|
|
631
|
+
var _el$90 = getNextElement(_tmpl$23), _el$91 = _el$90.firstChild, _el$94 = _el$91.firstChild, [_el$95, _co$18] = getNextMarker(_el$94.nextSibling), _el$92 = _el$95.nextSibling, _el$96 = _el$92.nextSibling, [_el$97, _co$19] = getNextMarker(_el$96.nextSibling);
|
|
632
|
+
_el$97.nextSibling;
|
|
633
|
+
insert(_el$91, (() => {
|
|
623
634
|
var _c$ = memo(() => metricParams.trend.direction === "up");
|
|
624
635
|
return () => _c$() ? "�" : metricParams.trend.direction === "down" ? "�" : "�";
|
|
625
|
-
})(), _el$
|
|
626
|
-
insert(_el$
|
|
627
|
-
effect(() => className(_el$
|
|
628
|
-
return _el$
|
|
636
|
+
})(), _el$95, _co$18);
|
|
637
|
+
insert(_el$91, () => Math.abs(metricParams.trend.value), _el$97, _co$19);
|
|
638
|
+
effect(() => className(_el$91, `text-sm font-medium ${metricParams.trend.direction === "up" ? "text-green-600 dark:text-green-400" : metricParams.trend.direction === "down" ? "text-red-600 dark:text-red-400" : "text-gray-600 dark:text-gray-400"}`));
|
|
639
|
+
return _el$90;
|
|
629
640
|
}
|
|
630
|
-
}), _el$
|
|
631
|
-
insert(_el$
|
|
641
|
+
}), _el$100, _co$20);
|
|
642
|
+
insert(_el$82, createComponent(Show, {
|
|
632
643
|
get when() {
|
|
633
644
|
return metricParams.subtitle;
|
|
634
645
|
},
|
|
635
646
|
get children() {
|
|
636
|
-
var _el$
|
|
637
|
-
insert(_el$
|
|
638
|
-
return _el$
|
|
647
|
+
var _el$98 = getNextElement(_tmpl$24);
|
|
648
|
+
insert(_el$98, () => metricParams.subtitle);
|
|
649
|
+
return _el$98;
|
|
639
650
|
}
|
|
640
|
-
}), _el$
|
|
641
|
-
return _el$
|
|
651
|
+
}), _el$102, _co$21);
|
|
652
|
+
return _el$81;
|
|
642
653
|
})();
|
|
643
654
|
}
|
|
644
655
|
function extractImageFromMarkdown(content) {
|
|
@@ -679,91 +690,91 @@ function TextRenderer(props) {
|
|
|
679
690
|
},
|
|
680
691
|
get fallback() {
|
|
681
692
|
return (() => {
|
|
682
|
-
var _el$
|
|
683
|
-
insert(_el$
|
|
693
|
+
var _el$105 = getNextElement(_tmpl$26), _el$107 = _el$105.firstChild, [_el$108, _co$23] = getNextMarker(_el$107.nextSibling), _el$106 = _el$108.nextSibling;
|
|
694
|
+
insert(_el$105, createComponent(CopyButton, {
|
|
684
695
|
getText: getTextContent,
|
|
685
696
|
title: "Copy text",
|
|
686
697
|
position: "top-right"
|
|
687
|
-
}), _el$
|
|
698
|
+
}), _el$108, _co$23);
|
|
688
699
|
effect((_p$) => {
|
|
689
700
|
var _v$1 = `prose prose-sm dark:prose-invert max-w-none ${textParams.className || ""}`, _v$10 = htmlContent();
|
|
690
|
-
_v$1 !== _p$.e && className(_el$
|
|
691
|
-
_v$10 !== _p$.t && setProperty(_el$
|
|
701
|
+
_v$1 !== _p$.e && className(_el$106, _p$.e = _v$1);
|
|
702
|
+
_v$10 !== _p$.t && setProperty(_el$106, "innerHTML", _p$.t = _v$10);
|
|
692
703
|
return _p$;
|
|
693
704
|
}, {
|
|
694
705
|
e: void 0,
|
|
695
706
|
t: void 0
|
|
696
707
|
});
|
|
697
|
-
return _el$
|
|
708
|
+
return _el$105;
|
|
698
709
|
})();
|
|
699
710
|
},
|
|
700
711
|
children: (data) => (() => {
|
|
701
|
-
var _el$
|
|
702
|
-
insert(_el$
|
|
712
|
+
var _el$109 = getNextElement(_tmpl$27), _el$110 = _el$109.firstChild, _el$111 = _el$110.firstChild, _el$112 = _el$111.firstChild, _el$113 = _el$110.nextSibling, _el$114 = _el$113.firstChild;
|
|
713
|
+
insert(_el$114, () => data().credit);
|
|
703
714
|
effect((_p$) => {
|
|
704
715
|
var _v$11 = data().linkUrl, _v$12 = data().imageUrl, _v$13 = data().alt;
|
|
705
|
-
_v$11 !== _p$.e && setAttribute(_el$
|
|
706
|
-
_v$12 !== _p$.t && setAttribute(_el$
|
|
707
|
-
_v$13 !== _p$.a && setAttribute(_el$
|
|
716
|
+
_v$11 !== _p$.e && setAttribute(_el$111, "href", _p$.e = _v$11);
|
|
717
|
+
_v$12 !== _p$.t && setAttribute(_el$112, "src", _p$.t = _v$12);
|
|
718
|
+
_v$13 !== _p$.a && setAttribute(_el$112, "alt", _p$.a = _v$13);
|
|
708
719
|
return _p$;
|
|
709
720
|
}, {
|
|
710
721
|
e: void 0,
|
|
711
722
|
t: void 0,
|
|
712
723
|
a: void 0
|
|
713
724
|
});
|
|
714
|
-
return _el$
|
|
725
|
+
return _el$109;
|
|
715
726
|
})()
|
|
716
727
|
});
|
|
717
728
|
}
|
|
718
729
|
function IframeRenderer(props) {
|
|
719
730
|
const params = props.component.params;
|
|
720
731
|
return (() => {
|
|
721
|
-
var _el$
|
|
722
|
-
insert(_el$
|
|
732
|
+
var _el$115 = getNextElement(_tmpl$29), _el$119 = _el$115.firstChild, [_el$120, _co$24] = getNextMarker(_el$119.nextSibling), _el$118 = _el$120.nextSibling;
|
|
733
|
+
insert(_el$115, createComponent(Show, {
|
|
723
734
|
get when() {
|
|
724
735
|
return params.title;
|
|
725
736
|
},
|
|
726
737
|
get children() {
|
|
727
|
-
var _el$
|
|
728
|
-
insert(_el$
|
|
729
|
-
return _el$
|
|
738
|
+
var _el$116 = getNextElement(_tmpl$28), _el$117 = _el$116.firstChild;
|
|
739
|
+
insert(_el$117, () => params.title);
|
|
740
|
+
return _el$116;
|
|
730
741
|
}
|
|
731
|
-
}), _el$
|
|
742
|
+
}), _el$120, _co$24);
|
|
732
743
|
effect((_p$) => {
|
|
733
744
|
var _v$14 = params.url, _v$15 = params.title || "Embedded content", _v$16 = `height: ${params.height || "400px"}; min-height: 300px;`;
|
|
734
|
-
_v$14 !== _p$.e && setAttribute(_el$
|
|
735
|
-
_v$15 !== _p$.t && setAttribute(_el$
|
|
736
|
-
_p$.a = style(_el$
|
|
745
|
+
_v$14 !== _p$.e && setAttribute(_el$118, "src", _p$.e = _v$14);
|
|
746
|
+
_v$15 !== _p$.t && setAttribute(_el$118, "title", _p$.t = _v$15);
|
|
747
|
+
_p$.a = style(_el$118, _v$16, _p$.a);
|
|
737
748
|
return _p$;
|
|
738
749
|
}, {
|
|
739
750
|
e: void 0,
|
|
740
751
|
t: void 0,
|
|
741
752
|
a: void 0
|
|
742
753
|
});
|
|
743
|
-
return _el$
|
|
754
|
+
return _el$115;
|
|
744
755
|
})();
|
|
745
756
|
}
|
|
746
757
|
function ImageRenderer(props) {
|
|
747
758
|
const params = props.component.params;
|
|
748
759
|
return (() => {
|
|
749
|
-
var _el$
|
|
750
|
-
insert(_el$
|
|
760
|
+
var _el$121 = getNextElement(_tmpl$31), _el$122 = _el$121.firstChild, _el$123 = _el$122.firstChild, _el$124 = _el$123.firstChild, _el$127 = _el$122.nextSibling, [_el$128, _co$25] = getNextMarker(_el$127.nextSibling);
|
|
761
|
+
insert(_el$121, createComponent(Show, {
|
|
751
762
|
get when() {
|
|
752
763
|
return params.caption;
|
|
753
764
|
},
|
|
754
765
|
get children() {
|
|
755
|
-
var _el$
|
|
756
|
-
insert(_el$
|
|
757
|
-
return _el$
|
|
766
|
+
var _el$125 = getNextElement(_tmpl$30), _el$126 = _el$125.firstChild;
|
|
767
|
+
insert(_el$126, () => params.caption);
|
|
768
|
+
return _el$125;
|
|
758
769
|
}
|
|
759
|
-
}), _el$
|
|
770
|
+
}), _el$128, _co$25);
|
|
760
771
|
effect((_p$) => {
|
|
761
772
|
var _v$17 = `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 ${params.className || ""}`, _v$18 = params.url, _v$19 = `View full size: ${params.alt || "image"}`, _v$20 = params.url, _v$21 = params.alt || "Image";
|
|
762
|
-
_v$17 !== _p$.e && className(_el$
|
|
763
|
-
_v$18 !== _p$.t && setAttribute(_el$
|
|
764
|
-
_v$19 !== _p$.a && setAttribute(_el$
|
|
765
|
-
_v$20 !== _p$.o && setAttribute(_el$
|
|
766
|
-
_v$21 !== _p$.i && setAttribute(_el$
|
|
773
|
+
_v$17 !== _p$.e && className(_el$121, _p$.e = _v$17);
|
|
774
|
+
_v$18 !== _p$.t && setAttribute(_el$123, "href", _p$.t = _v$18);
|
|
775
|
+
_v$19 !== _p$.a && setAttribute(_el$123, "aria-label", _p$.a = _v$19);
|
|
776
|
+
_v$20 !== _p$.o && setAttribute(_el$124, "src", _p$.o = _v$20);
|
|
777
|
+
_v$21 !== _p$.i && setAttribute(_el$124, "alt", _p$.i = _v$21);
|
|
767
778
|
return _p$;
|
|
768
779
|
}, {
|
|
769
780
|
e: void 0,
|
|
@@ -772,30 +783,30 @@ function ImageRenderer(props) {
|
|
|
772
783
|
o: void 0,
|
|
773
784
|
i: void 0
|
|
774
785
|
});
|
|
775
|
-
return _el$
|
|
786
|
+
return _el$121;
|
|
776
787
|
})();
|
|
777
788
|
}
|
|
778
789
|
function LinkRenderer(props) {
|
|
779
790
|
const params = props.component.params;
|
|
780
791
|
return (() => {
|
|
781
|
-
var _el$
|
|
782
|
-
_el$
|
|
783
|
-
insert(_el$
|
|
784
|
-
insert(_el$
|
|
792
|
+
var _el$129 = getNextElement(_tmpl$33), _el$130 = _el$129.firstChild, _el$131 = _el$130.nextSibling, _el$132 = _el$131.firstChild, _el$134 = _el$132.nextSibling, [_el$135, _co$26] = getNextMarker(_el$134.nextSibling);
|
|
793
|
+
_el$129.$$click = (e) => e.stopPropagation();
|
|
794
|
+
insert(_el$132, () => params.label || params.url);
|
|
795
|
+
insert(_el$131, createComponent(Show, {
|
|
785
796
|
get when() {
|
|
786
797
|
return params.description;
|
|
787
798
|
},
|
|
788
799
|
get children() {
|
|
789
|
-
var _el$
|
|
790
|
-
insert(_el$
|
|
791
|
-
return _el$
|
|
800
|
+
var _el$133 = getNextElement(_tmpl$32);
|
|
801
|
+
insert(_el$133, () => params.description);
|
|
802
|
+
return _el$133;
|
|
792
803
|
}
|
|
793
|
-
}), _el$
|
|
804
|
+
}), _el$135, _co$26);
|
|
794
805
|
effect((_p$) => {
|
|
795
806
|
var _v$22 = params.url, _v$23 = `${params.label || "Link"}: ${params.description || params.url} (opens in new tab)`, _v$24 = `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 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 ${params.className || ""}`;
|
|
796
|
-
_v$22 !== _p$.e && setAttribute(_el$
|
|
797
|
-
_v$23 !== _p$.t && setAttribute(_el$
|
|
798
|
-
_v$24 !== _p$.a && className(_el$
|
|
807
|
+
_v$22 !== _p$.e && setAttribute(_el$129, "href", _p$.e = _v$22);
|
|
808
|
+
_v$23 !== _p$.t && setAttribute(_el$129, "aria-label", _p$.t = _v$23);
|
|
809
|
+
_v$24 !== _p$.a && className(_el$129, _p$.a = _v$24);
|
|
799
810
|
return _p$;
|
|
800
811
|
}, {
|
|
801
812
|
e: void 0,
|
|
@@ -803,7 +814,7 @@ function LinkRenderer(props) {
|
|
|
803
814
|
a: void 0
|
|
804
815
|
});
|
|
805
816
|
runHydrationEvents();
|
|
806
|
-
return _el$
|
|
817
|
+
return _el$129;
|
|
807
818
|
})();
|
|
808
819
|
}
|
|
809
820
|
function ComponentRenderer(props) {
|
|
@@ -817,12 +828,12 @@ function ComponentRenderer(props) {
|
|
|
817
828
|
details: validation.errors
|
|
818
829
|
});
|
|
819
830
|
return (() => {
|
|
820
|
-
var _el$
|
|
821
|
-
insert(_el$
|
|
831
|
+
var _el$136 = getNextElement(_tmpl$34), _el$137 = _el$136.firstChild, _el$138 = _el$137.nextSibling;
|
|
832
|
+
insert(_el$138, () => {
|
|
822
833
|
var _a2, _b;
|
|
823
834
|
return ((_b = (_a2 = validation.errors) == null ? void 0 : _a2[0]) == null ? void 0 : _b.message) || "Unknown validation error";
|
|
824
835
|
});
|
|
825
|
-
return _el$
|
|
836
|
+
return _el$136;
|
|
826
837
|
})();
|
|
827
838
|
}
|
|
828
839
|
return createComponent(GenerativeUIErrorBoundary, {
|
|
@@ -1068,27 +1079,27 @@ function ActionRenderer(props) {
|
|
|
1068
1079
|
const isDisabled = () => params.disabled || params.action === "tool-call" && isExecuting();
|
|
1069
1080
|
if (params.type === "link" || params.action === "link") {
|
|
1070
1081
|
return (() => {
|
|
1071
|
-
var _el$
|
|
1072
|
-
_el$
|
|
1073
|
-
insert(_el$
|
|
1082
|
+
var _el$139 = getNextElement(_tmpl$36), _el$141 = _el$139.firstChild, [_el$142, _co$27] = getNextMarker(_el$141.nextSibling), _el$143 = _el$142.nextSibling, [_el$144, _co$28] = getNextMarker(_el$143.nextSibling);
|
|
1083
|
+
_el$139.$$click = handleClick;
|
|
1084
|
+
insert(_el$139, createComponent(Show, {
|
|
1074
1085
|
get when() {
|
|
1075
1086
|
return params.icon;
|
|
1076
1087
|
},
|
|
1077
1088
|
get children() {
|
|
1078
|
-
var _el$
|
|
1079
|
-
insert(_el$
|
|
1080
|
-
return _el$
|
|
1089
|
+
var _el$140 = getNextElement(_tmpl$35);
|
|
1090
|
+
insert(_el$140, () => params.icon);
|
|
1091
|
+
return _el$140;
|
|
1081
1092
|
}
|
|
1082
|
-
}), _el$
|
|
1083
|
-
insert(_el$
|
|
1093
|
+
}), _el$142, _co$27);
|
|
1094
|
+
insert(_el$139, () => params.label, _el$144, _co$28);
|
|
1084
1095
|
effect((_p$) => {
|
|
1085
1096
|
var _v$25 = params.url || "#", _v$26 = params.url ? "_blank" : void 0, _v$27 = params.ariaLabel || params.label, _v$28 = `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
|
|
1086
1097
|
${params.variant === "primary" ? "bg-blue-600 text-white hover:bg-blue-700" : 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" : "text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300"}
|
|
1087
1098
|
${params.className || ""}`;
|
|
1088
|
-
_v$25 !== _p$.e && setAttribute(_el$
|
|
1089
|
-
_v$26 !== _p$.t && setAttribute(_el$
|
|
1090
|
-
_v$27 !== _p$.a && setAttribute(_el$
|
|
1091
|
-
_v$28 !== _p$.o && className(_el$
|
|
1099
|
+
_v$25 !== _p$.e && setAttribute(_el$139, "href", _p$.e = _v$25);
|
|
1100
|
+
_v$26 !== _p$.t && setAttribute(_el$139, "target", _p$.t = _v$26);
|
|
1101
|
+
_v$27 !== _p$.a && setAttribute(_el$139, "aria-label", _p$.a = _v$27);
|
|
1102
|
+
_v$28 !== _p$.o && className(_el$139, _p$.o = _v$28);
|
|
1092
1103
|
return _p$;
|
|
1093
1104
|
}, {
|
|
1094
1105
|
e: void 0,
|
|
@@ -1097,42 +1108,42 @@ function ActionRenderer(props) {
|
|
|
1097
1108
|
o: void 0
|
|
1098
1109
|
});
|
|
1099
1110
|
runHydrationEvents();
|
|
1100
|
-
return _el$
|
|
1111
|
+
return _el$139;
|
|
1101
1112
|
})();
|
|
1102
1113
|
}
|
|
1103
1114
|
return (() => {
|
|
1104
|
-
var _el$
|
|
1105
|
-
_el$
|
|
1106
|
-
insert(_el$
|
|
1115
|
+
var _el$145 = getNextElement(_tmpl$38), _el$148 = _el$145.firstChild, [_el$149, _co$29] = getNextMarker(_el$148.nextSibling), _el$150 = _el$149.nextSibling, [_el$151, _co$30] = getNextMarker(_el$150.nextSibling), _el$152 = _el$151.nextSibling, [_el$153, _co$31] = getNextMarker(_el$152.nextSibling);
|
|
1116
|
+
_el$145.$$click = handleClick;
|
|
1117
|
+
insert(_el$145, createComponent(Show, {
|
|
1107
1118
|
get when() {
|
|
1108
1119
|
return memo(() => !!isExecuting())() && params.action === "tool-call";
|
|
1109
1120
|
},
|
|
1110
1121
|
get children() {
|
|
1111
|
-
return getNextElement(_tmpl$
|
|
1122
|
+
return getNextElement(_tmpl$37);
|
|
1112
1123
|
}
|
|
1113
|
-
}), _el$
|
|
1114
|
-
insert(_el$
|
|
1124
|
+
}), _el$149, _co$29);
|
|
1125
|
+
insert(_el$145, createComponent(Show, {
|
|
1115
1126
|
get when() {
|
|
1116
1127
|
return memo(() => !!params.icon)() && !(isExecuting() && params.action === "tool-call");
|
|
1117
1128
|
},
|
|
1118
1129
|
get children() {
|
|
1119
|
-
var _el$
|
|
1120
|
-
insert(_el$
|
|
1121
|
-
return _el$
|
|
1130
|
+
var _el$147 = getNextElement(_tmpl$35);
|
|
1131
|
+
insert(_el$147, () => params.icon);
|
|
1132
|
+
return _el$147;
|
|
1122
1133
|
}
|
|
1123
|
-
}), _el$
|
|
1124
|
-
insert(_el$
|
|
1134
|
+
}), _el$151, _co$30);
|
|
1135
|
+
insert(_el$145, () => params.label, _el$153, _co$31);
|
|
1125
1136
|
effect((_p$) => {
|
|
1126
1137
|
var _v$29 = params.action === "submit" ? "submit" : "button", _v$30 = isDisabled(), _v$31 = isExecuting() && params.action === "tool-call", _v$32 = params.ariaLabel || params.label, _v$33 = `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
|
|
1127
1138
|
${params.variant === "primary" ? "bg-blue-600 text-white hover:bg-blue-700 shadow-sm" : 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" : 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" : params.variant === "danger" ? "bg-red-600 text-white hover:bg-red-700" : "bg-transparent text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800"}
|
|
1128
1139
|
${isDisabled() ? "opacity-50 cursor-not-allowed" : ""}
|
|
1129
1140
|
${params.size === "sm" ? "px-3 py-1.5 text-xs" : params.size === "lg" ? "px-6 py-3 text-base" : ""}
|
|
1130
1141
|
${params.className || ""}`;
|
|
1131
|
-
_v$29 !== _p$.e && setAttribute(_el$
|
|
1132
|
-
_v$30 !== _p$.t && setProperty(_el$
|
|
1133
|
-
_v$31 !== _p$.a && setAttribute(_el$
|
|
1134
|
-
_v$32 !== _p$.o && setAttribute(_el$
|
|
1135
|
-
_v$33 !== _p$.i && className(_el$
|
|
1142
|
+
_v$29 !== _p$.e && setAttribute(_el$145, "type", _p$.e = _v$29);
|
|
1143
|
+
_v$30 !== _p$.t && setProperty(_el$145, "disabled", _p$.t = _v$30);
|
|
1144
|
+
_v$31 !== _p$.a && setAttribute(_el$145, "aria-busy", _p$.a = _v$31);
|
|
1145
|
+
_v$32 !== _p$.o && setAttribute(_el$145, "aria-label", _p$.o = _v$32);
|
|
1146
|
+
_v$33 !== _p$.i && className(_el$145, _p$.i = _v$33);
|
|
1136
1147
|
return _p$;
|
|
1137
1148
|
}, {
|
|
1138
1149
|
e: void 0,
|
|
@@ -1142,7 +1153,7 @@ function ActionRenderer(props) {
|
|
|
1142
1153
|
i: void 0
|
|
1143
1154
|
});
|
|
1144
1155
|
runHydrationEvents();
|
|
1145
|
-
return _el$
|
|
1156
|
+
return _el$145;
|
|
1146
1157
|
})();
|
|
1147
1158
|
}
|
|
1148
1159
|
function ErrorCardRenderer(props) {
|
|
@@ -1150,55 +1161,55 @@ function ErrorCardRenderer(props) {
|
|
|
1150
1161
|
return `Error in ${props.error.tool || "unknown tool"}: ${props.error.message || "Unknown error"}`;
|
|
1151
1162
|
};
|
|
1152
1163
|
return (() => {
|
|
1153
|
-
var _el$
|
|
1154
|
-
insert(_el$
|
|
1164
|
+
var _el$154 = getNextElement(_tmpl$42), _el$177 = _el$154.firstChild, [_el$178, _co$37] = getNextMarker(_el$177.nextSibling), _el$155 = _el$178.nextSibling, _el$156 = _el$155.firstChild, _el$157 = _el$156.nextSibling, _el$158 = _el$157.firstChild, _el$159 = _el$158.firstChild, _el$160 = _el$159.nextSibling, [_el$161, _co$32] = getNextMarker(_el$160.nextSibling), _el$162 = _el$158.nextSibling, _el$171 = _el$162.nextSibling, [_el$172, _co$34] = getNextMarker(_el$171.nextSibling), _el$173 = _el$172.nextSibling, [_el$174, _co$35] = getNextMarker(_el$173.nextSibling), _el$175 = _el$174.nextSibling, [_el$176, _co$36] = getNextMarker(_el$175.nextSibling);
|
|
1165
|
+
insert(_el$154, createComponent(CopyButton, {
|
|
1155
1166
|
getText: getErrorText,
|
|
1156
1167
|
title: "Copy error details",
|
|
1157
1168
|
position: "top-right"
|
|
1158
|
-
}), _el$
|
|
1159
|
-
insert(_el$
|
|
1160
|
-
insert(_el$
|
|
1161
|
-
insert(_el$
|
|
1169
|
+
}), _el$178, _co$37);
|
|
1170
|
+
insert(_el$158, () => props.error.tool || "Unknown", _el$161, _co$32);
|
|
1171
|
+
insert(_el$162, () => props.error.message || "An error occurred during tool execution");
|
|
1172
|
+
insert(_el$157, createComponent(Show, {
|
|
1162
1173
|
get when() {
|
|
1163
1174
|
return props.error.type;
|
|
1164
1175
|
},
|
|
1165
1176
|
get children() {
|
|
1166
|
-
var _el$
|
|
1167
|
-
insert(_el$
|
|
1168
|
-
return _el$
|
|
1177
|
+
var _el$163 = getNextElement(_tmpl$39), _el$164 = _el$163.firstChild, _el$165 = _el$164.nextSibling, [_el$166, _co$33] = getNextMarker(_el$165.nextSibling);
|
|
1178
|
+
insert(_el$163, () => props.error.type, _el$166, _co$33);
|
|
1179
|
+
return _el$163;
|
|
1169
1180
|
}
|
|
1170
|
-
}), _el$
|
|
1171
|
-
insert(_el$
|
|
1181
|
+
}), _el$172, _co$34);
|
|
1182
|
+
insert(_el$157, createComponent(Show, {
|
|
1172
1183
|
get when() {
|
|
1173
1184
|
var _a;
|
|
1174
1185
|
return (_a = props.error.suggestions) == null ? void 0 : _a.length;
|
|
1175
1186
|
},
|
|
1176
1187
|
get children() {
|
|
1177
|
-
var _el$
|
|
1178
|
-
insert(_el$
|
|
1188
|
+
var _el$167 = getNextElement(_tmpl$40), _el$168 = _el$167.firstChild, _el$169 = _el$168.nextSibling;
|
|
1189
|
+
insert(_el$169, createComponent(For, {
|
|
1179
1190
|
get each() {
|
|
1180
1191
|
return props.error.suggestions;
|
|
1181
1192
|
},
|
|
1182
1193
|
children: (suggestion) => (() => {
|
|
1183
|
-
var _el$
|
|
1184
|
-
insert(_el$
|
|
1185
|
-
return _el$
|
|
1194
|
+
var _el$179 = getNextElement(_tmpl$43);
|
|
1195
|
+
insert(_el$179, suggestion);
|
|
1196
|
+
return _el$179;
|
|
1186
1197
|
})()
|
|
1187
1198
|
}));
|
|
1188
|
-
return _el$
|
|
1199
|
+
return _el$167;
|
|
1189
1200
|
}
|
|
1190
|
-
}), _el$
|
|
1191
|
-
insert(_el$
|
|
1201
|
+
}), _el$174, _co$35);
|
|
1202
|
+
insert(_el$157, createComponent(Show, {
|
|
1192
1203
|
get when() {
|
|
1193
1204
|
return props.error.timestamp;
|
|
1194
1205
|
},
|
|
1195
1206
|
get children() {
|
|
1196
|
-
var _el$
|
|
1197
|
-
insert(_el$
|
|
1198
|
-
return _el$
|
|
1207
|
+
var _el$170 = getNextElement(_tmpl$41);
|
|
1208
|
+
insert(_el$170, () => new Date(props.error.timestamp).toLocaleString());
|
|
1209
|
+
return _el$170;
|
|
1199
1210
|
}
|
|
1200
|
-
}), _el$
|
|
1201
|
-
return _el$
|
|
1211
|
+
}), _el$176, _co$36);
|
|
1212
|
+
return _el$154;
|
|
1202
1213
|
})();
|
|
1203
1214
|
}
|
|
1204
1215
|
function isErrorResponse(content) {
|
|
@@ -1221,20 +1232,20 @@ function UIResourceHtmlRenderer(props) {
|
|
|
1221
1232
|
return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || ((_b = props.resource.uri) == null ? void 0 : _b.replace("ui://deposium/", "")) || "Resource";
|
|
1222
1233
|
};
|
|
1223
1234
|
return (() => {
|
|
1224
|
-
var _el$
|
|
1225
|
-
insert(_el$
|
|
1235
|
+
var _el$180 = getNextElement(_tmpl$45), _el$184 = _el$180.firstChild, [_el$185, _co$38] = getNextMarker(_el$184.nextSibling), _el$183 = _el$185.nextSibling;
|
|
1236
|
+
insert(_el$180, createComponent(Show, {
|
|
1226
1237
|
get when() {
|
|
1227
1238
|
var _a;
|
|
1228
1239
|
return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || props.resource.uri;
|
|
1229
1240
|
},
|
|
1230
1241
|
get children() {
|
|
1231
|
-
var _el$
|
|
1232
|
-
insert(_el$
|
|
1233
|
-
return _el$
|
|
1242
|
+
var _el$181 = getNextElement(_tmpl$44), _el$182 = _el$181.firstChild;
|
|
1243
|
+
insert(_el$182, resourceTitle);
|
|
1244
|
+
return _el$181;
|
|
1234
1245
|
}
|
|
1235
|
-
}), _el$
|
|
1236
|
-
effect(() => setProperty(_el$
|
|
1237
|
-
return _el$
|
|
1246
|
+
}), _el$185, _co$38);
|
|
1247
|
+
effect(() => setProperty(_el$183, "innerHTML", htmlContent()));
|
|
1248
|
+
return _el$180;
|
|
1238
1249
|
})();
|
|
1239
1250
|
}
|
|
1240
1251
|
const UIResourceRenderer = (props) => {
|
|
@@ -1314,24 +1325,24 @@ const UIResourceRenderer = (props) => {
|
|
|
1314
1325
|
return createComponent(RenderProvider, {
|
|
1315
1326
|
renderComponent,
|
|
1316
1327
|
get children() {
|
|
1317
|
-
var _el$
|
|
1318
|
-
insert(_el$
|
|
1328
|
+
var _el$186 = getNextElement(_tmpl$46), _el$187 = _el$186.firstChild, _el$188 = _el$187.nextSibling, [_el$189, _co$39] = getNextMarker(_el$188.nextSibling);
|
|
1329
|
+
insert(_el$187, createComponent(For, {
|
|
1319
1330
|
get each() {
|
|
1320
1331
|
return layoutData.components;
|
|
1321
1332
|
},
|
|
1322
1333
|
children: (component) => (() => {
|
|
1323
|
-
var _el$
|
|
1324
|
-
insert(_el$
|
|
1334
|
+
var _el$190 = getNextElement(_tmpl$47);
|
|
1335
|
+
insert(_el$190, createComponent(ComponentRenderer, {
|
|
1325
1336
|
component,
|
|
1326
1337
|
get onError() {
|
|
1327
1338
|
return props.onError;
|
|
1328
1339
|
}
|
|
1329
1340
|
}));
|
|
1330
|
-
effect((_$p) => style(_el$
|
|
1331
|
-
return _el$
|
|
1341
|
+
effect((_$p) => style(_el$190, getGridStyleString(component), _$p));
|
|
1342
|
+
return _el$190;
|
|
1332
1343
|
})()
|
|
1333
1344
|
}));
|
|
1334
|
-
insert(_el$
|
|
1345
|
+
insert(_el$186, createComponent(Show, {
|
|
1335
1346
|
get when() {
|
|
1336
1347
|
return shouldShowAutoFooter();
|
|
1337
1348
|
},
|
|
@@ -1342,17 +1353,17 @@ const UIResourceRenderer = (props) => {
|
|
|
1342
1353
|
}
|
|
1343
1354
|
});
|
|
1344
1355
|
}
|
|
1345
|
-
}), _el$
|
|
1356
|
+
}), _el$189, _co$39);
|
|
1346
1357
|
effect((_p$) => {
|
|
1347
1358
|
var _v$34 = `w-full ${props.class || ""}`, _v$35 = gridContainerStyle();
|
|
1348
|
-
_v$34 !== _p$.e && className(_el$
|
|
1349
|
-
_p$.t = style(_el$
|
|
1359
|
+
_v$34 !== _p$.e && className(_el$186, _p$.e = _v$34);
|
|
1360
|
+
_p$.t = style(_el$187, _v$35, _p$.t);
|
|
1350
1361
|
return _p$;
|
|
1351
1362
|
}, {
|
|
1352
1363
|
e: void 0,
|
|
1353
1364
|
t: void 0
|
|
1354
1365
|
});
|
|
1355
|
-
return _el$
|
|
1366
|
+
return _el$186;
|
|
1356
1367
|
}
|
|
1357
1368
|
});
|
|
1358
1369
|
};
|