treege 3.0.0-beta.55 → 3.0.0-beta.57

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 (78) hide show
  1. package/README.md +33 -10
  2. package/dist/DefaultInputs-CoJrOYMe.js +1859 -0
  3. package/dist/ThemeContext-BhIeqgqN.js +1398 -0
  4. package/dist/editor/constants/edgeTypes.d.ts +1 -1
  5. package/dist/editor/context/TreegeEditorContext.d.ts +8 -1
  6. package/dist/editor/features/TreegeEditor/TreegeEditor.d.ts +1 -1
  7. package/dist/editor/features/TreegeEditor/edges/DefaultEdge.d.ts +1 -1
  8. package/dist/editor/features/TreegeEditor/forms/OptionsMappingFields.d.ts +34 -0
  9. package/dist/editor/features/TreegeEditor/forms/SensitiveHeaderWarning.d.ts +13 -0
  10. package/dist/editor/features/TreegeEditor/nodes/components/BottomHandleDropdown.d.ts +18 -2
  11. package/dist/editor/features/TreegeEditor/nodes/components/NodeTypePickerMenuContent.d.ts +12 -0
  12. package/dist/editor/types/editor.d.ts +19 -1
  13. package/dist/editor/utils/cleanNodeConfig.d.ts +5 -0
  14. package/dist/editor/utils/edge.d.ts +37 -1
  15. package/dist/editor/utils/sensitiveHeaders.d.ts +15 -0
  16. package/dist/editor-D3cbfAxI.js +6232 -0
  17. package/dist/editor.js +2 -2
  18. package/dist/main.js +4 -4
  19. package/dist/renderer/features/TreegeRenderer/InputRendererHost.d.ts +15 -0
  20. package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputs.d.ts +2 -2
  21. package/dist/renderer/features/TreegeRenderer/native/components/DependencyHint.d.ts +15 -0
  22. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAddressInput.d.ts +2 -2
  23. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAutocompleteInput.d.ts +2 -2
  24. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultCheckboxInput.d.ts +2 -2
  25. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateInput.d.ts +2 -2
  26. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateRangeInput.d.ts +2 -2
  27. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultFileInput.d.ts +2 -2
  28. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHiddenInput.d.ts +2 -2
  29. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHttpInput.d.ts +2 -2
  30. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultNumberInput.d.ts +2 -2
  31. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultPasswordInput.d.ts +2 -2
  32. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultRadioInput.d.ts +2 -2
  33. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSelectInput.d.ts +2 -2
  34. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSwitchInput.d.ts +2 -2
  35. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextInput.d.ts +2 -2
  36. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextareaInput.d.ts +2 -2
  37. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeInput.d.ts +2 -2
  38. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeRangeInput.d.ts +2 -2
  39. package/dist/renderer/features/TreegeRenderer/useTreegeRenderer.d.ts +18 -18
  40. package/dist/renderer/features/TreegeRenderer/web/components/DependencyHint.d.ts +22 -0
  41. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAddressInput.d.ts +2 -2
  42. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAutocompleteInput.d.ts +2 -2
  43. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultCheckboxInput.d.ts +2 -2
  44. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateInput.d.ts +2 -2
  45. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateRangeInput.d.ts +2 -2
  46. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultFileInput.d.ts +2 -2
  47. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHiddenInput.d.ts +2 -2
  48. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHttpInput.d.ts +2 -2
  49. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultNumberInput.d.ts +2 -2
  50. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultPasswordInput.d.ts +2 -2
  51. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultRadioInput.d.ts +2 -2
  52. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSelectInput.d.ts +2 -2
  53. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSubmitInput.d.ts +2 -2
  54. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSwitchInput.d.ts +2 -2
  55. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextAreaInput.d.ts +2 -2
  56. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextInput.d.ts +2 -2
  57. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeInput.d.ts +2 -2
  58. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeRangeInput.d.ts +2 -2
  59. package/dist/renderer/hooks/useRenderNode.d.ts +2 -1
  60. package/dist/renderer/types/renderer.d.ts +62 -23
  61. package/dist/renderer/utils/http.d.ts +13 -1
  62. package/dist/renderer/utils/node.d.ts +11 -0
  63. package/dist/renderer/utils/templateDependencies.d.ts +17 -0
  64. package/dist/renderer-native.js +1251 -1216
  65. package/dist/renderer.js +3 -3
  66. package/dist/shared/constants/inputType.d.ts +5 -0
  67. package/dist/shared/locales/ar.json.d.ts +20 -1
  68. package/dist/shared/locales/de.json.d.ts +20 -1
  69. package/dist/shared/locales/en.json.d.ts +20 -1
  70. package/dist/shared/locales/es.json.d.ts +20 -1
  71. package/dist/shared/locales/fr.json.d.ts +20 -1
  72. package/dist/shared/locales/it.json.d.ts +20 -1
  73. package/dist/shared/locales/pt.json.d.ts +20 -1
  74. package/dist/shared/types/node.d.ts +20 -0
  75. package/package.json +1 -1
  76. package/dist/DefaultInputs-BbfholiM.js +0 -1799
  77. package/dist/ThemeContext-C9418UR6.js +0 -1354
  78. package/dist/editor-DgUCBTZ0.js +0 -5831
package/dist/editor.js CHANGED
@@ -1,3 +1,3 @@
1
- import { t as e } from "./editor-DgUCBTZ0.js";
2
- import { n as t, t as n } from "./ThemeContext-C9418UR6.js";
1
+ import { t as e } from "./editor-D3cbfAxI.js";
2
+ import { n as t, t as n } from "./ThemeContext-BhIeqgqN.js";
3
3
  export { n as ThemeProvider, e as TreegeEditor, t as useTheme };
package/dist/main.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as e } from "./editor-DgUCBTZ0.js";
2
- import { A as t, B as n, I as r, L as i, R as a, S as o, a as s, b as c, c as l, d as u, f as d, g as f, h as p, i as m, k as h, l as g, m as _, n as v, o as y, p as b, s as x, t as S, u as C, x as w, z as T } from "./ThemeContext-C9418UR6.js";
3
- import { C as E, E as D, S as O, T as k, _ as A, a as j, b as M, d as N, f as P, i as F, l as I, m as L, n as R, p as z, r as B, s as V, t as H, u as U, v as W, w as G, x as K, y as q } from "./DefaultInputs-BbfholiM.js";
4
- export { D as DefaultAddressInput, k as DefaultAutocompleteInput, G as DefaultCheckboxInput, E as DefaultDateInput, O as DefaultDateRangeInput, K as DefaultFileInput, M as DefaultHiddenInput, q as DefaultHttpInput, W as DefaultNumberInput, A as DefaultPasswordInput, L as DefaultRadioInput, z as DefaultSelectInput, V as DefaultSwitchInput, j as DefaultTextAreaInput, F as DefaultTextInput, B as DefaultTimeInput, R as DefaultTimeRangeInput, U as Divider, S as ThemeProvider, N as Title, C as TreegeConfigProvider, e as TreegeEditor, I as TreegeRenderer, d as applyReferenceTransformation, b as calculateReferenceFieldUpdates, _ as checkFormFieldHasValue, p as convertFormValuesToNamedFormat, H as defaultInputRenderers, P as defaultUI, l as evaluateCondition, g as evaluateConditions, c as fileToSerializable, w as filesToSerializable, s as findStartNode, y as getFlowRenderState, r as getStaticTranslations, i as getTranslatedText, f as isFieldEmpty, a as isGroupNode, T as isInputNode, x as isStartNode, n as isUINode, h as sanitize, t as sanitizeHttpResponse, o as serializableToFile, v as useTheme, u as useTreegeConfig, m as useTreegeRenderer };
1
+ import { t as e } from "./editor-D3cbfAxI.js";
2
+ import { A as t, B as n, L as r, R as i, V as a, a as o, b as s, c, d as l, f as u, g as d, h as f, i as p, k as m, l as h, m as g, n as _, o as v, p as y, s as b, t as x, u as S, x as C, y as w, z as T } from "./ThemeContext-BhIeqgqN.js";
3
+ import { C as E, E as D, S as O, T as k, _ as A, a as j, b as M, d as N, f as P, i as F, l as I, m as L, n as R, p as z, r as B, s as V, t as H, u as U, v as W, w as G, x as K, y as q } from "./DefaultInputs-CoJrOYMe.js";
4
+ export { D as DefaultAddressInput, k as DefaultAutocompleteInput, G as DefaultCheckboxInput, E as DefaultDateInput, O as DefaultDateRangeInput, K as DefaultFileInput, M as DefaultHiddenInput, q as DefaultHttpInput, W as DefaultNumberInput, A as DefaultPasswordInput, L as DefaultRadioInput, z as DefaultSelectInput, V as DefaultSwitchInput, j as DefaultTextAreaInput, F as DefaultTextInput, B as DefaultTimeInput, R as DefaultTimeRangeInput, U as Divider, x as ThemeProvider, N as Title, S as TreegeConfigProvider, e as TreegeEditor, I as TreegeRenderer, u as applyReferenceTransformation, y as calculateReferenceFieldUpdates, g as checkFormFieldHasValue, f as convertFormValuesToNamedFormat, H as defaultInputRenderers, P as defaultUI, c as evaluateCondition, h as evaluateConditions, w as fileToSerializable, s as filesToSerializable, o as findStartNode, v as getFlowRenderState, r as getStaticTranslations, i as getTranslatedText, d as isFieldEmpty, T as isGroupNode, n as isInputNode, b as isStartNode, a as isUINode, m as sanitize, t as sanitizeHttpResponse, C as serializableToFile, _ as useTheme, l as useTreegeConfig, p as useTreegeRenderer };
@@ -0,0 +1,15 @@
1
+ import { InputExtraProps, InputFieldProps, InputRenderer } from '../../types/renderer';
2
+ import { InputType } from '../../../shared/types/node';
3
+ interface InputRendererHostProps<T extends InputType> {
4
+ render: InputRenderer<T>;
5
+ field: InputFieldProps<T>;
6
+ extra: InputExtraProps<T>;
7
+ }
8
+ /**
9
+ * Renders an input renderer (`(field, extra) => ReactNode`) inside a real
10
+ * component boundary so the renderer can safely call hooks. Callers must give
11
+ * this a stable `key` per node (and input type) so each input keeps a
12
+ * consistent hook order across re-renders.
13
+ */
14
+ declare function InputRendererHost<T extends InputType>({ render, field, extra }: InputRendererHostProps<T>): import("react/jsx-runtime").JSX.Element;
15
+ export default InputRendererHost;
@@ -15,7 +15,7 @@ import { default as DefaultTextareaInput } from './inputs/DefaultTextareaInput';
15
15
  import { default as DefaultTextInput } from './inputs/DefaultTextInput';
16
16
  import { default as DefaultTimeInput } from './inputs/DefaultTimeInput';
17
17
  import { default as DefaultTimeRangeInput } from './inputs/DefaultTimeRangeInput';
18
- import { InputRenderers, InputRenderProps } from '../../../../types/renderer';
18
+ import { InputExtraProps, InputFieldProps, InputRenderers } from '../../../../types/renderer';
19
19
  export { DefaultAddressInput, DefaultAutocompleteInput, DefaultCheckboxInput, DefaultDateInput, DefaultDateRangeInput, DefaultFileInput, DefaultHiddenInput, DefaultHttpInput, DefaultNumberInput, DefaultPasswordInput, DefaultRadioInput, DefaultSelectInput, DefaultSwitchInput, DefaultTextareaInput, DefaultTextInput, DefaultTimeInput, DefaultTimeRangeInput, };
20
- export declare const DefaultSubmitInput: ({ node }: InputRenderProps<"submit">) => import("react/jsx-runtime").JSX.Element;
20
+ export declare const DefaultSubmitInput: (_field: InputFieldProps<"submit">, extra: InputExtraProps<"submit">) => import("react/jsx-runtime").JSX.Element;
21
21
  export declare const defaultInputRenderers: InputRenderers;
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+ import { MissingDependency } from '../../../../types/renderer';
3
+ interface DependencyHintProps {
4
+ /** Unfilled fields the input depends on (from `extra.missingDependencies`). */
5
+ missing: MissingDependency[];
6
+ children: ReactNode;
7
+ }
8
+ /**
9
+ * Renders an input control followed by an inline caption listing the fields the
10
+ * user must fill before the input's dynamic options can load. Mobile has no
11
+ * hover, so the hint is always-visible text rather than a tooltip. Renders only
12
+ * the children when there are no missing dependencies.
13
+ */
14
+ declare const DependencyHint: ({ missing, children }: DependencyHintProps) => import("react/jsx-runtime").JSX.Element;
15
+ export default DependencyHint;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultAddressInput: ({ node, value, setValue, error, label, placeholder, helperText, id: _id, name: _name, }: InputRenderProps<"address">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultAddressInput: (field: InputFieldProps<"address">, extra: InputExtraProps<"address">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultAddressInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultAutocompleteInput: ({ node, value, setValue, error, label, placeholder, helperText }: InputRenderProps<"autocomplete">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultAutocompleteInput: (field: InputFieldProps<"autocomplete">, extra: InputExtraProps<"autocomplete">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultAutocompleteInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultCheckboxInput: ({ node, value, setValue, error, label, helperText }: InputRenderProps<"checkbox">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultCheckboxInput: (field: InputFieldProps<"checkbox">, extra: InputExtraProps<"checkbox">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultCheckboxInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultDateInput: ({ node, value, setValue, error, label, placeholder, helperText }: InputRenderProps<"date">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultDateInput: (field: InputFieldProps<"date">, extra: InputExtraProps<"date">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultDateInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultDateRangeInput: ({ node, value, setValue, error, label, helperText }: InputRenderProps<"daterange">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultDateRangeInput: (field: InputFieldProps<"daterange">, extra: InputExtraProps<"daterange">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultDateRangeInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultFileInput: ({ node, value, setValue, error, label, helperText }: InputRenderProps<"file">) => import("react/jsx-runtime").JSX.Element | null;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultFileInput: (field: InputFieldProps<"file">, extra: InputExtraProps<"file">) => import("react/jsx-runtime").JSX.Element | null;
3
3
  export default DefaultFileInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultHiddenInput: (_props: InputRenderProps<"hidden">) => null;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultHiddenInput: (_field: InputFieldProps<"hidden">, _extra: InputExtraProps<"hidden">) => null;
3
3
  export default DefaultHiddenInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultHttpInput: ({ node, value, setValue, error, label, placeholder, helperText, id: _id, name: _name, }: InputRenderProps<"http">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultHttpInput: (field: InputFieldProps<"http">, extra: InputExtraProps<"http">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultHttpInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultNumberInput: ({ node, value, setValue, error, label, placeholder, helperText, name }: InputRenderProps<"number">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultNumberInput: (field: InputFieldProps<"number">, extra: InputExtraProps<"number">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultNumberInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultPasswordInput: ({ node, value, setValue, error, label, placeholder, helperText, name }: InputRenderProps<"password">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultPasswordInput: (field: InputFieldProps<"password">, extra: InputExtraProps<"password">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultPasswordInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultRadioInput: ({ node, value, setValue, error, label, helperText }: InputRenderProps<"radio">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultRadioInput: (field: InputFieldProps<"radio">, extra: InputExtraProps<"radio">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultRadioInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultSelectInput: ({ node, value, setValue, error, label, placeholder, helperText }: InputRenderProps<"select">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultSelectInput: (field: InputFieldProps<"select">, extra: InputExtraProps<"select">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultSelectInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultSwitchInput: ({ node, value, setValue, error, label, helperText }: InputRenderProps<"switch">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultSwitchInput: (field: InputFieldProps<"switch">, extra: InputExtraProps<"switch">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultSwitchInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultTextInput: ({ node, value, setValue, error, label, placeholder, helperText, name }: InputRenderProps<"text">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultTextInput: (field: InputFieldProps<"text">, extra: InputExtraProps<"text">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTextInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultTextareaInput: ({ node, value, setValue, error, label, placeholder, helperText, name }: InputRenderProps<"textarea">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultTextareaInput: (field: InputFieldProps<"textarea">, extra: InputExtraProps<"textarea">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTextareaInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultTimeInput: ({ node, value, setValue, error, label, placeholder, helperText }: InputRenderProps<"time">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultTimeInput: (field: InputFieldProps<"time">, extra: InputExtraProps<"time">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTimeInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultTimeRangeInput: ({ node, value, setValue, error, label, helperText }: InputRenderProps<"timerange">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultTimeRangeInput: (field: InputFieldProps<"timerange">, extra: InputExtraProps<"timerange">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTimeRangeInput;
@@ -30,24 +30,24 @@ export declare const useTreegeRenderer: ({ components, flows, googleApiKey, head
30
30
  onSubmit: (e: import('react').FormEvent<HTMLFormElement>) => void;
31
31
  }) => import('react').ReactNode) | undefined;
32
32
  inputs: {
33
- number?: ((props: import('../../types/renderer').InputRenderProps<"number">) => import('react').ReactNode) | undefined;
34
- checkbox?: ((props: import('../../types/renderer').InputRenderProps<"checkbox">) => import('react').ReactNode) | undefined;
35
- radio?: ((props: import('../../types/renderer').InputRenderProps<"radio">) => import('react').ReactNode) | undefined;
36
- switch?: ((props: import('../../types/renderer').InputRenderProps<"switch">) => import('react').ReactNode) | undefined;
37
- address?: ((props: import('../../types/renderer').InputRenderProps<"address">) => import('react').ReactNode) | undefined;
38
- autocomplete?: ((props: import('../../types/renderer').InputRenderProps<"autocomplete">) => import('react').ReactNode) | undefined;
39
- date?: ((props: import('../../types/renderer').InputRenderProps<"date">) => import('react').ReactNode) | undefined;
40
- daterange?: ((props: import('../../types/renderer').InputRenderProps<"daterange">) => import('react').ReactNode) | undefined;
41
- file?: ((props: import('../../types/renderer').InputRenderProps<"file">) => import('react').ReactNode) | undefined;
42
- hidden?: ((props: import('../../types/renderer').InputRenderProps<"hidden">) => import('react').ReactNode) | undefined;
43
- http?: ((props: import('../../types/renderer').InputRenderProps<"http">) => import('react').ReactNode) | undefined;
44
- password?: ((props: import('../../types/renderer').InputRenderProps<"password">) => import('react').ReactNode) | undefined;
45
- select?: ((props: import('../../types/renderer').InputRenderProps<"select">) => import('react').ReactNode) | undefined;
46
- submit?: ((props: import('../../types/renderer').InputRenderProps<"submit">) => import('react').ReactNode) | undefined;
47
- text?: ((props: import('../../types/renderer').InputRenderProps<"text">) => import('react').ReactNode) | undefined;
48
- textarea?: ((props: import('../../types/renderer').InputRenderProps<"textarea">) => import('react').ReactNode) | undefined;
49
- time?: ((props: import('../../types/renderer').InputRenderProps<"time">) => import('react').ReactNode) | undefined;
50
- timerange?: ((props: import('../../types/renderer').InputRenderProps<"timerange">) => import('react').ReactNode) | undefined;
33
+ number?: import('../../types/renderer').InputRenderer<"number"> | undefined;
34
+ checkbox?: import('../../types/renderer').InputRenderer<"checkbox"> | undefined;
35
+ radio?: import('../../types/renderer').InputRenderer<"radio"> | undefined;
36
+ switch?: import('../../types/renderer').InputRenderer<"switch"> | undefined;
37
+ address?: import('../../types/renderer').InputRenderer<"address"> | undefined;
38
+ autocomplete?: import('../../types/renderer').InputRenderer<"autocomplete"> | undefined;
39
+ date?: import('../../types/renderer').InputRenderer<"date"> | undefined;
40
+ daterange?: import('../../types/renderer').InputRenderer<"daterange"> | undefined;
41
+ file?: import('../../types/renderer').InputRenderer<"file"> | undefined;
42
+ hidden?: import('../../types/renderer').InputRenderer<"hidden"> | undefined;
43
+ http?: import('../../types/renderer').InputRenderer<"http"> | undefined;
44
+ password?: import('../../types/renderer').InputRenderer<"password"> | undefined;
45
+ select?: import('../../types/renderer').InputRenderer<"select"> | undefined;
46
+ submit?: import('../../types/renderer').InputRenderer<"submit"> | undefined;
47
+ text?: import('../../types/renderer').InputRenderer<"text"> | undefined;
48
+ textarea?: import('../../types/renderer').InputRenderer<"textarea"> | undefined;
49
+ time?: import('../../types/renderer').InputRenderer<"time"> | undefined;
50
+ timerange?: import('../../types/renderer').InputRenderer<"timerange"> | undefined;
51
51
  };
52
52
  loadingSkeleton: (() => import('react').ReactNode) | undefined;
53
53
  step: ((props: import('../../types/renderer').StepRenderProps) => import('react').ReactNode) | undefined;
@@ -0,0 +1,22 @@
1
+ import { ReactNode } from 'react';
2
+ import { MissingDependency } from '../../../../types/renderer';
3
+ interface MissingProps {
4
+ /** Unfilled fields the input depends on (from `extra.missingDependencies`). */
5
+ missing: MissingDependency[];
6
+ }
7
+ /**
8
+ * Wraps a disabled input control with a tooltip listing the fields the user
9
+ * must fill before the input's dynamic options can load. Renders children
10
+ * untouched when there are no missing dependencies, so it's safe to wrap any
11
+ * trigger-based dynamic input (select, autocomplete, http) unconditionally.
12
+ */
13
+ declare const DependencyHint: ({ missing, children }: MissingProps & {
14
+ children: ReactNode;
15
+ }) => import("react/jsx-runtime").JSX.Element;
16
+ /**
17
+ * Inline variant for inputs that have no single trigger to hover (radio,
18
+ * checkbox): renders the same hint as always-visible muted text. Renders
19
+ * nothing when there are no missing dependencies.
20
+ */
21
+ export declare const DependencyHintMessage: ({ missing }: MissingProps) => import("react/jsx-runtime").JSX.Element | null;
22
+ export default DependencyHint;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultAddressInput: ({ node, value, setValue, error, label, placeholder, helperText, id, name }: InputRenderProps<"address">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultAddressInput: (field: InputFieldProps<"address">, extra: InputExtraProps<"address">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultAddressInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultAutocompleteInput: ({ node, value, setValue, error, label, placeholder, helperText, id, }: InputRenderProps<"autocomplete">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultAutocompleteInput: (field: InputFieldProps<"autocomplete">, extra: InputExtraProps<"autocomplete">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultAutocompleteInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultCheckboxInput: ({ node, value, setValue, error, label, helperText, id, name, renderOptionExtras, compactOptions, }: InputRenderProps<"checkbox">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultCheckboxInput: (field: InputFieldProps<"checkbox">, extra: InputExtraProps<"checkbox">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultCheckboxInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultDateInput: ({ node, value, setValue, error, label, placeholder, helperText, id, name }: InputRenderProps<"date">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultDateInput: (field: InputFieldProps<"date">, extra: InputExtraProps<"date">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultDateInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultDateRangeInput: ({ node, value, setValue, error, label, helperText, id }: InputRenderProps<"daterange">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultDateRangeInput: (field: InputFieldProps<"daterange">, extra: InputExtraProps<"daterange">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultDateRangeInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultFileInput: ({ node, setValue, error, label, placeholder, helperText, name, id }: InputRenderProps<"file">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultFileInput: (field: InputFieldProps<"file">, extra: InputExtraProps<"file">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultFileInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultHiddenInput: ({ value, name, id }: InputRenderProps<"hidden">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultHiddenInput: (field: InputFieldProps<"hidden">, _extra: InputExtraProps<"hidden">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultHiddenInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultHttpInput: ({ node, value, setValue, error, label, placeholder, helperText, id, name }: InputRenderProps<"http">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultHttpInput: (field: InputFieldProps<"http">, extra: InputExtraProps<"http">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultHttpInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultNumberInput: ({ node, value, setValue, error, label, placeholder, helperText, name, id }: InputRenderProps<"number">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultNumberInput: (field: InputFieldProps<"number">, extra: InputExtraProps<"number">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultNumberInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultPasswordInput: ({ node, value, setValue, error, label, placeholder, helperText, name, id }: InputRenderProps<"password">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultPasswordInput: (field: InputFieldProps<"password">, extra: InputExtraProps<"password">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultPasswordInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultRadioInput: ({ node, value, setValue, error, label, helperText, id, name, renderOptionExtras, compactOptions, }: InputRenderProps<"radio">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultRadioInput: (field: InputFieldProps<"radio">, extra: InputExtraProps<"radio">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultRadioInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultSelectInput: ({ node, value, setValue, error, label, placeholder, helperText, name, id }: InputRenderProps<"select">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultSelectInput: (field: InputFieldProps<"select">, extra: InputExtraProps<"select">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultSelectInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultSubmitInput: ({ missingRequiredFields, isSubmitting, label }: InputRenderProps<"submit">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultSubmitInput: (_field: InputFieldProps<"submit">, extra: InputExtraProps<"submit">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultSubmitInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultSwitchInput: ({ node, value, setValue, error, label, helperText, name, id }: InputRenderProps<"switch">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultSwitchInput: (field: InputFieldProps<"switch">, extra: InputExtraProps<"switch">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultSwitchInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultTextAreaInput: ({ node, value, setValue, error, label, placeholder, helperText, name, id }: InputRenderProps<"textarea">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultTextAreaInput: (field: InputFieldProps<"textarea">, extra: InputExtraProps<"textarea">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTextAreaInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultTextInput: ({ node, value, setValue, error, label, placeholder, helperText, name, id }: InputRenderProps<"text">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultTextInput: (field: InputFieldProps<"text">, extra: InputExtraProps<"text">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTextInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultTimeInput: ({ node, value, setValue, error, label, placeholder, helperText, name, id }: InputRenderProps<"time">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultTimeInput: (field: InputFieldProps<"time">, extra: InputExtraProps<"time">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTimeInput;
@@ -1,3 +1,3 @@
1
- import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultTimeRangeInput: ({ node, value, setValue, error, label, helperText, id, name }: InputRenderProps<"timerange">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
+ declare const DefaultTimeRangeInput: (field: InputFieldProps<"timerange">, extra: InputExtraProps<"timerange">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTimeRangeInput;
@@ -19,6 +19,7 @@ type UseRenderNodeParams = {
19
19
  defaultUI: Record<string, AnyComponent>;
20
20
  formErrors: Record<string, string>;
21
21
  formValues: FormValues;
22
+ inputNodes: Node<InputNodeData>[];
22
23
  missingRequiredFields: string[];
23
24
  setFieldValue: (fieldId: string, value: unknown) => void;
24
25
  };
@@ -32,7 +33,7 @@ type UseRenderNodeParams = {
32
33
  * - SubmitButton: Submit button component with fallback
33
34
  * - SubmitButtonWrapper: Submit button wrapper component with fallback (web only, undefined for native)
34
35
  */
35
- export declare const useRenderNode: ({ DefaultFormWrapper, DefaultInputWrapper, DefaultSubmitButton, DefaultSubmitButtonWrapper, config, defaultInputRenderers, defaultUI, formErrors, formValues, missingRequiredFields, setFieldValue, }: UseRenderNodeParams) => {
36
+ export declare const useRenderNode: ({ DefaultFormWrapper, DefaultInputWrapper, DefaultSubmitButton, DefaultSubmitButtonWrapper, config, defaultInputRenderers, defaultUI, formErrors, formValues, inputNodes, missingRequiredFields, setFieldValue, }: UseRenderNodeParams) => {
36
37
  FormWrapper: ((props: {
37
38
  children: ReactNode;
38
39
  onSubmit: (e: import('react').FormEvent<HTMLFormElement>) => void;
@@ -38,54 +38,87 @@ export type Meta = {
38
38
  */
39
39
  export type InputValue = string | number | boolean | string[] | SerializableFile | SerializableFile[] | [string, string] | [string | undefined, string | undefined] | null | undefined;
40
40
  /**
41
- * Props for input components with dynamic value typing
42
- * All form state is provided via props for easier custom component implementation
41
+ * A field the input's dynamic options depend on that is not yet filled.
43
42
  */
44
- export type InputRenderProps<T extends InputType = InputType> = {
43
+ export type MissingDependency = {
45
44
  /**
46
- * The node data for this input field
45
+ * The referenced node id.
47
46
  */
48
- node: Node<InputNodeData>;
47
+ id: string;
49
48
  /**
50
- * Current value of the input field (typed based on input type when T is specified)
49
+ * The referenced field's translated, end-user-facing label.
51
50
  */
52
- value: InputValueTypeMap[T];
51
+ label: string;
52
+ };
53
+ /**
54
+ * HTML-spreadable props for an input control — safe to spread directly onto a
55
+ * DOM element: `<input {...field} />`. Intentionally excludes `label`,
56
+ * `helperText`, and `error` (not valid DOM attributes); those live in
57
+ * `InputExtraProps`.
58
+ */
59
+ export type InputFieldProps<T extends InputType = InputType> = {
53
60
  /**
54
- * Unique field ID (nodeId)
61
+ * Unique field id (nodeId). Use for the element `id`.
55
62
  */
56
63
  id: string;
57
64
  /**
58
- * Field name (resolved using priority: name > label > nodeId)
59
- * Use this for the name and id attributes of the input element
65
+ * Field name (resolved using priority: name > label > nodeId).
60
66
  */
61
67
  name: string;
62
68
  /**
63
- * Function to update the input value
64
- * @param value - The new value (typed based on input type when T is specified)
69
+ * Current value of the input (typed by input type when T is specified).
65
70
  */
66
- setValue: (value: InputValueTypeMap[T]) => void;
71
+ value: InputValueTypeMap[T];
67
72
  /**
68
- * Validation error message for this field (if any)
73
+ * Translated placeholder (already processed with current language).
69
74
  */
70
- error?: string;
75
+ placeholder?: string;
71
76
  /**
72
- * Translated label (already processed with current language)
77
+ * Whether the field is required.
73
78
  */
74
- label?: string;
79
+ required?: boolean;
75
80
  /**
76
- * Translated placeholder (already processed with current language)
81
+ * Set when the field has a validation error.
77
82
  */
78
- placeholder?: string;
83
+ "aria-invalid"?: boolean;
84
+ };
85
+ /**
86
+ * Treege-specific props that are NOT DOM attributes: state setters, resolved
87
+ * translations, validation and runtime metadata. Passed as the second argument
88
+ * of an input renderer so the first one (`InputFieldProps`) stays spreadable.
89
+ */
90
+ export type InputExtraProps<T extends InputType = InputType> = {
79
91
  /**
80
- * Translated helper text (already processed with current language)
92
+ * The node data for this input field.
93
+ */
94
+ node: Node<InputNodeData>;
95
+ /**
96
+ * Function to update the input value.
97
+ * @param value - The new value (typed by input type when T is specified)
98
+ */
99
+ setValue: (value: InputValueTypeMap[T]) => void;
100
+ /**
101
+ * Validation error message for this field (if any).
102
+ */
103
+ error?: string;
104
+ /** Translated label (already processed with current language). */
105
+ label?: string;
106
+ /**
107
+ * Translated helper text (already processed with current language).
81
108
  */
82
109
  helperText?: string;
83
110
  /**
84
- * Missing required fields on form submit (for submit inputs)
111
+ * Fields this input's dynamic options depend on that are not yet filled
112
+ * (its unresolved `{{nodeId}}` template variables). Empty when none — use it
113
+ * to hint the user which fields to complete before this input can load.
114
+ */
115
+ missingDependencies: MissingDependency[];
116
+ /**
117
+ * Missing required fields on form submit (for submit inputs).
85
118
  */
86
119
  missingRequiredFields?: string[];
87
120
  /**
88
- * Whether the form is currently being submitted (for submit inputs)
121
+ * Whether the form is currently being submitted (for submit inputs).
89
122
  */
90
123
  isSubmitting?: boolean;
91
124
  /**
@@ -109,6 +142,12 @@ export type InputRenderProps<T extends InputType = InputType> = {
109
142
  */
110
143
  compactOptions?: boolean;
111
144
  };
145
+ /**
146
+ * An input renderer. Receives the spreadable `field` props (DOM-safe) and the
147
+ * Treege `extra` props (state setters, translations, metadata) as two separate
148
+ * arguments, so `field` can be spread onto a control: `<input {...field} />`.
149
+ */
150
+ export type InputRenderer<T extends InputType = InputType> = (field: InputFieldProps<T>, extra: InputExtraProps<T>) => ReactNode;
112
151
  export type UiRenderProps = {
113
152
  node: Node<UINodeData>;
114
153
  };
@@ -123,7 +162,7 @@ export type NodeRenderProps = {
123
162
  * Each input type gets its own properly typed InputRenderProps
124
163
  */
125
164
  export type InputRenderers = {
126
- [K in InputType]?: (props: InputRenderProps<K>) => ReactNode;
165
+ [K in InputType]?: InputRenderer<K>;
127
166
  };
128
167
  /**
129
168
  * Props passed to a step renderer. Steps are derived at runtime from the flow's