@notmrabhi/flowforge 0.1.106 → 0.1.108

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/dist/canvas.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./WorkflowExecutionHistory-CsBnVxC5.js"),l=require("./messages-Bg7b9RbI.js"),r=require("./bpmn-CcuE2X_Q.js"),e=require("./GatewayBranchEdge-hUano0YJ.js");exports.FlowForgeCanvas=o.FlowForgeCanvas;exports.FlowForgeHeader=o.FlowForgeHeader;exports.SubWorkflowPreviewDrawer=o.SubWorkflowPreviewDrawer;exports.WorkflowCanvas=o.FlowForgeCanvas;exports.WorkflowExecutionHistory=o.WorkflowExecutionHistory;exports.WorkflowTemplateLibrary=o.WorkflowTemplateLibrary;exports.defaultFlowForgeMessages=l.defaultFlowForgeMessages;exports.loadWorkflowFromBpmn=r.loadWorkflowFromBpmn;exports.saveWorkflowToBpmn=r.saveWorkflowToBpmn;exports.ActionNode=e.ActionNode;exports.ApprovalNode=e.ApprovalNode;exports.EdgeWithPlusLabel=e.EdgeWithPlusLabel;exports.EndNode=e.EndNode;exports.FilterNode=e.FilterNode;exports.NodeBody=e.NodeBody;exports.RestApiNode=e.RestApiNode;exports.StartNode=e.StartNode;exports.TriggerNode=e.TriggerNode;exports.WebhookTriggerNode=e.WebhookTriggerNode;exports.builtInNodeTypes=e.builtInNodeTypes;exports.deriveRows=e.deriveRows;exports.resolveNodeRows=e.resolveNodeRows;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./WorkflowExecutionHistory-BrkL37Wb.js"),l=require("./messages-Bg7b9RbI.js"),r=require("./bpmn-CcuE2X_Q.js"),e=require("./GatewayBranchEdge-CdoZtIhn.js");exports.FlowForgeCanvas=o.FlowForgeCanvas;exports.FlowForgeHeader=o.FlowForgeHeader;exports.SubWorkflowPreviewDrawer=o.SubWorkflowPreviewDrawer;exports.WorkflowCanvas=o.FlowForgeCanvas;exports.WorkflowExecutionHistory=o.WorkflowExecutionHistory;exports.WorkflowTemplateLibrary=o.WorkflowTemplateLibrary;exports.defaultFlowForgeMessages=l.defaultFlowForgeMessages;exports.loadWorkflowFromBpmn=r.loadWorkflowFromBpmn;exports.saveWorkflowToBpmn=r.saveWorkflowToBpmn;exports.ActionNode=e.ActionNode;exports.ApprovalNode=e.ApprovalNode;exports.EdgeWithPlusLabel=e.EdgeWithPlusLabel;exports.EndNode=e.EndNode;exports.FilterNode=e.FilterNode;exports.NodeBody=e.NodeBody;exports.RestApiNode=e.RestApiNode;exports.StartNode=e.StartNode;exports.TriggerNode=e.TriggerNode;exports.WebhookTriggerNode=e.WebhookTriggerNode;exports.builtInNodeTypes=e.builtInNodeTypes;exports.deriveRows=e.deriveRows;exports.resolveNodeRows=e.resolveNodeRows;
2
2
  //# sourceMappingURL=canvas.cjs.map
package/dist/canvas.d.ts CHANGED
@@ -110,6 +110,8 @@ export declare interface CanvasSlot {
110
110
  label?: string;
111
111
  /** Maps branch key → display label. e.g. { pass: 'Pass', fail: 'Fail' } */
112
112
  branchLabels?: Record<string, string>;
113
+ /** Branch layout style — see NodeDescriptor.branchStyle. */
114
+ branchStyle?: 'symmetric' | 'inline-gate';
113
115
  }
114
116
 
115
117
  declare interface CanvasSlot_2 {
@@ -123,6 +125,8 @@ declare interface CanvasSlot_2 {
123
125
  label?: string;
124
126
  /** Maps branch key → display label. e.g. { pass: 'Pass', fail: 'Fail' } */
125
127
  branchLabels?: Record<string, string>;
128
+ /** Branch layout style — see NodeDescriptor.branchStyle. */
129
+ branchStyle?: 'symmetric' | 'inline-gate';
126
130
  }
127
131
 
128
132
  declare interface CanvasSlot_3 {
@@ -136,6 +140,8 @@ declare interface CanvasSlot_3 {
136
140
  label?: string;
137
141
  /** Maps branch key → display label. e.g. { pass: 'Pass', fail: 'Fail' } */
138
142
  branchLabels?: Record<string, string>;
143
+ /** Branch layout style — see NodeDescriptor.branchStyle. */
144
+ branchStyle?: 'symmetric' | 'inline-gate';
139
145
  }
140
146
 
141
147
  /** One column in a per-field condition row */
@@ -1076,6 +1082,14 @@ export declare interface NodeDescriptor {
1076
1082
  canInsert?: (ctx: InsertContext_2) => boolean;
1077
1083
  /** Maps branch key → display label. e.g. { pass: 'Pass', fail: 'Fail' }. Only applies to branching nodes (filterNode, approvalNode). */
1078
1084
  branchLabels?: Record<string, string>;
1085
+ /**
1086
+ * Branch layout style for a branching node.
1087
+ * - 'symmetric' (default): all branches indent side-by-side under the node.
1088
+ * - 'inline-gate': the FIRST branch (e.g. Pass) continues straight down the
1089
+ * main spine; the remaining branches (e.g. Fail) render as short side
1090
+ * edges to their End. Matches a pre-trigger "filter" gate design.
1091
+ */
1092
+ branchStyle?: 'symmetric' | 'inline-gate';
1079
1093
  formSchema: FieldDescriptor_3[] | ((nodeId: string) => Promise<FieldDescriptor_3[]>);
1080
1094
  /**
1081
1095
  * Custom configuration panel. When set, NodeConfigDrawer renders the returned
@@ -1177,6 +1191,14 @@ declare interface NodeDescriptor_2 {
1177
1191
  canInsert?: (ctx: InsertContext) => boolean;
1178
1192
  /** Maps branch key → display label. e.g. { pass: 'Pass', fail: 'Fail' }. Only applies to branching nodes (filterNode, approvalNode). */
1179
1193
  branchLabels?: Record<string, string>;
1194
+ /**
1195
+ * Branch layout style for a branching node.
1196
+ * - 'symmetric' (default): all branches indent side-by-side under the node.
1197
+ * - 'inline-gate': the FIRST branch (e.g. Pass) continues straight down the
1198
+ * main spine; the remaining branches (e.g. Fail) render as short side
1199
+ * edges to their End. Matches a pre-trigger "filter" gate design.
1200
+ */
1201
+ branchStyle?: 'symmetric' | 'inline-gate';
1180
1202
  formSchema: FieldDescriptor[] | ((nodeId: string) => Promise<FieldDescriptor[]>);
1181
1203
  /**
1182
1204
  * Custom configuration panel. When set, NodeConfigDrawer renders the returned
package/dist/canvas.js CHANGED
@@ -1,7 +1,7 @@
1
- import { F as a, a as s, S as r, F as d, W as l, b as t } from "./WorkflowExecutionHistory-DYp-l7mk.js";
1
+ import { F as a, a as s, S as r, F as d, W as l, b as t } from "./WorkflowExecutionHistory-BBeVPYVc.js";
2
2
  import { d as f } from "./messages-CRZgWFU-.js";
3
3
  import { l as p, s as F } from "./bpmn-CtfWDaOY.js";
4
- import { A as g, b as W, E as m, c as n, F as b, f as k, R as v, S as T, T as u, W as x, e as y, g as A, r as E } from "./GatewayBranchEdge-BsPsPmnx.js";
4
+ import { A as g, b as W, E as m, c as n, F as b, f as k, R as v, S as T, T as u, W as x, e as y, g as A, r as E } from "./GatewayBranchEdge-C023FhhW.js";
5
5
  export {
6
6
  g as ActionNode,
7
7
  W as ApprovalNode,
package/dist/core.d.ts CHANGED
@@ -149,6 +149,8 @@ export declare interface CanvasSlot {
149
149
  label?: string;
150
150
  /** Maps branch key → display label. e.g. { pass: 'Pass', fail: 'Fail' } */
151
151
  branchLabels?: Record<string, string>;
152
+ /** Branch layout style — see NodeDescriptor.branchStyle. */
153
+ branchStyle?: 'symmetric' | 'inline-gate';
152
154
  }
153
155
 
154
156
  /**
@@ -619,6 +621,14 @@ export declare interface NodeDescriptor {
619
621
  canInsert?: (ctx: InsertContext) => boolean;
620
622
  /** Maps branch key → display label. e.g. { pass: 'Pass', fail: 'Fail' }. Only applies to branching nodes (filterNode, approvalNode). */
621
623
  branchLabels?: Record<string, string>;
624
+ /**
625
+ * Branch layout style for a branching node.
626
+ * - 'symmetric' (default): all branches indent side-by-side under the node.
627
+ * - 'inline-gate': the FIRST branch (e.g. Pass) continues straight down the
628
+ * main spine; the remaining branches (e.g. Fail) render as short side
629
+ * edges to their End. Matches a pre-trigger "filter" gate design.
630
+ */
631
+ branchStyle?: 'symmetric' | 'inline-gate';
622
632
  formSchema: FieldDescriptor[] | ((nodeId: string) => Promise<FieldDescriptor[]>);
623
633
  /**
624
634
  * Custom configuration panel. When set, NodeConfigDrawer renders the returned
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./GatewayBranchEdge-hUano0YJ.js");exports.ActionNode=e.ActionNode;exports.AddTriggerNode=e.AddTriggerNode;exports.ApprovalNode=e.ApprovalNode;exports.DelayNode=e.DelayNode;exports.EdgeWithPlusLabel=e.EdgeWithPlusLabel;exports.EndNode=e.EndNode;exports.FilterNode=e.FilterNode;exports.GatewayBranchEdge=e.GatewayBranchEdge;exports.LabelPlusEdge=e.LabelPlusEdge;exports.NotificationNode=e.NotificationNode;exports.PlainEdge=e.PlainEdge;exports.PlusEdge=e.PlusEdge;exports.StartNode=e.StartNode;exports.TriggerNode=e.TriggerNode;exports.builtInNodeTypes=e.builtInNodeTypes;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./GatewayBranchEdge-CdoZtIhn.js");exports.ActionNode=e.ActionNode;exports.AddTriggerNode=e.AddTriggerNode;exports.ApprovalNode=e.ApprovalNode;exports.DelayNode=e.DelayNode;exports.EdgeWithPlusLabel=e.EdgeWithPlusLabel;exports.EndNode=e.EndNode;exports.FilterNode=e.FilterNode;exports.GatewayBranchEdge=e.GatewayBranchEdge;exports.LabelPlusEdge=e.LabelPlusEdge;exports.NotificationNode=e.NotificationNode;exports.PlainEdge=e.PlainEdge;exports.PlusEdge=e.PlusEdge;exports.StartNode=e.StartNode;exports.TriggerNode=e.TriggerNode;exports.builtInNodeTypes=e.builtInNodeTypes;
2
2
  //# sourceMappingURL=defaultUi.cjs.map
@@ -50,6 +50,8 @@ declare interface GatewayBranchEdgeData {
50
50
  onAddStepClick?: (sourceNodeId: string, context: AddStepContext) => void;
51
51
  /** When true, route as a vertical rail (sourceX → down to targetY → right to target). Default: horizontal fan-out. */
52
52
  verticalRouting?: boolean;
53
+ /** inline-gate side branch: route horizontally from the right handle, then down into the target. */
54
+ sideRouting?: boolean;
53
55
  }
54
56
 
55
57
  export declare const LabelPlusEdge: ({ id, sourceX, sourceY, targetX, targetY, source, target, data, }: EdgeProps<LabelPlusEdgeData>) => JSX_2.Element;
package/dist/defaultUi.js CHANGED
@@ -1,4 +1,4 @@
1
- import { A as d, a as s, b as o, D as N, E as i, c as l, F as r, G as t, L as g, N as E, P as n, d as P, S as b, T as c, e as p } from "./GatewayBranchEdge-BsPsPmnx.js";
1
+ import { A as d, a as s, b as o, D as N, E as i, c as l, F as r, G as t, L as g, N as E, P as n, d as P, S as b, T as c, e as p } from "./GatewayBranchEdge-C023FhhW.js";
2
2
  export {
3
3
  d as ActionNode,
4
4
  s as AddTriggerNode,
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-BhhUO6Ue.js"),T=require("./SchemaBuilderDrawer-CtGanHvg.js");require("react/jsx-runtime");require("react");require("@mui/material");require("react-icons/md");const i=require("./nodeRegistry.cjs"),F=require("./templateRegistry.cjs"),p=require("./WorkflowExecutionHistory-CsBnVxC5.js"),S=require("./messages-Bg7b9RbI.js"),h=require("./bpmn-CcuE2X_Q.js"),t=require("./GatewayBranchEdge-hUano0YJ.js"),R=require("./buildBackendPayload-CTCfdT8R.js");class N{constructor(){this.channels=new Map}register(r,s){this.channels.set(r,s)}get(r){return this.channels.get(r)}list(){return Array.from(this.channels.entries()).map(([r,s])=>({key:r,...s}))}has(r){return this.channels.has(r)}}const v=new N;function D(o){const{currentNodeId:r,nodes:s,getParents:l,getOutputSchema:a,nodePath:d,nodeLabel:u,getNodeId:c=n=>n.id}=o,g=s.find(n=>c(n)===r);if(!g)return[];const w=P(g,s,l,c),f=[];for(const n of w){const y=a(n);if(!y||y.length===0)continue;const b=d(n);f.push({label:u?u(n):b,items:y.map(k=>m(k,b))})}return f}function P(o,r,s,l){const a=new Set,d=[],u=[...s(o,r)];for(;u.length>0;){const c=u.shift(),g=l(c);a.has(g)||(a.add(g),d.push(c),u.push(...s(c,r)))}return d}function m(o,r){const s=`${r}.${o.key}`,l=o.description??(o.sample!==void 0&&o.sample!==null?String(o.sample):void 0),a={label:o.label,path:s,key:o.key};return l!==void 0&&(a.description=l),(o.isList||o.type==="array")&&(a.isList=!0),o.children&&o.children.length>0&&(a.children=o.children.map(d=>m(d,s))),a}exports.DRAG_DATA_KEY=e.DRAG_DATA_KEY;exports.DynamicFormRenderer=e.DynamicFormRenderer;exports.FF=e.FF;exports.FlowForgeRegistry=e.FlowForgeRegistry;exports.FlowForm=e.FlowForm;exports.FormulaInput=e.FormulaInput;exports.InfiniteSelectField=e.InfiniteSelectField;exports.OptionsResolversProvider=e.OptionsResolversProvider;exports.TablePickerField=e.TablePickerField;exports.VariablePicker=e.VariablePicker;exports.VariablePickerProvider=e.VariablePickerProvider;exports.astHasRefs=e.astHasRefs;exports.astToTokens=e.astToTokens;exports.buildEvaluationPayload=e.buildEvaluationPayload;exports.buildFieldConfig=e.buildFieldConfig;exports.buildFormulaPath=e.buildFormulaPath;exports.buildSelectStyles=e.buildSelectStyles;exports.buildValidationSchema=e.buildValidationSchema;exports.conditionConfigToRulePayload=e.conditionConfigToRulePayload;exports.conditionNodesToRuleTree=e.conditionNodesToRuleTree;exports.dataSourceRegistry=e.dataSourceRegistry;exports.errorTextStyle=e.errorTextStyle;exports.extractLabel=e.extractLabel;exports.fieldRegistry=e.fieldRegistry;exports.hasFormulaTokens=e.hasFormulaTokens;exports.helperTextStyle=e.helperTextStyle;exports.inputStyle=e.inputStyle;exports.isFormula=e.isFormula;exports.leafReference=e.leafReference;exports.parseToAST=e.parseToAST;exports.ruleConditionsToNodes=e.ruleConditionsToNodes;exports.rulePayloadToConditionConfig=e.rulePayloadToConditionConfig;exports.serializeAST=e.serializeAST;exports.serializeASTAsConfig=e.serializeASTAsConfig;exports.serializeConditionExpressions=e.serializeConditionExpressions;exports.stripFormulaTokens=e.stripFormulaTokens;exports.tokenize=e.tokenize;exports.unwrapFormula=e.unwrapFormula;exports.useDynamicOptions=e.useDynamicOptions;exports.useOptionsResolvers=e.useOptionsResolvers;exports.useVariablePickerContext=e.useVariablePickerContext;exports.variableSubtreeToValue=e.variableSubtreeToValue;exports.wrapFormula=e.wrapFormula;exports.FIELD_TYPE_OPTIONS=T.FIELD_TYPE_OPTIONS;exports.SchemaBuilder=T.SchemaBuilder;exports.SchemaBuilderDrawer=T.SchemaBuilderDrawer;exports.useFlowForm=T.useFlowForm;exports.NodeTypeRegistry=i.NodeTypeRegistry;exports.baseNodeDefaults=i.baseNodeDefaults;exports.conditionBranchDescriptor=i.conditionBranchDescriptor;exports.defineNode=i.defineNode;exports.endEventDescriptor=i.endEventDescriptor;exports.makeSubWorkflowDescriptor=i.makeSubWorkflowDescriptor;exports.nodeTypeRegistry=i.nodeTypeRegistry;exports.notificationDescriptor=i.notificationDescriptor;exports.restApiDescriptor=i.restApiDescriptor;exports.startEventDescriptor=i.startEventDescriptor;exports.subWorkflowDescriptor=i.subWorkflowDescriptor;exports.webhookTriggerDescriptor=i.webhookTriggerDescriptor;exports.webhookTriggerTemplate=i.webhookTriggerTemplate;exports.TemplateRegistry=F.TemplateRegistry;exports.templateRegistry=F.templateRegistry;exports.FlowForgeCanvas=p.FlowForgeCanvas;exports.FlowForgeHeader=p.FlowForgeHeader;exports.SubWorkflowPreviewDrawer=p.SubWorkflowPreviewDrawer;exports.WorkflowCanvas=p.FlowForgeCanvas;exports.WorkflowExecutionHistory=p.WorkflowExecutionHistory;exports.WorkflowTemplateLibrary=p.WorkflowTemplateLibrary;exports.defaultFlowForgeMessages=S.defaultFlowForgeMessages;exports.loadWorkflowFromBpmn=h.loadWorkflowFromBpmn;exports.saveWorkflowToBpmn=h.saveWorkflowToBpmn;exports.ActionNode=t.ActionNode;exports.ApprovalNode=t.ApprovalNode;exports.EdgeWithPlusLabel=t.EdgeWithPlusLabel;exports.EndNode=t.EndNode;exports.FilterNode=t.FilterNode;exports.NodeBody=t.NodeBody;exports.RestApiNode=t.RestApiNode;exports.StartNode=t.StartNode;exports.TriggerNode=t.TriggerNode;exports.WebhookTriggerNode=t.WebhookTriggerNode;exports.builtInNodeTypes=t.builtInNodeTypes;exports.deriveRows=t.deriveRows;exports.resolveNodeRows=t.resolveNodeRows;exports.buildBackendPayload=R.buildBackendPayload;exports.buildVariableGroups=D;exports.notificationChannelRegistry=v;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-BhhUO6Ue.js"),T=require("./SchemaBuilderDrawer-CtGanHvg.js");require("react/jsx-runtime");require("react");require("@mui/material");require("react-icons/md");const i=require("./nodeRegistry.cjs"),F=require("./templateRegistry.cjs"),p=require("./WorkflowExecutionHistory-BrkL37Wb.js"),S=require("./messages-Bg7b9RbI.js"),h=require("./bpmn-CcuE2X_Q.js"),t=require("./GatewayBranchEdge-CdoZtIhn.js"),R=require("./buildBackendPayload-CTCfdT8R.js");class N{constructor(){this.channels=new Map}register(r,s){this.channels.set(r,s)}get(r){return this.channels.get(r)}list(){return Array.from(this.channels.entries()).map(([r,s])=>({key:r,...s}))}has(r){return this.channels.has(r)}}const v=new N;function D(o){const{currentNodeId:r,nodes:s,getParents:l,getOutputSchema:a,nodePath:d,nodeLabel:u,getNodeId:c=n=>n.id}=o,g=s.find(n=>c(n)===r);if(!g)return[];const w=P(g,s,l,c),f=[];for(const n of w){const y=a(n);if(!y||y.length===0)continue;const b=d(n);f.push({label:u?u(n):b,items:y.map(k=>m(k,b))})}return f}function P(o,r,s,l){const a=new Set,d=[],u=[...s(o,r)];for(;u.length>0;){const c=u.shift(),g=l(c);a.has(g)||(a.add(g),d.push(c),u.push(...s(c,r)))}return d}function m(o,r){const s=`${r}.${o.key}`,l=o.description??(o.sample!==void 0&&o.sample!==null?String(o.sample):void 0),a={label:o.label,path:s,key:o.key};return l!==void 0&&(a.description=l),(o.isList||o.type==="array")&&(a.isList=!0),o.children&&o.children.length>0&&(a.children=o.children.map(d=>m(d,s))),a}exports.DRAG_DATA_KEY=e.DRAG_DATA_KEY;exports.DynamicFormRenderer=e.DynamicFormRenderer;exports.FF=e.FF;exports.FlowForgeRegistry=e.FlowForgeRegistry;exports.FlowForm=e.FlowForm;exports.FormulaInput=e.FormulaInput;exports.InfiniteSelectField=e.InfiniteSelectField;exports.OptionsResolversProvider=e.OptionsResolversProvider;exports.TablePickerField=e.TablePickerField;exports.VariablePicker=e.VariablePicker;exports.VariablePickerProvider=e.VariablePickerProvider;exports.astHasRefs=e.astHasRefs;exports.astToTokens=e.astToTokens;exports.buildEvaluationPayload=e.buildEvaluationPayload;exports.buildFieldConfig=e.buildFieldConfig;exports.buildFormulaPath=e.buildFormulaPath;exports.buildSelectStyles=e.buildSelectStyles;exports.buildValidationSchema=e.buildValidationSchema;exports.conditionConfigToRulePayload=e.conditionConfigToRulePayload;exports.conditionNodesToRuleTree=e.conditionNodesToRuleTree;exports.dataSourceRegistry=e.dataSourceRegistry;exports.errorTextStyle=e.errorTextStyle;exports.extractLabel=e.extractLabel;exports.fieldRegistry=e.fieldRegistry;exports.hasFormulaTokens=e.hasFormulaTokens;exports.helperTextStyle=e.helperTextStyle;exports.inputStyle=e.inputStyle;exports.isFormula=e.isFormula;exports.leafReference=e.leafReference;exports.parseToAST=e.parseToAST;exports.ruleConditionsToNodes=e.ruleConditionsToNodes;exports.rulePayloadToConditionConfig=e.rulePayloadToConditionConfig;exports.serializeAST=e.serializeAST;exports.serializeASTAsConfig=e.serializeASTAsConfig;exports.serializeConditionExpressions=e.serializeConditionExpressions;exports.stripFormulaTokens=e.stripFormulaTokens;exports.tokenize=e.tokenize;exports.unwrapFormula=e.unwrapFormula;exports.useDynamicOptions=e.useDynamicOptions;exports.useOptionsResolvers=e.useOptionsResolvers;exports.useVariablePickerContext=e.useVariablePickerContext;exports.variableSubtreeToValue=e.variableSubtreeToValue;exports.wrapFormula=e.wrapFormula;exports.FIELD_TYPE_OPTIONS=T.FIELD_TYPE_OPTIONS;exports.SchemaBuilder=T.SchemaBuilder;exports.SchemaBuilderDrawer=T.SchemaBuilderDrawer;exports.useFlowForm=T.useFlowForm;exports.NodeTypeRegistry=i.NodeTypeRegistry;exports.baseNodeDefaults=i.baseNodeDefaults;exports.conditionBranchDescriptor=i.conditionBranchDescriptor;exports.defineNode=i.defineNode;exports.endEventDescriptor=i.endEventDescriptor;exports.makeSubWorkflowDescriptor=i.makeSubWorkflowDescriptor;exports.nodeTypeRegistry=i.nodeTypeRegistry;exports.notificationDescriptor=i.notificationDescriptor;exports.restApiDescriptor=i.restApiDescriptor;exports.startEventDescriptor=i.startEventDescriptor;exports.subWorkflowDescriptor=i.subWorkflowDescriptor;exports.webhookTriggerDescriptor=i.webhookTriggerDescriptor;exports.webhookTriggerTemplate=i.webhookTriggerTemplate;exports.TemplateRegistry=F.TemplateRegistry;exports.templateRegistry=F.templateRegistry;exports.FlowForgeCanvas=p.FlowForgeCanvas;exports.FlowForgeHeader=p.FlowForgeHeader;exports.SubWorkflowPreviewDrawer=p.SubWorkflowPreviewDrawer;exports.WorkflowCanvas=p.FlowForgeCanvas;exports.WorkflowExecutionHistory=p.WorkflowExecutionHistory;exports.WorkflowTemplateLibrary=p.WorkflowTemplateLibrary;exports.defaultFlowForgeMessages=S.defaultFlowForgeMessages;exports.loadWorkflowFromBpmn=h.loadWorkflowFromBpmn;exports.saveWorkflowToBpmn=h.saveWorkflowToBpmn;exports.ActionNode=t.ActionNode;exports.ApprovalNode=t.ApprovalNode;exports.EdgeWithPlusLabel=t.EdgeWithPlusLabel;exports.EndNode=t.EndNode;exports.FilterNode=t.FilterNode;exports.NodeBody=t.NodeBody;exports.RestApiNode=t.RestApiNode;exports.StartNode=t.StartNode;exports.TriggerNode=t.TriggerNode;exports.WebhookTriggerNode=t.WebhookTriggerNode;exports.builtInNodeTypes=t.builtInNodeTypes;exports.deriveRows=t.deriveRows;exports.resolveNodeRows=t.resolveNodeRows;exports.buildBackendPayload=R.buildBackendPayload;exports.buildVariableGroups=D;exports.notificationChannelRegistry=v;
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/index.d.ts CHANGED
@@ -267,6 +267,8 @@ export declare interface CanvasSlot {
267
267
  label?: string;
268
268
  /** Maps branch key → display label. e.g. { pass: 'Pass', fail: 'Fail' } */
269
269
  branchLabels?: Record<string, string>;
270
+ /** Branch layout style — see NodeDescriptor.branchStyle. */
271
+ branchStyle?: 'symmetric' | 'inline-gate';
270
272
  }
271
273
 
272
274
  export declare interface ChildRouterProps {
@@ -1471,6 +1473,14 @@ export declare interface NodeDescriptor {
1471
1473
  canInsert?: (ctx: InsertContext) => boolean;
1472
1474
  /** Maps branch key → display label. e.g. { pass: 'Pass', fail: 'Fail' }. Only applies to branching nodes (filterNode, approvalNode). */
1473
1475
  branchLabels?: Record<string, string>;
1476
+ /**
1477
+ * Branch layout style for a branching node.
1478
+ * - 'symmetric' (default): all branches indent side-by-side under the node.
1479
+ * - 'inline-gate': the FIRST branch (e.g. Pass) continues straight down the
1480
+ * main spine; the remaining branches (e.g. Fail) render as short side
1481
+ * edges to their End. Matches a pre-trigger "filter" gate design.
1482
+ */
1483
+ branchStyle?: 'symmetric' | 'inline-gate';
1474
1484
  formSchema: FieldDescriptor[] | ((nodeId: string) => Promise<FieldDescriptor[]>);
1475
1485
  /**
1476
1486
  * Custom configuration panel. When set, NodeConfigDrawer renders the returned
package/dist/index.js CHANGED
@@ -6,10 +6,10 @@ import "@mui/material";
6
6
  import "react-icons/md";
7
7
  import { NodeTypeRegistry as we, baseNodeDefaults as ke, conditionBranchDescriptor as Se, defineNode as Ne, endEventDescriptor as Re, makeSubWorkflowDescriptor as ve, nodeTypeRegistry as xe, notificationDescriptor as De, restApiDescriptor as Pe, startEventDescriptor as Ae, subWorkflowDescriptor as Ce, webhookTriggerDescriptor as Ee, webhookTriggerTemplate as We } from "./nodeRegistry.js";
8
8
  import { TemplateRegistry as Be, templateRegistry as Le } from "./templateRegistry.js";
9
- import { F as Oe, a as ze, S as He, F as _e, W as Ge, b as Me } from "./WorkflowExecutionHistory-DYp-l7mk.js";
9
+ import { F as Oe, a as ze, S as He, F as _e, W as Ge, b as Me } from "./WorkflowExecutionHistory-BBeVPYVc.js";
10
10
  import { d as Ke } from "./messages-CRZgWFU-.js";
11
11
  import { l as $e, s as je } from "./bpmn-CtfWDaOY.js";
12
- import { A as Ue, b as Qe, E as Xe, c as Ze, F as es, f as ss, R as os, S as as, T as rs, W as ts, e as is, g as ns, r as ls } from "./GatewayBranchEdge-BsPsPmnx.js";
12
+ import { A as Ue, b as Qe, E as Xe, c as Ze, F as es, f as ss, R as os, S as as, T as rs, W as ts, e as is, g as ns, r as ls } from "./GatewayBranchEdge-C023FhhW.js";
13
13
  import { b as cs } from "./buildBackendPayload-C16SLotf.js";
14
14
  class g {
15
15
  constructor() {
@@ -36,6 +36,8 @@ declare interface CanvasSlot {
36
36
  label?: string;
37
37
  /** Maps branch key → display label. e.g. { pass: 'Pass', fail: 'Fail' } */
38
38
  branchLabels?: Record<string, string>;
39
+ /** Branch layout style — see NodeDescriptor.branchStyle. */
40
+ branchStyle?: 'symmetric' | 'inline-gate';
39
41
  }
40
42
 
41
43
  export declare const conditionBranchDescriptor: NodeDescriptor;
@@ -371,6 +373,14 @@ export declare interface NodeDescriptor {
371
373
  canInsert?: (ctx: InsertContext) => boolean;
372
374
  /** Maps branch key → display label. e.g. { pass: 'Pass', fail: 'Fail' }. Only applies to branching nodes (filterNode, approvalNode). */
373
375
  branchLabels?: Record<string, string>;
376
+ /**
377
+ * Branch layout style for a branching node.
378
+ * - 'symmetric' (default): all branches indent side-by-side under the node.
379
+ * - 'inline-gate': the FIRST branch (e.g. Pass) continues straight down the
380
+ * main spine; the remaining branches (e.g. Fail) render as short side
381
+ * edges to their End. Matches a pre-trigger "filter" gate design.
382
+ */
383
+ branchStyle?: 'symmetric' | 'inline-gate';
374
384
  formSchema: FieldDescriptor[] | ((nodeId: string) => Promise<FieldDescriptor[]>);
375
385
  /**
376
386
  * Custom configuration panel. When set, NodeConfigDrawer renders the returned
@@ -36,6 +36,8 @@ declare interface CanvasSlot {
36
36
  label?: string;
37
37
  /** Maps branch key → display label. e.g. { pass: 'Pass', fail: 'Fail' } */
38
38
  branchLabels?: Record<string, string>;
39
+ /** Branch layout style — see NodeDescriptor.branchStyle. */
40
+ branchStyle?: 'symmetric' | 'inline-gate';
39
41
  }
40
42
 
41
43
  /** One column in a per-field condition row */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@notmrabhi/flowforge",
3
- "version": "0.1.106",
3
+ "version": "0.1.108",
4
4
  "description": "Schema-driven form renderer and workflow engine for miniOrange IAM",
5
5
  "license": "UNLICENSED",
6
6
  "author": "miniOrange",