@seed-ship/mcp-ui-solid 6.13.0 → 6.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -0
- package/dist/components/UIResourceRenderer.cjs +369 -298
- package/dist/components/UIResourceRenderer.cjs.map +1 -1
- package/dist/components/UIResourceRenderer.d.ts +19 -0
- package/dist/components/UIResourceRenderer.d.ts.map +1 -1
- package/dist/components/UIResourceRenderer.js +369 -298
- package/dist/components/UIResourceRenderer.js.map +1 -1
- package/package.json +1 -1
- package/src/components/ChartRenderer.quickchart.test.tsx +66 -0
- package/src/components/UIResourceRenderer.tsx +114 -7
- package/src/components/UnsupportedComponent.test.tsx +77 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -18,6 +18,8 @@ const FormRenderer = require("./FormRenderer.cjs");
|
|
|
18
18
|
const ModalRenderer = require("./ModalRenderer.cjs");
|
|
19
19
|
const ActionGroupRenderer = require("./ActionGroupRenderer.cjs");
|
|
20
20
|
const ChartJSRenderer = require("./ChartJSRenderer.cjs");
|
|
21
|
+
const DegradedFallback = require("./DegradedFallback.cjs");
|
|
22
|
+
const degradedProjections = require("../utils/degraded-projections.cjs");
|
|
21
23
|
const ImageGalleryRenderer = require("./ImageGalleryRenderer.cjs");
|
|
22
24
|
const VideoRenderer = require("./VideoRenderer.cjs");
|
|
23
25
|
const CodeBlockRenderer = require("./CodeBlockRenderer.cjs");
|
|
@@ -28,7 +30,7 @@ const PortalDropdownMenu = require("./PortalDropdownMenu.cjs");
|
|
|
28
30
|
const RenderContext = require("./RenderContext.cjs");
|
|
29
31
|
const useAction = require("../hooks/useAction.cjs");
|
|
30
32
|
const marked_esm = require("../node_modules/.pnpm/marked@16.4.2/node_modules/marked/lib/marked.esm.cjs");
|
|
31
|
-
var _tmpl$ = /* @__PURE__ */ web.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__ */ web.template(`<button>`), _tmpl$3 = /* @__PURE__ */ web.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__ */ web.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__ */ web.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__ */ web.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__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3">`), _tmpl$8 = /* @__PURE__ */ web.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__ */ web.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__ */ web.template(`<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">`), _tmpl$1 = /* @__PURE__ */ web.template(`<tr>`), _tmpl$10 = /* @__PURE__ */ web.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__ */ web.template(`<tbody class="bg-white dark:bg-gray-800 relative">`), _tmpl$12 = /* @__PURE__ */ web.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__ */ web.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__ */ web.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__ */ web.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"aria-haspopup=menu><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__ */ web.template(`<span class="ml-2 text-xs font-normal text-gray-400">(virtualized: <!$><!/> rows)`), _tmpl$17 = /* @__PURE__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3 flex-shrink-0"><!$><!/><!$><!/>`), _tmpl$18 = /* @__PURE__ */ web.template(`<button type=button class="absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 text-sm"aria-label="Clear search">×`), _tmpl$19 = /* @__PURE__ */ web.template(`<div class="relative mb-3"><span class="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 pointer-events-none text-sm">🔍</span><input type=text class="w-full max-w-xs min-w-[200px] pl-8 pr-8 py-1.5 text-sm border border-gray-200 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-white placeholder-gray-400 focus:border-blue-400 focus:ring-1 focus:ring-blue-400 outline-none"><!$><!/>`), _tmpl$20 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 mb-2"><!$><!/> result<!$><!/> on <!$><!/>`), _tmpl$21 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span>Showing <!$><!/> - <!$><!/> of <!$><!/>`), _tmpl$22 = /* @__PURE__ */ web.template(`<select class="ml-2 px-1 py-0.5 text-xs border border-gray-200 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-700 dark:text-gray-300">`), _tmpl$23 = /* @__PURE__ */ web.template(`<span class=text-gray-400>/ page`), _tmpl$24 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span><!$><!/>–<!$><!/> / <!$><!/></span><div class="flex items-center gap-2"><button class="px-2 py-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors">◀</button><span><!$><!/> / <!$><!/></span><button class="px-2 py-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors">▶</button><!$><!/>`), _tmpl$25 = /* @__PURE__ */ web.template(`<div><!$><!/><div><!$><!/><!$><!/><div 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-100 dark:bg-gray-900 sticky top-0 z-10"><tr></tr></thead><!$><!/></table></div><!$><!/><!$><!/>`), _tmpl$26 = /* @__PURE__ */ web.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-100 dark:bg-gray-900 cursor-pointer select-none hover:bg-gray-200 dark:hover:bg-gray-800 transition-colors"><span class="inline-flex items-center gap-1"><!$><!/><span class="text-[10px] leading-none">`), _tmpl$27 = /* @__PURE__ */ web.template(`<option>`), _tmpl$28 = /* @__PURE__ */ web.template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$29 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$30 = /* @__PURE__ */ web.template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$31 = /* @__PURE__ */ web.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$32 = /* @__PURE__ */ web.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$33 = /* @__PURE__ */ web.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$34 = /* @__PURE__ */ web.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$35 = /* @__PURE__ */ web.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"loading=lazy>`, true, false, false), _tmpl$36 = /* @__PURE__ */ web.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$37 = /* @__PURE__ */ web.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$38 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$39 = /* @__PURE__ */ web.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$40 = /* @__PURE__ */ web.template(`<div class="inline-flex items-center gap-1.5 px-2 py-1 rounded-md bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 text-xs text-yellow-800 dark:text-yellow-200"role=alert aria-label="Component validation warning"><svg xmlns=http://www.w3.org/2000/svg class="w-3.5 h-3.5"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1=12 y1=9 x2=12 y2=13></line><line x1=12 y1=17 x2=12.01 y2=17></line></svg><span>Invalid <!$><!/>`), _tmpl$41 = /* @__PURE__ */ web.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$42 = /* @__PURE__ */ web.template(`<span aria-hidden=true>`), _tmpl$43 = /* @__PURE__ */ web.template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$44 = /* @__PURE__ */ web.template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$45 = /* @__PURE__ */ web.template(`<button type=button><!$><!/><!$><!/><!$><!/>`), _tmpl$46 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$47 = /* @__PURE__ */ web.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$48 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$49 = /* @__PURE__ */ web.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$50 = /* @__PURE__ */ web.template(`<li>`), _tmpl$51 = /* @__PURE__ */ web.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$52 = /* @__PURE__ */ web.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$53 = /* @__PURE__ */ web.template(`<div><div class="grid gap-4"></div><!$><!/>`), _tmpl$54 = /* @__PURE__ */ web.template(`<div>`);
|
|
33
|
+
var _tmpl$ = /* @__PURE__ */ web.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__ */ web.template(`<button>`), _tmpl$3 = /* @__PURE__ */ web.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__ */ web.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__ */ web.template(`<div class=p-3>`), _tmpl$6 = /* @__PURE__ */ web.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$7 = /* @__PURE__ */ web.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$8 = /* @__PURE__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3">`), _tmpl$9 = /* @__PURE__ */ web.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$0 = /* @__PURE__ */ web.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$1 = /* @__PURE__ */ web.template(`<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">`), _tmpl$10 = /* @__PURE__ */ web.template(`<tr>`), _tmpl$11 = /* @__PURE__ */ web.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$12 = /* @__PURE__ */ web.template(`<tbody class="bg-white dark:bg-gray-800 relative">`), _tmpl$13 = /* @__PURE__ */ web.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$14 = /* @__PURE__ */ web.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$15 = /* @__PURE__ */ web.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$16 = /* @__PURE__ */ web.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"aria-haspopup=menu><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__ */ web.template(`<span class="ml-2 text-xs font-normal text-gray-400">(virtualized: <!$><!/> rows)`), _tmpl$18 = /* @__PURE__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3 flex-shrink-0"><!$><!/><!$><!/>`), _tmpl$19 = /* @__PURE__ */ web.template(`<button type=button class="absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 text-sm"aria-label="Clear search">×`), _tmpl$20 = /* @__PURE__ */ web.template(`<div class="relative mb-3"><span class="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 pointer-events-none text-sm">🔍</span><input type=text class="w-full max-w-xs min-w-[200px] pl-8 pr-8 py-1.5 text-sm border border-gray-200 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-white placeholder-gray-400 focus:border-blue-400 focus:ring-1 focus:ring-blue-400 outline-none"><!$><!/>`), _tmpl$21 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 mb-2"><!$><!/> result<!$><!/> on <!$><!/>`), _tmpl$22 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span>Showing <!$><!/> - <!$><!/> of <!$><!/>`), _tmpl$23 = /* @__PURE__ */ web.template(`<select class="ml-2 px-1 py-0.5 text-xs border border-gray-200 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-700 dark:text-gray-300">`), _tmpl$24 = /* @__PURE__ */ web.template(`<span class=text-gray-400>/ page`), _tmpl$25 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span><!$><!/>–<!$><!/> / <!$><!/></span><div class="flex items-center gap-2"><button class="px-2 py-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors">◀</button><span><!$><!/> / <!$><!/></span><button class="px-2 py-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors">▶</button><!$><!/>`), _tmpl$26 = /* @__PURE__ */ web.template(`<div><!$><!/><div><!$><!/><!$><!/><div 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-100 dark:bg-gray-900 sticky top-0 z-10"><tr></tr></thead><!$><!/></table></div><!$><!/><!$><!/>`), _tmpl$27 = /* @__PURE__ */ web.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-100 dark:bg-gray-900 cursor-pointer select-none hover:bg-gray-200 dark:hover:bg-gray-800 transition-colors"><span class="inline-flex items-center gap-1"><!$><!/><span class="text-[10px] leading-none">`), _tmpl$28 = /* @__PURE__ */ web.template(`<option>`), _tmpl$29 = /* @__PURE__ */ web.template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$30 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$31 = /* @__PURE__ */ web.template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$32 = /* @__PURE__ */ web.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$33 = /* @__PURE__ */ web.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$34 = /* @__PURE__ */ web.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$35 = /* @__PURE__ */ web.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$36 = /* @__PURE__ */ web.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"loading=lazy>`, true, false, false), _tmpl$37 = /* @__PURE__ */ web.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$38 = /* @__PURE__ */ web.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$39 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$40 = /* @__PURE__ */ web.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$41 = /* @__PURE__ */ web.template(`<div class="inline-flex items-center gap-1.5 px-2 py-1 rounded-md bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 text-xs text-yellow-800 dark:text-yellow-200"role=alert aria-label="Component validation warning"><svg xmlns=http://www.w3.org/2000/svg class="w-3.5 h-3.5"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1=12 y1=9 x2=12 y2=13></line><line x1=12 y1=17 x2=12.01 y2=17></line></svg><span>Invalid <!$><!/>`), _tmpl$42 = /* @__PURE__ */ web.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$43 = /* @__PURE__ */ web.template(`<div role=alert class="w-full rounded-lg border border-amber-300 bg-amber-50 px-3 py-2 text-sm text-amber-800 dark:border-amber-700/50 dark:bg-amber-900/20 dark:text-amber-200">Unsupported component type: <code class=font-mono>`), _tmpl$44 = /* @__PURE__ */ web.template(`<span aria-hidden=true>`), _tmpl$45 = /* @__PURE__ */ web.template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$46 = /* @__PURE__ */ web.template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$47 = /* @__PURE__ */ web.template(`<button type=button><!$><!/><!$><!/><!$><!/>`), _tmpl$48 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$49 = /* @__PURE__ */ web.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$50 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$51 = /* @__PURE__ */ web.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$52 = /* @__PURE__ */ web.template(`<li>`), _tmpl$53 = /* @__PURE__ */ web.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$54 = /* @__PURE__ */ web.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$55 = /* @__PURE__ */ web.template(`<div><div class="grid gap-4"></div><!$><!/>`), _tmpl$56 = /* @__PURE__ */ web.template(`<div>`);
|
|
32
34
|
function CopyButton(props) {
|
|
33
35
|
const [copied, setCopied] = solidJs.createSignal(false);
|
|
34
36
|
const handleCopy = async () => {
|
|
@@ -76,11 +78,26 @@ function ChartRenderer(props) {
|
|
|
76
78
|
const [iframeUrl, setIframeUrl] = solidJs.createSignal();
|
|
77
79
|
const [isLoading, setIsLoading] = solidJs.createSignal(true);
|
|
78
80
|
const [error, setError] = solidJs.createSignal();
|
|
81
|
+
const [degraded, setDegraded] = solidJs.createSignal(false);
|
|
82
|
+
const telemetry = MCPUITelemetryContext.useTelemetry();
|
|
79
83
|
const params = () => props.component.params;
|
|
80
84
|
const rendererPref = () => {
|
|
81
85
|
var _a2;
|
|
82
86
|
return ((_a2 = params()) == null ? void 0 : _a2.renderer) || "auto";
|
|
83
87
|
};
|
|
88
|
+
const allowQuickchart = () => props.allowQuickchartFallback === true;
|
|
89
|
+
const signalBlockedFallback = (reason) => {
|
|
90
|
+
setDegraded(true);
|
|
91
|
+
setIsLoading(false);
|
|
92
|
+
const message = `Chart degraded to a data table: ${reason}`;
|
|
93
|
+
telemetry == null ? void 0 : telemetry.dispatch({
|
|
94
|
+
type: "render:error",
|
|
95
|
+
errorMessage: message,
|
|
96
|
+
id: props.component.id ?? "",
|
|
97
|
+
componentType: "chart",
|
|
98
|
+
ts: Date.now()
|
|
99
|
+
});
|
|
100
|
+
};
|
|
84
101
|
if (!((_b = (_a = params()) == null ? void 0 : _a.data) == null ? void 0 : _b.datasets)) {
|
|
85
102
|
return web.getNextElement(_tmpl$4);
|
|
86
103
|
}
|
|
@@ -88,7 +105,11 @@ function ChartRenderer(props) {
|
|
|
88
105
|
const pref = rendererPref();
|
|
89
106
|
if (pref === "iframe") {
|
|
90
107
|
setUseNative(false);
|
|
91
|
-
|
|
108
|
+
if (allowQuickchart()) {
|
|
109
|
+
buildIframeUrl();
|
|
110
|
+
} else {
|
|
111
|
+
signalBlockedFallback("renderer: 'iframe' requires the external quickchart.io service; set allowQuickchartFallback on the host to enable it.");
|
|
112
|
+
}
|
|
92
113
|
} else if (pref === "native") {
|
|
93
114
|
const available = await ChartJSRenderer.isChartJSAvailable();
|
|
94
115
|
if (available) {
|
|
@@ -103,9 +124,12 @@ function ChartRenderer(props) {
|
|
|
103
124
|
if (available) {
|
|
104
125
|
setUseNative(true);
|
|
105
126
|
setIsLoading(false);
|
|
106
|
-
} else {
|
|
127
|
+
} else if (allowQuickchart()) {
|
|
107
128
|
setUseNative(false);
|
|
108
129
|
buildIframeUrl();
|
|
130
|
+
} else {
|
|
131
|
+
setUseNative(false);
|
|
132
|
+
signalBlockedFallback("Chart.js peer is not installed.");
|
|
109
133
|
}
|
|
110
134
|
}
|
|
111
135
|
});
|
|
@@ -132,46 +156,59 @@ function ChartRenderer(props) {
|
|
|
132
156
|
},
|
|
133
157
|
get fallback() {
|
|
134
158
|
return (() => {
|
|
135
|
-
var _el$5 = web.getNextElement(_tmpl$
|
|
159
|
+
var _el$5 = web.getNextElement(_tmpl$0), _el$16 = _el$5.firstChild, [_el$17, _co$2] = web.getNextMarker(_el$16.nextSibling), _el$18 = _el$17.nextSibling, [_el$19, _co$3] = web.getNextMarker(_el$18.nextSibling), _el$20 = _el$19.nextSibling, [_el$21, _co$4] = web.getNextMarker(_el$20.nextSibling), _el$22 = _el$21.nextSibling, [_el$23, _co$5] = web.getNextMarker(_el$22.nextSibling);
|
|
160
|
+
web.insert(_el$5, web.createComponent(solidJs.Show, {
|
|
161
|
+
get when() {
|
|
162
|
+
return degraded();
|
|
163
|
+
},
|
|
164
|
+
get children() {
|
|
165
|
+
var _el$6 = web.getNextElement(_tmpl$5);
|
|
166
|
+
web.insert(_el$6, web.createComponent(DegradedFallback.DegradedFallback, web.mergeProps({
|
|
167
|
+
message: "Interactive chart unavailable — install the chart.js peer dependency, or set allowQuickchartFallback to use the external quickchart.io renderer.",
|
|
168
|
+
caption: "Showing the chart data as a table."
|
|
169
|
+
}, () => degradedProjections.chartToDegradedTable(params() ?? {}))));
|
|
170
|
+
return _el$6;
|
|
171
|
+
}
|
|
172
|
+
}), _el$17, _co$2);
|
|
136
173
|
web.insert(_el$5, web.createComponent(solidJs.Show, {
|
|
137
174
|
get when() {
|
|
138
175
|
return isLoading();
|
|
139
176
|
},
|
|
140
177
|
get children() {
|
|
141
|
-
return web.getNextElement(_tmpl$
|
|
178
|
+
return web.getNextElement(_tmpl$6);
|
|
142
179
|
}
|
|
143
|
-
}), _el$
|
|
180
|
+
}), _el$19, _co$3);
|
|
144
181
|
web.insert(_el$5, web.createComponent(solidJs.Show, {
|
|
145
182
|
get when() {
|
|
146
183
|
return error();
|
|
147
184
|
},
|
|
148
185
|
get children() {
|
|
149
|
-
var _el$
|
|
150
|
-
web.insert(_el$
|
|
151
|
-
return _el$
|
|
186
|
+
var _el$8 = web.getNextElement(_tmpl$7), _el$9 = _el$8.firstChild, _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling;
|
|
187
|
+
web.insert(_el$1, error);
|
|
188
|
+
return _el$8;
|
|
152
189
|
}
|
|
153
|
-
}), _el$
|
|
190
|
+
}), _el$21, _co$4);
|
|
154
191
|
web.insert(_el$5, web.createComponent(solidJs.Show, {
|
|
155
192
|
get when() {
|
|
156
193
|
return web.memo(() => !!iframeUrl())() && !error();
|
|
157
194
|
},
|
|
158
195
|
get children() {
|
|
159
|
-
var _el$
|
|
160
|
-
web.insert(_el$
|
|
196
|
+
var _el$10 = web.getNextElement(_tmpl$9), _el$14 = _el$10.firstChild, [_el$15, _co$] = web.getNextMarker(_el$14.nextSibling), _el$12 = _el$15.nextSibling, _el$13 = _el$12.firstChild;
|
|
197
|
+
web.insert(_el$10, web.createComponent(solidJs.Show, {
|
|
161
198
|
get when() {
|
|
162
199
|
var _a2;
|
|
163
200
|
return (_a2 = params()) == null ? void 0 : _a2.title;
|
|
164
201
|
},
|
|
165
202
|
get children() {
|
|
166
|
-
var _el$
|
|
167
|
-
web.insert(_el$
|
|
203
|
+
var _el$11 = web.getNextElement(_tmpl$8);
|
|
204
|
+
web.insert(_el$11, () => {
|
|
168
205
|
var _a2;
|
|
169
206
|
return (_a2 = params()) == null ? void 0 : _a2.title;
|
|
170
207
|
});
|
|
171
|
-
return _el$
|
|
208
|
+
return _el$11;
|
|
172
209
|
}
|
|
173
|
-
}), _el$
|
|
174
|
-
_el$
|
|
210
|
+
}), _el$15, _co$);
|
|
211
|
+
_el$13.addEventListener("error", () => {
|
|
175
212
|
var _a2;
|
|
176
213
|
setError("Failed to load chart");
|
|
177
214
|
(_a2 = props.onError) == null ? void 0 : _a2.call(props, {
|
|
@@ -183,18 +220,18 @@ function ChartRenderer(props) {
|
|
|
183
220
|
web.effect((_p$) => {
|
|
184
221
|
var _a2, _b2, _c, _d;
|
|
185
222
|
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";
|
|
186
|
-
_v$3 !== _p$.e && web.setAttribute(_el$
|
|
187
|
-
_v$4 !== _p$.t && web.setAttribute(_el$
|
|
188
|
-
_v$5 !== _p$.a && web.setAttribute(_el$
|
|
223
|
+
_v$3 !== _p$.e && web.setAttribute(_el$12, "aria-label", _p$.e = _v$3);
|
|
224
|
+
_v$4 !== _p$.t && web.setAttribute(_el$13, "src", _p$.t = _v$4);
|
|
225
|
+
_v$5 !== _p$.a && web.setAttribute(_el$13, "alt", _p$.a = _v$5);
|
|
189
226
|
return _p$;
|
|
190
227
|
}, {
|
|
191
228
|
e: void 0,
|
|
192
229
|
t: void 0,
|
|
193
230
|
a: void 0
|
|
194
231
|
});
|
|
195
|
-
return _el$
|
|
232
|
+
return _el$10;
|
|
196
233
|
}
|
|
197
|
-
}), _el$
|
|
234
|
+
}), _el$23, _co$5);
|
|
198
235
|
return _el$5;
|
|
199
236
|
})();
|
|
200
237
|
},
|
|
@@ -544,28 +581,28 @@ ${dataRows}`;
|
|
|
544
581
|
};
|
|
545
582
|
const tableId = `table-${Math.random().toString(36).slice(2, 9)}`;
|
|
546
583
|
const StandardTableBody = () => (() => {
|
|
547
|
-
var _el$
|
|
548
|
-
web.insert(_el$
|
|
584
|
+
var _el$24 = web.getNextElement(_tmpl$1);
|
|
585
|
+
web.insert(_el$24, web.createComponent(solidJs.For, {
|
|
549
586
|
get each() {
|
|
550
587
|
return clientVisibleRows().slice(0, validation.DEFAULT_RESOURCE_LIMITS.maxTableRows);
|
|
551
588
|
},
|
|
552
589
|
children: (row, i) => (() => {
|
|
553
|
-
var _el$
|
|
554
|
-
web.insert(_el$
|
|
590
|
+
var _el$25 = web.getNextElement(_tmpl$10);
|
|
591
|
+
web.insert(_el$25, web.createComponent(solidJs.For, {
|
|
555
592
|
get each() {
|
|
556
593
|
return tableParams.columns;
|
|
557
594
|
},
|
|
558
595
|
children: (column) => (() => {
|
|
559
|
-
var _el$
|
|
560
|
-
web.effect(() => web.setProperty(_el$
|
|
561
|
-
return _el$
|
|
596
|
+
var _el$26 = web.getNextElement(_tmpl$11), _el$27 = _el$26.firstChild;
|
|
597
|
+
web.effect(() => web.setProperty(_el$27, "innerHTML", highlightQuery(renderCellValue(row[column.key], citationCtx), debouncedQuery())));
|
|
598
|
+
return _el$26;
|
|
562
599
|
})()
|
|
563
600
|
}));
|
|
564
|
-
web.effect(() => web.className(_el$
|
|
565
|
-
return _el$
|
|
601
|
+
web.effect(() => web.className(_el$25, `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"}`));
|
|
602
|
+
return _el$25;
|
|
566
603
|
})()
|
|
567
604
|
}));
|
|
568
|
-
return _el$
|
|
605
|
+
return _el$24;
|
|
569
606
|
})();
|
|
570
607
|
const VirtualizedTableBody = () => {
|
|
571
608
|
const v = virtualizer();
|
|
@@ -575,39 +612,39 @@ ${dataRows}`;
|
|
|
575
612
|
const opts = virtualizeOpts();
|
|
576
613
|
const rowHeight = opts.rowHeight ?? 48;
|
|
577
614
|
return (() => {
|
|
578
|
-
var _el$
|
|
579
|
-
web.setStyleProperty(_el$
|
|
580
|
-
web.insert(_el$
|
|
615
|
+
var _el$28 = web.getNextElement(_tmpl$12);
|
|
616
|
+
web.setStyleProperty(_el$28, "height", `${totalSize}px`);
|
|
617
|
+
web.insert(_el$28, web.createComponent(solidJs.For, {
|
|
581
618
|
each: items,
|
|
582
619
|
children: (virtualRow) => {
|
|
583
620
|
const row = tableParams.rows[virtualRow.index];
|
|
584
621
|
return (() => {
|
|
585
|
-
var _el$
|
|
586
|
-
web.setStyleProperty(_el$
|
|
587
|
-
web.insert(_el$
|
|
622
|
+
var _el$29 = web.getNextElement(_tmpl$10);
|
|
623
|
+
web.setStyleProperty(_el$29, "height", `${rowHeight}px`);
|
|
624
|
+
web.insert(_el$29, web.createComponent(solidJs.For, {
|
|
588
625
|
get each() {
|
|
589
626
|
return tableParams.columns;
|
|
590
627
|
},
|
|
591
628
|
children: (column) => (() => {
|
|
592
|
-
var _el$
|
|
593
|
-
web.effect(() => web.setProperty(_el$
|
|
594
|
-
return _el$
|
|
629
|
+
var _el$30 = web.getNextElement(_tmpl$11), _el$31 = _el$30.firstChild;
|
|
630
|
+
web.effect(() => web.setProperty(_el$31, "innerHTML", highlightQuery(renderCellValue(row[column.key], citationCtx), debouncedQuery())));
|
|
631
|
+
return _el$30;
|
|
595
632
|
})()
|
|
596
633
|
}));
|
|
597
634
|
web.effect((_p$) => {
|
|
598
635
|
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)`;
|
|
599
|
-
_v$6 !== _p$.e && web.className(_el$
|
|
600
|
-
_v$7 !== _p$.t && web.setStyleProperty(_el$
|
|
636
|
+
_v$6 !== _p$.e && web.className(_el$29, _p$.e = _v$6);
|
|
637
|
+
_v$7 !== _p$.t && web.setStyleProperty(_el$29, "transform", _p$.t = _v$7);
|
|
601
638
|
return _p$;
|
|
602
639
|
}, {
|
|
603
640
|
e: void 0,
|
|
604
641
|
t: void 0
|
|
605
642
|
});
|
|
606
|
-
return _el$
|
|
643
|
+
return _el$29;
|
|
607
644
|
})();
|
|
608
645
|
}
|
|
609
646
|
}));
|
|
610
|
-
return _el$
|
|
647
|
+
return _el$28;
|
|
611
648
|
})();
|
|
612
649
|
};
|
|
613
650
|
return web.createComponent(ExpandableWrapper.ExpandableWrapper, {
|
|
@@ -622,8 +659,8 @@ ${dataRows}`;
|
|
|
622
659
|
return props.toolbarVariant;
|
|
623
660
|
},
|
|
624
661
|
get children() {
|
|
625
|
-
var _el$
|
|
626
|
-
web.insert(_el$
|
|
662
|
+
var _el$32 = web.getNextElement(_tmpl$26), _el$116 = _el$32.firstChild, [_el$117, _co$26] = web.getNextMarker(_el$116.nextSibling), _el$40 = _el$117.nextSibling, _el$108 = _el$40.firstChild, [_el$109, _co$22] = web.getNextMarker(_el$108.nextSibling), _el$110 = _el$109.nextSibling, [_el$111, _co$23] = web.getNextMarker(_el$110.nextSibling), _el$66 = _el$111.nextSibling, _el$67 = _el$66.firstChild, _el$68 = _el$67.firstChild, _el$69 = _el$68.firstChild, _el$70 = _el$68.nextSibling, [_el$71, _co$12] = web.getNextMarker(_el$70.nextSibling), _el$112 = _el$66.nextSibling, [_el$113, _co$24] = web.getNextMarker(_el$112.nextSibling), _el$114 = _el$113.nextSibling, [_el$115, _co$25] = web.getNextMarker(_el$114.nextSibling);
|
|
663
|
+
web.insert(_el$32, web.createComponent(solidJs.Show, {
|
|
627
664
|
when: exportable,
|
|
628
665
|
get fallback() {
|
|
629
666
|
return web.createComponent(CopyButton, {
|
|
@@ -633,11 +670,11 @@ ${dataRows}`;
|
|
|
633
670
|
});
|
|
634
671
|
},
|
|
635
672
|
get children() {
|
|
636
|
-
var _el$
|
|
637
|
-
_el$
|
|
673
|
+
var _el$33 = web.getNextElement(_tmpl$16), _el$34 = _el$33.firstChild, _el$38 = _el$34.nextSibling, [_el$39, _co$6] = web.getNextMarker(_el$38.nextSibling);
|
|
674
|
+
_el$34.$$click = () => setShowExportMenu(!showExportMenu());
|
|
638
675
|
var _ref$ = exportTriggerRef;
|
|
639
|
-
typeof _ref$ === "function" ? web.use(_ref$, _el$
|
|
640
|
-
web.insert(_el$
|
|
676
|
+
typeof _ref$ === "function" ? web.use(_ref$, _el$34) : exportTriggerRef = _el$34;
|
|
677
|
+
web.insert(_el$33, web.createComponent(PortalDropdownMenu.PortalDropdownMenu, {
|
|
641
678
|
get open() {
|
|
642
679
|
return showExportMenu();
|
|
643
680
|
},
|
|
@@ -650,116 +687,116 @@ ${dataRows}`;
|
|
|
650
687
|
return exportFormats.includes("tsv");
|
|
651
688
|
},
|
|
652
689
|
get children() {
|
|
653
|
-
var _el$
|
|
654
|
-
_el$
|
|
690
|
+
var _el$35 = web.getNextElement(_tmpl$13);
|
|
691
|
+
_el$35.$$click = () => handleExport("tsv");
|
|
655
692
|
web.runHydrationEvents();
|
|
656
|
-
return _el$
|
|
693
|
+
return _el$35;
|
|
657
694
|
}
|
|
658
695
|
}), web.createComponent(solidJs.Show, {
|
|
659
696
|
get when() {
|
|
660
697
|
return exportFormats.includes("csv");
|
|
661
698
|
},
|
|
662
699
|
get children() {
|
|
663
|
-
var _el$
|
|
664
|
-
_el$
|
|
700
|
+
var _el$36 = web.getNextElement(_tmpl$14);
|
|
701
|
+
_el$36.$$click = () => handleExport("csv");
|
|
665
702
|
web.runHydrationEvents();
|
|
666
|
-
return _el$
|
|
703
|
+
return _el$36;
|
|
667
704
|
}
|
|
668
705
|
}), web.createComponent(solidJs.Show, {
|
|
669
706
|
get when() {
|
|
670
707
|
return exportFormats.includes("json");
|
|
671
708
|
},
|
|
672
709
|
get children() {
|
|
673
|
-
var _el$
|
|
674
|
-
_el$
|
|
710
|
+
var _el$37 = web.getNextElement(_tmpl$15);
|
|
711
|
+
_el$37.$$click = () => handleExport("json");
|
|
675
712
|
web.runHydrationEvents();
|
|
676
|
-
return _el$
|
|
713
|
+
return _el$37;
|
|
677
714
|
}
|
|
678
715
|
})];
|
|
679
716
|
}
|
|
680
|
-
}), _el$
|
|
681
|
-
web.effect(() => web.setAttribute(_el$
|
|
717
|
+
}), _el$39, _co$6);
|
|
718
|
+
web.effect(() => web.setAttribute(_el$34, "aria-expanded", showExportMenu()));
|
|
682
719
|
web.runHydrationEvents();
|
|
683
|
-
return _el$
|
|
720
|
+
return _el$33;
|
|
684
721
|
}
|
|
685
|
-
}), _el$
|
|
686
|
-
web.insert(_el$
|
|
722
|
+
}), _el$117, _co$26);
|
|
723
|
+
web.insert(_el$40, web.createComponent(solidJs.Show, {
|
|
687
724
|
get when() {
|
|
688
725
|
return tableParams.title;
|
|
689
726
|
},
|
|
690
727
|
get children() {
|
|
691
|
-
var _el$
|
|
692
|
-
web.setAttribute(_el$
|
|
693
|
-
web.insert(_el$
|
|
694
|
-
web.insert(_el$
|
|
728
|
+
var _el$41 = web.getNextElement(_tmpl$18), _el$47 = _el$41.firstChild, [_el$48, _co$8] = web.getNextMarker(_el$47.nextSibling), _el$49 = _el$48.nextSibling, [_el$50, _co$9] = web.getNextMarker(_el$49.nextSibling);
|
|
729
|
+
web.setAttribute(_el$41, "id", `${tableId}-title`);
|
|
730
|
+
web.insert(_el$41, () => tableParams.title, _el$48, _co$8);
|
|
731
|
+
web.insert(_el$41, web.createComponent(solidJs.Show, {
|
|
695
732
|
get when() {
|
|
696
733
|
return isVirtualizing();
|
|
697
734
|
},
|
|
698
735
|
get children() {
|
|
699
|
-
var _el$
|
|
700
|
-
_el$
|
|
701
|
-
web.insert(_el$
|
|
736
|
+
var _el$42 = web.getNextElement(_tmpl$17), _el$43 = _el$42.firstChild, _el$45 = _el$43.nextSibling, [_el$46, _co$7] = web.getNextMarker(_el$45.nextSibling);
|
|
737
|
+
_el$46.nextSibling;
|
|
738
|
+
web.insert(_el$42, () => {
|
|
702
739
|
var _a;
|
|
703
740
|
return (_a = tableParams.rows) == null ? void 0 : _a.length;
|
|
704
|
-
}, _el$
|
|
705
|
-
return _el$
|
|
741
|
+
}, _el$46, _co$7);
|
|
742
|
+
return _el$42;
|
|
706
743
|
}
|
|
707
|
-
}), _el$
|
|
708
|
-
return _el$
|
|
744
|
+
}), _el$50, _co$9);
|
|
745
|
+
return _el$41;
|
|
709
746
|
}
|
|
710
|
-
}), _el$
|
|
711
|
-
web.insert(_el$
|
|
747
|
+
}), _el$109, _co$22);
|
|
748
|
+
web.insert(_el$40, web.createComponent(solidJs.Show, {
|
|
712
749
|
get when() {
|
|
713
750
|
return isSearchable();
|
|
714
751
|
},
|
|
715
752
|
get children() {
|
|
716
753
|
return [(() => {
|
|
717
|
-
var _el$
|
|
718
|
-
_el$
|
|
719
|
-
web.insert(_el$
|
|
754
|
+
var _el$51 = web.getNextElement(_tmpl$20), _el$52 = _el$51.firstChild, _el$53 = _el$52.nextSibling, _el$55 = _el$53.nextSibling, [_el$56, _co$0] = web.getNextMarker(_el$55.nextSibling);
|
|
755
|
+
_el$53.$$input = (e) => handleSearch(e.currentTarget.value);
|
|
756
|
+
web.insert(_el$51, web.createComponent(solidJs.Show, {
|
|
720
757
|
get when() {
|
|
721
758
|
return searchQuery();
|
|
722
759
|
},
|
|
723
760
|
get children() {
|
|
724
|
-
var _el$
|
|
725
|
-
_el$
|
|
761
|
+
var _el$54 = web.getNextElement(_tmpl$19);
|
|
762
|
+
_el$54.$$click = () => {
|
|
726
763
|
handleSearch("");
|
|
727
764
|
setSearchQuery("");
|
|
728
765
|
setDebouncedQuery("");
|
|
729
766
|
};
|
|
730
767
|
web.runHydrationEvents();
|
|
731
|
-
return _el$
|
|
768
|
+
return _el$54;
|
|
732
769
|
}
|
|
733
|
-
}), _el$
|
|
734
|
-
web.effect(() => web.setAttribute(_el$
|
|
735
|
-
web.effect(() => web.setProperty(_el$
|
|
770
|
+
}), _el$56, _co$0);
|
|
771
|
+
web.effect(() => web.setAttribute(_el$53, "placeholder", searchPlaceholder()));
|
|
772
|
+
web.effect(() => web.setProperty(_el$53, "value", searchQuery()));
|
|
736
773
|
web.runHydrationEvents();
|
|
737
|
-
return _el$
|
|
774
|
+
return _el$51;
|
|
738
775
|
})(), web.createComponent(solidJs.Show, {
|
|
739
776
|
get when() {
|
|
740
777
|
return web.memo(() => !!debouncedQuery())() && filteredRows().length !== sortedRows().length;
|
|
741
778
|
},
|
|
742
779
|
get children() {
|
|
743
|
-
var _el$
|
|
744
|
-
web.insert(_el$
|
|
745
|
-
web.insert(_el$
|
|
746
|
-
web.insert(_el$
|
|
747
|
-
return _el$
|
|
780
|
+
var _el$57 = web.getNextElement(_tmpl$21), _el$60 = _el$57.firstChild, [_el$61, _co$1] = web.getNextMarker(_el$60.nextSibling), _el$58 = _el$61.nextSibling, _el$62 = _el$58.nextSibling, [_el$63, _co$10] = web.getNextMarker(_el$62.nextSibling), _el$59 = _el$63.nextSibling, _el$64 = _el$59.nextSibling, [_el$65, _co$11] = web.getNextMarker(_el$64.nextSibling);
|
|
781
|
+
web.insert(_el$57, () => filteredRows().length, _el$61, _co$1);
|
|
782
|
+
web.insert(_el$57, () => filteredRows().length !== 1 ? "s" : "", _el$63, _co$10);
|
|
783
|
+
web.insert(_el$57, () => sortedRows().length, _el$65, _co$11);
|
|
784
|
+
return _el$57;
|
|
748
785
|
}
|
|
749
786
|
})];
|
|
750
787
|
}
|
|
751
|
-
}), _el$
|
|
788
|
+
}), _el$111, _co$23);
|
|
752
789
|
var _ref$2 = scrollContainerRef;
|
|
753
|
-
typeof _ref$2 === "function" ? web.use(_ref$2, _el$
|
|
754
|
-
web.insert(_el$
|
|
790
|
+
typeof _ref$2 === "function" ? web.use(_ref$2, _el$66) : scrollContainerRef = _el$66;
|
|
791
|
+
web.insert(_el$69, web.createComponent(solidJs.For, {
|
|
755
792
|
get each() {
|
|
756
793
|
return tableParams.columns;
|
|
757
794
|
},
|
|
758
795
|
children: (column) => (() => {
|
|
759
|
-
var _el$
|
|
760
|
-
web.addEventListener(_el$
|
|
761
|
-
web.insert(_el$
|
|
762
|
-
web.insert(_el$
|
|
796
|
+
var _el$118 = web.getNextElement(_tmpl$27), _el$119 = _el$118.firstChild, _el$121 = _el$119.firstChild, [_el$122, _co$27] = web.getNextMarker(_el$121.nextSibling), _el$120 = _el$122.nextSibling;
|
|
797
|
+
web.addEventListener(_el$118, "click", () => handleSort(column.key));
|
|
798
|
+
web.insert(_el$119, () => column.label, _el$122, _co$27);
|
|
799
|
+
web.insert(_el$120, () => sortIndicator(column.key));
|
|
763
800
|
web.effect((_p$) => {
|
|
764
801
|
var _v$14 = column.width ? {
|
|
765
802
|
width: column.width
|
|
@@ -767,19 +804,19 @@ ${dataRows}`;
|
|
|
767
804
|
"opacity-30": sortKey() !== column.key,
|
|
768
805
|
"opacity-100 text-blue-600 dark:text-blue-400": sortKey() === column.key
|
|
769
806
|
};
|
|
770
|
-
_p$.e = web.style(_el$
|
|
771
|
-
_v$15 !== _p$.t && web.setAttribute(_el$
|
|
772
|
-
_p$.a = web.classList(_el$
|
|
807
|
+
_p$.e = web.style(_el$118, _v$14, _p$.e);
|
|
808
|
+
_v$15 !== _p$.t && web.setAttribute(_el$118, "title", _p$.t = _v$15);
|
|
809
|
+
_p$.a = web.classList(_el$120, _v$16, _p$.a);
|
|
773
810
|
return _p$;
|
|
774
811
|
}, {
|
|
775
812
|
e: void 0,
|
|
776
813
|
t: void 0,
|
|
777
814
|
a: void 0
|
|
778
815
|
});
|
|
779
|
-
return _el$
|
|
816
|
+
return _el$118;
|
|
780
817
|
})()
|
|
781
818
|
}));
|
|
782
|
-
web.insert(_el$
|
|
819
|
+
web.insert(_el$67, web.createComponent(solidJs.Show, {
|
|
783
820
|
get when() {
|
|
784
821
|
return isVirtualizing();
|
|
785
822
|
},
|
|
@@ -789,69 +826,69 @@ ${dataRows}`;
|
|
|
789
826
|
get children() {
|
|
790
827
|
return web.createComponent(VirtualizedTableBody, {});
|
|
791
828
|
}
|
|
792
|
-
}), _el$
|
|
793
|
-
web.insert(_el$
|
|
829
|
+
}), _el$71, _co$12);
|
|
830
|
+
web.insert(_el$40, web.createComponent(solidJs.Show, {
|
|
794
831
|
get when() {
|
|
795
832
|
return tableParams.pagination;
|
|
796
833
|
},
|
|
797
834
|
get children() {
|
|
798
|
-
var _el$
|
|
799
|
-
web.insert(_el$
|
|
800
|
-
web.insert(_el$
|
|
801
|
-
web.insert(_el$
|
|
802
|
-
return _el$
|
|
835
|
+
var _el$72 = web.getNextElement(_tmpl$22), _el$73 = _el$72.firstChild, _el$74 = _el$73.firstChild, _el$79 = _el$74.nextSibling, [_el$80, _co$13] = web.getNextMarker(_el$79.nextSibling), _el$75 = _el$80.nextSibling, _el$81 = _el$75.nextSibling, [_el$82, _co$14] = web.getNextMarker(_el$81.nextSibling), _el$77 = _el$82.nextSibling, _el$83 = _el$77.nextSibling, [_el$84, _co$15] = web.getNextMarker(_el$83.nextSibling);
|
|
836
|
+
web.insert(_el$73, () => tableParams.pagination.currentPage * tableParams.pagination.pageSize + 1, _el$80, _co$13);
|
|
837
|
+
web.insert(_el$73, () => Math.min((tableParams.pagination.currentPage + 1) * tableParams.pagination.pageSize, tableParams.pagination.totalRows), _el$82, _co$14);
|
|
838
|
+
web.insert(_el$73, () => tableParams.pagination.totalRows, _el$84, _co$15);
|
|
839
|
+
return _el$72;
|
|
803
840
|
}
|
|
804
|
-
}), _el$
|
|
805
|
-
web.insert(_el$
|
|
841
|
+
}), _el$113, _co$24);
|
|
842
|
+
web.insert(_el$40, web.createComponent(solidJs.Show, {
|
|
806
843
|
get when() {
|
|
807
844
|
return needsClientPagination();
|
|
808
845
|
},
|
|
809
846
|
get children() {
|
|
810
|
-
var _el$
|
|
811
|
-
web.insert(_el$
|
|
812
|
-
web.insert(_el$
|
|
813
|
-
web.insert(_el$
|
|
814
|
-
_el$
|
|
815
|
-
web.insert(_el$
|
|
816
|
-
web.insert(_el$
|
|
817
|
-
_el$
|
|
818
|
-
web.insert(_el$
|
|
847
|
+
var _el$85 = web.getNextElement(_tmpl$25), _el$86 = _el$85.firstChild, _el$89 = _el$86.firstChild, [_el$90, _co$16] = web.getNextMarker(_el$89.nextSibling), _el$87 = _el$90.nextSibling, _el$91 = _el$87.nextSibling, [_el$92, _co$17] = web.getNextMarker(_el$91.nextSibling), _el$88 = _el$92.nextSibling, _el$93 = _el$88.nextSibling, [_el$94, _co$18] = web.getNextMarker(_el$93.nextSibling), _el$95 = _el$86.nextSibling, _el$96 = _el$95.firstChild, _el$97 = _el$96.nextSibling, _el$99 = _el$97.firstChild, [_el$100, _co$19] = web.getNextMarker(_el$99.nextSibling), _el$98 = _el$100.nextSibling, _el$101 = _el$98.nextSibling, [_el$102, _co$20] = web.getNextMarker(_el$101.nextSibling), _el$103 = _el$97.nextSibling, _el$106 = _el$103.nextSibling, [_el$107, _co$21] = web.getNextMarker(_el$106.nextSibling);
|
|
848
|
+
web.insert(_el$86, clientRangeStart, _el$90, _co$16);
|
|
849
|
+
web.insert(_el$86, clientRangeEnd, _el$92, _co$17);
|
|
850
|
+
web.insert(_el$86, () => filteredRows().length.toLocaleString("fr-FR"), _el$94, _co$18);
|
|
851
|
+
_el$96.$$click = () => setClientPage((p) => p - 1);
|
|
852
|
+
web.insert(_el$97, () => clientPage() + 1, _el$100, _co$19);
|
|
853
|
+
web.insert(_el$97, clientTotalPages, _el$102, _co$20);
|
|
854
|
+
_el$103.$$click = () => setClientPage((p) => p + 1);
|
|
855
|
+
web.insert(_el$95, web.createComponent(solidJs.Show, {
|
|
819
856
|
get when() {
|
|
820
857
|
return web.memo(() => !!isExpanded())() && filteredRows().length > 10;
|
|
821
858
|
},
|
|
822
859
|
get children() {
|
|
823
860
|
return [(() => {
|
|
824
|
-
var _el$
|
|
825
|
-
_el$
|
|
826
|
-
web.insert(_el$
|
|
861
|
+
var _el$104 = web.getNextElement(_tmpl$23);
|
|
862
|
+
_el$104.addEventListener("change", (e) => handlePageSizeChange(Number(e.currentTarget.value)));
|
|
863
|
+
web.insert(_el$104, web.createComponent(solidJs.For, {
|
|
827
864
|
get each() {
|
|
828
865
|
return pageSizeOptions();
|
|
829
866
|
},
|
|
830
867
|
children: (opt) => (() => {
|
|
831
|
-
var _el$
|
|
832
|
-
web.insert(_el$
|
|
833
|
-
web.effect(() => web.setProperty(_el$
|
|
834
|
-
return _el$
|
|
868
|
+
var _el$123 = web.getNextElement(_tmpl$28);
|
|
869
|
+
web.insert(_el$123, () => opt.label);
|
|
870
|
+
web.effect(() => web.setProperty(_el$123, "value", opt.value));
|
|
871
|
+
return _el$123;
|
|
835
872
|
})()
|
|
836
873
|
}));
|
|
837
|
-
web.effect(() => web.setProperty(_el$
|
|
838
|
-
return _el$
|
|
839
|
-
})(), web.getNextElement(_tmpl$
|
|
874
|
+
web.effect(() => web.setProperty(_el$104, "value", clientPageSize()));
|
|
875
|
+
return _el$104;
|
|
876
|
+
})(), web.getNextElement(_tmpl$24)];
|
|
840
877
|
}
|
|
841
|
-
}), _el$
|
|
878
|
+
}), _el$107, _co$21);
|
|
842
879
|
web.effect((_p$) => {
|
|
843
880
|
var _v$8 = clientPage() === 0, _v$9 = clientPage() >= clientTotalPages() - 1;
|
|
844
|
-
_v$8 !== _p$.e && web.setProperty(_el$
|
|
845
|
-
_v$9 !== _p$.t && web.setProperty(_el$
|
|
881
|
+
_v$8 !== _p$.e && web.setProperty(_el$96, "disabled", _p$.e = _v$8);
|
|
882
|
+
_v$9 !== _p$.t && web.setProperty(_el$103, "disabled", _p$.t = _v$9);
|
|
846
883
|
return _p$;
|
|
847
884
|
}, {
|
|
848
885
|
e: void 0,
|
|
849
886
|
t: void 0
|
|
850
887
|
});
|
|
851
888
|
web.runHydrationEvents();
|
|
852
|
-
return _el$
|
|
889
|
+
return _el$85;
|
|
853
890
|
}
|
|
854
|
-
}), _el$
|
|
891
|
+
}), _el$115, _co$25);
|
|
855
892
|
web.effect((_p$) => {
|
|
856
893
|
var _v$0 = `relative w-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden group ${isExpanded() ? "flex-1 min-h-0 flex flex-col" : "h-full"}`, _v$1 = `p-4 ${isExpanded() ? "flex-1 min-h-0 flex flex-col" : ""}`, _v$10 = `overflow-x-auto ${isExpanded() ? "flex-1 min-h-0" : ""}`, _v$11 = (
|
|
857
894
|
// v6.1.0 — when expanded, the scroll container fills the
|
|
@@ -883,12 +920,12 @@ ${dataRows}`;
|
|
|
883
920
|
return {};
|
|
884
921
|
})()
|
|
885
922
|
), _v$12 = tableParams.title || "Data table", _v$13 = tableParams.title ? `${tableId}-title` : void 0;
|
|
886
|
-
_v$0 !== _p$.e && web.className(_el$
|
|
887
|
-
_v$1 !== _p$.t && web.className(_el$
|
|
888
|
-
_v$10 !== _p$.a && web.className(_el$
|
|
889
|
-
_p$.o = web.style(_el$
|
|
890
|
-
_v$12 !== _p$.i && web.setAttribute(_el$
|
|
891
|
-
_v$13 !== _p$.n && web.setAttribute(_el$
|
|
923
|
+
_v$0 !== _p$.e && web.className(_el$32, _p$.e = _v$0);
|
|
924
|
+
_v$1 !== _p$.t && web.className(_el$40, _p$.t = _v$1);
|
|
925
|
+
_v$10 !== _p$.a && web.className(_el$66, _p$.a = _v$10);
|
|
926
|
+
_p$.o = web.style(_el$66, _v$11, _p$.o);
|
|
927
|
+
_v$12 !== _p$.i && web.setAttribute(_el$66, "aria-label", _p$.i = _v$12);
|
|
928
|
+
_v$13 !== _p$.n && web.setAttribute(_el$67, "aria-labelledby", _p$.n = _v$13);
|
|
892
929
|
return _p$;
|
|
893
930
|
}, {
|
|
894
931
|
e: void 0,
|
|
@@ -898,7 +935,7 @@ ${dataRows}`;
|
|
|
898
935
|
i: void 0,
|
|
899
936
|
n: void 0
|
|
900
937
|
});
|
|
901
|
-
return _el$
|
|
938
|
+
return _el$32;
|
|
902
939
|
}
|
|
903
940
|
});
|
|
904
941
|
}
|
|
@@ -911,51 +948,51 @@ function MetricRenderer(props) {
|
|
|
911
948
|
return `${title}: ${value}${unit ? " " + unit : ""}`;
|
|
912
949
|
};
|
|
913
950
|
return (() => {
|
|
914
|
-
var _el$
|
|
915
|
-
web.insert(_el$
|
|
951
|
+
var _el$124 = web.getNextElement(_tmpl$32), _el$146 = _el$124.firstChild, [_el$147, _co$33] = web.getNextMarker(_el$146.nextSibling), _el$125 = _el$147.nextSibling, _el$126 = _el$125.firstChild, _el$127 = _el$126.firstChild, _el$128 = _el$127.nextSibling, _el$129 = _el$128.firstChild, _el$131 = _el$129.nextSibling, [_el$132, _co$28] = web.getNextMarker(_el$131.nextSibling), _el$142 = _el$126.nextSibling, [_el$143, _co$31] = web.getNextMarker(_el$142.nextSibling), _el$144 = _el$143.nextSibling, [_el$145, _co$32] = web.getNextMarker(_el$144.nextSibling);
|
|
952
|
+
web.insert(_el$124, web.createComponent(CopyButton, {
|
|
916
953
|
getText: getMetricText,
|
|
917
954
|
title: "Copy metric",
|
|
918
955
|
position: "top-right"
|
|
919
|
-
}), _el$
|
|
920
|
-
web.insert(_el$
|
|
921
|
-
web.insert(_el$
|
|
922
|
-
web.insert(_el$
|
|
956
|
+
}), _el$147, _co$33);
|
|
957
|
+
web.insert(_el$127, () => metricParams.title);
|
|
958
|
+
web.insert(_el$129, () => metricParams.value);
|
|
959
|
+
web.insert(_el$128, web.createComponent(solidJs.Show, {
|
|
923
960
|
get when() {
|
|
924
961
|
return metricParams.unit;
|
|
925
962
|
},
|
|
926
963
|
get children() {
|
|
927
|
-
var _el$
|
|
928
|
-
web.insert(_el$
|
|
929
|
-
return _el$
|
|
964
|
+
var _el$130 = web.getNextElement(_tmpl$29);
|
|
965
|
+
web.insert(_el$130, () => metricParams.unit);
|
|
966
|
+
return _el$130;
|
|
930
967
|
}
|
|
931
|
-
}), _el$
|
|
932
|
-
web.insert(_el$
|
|
968
|
+
}), _el$132, _co$28);
|
|
969
|
+
web.insert(_el$125, web.createComponent(solidJs.Show, {
|
|
933
970
|
get when() {
|
|
934
971
|
return metricParams.trend;
|
|
935
972
|
},
|
|
936
973
|
get children() {
|
|
937
|
-
var _el$
|
|
938
|
-
_el$
|
|
939
|
-
web.insert(_el$
|
|
974
|
+
var _el$133 = web.getNextElement(_tmpl$30), _el$134 = _el$133.firstChild, _el$137 = _el$134.firstChild, [_el$138, _co$29] = web.getNextMarker(_el$137.nextSibling), _el$135 = _el$138.nextSibling, _el$139 = _el$135.nextSibling, [_el$140, _co$30] = web.getNextMarker(_el$139.nextSibling);
|
|
975
|
+
_el$140.nextSibling;
|
|
976
|
+
web.insert(_el$134, (() => {
|
|
940
977
|
var _c$ = web.memo(() => metricParams.trend.direction === "up");
|
|
941
978
|
return () => _c$() ? "�" : metricParams.trend.direction === "down" ? "�" : "�";
|
|
942
|
-
})(), _el$
|
|
943
|
-
web.insert(_el$
|
|
944
|
-
web.effect(() => web.className(_el$
|
|
945
|
-
return _el$
|
|
979
|
+
})(), _el$138, _co$29);
|
|
980
|
+
web.insert(_el$134, () => Math.abs(metricParams.trend.value), _el$140, _co$30);
|
|
981
|
+
web.effect(() => web.className(_el$134, `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"}`));
|
|
982
|
+
return _el$133;
|
|
946
983
|
}
|
|
947
|
-
}), _el$
|
|
948
|
-
web.insert(_el$
|
|
984
|
+
}), _el$143, _co$31);
|
|
985
|
+
web.insert(_el$125, web.createComponent(solidJs.Show, {
|
|
949
986
|
get when() {
|
|
950
987
|
return metricParams.subtitle;
|
|
951
988
|
},
|
|
952
989
|
get children() {
|
|
953
|
-
var _el$
|
|
954
|
-
web.insert(_el$
|
|
955
|
-
return _el$
|
|
990
|
+
var _el$141 = web.getNextElement(_tmpl$31);
|
|
991
|
+
web.insert(_el$141, () => metricParams.subtitle);
|
|
992
|
+
return _el$141;
|
|
956
993
|
}
|
|
957
|
-
}), _el$
|
|
958
|
-
return _el$
|
|
994
|
+
}), _el$145, _co$32);
|
|
995
|
+
return _el$124;
|
|
959
996
|
})();
|
|
960
997
|
}
|
|
961
998
|
function extractImageFromMarkdown(content) {
|
|
@@ -996,62 +1033,62 @@ function TextRenderer(props) {
|
|
|
996
1033
|
},
|
|
997
1034
|
get fallback() {
|
|
998
1035
|
return (() => {
|
|
999
|
-
var _el$
|
|
1000
|
-
web.insert(_el$
|
|
1036
|
+
var _el$148 = web.getNextElement(_tmpl$33), _el$150 = _el$148.firstChild, [_el$151, _co$34] = web.getNextMarker(_el$150.nextSibling), _el$149 = _el$151.nextSibling;
|
|
1037
|
+
web.insert(_el$148, web.createComponent(CopyButton, {
|
|
1001
1038
|
getText: getTextContent,
|
|
1002
1039
|
title: "Copy text",
|
|
1003
1040
|
position: "top-right"
|
|
1004
|
-
}), _el$
|
|
1041
|
+
}), _el$151, _co$34);
|
|
1005
1042
|
web.effect((_p$) => {
|
|
1006
1043
|
var _v$17 = `prose prose-sm dark:prose-invert max-w-none ${textParams.className || ""}`, _v$18 = htmlContent();
|
|
1007
|
-
_v$17 !== _p$.e && web.className(_el$
|
|
1008
|
-
_v$18 !== _p$.t && web.setProperty(_el$
|
|
1044
|
+
_v$17 !== _p$.e && web.className(_el$149, _p$.e = _v$17);
|
|
1045
|
+
_v$18 !== _p$.t && web.setProperty(_el$149, "innerHTML", _p$.t = _v$18);
|
|
1009
1046
|
return _p$;
|
|
1010
1047
|
}, {
|
|
1011
1048
|
e: void 0,
|
|
1012
1049
|
t: void 0
|
|
1013
1050
|
});
|
|
1014
|
-
return _el$
|
|
1051
|
+
return _el$148;
|
|
1015
1052
|
})();
|
|
1016
1053
|
},
|
|
1017
1054
|
children: (data) => (() => {
|
|
1018
|
-
var _el$
|
|
1019
|
-
web.insert(_el$
|
|
1055
|
+
var _el$152 = web.getNextElement(_tmpl$34), _el$153 = _el$152.firstChild, _el$154 = _el$153.firstChild, _el$155 = _el$154.firstChild, _el$156 = _el$153.nextSibling, _el$157 = _el$156.firstChild;
|
|
1056
|
+
web.insert(_el$157, () => data().credit);
|
|
1020
1057
|
web.effect((_p$) => {
|
|
1021
1058
|
var _v$19 = data().linkUrl, _v$20 = data().imageUrl, _v$21 = data().alt;
|
|
1022
|
-
_v$19 !== _p$.e && web.setAttribute(_el$
|
|
1023
|
-
_v$20 !== _p$.t && web.setAttribute(_el$
|
|
1024
|
-
_v$21 !== _p$.a && web.setAttribute(_el$
|
|
1059
|
+
_v$19 !== _p$.e && web.setAttribute(_el$154, "href", _p$.e = _v$19);
|
|
1060
|
+
_v$20 !== _p$.t && web.setAttribute(_el$155, "src", _p$.t = _v$20);
|
|
1061
|
+
_v$21 !== _p$.a && web.setAttribute(_el$155, "alt", _p$.a = _v$21);
|
|
1025
1062
|
return _p$;
|
|
1026
1063
|
}, {
|
|
1027
1064
|
e: void 0,
|
|
1028
1065
|
t: void 0,
|
|
1029
1066
|
a: void 0
|
|
1030
1067
|
});
|
|
1031
|
-
return _el$
|
|
1068
|
+
return _el$152;
|
|
1032
1069
|
})()
|
|
1033
1070
|
});
|
|
1034
1071
|
}
|
|
1035
1072
|
function IframeRenderer(props) {
|
|
1036
1073
|
const params = props.component.params;
|
|
1037
1074
|
return (() => {
|
|
1038
|
-
var _el$
|
|
1039
|
-
web.insert(_el$
|
|
1075
|
+
var _el$158 = web.getNextElement(_tmpl$36), _el$162 = _el$158.firstChild, [_el$163, _co$35] = web.getNextMarker(_el$162.nextSibling), _el$161 = _el$163.nextSibling;
|
|
1076
|
+
web.insert(_el$158, web.createComponent(solidJs.Show, {
|
|
1040
1077
|
get when() {
|
|
1041
1078
|
return params.title;
|
|
1042
1079
|
},
|
|
1043
1080
|
get children() {
|
|
1044
|
-
var _el$
|
|
1045
|
-
web.insert(_el$
|
|
1046
|
-
return _el$
|
|
1081
|
+
var _el$159 = web.getNextElement(_tmpl$35), _el$160 = _el$159.firstChild;
|
|
1082
|
+
web.insert(_el$160, () => params.title);
|
|
1083
|
+
return _el$159;
|
|
1047
1084
|
}
|
|
1048
|
-
}), _el$
|
|
1085
|
+
}), _el$163, _co$35);
|
|
1049
1086
|
web.effect((_p$) => {
|
|
1050
1087
|
var _v$22 = params.url, _v$23 = params.title || "Embedded content", _v$24 = `height: ${params.height || "400px"}; min-height: 300px;`, _v$25 = validation.getIframeSandbox(params.url);
|
|
1051
|
-
_v$22 !== _p$.e && web.setAttribute(_el$
|
|
1052
|
-
_v$23 !== _p$.t && web.setAttribute(_el$
|
|
1053
|
-
_p$.a = web.style(_el$
|
|
1054
|
-
_v$25 !== _p$.o && web.setAttribute(_el$
|
|
1088
|
+
_v$22 !== _p$.e && web.setAttribute(_el$161, "src", _p$.e = _v$22);
|
|
1089
|
+
_v$23 !== _p$.t && web.setAttribute(_el$161, "title", _p$.t = _v$23);
|
|
1090
|
+
_p$.a = web.style(_el$161, _v$24, _p$.a);
|
|
1091
|
+
_v$25 !== _p$.o && web.setAttribute(_el$161, "sandbox", _p$.o = _v$25);
|
|
1055
1092
|
return _p$;
|
|
1056
1093
|
}, {
|
|
1057
1094
|
e: void 0,
|
|
@@ -1059,30 +1096,30 @@ function IframeRenderer(props) {
|
|
|
1059
1096
|
a: void 0,
|
|
1060
1097
|
o: void 0
|
|
1061
1098
|
});
|
|
1062
|
-
return _el$
|
|
1099
|
+
return _el$158;
|
|
1063
1100
|
})();
|
|
1064
1101
|
}
|
|
1065
1102
|
function ImageRenderer(props) {
|
|
1066
1103
|
const params = props.component.params;
|
|
1067
1104
|
return (() => {
|
|
1068
|
-
var _el$
|
|
1069
|
-
web.insert(_el$
|
|
1105
|
+
var _el$164 = web.getNextElement(_tmpl$38), _el$165 = _el$164.firstChild, _el$166 = _el$165.firstChild, _el$167 = _el$166.firstChild, _el$170 = _el$165.nextSibling, [_el$171, _co$36] = web.getNextMarker(_el$170.nextSibling);
|
|
1106
|
+
web.insert(_el$164, web.createComponent(solidJs.Show, {
|
|
1070
1107
|
get when() {
|
|
1071
1108
|
return params.caption;
|
|
1072
1109
|
},
|
|
1073
1110
|
get children() {
|
|
1074
|
-
var _el$
|
|
1075
|
-
web.insert(_el$
|
|
1076
|
-
return _el$
|
|
1111
|
+
var _el$168 = web.getNextElement(_tmpl$37), _el$169 = _el$168.firstChild;
|
|
1112
|
+
web.insert(_el$169, () => params.caption);
|
|
1113
|
+
return _el$168;
|
|
1077
1114
|
}
|
|
1078
|
-
}), _el$
|
|
1115
|
+
}), _el$171, _co$36);
|
|
1079
1116
|
web.effect((_p$) => {
|
|
1080
1117
|
var _v$26 = `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$27 = params.url, _v$28 = `View full size: ${params.alt || "image"}`, _v$29 = params.url, _v$30 = params.alt || "Image";
|
|
1081
|
-
_v$26 !== _p$.e && web.className(_el$
|
|
1082
|
-
_v$27 !== _p$.t && web.setAttribute(_el$
|
|
1083
|
-
_v$28 !== _p$.a && web.setAttribute(_el$
|
|
1084
|
-
_v$29 !== _p$.o && web.setAttribute(_el$
|
|
1085
|
-
_v$30 !== _p$.i && web.setAttribute(_el$
|
|
1118
|
+
_v$26 !== _p$.e && web.className(_el$164, _p$.e = _v$26);
|
|
1119
|
+
_v$27 !== _p$.t && web.setAttribute(_el$166, "href", _p$.t = _v$27);
|
|
1120
|
+
_v$28 !== _p$.a && web.setAttribute(_el$166, "aria-label", _p$.a = _v$28);
|
|
1121
|
+
_v$29 !== _p$.o && web.setAttribute(_el$167, "src", _p$.o = _v$29);
|
|
1122
|
+
_v$30 !== _p$.i && web.setAttribute(_el$167, "alt", _p$.i = _v$30);
|
|
1086
1123
|
return _p$;
|
|
1087
1124
|
}, {
|
|
1088
1125
|
e: void 0,
|
|
@@ -1091,30 +1128,30 @@ function ImageRenderer(props) {
|
|
|
1091
1128
|
o: void 0,
|
|
1092
1129
|
i: void 0
|
|
1093
1130
|
});
|
|
1094
|
-
return _el$
|
|
1131
|
+
return _el$164;
|
|
1095
1132
|
})();
|
|
1096
1133
|
}
|
|
1097
1134
|
function LinkRenderer(props) {
|
|
1098
1135
|
const params = props.component.params;
|
|
1099
1136
|
return (() => {
|
|
1100
|
-
var _el$
|
|
1101
|
-
_el$
|
|
1102
|
-
web.insert(_el$
|
|
1103
|
-
web.insert(_el$
|
|
1137
|
+
var _el$172 = web.getNextElement(_tmpl$40), _el$173 = _el$172.firstChild, _el$174 = _el$173.nextSibling, _el$175 = _el$174.firstChild, _el$177 = _el$175.nextSibling, [_el$178, _co$37] = web.getNextMarker(_el$177.nextSibling);
|
|
1138
|
+
_el$172.$$click = (e) => e.stopPropagation();
|
|
1139
|
+
web.insert(_el$175, () => params.label || params.url);
|
|
1140
|
+
web.insert(_el$174, web.createComponent(solidJs.Show, {
|
|
1104
1141
|
get when() {
|
|
1105
1142
|
return params.description;
|
|
1106
1143
|
},
|
|
1107
1144
|
get children() {
|
|
1108
|
-
var _el$
|
|
1109
|
-
web.insert(_el$
|
|
1110
|
-
return _el$
|
|
1145
|
+
var _el$176 = web.getNextElement(_tmpl$39);
|
|
1146
|
+
web.insert(_el$176, () => params.description);
|
|
1147
|
+
return _el$176;
|
|
1111
1148
|
}
|
|
1112
|
-
}), _el$
|
|
1149
|
+
}), _el$178, _co$37);
|
|
1113
1150
|
web.effect((_p$) => {
|
|
1114
1151
|
var _v$31 = params.url, _v$32 = `${params.label || "Link"}: ${params.description || params.url} (opens in new tab)`, _v$33 = `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 || ""}`;
|
|
1115
|
-
_v$31 !== _p$.e && web.setAttribute(_el$
|
|
1116
|
-
_v$32 !== _p$.t && web.setAttribute(_el$
|
|
1117
|
-
_v$33 !== _p$.a && web.className(_el$
|
|
1152
|
+
_v$31 !== _p$.e && web.setAttribute(_el$172, "href", _p$.e = _v$31);
|
|
1153
|
+
_v$32 !== _p$.t && web.setAttribute(_el$172, "aria-label", _p$.t = _v$32);
|
|
1154
|
+
_v$33 !== _p$.a && web.className(_el$172, _p$.a = _v$33);
|
|
1118
1155
|
return _p$;
|
|
1119
1156
|
}, {
|
|
1120
1157
|
e: void 0,
|
|
@@ -1122,11 +1159,11 @@ function LinkRenderer(props) {
|
|
|
1122
1159
|
a: void 0
|
|
1123
1160
|
});
|
|
1124
1161
|
web.runHydrationEvents();
|
|
1125
|
-
return _el$
|
|
1162
|
+
return _el$172;
|
|
1126
1163
|
})();
|
|
1127
1164
|
}
|
|
1128
1165
|
function ComponentRenderer(props) {
|
|
1129
|
-
var _a, _b, _c, _d, _e, _f;
|
|
1166
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
1130
1167
|
perf.markRenderStart(props.component.id);
|
|
1131
1168
|
const telemetry = MCPUITelemetryContext.useTelemetry();
|
|
1132
1169
|
solidJs.onMount(() => {
|
|
@@ -1184,21 +1221,28 @@ function ComponentRenderer(props) {
|
|
|
1184
1221
|
}
|
|
1185
1222
|
const mode = props.errorMode ?? "block";
|
|
1186
1223
|
const firstError = ((_f = (_e = validation$1.errors) == null ? void 0 : _e[0]) == null ? void 0 : _f.message) || "Unknown validation error";
|
|
1224
|
+
if ((_g = validation$1.errors) == null ? void 0 : _g.some((e) => e.code === "UNKNOWN_COMPONENT_TYPE")) {
|
|
1225
|
+
return web.createComponent(UnsupportedComponentFallback, {
|
|
1226
|
+
get component() {
|
|
1227
|
+
return props.component;
|
|
1228
|
+
}
|
|
1229
|
+
});
|
|
1230
|
+
}
|
|
1187
1231
|
if (mode === "silent") {
|
|
1188
1232
|
return null;
|
|
1189
1233
|
}
|
|
1190
1234
|
if (mode === "inline-warn") {
|
|
1191
1235
|
return (() => {
|
|
1192
|
-
var _el$
|
|
1193
|
-
web.setAttribute(_el$
|
|
1194
|
-
web.insert(_el$
|
|
1195
|
-
return _el$
|
|
1236
|
+
var _el$179 = web.getNextElement(_tmpl$41), _el$180 = _el$179.firstChild, _el$181 = _el$180.nextSibling, _el$182 = _el$181.firstChild, _el$183 = _el$182.nextSibling, [_el$184, _co$38] = web.getNextMarker(_el$183.nextSibling);
|
|
1237
|
+
web.setAttribute(_el$179, "title", firstError);
|
|
1238
|
+
web.insert(_el$181, () => props.component.type, _el$184, _co$38);
|
|
1239
|
+
return _el$179;
|
|
1196
1240
|
})();
|
|
1197
1241
|
}
|
|
1198
1242
|
return (() => {
|
|
1199
|
-
var _el$
|
|
1200
|
-
web.insert(_el$
|
|
1201
|
-
return _el$
|
|
1243
|
+
var _el$185 = web.getNextElement(_tmpl$42), _el$186 = _el$185.firstChild, _el$187 = _el$186.nextSibling;
|
|
1244
|
+
web.insert(_el$187, firstError);
|
|
1245
|
+
return _el$185;
|
|
1202
1246
|
})();
|
|
1203
1247
|
}
|
|
1204
1248
|
return web.createComponent(GenerativeUIErrorBoundary.GenerativeUIErrorBoundary, {
|
|
@@ -1227,6 +1271,9 @@ function ComponentRenderer(props) {
|
|
|
1227
1271
|
},
|
|
1228
1272
|
get toolbarVariant() {
|
|
1229
1273
|
return props.toolbarVariant;
|
|
1274
|
+
},
|
|
1275
|
+
get allowQuickchartFallback() {
|
|
1276
|
+
return props.allowQuickchartFallback;
|
|
1230
1277
|
}
|
|
1231
1278
|
});
|
|
1232
1279
|
}
|
|
@@ -1460,10 +1507,28 @@ function ComponentRenderer(props) {
|
|
|
1460
1507
|
}
|
|
1461
1508
|
});
|
|
1462
1509
|
}
|
|
1510
|
+
}), web.createComponent(solidJs.Show, {
|
|
1511
|
+
get when() {
|
|
1512
|
+
return props.component.type === "footer";
|
|
1513
|
+
},
|
|
1514
|
+
get children() {
|
|
1515
|
+
return web.createComponent(FooterRenderer.FooterRenderer, {
|
|
1516
|
+
get params() {
|
|
1517
|
+
return props.component.params;
|
|
1518
|
+
}
|
|
1519
|
+
});
|
|
1520
|
+
}
|
|
1463
1521
|
})];
|
|
1464
1522
|
}
|
|
1465
1523
|
});
|
|
1466
1524
|
}
|
|
1525
|
+
function UnsupportedComponentFallback(props) {
|
|
1526
|
+
return (() => {
|
|
1527
|
+
var _el$188 = web.getNextElement(_tmpl$43), _el$189 = _el$188.firstChild, _el$190 = _el$189.nextSibling;
|
|
1528
|
+
web.insert(_el$190, () => props.component.type);
|
|
1529
|
+
return _el$188;
|
|
1530
|
+
})();
|
|
1531
|
+
}
|
|
1467
1532
|
function ActionRenderer(props) {
|
|
1468
1533
|
const params = props.component.params;
|
|
1469
1534
|
const {
|
|
@@ -1501,27 +1566,27 @@ function ActionRenderer(props) {
|
|
|
1501
1566
|
const isDisabled = () => params.disabled || isExecutable() && isExecuting();
|
|
1502
1567
|
if (params.type === "link" || params.action === "link") {
|
|
1503
1568
|
return (() => {
|
|
1504
|
-
var _el$
|
|
1505
|
-
_el$
|
|
1506
|
-
web.insert(_el$
|
|
1569
|
+
var _el$191 = web.getNextElement(_tmpl$45), _el$193 = _el$191.firstChild, [_el$194, _co$39] = web.getNextMarker(_el$193.nextSibling), _el$195 = _el$194.nextSibling, [_el$196, _co$40] = web.getNextMarker(_el$195.nextSibling);
|
|
1570
|
+
_el$191.$$click = handleClick;
|
|
1571
|
+
web.insert(_el$191, web.createComponent(solidJs.Show, {
|
|
1507
1572
|
get when() {
|
|
1508
1573
|
return params.icon;
|
|
1509
1574
|
},
|
|
1510
1575
|
get children() {
|
|
1511
|
-
var _el$
|
|
1512
|
-
web.insert(_el$
|
|
1513
|
-
return _el$
|
|
1576
|
+
var _el$192 = web.getNextElement(_tmpl$44);
|
|
1577
|
+
web.insert(_el$192, () => params.icon);
|
|
1578
|
+
return _el$192;
|
|
1514
1579
|
}
|
|
1515
|
-
}), _el$
|
|
1516
|
-
web.insert(_el$
|
|
1580
|
+
}), _el$194, _co$39);
|
|
1581
|
+
web.insert(_el$191, () => params.label, _el$196, _co$40);
|
|
1517
1582
|
web.effect((_p$) => {
|
|
1518
1583
|
var _v$34 = params.url || "#", _v$35 = params.url ? "_blank" : void 0, _v$36 = params.ariaLabel || params.label, _v$37 = `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
|
|
1519
1584
|
${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"}
|
|
1520
1585
|
${params.className || ""}`;
|
|
1521
|
-
_v$34 !== _p$.e && web.setAttribute(_el$
|
|
1522
|
-
_v$35 !== _p$.t && web.setAttribute(_el$
|
|
1523
|
-
_v$36 !== _p$.a && web.setAttribute(_el$
|
|
1524
|
-
_v$37 !== _p$.o && web.className(_el$
|
|
1586
|
+
_v$34 !== _p$.e && web.setAttribute(_el$191, "href", _p$.e = _v$34);
|
|
1587
|
+
_v$35 !== _p$.t && web.setAttribute(_el$191, "target", _p$.t = _v$35);
|
|
1588
|
+
_v$36 !== _p$.a && web.setAttribute(_el$191, "aria-label", _p$.a = _v$36);
|
|
1589
|
+
_v$37 !== _p$.o && web.className(_el$191, _p$.o = _v$37);
|
|
1525
1590
|
return _p$;
|
|
1526
1591
|
}, {
|
|
1527
1592
|
e: void 0,
|
|
@@ -1530,41 +1595,41 @@ function ActionRenderer(props) {
|
|
|
1530
1595
|
o: void 0
|
|
1531
1596
|
});
|
|
1532
1597
|
web.runHydrationEvents();
|
|
1533
|
-
return _el$
|
|
1598
|
+
return _el$191;
|
|
1534
1599
|
})();
|
|
1535
1600
|
}
|
|
1536
1601
|
return (() => {
|
|
1537
|
-
var _el$
|
|
1538
|
-
_el$
|
|
1539
|
-
web.insert(_el$
|
|
1602
|
+
var _el$197 = web.getNextElement(_tmpl$47), _el$200 = _el$197.firstChild, [_el$201, _co$41] = web.getNextMarker(_el$200.nextSibling), _el$202 = _el$201.nextSibling, [_el$203, _co$42] = web.getNextMarker(_el$202.nextSibling), _el$204 = _el$203.nextSibling, [_el$205, _co$43] = web.getNextMarker(_el$204.nextSibling);
|
|
1603
|
+
_el$197.$$click = handleClick;
|
|
1604
|
+
web.insert(_el$197, web.createComponent(solidJs.Show, {
|
|
1540
1605
|
get when() {
|
|
1541
1606
|
return web.memo(() => !!isExecuting())() && isExecutable();
|
|
1542
1607
|
},
|
|
1543
1608
|
get children() {
|
|
1544
|
-
return web.getNextElement(_tmpl$
|
|
1609
|
+
return web.getNextElement(_tmpl$46);
|
|
1545
1610
|
}
|
|
1546
|
-
}), _el$
|
|
1547
|
-
web.insert(_el$
|
|
1611
|
+
}), _el$201, _co$41);
|
|
1612
|
+
web.insert(_el$197, web.createComponent(solidJs.Show, {
|
|
1548
1613
|
get when() {
|
|
1549
1614
|
return web.memo(() => !!params.icon)() && !(isExecuting() && isExecutable());
|
|
1550
1615
|
},
|
|
1551
1616
|
get children() {
|
|
1552
|
-
var _el$
|
|
1553
|
-
web.insert(_el$
|
|
1554
|
-
return _el$
|
|
1617
|
+
var _el$199 = web.getNextElement(_tmpl$44);
|
|
1618
|
+
web.insert(_el$199, () => params.icon);
|
|
1619
|
+
return _el$199;
|
|
1555
1620
|
}
|
|
1556
|
-
}), _el$
|
|
1557
|
-
web.insert(_el$
|
|
1621
|
+
}), _el$203, _co$42);
|
|
1622
|
+
web.insert(_el$197, () => params.label, _el$205, _co$43);
|
|
1558
1623
|
web.effect((_p$) => {
|
|
1559
1624
|
var _v$38 = isDisabled(), _v$39 = isExecuting() && isExecutable(), _v$40 = params.ariaLabel || params.label, _v$41 = `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
|
|
1560
1625
|
${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"}
|
|
1561
1626
|
${isDisabled() ? "opacity-50 cursor-not-allowed" : ""}
|
|
1562
1627
|
${params.size === "sm" ? "px-3 py-1.5 text-xs" : params.size === "lg" ? "px-6 py-3 text-base" : ""}
|
|
1563
1628
|
${params.className || ""}`;
|
|
1564
|
-
_v$38 !== _p$.e && web.setProperty(_el$
|
|
1565
|
-
_v$39 !== _p$.t && web.setAttribute(_el$
|
|
1566
|
-
_v$40 !== _p$.a && web.setAttribute(_el$
|
|
1567
|
-
_v$41 !== _p$.o && web.className(_el$
|
|
1629
|
+
_v$38 !== _p$.e && web.setProperty(_el$197, "disabled", _p$.e = _v$38);
|
|
1630
|
+
_v$39 !== _p$.t && web.setAttribute(_el$197, "aria-busy", _p$.t = _v$39);
|
|
1631
|
+
_v$40 !== _p$.a && web.setAttribute(_el$197, "aria-label", _p$.a = _v$40);
|
|
1632
|
+
_v$41 !== _p$.o && web.className(_el$197, _p$.o = _v$41);
|
|
1568
1633
|
return _p$;
|
|
1569
1634
|
}, {
|
|
1570
1635
|
e: void 0,
|
|
@@ -1573,7 +1638,7 @@ function ActionRenderer(props) {
|
|
|
1573
1638
|
o: void 0
|
|
1574
1639
|
});
|
|
1575
1640
|
web.runHydrationEvents();
|
|
1576
|
-
return _el$
|
|
1641
|
+
return _el$197;
|
|
1577
1642
|
})();
|
|
1578
1643
|
}
|
|
1579
1644
|
function ErrorCardRenderer(props) {
|
|
@@ -1581,55 +1646,55 @@ function ErrorCardRenderer(props) {
|
|
|
1581
1646
|
return `Error in ${props.error.tool || "unknown tool"}: ${props.error.message || "Unknown error"}`;
|
|
1582
1647
|
};
|
|
1583
1648
|
return (() => {
|
|
1584
|
-
var _el$
|
|
1585
|
-
web.insert(_el$
|
|
1649
|
+
var _el$206 = web.getNextElement(_tmpl$51), _el$229 = _el$206.firstChild, [_el$230, _co$49] = web.getNextMarker(_el$229.nextSibling), _el$207 = _el$230.nextSibling, _el$208 = _el$207.firstChild, _el$209 = _el$208.nextSibling, _el$210 = _el$209.firstChild, _el$211 = _el$210.firstChild, _el$212 = _el$211.nextSibling, [_el$213, _co$44] = web.getNextMarker(_el$212.nextSibling), _el$214 = _el$210.nextSibling, _el$223 = _el$214.nextSibling, [_el$224, _co$46] = web.getNextMarker(_el$223.nextSibling), _el$225 = _el$224.nextSibling, [_el$226, _co$47] = web.getNextMarker(_el$225.nextSibling), _el$227 = _el$226.nextSibling, [_el$228, _co$48] = web.getNextMarker(_el$227.nextSibling);
|
|
1650
|
+
web.insert(_el$206, web.createComponent(CopyButton, {
|
|
1586
1651
|
getText: getErrorText,
|
|
1587
1652
|
title: "Copy error details",
|
|
1588
1653
|
position: "top-right"
|
|
1589
|
-
}), _el$
|
|
1590
|
-
web.insert(_el$
|
|
1591
|
-
web.insert(_el$
|
|
1592
|
-
web.insert(_el$
|
|
1654
|
+
}), _el$230, _co$49);
|
|
1655
|
+
web.insert(_el$210, () => props.error.tool || "Unknown", _el$213, _co$44);
|
|
1656
|
+
web.insert(_el$214, () => props.error.message || "An error occurred during tool execution");
|
|
1657
|
+
web.insert(_el$209, web.createComponent(solidJs.Show, {
|
|
1593
1658
|
get when() {
|
|
1594
1659
|
return props.error.type;
|
|
1595
1660
|
},
|
|
1596
1661
|
get children() {
|
|
1597
|
-
var _el$
|
|
1598
|
-
web.insert(_el$
|
|
1599
|
-
return _el$
|
|
1662
|
+
var _el$215 = web.getNextElement(_tmpl$48), _el$216 = _el$215.firstChild, _el$217 = _el$216.nextSibling, [_el$218, _co$45] = web.getNextMarker(_el$217.nextSibling);
|
|
1663
|
+
web.insert(_el$215, () => props.error.type, _el$218, _co$45);
|
|
1664
|
+
return _el$215;
|
|
1600
1665
|
}
|
|
1601
|
-
}), _el$
|
|
1602
|
-
web.insert(_el$
|
|
1666
|
+
}), _el$224, _co$46);
|
|
1667
|
+
web.insert(_el$209, web.createComponent(solidJs.Show, {
|
|
1603
1668
|
get when() {
|
|
1604
1669
|
var _a;
|
|
1605
1670
|
return (_a = props.error.suggestions) == null ? void 0 : _a.length;
|
|
1606
1671
|
},
|
|
1607
1672
|
get children() {
|
|
1608
|
-
var _el$
|
|
1609
|
-
web.insert(_el$
|
|
1673
|
+
var _el$219 = web.getNextElement(_tmpl$49), _el$220 = _el$219.firstChild, _el$221 = _el$220.nextSibling;
|
|
1674
|
+
web.insert(_el$221, web.createComponent(solidJs.For, {
|
|
1610
1675
|
get each() {
|
|
1611
1676
|
return props.error.suggestions;
|
|
1612
1677
|
},
|
|
1613
1678
|
children: (suggestion) => (() => {
|
|
1614
|
-
var _el$
|
|
1615
|
-
web.insert(_el$
|
|
1616
|
-
return _el$
|
|
1679
|
+
var _el$231 = web.getNextElement(_tmpl$52);
|
|
1680
|
+
web.insert(_el$231, suggestion);
|
|
1681
|
+
return _el$231;
|
|
1617
1682
|
})()
|
|
1618
1683
|
}));
|
|
1619
|
-
return _el$
|
|
1684
|
+
return _el$219;
|
|
1620
1685
|
}
|
|
1621
|
-
}), _el$
|
|
1622
|
-
web.insert(_el$
|
|
1686
|
+
}), _el$226, _co$47);
|
|
1687
|
+
web.insert(_el$209, web.createComponent(solidJs.Show, {
|
|
1623
1688
|
get when() {
|
|
1624
1689
|
return props.error.timestamp;
|
|
1625
1690
|
},
|
|
1626
1691
|
get children() {
|
|
1627
|
-
var _el$
|
|
1628
|
-
web.insert(_el$
|
|
1629
|
-
return _el$
|
|
1692
|
+
var _el$222 = web.getNextElement(_tmpl$50);
|
|
1693
|
+
web.insert(_el$222, () => new Date(props.error.timestamp).toLocaleString());
|
|
1694
|
+
return _el$222;
|
|
1630
1695
|
}
|
|
1631
|
-
}), _el$
|
|
1632
|
-
return _el$
|
|
1696
|
+
}), _el$228, _co$48);
|
|
1697
|
+
return _el$206;
|
|
1633
1698
|
})();
|
|
1634
1699
|
}
|
|
1635
1700
|
function isErrorResponse(content) {
|
|
@@ -1652,20 +1717,20 @@ function UIResourceHtmlRenderer(props) {
|
|
|
1652
1717
|
return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || ((_b = props.resource.uri) == null ? void 0 : _b.replace("ui://deposium/", "")) || "Resource";
|
|
1653
1718
|
};
|
|
1654
1719
|
return (() => {
|
|
1655
|
-
var _el$
|
|
1656
|
-
web.insert(_el$
|
|
1720
|
+
var _el$232 = web.getNextElement(_tmpl$54), _el$236 = _el$232.firstChild, [_el$237, _co$50] = web.getNextMarker(_el$236.nextSibling), _el$235 = _el$237.nextSibling;
|
|
1721
|
+
web.insert(_el$232, web.createComponent(solidJs.Show, {
|
|
1657
1722
|
get when() {
|
|
1658
1723
|
var _a;
|
|
1659
1724
|
return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || props.resource.uri;
|
|
1660
1725
|
},
|
|
1661
1726
|
get children() {
|
|
1662
|
-
var _el$
|
|
1663
|
-
web.insert(_el$
|
|
1664
|
-
return _el$
|
|
1727
|
+
var _el$233 = web.getNextElement(_tmpl$53), _el$234 = _el$233.firstChild;
|
|
1728
|
+
web.insert(_el$234, resourceTitle);
|
|
1729
|
+
return _el$233;
|
|
1665
1730
|
}
|
|
1666
|
-
}), _el$
|
|
1667
|
-
web.effect(() => web.setProperty(_el$
|
|
1668
|
-
return _el$
|
|
1731
|
+
}), _el$237, _co$50);
|
|
1732
|
+
web.effect(() => web.setProperty(_el$235, "innerHTML", htmlContent()));
|
|
1733
|
+
return _el$232;
|
|
1669
1734
|
})();
|
|
1670
1735
|
}
|
|
1671
1736
|
const UIResourceRenderer = (props) => {
|
|
@@ -1763,13 +1828,16 @@ const UIResourceRenderer = (props) => {
|
|
|
1763
1828
|
},
|
|
1764
1829
|
get toolbarVariant() {
|
|
1765
1830
|
return props.toolbarVariant;
|
|
1831
|
+
},
|
|
1832
|
+
get allowQuickchartFallback() {
|
|
1833
|
+
return props.allowQuickchartFallback;
|
|
1766
1834
|
}
|
|
1767
1835
|
});
|
|
1768
1836
|
return web.createComponent(RenderContext.RenderProvider, {
|
|
1769
1837
|
renderComponent,
|
|
1770
1838
|
get children() {
|
|
1771
|
-
var _el$
|
|
1772
|
-
web.spread(_el$
|
|
1839
|
+
var _el$238 = web.getNextElement(_tmpl$55), _el$239 = _el$238.firstChild, _el$240 = _el$239.nextSibling, [_el$241, _co$51] = web.getNextMarker(_el$240.nextSibling);
|
|
1840
|
+
web.spread(_el$238, web.mergeProps({
|
|
1773
1841
|
get ["class"]() {
|
|
1774
1842
|
return `w-full ${props.class || ""}`;
|
|
1775
1843
|
}
|
|
@@ -1778,13 +1846,13 @@ const UIResourceRenderer = (props) => {
|
|
|
1778
1846
|
} : {
|
|
1779
1847
|
"data-mcp-ui-component-id": outerKey()
|
|
1780
1848
|
}), false, true);
|
|
1781
|
-
web.insert(_el$
|
|
1849
|
+
web.insert(_el$239, web.createComponent(solidJs.For, {
|
|
1782
1850
|
get each() {
|
|
1783
1851
|
return layoutData.components;
|
|
1784
1852
|
},
|
|
1785
1853
|
children: (component) => (() => {
|
|
1786
|
-
var _el$
|
|
1787
|
-
web.insert(_el$
|
|
1854
|
+
var _el$242 = web.getNextElement(_tmpl$56);
|
|
1855
|
+
web.insert(_el$242, web.createComponent(ComponentRenderer, {
|
|
1788
1856
|
component,
|
|
1789
1857
|
get onError() {
|
|
1790
1858
|
return props.onError;
|
|
@@ -1794,21 +1862,24 @@ const UIResourceRenderer = (props) => {
|
|
|
1794
1862
|
},
|
|
1795
1863
|
get toolbarVariant() {
|
|
1796
1864
|
return props.toolbarVariant;
|
|
1865
|
+
},
|
|
1866
|
+
get allowQuickchartFallback() {
|
|
1867
|
+
return props.allowQuickchartFallback;
|
|
1797
1868
|
}
|
|
1798
1869
|
}));
|
|
1799
1870
|
web.effect((_p$) => {
|
|
1800
1871
|
var _v$42 = getGridStyleString(component), _v$43 = stableKey.getUiResourceStableKey(component);
|
|
1801
|
-
_p$.e = web.style(_el$
|
|
1802
|
-
_v$43 !== _p$.t && web.setAttribute(_el$
|
|
1872
|
+
_p$.e = web.style(_el$242, _v$42, _p$.e);
|
|
1873
|
+
_v$43 !== _p$.t && web.setAttribute(_el$242, "data-mcp-ui-component-id", _p$.t = _v$43);
|
|
1803
1874
|
return _p$;
|
|
1804
1875
|
}, {
|
|
1805
1876
|
e: void 0,
|
|
1806
1877
|
t: void 0
|
|
1807
1878
|
});
|
|
1808
|
-
return _el$
|
|
1879
|
+
return _el$242;
|
|
1809
1880
|
})()
|
|
1810
1881
|
}));
|
|
1811
|
-
web.insert(_el$
|
|
1882
|
+
web.insert(_el$238, web.createComponent(solidJs.Show, {
|
|
1812
1883
|
get when() {
|
|
1813
1884
|
return shouldShowAutoFooter();
|
|
1814
1885
|
},
|
|
@@ -1819,10 +1890,10 @@ const UIResourceRenderer = (props) => {
|
|
|
1819
1890
|
}
|
|
1820
1891
|
});
|
|
1821
1892
|
}
|
|
1822
|
-
}), _el$
|
|
1823
|
-
web.effect((_$p) => web.style(_el$
|
|
1893
|
+
}), _el$241, _co$51);
|
|
1894
|
+
web.effect((_$p) => web.style(_el$239, gridContainerStyle(), _$p));
|
|
1824
1895
|
web.runHydrationEvents();
|
|
1825
|
-
return _el$
|
|
1896
|
+
return _el$238;
|
|
1826
1897
|
}
|
|
1827
1898
|
});
|
|
1828
1899
|
};
|