treege 3.0.0-beta.5 → 3.0.0-beta.51

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 (181) hide show
  1. package/LICENSE +18 -12
  2. package/README.md +313 -52
  3. package/dist/DefaultInputs-tsNo-XJa.js +1761 -0
  4. package/dist/ThemeContext-DRLlkF0n.js +1353 -0
  5. package/dist/editor/components/input/ComboboxWithCreate.d.ts +2 -1
  6. package/dist/editor/components/styles/EditorStyles.d.ts +2 -0
  7. package/dist/editor/constants/defaultNode.d.ts +1 -1
  8. package/dist/editor/constants/edgeTypes.d.ts +3 -2
  9. package/dist/editor/constants/inputTypeIcons.d.ts +3 -0
  10. package/dist/editor/constants/nodeSpacing.d.ts +33 -0
  11. package/dist/editor/constants/nodeTypes.d.ts +4 -5
  12. package/dist/editor/context/OpenApiContext.d.ts +79 -0
  13. package/dist/editor/context/TreegeEditorContext.d.ts +60 -1
  14. package/dist/editor/features/TreegeEditor/TreegeEditor.d.ts +1 -1
  15. package/dist/editor/features/TreegeEditor/controls/MiniMapControl.d.ts +6 -0
  16. package/dist/editor/features/TreegeEditor/dialogs/AuthorizeDialog.d.ts +20 -0
  17. package/dist/editor/features/TreegeEditor/dialogs/ChangeNodeTypeDialog.d.ts +2 -0
  18. package/dist/editor/features/TreegeEditor/dialogs/DeleteNodeDialog.d.ts +2 -0
  19. package/dist/editor/features/TreegeEditor/dialogs/HeadersDialog.d.ts +19 -0
  20. package/dist/editor/features/TreegeEditor/dialogs/OpenApiDialog.d.ts +6 -0
  21. package/dist/editor/features/TreegeEditor/edges/ConditionalEdge.d.ts +2 -2
  22. package/dist/editor/features/TreegeEditor/edges/DefaultEdge.d.ts +3 -0
  23. package/dist/editor/features/TreegeEditor/forms/OptionsSourceForm.d.ts +7 -0
  24. package/dist/editor/features/TreegeEditor/forms/SubmitConfigForm.d.ts +7 -0
  25. package/dist/editor/features/TreegeEditor/inputs/ApiUrlCombobox.d.ts +30 -0
  26. package/dist/editor/features/TreegeEditor/inputs/ComboboxPattern.d.ts +2 -1
  27. package/dist/editor/features/TreegeEditor/inputs/OptionImageField.d.ts +6 -0
  28. package/dist/editor/features/TreegeEditor/inputs/SelectNodeGroup.d.ts +22 -1
  29. package/dist/editor/features/TreegeEditor/layout/AutoLayout.d.ts +15 -0
  30. package/dist/editor/features/TreegeEditor/nodes/TreegeNode.d.ts +5 -0
  31. package/dist/editor/features/TreegeEditor/nodes/components/BottomHandleDropdown.d.ts +9 -0
  32. package/dist/editor/features/TreegeEditor/nodes/components/NodeGroupBadge.d.ts +6 -0
  33. package/dist/editor/features/TreegeEditor/nodes/components/NodeImage.d.ts +5 -0
  34. package/dist/editor/features/TreegeEditor/nodes/components/NodeImageButton.d.ts +6 -0
  35. package/dist/editor/features/TreegeEditor/nodes/components/NodeInputPreview.d.ts +12 -0
  36. package/dist/editor/features/TreegeEditor/nodes/components/NodeLabelInput.d.ts +10 -0
  37. package/dist/editor/features/TreegeEditor/nodes/components/NodeMoreMenu.d.ts +6 -0
  38. package/dist/editor/features/TreegeEditor/nodes/components/NodeRequiredButton.d.ts +6 -0
  39. package/dist/editor/features/TreegeEditor/nodes/components/NodeStackOrderButtons.d.ts +6 -0
  40. package/dist/editor/features/TreegeEditor/nodes/components/NodeTypeBadge.d.ts +7 -0
  41. package/dist/editor/features/TreegeEditor/nodes/layout/NodeWrapper.d.ts +4 -2
  42. package/dist/editor/features/TreegeEditor/panel/AIGeneratorDialog.d.ts +16 -0
  43. package/dist/editor/features/TreegeEditor/panel/ActionsPanel.d.ts +7 -2
  44. package/dist/editor/features/TreegeEditor/panel/MultiSelectionPanel.d.ts +7 -0
  45. package/dist/editor/hooks/useAvailableParentFields.d.ts +13 -0
  46. package/dist/editor/hooks/useFlowActions.d.ts +6 -2
  47. package/dist/editor/hooks/useFlowConnections.d.ts +14 -0
  48. package/dist/editor/hooks/useHistoryStore.d.ts +26 -0
  49. package/dist/editor/hooks/useIsStackedEdge.d.ts +8 -0
  50. package/dist/editor/hooks/useNodesSelection.d.ts +5 -5
  51. package/dist/editor/hooks/useStackPosition.d.ts +14 -0
  52. package/dist/editor/hooks/useUndoRedo.d.ts +31 -0
  53. package/dist/editor/types/ai.d.ts +65 -0
  54. package/dist/editor/types/editor.d.ts +71 -9
  55. package/dist/editor/types/openapi.d.ts +81 -0
  56. package/dist/editor/utils/aiFlowGenerator.d.ts +5 -0
  57. package/dist/editor/utils/dagreLayout.d.ts +8 -0
  58. package/dist/editor/utils/edge.d.ts +14 -0
  59. package/dist/editor/utils/groupColor.d.ts +14 -0
  60. package/dist/editor/utils/image.d.ts +7 -0
  61. package/dist/editor/utils/inputTypeIcon.d.ts +6 -0
  62. package/dist/editor/utils/openapi.d.ts +35 -0
  63. package/dist/editor/utils/stackPositionIndex.d.ts +9 -0
  64. package/dist/editor-HlDmu9kn.js +5831 -0
  65. package/dist/editor.js +3 -8
  66. package/dist/main.js +4 -53
  67. package/dist/renderer/context/TreegeConfigContext.d.ts +3 -27
  68. package/dist/renderer/context/TreegeRendererContext.d.ts +100 -2
  69. package/dist/renderer/features/TreegeRenderer/native/TreegeRenderer.d.ts +19 -11
  70. package/dist/renderer/features/TreegeRenderer/native/components/DefaultFormWrapper.d.ts +7 -7
  71. package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputWrapper.d.ts +9 -0
  72. package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputs.d.ts +21 -15
  73. package/dist/renderer/features/TreegeRenderer/native/components/DefaultStep.d.ts +3 -0
  74. package/dist/renderer/features/TreegeRenderer/native/components/DefaultSubmitButton.d.ts +9 -7
  75. package/dist/renderer/features/TreegeRenderer/native/components/DefaultSubmitButtonWrapper.d.ts +11 -0
  76. package/dist/renderer/features/TreegeRenderer/native/components/DefaultUI.d.ts +8 -7
  77. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAddressInput.d.ts +3 -0
  78. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAutocompleteInput.d.ts +3 -0
  79. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultCheckboxInput.d.ts +3 -0
  80. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateInput.d.ts +3 -0
  81. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateRangeInput.d.ts +3 -0
  82. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultFileInput.d.ts +3 -0
  83. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHiddenInput.d.ts +3 -0
  84. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHttpInput.d.ts +3 -0
  85. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultNumberInput.d.ts +3 -0
  86. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultPasswordInput.d.ts +3 -0
  87. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultRadioInput.d.ts +3 -0
  88. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSelectInput.d.ts +3 -0
  89. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSwitchInput.d.ts +3 -0
  90. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextInput.d.ts +3 -0
  91. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextareaInput.d.ts +3 -0
  92. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeInput.d.ts +3 -0
  93. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeRangeInput.d.ts +3 -0
  94. package/dist/renderer/features/TreegeRenderer/useTreegeRenderer.d.ts +92 -24
  95. package/dist/renderer/features/TreegeRenderer/web/TreegeRenderer.d.ts +1 -1
  96. package/dist/renderer/features/TreegeRenderer/web/components/DefaultFormWrapper.d.ts +1 -1
  97. package/dist/renderer/features/TreegeRenderer/web/components/DefaultInputWrapper.d.ts +9 -0
  98. package/dist/renderer/features/TreegeRenderer/web/components/DefaultStep.d.ts +3 -0
  99. package/dist/renderer/features/TreegeRenderer/web/components/DefaultSubmitButton.d.ts +1 -1
  100. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAddressInput.d.ts +1 -1
  101. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAutocompleteInput.d.ts +1 -1
  102. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultCheckboxInput.d.ts +1 -1
  103. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateInput.d.ts +1 -1
  104. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateRangeInput.d.ts +1 -1
  105. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultFileInput.d.ts +1 -1
  106. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHiddenInput.d.ts +1 -1
  107. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHttpInput.d.ts +1 -1
  108. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultNumberInput.d.ts +1 -1
  109. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultPasswordInput.d.ts +1 -1
  110. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultRadioInput.d.ts +1 -1
  111. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSelectInput.d.ts +1 -1
  112. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSubmitInput.d.ts +3 -0
  113. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSwitchInput.d.ts +1 -1
  114. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextAreaInput.d.ts +1 -1
  115. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextInput.d.ts +1 -1
  116. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeInput.d.ts +1 -1
  117. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeRangeInput.d.ts +1 -1
  118. package/dist/renderer/features/TreegeRenderer/web/components/styles/RendererStyles.d.ts +2 -0
  119. package/dist/renderer/hooks/useInputOptions.d.ts +28 -0
  120. package/dist/renderer/hooks/useRenderNode.d.ts +57 -0
  121. package/dist/renderer/hooks/useSubmitHandler.d.ts +35 -0
  122. package/dist/renderer/hooks/useTranslate.d.ts +6 -4
  123. package/dist/renderer/index.d.ts +3 -1
  124. package/dist/renderer/index.native.d.ts +19 -0
  125. package/dist/renderer/types/renderer.d.ts +131 -33
  126. package/dist/renderer/utils/flow.d.ts +1 -18
  127. package/dist/renderer/utils/form.d.ts +22 -2
  128. package/dist/renderer/utils/http.d.ts +129 -0
  129. package/dist/renderer/utils/node.d.ts +18 -1
  130. package/dist/renderer/utils/sanitize.d.ts +85 -0
  131. package/dist/renderer/utils/sanitize.native.d.ts +69 -0
  132. package/dist/renderer/utils/step.d.ts +27 -0
  133. package/dist/renderer/utils/submit.d.ts +48 -0
  134. package/dist/renderer-native.d.ts +2 -0
  135. package/dist/renderer-native.js +3580 -0
  136. package/dist/renderer.js +3 -46
  137. package/dist/shared/components/ui/badge.d.ts +2 -2
  138. package/dist/shared/components/ui/button.d.ts +3 -3
  139. package/dist/shared/components/ui/collapsible.d.ts +1 -1
  140. package/dist/shared/components/ui/command.d.ts +1 -1
  141. package/dist/shared/components/ui/dropdown-menu.d.ts +1 -1
  142. package/dist/shared/components/ui/field.d.ts +24 -0
  143. package/dist/shared/components/ui/form.d.ts +1 -1
  144. package/dist/shared/components/ui/popover.d.ts +4 -2
  145. package/dist/shared/components/ui/select.d.ts +3 -1
  146. package/dist/shared/components/ui/sheet.d.ts +1 -1
  147. package/dist/shared/components/ui/toggle-group.d.ts +7 -0
  148. package/dist/shared/components/ui/toggle.d.ts +9 -0
  149. package/dist/shared/components/ui/tooltip.d.ts +1 -1
  150. package/dist/shared/constants/colors.d.ts +45 -0
  151. package/dist/shared/constants/inputType.d.ts +1 -0
  152. package/dist/shared/constants/node.d.ts +0 -1
  153. package/dist/shared/context/ThemeContext.d.ts +2 -0
  154. package/dist/shared/context/ThemeContext.native.d.ts +22 -0
  155. package/dist/shared/hooks/useMediaQuery.d.ts +12 -0
  156. package/dist/shared/hooks/useThemeColors.d.ts +37 -0
  157. package/dist/shared/locales/ar.json.d.ts +221 -18
  158. package/dist/shared/locales/de.json.d.ts +222 -19
  159. package/dist/shared/locales/en.json.d.ts +223 -20
  160. package/dist/shared/locales/es.json.d.ts +222 -19
  161. package/dist/shared/locales/fr.json.d.ts +222 -19
  162. package/dist/shared/locales/it.json.d.ts +222 -19
  163. package/dist/shared/locales/pt.json.d.ts +222 -19
  164. package/dist/shared/types/edge.d.ts +6 -0
  165. package/dist/shared/types/node.d.ts +109 -7
  166. package/dist/shared/utils/inputTypeGuards.d.ts +7 -0
  167. package/dist/shared/utils/nodeTypeGuards.d.ts +1 -6
  168. package/package.json +48 -22
  169. package/dist/ThemeContext-D4xMOrdt.js +0 -759
  170. package/dist/TreegeEditor-B8FP1rKR.js +0 -2153
  171. package/dist/TreegeRenderer-BOCobRLr.js +0 -1414
  172. package/dist/editor/features/TreegeEditor/forms/FlowNodeForm.d.ts +0 -2
  173. package/dist/editor/features/TreegeEditor/inputs/SelectInputType.d.ts +0 -7
  174. package/dist/editor/features/TreegeEditor/nodes/FlowNode.d.ts +0 -6
  175. package/dist/editor/features/TreegeEditor/nodes/GroupNode.d.ts +0 -6
  176. package/dist/editor/features/TreegeEditor/nodes/InputNode.d.ts +0 -6
  177. package/dist/editor/features/TreegeEditor/nodes/UINode.d.ts +0 -6
  178. package/dist/editor/hooks/useEdgesSelection.d.ts +0 -11
  179. package/dist/renderer/features/TreegeRenderer/native/components/DefaultGroup.d.ts +0 -7
  180. package/dist/renderer/features/TreegeRenderer/web/components/DefaultGroup.d.ts +0 -6
  181. /package/dist/editor/components/{data-display/logo.d.ts → branding/Logo.d.ts} +0 -0
@@ -5,7 +5,8 @@ export type ComboboxOption = {
5
5
  /**
6
6
  * Reusable Combobox component with search, create, and clear functionality
7
7
  */
8
- declare const ComboboxWithCreate: ({ options, value, onValueChange, placeholder, searchPlaceholder, createLabel, clearLabel, emptyLabel, className, allowClear, allowCreate, }: {
8
+ declare const ComboboxWithCreate: ({ options, id, value, onValueChange, placeholder, searchPlaceholder, createLabel, clearLabel, emptyLabel, className, allowClear, allowCreate, }: {
9
+ id?: string;
9
10
  options: ComboboxOption[];
10
11
  value?: string | null;
11
12
  onValueChange?: (newValue: string) => void;
@@ -0,0 +1,2 @@
1
+ declare const EditorStyles: () => import("react/jsx-runtime").JSX.Element;
2
+ export default EditorStyles;
@@ -1,4 +1,4 @@
1
- export declare const defaultNode: {
1
+ export declare const DEFAULT_NODE: {
2
2
  data: {
3
3
  type: string;
4
4
  };
@@ -1,3 +1,4 @@
1
- export declare const edgeTypes: {
2
- conditional: ({ id, target, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, markerEnd, style, data, }: import('../features/TreegeEditor/edges/ConditionalEdge').ConditionalEdgeProps) => import("react/jsx-runtime").JSX.Element;
1
+ export declare const EDGE_TYPES: {
2
+ conditional: import('react').MemoExoticComponent<({ id, source, target, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, markerEnd, style, data, }: import('../features/TreegeEditor/edges/ConditionalEdge').ConditionalEdgeProps) => import("react/jsx-runtime").JSX.Element | null>;
3
+ default: import('react').MemoExoticComponent<({ id, source, target, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, style, markerEnd, selected, }: import('@xyflow/react').EdgeProps) => import("react/jsx-runtime").JSX.Element>;
3
4
  };
@@ -0,0 +1,3 @@
1
+ import { LucideIcon } from 'lucide-react';
2
+ export declare const INPUT_TYPE_ICONS: Record<string, LucideIcon>;
3
+ export declare const DEFAULT_INPUT_TYPE_ICON: import('react').ForwardRefExoticComponent<Omit<import('lucide-react').LucideProps, "ref"> & import('react').RefAttributes<SVGSVGElement>>;
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Constants for node spacing and positioning in the flow editor
3
+ */
4
+ /**
5
+ * Vertical spacing between nodes (in pixels)
6
+ * Used when creating nodes via handle click or AI generation
7
+ */
8
+ export declare const VERTICAL_NODE_SPACING = 100;
9
+ /**
10
+ * Horizontal offset when placing sibling nodes (in pixels)
11
+ */
12
+ export declare const HORIZONTAL_NODE_OFFSET = 50;
13
+ /**
14
+ * Horizontal spacing for AI-generated flows (in pixels)
15
+ */
16
+ export declare const AI_HORIZONTAL_SPACING = 350;
17
+ /**
18
+ * Position tolerance for detecting nodes at the same Y position (in pixels)
19
+ */
20
+ export declare const POSITION_TOLERANCE = 20;
21
+ /**
22
+ * Default direction for the auto-layout algorithm.
23
+ * "TB" = top to bottom, "LR" = left to right.
24
+ */
25
+ export declare const LAYOUT_DIRECTION = "TB";
26
+ /**
27
+ * Vertical gap between ranks (parent → child) used by the auto-layout (in pixels).
28
+ */
29
+ export declare const LAYOUT_VERTICAL_SPACING = 80;
30
+ /**
31
+ * Horizontal gap between siblings used by the auto-layout (in pixels).
32
+ */
33
+ export declare const LAYOUT_HORIZONTAL_SPACING = 60;
@@ -1,6 +1,5 @@
1
- export declare const nodeTypes: {
2
- flow: ({ data, isConnectable, type, parentId }: import('../features/TreegeEditor/nodes/FlowNode').FlowNodeProps) => import("react/jsx-runtime").JSX.Element;
3
- group: ({ data }: import('../features/TreegeEditor/nodes/GroupNode').GroupNodeProps) => import("react/jsx-runtime").JSX.Element;
4
- input: ({ data, isConnectable, type, parentId }: import('../features/TreegeEditor/nodes/InputNode').InputNodeProps) => import("react/jsx-runtime").JSX.Element;
5
- ui: ({ data, isConnectable, type, parentId }: import('../features/TreegeEditor/nodes/UINode').UINodeProps) => import("react/jsx-runtime").JSX.Element;
1
+ export declare const NODE_TYPES: {
2
+ group: () => null;
3
+ input: import('react').MemoExoticComponent<(props: import('../features/TreegeEditor/nodes/TreegeNode').TreegeNodeProps) => import("react/jsx-runtime").JSX.Element>;
4
+ ui: import('react').MemoExoticComponent<(props: import('../features/TreegeEditor/nodes/TreegeNode').TreegeNodeProps) => import("react/jsx-runtime").JSX.Element>;
6
5
  };
@@ -0,0 +1,79 @@
1
+ import { ReactNode } from 'react';
2
+ import { ApiRoute, OpenApiDocument } from '../types/openapi';
3
+ /**
4
+ * The exact input the user fed to the OpenAPI dialog last time it loaded
5
+ * successfully. Kept around so re-opening the dialog can pre-fill the field
6
+ * (the user may want to tweak/re-load the same source).
7
+ */
8
+ export type OpenApiSourceInput = {
9
+ mode: "url";
10
+ value: string;
11
+ } | {
12
+ mode: "json";
13
+ value: string;
14
+ };
15
+ interface OpenApiContextValue {
16
+ /**
17
+ * The currently loaded OpenAPI document, or `null` when none is set.
18
+ */
19
+ document: OpenApiDocument | null;
20
+ /**
21
+ * Memoized flat list of routes derived from `document`.
22
+ */
23
+ routes: ApiRoute[];
24
+ /**
25
+ * User-provided base URL that overrides the document's `servers[0].url`.
26
+ * Useful when the OpenAPI spec points at a different environment than the
27
+ * one the user wants to call (e.g. staging vs prod). Empty string means
28
+ * "no override — use the document's declared server".
29
+ */
30
+ baseUrlOverride: string;
31
+ /**
32
+ * Effective base URL: the override when non-empty, otherwise the document's
33
+ * first declared server. Trailing slash trimmed.
34
+ */
35
+ baseUrl: string;
36
+ /**
37
+ * Last source input (URL or pasted JSON) used to load the document. `null`
38
+ * before the user has loaded anything.
39
+ */
40
+ lastSourceInput: OpenApiSourceInput | null;
41
+ /**
42
+ * Replace the loaded document. Pass `null` to clear.
43
+ */
44
+ setDocument: (next: OpenApiDocument | null) => void;
45
+ /**
46
+ * Replace the base URL override. Pass `""` to clear.
47
+ */
48
+ setBaseUrlOverride: (next: string) => void;
49
+ /**
50
+ * Record the last source input the user used to load the document.
51
+ */
52
+ setLastSourceInput: (next: OpenApiSourceInput | null) => void;
53
+ }
54
+ interface OpenApiProviderProps {
55
+ children: ReactNode;
56
+ /**
57
+ * Initial OpenAPI source. Accepts either a pre-parsed document or a URL
58
+ * string — when a URL is given, the provider fetches it on mount and
59
+ * toasts on failure (matching the runtime behavior of the dialog).
60
+ */
61
+ initialDocument?: OpenApiDocument | string | null;
62
+ /**
63
+ * Initial base URL. When set, takes precedence over the document's
64
+ * `servers[0].url`. Empty string means "no override".
65
+ */
66
+ initialBaseUrl?: string;
67
+ }
68
+ /**
69
+ * Holds the current OpenAPI document at editor scope. The document is
70
+ * editor-local state (not persisted in the flow JSON), so reloading the
71
+ * editor with a different consumer-supplied initial document is supported.
72
+ */
73
+ export declare const OpenApiProvider: ({ children, initialDocument, initialBaseUrl }: OpenApiProviderProps) => import("react/jsx-runtime").JSX.Element;
74
+ /**
75
+ * Read the OpenAPI context. Returns a no-op default outside of the provider
76
+ * so consumers (e.g., URL combobox) don't have to null-check.
77
+ */
78
+ export declare const useOpenApi: () => OpenApiContextValue;
79
+ export {};
@@ -1,11 +1,70 @@
1
1
  import { PropsWithChildren } from 'react';
2
+ import { AIConfig } from '../types/ai';
3
+ import { HttpHeader } from '../../shared/types/node';
2
4
  export interface TreegeEditorContextValue {
5
+ /**
6
+ * Current language
7
+ */
3
8
  language: string;
9
+ /**
10
+ * Current flow ID
11
+ */
4
12
  flowId?: string;
13
+ /**
14
+ * Global HTTP headers used by editor-time HTTP calls (e.g. the
15
+ * "Detect fields" button). Forwarded by the consumer; same shape and
16
+ * semantics as `TreegeRenderer`'s `headers`.
17
+ */
18
+ headers?: HttpHeader[];
19
+ /**
20
+ * Function to set the current flow ID
21
+ * @param flow
22
+ */
5
23
  setFlowId?: (flow?: string) => void;
24
+ /**
25
+ * AI configuration for tree generation
26
+ */
27
+ aiConfig?: AIConfig;
28
+ /**
29
+ * Whether the node actions sheet is open
30
+ */
31
+ isNodeSheetOpen: boolean;
32
+ /**
33
+ * Function to open or close the node actions sheet
34
+ */
35
+ setIsNodeSheetOpen: (open: boolean) => void;
36
+ /**
37
+ * ID of the node pending deletion confirmation, or null if no deletion is pending
38
+ */
39
+ pendingDeleteNodeId: string | null;
40
+ /**
41
+ * Open the deletion confirmation dialog for a given node
42
+ */
43
+ openDeleteNodeConfirmation: (id: string) => void;
44
+ /**
45
+ * Close the deletion confirmation dialog (cancels any pending deletion)
46
+ */
47
+ closeDeleteNodeConfirmation: () => void;
48
+ /**
49
+ * Pending node type change that requires user confirmation (when the target type only supports a single outgoing edge).
50
+ */
51
+ pendingNodeTypeChange: PendingNodeTypeChange | null;
52
+ /**
53
+ * Open the node type change confirmation dialog.
54
+ */
55
+ openNodeTypeChangeConfirmation: (payload: PendingNodeTypeChange) => void;
56
+ /**
57
+ * Close the node type change confirmation dialog (cancels the pending change).
58
+ */
59
+ closeNodeTypeChangeConfirmation: () => void;
60
+ }
61
+ export interface PendingNodeTypeChange {
62
+ nodeId: string;
63
+ type: string;
64
+ subType?: string;
6
65
  }
7
66
  export interface TreegeEditorProviderProps extends PropsWithChildren {
8
- value: TreegeEditorContextValue;
67
+ value: Omit<TreegeEditorContextValue, "isNodeSheetOpen" | "setIsNodeSheetOpen" | "pendingDeleteNodeId" | "openDeleteNodeConfirmation" | "closeDeleteNodeConfirmation" | "pendingNodeTypeChange" | "openNodeTypeChangeConfirmation" | "closeNodeTypeChangeConfirmation">;
9
68
  }
10
69
  export declare const TreegeEditorContext: import('react').Context<TreegeEditorContextValue | null>;
11
70
  export declare const TreegeEditorProvider: ({ children, value }: TreegeEditorProviderProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,3 +1,3 @@
1
1
  import { TreegeEditorProps } from '../../types/editor';
2
- declare const TreegeEditor: ({ edges, nodes, flow, onExportJson, onSave, theme, language }: TreegeEditorProps) => import("react/jsx-runtime").JSX.Element;
2
+ declare const TreegeEditor: ({ flow, onExportJson, onSave, theme, language, aiConfig, extraMenuItems, openApi, openApiBaseUrl, onAuthorize, headers, onHeadersChange, }: TreegeEditorProps) => import("react/jsx-runtime").JSX.Element;
3
3
  export default TreegeEditor;
@@ -0,0 +1,6 @@
1
+ interface MiniMapControlProps {
2
+ show: boolean;
3
+ onToggle: () => void;
4
+ }
5
+ declare const MiniMapControl: ({ show, onToggle }: MiniMapControlProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default MiniMapControl;
@@ -0,0 +1,20 @@
1
+ import { HttpHeader } from '../../../../shared/types/node';
2
+ interface AuthorizeDialogProps {
3
+ open: boolean;
4
+ onOpenChange: (open: boolean) => void;
5
+ onAuthorize?: (headers: HttpHeader[]) => void;
6
+ }
7
+ /**
8
+ * Reads supported security schemes from the loaded OpenAPI document and
9
+ * collects credentials from the user (Bearer token, API key value, or
10
+ * OAuth2 password grant). On submit, exchanges OAuth2 credentials at the
11
+ * token endpoint, builds the resulting `HttpHeader[]`, and calls
12
+ * `onAuthorize` so the consumer can forward them to the renderer's
13
+ * global `headers`.
14
+ *
15
+ * Inspired by Swagger UI's "Authorize" modal. OAuth2 flows other than
16
+ * `password` (auth_code, client_credentials, implicit) are out of scope —
17
+ * they require browser redirects, server-side state, or PKCE.
18
+ */
19
+ declare const AuthorizeDialog: ({ open, onOpenChange, onAuthorize }: AuthorizeDialogProps) => import("react/jsx-runtime").JSX.Element;
20
+ export default AuthorizeDialog;
@@ -0,0 +1,2 @@
1
+ declare const ChangeNodeTypeDialog: () => import("react/jsx-runtime").JSX.Element;
2
+ export default ChangeNodeTypeDialog;
@@ -0,0 +1,2 @@
1
+ declare const DeleteNodeDialog: () => import("react/jsx-runtime").JSX.Element;
2
+ export default DeleteNodeDialog;
@@ -0,0 +1,19 @@
1
+ import { HttpHeader } from '../../../../shared/types/node';
2
+ interface HeadersDialogProps {
3
+ open: boolean;
4
+ onOpenChange: (open: boolean) => void;
5
+ headers: HttpHeader[];
6
+ onChange: (headers: HttpHeader[]) => void;
7
+ }
8
+ /**
9
+ * Edit the editor's "global headers" — forwarded to every HTTP request the
10
+ * runtime form issues (HTTP inputs, submit buttons, options-source fetches).
11
+ * Field-level headers configured on individual nodes override these on key
12
+ * collision (case-insensitive).
13
+ *
14
+ * The dialog is fully controlled: the parent owns the headers list and
15
+ * receives every mutation via `onChange`, so the same value can be forwarded
16
+ * to `TreegeRenderer` without any state duplication.
17
+ */
18
+ declare const HeadersDialog: ({ open, onOpenChange, headers, onChange }: HeadersDialogProps) => import("react/jsx-runtime").JSX.Element;
19
+ export default HeadersDialog;
@@ -0,0 +1,6 @@
1
+ interface OpenApiDialogProps {
2
+ open: boolean;
3
+ onOpenChange: (open: boolean) => void;
4
+ }
5
+ declare const OpenApiDialog: ({ open, onOpenChange }: OpenApiDialogProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default OpenApiDialog;
@@ -2,5 +2,5 @@ import { Edge, EdgeProps } from '@xyflow/react';
2
2
  import { ConditionalEdgeData } from '../../../../shared/types/edge';
3
3
  export type ConditionalEdgeType = Edge<ConditionalEdgeData, "conditional">;
4
4
  export type ConditionalEdgeProps = EdgeProps<ConditionalEdgeType>;
5
- declare const ConditionalEdge: ({ id, target, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, markerEnd, style, data, }: ConditionalEdgeProps) => import("react/jsx-runtime").JSX.Element;
6
- export default ConditionalEdge;
5
+ declare const _default: import('react').MemoExoticComponent<({ id, source, target, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, markerEnd, style, data, }: ConditionalEdgeProps) => import("react/jsx-runtime").JSX.Element | null>;
6
+ export default _default;
@@ -0,0 +1,3 @@
1
+ import { EdgeProps } from '@xyflow/react';
2
+ declare const _default: import('react').MemoExoticComponent<({ id, source, target, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, style, markerEnd, selected, }: EdgeProps) => import("react/jsx-runtime").JSX.Element>;
3
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import { OptionsSource } from '../../../../shared/types/node';
2
+ interface OptionsSourceFormProps {
3
+ value: OptionsSource | undefined;
4
+ onChange: (value: OptionsSource | undefined) => void;
5
+ }
6
+ declare const OptionsSourceForm: ({ value, onChange }: OptionsSourceFormProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default OptionsSourceForm;
@@ -0,0 +1,7 @@
1
+ import { SubmitConfig } from '../../../../shared/types/node';
2
+ interface SubmitConfigFormProps {
3
+ value: SubmitConfig | undefined;
4
+ onChange: (config: SubmitConfig | undefined) => void;
5
+ }
6
+ declare const SubmitConfigForm: ({ value, onChange }: SubmitConfigFormProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default SubmitConfigForm;
@@ -0,0 +1,30 @@
1
+ import { ComponentProps, ReactNode } from 'react';
2
+ import { ApiRouteMethod } from '../../../types/openapi';
3
+ import { Input } from '../../../../shared/components/ui/input';
4
+ interface ApiUrlComboboxProps extends Omit<ComponentProps<typeof Input>, "onChange" | "value" | "children"> {
5
+ value: string;
6
+ /**
7
+ * Called whenever the URL changes. When `method` is set, the user picked
8
+ * a route from the OpenAPI document — callers should also update their
9
+ * HTTP method state accordingly.
10
+ */
11
+ onChange: (url: string, method?: ApiRouteMethod) => void;
12
+ /**
13
+ * Optional trailing adornments rendered next to the input (e.g. a variable
14
+ * picker). Always rendered, regardless of whether an OpenAPI document is
15
+ * loaded.
16
+ */
17
+ children?: ReactNode;
18
+ }
19
+ /**
20
+ * URL field that augments a regular `<Input>` with a Popover suggesting
21
+ * routes from the editor-loaded OpenAPI document. The user can either type
22
+ * a custom URL freely (current behavior preserved) or click the Globe icon
23
+ * to pick a route — selecting one resolves the URL with the document's
24
+ * server and emits the route's HTTP method back to the caller.
25
+ *
26
+ * When no OpenAPI document is loaded, the Globe trigger is hidden and the
27
+ * component is functionally identical to a plain `<Input>`.
28
+ */
29
+ declare const ApiUrlCombobox: ({ value, onChange, placeholder, children, ...inputProps }: ApiUrlComboboxProps) => import("react/jsx-runtime").JSX.Element;
30
+ export default ApiUrlCombobox;
@@ -1,6 +1,7 @@
1
1
  interface ComboboxPatternProps {
2
2
  value?: string | null;
3
3
  onValueChange?: (newValue: string) => void;
4
+ id?: string;
4
5
  }
5
- declare const ComboboxPattern: ({ value, onValueChange }: ComboboxPatternProps) => import("react/jsx-runtime").JSX.Element;
6
+ declare const ComboboxPattern: ({ id, value, onValueChange }: ComboboxPatternProps) => import("react/jsx-runtime").JSX.Element;
6
7
  export default ComboboxPattern;
@@ -0,0 +1,6 @@
1
+ interface OptionImageFieldProps {
2
+ value?: string;
3
+ onChange: (value: string) => void;
4
+ }
5
+ declare const OptionImageField: ({ value, onChange }: OptionImageFieldProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default OptionImageField;
@@ -1,2 +1,23 @@
1
- declare const SelectNodeGroup: () => import("react/jsx-runtime").JSX.Element | null;
1
+ import { TreegeNode } from '../../../../shared/types/node';
2
+ interface SelectNodeGroupProps {
3
+ /**
4
+ * Nodes to operate on. When omitted, falls back to the currently selected
5
+ * node from `useNodesSelection` (preserves the original Sheet behavior).
6
+ * Pass an array to drive the input from the multi-selection panel; all
7
+ * mutations (assign / create) are applied to every node in the list.
8
+ */
9
+ targetNodes?: TreegeNode[];
10
+ /**
11
+ * When true, hides the label above the Select (used by compact panels
12
+ * where a label would be redundant).
13
+ */
14
+ hideLabel?: boolean;
15
+ /**
16
+ * Fired after a successful group assignment or creation. Lets the parent
17
+ * dismiss its surrounding surface (e.g. the badge popover) on commit.
18
+ * Rename is intentionally excluded — it keeps the surface open.
19
+ */
20
+ onChange?: () => void;
21
+ }
22
+ declare const SelectNodeGroup: ({ targetNodes, hideLabel, onChange }?: SelectNodeGroupProps) => import("react/jsx-runtime").JSX.Element | null;
2
23
  export default SelectNodeGroup;
@@ -0,0 +1,15 @@
1
+ import { LayoutOptions } from '../../../utils/dagreLayout';
2
+ /**
3
+ * Keeps the flow laid out automatically using Dagre.
4
+ *
5
+ * Runs once all nodes have been measured, then re-runs whenever any node's
6
+ * measured size changes. Positions computed by Dagre replace the current
7
+ * `position` of each node — manual repositioning is therefore overridden,
8
+ * which is the expected behavior for a decision-tree editor where topology
9
+ * drives layout.
10
+ *
11
+ * Group children are laid out independently within their parent, preserving
12
+ * React Flow's parent-relative coordinate system.
13
+ */
14
+ declare const AutoLayout: ({ direction, horizontalSpacing, verticalSpacing }?: LayoutOptions) => null;
15
+ export default AutoLayout;
@@ -0,0 +1,5 @@
1
+ import { Node, NodeProps } from '@xyflow/react';
2
+ import { InputNodeData, UINodeData } from '../../../../shared/types/node';
3
+ export type TreegeNodeProps = NodeProps<Node<InputNodeData, "input">> | NodeProps<Node<UINodeData, "ui">>;
4
+ declare const _default: import('react').MemoExoticComponent<(props: TreegeNodeProps) => import("react/jsx-runtime").JSX.Element>;
5
+ export default _default;
@@ -0,0 +1,9 @@
1
+ interface BottomHandleDropdownProps {
2
+ nodeId: string;
3
+ isConnectable?: boolean;
4
+ hidden?: boolean;
5
+ /** Whether branching (forking into two nodes) is allowed — only for input nodes. */
6
+ canBranch?: boolean;
7
+ }
8
+ declare const BottomHandleDropdown: ({ nodeId, isConnectable, hidden, canBranch }: BottomHandleDropdownProps) => import("react/jsx-runtime").JSX.Element;
9
+ export default BottomHandleDropdown;
@@ -0,0 +1,6 @@
1
+ interface NodeGroupBadgeProps {
2
+ nodeId: string;
3
+ groupId?: string;
4
+ }
5
+ declare const NodeGroupBadge: ({ nodeId, groupId }: NodeGroupBadgeProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default NodeGroupBadge;
@@ -0,0 +1,5 @@
1
+ interface NodeImageProps {
2
+ image?: string;
3
+ }
4
+ declare const NodeImage: ({ image }: NodeImageProps) => import("react/jsx-runtime").JSX.Element | null;
5
+ export default NodeImage;
@@ -0,0 +1,6 @@
1
+ interface NodeImageButtonProps {
2
+ nodeId: string;
3
+ image?: string;
4
+ }
5
+ declare const NodeImageButton: ({ nodeId, image }: NodeImageButtonProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default NodeImageButton;
@@ -0,0 +1,12 @@
1
+ import { InputNodeData } from '../../../../../shared/types/node';
2
+ interface NodeInputPreviewProps {
3
+ nodeId: string;
4
+ /**
5
+ * Input node data. Optional so the parent can pass it unconditionally —
6
+ * the component returns `null` when undefined or when the runtime renderer
7
+ * for this input type isn't available.
8
+ */
9
+ data?: InputNodeData;
10
+ }
11
+ declare const NodeInputPreview: ({ nodeId, data }: NodeInputPreviewProps) => import("react/jsx-runtime").JSX.Element | null;
12
+ export default NodeInputPreview;
@@ -0,0 +1,10 @@
1
+ import { Translatable } from '../../../../../shared/types/translate';
2
+ interface NodeLabelInputProps {
3
+ nodeId: string;
4
+ label?: Translatable;
5
+ placeholder?: string;
6
+ className?: string;
7
+ autoFocus?: boolean;
8
+ }
9
+ declare const NodeLabelInput: ({ nodeId, label, placeholder, className, autoFocus }: NodeLabelInputProps) => import("react/jsx-runtime").JSX.Element;
10
+ export default NodeLabelInput;
@@ -0,0 +1,6 @@
1
+ interface NodeMoreMenuProps {
2
+ nodeId: string;
3
+ className?: string;
4
+ }
5
+ declare const NodeMoreMenu: ({ nodeId, className }: NodeMoreMenuProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default NodeMoreMenu;
@@ -0,0 +1,6 @@
1
+ interface NodeRequiredButtonProps {
2
+ nodeId: string;
3
+ required?: boolean;
4
+ }
5
+ declare const NodeRequiredButton: ({ nodeId, required }: NodeRequiredButtonProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default NodeRequiredButton;
@@ -0,0 +1,6 @@
1
+ interface NodeStackOrderButtonsProps {
2
+ nodeId: string;
3
+ selected?: boolean;
4
+ }
5
+ declare const NodeStackOrderButtons: ({ nodeId, selected }: NodeStackOrderButtonsProps) => import("react/jsx-runtime").JSX.Element | null;
6
+ export default NodeStackOrderButtons;
@@ -0,0 +1,7 @@
1
+ interface NodeTypeBadgeProps {
2
+ nodeId: string;
3
+ nodeType: string;
4
+ subType?: string;
5
+ }
6
+ declare const NodeTypeBadge: ({ nodeId, nodeType, subType }: NodeTypeBadgeProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default NodeTypeBadge;
@@ -1,6 +1,8 @@
1
1
  import { PropsWithChildren } from 'react';
2
+ import { StackPosition } from '../../../../utils/stackPositionIndex';
2
3
  interface NodeWrapperProps extends PropsWithChildren {
3
- inGroup: boolean;
4
+ isSubmit?: boolean;
5
+ stackPosition?: StackPosition;
4
6
  }
5
- declare const NodeWrapper: ({ children, inGroup }: NodeWrapperProps) => import("react/jsx-runtime").JSX.Element;
7
+ declare const NodeWrapper: ({ children, isSubmit, stackPosition }: NodeWrapperProps) => import("react/jsx-runtime").JSX.Element;
6
8
  export default NodeWrapper;
@@ -0,0 +1,16 @@
1
+ import { Edge, Node } from '@xyflow/react';
2
+ import { AIConfig } from '../../../types/ai';
3
+ export interface AIGeneratorDialogProps {
4
+ /**
5
+ * AI configuration from context
6
+ */
7
+ aiConfig?: AIConfig;
8
+ /**
9
+ * Callback when tree is generated
10
+ */
11
+ onGenerate: (data: {
12
+ edges: Edge[];
13
+ nodes: Node[];
14
+ }) => void;
15
+ }
16
+ export declare const AIGeneratorDialog: ({ aiConfig, onGenerate }: AIGeneratorDialogProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,12 @@
1
- import { Flow } from '../../../../shared/types/node';
1
+ import { ExtraMenuItem } from '../../../types/editor';
2
+ import { Flow, HttpHeader } from '../../../../shared/types/node';
2
3
  export interface ActionsPanelProps {
3
4
  onExportJson?: (data: Flow) => void;
4
5
  onSave?: (data: Flow) => void;
6
+ extraMenuItems?: ExtraMenuItem[];
7
+ onAuthorize?: (headers: HttpHeader[]) => void;
8
+ headers?: HttpHeader[];
9
+ onHeadersChange?: (headers: HttpHeader[]) => void;
5
10
  }
6
- declare const ActionsPanel: ({ onExportJson, onSave }: ActionsPanelProps) => import("react/jsx-runtime").JSX.Element;
11
+ declare const ActionsPanel: ({ onExportJson, onSave, extraMenuItems, onAuthorize, headers, onHeadersChange }: ActionsPanelProps) => import("react/jsx-runtime").JSX.Element;
7
12
  export default ActionsPanel;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Floating bar that appears at the top-center of the canvas when two or more
3
+ * nodes are selected. Exposes batch actions: assign a group (reuses
4
+ * `SelectNodeGroup`), delete the selection, or clear it.
5
+ */
6
+ declare const MultiSelectionPanel: () => import("react/jsx-runtime").JSX.Element | null;
7
+ export default MultiSelectionPanel;
@@ -1,7 +1,20 @@
1
+ /**
2
+ * Returns every Input ancestor reachable from the given node, traversing
3
+ * incoming edges depth-first. Cycle-safe (visited set). The result is the
4
+ * pool of fields that a downstream node — typically a conditional edge —
5
+ * may reference: each entry exposes the ancestor's `nodeId`, resolved
6
+ * display `label`, raw `name`, input `type`, and static `options` (when
7
+ * defined), so consumers can render a Select/Input bound to the right
8
+ * source value.
9
+ *
10
+ * Non-Input ancestors (UI nodes, flow nodes, groups) are excluded because
11
+ * they cannot supply a runtime value to evaluate a condition against.
12
+ */
1
13
  declare const useAvailableParentFields: (currentNodeId?: string) => {
2
14
  label: string;
3
15
  name: string | undefined;
4
16
  nodeId: string;
17
+ options: import('../../shared/types/node').InputOption[] | undefined;
5
18
  type: import('../../shared/types/node').InputType;
6
19
  }[];
7
20
  export default useAvailableParentFields;
@@ -4,9 +4,13 @@
4
4
  */
5
5
  declare const useFlowActions: () => {
6
6
  clearSelection: () => void;
7
+ deleteNode: (id: string) => void;
8
+ deleteNodes: (ids: string[]) => void;
9
+ deleteSelectedNode: () => void;
10
+ selectNode: (id: string) => void;
7
11
  updateNodeData: <T extends Record<string, unknown>>(id: string, data: Partial<T>) => void;
8
- updateNodeType: (id: string, type: string) => void;
12
+ updateNodeType: (id: string, type: string, subType?: string) => void;
9
13
  updateSelectedNodeData: <T extends Record<string, unknown>>(data: Partial<T>) => void;
10
- updateSelectedNodeType: (type: string) => void;
14
+ updateSelectedNodeType: (type: string, subType?: string) => void;
11
15
  };
12
16
  export default useFlowActions;