@pstdio/ui 0.43.0 → 0.43.1-nightly.20261013030813

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.
Files changed (65) hide show
  1. package/README.md +11 -0
  2. package/dist/{MermaidComponent-X7N-8w2S.js → MermaidComponent-CJCip-GB.js} +3 -3
  3. package/dist/{MermaidComponent-X7N-8w2S.js.map → MermaidComponent-CJCip-GB.js.map} +1 -1
  4. package/dist/chat-ui.d.ts +1 -1
  5. package/dist/chat-ui.js +621 -640
  6. package/dist/chat-ui.js.map +1 -1
  7. package/dist/{collection-view-grouping-DnuJ1U4R.js → collection-view-grouping-Bm7Hlt5w.js} +2 -2
  8. package/dist/{collection-view-grouping-DnuJ1U4R.js.map → collection-view-grouping-Bm7Hlt5w.js.map} +1 -1
  9. package/dist/{collection-view-search-D_7Qvz7p.js → collection-view-search-BqYMZQ4q.js} +166 -156
  10. package/dist/collection-view-search-BqYMZQ4q.js.map +1 -0
  11. package/dist/collection-view.d.ts +3 -90
  12. package/dist/collection-view.js +2 -2
  13. package/dist/{data-table-stats-row-C8CtvdDt.js → data-table-stats-row-RwLXF9EW.js} +2 -2
  14. package/dist/{data-table-stats-row-C8CtvdDt.js.map → data-table-stats-row-RwLXF9EW.js.map} +1 -1
  15. package/dist/data-table.d.ts +1 -0
  16. package/dist/data-table.js +8 -8
  17. package/dist/{diff-drawer-BGQhxyOh.js → diff-drawer-BMl0zobj.js} +2 -2
  18. package/dist/{diff-drawer-BGQhxyOh.js.map → diff-drawer-BMl0zobj.js.map} +1 -1
  19. package/dist/{diff-viewer-DYcswG6O.js → diff-viewer-BD2PQ4SS.js} +5 -5
  20. package/dist/{diff-viewer-DYcswG6O.js.map → diff-viewer-BD2PQ4SS.js.map} +1 -1
  21. package/dist/diff.js +2 -2
  22. package/dist/{display-sort-control-n3L5WvkJ.js → display-sort-control-BSFhWHgn.js} +194 -183
  23. package/dist/display-sort-control-BSFhWHgn.js.map +1 -0
  24. package/dist/{edit-mode-data-table-BclZ-pWe.js → edit-mode-data-table-TdIRPVU1.js} +8 -8
  25. package/dist/{edit-mode-data-table-BclZ-pWe.js.map → edit-mode-data-table-TdIRPVU1.js.map} +1 -1
  26. package/dist/{index-5Lw7YMKy.d.ts → index-Bc2BsdD1.d.ts} +6 -0
  27. package/dist/index-r6SFPkUI.d.ts +91 -0
  28. package/dist/index.js +6 -6
  29. package/dist/kanban-renderer.js +8 -8
  30. package/dist/{list-row-CmFG_jCC.js → list-row-DCHZXCVH.js} +2 -2
  31. package/dist/{list-row-CmFG_jCC.js.map → list-row-DCHZXCVH.js.map} +1 -1
  32. package/dist/{markdown-editor-CN4qOKky.js → markdown-editor-6jAy_E3r.js} +6 -6
  33. package/dist/{markdown-editor-CN4qOKky.js.map → markdown-editor-6jAy_E3r.js.map} +1 -1
  34. package/dist/{mermaid-renderer-DybQ_2Cp.js → mermaid-renderer-BtW_13Sz.js} +2 -2
  35. package/dist/{mermaid-renderer-DybQ_2Cp.js.map → mermaid-renderer-BtW_13Sz.js.map} +1 -1
  36. package/dist/mermaid.js +1 -1
  37. package/dist/{number-input-CyrMrDxB.js → number-input-QDqWYzTR.js} +2 -2
  38. package/dist/{number-input-CyrMrDxB.js.map → number-input-QDqWYzTR.js.map} +1 -1
  39. package/dist/{param-editor-28dBRSV4.js → param-editor-f57ea8V9.js} +2 -2
  40. package/dist/{param-editor-28dBRSV4.js.map → param-editor-f57ea8V9.js.map} +1 -1
  41. package/dist/{param-editor-field-GxhFb86w.js → param-editor-field-CePT5hCj.js} +5 -5
  42. package/dist/{param-editor-field-GxhFb86w.js.map → param-editor-field-CePT5hCj.js.map} +1 -1
  43. package/dist/param-editor.js +3 -3
  44. package/dist/{prism-CnkSh-ZG.js → prism-EZSmZh-a.js} +2 -2
  45. package/dist/{prism-CnkSh-ZG.js.map → prism-EZSmZh-a.js.map} +1 -1
  46. package/dist/{rich-text-DOK4dDeb.js → rich-text-bKBLAco5.js} +384 -363
  47. package/dist/rich-text-bKBLAco5.js.map +1 -0
  48. package/dist/rich-text.d.ts +1 -1
  49. package/dist/rich-text.js +3 -3
  50. package/dist/{scroll-area-crJfiiuF.js → scroll-area-IeoRS73V.js} +3 -5
  51. package/dist/scroll-area-IeoRS73V.js.map +1 -0
  52. package/dist/terminal.js +1 -1
  53. package/dist/{theme-Bd_a7sU8.js → theme-bxwJIMKe.js} +22 -2
  54. package/dist/theme-bxwJIMKe.js.map +1 -0
  55. package/dist/theme.js +1 -1
  56. package/dist/{tree-list-B_qqiIoM.js → tree-list-nFNO7MV4.js} +2 -2
  57. package/dist/{tree-list-B_qqiIoM.js.map → tree-list-nFNO7MV4.js.map} +1 -1
  58. package/dist/{workspace-badge-BfSkiGP_.js → workspace-badge-BgiTennO.js} +2 -2
  59. package/dist/{workspace-badge-BfSkiGP_.js.map → workspace-badge-BgiTennO.js.map} +1 -1
  60. package/package.json +2 -2
  61. package/dist/collection-view-search-D_7Qvz7p.js.map +0 -1
  62. package/dist/display-sort-control-n3L5WvkJ.js.map +0 -1
  63. package/dist/rich-text-DOK4dDeb.js.map +0 -1
  64. package/dist/scroll-area-crJfiiuF.js.map +0 -1
  65. package/dist/theme-Bd_a7sU8.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { n as e, t } from "./scroll-area-crJfiiuF.js";
1
+ import { n as e, t } from "./scroll-area-IeoRS73V.js";
2
2
  import { c as n, r } from "./theme-preference-BV4cbJNB.js";
3
3
  import { Box as i, Button as a, Dialog as o, Icon as s, IconButton as c, Portal as l, Stack as u, Text as d } from "@chakra-ui/react";
4
4
  import { c as f } from "react/compiler-runtime";
@@ -550,4 +550,4 @@ var K = (e) => {
550
550
  //#endregion
551
551
  export { re as t };
552
552
 
553
- //# sourceMappingURL=mermaid-renderer-DybQ_2Cp.js.map
553
+ //# sourceMappingURL=mermaid-renderer-BtW_13Sz.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mermaid-renderer-DybQ_2Cp.js","names":["MERMAID_MIN_ZOOM","MERMAID_MAX_ZOOM","MERMAID_ZOOM_STEP","clampMermaidZoom","value","Number","Math","min","max","toFixed","zoomIn","zoom","zoomOut","parseSvgLength","value","parsed","Number","parseFloat","isFinite","readAttribute","svg","name","match","RegExp","resolveSvgSize","viewBox","split","map","viewBoxWidth","viewBoxHeight","width","height","Math","max","closeVoidHtmlTags","replace","normalizeSvgForImage","sized","tag","withWidth","test","createSvgDataUrl","bytes","TextEncoder","encode","binary","byte","String","fromCharCode","btoa","clampMermaidZoom","createSvgDataUrl","resolveSvgSize","DownloadMermaidPngOptions","svg","zoom","filename","loadImage","url","Promise","image","HTMLImageElement","cleanup","resolve","reject","Image","style","position","left","top","pointerEvents","onload","remove","onerror","Error","document","body","append","src","canvasToPngBlob","canvas","HTMLCanvasElement","Blob","toBlob","blob","triggerDownload","URL","createObjectURL","anchor","createElement","href","download","click","window","setTimeout","revokeObjectURL","downloadMermaidPng","options","svgUrl","width","height","scale","Math","ceil","context","getContext","drawImage","Box","Text","ScrollArea","MermaidErrorStateProps","code","error","MermaidErrorState","props","$","_c","t0","Symbol","for","t1","t2","p","t3","t4","_c","ScrollArea","Button","Dialog","Icon","IconButton","Portal","Stack","Text","Download","X","ReactNode","MermaidFullscreenProps","children","canDownload","open","onClose","onDownload","MermaidFullscreen","props","$","_c","t0","details","t1","Symbol","for","t2","base","md","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","_c","Icon","IconButton","Stack","Maximize2","Minus","Pencil","Plus","Tooltip","MERMAID_MAX_ZOOM","MERMAID_MIN_ZOOM","zoomIn","zoomOut","MermaidInlineToolbarProps","isEditable","onRequestEdit","onOpenFullscreen","MermaidZoomControlsProps","zoom","onZoomChange","MermaidInlineToolbar","props","$","_c","t0","t1","Symbol","for","t2","t3","_temp","MermaidZoomControls","t4","t5","t6","t7","t8","_temp2","event","stopPropagation","_c","Tooltip","Box","PointerEvent","ReactNode","useEffect","useRef","useState","MermaidZoomControls","createSvgDataUrl","MermaidSvgViewProps","svg","zoom","allowPanAtDefaultZoom","maxHeight","minHeight","overlayActions","onZoomChange","MermaidSvgView","props","$","_c","t0","t1","t2","undefined","t3","Symbol","for","x","y","offset","setOffset","isPanning","setIsPanning","t4","pointerId","panStartRef","canPan","t5","event","current","clientX","clientY","currentTarget","setPointerCapture","handlePointerDown","t6","event_0","handlePointerMove","t7","event_1","releasePointerCapture","handlePointerUp","panCursor","cursor","t8","t9","t10","t11","t12","t13","t14","display","width","maxWidth","height","userSelect","t15","t16","t17","t18","t19","_c","mermaid","useEffect","useState","getThemePreferenceMode","ThemePreferenceMode","useThemePreference","initializedMode","renderSequence","renderQueue","Promise","resolve","getMermaidTheme","mode","initializeMermaid","initialize","startOnLoad","htmlLabels","flowchart","securityLevel","theme","nextRenderId","renderMermaidDiagram","code","render","queuedRender","then","undefined","formatMermaidError","error","Error","message","trim","split","filter","Boolean","slice","join","useMermaidRender","themePreference","themePreferences","themeMode","svg","setSvg","setError","isRendering","setIsRendering","cancelled","renderDiagram","result","renderError","Box","Text","ReactNode","useEffect","useRef","useState","downloadMermaidPng","MermaidErrorState","MermaidFullscreen","MermaidSvgView","MermaidInlineToolbar","useMermaidRender","MermaidRendererProps","code","initialFullscreenOpen","initialZoom","isEditable","onRequestEdit","MermaidPreviewContentProps","allowPanAtDefaultZoom","error","isRendering","maxHeight","minHeight","overlayActions","svg","zoom","onZoomChange","MermaidPreviewContent","props","$","_c","t0","t1","Symbol","for","t2","MermaidRenderer","undefined","inlineZoom","setInlineZoom","fullscreenZoom","setFullscreenZoom","isFullscreenOpen","setIsFullscreenOpen","t3","previousResetValuesRef","canDownload","Boolean","t4","t5","previousResetValues","current","t6","openFullscreen","t7","t8","t9","t10","t11","t12","t13","_c","Tooltip$1","getThemePreferenceMode","mermaid","MERMAID_MIN_ZOOM","MERMAID_ZOOM_STEP","clampMermaidZoom","value","zoomIn","zoom","zoomOut","parseSvgLength","parsed","readAttribute","svg","name","resolveSvgSize","viewBox","viewBoxWidth","viewBoxHeight","closeVoidHtmlTags","normalizeSvgForImage","withWidth","tag","width","height","createSvgDataUrl","bytes","binary","byte","loadImage","image","resolve","reject","url","canvasToPngBlob","blob","triggerDownload","anchor","filename","downloadMermaidPng","options","scale","canvas","context","MermaidErrorState","$","c","props","t0","Text","t1","error","t2","t3","code","ScrollArea$1","Box","t4","MermaidFullscreen","onClose","details","Dialog","canDownload","t5","Icon","Download","t6","onDownload","Button","t7","X","t8","IconButton","t9","Stack","t10","children","t11","Portal","t12","open","MermaidInlineToolbar","isEditable","onRequestEdit","Pencil","Maximize2","onOpenFullscreen","_temp","MermaidZoomControls","onZoomChange","Plus","Minus","_temp2","event","MermaidSvgView","allowPanAtDefaultZoom","maxHeight","minHeight","offset","setOffset","useState","isPanning","setIsPanning","panStartRef","useRef","canPan","handlePointerDown","event_0","handlePointerMove","event_1","handlePointerUp","cursor","useEffect","t13","t14","t15","t16","t17","t18","t19","overlayActions","initializedMode","renderSequence","renderQueue","getMermaidTheme","mode","initializeMermaid","nextRenderId","renderMermaidDiagram","render","queuedRender","formatMermaidError","message","useMermaidRender","useThemePreference","themeMode","themePreference","themePreferences","setSvg","setError","isRendering","setIsRendering","cancelled","result","renderError","MermaidPreviewContent","MermaidRenderer","initialFullscreenOpen","initialZoom","inlineZoom","setInlineZoom","fullscreenZoom","setFullscreenZoom","isFullscreenOpen","setIsFullscreenOpen","previousResetValuesRef","previousResetValues","openFullscreen"],"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 const panCursor = isPanning ? \"grabbing\" : \"grab\";\n const cursor = canPan ? panCursor : \"default\";\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={cursor}\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={cursor}\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"],"mappings":"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"}
1
+ {"version":3,"file":"mermaid-renderer-BtW_13Sz.js","names":["MERMAID_MIN_ZOOM","MERMAID_MAX_ZOOM","MERMAID_ZOOM_STEP","clampMermaidZoom","value","Number","Math","min","max","toFixed","zoomIn","zoom","zoomOut","parseSvgLength","value","parsed","Number","parseFloat","isFinite","readAttribute","svg","name","match","RegExp","resolveSvgSize","viewBox","split","map","viewBoxWidth","viewBoxHeight","width","height","Math","max","closeVoidHtmlTags","replace","normalizeSvgForImage","sized","tag","withWidth","test","createSvgDataUrl","bytes","TextEncoder","encode","binary","byte","String","fromCharCode","btoa","clampMermaidZoom","createSvgDataUrl","resolveSvgSize","DownloadMermaidPngOptions","svg","zoom","filename","loadImage","url","Promise","image","HTMLImageElement","cleanup","resolve","reject","Image","style","position","left","top","pointerEvents","onload","remove","onerror","Error","document","body","append","src","canvasToPngBlob","canvas","HTMLCanvasElement","Blob","toBlob","blob","triggerDownload","URL","createObjectURL","anchor","createElement","href","download","click","window","setTimeout","revokeObjectURL","downloadMermaidPng","options","svgUrl","width","height","scale","Math","ceil","context","getContext","drawImage","Box","Text","ScrollArea","MermaidErrorStateProps","code","error","MermaidErrorState","props","$","_c","t0","Symbol","for","t1","t2","p","t3","t4","_c","ScrollArea","Button","Dialog","Icon","IconButton","Portal","Stack","Text","Download","X","ReactNode","MermaidFullscreenProps","children","canDownload","open","onClose","onDownload","MermaidFullscreen","props","$","_c","t0","details","t1","Symbol","for","t2","base","md","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","_c","Icon","IconButton","Stack","Maximize2","Minus","Pencil","Plus","Tooltip","MERMAID_MAX_ZOOM","MERMAID_MIN_ZOOM","zoomIn","zoomOut","MermaidInlineToolbarProps","isEditable","onRequestEdit","onOpenFullscreen","MermaidZoomControlsProps","zoom","onZoomChange","MermaidInlineToolbar","props","$","_c","t0","t1","Symbol","for","t2","t3","_temp","MermaidZoomControls","t4","t5","t6","t7","t8","_temp2","event","stopPropagation","_c","Tooltip","Box","PointerEvent","ReactNode","useEffect","useRef","useState","MermaidZoomControls","createSvgDataUrl","MermaidSvgViewProps","svg","zoom","allowPanAtDefaultZoom","maxHeight","minHeight","overlayActions","onZoomChange","MermaidSvgView","props","$","_c","t0","t1","t2","undefined","t3","Symbol","for","x","y","offset","setOffset","isPanning","setIsPanning","t4","pointerId","panStartRef","canPan","t5","event","current","clientX","clientY","currentTarget","setPointerCapture","handlePointerDown","t6","event_0","handlePointerMove","t7","event_1","releasePointerCapture","handlePointerUp","panCursor","cursor","t8","t9","t10","t11","t12","t13","t14","display","width","maxWidth","height","userSelect","t15","t16","t17","t18","t19","_c","mermaid","useEffect","useState","getThemePreferenceMode","ThemePreferenceMode","useThemePreference","initializedMode","renderSequence","renderQueue","Promise","resolve","getMermaidTheme","mode","initializeMermaid","initialize","startOnLoad","htmlLabels","flowchart","securityLevel","theme","nextRenderId","renderMermaidDiagram","code","render","queuedRender","then","undefined","formatMermaidError","error","Error","message","trim","split","filter","Boolean","slice","join","useMermaidRender","themePreference","themePreferences","themeMode","svg","setSvg","setError","isRendering","setIsRendering","cancelled","renderDiagram","result","renderError","Box","Text","ReactNode","useEffect","useRef","useState","downloadMermaidPng","MermaidErrorState","MermaidFullscreen","MermaidSvgView","MermaidInlineToolbar","useMermaidRender","MermaidRendererProps","code","initialFullscreenOpen","initialZoom","isEditable","onRequestEdit","MermaidPreviewContentProps","allowPanAtDefaultZoom","error","isRendering","maxHeight","minHeight","overlayActions","svg","zoom","onZoomChange","MermaidPreviewContent","props","$","_c","t0","t1","Symbol","for","t2","MermaidRenderer","undefined","inlineZoom","setInlineZoom","fullscreenZoom","setFullscreenZoom","isFullscreenOpen","setIsFullscreenOpen","t3","previousResetValuesRef","canDownload","Boolean","t4","t5","previousResetValues","current","t6","openFullscreen","t7","t8","t9","t10","t11","t12","t13","_c","Tooltip$1","getThemePreferenceMode","mermaid","MERMAID_MIN_ZOOM","MERMAID_ZOOM_STEP","clampMermaidZoom","value","zoomIn","zoom","zoomOut","parseSvgLength","parsed","readAttribute","svg","name","resolveSvgSize","viewBox","viewBoxWidth","viewBoxHeight","closeVoidHtmlTags","normalizeSvgForImage","withWidth","tag","width","height","createSvgDataUrl","bytes","binary","byte","loadImage","image","resolve","reject","url","canvasToPngBlob","blob","triggerDownload","anchor","filename","downloadMermaidPng","options","scale","canvas","context","MermaidErrorState","$","c","props","t0","Text","t1","error","t2","t3","code","ScrollArea$1","Box","t4","MermaidFullscreen","onClose","details","Dialog","canDownload","t5","Icon","Download","t6","onDownload","Button","t7","X","t8","IconButton","t9","Stack","t10","children","t11","Portal","t12","open","MermaidInlineToolbar","isEditable","onRequestEdit","Pencil","Maximize2","onOpenFullscreen","_temp","MermaidZoomControls","onZoomChange","Plus","Minus","_temp2","event","MermaidSvgView","allowPanAtDefaultZoom","maxHeight","minHeight","offset","setOffset","useState","isPanning","setIsPanning","panStartRef","useRef","canPan","handlePointerDown","event_0","handlePointerMove","event_1","handlePointerUp","cursor","useEffect","t13","t14","t15","t16","t17","t18","t19","overlayActions","initializedMode","renderSequence","renderQueue","getMermaidTheme","mode","initializeMermaid","nextRenderId","renderMermaidDiagram","render","queuedRender","formatMermaidError","message","useMermaidRender","useThemePreference","themeMode","themePreference","themePreferences","setSvg","setError","isRendering","setIsRendering","cancelled","result","renderError","MermaidPreviewContent","MermaidRenderer","initialFullscreenOpen","initialZoom","inlineZoom","setInlineZoom","fullscreenZoom","setFullscreenZoom","isFullscreenOpen","setIsFullscreenOpen","previousResetValuesRef","previousResetValues","openFullscreen"],"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 const panCursor = isPanning ? \"grabbing\" : \"grab\";\n const cursor = canPan ? panCursor : \"default\";\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={cursor}\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={cursor}\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"],"mappings":"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"}
package/dist/mermaid.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as e } from "./mermaid-renderer-DybQ_2Cp.js";
1
+ import { t as e } from "./mermaid-renderer-BtW_13Sz.js";
2
2
  export { e as MermaidRenderer };
@@ -1,4 +1,4 @@
1
- import { n as e } from "./scroll-area-crJfiiuF.js";
1
+ import { n as e } from "./scroll-area-IeoRS73V.js";
2
2
  import { HStack as t, Icon as n, NumberInput as r, Text as i } from "@chakra-ui/react";
3
3
  import { c as a } from "react/compiler-runtime";
4
4
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
@@ -60,4 +60,4 @@ var u = (r) => {
60
60
  //#endregion
61
61
  export { d as n, u as r, f as t };
62
62
 
63
- //# sourceMappingURL=number-input-CyrMrDxB.js.map
63
+ //# sourceMappingURL=number-input-QDqWYzTR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-input-CyrMrDxB.js","names":["HStack","Icon","Text","Info","Tooltip","ParamEditorLabelProps","name","description","compact","ParamEditorLabel","props","$","_c","t0","undefined","t1","t2","t3","t4","t5","placement","strategy","hideWhenDetached","t6","_c","Tooltip","NumberInput","ChakraNumberInput","React","NumberInputProps","RootProps","NumberInputRoot","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","Symbol","for","t1","NumberInputField","Input","NumberInput","_c","ChakraNumberInput","Tooltip$1","React","ParamEditorLabel","$","c","t0","props","compact","t1","t2","t3","t4","name","Text","t5","description","Icon","Info","t6","HStack","NumberInputRoot","children","rest","NumberInput","ref","NumberInputField"],"sources":["../src/components/param-editor/param-editor-label.tsx","../src/components/primitives/number-input.tsx"],"sourcesContent":["import { HStack, Icon, Text } from \"@chakra-ui/react\";\nimport { Info } from \"lucide-react\";\nimport { Tooltip } from \"../primitives/tooltip\";\n\ninterface ParamEditorLabelProps {\n name: string;\n description?: string;\n compact?: boolean;\n}\n\nexport const ParamEditorLabel = (props: ParamEditorLabelProps) => {\n const { name, description, compact = false } = props;\n\n return (\n <HStack gap=\"1\" alignItems=\"center\" minW=\"0\">\n <Text\n textStyle={compact ? \"label/XS/medium\" : \"label/S/medium\"}\n color=\"fg.muted\"\n letterSpacing={compact ? \"0.08em\" : undefined}\n textTransform={compact ? \"uppercase\" : undefined}\n truncate\n >\n {name}\n </Text>\n {description ? (\n <Tooltip\n content={description}\n portalled={false}\n positioning={{ placement: \"bottom-start\", strategy: \"fixed\", hideWhenDetached: true }}\n >\n <Icon\n asChild\n role=\"img\"\n aria-label={`About ${name}`}\n aria-hidden={false}\n focusable=\"true\"\n tabIndex={0}\n boxSize=\"3\"\n color=\"fg.muted\"\n flexShrink={0}\n >\n <Info />\n </Icon>\n </Tooltip>\n ) : null}\n </HStack>\n );\n};\n","import { NumberInput as ChakraNumberInput } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface NumberInputProps extends ChakraNumberInput.RootProps {}\n\nexport const NumberInputRoot = React.forwardRef<HTMLDivElement, NumberInputProps>(function NumberInput(props, ref) {\n const { children, ...rest } = props;\n return (\n <ChakraNumberInput.Root ref={ref} variant=\"outline\" {...rest}>\n {children}\n <ChakraNumberInput.Control>\n <ChakraNumberInput.IncrementTrigger />\n <ChakraNumberInput.DecrementTrigger />\n </ChakraNumberInput.Control>\n </ChakraNumberInput.Root>\n );\n});\n\nexport const NumberInputField = ChakraNumberInput.Input;\n"],"mappings":";;;;;;;AAUA,IAAaS,KAAmBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAC9B,EAAAN,SAAAC,gBAAAC,SAAAK,MAA+CH,GAApBF,IAAAK,MAAAC,KAAAA,KAAAD,GAKVE,IAAAP,IAAA,oBAAA,kBAEIQ,IAAAR,IAAA,WAAAM,KAAAA,GACAG,IAAAT,IAAA,cAAAM,KAAAA,GAAiCI;CAAA,AAAAP,EAAA,OAAAL,KAAAK,EAAA,OAAAI,KAAAJ,EAAA,OAAAK,KAAAL,EAAA,OAAAM,KAJlDC,IAAA,kBAAC4C,GAAD;EACa,WAAA/C;EACL,OAAA;EACS,eAAAC;EACA,eAAAC;EACf,UAAA;EAECX,UAAAA;CAPE,CAAA,GAQEK,EAAA,KAAAL,GAAAK,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,GAAAL,EAAA,KAAAM,GAAAN,EAAA,KAAAO,KAAAA,IAAAP,EAAA;CAAA,IAAAQ;CAAA,AAAAR,EAAA,OAAAJ,KAAAI,EAAA,OAAAL,KACNa,IAAAZ,IACC,kBAACkB,GAAD;EACWlB,SAAAA;EACE,WAAA;EACE,aAAA;GAAAa,WAAa;GAAcC,UAAY;GAAOC,kBAAoB;EAAK;EAEpF,UAAA,kBAAC2C,GAAD;GACE,SAAA;GACK,MAAA;GACO,cAAA,SAAS3D;GACR,eAAA;GACH,WAAA;GACA,UAAA;GACF,SAAA;GACF,OAAA;GACM,YAAA;GAEZ,UAAA,kBAAC4D,GAAD,CAAK,CAAA;EAXF,CAAA;CALC,CAAA,IADT,MAoBOvD,EAAA,KAAAJ,GAAAI,EAAA,KAAAL,GAAAK,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAAA,IAAAY;CACD,OADCZ,EAAA,OAAAO,KAAAP,EAAA,OAAAQ,KA9BVI,IAAA,kBAAC6C,GAAD;EAAY,KAAA;EAAe,YAAA;EAAc,MAAA;EAAzC,UAAA,CACElD,GASCC,CAVI;KA+BER,EAAA,KAAAO,GAAAP,EAAA,KAAAQ,GAAAR,EAAA,MAAAY,KAAAA,IAAAZ,EAAA,KA/BTY;AA+BS,GCxCAQ,IAAkBH,EAAMI,WAA6C,SAAAE,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC,GAAAC;CAAA,AAAAH,EAAA,OAAAF,KAC5CI,IAAAF,EAAA,IAAAG,IAAAH,EAAA,OAApC,cAAA,GAAAG,KAA8BL,GAAME,EAAA,KAAAF,GAAAE,EAAA,KAAAE,GAAAF,EAAA,KAAAG;CAAA,IAAAC;CAAA,AAAAJ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAIhCF,IAAA,kBAAAQ,EAAA,SAAA,EAAA,UAAA,CACE,kBAAAA,EAAA,kBAAA,CAAA,CAAA,GACA,kBAAAA,EAAA,kBAAA,CAAA,CAAA,CACF,EAAA,CAAA,GAA4BZ,EAAA,KAAAI,KAAAA,IAAAJ,EAAA;CAAA,IAAAO;CACL,OADKP,EAAA,OAAAE,KAAAF,EAAA,OAAAD,KAAAC,EAAA,OAAAG,KAL9BI,IAAA,kBAAAK,EAAA,MAAA;EAA6Bb;EAAa,SAAA;EAAS,GAAKI;EAAxD,UAAA,CACGD,GACDE,CAIF;KAAyBJ,EAAA,KAAAE,GAAAF,EAAA,KAAAD,GAAAC,EAAA,KAAAG,GAAAH,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IANzBO;AAMyB,CAE5B,GAEYC,IAAmBjB,EAAkBkB"}
1
+ {"version":3,"file":"number-input-QDqWYzTR.js","names":["HStack","Icon","Text","Info","Tooltip","ParamEditorLabelProps","name","description","compact","ParamEditorLabel","props","$","_c","t0","undefined","t1","t2","t3","t4","t5","placement","strategy","hideWhenDetached","t6","_c","Tooltip","NumberInput","ChakraNumberInput","React","NumberInputProps","RootProps","NumberInputRoot","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","Symbol","for","t1","NumberInputField","Input","NumberInput","_c","ChakraNumberInput","Tooltip$1","React","ParamEditorLabel","$","c","t0","props","compact","t1","t2","t3","t4","name","Text","t5","description","Icon","Info","t6","HStack","NumberInputRoot","children","rest","NumberInput","ref","NumberInputField"],"sources":["../src/components/param-editor/param-editor-label.tsx","../src/components/primitives/number-input.tsx"],"sourcesContent":["import { HStack, Icon, Text } from \"@chakra-ui/react\";\nimport { Info } from \"lucide-react\";\nimport { Tooltip } from \"../primitives/tooltip\";\n\ninterface ParamEditorLabelProps {\n name: string;\n description?: string;\n compact?: boolean;\n}\n\nexport const ParamEditorLabel = (props: ParamEditorLabelProps) => {\n const { name, description, compact = false } = props;\n\n return (\n <HStack gap=\"1\" alignItems=\"center\" minW=\"0\">\n <Text\n textStyle={compact ? \"label/XS/medium\" : \"label/S/medium\"}\n color=\"fg.muted\"\n letterSpacing={compact ? \"0.08em\" : undefined}\n textTransform={compact ? \"uppercase\" : undefined}\n truncate\n >\n {name}\n </Text>\n {description ? (\n <Tooltip\n content={description}\n portalled={false}\n positioning={{ placement: \"bottom-start\", strategy: \"fixed\", hideWhenDetached: true }}\n >\n <Icon\n asChild\n role=\"img\"\n aria-label={`About ${name}`}\n aria-hidden={false}\n focusable=\"true\"\n tabIndex={0}\n boxSize=\"3\"\n color=\"fg.muted\"\n flexShrink={0}\n >\n <Info />\n </Icon>\n </Tooltip>\n ) : null}\n </HStack>\n );\n};\n","import { NumberInput as ChakraNumberInput } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface NumberInputProps extends ChakraNumberInput.RootProps {}\n\nexport const NumberInputRoot = React.forwardRef<HTMLDivElement, NumberInputProps>(function NumberInput(props, ref) {\n const { children, ...rest } = props;\n return (\n <ChakraNumberInput.Root ref={ref} variant=\"outline\" {...rest}>\n {children}\n <ChakraNumberInput.Control>\n <ChakraNumberInput.IncrementTrigger />\n <ChakraNumberInput.DecrementTrigger />\n </ChakraNumberInput.Control>\n </ChakraNumberInput.Root>\n );\n});\n\nexport const NumberInputField = ChakraNumberInput.Input;\n"],"mappings":";;;;;;;AAUA,IAAaS,KAAmBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAC9B,EAAAN,SAAAC,gBAAAC,SAAAK,MAA+CH,GAApBF,IAAAK,MAAAC,KAAAA,KAAAD,GAKVE,IAAAP,IAAA,oBAAA,kBAEIQ,IAAAR,IAAA,WAAAM,KAAAA,GACAG,IAAAT,IAAA,cAAAM,KAAAA,GAAiCI;CAAA,AAAAP,EAAA,OAAAL,KAAAK,EAAA,OAAAI,KAAAJ,EAAA,OAAAK,KAAAL,EAAA,OAAAM,KAJlDC,IAAA,kBAAC4C,GAAD;EACa,WAAA/C;EACL,OAAA;EACS,eAAAC;EACA,eAAAC;EACf,UAAA;EAECX,UAAAA;CAPE,CAAA,GAQEK,EAAA,KAAAL,GAAAK,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,GAAAL,EAAA,KAAAM,GAAAN,EAAA,KAAAO,KAAAA,IAAAP,EAAA;CAAA,IAAAQ;CAAA,AAAAR,EAAA,OAAAJ,KAAAI,EAAA,OAAAL,KACNa,IAAAZ,IACC,kBAACkB,GAAD;EACWlB,SAAAA;EACE,WAAA;EACE,aAAA;GAAAa,WAAa;GAAcC,UAAY;GAAOC,kBAAoB;EAAK;EAEpF,UAAA,kBAAC2C,GAAD;GACE,SAAA;GACK,MAAA;GACO,cAAA,SAAS3D;GACR,eAAA;GACH,WAAA;GACA,UAAA;GACF,SAAA;GACF,OAAA;GACM,YAAA;GAEZ,UAAA,kBAAC4D,GAAD,CAAK,CAAA;EAXF,CAAA;CALC,CAAA,IADT,MAoBOvD,EAAA,KAAAJ,GAAAI,EAAA,KAAAL,GAAAK,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAAA,IAAAY;CACD,OADCZ,EAAA,OAAAO,KAAAP,EAAA,OAAAQ,KA9BVI,IAAA,kBAAC6C,GAAD;EAAY,KAAA;EAAe,YAAA;EAAc,MAAA;EAAzC,UAAA,CACElD,GASCC,CAVI;KA+BER,EAAA,KAAAO,GAAAP,EAAA,KAAAQ,GAAAR,EAAA,MAAAY,KAAAA,IAAAZ,EAAA,KA/BTY;AA+BS,GCxCAQ,IAAkBH,EAAMI,WAA6C,SAAAE,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC,GAAAC;CAAA,AAAAH,EAAA,OAAAF,KAC5CI,IAAAF,EAAA,IAAAG,IAAAH,EAAA,OAApC,cAAA,GAAAG,KAA8BL,GAAME,EAAA,KAAAF,GAAAE,EAAA,KAAAE,GAAAF,EAAA,KAAAG;CAAA,IAAAC;CAAA,AAAAJ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAIhCF,IAAA,kBAAAQ,EAAA,SAAA,EAAA,UAAA,CACE,kBAAAA,EAAA,kBAAA,CAAA,CAAA,GACA,kBAAAA,EAAA,kBAAA,CAAA,CAAA,CACF,EAAA,CAAA,GAA4BZ,EAAA,KAAAI,KAAAA,IAAAJ,EAAA;CAAA,IAAAO;CACL,OADKP,EAAA,OAAAE,KAAAF,EAAA,OAAAD,KAAAC,EAAA,OAAAG,KAL9BI,IAAA,kBAAAK,EAAA,MAAA;EAA6Bb;EAAa,SAAA;EAAS,GAAKI;EAAxD,UAAA,CACGD,GACDE,CAIF;KAAyBJ,EAAA,KAAAE,GAAAF,EAAA,KAAAD,GAAAC,EAAA,KAAAG,GAAAH,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IANzBO;AAMyB,CAE5B,GAEYC,IAAmBjB,EAAkBkB"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./param-editor-field-GxhFb86w.js";
1
+ import { t as e } from "./param-editor-field-CePT5hCj.js";
2
2
  import { Box as t, Button as n, Collapsible as r, Flex as i, Icon as a, Stack as o, Text as s } from "@chakra-ui/react";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { jsx as l, jsxs as u } from "react/jsx-runtime";
@@ -222,4 +222,4 @@ var S = (e) => {
222
222
  //#endregion
223
223
  export { p as i, b as n, v as r, S as t };
224
224
 
225
- //# sourceMappingURL=param-editor-28dBRSV4.js.map
225
+ //# sourceMappingURL=param-editor-f57ea8V9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"param-editor-28dBRSV4.js","names":["Box","Param","ParamValue","ParamValueMap","ResourceRefValue","ParamEditorField","ParamEditorRowProps","param","values","onChange","id","value","onOpenResource","ref","readOnly","fullWidth","variant","ParamEditorRow","props","$","_c","t0","t1","t2","undefined","small","t3","t4","_temp","t5","t6","t7","_c","_temp","Button","Collapsible","Flex","Icon","Stack","Text","ChevronDown","useState","Param","ParamValue","ParamValueMap","ResourceRefValue","ParamEditorRow","ParamEditorSectionProps","title","description","params","defaultValues","onChange","id","value","onOpenResource","ref","readOnly","fullWidth","collapsible","defaultCollapsed","isFirst","variant","ParamEditorSectionTitle","props","$","_c","t0","t1","t2","ParamEditorSectionHeader","open","onToggle","Symbol","for","bg","t3","t4","ParamEditorSectionBody","sectionPadding","param","map","ParamEditorSection","undefined","setOpen","hasTitle","Boolean","canCollapse","contentOpen","_temp","t5","t6","t7","current","_c","_temp","Stack","InputGroup","Param","ParamValue","ParamValueMap","ResourceRefValue","ParamEditorSection","ParamEditorProps","params","groups","defaultValues","onChange","id","value","onOpenResource","ref","readOnly","fullWidth","variant","ParamEditor","props","$","_c","t0","t1","t2","t3","t4","t5","undefined","t6","t7","handleChange","_temp","t8","length","t9","t10","group","index","title","description","collapsible","defaultCollapsed","map","_c","Stack","StackProps","ParamEditorControlListProps","ParamEditorControlList","props","$","_c","children","rest","t0","_c","ParamEditorField","ParamEditorRow","$","t0","t1","props","t2","values","small","t3","t4","onChange","_temp$2","t5","t6","fullWidth","onOpenResource","param","readOnly","t7","Box","ParamEditorSectionTitle","title","Text","description","Stack","ParamEditorSectionHeader","collapsible","Flex","open","Icon","ChevronDown","onToggle","Button","ParamEditorSectionBody","sectionPadding","defaultCollapsed","isFirst","variant","defaultValues","params","ParamEditorSection","setOpen","useState","canCollapse","contentOpen","_temp$1","Collapsible","current","ParamEditor","groups","handleChange","_temp","t8","t9","t10","group","index","ParamEditorControlList","children","rest"],"sources":["../src/components/param-editor/param-editor-row.tsx","../src/components/param-editor/param-editor-section.tsx","../src/components/param-editor/param-editor.tsx","../src/components/param-editor/param-editor-control-list.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","import { Stack, type StackProps } from \"@chakra-ui/react\";\n\ninterface ParamEditorControlListProps extends StackProps {}\n\n// A vertical stack of control items with consistent authoring density. Use it to\n// compose control layouts outside a full <ParamEditor> section.\nexport const ParamEditorControlList = (props: ParamEditorControlListProps) => {\n const { children, ...rest } = props;\n\n return (\n <Stack gap=\"sm\" minW=\"0\" {...rest}>\n {children}\n </Stack>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"param-editor-f57ea8V9.js","names":["Box","Param","ParamValue","ParamValueMap","ResourceRefValue","ParamEditorField","ParamEditorRowProps","param","values","onChange","id","value","onOpenResource","ref","readOnly","fullWidth","variant","ParamEditorRow","props","$","_c","t0","t1","t2","undefined","small","t3","t4","_temp","t5","t6","t7","_c","_temp","Button","Collapsible","Flex","Icon","Stack","Text","ChevronDown","useState","Param","ParamValue","ParamValueMap","ResourceRefValue","ParamEditorRow","ParamEditorSectionProps","title","description","params","defaultValues","onChange","id","value","onOpenResource","ref","readOnly","fullWidth","collapsible","defaultCollapsed","isFirst","variant","ParamEditorSectionTitle","props","$","_c","t0","t1","t2","ParamEditorSectionHeader","open","onToggle","Symbol","for","bg","t3","t4","ParamEditorSectionBody","sectionPadding","param","map","ParamEditorSection","undefined","setOpen","hasTitle","Boolean","canCollapse","contentOpen","_temp","t5","t6","t7","current","_c","_temp","Stack","InputGroup","Param","ParamValue","ParamValueMap","ResourceRefValue","ParamEditorSection","ParamEditorProps","params","groups","defaultValues","onChange","id","value","onOpenResource","ref","readOnly","fullWidth","variant","ParamEditor","props","$","_c","t0","t1","t2","t3","t4","t5","undefined","t6","t7","handleChange","_temp","t8","length","t9","t10","group","index","title","description","collapsible","defaultCollapsed","map","_c","Stack","StackProps","ParamEditorControlListProps","ParamEditorControlList","props","$","_c","children","rest","t0","_c","ParamEditorField","ParamEditorRow","$","t0","t1","props","t2","values","small","t3","t4","onChange","_temp$2","t5","t6","fullWidth","onOpenResource","param","readOnly","t7","Box","ParamEditorSectionTitle","title","Text","description","Stack","ParamEditorSectionHeader","collapsible","Flex","open","Icon","ChevronDown","onToggle","Button","ParamEditorSectionBody","sectionPadding","defaultCollapsed","isFirst","variant","defaultValues","params","ParamEditorSection","setOpen","useState","canCollapse","contentOpen","_temp$1","Collapsible","current","ParamEditor","groups","handleChange","_temp","t8","t9","t10","group","index","ParamEditorControlList","children","rest"],"sources":["../src/components/param-editor/param-editor-row.tsx","../src/components/param-editor/param-editor-section.tsx","../src/components/param-editor/param-editor.tsx","../src/components/param-editor/param-editor-control-list.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","import { Stack, type StackProps } from \"@chakra-ui/react\";\n\ninterface ParamEditorControlListProps extends StackProps {}\n\n// A vertical stack of control items with consistent authoring density. Use it to\n// compose control layouts outside a full <ParamEditor> section.\nexport const ParamEditorControlList = (props: ParamEditorControlListProps) => {\n const { children, ...rest } = props;\n\n return (\n <Stack gap=\"sm\" minW=\"0\" {...rest}>\n {children}\n </Stack>\n );\n};\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { i as e, r as t, t as n } from "./list-row-CmFG_jCC.js";
2
- import { i as r, n as i, o as a, r as o, s, t as c } from "./prism-CnkSh-ZG.js";
1
+ import { i as e, r as t, t as n } from "./list-row-DCHZXCVH.js";
2
+ import { i as r, n as i, o as a, r as o, s, t as c } from "./prism-EZSmZh-a.js";
3
3
  import { t as l } from "./icon-options-Tt6Wzhtv.js";
4
- import { n as u, r as d, t as f } from "./number-input-CyrMrDxB.js";
4
+ import { n as u, r as d, t as f } from "./number-input-QDqWYzTR.js";
5
5
  import { Badge as p, Box as m, Button as h, ColorPicker as g, Flex as _, Grid as v, Group as y, HStack as b, Icon as x, IconButton as S, Image as C, Input as w, Menu as T, Popover as E, Portal as D, Spinner as O, Stack as k, Text as A, Textarea as j, Wrap as M, parseColor as N } from "@chakra-ui/react";
6
6
  import { c as P } from "react/compiler-runtime";
7
7
  import { Fragment as F, jsx as I, jsxs as L } from "react/jsx-runtime";
@@ -988,7 +988,7 @@ var Se = (e) => {
988
988
  let e = !1;
989
989
  return (async () => {
990
990
  await c();
991
- let t = await import("./markdown-editor-CN4qOKky.js").then((e) => e.n);
991
+ let t = await import("./markdown-editor-6jAy_E3r.js").then((e) => e.n);
992
992
  e || n(() => t.MarkdownEditor);
993
993
  })(), () => {
994
994
  e = !0;
@@ -2391,4 +2391,4 @@ var dt = (e) => {
2391
2391
  //#endregion
2392
2392
  export { ie as C, re as S, X as T, ue as _, tt as a, ae as b, Ke as c, Ne as d, we as f, ye as g, be as h, it as i, We as l, Se as m, ct as n, Ze as o, Ce as p, at as r, Je as s, ft as t, Ue as u, se as v, Q as w, $ as x, oe as y };
2393
2393
 
2394
- //# sourceMappingURL=param-editor-field-GxhFb86w.js.map
2394
+ //# sourceMappingURL=param-editor-field-CePT5hCj.js.map