@seed-ship/mcp-ui-solid 6.19.1 → 6.21.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 +663 -0
- package/README.md +911 -4
- package/dist/adapters/connector.cjs +15 -4
- package/dist/adapters/connector.cjs.map +1 -1
- package/dist/adapters/connector.d.ts +38 -0
- package/dist/adapters/connector.d.ts.map +1 -1
- package/dist/adapters/connector.js +15 -4
- package/dist/adapters/connector.js.map +1 -1
- package/dist/adapters/index.d.ts +4 -3
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/macro-run.cjs +25 -13
- package/dist/adapters/macro-run.cjs.map +1 -1
- package/dist/adapters/macro-run.d.ts +37 -2
- package/dist/adapters/macro-run.d.ts.map +1 -1
- package/dist/adapters/macro-run.js +25 -13
- package/dist/adapters/macro-run.js.map +1 -1
- package/dist/adapters.cjs +2 -0
- package/dist/adapters.cjs.map +1 -1
- package/dist/adapters.js +4 -2
- package/dist/components/ActionGroupRenderer.cjs +3 -1
- package/dist/components/ActionGroupRenderer.cjs.map +1 -1
- package/dist/components/ActionGroupRenderer.d.ts.map +1 -1
- package/dist/components/ActionGroupRenderer.js +3 -1
- package/dist/components/ActionGroupRenderer.js.map +1 -1
- package/dist/components/AgentCard.cjs +11 -8
- package/dist/components/AgentCard.cjs.map +1 -1
- package/dist/components/AgentCard.d.ts.map +1 -1
- package/dist/components/AgentCard.js +11 -8
- package/dist/components/AgentCard.js.map +1 -1
- package/dist/components/AgentHandoff.cjs +6 -1
- package/dist/components/AgentHandoff.cjs.map +1 -1
- package/dist/components/AgentHandoff.d.ts.map +1 -1
- package/dist/components/AgentHandoff.js +6 -1
- package/dist/components/AgentHandoff.js.map +1 -1
- package/dist/components/ArtifactRenderer.cjs +25 -6
- package/dist/components/ArtifactRenderer.cjs.map +1 -1
- package/dist/components/ArtifactRenderer.d.ts.map +1 -1
- package/dist/components/ArtifactRenderer.js +25 -6
- package/dist/components/ArtifactRenderer.js.map +1 -1
- package/dist/components/AutocompleteDropdown.cjs +30 -24
- package/dist/components/AutocompleteDropdown.cjs.map +1 -1
- package/dist/components/AutocompleteDropdown.d.ts.map +1 -1
- package/dist/components/AutocompleteDropdown.js +30 -24
- package/dist/components/AutocompleteDropdown.js.map +1 -1
- package/dist/components/AutocompleteFormField.cjs +3 -1
- package/dist/components/AutocompleteFormField.cjs.map +1 -1
- package/dist/components/AutocompleteFormField.d.ts.map +1 -1
- package/dist/components/AutocompleteFormField.js +4 -2
- package/dist/components/AutocompleteFormField.js.map +1 -1
- package/dist/components/BriefingDiff.cjs +45 -39
- package/dist/components/BriefingDiff.cjs.map +1 -1
- package/dist/components/BriefingDiff.d.ts.map +1 -1
- package/dist/components/BriefingDiff.js +45 -39
- package/dist/components/BriefingDiff.js.map +1 -1
- package/dist/components/CarouselRenderer.cjs +8 -2
- package/dist/components/CarouselRenderer.cjs.map +1 -1
- package/dist/components/CarouselRenderer.d.ts.map +1 -1
- package/dist/components/CarouselRenderer.js +8 -2
- package/dist/components/CarouselRenderer.js.map +1 -1
- package/dist/components/ChartJSRenderer.cjs +60 -36
- package/dist/components/ChartJSRenderer.cjs.map +1 -1
- package/dist/components/ChartJSRenderer.d.ts.map +1 -1
- package/dist/components/ChartJSRenderer.js +61 -37
- package/dist/components/ChartJSRenderer.js.map +1 -1
- package/dist/components/ChatPrompt.cjs +15 -9
- package/dist/components/ChatPrompt.cjs.map +1 -1
- package/dist/components/ChatPrompt.d.ts.map +1 -1
- package/dist/components/ChatPrompt.js +15 -9
- package/dist/components/ChatPrompt.js.map +1 -1
- package/dist/components/CodeBlockRenderer.cjs +34 -16
- package/dist/components/CodeBlockRenderer.cjs.map +1 -1
- package/dist/components/CodeBlockRenderer.d.ts.map +1 -1
- package/dist/components/CodeBlockRenderer.js +34 -16
- package/dist/components/CodeBlockRenderer.js.map +1 -1
- package/dist/components/DataPreviewSection.cjs +91 -44
- package/dist/components/DataPreviewSection.cjs.map +1 -1
- package/dist/components/DataPreviewSection.d.ts.map +1 -1
- package/dist/components/DataPreviewSection.js +92 -45
- package/dist/components/DataPreviewSection.js.map +1 -1
- package/dist/components/DegradedFallback.cjs +20 -16
- package/dist/components/DegradedFallback.cjs.map +1 -1
- package/dist/components/DegradedFallback.d.ts.map +1 -1
- package/dist/components/DegradedFallback.js +20 -16
- package/dist/components/DegradedFallback.js.map +1 -1
- package/dist/components/FooterRenderer.cjs +21 -17
- package/dist/components/FooterRenderer.cjs.map +1 -1
- package/dist/components/FooterRenderer.d.ts.map +1 -1
- package/dist/components/FooterRenderer.js +21 -17
- package/dist/components/FooterRenderer.js.map +1 -1
- package/dist/components/FormFieldRenderer.cjs +116 -93
- package/dist/components/FormFieldRenderer.cjs.map +1 -1
- package/dist/components/FormFieldRenderer.d.ts.map +1 -1
- package/dist/components/FormFieldRenderer.js +116 -93
- package/dist/components/FormFieldRenderer.js.map +1 -1
- package/dist/components/FormRenderer.cjs +55 -31
- package/dist/components/FormRenderer.cjs.map +1 -1
- package/dist/components/FormRenderer.d.ts.map +1 -1
- package/dist/components/FormRenderer.js +55 -31
- package/dist/components/FormRenderer.js.map +1 -1
- package/dist/components/GenerativeUIErrorBoundary.cjs +20 -15
- package/dist/components/GenerativeUIErrorBoundary.cjs.map +1 -1
- package/dist/components/GenerativeUIErrorBoundary.d.ts.map +1 -1
- package/dist/components/GenerativeUIErrorBoundary.js +20 -15
- package/dist/components/GenerativeUIErrorBoundary.js.map +1 -1
- package/dist/components/GraphRenderer.cjs +56 -33
- package/dist/components/GraphRenderer.cjs.map +1 -1
- package/dist/components/GraphRenderer.d.ts.map +1 -1
- package/dist/components/GraphRenderer.js +56 -33
- package/dist/components/GraphRenderer.js.map +1 -1
- package/dist/components/IframeFallbackLink.cjs +37 -0
- package/dist/components/IframeFallbackLink.cjs.map +1 -0
- package/dist/components/IframeFallbackLink.d.ts +23 -0
- package/dist/components/IframeFallbackLink.d.ts.map +1 -0
- package/dist/components/IframeFallbackLink.js +37 -0
- package/dist/components/IframeFallbackLink.js.map +1 -0
- package/dist/components/ImageGalleryRenderer.cjs +13 -4
- package/dist/components/ImageGalleryRenderer.cjs.map +1 -1
- package/dist/components/ImageGalleryRenderer.d.ts.map +1 -1
- package/dist/components/ImageGalleryRenderer.js +13 -4
- package/dist/components/ImageGalleryRenderer.js.map +1 -1
- package/dist/components/LightboxOverlay.cjs +16 -8
- package/dist/components/LightboxOverlay.cjs.map +1 -1
- package/dist/components/LightboxOverlay.d.ts.map +1 -1
- package/dist/components/LightboxOverlay.js +17 -9
- package/dist/components/LightboxOverlay.js.map +1 -1
- package/dist/components/MapRenderer.cjs +59 -29
- package/dist/components/MapRenderer.cjs.map +1 -1
- package/dist/components/MapRenderer.d.ts +10 -2
- package/dist/components/MapRenderer.d.ts.map +1 -1
- package/dist/components/MapRenderer.js +60 -30
- package/dist/components/MapRenderer.js.map +1 -1
- package/dist/components/ModalRenderer.cjs +4 -1
- package/dist/components/ModalRenderer.cjs.map +1 -1
- package/dist/components/ModalRenderer.d.ts.map +1 -1
- package/dist/components/ModalRenderer.js +5 -2
- package/dist/components/ModalRenderer.js.map +1 -1
- package/dist/components/ScratchpadPanel.cjs +578 -535
- package/dist/components/ScratchpadPanel.cjs.map +1 -1
- package/dist/components/ScratchpadPanel.d.ts.map +1 -1
- package/dist/components/ScratchpadPanel.js +578 -535
- package/dist/components/ScratchpadPanel.js.map +1 -1
- package/dist/components/StreamingUIRenderer.cjs +92 -28
- package/dist/components/StreamingUIRenderer.cjs.map +1 -1
- package/dist/components/StreamingUIRenderer.d.ts.map +1 -1
- package/dist/components/StreamingUIRenderer.js +92 -28
- package/dist/components/StreamingUIRenderer.js.map +1 -1
- package/dist/components/UIResourceRenderer.cjs +481 -365
- package/dist/components/UIResourceRenderer.cjs.map +1 -1
- package/dist/components/UIResourceRenderer.d.ts +21 -0
- package/dist/components/UIResourceRenderer.d.ts.map +1 -1
- package/dist/components/UIResourceRenderer.js +484 -368
- package/dist/components/UIResourceRenderer.js.map +1 -1
- package/dist/components/VerifiedText.cjs +39 -20
- package/dist/components/VerifiedText.cjs.map +1 -1
- package/dist/components/VerifiedText.d.ts +2 -1
- package/dist/components/VerifiedText.d.ts.map +1 -1
- package/dist/components/VerifiedText.js +39 -20
- package/dist/components/VerifiedText.js.map +1 -1
- package/dist/components/VideoRenderer.cjs +51 -20
- package/dist/components/VideoRenderer.cjs.map +1 -1
- package/dist/components/VideoRenderer.d.ts.map +1 -1
- package/dist/components/VideoRenderer.js +51 -20
- package/dist/components/VideoRenderer.js.map +1 -1
- package/dist/components/chart-data-table.cjs +38 -17
- package/dist/components/chart-data-table.cjs.map +1 -1
- package/dist/components/chart-data-table.d.ts +30 -1
- package/dist/components/chart-data-table.d.ts.map +1 -1
- package/dist/components/chart-data-table.js +38 -17
- package/dist/components/chart-data-table.js.map +1 -1
- package/dist/context/MCPActionContext.cjs +3 -1
- package/dist/context/MCPActionContext.cjs.map +1 -1
- package/dist/context/MCPActionContext.d.ts.map +1 -1
- package/dist/context/MCPActionContext.js +3 -1
- package/dist/context/MCPActionContext.js.map +1 -1
- package/dist/context/MCPUIConfigContext.cjs +29 -0
- package/dist/context/MCPUIConfigContext.cjs.map +1 -0
- package/dist/context/MCPUIConfigContext.d.ts +124 -0
- package/dist/context/MCPUIConfigContext.d.ts.map +1 -0
- package/dist/context/MCPUIConfigContext.js +29 -0
- package/dist/context/MCPUIConfigContext.js.map +1 -0
- package/dist/context/MCPUIStringsContext.cjs +287 -2
- package/dist/context/MCPUIStringsContext.cjs.map +1 -1
- package/dist/context/MCPUIStringsContext.d.ts +607 -3
- package/dist/context/MCPUIStringsContext.d.ts.map +1 -1
- package/dist/context/MCPUIStringsContext.js +287 -2
- package/dist/context/MCPUIStringsContext.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useStreamingUI.cjs +28 -10
- package/dist/hooks/useStreamingUI.cjs.map +1 -1
- package/dist/hooks/useStreamingUI.d.ts +37 -0
- package/dist/hooks/useStreamingUI.d.ts.map +1 -1
- package/dist/hooks/useStreamingUI.js +28 -10
- package/dist/hooks/useStreamingUI.js.map +1 -1
- package/dist/hooks.cjs +1 -0
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.js +2 -1
- package/dist/index.cjs +29 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -4
- package/dist/index.d.ts +12 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -3
- package/dist/index.js.map +1 -1
- package/dist/services/index.d.ts +1 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/validation.cjs +52 -26
- package/dist/services/validation.cjs.map +1 -1
- package/dist/services/validation.d.ts +67 -2
- package/dist/services/validation.d.ts.map +1 -1
- package/dist/services/validation.js +52 -26
- package/dist/services/validation.js.map +1 -1
- package/dist/utils/degraded-projections.cjs +37 -12
- package/dist/utils/degraded-projections.cjs.map +1 -1
- package/dist/utils/degraded-projections.d.ts +39 -3
- package/dist/utils/degraded-projections.d.ts.map +1 -1
- package/dist/utils/degraded-projections.js +37 -12
- package/dist/utils/degraded-projections.js.map +1 -1
- package/dist/utils/format-string.cjs +10 -0
- package/dist/utils/format-string.cjs.map +1 -0
- package/dist/utils/format-string.d.ts +26 -0
- package/dist/utils/format-string.d.ts.map +1 -0
- package/dist/utils/format-string.js +10 -0
- package/dist/utils/format-string.js.map +1 -0
- package/dist/utils/iframe-coep.cjs +30 -0
- package/dist/utils/iframe-coep.cjs.map +1 -0
- package/dist/utils/iframe-coep.d.ts +46 -0
- package/dist/utils/iframe-coep.d.ts.map +1 -0
- package/dist/utils/iframe-coep.js +30 -0
- package/dist/utils/iframe-coep.js.map +1 -0
- package/dist/validation.cjs +5 -0
- package/dist/validation.cjs.map +1 -1
- package/dist/validation.d.cts +2 -1
- package/dist/validation.d.ts +2 -1
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +6 -1
- package/package.json +1 -1
- package/src/adapters/connector.ts +58 -4
- package/src/adapters/index.ts +12 -2
- package/src/adapters/macro-run.ts +71 -11
- package/src/components/ActionGroupRenderer.tsx +3 -1
- package/src/components/AgentCard.tsx +27 -9
- package/src/components/AgentHandoff.tsx +4 -1
- package/src/components/ArtifactRenderer.tsx +17 -5
- package/src/components/AutocompleteDropdown.tsx +8 -6
- package/src/components/AutocompleteFormField.tsx +5 -1
- package/src/components/BriefingDiff.tsx +11 -3
- package/src/components/CarouselRenderer.tsx +4 -2
- package/src/components/ChartJSRenderer.tsx +18 -9
- package/src/components/ChatPrompt.tsx +13 -8
- package/src/components/CodeBlockRenderer.tsx +12 -10
- package/src/components/DataPreviewSection.tsx +92 -26
- package/src/components/DegradedFallback.tsx +4 -2
- package/src/components/FooterRenderer.tsx +3 -1
- package/src/components/FormFieldRenderer.tsx +34 -19
- package/src/components/FormRenderer.tsx +38 -10
- package/src/components/GenerativeUIErrorBoundary.tsx +8 -3
- package/src/components/GraphRenderer.tsx +31 -16
- package/src/components/IframeFallbackLink.tsx +57 -0
- package/src/components/ImageGalleryRenderer.tsx +8 -4
- package/src/components/LightboxOverlay.tsx +6 -4
- package/src/components/MapRenderer.tsx +57 -20
- package/src/components/ModalRenderer.tsx +3 -1
- package/src/components/ScratchpadPanel.tsx +95 -44
- package/src/components/StreamingUIRenderer.tsx +41 -11
- package/src/components/UIResourceRenderer.tsx +176 -67
- package/src/components/VerifiedText.tsx +19 -9
- package/src/components/VideoRenderer.tsx +26 -4
- package/src/components/chart-data-table.ts +68 -14
- package/src/context/MCPActionContext.tsx +4 -1
- package/src/context/MCPUIConfigContext.tsx +151 -0
- package/src/context/MCPUIStringsContext.tsx +1014 -1
- package/src/hooks/index.ts +2 -1
- package/src/hooks/useStreamingUI.ts +64 -10
- package/src/index.ts +38 -0
- package/src/services/index.ts +1 -0
- package/src/services/validation.ts +131 -32
- package/src/solid-jsx-attrs.d.ts +24 -0
- package/src/utils/degraded-projections.ts +75 -12
- package/src/utils/format-string.ts +33 -0
- package/src/utils/iframe-coep.ts +74 -0
- package/src/validation.ts +9 -0
|
@@ -36,6 +36,9 @@ const stableKey = require("../utils/stable-key.cjs");
|
|
|
36
36
|
const duplicateMountRegistry = require("../utils/duplicate-mount-registry.cjs");
|
|
37
37
|
const MCPUITelemetryContext = require("../context/MCPUITelemetryContext.cjs");
|
|
38
38
|
const MCPUIStringsContext = require("../context/MCPUIStringsContext.cjs");
|
|
39
|
+
const MCPUIConfigContext = require("../context/MCPUIConfigContext.cjs");
|
|
40
|
+
const iframeCoep = require("../utils/iframe-coep.cjs");
|
|
41
|
+
const IframeFallbackLink = require("./IframeFallbackLink.cjs");
|
|
39
42
|
const GridRenderer = require("./GridRenderer.cjs");
|
|
40
43
|
const FooterRenderer = require("./FooterRenderer.cjs");
|
|
41
44
|
const CarouselRenderer = require("./CarouselRenderer.cjs");
|
|
@@ -57,8 +60,10 @@ const RenderContext = require("./RenderContext.cjs");
|
|
|
57
60
|
const useAction = require("../hooks/useAction.cjs");
|
|
58
61
|
const createResponsiveGrid = require("../hooks/createResponsiveGrid.cjs");
|
|
59
62
|
const marked = require("marked");
|
|
60
|
-
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 data-mcp-ui-action=copy type=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">`), _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"data-mcp-ui-action=page-size>`), _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 type=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"data-mcp-ui-action=page-prev><span aria-hidden=true>◀</span></button><span aria-live=polite><!$><!/> / <!$><!/></span><button type=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"data-mcp-ui-action=page-next><span aria-hidden=true>▶</span></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"><!$><!/><!$><!/>`), _tmpl$34 = /* @__PURE__ */ web.template(`<img class="max-w-full max-h-[400px] object-contain rounded shadow-sm hover:opacity-90 transition-opacity"loading=lazy>`, true, false, false), _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"><div class="flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]"></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">`), _tmpl$36 = /* @__PURE__ */ web.template(`<a target=_blank rel="noopener noreferrer"class=cursor-zoom-in>`), _tmpl$37 = /* @__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$38 = /* @__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$39 = /* @__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$40 = /* @__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$41 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$42 = /* @__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$43 = /* @__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$44 = /* @__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$45 = /* @__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$46 = /* @__PURE__ */ web.template(`<span aria-hidden=true>`), _tmpl$47 = /* @__PURE__ */ web.template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$48 = /* @__PURE__ */ web.template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$49 = /* @__PURE__ */ web.template(`<button type=button><!$><!/><!$><!/><!$><!/>`), _tmpl$50 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$51 = /* @__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$52 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$53 = /* @__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$54 = /* @__PURE__ */ web.template(`<li>`), _tmpl$55 = /* @__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$56 = /* @__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"><!$><!/><!$><!/>`), _tmpl$57 = /* @__PURE__ */ web.template(`<div><div class="grid gap-4"data-mcp-ui-grid></div><!$><!/>`), _tmpl$58 = /* @__PURE__ */ web.template(`<div class=min-w-0>`);
|
|
63
|
+
const formatString = require("../utils/format-string.cjs");
|
|
64
|
+
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 data-mcp-ui-action=copy type=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">`), _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"></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">`), _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">`), _tmpl$14 = /* @__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"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$15 = /* @__PURE__ */ web.template(`<span class="ml-2 text-xs font-normal text-gray-400">`), _tmpl$16 = /* @__PURE__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3 flex-shrink-0"><!$><!/><!$><!/>`), _tmpl$17 = /* @__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">×`), _tmpl$18 = /* @__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$19 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 mb-2">`), _tmpl$20 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span>`), _tmpl$21 = /* @__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"data-mcp-ui-action=page-size>`), _tmpl$22 = /* @__PURE__ */ web.template(`<span class=text-gray-400>`), _tmpl$23 = /* @__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 type=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"data-mcp-ui-action=page-prev><span aria-hidden=true>◀</span></button><span aria-live=polite><!$><!/> / <!$><!/></span><button type=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"data-mcp-ui-action=page-next><span aria-hidden=true>▶</span></button><!$><!/>`), _tmpl$24 = /* @__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$25 = /* @__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$26 = /* @__PURE__ */ web.template(`<option>`), _tmpl$27 = /* @__PURE__ */ web.template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$28 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$29 = /* @__PURE__ */ web.template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$30 = /* @__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$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"><!$><!/><!$><!/>`), _tmpl$32 = /* @__PURE__ */ web.template(`<img class="max-w-full max-h-[400px] object-contain rounded shadow-sm hover:opacity-90 transition-opacity"loading=lazy>`, true, false, false), _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]"></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">`), _tmpl$34 = /* @__PURE__ */ web.template(`<a target=_blank rel="noopener noreferrer"class=cursor-zoom-in>`), _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></iframe><!$><!/>`, 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><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>`), _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"></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"><!$><!/> <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">`), _tmpl$49 = /* @__PURE__ */ web.template(`<div class=mt-3><p class="text-xs font-medium text-red-700 dark:text-red-300"></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"></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"><!$><!/><!$><!/>`), _tmpl$55 = /* @__PURE__ */ web.template(`<div><div class="grid gap-4"data-mcp-ui-grid></div><!$><!/>`), _tmpl$56 = /* @__PURE__ */ web.template(`<div class=min-w-0>`);
|
|
61
65
|
function CopyButton(props) {
|
|
66
|
+
const strings = MCPUIStringsContext.useMCPUIStrings();
|
|
62
67
|
const [copied, setCopied] = solidJs.createSignal(false);
|
|
63
68
|
const handleCopy = async () => {
|
|
64
69
|
try {
|
|
@@ -87,7 +92,7 @@ function CopyButton(props) {
|
|
|
87
92
|
}
|
|
88
93
|
}));
|
|
89
94
|
web.effect((_p$) => {
|
|
90
|
-
var _v$ = `${positionClasses()} 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 z-10`, _v$2 = props.title ||
|
|
95
|
+
var _v$ = `${positionClasses()} 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 z-10`, _v$2 = props.title || strings.copy, _v$3 = props.title || strings.copy;
|
|
91
96
|
_v$ !== _p$.e && web.className(_el$, _p$.e = _v$);
|
|
92
97
|
_v$2 !== _p$.t && web.setAttribute(_el$, "title", _p$.t = _v$2);
|
|
93
98
|
_v$3 !== _p$.a && web.setAttribute(_el$, "aria-label", _p$.a = _v$3);
|
|
@@ -103,6 +108,7 @@ function CopyButton(props) {
|
|
|
103
108
|
}
|
|
104
109
|
function ChartRenderer(props) {
|
|
105
110
|
var _a, _b;
|
|
111
|
+
const strings = MCPUIStringsContext.useMCPUIStrings();
|
|
106
112
|
const [useNative, setUseNative] = solidJs.createSignal(false);
|
|
107
113
|
const [iframeUrl, setIframeUrl] = solidJs.createSignal();
|
|
108
114
|
const [isLoading, setIsLoading] = solidJs.createSignal(true);
|
|
@@ -115,6 +121,12 @@ function ChartRenderer(props) {
|
|
|
115
121
|
return ((_a2 = params()) == null ? void 0 : _a2.renderer) || "auto";
|
|
116
122
|
};
|
|
117
123
|
const allowQuickchart = () => props.allowQuickchartFallback === true;
|
|
124
|
+
const chartImageAlt = () => {
|
|
125
|
+
var _a2;
|
|
126
|
+
return ((_a2 = params()) == null ? void 0 : _a2.title) ? formatString.formatMCPUIString(strings.chartWithTitleAlt, {
|
|
127
|
+
title: String(params().title)
|
|
128
|
+
}) : strings.chartVisualizationAlt;
|
|
129
|
+
};
|
|
118
130
|
const signalBlockedFallback = (reason) => {
|
|
119
131
|
setDegraded(true);
|
|
120
132
|
setIsLoading(false);
|
|
@@ -128,7 +140,11 @@ function ChartRenderer(props) {
|
|
|
128
140
|
});
|
|
129
141
|
};
|
|
130
142
|
if (!((_b = (_a = params()) == null ? void 0 : _a.data) == null ? void 0 : _b.datasets)) {
|
|
131
|
-
return
|
|
143
|
+
return (() => {
|
|
144
|
+
var _el$4 = web.getNextElement(_tmpl$4), _el$5 = _el$4.firstChild;
|
|
145
|
+
web.insert(_el$5, () => strings.chartInvalidData);
|
|
146
|
+
return _el$4;
|
|
147
|
+
})();
|
|
132
148
|
}
|
|
133
149
|
solidJs.createEffect(async () => {
|
|
134
150
|
const pref = rendererPref();
|
|
@@ -145,7 +161,7 @@ function ChartRenderer(props) {
|
|
|
145
161
|
setUseNative(true);
|
|
146
162
|
setIsLoading(false);
|
|
147
163
|
} else {
|
|
148
|
-
setError(
|
|
164
|
+
setError(strings.chartJsUnavailable);
|
|
149
165
|
setIsLoading(false);
|
|
150
166
|
}
|
|
151
167
|
} else {
|
|
@@ -185,61 +201,68 @@ function ChartRenderer(props) {
|
|
|
185
201
|
},
|
|
186
202
|
get fallback() {
|
|
187
203
|
return (() => {
|
|
188
|
-
var _el$
|
|
189
|
-
web.insert(_el$
|
|
204
|
+
var _el$6 = web.getNextElement(_tmpl$0), _el$17 = _el$6.firstChild, [_el$18, _co$2] = web.getNextMarker(_el$17.nextSibling), _el$19 = _el$18.nextSibling, [_el$20, _co$3] = web.getNextMarker(_el$19.nextSibling), _el$21 = _el$20.nextSibling, [_el$22, _co$4] = web.getNextMarker(_el$21.nextSibling), _el$23 = _el$22.nextSibling, [_el$24, _co$5] = web.getNextMarker(_el$23.nextSibling);
|
|
205
|
+
web.insert(_el$6, web.createComponent(solidJs.Show, {
|
|
190
206
|
get when() {
|
|
191
207
|
return degraded();
|
|
192
208
|
},
|
|
193
209
|
get children() {
|
|
194
|
-
var _el$
|
|
195
|
-
web.insert(_el$
|
|
196
|
-
message
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
210
|
+
var _el$7 = web.getNextElement(_tmpl$5);
|
|
211
|
+
web.insert(_el$7, web.createComponent(DegradedFallback.DegradedFallback, web.mergeProps({
|
|
212
|
+
get message() {
|
|
213
|
+
return strings.chartIframeUnavailable;
|
|
214
|
+
},
|
|
215
|
+
get caption() {
|
|
216
|
+
return strings.chartQuickchartCaption;
|
|
217
|
+
}
|
|
218
|
+
}, () => degradedProjections.chartToDegradedTable(params() ?? {}, {
|
|
219
|
+
series: strings.degradedSeries
|
|
220
|
+
}))));
|
|
221
|
+
return _el$7;
|
|
200
222
|
}
|
|
201
|
-
}), _el$
|
|
202
|
-
web.insert(_el$
|
|
223
|
+
}), _el$18, _co$2);
|
|
224
|
+
web.insert(_el$6, web.createComponent(solidJs.Show, {
|
|
203
225
|
get when() {
|
|
204
226
|
return isLoading();
|
|
205
227
|
},
|
|
206
228
|
get children() {
|
|
207
229
|
return web.getNextElement(_tmpl$6);
|
|
208
230
|
}
|
|
209
|
-
}), _el$
|
|
210
|
-
web.insert(_el$
|
|
231
|
+
}), _el$20, _co$3);
|
|
232
|
+
web.insert(_el$6, web.createComponent(solidJs.Show, {
|
|
211
233
|
get when() {
|
|
212
234
|
return error();
|
|
213
235
|
},
|
|
214
236
|
get children() {
|
|
215
|
-
var _el$
|
|
216
|
-
web.insert(_el$1,
|
|
217
|
-
|
|
237
|
+
var _el$9 = web.getNextElement(_tmpl$7), _el$0 = _el$9.firstChild, _el$1 = _el$0.firstChild, _el$10 = _el$1.nextSibling;
|
|
238
|
+
web.insert(_el$1, () => strings.chartError);
|
|
239
|
+
web.insert(_el$10, error);
|
|
240
|
+
return _el$9;
|
|
218
241
|
}
|
|
219
|
-
}), _el$
|
|
220
|
-
web.insert(_el$
|
|
242
|
+
}), _el$22, _co$4);
|
|
243
|
+
web.insert(_el$6, web.createComponent(solidJs.Show, {
|
|
221
244
|
get when() {
|
|
222
245
|
return web.memo(() => !!iframeUrl())() && !error();
|
|
223
246
|
},
|
|
224
247
|
get children() {
|
|
225
|
-
var _el$
|
|
226
|
-
web.insert(_el$
|
|
248
|
+
var _el$11 = web.getNextElement(_tmpl$9), _el$15 = _el$11.firstChild, [_el$16, _co$] = web.getNextMarker(_el$15.nextSibling), _el$13 = _el$16.nextSibling, _el$14 = _el$13.firstChild;
|
|
249
|
+
web.insert(_el$11, web.createComponent(solidJs.Show, {
|
|
227
250
|
get when() {
|
|
228
251
|
var _a2;
|
|
229
252
|
return (_a2 = params()) == null ? void 0 : _a2.title;
|
|
230
253
|
},
|
|
231
254
|
get children() {
|
|
232
|
-
var _el$
|
|
233
|
-
web.insert(_el$
|
|
255
|
+
var _el$12 = web.getNextElement(_tmpl$8);
|
|
256
|
+
web.insert(_el$12, () => {
|
|
234
257
|
var _a2;
|
|
235
258
|
return (_a2 = params()) == null ? void 0 : _a2.title;
|
|
236
259
|
});
|
|
237
|
-
return _el$
|
|
260
|
+
return _el$12;
|
|
238
261
|
}
|
|
239
|
-
}), _el$
|
|
240
|
-
_el$
|
|
262
|
+
}), _el$16, _co$);
|
|
263
|
+
_el$14.addEventListener("error", () => {
|
|
241
264
|
var _a2;
|
|
242
|
-
setError(
|
|
265
|
+
setError(strings.chartLoadFailed);
|
|
243
266
|
(_a2 = props.onError) == null ? void 0 : _a2.call(props, {
|
|
244
267
|
type: "render",
|
|
245
268
|
message: "Chart rendering failed",
|
|
@@ -247,21 +270,20 @@ function ChartRenderer(props) {
|
|
|
247
270
|
});
|
|
248
271
|
});
|
|
249
272
|
web.effect((_p$) => {
|
|
250
|
-
var
|
|
251
|
-
|
|
252
|
-
_v$
|
|
253
|
-
_v$
|
|
254
|
-
_v$6 !== _p$.a && web.setAttribute(_el$13, "alt", _p$.a = _v$6);
|
|
273
|
+
var _v$4 = chartImageAlt(), _v$5 = iframeUrl(), _v$6 = chartImageAlt();
|
|
274
|
+
_v$4 !== _p$.e && web.setAttribute(_el$13, "aria-label", _p$.e = _v$4);
|
|
275
|
+
_v$5 !== _p$.t && web.setAttribute(_el$14, "src", _p$.t = _v$5);
|
|
276
|
+
_v$6 !== _p$.a && web.setAttribute(_el$14, "alt", _p$.a = _v$6);
|
|
255
277
|
return _p$;
|
|
256
278
|
}, {
|
|
257
279
|
e: void 0,
|
|
258
280
|
t: void 0,
|
|
259
281
|
a: void 0
|
|
260
282
|
});
|
|
261
|
-
return _el$
|
|
283
|
+
return _el$11;
|
|
262
284
|
}
|
|
263
|
-
}), _el$
|
|
264
|
-
return _el$
|
|
285
|
+
}), _el$24, _co$5);
|
|
286
|
+
return _el$6;
|
|
265
287
|
})();
|
|
266
288
|
},
|
|
267
289
|
get children() {
|
|
@@ -328,13 +350,15 @@ function highlightQuery(html, query) {
|
|
|
328
350
|
}
|
|
329
351
|
return template.innerHTML;
|
|
330
352
|
}
|
|
331
|
-
function defaultCitationChip(pageNum, fileName, verified = true) {
|
|
353
|
+
function defaultCitationChip(pageNum, fileName, verified = true, viewSourceLabel = MCPUIStringsContext.DEFAULT_MCPUI_STRINGS.citationViewSource) {
|
|
332
354
|
const safeDocName = encodeURIComponent(fileName || "");
|
|
333
355
|
const label = fileName ? `${fileName} - ${pageNum}` : `${pageNum}`;
|
|
334
356
|
if (!verified) {
|
|
335
357
|
return `<span class="citation-ref inline-flex items-center gap-0.5 align-middle opacity-60"><span class="text-gray-500 line-through">[${label}]</span></span>`;
|
|
336
358
|
}
|
|
337
|
-
return ['<span class="citation-ref inline-flex items-center gap-0.5 align-middle">', `<span class="text-gray-500">[${label}]</span>`, '<button class="inline-flex items-center ml-0.5 px-1 py-0.5 text-xs bg-gray-800 hover:bg-gray-700 border border-gray-600 hover:border-teal-500 rounded cursor-pointer transition-colors align-middle"', ` data-citation-page="${pageNum}"`, ` data-citation-doc="${safeDocName}"`, ' data-citation-verified="true"', ` title="
|
|
359
|
+
return ['<span class="citation-ref inline-flex items-center gap-0.5 align-middle">', `<span class="text-gray-500">[${label}]</span>`, '<button class="inline-flex items-center ml-0.5 px-1 py-0.5 text-xs bg-gray-800 hover:bg-gray-700 border border-gray-600 hover:border-teal-500 rounded cursor-pointer transition-colors align-middle"', ` data-citation-page="${pageNum}"`, ` data-citation-doc="${safeDocName}"`, ' data-citation-verified="true"', ` title="${escapeHtml.escapeHtml(formatString.formatMCPUIString(viewSourceLabel, {
|
|
360
|
+
label
|
|
361
|
+
}))}">`, '<svg class="w-3 h-3" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>', "</button>", "</span>"].join("");
|
|
338
362
|
}
|
|
339
363
|
function transformCellCitations(text, ctx) {
|
|
340
364
|
let out = text.replace(new RegExp("(?<![p.])\\[(\\d{1,2})\\](?!\\()", "g"), "[📄 CITATION $1]");
|
|
@@ -344,8 +368,10 @@ function transformCellCitations(text, ctx) {
|
|
|
344
368
|
const id = parseInt(idStr, 10);
|
|
345
369
|
const mapping = ctx.map[id] ?? ctx.map[String(id)];
|
|
346
370
|
if (ctx.render) return ctx.render(id, mapping);
|
|
347
|
-
if (mapping) return defaultCitationChip(mapping.page, mapping.file ?? "", true);
|
|
348
|
-
return Object.keys(ctx.map).length > 0 ? "" :
|
|
371
|
+
if (mapping) return defaultCitationChip(mapping.page, mapping.file ?? "", true, ctx.viewSourceLabel);
|
|
372
|
+
return Object.keys(ctx.map).length > 0 ? "" : formatString.formatMCPUIString(ctx.unresolvedLabel ?? MCPUIStringsContext.DEFAULT_MCPUI_STRINGS.citationUnresolved, {
|
|
373
|
+
id
|
|
374
|
+
});
|
|
349
375
|
});
|
|
350
376
|
}
|
|
351
377
|
function renderCellValue(value, citationCtx) {
|
|
@@ -405,7 +431,14 @@ function TableRenderer(props) {
|
|
|
405
431
|
const strings = MCPUIStringsContext.useMCPUIStrings();
|
|
406
432
|
const citationCtx = tableParams.citationMap ? {
|
|
407
433
|
map: tableParams.citationMap,
|
|
408
|
-
render: tableParams.citationRender
|
|
434
|
+
render: tableParams.citationRender,
|
|
435
|
+
// Getters, not snapshots: cells read the provider's current wording.
|
|
436
|
+
get unresolvedLabel() {
|
|
437
|
+
return strings.citationUnresolved;
|
|
438
|
+
},
|
|
439
|
+
get viewSourceLabel() {
|
|
440
|
+
return strings.citationViewSource;
|
|
441
|
+
}
|
|
409
442
|
} : void 0;
|
|
410
443
|
const allRows = () => tableParams.rows || [];
|
|
411
444
|
const columns = () => tableParams.columns || [];
|
|
@@ -441,7 +474,7 @@ function TableRenderer(props) {
|
|
|
441
474
|
if (isNum) {
|
|
442
475
|
cmp = (Number(va) || 0) - (Number(vb) || 0);
|
|
443
476
|
} else {
|
|
444
|
-
cmp = String(va).localeCompare(String(vb),
|
|
477
|
+
cmp = String(va).localeCompare(String(vb), strings.locale, {
|
|
445
478
|
sensitivity: "base"
|
|
446
479
|
});
|
|
447
480
|
}
|
|
@@ -456,7 +489,7 @@ function TableRenderer(props) {
|
|
|
456
489
|
const [debouncedQuery, setDebouncedQuery] = solidJs.createSignal("");
|
|
457
490
|
let searchTimer = null;
|
|
458
491
|
const isSearchable = () => tableParams.searchable !== false;
|
|
459
|
-
const searchPlaceholder = () => tableParams.searchPlaceholder ||
|
|
492
|
+
const searchPlaceholder = () => tableParams.searchPlaceholder || strings.tableSearchPlaceholder;
|
|
460
493
|
const handleSearch = (value) => {
|
|
461
494
|
setSearchQuery(value);
|
|
462
495
|
if (searchTimer) clearTimeout(searchTimer);
|
|
@@ -514,7 +547,7 @@ function TableRenderer(props) {
|
|
|
514
547
|
}
|
|
515
548
|
opts.push({
|
|
516
549
|
value: 0,
|
|
517
|
-
label:
|
|
550
|
+
label: strings.paginationAllRows
|
|
518
551
|
});
|
|
519
552
|
return opts;
|
|
520
553
|
};
|
|
@@ -641,30 +674,30 @@ ${dataRows}`;
|
|
|
641
674
|
};
|
|
642
675
|
const tableId = `table-${Math.random().toString(36).slice(2, 9)}`;
|
|
643
676
|
const StandardTableBody = () => (() => {
|
|
644
|
-
var _el$
|
|
645
|
-
web.insert(_el$
|
|
677
|
+
var _el$25 = web.getNextElement(_tmpl$1);
|
|
678
|
+
web.insert(_el$25, web.createComponent(solidJs.For, {
|
|
646
679
|
get each() {
|
|
647
680
|
return clientVisibleRows().slice(0, validation.DEFAULT_RESOURCE_LIMITS.maxTableRows);
|
|
648
681
|
},
|
|
649
682
|
children: (row, i) => (() => {
|
|
650
|
-
var _el$
|
|
651
|
-
web.insert(_el$
|
|
683
|
+
var _el$26 = web.getNextElement(_tmpl$10);
|
|
684
|
+
web.insert(_el$26, web.createComponent(solidJs.For, {
|
|
652
685
|
get each() {
|
|
653
686
|
return tableParams.columns;
|
|
654
687
|
},
|
|
655
688
|
children: (column) => (() => {
|
|
656
|
-
var _el$
|
|
657
|
-
web.insert(_el$
|
|
689
|
+
var _el$27 = web.getNextElement(_tmpl$11);
|
|
690
|
+
web.insert(_el$27, web.createComponent(SafeHtml.SafeHtml, {
|
|
658
691
|
html: () => highlightQuery(renderCellValue(row[column.key], citationCtx), debouncedQuery())
|
|
659
692
|
}));
|
|
660
|
-
return _el$
|
|
693
|
+
return _el$27;
|
|
661
694
|
})()
|
|
662
695
|
}));
|
|
663
|
-
web.effect(() => web.className(_el$
|
|
664
|
-
return _el$
|
|
696
|
+
web.effect(() => web.className(_el$26, `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"}`));
|
|
697
|
+
return _el$26;
|
|
665
698
|
})()
|
|
666
699
|
}));
|
|
667
|
-
return _el$
|
|
700
|
+
return _el$25;
|
|
668
701
|
})();
|
|
669
702
|
const VirtualizedTableBody = () => {
|
|
670
703
|
const v = virtualizer();
|
|
@@ -674,72 +707,76 @@ ${dataRows}`;
|
|
|
674
707
|
const opts = virtualizeOpts();
|
|
675
708
|
const rowHeight = opts.rowHeight ?? 48;
|
|
676
709
|
return (() => {
|
|
677
|
-
var _el$
|
|
678
|
-
web.setStyleProperty(_el$
|
|
679
|
-
web.insert(_el$
|
|
710
|
+
var _el$28 = web.getNextElement(_tmpl$12);
|
|
711
|
+
web.setStyleProperty(_el$28, "height", `${totalSize}px`);
|
|
712
|
+
web.insert(_el$28, web.createComponent(solidJs.For, {
|
|
680
713
|
each: items,
|
|
681
714
|
children: (virtualRow) => {
|
|
682
715
|
const row = tableParams.rows[virtualRow.index];
|
|
683
716
|
return (() => {
|
|
684
|
-
var _el$
|
|
685
|
-
web.setStyleProperty(_el$
|
|
686
|
-
web.insert(_el$
|
|
717
|
+
var _el$29 = web.getNextElement(_tmpl$10);
|
|
718
|
+
web.setStyleProperty(_el$29, "height", `${rowHeight}px`);
|
|
719
|
+
web.insert(_el$29, web.createComponent(solidJs.For, {
|
|
687
720
|
get each() {
|
|
688
721
|
return tableParams.columns;
|
|
689
722
|
},
|
|
690
723
|
children: (column) => (() => {
|
|
691
|
-
var _el$
|
|
692
|
-
web.insert(_el$
|
|
724
|
+
var _el$30 = web.getNextElement(_tmpl$11);
|
|
725
|
+
web.insert(_el$30, web.createComponent(SafeHtml.SafeHtml, {
|
|
693
726
|
html: () => highlightQuery(renderCellValue(row[column.key], citationCtx), debouncedQuery())
|
|
694
727
|
}));
|
|
695
|
-
return _el$
|
|
728
|
+
return _el$30;
|
|
696
729
|
})()
|
|
697
730
|
}));
|
|
698
731
|
web.effect((_p$) => {
|
|
699
732
|
var _v$7 = `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$8 = `translateY(${virtualRow.start}px)`;
|
|
700
|
-
_v$7 !== _p$.e && web.className(_el$
|
|
701
|
-
_v$8 !== _p$.t && web.setStyleProperty(_el$
|
|
733
|
+
_v$7 !== _p$.e && web.className(_el$29, _p$.e = _v$7);
|
|
734
|
+
_v$8 !== _p$.t && web.setStyleProperty(_el$29, "transform", _p$.t = _v$8);
|
|
702
735
|
return _p$;
|
|
703
736
|
}, {
|
|
704
737
|
e: void 0,
|
|
705
738
|
t: void 0
|
|
706
739
|
});
|
|
707
|
-
return _el$
|
|
740
|
+
return _el$29;
|
|
708
741
|
})();
|
|
709
742
|
}
|
|
710
743
|
}));
|
|
711
|
-
return _el$
|
|
744
|
+
return _el$28;
|
|
712
745
|
})();
|
|
713
746
|
};
|
|
714
747
|
return web.createComponent(ExpandableWrapper.ExpandableWrapper, {
|
|
715
748
|
get title() {
|
|
716
|
-
return tableParams.title ||
|
|
749
|
+
return tableParams.title || strings.tableTitle;
|
|
717
750
|
},
|
|
718
751
|
get copyData() {
|
|
719
752
|
return getTableCSV();
|
|
720
753
|
},
|
|
721
|
-
copyLabel
|
|
754
|
+
get copyLabel() {
|
|
755
|
+
return strings.tableCopyCsv;
|
|
756
|
+
},
|
|
722
757
|
get toolbarVariant() {
|
|
723
758
|
return props.toolbarVariant;
|
|
724
759
|
},
|
|
725
760
|
onExpandedChange: setSelfExpanded,
|
|
726
761
|
get children() {
|
|
727
|
-
var _el$
|
|
728
|
-
web.insert(_el$
|
|
762
|
+
var _el$31 = web.getNextElement(_tmpl$24), _el$92 = _el$31.firstChild, [_el$93, _co$19] = web.getNextMarker(_el$92.nextSibling), _el$39 = _el$93.nextSibling, _el$84 = _el$39.firstChild, [_el$85, _co$15] = web.getNextMarker(_el$84.nextSibling), _el$86 = _el$85.nextSibling, [_el$87, _co$16] = web.getNextMarker(_el$86.nextSibling), _el$53 = _el$87.nextSibling, _el$54 = _el$53.firstChild, _el$55 = _el$54.firstChild, _el$56 = _el$55.firstChild, _el$57 = _el$55.nextSibling, [_el$58, _co$0] = web.getNextMarker(_el$57.nextSibling), _el$88 = _el$53.nextSibling, [_el$89, _co$17] = web.getNextMarker(_el$88.nextSibling), _el$90 = _el$89.nextSibling, [_el$91, _co$18] = web.getNextMarker(_el$90.nextSibling);
|
|
763
|
+
web.insert(_el$31, web.createComponent(solidJs.Show, {
|
|
729
764
|
when: exportable,
|
|
730
765
|
get fallback() {
|
|
731
766
|
return web.createComponent(CopyButton, {
|
|
732
767
|
getText: getTableCSV,
|
|
733
|
-
title
|
|
768
|
+
get title() {
|
|
769
|
+
return strings.tableCopyCsv;
|
|
770
|
+
},
|
|
734
771
|
position: "top-right"
|
|
735
772
|
});
|
|
736
773
|
},
|
|
737
774
|
get children() {
|
|
738
|
-
var _el$
|
|
739
|
-
_el$
|
|
775
|
+
var _el$32 = web.getNextElement(_tmpl$14), _el$33 = _el$32.firstChild, _el$37 = _el$33.nextSibling, [_el$38, _co$6] = web.getNextMarker(_el$37.nextSibling);
|
|
776
|
+
_el$33.$$click = () => setShowExportMenu(!showExportMenu());
|
|
740
777
|
var _ref$ = exportTriggerRef;
|
|
741
|
-
typeof _ref$ === "function" ? web.use(_ref$, _el$
|
|
742
|
-
web.insert(_el$
|
|
778
|
+
typeof _ref$ === "function" ? web.use(_ref$, _el$33) : exportTriggerRef = _el$33;
|
|
779
|
+
web.insert(_el$32, web.createComponent(PortalDropdownMenu.PortalDropdownMenu, {
|
|
743
780
|
get open() {
|
|
744
781
|
return showExportMenu();
|
|
745
782
|
},
|
|
@@ -752,136 +789,154 @@ ${dataRows}`;
|
|
|
752
789
|
return exportFormats.includes("tsv");
|
|
753
790
|
},
|
|
754
791
|
get children() {
|
|
755
|
-
var _el$
|
|
756
|
-
_el$
|
|
792
|
+
var _el$34 = web.getNextElement(_tmpl$13);
|
|
793
|
+
_el$34.$$click = () => handleExport("tsv");
|
|
794
|
+
web.insert(_el$34, () => strings.tableCopyTsv);
|
|
757
795
|
web.runHydrationEvents();
|
|
758
|
-
return _el$
|
|
796
|
+
return _el$34;
|
|
759
797
|
}
|
|
760
798
|
}), web.createComponent(solidJs.Show, {
|
|
761
799
|
get when() {
|
|
762
800
|
return exportFormats.includes("csv");
|
|
763
801
|
},
|
|
764
802
|
get children() {
|
|
765
|
-
var _el$
|
|
766
|
-
_el$
|
|
803
|
+
var _el$35 = web.getNextElement(_tmpl$13);
|
|
804
|
+
_el$35.$$click = () => handleExport("csv");
|
|
805
|
+
web.insert(_el$35, () => strings.tableDownloadCsv);
|
|
767
806
|
web.runHydrationEvents();
|
|
768
|
-
return _el$
|
|
807
|
+
return _el$35;
|
|
769
808
|
}
|
|
770
809
|
}), web.createComponent(solidJs.Show, {
|
|
771
810
|
get when() {
|
|
772
811
|
return exportFormats.includes("json");
|
|
773
812
|
},
|
|
774
813
|
get children() {
|
|
775
|
-
var _el$
|
|
776
|
-
_el$
|
|
814
|
+
var _el$36 = web.getNextElement(_tmpl$13);
|
|
815
|
+
_el$36.$$click = () => handleExport("json");
|
|
816
|
+
web.insert(_el$36, () => strings.tableDownloadJson);
|
|
777
817
|
web.runHydrationEvents();
|
|
778
|
-
return _el$
|
|
818
|
+
return _el$36;
|
|
779
819
|
}
|
|
780
820
|
})];
|
|
781
821
|
}
|
|
782
|
-
}), _el$
|
|
783
|
-
web.effect(() =>
|
|
822
|
+
}), _el$38, _co$6);
|
|
823
|
+
web.effect((_p$) => {
|
|
824
|
+
var _v$9 = strings.tableExport, _v$0 = strings.tableExport, _v$1 = showExportMenu();
|
|
825
|
+
_v$9 !== _p$.e && web.setAttribute(_el$33, "title", _p$.e = _v$9);
|
|
826
|
+
_v$0 !== _p$.t && web.setAttribute(_el$33, "aria-label", _p$.t = _v$0);
|
|
827
|
+
_v$1 !== _p$.a && web.setAttribute(_el$33, "aria-expanded", _p$.a = _v$1);
|
|
828
|
+
return _p$;
|
|
829
|
+
}, {
|
|
830
|
+
e: void 0,
|
|
831
|
+
t: void 0,
|
|
832
|
+
a: void 0
|
|
833
|
+
});
|
|
784
834
|
web.runHydrationEvents();
|
|
785
|
-
return _el$
|
|
835
|
+
return _el$32;
|
|
786
836
|
}
|
|
787
|
-
}), _el$
|
|
788
|
-
web.insert(_el$
|
|
837
|
+
}), _el$93, _co$19);
|
|
838
|
+
web.insert(_el$39, web.createComponent(solidJs.Show, {
|
|
789
839
|
get when() {
|
|
790
840
|
return tableParams.title;
|
|
791
841
|
},
|
|
792
842
|
get children() {
|
|
793
|
-
var _el$
|
|
794
|
-
web.setAttribute(_el$
|
|
795
|
-
web.insert(_el$
|
|
796
|
-
web.insert(_el$
|
|
843
|
+
var _el$40 = web.getNextElement(_tmpl$16), _el$42 = _el$40.firstChild, [_el$43, _co$7] = web.getNextMarker(_el$42.nextSibling), _el$44 = _el$43.nextSibling, [_el$45, _co$8] = web.getNextMarker(_el$44.nextSibling);
|
|
844
|
+
web.setAttribute(_el$40, "id", `${tableId}-title`);
|
|
845
|
+
web.insert(_el$40, () => tableParams.title, _el$43, _co$7);
|
|
846
|
+
web.insert(_el$40, web.createComponent(solidJs.Show, {
|
|
797
847
|
get when() {
|
|
798
848
|
return isVirtualizing();
|
|
799
849
|
},
|
|
800
850
|
get children() {
|
|
801
|
-
var _el$
|
|
802
|
-
_el$
|
|
803
|
-
web.insert(_el$40, () => {
|
|
851
|
+
var _el$41 = web.getNextElement(_tmpl$15);
|
|
852
|
+
web.insert(_el$41, () => {
|
|
804
853
|
var _a;
|
|
805
|
-
return (
|
|
806
|
-
|
|
807
|
-
|
|
854
|
+
return formatString.formatMCPUIString(strings.tableVirtualizedRows, {
|
|
855
|
+
count: ((_a = tableParams.rows) == null ? void 0 : _a.length) ?? 0
|
|
856
|
+
});
|
|
857
|
+
});
|
|
858
|
+
return _el$41;
|
|
808
859
|
}
|
|
809
|
-
}), _el$
|
|
810
|
-
return _el$
|
|
860
|
+
}), _el$45, _co$8);
|
|
861
|
+
return _el$40;
|
|
811
862
|
}
|
|
812
|
-
}), _el$
|
|
813
|
-
web.insert(_el$
|
|
863
|
+
}), _el$85, _co$15);
|
|
864
|
+
web.insert(_el$39, web.createComponent(solidJs.Show, {
|
|
814
865
|
get when() {
|
|
815
866
|
return isSearchable();
|
|
816
867
|
},
|
|
817
868
|
get children() {
|
|
818
869
|
return [(() => {
|
|
819
|
-
var _el$
|
|
820
|
-
_el$
|
|
821
|
-
web.insert(_el$
|
|
870
|
+
var _el$46 = web.getNextElement(_tmpl$18), _el$47 = _el$46.firstChild, _el$48 = _el$47.nextSibling, _el$50 = _el$48.nextSibling, [_el$51, _co$9] = web.getNextMarker(_el$50.nextSibling);
|
|
871
|
+
_el$48.$$input = (e) => handleSearch(e.currentTarget.value);
|
|
872
|
+
web.insert(_el$46, web.createComponent(solidJs.Show, {
|
|
822
873
|
get when() {
|
|
823
874
|
return searchQuery();
|
|
824
875
|
},
|
|
825
876
|
get children() {
|
|
826
|
-
var _el$
|
|
827
|
-
_el$
|
|
877
|
+
var _el$49 = web.getNextElement(_tmpl$17);
|
|
878
|
+
_el$49.$$click = () => {
|
|
828
879
|
handleSearch("");
|
|
829
880
|
setSearchQuery("");
|
|
830
881
|
setDebouncedQuery("");
|
|
831
882
|
};
|
|
883
|
+
web.effect(() => web.setAttribute(_el$49, "aria-label", strings.tableClearSearch));
|
|
832
884
|
web.runHydrationEvents();
|
|
833
|
-
return _el$
|
|
885
|
+
return _el$49;
|
|
834
886
|
}
|
|
835
|
-
}), _el$
|
|
836
|
-
web.effect(() => web.setAttribute(_el$
|
|
837
|
-
web.effect(() => web.setProperty(_el$
|
|
887
|
+
}), _el$51, _co$9);
|
|
888
|
+
web.effect(() => web.setAttribute(_el$48, "placeholder", searchPlaceholder()));
|
|
889
|
+
web.effect(() => web.setProperty(_el$48, "value", searchQuery()));
|
|
838
890
|
web.runHydrationEvents();
|
|
839
|
-
return _el$
|
|
891
|
+
return _el$46;
|
|
840
892
|
})(), web.createComponent(solidJs.Show, {
|
|
841
893
|
get when() {
|
|
842
894
|
return web.memo(() => !!debouncedQuery())() && filteredRows().length !== sortedRows().length;
|
|
843
895
|
},
|
|
844
896
|
get children() {
|
|
845
|
-
var _el$
|
|
846
|
-
web.insert(_el$
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
897
|
+
var _el$52 = web.getNextElement(_tmpl$19);
|
|
898
|
+
web.insert(_el$52, () => formatString.formatMCPUIString(filteredRows().length === 1 ? strings.tableSearchResultsOne : strings.tableSearchResultsMany, {
|
|
899
|
+
count: filteredRows().length,
|
|
900
|
+
total: sortedRows().length
|
|
901
|
+
}));
|
|
902
|
+
return _el$52;
|
|
850
903
|
}
|
|
851
904
|
})];
|
|
852
905
|
}
|
|
853
|
-
}), _el$
|
|
906
|
+
}), _el$87, _co$16);
|
|
854
907
|
var _ref$2 = scrollContainerRef;
|
|
855
|
-
typeof _ref$2 === "function" ? web.use(_ref$2, _el$
|
|
856
|
-
web.insert(_el$
|
|
908
|
+
typeof _ref$2 === "function" ? web.use(_ref$2, _el$53) : scrollContainerRef = _el$53;
|
|
909
|
+
web.insert(_el$56, web.createComponent(solidJs.For, {
|
|
857
910
|
get each() {
|
|
858
911
|
return tableParams.columns;
|
|
859
912
|
},
|
|
860
913
|
children: (column) => (() => {
|
|
861
|
-
var _el$
|
|
862
|
-
web.addEventListener(_el$
|
|
863
|
-
web.insert(_el$
|
|
864
|
-
web.insert(_el$
|
|
914
|
+
var _el$94 = web.getNextElement(_tmpl$25), _el$95 = _el$94.firstChild, _el$97 = _el$95.firstChild, [_el$98, _co$20] = web.getNextMarker(_el$97.nextSibling), _el$96 = _el$98.nextSibling;
|
|
915
|
+
web.addEventListener(_el$94, "click", () => handleSort(column.key));
|
|
916
|
+
web.insert(_el$95, () => column.label, _el$98, _co$20);
|
|
917
|
+
web.insert(_el$96, () => sortIndicator(column.key));
|
|
865
918
|
web.effect((_p$) => {
|
|
866
|
-
var _v$
|
|
919
|
+
var _v$20 = column.width ? {
|
|
867
920
|
width: column.width
|
|
868
|
-
} : {}, _v$
|
|
921
|
+
} : {}, _v$21 = formatString.formatMCPUIString(strings.sortBy, {
|
|
922
|
+
column: column.label
|
|
923
|
+
}), _v$22 = {
|
|
869
924
|
"opacity-30": sortKey() !== column.key,
|
|
870
925
|
"opacity-100 text-blue-600 dark:text-blue-400": sortKey() === column.key
|
|
871
926
|
};
|
|
872
|
-
_p$.e = web.style(_el$
|
|
873
|
-
_v$
|
|
874
|
-
_p$.a = web.classList(_el$
|
|
927
|
+
_p$.e = web.style(_el$94, _v$20, _p$.e);
|
|
928
|
+
_v$21 !== _p$.t && web.setAttribute(_el$94, "title", _p$.t = _v$21);
|
|
929
|
+
_p$.a = web.classList(_el$96, _v$22, _p$.a);
|
|
875
930
|
return _p$;
|
|
876
931
|
}, {
|
|
877
932
|
e: void 0,
|
|
878
933
|
t: void 0,
|
|
879
934
|
a: void 0
|
|
880
935
|
});
|
|
881
|
-
return _el$
|
|
936
|
+
return _el$94;
|
|
882
937
|
})()
|
|
883
938
|
}));
|
|
884
|
-
web.insert(_el$
|
|
939
|
+
web.insert(_el$54, web.createComponent(solidJs.Show, {
|
|
885
940
|
get when() {
|
|
886
941
|
return isVirtualizing();
|
|
887
942
|
},
|
|
@@ -891,63 +946,69 @@ ${dataRows}`;
|
|
|
891
946
|
get children() {
|
|
892
947
|
return web.createComponent(VirtualizedTableBody, {});
|
|
893
948
|
}
|
|
894
|
-
}), _el$
|
|
895
|
-
web.insert(_el$
|
|
949
|
+
}), _el$58, _co$0);
|
|
950
|
+
web.insert(_el$39, web.createComponent(solidJs.Show, {
|
|
896
951
|
get when() {
|
|
897
952
|
return tableParams.pagination;
|
|
898
953
|
},
|
|
899
954
|
get children() {
|
|
900
|
-
var _el$
|
|
901
|
-
web.insert(_el$
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
955
|
+
var _el$59 = web.getNextElement(_tmpl$20), _el$60 = _el$59.firstChild;
|
|
956
|
+
web.insert(_el$60, () => formatString.formatMCPUIString(strings.tableServerPageRange, {
|
|
957
|
+
start: tableParams.pagination.currentPage * tableParams.pagination.pageSize + 1,
|
|
958
|
+
end: Math.min((tableParams.pagination.currentPage + 1) * tableParams.pagination.pageSize, tableParams.pagination.totalRows),
|
|
959
|
+
total: tableParams.pagination.totalRows
|
|
960
|
+
}));
|
|
961
|
+
return _el$59;
|
|
905
962
|
}
|
|
906
|
-
}), _el$
|
|
907
|
-
web.insert(_el$
|
|
963
|
+
}), _el$89, _co$17);
|
|
964
|
+
web.insert(_el$39, web.createComponent(solidJs.Show, {
|
|
908
965
|
get when() {
|
|
909
966
|
return needsClientPagination();
|
|
910
967
|
},
|
|
911
968
|
get children() {
|
|
912
|
-
var _el$
|
|
913
|
-
web.insert(_el$
|
|
914
|
-
web.insert(_el$
|
|
915
|
-
web.insert(_el$
|
|
916
|
-
_el$
|
|
917
|
-
web.insert(_el$
|
|
918
|
-
web.insert(_el$
|
|
919
|
-
_el$
|
|
920
|
-
web.insert(_el$
|
|
969
|
+
var _el$61 = web.getNextElement(_tmpl$23), _el$62 = _el$61.firstChild, _el$65 = _el$62.firstChild, [_el$66, _co$1] = web.getNextMarker(_el$65.nextSibling), _el$63 = _el$66.nextSibling, _el$67 = _el$63.nextSibling, [_el$68, _co$10] = web.getNextMarker(_el$67.nextSibling), _el$64 = _el$68.nextSibling, _el$69 = _el$64.nextSibling, [_el$70, _co$11] = web.getNextMarker(_el$69.nextSibling), _el$71 = _el$62.nextSibling, _el$72 = _el$71.firstChild, _el$73 = _el$72.nextSibling, _el$75 = _el$73.firstChild, [_el$76, _co$12] = web.getNextMarker(_el$75.nextSibling), _el$74 = _el$76.nextSibling, _el$77 = _el$74.nextSibling, [_el$78, _co$13] = web.getNextMarker(_el$77.nextSibling), _el$79 = _el$73.nextSibling, _el$82 = _el$79.nextSibling, [_el$83, _co$14] = web.getNextMarker(_el$82.nextSibling);
|
|
970
|
+
web.insert(_el$62, clientRangeStart, _el$66, _co$1);
|
|
971
|
+
web.insert(_el$62, clientRangeEnd, _el$68, _co$10);
|
|
972
|
+
web.insert(_el$62, () => filteredRows().length.toLocaleString(strings.locale), _el$70, _co$11);
|
|
973
|
+
_el$72.$$click = () => setClientPage((p) => p - 1);
|
|
974
|
+
web.insert(_el$73, () => clientPage() + 1, _el$76, _co$12);
|
|
975
|
+
web.insert(_el$73, clientTotalPages, _el$78, _co$13);
|
|
976
|
+
_el$79.$$click = () => setClientPage((p) => p + 1);
|
|
977
|
+
web.insert(_el$71, web.createComponent(solidJs.Show, {
|
|
921
978
|
get when() {
|
|
922
979
|
return web.memo(() => !!isExpanded())() && filteredRows().length > 10;
|
|
923
980
|
},
|
|
924
981
|
get children() {
|
|
925
982
|
return [(() => {
|
|
926
|
-
var _el$
|
|
927
|
-
_el$
|
|
928
|
-
web.insert(_el$
|
|
983
|
+
var _el$80 = web.getNextElement(_tmpl$21);
|
|
984
|
+
_el$80.addEventListener("change", (e) => handlePageSizeChange(Number(e.currentTarget.value)));
|
|
985
|
+
web.insert(_el$80, web.createComponent(solidJs.For, {
|
|
929
986
|
get each() {
|
|
930
987
|
return pageSizeOptions();
|
|
931
988
|
},
|
|
932
989
|
children: (opt) => (() => {
|
|
933
|
-
var _el$
|
|
934
|
-
web.insert(_el$
|
|
935
|
-
web.effect(() => web.setProperty(_el$
|
|
936
|
-
return _el$
|
|
990
|
+
var _el$99 = web.getNextElement(_tmpl$26);
|
|
991
|
+
web.insert(_el$99, () => opt.label);
|
|
992
|
+
web.effect(() => web.setProperty(_el$99, "value", opt.value));
|
|
993
|
+
return _el$99;
|
|
937
994
|
})()
|
|
938
995
|
}));
|
|
939
|
-
web.effect(() => web.setAttribute(_el$
|
|
940
|
-
web.effect(() => web.setProperty(_el$
|
|
941
|
-
return _el$
|
|
942
|
-
})(),
|
|
996
|
+
web.effect(() => web.setAttribute(_el$80, "aria-label", strings.paginationPageSize));
|
|
997
|
+
web.effect(() => web.setProperty(_el$80, "value", clientPageSize()));
|
|
998
|
+
return _el$80;
|
|
999
|
+
})(), (() => {
|
|
1000
|
+
var _el$81 = web.getNextElement(_tmpl$22);
|
|
1001
|
+
web.insert(_el$81, () => strings.perPageSuffix);
|
|
1002
|
+
return _el$81;
|
|
1003
|
+
})()];
|
|
943
1004
|
}
|
|
944
|
-
}), _el$
|
|
1005
|
+
}), _el$83, _co$14);
|
|
945
1006
|
web.effect((_p$) => {
|
|
946
|
-
var _v$
|
|
947
|
-
_v$
|
|
948
|
-
_v$
|
|
949
|
-
_v$
|
|
950
|
-
_v$
|
|
1007
|
+
var _v$10 = clientPage() === 0, _v$11 = strings.paginationPrevious, _v$12 = clientPage() >= clientTotalPages() - 1, _v$13 = strings.paginationNext;
|
|
1008
|
+
_v$10 !== _p$.e && web.setProperty(_el$72, "disabled", _p$.e = _v$10);
|
|
1009
|
+
_v$11 !== _p$.t && web.setAttribute(_el$72, "aria-label", _p$.t = _v$11);
|
|
1010
|
+
_v$12 !== _p$.a && web.setProperty(_el$79, "disabled", _p$.a = _v$12);
|
|
1011
|
+
_v$13 !== _p$.o && web.setAttribute(_el$79, "aria-label", _p$.o = _v$13);
|
|
951
1012
|
return _p$;
|
|
952
1013
|
}, {
|
|
953
1014
|
e: void 0,
|
|
@@ -956,11 +1017,11 @@ ${dataRows}`;
|
|
|
956
1017
|
o: void 0
|
|
957
1018
|
});
|
|
958
1019
|
web.runHydrationEvents();
|
|
959
|
-
return _el$
|
|
1020
|
+
return _el$61;
|
|
960
1021
|
}
|
|
961
|
-
}), _el$
|
|
1022
|
+
}), _el$91, _co$18);
|
|
962
1023
|
web.effect((_p$) => {
|
|
963
|
-
var _v$
|
|
1024
|
+
var _v$14 = `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"} ${tableParams.className || ""}`, _v$15 = `p-4 ${isExpanded() ? "flex-1 min-h-0 flex flex-col" : ""}`, _v$16 = `overflow-x-auto ${isExpanded() ? "flex-1 min-h-0" : ""}`, _v$17 = (
|
|
964
1025
|
// v6.1.0 — when expanded, the scroll container fills the
|
|
965
1026
|
// remaining vertical space and scrolls internally.
|
|
966
1027
|
// v6.3.0 — `params.maxHeight` opt-out (axe 1 deposium handoff)
|
|
@@ -989,13 +1050,13 @@ ${dataRows}`;
|
|
|
989
1050
|
};
|
|
990
1051
|
return {};
|
|
991
1052
|
})()
|
|
992
|
-
), _v$
|
|
993
|
-
_v$
|
|
994
|
-
_v$
|
|
995
|
-
_v$
|
|
996
|
-
_p$.o = web.style(_el$
|
|
997
|
-
_v$
|
|
998
|
-
_v$
|
|
1053
|
+
), _v$18 = tableParams.title || strings.tableAriaLabel, _v$19 = tableParams.title ? `${tableId}-title` : void 0;
|
|
1054
|
+
_v$14 !== _p$.e && web.className(_el$31, _p$.e = _v$14);
|
|
1055
|
+
_v$15 !== _p$.t && web.className(_el$39, _p$.t = _v$15);
|
|
1056
|
+
_v$16 !== _p$.a && web.className(_el$53, _p$.a = _v$16);
|
|
1057
|
+
_p$.o = web.style(_el$53, _v$17, _p$.o);
|
|
1058
|
+
_v$18 !== _p$.i && web.setAttribute(_el$53, "aria-label", _p$.i = _v$18);
|
|
1059
|
+
_v$19 !== _p$.n && web.setAttribute(_el$54, "aria-labelledby", _p$.n = _v$19);
|
|
999
1060
|
return _p$;
|
|
1000
1061
|
}, {
|
|
1001
1062
|
e: void 0,
|
|
@@ -1005,11 +1066,12 @@ ${dataRows}`;
|
|
|
1005
1066
|
i: void 0,
|
|
1006
1067
|
n: void 0
|
|
1007
1068
|
});
|
|
1008
|
-
return _el$
|
|
1069
|
+
return _el$31;
|
|
1009
1070
|
}
|
|
1010
1071
|
});
|
|
1011
1072
|
}
|
|
1012
1073
|
function MetricRenderer(props) {
|
|
1074
|
+
const strings = MCPUIStringsContext.useMCPUIStrings();
|
|
1013
1075
|
const metricParams = props.component.params;
|
|
1014
1076
|
const getMetricText = () => {
|
|
1015
1077
|
const title = metricParams.title || metricParams.label || "";
|
|
@@ -1018,59 +1080,61 @@ function MetricRenderer(props) {
|
|
|
1018
1080
|
return `${title}: ${value}${unit ? " " + unit : ""}`;
|
|
1019
1081
|
};
|
|
1020
1082
|
return (() => {
|
|
1021
|
-
var _el$
|
|
1022
|
-
web.insert(_el$
|
|
1083
|
+
var _el$100 = web.getNextElement(_tmpl$30), _el$122 = _el$100.firstChild, [_el$123, _co$26] = web.getNextMarker(_el$122.nextSibling), _el$101 = _el$123.nextSibling, _el$102 = _el$101.firstChild, _el$103 = _el$102.firstChild, _el$104 = _el$103.nextSibling, _el$105 = _el$104.firstChild, _el$107 = _el$105.nextSibling, [_el$108, _co$21] = web.getNextMarker(_el$107.nextSibling), _el$118 = _el$102.nextSibling, [_el$119, _co$24] = web.getNextMarker(_el$118.nextSibling), _el$120 = _el$119.nextSibling, [_el$121, _co$25] = web.getNextMarker(_el$120.nextSibling);
|
|
1084
|
+
web.insert(_el$100, web.createComponent(CopyButton, {
|
|
1023
1085
|
getText: getMetricText,
|
|
1024
|
-
title
|
|
1086
|
+
get title() {
|
|
1087
|
+
return strings.copyMetric;
|
|
1088
|
+
},
|
|
1025
1089
|
position: "top-right"
|
|
1026
|
-
}), _el$
|
|
1027
|
-
web.insert(_el$
|
|
1028
|
-
web.insert(_el$
|
|
1029
|
-
web.insert(_el$
|
|
1090
|
+
}), _el$123, _co$26);
|
|
1091
|
+
web.insert(_el$103, () => metricParams.title);
|
|
1092
|
+
web.insert(_el$105, () => metricParams.value);
|
|
1093
|
+
web.insert(_el$104, web.createComponent(solidJs.Show, {
|
|
1030
1094
|
get when() {
|
|
1031
1095
|
return metricParams.unit;
|
|
1032
1096
|
},
|
|
1033
1097
|
get children() {
|
|
1034
|
-
var _el$
|
|
1035
|
-
web.insert(_el$
|
|
1036
|
-
return _el$
|
|
1098
|
+
var _el$106 = web.getNextElement(_tmpl$27);
|
|
1099
|
+
web.insert(_el$106, () => metricParams.unit);
|
|
1100
|
+
return _el$106;
|
|
1037
1101
|
}
|
|
1038
|
-
}), _el$
|
|
1039
|
-
web.insert(_el$
|
|
1102
|
+
}), _el$108, _co$21);
|
|
1103
|
+
web.insert(_el$101, web.createComponent(solidJs.Show, {
|
|
1040
1104
|
get when() {
|
|
1041
1105
|
return metricParams.trend;
|
|
1042
1106
|
},
|
|
1043
1107
|
get children() {
|
|
1044
|
-
var _el$
|
|
1045
|
-
_el$
|
|
1046
|
-
web.insert(_el$
|
|
1108
|
+
var _el$109 = web.getNextElement(_tmpl$28), _el$110 = _el$109.firstChild, _el$113 = _el$110.firstChild, [_el$114, _co$22] = web.getNextMarker(_el$113.nextSibling), _el$111 = _el$114.nextSibling, _el$115 = _el$111.nextSibling, [_el$116, _co$23] = web.getNextMarker(_el$115.nextSibling);
|
|
1109
|
+
_el$116.nextSibling;
|
|
1110
|
+
web.insert(_el$110, (() => {
|
|
1047
1111
|
var _c$ = web.memo(() => metricParams.trend.direction === "up");
|
|
1048
1112
|
return () => _c$() ? "�" : metricParams.trend.direction === "down" ? "�" : "�";
|
|
1049
|
-
})(), _el$
|
|
1050
|
-
web.insert(_el$
|
|
1051
|
-
web.effect(() => web.className(_el$
|
|
1052
|
-
return _el$
|
|
1113
|
+
})(), _el$114, _co$22);
|
|
1114
|
+
web.insert(_el$110, () => Math.abs(metricParams.trend.value), _el$116, _co$23);
|
|
1115
|
+
web.effect(() => web.className(_el$110, `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"}`));
|
|
1116
|
+
return _el$109;
|
|
1053
1117
|
}
|
|
1054
|
-
}), _el$
|
|
1055
|
-
web.insert(_el$
|
|
1118
|
+
}), _el$119, _co$24);
|
|
1119
|
+
web.insert(_el$101, web.createComponent(solidJs.Show, {
|
|
1056
1120
|
get when() {
|
|
1057
1121
|
return metricParams.subtitle;
|
|
1058
1122
|
},
|
|
1059
1123
|
get children() {
|
|
1060
|
-
var _el$
|
|
1061
|
-
web.insert(_el$
|
|
1062
|
-
return _el$
|
|
1124
|
+
var _el$117 = web.getNextElement(_tmpl$29);
|
|
1125
|
+
web.insert(_el$117, () => metricParams.subtitle);
|
|
1126
|
+
return _el$117;
|
|
1063
1127
|
}
|
|
1064
|
-
}), _el$
|
|
1065
|
-
return _el$
|
|
1128
|
+
}), _el$121, _co$25);
|
|
1129
|
+
return _el$100;
|
|
1066
1130
|
})();
|
|
1067
1131
|
}
|
|
1068
|
-
function extractImageFromMarkdown(content) {
|
|
1132
|
+
function extractImageFromMarkdown(content, fallbackAlt) {
|
|
1069
1133
|
const imagePattern = /\[!\[([^\]]*)\]\(([^)]+)\)\]\(([^)]+)\)\s*\*([^*]+)\*/;
|
|
1070
1134
|
const match = content.match(imagePattern);
|
|
1071
1135
|
if (match) {
|
|
1072
1136
|
return {
|
|
1073
|
-
alt: match[1] ||
|
|
1137
|
+
alt: match[1] || fallbackAlt,
|
|
1074
1138
|
imageUrl: match[2],
|
|
1075
1139
|
linkUrl: match[3],
|
|
1076
1140
|
credit: match[4].trim()
|
|
@@ -1079,10 +1143,11 @@ function extractImageFromMarkdown(content) {
|
|
|
1079
1143
|
return null;
|
|
1080
1144
|
}
|
|
1081
1145
|
function TextRenderer(props) {
|
|
1146
|
+
const strings = MCPUIStringsContext.useMCPUIStrings();
|
|
1082
1147
|
const textParams = props.component.params;
|
|
1083
1148
|
const imageData = solidJs.createMemo(() => {
|
|
1084
1149
|
if (textParams.markdown && textParams.content) {
|
|
1085
|
-
const extracted = extractImageFromMarkdown(textParams.content);
|
|
1150
|
+
const extracted = extractImageFromMarkdown(textParams.content, strings.imageAlt);
|
|
1086
1151
|
if (!extracted) return null;
|
|
1087
1152
|
const imageUrl = safeUrl.safeUrl(extracted.imageUrl, {
|
|
1088
1153
|
allowDataImage: true
|
|
@@ -1118,38 +1183,40 @@ function TextRenderer(props) {
|
|
|
1118
1183
|
},
|
|
1119
1184
|
get fallback() {
|
|
1120
1185
|
return (() => {
|
|
1121
|
-
var _el$
|
|
1122
|
-
web.insert(_el$
|
|
1186
|
+
var _el$124 = web.getNextElement(_tmpl$31), _el$125 = _el$124.firstChild, [_el$126, _co$27] = web.getNextMarker(_el$125.nextSibling), _el$127 = _el$126.nextSibling, [_el$128, _co$28] = web.getNextMarker(_el$127.nextSibling);
|
|
1187
|
+
web.insert(_el$124, web.createComponent(CopyButton, {
|
|
1123
1188
|
getText: getTextContent,
|
|
1124
|
-
title
|
|
1189
|
+
get title() {
|
|
1190
|
+
return strings.copyText;
|
|
1191
|
+
},
|
|
1125
1192
|
position: "top-right"
|
|
1126
|
-
}), _el$
|
|
1127
|
-
web.insert(_el$
|
|
1193
|
+
}), _el$126, _co$27);
|
|
1194
|
+
web.insert(_el$124, web.createComponent(SafeHtml.SafeHtml, {
|
|
1128
1195
|
get ["class"]() {
|
|
1129
1196
|
return `prose prose-sm dark:prose-invert max-w-none ${textParams.className || ""}`;
|
|
1130
1197
|
},
|
|
1131
1198
|
html: htmlContent
|
|
1132
|
-
}), _el$
|
|
1133
|
-
return _el$
|
|
1199
|
+
}), _el$128, _co$28);
|
|
1200
|
+
return _el$124;
|
|
1134
1201
|
})();
|
|
1135
1202
|
},
|
|
1136
1203
|
children: (data) => {
|
|
1137
1204
|
const image = () => (() => {
|
|
1138
|
-
var _el$
|
|
1205
|
+
var _el$129 = web.getNextElement(_tmpl$32);
|
|
1139
1206
|
web.effect((_p$) => {
|
|
1140
|
-
var _v$
|
|
1141
|
-
_v$
|
|
1142
|
-
_v$
|
|
1207
|
+
var _v$23 = data().imageUrl, _v$24 = data().alt;
|
|
1208
|
+
_v$23 !== _p$.e && web.setAttribute(_el$129, "src", _p$.e = _v$23);
|
|
1209
|
+
_v$24 !== _p$.t && web.setAttribute(_el$129, "alt", _p$.t = _v$24);
|
|
1143
1210
|
return _p$;
|
|
1144
1211
|
}, {
|
|
1145
1212
|
e: void 0,
|
|
1146
1213
|
t: void 0
|
|
1147
1214
|
});
|
|
1148
|
-
return _el$
|
|
1215
|
+
return _el$129;
|
|
1149
1216
|
})();
|
|
1150
1217
|
return (() => {
|
|
1151
|
-
var _el$
|
|
1152
|
-
web.insert(_el$
|
|
1218
|
+
var _el$130 = web.getNextElement(_tmpl$33), _el$131 = _el$130.firstChild, _el$132 = _el$131.nextSibling, _el$133 = _el$132.firstChild;
|
|
1219
|
+
web.insert(_el$131, web.createComponent(solidJs.Show, {
|
|
1153
1220
|
get when() {
|
|
1154
1221
|
return data().linkUrl;
|
|
1155
1222
|
},
|
|
@@ -1157,71 +1224,91 @@ function TextRenderer(props) {
|
|
|
1157
1224
|
return image();
|
|
1158
1225
|
},
|
|
1159
1226
|
children: (href) => (() => {
|
|
1160
|
-
var _el$
|
|
1161
|
-
web.insert(_el$
|
|
1162
|
-
web.effect(() => web.setAttribute(_el$
|
|
1163
|
-
return _el$
|
|
1227
|
+
var _el$134 = web.getNextElement(_tmpl$34);
|
|
1228
|
+
web.insert(_el$134, image);
|
|
1229
|
+
web.effect(() => web.setAttribute(_el$134, "href", href()));
|
|
1230
|
+
return _el$134;
|
|
1164
1231
|
})()
|
|
1165
1232
|
}));
|
|
1166
|
-
web.insert(_el$
|
|
1167
|
-
return _el$
|
|
1233
|
+
web.insert(_el$133, () => data().credit);
|
|
1234
|
+
return _el$130;
|
|
1168
1235
|
})();
|
|
1169
1236
|
}
|
|
1170
1237
|
});
|
|
1171
1238
|
}
|
|
1172
1239
|
function IframeRenderer(props) {
|
|
1240
|
+
const strings = MCPUIStringsContext.useMCPUIStrings();
|
|
1241
|
+
const config = MCPUIConfigContext.useMCPUIConfig();
|
|
1173
1242
|
const params = props.component.params;
|
|
1243
|
+
const trustOptions = () => ({
|
|
1244
|
+
customTrustedDomains: config.customTrustedIframeDomains
|
|
1245
|
+
});
|
|
1174
1246
|
return (() => {
|
|
1175
|
-
var _el$
|
|
1176
|
-
web.insert(_el$
|
|
1247
|
+
var _el$135 = web.getNextElement(_tmpl$36), _el$139 = _el$135.firstChild, [_el$140, _co$29] = web.getNextMarker(_el$139.nextSibling), _el$138 = _el$140.nextSibling, _el$141 = _el$138.nextSibling, [_el$142, _co$30] = web.getNextMarker(_el$141.nextSibling);
|
|
1248
|
+
web.insert(_el$135, web.createComponent(solidJs.Show, {
|
|
1177
1249
|
get when() {
|
|
1178
1250
|
return params.title;
|
|
1179
1251
|
},
|
|
1180
1252
|
get children() {
|
|
1181
|
-
var _el$
|
|
1182
|
-
web.insert(_el$
|
|
1183
|
-
return _el$
|
|
1253
|
+
var _el$136 = web.getNextElement(_tmpl$35), _el$137 = _el$136.firstChild;
|
|
1254
|
+
web.insert(_el$137, () => params.title);
|
|
1255
|
+
return _el$136;
|
|
1184
1256
|
}
|
|
1185
|
-
}), _el$
|
|
1257
|
+
}), _el$140, _co$29);
|
|
1258
|
+
web.insert(_el$135, web.createComponent(IframeFallbackLink.IframeFallbackLink, {
|
|
1259
|
+
get url() {
|
|
1260
|
+
return params.url;
|
|
1261
|
+
},
|
|
1262
|
+
"class": "border-t border-gray-200 dark:border-gray-700"
|
|
1263
|
+
}), _el$142, _co$30);
|
|
1186
1264
|
web.effect((_p$) => {
|
|
1187
|
-
var _v$
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1265
|
+
var _v$25 = params.url, _v$26 = params.title || strings.iframeTitle, _v$27 = `height: ${params.height || "400px"}; min-height: 300px;`, _v$28 = validation.getIframeSandbox(params.url, trustOptions()), _v$29 = iframeCoep.shouldSetCredentialless(params.url, config, {
|
|
1266
|
+
// This iframe's sandbox never carries `allow-same-origin` for an
|
|
1267
|
+
// untrusted host, so it already runs without cookies.
|
|
1268
|
+
sandboxedWithoutSameOrigin: !validation.isTrustedIframeDomain(params.url, trustOptions())
|
|
1269
|
+
}) || void 0;
|
|
1270
|
+
_v$25 !== _p$.e && web.setAttribute(_el$138, "src", _p$.e = _v$25);
|
|
1271
|
+
_v$26 !== _p$.t && web.setAttribute(_el$138, "title", _p$.t = _v$26);
|
|
1272
|
+
_p$.a = web.style(_el$138, _v$27, _p$.a);
|
|
1273
|
+
_v$28 !== _p$.o && web.setAttribute(_el$138, "sandbox", _p$.o = _v$28);
|
|
1274
|
+
_v$29 !== _p$.i && web.setAttribute(_el$138, "credentialless", _p$.i = _v$29);
|
|
1192
1275
|
return _p$;
|
|
1193
1276
|
}, {
|
|
1194
1277
|
e: void 0,
|
|
1195
1278
|
t: void 0,
|
|
1196
1279
|
a: void 0,
|
|
1197
|
-
o: void 0
|
|
1280
|
+
o: void 0,
|
|
1281
|
+
i: void 0
|
|
1198
1282
|
});
|
|
1199
|
-
return _el$
|
|
1283
|
+
return _el$135;
|
|
1200
1284
|
})();
|
|
1201
1285
|
}
|
|
1202
1286
|
function ImageRenderer(props) {
|
|
1287
|
+
const strings = MCPUIStringsContext.useMCPUIStrings();
|
|
1203
1288
|
const params = props.component.params;
|
|
1204
1289
|
return (() => {
|
|
1205
|
-
var _el$
|
|
1206
|
-
web.insert(_el$
|
|
1290
|
+
var _el$143 = web.getNextElement(_tmpl$38), _el$144 = _el$143.firstChild, _el$145 = _el$144.firstChild, _el$146 = _el$145.firstChild, _el$149 = _el$144.nextSibling, [_el$150, _co$31] = web.getNextMarker(_el$149.nextSibling);
|
|
1291
|
+
web.insert(_el$143, web.createComponent(solidJs.Show, {
|
|
1207
1292
|
get when() {
|
|
1208
1293
|
return params.caption;
|
|
1209
1294
|
},
|
|
1210
1295
|
get children() {
|
|
1211
|
-
var _el$
|
|
1212
|
-
web.insert(_el$
|
|
1213
|
-
return _el$
|
|
1296
|
+
var _el$147 = web.getNextElement(_tmpl$37), _el$148 = _el$147.firstChild;
|
|
1297
|
+
web.insert(_el$148, () => params.caption);
|
|
1298
|
+
return _el$147;
|
|
1214
1299
|
}
|
|
1215
|
-
}), _el$
|
|
1300
|
+
}), _el$150, _co$31);
|
|
1216
1301
|
web.effect((_p$) => {
|
|
1217
|
-
var _v$
|
|
1302
|
+
var _v$30 = `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$31 = safeUrl.safeUrl(params.url), _v$32 = formatString.formatMCPUIString(strings.imageViewFullSize, {
|
|
1303
|
+
alt: params.alt || strings.imageAltFallback
|
|
1304
|
+
}), _v$33 = safeUrl.safeUrl(params.url, {
|
|
1218
1305
|
allowDataImage: true
|
|
1219
|
-
}), _v$
|
|
1220
|
-
_v$
|
|
1221
|
-
_v$
|
|
1222
|
-
_v$
|
|
1223
|
-
_v$
|
|
1224
|
-
_v$
|
|
1306
|
+
}), _v$34 = params.alt || strings.imageAlt;
|
|
1307
|
+
_v$30 !== _p$.e && web.className(_el$143, _p$.e = _v$30);
|
|
1308
|
+
_v$31 !== _p$.t && web.setAttribute(_el$145, "href", _p$.t = _v$31);
|
|
1309
|
+
_v$32 !== _p$.a && web.setAttribute(_el$145, "aria-label", _p$.a = _v$32);
|
|
1310
|
+
_v$33 !== _p$.o && web.setAttribute(_el$146, "src", _p$.o = _v$33);
|
|
1311
|
+
_v$34 !== _p$.i && web.setAttribute(_el$146, "alt", _p$.i = _v$34);
|
|
1225
1312
|
return _p$;
|
|
1226
1313
|
}, {
|
|
1227
1314
|
e: void 0,
|
|
@@ -1230,30 +1317,34 @@ function ImageRenderer(props) {
|
|
|
1230
1317
|
o: void 0,
|
|
1231
1318
|
i: void 0
|
|
1232
1319
|
});
|
|
1233
|
-
return _el$
|
|
1320
|
+
return _el$143;
|
|
1234
1321
|
})();
|
|
1235
1322
|
}
|
|
1236
1323
|
function LinkRenderer(props) {
|
|
1324
|
+
const strings = MCPUIStringsContext.useMCPUIStrings();
|
|
1237
1325
|
const params = props.component.params;
|
|
1238
1326
|
return (() => {
|
|
1239
|
-
var _el$
|
|
1240
|
-
_el$
|
|
1241
|
-
web.insert(_el$
|
|
1242
|
-
web.insert(_el$
|
|
1327
|
+
var _el$151 = web.getNextElement(_tmpl$40), _el$152 = _el$151.firstChild, _el$153 = _el$152.nextSibling, _el$154 = _el$153.firstChild, _el$156 = _el$154.nextSibling, [_el$157, _co$32] = web.getNextMarker(_el$156.nextSibling);
|
|
1328
|
+
_el$151.$$click = (e) => e.stopPropagation();
|
|
1329
|
+
web.insert(_el$154, () => params.label || params.url);
|
|
1330
|
+
web.insert(_el$153, web.createComponent(solidJs.Show, {
|
|
1243
1331
|
get when() {
|
|
1244
1332
|
return params.description;
|
|
1245
1333
|
},
|
|
1246
1334
|
get children() {
|
|
1247
|
-
var _el$
|
|
1248
|
-
web.insert(_el$
|
|
1249
|
-
return _el$
|
|
1335
|
+
var _el$155 = web.getNextElement(_tmpl$39);
|
|
1336
|
+
web.insert(_el$155, () => params.description);
|
|
1337
|
+
return _el$155;
|
|
1250
1338
|
}
|
|
1251
|
-
}), _el$
|
|
1339
|
+
}), _el$157, _co$32);
|
|
1252
1340
|
web.effect((_p$) => {
|
|
1253
|
-
var _v$
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
_v$
|
|
1341
|
+
var _v$35 = safeUrl.safeUrl(params.url), _v$36 = formatString.formatMCPUIString(strings.linkOpensInNewTab, {
|
|
1342
|
+
label: params.label || strings.linkLabel,
|
|
1343
|
+
description: params.description || params.url
|
|
1344
|
+
}), _v$37 = `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 || ""}`;
|
|
1345
|
+
_v$35 !== _p$.e && web.setAttribute(_el$151, "href", _p$.e = _v$35);
|
|
1346
|
+
_v$36 !== _p$.t && web.setAttribute(_el$151, "aria-label", _p$.t = _v$36);
|
|
1347
|
+
_v$37 !== _p$.a && web.className(_el$151, _p$.a = _v$37);
|
|
1257
1348
|
return _p$;
|
|
1258
1349
|
}, {
|
|
1259
1350
|
e: void 0,
|
|
@@ -1261,13 +1352,15 @@ function LinkRenderer(props) {
|
|
|
1261
1352
|
a: void 0
|
|
1262
1353
|
});
|
|
1263
1354
|
web.runHydrationEvents();
|
|
1264
|
-
return _el$
|
|
1355
|
+
return _el$151;
|
|
1265
1356
|
})();
|
|
1266
1357
|
}
|
|
1267
1358
|
function ComponentRenderer(props) {
|
|
1268
1359
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
1269
1360
|
perf.markRenderStart(props.component.id);
|
|
1270
1361
|
const telemetry = MCPUITelemetryContext.useTelemetry();
|
|
1362
|
+
const strings = MCPUIStringsContext.useMCPUIStrings();
|
|
1363
|
+
const componentConfig = MCPUIConfigContext.useMCPUIConfig();
|
|
1271
1364
|
solidJs.onMount(() => {
|
|
1272
1365
|
perf.markRenderEnd(props.component.id);
|
|
1273
1366
|
if (telemetry) {
|
|
@@ -1303,7 +1396,10 @@ function ComponentRenderer(props) {
|
|
|
1303
1396
|
});
|
|
1304
1397
|
}
|
|
1305
1398
|
});
|
|
1306
|
-
const validation$1 = validation.validateComponent(props.component
|
|
1399
|
+
const validation$1 = validation.validateComponent(props.component, {
|
|
1400
|
+
iframePolicy: componentConfig.iframePolicy,
|
|
1401
|
+
customIframeDomains: componentConfig.customIframeDomains
|
|
1402
|
+
});
|
|
1307
1403
|
if (!validation$1.valid) {
|
|
1308
1404
|
(_a = props.onError) == null ? void 0 : _a.call(props, {
|
|
1309
1405
|
type: "validation",
|
|
@@ -1322,7 +1418,7 @@ function ComponentRenderer(props) {
|
|
|
1322
1418
|
});
|
|
1323
1419
|
}
|
|
1324
1420
|
const mode = props.errorMode ?? "block";
|
|
1325
|
-
const firstError = ((_f = (_e = validation$1.errors) == null ? void 0 : _e[0]) == null ? void 0 : _f.message) ||
|
|
1421
|
+
const firstError = ((_f = (_e = validation$1.errors) == null ? void 0 : _e[0]) == null ? void 0 : _f.message) || strings.validationUnknownError;
|
|
1326
1422
|
if ((_g = validation$1.errors) == null ? void 0 : _g.some((e) => e.code === "UNKNOWN_COMPONENT_TYPE")) {
|
|
1327
1423
|
return web.createComponent(UnsupportedComponentFallback, {
|
|
1328
1424
|
get component() {
|
|
@@ -1335,16 +1431,20 @@ function ComponentRenderer(props) {
|
|
|
1335
1431
|
}
|
|
1336
1432
|
if (mode === "inline-warn") {
|
|
1337
1433
|
return (() => {
|
|
1338
|
-
var _el$
|
|
1339
|
-
web.setAttribute(_el$
|
|
1340
|
-
web.insert(_el$
|
|
1341
|
-
|
|
1434
|
+
var _el$158 = web.getNextElement(_tmpl$41), _el$159 = _el$158.firstChild, _el$160 = _el$159.nextSibling;
|
|
1435
|
+
web.setAttribute(_el$158, "title", firstError);
|
|
1436
|
+
web.insert(_el$160, () => formatString.formatMCPUIString(strings.invalidComponent, {
|
|
1437
|
+
type: props.component.type
|
|
1438
|
+
}));
|
|
1439
|
+
web.effect(() => web.setAttribute(_el$158, "aria-label", strings.validationWarning));
|
|
1440
|
+
return _el$158;
|
|
1342
1441
|
})();
|
|
1343
1442
|
}
|
|
1344
1443
|
return (() => {
|
|
1345
|
-
var _el$
|
|
1346
|
-
web.insert(_el$
|
|
1347
|
-
|
|
1444
|
+
var _el$161 = web.getNextElement(_tmpl$42), _el$162 = _el$161.firstChild, _el$163 = _el$162.nextSibling;
|
|
1445
|
+
web.insert(_el$162, () => strings.validationError);
|
|
1446
|
+
web.insert(_el$163, firstError);
|
|
1447
|
+
return _el$161;
|
|
1348
1448
|
})();
|
|
1349
1449
|
}
|
|
1350
1450
|
return web.createComponent(GenerativeUIErrorBoundary.GenerativeUIErrorBoundary, {
|
|
@@ -1636,10 +1736,12 @@ function ComponentRenderer(props) {
|
|
|
1636
1736
|
});
|
|
1637
1737
|
}
|
|
1638
1738
|
function UnsupportedComponentFallback(props) {
|
|
1739
|
+
const strings = MCPUIStringsContext.useMCPUIStrings();
|
|
1639
1740
|
return (() => {
|
|
1640
|
-
var _el$
|
|
1641
|
-
web.insert(_el$
|
|
1642
|
-
|
|
1741
|
+
var _el$164 = web.getNextElement(_tmpl$43), _el$167 = _el$164.firstChild, [_el$168, _co$33] = web.getNextMarker(_el$167.nextSibling), _el$165 = _el$168.nextSibling, _el$166 = _el$165.nextSibling;
|
|
1742
|
+
web.insert(_el$164, () => strings.unsupportedComponentType, _el$168, _co$33);
|
|
1743
|
+
web.insert(_el$166, () => props.component.type);
|
|
1744
|
+
return _el$164;
|
|
1643
1745
|
})();
|
|
1644
1746
|
}
|
|
1645
1747
|
function ActionRenderer(props) {
|
|
@@ -1679,27 +1781,27 @@ function ActionRenderer(props) {
|
|
|
1679
1781
|
const isDisabled = () => params.disabled || isExecutable() && isExecuting();
|
|
1680
1782
|
if (params.type === "link" || params.action === "link") {
|
|
1681
1783
|
return (() => {
|
|
1682
|
-
var _el$
|
|
1683
|
-
_el$
|
|
1684
|
-
web.insert(_el$
|
|
1784
|
+
var _el$169 = web.getNextElement(_tmpl$45), _el$171 = _el$169.firstChild, [_el$172, _co$34] = web.getNextMarker(_el$171.nextSibling), _el$173 = _el$172.nextSibling, [_el$174, _co$35] = web.getNextMarker(_el$173.nextSibling);
|
|
1785
|
+
_el$169.$$click = handleClick;
|
|
1786
|
+
web.insert(_el$169, web.createComponent(solidJs.Show, {
|
|
1685
1787
|
get when() {
|
|
1686
1788
|
return params.icon;
|
|
1687
1789
|
},
|
|
1688
1790
|
get children() {
|
|
1689
|
-
var _el$
|
|
1690
|
-
web.insert(_el$
|
|
1691
|
-
return _el$
|
|
1791
|
+
var _el$170 = web.getNextElement(_tmpl$44);
|
|
1792
|
+
web.insert(_el$170, () => params.icon);
|
|
1793
|
+
return _el$170;
|
|
1692
1794
|
}
|
|
1693
|
-
}), _el$
|
|
1694
|
-
web.insert(_el$
|
|
1795
|
+
}), _el$172, _co$34);
|
|
1796
|
+
web.insert(_el$169, () => params.label, _el$174, _co$35);
|
|
1695
1797
|
web.effect((_p$) => {
|
|
1696
|
-
var _v$
|
|
1798
|
+
var _v$38 = safeUrl.safeUrl(params.url) ?? "#", _v$39 = safeUrl.safeUrl(params.url) ? "_blank" : void 0, _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
|
|
1697
1799
|
${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"}
|
|
1698
1800
|
${params.className || ""}`;
|
|
1699
|
-
_v$
|
|
1700
|
-
_v$
|
|
1701
|
-
_v$
|
|
1702
|
-
_v$
|
|
1801
|
+
_v$38 !== _p$.e && web.setAttribute(_el$169, "href", _p$.e = _v$38);
|
|
1802
|
+
_v$39 !== _p$.t && web.setAttribute(_el$169, "target", _p$.t = _v$39);
|
|
1803
|
+
_v$40 !== _p$.a && web.setAttribute(_el$169, "aria-label", _p$.a = _v$40);
|
|
1804
|
+
_v$41 !== _p$.o && web.className(_el$169, _p$.o = _v$41);
|
|
1703
1805
|
return _p$;
|
|
1704
1806
|
}, {
|
|
1705
1807
|
e: void 0,
|
|
@@ -1708,41 +1810,41 @@ function ActionRenderer(props) {
|
|
|
1708
1810
|
o: void 0
|
|
1709
1811
|
});
|
|
1710
1812
|
web.runHydrationEvents();
|
|
1711
|
-
return _el$
|
|
1813
|
+
return _el$169;
|
|
1712
1814
|
})();
|
|
1713
1815
|
}
|
|
1714
1816
|
return (() => {
|
|
1715
|
-
var _el$
|
|
1716
|
-
_el$
|
|
1717
|
-
web.insert(_el$
|
|
1817
|
+
var _el$175 = web.getNextElement(_tmpl$47), _el$178 = _el$175.firstChild, [_el$179, _co$36] = web.getNextMarker(_el$178.nextSibling), _el$180 = _el$179.nextSibling, [_el$181, _co$37] = web.getNextMarker(_el$180.nextSibling), _el$182 = _el$181.nextSibling, [_el$183, _co$38] = web.getNextMarker(_el$182.nextSibling);
|
|
1818
|
+
_el$175.$$click = handleClick;
|
|
1819
|
+
web.insert(_el$175, web.createComponent(solidJs.Show, {
|
|
1718
1820
|
get when() {
|
|
1719
1821
|
return web.memo(() => !!isExecuting())() && isExecutable();
|
|
1720
1822
|
},
|
|
1721
1823
|
get children() {
|
|
1722
|
-
return web.getNextElement(_tmpl$
|
|
1824
|
+
return web.getNextElement(_tmpl$46);
|
|
1723
1825
|
}
|
|
1724
|
-
}), _el$
|
|
1725
|
-
web.insert(_el$
|
|
1826
|
+
}), _el$179, _co$36);
|
|
1827
|
+
web.insert(_el$175, web.createComponent(solidJs.Show, {
|
|
1726
1828
|
get when() {
|
|
1727
1829
|
return web.memo(() => !!params.icon)() && !(isExecuting() && isExecutable());
|
|
1728
1830
|
},
|
|
1729
1831
|
get children() {
|
|
1730
|
-
var _el$
|
|
1731
|
-
web.insert(_el$
|
|
1732
|
-
return _el$
|
|
1832
|
+
var _el$177 = web.getNextElement(_tmpl$44);
|
|
1833
|
+
web.insert(_el$177, () => params.icon);
|
|
1834
|
+
return _el$177;
|
|
1733
1835
|
}
|
|
1734
|
-
}), _el$
|
|
1735
|
-
web.insert(_el$
|
|
1836
|
+
}), _el$181, _co$37);
|
|
1837
|
+
web.insert(_el$175, () => params.label, _el$183, _co$38);
|
|
1736
1838
|
web.effect((_p$) => {
|
|
1737
|
-
var _v$
|
|
1839
|
+
var _v$42 = isDisabled(), _v$43 = isExecuting() && isExecutable(), _v$44 = params.ariaLabel || params.label, _v$45 = `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
|
|
1738
1840
|
${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"}
|
|
1739
1841
|
${isDisabled() ? "opacity-50 cursor-not-allowed" : ""}
|
|
1740
1842
|
${params.size === "sm" ? "px-3 py-1.5 text-xs" : params.size === "lg" ? "px-6 py-3 text-base" : ""}
|
|
1741
1843
|
${params.className || ""}`;
|
|
1742
|
-
_v$
|
|
1743
|
-
_v$
|
|
1744
|
-
_v$
|
|
1745
|
-
_v$
|
|
1844
|
+
_v$42 !== _p$.e && web.setProperty(_el$175, "disabled", _p$.e = _v$42);
|
|
1845
|
+
_v$43 !== _p$.t && web.setAttribute(_el$175, "aria-busy", _p$.t = _v$43);
|
|
1846
|
+
_v$44 !== _p$.a && web.setAttribute(_el$175, "aria-label", _p$.a = _v$44);
|
|
1847
|
+
_v$45 !== _p$.o && web.className(_el$175, _p$.o = _v$45);
|
|
1746
1848
|
return _p$;
|
|
1747
1849
|
}, {
|
|
1748
1850
|
e: void 0,
|
|
@@ -1751,63 +1853,76 @@ function ActionRenderer(props) {
|
|
|
1751
1853
|
o: void 0
|
|
1752
1854
|
});
|
|
1753
1855
|
web.runHydrationEvents();
|
|
1754
|
-
return _el$
|
|
1856
|
+
return _el$175;
|
|
1755
1857
|
})();
|
|
1756
1858
|
}
|
|
1757
1859
|
function ErrorCardRenderer(props) {
|
|
1860
|
+
const strings = MCPUIStringsContext.useMCPUIStrings();
|
|
1861
|
+
const [mounted, setMounted] = solidJs.createSignal(false);
|
|
1862
|
+
solidJs.onMount(() => setMounted(true));
|
|
1758
1863
|
const getErrorText = () => {
|
|
1759
|
-
return
|
|
1864
|
+
return formatString.formatMCPUIString(strings.errorCopyText, {
|
|
1865
|
+
tool: props.error.tool || strings.errorUnknownTool,
|
|
1866
|
+
message: props.error.message || strings.errorUnknown
|
|
1867
|
+
});
|
|
1760
1868
|
};
|
|
1761
1869
|
return (() => {
|
|
1762
|
-
var _el$
|
|
1763
|
-
web.insert(_el$
|
|
1870
|
+
var _el$184 = web.getNextElement(_tmpl$51), _el$201 = _el$184.firstChild, [_el$202, _co$42] = web.getNextMarker(_el$201.nextSibling), _el$185 = _el$202.nextSibling, _el$186 = _el$185.firstChild, _el$187 = _el$186.nextSibling, _el$188 = _el$187.firstChild, _el$189 = _el$188.nextSibling, _el$195 = _el$189.nextSibling, [_el$196, _co$39] = web.getNextMarker(_el$195.nextSibling), _el$197 = _el$196.nextSibling, [_el$198, _co$40] = web.getNextMarker(_el$197.nextSibling), _el$199 = _el$198.nextSibling, [_el$200, _co$41] = web.getNextMarker(_el$199.nextSibling);
|
|
1871
|
+
web.insert(_el$184, web.createComponent(CopyButton, {
|
|
1764
1872
|
getText: getErrorText,
|
|
1765
|
-
title
|
|
1873
|
+
get title() {
|
|
1874
|
+
return strings.copyErrorDetails;
|
|
1875
|
+
},
|
|
1766
1876
|
position: "top-right"
|
|
1767
|
-
}), _el$
|
|
1768
|
-
web.insert(_el$
|
|
1769
|
-
|
|
1770
|
-
|
|
1877
|
+
}), _el$202, _co$42);
|
|
1878
|
+
web.insert(_el$188, () => formatString.formatMCPUIString(strings.toolErrorTitle, {
|
|
1879
|
+
tool: props.error.tool || strings.errorUnknownToolName
|
|
1880
|
+
}));
|
|
1881
|
+
web.insert(_el$189, () => props.error.message || strings.errorToolExecution);
|
|
1882
|
+
web.insert(_el$187, web.createComponent(solidJs.Show, {
|
|
1771
1883
|
get when() {
|
|
1772
1884
|
return props.error.type;
|
|
1773
1885
|
},
|
|
1774
1886
|
get children() {
|
|
1775
|
-
var _el$
|
|
1776
|
-
web.insert(_el$
|
|
1777
|
-
|
|
1887
|
+
var _el$190 = web.getNextElement(_tmpl$48);
|
|
1888
|
+
web.insert(_el$190, () => formatString.formatMCPUIString(strings.errorTypeLabel, {
|
|
1889
|
+
type: props.error.type
|
|
1890
|
+
}));
|
|
1891
|
+
return _el$190;
|
|
1778
1892
|
}
|
|
1779
|
-
}), _el$
|
|
1780
|
-
web.insert(_el$
|
|
1893
|
+
}), _el$196, _co$39);
|
|
1894
|
+
web.insert(_el$187, web.createComponent(solidJs.Show, {
|
|
1781
1895
|
get when() {
|
|
1782
1896
|
var _a;
|
|
1783
1897
|
return (_a = props.error.suggestions) == null ? void 0 : _a.length;
|
|
1784
1898
|
},
|
|
1785
1899
|
get children() {
|
|
1786
|
-
var _el$
|
|
1787
|
-
web.insert(_el$
|
|
1900
|
+
var _el$191 = web.getNextElement(_tmpl$49), _el$192 = _el$191.firstChild, _el$193 = _el$192.nextSibling;
|
|
1901
|
+
web.insert(_el$192, () => strings.errorSuggestions);
|
|
1902
|
+
web.insert(_el$193, web.createComponent(solidJs.For, {
|
|
1788
1903
|
get each() {
|
|
1789
1904
|
return props.error.suggestions;
|
|
1790
1905
|
},
|
|
1791
1906
|
children: (suggestion) => (() => {
|
|
1792
|
-
var _el$
|
|
1793
|
-
web.insert(_el$
|
|
1794
|
-
return _el$
|
|
1907
|
+
var _el$203 = web.getNextElement(_tmpl$52);
|
|
1908
|
+
web.insert(_el$203, suggestion);
|
|
1909
|
+
return _el$203;
|
|
1795
1910
|
})()
|
|
1796
1911
|
}));
|
|
1797
|
-
return _el$
|
|
1912
|
+
return _el$191;
|
|
1798
1913
|
}
|
|
1799
|
-
}), _el$
|
|
1800
|
-
web.insert(_el$
|
|
1914
|
+
}), _el$198, _co$40);
|
|
1915
|
+
web.insert(_el$187, web.createComponent(solidJs.Show, {
|
|
1801
1916
|
get when() {
|
|
1802
|
-
return props.error.timestamp;
|
|
1917
|
+
return web.memo(() => !!mounted())() && props.error.timestamp;
|
|
1803
1918
|
},
|
|
1804
1919
|
get children() {
|
|
1805
|
-
var _el$
|
|
1806
|
-
web.insert(_el$
|
|
1807
|
-
return _el$
|
|
1920
|
+
var _el$194 = web.getNextElement(_tmpl$50);
|
|
1921
|
+
web.insert(_el$194, () => new Date(props.error.timestamp).toLocaleString(strings.locale));
|
|
1922
|
+
return _el$194;
|
|
1808
1923
|
}
|
|
1809
|
-
}), _el$
|
|
1810
|
-
return _el$
|
|
1924
|
+
}), _el$200, _co$41);
|
|
1925
|
+
return _el$184;
|
|
1811
1926
|
})();
|
|
1812
1927
|
}
|
|
1813
1928
|
function isErrorResponse(content) {
|
|
@@ -1818,6 +1933,7 @@ function isUIResource(content) {
|
|
|
1818
1933
|
return content && typeof content === "object" && (((_a = content.uri) == null ? void 0 : _a.startsWith("ui://")) || ((_b = content.content) == null ? void 0 : _b.type) === "rawHtml" || ((_c = content.content) == null ? void 0 : _c.htmlString));
|
|
1819
1934
|
}
|
|
1820
1935
|
function UIResourceHtmlRenderer(props) {
|
|
1936
|
+
const strings = MCPUIStringsContext.useMCPUIStrings();
|
|
1821
1937
|
const htmlContent = () => {
|
|
1822
1938
|
var _a;
|
|
1823
1939
|
if ((_a = props.resource.content) == null ? void 0 : _a.htmlString) {
|
|
@@ -1827,26 +1943,26 @@ function UIResourceHtmlRenderer(props) {
|
|
|
1827
1943
|
};
|
|
1828
1944
|
const resourceTitle = () => {
|
|
1829
1945
|
var _a, _b;
|
|
1830
|
-
return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || ((_b = props.resource.uri) == null ? void 0 : _b.replace("ui://deposium/", "")) ||
|
|
1946
|
+
return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || ((_b = props.resource.uri) == null ? void 0 : _b.replace("ui://deposium/", "")) || strings.resourceTitle;
|
|
1831
1947
|
};
|
|
1832
1948
|
return (() => {
|
|
1833
|
-
var _el$
|
|
1834
|
-
web.insert(_el$
|
|
1949
|
+
var _el$204 = web.getNextElement(_tmpl$54), _el$207 = _el$204.firstChild, [_el$208, _co$43] = web.getNextMarker(_el$207.nextSibling), _el$209 = _el$208.nextSibling, [_el$210, _co$44] = web.getNextMarker(_el$209.nextSibling);
|
|
1950
|
+
web.insert(_el$204, web.createComponent(solidJs.Show, {
|
|
1835
1951
|
get when() {
|
|
1836
1952
|
var _a;
|
|
1837
1953
|
return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || props.resource.uri;
|
|
1838
1954
|
},
|
|
1839
1955
|
get children() {
|
|
1840
|
-
var _el$
|
|
1841
|
-
web.insert(_el$
|
|
1842
|
-
return _el$
|
|
1956
|
+
var _el$205 = web.getNextElement(_tmpl$53), _el$206 = _el$205.firstChild;
|
|
1957
|
+
web.insert(_el$206, resourceTitle);
|
|
1958
|
+
return _el$205;
|
|
1843
1959
|
}
|
|
1844
|
-
}), _el$
|
|
1845
|
-
web.insert(_el$
|
|
1960
|
+
}), _el$208, _co$43);
|
|
1961
|
+
web.insert(_el$204, web.createComponent(SafeHtml.SafeHtml, {
|
|
1846
1962
|
"class": "p-4 prose prose-sm dark:prose-invert max-w-none",
|
|
1847
1963
|
html: htmlContent
|
|
1848
|
-
}), _el$
|
|
1849
|
-
return _el$
|
|
1964
|
+
}), _el$210, _co$44);
|
|
1965
|
+
return _el$204;
|
|
1850
1966
|
})();
|
|
1851
1967
|
}
|
|
1852
1968
|
const UIResourceRenderer = (props) => {
|
|
@@ -1952,8 +2068,8 @@ const UIResourceRenderer = (props) => {
|
|
|
1952
2068
|
return web.createComponent(RenderContext.RenderProvider, {
|
|
1953
2069
|
renderComponent,
|
|
1954
2070
|
get children() {
|
|
1955
|
-
var _el$
|
|
1956
|
-
web.spread(_el$
|
|
2071
|
+
var _el$211 = web.getNextElement(_tmpl$55), _el$212 = _el$211.firstChild, _el$213 = _el$212.nextSibling, [_el$214, _co$45] = web.getNextMarker(_el$213.nextSibling);
|
|
2072
|
+
web.spread(_el$211, web.mergeProps({
|
|
1957
2073
|
get ["class"]() {
|
|
1958
2074
|
return `w-full ${props.class || ""}`;
|
|
1959
2075
|
}
|
|
@@ -1963,14 +2079,14 @@ const UIResourceRenderer = (props) => {
|
|
|
1963
2079
|
"data-mcp-ui-component-id": outerKey()
|
|
1964
2080
|
}), false, true);
|
|
1965
2081
|
var _ref$3 = responsiveGrid.ref;
|
|
1966
|
-
typeof _ref$3 === "function" ? web.use(_ref$3, _el$
|
|
1967
|
-
web.insert(_el$
|
|
2082
|
+
typeof _ref$3 === "function" ? web.use(_ref$3, _el$212) : responsiveGrid.ref = _el$212;
|
|
2083
|
+
web.insert(_el$212, web.createComponent(solidJs.For, {
|
|
1968
2084
|
get each() {
|
|
1969
2085
|
return layout().components;
|
|
1970
2086
|
},
|
|
1971
2087
|
children: (component) => (() => {
|
|
1972
|
-
var _el$
|
|
1973
|
-
web.insert(_el$
|
|
2088
|
+
var _el$215 = web.getNextElement(_tmpl$56);
|
|
2089
|
+
web.insert(_el$215, web.createComponent(ComponentRenderer, {
|
|
1974
2090
|
component,
|
|
1975
2091
|
get onError() {
|
|
1976
2092
|
return props.onError;
|
|
@@ -1986,18 +2102,18 @@ const UIResourceRenderer = (props) => {
|
|
|
1986
2102
|
}
|
|
1987
2103
|
}));
|
|
1988
2104
|
web.effect((_p$) => {
|
|
1989
|
-
var _v$
|
|
1990
|
-
_p$.e = web.style(_el$
|
|
1991
|
-
_v$
|
|
2105
|
+
var _v$48 = getGridStyleString(component), _v$49 = stableKey.getUiResourceStableKey(component);
|
|
2106
|
+
_p$.e = web.style(_el$215, _v$48, _p$.e);
|
|
2107
|
+
_v$49 !== _p$.t && web.setAttribute(_el$215, "data-mcp-ui-component-id", _p$.t = _v$49);
|
|
1992
2108
|
return _p$;
|
|
1993
2109
|
}, {
|
|
1994
2110
|
e: void 0,
|
|
1995
2111
|
t: void 0
|
|
1996
2112
|
});
|
|
1997
|
-
return _el$
|
|
2113
|
+
return _el$215;
|
|
1998
2114
|
})()
|
|
1999
2115
|
}));
|
|
2000
|
-
web.insert(_el$
|
|
2116
|
+
web.insert(_el$211, web.createComponent(solidJs.Show, {
|
|
2001
2117
|
get when() {
|
|
2002
2118
|
return shouldShowAutoFooter();
|
|
2003
2119
|
},
|
|
@@ -2008,18 +2124,18 @@ const UIResourceRenderer = (props) => {
|
|
|
2008
2124
|
}
|
|
2009
2125
|
});
|
|
2010
2126
|
}
|
|
2011
|
-
}), _el$
|
|
2127
|
+
}), _el$214, _co$45);
|
|
2012
2128
|
web.effect((_p$) => {
|
|
2013
|
-
var _v$
|
|
2014
|
-
_p$.e = web.style(_el$
|
|
2015
|
-
_v$
|
|
2129
|
+
var _v$46 = gridContainerStyle(), _v$47 = responsiveGrid.stacked();
|
|
2130
|
+
_p$.e = web.style(_el$212, _v$46, _p$.e);
|
|
2131
|
+
_v$47 !== _p$.t && web.setAttribute(_el$212, "data-mcp-ui-stacked", _p$.t = _v$47);
|
|
2016
2132
|
return _p$;
|
|
2017
2133
|
}, {
|
|
2018
2134
|
e: void 0,
|
|
2019
2135
|
t: void 0
|
|
2020
2136
|
});
|
|
2021
2137
|
web.runHydrationEvents();
|
|
2022
|
-
return _el$
|
|
2138
|
+
return _el$211;
|
|
2023
2139
|
}
|
|
2024
2140
|
});
|
|
2025
2141
|
};
|