@pstdio/ui 0.21.0 → 0.23.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/dist/{MermaidComponent-BVMyKttu.js → MermaidComponent-BTgLnpLA.js} +3 -3
- package/dist/{MermaidComponent-BVMyKttu.js.map → MermaidComponent-BTgLnpLA.js.map} +1 -1
- package/dist/chat-ui.d.ts +2 -0
- package/dist/chat-ui.js +2 -2
- package/dist/components/data-table/build-columns.d.ts +1 -0
- package/dist/components/data-table/data-table-column-menu.d.ts +2 -0
- package/dist/components/data-table/data-table-row-display.d.ts +11 -0
- package/dist/components/data-table/data-table-table-parts.d.ts +1 -0
- package/dist/components/data-table/edit-mode-data-table-body.d.ts +1 -0
- package/dist/components/data-table/edit-mode-data-table-cell.d.ts +1 -0
- package/dist/components/data-table/edit-mode-data-table-header.d.ts +1 -0
- package/dist/components/diff-viewer/code-editor.d.ts +8 -2
- package/dist/components/kanban-renderer/collection-badge.d.ts +7 -0
- package/dist/components/kanban-renderer/index.d.ts +1 -1
- package/dist/components/kanban-renderer/kanban-renderer-helpers.d.ts +2 -1
- package/dist/components/kanban-renderer/types.d.ts +20 -1
- package/dist/components/list-row/list-row-content.d.ts +1 -0
- package/dist/components/list-row/list-row-root-props.d.ts +34 -0
- package/dist/components/param-editor/param-editor-presentation.d.ts +1 -1
- package/dist/components/param-editor/param-editor.types.d.ts +5 -193
- package/dist/components/rich-text/shared/markdown-ast.d.ts +1 -0
- package/dist/components/rich-text/shared/markdown-source-document.d.ts +7 -0
- package/dist/components/rich-text/shared/markdown-source-links.d.ts +11 -0
- package/dist/components/rich-text/shared/markdown-source-map.d.ts +10 -0
- package/dist/components/rich-text/utils/inferResourceType.d.ts +1 -1
- package/dist/components/tab-strip/window-tabs.d.ts +14 -0
- package/dist/components/tab-strip/window-title-bar.d.ts +6 -0
- package/dist/components/tag-editor/tag-editor-row.d.ts +1 -1
- package/dist/components/tag-editor/tag-editor.types.d.ts +12 -0
- package/dist/components/tag-editor/tag-settings-panel.d.ts +1 -1
- package/dist/components/tree-list/tree-list-drag-provider.d.ts +13 -0
- package/dist/components/tree-list/tree-list-order.store.d.ts +4 -1
- package/dist/components/tree-list/tree-list-reorder.d.ts +14 -3
- package/dist/components/tree-list/tree-list-sortable.d.ts +2 -0
- package/dist/components/tree-list/tree-list-visibility-filter.d.ts +2 -2
- package/dist/components/tree-list/tree-list.d.ts +3 -0
- package/dist/components/tree-list/tree-list.types.d.ts +4 -0
- package/dist/data-table.d.ts +2 -0
- package/dist/data-table.js +806 -793
- package/dist/data-table.js.map +1 -1
- package/dist/diff.d.ts +2 -0
- package/dist/diff.js +489 -489
- package/dist/diff.js.map +1 -1
- package/dist/edit-mode-data-table-BrydKuMM.js +846 -0
- package/dist/edit-mode-data-table-BrydKuMM.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +1580 -1407
- package/dist/index.js.map +1 -1
- package/dist/{kanban-renderer-toolbar-CpegGbwq.js → kanban-renderer-toolbar-ebqlG13w.js} +527 -469
- package/dist/kanban-renderer-toolbar-ebqlG13w.js.map +1 -0
- package/dist/kanban-renderer.d.ts +2 -0
- package/dist/kanban-renderer.js +21 -21
- package/dist/kanban-renderer.js.map +1 -1
- package/dist/lazy-markdown-editor-Obb0M8xc.js +235 -0
- package/dist/lazy-markdown-editor-Obb0M8xc.js.map +1 -0
- package/dist/list-row-CRi3Luog.js +815 -0
- package/dist/list-row-CRi3Luog.js.map +1 -0
- package/dist/markdown-editor-Bj_QX4oN.js +1019 -0
- package/dist/markdown-editor-Bj_QX4oN.js.map +1 -0
- package/dist/markdown-kuU19Oh3.js +1643 -0
- package/dist/markdown-kuU19Oh3.js.map +1 -0
- package/dist/{mermaid-renderer-H3IhLqnQ.js → mermaid-renderer-CVnuKs-A.js} +2 -2
- package/dist/{mermaid-renderer-H3IhLqnQ.js.map → mermaid-renderer-CVnuKs-A.js.map} +1 -1
- package/dist/mermaid.d.ts +2 -0
- package/dist/mermaid.js +1 -1
- package/dist/monaco-browser-l82HnffN.js +22 -0
- package/dist/monaco-browser-l82HnffN.js.map +1 -0
- package/dist/{param-editor-B8Ff9Nm8.js → param-editor-DgzVeyJ0.js} +2 -2
- package/dist/{param-editor-B8Ff9Nm8.js.map → param-editor-DgzVeyJ0.js.map} +1 -1
- package/dist/param-editor-field-BMvuSAP5.js +2809 -0
- package/dist/param-editor-field-BMvuSAP5.js.map +1 -0
- package/dist/rich-message-dNYvLDd4.js +628 -0
- package/dist/{rich-message-DdFYRzTo.js.map → rich-message-dNYvLDd4.js.map} +1 -1
- package/dist/rich-text.d.ts +2 -0
- package/dist/rich-text.js +48 -47
- package/dist/rich-text.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/terminal.d.ts +2 -0
- package/dist/theme/primitives/sizes.d.ts +27 -0
- package/dist/theme/recipes/button.d.ts +5 -3
- package/dist/theme/recipes/window-title-bar.d.ts +16 -0
- package/dist/{theme-BH4fSst9.js → theme-C0empEin.js} +321 -145
- package/dist/theme-C0empEin.js.map +1 -0
- package/dist/theme-preference-Bpobguh4.js +114 -0
- package/dist/theme-preference-Bpobguh4.js.map +1 -0
- package/dist/theme.d.ts +2 -0
- package/dist/theme.js +1 -1
- package/dist/tree-list-BHFSyvIZ.js +1262 -0
- package/dist/tree-list-BHFSyvIZ.js.map +1 -0
- package/dist/utils/theme-preference.d.ts +4 -1
- package/dist/workspace-badge-BR_GgsAG.js +175 -0
- package/dist/workspace-badge-BR_GgsAG.js.map +1 -0
- package/package.json +5 -42
- package/dist/dialog-accept-shortcut-DAEBsoWW.js +0 -7
- package/dist/dialog-accept-shortcut-DAEBsoWW.js.map +0 -1
- package/dist/edit-mode-data-table-D6NeiDJx.js +0 -775
- package/dist/edit-mode-data-table-D6NeiDJx.js.map +0 -1
- package/dist/editor-config-D9OksZ93.js +0 -2416
- package/dist/editor-config-D9OksZ93.js.map +0 -1
- package/dist/kanban-renderer-toolbar-CpegGbwq.js.map +0 -1
- package/dist/lazy-markdown-editor-B7uP2ALS.js +0 -26
- package/dist/lazy-markdown-editor-B7uP2ALS.js.map +0 -1
- package/dist/list-row-9oxy-F0v.js +0 -796
- package/dist/list-row-9oxy-F0v.js.map +0 -1
- package/dist/monaco-browser-CO0NxK_Z.js +0 -19
- package/dist/monaco-browser-CO0NxK_Z.js.map +0 -1
- package/dist/number-input-WUfejtNx.js +0 -343
- package/dist/number-input-WUfejtNx.js.map +0 -1
- package/dist/param-editor-field-Cu4pto_a.js +0 -2845
- package/dist/param-editor-field-Cu4pto_a.js.map +0 -1
- package/dist/rich-message-DdFYRzTo.js +0 -658
- package/dist/theme-BH4fSst9.js.map +0 -1
- package/dist/theme-preference-DyymrYpR.js +0 -123
- package/dist/theme-preference-DyymrYpR.js.map +0 -1
- package/dist/tree-list-uV4UFj0x.js +0 -1116
- package/dist/tree-list-uV4UFj0x.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mermaid-renderer-H3IhLqnQ.js","sources":["../src/components/mermaid-renderer/mermaid-zoom.ts","../src/components/mermaid-renderer/svg-data-url.ts","../src/components/mermaid-renderer/download-png.ts","../src/components/mermaid-renderer/mermaid-error-state.tsx","../src/components/mermaid-renderer/mermaid-fullscreen.tsx","../src/components/mermaid-renderer/mermaid-toolbar.tsx","../src/components/mermaid-renderer/mermaid-svg-view.tsx","../src/components/mermaid-renderer/use-mermaid-render.ts","../src/components/mermaid-renderer/mermaid-renderer.tsx"],"sourcesContent":["export const MERMAID_MIN_ZOOM = 0.5;\nexport const MERMAID_MAX_ZOOM = 3;\nexport const MERMAID_ZOOM_STEP = 0.25;\n\nexport const clampMermaidZoom = (value: number) =>\n Number(Math.min(MERMAID_MAX_ZOOM, Math.max(MERMAID_MIN_ZOOM, value)).toFixed(2));\n\nexport const zoomIn = (zoom: number) => clampMermaidZoom(zoom + MERMAID_ZOOM_STEP);\n\nexport const zoomOut = (zoom: number) => clampMermaidZoom(zoom - MERMAID_ZOOM_STEP);\n","const parseSvgLength = (value: string | undefined) => {\n if (!value) {\n return 0;\n }\n\n const parsed = Number.parseFloat(value);\n return Number.isFinite(parsed) ? parsed : 0;\n};\n\nconst readAttribute = (svg: string, name: string) => {\n const match = svg.match(new RegExp(`\\\\s${name}=\"([^\"]+)\"`));\n return match?.[1];\n};\n\nexport const resolveSvgSize = (svg: string) => {\n const viewBox = readAttribute(svg, \"viewBox\")?.split(/\\s+/).map(Number) ?? [];\n const viewBoxWidth = viewBox[2] ?? 0;\n const viewBoxHeight = viewBox[3] ?? 0;\n\n if (viewBoxWidth > 0 && viewBoxHeight > 0) {\n return { width: viewBoxWidth, height: viewBoxHeight };\n }\n\n return {\n width: Math.max(parseSvgLength(readAttribute(svg, \"width\")), 1),\n height: Math.max(parseSvgLength(readAttribute(svg, \"height\")), 1),\n };\n};\n\n// SVG data URLs are parsed as strict XML by the browser; void HTML tags like `<br>`\n// must be self-closing or the image silently fails to decode (naturalWidth becomes 0).\n// Mermaid emits `<br/>` itself, but DOMPurify (used when securityLevel !== \"loose\")\n// normalises it back to the HTML5 form.\nconst closeVoidHtmlTags = (svg: string) => svg.replace(/<br(\\s[^>]*)?>/g, \"<br$1/>\");\n\nexport const normalizeSvgForImage = (svg: string) => {\n const { width, height } = resolveSvgSize(svg);\n\n const sized = svg.replace(/<svg\\b[^>]*>/, (tag) => {\n const withWidth = /\\swidth=/.test(tag)\n ? tag.replace(/\\swidth=\"[^\"]*\"/, ` width=\"${width}\"`)\n : tag.replace(\"<svg\", `<svg width=\"${width}\"`);\n\n return /\\sheight=/.test(withWidth)\n ? withWidth.replace(/\\sheight=\"[^\"]*\"/, ` height=\"${height}\"`)\n : withWidth.replace(\"<svg\", `<svg height=\"${height}\"`);\n });\n\n return closeVoidHtmlTags(sized);\n};\n\nexport const createSvgDataUrl = (svg: string) => {\n const bytes = new TextEncoder().encode(normalizeSvgForImage(svg));\n let binary = \"\";\n for (const byte of bytes) {\n binary += String.fromCharCode(byte);\n }\n\n return `data:image/svg+xml;base64,${btoa(binary)}`;\n};\n","import { clampMermaidZoom } from \"./mermaid-zoom\";\nimport { createSvgDataUrl, resolveSvgSize } from \"./svg-data-url\";\n\ninterface DownloadMermaidPngOptions {\n svg: string;\n zoom: number;\n filename?: string;\n}\n\nconst loadImage = (url: string) =>\n new Promise<{ image: HTMLImageElement; cleanup: () => void }>((resolve, reject) => {\n const image = new Image();\n image.style.position = \"fixed\";\n image.style.left = \"-10000px\";\n image.style.top = \"0\";\n image.style.pointerEvents = \"none\";\n image.onload = () => resolve({ image, cleanup: () => image.remove() });\n image.onerror = () => {\n image.remove();\n reject(new Error(\"Failed to load rendered Mermaid SVG for PNG export.\"));\n };\n document.body.append(image);\n image.src = url;\n });\n\nconst canvasToPngBlob = (canvas: HTMLCanvasElement) =>\n new Promise<Blob>((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (blob) {\n resolve(blob);\n return;\n }\n\n reject(new Error(\"Failed to encode Mermaid diagram as PNG.\"));\n }, \"image/png\");\n });\n\nconst triggerDownload = (blob: Blob, filename: string) => {\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.href = url;\n anchor.download = filename;\n document.body.append(anchor);\n anchor.click();\n anchor.remove();\n window.setTimeout(() => URL.revokeObjectURL(url), 0);\n};\n\nexport const downloadMermaidPng = async (options: DownloadMermaidPngOptions) => {\n const { svg, zoom, filename = \"mermaid-diagram.png\" } = options;\n const svgUrl = createSvgDataUrl(svg);\n\n const { image, cleanup } = await loadImage(svgUrl);\n try {\n const { width, height } = resolveSvgSize(svg);\n const scale = clampMermaidZoom(zoom);\n const canvas = document.createElement(\"canvas\");\n canvas.width = Math.ceil(width * scale);\n canvas.height = Math.ceil(height * scale);\n\n const context = canvas.getContext(\"2d\");\n if (!context) {\n throw new Error(\"Canvas rendering is unavailable for Mermaid PNG export.\");\n }\n\n context.scale(scale, scale);\n context.drawImage(image, 0, 0, width, height);\n triggerDownload(await canvasToPngBlob(canvas), filename);\n } finally {\n cleanup();\n }\n};\n","import { Box, Text } from \"@chakra-ui/react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\ninterface MermaidErrorStateProps {\n code: string;\n error: string;\n}\n\nexport const MermaidErrorState = (props: MermaidErrorStateProps) => {\n const { code, error } = props;\n\n return (\n <Box role=\"alert\" borderRadius=\"sm\" bg=\"bg.panel\" p=\"sm\">\n <Text color=\"fg.error\" textStyle=\"label/S/medium\">\n Mermaid parse failed\n </Text>\n <Text color=\"fg.muted\" textStyle=\"label/S/regular\" mt=\"2xs\" whiteSpace=\"pre-wrap\">\n {error}\n </Text>\n <ScrollArea\n mt=\"sm\"\n borderRadius=\"sm\"\n bg=\"bg.muted\"\n showHorizontalScrollbar\n showVerticalScrollbar={false}\n contentProps={{ p: \"sm\" }}\n >\n <Box as=\"pre\" m=\"0\" fontSize=\"sm\">\n {code}\n </Box>\n </ScrollArea>\n </Box>\n );\n};\n","import { Button, Dialog, Icon, IconButton, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { Download, X } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\n\ninterface MermaidFullscreenProps {\n children: ReactNode;\n canDownload: boolean;\n open: boolean;\n onClose: () => void;\n onDownload: () => void;\n}\n\nexport const MermaidFullscreen = (props: MermaidFullscreenProps) => {\n const { children, canDownload, open, onClose, onDownload } = props;\n\n return (\n <Dialog.Root lazyMount unmountOnExit open={open} onOpenChange={(details) => !details.open && onClose()}>\n <Portal>\n <Dialog.Backdrop />\n <Dialog.Positioner padding={{ base: \"sm\", md: \"lg\" }}>\n <Dialog.Content\n width=\"min(72rem, calc(100vw - 2rem))\"\n height=\"min(48rem, calc(100dvh - 2rem))\"\n maxW=\"none\"\n borderRadius=\"xs\"\n overflow=\"hidden\"\n display=\"flex\"\n flexDirection=\"column\"\n >\n <Dialog.Header\n data-testid=\"mermaid-fullscreen-header\"\n p=\"sm\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <Stack direction=\"row\" align=\"center\" justify=\"space-between\" width=\"100%\" gap=\"sm\">\n <Dialog.Title asChild>\n <Text textStyle=\"heading/S\">Mermaid diagram</Text>\n </Dialog.Title>\n <Stack direction=\"row\" align=\"center\" gap=\"xs\">\n <Button size=\"sm\" variant=\"subtle\" onClick={onDownload} disabled={!canDownload}>\n <Icon as={Download} boxSize=\"16px\" />\n Download as PNG\n </Button>\n <IconButton aria-label=\"Close\" size=\"sm\" variant=\"ghost\" onClick={onClose}>\n <Icon as={X} boxSize=\"16px\" />\n </IconButton>\n </Stack>\n </Stack>\n </Dialog.Header>\n <Dialog.Body data-testid=\"mermaid-fullscreen-body\" p=\"0\" flex=\"1\" minH=\"0\">\n {children}\n </Dialog.Body>\n </Dialog.Content>\n </Dialog.Positioner>\n </Portal>\n </Dialog.Root>\n );\n};\n","import { Icon, IconButton, Stack } from \"@chakra-ui/react\";\nimport { Maximize2, Minus, Pencil, Plus } from \"lucide-react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport { MERMAID_MAX_ZOOM, MERMAID_MIN_ZOOM, zoomIn, zoomOut } from \"./mermaid-zoom\";\n\ninterface MermaidInlineToolbarProps {\n isEditable: boolean;\n onRequestEdit?: () => void;\n onOpenFullscreen: () => void;\n}\n\ninterface MermaidZoomControlsProps {\n zoom: number;\n onZoomChange: (zoom: number) => void;\n}\n\nexport const MermaidInlineToolbar = (props: MermaidInlineToolbarProps) => {\n const { isEditable, onRequestEdit, onOpenFullscreen } = props;\n\n return (\n <Stack\n data-testid=\"mermaid-inline-toolbar\"\n direction=\"row\"\n justify=\"flex-end\"\n align=\"center\"\n gap=\"xs\"\n position=\"absolute\"\n top=\"sm\"\n right=\"sm\"\n zIndex=\"1\"\n onPointerDown={(event) => event.stopPropagation()}\n >\n {isEditable && onRequestEdit ? (\n <Tooltip content=\"Edit source\">\n <IconButton aria-label=\"Edit\" size=\"xs\" variant=\"subtle\" onClick={onRequestEdit}>\n <Icon as={Pencil} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n ) : null}\n <Tooltip content=\"Open diagram\">\n <IconButton aria-label=\"Open diagram\" size=\"xs\" variant=\"subtle\" onClick={onOpenFullscreen}>\n <Icon as={Maximize2} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n </Stack>\n );\n};\n\nexport const MermaidZoomControls = (props: MermaidZoomControlsProps) => {\n const { zoom, onZoomChange } = props;\n\n return (\n <Stack\n data-testid=\"mermaid-zoom-controls\"\n gap=\"2xs\"\n position=\"absolute\"\n right=\"sm\"\n bottom=\"sm\"\n zIndex=\"1\"\n onPointerDown={(event) => event.stopPropagation()}\n >\n <Tooltip content=\"Zoom in\">\n <IconButton\n aria-label=\"Zoom in\"\n size=\"xs\"\n variant=\"subtle\"\n onClick={() => onZoomChange(zoomIn(zoom))}\n disabled={zoom >= MERMAID_MAX_ZOOM}\n >\n <Icon as={Plus} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Zoom out\">\n <IconButton\n aria-label=\"Zoom out\"\n size=\"xs\"\n variant=\"subtle\"\n onClick={() => onZoomChange(zoomOut(zoom))}\n disabled={zoom <= MERMAID_MIN_ZOOM}\n >\n <Icon as={Minus} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n </Stack>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { PointerEvent, ReactNode } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { MermaidZoomControls } from \"./mermaid-toolbar\";\nimport { createSvgDataUrl } from \"./svg-data-url\";\n\ninterface MermaidSvgViewProps {\n svg: string;\n zoom: number;\n allowPanAtDefaultZoom?: boolean;\n maxHeight?: string;\n minHeight?: string;\n overlayActions?: ReactNode;\n onZoomChange: (zoom: number) => void;\n}\n\nexport const MermaidSvgView = (props: MermaidSvgViewProps) => {\n const {\n allowPanAtDefaultZoom = false,\n maxHeight = \"420px\",\n minHeight = \"220px\",\n overlayActions,\n svg,\n zoom,\n onZoomChange,\n } = props;\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [isPanning, setIsPanning] = useState(false);\n const panStartRef = useRef({ pointerId: -1, x: 0, y: 0 });\n const canPan = allowPanAtDefaultZoom || zoom > 1;\n\n const handlePointerDown = (event: PointerEvent<HTMLDivElement>) => {\n if (!canPan) {\n return;\n }\n\n panStartRef.current = {\n pointerId: event.pointerId,\n x: event.clientX - offset.x,\n y: event.clientY - offset.y,\n };\n setIsPanning(true);\n event.currentTarget.setPointerCapture(event.pointerId);\n };\n\n const handlePointerMove = (event: PointerEvent<HTMLDivElement>) => {\n if (!canPan || !isPanning || panStartRef.current.pointerId !== event.pointerId) {\n return;\n }\n\n setOffset({\n x: event.clientX - panStartRef.current.x,\n y: event.clientY - panStartRef.current.y,\n });\n };\n\n const handlePointerUp = (event: PointerEvent<HTMLDivElement>) => {\n if (!canPan || panStartRef.current.pointerId !== event.pointerId) {\n return;\n }\n\n setIsPanning(false);\n event.currentTarget.releasePointerCapture(event.pointerId);\n };\n\n useEffect(() => {\n if (canPan) {\n return;\n }\n\n setOffset({ x: 0, y: 0 });\n setIsPanning(false);\n }, [canPan]);\n\n return (\n <Box\n data-testid=\"mermaid-diagram-surface\"\n position=\"relative\"\n minHeight={minHeight}\n maxHeight={maxHeight}\n overflow=\"hidden\"\n cursor={canPan ? (isPanning ? \"grabbing\" : \"grab\") : \"default\"}\n touchAction={canPan ? \"none\" : \"auto\"}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={() => {\n setIsPanning(false);\n }}\n >\n <Box\n data-testid=\"mermaid-diagram-transform\"\n data-pan-enabled={canPan ? \"true\" : \"false\"}\n width=\"100%\"\n maxHeight={maxHeight}\n textAlign=\"center\"\n transform={`translate3d(${offset.x}px, ${offset.y}px, 0) scale(${zoom})`}\n transformOrigin=\"top left\"\n cursor={canPan ? (isPanning ? \"grabbing\" : \"grab\") : \"default\"}\n css={{\n \"& img\": {\n display: \"inline-block\",\n width: \"auto\",\n maxWidth: \"100%\",\n maxHeight,\n height: \"auto\",\n userSelect: \"none\",\n },\n }}\n >\n <img alt=\"Mermaid diagram\" draggable={false} src={createSvgDataUrl(svg)} />\n </Box>\n {overlayActions}\n <MermaidZoomControls zoom={zoom} onZoomChange={onZoomChange} />\n </Box>\n );\n};\n","import mermaid from \"mermaid\";\nimport { useEffect, useState } from \"react\";\nimport { getThemePreferenceMode, type ThemePreferenceMode } from \"../../utils/apply-theme-preference\";\nimport { useThemePreference } from \"../../utils/theme-preference\";\n\nlet initializedMode: ThemePreferenceMode | null = null;\nlet renderSequence = 0;\nlet renderQueue = Promise.resolve();\n\nconst getMermaidTheme = (mode: ThemePreferenceMode) => (mode === \"dark\" ? \"dark\" : \"default\");\n\nconst initializeMermaid = (mode: ThemePreferenceMode) => {\n if (initializedMode === mode) {\n return;\n }\n\n mermaid.initialize({\n startOnLoad: false,\n htmlLabels: true,\n flowchart: {\n htmlLabels: true,\n },\n securityLevel: \"antiscript\",\n theme: getMermaidTheme(mode),\n });\n\n initializedMode = mode;\n};\n\nconst nextRenderId = () => {\n renderSequence += 1;\n return `mermaid-${renderSequence}`;\n};\n\nconst renderMermaidDiagram = (mode: ThemePreferenceMode, code: string) => {\n const render = async () => {\n // Mermaid keeps render config in a shared singleton, so theme changes must not overlap renders.\n initializeMermaid(mode);\n return mermaid.render(nextRenderId(), code);\n };\n\n const queuedRender = renderQueue.then(render, render);\n renderQueue = queuedRender.then(\n () => undefined,\n () => undefined,\n );\n\n return queuedRender;\n};\n\nconst formatMermaidError = (error: unknown) => {\n if (!(error instanceof Error)) {\n return \"Failed to render Mermaid diagram.\";\n }\n\n const message = error.message.trim();\n if (!message) {\n return \"Failed to render Mermaid diagram.\";\n }\n\n return message.split(\"\\n\").filter(Boolean).slice(0, 3).join(\"\\n\");\n};\n\nexport const useMermaidRender = (code: string) => {\n const { themePreference, themePreferences } = useThemePreference();\n const themeMode = getThemePreferenceMode(themePreference, themePreferences);\n const [svg, setSvg] = useState(\"\");\n const [error, setError] = useState(\"\");\n const [isRendering, setIsRendering] = useState(false);\n\n useEffect(() => {\n let cancelled = false;\n\n const renderDiagram = async () => {\n setIsRendering(true);\n setError(\"\");\n\n try {\n const result = await renderMermaidDiagram(themeMode, code);\n if (cancelled) {\n return;\n }\n\n setSvg(result.svg);\n } catch (renderError) {\n if (cancelled) {\n return;\n }\n\n setSvg(\"\");\n setError(formatMermaidError(renderError));\n } finally {\n if (!cancelled) {\n setIsRendering(false);\n }\n }\n };\n\n void renderDiagram();\n\n return () => {\n cancelled = true;\n };\n }, [code, themeMode]);\n\n return { svg, error, isRendering };\n};\n","import { Box, Text } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { downloadMermaidPng } from \"./download-png\";\nimport { MermaidErrorState } from \"./mermaid-error-state\";\nimport { MermaidFullscreen } from \"./mermaid-fullscreen\";\nimport { MermaidSvgView } from \"./mermaid-svg-view\";\nimport { MermaidInlineToolbar } from \"./mermaid-toolbar\";\nimport { useMermaidRender } from \"./use-mermaid-render\";\n\nexport interface MermaidRendererProps {\n code: string;\n initialFullscreenOpen?: boolean;\n initialZoom?: number;\n isEditable?: boolean;\n onRequestEdit?: () => void;\n}\n\ninterface MermaidPreviewContentProps {\n allowPanAtDefaultZoom?: boolean;\n code: string;\n error: string;\n isRendering: boolean;\n maxHeight?: string;\n minHeight?: string;\n overlayActions?: ReactNode;\n svg: string;\n zoom: number;\n onZoomChange: (zoom: number) => void;\n}\n\nconst MermaidPreviewContent = (props: MermaidPreviewContentProps) => {\n const {\n allowPanAtDefaultZoom,\n code,\n error,\n isRendering,\n maxHeight,\n minHeight,\n overlayActions,\n svg,\n zoom,\n onZoomChange,\n } = props;\n\n if (isRendering) {\n return (\n <Box position=\"relative\" minHeight={minHeight ?? \"220px\"} maxHeight={maxHeight} overflow=\"hidden\">\n <Text color=\"fg.muted\" textStyle=\"paragraph/S/regular\">\n Rendering diagram...\n </Text>\n {overlayActions}\n </Box>\n );\n }\n\n if (error) {\n return (\n <Box position=\"relative\" minHeight={minHeight ?? \"220px\"} maxHeight={maxHeight} overflow=\"hidden\">\n <MermaidErrorState code={code} error={error} />\n {overlayActions}\n </Box>\n );\n }\n\n return (\n <MermaidSvgView\n key={svg}\n allowPanAtDefaultZoom={allowPanAtDefaultZoom}\n maxHeight={maxHeight}\n minHeight={minHeight}\n overlayActions={overlayActions}\n svg={svg}\n zoom={zoom}\n onZoomChange={onZoomChange}\n />\n );\n};\n\nexport const MermaidRenderer = (props: MermaidRendererProps) => {\n const { code, initialFullscreenOpen = false, initialZoom = 1, isEditable = false, onRequestEdit } = props;\n const { svg, error, isRendering } = useMermaidRender(code);\n const [inlineZoom, setInlineZoom] = useState(initialZoom);\n const [fullscreenZoom, setFullscreenZoom] = useState(1);\n const [isFullscreenOpen, setIsFullscreenOpen] = useState(initialFullscreenOpen);\n const previousResetValuesRef = useRef({ code, initialZoom });\n const canDownload = Boolean(svg) && !error && !isRendering;\n\n useEffect(() => {\n const previousResetValues = previousResetValuesRef.current;\n if (previousResetValues.code === code && previousResetValues.initialZoom === initialZoom) {\n return;\n }\n\n previousResetValuesRef.current = { code, initialZoom };\n setInlineZoom(initialZoom);\n setFullscreenZoom(1);\n }, [code, initialZoom]);\n\n const openFullscreen = () => {\n setFullscreenZoom(1);\n setIsFullscreenOpen(true);\n };\n\n return (\n <Box width=\"100%\">\n <MermaidPreviewContent\n code={code}\n error={error}\n isRendering={isRendering}\n overlayActions={\n <MermaidInlineToolbar\n isEditable={isEditable}\n onRequestEdit={onRequestEdit}\n onOpenFullscreen={openFullscreen}\n />\n }\n svg={svg}\n zoom={inlineZoom}\n onZoomChange={setInlineZoom}\n />\n <MermaidFullscreen\n open={isFullscreenOpen}\n canDownload={canDownload}\n onClose={() => setIsFullscreenOpen(false)}\n onDownload={() => downloadMermaidPng({ svg, zoom: fullscreenZoom })}\n >\n <MermaidPreviewContent\n allowPanAtDefaultZoom\n code={code}\n error={error}\n isRendering={isRendering}\n maxHeight=\"100%\"\n minHeight=\"100%\"\n svg={svg}\n zoom={fullscreenZoom}\n onZoomChange={setFullscreenZoom}\n />\n </MermaidFullscreen>\n </Box>\n );\n};\n"],"names":["MERMAID_MIN_ZOOM","MERMAID_MAX_ZOOM","MERMAID_ZOOM_STEP","clampMermaidZoom","value","Number","Math","min","max","toFixed","zoomIn","zoom","zoomOut","parseSvgLength","parsed","parseFloat","isFinite","readAttribute","svg","name","match","RegExp","resolveSvgSize","viewBox","split","map","viewBoxWidth","viewBoxHeight","width","height","closeVoidHtmlTags","replace","normalizeSvgForImage","sized","tag","withWidth","test","createSvgDataUrl","bytes","TextEncoder","encode","binary","byte","String","fromCharCode","btoa","loadImage","url","Promise","resolve","reject","image","Image","style","position","left","top","pointerEvents","onload","cleanup","remove","onerror","Error","document","body","append","src","canvasToPngBlob","canvas","toBlob","blob","triggerDownload","filename","URL","createObjectURL","anchor","createElement","href","download","click","window","setTimeout","revokeObjectURL","downloadMermaidPng","options","svgUrl","scale","ceil","context","getContext","drawImage","MermaidErrorState","props","$","_c","code","error","t0","Symbol","for","Text","t1","jsx","t2","p","t3","ScrollArea","Box","t4","jsxs","MermaidFullscreen","children","canDownload","open","onClose","onDownload","details","Dialog","base","md","t5","Icon","Download","t6","Button","t7","X","t8","IconButton","t9","Stack","t10","t11","Portal","t12","MermaidInlineToolbar","isEditable","onRequestEdit","onOpenFullscreen","Tooltip","Pencil","Maximize2","_temp","MermaidZoomControls","onZoomChange","Plus","Minus","_temp2","event","stopPropagation","MermaidSvgView","allowPanAtDefaultZoom","maxHeight","minHeight","overlayActions","undefined","x","y","offset","setOffset","useState","isPanning","setIsPanning","pointerId","panStartRef","useRef","canPan","current","clientX","clientY","currentTarget","setPointerCapture","handlePointerDown","event_0","handlePointerMove","event_1","releasePointerCapture","handlePointerUp","useEffect","t13","t14","t15","t16","display","maxWidth","userSelect","t17","t18","t19","t20","t21","initializedMode","renderSequence","renderQueue","getMermaidTheme","mode","initializeMermaid","mermaid","initialize","startOnLoad","htmlLabels","flowchart","securityLevel","theme","nextRenderId","renderMermaidDiagram","render","queuedRender","then","formatMermaidError","message","trim","filter","Boolean","slice","join","useMermaidRender","themePreference","themePreferences","useThemePreference","themeMode","getThemePreferenceMode","setSvg","setError","isRendering","setIsRendering","cancelled","result","renderError","renderDiagram","MermaidPreviewContent","MermaidRenderer","initialFullscreenOpen","initialZoom","inlineZoom","setInlineZoom","fullscreenZoom","setFullscreenZoom","isFullscreenOpen","setIsFullscreenOpen","previousResetValuesRef","previousResetValues","openFullscreen"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mermaid-renderer-CVnuKs-A.js","sources":["../src/components/mermaid-renderer/mermaid-zoom.ts","../src/components/mermaid-renderer/svg-data-url.ts","../src/components/mermaid-renderer/download-png.ts","../src/components/mermaid-renderer/mermaid-error-state.tsx","../src/components/mermaid-renderer/mermaid-fullscreen.tsx","../src/components/mermaid-renderer/mermaid-toolbar.tsx","../src/components/mermaid-renderer/mermaid-svg-view.tsx","../src/components/mermaid-renderer/use-mermaid-render.ts","../src/components/mermaid-renderer/mermaid-renderer.tsx"],"sourcesContent":["export const MERMAID_MIN_ZOOM = 0.5;\nexport const MERMAID_MAX_ZOOM = 3;\nexport const MERMAID_ZOOM_STEP = 0.25;\n\nexport const clampMermaidZoom = (value: number) =>\n Number(Math.min(MERMAID_MAX_ZOOM, Math.max(MERMAID_MIN_ZOOM, value)).toFixed(2));\n\nexport const zoomIn = (zoom: number) => clampMermaidZoom(zoom + MERMAID_ZOOM_STEP);\n\nexport const zoomOut = (zoom: number) => clampMermaidZoom(zoom - MERMAID_ZOOM_STEP);\n","const parseSvgLength = (value: string | undefined) => {\n if (!value) {\n return 0;\n }\n\n const parsed = Number.parseFloat(value);\n return Number.isFinite(parsed) ? parsed : 0;\n};\n\nconst readAttribute = (svg: string, name: string) => {\n const match = svg.match(new RegExp(`\\\\s${name}=\"([^\"]+)\"`));\n return match?.[1];\n};\n\nexport const resolveSvgSize = (svg: string) => {\n const viewBox = readAttribute(svg, \"viewBox\")?.split(/\\s+/).map(Number) ?? [];\n const viewBoxWidth = viewBox[2] ?? 0;\n const viewBoxHeight = viewBox[3] ?? 0;\n\n if (viewBoxWidth > 0 && viewBoxHeight > 0) {\n return { width: viewBoxWidth, height: viewBoxHeight };\n }\n\n return {\n width: Math.max(parseSvgLength(readAttribute(svg, \"width\")), 1),\n height: Math.max(parseSvgLength(readAttribute(svg, \"height\")), 1),\n };\n};\n\n// SVG data URLs are parsed as strict XML by the browser; void HTML tags like `<br>`\n// must be self-closing or the image silently fails to decode (naturalWidth becomes 0).\n// Mermaid emits `<br/>` itself, but DOMPurify (used when securityLevel !== \"loose\")\n// normalises it back to the HTML5 form.\nconst closeVoidHtmlTags = (svg: string) => svg.replace(/<br(\\s[^>]*)?>/g, \"<br$1/>\");\n\nexport const normalizeSvgForImage = (svg: string) => {\n const { width, height } = resolveSvgSize(svg);\n\n const sized = svg.replace(/<svg\\b[^>]*>/, (tag) => {\n const withWidth = /\\swidth=/.test(tag)\n ? tag.replace(/\\swidth=\"[^\"]*\"/, ` width=\"${width}\"`)\n : tag.replace(\"<svg\", `<svg width=\"${width}\"`);\n\n return /\\sheight=/.test(withWidth)\n ? withWidth.replace(/\\sheight=\"[^\"]*\"/, ` height=\"${height}\"`)\n : withWidth.replace(\"<svg\", `<svg height=\"${height}\"`);\n });\n\n return closeVoidHtmlTags(sized);\n};\n\nexport const createSvgDataUrl = (svg: string) => {\n const bytes = new TextEncoder().encode(normalizeSvgForImage(svg));\n let binary = \"\";\n for (const byte of bytes) {\n binary += String.fromCharCode(byte);\n }\n\n return `data:image/svg+xml;base64,${btoa(binary)}`;\n};\n","import { clampMermaidZoom } from \"./mermaid-zoom\";\nimport { createSvgDataUrl, resolveSvgSize } from \"./svg-data-url\";\n\ninterface DownloadMermaidPngOptions {\n svg: string;\n zoom: number;\n filename?: string;\n}\n\nconst loadImage = (url: string) =>\n new Promise<{ image: HTMLImageElement; cleanup: () => void }>((resolve, reject) => {\n const image = new Image();\n image.style.position = \"fixed\";\n image.style.left = \"-10000px\";\n image.style.top = \"0\";\n image.style.pointerEvents = \"none\";\n image.onload = () => resolve({ image, cleanup: () => image.remove() });\n image.onerror = () => {\n image.remove();\n reject(new Error(\"Failed to load rendered Mermaid SVG for PNG export.\"));\n };\n document.body.append(image);\n image.src = url;\n });\n\nconst canvasToPngBlob = (canvas: HTMLCanvasElement) =>\n new Promise<Blob>((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (blob) {\n resolve(blob);\n return;\n }\n\n reject(new Error(\"Failed to encode Mermaid diagram as PNG.\"));\n }, \"image/png\");\n });\n\nconst triggerDownload = (blob: Blob, filename: string) => {\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.href = url;\n anchor.download = filename;\n document.body.append(anchor);\n anchor.click();\n anchor.remove();\n window.setTimeout(() => URL.revokeObjectURL(url), 0);\n};\n\nexport const downloadMermaidPng = async (options: DownloadMermaidPngOptions) => {\n const { svg, zoom, filename = \"mermaid-diagram.png\" } = options;\n const svgUrl = createSvgDataUrl(svg);\n\n const { image, cleanup } = await loadImage(svgUrl);\n try {\n const { width, height } = resolveSvgSize(svg);\n const scale = clampMermaidZoom(zoom);\n const canvas = document.createElement(\"canvas\");\n canvas.width = Math.ceil(width * scale);\n canvas.height = Math.ceil(height * scale);\n\n const context = canvas.getContext(\"2d\");\n if (!context) {\n throw new Error(\"Canvas rendering is unavailable for Mermaid PNG export.\");\n }\n\n context.scale(scale, scale);\n context.drawImage(image, 0, 0, width, height);\n triggerDownload(await canvasToPngBlob(canvas), filename);\n } finally {\n cleanup();\n }\n};\n","import { Box, Text } from \"@chakra-ui/react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\ninterface MermaidErrorStateProps {\n code: string;\n error: string;\n}\n\nexport const MermaidErrorState = (props: MermaidErrorStateProps) => {\n const { code, error } = props;\n\n return (\n <Box role=\"alert\" borderRadius=\"sm\" bg=\"bg.panel\" p=\"sm\">\n <Text color=\"fg.error\" textStyle=\"label/S/medium\">\n Mermaid parse failed\n </Text>\n <Text color=\"fg.muted\" textStyle=\"label/S/regular\" mt=\"2xs\" whiteSpace=\"pre-wrap\">\n {error}\n </Text>\n <ScrollArea\n mt=\"sm\"\n borderRadius=\"sm\"\n bg=\"bg.muted\"\n showHorizontalScrollbar\n showVerticalScrollbar={false}\n contentProps={{ p: \"sm\" }}\n >\n <Box as=\"pre\" m=\"0\" fontSize=\"sm\">\n {code}\n </Box>\n </ScrollArea>\n </Box>\n );\n};\n","import { Button, Dialog, Icon, IconButton, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { Download, X } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\n\ninterface MermaidFullscreenProps {\n children: ReactNode;\n canDownload: boolean;\n open: boolean;\n onClose: () => void;\n onDownload: () => void;\n}\n\nexport const MermaidFullscreen = (props: MermaidFullscreenProps) => {\n const { children, canDownload, open, onClose, onDownload } = props;\n\n return (\n <Dialog.Root lazyMount unmountOnExit open={open} onOpenChange={(details) => !details.open && onClose()}>\n <Portal>\n <Dialog.Backdrop />\n <Dialog.Positioner padding={{ base: \"sm\", md: \"lg\" }}>\n <Dialog.Content\n width=\"min(72rem, calc(100vw - 2rem))\"\n height=\"min(48rem, calc(100dvh - 2rem))\"\n maxW=\"none\"\n borderRadius=\"xs\"\n overflow=\"hidden\"\n display=\"flex\"\n flexDirection=\"column\"\n >\n <Dialog.Header\n data-testid=\"mermaid-fullscreen-header\"\n p=\"sm\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <Stack direction=\"row\" align=\"center\" justify=\"space-between\" width=\"100%\" gap=\"sm\">\n <Dialog.Title asChild>\n <Text textStyle=\"heading/S\">Mermaid diagram</Text>\n </Dialog.Title>\n <Stack direction=\"row\" align=\"center\" gap=\"xs\">\n <Button size=\"sm\" variant=\"subtle\" onClick={onDownload} disabled={!canDownload}>\n <Icon as={Download} boxSize=\"16px\" />\n Download as PNG\n </Button>\n <IconButton aria-label=\"Close\" size=\"sm\" variant=\"ghost\" onClick={onClose}>\n <Icon as={X} boxSize=\"16px\" />\n </IconButton>\n </Stack>\n </Stack>\n </Dialog.Header>\n <Dialog.Body data-testid=\"mermaid-fullscreen-body\" p=\"0\" flex=\"1\" minH=\"0\">\n {children}\n </Dialog.Body>\n </Dialog.Content>\n </Dialog.Positioner>\n </Portal>\n </Dialog.Root>\n );\n};\n","import { Icon, IconButton, Stack } from \"@chakra-ui/react\";\nimport { Maximize2, Minus, Pencil, Plus } from \"lucide-react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport { MERMAID_MAX_ZOOM, MERMAID_MIN_ZOOM, zoomIn, zoomOut } from \"./mermaid-zoom\";\n\ninterface MermaidInlineToolbarProps {\n isEditable: boolean;\n onRequestEdit?: () => void;\n onOpenFullscreen: () => void;\n}\n\ninterface MermaidZoomControlsProps {\n zoom: number;\n onZoomChange: (zoom: number) => void;\n}\n\nexport const MermaidInlineToolbar = (props: MermaidInlineToolbarProps) => {\n const { isEditable, onRequestEdit, onOpenFullscreen } = props;\n\n return (\n <Stack\n data-testid=\"mermaid-inline-toolbar\"\n direction=\"row\"\n justify=\"flex-end\"\n align=\"center\"\n gap=\"xs\"\n position=\"absolute\"\n top=\"sm\"\n right=\"sm\"\n zIndex=\"1\"\n onPointerDown={(event) => event.stopPropagation()}\n >\n {isEditable && onRequestEdit ? (\n <Tooltip content=\"Edit source\">\n <IconButton aria-label=\"Edit\" size=\"xs\" variant=\"subtle\" onClick={onRequestEdit}>\n <Icon as={Pencil} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n ) : null}\n <Tooltip content=\"Open diagram\">\n <IconButton aria-label=\"Open diagram\" size=\"xs\" variant=\"subtle\" onClick={onOpenFullscreen}>\n <Icon as={Maximize2} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n </Stack>\n );\n};\n\nexport const MermaidZoomControls = (props: MermaidZoomControlsProps) => {\n const { zoom, onZoomChange } = props;\n\n return (\n <Stack\n data-testid=\"mermaid-zoom-controls\"\n gap=\"2xs\"\n position=\"absolute\"\n right=\"sm\"\n bottom=\"sm\"\n zIndex=\"1\"\n onPointerDown={(event) => event.stopPropagation()}\n >\n <Tooltip content=\"Zoom in\">\n <IconButton\n aria-label=\"Zoom in\"\n size=\"xs\"\n variant=\"subtle\"\n onClick={() => onZoomChange(zoomIn(zoom))}\n disabled={zoom >= MERMAID_MAX_ZOOM}\n >\n <Icon as={Plus} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Zoom out\">\n <IconButton\n aria-label=\"Zoom out\"\n size=\"xs\"\n variant=\"subtle\"\n onClick={() => onZoomChange(zoomOut(zoom))}\n disabled={zoom <= MERMAID_MIN_ZOOM}\n >\n <Icon as={Minus} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n </Stack>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { PointerEvent, ReactNode } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { MermaidZoomControls } from \"./mermaid-toolbar\";\nimport { createSvgDataUrl } from \"./svg-data-url\";\n\ninterface MermaidSvgViewProps {\n svg: string;\n zoom: number;\n allowPanAtDefaultZoom?: boolean;\n maxHeight?: string;\n minHeight?: string;\n overlayActions?: ReactNode;\n onZoomChange: (zoom: number) => void;\n}\n\nexport const MermaidSvgView = (props: MermaidSvgViewProps) => {\n const {\n allowPanAtDefaultZoom = false,\n maxHeight = \"420px\",\n minHeight = \"220px\",\n overlayActions,\n svg,\n zoom,\n onZoomChange,\n } = props;\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [isPanning, setIsPanning] = useState(false);\n const panStartRef = useRef({ pointerId: -1, x: 0, y: 0 });\n const canPan = allowPanAtDefaultZoom || zoom > 1;\n\n const handlePointerDown = (event: PointerEvent<HTMLDivElement>) => {\n if (!canPan) {\n return;\n }\n\n panStartRef.current = {\n pointerId: event.pointerId,\n x: event.clientX - offset.x,\n y: event.clientY - offset.y,\n };\n setIsPanning(true);\n event.currentTarget.setPointerCapture(event.pointerId);\n };\n\n const handlePointerMove = (event: PointerEvent<HTMLDivElement>) => {\n if (!canPan || !isPanning || panStartRef.current.pointerId !== event.pointerId) {\n return;\n }\n\n setOffset({\n x: event.clientX - panStartRef.current.x,\n y: event.clientY - panStartRef.current.y,\n });\n };\n\n const handlePointerUp = (event: PointerEvent<HTMLDivElement>) => {\n if (!canPan || panStartRef.current.pointerId !== event.pointerId) {\n return;\n }\n\n setIsPanning(false);\n event.currentTarget.releasePointerCapture(event.pointerId);\n };\n\n useEffect(() => {\n if (canPan) {\n return;\n }\n\n setOffset({ x: 0, y: 0 });\n setIsPanning(false);\n }, [canPan]);\n\n return (\n <Box\n data-testid=\"mermaid-diagram-surface\"\n position=\"relative\"\n minHeight={minHeight}\n maxHeight={maxHeight}\n overflow=\"hidden\"\n cursor={canPan ? (isPanning ? \"grabbing\" : \"grab\") : \"default\"}\n touchAction={canPan ? \"none\" : \"auto\"}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={() => {\n setIsPanning(false);\n }}\n >\n <Box\n data-testid=\"mermaid-diagram-transform\"\n data-pan-enabled={canPan ? \"true\" : \"false\"}\n width=\"100%\"\n maxHeight={maxHeight}\n textAlign=\"center\"\n transform={`translate3d(${offset.x}px, ${offset.y}px, 0) scale(${zoom})`}\n transformOrigin=\"top left\"\n cursor={canPan ? (isPanning ? \"grabbing\" : \"grab\") : \"default\"}\n css={{\n \"& img\": {\n display: \"inline-block\",\n width: \"auto\",\n maxWidth: \"100%\",\n maxHeight,\n height: \"auto\",\n userSelect: \"none\",\n },\n }}\n >\n <img alt=\"Mermaid diagram\" draggable={false} src={createSvgDataUrl(svg)} />\n </Box>\n {overlayActions}\n <MermaidZoomControls zoom={zoom} onZoomChange={onZoomChange} />\n </Box>\n );\n};\n","import mermaid from \"mermaid\";\nimport { useEffect, useState } from \"react\";\nimport { getThemePreferenceMode, type ThemePreferenceMode } from \"../../utils/apply-theme-preference\";\nimport { useThemePreference } from \"../../utils/theme-preference\";\n\nlet initializedMode: ThemePreferenceMode | null = null;\nlet renderSequence = 0;\nlet renderQueue = Promise.resolve();\n\nconst getMermaidTheme = (mode: ThemePreferenceMode) => (mode === \"dark\" ? \"dark\" : \"default\");\n\nconst initializeMermaid = (mode: ThemePreferenceMode) => {\n if (initializedMode === mode) {\n return;\n }\n\n mermaid.initialize({\n startOnLoad: false,\n htmlLabels: true,\n flowchart: {\n htmlLabels: true,\n },\n securityLevel: \"antiscript\",\n theme: getMermaidTheme(mode),\n });\n\n initializedMode = mode;\n};\n\nconst nextRenderId = () => {\n renderSequence += 1;\n return `mermaid-${renderSequence}`;\n};\n\nconst renderMermaidDiagram = (mode: ThemePreferenceMode, code: string) => {\n const render = async () => {\n // Mermaid keeps render config in a shared singleton, so theme changes must not overlap renders.\n initializeMermaid(mode);\n return mermaid.render(nextRenderId(), code);\n };\n\n const queuedRender = renderQueue.then(render, render);\n renderQueue = queuedRender.then(\n () => undefined,\n () => undefined,\n );\n\n return queuedRender;\n};\n\nconst formatMermaidError = (error: unknown) => {\n if (!(error instanceof Error)) {\n return \"Failed to render Mermaid diagram.\";\n }\n\n const message = error.message.trim();\n if (!message) {\n return \"Failed to render Mermaid diagram.\";\n }\n\n return message.split(\"\\n\").filter(Boolean).slice(0, 3).join(\"\\n\");\n};\n\nexport const useMermaidRender = (code: string) => {\n const { themePreference, themePreferences } = useThemePreference();\n const themeMode = getThemePreferenceMode(themePreference, themePreferences);\n const [svg, setSvg] = useState(\"\");\n const [error, setError] = useState(\"\");\n const [isRendering, setIsRendering] = useState(false);\n\n useEffect(() => {\n let cancelled = false;\n\n const renderDiagram = async () => {\n setIsRendering(true);\n setError(\"\");\n\n try {\n const result = await renderMermaidDiagram(themeMode, code);\n if (cancelled) {\n return;\n }\n\n setSvg(result.svg);\n } catch (renderError) {\n if (cancelled) {\n return;\n }\n\n setSvg(\"\");\n setError(formatMermaidError(renderError));\n } finally {\n if (!cancelled) {\n setIsRendering(false);\n }\n }\n };\n\n void renderDiagram();\n\n return () => {\n cancelled = true;\n };\n }, [code, themeMode]);\n\n return { svg, error, isRendering };\n};\n","import { Box, Text } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { downloadMermaidPng } from \"./download-png\";\nimport { MermaidErrorState } from \"./mermaid-error-state\";\nimport { MermaidFullscreen } from \"./mermaid-fullscreen\";\nimport { MermaidSvgView } from \"./mermaid-svg-view\";\nimport { MermaidInlineToolbar } from \"./mermaid-toolbar\";\nimport { useMermaidRender } from \"./use-mermaid-render\";\n\nexport interface MermaidRendererProps {\n code: string;\n initialFullscreenOpen?: boolean;\n initialZoom?: number;\n isEditable?: boolean;\n onRequestEdit?: () => void;\n}\n\ninterface MermaidPreviewContentProps {\n allowPanAtDefaultZoom?: boolean;\n code: string;\n error: string;\n isRendering: boolean;\n maxHeight?: string;\n minHeight?: string;\n overlayActions?: ReactNode;\n svg: string;\n zoom: number;\n onZoomChange: (zoom: number) => void;\n}\n\nconst MermaidPreviewContent = (props: MermaidPreviewContentProps) => {\n const {\n allowPanAtDefaultZoom,\n code,\n error,\n isRendering,\n maxHeight,\n minHeight,\n overlayActions,\n svg,\n zoom,\n onZoomChange,\n } = props;\n\n if (isRendering) {\n return (\n <Box position=\"relative\" minHeight={minHeight ?? \"220px\"} maxHeight={maxHeight} overflow=\"hidden\">\n <Text color=\"fg.muted\" textStyle=\"paragraph/S/regular\">\n Rendering diagram...\n </Text>\n {overlayActions}\n </Box>\n );\n }\n\n if (error) {\n return (\n <Box position=\"relative\" minHeight={minHeight ?? \"220px\"} maxHeight={maxHeight} overflow=\"hidden\">\n <MermaidErrorState code={code} error={error} />\n {overlayActions}\n </Box>\n );\n }\n\n return (\n <MermaidSvgView\n key={svg}\n allowPanAtDefaultZoom={allowPanAtDefaultZoom}\n maxHeight={maxHeight}\n minHeight={minHeight}\n overlayActions={overlayActions}\n svg={svg}\n zoom={zoom}\n onZoomChange={onZoomChange}\n />\n );\n};\n\nexport const MermaidRenderer = (props: MermaidRendererProps) => {\n const { code, initialFullscreenOpen = false, initialZoom = 1, isEditable = false, onRequestEdit } = props;\n const { svg, error, isRendering } = useMermaidRender(code);\n const [inlineZoom, setInlineZoom] = useState(initialZoom);\n const [fullscreenZoom, setFullscreenZoom] = useState(1);\n const [isFullscreenOpen, setIsFullscreenOpen] = useState(initialFullscreenOpen);\n const previousResetValuesRef = useRef({ code, initialZoom });\n const canDownload = Boolean(svg) && !error && !isRendering;\n\n useEffect(() => {\n const previousResetValues = previousResetValuesRef.current;\n if (previousResetValues.code === code && previousResetValues.initialZoom === initialZoom) {\n return;\n }\n\n previousResetValuesRef.current = { code, initialZoom };\n setInlineZoom(initialZoom);\n setFullscreenZoom(1);\n }, [code, initialZoom]);\n\n const openFullscreen = () => {\n setFullscreenZoom(1);\n setIsFullscreenOpen(true);\n };\n\n return (\n <Box width=\"100%\">\n <MermaidPreviewContent\n code={code}\n error={error}\n isRendering={isRendering}\n overlayActions={\n <MermaidInlineToolbar\n isEditable={isEditable}\n onRequestEdit={onRequestEdit}\n onOpenFullscreen={openFullscreen}\n />\n }\n svg={svg}\n zoom={inlineZoom}\n onZoomChange={setInlineZoom}\n />\n <MermaidFullscreen\n open={isFullscreenOpen}\n canDownload={canDownload}\n onClose={() => setIsFullscreenOpen(false)}\n onDownload={() => downloadMermaidPng({ svg, zoom: fullscreenZoom })}\n >\n <MermaidPreviewContent\n allowPanAtDefaultZoom\n code={code}\n error={error}\n isRendering={isRendering}\n maxHeight=\"100%\"\n minHeight=\"100%\"\n svg={svg}\n zoom={fullscreenZoom}\n onZoomChange={setFullscreenZoom}\n />\n </MermaidFullscreen>\n </Box>\n );\n};\n"],"names":["MERMAID_MIN_ZOOM","MERMAID_MAX_ZOOM","MERMAID_ZOOM_STEP","clampMermaidZoom","value","Number","Math","min","max","toFixed","zoomIn","zoom","zoomOut","parseSvgLength","parsed","parseFloat","isFinite","readAttribute","svg","name","match","RegExp","resolveSvgSize","viewBox","split","map","viewBoxWidth","viewBoxHeight","width","height","closeVoidHtmlTags","replace","normalizeSvgForImage","sized","tag","withWidth","test","createSvgDataUrl","bytes","TextEncoder","encode","binary","byte","String","fromCharCode","btoa","loadImage","url","Promise","resolve","reject","image","Image","style","position","left","top","pointerEvents","onload","cleanup","remove","onerror","Error","document","body","append","src","canvasToPngBlob","canvas","toBlob","blob","triggerDownload","filename","URL","createObjectURL","anchor","createElement","href","download","click","window","setTimeout","revokeObjectURL","downloadMermaidPng","options","svgUrl","scale","ceil","context","getContext","drawImage","MermaidErrorState","props","$","_c","code","error","t0","Symbol","for","Text","t1","jsx","t2","p","t3","ScrollArea","Box","t4","jsxs","MermaidFullscreen","children","canDownload","open","onClose","onDownload","details","Dialog","base","md","t5","Icon","Download","t6","Button","t7","X","t8","IconButton","t9","Stack","t10","t11","Portal","t12","MermaidInlineToolbar","isEditable","onRequestEdit","onOpenFullscreen","Tooltip","Pencil","Maximize2","_temp","MermaidZoomControls","onZoomChange","Plus","Minus","_temp2","event","stopPropagation","MermaidSvgView","allowPanAtDefaultZoom","maxHeight","minHeight","overlayActions","undefined","x","y","offset","setOffset","useState","isPanning","setIsPanning","pointerId","panStartRef","useRef","canPan","current","clientX","clientY","currentTarget","setPointerCapture","handlePointerDown","event_0","handlePointerMove","event_1","releasePointerCapture","handlePointerUp","useEffect","t13","t14","t15","t16","display","maxWidth","userSelect","t17","t18","t19","t20","t21","initializedMode","renderSequence","renderQueue","getMermaidTheme","mode","initializeMermaid","mermaid","initialize","startOnLoad","htmlLabels","flowchart","securityLevel","theme","nextRenderId","renderMermaidDiagram","render","queuedRender","then","formatMermaidError","message","trim","filter","Boolean","slice","join","useMermaidRender","themePreference","themePreferences","useThemePreference","themeMode","getThemePreferenceMode","setSvg","setError","isRendering","setIsRendering","cancelled","result","renderError","renderDiagram","MermaidPreviewContent","MermaidRenderer","initialFullscreenOpen","initialZoom","inlineZoom","setInlineZoom","fullscreenZoom","setFullscreenZoom","isFullscreenOpen","setIsFullscreenOpen","previousResetValuesRef","previousResetValues","openFullscreen"],"mappings":"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"}
|
package/dist/mermaid.js
CHANGED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { loader as e } from "@monaco-editor/react";
|
|
2
|
+
import * as t from "monaco-editor";
|
|
3
|
+
import o from "monaco-editor/esm/vs/editor/editor.worker?worker";
|
|
4
|
+
import i from "monaco-editor/esm/vs/language/css/css.worker?worker";
|
|
5
|
+
import s from "monaco-editor/esm/vs/language/html/html.worker?worker";
|
|
6
|
+
import n from "monaco-editor/esm/vs/language/json/json.worker?worker";
|
|
7
|
+
import p from "monaco-editor/esm/vs/language/typescript/ts.worker?worker";
|
|
8
|
+
const k = () => (t.typescript.typescriptDefaults.setCompilerOptions({
|
|
9
|
+
...t.typescript.typescriptDefaults.getCompilerOptions(),
|
|
10
|
+
jsx: t.typescript.JsxEmit.React
|
|
11
|
+
}), self.MonacoEnvironment = {
|
|
12
|
+
getWorker(m, r) {
|
|
13
|
+
return r === "json" ? new n() : ["css", "scss", "less"].includes(r) ? new i() : ["html", "handlebars", "razor"].includes(r) ? new s() : ["typescript", "javascript"].includes(r) ? new p() : new o();
|
|
14
|
+
}
|
|
15
|
+
}, e.config({
|
|
16
|
+
monaco: t
|
|
17
|
+
}), e.init().then(() => {
|
|
18
|
+
}));
|
|
19
|
+
export {
|
|
20
|
+
k as initializeMonaco
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=monaco-browser-l82HnffN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monaco-browser-l82HnffN.js","sources":["../src/components/diff-viewer/monaco-browser.ts"],"sourcesContent":["/// <reference types=\"vite/client\" />\n\nimport { loader } from \"@monaco-editor/react\";\nimport * as monaco from \"monaco-editor\";\nimport editorWorker from \"monaco-editor/esm/vs/editor/editor.worker?worker\";\nimport cssWorker from \"monaco-editor/esm/vs/language/css/css.worker?worker\";\nimport htmlWorker from \"monaco-editor/esm/vs/language/html/html.worker?worker\";\nimport jsonWorker from \"monaco-editor/esm/vs/language/json/json.worker?worker\";\nimport tsWorker from \"monaco-editor/esm/vs/language/typescript/ts.worker?worker\";\n\nexport const initializeMonaco = () => {\n monaco.typescript.typescriptDefaults.setCompilerOptions({\n ...monaco.typescript.typescriptDefaults.getCompilerOptions(),\n jsx: monaco.typescript.JsxEmit.React,\n });\n self.MonacoEnvironment = {\n getWorker(_, label) {\n if (label === \"json\") return new jsonWorker();\n if ([\"css\", \"scss\", \"less\"].includes(label)) return new cssWorker();\n if ([\"html\", \"handlebars\", \"razor\"].includes(label)) return new htmlWorker();\n if ([\"typescript\", \"javascript\"].includes(label)) return new tsWorker();\n return new editorWorker();\n },\n };\n\n loader.config({ monaco });\n return loader.init().then(() => undefined);\n};\n"],"names":["initializeMonaco","monaco","typescript","typescriptDefaults","setCompilerOptions","getCompilerOptions","jsx","JsxEmit","React","self","MonacoEnvironment","getWorker","_","label","jsonWorker","includes","cssWorker","htmlWorker","tsWorker","editorWorker","loader","config","init","then"],"mappings":";;;;;;;AAUO,MAAMA,IAAmBA,OAC9BC,EAAOC,WAAWC,mBAAmBC,mBAAmB;AAAA,EACtD,GAAGH,EAAOC,WAAWC,mBAAmBE,mBAAAA;AAAAA,EACxCC,KAAKL,EAAOC,WAAWK,QAAQC;AAAAA,CAChC,GACDC,KAAKC,oBAAoB;AAAA,EACvBC,UAAUC,GAAGC,GAAO;AAClB,WAAIA,MAAU,SAAe,IAAIC,EAAAA,IAC7B,CAAC,OAAO,QAAQ,MAAM,EAAEC,SAASF,CAAK,IAAU,IAAIG,EAAAA,IACpD,CAAC,QAAQ,cAAc,OAAO,EAAED,SAASF,CAAK,IAAU,IAAII,EAAAA,IAC5D,CAAC,cAAc,YAAY,EAAEF,SAASF,CAAK,IAAU,IAAIK,EAAAA,IACtD,IAAIC,EAAAA;AAAAA,EACb;AAAA,GAGFC,EAAOC,OAAO;AAAA,EAAEpB,QAAAA;AAAAA,CAAQ,GACjBmB,EAAOE,KAAAA,EAAOC,KAAK,MAAA;AAAA,CAAe;"}
|
|
@@ -3,7 +3,7 @@ import { c as E } from "react/compiler-runtime";
|
|
|
3
3
|
import { Box as j, Collapsible as _, Stack as T, Flex as k, Icon as z, Button as H, Text as w } from "@chakra-ui/react";
|
|
4
4
|
import { ChevronDown as I } from "lucide-react";
|
|
5
5
|
import { useState as A } from "react";
|
|
6
|
-
import { P as D } from "./param-editor-field-
|
|
6
|
+
import { P as D } from "./param-editor-field-BMvuSAP5.js";
|
|
7
7
|
const M = (v) => {
|
|
8
8
|
const e = E(13), {
|
|
9
9
|
param: n,
|
|
@@ -158,4 +158,4 @@ export {
|
|
|
158
158
|
M as a,
|
|
159
159
|
V as b
|
|
160
160
|
};
|
|
161
|
-
//# sourceMappingURL=param-editor-
|
|
161
|
+
//# sourceMappingURL=param-editor-DgzVeyJ0.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"param-editor-B8Ff9Nm8.js","sources":["../src/components/param-editor/param-editor-row.tsx","../src/components/param-editor/param-editor-section.tsx","../src/components/param-editor/param-editor.tsx"],"sourcesContent":["import { Box } from \"@chakra-ui/react\";\nimport type { Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorField } from \"./param-editor-field\";\n\nexport interface ParamEditorRowProps {\n param: Param;\n values?: ParamValueMap;\n onChange?: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n variant?: \"default\" | \"small\";\n}\n\n/**\n * The padded field row every param surface is built from. Surfaces that compose\n * their own list of fields — a command dialog mixing built-in and host-supplied\n * controls — stack these instead of nesting one editor per field, so the whole\n * form keeps a single rhythm.\n */\nexport const ParamEditorRow = (props: ParamEditorRowProps) => {\n const { param, values = {}, onChange, onOpenResource, readOnly, fullWidth, variant = \"default\" } = props;\n const small = variant === \"small\";\n\n return (\n <Box px=\"sm\" py={small ? \"2xs\" : \"xs\"}>\n <ParamEditorField\n param={param}\n defaultValues={values}\n onChange={onChange ?? (() => undefined)}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n fullWidth={fullWidth}\n size={small ? \"xs\" : \"sm\"}\n />\n </Box>\n );\n};\n","import { Button, Collapsible, Flex, Icon, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { useState } from \"react\";\nimport type { Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorRow } from \"./param-editor-row\";\n\ninterface ParamEditorSectionProps {\n title?: string;\n description?: string;\n params: Param[];\n defaultValues: ParamValueMap;\n onChange: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n isFirst?: boolean;\n variant?: \"default\" | \"small\";\n}\n\nconst ParamEditorSectionTitle = (props: { title: string; description?: string }) => {\n const { title, description } = props;\n\n return (\n <Stack gap=\"2xs\" minW=\"0\" textAlign=\"left\">\n <Text textStyle=\"label/M/medium\" color=\"fg\" truncate>\n {title}\n </Text>\n {description ? (\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\" lineClamp={2}>\n {description}\n </Text>\n ) : null}\n </Stack>\n );\n};\n\nconst ParamEditorSectionHeader = (props: {\n title: string;\n description?: string;\n open: boolean;\n collapsible?: boolean;\n onToggle: () => void;\n}) => {\n const { title, description, open, collapsible, onToggle } = props;\n\n if (!collapsible) {\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2.25rem\" px=\"sm\" py=\"xs\">\n <ParamEditorSectionTitle title={title} description={description} />\n </Flex>\n );\n }\n\n return (\n <Button\n aria-expanded={open}\n borderRadius=\"0\"\n height=\"auto\"\n justifyContent=\"space-between\"\n minHeight=\"2.25rem\"\n onClick={onToggle}\n px=\"sm\"\n py=\"xs\"\n size=\"xs\"\n variant=\"ghost\"\n width=\"full\"\n _expanded={{ bg: \"transparent\" }}\n >\n <ParamEditorSectionTitle title={title} description={description} />\n <Icon\n as={ChevronDown}\n boxSize=\"14px\"\n color=\"fg.muted\"\n flexShrink={0}\n transform={open ? \"rotate(0deg)\" : \"rotate(-90deg)\"}\n transition=\"transform 120ms ease\"\n />\n </Button>\n );\n};\n\nconst ParamEditorSectionBody = (props: Omit<ParamEditorSectionProps, \"title\" | \"description\" | \"collapsible\">) => {\n const { params, defaultValues, onChange, onOpenResource, readOnly, fullWidth, defaultCollapsed, isFirst, variant } =\n props;\n let sectionPadding = defaultCollapsed || isFirst ? \"2xs\" : \"xs\";\n if (variant === \"small\") sectionPadding = \"none\";\n\n return (\n <Stack gap=\"0\" py={sectionPadding}>\n {params.map((param) => (\n <ParamEditorRow\n key={param.id}\n param={param}\n values={defaultValues}\n onChange={onChange}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n fullWidth={fullWidth}\n variant={variant}\n />\n ))}\n </Stack>\n );\n};\n\nexport const ParamEditorSection = (props: ParamEditorSectionProps) => {\n const {\n title,\n description,\n params,\n defaultValues,\n onChange,\n onOpenResource,\n readOnly,\n fullWidth,\n collapsible,\n defaultCollapsed = false,\n isFirst = false,\n variant = \"default\",\n } = props;\n const [open, setOpen] = useState(!defaultCollapsed);\n const hasTitle = Boolean(title);\n const canCollapse = Boolean(hasTitle && collapsible);\n const contentOpen = canCollapse ? open : true;\n\n return (\n <Stack as=\"section\" gap=\"0\" borderTopWidth={isFirst ? \"0\" : \"1px\"} borderColor=\"border.subtle\" minW=\"0\">\n {title ? (\n <ParamEditorSectionHeader\n title={title}\n description={description}\n open={contentOpen}\n collapsible={canCollapse}\n onToggle={() => setOpen((current) => !current)}\n />\n ) : null}\n <Collapsible.Root open={contentOpen}>\n <Collapsible.Content>\n <ParamEditorSectionBody\n params={params}\n defaultValues={defaultValues}\n onChange={onChange}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n fullWidth={fullWidth}\n defaultCollapsed={defaultCollapsed}\n isFirst={isFirst}\n variant={variant}\n />\n </Collapsible.Content>\n </Collapsible.Root>\n </Stack>\n );\n};\n","import { Stack } from \"@chakra-ui/react\";\nimport type { InputGroup, Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorSection } from \"./param-editor-section\";\n\nexport interface ParamEditorProps {\n params?: Param[];\n groups?: InputGroup[];\n defaultValues?: ParamValueMap;\n onChange?: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n variant?: \"default\" | \"small\";\n}\n\nexport const ParamEditor = (props: ParamEditorProps) => {\n const {\n params = [],\n groups = [],\n defaultValues = {},\n onChange,\n onOpenResource,\n readOnly,\n fullWidth = false,\n variant = \"default\",\n } = props;\n const handleChange = onChange ?? (() => undefined);\n\n return (\n <Stack flex=\"1\" maxW=\"full\" gap=\"0\">\n {params.length > 0 ? (\n <ParamEditorSection\n params={params}\n defaultValues={defaultValues}\n onChange={handleChange}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n fullWidth={fullWidth}\n variant={variant}\n isFirst\n />\n ) : null}\n {groups.map((group, index) => (\n <ParamEditorSection\n key={group.id}\n title={group.title}\n description={group.description}\n params={group.params}\n defaultValues={defaultValues}\n onChange={handleChange}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n fullWidth={fullWidth}\n variant={variant}\n collapsible={group.collapsible}\n defaultCollapsed={group.defaultCollapsed}\n isFirst={params.length === 0 && index === 0}\n />\n ))}\n </Stack>\n );\n};\n"],"names":["ParamEditorRow","props","$","_c","param","values","t0","onChange","onOpenResource","readOnly","fullWidth","variant","t1","t2","undefined","small","t3","t4","_temp","t5","t6","ParamEditorField","t7","Box","ParamEditorSectionTitle","title","description","jsx","Text","Stack","ParamEditorSectionHeader","open","collapsible","onToggle","Flex","Symbol","for","bg","Icon","ChevronDown","jsxs","Button","ParamEditorSectionBody","params","defaultValues","defaultCollapsed","isFirst","sectionPadding","id","map","ParamEditorSection","setOpen","useState","canCollapse","Boolean","contentOpen","Collapsible","current","ParamEditor","groups","handleChange","t8","length","t9","t10","group","index"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"param-editor-DgzVeyJ0.js","sources":["../src/components/param-editor/param-editor-row.tsx","../src/components/param-editor/param-editor-section.tsx","../src/components/param-editor/param-editor.tsx"],"sourcesContent":["import { Box } from \"@chakra-ui/react\";\nimport type { Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorField } from \"./param-editor-field\";\n\nexport interface ParamEditorRowProps {\n param: Param;\n values?: ParamValueMap;\n onChange?: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n variant?: \"default\" | \"small\";\n}\n\n/**\n * The padded field row every param surface is built from. Surfaces that compose\n * their own list of fields — a command dialog mixing built-in and host-supplied\n * controls — stack these instead of nesting one editor per field, so the whole\n * form keeps a single rhythm.\n */\nexport const ParamEditorRow = (props: ParamEditorRowProps) => {\n const { param, values = {}, onChange, onOpenResource, readOnly, fullWidth, variant = \"default\" } = props;\n const small = variant === \"small\";\n\n return (\n <Box px=\"sm\" py={small ? \"2xs\" : \"xs\"}>\n <ParamEditorField\n param={param}\n defaultValues={values}\n onChange={onChange ?? (() => undefined)}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n fullWidth={fullWidth}\n size={small ? \"xs\" : \"sm\"}\n />\n </Box>\n );\n};\n","import { Button, Collapsible, Flex, Icon, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { useState } from \"react\";\nimport type { Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorRow } from \"./param-editor-row\";\n\ninterface ParamEditorSectionProps {\n title?: string;\n description?: string;\n params: Param[];\n defaultValues: ParamValueMap;\n onChange: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n isFirst?: boolean;\n variant?: \"default\" | \"small\";\n}\n\nconst ParamEditorSectionTitle = (props: { title: string; description?: string }) => {\n const { title, description } = props;\n\n return (\n <Stack gap=\"2xs\" minW=\"0\" textAlign=\"left\">\n <Text textStyle=\"label/M/medium\" color=\"fg\" truncate>\n {title}\n </Text>\n {description ? (\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\" lineClamp={2}>\n {description}\n </Text>\n ) : null}\n </Stack>\n );\n};\n\nconst ParamEditorSectionHeader = (props: {\n title: string;\n description?: string;\n open: boolean;\n collapsible?: boolean;\n onToggle: () => void;\n}) => {\n const { title, description, open, collapsible, onToggle } = props;\n\n if (!collapsible) {\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2.25rem\" px=\"sm\" py=\"xs\">\n <ParamEditorSectionTitle title={title} description={description} />\n </Flex>\n );\n }\n\n return (\n <Button\n aria-expanded={open}\n borderRadius=\"0\"\n height=\"auto\"\n justifyContent=\"space-between\"\n minHeight=\"2.25rem\"\n onClick={onToggle}\n px=\"sm\"\n py=\"xs\"\n size=\"xs\"\n variant=\"ghost\"\n width=\"full\"\n _expanded={{ bg: \"transparent\" }}\n >\n <ParamEditorSectionTitle title={title} description={description} />\n <Icon\n as={ChevronDown}\n boxSize=\"14px\"\n color=\"fg.muted\"\n flexShrink={0}\n transform={open ? \"rotate(0deg)\" : \"rotate(-90deg)\"}\n transition=\"transform 120ms ease\"\n />\n </Button>\n );\n};\n\nconst ParamEditorSectionBody = (props: Omit<ParamEditorSectionProps, \"title\" | \"description\" | \"collapsible\">) => {\n const { params, defaultValues, onChange, onOpenResource, readOnly, fullWidth, defaultCollapsed, isFirst, variant } =\n props;\n let sectionPadding = defaultCollapsed || isFirst ? \"2xs\" : \"xs\";\n if (variant === \"small\") sectionPadding = \"none\";\n\n return (\n <Stack gap=\"0\" py={sectionPadding}>\n {params.map((param) => (\n <ParamEditorRow\n key={param.id}\n param={param}\n values={defaultValues}\n onChange={onChange}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n fullWidth={fullWidth}\n variant={variant}\n />\n ))}\n </Stack>\n );\n};\n\nexport const ParamEditorSection = (props: ParamEditorSectionProps) => {\n const {\n title,\n description,\n params,\n defaultValues,\n onChange,\n onOpenResource,\n readOnly,\n fullWidth,\n collapsible,\n defaultCollapsed = false,\n isFirst = false,\n variant = \"default\",\n } = props;\n const [open, setOpen] = useState(!defaultCollapsed);\n const hasTitle = Boolean(title);\n const canCollapse = Boolean(hasTitle && collapsible);\n const contentOpen = canCollapse ? open : true;\n\n return (\n <Stack as=\"section\" gap=\"0\" borderTopWidth={isFirst ? \"0\" : \"1px\"} borderColor=\"border.subtle\" minW=\"0\">\n {title ? (\n <ParamEditorSectionHeader\n title={title}\n description={description}\n open={contentOpen}\n collapsible={canCollapse}\n onToggle={() => setOpen((current) => !current)}\n />\n ) : null}\n <Collapsible.Root open={contentOpen}>\n <Collapsible.Content>\n <ParamEditorSectionBody\n params={params}\n defaultValues={defaultValues}\n onChange={onChange}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n fullWidth={fullWidth}\n defaultCollapsed={defaultCollapsed}\n isFirst={isFirst}\n variant={variant}\n />\n </Collapsible.Content>\n </Collapsible.Root>\n </Stack>\n );\n};\n","import { Stack } from \"@chakra-ui/react\";\nimport type { InputGroup, Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorSection } from \"./param-editor-section\";\n\nexport interface ParamEditorProps {\n params?: Param[];\n groups?: InputGroup[];\n defaultValues?: ParamValueMap;\n onChange?: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n variant?: \"default\" | \"small\";\n}\n\nexport const ParamEditor = (props: ParamEditorProps) => {\n const {\n params = [],\n groups = [],\n defaultValues = {},\n onChange,\n onOpenResource,\n readOnly,\n fullWidth = false,\n variant = \"default\",\n } = props;\n const handleChange = onChange ?? (() => undefined);\n\n return (\n <Stack flex=\"1\" maxW=\"full\" gap=\"0\">\n {params.length > 0 ? (\n <ParamEditorSection\n params={params}\n defaultValues={defaultValues}\n onChange={handleChange}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n fullWidth={fullWidth}\n variant={variant}\n isFirst\n />\n ) : null}\n {groups.map((group, index) => (\n <ParamEditorSection\n key={group.id}\n title={group.title}\n description={group.description}\n params={group.params}\n defaultValues={defaultValues}\n onChange={handleChange}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n fullWidth={fullWidth}\n variant={variant}\n collapsible={group.collapsible}\n defaultCollapsed={group.defaultCollapsed}\n isFirst={params.length === 0 && index === 0}\n />\n ))}\n </Stack>\n );\n};\n"],"names":["ParamEditorRow","props","$","_c","param","values","t0","onChange","onOpenResource","readOnly","fullWidth","variant","t1","t2","undefined","small","t3","t4","_temp","t5","t6","ParamEditorField","t7","Box","ParamEditorSectionTitle","title","description","jsx","Text","Stack","ParamEditorSectionHeader","open","collapsible","onToggle","Flex","Symbol","for","bg","Icon","ChevronDown","jsxs","Button","ParamEditorSectionBody","params","defaultValues","defaultCollapsed","isFirst","sectionPadding","id","map","ParamEditorSection","setOpen","useState","canCollapse","Boolean","contentOpen","Collapsible","current","ParamEditor","groups","handleChange","t8","length","t9","t10","group","index"],"mappings":"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"}
|