@pstdio/ui 0.17.0 → 0.19.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.
Files changed (132) hide show
  1. package/dist/{MermaidComponent-BCMQqPqu.js → MermaidComponent-BPiVFNYK.js} +2 -2
  2. package/dist/{MermaidComponent-BCMQqPqu.js.map → MermaidComponent-BPiVFNYK.js.map} +1 -1
  3. package/dist/chat-ui.js +941 -899
  4. package/dist/chat-ui.js.map +1 -1
  5. package/dist/components/chat-ui/components/chat-message-list-items.d.ts +17 -0
  6. package/dist/components/chat-ui/components/message-types.d.ts +1 -0
  7. package/dist/components/chat-ui/components/timeline.d.ts +2 -0
  8. package/dist/components/chat-ui/tool-rendering/default-renderers.d.ts +1 -0
  9. package/dist/components/chat-ui/tool-rendering/shared.d.ts +3 -2
  10. package/dist/components/chat-ui/tool-rendering/standard-renderers.d.ts +1 -0
  11. package/dist/components/data-table/data-table-column-menu.d.ts +4 -1
  12. package/dist/components/data-table/data-table-header.d.ts +0 -8
  13. package/dist/components/data-table/data-table-skeleton.d.ts +13 -0
  14. package/dist/components/data-table/editable-cells-story.d.ts +9 -0
  15. package/dist/components/data-table/index.d.ts +2 -0
  16. package/dist/components/diff-viewer/code-editor.d.ts +2 -0
  17. package/dist/components/diff-viewer/index.d.ts +1 -1
  18. package/dist/components/diff-viewer/monaco-browser.d.ts +1 -0
  19. package/dist/components/overlays/dialog-accept-shortcut.d.ts +12 -0
  20. package/dist/components/overlays/index.d.ts +1 -0
  21. package/dist/components/overlays/searchable-menu-input.d.ts +9 -0
  22. package/dist/components/param-editor/index.d.ts +7 -2
  23. package/dist/components/param-editor/inputs/action-input.d.ts +1 -0
  24. package/dist/components/param-editor/inputs/boolean-input.d.ts +13 -0
  25. package/dist/components/param-editor/inputs/color-input.d.ts +1 -0
  26. package/dist/components/param-editor/inputs/date-input.d.ts +1 -0
  27. package/dist/components/param-editor/inputs/file-upload-input.d.ts +15 -0
  28. package/dist/components/param-editor/inputs/file-upload-value.d.ts +7 -0
  29. package/dist/components/param-editor/inputs/horizontal-text-input.d.ts +1 -0
  30. package/dist/components/param-editor/inputs/markdown-input.d.ts +13 -0
  31. package/dist/components/param-editor/inputs/number-input.d.ts +1 -0
  32. package/dist/components/param-editor/inputs/range-input.d.ts +1 -0
  33. package/dist/components/param-editor/inputs/resource-input.d.ts +2 -0
  34. package/dist/components/param-editor/inputs/segmented-input.d.ts +1 -0
  35. package/dist/components/param-editor/inputs/selection-input.d.ts +6 -0
  36. package/dist/components/param-editor/inputs/selection-menu.d.ts +10 -0
  37. package/dist/components/param-editor/inputs/text-input.d.ts +1 -0
  38. package/dist/components/param-editor/param-editor-advanced-field.d.ts +14 -0
  39. package/dist/components/param-editor/param-editor-control-fixtures.d.ts +24 -0
  40. package/dist/components/param-editor/param-editor-field.d.ts +2 -0
  41. package/dist/components/param-editor/param-editor-horizontal.d.ts +2 -2
  42. package/dist/components/param-editor/param-editor-label.d.ts +1 -0
  43. package/dist/components/param-editor/param-editor-presentation.d.ts +3 -0
  44. package/dist/components/param-editor/param-editor-row.d.ts +17 -0
  45. package/dist/components/param-editor/param-editor.types.d.ts +43 -13
  46. package/dist/components/param-editor/resolve-param-value.d.ts +2 -0
  47. package/dist/components/primitives/chip.d.ts +4 -0
  48. package/dist/components/primitives/glyph-icon.d.ts +16 -0
  49. package/dist/components/primitives/icon-color-picker.d.ts +3 -13
  50. package/dist/components/primitives/icon-options.d.ts +301 -0
  51. package/dist/components/primitives/index.d.ts +12 -3
  52. package/dist/components/primitives/resource-badge.d.ts +12 -10
  53. package/dist/components/primitives/segmented-control.d.ts +20 -0
  54. package/dist/components/primitives/tag-swatch.d.ts +10 -0
  55. package/dist/components/rich-text/index.d.ts +1 -0
  56. package/dist/components/rich-text/lazy-markdown-editor.d.ts +2 -0
  57. package/dist/components/rich-text/utils/inferResourceType.d.ts +1 -1
  58. package/dist/components/tag-editor/index.d.ts +4 -0
  59. package/dist/components/tag-editor/tag-editor-heading.d.ts +11 -0
  60. package/dist/components/tag-editor/tag-editor-row.d.ts +1 -1
  61. package/dist/components/tag-editor/tag-editor-save-bar.d.ts +13 -0
  62. package/dist/components/tag-editor/tag-editor.types.d.ts +11 -11
  63. package/dist/components/tag-editor/tag-settings-panel.d.ts +3 -1
  64. package/dist/data-table.js +1018 -926
  65. package/dist/data-table.js.map +1 -1
  66. package/dist/dialog-accept-shortcut-DAEBsoWW.js +7 -0
  67. package/dist/dialog-accept-shortcut-DAEBsoWW.js.map +1 -0
  68. package/dist/diff.js +370 -366
  69. package/dist/diff.js.map +1 -1
  70. package/dist/font/css/prompt-studio-icons.css +720 -0
  71. package/dist/font/prompt-studio-icons.eot +0 -0
  72. package/dist/font/prompt-studio-icons.svg +1 -0
  73. package/dist/font/prompt-studio-icons.ttf +0 -0
  74. package/dist/font/prompt-studio-icons.woff +0 -0
  75. package/dist/font/prompt-studio-icons.woff2 +0 -0
  76. package/dist/index.d.ts +2 -2
  77. package/dist/index.js +1958 -1744
  78. package/dist/index.js.map +1 -1
  79. package/dist/{kanban-renderer-toolbar-B9ro-9z1.js → kanban-renderer-toolbar-Bcj_N1qr.js} +66 -66
  80. package/dist/kanban-renderer-toolbar-Bcj_N1qr.js.map +1 -0
  81. package/dist/kanban-renderer.js +834 -817
  82. package/dist/kanban-renderer.js.map +1 -1
  83. package/dist/lazy-markdown-editor-DwhqQ-NN.js +26 -0
  84. package/dist/lazy-markdown-editor-DwhqQ-NN.js.map +1 -0
  85. package/dist/list-row-BtoVJpFs.js +821 -0
  86. package/dist/list-row-BtoVJpFs.js.map +1 -0
  87. package/dist/markdown-DDd2ESoH.js +743 -0
  88. package/dist/markdown-DDd2ESoH.js.map +1 -0
  89. package/dist/markdown-editor-CYVkzt8t.js +741 -0
  90. package/dist/markdown-editor-CYVkzt8t.js.map +1 -0
  91. package/dist/monaco-browser-CO0NxK_Z.js +19 -0
  92. package/dist/monaco-browser-CO0NxK_Z.js.map +1 -0
  93. package/dist/param-editor-XRjSu6MT.js +161 -0
  94. package/dist/param-editor-XRjSu6MT.js.map +1 -0
  95. package/dist/param-editor-field-B9lEPq8c.js +3028 -0
  96. package/dist/param-editor-field-B9lEPq8c.js.map +1 -0
  97. package/dist/resource-badge-CuItchgL.js +98 -0
  98. package/dist/resource-badge-CuItchgL.js.map +1 -0
  99. package/dist/rich-message--eRzjWYK.js +730 -0
  100. package/dist/rich-message--eRzjWYK.js.map +1 -0
  101. package/dist/rich-text.js +114 -827
  102. package/dist/rich-text.js.map +1 -1
  103. package/dist/style.css +1 -1
  104. package/dist/theme/primitives/fonts.d.ts +3 -0
  105. package/dist/theme/primitives/sizes.d.ts +59 -0
  106. package/dist/theme/recipes/badge.d.ts +8 -0
  107. package/dist/theme/recipes/color-picker.d.ts +18 -1
  108. package/dist/theme/recipes/segmented-control.d.ts +22 -0
  109. package/dist/theme/recipes/switch.d.ts +18 -0
  110. package/dist/theme/recipes/tabs.d.ts +11 -0
  111. package/dist/{theme-CNhnbvcE.js → theme-7PDdD9OD.js} +403 -195
  112. package/dist/theme-7PDdD9OD.js.map +1 -0
  113. package/dist/theme.js +1 -1
  114. package/dist/{tree-list-CZHLAURU.js → tree-list-B2L0cTj2.js} +2 -2
  115. package/dist/{tree-list-CZHLAURU.js.map → tree-list-B2L0cTj2.js.map} +1 -1
  116. package/package.json +3 -2
  117. package/dist/components/param-editor/inputs/file-accept.d.ts +0 -22
  118. package/dist/components/param-editor/inputs/file-drop-input.d.ts +0 -14
  119. package/dist/kanban-renderer-toolbar-B9ro-9z1.js.map +0 -1
  120. package/dist/list-row-YRUxEcy3.js +0 -808
  121. package/dist/list-row-YRUxEcy3.js.map +0 -1
  122. package/dist/param-editor-CYZJbmKu.js +0 -933
  123. package/dist/param-editor-CYZJbmKu.js.map +0 -1
  124. package/dist/param-editor-read-only-field-DgtLqcFa.js +0 -925
  125. package/dist/param-editor-read-only-field-DgtLqcFa.js.map +0 -1
  126. package/dist/prism-BXb57lxL.js +0 -125
  127. package/dist/prism-BXb57lxL.js.map +0 -1
  128. package/dist/resource-badge-qCWHP-wQ.js +0 -99
  129. package/dist/resource-badge-qCWHP-wQ.js.map +0 -1
  130. package/dist/rich-message-DBf_5YlW.js +0 -1450
  131. package/dist/rich-message-DBf_5YlW.js.map +0 -1
  132. package/dist/theme-CNhnbvcE.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"param-editor-CYZJbmKu.js","sources":["../src/components/param-editor/inputs/action-input.tsx","../src/components/param-editor/inputs/anchor-grid.ts","../src/components/param-editor/inputs/anchor-grid-input.tsx","../src/components/param-editor/inputs/file-accept.ts","../src/components/param-editor/inputs/file-drop-input.tsx","../src/components/param-editor/inputs/numeric-value.ts","../src/components/param-editor/inputs/range-value.ts","../src/components/param-editor/inputs/slider-marks.tsx","../src/components/param-editor/inputs/range-input.tsx","../src/components/param-editor/inputs/resource-input-chips.tsx","../src/components/param-editor/inputs/resource-input.tsx","../src/components/param-editor/inputs/segmented-input.tsx","../src/components/param-editor/inputs/text-input.tsx","../src/components/param-editor/param-editor-inline-group.tsx","../src/components/param-editor/inputs/vector-value.ts","../src/components/param-editor/inputs/vector-input.tsx","../src/components/param-editor/param-editor-field.tsx","../src/components/param-editor/param-editor-section.tsx","../src/components/param-editor/param-editor.tsx"],"sourcesContent":["import { Button, Flex } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { ActionOption } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\n\ninterface ActionInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue?: string;\n options: ActionOption[];\n onChange: (id: string, value: string) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nexport const ActionInput = (props: ActionInputProps) => {\n const { id, name, description, defaultValue, options, onChange, readOnly } = props;\n const [active, setActive] = useState(defaultValue);\n\n useEffect(() => {\n setActive(defaultValue);\n }, [defaultValue]);\n\n const run = (optionId: string) => {\n setActive(optionId);\n onChange(id, optionId);\n };\n\n const row = (\n <Flex gap=\"xs\" wrap=\"wrap\">\n {options.map((option) => (\n <Button\n key={option.id}\n size=\"xs\"\n variant={active === option.id ? \"subtle\" : \"outline\"}\n disabled={option.disabled || readOnly}\n _hover={{ bg: \"bg.hover\", borderColor: \"border.accent-light\" }}\n _active={{ bg: \"bg.active\", borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n onClick={() => run(option.id)}\n >\n {option.name}\n </Button>\n ))}\n </Flex>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n {row}\n </ParamEditorControlItem>\n );\n};\n","import type { AnchorGridValue } from \"../param-editor.types\";\n\n/** The nine anchors in row-major order (top-left → bottom-right). */\nexport const ANCHOR_GRID_VALUES: AnchorGridValue[] = [\n \"top-left\",\n \"top\",\n \"top-right\",\n \"left\",\n \"center\",\n \"right\",\n \"bottom-left\",\n \"bottom\",\n \"bottom-right\",\n];\n\nexport const isAnchorGridValue = (value: unknown): value is AnchorGridValue =>\n typeof value === \"string\" && (ANCHOR_GRID_VALUES as string[]).includes(value);\n","import { Box, Grid, IconButton } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { AnchorGridValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { ANCHOR_GRID_VALUES } from \"./anchor-grid\";\n\ninterface AnchorGridInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: AnchorGridValue;\n onChange: (id: string, value: AnchorGridValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nexport const AnchorGridInput = (props: AnchorGridInputProps) => {\n const { id, name, description, defaultValue, onChange, readOnly, fullWidth } = props;\n const [value, setValue] = useState<AnchorGridValue>(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const select = (next: AnchorGridValue) => {\n setValue(next);\n onChange(id, next);\n };\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{value}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n const grid = (\n <Grid\n templateColumns=\"repeat(3, 1.5rem)\"\n gap=\"1px\"\n width=\"fit-content\"\n bg=\"border.subtle\"\n p=\"1px\"\n borderRadius=\"sm\"\n overflow=\"hidden\"\n >\n {ANCHOR_GRID_VALUES.map((anchor) => {\n const selected = anchor === value;\n return (\n <IconButton\n key={anchor}\n aria-label={anchor}\n aria-pressed={selected}\n size=\"2xs\"\n variant=\"ghost\"\n bg={selected ? \"fg\" : \"bg\"}\n _hover={{ bg: selected ? \"fg\" : \"bg.muted\" }}\n borderRadius=\"0\"\n onClick={() => select(anchor)}\n >\n <Box boxSize=\"0.375rem\" borderRadius=\"full\" bg={selected ? \"bg\" : \"fg.muted\"} />\n </IconButton>\n );\n })}\n </Grid>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation={fullWidth ? \"stacked\" : \"inline\"}>\n {grid}\n </ParamEditorControlItem>\n );\n};\n","import type { FileDropValue } from \"../param-editor.types\";\n\ninterface AcceptClause {\n kind: \"extension\" | \"mime\" | \"wildcard\";\n value: string;\n}\n\n/** Parse an accept string (\"image/*,.png,image/jpeg\") into normalized clauses. */\nexport const parseAccept = (accept?: string): AcceptClause[] => {\n if (!accept) return [];\n return accept\n .split(\",\")\n .map((entry) => entry.trim().toLowerCase())\n .filter(Boolean)\n .map((entry) => {\n if (entry.startsWith(\".\")) return { kind: \"extension\", value: entry };\n if (entry.endsWith(\"/*\")) return { kind: \"wildcard\", value: entry.slice(0, entry.indexOf(\"/\")) };\n return { kind: \"mime\", value: entry };\n });\n};\n\nexport interface AcceptCandidate {\n name: string;\n mimeType?: string;\n}\n\n/** Whether a file satisfies the accept string. An empty accept matches anything. */\nexport const acceptsFile = (candidate: AcceptCandidate, accept?: string) => {\n const clauses = parseAccept(accept);\n if (clauses.length === 0) return true;\n const name = candidate.name.toLowerCase();\n const mime = candidate.mimeType?.toLowerCase();\n return clauses.some((clause) => {\n if (clause.kind === \"extension\") return name.endsWith(clause.value);\n if (clause.kind === \"wildcard\") return Boolean(mime?.startsWith(`${clause.value}/`));\n return mime === clause.value;\n });\n};\n\ninterface FileMetadataInput {\n name: string;\n type?: string;\n size?: number;\n dataUrl?: string;\n}\n\n/** Build the serializable metadata a file-drop control commits (never a live File). */\nexport const fileDropValueFromFile = (input: FileMetadataInput): FileDropValue => ({\n name: input.name,\n mimeType: input.type || undefined,\n size: input.size,\n dataUrl: input.dataUrl,\n});\n","import { Box, Button, Flex, Icon, Text } from \"@chakra-ui/react\";\nimport { Upload, X } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport type { FileDropValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { acceptsFile, fileDropValueFromFile } from \"./file-accept\";\n\ninterface FileDropInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: FileDropValue | null;\n accept?: string;\n assetKind?: \"file\" | \"image\";\n onChange: (id: string, value: FileDropValue | null) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nconst formatSize = (size?: number) => {\n if (!size) return undefined;\n if (size < 1024) return `${size} B`;\n if (size < 1024 * 1024) return `${Math.round(size / 1024)} KB`;\n return `${(size / (1024 * 1024)).toFixed(1)} MB`;\n};\n\nexport const FileDropInput = (props: FileDropInputProps) => {\n const { id, name, description, defaultValue, accept, assetKind = \"file\", onChange, readOnly } = props;\n const [value, setValue] = useState<FileDropValue | null>(defaultValue);\n const [error, setError] = useState<string | null>(null);\n const [dragging, setDragging] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const ingest = (file: File | undefined) => {\n if (!file) return;\n if (!acceptsFile({ name: file.name, mimeType: file.type }, accept)) {\n setError(`${file.name} is not an accepted ${assetKind}`);\n return;\n }\n setError(null);\n const reader = new FileReader();\n reader.onload = () => {\n const dataUrl = typeof reader.result === \"string\" ? reader.result : undefined;\n const next = fileDropValueFromFile({ name: file.name, type: file.type, size: file.size, dataUrl });\n setValue(next);\n onChange(id, next);\n };\n reader.readAsDataURL(file);\n };\n\n const clear = () => {\n setValue(null);\n setError(null);\n onChange(id, null);\n };\n\n const selected = value ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\" minW=\"0\" width=\"full\">\n <Flex alignItems=\"center\" gap=\"xs\" minW=\"0\">\n {assetKind === \"image\" && value.dataUrl ? (\n <Box boxSize=\"1.75rem\" borderRadius=\"xs\" bgImage={`url(${value.dataUrl})`} bgSize=\"cover\" flexShrink={0} />\n ) : null}\n <Box minW=\"0\">\n <Text textStyle=\"label/S/medium\" color=\"fg\" truncate>\n {value.name}\n </Text>\n {formatSize(value.size) ? (\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n {formatSize(value.size)}\n </Text>\n ) : null}\n </Box>\n </Flex>\n {readOnly ? null : (\n <Button size=\"2xs\" variant=\"ghost\" onClick={clear}>\n <X />\n </Button>\n )}\n </Flex>\n ) : null;\n\n const dropZone = (\n <Box\n borderWidth=\"1px\"\n borderStyle=\"dashed\"\n borderColor={error ? \"border.error\" : dragging ? \"border.accent-light\" : \"border\"}\n borderRadius=\"sm\"\n bg={dragging ? \"bg.muted\" : \"bg\"}\n px=\"sm\"\n py=\"md\"\n cursor={readOnly ? \"default\" : \"pointer\"}\n transition=\"border-color 0.2s ease-in-out\"\n boxShadow=\"none\"\n _hover={{ borderColor: error ? \"border.error\" : \"border.accent-light\" }}\n _active={{ borderColor: error ? \"border.error\" : \"border.accent-light\" }}\n _focusWithin={{ borderColor: error ? \"border.error\" : \"border.accent-light\", boxShadow: \"none\" }}\n onClick={() => {\n if (!readOnly) inputRef.current?.click();\n }}\n onDragOver={(event) => {\n if (readOnly) return;\n event.preventDefault();\n setDragging(true);\n }}\n onDragLeave={() => setDragging(false)}\n onDrop={(event) => {\n if (readOnly) return;\n event.preventDefault();\n setDragging(false);\n ingest(event.dataTransfer.files[0]);\n }}\n >\n <Flex direction=\"column\" alignItems=\"center\" gap=\"2xs\" color=\"fg.muted\">\n <Icon as={Upload} boxSize=\"16px\" />\n <Text textStyle=\"label/XS/regular\">Drop {assetKind} or click to browse</Text>\n </Flex>\n </Box>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n <input ref={inputRef} type=\"file\" accept={accept} hidden onChange={(event) => ingest(event.target.files?.[0])} />\n {value ? selected : dropZone}\n {error ? (\n <Text textStyle=\"label/XS/regular\" color=\"fg.error\" mt=\"2xs\">\n {error}\n </Text>\n ) : null}\n </ParamEditorControlItem>\n );\n};\n","/** Clamp `value` into the inclusive range, tolerating an inverted min/max. */\nexport const clampToRange = (value: number, min: number, max: number) => {\n const lower = Math.min(min, max);\n const upper = Math.max(min, max);\n if (value < lower) return lower;\n if (value > upper) return upper;\n return value;\n};\n\n/** Snap `value` to the nearest multiple of `step` measured from `origin`. */\nexport const snapToStep = (value: number, step: number, origin = 0) => {\n if (!(step > 0)) return value;\n const steps = Math.round((value - origin) / step);\n return origin + steps * step;\n};\n\n/** Format a number with an optional unit suffix, trimming float noise. */\nexport const formatUnitValue = (value: number, unit?: string) => {\n const rounded = Number.isInteger(value) ? `${value}` : `${Number(value.toFixed(3))}`;\n return unit ? `${rounded}${unit}` : rounded;\n};\n","import type { RangeValue } from \"../param-editor.types\";\nimport { clampToRange, snapToStep } from \"./numeric-value\";\n\n/** Order both handles and clamp (and optionally snap) them into `[min, max]`. */\nexport const normalizeRange = (value: RangeValue, min: number, max: number, step?: number): RangeValue => {\n const first = clampToRange(value[0], min, max);\n const second = clampToRange(value[1], min, max);\n let start = Math.min(first, second);\n let end = Math.max(first, second);\n if (step && step > 0) {\n start = clampToRange(snapToStep(start, step, min), min, max);\n end = clampToRange(snapToStep(end, step, min), min, max);\n }\n return [start, end];\n};\n\n/** Replace a single handle, keeping the pair ordered. */\nexport const updateRangeHandle = (\n value: RangeValue,\n index: 0 | 1,\n next: number,\n min: number,\n max: number,\n step?: number,\n): RangeValue => {\n const draft: RangeValue = index === 0 ? [next, value[1]] : [value[0], next];\n return normalizeRange(draft, min, max, step);\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\n\ninterface SliderMarksProps {\n count?: number;\n}\n\n// Evenly-spaced tick marks rendered under a slider track. Purely decorative.\nexport const SliderMarks = (props: SliderMarksProps) => {\n const { count } = props;\n if (!count || count < 2) return null;\n const positions = Array.from({ length: count }, (_, index) => index / (count - 1));\n\n return (\n <Flex justifyContent=\"space-between\" mt=\"2xs\" aria-hidden=\"true\">\n {positions.map((position) => (\n <Box key={position} width=\"1px\" height=\"0.375rem\" bg=\"border.subtle\" />\n ))}\n </Flex>\n );\n};\n","import { Box, type SliderValueChangeDetails, Text } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { Slider } from \"@/components/primitives/slider\";\nimport type { RangeValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { formatUnitValue } from \"./numeric-value\";\nimport { normalizeRange } from \"./range-value\";\nimport { SliderMarks } from \"./slider-marks\";\n\ninterface RangeInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: RangeValue;\n min: number;\n max: number;\n step?: number;\n unit?: string;\n markerCount?: number;\n onChange: (id: string, value: RangeValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nexport const RangeInput = (props: RangeInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n min,\n max,\n step = 1,\n unit,\n markerCount,\n onChange,\n readOnly,\n fullWidth,\n } = props;\n\n const [value, setValue] = useState<RangeValue>(() => normalizeRange(defaultValue, min, max, step));\n\n useEffect(() => {\n setValue(normalizeRange(defaultValue, min, max, step));\n }, [defaultValue, min, max, step]);\n\n const label = `${formatUnitValue(value[0], unit)} – ${formatUnitValue(value[1], unit)}`;\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{label}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n const trailing = (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\" whiteSpace=\"nowrap\">\n {label}\n </Text>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\" labelTrailing={trailing}>\n <Box>\n <Slider\n size=\"sm\"\n value={value}\n min={min}\n max={max}\n step={step}\n onValueChange={(details: SliderValueChangeDetails) =>\n setValue(normalizeRange(details.value as RangeValue, min, max, step))\n }\n onValueChangeEnd={(details: SliderValueChangeDetails) => {\n const next = normalizeRange(details.value as RangeValue, min, max, step);\n setValue(next);\n onChange(id, next);\n }}\n />\n <SliderMarks count={markerCount} />\n </Box>\n </ParamEditorControlItem>\n );\n};\n","import { Icon, Text, Wrap } from \"@chakra-ui/react\";\nimport { getIconComponent } from \"../../primitives/icon-color-picker\";\nimport { ResourceBadge } from \"../../primitives/resource-badge\";\nimport type { ResourceOption, ResourceRefValue } from \"../param-editor.types\";\n\nconst optionIcon = (option: ResourceOption) => (\n <Icon as={getIconComponent(option.icon)} boxSize=\"14px\" color={option.color ? `${option.color}.500` : \"fg.muted\"} />\n);\n\nconst openExternal = (href: string) => window.open(href, \"_blank\", \"noreferrer\");\n\nconst copyToClipboard = (text: string) => void navigator.clipboard?.writeText(text).catch(() => undefined);\n\ninterface ResourceChipProps {\n option: ResourceOption;\n onOpenResource?: (ref: ResourceRefValue) => void;\n onRemove?: () => void;\n}\n\n// A chip opens its external href in a new tab, opens its internal ref via the host, or\n// copies its text to the clipboard — whichever the option declares.\nexport const ResourceChip = (props: ResourceChipProps) => {\n const { option, onOpenResource, onRemove } = props;\n\n const handleSelect =\n option.href && option.href.length > 0\n ? () => openExternal(option.href!)\n : option.ref && onOpenResource\n ? () => onOpenResource(option.ref!)\n : option.copyText\n ? () => copyToClipboard(option.copyText!)\n : undefined;\n\n return (\n <ResourceBadge\n fileName={option.name}\n icon={optionIcon(option)}\n size=\"sm\"\n onSelect={handleSelect ? () => handleSelect() : undefined}\n onRemove={onRemove ? () => onRemove() : undefined}\n />\n );\n};\n\ninterface ResourceChipListProps {\n options: ResourceOption[];\n onOpenResource?: (ref: ResourceRefValue) => void;\n onRemove?: (optionId: string) => void;\n emptyText?: string;\n}\n\nexport const ResourceChipList = (props: ResourceChipListProps) => {\n const { options, onOpenResource, onRemove, emptyText } = props;\n\n if (options.length === 0) {\n return (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\">\n {emptyText ?? \"None\"}\n </Text>\n );\n }\n\n return (\n <Wrap gap=\"2xs\">\n {options.map((option) => (\n <ResourceChip\n key={option.id}\n option={option}\n onOpenResource={onOpenResource}\n onRemove={onRemove ? () => onRemove(option.id) : undefined}\n />\n ))}\n </Wrap>\n );\n};\n","import { Box, Flex, Icon } from \"@chakra-ui/react\";\nimport { Plus } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { getIconComponent } from \"../../primitives/icon-color-picker\";\nimport type { ResourceOption, ResourceRefValue } from \"../param-editor.types\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ResourceChipList } from \"./resource-input-chips\";\nimport { SelectionMenu } from \"./selection-menu\";\n\ninterface ResourceInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string | string[];\n options: ResourceOption[];\n onChange: (id: string, value: string | string[]) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n editable?: boolean;\n multiSelect?: boolean;\n placeholder?: string;\n emptyText?: string;\n fullWidth?: boolean;\n}\n\nconst toIds = (value: string | string[]) => {\n if (Array.isArray(value)) return value;\n return value ? [value] : [];\n};\n\nconst resolveOptions = (ids: string[], options: ResourceOption[]) =>\n ids\n .map((id) => options.find((option) => option.id === id))\n .filter((option): option is ResourceOption => Boolean(option));\n\nconst FieldShell = (props: { fullWidth: boolean; label: ReactNode; control: ReactNode }) => {\n const { fullWidth, label, control } = props;\n\n if (fullWidth) {\n return (\n <Box>\n <Box mb=\"xs\">{label}</Box>\n {control}\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {label}\n {control}\n </Flex>\n );\n};\n\ninterface ResourceSelectMenuProps {\n triggerLabel: ReactNode;\n options: ResourceOption[];\n selectedIds: string[];\n multiSelect: boolean;\n onToggle: (optionId: string) => void;\n}\n\n// Resource params share the editor's one dropdown, so a ticket property and a\n// command param cannot drift into two looks.\nconst ResourceSelectMenu = (props: ResourceSelectMenuProps) => {\n const { triggerLabel, options, selectedIds, multiSelect, onToggle } = props;\n\n return (\n <SelectionMenu\n triggerLabel={triggerLabel}\n options={options}\n selectedIds={selectedIds}\n multiSelect={multiSelect}\n onToggle={onToggle}\n />\n );\n};\n\nexport const ResourceInput = (props: ResourceInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n options,\n onChange,\n onOpenResource,\n readOnly,\n editable = false,\n multiSelect = false,\n placeholder,\n emptyText,\n fullWidth = false,\n } = props;\n\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const emitChange = (next: string | string[]) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n onChange(id, next);\n };\n\n // Debounce multi-select toggles so a burst of menu clicks makes one update call.\n const scheduleChange = (next: string | string[]) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, next), 540);\n };\n\n const selectedIds = toIds(value);\n const selectedOptions = resolveOptions(selectedIds, options);\n const interactive = editable && !readOnly;\n\n const label = <ParamEditorLabel name={name} description={description} />;\n\n if (!interactive) {\n return (\n <FieldShell\n fullWidth={fullWidth}\n label={label}\n control={<ResourceChipList options={selectedOptions} onOpenResource={onOpenResource} emptyText={emptyText} />}\n />\n );\n }\n\n const toggleOption = (optionId: string) => {\n if (multiSelect) {\n const next = selectedIds.includes(optionId)\n ? selectedIds.filter((entry) => entry !== optionId)\n : [...selectedIds, optionId];\n setValue(next);\n scheduleChange(next);\n return;\n }\n // Re-picking the selected option clears it.\n const next = selectedIds.includes(optionId) ? \"\" : optionId;\n setValue(next);\n emitChange(next);\n };\n\n const removeOption = (optionId: string) => {\n const next = selectedIds.filter((entry) => entry !== optionId);\n setValue(next);\n scheduleChange(next);\n };\n\n if (multiSelect) {\n const control = (\n <Flex direction=\"column\" gap=\"2xs\" align=\"flex-start\" minW=\"0\">\n {selectedOptions.length > 0 ? (\n <ResourceChipList\n options={selectedOptions}\n onOpenResource={onOpenResource}\n onRemove={removeOption}\n emptyText={emptyText}\n />\n ) : null}\n <ResourceSelectMenu\n triggerLabel={\n <Flex align=\"center\" gap=\"2xs\">\n <Icon as={Plus} boxSize=\"12px\" />\n {placeholder ?? \"Add\"}\n </Flex>\n }\n options={options}\n selectedIds={selectedIds}\n multiSelect\n onToggle={toggleOption}\n />\n </Flex>\n );\n\n return <FieldShell fullWidth={fullWidth} label={label} control={control} />;\n }\n\n const selected = selectedOptions[0];\n const triggerLabel = selected ? (\n <Flex align=\"center\" gap=\"2xs\" minW=\"0\">\n <Icon\n as={getIconComponent(selected.icon)}\n boxSize=\"14px\"\n color={selected.color ? `${selected.color}.500` : \"fg.muted\"}\n />\n {selected.name}\n </Flex>\n ) : (\n (placeholder ?? \"Select\")\n );\n\n return (\n <FieldShell\n fullWidth={fullWidth}\n label={label}\n control={\n <ResourceSelectMenu\n triggerLabel={triggerLabel}\n options={options}\n selectedIds={selectedIds}\n multiSelect={false}\n onToggle={toggleOption}\n />\n }\n />\n );\n};\n","import { Box, Button, Group } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { SegmentedOption } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface SegmentedInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string;\n options: SegmentedOption[];\n variant?: \"default\" | \"dots\";\n onChange: (id: string, value: string) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nexport const SegmentedInput = (props: SegmentedInputProps) => {\n const { id, name, description, defaultValue, options, variant = \"default\", onChange, readOnly, fullWidth } = props;\n const [value, setValue] = useState(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const select = (next: string) => {\n setValue(next);\n onChange(id, next);\n };\n\n const selectedName = options.find((option) => option.id === value)?.name ?? value;\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{selectedName}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n const group = (\n <Group\n attached\n width=\"full\"\n borderWidth=\"1px\"\n borderColor=\"border\"\n borderRadius=\"xs\"\n overflow=\"hidden\"\n transition=\"border-color 0.2s ease-in-out\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _active={{ borderColor: \"border.accent-light\" }}\n _focusWithin={{ borderColor: \"border.accent-light\", boxShadow: \"none\" }}\n >\n {options.map((option) => {\n const selected = option.id === value;\n return (\n <Button\n key={option.id}\n flex=\"1\"\n size=\"xs\"\n variant={selected ? \"subtle\" : \"ghost\"}\n borderRadius=\"0\"\n aria-pressed={selected}\n onClick={() => select(option.id)}\n >\n {variant === \"dots\" ? (\n <Box boxSize=\"0.5rem\" borderRadius=\"full\" bg={option.indicatorColor ?? \"fg.muted\"} mr=\"1\" />\n ) : null}\n {option.name}\n </Button>\n );\n })}\n </Group>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n {group}\n </ParamEditorControlItem>\n );\n};\n","import { Box, Flex, Input, Textarea } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface TextInputProps {\n id: string;\n defaultValue: string;\n name: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n singleLine?: boolean;\n hideLabel?: boolean;\n fullWidth?: boolean;\n}\n\nexport const TextInput = (props: TextInputProps) => {\n const {\n id,\n defaultValue,\n name,\n onChange,\n description,\n readOnly,\n singleLine = true,\n hideLabel = false,\n fullWidth = false,\n } = props;\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextValue: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n scheduleChange(newValue);\n };\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue preserveWhitespace={!singleLine}>{value}</ParamEditorReadOnlyValue>;\n\n if (singleLine && !fullWidth) {\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n {singleLine && !fullWidth ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n flex=\"1\"\n maxW=\"12.5rem\"\n size=\"sm\"\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Flex>\n ) : (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {singleLine ? (\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size=\"sm\"\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n ) : (\n <Textarea\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size=\"sm\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n rows={3}\n resize=\"vertical\"\n />\n )}\n </Box>\n )}\n </Box>\n );\n};\n","import { Flex, type FlexProps } from \"@chakra-ui/react\";\n\ninterface ParamEditorInlineGroupProps extends FlexProps {}\n\n// A horizontal row of controls that share a line (e.g. paired x/y inputs).\nexport const ParamEditorInlineGroup = (props: ParamEditorInlineGroupProps) => {\n const { children, ...rest } = props;\n\n return (\n <Flex alignItems=\"center\" gap=\"xs\" minW=\"0\" {...rest}>\n {children}\n </Flex>\n );\n};\n","import type { VectorValue } from \"../param-editor.types\";\nimport { clampToRange } from \"./numeric-value\";\n\nexport interface VectorBounds {\n min?: number;\n max?: number;\n}\n\nconst clampAxis = (value: number, bounds: VectorBounds) => {\n if (bounds.min === undefined && bounds.max === undefined) return value;\n const min = bounds.min ?? Number.NEGATIVE_INFINITY;\n const max = bounds.max ?? Number.POSITIVE_INFINITY;\n return clampToRange(value, min, max);\n};\n\n/** Update a single axis without dropping the other, clamping into optional bounds. */\nexport const updateVectorAxis = (\n value: VectorValue,\n axis: \"x\" | \"y\",\n next: number,\n bounds: VectorBounds = {},\n): VectorValue => {\n const clamped = clampAxis(next, bounds);\n return axis === \"x\" ? { x: clamped, y: value.y } : { x: value.x, y: clamped };\n};\n","import { Flex, Text } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { VectorValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorInlineGroup } from \"../param-editor-inline-group\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { NumberInput } from \"./number-input\";\nimport { updateVectorAxis } from \"./vector-value\";\n\ninterface VectorInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: VectorValue;\n xLabel?: string;\n yLabel?: string;\n min?: number;\n max?: number;\n step?: number;\n onChange: (id: string, value: VectorValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\ninterface VectorAxisFieldProps {\n label: string;\n fieldId: string;\n value: number;\n min?: number;\n max?: number;\n step?: number;\n onCommit: (value: number) => void;\n}\n\n// A single axis: the shared NumberInput (label/slider hidden) prefixed with its axis letter.\nconst VectorAxisField = (props: VectorAxisFieldProps) => {\n const { label, fieldId, value, min, max, step, onCommit } = props;\n\n return (\n <Flex alignItems=\"center\" gap=\"1\" flex=\"1\" minW=\"0\">\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\" width=\"1rem\" flexShrink={0}>\n {label}\n </Text>\n <NumberInput\n id={fieldId}\n name={label}\n description=\"\"\n defaultValue={value}\n min={min}\n max={max}\n step={step}\n hideLabel\n hideSlider\n fullWidth\n onChange={(_, next) => onCommit(next)}\n />\n </Flex>\n );\n};\n\nexport const VectorInput = (props: VectorInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n xLabel = \"X\",\n yLabel = \"Y\",\n min,\n max,\n step = 1,\n onChange,\n readOnly,\n } = props;\n const [value, setValue] = useState<VectorValue>(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const commitAxis = (axis: \"x\" | \"y\", next: number) => {\n const updated = updateVectorAxis(value, axis, next, { min, max });\n setValue(updated);\n onChange(id, updated);\n };\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description}>\n <ParamEditorReadOnlyValue>{`${value.x}, ${value.y}`}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n <ParamEditorInlineGroup>\n <VectorAxisField\n label={xLabel}\n fieldId={`${id}.x`}\n value={value.x}\n min={min}\n max={max}\n step={step}\n onCommit={(next) => commitAxis(\"x\", next)}\n />\n <VectorAxisField\n label={yLabel}\n fieldId={`${id}.y`}\n value={value.y}\n min={min}\n max={max}\n step={step}\n onCommit={(next) => commitAxis(\"y\", next)}\n />\n </ParamEditorInlineGroup>\n </ParamEditorControlItem>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport { ActionInput } from \"./inputs/action-input\";\nimport { AnchorGridInput } from \"./inputs/anchor-grid-input\";\nimport { ColorInput } from \"./inputs/color-input\";\nimport { DateInput } from \"./inputs/date-input\";\nimport { FileDropInput } from \"./inputs/file-drop-input\";\nimport { NumberInput } from \"./inputs/number-input\";\nimport { RangeInput } from \"./inputs/range-input\";\nimport { ResourceInput } from \"./inputs/resource-input\";\nimport { SegmentedInput } from \"./inputs/segmented-input\";\nimport { SelectionInput } from \"./inputs/selection-input\";\nimport { TextInput } from \"./inputs/text-input\";\nimport { VectorInput } from \"./inputs/vector-input\";\nimport type { Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorLabel } from \"./param-editor-label\";\nimport { ParamEditorReadOnlyField } from \"./param-editor-read-only-field\";\nimport { ParamEditorReadOnlyValue } from \"./param-editor-read-only-value\";\n\ninterface ParamEditorFieldProps {\n param: Param;\n defaultValues: ParamValueMap;\n onChange: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nconst resolveDefaultValue = <T,>(defaultValues: ParamValueMap, paramId: string, fallback: T) => {\n return defaultValues[paramId] === undefined ? fallback : (defaultValues[paramId] as T);\n};\n\nconst PropertyField = (props: { param: Extract<Param, { type: \"property\" }>; fullWidth?: boolean }) => {\n const { param, fullWidth } = props;\n\n if (fullWidth) {\n return (\n <Box>\n <Box mb=\"xs\">\n <ParamEditorLabel name={param.name} description={param.description} />\n </Box>\n <ParamEditorReadOnlyValue>{param.value}</ParamEditorReadOnlyValue>\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n <ParamEditorLabel name={param.name} description={param.description} />\n <ParamEditorReadOnlyValue>{param.value}</ParamEditorReadOnlyValue>\n </Flex>\n );\n};\n\nexport const ParamEditorField = (props: ParamEditorFieldProps) => {\n const { param, defaultValues, onChange, onOpenResource, readOnly, fullWidth = false } = props;\n const common = { id: param.id, readOnly, onChange, fullWidth };\n\n switch (param.type) {\n case \"number\":\n return (\n <NumberInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n step={param.step}\n />\n );\n case \"text\":\n return (\n <TextInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n singleLine={param.singleLine}\n />\n );\n case \"selection\":\n return (\n <SelectionInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n multiSelect={param.multiSelect}\n placeholder={param.placeholder}\n clearable={param.clearable}\n disabled={param.disabled}\n />\n );\n case \"date\":\n return (\n <DateInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n />\n );\n case \"color\":\n return (\n <ColorInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n />\n );\n case \"property\":\n return <PropertyField param={param} fullWidth={fullWidth} />;\n case \"readOnly\":\n return <ParamEditorReadOnlyField param={param} fullWidth={fullWidth} />;\n case \"resource\":\n return (\n <ResourceInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n multiSelect={param.multiSelect}\n editable={param.editable}\n placeholder={param.placeholder}\n emptyText={param.emptyText}\n onOpenResource={onOpenResource}\n />\n );\n case \"range\":\n return (\n <RangeInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n step={param.step}\n unit={param.unit}\n markerCount={param.markerCount}\n />\n );\n case \"segmented\":\n return (\n <SegmentedInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n variant={param.variant}\n />\n );\n case \"actions\":\n return (\n <ActionInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n />\n );\n case \"anchorGrid\":\n return (\n <AnchorGridInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n />\n );\n case \"vector\":\n return (\n <VectorInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n xLabel={param.xLabel}\n yLabel={param.yLabel}\n min={param.min}\n max={param.max}\n step={param.step}\n />\n );\n case \"fileDrop\":\n return (\n <FileDropInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n accept={param.accept}\n assetKind={param.assetKind}\n />\n );\n default:\n return null;\n }\n};\n","import { Box, 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 { ParamEditorField } from \"./param-editor-field\";\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 <Box key={param.id} px=\"sm\" py={variant === \"small\" ? \"2xs\" : \"xs\"}>\n <ParamEditorField\n param={param}\n defaultValues={defaultValues}\n onChange={onChange}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n fullWidth={fullWidth}\n />\n </Box>\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":["ActionInput","props","$","_c","id","name","description","defaultValue","options","onChange","readOnly","active","setActive","useState","t0","t1","useEffect","t2","optionId","run","t3","t4","option","jsx","Button","disabled","bg","borderColor","outline","boxShadow","map","Flex","row","t5","ParamEditorControlItem","ANCHOR_GRID_VALUES","isAnchorGridValue","value","includes","AnchorGridInput","fullWidth","setValue","next","select","ParamEditorReadOnlyValue","anchor","selected","IconButton","Box","Grid","grid","t6","parseAccept","accept","split","entry","trim","toLowerCase","filter","Boolean","startsWith","kind","endsWith","slice","indexOf","acceptsFile","candidate","clauses","length","mime","mimeType","some","clause","fileDropValueFromFile","input","type","undefined","size","dataUrl","formatSize","Math","round","toFixed","FileDropInput","assetKind","error","setError","dragging","setDragging","inputRef","useRef","file","reader","FileReader","onload","result","readAsDataURL","ingest","clear","jsxs","Text","X","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","current","click","event","preventDefault","t17","Symbol","for","t18","event_0","dataTransfer","files","t19","Icon","Upload","t20","t21","dropZone","t22","event_1","target","t23","t24","t25","t26","clampToRange","min","max","lower","upper","snapToStep","step","origin","steps","formatUnitValue","unit","rounded","Number","isInteger","normalizeRange","first","second","start","end","SliderMarks","count","Array","from","_","index","positions","_temp","position","RangeInput","markerCount","label","trailing","details","details_0","Slider","optionIcon","getIconComponent","icon","color","openExternal","href","window","open","copyToClipboard","text","navigator","clipboard","writeText","catch","ResourceChip","onOpenResource","onRemove","copyText","ref","handleSelect","ResourceBadge","ResourceChipList","emptyText","Wrap","toIds","isArray","resolveOptions","ids","find","FieldShell","control","ResourceSelectMenu","triggerLabel","selectedIds","multiSelect","onToggle","SelectionMenu","ResourceInput","editable","placeholder","timeoutRef","emitChange","clearTimeout","scheduleChange","next_0","setTimeout","selectedOptions","interactive","ParamEditorLabel","toggleOption","next_1","next_2","removeOption","optionId_0","next_3","entry_0","Plus","SegmentedInput","variant","selectedName","option_0","indicatorColor","Group","group","TextInput","singleLine","hideLabel","nextValue","newValue","handleChange","valueElement","Input","e","e_1","_temp2","Textarea","e_3","e_0","key","currentTarget","blur","e_2","ParamEditorInlineGroup","children","rest","clampAxis","bounds","NEGATIVE_INFINITY","POSITIVE_INFINITY","updateVectorAxis","axis","clamped","x","y","VectorAxisField","fieldId","onCommit","NumberInput","VectorInput","xLabel","yLabel","updated","commitAxis","resolveDefaultValue","defaultValues","paramId","fallback","PropertyField","param","ParamEditorField","common","clearable","SelectionInput","DateInput","ColorInput","ParamEditorReadOnlyField","ParamEditorSectionTitle","title","Stack","ParamEditorSectionHeader","collapsible","ChevronDown","ParamEditorSectionBody","params","defaultCollapsed","isFirst","sectionPadding","ParamEditorSection","setOpen","canCollapse","contentOpen","Collapsible","ParamEditor","groups"],"mappings":"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"}