@tduniec/plugin-template-designer-foundation 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [0.1.8](https://github.com/tduniec/template-designer-plugin/compare/template-designer-foundation-v0.1.7...template-designer-foundation-v0.1.8) (2026-01-20)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **template-designer-foundation:** extedning form nodes for changes ([#63](https://github.com/tduniec/template-designer-plugin/issues/63)) ([d9585b7](https://github.com/tduniec/template-designer-plugin/commit/d9585b774bb5e6029fa158c7969f0d7f67f6dd32))
7
+
8
+ ## [0.1.7](https://github.com/tduniec/template-designer-plugin/compare/template-designer-foundation-v0.1.6...template-designer-foundation-v0.1.7) (2026-01-12)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **template-designer-foundation:** adjustments for workspaces ([1143a50](https://github.com/tduniec/template-designer-plugin/commit/1143a50826842af450ae9f13feb39ee39574ba48))
14
+
1
15
  ## [0.1.6](https://github.com/tduniec/template-designer-plugin/compare/template-designer-foundation-v0.1.5...template-designer-foundation-v0.1.6) (2026-01-08)
2
16
 
3
17
 
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useMemo, useCallback } from 'react';
3
3
  import { styled, alpha, useTheme } from '@material-ui/core/styles';
4
- import { Box, Typography, Tooltip, IconButton, TextField, FormControlLabel, Switch } from '@material-ui/core';
4
+ import { Box, Typography, Tooltip, IconButton, TextField, FormControl, InputLabel, Select, MenuItem, FormControlLabel, Switch, Divider } from '@material-ui/core';
5
5
  import TuneIcon from '@material-ui/icons/Tune';
6
6
  import AddIcon from '@material-ui/icons/Add';
7
7
  import ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';
@@ -57,6 +57,10 @@ const ParameterInputNode = ({
57
57
  field,
58
58
  index,
59
59
  totalCount,
60
+ extensions,
61
+ formState,
62
+ nodeId,
63
+ isSelected,
60
64
  onFieldUpdate,
61
65
  onAddField,
62
66
  onMoveField
@@ -71,18 +75,15 @@ const ParameterInputNode = ({
71
75
  const schemaTitle = typeof schemaRecord.title === "string" ? schemaRecord.title : "";
72
76
  const schemaDescription = typeof schemaRecord.description === "string" ? schemaRecord.description : "";
73
77
  const schemaSummary = useMemo(() => {
74
- if (!schema) {
75
- return "any";
76
- }
77
78
  const typeValue = schemaRecord.type;
78
- if (Array.isArray(typeValue)) {
79
- return typeValue.map(String).join(" | ");
79
+ if (Array.isArray(typeValue) && typeValue.length) {
80
+ return String(typeValue[0]);
80
81
  }
81
- if (typeof typeValue === "string") {
82
+ if (typeof typeValue === "string" && typeValue.length) {
82
83
  return typeValue;
83
84
  }
84
- return "any";
85
- }, [schema, schemaRecord]);
85
+ return "string";
86
+ }, [schemaRecord]);
86
87
  const defaultString = useMemo(() => {
87
88
  if (defaultValue === void 0 || defaultValue === null) {
88
89
  return "";
@@ -133,6 +134,59 @@ const ParameterInputNode = ({
133
134
  event.stopPropagation();
134
135
  event.preventDefault();
135
136
  };
137
+ const handleTypeChange = (nextType) => {
138
+ updateField((current) => {
139
+ const prevSchema = current.schema ?? {};
140
+ const next = { ...prevSchema, type: nextType };
141
+ if (nextType !== "object") {
142
+ delete next.properties;
143
+ } else if (!next.properties) {
144
+ next.properties = {};
145
+ }
146
+ if (nextType !== "string" && nextType !== "number" && nextType !== "boolean") {
147
+ delete next.enum;
148
+ delete next.default;
149
+ }
150
+ return {
151
+ ...current,
152
+ schema: next
153
+ };
154
+ });
155
+ };
156
+ const renderInputExtras = extensions?.renderInputExtras;
157
+ const extrasArgs = useMemo(() => {
158
+ if (!renderInputExtras) {
159
+ return void 0;
160
+ }
161
+ return {
162
+ fieldId: field.id,
163
+ fieldPath: [field.sectionId, field.fieldName].filter(
164
+ (part) => Boolean(part)
165
+ ),
166
+ fieldModel: field,
167
+ schema,
168
+ formState,
169
+ onFieldChange: onFieldUpdate ? updateField : void 0,
170
+ nodeId,
171
+ isSelected
172
+ };
173
+ }, [
174
+ field,
175
+ formState,
176
+ isSelected,
177
+ nodeId,
178
+ renderInputExtras,
179
+ schema,
180
+ onFieldUpdate,
181
+ updateField
182
+ ]);
183
+ const extrasContent = useMemo(
184
+ () => renderInputExtras && extrasArgs ? renderInputExtras(extrasArgs) : void 0,
185
+ [extrasArgs, renderInputExtras]
186
+ );
187
+ const handleExtrasPointerDown = useCallback((event) => {
188
+ event.stopPropagation();
189
+ }, []);
136
190
  return /* @__PURE__ */ jsxs(Card, { children: [
137
191
  /* @__PURE__ */ jsx(Header, { children: /* @__PURE__ */ jsxs(Box, { display: "flex", flexDirection: "column", width: "100%", children: [
138
192
  /* @__PURE__ */ jsxs(
@@ -230,6 +284,7 @@ const ParameterInputNode = ({
230
284
  TextField,
231
285
  {
232
286
  label: "Field name",
287
+ id: `${field.id}-name`,
233
288
  value: fieldName,
234
289
  size: "small",
235
290
  variant: "outlined",
@@ -240,10 +295,31 @@ const ParameterInputNode = ({
240
295
  fullWidth: true
241
296
  }
242
297
  ),
298
+ /* @__PURE__ */ jsxs(FormControl, { size: "small", variant: "outlined", fullWidth: true, children: [
299
+ /* @__PURE__ */ jsx(InputLabel, { id: `param-type-${field.id}`, children: "Type" }),
300
+ /* @__PURE__ */ jsxs(
301
+ Select,
302
+ {
303
+ labelId: `param-type-${field.id}`,
304
+ id: `${field.id}-type`,
305
+ value: schemaSummary,
306
+ label: "Type",
307
+ className: "nodrag nowheel",
308
+ onChange: (event) => handleTypeChange(event.target.value),
309
+ children: [
310
+ /* @__PURE__ */ jsx(MenuItem, { value: "string", children: "string" }),
311
+ /* @__PURE__ */ jsx(MenuItem, { value: "number", children: "number" }),
312
+ /* @__PURE__ */ jsx(MenuItem, { value: "boolean", children: "boolean" }),
313
+ /* @__PURE__ */ jsx(MenuItem, { value: "object", children: "object" })
314
+ ]
315
+ }
316
+ )
317
+ ] }),
243
318
  /* @__PURE__ */ jsx(
244
319
  TextField,
245
320
  {
246
321
  label: "Title",
322
+ id: `${field.id}-title`,
247
323
  value: schemaTitle,
248
324
  size: "small",
249
325
  variant: "outlined",
@@ -255,6 +331,7 @@ const ParameterInputNode = ({
255
331
  TextField,
256
332
  {
257
333
  label: "Description",
334
+ id: `${field.id}-description`,
258
335
  value: schemaDescription,
259
336
  size: "small",
260
337
  variant: "outlined",
@@ -270,6 +347,7 @@ const ParameterInputNode = ({
270
347
  TextField,
271
348
  {
272
349
  label: "Default",
350
+ id: `${field.id}-default`,
273
351
  value: defaultString,
274
352
  size: "small",
275
353
  variant: "outlined",
@@ -309,7 +387,11 @@ const ParameterInputNode = ({
309
387
  /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "textSecondary", children: "Double-click text fields to edit in a modal." })
310
388
  ]
311
389
  }
312
- )
390
+ ),
391
+ extrasContent ? /* @__PURE__ */ jsxs(Box, { mt: 1.5, children: [
392
+ /* @__PURE__ */ jsx(Divider, {}),
393
+ /* @__PURE__ */ jsx(Box, { mt: 1, onPointerDown: handleExtrasPointerDown, children: extrasContent })
394
+ ] }) : null
313
395
  ]
314
396
  }
315
397
  )
@@ -1 +1 @@
1
- {"version":3,"file":"ParameterInputNode.esm.js","sources":["../../../src/components/Nodes/ParameterInputNode.tsx"],"sourcesContent":["import type { FC, SyntheticEvent } from \"react\";\nimport { useCallback, useMemo } from \"react\";\nimport { alpha, styled, useTheme } from \"@material-ui/core/styles\";\nimport {\n Box,\n FormControlLabel,\n IconButton,\n Switch,\n TextField,\n Tooltip,\n Typography,\n} from \"@material-ui/core\";\nimport TuneIcon from \"@material-ui/icons/Tune\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport ArrowUpwardIcon from \"@material-ui/icons/ArrowUpward\";\nimport ArrowDownwardIcon from \"@material-ui/icons/ArrowDownward\";\nimport type { ParameterFieldDisplay } from \"../../types/flowNodes\";\n\nconst resolvePaletteMode = (theme: { palette: { type?: string } }) =>\n (theme.palette as { mode?: \"light\" | \"dark\" }).mode ??\n theme.palette.type ??\n \"light\";\n\nconst Card = styled(Box)(({ theme }) => {\n const paletteMode = resolvePaletteMode(theme);\n return {\n position: \"relative\",\n background: alpha(\n theme.palette.success.main,\n paletteMode === \"dark\" ? 0.2 : 0.12\n ),\n border: `1px solid ${alpha(theme.palette.success.main, 0.45)}`,\n borderRadius: 12,\n width: 580,\n padding: theme.spacing(1.5),\n boxShadow: theme.shadows[2],\n color: theme.palette.text.primary,\n };\n});\n\nconst Header = styled(Box)(({ theme }) => {\n const paletteMode = resolvePaletteMode(theme);\n return {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: theme.spacing(1),\n marginBottom: theme.spacing(1),\n borderRadius: 8,\n backgroundColor: alpha(\n theme.palette.success.main,\n paletteMode === \"dark\" ? 0.25 : 0.16\n ),\n border: `1px solid ${alpha(theme.palette.success.main, 0.45)}`,\n };\n});\n\ntype ParameterInputProps = {\n field: ParameterFieldDisplay;\n index: number;\n totalCount: number;\n onFieldUpdate?: (\n updater: (field: ParameterFieldDisplay) => ParameterFieldDisplay\n ) => void;\n onAddField?: () => void;\n onMoveField?: (direction: \"up\" | \"down\") => void;\n};\n\nconst shouldParseDefault = (value: string): boolean => {\n const trimmed = value.trim();\n if (!trimmed.length) {\n return false;\n }\n if (trimmed === \"true\" || trimmed === \"false\" || trimmed === \"null\") {\n return true;\n }\n if (!Number.isNaN(Number(trimmed))) {\n return true;\n }\n return trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\");\n};\n\nexport const ParameterInputNode: FC<ParameterInputProps> = ({\n field,\n index,\n totalCount,\n onFieldUpdate,\n onAddField,\n onMoveField,\n}) => {\n const theme = useTheme();\n const { fieldName, schema, required, sectionTitle } = field;\n const schemaRecord = useMemo(\n () => (schema ?? {}) as Record<string, unknown>,\n [schema]\n );\n const defaultValue = schemaRecord.default;\n const schemaTitle =\n typeof schemaRecord.title === \"string\"\n ? (schemaRecord.title as string)\n : \"\";\n const schemaDescription =\n typeof schemaRecord.description === \"string\"\n ? (schemaRecord.description as string)\n : \"\";\n\n const schemaSummary = useMemo(() => {\n if (!schema) {\n return \"any\";\n }\n const typeValue = schemaRecord.type;\n if (Array.isArray(typeValue)) {\n return typeValue.map(String).join(\" | \");\n }\n if (typeof typeValue === \"string\") {\n return typeValue;\n }\n return \"any\";\n }, [schema, schemaRecord]);\n\n const defaultString = useMemo(() => {\n if (defaultValue === undefined || defaultValue === null) {\n return \"\";\n }\n if (typeof defaultValue === \"string\") {\n return defaultValue;\n }\n try {\n return JSON.stringify(defaultValue);\n } catch {\n return String(defaultValue);\n }\n }, [defaultValue]);\n\n const updateField = useCallback(\n (updater: (current: ParameterFieldDisplay) => ParameterFieldDisplay) => {\n onFieldUpdate?.(updater);\n },\n [onFieldUpdate]\n );\n\n const updateSchema = useCallback(\n (patch: Record<string, unknown>) => {\n updateField((current) => ({\n ...current,\n schema: {\n ...(current.schema ?? {}),\n ...patch,\n },\n }));\n },\n [updateField]\n );\n\n const handleDefaultChange = (value: string) => {\n const trimmed = value.trim();\n if (!trimmed.length) {\n updateSchema({ default: undefined });\n return;\n }\n\n if (shouldParseDefault(trimmed)) {\n try {\n updateSchema({ default: JSON.parse(trimmed) });\n return;\n } catch {\n // swallow parse errors and treat as plain text below\n }\n }\n\n updateSchema({ default: value });\n };\n\n const preventDrag = (event: SyntheticEvent) => {\n event.stopPropagation();\n event.preventDefault();\n };\n\n return (\n <Card>\n <Header>\n <Box display=\"flex\" flexDirection=\"column\" width=\"100%\">\n <Box\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n style={{ gap: theme.spacing(1) }}\n >\n <Box\n display=\"flex\"\n alignItems=\"center\"\n style={{ gap: theme.spacing(1) }}\n >\n <TuneIcon\n fontSize=\"small\"\n htmlColor={theme.palette.success.dark}\n />\n <Typography variant=\"subtitle2\">\n {schemaTitle || fieldName || \"Field\"}\n </Typography>\n </Box>\n <Typography variant=\"caption\" color=\"textSecondary\">\n {schemaSummary}\n </Typography>\n </Box>\n <Box\n display=\"flex\"\n justifyContent=\"flex-end\"\n style={{\n gap: 4,\n marginTop: theme.spacing(0.5),\n }}\n >\n <Tooltip title=\"Add parameter input\">\n <IconButton\n size=\"small\"\n onPointerDown={preventDrag}\n onClick={(event) => {\n event.stopPropagation();\n onAddField?.();\n }}\n >\n <AddIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Move up\">\n <span>\n <IconButton\n size=\"small\"\n disabled={index === 0}\n onPointerDown={preventDrag}\n onClick={(event) => {\n event.stopPropagation();\n onMoveField?.(\"up\");\n }}\n >\n <ArrowUpwardIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n <Tooltip title=\"Move down\">\n <span>\n <IconButton\n size=\"small\"\n disabled={index === totalCount - 1}\n onPointerDown={preventDrag}\n onClick={(event) => {\n event.stopPropagation();\n onMoveField?.(\"down\");\n }}\n >\n <ArrowDownwardIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n </Box>\n {sectionTitle ? (\n <Typography variant=\"caption\" color=\"textSecondary\">\n {sectionTitle}\n </Typography>\n ) : null}\n </Box>\n </Header>\n\n <Box\n mt={1}\n display=\"flex\"\n flexDirection=\"column\"\n style={{ gap: theme.spacing(1) }}\n >\n <TextField\n label=\"Field name\"\n value={fieldName}\n size=\"small\"\n variant=\"outlined\"\n onChange={(event) =>\n updateField((current) => ({\n ...current,\n fieldName: event.target.value,\n }))\n }\n fullWidth\n />\n <TextField\n label=\"Title\"\n value={schemaTitle}\n size=\"small\"\n variant=\"outlined\"\n onChange={(event) =>\n updateSchema({ title: event.target.value || undefined })\n }\n fullWidth\n />\n <TextField\n label=\"Description\"\n value={schemaDescription}\n size=\"small\"\n variant=\"outlined\"\n onChange={(event) =>\n updateSchema({\n description: event.target.value || undefined,\n })\n }\n fullWidth\n multiline\n minRows={2}\n />\n <TextField\n label=\"Default\"\n value={defaultString}\n size=\"small\"\n variant=\"outlined\"\n onChange={(event) => handleDefaultChange(event.target.value)}\n fullWidth\n multiline\n minRows={2}\n placeholder=\"Supports strings, numbers, booleans, objects, and arrays\"\n />\n <Box\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n flexWrap=\"wrap\"\n >\n <FormControlLabel\n control={\n <Switch\n size=\"small\"\n color=\"primary\"\n checked={required ?? false}\n onChange={(_, checked) =>\n updateField((current) => ({\n ...current,\n required: checked,\n }))\n }\n />\n }\n label={\n <Typography variant=\"body2\" color=\"textSecondary\">\n Required\n </Typography>\n }\n />\n <Typography variant=\"caption\" color=\"textSecondary\">\n Double-click text fields to edit in a modal.\n </Typography>\n </Box>\n </Box>\n </Card>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAkBA,MAAM,kBAAA,GAAqB,CAAC,KAAA,KACzB,KAAA,CAAM,QAAwC,IAAA,IAC/C,KAAA,CAAM,QAAQ,IAAA,IACd,OAAA;AAEF,MAAM,OAAO,MAAA,CAAO,GAAG,EAAE,CAAC,EAAE,OAAM,KAAM;AACtC,EAAA,MAAM,WAAA,GAAc,mBAAmB,KAAK,CAAA;AAC5C,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,UAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,MACV,KAAA,CAAM,QAAQ,OAAA,CAAQ,IAAA;AAAA,MACtB,WAAA,KAAgB,SAAS,GAAA,GAAM;AAAA,KACjC;AAAA,IACA,MAAA,EAAQ,aAAa,KAAA,CAAM,KAAA,CAAM,QAAQ,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAC,CAAA,CAAA;AAAA,IAC5D,YAAA,EAAc,EAAA;AAAA,IACd,KAAA,EAAO,GAAA;AAAA,IACP,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,IAC1B,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC1B,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK;AAAA,GAC5B;AACF,CAAC,CAAA;AAED,MAAM,SAAS,MAAA,CAAO,GAAG,EAAE,CAAC,EAAE,OAAM,KAAM;AACxC,EAAA,MAAM,WAAA,GAAc,mBAAmB,KAAK,CAAA;AAC5C,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,eAAA;AAAA,IAChB,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IACxB,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC7B,YAAA,EAAc,CAAA;AAAA,IACd,eAAA,EAAiB,KAAA;AAAA,MACf,KAAA,CAAM,QAAQ,OAAA,CAAQ,IAAA;AAAA,MACtB,WAAA,KAAgB,SAAS,IAAA,GAAO;AAAA,KAClC;AAAA,IACA,MAAA,EAAQ,aAAa,KAAA,CAAM,KAAA,CAAM,QAAQ,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,GAC9D;AACF,CAAC,CAAA;AAaD,MAAM,kBAAA,GAAqB,CAAC,KAAA,KAA2B;AACrD,EAAA,MAAM,OAAA,GAAU,MAAM,IAAA,EAAK;AAC3B,EAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AACnB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAA,KAAY,MAAA,IAAU,OAAA,KAAY,OAAA,IAAW,YAAY,MAAA,EAAQ;AACnE,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,IAAI,CAAC,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,OAAO,CAAC,CAAA,EAAG;AAClC,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,QAAQ,UAAA,CAAW,GAAG,CAAA,IAAK,OAAA,CAAQ,WAAW,GAAG,CAAA;AAC1D,CAAA;AAEO,MAAM,qBAA8C,CAAC;AAAA,EAC1D,KAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,EAAA,MAAM,EAAE,SAAA,EAAW,MAAA,EAAQ,QAAA,EAAU,cAAa,GAAI,KAAA;AACtD,EAAA,MAAM,YAAA,GAAe,OAAA;AAAA,IACnB,MAAO,UAAU,EAAC;AAAA,IAClB,CAAC,MAAM;AAAA,GACT;AACA,EAAA,MAAM,eAAe,YAAA,CAAa,OAAA;AAClC,EAAA,MAAM,cACJ,OAAO,YAAA,CAAa,KAAA,KAAU,QAAA,GACzB,aAAa,KAAA,GACd,EAAA;AACN,EAAA,MAAM,oBACJ,OAAO,YAAA,CAAa,WAAA,KAAgB,QAAA,GAC/B,aAAa,WAAA,GACd,EAAA;AAEN,EAAA,MAAM,aAAA,GAAgB,QAAQ,MAAM;AAClC,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,MAAM,YAAY,YAAA,CAAa,IAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,EAAG;AAC5B,MAAA,OAAO,SAAA,CAAU,GAAA,CAAI,MAAM,CAAA,CAAE,KAAK,KAAK,CAAA;AAAA,IACzC;AACA,IAAA,IAAI,OAAO,cAAc,QAAA,EAAU;AACjC,MAAA,OAAO,SAAA;AAAA,IACT;AACA,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,EAAG,CAAC,MAAA,EAAQ,YAAY,CAAC,CAAA;AAEzB,EAAA,MAAM,aAAA,GAAgB,QAAQ,MAAM;AAClC,IAAA,IAAI,YAAA,KAAiB,MAAA,IAAa,YAAA,KAAiB,IAAA,EAAM;AACvD,MAAA,OAAO,EAAA;AAAA,IACT;AACA,IAAA,IAAI,OAAO,iBAAiB,QAAA,EAAU;AACpC,MAAA,OAAO,YAAA;AAAA,IACT;AACA,IAAA,IAAI;AACF,MAAA,OAAO,IAAA,CAAK,UAAU,YAAY,CAAA;AAAA,IACpC,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,OAAO,YAAY,CAAA;AAAA,IAC5B;AAAA,EACF,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,CAAC,OAAA,KAAuE;AACtE,MAAA,aAAA,GAAgB,OAAO,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AAEA,EAAA,MAAM,YAAA,GAAe,WAAA;AAAA,IACnB,CAAC,KAAA,KAAmC;AAClC,MAAA,WAAA,CAAY,CAAC,OAAA,MAAa;AAAA,QACxB,GAAG,OAAA;AAAA,QACH,MAAA,EAAQ;AAAA,UACN,GAAI,OAAA,CAAQ,MAAA,IAAU,EAAC;AAAA,UACvB,GAAG;AAAA;AACL,OACF,CAAE,CAAA;AAAA,IACJ,CAAA;AAAA,IACA,CAAC,WAAW;AAAA,GACd;AAEA,EAAA,MAAM,mBAAA,GAAsB,CAAC,KAAA,KAAkB;AAC7C,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,EAAK;AAC3B,IAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AACnB,MAAA,YAAA,CAAa,EAAE,OAAA,EAAS,MAAA,EAAW,CAAA;AACnC,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,kBAAA,CAAmB,OAAO,CAAA,EAAG;AAC/B,MAAA,IAAI;AACF,QAAA,YAAA,CAAa,EAAE,OAAA,EAAS,IAAA,CAAK,KAAA,CAAM,OAAO,GAAG,CAAA;AAC7C,QAAA;AAAA,MACF,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF;AAEA,IAAA,YAAA,CAAa,EAAE,OAAA,EAAS,KAAA,EAAO,CAAA;AAAA,EACjC,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAA0B;AAC7C,IAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,IAAA,KAAA,CAAM,cAAA,EAAe;AAAA,EACvB,CAAA;AAEA,EAAA,4BACG,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAA,EAAA,EACC,+BAAC,GAAA,EAAA,EAAI,OAAA,EAAQ,QAAO,aAAA,EAAc,QAAA,EAAS,OAAM,MAAA,EAC/C,QAAA,EAAA;AAAA,sBAAA,IAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,MAAA;AAAA,UACR,UAAA,EAAW,QAAA;AAAA,UACX,cAAA,EAAe,eAAA;AAAA,UACf,OAAO,EAAE,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAE;AAAA,UAE/B,QAAA,EAAA;AAAA,4BAAA,IAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,MAAA;AAAA,gBACR,UAAA,EAAW,QAAA;AAAA,gBACX,OAAO,EAAE,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAE;AAAA,gBAE/B,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,QAAA,EAAS,OAAA;AAAA,sBACT,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ;AAAA;AAAA,mBACnC;AAAA,sCACC,UAAA,EAAA,EAAW,OAAA,EAAQ,WAAA,EACjB,QAAA,EAAA,WAAA,IAAe,aAAa,OAAA,EAC/B;AAAA;AAAA;AAAA,aACF;AAAA,gCACC,UAAA,EAAA,EAAW,OAAA,EAAQ,SAAA,EAAU,KAAA,EAAM,iBACjC,QAAA,EAAA,aAAA,EACH;AAAA;AAAA;AAAA,OACF;AAAA,sBACA,IAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,MAAA;AAAA,UACR,cAAA,EAAe,UAAA;AAAA,UACf,KAAA,EAAO;AAAA,YACL,GAAA,EAAK,CAAA;AAAA,YACL,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,GAAG;AAAA,WAC9B;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,OAAM,qBAAA,EACb,QAAA,kBAAA,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,OAAA;AAAA,gBACL,aAAA,EAAe,WAAA;AAAA,gBACf,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,kBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,kBAAA,UAAA,IAAa;AAAA,gBACf,CAAA;AAAA,gBAEA,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,QAAA,EAAS,OAAA,EAAQ;AAAA;AAAA,aAC5B,EACF,CAAA;AAAA,4BACA,GAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAM,SAAA,EACb,8BAAC,MAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,OAAA;AAAA,gBACL,UAAU,KAAA,KAAU,CAAA;AAAA,gBACpB,aAAA,EAAe,WAAA;AAAA,gBACf,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,kBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,kBAAA,WAAA,GAAc,IAAI,CAAA;AAAA,gBACpB,CAAA;AAAA,gBAEA,QAAA,kBAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,QAAA,EAAS,OAAA,EAAQ;AAAA;AAAA,eAEtC,CAAA,EACF,CAAA;AAAA,4BACA,GAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAM,WAAA,EACb,8BAAC,MAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,OAAA;AAAA,gBACL,QAAA,EAAU,UAAU,UAAA,GAAa,CAAA;AAAA,gBACjC,aAAA,EAAe,WAAA;AAAA,gBACf,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,kBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,kBAAA,WAAA,GAAc,MAAM,CAAA;AAAA,gBACtB,CAAA;AAAA,gBAEA,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,QAAA,EAAS,OAAA,EAAQ;AAAA;AAAA,eAExC,CAAA,EACF;AAAA;AAAA;AAAA,OACF;AAAA,MACC,YAAA,uBACE,UAAA,EAAA,EAAW,OAAA,EAAQ,WAAU,KAAA,EAAM,eAAA,EACjC,wBACH,CAAA,GACE;AAAA,KAAA,EACN,CAAA,EACF,CAAA;AAAA,oBAEA,IAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,CAAA;AAAA,QACJ,OAAA,EAAQ,MAAA;AAAA,QACR,aAAA,EAAc,QAAA;AAAA,QACd,OAAO,EAAE,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAE;AAAA,QAE/B,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,YAAA;AAAA,cACN,KAAA,EAAO,SAAA;AAAA,cACP,IAAA,EAAK,OAAA;AAAA,cACL,OAAA,EAAQ,UAAA;AAAA,cACR,QAAA,EAAU,CAAC,KAAA,KACT,WAAA,CAAY,CAAC,OAAA,MAAa;AAAA,gBACxB,GAAG,OAAA;AAAA,gBACH,SAAA,EAAW,MAAM,MAAA,CAAO;AAAA,eAC1B,CAAE,CAAA;AAAA,cAEJ,SAAA,EAAS;AAAA;AAAA,WACX;AAAA,0BACA,GAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,OAAA;AAAA,cACN,KAAA,EAAO,WAAA;AAAA,cACP,IAAA,EAAK,OAAA;AAAA,cACL,OAAA,EAAQ,UAAA;AAAA,cACR,QAAA,EAAU,CAAC,KAAA,KACT,YAAA,CAAa,EAAE,OAAO,KAAA,CAAM,MAAA,CAAO,KAAA,IAAS,MAAA,EAAW,CAAA;AAAA,cAEzD,SAAA,EAAS;AAAA;AAAA,WACX;AAAA,0BACA,GAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,aAAA;AAAA,cACN,KAAA,EAAO,iBAAA;AAAA,cACP,IAAA,EAAK,OAAA;AAAA,cACL,OAAA,EAAQ,UAAA;AAAA,cACR,QAAA,EAAU,CAAC,KAAA,KACT,YAAA,CAAa;AAAA,gBACX,WAAA,EAAa,KAAA,CAAM,MAAA,CAAO,KAAA,IAAS;AAAA,eACpC,CAAA;AAAA,cAEH,SAAA,EAAS,IAAA;AAAA,cACT,SAAA,EAAS,IAAA;AAAA,cACT,OAAA,EAAS;AAAA;AAAA,WACX;AAAA,0BACA,GAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,SAAA;AAAA,cACN,KAAA,EAAO,aAAA;AAAA,cACP,IAAA,EAAK,OAAA;AAAA,cACL,OAAA,EAAQ,UAAA;AAAA,cACR,UAAU,CAAC,KAAA,KAAU,mBAAA,CAAoB,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,cAC3D,SAAA,EAAS,IAAA;AAAA,cACT,SAAA,EAAS,IAAA;AAAA,cACT,OAAA,EAAS,CAAA;AAAA,cACT,WAAA,EAAY;AAAA;AAAA,WACd;AAAA,0BACA,IAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,MAAA;AAAA,cACR,UAAA,EAAW,QAAA;AAAA,cACX,cAAA,EAAe,eAAA;AAAA,cACf,QAAA,EAAS,MAAA;AAAA,cAET,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,gBAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,kBACE,GAAA;AAAA,sBAAC,MAAA;AAAA,sBAAA;AAAA,wBACC,IAAA,EAAK,OAAA;AAAA,wBACL,KAAA,EAAM,SAAA;AAAA,wBACN,SAAS,QAAA,IAAY,KAAA;AAAA,wBACrB,UAAU,CAAC,CAAA,EAAG,OAAA,KACZ,WAAA,CAAY,CAAC,OAAA,MAAa;AAAA,0BACxB,GAAG,OAAA;AAAA,0BACH,QAAA,EAAU;AAAA,yBACZ,CAAE;AAAA;AAAA,qBAEN;AAAA,oBAEF,uBACE,GAAA,CAAC,UAAA,EAAA,EAAW,SAAQ,OAAA,EAAQ,KAAA,EAAM,iBAAgB,QAAA,EAAA,UAAA,EAElD;AAAA;AAAA,iBAEJ;AAAA,oCACC,UAAA,EAAA,EAAW,OAAA,EAAQ,SAAA,EAAU,KAAA,EAAM,iBAAgB,QAAA,EAAA,8CAAA,EAEpD;AAAA;AAAA;AAAA;AACF;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ParameterInputNode.esm.js","sources":["../../../src/components/Nodes/ParameterInputNode.tsx"],"sourcesContent":["import type { FC, SyntheticEvent } from \"react\";\nimport { useCallback, useMemo } from \"react\";\nimport { alpha, styled, useTheme } from \"@material-ui/core/styles\";\nimport {\n Box,\n Divider,\n FormControl,\n FormControlLabel,\n InputLabel,\n MenuItem,\n Select,\n IconButton,\n Switch,\n TextField,\n Tooltip,\n Typography,\n} from \"@material-ui/core\";\nimport TuneIcon from \"@material-ui/icons/Tune\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport ArrowUpwardIcon from \"@material-ui/icons/ArrowUpward\";\nimport ArrowDownwardIcon from \"@material-ui/icons/ArrowDownward\";\nimport type { ParameterFieldDisplay } from \"../../types/flowNodes\";\nimport type {\n ParameterInputExtrasArgs,\n ParameterNodeExtensions,\n} from \"../../parameters/extensions/types\";\n\nconst resolvePaletteMode = (theme: { palette: { type?: string } }) =>\n (theme.palette as { mode?: \"light\" | \"dark\" }).mode ??\n theme.palette.type ??\n \"light\";\n\nconst Card = styled(Box)(({ theme }) => {\n const paletteMode = resolvePaletteMode(theme);\n return {\n position: \"relative\",\n background: alpha(\n theme.palette.success.main,\n paletteMode === \"dark\" ? 0.2 : 0.12\n ),\n border: `1px solid ${alpha(theme.palette.success.main, 0.45)}`,\n borderRadius: 12,\n width: 580,\n padding: theme.spacing(1.5),\n boxShadow: theme.shadows[2],\n color: theme.palette.text.primary,\n };\n});\n\nconst Header = styled(Box)(({ theme }) => {\n const paletteMode = resolvePaletteMode(theme);\n return {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: theme.spacing(1),\n marginBottom: theme.spacing(1),\n borderRadius: 8,\n backgroundColor: alpha(\n theme.palette.success.main,\n paletteMode === \"dark\" ? 0.25 : 0.16\n ),\n border: `1px solid ${alpha(theme.palette.success.main, 0.45)}`,\n };\n});\n\ntype ParameterInputProps = {\n field: ParameterFieldDisplay;\n index: number;\n totalCount: number;\n extensions?: ParameterNodeExtensions;\n formState?: ParameterInputExtrasArgs[\"formState\"];\n nodeId?: string;\n isSelected?: boolean;\n onFieldUpdate?: (\n updater: (field: ParameterFieldDisplay) => ParameterFieldDisplay\n ) => void;\n onAddField?: () => void;\n onMoveField?: (direction: \"up\" | \"down\") => void;\n};\n\nconst shouldParseDefault = (value: string): boolean => {\n const trimmed = value.trim();\n if (!trimmed.length) {\n return false;\n }\n if (trimmed === \"true\" || trimmed === \"false\" || trimmed === \"null\") {\n return true;\n }\n if (!Number.isNaN(Number(trimmed))) {\n return true;\n }\n return trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\");\n};\n\nexport const ParameterInputNode: FC<ParameterInputProps> = ({\n field,\n index,\n totalCount,\n extensions,\n formState,\n nodeId,\n isSelected,\n onFieldUpdate,\n onAddField,\n onMoveField,\n}) => {\n const theme = useTheme();\n const { fieldName, schema, required, sectionTitle } = field;\n const schemaRecord = useMemo(\n () => (schema ?? {}) as Record<string, unknown>,\n [schema]\n );\n const defaultValue = schemaRecord.default;\n const schemaTitle =\n typeof schemaRecord.title === \"string\"\n ? (schemaRecord.title as string)\n : \"\";\n const schemaDescription =\n typeof schemaRecord.description === \"string\"\n ? (schemaRecord.description as string)\n : \"\";\n\n const schemaSummary = useMemo(() => {\n const typeValue = schemaRecord.type;\n if (Array.isArray(typeValue) && typeValue.length) {\n return String(typeValue[0]);\n }\n if (typeof typeValue === \"string\" && typeValue.length) {\n return typeValue;\n }\n return \"string\";\n }, [schemaRecord]);\n\n const defaultString = useMemo(() => {\n if (defaultValue === undefined || defaultValue === null) {\n return \"\";\n }\n if (typeof defaultValue === \"string\") {\n return defaultValue;\n }\n try {\n return JSON.stringify(defaultValue);\n } catch {\n return String(defaultValue);\n }\n }, [defaultValue]);\n\n const updateField = useCallback(\n (updater: (current: ParameterFieldDisplay) => ParameterFieldDisplay) => {\n onFieldUpdate?.(updater);\n },\n [onFieldUpdate]\n );\n\n const updateSchema = useCallback(\n (patch: Record<string, unknown>) => {\n updateField((current) => ({\n ...current,\n schema: {\n ...(current.schema ?? {}),\n ...patch,\n },\n }));\n },\n [updateField]\n );\n\n const handleDefaultChange = (value: string) => {\n const trimmed = value.trim();\n if (!trimmed.length) {\n updateSchema({ default: undefined });\n return;\n }\n\n if (shouldParseDefault(trimmed)) {\n try {\n updateSchema({ default: JSON.parse(trimmed) });\n return;\n } catch {\n // swallow parse errors and treat as plain text below\n }\n }\n\n updateSchema({ default: value });\n };\n\n const preventDrag = (event: SyntheticEvent) => {\n event.stopPropagation();\n event.preventDefault();\n };\n\n const handleTypeChange = (nextType: string) => {\n updateField((current) => {\n const prevSchema = (current.schema ?? {}) as Record<string, unknown>;\n const next: Record<string, unknown> = { ...prevSchema, type: nextType };\n if (nextType !== \"object\") {\n delete next.properties;\n } else if (!next.properties) {\n next.properties = {};\n }\n if (\n nextType !== \"string\" &&\n nextType !== \"number\" &&\n nextType !== \"boolean\"\n ) {\n delete next.enum;\n delete next.default;\n }\n return {\n ...current,\n schema: next,\n };\n });\n };\n\n const renderInputExtras = extensions?.renderInputExtras;\n\n const extrasArgs = useMemo<ParameterInputExtrasArgs | undefined>(() => {\n if (!renderInputExtras) {\n return undefined;\n }\n return {\n fieldId: field.id,\n fieldPath: [field.sectionId, field.fieldName].filter(\n (part): part is string => Boolean(part)\n ),\n fieldModel: field,\n schema,\n formState,\n onFieldChange: onFieldUpdate ? updateField : undefined,\n nodeId,\n isSelected,\n };\n }, [\n field,\n formState,\n isSelected,\n nodeId,\n renderInputExtras,\n schema,\n onFieldUpdate,\n updateField,\n ]);\n\n const extrasContent = useMemo(\n () =>\n renderInputExtras && extrasArgs\n ? renderInputExtras(extrasArgs)\n : undefined,\n [extrasArgs, renderInputExtras]\n );\n\n const handleExtrasPointerDown = useCallback((event: SyntheticEvent) => {\n // Keep ReactFlow node drag/selection stable when interacting with extensions.\n event.stopPropagation();\n }, []);\n\n return (\n <Card>\n <Header>\n <Box display=\"flex\" flexDirection=\"column\" width=\"100%\">\n <Box\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n style={{ gap: theme.spacing(1) }}\n >\n <Box\n display=\"flex\"\n alignItems=\"center\"\n style={{ gap: theme.spacing(1) }}\n >\n <TuneIcon\n fontSize=\"small\"\n htmlColor={theme.palette.success.dark}\n />\n <Typography variant=\"subtitle2\">\n {schemaTitle || fieldName || \"Field\"}\n </Typography>\n </Box>\n <Typography variant=\"caption\" color=\"textSecondary\">\n {schemaSummary}\n </Typography>\n </Box>\n <Box\n display=\"flex\"\n justifyContent=\"flex-end\"\n style={{\n gap: 4,\n marginTop: theme.spacing(0.5),\n }}\n >\n <Tooltip title=\"Add parameter input\">\n <IconButton\n size=\"small\"\n onPointerDown={preventDrag}\n onClick={(event) => {\n event.stopPropagation();\n onAddField?.();\n }}\n >\n <AddIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Move up\">\n <span>\n <IconButton\n size=\"small\"\n disabled={index === 0}\n onPointerDown={preventDrag}\n onClick={(event) => {\n event.stopPropagation();\n onMoveField?.(\"up\");\n }}\n >\n <ArrowUpwardIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n <Tooltip title=\"Move down\">\n <span>\n <IconButton\n size=\"small\"\n disabled={index === totalCount - 1}\n onPointerDown={preventDrag}\n onClick={(event) => {\n event.stopPropagation();\n onMoveField?.(\"down\");\n }}\n >\n <ArrowDownwardIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n </Box>\n {sectionTitle ? (\n <Typography variant=\"caption\" color=\"textSecondary\">\n {sectionTitle}\n </Typography>\n ) : null}\n </Box>\n </Header>\n\n <Box\n mt={1}\n display=\"flex\"\n flexDirection=\"column\"\n style={{ gap: theme.spacing(1) }}\n >\n <TextField\n label=\"Field name\"\n id={`${field.id}-name`}\n value={fieldName}\n size=\"small\"\n variant=\"outlined\"\n onChange={(event) =>\n updateField((current) => ({\n ...current,\n fieldName: event.target.value,\n }))\n }\n fullWidth\n />\n <FormControl size=\"small\" variant=\"outlined\" fullWidth>\n <InputLabel id={`param-type-${field.id}`}>Type</InputLabel>\n <Select\n labelId={`param-type-${field.id}`}\n id={`${field.id}-type`}\n value={schemaSummary}\n label=\"Type\"\n className=\"nodrag nowheel\"\n onChange={(event) => handleTypeChange(event.target.value as string)}\n >\n <MenuItem value=\"string\">string</MenuItem>\n <MenuItem value=\"number\">number</MenuItem>\n <MenuItem value=\"boolean\">boolean</MenuItem>\n <MenuItem value=\"object\">object</MenuItem>\n </Select>\n </FormControl>\n <TextField\n label=\"Title\"\n id={`${field.id}-title`}\n value={schemaTitle}\n size=\"small\"\n variant=\"outlined\"\n onChange={(event) =>\n updateSchema({ title: event.target.value || undefined })\n }\n fullWidth\n />\n <TextField\n label=\"Description\"\n id={`${field.id}-description`}\n value={schemaDescription}\n size=\"small\"\n variant=\"outlined\"\n onChange={(event) =>\n updateSchema({\n description: event.target.value || undefined,\n })\n }\n fullWidth\n multiline\n minRows={2}\n />\n <TextField\n label=\"Default\"\n id={`${field.id}-default`}\n value={defaultString}\n size=\"small\"\n variant=\"outlined\"\n onChange={(event) => handleDefaultChange(event.target.value)}\n fullWidth\n multiline\n minRows={2}\n placeholder=\"Supports strings, numbers, booleans, objects, and arrays\"\n />\n <Box\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n flexWrap=\"wrap\"\n >\n <FormControlLabel\n control={\n <Switch\n size=\"small\"\n color=\"primary\"\n checked={required ?? false}\n onChange={(_, checked) =>\n updateField((current) => ({\n ...current,\n required: checked,\n }))\n }\n />\n }\n label={\n <Typography variant=\"body2\" color=\"textSecondary\">\n Required\n </Typography>\n }\n />\n <Typography variant=\"caption\" color=\"textSecondary\">\n Double-click text fields to edit in a modal.\n </Typography>\n </Box>\n {extrasContent ? (\n <Box mt={1.5}>\n <Divider />\n <Box mt={1} onPointerDown={handleExtrasPointerDown}>\n {extrasContent}\n </Box>\n </Box>\n ) : null}\n </Box>\n </Card>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useMemo, useState, useEffect } from 'react';
2
3
  import { styled, alpha, useTheme } from '@material-ui/core/styles';
3
4
  import { Box, Typography, Chip, Tooltip, IconButton, TextField, Button, Divider } from '@material-ui/core';
4
5
  import ViewListIcon from '@material-ui/icons/ViewList';
@@ -70,11 +71,28 @@ const ParameterTitlesNode = ({
70
71
  onAddSection,
71
72
  onMoveSection,
72
73
  onAddField,
73
- onMoveField
74
+ onMoveField,
75
+ extensions,
76
+ formState,
77
+ nodeId,
78
+ isSelected
74
79
  }) => {
75
80
  const theme = useTheme();
76
81
  const paletteMode = resolvePaletteMode(theme);
77
- const safeSections = sections ?? [];
82
+ const safeSections = useMemo(() => sections ?? [], [sections]);
83
+ const [extrasOpen, setExtrasOpen] = useState({});
84
+ useEffect(() => {
85
+ setExtrasOpen((prev) => {
86
+ const next = { ...prev };
87
+ safeSections.forEach((section) => {
88
+ const hasDeps = section.dependencies && Object.keys(section.dependencies).length > 0;
89
+ if (hasDeps) {
90
+ next[section.id] = true;
91
+ }
92
+ });
93
+ return next;
94
+ });
95
+ }, [safeSections]);
78
96
  const handleSectionTitleChange = (sectionId, value) => {
79
97
  onSectionUpdate?.(sectionId, (section) => ({
80
98
  ...section,
@@ -94,6 +112,23 @@ const ParameterTitlesNode = ({
94
112
  const handleFieldUpdate = (sectionId, fieldId, updater) => {
95
113
  onFieldUpdate?.(sectionId, fieldId, updater);
96
114
  };
115
+ const renderSectionExtras = extensions?.renderSectionExtras;
116
+ const buildSectionExtras = (section) => {
117
+ if (!renderSectionExtras) {
118
+ return null;
119
+ }
120
+ const args = {
121
+ section,
122
+ sections: safeSections,
123
+ formState,
124
+ nodeId,
125
+ onSectionChange: (updater) => {
126
+ onSectionUpdate?.(section.id, updater);
127
+ },
128
+ onAddField: onAddField ? (sectionId, afterFieldId) => onAddField(sectionId, afterFieldId) : void 0
129
+ };
130
+ return renderSectionExtras(args);
131
+ };
97
132
  const preventDrag = (event) => {
98
133
  event.stopPropagation();
99
134
  event.preventDefault();
@@ -128,6 +163,10 @@ const ParameterTitlesNode = ({
128
163
  safeSections.length === 0 ? /* @__PURE__ */ jsx(EmptyState, { children: /* @__PURE__ */ jsx(Typography, { variant: "body2", children: "No parameter sections were detected. Define template parameters to see them listed here." }) }) : null,
129
164
  safeSections.map((section, index) => {
130
165
  const fieldCount = section.fields?.length ?? 0;
166
+ const dependencyKeys = Object.keys(
167
+ section.dependencies ?? {}
168
+ );
169
+ const hasDependencies = dependencyKeys.length > 0;
131
170
  return /* @__PURE__ */ jsxs(Box, { children: [
132
171
  /* @__PURE__ */ jsxs(SectionRow, { children: [
133
172
  /* @__PURE__ */ jsxs(
@@ -218,21 +257,53 @@ const ParameterTitlesNode = ({
218
257
  color: "primary",
219
258
  label: section.required?.length ? `${section.required.length} required` : "No required fields"
220
259
  }
221
- )
260
+ ),
261
+ hasDependencies ? /* @__PURE__ */ jsx(
262
+ Chip,
263
+ {
264
+ size: "small",
265
+ color: "secondary",
266
+ label: `Dependencies: ${dependencyKeys.length}`
267
+ }
268
+ ) : null
222
269
  ] })
223
270
  ] }),
224
- section.fields?.length ? /* @__PURE__ */ jsx(FieldsGrid, { children: section.fields.map((field, fieldIndex) => /* @__PURE__ */ jsx(
225
- ParameterInputNode,
226
- {
227
- field,
228
- index: fieldIndex,
229
- totalCount: section.fields?.length ?? 0,
230
- onFieldUpdate: (updater) => handleFieldUpdate(section.id, field.id, updater),
231
- onAddField: () => onAddField?.(section.id, field.id),
232
- onMoveField: (direction) => onMoveField?.(section.id, field.id, direction)
233
- },
234
- field.id
235
- )) }) : /* @__PURE__ */ jsx(Box, { mt: 1, children: /* @__PURE__ */ jsx(
271
+ section.fields?.length ? /* @__PURE__ */ jsxs(FieldsGrid, { children: [
272
+ section.fields.map((field, fieldIndex) => /* @__PURE__ */ jsx(
273
+ ParameterInputNode,
274
+ {
275
+ field,
276
+ index: fieldIndex,
277
+ totalCount: section.fields?.length ?? 0,
278
+ extensions,
279
+ formState,
280
+ nodeId,
281
+ isSelected,
282
+ onFieldUpdate: (updater) => handleFieldUpdate(section.id, field.id, updater),
283
+ onAddField: () => onAddField?.(section.id, field.id),
284
+ onMoveField: (direction) => onMoveField?.(section.id, field.id, direction)
285
+ },
286
+ field.id
287
+ )),
288
+ renderSectionExtras ? /* @__PURE__ */ jsxs(Box, { mt: 1.5, children: [
289
+ /* @__PURE__ */ jsx(
290
+ Button,
291
+ {
292
+ size: "small",
293
+ onPointerDown: preventDrag,
294
+ onClick: (event) => {
295
+ event.stopPropagation();
296
+ setExtrasOpen((prev) => ({
297
+ ...prev,
298
+ [section.id]: !(prev[section.id] ?? false)
299
+ }));
300
+ },
301
+ children: extrasOpen[section.id] ?? false ? "Hide advanced" : "Advanced"
302
+ }
303
+ ),
304
+ extrasOpen[section.id] ?? false ? /* @__PURE__ */ jsx(Box, { mt: 1, children: buildSectionExtras(section) }) : null
305
+ ] }) : null
306
+ ] }) : /* @__PURE__ */ jsx(Box, { mt: 1, children: /* @__PURE__ */ jsx(
236
307
  Button,
237
308
  {
238
309
  variant: "outlined",
@@ -1 +1 @@
1
- {"version":3,"file":"ParameterTitlesNode.esm.js","sources":["../../../src/components/Nodes/ParameterTitlesNode.tsx"],"sourcesContent":["import type { FC, SyntheticEvent } from \"react\";\nimport { alpha, styled, useTheme } from \"@material-ui/core/styles\";\nimport {\n Box,\n Button,\n Chip,\n Divider,\n IconButton,\n TextField,\n Tooltip,\n Typography,\n} from \"@material-ui/core\";\nimport ViewListIcon from \"@material-ui/icons/ViewList\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport ArrowUpwardIcon from \"@material-ui/icons/ArrowUpward\";\nimport ArrowDownwardIcon from \"@material-ui/icons/ArrowDownward\";\nimport type {\n ParameterFieldDisplay,\n ParameterSectionDisplay,\n} from \"../../types/flowNodes\";\nimport { ParameterInputNode } from \"./ParameterInputNode\";\n\nconst resolvePaletteMode = (theme: { palette: { type?: string } }) =>\n (theme.palette as { mode?: \"light\" | \"dark\" }).mode ??\n theme.palette.type ??\n \"light\";\n\nconst Card = styled(Box)(({ theme }) => {\n const paletteMode = resolvePaletteMode(theme);\n return {\n position: \"relative\",\n background: alpha(\n theme.palette.info.main,\n paletteMode === \"dark\" ? 0.22 : 0.12\n ),\n border: `1px solid ${alpha(theme.palette.info.main, 0.4)}`,\n borderRadius: 12,\n width: 660,\n padding: theme.spacing(1.5),\n boxShadow: theme.shadows[2],\n color: theme.palette.text.primary,\n };\n});\n\nconst Header = styled(Box)(({ theme }) => {\n const paletteMode = resolvePaletteMode(theme);\n return {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: theme.spacing(1),\n marginBottom: theme.spacing(1),\n borderRadius: 8,\n backgroundColor: alpha(\n theme.palette.info.main,\n paletteMode === \"dark\" ? 0.25 : 0.16\n ),\n border: `1px solid ${alpha(theme.palette.info.main, 0.45)}`,\n };\n});\n\nconst SectionRow = styled(Box)(({ theme }) => ({\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing(0.5),\n padding: theme.spacing(1.25, 1),\n}));\n\nconst SectionMeta = styled(Box)(({ theme }) => ({\n display: \"flex\",\n gap: theme.spacing(1),\n flexWrap: \"wrap\",\n}));\n\nconst FieldsGrid = styled(Box)(({ theme }) => ({\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing(1),\n}));\n\nconst EmptyState = styled(Box)(({ theme }) => ({\n border: `2px dashed ${alpha(theme.palette.info.main, 0.4)}`,\n borderRadius: 12,\n padding: theme.spacing(3),\n textAlign: \"center\",\n color: alpha(theme.palette.text.primary, 0.7),\n}));\n\ntype ParameterTitlesProps = {\n sections: ParameterSectionDisplay[];\n onSectionUpdate?: (\n sectionId: string,\n updater: (section: ParameterSectionDisplay) => ParameterSectionDisplay\n ) => void;\n onFieldUpdate?: (\n sectionId: string,\n fieldId: string,\n updater: (field: ParameterFieldDisplay) => ParameterFieldDisplay\n ) => void;\n onAddSection?: (afterSectionId?: string) => void;\n onMoveSection?: (sectionId: string, direction: \"up\" | \"down\") => void;\n onAddField?: (sectionId: string, afterFieldId?: string) => void;\n onMoveField?: (\n sectionId: string,\n fieldId: string,\n direction: \"up\" | \"down\"\n ) => void;\n};\n\nexport const ParameterTitlesNode: FC<ParameterTitlesProps> = ({\n sections,\n onSectionUpdate,\n onFieldUpdate,\n onAddSection,\n onMoveSection,\n onAddField,\n onMoveField,\n}) => {\n const theme = useTheme();\n const paletteMode = resolvePaletteMode(theme);\n const safeSections = sections ?? [];\n\n const handleSectionTitleChange = (sectionId: string, value: string) => {\n onSectionUpdate?.(sectionId, (section) => ({\n ...section,\n title: value,\n fields:\n section.fields?.map((field) => ({\n ...field,\n sectionTitle: value,\n })) ?? [],\n }));\n };\n\n const handleSectionDescriptionChange = (sectionId: string, value: string) => {\n onSectionUpdate?.(sectionId, (section) => ({\n ...section,\n description: value,\n }));\n };\n\n const handleFieldUpdate = (\n sectionId: string,\n fieldId: string,\n updater: (field: ParameterFieldDisplay) => ParameterFieldDisplay\n ) => {\n onFieldUpdate?.(sectionId, fieldId, updater);\n };\n\n const preventDrag = (event: SyntheticEvent) => {\n event.stopPropagation();\n event.preventDefault();\n };\n\n return (\n <Card>\n <Header>\n <Box\n display=\"flex\"\n alignItems=\"center\"\n style={{ gap: theme.spacing(1) }}\n >\n <ViewListIcon fontSize=\"small\" htmlColor={theme.palette.info.dark} />\n <Typography variant=\"subtitle2\" noWrap>\n Parameter Titles\n </Typography>\n </Box>\n <Chip\n size=\"small\"\n label={`${safeSections.length} section${\n safeSections.length === 1 ? \"\" : \"s\"\n }`}\n variant=\"outlined\"\n style={{\n borderColor: theme.palette.info.dark,\n color:\n paletteMode === \"dark\"\n ? theme.palette.info.light\n : theme.palette.info.dark,\n }}\n />\n </Header>\n\n {safeSections.length === 0 ? (\n <EmptyState>\n <Typography variant=\"body2\">\n No parameter sections were detected. Define template parameters to\n see them listed here.\n </Typography>\n </EmptyState>\n ) : null}\n\n {safeSections.map((section, index) => {\n const fieldCount = section.fields?.length ?? 0;\n return (\n <Box key={section.id ?? index}>\n <SectionRow>\n <Box\n display=\"flex\"\n justifyContent=\"flex-end\"\n style={{ gap: theme.spacing(0.5) }}\n >\n <Tooltip title=\"Add section\">\n <IconButton\n size=\"small\"\n onPointerDown={preventDrag}\n onClick={(event) => {\n event.stopPropagation();\n onAddSection?.(section.id);\n }}\n >\n <AddIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Move section up\">\n <span>\n <IconButton\n size=\"small\"\n disabled={index === 0}\n onPointerDown={preventDrag}\n onClick={(event) => {\n event.stopPropagation();\n onMoveSection?.(section.id, \"up\");\n }}\n >\n <ArrowUpwardIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n <Tooltip title=\"Move section down\">\n <span>\n <IconButton\n size=\"small\"\n disabled={index === safeSections.length - 1}\n onPointerDown={preventDrag}\n onClick={(event) => {\n event.stopPropagation();\n onMoveSection?.(section.id, \"down\");\n }}\n >\n <ArrowDownwardIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n </Box>\n <TextField\n label=\"Section title\"\n size=\"small\"\n variant=\"outlined\"\n value={section.title ?? \"\"}\n onChange={(event) =>\n handleSectionTitleChange(section.id, event.target.value)\n }\n fullWidth\n />\n <TextField\n label=\"Section description\"\n size=\"small\"\n variant=\"outlined\"\n value={section.description ?? \"\"}\n onChange={(event) =>\n handleSectionDescriptionChange(section.id, event.target.value)\n }\n fullWidth\n multiline\n minRows={2}\n />\n <SectionMeta>\n <Chip\n size=\"small\"\n label={`${fieldCount} propert${\n fieldCount === 1 ? \"y\" : \"ies\"\n }`}\n />\n <Chip\n size=\"small\"\n variant=\"outlined\"\n color=\"primary\"\n label={\n section.required?.length\n ? `${section.required.length} required`\n : \"No required fields\"\n }\n />\n </SectionMeta>\n </SectionRow>\n\n {section.fields?.length ? (\n <FieldsGrid>\n {section.fields.map((field, fieldIndex) => (\n <ParameterInputNode\n key={field.id}\n field={field}\n index={fieldIndex}\n totalCount={section.fields?.length ?? 0}\n onFieldUpdate={(updater) =>\n handleFieldUpdate(section.id, field.id, updater)\n }\n onAddField={() => onAddField?.(section.id, field.id)}\n onMoveField={(direction) =>\n onMoveField?.(section.id, field.id, direction)\n }\n />\n ))}\n </FieldsGrid>\n ) : (\n <Box mt={1}>\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => onAddField?.(section.id)}\n >\n Add parameter input\n </Button>\n </Box>\n )}\n\n {index < safeSections.length - 1 ? <Divider /> : null}\n </Box>\n );\n })}\n </Card>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ParameterTitlesNode.esm.js","sources":["../../../src/components/Nodes/ParameterTitlesNode.tsx"],"sourcesContent":["import type { FC, SyntheticEvent } from \"react\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { alpha, styled, useTheme } from \"@material-ui/core/styles\";\nimport {\n Box,\n Button,\n Chip,\n Divider,\n IconButton,\n TextField,\n Tooltip,\n Typography,\n} from \"@material-ui/core\";\nimport ViewListIcon from \"@material-ui/icons/ViewList\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport ArrowUpwardIcon from \"@material-ui/icons/ArrowUpward\";\nimport ArrowDownwardIcon from \"@material-ui/icons/ArrowDownward\";\nimport type {\n ParameterFieldDisplay,\n ParameterSectionDisplay,\n} from \"../../types/flowNodes\";\nimport type {\n ParameterInputExtrasArgs,\n ParameterSectionExtrasArgs,\n ParameterNodeExtensions,\n} from \"../../parameters/extensions/types\";\nimport { ParameterInputNode } from \"./ParameterInputNode\";\n\nconst resolvePaletteMode = (theme: { palette: { type?: string } }) =>\n (theme.palette as { mode?: \"light\" | \"dark\" }).mode ??\n theme.palette.type ??\n \"light\";\n\nconst Card = styled(Box)(({ theme }) => {\n const paletteMode = resolvePaletteMode(theme);\n return {\n position: \"relative\",\n background: alpha(\n theme.palette.info.main,\n paletteMode === \"dark\" ? 0.22 : 0.12\n ),\n border: `1px solid ${alpha(theme.palette.info.main, 0.4)}`,\n borderRadius: 12,\n width: 660,\n padding: theme.spacing(1.5),\n boxShadow: theme.shadows[2],\n color: theme.palette.text.primary,\n };\n});\n\nconst Header = styled(Box)(({ theme }) => {\n const paletteMode = resolvePaletteMode(theme);\n return {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: theme.spacing(1),\n marginBottom: theme.spacing(1),\n borderRadius: 8,\n backgroundColor: alpha(\n theme.palette.info.main,\n paletteMode === \"dark\" ? 0.25 : 0.16\n ),\n border: `1px solid ${alpha(theme.palette.info.main, 0.45)}`,\n };\n});\n\nconst SectionRow = styled(Box)(({ theme }) => ({\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing(0.5),\n padding: theme.spacing(1.25, 1),\n}));\n\nconst SectionMeta = styled(Box)(({ theme }) => ({\n display: \"flex\",\n gap: theme.spacing(1),\n flexWrap: \"wrap\",\n}));\n\nconst FieldsGrid = styled(Box)(({ theme }) => ({\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing(1),\n}));\n\nconst EmptyState = styled(Box)(({ theme }) => ({\n border: `2px dashed ${alpha(theme.palette.info.main, 0.4)}`,\n borderRadius: 12,\n padding: theme.spacing(3),\n textAlign: \"center\",\n color: alpha(theme.palette.text.primary, 0.7),\n}));\n\ntype ParameterTitlesProps = {\n sections: ParameterSectionDisplay[];\n onSectionUpdate?: (\n sectionId: string,\n updater: (section: ParameterSectionDisplay) => ParameterSectionDisplay\n ) => void;\n onFieldUpdate?: (\n sectionId: string,\n fieldId: string,\n updater: (field: ParameterFieldDisplay) => ParameterFieldDisplay\n ) => void;\n onAddSection?: (afterSectionId?: string) => void;\n onMoveSection?: (sectionId: string, direction: \"up\" | \"down\") => void;\n onAddField?: (sectionId: string, afterFieldId?: string) => void;\n onMoveField?: (\n sectionId: string,\n fieldId: string,\n direction: \"up\" | \"down\"\n ) => void;\n extensions?: ParameterNodeExtensions;\n formState?: ParameterInputExtrasArgs[\"formState\"];\n nodeId?: string;\n isSelected?: boolean;\n};\n\nexport const ParameterTitlesNode: FC<ParameterTitlesProps> = ({\n sections,\n onSectionUpdate,\n onFieldUpdate,\n onAddSection,\n onMoveSection,\n onAddField,\n onMoveField,\n extensions,\n formState,\n nodeId,\n isSelected,\n}) => {\n const theme = useTheme();\n const paletteMode = resolvePaletteMode(theme);\n const safeSections = useMemo(() => sections ?? [], [sections]);\n const [extrasOpen, setExtrasOpen] = useState<Record<string, boolean>>({});\n\n // Auto-expand extras when dependencies are present from YAML.\n useEffect(() => {\n setExtrasOpen((prev) => {\n const next = { ...prev };\n safeSections.forEach((section) => {\n const hasDeps =\n section.dependencies &&\n Object.keys(section.dependencies as Record<string, unknown>).length >\n 0;\n if (hasDeps) {\n next[section.id] = true;\n }\n });\n return next;\n });\n }, [safeSections]);\n\n const handleSectionTitleChange = (sectionId: string, value: string) => {\n onSectionUpdate?.(sectionId, (section) => ({\n ...section,\n title: value,\n fields:\n section.fields?.map((field) => ({\n ...field,\n sectionTitle: value,\n })) ?? [],\n }));\n };\n\n const handleSectionDescriptionChange = (sectionId: string, value: string) => {\n onSectionUpdate?.(sectionId, (section) => ({\n ...section,\n description: value,\n }));\n };\n\n const handleFieldUpdate = (\n sectionId: string,\n fieldId: string,\n updater: (field: ParameterFieldDisplay) => ParameterFieldDisplay\n ) => {\n onFieldUpdate?.(sectionId, fieldId, updater);\n };\n\n const renderSectionExtras = extensions?.renderSectionExtras;\n\n const buildSectionExtras = (section: ParameterSectionDisplay) => {\n if (!renderSectionExtras) {\n return null;\n }\n const args: ParameterSectionExtrasArgs = {\n section,\n sections: safeSections,\n formState,\n nodeId,\n onSectionChange: (updater) => {\n onSectionUpdate?.(section.id, updater);\n },\n onAddField: onAddField\n ? (sectionId: string, afterFieldId?: string) =>\n onAddField(sectionId, afterFieldId)\n : undefined,\n };\n return renderSectionExtras(args);\n };\n\n const preventDrag = (event: SyntheticEvent) => {\n event.stopPropagation();\n event.preventDefault();\n };\n\n return (\n <Card>\n <Header>\n <Box\n display=\"flex\"\n alignItems=\"center\"\n style={{ gap: theme.spacing(1) }}\n >\n <ViewListIcon fontSize=\"small\" htmlColor={theme.palette.info.dark} />\n <Typography variant=\"subtitle2\" noWrap>\n Parameter Titles\n </Typography>\n </Box>\n <Chip\n size=\"small\"\n label={`${safeSections.length} section${\n safeSections.length === 1 ? \"\" : \"s\"\n }`}\n variant=\"outlined\"\n style={{\n borderColor: theme.palette.info.dark,\n color:\n paletteMode === \"dark\"\n ? theme.palette.info.light\n : theme.palette.info.dark,\n }}\n />\n </Header>\n\n {safeSections.length === 0 ? (\n <EmptyState>\n <Typography variant=\"body2\">\n No parameter sections were detected. Define template parameters to\n see them listed here.\n </Typography>\n </EmptyState>\n ) : null}\n\n {safeSections.map((section, index) => {\n const fieldCount = section.fields?.length ?? 0;\n const dependencyKeys = Object.keys(\n (section.dependencies as Record<string, unknown>) ?? {}\n );\n const hasDependencies = dependencyKeys.length > 0;\n return (\n <Box key={section.id ?? index}>\n <SectionRow>\n <Box\n display=\"flex\"\n justifyContent=\"flex-end\"\n style={{ gap: theme.spacing(0.5) }}\n >\n <Tooltip title=\"Add section\">\n <IconButton\n size=\"small\"\n onPointerDown={preventDrag}\n onClick={(event) => {\n event.stopPropagation();\n onAddSection?.(section.id);\n }}\n >\n <AddIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Move section up\">\n <span>\n <IconButton\n size=\"small\"\n disabled={index === 0}\n onPointerDown={preventDrag}\n onClick={(event) => {\n event.stopPropagation();\n onMoveSection?.(section.id, \"up\");\n }}\n >\n <ArrowUpwardIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n <Tooltip title=\"Move section down\">\n <span>\n <IconButton\n size=\"small\"\n disabled={index === safeSections.length - 1}\n onPointerDown={preventDrag}\n onClick={(event) => {\n event.stopPropagation();\n onMoveSection?.(section.id, \"down\");\n }}\n >\n <ArrowDownwardIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n </Box>\n <TextField\n label=\"Section title\"\n size=\"small\"\n variant=\"outlined\"\n value={section.title ?? \"\"}\n onChange={(event) =>\n handleSectionTitleChange(section.id, event.target.value)\n }\n fullWidth\n />\n <TextField\n label=\"Section description\"\n size=\"small\"\n variant=\"outlined\"\n value={section.description ?? \"\"}\n onChange={(event) =>\n handleSectionDescriptionChange(section.id, event.target.value)\n }\n fullWidth\n multiline\n minRows={2}\n />\n <SectionMeta>\n <Chip\n size=\"small\"\n label={`${fieldCount} propert${\n fieldCount === 1 ? \"y\" : \"ies\"\n }`}\n />\n <Chip\n size=\"small\"\n variant=\"outlined\"\n color=\"primary\"\n label={\n section.required?.length\n ? `${section.required.length} required`\n : \"No required fields\"\n }\n />\n {hasDependencies ? (\n <Chip\n size=\"small\"\n color=\"secondary\"\n label={`Dependencies: ${dependencyKeys.length}`}\n />\n ) : null}\n </SectionMeta>\n </SectionRow>\n\n {section.fields?.length ? (\n <FieldsGrid>\n {section.fields.map((field, fieldIndex) => (\n <ParameterInputNode\n key={field.id}\n field={field}\n index={fieldIndex}\n totalCount={section.fields?.length ?? 0}\n extensions={extensions}\n formState={formState}\n nodeId={nodeId}\n isSelected={isSelected}\n onFieldUpdate={(updater) =>\n handleFieldUpdate(section.id, field.id, updater)\n }\n onAddField={() => onAddField?.(section.id, field.id)}\n onMoveField={(direction) =>\n onMoveField?.(section.id, field.id, direction)\n }\n />\n ))}\n {renderSectionExtras ? (\n <Box mt={1.5}>\n <Button\n size=\"small\"\n onPointerDown={preventDrag}\n onClick={(event) => {\n event.stopPropagation();\n setExtrasOpen((prev) => ({\n ...prev,\n [section.id]: !(prev[section.id] ?? false),\n }));\n }}\n >\n {extrasOpen[section.id] ?? false\n ? \"Hide advanced\"\n : \"Advanced\"}\n </Button>\n {extrasOpen[section.id] ?? false ? (\n <Box mt={1}>{buildSectionExtras(section)}</Box>\n ) : null}\n </Box>\n ) : null}\n </FieldsGrid>\n ) : (\n <Box mt={1}>\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => onAddField?.(section.id)}\n >\n Add parameter input\n </Button>\n </Box>\n )}\n\n {index < safeSections.length - 1 ? <Divider /> : null}\n </Box>\n );\n })}\n </Card>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { useReactFlow, NodeToolbar, Position, Handle } from '@xyflow/react';
3
- import { memo, useRef, useLayoutEffect } from 'react';
2
+ import { NodeToolbar, Position, Handle } from '@xyflow/react';
3
+ import { memo } from 'react';
4
4
  import { styled, alpha, useTheme } from '@material-ui/core/styles';
5
5
  import { Box, Typography, Chip, Button } from '@material-ui/core';
6
6
  import SettingsIcon from '@material-ui/icons/Settings';
@@ -8,6 +8,7 @@ import AddIcon from '@material-ui/icons/Add';
8
8
  import { createStopNodeInteraction } from './common/nodeInteraction.esm.js';
9
9
  import { useParameterSectionsController } from '../../state/useParameterSections.esm.js';
10
10
  import { ParameterTitlesNode } from './ParameterTitlesNode.esm.js';
11
+ import { useNodeMeasuredHeight } from './common/useNodeMeasuredHeight.esm.js';
11
12
 
12
13
  const resolvePaletteMode = (theme) => theme.palette.mode ?? theme.palette.type ?? "light";
13
14
  const Card = styled(Box)(({ theme }) => {
@@ -66,9 +67,7 @@ const ParametersNodeComponent = ({
66
67
  }
67
68
  const theme = useTheme();
68
69
  const paletteMode = resolvePaletteMode(theme);
69
- const cardRef = useRef(null);
70
- const heightRef = useRef(null);
71
- const { setNodes } = useReactFlow();
70
+ const cardRef = useNodeMeasuredHeight(data.rfId, [data.sections]);
72
71
  const {
73
72
  sections,
74
73
  handleSectionUpdate,
@@ -79,41 +78,6 @@ const ParametersNodeComponent = ({
79
78
  handleMoveField
80
79
  } = useParameterSectionsController(data);
81
80
  const stopAll = createStopNodeInteraction();
82
- useLayoutEffect(() => {
83
- const element = cardRef.current;
84
- if (!element) {
85
- return void 0;
86
- }
87
- let raf = null;
88
- const observer = new ResizeObserver(([entry]) => {
89
- const nextHeight = entry.contentRect.height;
90
- const previousHeight = heightRef.current ?? nextHeight;
91
- if (Math.abs(previousHeight - nextHeight) < 1) {
92
- return;
93
- }
94
- heightRef.current = nextHeight;
95
- if (raf) {
96
- cancelAnimationFrame(raf);
97
- }
98
- raf = requestAnimationFrame(() => {
99
- setNodes(
100
- (nodes) => nodes.map(
101
- (node) => node.id === data.rfId ? {
102
- ...node,
103
- data: { ...node.data, measuredHeight: nextHeight }
104
- } : node
105
- )
106
- );
107
- });
108
- });
109
- observer.observe(element);
110
- return () => {
111
- if (raf) {
112
- cancelAnimationFrame(raf);
113
- }
114
- observer.disconnect();
115
- };
116
- }, [data.rfId, setNodes]);
117
81
  return /* @__PURE__ */ jsx("div", { ref: cardRef, children: /* @__PURE__ */ jsxs(Card, { children: [
118
82
  /* @__PURE__ */ jsxs(Header, { children: [
119
83
  /* @__PURE__ */ jsxs(
@@ -157,7 +121,10 @@ const ParametersNodeComponent = ({
157
121
  onAddSection: handleAddSection,
158
122
  onMoveSection: handleMoveSection,
159
123
  onAddField: handleAddField,
160
- onMoveField: handleMoveField
124
+ onMoveField: handleMoveField,
125
+ extensions: data.extensions,
126
+ formState: data.formState,
127
+ nodeId: data.rfId
161
128
  }
162
129
  ) }),
163
130
  /* @__PURE__ */ jsx(NodeToolbar, { position: Position.Bottom, children: /* @__PURE__ */ jsx(