@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
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
import { createComponent, getNextElement, getNextMarker, spread, mergeProps, use, insert, effect, style, setAttribute, runHydrationEvents, template, className,
|
|
1
|
+
import { createComponent, getNextElement, getNextMarker, spread, mergeProps, use, insert, effect, style, setAttribute, runHydrationEvents, memo, template, className, isServer, setProperty, addEventListener, classList, setStyleProperty, delegateEvents } from "solid-js/web";
|
|
2
2
|
import { createMemo, onMount, onCleanup, For, Show, createSignal, createEffect } from "solid-js";
|
|
3
3
|
import { sanitizeHtml, SANITIZE_PROFILES, canSanitizeHtml } from "../utils/sanitize-html.js";
|
|
4
4
|
import { escapeHtml } from "../utils/escape-html.js";
|
|
5
5
|
import { safeUrl } from "../utils/safe-url.js";
|
|
6
6
|
import { SafeHtml } from "./SafeHtml.js";
|
|
7
|
-
import { validateComponent, getIframeSandbox, DEFAULT_RESOURCE_LIMITS } from "../services/validation.js";
|
|
7
|
+
import { validateComponent, getIframeSandbox, isTrustedIframeDomain, DEFAULT_RESOURCE_LIMITS } from "../services/validation.js";
|
|
8
8
|
import { GenerativeUIErrorBoundary } from "./GenerativeUIErrorBoundary.js";
|
|
9
9
|
import { markRenderStart, markRenderEnd, PERF_PREFIX } from "../utils/perf.js";
|
|
10
10
|
import { isDebugEnabled } from "../utils/logger.js";
|
|
11
11
|
import { getUiResourceStableKey } from "../utils/stable-key.js";
|
|
12
12
|
import { _registerMount, _unregisterMount, getDuplicateMountReporter } from "../utils/duplicate-mount-registry.js";
|
|
13
13
|
import { useTelemetry } from "../context/MCPUITelemetryContext.js";
|
|
14
|
-
import { useMCPUIStrings } from "../context/MCPUIStringsContext.js";
|
|
14
|
+
import { useMCPUIStrings, DEFAULT_MCPUI_STRINGS } from "../context/MCPUIStringsContext.js";
|
|
15
|
+
import { useMCPUIConfig } from "../context/MCPUIConfigContext.js";
|
|
16
|
+
import { shouldSetCredentialless } from "../utils/iframe-coep.js";
|
|
17
|
+
import { IframeFallbackLink } from "./IframeFallbackLink.js";
|
|
15
18
|
import { GridRenderer } from "./GridRenderer.js";
|
|
16
19
|
import { FooterRenderer } from "./FooterRenderer.js";
|
|
17
20
|
import { CarouselRenderer } from "./CarouselRenderer.js";
|
|
@@ -33,8 +36,10 @@ import { RenderProvider } from "./RenderContext.js";
|
|
|
33
36
|
import { useAction } from "../hooks/useAction.js";
|
|
34
37
|
import { createResponsiveGrid } from "../hooks/createResponsiveGrid.js";
|
|
35
38
|
import { marked } from "marked";
|
|
36
|
-
var _tmpl$ = /* @__PURE__ */ template(`<svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z">`), _tmpl$2 = /* @__PURE__ */ template(`<button data-mcp-ui-action=copy type=button>`), _tmpl$3 = /* @__PURE__ */ template(`<svg class="w-3 h-3 text-green-500"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M5 13l4 4L19 7">`), _tmpl$4 = /* @__PURE__ */ template(`<div class="p-4 bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700"><p class="text-red-500 dark:text-red-400 text-sm">Invalid chart data: missing data.datasets`), _tmpl$5 = /* @__PURE__ */ template(`<div class=p-3>`), _tmpl$6 = /* @__PURE__ */ template(`<div class="absolute inset-0 flex items-center justify-center"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600">`), _tmpl$7 = /* @__PURE__ */ template(`<div class="absolute inset-0 flex items-center justify-center p-4"><div class=text-center><p class="text-red-600 dark:text-red-400 text-sm font-medium">Chart Error</p><p class="text-gray-600 dark:text-gray-400 text-xs mt-1">`), _tmpl$8 = /* @__PURE__ */ template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3">`), _tmpl$9 = /* @__PURE__ */ template(`<div class="w-full h-full p-4"><!$><!/><div class="w-full h-full"role=img><img class="w-full h-auto max-h-[300px] object-contain">`), _tmpl$0 = /* @__PURE__ */ template(`<div class="relative w-full h-full min-h-[300px] bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden"><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$1 = /* @__PURE__ */ template(`<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">`), _tmpl$10 = /* @__PURE__ */ template(`<tr>`), _tmpl$11 = /* @__PURE__ */ template(`<td class="px-6 py-4 text-sm text-gray-700 dark:text-gray-200 whitespace-normal break-words leading-relaxed first:pl-6 last:pr-6">`), _tmpl$12 = /* @__PURE__ */ template(`<tbody class="bg-white dark:bg-gray-800 relative">`), _tmpl$13 = /* @__PURE__ */ template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Copy TSV`), _tmpl$14 = /* @__PURE__ */ template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download CSV`), _tmpl$15 = /* @__PURE__ */ template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download JSON`), _tmpl$16 = /* @__PURE__ */ template(`<div class="absolute right-10 top-2 z-10"><button class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"title="Export table"aria-label="Export table"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__ */ template(`<span class="ml-2 text-xs font-normal text-gray-400">(virtualized: <!$><!/> rows)`), _tmpl$18 = /* @__PURE__ */ template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3 flex-shrink-0"><!$><!/><!$><!/>`), _tmpl$19 = /* @__PURE__ */ 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__ */ 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__ */ template(`<p class="text-xs text-gray-500 dark:text-gray-400 mb-2"><!$><!/> result<!$><!/> on <!$><!/>`), _tmpl$22 = /* @__PURE__ */ 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__ */ 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__ */ template(`<span class=text-gray-400>/ page`), _tmpl$25 = /* @__PURE__ */ 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__ */ 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__ */ 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__ */ template(`<option>`), _tmpl$29 = /* @__PURE__ */ template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$30 = /* @__PURE__ */ template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$31 = /* @__PURE__ */ template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$32 = /* @__PURE__ */ template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><div class="flex flex-col h-full justify-between"><div><p class="text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide"></p><div class="mt-2 flex items-baseline"><p class="text-2xl font-semibold text-gray-900 dark:text-white"></p><!$><!/></div></div><!$><!/><!$><!/>`), _tmpl$33 = /* @__PURE__ */ template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><!$><!/>`), _tmpl$34 = /* @__PURE__ */ 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__ */ 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__ */ template(`<a target=_blank rel="noopener noreferrer"class=cursor-zoom-in>`), _tmpl$37 = /* @__PURE__ */ template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white">`), _tmpl$38 = /* @__PURE__ */ template(`<div class="w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col"><!$><!/><iframe class="w-full border-0 flex-1"loading=lazy>`, true, false, false), _tmpl$39 = /* @__PURE__ */ template(`<figcaption class="p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800"><p class="text-sm text-gray-600 dark:text-gray-400 text-center">`), _tmpl$40 = /* @__PURE__ */ template(`<figure><div class="flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]"><a target=_blank rel="noopener noreferrer"class="cursor-zoom-in focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded"><img class="max-w-full max-h-[500px] object-contain rounded shadow-sm hover:opacity-95 transition-opacity"loading=lazy></a></div><!$><!/>`, true, false, false), _tmpl$41 = /* @__PURE__ */ template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$42 = /* @__PURE__ */ template(`<a target=_blank rel="noopener noreferrer"><div class="p-2 bg-blue-50 dark:bg-blue-900/30 rounded-full text-blue-600 dark:text-blue-400 group-hover:bg-blue-100 dark:group-hover:bg-blue-900/50 shrink-0 transition-colors"aria-hidden=true><svg xmlns=http://www.w3.org/2000/svg class="w-5 h-5"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></div><div class="flex-1 min-w-0"><h4 class="text-sm font-medium text-gray-900 dark:text-white truncate group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors"></h4><!$><!/></div><svg xmlns=http://www.w3.org/2000/svg class="w-4 h-4 text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 shrink-0 transition-colors"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1=10 y1=14 x2=21 y2=3>`), _tmpl$43 = /* @__PURE__ */ 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__ */ 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__ */ 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__ */ template(`<span aria-hidden=true>`), _tmpl$47 = /* @__PURE__ */ template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$48 = /* @__PURE__ */ template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$49 = /* @__PURE__ */ template(`<button type=button><!$><!/><!$><!/><!$><!/>`), _tmpl$50 = /* @__PURE__ */ template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$51 = /* @__PURE__ */ template(`<div class=mt-3><p class="text-xs font-medium text-red-700 dark:text-red-300">Suggestions:</p><ul class="mt-1 text-xs text-red-600 dark:text-red-400 list-disc list-inside">`), _tmpl$52 = /* @__PURE__ */ template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$53 = /* @__PURE__ */ template(`<div class="relative w-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4 group"><!$><!/><div class="flex items-start gap-3"><div class="p-2 bg-red-100 dark:bg-red-900/40 rounded-full shrink-0"><svg class="w-5 h-5 text-red-600 dark:text-red-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path></svg></div><div class="flex-1 min-w-0"><h4 class="text-sm font-semibold text-red-800 dark:text-red-200">Tool Error: <!$><!/></h4><p class="text-sm text-red-700 dark:text-red-300 mt-1"></p><!$><!/><!$><!/><!$><!/>`), _tmpl$54 = /* @__PURE__ */ template(`<li>`), _tmpl$55 = /* @__PURE__ */ template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white capitalize">`), _tmpl$56 = /* @__PURE__ */ template(`<div class="w-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden"><!$><!/><!$><!/>`), _tmpl$57 = /* @__PURE__ */ template(`<div><div class="grid gap-4"data-mcp-ui-grid></div><!$><!/>`), _tmpl$58 = /* @__PURE__ */ template(`<div class=min-w-0>`);
|
|
39
|
+
import { formatMCPUIString } from "../utils/format-string.js";
|
|
40
|
+
var _tmpl$ = /* @__PURE__ */ template(`<svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z">`), _tmpl$2 = /* @__PURE__ */ template(`<button data-mcp-ui-action=copy type=button>`), _tmpl$3 = /* @__PURE__ */ template(`<svg class="w-3 h-3 text-green-500"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M5 13l4 4L19 7">`), _tmpl$4 = /* @__PURE__ */ template(`<div class="p-4 bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700"><p class="text-red-500 dark:text-red-400 text-sm">`), _tmpl$5 = /* @__PURE__ */ template(`<div class=p-3>`), _tmpl$6 = /* @__PURE__ */ template(`<div class="absolute inset-0 flex items-center justify-center"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600">`), _tmpl$7 = /* @__PURE__ */ template(`<div class="absolute inset-0 flex items-center justify-center p-4"><div class=text-center><p class="text-red-600 dark:text-red-400 text-sm font-medium"></p><p class="text-gray-600 dark:text-gray-400 text-xs mt-1">`), _tmpl$8 = /* @__PURE__ */ template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3">`), _tmpl$9 = /* @__PURE__ */ template(`<div class="w-full h-full p-4"><!$><!/><div class="w-full h-full"role=img><img class="w-full h-auto max-h-[300px] object-contain">`), _tmpl$0 = /* @__PURE__ */ template(`<div class="relative w-full h-full min-h-[300px] bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden"><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$1 = /* @__PURE__ */ template(`<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">`), _tmpl$10 = /* @__PURE__ */ template(`<tr>`), _tmpl$11 = /* @__PURE__ */ template(`<td class="px-6 py-4 text-sm text-gray-700 dark:text-gray-200 whitespace-normal break-words leading-relaxed first:pl-6 last:pr-6">`), _tmpl$12 = /* @__PURE__ */ template(`<tbody class="bg-white dark:bg-gray-800 relative">`), _tmpl$13 = /* @__PURE__ */ template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">`), _tmpl$14 = /* @__PURE__ */ template(`<div class="absolute right-10 top-2 z-10"><button class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"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__ */ template(`<span class="ml-2 text-xs font-normal text-gray-400">`), _tmpl$16 = /* @__PURE__ */ template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3 flex-shrink-0"><!$><!/><!$><!/>`), _tmpl$17 = /* @__PURE__ */ 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__ */ 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__ */ template(`<p class="text-xs text-gray-500 dark:text-gray-400 mb-2">`), _tmpl$20 = /* @__PURE__ */ template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span>`), _tmpl$21 = /* @__PURE__ */ 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__ */ template(`<span class=text-gray-400>`), _tmpl$23 = /* @__PURE__ */ 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__ */ 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__ */ 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__ */ template(`<option>`), _tmpl$27 = /* @__PURE__ */ template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$28 = /* @__PURE__ */ template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$29 = /* @__PURE__ */ template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$30 = /* @__PURE__ */ template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><div class="flex flex-col h-full justify-between"><div><p class="text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide"></p><div class="mt-2 flex items-baseline"><p class="text-2xl font-semibold text-gray-900 dark:text-white"></p><!$><!/></div></div><!$><!/><!$><!/>`), _tmpl$31 = /* @__PURE__ */ template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><!$><!/>`), _tmpl$32 = /* @__PURE__ */ 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__ */ 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__ */ template(`<a target=_blank rel="noopener noreferrer"class=cursor-zoom-in>`), _tmpl$35 = /* @__PURE__ */ template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white">`), _tmpl$36 = /* @__PURE__ */ template(`<div class="w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col"><!$><!/><iframe class="w-full border-0 flex-1"loading=lazy></iframe><!$><!/>`, true, false, false), _tmpl$37 = /* @__PURE__ */ template(`<figcaption class="p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800"><p class="text-sm text-gray-600 dark:text-gray-400 text-center">`), _tmpl$38 = /* @__PURE__ */ template(`<figure><div class="flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]"><a target=_blank rel="noopener noreferrer"class="cursor-zoom-in focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded"><img class="max-w-full max-h-[500px] object-contain rounded shadow-sm hover:opacity-95 transition-opacity"loading=lazy></a></div><!$><!/>`, true, false, false), _tmpl$39 = /* @__PURE__ */ template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$40 = /* @__PURE__ */ template(`<a target=_blank rel="noopener noreferrer"><div class="p-2 bg-blue-50 dark:bg-blue-900/30 rounded-full text-blue-600 dark:text-blue-400 group-hover:bg-blue-100 dark:group-hover:bg-blue-900/50 shrink-0 transition-colors"aria-hidden=true><svg xmlns=http://www.w3.org/2000/svg class="w-5 h-5"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></div><div class="flex-1 min-w-0"><h4 class="text-sm font-medium text-gray-900 dark:text-white truncate group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors"></h4><!$><!/></div><svg xmlns=http://www.w3.org/2000/svg class="w-4 h-4 text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 shrink-0 transition-colors"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1=10 y1=14 x2=21 y2=3>`), _tmpl$41 = /* @__PURE__ */ 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__ */ 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__ */ 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__ */ template(`<span aria-hidden=true>`), _tmpl$45 = /* @__PURE__ */ template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$46 = /* @__PURE__ */ template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$47 = /* @__PURE__ */ template(`<button type=button><!$><!/><!$><!/><!$><!/>`), _tmpl$48 = /* @__PURE__ */ template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">`), _tmpl$49 = /* @__PURE__ */ 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__ */ template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$51 = /* @__PURE__ */ template(`<div class="relative w-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4 group"><!$><!/><div class="flex items-start gap-3"><div class="p-2 bg-red-100 dark:bg-red-900/40 rounded-full shrink-0"><svg class="w-5 h-5 text-red-600 dark:text-red-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path></svg></div><div class="flex-1 min-w-0"><h4 class="text-sm font-semibold text-red-800 dark:text-red-200"></h4><p class="text-sm text-red-700 dark:text-red-300 mt-1"></p><!$><!/><!$><!/><!$><!/>`), _tmpl$52 = /* @__PURE__ */ template(`<li>`), _tmpl$53 = /* @__PURE__ */ template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white capitalize">`), _tmpl$54 = /* @__PURE__ */ template(`<div class="w-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden"><!$><!/><!$><!/>`), _tmpl$55 = /* @__PURE__ */ template(`<div><div class="grid gap-4"data-mcp-ui-grid></div><!$><!/>`), _tmpl$56 = /* @__PURE__ */ template(`<div class=min-w-0>`);
|
|
37
41
|
function CopyButton(props) {
|
|
42
|
+
const strings = useMCPUIStrings();
|
|
38
43
|
const [copied, setCopied] = createSignal(false);
|
|
39
44
|
const handleCopy = async () => {
|
|
40
45
|
try {
|
|
@@ -63,7 +68,7 @@ function CopyButton(props) {
|
|
|
63
68
|
}
|
|
64
69
|
}));
|
|
65
70
|
effect((_p$) => {
|
|
66
|
-
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 ||
|
|
71
|
+
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;
|
|
67
72
|
_v$ !== _p$.e && className(_el$, _p$.e = _v$);
|
|
68
73
|
_v$2 !== _p$.t && setAttribute(_el$, "title", _p$.t = _v$2);
|
|
69
74
|
_v$3 !== _p$.a && setAttribute(_el$, "aria-label", _p$.a = _v$3);
|
|
@@ -79,6 +84,7 @@ function CopyButton(props) {
|
|
|
79
84
|
}
|
|
80
85
|
function ChartRenderer(props) {
|
|
81
86
|
var _a, _b;
|
|
87
|
+
const strings = useMCPUIStrings();
|
|
82
88
|
const [useNative, setUseNative] = createSignal(false);
|
|
83
89
|
const [iframeUrl, setIframeUrl] = createSignal();
|
|
84
90
|
const [isLoading, setIsLoading] = createSignal(true);
|
|
@@ -91,6 +97,12 @@ function ChartRenderer(props) {
|
|
|
91
97
|
return ((_a2 = params()) == null ? void 0 : _a2.renderer) || "auto";
|
|
92
98
|
};
|
|
93
99
|
const allowQuickchart = () => props.allowQuickchartFallback === true;
|
|
100
|
+
const chartImageAlt = () => {
|
|
101
|
+
var _a2;
|
|
102
|
+
return ((_a2 = params()) == null ? void 0 : _a2.title) ? formatMCPUIString(strings.chartWithTitleAlt, {
|
|
103
|
+
title: String(params().title)
|
|
104
|
+
}) : strings.chartVisualizationAlt;
|
|
105
|
+
};
|
|
94
106
|
const signalBlockedFallback = (reason) => {
|
|
95
107
|
setDegraded(true);
|
|
96
108
|
setIsLoading(false);
|
|
@@ -104,7 +116,11 @@ function ChartRenderer(props) {
|
|
|
104
116
|
});
|
|
105
117
|
};
|
|
106
118
|
if (!((_b = (_a = params()) == null ? void 0 : _a.data) == null ? void 0 : _b.datasets)) {
|
|
107
|
-
return
|
|
119
|
+
return (() => {
|
|
120
|
+
var _el$4 = getNextElement(_tmpl$4), _el$5 = _el$4.firstChild;
|
|
121
|
+
insert(_el$5, () => strings.chartInvalidData);
|
|
122
|
+
return _el$4;
|
|
123
|
+
})();
|
|
108
124
|
}
|
|
109
125
|
createEffect(async () => {
|
|
110
126
|
const pref = rendererPref();
|
|
@@ -121,7 +137,7 @@ function ChartRenderer(props) {
|
|
|
121
137
|
setUseNative(true);
|
|
122
138
|
setIsLoading(false);
|
|
123
139
|
} else {
|
|
124
|
-
setError(
|
|
140
|
+
setError(strings.chartJsUnavailable);
|
|
125
141
|
setIsLoading(false);
|
|
126
142
|
}
|
|
127
143
|
} else {
|
|
@@ -161,61 +177,68 @@ function ChartRenderer(props) {
|
|
|
161
177
|
},
|
|
162
178
|
get fallback() {
|
|
163
179
|
return (() => {
|
|
164
|
-
var _el$
|
|
165
|
-
insert(_el$
|
|
180
|
+
var _el$6 = getNextElement(_tmpl$0), _el$17 = _el$6.firstChild, [_el$18, _co$2] = getNextMarker(_el$17.nextSibling), _el$19 = _el$18.nextSibling, [_el$20, _co$3] = getNextMarker(_el$19.nextSibling), _el$21 = _el$20.nextSibling, [_el$22, _co$4] = getNextMarker(_el$21.nextSibling), _el$23 = _el$22.nextSibling, [_el$24, _co$5] = getNextMarker(_el$23.nextSibling);
|
|
181
|
+
insert(_el$6, createComponent(Show, {
|
|
166
182
|
get when() {
|
|
167
183
|
return degraded();
|
|
168
184
|
},
|
|
169
185
|
get children() {
|
|
170
|
-
var _el$
|
|
171
|
-
insert(_el$
|
|
172
|
-
message
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
186
|
+
var _el$7 = getNextElement(_tmpl$5);
|
|
187
|
+
insert(_el$7, createComponent(DegradedFallback, mergeProps({
|
|
188
|
+
get message() {
|
|
189
|
+
return strings.chartIframeUnavailable;
|
|
190
|
+
},
|
|
191
|
+
get caption() {
|
|
192
|
+
return strings.chartQuickchartCaption;
|
|
193
|
+
}
|
|
194
|
+
}, () => chartToDegradedTable(params() ?? {}, {
|
|
195
|
+
series: strings.degradedSeries
|
|
196
|
+
}))));
|
|
197
|
+
return _el$7;
|
|
176
198
|
}
|
|
177
|
-
}), _el$
|
|
178
|
-
insert(_el$
|
|
199
|
+
}), _el$18, _co$2);
|
|
200
|
+
insert(_el$6, createComponent(Show, {
|
|
179
201
|
get when() {
|
|
180
202
|
return isLoading();
|
|
181
203
|
},
|
|
182
204
|
get children() {
|
|
183
205
|
return getNextElement(_tmpl$6);
|
|
184
206
|
}
|
|
185
|
-
}), _el$
|
|
186
|
-
insert(_el$
|
|
207
|
+
}), _el$20, _co$3);
|
|
208
|
+
insert(_el$6, createComponent(Show, {
|
|
187
209
|
get when() {
|
|
188
210
|
return error();
|
|
189
211
|
},
|
|
190
212
|
get children() {
|
|
191
|
-
var _el$
|
|
192
|
-
insert(_el$1,
|
|
193
|
-
|
|
213
|
+
var _el$9 = getNextElement(_tmpl$7), _el$0 = _el$9.firstChild, _el$1 = _el$0.firstChild, _el$10 = _el$1.nextSibling;
|
|
214
|
+
insert(_el$1, () => strings.chartError);
|
|
215
|
+
insert(_el$10, error);
|
|
216
|
+
return _el$9;
|
|
194
217
|
}
|
|
195
|
-
}), _el$
|
|
196
|
-
insert(_el$
|
|
218
|
+
}), _el$22, _co$4);
|
|
219
|
+
insert(_el$6, createComponent(Show, {
|
|
197
220
|
get when() {
|
|
198
221
|
return memo(() => !!iframeUrl())() && !error();
|
|
199
222
|
},
|
|
200
223
|
get children() {
|
|
201
|
-
var _el$
|
|
202
|
-
insert(_el$
|
|
224
|
+
var _el$11 = getNextElement(_tmpl$9), _el$15 = _el$11.firstChild, [_el$16, _co$] = getNextMarker(_el$15.nextSibling), _el$13 = _el$16.nextSibling, _el$14 = _el$13.firstChild;
|
|
225
|
+
insert(_el$11, createComponent(Show, {
|
|
203
226
|
get when() {
|
|
204
227
|
var _a2;
|
|
205
228
|
return (_a2 = params()) == null ? void 0 : _a2.title;
|
|
206
229
|
},
|
|
207
230
|
get children() {
|
|
208
|
-
var _el$
|
|
209
|
-
insert(_el$
|
|
231
|
+
var _el$12 = getNextElement(_tmpl$8);
|
|
232
|
+
insert(_el$12, () => {
|
|
210
233
|
var _a2;
|
|
211
234
|
return (_a2 = params()) == null ? void 0 : _a2.title;
|
|
212
235
|
});
|
|
213
|
-
return _el$
|
|
236
|
+
return _el$12;
|
|
214
237
|
}
|
|
215
|
-
}), _el$
|
|
216
|
-
_el$
|
|
238
|
+
}), _el$16, _co$);
|
|
239
|
+
_el$14.addEventListener("error", () => {
|
|
217
240
|
var _a2;
|
|
218
|
-
setError(
|
|
241
|
+
setError(strings.chartLoadFailed);
|
|
219
242
|
(_a2 = props.onError) == null ? void 0 : _a2.call(props, {
|
|
220
243
|
type: "render",
|
|
221
244
|
message: "Chart rendering failed",
|
|
@@ -223,21 +246,20 @@ function ChartRenderer(props) {
|
|
|
223
246
|
});
|
|
224
247
|
});
|
|
225
248
|
effect((_p$) => {
|
|
226
|
-
var
|
|
227
|
-
|
|
228
|
-
_v$
|
|
229
|
-
_v$
|
|
230
|
-
_v$6 !== _p$.a && setAttribute(_el$13, "alt", _p$.a = _v$6);
|
|
249
|
+
var _v$4 = chartImageAlt(), _v$5 = iframeUrl(), _v$6 = chartImageAlt();
|
|
250
|
+
_v$4 !== _p$.e && setAttribute(_el$13, "aria-label", _p$.e = _v$4);
|
|
251
|
+
_v$5 !== _p$.t && setAttribute(_el$14, "src", _p$.t = _v$5);
|
|
252
|
+
_v$6 !== _p$.a && setAttribute(_el$14, "alt", _p$.a = _v$6);
|
|
231
253
|
return _p$;
|
|
232
254
|
}, {
|
|
233
255
|
e: void 0,
|
|
234
256
|
t: void 0,
|
|
235
257
|
a: void 0
|
|
236
258
|
});
|
|
237
|
-
return _el$
|
|
259
|
+
return _el$11;
|
|
238
260
|
}
|
|
239
|
-
}), _el$
|
|
240
|
-
return _el$
|
|
261
|
+
}), _el$24, _co$5);
|
|
262
|
+
return _el$6;
|
|
241
263
|
})();
|
|
242
264
|
},
|
|
243
265
|
get children() {
|
|
@@ -304,13 +326,15 @@ function highlightQuery(html, query) {
|
|
|
304
326
|
}
|
|
305
327
|
return template2.innerHTML;
|
|
306
328
|
}
|
|
307
|
-
function defaultCitationChip(pageNum, fileName, verified = true) {
|
|
329
|
+
function defaultCitationChip(pageNum, fileName, verified = true, viewSourceLabel = DEFAULT_MCPUI_STRINGS.citationViewSource) {
|
|
308
330
|
const safeDocName = encodeURIComponent(fileName || "");
|
|
309
331
|
const label = fileName ? `${fileName} - ${pageNum}` : `${pageNum}`;
|
|
310
332
|
if (!verified) {
|
|
311
333
|
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>`;
|
|
312
334
|
}
|
|
313
|
-
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="
|
|
335
|
+
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(formatMCPUIString(viewSourceLabel, {
|
|
336
|
+
label
|
|
337
|
+
}))}">`, '<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("");
|
|
314
338
|
}
|
|
315
339
|
function transformCellCitations(text, ctx) {
|
|
316
340
|
let out = text.replace(new RegExp("(?<![p.])\\[(\\d{1,2})\\](?!\\()", "g"), "[📄 CITATION $1]");
|
|
@@ -320,8 +344,10 @@ function transformCellCitations(text, ctx) {
|
|
|
320
344
|
const id = parseInt(idStr, 10);
|
|
321
345
|
const mapping = ctx.map[id] ?? ctx.map[String(id)];
|
|
322
346
|
if (ctx.render) return ctx.render(id, mapping);
|
|
323
|
-
if (mapping) return defaultCitationChip(mapping.page, mapping.file ?? "", true);
|
|
324
|
-
return Object.keys(ctx.map).length > 0 ? "" :
|
|
347
|
+
if (mapping) return defaultCitationChip(mapping.page, mapping.file ?? "", true, ctx.viewSourceLabel);
|
|
348
|
+
return Object.keys(ctx.map).length > 0 ? "" : formatMCPUIString(ctx.unresolvedLabel ?? DEFAULT_MCPUI_STRINGS.citationUnresolved, {
|
|
349
|
+
id
|
|
350
|
+
});
|
|
325
351
|
});
|
|
326
352
|
}
|
|
327
353
|
function renderCellValue(value, citationCtx) {
|
|
@@ -381,7 +407,14 @@ function TableRenderer(props) {
|
|
|
381
407
|
const strings = useMCPUIStrings();
|
|
382
408
|
const citationCtx = tableParams.citationMap ? {
|
|
383
409
|
map: tableParams.citationMap,
|
|
384
|
-
render: tableParams.citationRender
|
|
410
|
+
render: tableParams.citationRender,
|
|
411
|
+
// Getters, not snapshots: cells read the provider's current wording.
|
|
412
|
+
get unresolvedLabel() {
|
|
413
|
+
return strings.citationUnresolved;
|
|
414
|
+
},
|
|
415
|
+
get viewSourceLabel() {
|
|
416
|
+
return strings.citationViewSource;
|
|
417
|
+
}
|
|
385
418
|
} : void 0;
|
|
386
419
|
const allRows = () => tableParams.rows || [];
|
|
387
420
|
const columns = () => tableParams.columns || [];
|
|
@@ -417,7 +450,7 @@ function TableRenderer(props) {
|
|
|
417
450
|
if (isNum) {
|
|
418
451
|
cmp = (Number(va) || 0) - (Number(vb) || 0);
|
|
419
452
|
} else {
|
|
420
|
-
cmp = String(va).localeCompare(String(vb),
|
|
453
|
+
cmp = String(va).localeCompare(String(vb), strings.locale, {
|
|
421
454
|
sensitivity: "base"
|
|
422
455
|
});
|
|
423
456
|
}
|
|
@@ -432,7 +465,7 @@ function TableRenderer(props) {
|
|
|
432
465
|
const [debouncedQuery, setDebouncedQuery] = createSignal("");
|
|
433
466
|
let searchTimer = null;
|
|
434
467
|
const isSearchable = () => tableParams.searchable !== false;
|
|
435
|
-
const searchPlaceholder = () => tableParams.searchPlaceholder ||
|
|
468
|
+
const searchPlaceholder = () => tableParams.searchPlaceholder || strings.tableSearchPlaceholder;
|
|
436
469
|
const handleSearch = (value) => {
|
|
437
470
|
setSearchQuery(value);
|
|
438
471
|
if (searchTimer) clearTimeout(searchTimer);
|
|
@@ -490,7 +523,7 @@ function TableRenderer(props) {
|
|
|
490
523
|
}
|
|
491
524
|
opts.push({
|
|
492
525
|
value: 0,
|
|
493
|
-
label:
|
|
526
|
+
label: strings.paginationAllRows
|
|
494
527
|
});
|
|
495
528
|
return opts;
|
|
496
529
|
};
|
|
@@ -617,30 +650,30 @@ ${dataRows}`;
|
|
|
617
650
|
};
|
|
618
651
|
const tableId = `table-${Math.random().toString(36).slice(2, 9)}`;
|
|
619
652
|
const StandardTableBody = () => (() => {
|
|
620
|
-
var _el$
|
|
621
|
-
insert(_el$
|
|
653
|
+
var _el$25 = getNextElement(_tmpl$1);
|
|
654
|
+
insert(_el$25, createComponent(For, {
|
|
622
655
|
get each() {
|
|
623
656
|
return clientVisibleRows().slice(0, DEFAULT_RESOURCE_LIMITS.maxTableRows);
|
|
624
657
|
},
|
|
625
658
|
children: (row, i) => (() => {
|
|
626
|
-
var _el$
|
|
627
|
-
insert(_el$
|
|
659
|
+
var _el$26 = getNextElement(_tmpl$10);
|
|
660
|
+
insert(_el$26, createComponent(For, {
|
|
628
661
|
get each() {
|
|
629
662
|
return tableParams.columns;
|
|
630
663
|
},
|
|
631
664
|
children: (column) => (() => {
|
|
632
|
-
var _el$
|
|
633
|
-
insert(_el$
|
|
665
|
+
var _el$27 = getNextElement(_tmpl$11);
|
|
666
|
+
insert(_el$27, createComponent(SafeHtml, {
|
|
634
667
|
html: () => highlightQuery(renderCellValue(row[column.key], citationCtx), debouncedQuery())
|
|
635
668
|
}));
|
|
636
|
-
return _el$
|
|
669
|
+
return _el$27;
|
|
637
670
|
})()
|
|
638
671
|
}));
|
|
639
|
-
effect(() => className(_el$
|
|
640
|
-
return _el$
|
|
672
|
+
effect(() => 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"}`));
|
|
673
|
+
return _el$26;
|
|
641
674
|
})()
|
|
642
675
|
}));
|
|
643
|
-
return _el$
|
|
676
|
+
return _el$25;
|
|
644
677
|
})();
|
|
645
678
|
const VirtualizedTableBody = () => {
|
|
646
679
|
const v = virtualizer();
|
|
@@ -650,72 +683,76 @@ ${dataRows}`;
|
|
|
650
683
|
const opts = virtualizeOpts();
|
|
651
684
|
const rowHeight = opts.rowHeight ?? 48;
|
|
652
685
|
return (() => {
|
|
653
|
-
var _el$
|
|
654
|
-
setStyleProperty(_el$
|
|
655
|
-
insert(_el$
|
|
686
|
+
var _el$28 = getNextElement(_tmpl$12);
|
|
687
|
+
setStyleProperty(_el$28, "height", `${totalSize}px`);
|
|
688
|
+
insert(_el$28, createComponent(For, {
|
|
656
689
|
each: items,
|
|
657
690
|
children: (virtualRow) => {
|
|
658
691
|
const row = tableParams.rows[virtualRow.index];
|
|
659
692
|
return (() => {
|
|
660
|
-
var _el$
|
|
661
|
-
setStyleProperty(_el$
|
|
662
|
-
insert(_el$
|
|
693
|
+
var _el$29 = getNextElement(_tmpl$10);
|
|
694
|
+
setStyleProperty(_el$29, "height", `${rowHeight}px`);
|
|
695
|
+
insert(_el$29, createComponent(For, {
|
|
663
696
|
get each() {
|
|
664
697
|
return tableParams.columns;
|
|
665
698
|
},
|
|
666
699
|
children: (column) => (() => {
|
|
667
|
-
var _el$
|
|
668
|
-
insert(_el$
|
|
700
|
+
var _el$30 = getNextElement(_tmpl$11);
|
|
701
|
+
insert(_el$30, createComponent(SafeHtml, {
|
|
669
702
|
html: () => highlightQuery(renderCellValue(row[column.key], citationCtx), debouncedQuery())
|
|
670
703
|
}));
|
|
671
|
-
return _el$
|
|
704
|
+
return _el$30;
|
|
672
705
|
})()
|
|
673
706
|
}));
|
|
674
707
|
effect((_p$) => {
|
|
675
708
|
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)`;
|
|
676
|
-
_v$7 !== _p$.e && className(_el$
|
|
677
|
-
_v$8 !== _p$.t && setStyleProperty(_el$
|
|
709
|
+
_v$7 !== _p$.e && className(_el$29, _p$.e = _v$7);
|
|
710
|
+
_v$8 !== _p$.t && setStyleProperty(_el$29, "transform", _p$.t = _v$8);
|
|
678
711
|
return _p$;
|
|
679
712
|
}, {
|
|
680
713
|
e: void 0,
|
|
681
714
|
t: void 0
|
|
682
715
|
});
|
|
683
|
-
return _el$
|
|
716
|
+
return _el$29;
|
|
684
717
|
})();
|
|
685
718
|
}
|
|
686
719
|
}));
|
|
687
|
-
return _el$
|
|
720
|
+
return _el$28;
|
|
688
721
|
})();
|
|
689
722
|
};
|
|
690
723
|
return createComponent(ExpandableWrapper, {
|
|
691
724
|
get title() {
|
|
692
|
-
return tableParams.title ||
|
|
725
|
+
return tableParams.title || strings.tableTitle;
|
|
693
726
|
},
|
|
694
727
|
get copyData() {
|
|
695
728
|
return getTableCSV();
|
|
696
729
|
},
|
|
697
|
-
copyLabel
|
|
730
|
+
get copyLabel() {
|
|
731
|
+
return strings.tableCopyCsv;
|
|
732
|
+
},
|
|
698
733
|
get toolbarVariant() {
|
|
699
734
|
return props.toolbarVariant;
|
|
700
735
|
},
|
|
701
736
|
onExpandedChange: setSelfExpanded,
|
|
702
737
|
get children() {
|
|
703
|
-
var _el$
|
|
704
|
-
insert(_el$
|
|
738
|
+
var _el$31 = getNextElement(_tmpl$24), _el$92 = _el$31.firstChild, [_el$93, _co$19] = getNextMarker(_el$92.nextSibling), _el$39 = _el$93.nextSibling, _el$84 = _el$39.firstChild, [_el$85, _co$15] = getNextMarker(_el$84.nextSibling), _el$86 = _el$85.nextSibling, [_el$87, _co$16] = 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] = getNextMarker(_el$57.nextSibling), _el$88 = _el$53.nextSibling, [_el$89, _co$17] = getNextMarker(_el$88.nextSibling), _el$90 = _el$89.nextSibling, [_el$91, _co$18] = getNextMarker(_el$90.nextSibling);
|
|
739
|
+
insert(_el$31, createComponent(Show, {
|
|
705
740
|
when: exportable,
|
|
706
741
|
get fallback() {
|
|
707
742
|
return createComponent(CopyButton, {
|
|
708
743
|
getText: getTableCSV,
|
|
709
|
-
title
|
|
744
|
+
get title() {
|
|
745
|
+
return strings.tableCopyCsv;
|
|
746
|
+
},
|
|
710
747
|
position: "top-right"
|
|
711
748
|
});
|
|
712
749
|
},
|
|
713
750
|
get children() {
|
|
714
|
-
var _el$
|
|
715
|
-
_el$
|
|
751
|
+
var _el$32 = getNextElement(_tmpl$14), _el$33 = _el$32.firstChild, _el$37 = _el$33.nextSibling, [_el$38, _co$6] = getNextMarker(_el$37.nextSibling);
|
|
752
|
+
_el$33.$$click = () => setShowExportMenu(!showExportMenu());
|
|
716
753
|
var _ref$ = exportTriggerRef;
|
|
717
|
-
typeof _ref$ === "function" ? use(_ref$, _el$
|
|
718
|
-
insert(_el$
|
|
754
|
+
typeof _ref$ === "function" ? use(_ref$, _el$33) : exportTriggerRef = _el$33;
|
|
755
|
+
insert(_el$32, createComponent(PortalDropdownMenu, {
|
|
719
756
|
get open() {
|
|
720
757
|
return showExportMenu();
|
|
721
758
|
},
|
|
@@ -728,136 +765,154 @@ ${dataRows}`;
|
|
|
728
765
|
return exportFormats.includes("tsv");
|
|
729
766
|
},
|
|
730
767
|
get children() {
|
|
731
|
-
var _el$
|
|
732
|
-
_el$
|
|
768
|
+
var _el$34 = getNextElement(_tmpl$13);
|
|
769
|
+
_el$34.$$click = () => handleExport("tsv");
|
|
770
|
+
insert(_el$34, () => strings.tableCopyTsv);
|
|
733
771
|
runHydrationEvents();
|
|
734
|
-
return _el$
|
|
772
|
+
return _el$34;
|
|
735
773
|
}
|
|
736
774
|
}), createComponent(Show, {
|
|
737
775
|
get when() {
|
|
738
776
|
return exportFormats.includes("csv");
|
|
739
777
|
},
|
|
740
778
|
get children() {
|
|
741
|
-
var _el$
|
|
742
|
-
_el$
|
|
779
|
+
var _el$35 = getNextElement(_tmpl$13);
|
|
780
|
+
_el$35.$$click = () => handleExport("csv");
|
|
781
|
+
insert(_el$35, () => strings.tableDownloadCsv);
|
|
743
782
|
runHydrationEvents();
|
|
744
|
-
return _el$
|
|
783
|
+
return _el$35;
|
|
745
784
|
}
|
|
746
785
|
}), createComponent(Show, {
|
|
747
786
|
get when() {
|
|
748
787
|
return exportFormats.includes("json");
|
|
749
788
|
},
|
|
750
789
|
get children() {
|
|
751
|
-
var _el$
|
|
752
|
-
_el$
|
|
790
|
+
var _el$36 = getNextElement(_tmpl$13);
|
|
791
|
+
_el$36.$$click = () => handleExport("json");
|
|
792
|
+
insert(_el$36, () => strings.tableDownloadJson);
|
|
753
793
|
runHydrationEvents();
|
|
754
|
-
return _el$
|
|
794
|
+
return _el$36;
|
|
755
795
|
}
|
|
756
796
|
})];
|
|
757
797
|
}
|
|
758
|
-
}), _el$
|
|
759
|
-
effect(() =>
|
|
798
|
+
}), _el$38, _co$6);
|
|
799
|
+
effect((_p$) => {
|
|
800
|
+
var _v$9 = strings.tableExport, _v$0 = strings.tableExport, _v$1 = showExportMenu();
|
|
801
|
+
_v$9 !== _p$.e && setAttribute(_el$33, "title", _p$.e = _v$9);
|
|
802
|
+
_v$0 !== _p$.t && setAttribute(_el$33, "aria-label", _p$.t = _v$0);
|
|
803
|
+
_v$1 !== _p$.a && setAttribute(_el$33, "aria-expanded", _p$.a = _v$1);
|
|
804
|
+
return _p$;
|
|
805
|
+
}, {
|
|
806
|
+
e: void 0,
|
|
807
|
+
t: void 0,
|
|
808
|
+
a: void 0
|
|
809
|
+
});
|
|
760
810
|
runHydrationEvents();
|
|
761
|
-
return _el$
|
|
811
|
+
return _el$32;
|
|
762
812
|
}
|
|
763
|
-
}), _el$
|
|
764
|
-
insert(_el$
|
|
813
|
+
}), _el$93, _co$19);
|
|
814
|
+
insert(_el$39, createComponent(Show, {
|
|
765
815
|
get when() {
|
|
766
816
|
return tableParams.title;
|
|
767
817
|
},
|
|
768
818
|
get children() {
|
|
769
|
-
var _el$
|
|
770
|
-
setAttribute(_el$
|
|
771
|
-
insert(_el$
|
|
772
|
-
insert(_el$
|
|
819
|
+
var _el$40 = getNextElement(_tmpl$16), _el$42 = _el$40.firstChild, [_el$43, _co$7] = getNextMarker(_el$42.nextSibling), _el$44 = _el$43.nextSibling, [_el$45, _co$8] = getNextMarker(_el$44.nextSibling);
|
|
820
|
+
setAttribute(_el$40, "id", `${tableId}-title`);
|
|
821
|
+
insert(_el$40, () => tableParams.title, _el$43, _co$7);
|
|
822
|
+
insert(_el$40, createComponent(Show, {
|
|
773
823
|
get when() {
|
|
774
824
|
return isVirtualizing();
|
|
775
825
|
},
|
|
776
826
|
get children() {
|
|
777
|
-
var _el$
|
|
778
|
-
_el$
|
|
779
|
-
insert(_el$40, () => {
|
|
827
|
+
var _el$41 = getNextElement(_tmpl$15);
|
|
828
|
+
insert(_el$41, () => {
|
|
780
829
|
var _a;
|
|
781
|
-
return (
|
|
782
|
-
|
|
783
|
-
|
|
830
|
+
return formatMCPUIString(strings.tableVirtualizedRows, {
|
|
831
|
+
count: ((_a = tableParams.rows) == null ? void 0 : _a.length) ?? 0
|
|
832
|
+
});
|
|
833
|
+
});
|
|
834
|
+
return _el$41;
|
|
784
835
|
}
|
|
785
|
-
}), _el$
|
|
786
|
-
return _el$
|
|
836
|
+
}), _el$45, _co$8);
|
|
837
|
+
return _el$40;
|
|
787
838
|
}
|
|
788
|
-
}), _el$
|
|
789
|
-
insert(_el$
|
|
839
|
+
}), _el$85, _co$15);
|
|
840
|
+
insert(_el$39, createComponent(Show, {
|
|
790
841
|
get when() {
|
|
791
842
|
return isSearchable();
|
|
792
843
|
},
|
|
793
844
|
get children() {
|
|
794
845
|
return [(() => {
|
|
795
|
-
var _el$
|
|
796
|
-
_el$
|
|
797
|
-
insert(_el$
|
|
846
|
+
var _el$46 = getNextElement(_tmpl$18), _el$47 = _el$46.firstChild, _el$48 = _el$47.nextSibling, _el$50 = _el$48.nextSibling, [_el$51, _co$9] = getNextMarker(_el$50.nextSibling);
|
|
847
|
+
_el$48.$$input = (e) => handleSearch(e.currentTarget.value);
|
|
848
|
+
insert(_el$46, createComponent(Show, {
|
|
798
849
|
get when() {
|
|
799
850
|
return searchQuery();
|
|
800
851
|
},
|
|
801
852
|
get children() {
|
|
802
|
-
var _el$
|
|
803
|
-
_el$
|
|
853
|
+
var _el$49 = getNextElement(_tmpl$17);
|
|
854
|
+
_el$49.$$click = () => {
|
|
804
855
|
handleSearch("");
|
|
805
856
|
setSearchQuery("");
|
|
806
857
|
setDebouncedQuery("");
|
|
807
858
|
};
|
|
859
|
+
effect(() => setAttribute(_el$49, "aria-label", strings.tableClearSearch));
|
|
808
860
|
runHydrationEvents();
|
|
809
|
-
return _el$
|
|
861
|
+
return _el$49;
|
|
810
862
|
}
|
|
811
|
-
}), _el$
|
|
812
|
-
effect(() => setAttribute(_el$
|
|
813
|
-
effect(() => setProperty(_el$
|
|
863
|
+
}), _el$51, _co$9);
|
|
864
|
+
effect(() => setAttribute(_el$48, "placeholder", searchPlaceholder()));
|
|
865
|
+
effect(() => setProperty(_el$48, "value", searchQuery()));
|
|
814
866
|
runHydrationEvents();
|
|
815
|
-
return _el$
|
|
867
|
+
return _el$46;
|
|
816
868
|
})(), createComponent(Show, {
|
|
817
869
|
get when() {
|
|
818
870
|
return memo(() => !!debouncedQuery())() && filteredRows().length !== sortedRows().length;
|
|
819
871
|
},
|
|
820
872
|
get children() {
|
|
821
|
-
var _el$
|
|
822
|
-
insert(_el$
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
873
|
+
var _el$52 = getNextElement(_tmpl$19);
|
|
874
|
+
insert(_el$52, () => formatMCPUIString(filteredRows().length === 1 ? strings.tableSearchResultsOne : strings.tableSearchResultsMany, {
|
|
875
|
+
count: filteredRows().length,
|
|
876
|
+
total: sortedRows().length
|
|
877
|
+
}));
|
|
878
|
+
return _el$52;
|
|
826
879
|
}
|
|
827
880
|
})];
|
|
828
881
|
}
|
|
829
|
-
}), _el$
|
|
882
|
+
}), _el$87, _co$16);
|
|
830
883
|
var _ref$2 = scrollContainerRef;
|
|
831
|
-
typeof _ref$2 === "function" ? use(_ref$2, _el$
|
|
832
|
-
insert(_el$
|
|
884
|
+
typeof _ref$2 === "function" ? use(_ref$2, _el$53) : scrollContainerRef = _el$53;
|
|
885
|
+
insert(_el$56, createComponent(For, {
|
|
833
886
|
get each() {
|
|
834
887
|
return tableParams.columns;
|
|
835
888
|
},
|
|
836
889
|
children: (column) => (() => {
|
|
837
|
-
var _el$
|
|
838
|
-
addEventListener(_el$
|
|
839
|
-
insert(_el$
|
|
840
|
-
insert(_el$
|
|
890
|
+
var _el$94 = getNextElement(_tmpl$25), _el$95 = _el$94.firstChild, _el$97 = _el$95.firstChild, [_el$98, _co$20] = getNextMarker(_el$97.nextSibling), _el$96 = _el$98.nextSibling;
|
|
891
|
+
addEventListener(_el$94, "click", () => handleSort(column.key));
|
|
892
|
+
insert(_el$95, () => column.label, _el$98, _co$20);
|
|
893
|
+
insert(_el$96, () => sortIndicator(column.key));
|
|
841
894
|
effect((_p$) => {
|
|
842
|
-
var _v$
|
|
895
|
+
var _v$20 = column.width ? {
|
|
843
896
|
width: column.width
|
|
844
|
-
} : {}, _v$
|
|
897
|
+
} : {}, _v$21 = formatMCPUIString(strings.sortBy, {
|
|
898
|
+
column: column.label
|
|
899
|
+
}), _v$22 = {
|
|
845
900
|
"opacity-30": sortKey() !== column.key,
|
|
846
901
|
"opacity-100 text-blue-600 dark:text-blue-400": sortKey() === column.key
|
|
847
902
|
};
|
|
848
|
-
_p$.e = style(_el$
|
|
849
|
-
_v$
|
|
850
|
-
_p$.a = classList(_el$
|
|
903
|
+
_p$.e = style(_el$94, _v$20, _p$.e);
|
|
904
|
+
_v$21 !== _p$.t && setAttribute(_el$94, "title", _p$.t = _v$21);
|
|
905
|
+
_p$.a = classList(_el$96, _v$22, _p$.a);
|
|
851
906
|
return _p$;
|
|
852
907
|
}, {
|
|
853
908
|
e: void 0,
|
|
854
909
|
t: void 0,
|
|
855
910
|
a: void 0
|
|
856
911
|
});
|
|
857
|
-
return _el$
|
|
912
|
+
return _el$94;
|
|
858
913
|
})()
|
|
859
914
|
}));
|
|
860
|
-
insert(_el$
|
|
915
|
+
insert(_el$54, createComponent(Show, {
|
|
861
916
|
get when() {
|
|
862
917
|
return isVirtualizing();
|
|
863
918
|
},
|
|
@@ -867,63 +922,69 @@ ${dataRows}`;
|
|
|
867
922
|
get children() {
|
|
868
923
|
return createComponent(VirtualizedTableBody, {});
|
|
869
924
|
}
|
|
870
|
-
}), _el$
|
|
871
|
-
insert(_el$
|
|
925
|
+
}), _el$58, _co$0);
|
|
926
|
+
insert(_el$39, createComponent(Show, {
|
|
872
927
|
get when() {
|
|
873
928
|
return tableParams.pagination;
|
|
874
929
|
},
|
|
875
930
|
get children() {
|
|
876
|
-
var _el$
|
|
877
|
-
insert(_el$
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
931
|
+
var _el$59 = getNextElement(_tmpl$20), _el$60 = _el$59.firstChild;
|
|
932
|
+
insert(_el$60, () => formatMCPUIString(strings.tableServerPageRange, {
|
|
933
|
+
start: tableParams.pagination.currentPage * tableParams.pagination.pageSize + 1,
|
|
934
|
+
end: Math.min((tableParams.pagination.currentPage + 1) * tableParams.pagination.pageSize, tableParams.pagination.totalRows),
|
|
935
|
+
total: tableParams.pagination.totalRows
|
|
936
|
+
}));
|
|
937
|
+
return _el$59;
|
|
881
938
|
}
|
|
882
|
-
}), _el$
|
|
883
|
-
insert(_el$
|
|
939
|
+
}), _el$89, _co$17);
|
|
940
|
+
insert(_el$39, createComponent(Show, {
|
|
884
941
|
get when() {
|
|
885
942
|
return needsClientPagination();
|
|
886
943
|
},
|
|
887
944
|
get children() {
|
|
888
|
-
var _el$
|
|
889
|
-
insert(_el$
|
|
890
|
-
insert(_el$
|
|
891
|
-
insert(_el$
|
|
892
|
-
_el$
|
|
893
|
-
insert(_el$
|
|
894
|
-
insert(_el$
|
|
895
|
-
_el$
|
|
896
|
-
insert(_el$
|
|
945
|
+
var _el$61 = getNextElement(_tmpl$23), _el$62 = _el$61.firstChild, _el$65 = _el$62.firstChild, [_el$66, _co$1] = getNextMarker(_el$65.nextSibling), _el$63 = _el$66.nextSibling, _el$67 = _el$63.nextSibling, [_el$68, _co$10] = getNextMarker(_el$67.nextSibling), _el$64 = _el$68.nextSibling, _el$69 = _el$64.nextSibling, [_el$70, _co$11] = 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] = getNextMarker(_el$75.nextSibling), _el$74 = _el$76.nextSibling, _el$77 = _el$74.nextSibling, [_el$78, _co$13] = getNextMarker(_el$77.nextSibling), _el$79 = _el$73.nextSibling, _el$82 = _el$79.nextSibling, [_el$83, _co$14] = getNextMarker(_el$82.nextSibling);
|
|
946
|
+
insert(_el$62, clientRangeStart, _el$66, _co$1);
|
|
947
|
+
insert(_el$62, clientRangeEnd, _el$68, _co$10);
|
|
948
|
+
insert(_el$62, () => filteredRows().length.toLocaleString(strings.locale), _el$70, _co$11);
|
|
949
|
+
_el$72.$$click = () => setClientPage((p) => p - 1);
|
|
950
|
+
insert(_el$73, () => clientPage() + 1, _el$76, _co$12);
|
|
951
|
+
insert(_el$73, clientTotalPages, _el$78, _co$13);
|
|
952
|
+
_el$79.$$click = () => setClientPage((p) => p + 1);
|
|
953
|
+
insert(_el$71, createComponent(Show, {
|
|
897
954
|
get when() {
|
|
898
955
|
return memo(() => !!isExpanded())() && filteredRows().length > 10;
|
|
899
956
|
},
|
|
900
957
|
get children() {
|
|
901
958
|
return [(() => {
|
|
902
|
-
var _el$
|
|
903
|
-
_el$
|
|
904
|
-
insert(_el$
|
|
959
|
+
var _el$80 = getNextElement(_tmpl$21);
|
|
960
|
+
_el$80.addEventListener("change", (e) => handlePageSizeChange(Number(e.currentTarget.value)));
|
|
961
|
+
insert(_el$80, createComponent(For, {
|
|
905
962
|
get each() {
|
|
906
963
|
return pageSizeOptions();
|
|
907
964
|
},
|
|
908
965
|
children: (opt) => (() => {
|
|
909
|
-
var _el$
|
|
910
|
-
insert(_el$
|
|
911
|
-
effect(() => setProperty(_el$
|
|
912
|
-
return _el$
|
|
966
|
+
var _el$99 = getNextElement(_tmpl$26);
|
|
967
|
+
insert(_el$99, () => opt.label);
|
|
968
|
+
effect(() => setProperty(_el$99, "value", opt.value));
|
|
969
|
+
return _el$99;
|
|
913
970
|
})()
|
|
914
971
|
}));
|
|
915
|
-
effect(() => setAttribute(_el$
|
|
916
|
-
effect(() => setProperty(_el$
|
|
917
|
-
return _el$
|
|
918
|
-
})(),
|
|
972
|
+
effect(() => setAttribute(_el$80, "aria-label", strings.paginationPageSize));
|
|
973
|
+
effect(() => setProperty(_el$80, "value", clientPageSize()));
|
|
974
|
+
return _el$80;
|
|
975
|
+
})(), (() => {
|
|
976
|
+
var _el$81 = getNextElement(_tmpl$22);
|
|
977
|
+
insert(_el$81, () => strings.perPageSuffix);
|
|
978
|
+
return _el$81;
|
|
979
|
+
})()];
|
|
919
980
|
}
|
|
920
|
-
}), _el$
|
|
981
|
+
}), _el$83, _co$14);
|
|
921
982
|
effect((_p$) => {
|
|
922
|
-
var _v$
|
|
923
|
-
_v$
|
|
924
|
-
_v$
|
|
925
|
-
_v$
|
|
926
|
-
_v$
|
|
983
|
+
var _v$10 = clientPage() === 0, _v$11 = strings.paginationPrevious, _v$12 = clientPage() >= clientTotalPages() - 1, _v$13 = strings.paginationNext;
|
|
984
|
+
_v$10 !== _p$.e && setProperty(_el$72, "disabled", _p$.e = _v$10);
|
|
985
|
+
_v$11 !== _p$.t && setAttribute(_el$72, "aria-label", _p$.t = _v$11);
|
|
986
|
+
_v$12 !== _p$.a && setProperty(_el$79, "disabled", _p$.a = _v$12);
|
|
987
|
+
_v$13 !== _p$.o && setAttribute(_el$79, "aria-label", _p$.o = _v$13);
|
|
927
988
|
return _p$;
|
|
928
989
|
}, {
|
|
929
990
|
e: void 0,
|
|
@@ -932,11 +993,11 @@ ${dataRows}`;
|
|
|
932
993
|
o: void 0
|
|
933
994
|
});
|
|
934
995
|
runHydrationEvents();
|
|
935
|
-
return _el$
|
|
996
|
+
return _el$61;
|
|
936
997
|
}
|
|
937
|
-
}), _el$
|
|
998
|
+
}), _el$91, _co$18);
|
|
938
999
|
effect((_p$) => {
|
|
939
|
-
var _v$
|
|
1000
|
+
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 = (
|
|
940
1001
|
// v6.1.0 — when expanded, the scroll container fills the
|
|
941
1002
|
// remaining vertical space and scrolls internally.
|
|
942
1003
|
// v6.3.0 — `params.maxHeight` opt-out (axe 1 deposium handoff)
|
|
@@ -965,13 +1026,13 @@ ${dataRows}`;
|
|
|
965
1026
|
};
|
|
966
1027
|
return {};
|
|
967
1028
|
})()
|
|
968
|
-
), _v$
|
|
969
|
-
_v$
|
|
970
|
-
_v$
|
|
971
|
-
_v$
|
|
972
|
-
_p$.o = style(_el$
|
|
973
|
-
_v$
|
|
974
|
-
_v$
|
|
1029
|
+
), _v$18 = tableParams.title || strings.tableAriaLabel, _v$19 = tableParams.title ? `${tableId}-title` : void 0;
|
|
1030
|
+
_v$14 !== _p$.e && className(_el$31, _p$.e = _v$14);
|
|
1031
|
+
_v$15 !== _p$.t && className(_el$39, _p$.t = _v$15);
|
|
1032
|
+
_v$16 !== _p$.a && className(_el$53, _p$.a = _v$16);
|
|
1033
|
+
_p$.o = style(_el$53, _v$17, _p$.o);
|
|
1034
|
+
_v$18 !== _p$.i && setAttribute(_el$53, "aria-label", _p$.i = _v$18);
|
|
1035
|
+
_v$19 !== _p$.n && setAttribute(_el$54, "aria-labelledby", _p$.n = _v$19);
|
|
975
1036
|
return _p$;
|
|
976
1037
|
}, {
|
|
977
1038
|
e: void 0,
|
|
@@ -981,11 +1042,12 @@ ${dataRows}`;
|
|
|
981
1042
|
i: void 0,
|
|
982
1043
|
n: void 0
|
|
983
1044
|
});
|
|
984
|
-
return _el$
|
|
1045
|
+
return _el$31;
|
|
985
1046
|
}
|
|
986
1047
|
});
|
|
987
1048
|
}
|
|
988
1049
|
function MetricRenderer(props) {
|
|
1050
|
+
const strings = useMCPUIStrings();
|
|
989
1051
|
const metricParams = props.component.params;
|
|
990
1052
|
const getMetricText = () => {
|
|
991
1053
|
const title = metricParams.title || metricParams.label || "";
|
|
@@ -994,59 +1056,61 @@ function MetricRenderer(props) {
|
|
|
994
1056
|
return `${title}: ${value}${unit ? " " + unit : ""}`;
|
|
995
1057
|
};
|
|
996
1058
|
return (() => {
|
|
997
|
-
var _el$
|
|
998
|
-
insert(_el$
|
|
1059
|
+
var _el$100 = getNextElement(_tmpl$30), _el$122 = _el$100.firstChild, [_el$123, _co$26] = 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] = getNextMarker(_el$107.nextSibling), _el$118 = _el$102.nextSibling, [_el$119, _co$24] = getNextMarker(_el$118.nextSibling), _el$120 = _el$119.nextSibling, [_el$121, _co$25] = getNextMarker(_el$120.nextSibling);
|
|
1060
|
+
insert(_el$100, createComponent(CopyButton, {
|
|
999
1061
|
getText: getMetricText,
|
|
1000
|
-
title
|
|
1062
|
+
get title() {
|
|
1063
|
+
return strings.copyMetric;
|
|
1064
|
+
},
|
|
1001
1065
|
position: "top-right"
|
|
1002
|
-
}), _el$
|
|
1003
|
-
insert(_el$
|
|
1004
|
-
insert(_el$
|
|
1005
|
-
insert(_el$
|
|
1066
|
+
}), _el$123, _co$26);
|
|
1067
|
+
insert(_el$103, () => metricParams.title);
|
|
1068
|
+
insert(_el$105, () => metricParams.value);
|
|
1069
|
+
insert(_el$104, createComponent(Show, {
|
|
1006
1070
|
get when() {
|
|
1007
1071
|
return metricParams.unit;
|
|
1008
1072
|
},
|
|
1009
1073
|
get children() {
|
|
1010
|
-
var _el$
|
|
1011
|
-
insert(_el$
|
|
1012
|
-
return _el$
|
|
1074
|
+
var _el$106 = getNextElement(_tmpl$27);
|
|
1075
|
+
insert(_el$106, () => metricParams.unit);
|
|
1076
|
+
return _el$106;
|
|
1013
1077
|
}
|
|
1014
|
-
}), _el$
|
|
1015
|
-
insert(_el$
|
|
1078
|
+
}), _el$108, _co$21);
|
|
1079
|
+
insert(_el$101, createComponent(Show, {
|
|
1016
1080
|
get when() {
|
|
1017
1081
|
return metricParams.trend;
|
|
1018
1082
|
},
|
|
1019
1083
|
get children() {
|
|
1020
|
-
var _el$
|
|
1021
|
-
_el$
|
|
1022
|
-
insert(_el$
|
|
1084
|
+
var _el$109 = getNextElement(_tmpl$28), _el$110 = _el$109.firstChild, _el$113 = _el$110.firstChild, [_el$114, _co$22] = getNextMarker(_el$113.nextSibling), _el$111 = _el$114.nextSibling, _el$115 = _el$111.nextSibling, [_el$116, _co$23] = getNextMarker(_el$115.nextSibling);
|
|
1085
|
+
_el$116.nextSibling;
|
|
1086
|
+
insert(_el$110, (() => {
|
|
1023
1087
|
var _c$ = memo(() => metricParams.trend.direction === "up");
|
|
1024
1088
|
return () => _c$() ? "�" : metricParams.trend.direction === "down" ? "�" : "�";
|
|
1025
|
-
})(), _el$
|
|
1026
|
-
insert(_el$
|
|
1027
|
-
effect(() => className(_el$
|
|
1028
|
-
return _el$
|
|
1089
|
+
})(), _el$114, _co$22);
|
|
1090
|
+
insert(_el$110, () => Math.abs(metricParams.trend.value), _el$116, _co$23);
|
|
1091
|
+
effect(() => 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"}`));
|
|
1092
|
+
return _el$109;
|
|
1029
1093
|
}
|
|
1030
|
-
}), _el$
|
|
1031
|
-
insert(_el$
|
|
1094
|
+
}), _el$119, _co$24);
|
|
1095
|
+
insert(_el$101, createComponent(Show, {
|
|
1032
1096
|
get when() {
|
|
1033
1097
|
return metricParams.subtitle;
|
|
1034
1098
|
},
|
|
1035
1099
|
get children() {
|
|
1036
|
-
var _el$
|
|
1037
|
-
insert(_el$
|
|
1038
|
-
return _el$
|
|
1100
|
+
var _el$117 = getNextElement(_tmpl$29);
|
|
1101
|
+
insert(_el$117, () => metricParams.subtitle);
|
|
1102
|
+
return _el$117;
|
|
1039
1103
|
}
|
|
1040
|
-
}), _el$
|
|
1041
|
-
return _el$
|
|
1104
|
+
}), _el$121, _co$25);
|
|
1105
|
+
return _el$100;
|
|
1042
1106
|
})();
|
|
1043
1107
|
}
|
|
1044
|
-
function extractImageFromMarkdown(content) {
|
|
1108
|
+
function extractImageFromMarkdown(content, fallbackAlt) {
|
|
1045
1109
|
const imagePattern = /\[!\[([^\]]*)\]\(([^)]+)\)\]\(([^)]+)\)\s*\*([^*]+)\*/;
|
|
1046
1110
|
const match = content.match(imagePattern);
|
|
1047
1111
|
if (match) {
|
|
1048
1112
|
return {
|
|
1049
|
-
alt: match[1] ||
|
|
1113
|
+
alt: match[1] || fallbackAlt,
|
|
1050
1114
|
imageUrl: match[2],
|
|
1051
1115
|
linkUrl: match[3],
|
|
1052
1116
|
credit: match[4].trim()
|
|
@@ -1055,10 +1119,11 @@ function extractImageFromMarkdown(content) {
|
|
|
1055
1119
|
return null;
|
|
1056
1120
|
}
|
|
1057
1121
|
function TextRenderer(props) {
|
|
1122
|
+
const strings = useMCPUIStrings();
|
|
1058
1123
|
const textParams = props.component.params;
|
|
1059
1124
|
const imageData = createMemo(() => {
|
|
1060
1125
|
if (textParams.markdown && textParams.content) {
|
|
1061
|
-
const extracted = extractImageFromMarkdown(textParams.content);
|
|
1126
|
+
const extracted = extractImageFromMarkdown(textParams.content, strings.imageAlt);
|
|
1062
1127
|
if (!extracted) return null;
|
|
1063
1128
|
const imageUrl = safeUrl(extracted.imageUrl, {
|
|
1064
1129
|
allowDataImage: true
|
|
@@ -1094,38 +1159,40 @@ function TextRenderer(props) {
|
|
|
1094
1159
|
},
|
|
1095
1160
|
get fallback() {
|
|
1096
1161
|
return (() => {
|
|
1097
|
-
var _el$
|
|
1098
|
-
insert(_el$
|
|
1162
|
+
var _el$124 = getNextElement(_tmpl$31), _el$125 = _el$124.firstChild, [_el$126, _co$27] = getNextMarker(_el$125.nextSibling), _el$127 = _el$126.nextSibling, [_el$128, _co$28] = getNextMarker(_el$127.nextSibling);
|
|
1163
|
+
insert(_el$124, createComponent(CopyButton, {
|
|
1099
1164
|
getText: getTextContent,
|
|
1100
|
-
title
|
|
1165
|
+
get title() {
|
|
1166
|
+
return strings.copyText;
|
|
1167
|
+
},
|
|
1101
1168
|
position: "top-right"
|
|
1102
|
-
}), _el$
|
|
1103
|
-
insert(_el$
|
|
1169
|
+
}), _el$126, _co$27);
|
|
1170
|
+
insert(_el$124, createComponent(SafeHtml, {
|
|
1104
1171
|
get ["class"]() {
|
|
1105
1172
|
return `prose prose-sm dark:prose-invert max-w-none ${textParams.className || ""}`;
|
|
1106
1173
|
},
|
|
1107
1174
|
html: htmlContent
|
|
1108
|
-
}), _el$
|
|
1109
|
-
return _el$
|
|
1175
|
+
}), _el$128, _co$28);
|
|
1176
|
+
return _el$124;
|
|
1110
1177
|
})();
|
|
1111
1178
|
},
|
|
1112
1179
|
children: (data) => {
|
|
1113
1180
|
const image = () => (() => {
|
|
1114
|
-
var _el$
|
|
1181
|
+
var _el$129 = getNextElement(_tmpl$32);
|
|
1115
1182
|
effect((_p$) => {
|
|
1116
|
-
var _v$
|
|
1117
|
-
_v$
|
|
1118
|
-
_v$
|
|
1183
|
+
var _v$23 = data().imageUrl, _v$24 = data().alt;
|
|
1184
|
+
_v$23 !== _p$.e && setAttribute(_el$129, "src", _p$.e = _v$23);
|
|
1185
|
+
_v$24 !== _p$.t && setAttribute(_el$129, "alt", _p$.t = _v$24);
|
|
1119
1186
|
return _p$;
|
|
1120
1187
|
}, {
|
|
1121
1188
|
e: void 0,
|
|
1122
1189
|
t: void 0
|
|
1123
1190
|
});
|
|
1124
|
-
return _el$
|
|
1191
|
+
return _el$129;
|
|
1125
1192
|
})();
|
|
1126
1193
|
return (() => {
|
|
1127
|
-
var _el$
|
|
1128
|
-
insert(_el$
|
|
1194
|
+
var _el$130 = getNextElement(_tmpl$33), _el$131 = _el$130.firstChild, _el$132 = _el$131.nextSibling, _el$133 = _el$132.firstChild;
|
|
1195
|
+
insert(_el$131, createComponent(Show, {
|
|
1129
1196
|
get when() {
|
|
1130
1197
|
return data().linkUrl;
|
|
1131
1198
|
},
|
|
@@ -1133,71 +1200,91 @@ function TextRenderer(props) {
|
|
|
1133
1200
|
return image();
|
|
1134
1201
|
},
|
|
1135
1202
|
children: (href) => (() => {
|
|
1136
|
-
var _el$
|
|
1137
|
-
insert(_el$
|
|
1138
|
-
effect(() => setAttribute(_el$
|
|
1139
|
-
return _el$
|
|
1203
|
+
var _el$134 = getNextElement(_tmpl$34);
|
|
1204
|
+
insert(_el$134, image);
|
|
1205
|
+
effect(() => setAttribute(_el$134, "href", href()));
|
|
1206
|
+
return _el$134;
|
|
1140
1207
|
})()
|
|
1141
1208
|
}));
|
|
1142
|
-
insert(_el$
|
|
1143
|
-
return _el$
|
|
1209
|
+
insert(_el$133, () => data().credit);
|
|
1210
|
+
return _el$130;
|
|
1144
1211
|
})();
|
|
1145
1212
|
}
|
|
1146
1213
|
});
|
|
1147
1214
|
}
|
|
1148
1215
|
function IframeRenderer(props) {
|
|
1216
|
+
const strings = useMCPUIStrings();
|
|
1217
|
+
const config = useMCPUIConfig();
|
|
1149
1218
|
const params = props.component.params;
|
|
1219
|
+
const trustOptions = () => ({
|
|
1220
|
+
customTrustedDomains: config.customTrustedIframeDomains
|
|
1221
|
+
});
|
|
1150
1222
|
return (() => {
|
|
1151
|
-
var _el$
|
|
1152
|
-
insert(_el$
|
|
1223
|
+
var _el$135 = getNextElement(_tmpl$36), _el$139 = _el$135.firstChild, [_el$140, _co$29] = getNextMarker(_el$139.nextSibling), _el$138 = _el$140.nextSibling, _el$141 = _el$138.nextSibling, [_el$142, _co$30] = getNextMarker(_el$141.nextSibling);
|
|
1224
|
+
insert(_el$135, createComponent(Show, {
|
|
1153
1225
|
get when() {
|
|
1154
1226
|
return params.title;
|
|
1155
1227
|
},
|
|
1156
1228
|
get children() {
|
|
1157
|
-
var _el$
|
|
1158
|
-
insert(_el$
|
|
1159
|
-
return _el$
|
|
1229
|
+
var _el$136 = getNextElement(_tmpl$35), _el$137 = _el$136.firstChild;
|
|
1230
|
+
insert(_el$137, () => params.title);
|
|
1231
|
+
return _el$136;
|
|
1160
1232
|
}
|
|
1161
|
-
}), _el$
|
|
1233
|
+
}), _el$140, _co$29);
|
|
1234
|
+
insert(_el$135, createComponent(IframeFallbackLink, {
|
|
1235
|
+
get url() {
|
|
1236
|
+
return params.url;
|
|
1237
|
+
},
|
|
1238
|
+
"class": "border-t border-gray-200 dark:border-gray-700"
|
|
1239
|
+
}), _el$142, _co$30);
|
|
1162
1240
|
effect((_p$) => {
|
|
1163
|
-
var _v$
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1241
|
+
var _v$25 = params.url, _v$26 = params.title || strings.iframeTitle, _v$27 = `height: ${params.height || "400px"}; min-height: 300px;`, _v$28 = getIframeSandbox(params.url, trustOptions()), _v$29 = shouldSetCredentialless(params.url, config, {
|
|
1242
|
+
// This iframe's sandbox never carries `allow-same-origin` for an
|
|
1243
|
+
// untrusted host, so it already runs without cookies.
|
|
1244
|
+
sandboxedWithoutSameOrigin: !isTrustedIframeDomain(params.url, trustOptions())
|
|
1245
|
+
}) || void 0;
|
|
1246
|
+
_v$25 !== _p$.e && setAttribute(_el$138, "src", _p$.e = _v$25);
|
|
1247
|
+
_v$26 !== _p$.t && setAttribute(_el$138, "title", _p$.t = _v$26);
|
|
1248
|
+
_p$.a = style(_el$138, _v$27, _p$.a);
|
|
1249
|
+
_v$28 !== _p$.o && setAttribute(_el$138, "sandbox", _p$.o = _v$28);
|
|
1250
|
+
_v$29 !== _p$.i && setAttribute(_el$138, "credentialless", _p$.i = _v$29);
|
|
1168
1251
|
return _p$;
|
|
1169
1252
|
}, {
|
|
1170
1253
|
e: void 0,
|
|
1171
1254
|
t: void 0,
|
|
1172
1255
|
a: void 0,
|
|
1173
|
-
o: void 0
|
|
1256
|
+
o: void 0,
|
|
1257
|
+
i: void 0
|
|
1174
1258
|
});
|
|
1175
|
-
return _el$
|
|
1259
|
+
return _el$135;
|
|
1176
1260
|
})();
|
|
1177
1261
|
}
|
|
1178
1262
|
function ImageRenderer(props) {
|
|
1263
|
+
const strings = useMCPUIStrings();
|
|
1179
1264
|
const params = props.component.params;
|
|
1180
1265
|
return (() => {
|
|
1181
|
-
var _el$
|
|
1182
|
-
insert(_el$
|
|
1266
|
+
var _el$143 = 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] = getNextMarker(_el$149.nextSibling);
|
|
1267
|
+
insert(_el$143, createComponent(Show, {
|
|
1183
1268
|
get when() {
|
|
1184
1269
|
return params.caption;
|
|
1185
1270
|
},
|
|
1186
1271
|
get children() {
|
|
1187
|
-
var _el$
|
|
1188
|
-
insert(_el$
|
|
1189
|
-
return _el$
|
|
1272
|
+
var _el$147 = getNextElement(_tmpl$37), _el$148 = _el$147.firstChild;
|
|
1273
|
+
insert(_el$148, () => params.caption);
|
|
1274
|
+
return _el$147;
|
|
1190
1275
|
}
|
|
1191
|
-
}), _el$
|
|
1276
|
+
}), _el$150, _co$31);
|
|
1192
1277
|
effect((_p$) => {
|
|
1193
|
-
var _v$
|
|
1278
|
+
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(params.url), _v$32 = formatMCPUIString(strings.imageViewFullSize, {
|
|
1279
|
+
alt: params.alt || strings.imageAltFallback
|
|
1280
|
+
}), _v$33 = safeUrl(params.url, {
|
|
1194
1281
|
allowDataImage: true
|
|
1195
|
-
}), _v$
|
|
1196
|
-
_v$
|
|
1197
|
-
_v$
|
|
1198
|
-
_v$
|
|
1199
|
-
_v$
|
|
1200
|
-
_v$
|
|
1282
|
+
}), _v$34 = params.alt || strings.imageAlt;
|
|
1283
|
+
_v$30 !== _p$.e && className(_el$143, _p$.e = _v$30);
|
|
1284
|
+
_v$31 !== _p$.t && setAttribute(_el$145, "href", _p$.t = _v$31);
|
|
1285
|
+
_v$32 !== _p$.a && setAttribute(_el$145, "aria-label", _p$.a = _v$32);
|
|
1286
|
+
_v$33 !== _p$.o && setAttribute(_el$146, "src", _p$.o = _v$33);
|
|
1287
|
+
_v$34 !== _p$.i && setAttribute(_el$146, "alt", _p$.i = _v$34);
|
|
1201
1288
|
return _p$;
|
|
1202
1289
|
}, {
|
|
1203
1290
|
e: void 0,
|
|
@@ -1206,30 +1293,34 @@ function ImageRenderer(props) {
|
|
|
1206
1293
|
o: void 0,
|
|
1207
1294
|
i: void 0
|
|
1208
1295
|
});
|
|
1209
|
-
return _el$
|
|
1296
|
+
return _el$143;
|
|
1210
1297
|
})();
|
|
1211
1298
|
}
|
|
1212
1299
|
function LinkRenderer(props) {
|
|
1300
|
+
const strings = useMCPUIStrings();
|
|
1213
1301
|
const params = props.component.params;
|
|
1214
1302
|
return (() => {
|
|
1215
|
-
var _el$
|
|
1216
|
-
_el$
|
|
1217
|
-
insert(_el$
|
|
1218
|
-
insert(_el$
|
|
1303
|
+
var _el$151 = 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] = getNextMarker(_el$156.nextSibling);
|
|
1304
|
+
_el$151.$$click = (e) => e.stopPropagation();
|
|
1305
|
+
insert(_el$154, () => params.label || params.url);
|
|
1306
|
+
insert(_el$153, createComponent(Show, {
|
|
1219
1307
|
get when() {
|
|
1220
1308
|
return params.description;
|
|
1221
1309
|
},
|
|
1222
1310
|
get children() {
|
|
1223
|
-
var _el$
|
|
1224
|
-
insert(_el$
|
|
1225
|
-
return _el$
|
|
1311
|
+
var _el$155 = getNextElement(_tmpl$39);
|
|
1312
|
+
insert(_el$155, () => params.description);
|
|
1313
|
+
return _el$155;
|
|
1226
1314
|
}
|
|
1227
|
-
}), _el$
|
|
1315
|
+
}), _el$157, _co$32);
|
|
1228
1316
|
effect((_p$) => {
|
|
1229
|
-
var _v$
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
_v$
|
|
1317
|
+
var _v$35 = safeUrl(params.url), _v$36 = formatMCPUIString(strings.linkOpensInNewTab, {
|
|
1318
|
+
label: params.label || strings.linkLabel,
|
|
1319
|
+
description: params.description || params.url
|
|
1320
|
+
}), _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 || ""}`;
|
|
1321
|
+
_v$35 !== _p$.e && setAttribute(_el$151, "href", _p$.e = _v$35);
|
|
1322
|
+
_v$36 !== _p$.t && setAttribute(_el$151, "aria-label", _p$.t = _v$36);
|
|
1323
|
+
_v$37 !== _p$.a && className(_el$151, _p$.a = _v$37);
|
|
1233
1324
|
return _p$;
|
|
1234
1325
|
}, {
|
|
1235
1326
|
e: void 0,
|
|
@@ -1237,13 +1328,15 @@ function LinkRenderer(props) {
|
|
|
1237
1328
|
a: void 0
|
|
1238
1329
|
});
|
|
1239
1330
|
runHydrationEvents();
|
|
1240
|
-
return _el$
|
|
1331
|
+
return _el$151;
|
|
1241
1332
|
})();
|
|
1242
1333
|
}
|
|
1243
1334
|
function ComponentRenderer(props) {
|
|
1244
1335
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
1245
1336
|
markRenderStart(props.component.id);
|
|
1246
1337
|
const telemetry = useTelemetry();
|
|
1338
|
+
const strings = useMCPUIStrings();
|
|
1339
|
+
const componentConfig = useMCPUIConfig();
|
|
1247
1340
|
onMount(() => {
|
|
1248
1341
|
markRenderEnd(props.component.id);
|
|
1249
1342
|
if (telemetry) {
|
|
@@ -1279,7 +1372,10 @@ function ComponentRenderer(props) {
|
|
|
1279
1372
|
});
|
|
1280
1373
|
}
|
|
1281
1374
|
});
|
|
1282
|
-
const validation = validateComponent(props.component
|
|
1375
|
+
const validation = validateComponent(props.component, {
|
|
1376
|
+
iframePolicy: componentConfig.iframePolicy,
|
|
1377
|
+
customIframeDomains: componentConfig.customIframeDomains
|
|
1378
|
+
});
|
|
1283
1379
|
if (!validation.valid) {
|
|
1284
1380
|
(_a = props.onError) == null ? void 0 : _a.call(props, {
|
|
1285
1381
|
type: "validation",
|
|
@@ -1298,7 +1394,7 @@ function ComponentRenderer(props) {
|
|
|
1298
1394
|
});
|
|
1299
1395
|
}
|
|
1300
1396
|
const mode = props.errorMode ?? "block";
|
|
1301
|
-
const firstError = ((_f = (_e = validation.errors) == null ? void 0 : _e[0]) == null ? void 0 : _f.message) ||
|
|
1397
|
+
const firstError = ((_f = (_e = validation.errors) == null ? void 0 : _e[0]) == null ? void 0 : _f.message) || strings.validationUnknownError;
|
|
1302
1398
|
if ((_g = validation.errors) == null ? void 0 : _g.some((e) => e.code === "UNKNOWN_COMPONENT_TYPE")) {
|
|
1303
1399
|
return createComponent(UnsupportedComponentFallback, {
|
|
1304
1400
|
get component() {
|
|
@@ -1311,16 +1407,20 @@ function ComponentRenderer(props) {
|
|
|
1311
1407
|
}
|
|
1312
1408
|
if (mode === "inline-warn") {
|
|
1313
1409
|
return (() => {
|
|
1314
|
-
var _el$
|
|
1315
|
-
setAttribute(_el$
|
|
1316
|
-
insert(_el$
|
|
1317
|
-
|
|
1410
|
+
var _el$158 = getNextElement(_tmpl$41), _el$159 = _el$158.firstChild, _el$160 = _el$159.nextSibling;
|
|
1411
|
+
setAttribute(_el$158, "title", firstError);
|
|
1412
|
+
insert(_el$160, () => formatMCPUIString(strings.invalidComponent, {
|
|
1413
|
+
type: props.component.type
|
|
1414
|
+
}));
|
|
1415
|
+
effect(() => setAttribute(_el$158, "aria-label", strings.validationWarning));
|
|
1416
|
+
return _el$158;
|
|
1318
1417
|
})();
|
|
1319
1418
|
}
|
|
1320
1419
|
return (() => {
|
|
1321
|
-
var _el$
|
|
1322
|
-
insert(_el$
|
|
1323
|
-
|
|
1420
|
+
var _el$161 = getNextElement(_tmpl$42), _el$162 = _el$161.firstChild, _el$163 = _el$162.nextSibling;
|
|
1421
|
+
insert(_el$162, () => strings.validationError);
|
|
1422
|
+
insert(_el$163, firstError);
|
|
1423
|
+
return _el$161;
|
|
1324
1424
|
})();
|
|
1325
1425
|
}
|
|
1326
1426
|
return createComponent(GenerativeUIErrorBoundary, {
|
|
@@ -1612,10 +1712,12 @@ function ComponentRenderer(props) {
|
|
|
1612
1712
|
});
|
|
1613
1713
|
}
|
|
1614
1714
|
function UnsupportedComponentFallback(props) {
|
|
1715
|
+
const strings = useMCPUIStrings();
|
|
1615
1716
|
return (() => {
|
|
1616
|
-
var _el$
|
|
1617
|
-
insert(_el$
|
|
1618
|
-
|
|
1717
|
+
var _el$164 = getNextElement(_tmpl$43), _el$167 = _el$164.firstChild, [_el$168, _co$33] = getNextMarker(_el$167.nextSibling), _el$165 = _el$168.nextSibling, _el$166 = _el$165.nextSibling;
|
|
1718
|
+
insert(_el$164, () => strings.unsupportedComponentType, _el$168, _co$33);
|
|
1719
|
+
insert(_el$166, () => props.component.type);
|
|
1720
|
+
return _el$164;
|
|
1619
1721
|
})();
|
|
1620
1722
|
}
|
|
1621
1723
|
function ActionRenderer(props) {
|
|
@@ -1655,27 +1757,27 @@ function ActionRenderer(props) {
|
|
|
1655
1757
|
const isDisabled = () => params.disabled || isExecutable() && isExecuting();
|
|
1656
1758
|
if (params.type === "link" || params.action === "link") {
|
|
1657
1759
|
return (() => {
|
|
1658
|
-
var _el$
|
|
1659
|
-
_el$
|
|
1660
|
-
insert(_el$
|
|
1760
|
+
var _el$169 = getNextElement(_tmpl$45), _el$171 = _el$169.firstChild, [_el$172, _co$34] = getNextMarker(_el$171.nextSibling), _el$173 = _el$172.nextSibling, [_el$174, _co$35] = getNextMarker(_el$173.nextSibling);
|
|
1761
|
+
_el$169.$$click = handleClick;
|
|
1762
|
+
insert(_el$169, createComponent(Show, {
|
|
1661
1763
|
get when() {
|
|
1662
1764
|
return params.icon;
|
|
1663
1765
|
},
|
|
1664
1766
|
get children() {
|
|
1665
|
-
var _el$
|
|
1666
|
-
insert(_el$
|
|
1667
|
-
return _el$
|
|
1767
|
+
var _el$170 = getNextElement(_tmpl$44);
|
|
1768
|
+
insert(_el$170, () => params.icon);
|
|
1769
|
+
return _el$170;
|
|
1668
1770
|
}
|
|
1669
|
-
}), _el$
|
|
1670
|
-
insert(_el$
|
|
1771
|
+
}), _el$172, _co$34);
|
|
1772
|
+
insert(_el$169, () => params.label, _el$174, _co$35);
|
|
1671
1773
|
effect((_p$) => {
|
|
1672
|
-
var _v$
|
|
1774
|
+
var _v$38 = safeUrl(params.url) ?? "#", _v$39 = 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
|
|
1673
1775
|
${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"}
|
|
1674
1776
|
${params.className || ""}`;
|
|
1675
|
-
_v$
|
|
1676
|
-
_v$
|
|
1677
|
-
_v$
|
|
1678
|
-
_v$
|
|
1777
|
+
_v$38 !== _p$.e && setAttribute(_el$169, "href", _p$.e = _v$38);
|
|
1778
|
+
_v$39 !== _p$.t && setAttribute(_el$169, "target", _p$.t = _v$39);
|
|
1779
|
+
_v$40 !== _p$.a && setAttribute(_el$169, "aria-label", _p$.a = _v$40);
|
|
1780
|
+
_v$41 !== _p$.o && className(_el$169, _p$.o = _v$41);
|
|
1679
1781
|
return _p$;
|
|
1680
1782
|
}, {
|
|
1681
1783
|
e: void 0,
|
|
@@ -1684,41 +1786,41 @@ function ActionRenderer(props) {
|
|
|
1684
1786
|
o: void 0
|
|
1685
1787
|
});
|
|
1686
1788
|
runHydrationEvents();
|
|
1687
|
-
return _el$
|
|
1789
|
+
return _el$169;
|
|
1688
1790
|
})();
|
|
1689
1791
|
}
|
|
1690
1792
|
return (() => {
|
|
1691
|
-
var _el$
|
|
1692
|
-
_el$
|
|
1693
|
-
insert(_el$
|
|
1793
|
+
var _el$175 = getNextElement(_tmpl$47), _el$178 = _el$175.firstChild, [_el$179, _co$36] = getNextMarker(_el$178.nextSibling), _el$180 = _el$179.nextSibling, [_el$181, _co$37] = getNextMarker(_el$180.nextSibling), _el$182 = _el$181.nextSibling, [_el$183, _co$38] = getNextMarker(_el$182.nextSibling);
|
|
1794
|
+
_el$175.$$click = handleClick;
|
|
1795
|
+
insert(_el$175, createComponent(Show, {
|
|
1694
1796
|
get when() {
|
|
1695
1797
|
return memo(() => !!isExecuting())() && isExecutable();
|
|
1696
1798
|
},
|
|
1697
1799
|
get children() {
|
|
1698
|
-
return getNextElement(_tmpl$
|
|
1800
|
+
return getNextElement(_tmpl$46);
|
|
1699
1801
|
}
|
|
1700
|
-
}), _el$
|
|
1701
|
-
insert(_el$
|
|
1802
|
+
}), _el$179, _co$36);
|
|
1803
|
+
insert(_el$175, createComponent(Show, {
|
|
1702
1804
|
get when() {
|
|
1703
1805
|
return memo(() => !!params.icon)() && !(isExecuting() && isExecutable());
|
|
1704
1806
|
},
|
|
1705
1807
|
get children() {
|
|
1706
|
-
var _el$
|
|
1707
|
-
insert(_el$
|
|
1708
|
-
return _el$
|
|
1808
|
+
var _el$177 = getNextElement(_tmpl$44);
|
|
1809
|
+
insert(_el$177, () => params.icon);
|
|
1810
|
+
return _el$177;
|
|
1709
1811
|
}
|
|
1710
|
-
}), _el$
|
|
1711
|
-
insert(_el$
|
|
1812
|
+
}), _el$181, _co$37);
|
|
1813
|
+
insert(_el$175, () => params.label, _el$183, _co$38);
|
|
1712
1814
|
effect((_p$) => {
|
|
1713
|
-
var _v$
|
|
1815
|
+
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
|
|
1714
1816
|
${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"}
|
|
1715
1817
|
${isDisabled() ? "opacity-50 cursor-not-allowed" : ""}
|
|
1716
1818
|
${params.size === "sm" ? "px-3 py-1.5 text-xs" : params.size === "lg" ? "px-6 py-3 text-base" : ""}
|
|
1717
1819
|
${params.className || ""}`;
|
|
1718
|
-
_v$
|
|
1719
|
-
_v$
|
|
1720
|
-
_v$
|
|
1721
|
-
_v$
|
|
1820
|
+
_v$42 !== _p$.e && setProperty(_el$175, "disabled", _p$.e = _v$42);
|
|
1821
|
+
_v$43 !== _p$.t && setAttribute(_el$175, "aria-busy", _p$.t = _v$43);
|
|
1822
|
+
_v$44 !== _p$.a && setAttribute(_el$175, "aria-label", _p$.a = _v$44);
|
|
1823
|
+
_v$45 !== _p$.o && className(_el$175, _p$.o = _v$45);
|
|
1722
1824
|
return _p$;
|
|
1723
1825
|
}, {
|
|
1724
1826
|
e: void 0,
|
|
@@ -1727,63 +1829,76 @@ function ActionRenderer(props) {
|
|
|
1727
1829
|
o: void 0
|
|
1728
1830
|
});
|
|
1729
1831
|
runHydrationEvents();
|
|
1730
|
-
return _el$
|
|
1832
|
+
return _el$175;
|
|
1731
1833
|
})();
|
|
1732
1834
|
}
|
|
1733
1835
|
function ErrorCardRenderer(props) {
|
|
1836
|
+
const strings = useMCPUIStrings();
|
|
1837
|
+
const [mounted, setMounted] = createSignal(false);
|
|
1838
|
+
onMount(() => setMounted(true));
|
|
1734
1839
|
const getErrorText = () => {
|
|
1735
|
-
return
|
|
1840
|
+
return formatMCPUIString(strings.errorCopyText, {
|
|
1841
|
+
tool: props.error.tool || strings.errorUnknownTool,
|
|
1842
|
+
message: props.error.message || strings.errorUnknown
|
|
1843
|
+
});
|
|
1736
1844
|
};
|
|
1737
1845
|
return (() => {
|
|
1738
|
-
var _el$
|
|
1739
|
-
insert(_el$
|
|
1846
|
+
var _el$184 = getNextElement(_tmpl$51), _el$201 = _el$184.firstChild, [_el$202, _co$42] = 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] = getNextMarker(_el$195.nextSibling), _el$197 = _el$196.nextSibling, [_el$198, _co$40] = getNextMarker(_el$197.nextSibling), _el$199 = _el$198.nextSibling, [_el$200, _co$41] = getNextMarker(_el$199.nextSibling);
|
|
1847
|
+
insert(_el$184, createComponent(CopyButton, {
|
|
1740
1848
|
getText: getErrorText,
|
|
1741
|
-
title
|
|
1849
|
+
get title() {
|
|
1850
|
+
return strings.copyErrorDetails;
|
|
1851
|
+
},
|
|
1742
1852
|
position: "top-right"
|
|
1743
|
-
}), _el$
|
|
1744
|
-
insert(_el$
|
|
1745
|
-
|
|
1746
|
-
|
|
1853
|
+
}), _el$202, _co$42);
|
|
1854
|
+
insert(_el$188, () => formatMCPUIString(strings.toolErrorTitle, {
|
|
1855
|
+
tool: props.error.tool || strings.errorUnknownToolName
|
|
1856
|
+
}));
|
|
1857
|
+
insert(_el$189, () => props.error.message || strings.errorToolExecution);
|
|
1858
|
+
insert(_el$187, createComponent(Show, {
|
|
1747
1859
|
get when() {
|
|
1748
1860
|
return props.error.type;
|
|
1749
1861
|
},
|
|
1750
1862
|
get children() {
|
|
1751
|
-
var _el$
|
|
1752
|
-
insert(_el$
|
|
1753
|
-
|
|
1863
|
+
var _el$190 = getNextElement(_tmpl$48);
|
|
1864
|
+
insert(_el$190, () => formatMCPUIString(strings.errorTypeLabel, {
|
|
1865
|
+
type: props.error.type
|
|
1866
|
+
}));
|
|
1867
|
+
return _el$190;
|
|
1754
1868
|
}
|
|
1755
|
-
}), _el$
|
|
1756
|
-
insert(_el$
|
|
1869
|
+
}), _el$196, _co$39);
|
|
1870
|
+
insert(_el$187, createComponent(Show, {
|
|
1757
1871
|
get when() {
|
|
1758
1872
|
var _a;
|
|
1759
1873
|
return (_a = props.error.suggestions) == null ? void 0 : _a.length;
|
|
1760
1874
|
},
|
|
1761
1875
|
get children() {
|
|
1762
|
-
var _el$
|
|
1763
|
-
insert(_el$
|
|
1876
|
+
var _el$191 = getNextElement(_tmpl$49), _el$192 = _el$191.firstChild, _el$193 = _el$192.nextSibling;
|
|
1877
|
+
insert(_el$192, () => strings.errorSuggestions);
|
|
1878
|
+
insert(_el$193, createComponent(For, {
|
|
1764
1879
|
get each() {
|
|
1765
1880
|
return props.error.suggestions;
|
|
1766
1881
|
},
|
|
1767
1882
|
children: (suggestion) => (() => {
|
|
1768
|
-
var _el$
|
|
1769
|
-
insert(_el$
|
|
1770
|
-
return _el$
|
|
1883
|
+
var _el$203 = getNextElement(_tmpl$52);
|
|
1884
|
+
insert(_el$203, suggestion);
|
|
1885
|
+
return _el$203;
|
|
1771
1886
|
})()
|
|
1772
1887
|
}));
|
|
1773
|
-
return _el$
|
|
1888
|
+
return _el$191;
|
|
1774
1889
|
}
|
|
1775
|
-
}), _el$
|
|
1776
|
-
insert(_el$
|
|
1890
|
+
}), _el$198, _co$40);
|
|
1891
|
+
insert(_el$187, createComponent(Show, {
|
|
1777
1892
|
get when() {
|
|
1778
|
-
return props.error.timestamp;
|
|
1893
|
+
return memo(() => !!mounted())() && props.error.timestamp;
|
|
1779
1894
|
},
|
|
1780
1895
|
get children() {
|
|
1781
|
-
var _el$
|
|
1782
|
-
insert(_el$
|
|
1783
|
-
return _el$
|
|
1896
|
+
var _el$194 = getNextElement(_tmpl$50);
|
|
1897
|
+
insert(_el$194, () => new Date(props.error.timestamp).toLocaleString(strings.locale));
|
|
1898
|
+
return _el$194;
|
|
1784
1899
|
}
|
|
1785
|
-
}), _el$
|
|
1786
|
-
return _el$
|
|
1900
|
+
}), _el$200, _co$41);
|
|
1901
|
+
return _el$184;
|
|
1787
1902
|
})();
|
|
1788
1903
|
}
|
|
1789
1904
|
function isErrorResponse(content) {
|
|
@@ -1794,6 +1909,7 @@ function isUIResource(content) {
|
|
|
1794
1909
|
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));
|
|
1795
1910
|
}
|
|
1796
1911
|
function UIResourceHtmlRenderer(props) {
|
|
1912
|
+
const strings = useMCPUIStrings();
|
|
1797
1913
|
const htmlContent = () => {
|
|
1798
1914
|
var _a;
|
|
1799
1915
|
if ((_a = props.resource.content) == null ? void 0 : _a.htmlString) {
|
|
@@ -1803,26 +1919,26 @@ function UIResourceHtmlRenderer(props) {
|
|
|
1803
1919
|
};
|
|
1804
1920
|
const resourceTitle = () => {
|
|
1805
1921
|
var _a, _b;
|
|
1806
|
-
return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || ((_b = props.resource.uri) == null ? void 0 : _b.replace("ui://deposium/", "")) ||
|
|
1922
|
+
return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || ((_b = props.resource.uri) == null ? void 0 : _b.replace("ui://deposium/", "")) || strings.resourceTitle;
|
|
1807
1923
|
};
|
|
1808
1924
|
return (() => {
|
|
1809
|
-
var _el$
|
|
1810
|
-
insert(_el$
|
|
1925
|
+
var _el$204 = getNextElement(_tmpl$54), _el$207 = _el$204.firstChild, [_el$208, _co$43] = getNextMarker(_el$207.nextSibling), _el$209 = _el$208.nextSibling, [_el$210, _co$44] = getNextMarker(_el$209.nextSibling);
|
|
1926
|
+
insert(_el$204, createComponent(Show, {
|
|
1811
1927
|
get when() {
|
|
1812
1928
|
var _a;
|
|
1813
1929
|
return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || props.resource.uri;
|
|
1814
1930
|
},
|
|
1815
1931
|
get children() {
|
|
1816
|
-
var _el$
|
|
1817
|
-
insert(_el$
|
|
1818
|
-
return _el$
|
|
1932
|
+
var _el$205 = getNextElement(_tmpl$53), _el$206 = _el$205.firstChild;
|
|
1933
|
+
insert(_el$206, resourceTitle);
|
|
1934
|
+
return _el$205;
|
|
1819
1935
|
}
|
|
1820
|
-
}), _el$
|
|
1821
|
-
insert(_el$
|
|
1936
|
+
}), _el$208, _co$43);
|
|
1937
|
+
insert(_el$204, createComponent(SafeHtml, {
|
|
1822
1938
|
"class": "p-4 prose prose-sm dark:prose-invert max-w-none",
|
|
1823
1939
|
html: htmlContent
|
|
1824
|
-
}), _el$
|
|
1825
|
-
return _el$
|
|
1940
|
+
}), _el$210, _co$44);
|
|
1941
|
+
return _el$204;
|
|
1826
1942
|
})();
|
|
1827
1943
|
}
|
|
1828
1944
|
const UIResourceRenderer = (props) => {
|
|
@@ -1928,8 +2044,8 @@ const UIResourceRenderer = (props) => {
|
|
|
1928
2044
|
return createComponent(RenderProvider, {
|
|
1929
2045
|
renderComponent,
|
|
1930
2046
|
get children() {
|
|
1931
|
-
var _el$
|
|
1932
|
-
spread(_el$
|
|
2047
|
+
var _el$211 = getNextElement(_tmpl$55), _el$212 = _el$211.firstChild, _el$213 = _el$212.nextSibling, [_el$214, _co$45] = getNextMarker(_el$213.nextSibling);
|
|
2048
|
+
spread(_el$211, mergeProps({
|
|
1933
2049
|
get ["class"]() {
|
|
1934
2050
|
return `w-full ${props.class || ""}`;
|
|
1935
2051
|
}
|
|
@@ -1939,14 +2055,14 @@ const UIResourceRenderer = (props) => {
|
|
|
1939
2055
|
"data-mcp-ui-component-id": outerKey()
|
|
1940
2056
|
}), false, true);
|
|
1941
2057
|
var _ref$3 = responsiveGrid.ref;
|
|
1942
|
-
typeof _ref$3 === "function" ? use(_ref$3, _el$
|
|
1943
|
-
insert(_el$
|
|
2058
|
+
typeof _ref$3 === "function" ? use(_ref$3, _el$212) : responsiveGrid.ref = _el$212;
|
|
2059
|
+
insert(_el$212, createComponent(For, {
|
|
1944
2060
|
get each() {
|
|
1945
2061
|
return layout().components;
|
|
1946
2062
|
},
|
|
1947
2063
|
children: (component) => (() => {
|
|
1948
|
-
var _el$
|
|
1949
|
-
insert(_el$
|
|
2064
|
+
var _el$215 = getNextElement(_tmpl$56);
|
|
2065
|
+
insert(_el$215, createComponent(ComponentRenderer, {
|
|
1950
2066
|
component,
|
|
1951
2067
|
get onError() {
|
|
1952
2068
|
return props.onError;
|
|
@@ -1962,18 +2078,18 @@ const UIResourceRenderer = (props) => {
|
|
|
1962
2078
|
}
|
|
1963
2079
|
}));
|
|
1964
2080
|
effect((_p$) => {
|
|
1965
|
-
var _v$
|
|
1966
|
-
_p$.e = style(_el$
|
|
1967
|
-
_v$
|
|
2081
|
+
var _v$48 = getGridStyleString(component), _v$49 = getUiResourceStableKey(component);
|
|
2082
|
+
_p$.e = style(_el$215, _v$48, _p$.e);
|
|
2083
|
+
_v$49 !== _p$.t && setAttribute(_el$215, "data-mcp-ui-component-id", _p$.t = _v$49);
|
|
1968
2084
|
return _p$;
|
|
1969
2085
|
}, {
|
|
1970
2086
|
e: void 0,
|
|
1971
2087
|
t: void 0
|
|
1972
2088
|
});
|
|
1973
|
-
return _el$
|
|
2089
|
+
return _el$215;
|
|
1974
2090
|
})()
|
|
1975
2091
|
}));
|
|
1976
|
-
insert(_el$
|
|
2092
|
+
insert(_el$211, createComponent(Show, {
|
|
1977
2093
|
get when() {
|
|
1978
2094
|
return shouldShowAutoFooter();
|
|
1979
2095
|
},
|
|
@@ -1984,18 +2100,18 @@ const UIResourceRenderer = (props) => {
|
|
|
1984
2100
|
}
|
|
1985
2101
|
});
|
|
1986
2102
|
}
|
|
1987
|
-
}), _el$
|
|
2103
|
+
}), _el$214, _co$45);
|
|
1988
2104
|
effect((_p$) => {
|
|
1989
|
-
var _v$
|
|
1990
|
-
_p$.e = style(_el$
|
|
1991
|
-
_v$
|
|
2105
|
+
var _v$46 = gridContainerStyle(), _v$47 = responsiveGrid.stacked();
|
|
2106
|
+
_p$.e = style(_el$212, _v$46, _p$.e);
|
|
2107
|
+
_v$47 !== _p$.t && setAttribute(_el$212, "data-mcp-ui-stacked", _p$.t = _v$47);
|
|
1992
2108
|
return _p$;
|
|
1993
2109
|
}, {
|
|
1994
2110
|
e: void 0,
|
|
1995
2111
|
t: void 0
|
|
1996
2112
|
});
|
|
1997
2113
|
runHydrationEvents();
|
|
1998
|
-
return _el$
|
|
2114
|
+
return _el$211;
|
|
1999
2115
|
}
|
|
2000
2116
|
});
|
|
2001
2117
|
};
|