@notmrabhi/flowforge 0.1.53 → 0.1.55

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 (39) hide show
  1. package/dist/GatewayBranchEdge-6rCziASt.js +2 -0
  2. package/dist/GatewayBranchEdge-6rCziASt.js.map +1 -0
  3. package/dist/GatewayBranchEdge-PsxBbEky.js +1538 -0
  4. package/dist/GatewayBranchEdge-PsxBbEky.js.map +1 -0
  5. package/dist/{templateSkeletons-f-XQQvyE.js → WorkflowExecutionHistory-CF0-D-7q.js} +805 -859
  6. package/dist/WorkflowExecutionHistory-CF0-D-7q.js.map +1 -0
  7. package/dist/{templateSkeletons-gOva2Xus.js → WorkflowExecutionHistory-CQkhhFQr.js} +2 -2
  8. package/dist/WorkflowExecutionHistory-CQkhhFQr.js.map +1 -0
  9. package/dist/buildBackendPayload-4SwOp7St.js.map +1 -1
  10. package/dist/buildBackendPayload-BvrjW1uM.js.map +1 -1
  11. package/dist/canvas.cjs +1 -1
  12. package/dist/canvas.d.ts +7 -61
  13. package/dist/canvas.js +21 -25
  14. package/dist/core.cjs +1 -1
  15. package/dist/core.d.ts +7 -24
  16. package/dist/core.js +1 -1
  17. package/dist/defaultUi.cjs +1 -1
  18. package/dist/defaultUi.js +1 -1
  19. package/dist/form.d.ts +0 -35
  20. package/dist/index-B-D9UuLO.js.map +1 -1
  21. package/dist/index-DUbQPmIx.js.map +1 -1
  22. package/dist/index.cjs +1 -1
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.ts +7 -43
  25. package/dist/index.js +65 -69
  26. package/dist/{messages-O9Tw_XXR.js → messages-Bg7b9RbI.js} +2 -2
  27. package/dist/messages-Bg7b9RbI.js.map +1 -0
  28. package/dist/{messages-CO299wPN.js → messages-CRZgWFU-.js} +15 -8
  29. package/dist/messages-CRZgWFU-.js.map +1 -0
  30. package/dist/nodeRegistry.d.ts +0 -24
  31. package/package.json +1 -1
  32. package/dist/GatewayBranchEdge-CMY30xhz.js +0 -2
  33. package/dist/GatewayBranchEdge-CMY30xhz.js.map +0 -1
  34. package/dist/GatewayBranchEdge-CrgczPYJ.js +0 -1414
  35. package/dist/GatewayBranchEdge-CrgczPYJ.js.map +0 -1
  36. package/dist/messages-CO299wPN.js.map +0 -1
  37. package/dist/messages-O9Tw_XXR.js.map +0 -1
  38. package/dist/templateSkeletons-f-XQQvyE.js.map +0 -1
  39. package/dist/templateSkeletons-gOva2Xus.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-DUbQPmIx.js"),b=require("./SchemaBuilderDrawer-CIxQGffa.js");require("react/jsx-runtime");require("react");require("@mui/material");require("react-icons/md");const i=require("./nodeRegistry.cjs"),f=require("./templateRegistry.cjs"),s=require("./templateSkeletons-gOva2Xus.js"),S=require("./messages-O9Tw_XXR.js"),k=require("./bpmn-CcuE2X_Q.js"),a=require("./GatewayBranchEdge-CMY30xhz.js"),R=require("./buildBackendPayload-BvrjW1uM.js");class D{constructor(){this.channels=new Map}register(o,t){this.channels.set(o,t)}get(o){return this.channels.get(o)}list(){return Array.from(this.channels.entries()).map(([o,t])=>({key:o,...t}))}has(o){return this.channels.has(o)}}const N=new D;function P(r){const{currentNodeId:o,nodes:t,getParents:d,getOutputSchema:n,nodePath:c,nodeLabel:u,getNodeId:p=l=>l.id}=r,g=t.find(l=>p(l)===o);if(!g)return[];const w=v(g,t,d,p),m=[];for(const l of w){const h=n(l);if(!h||h.length===0)continue;const F=c(l);m.push({label:u?u(l):F,items:h.map(T=>y(T,F))})}return m}function v(r,o,t,d){const n=new Set,c=[],u=[...t(r,o)];for(;u.length>0;){const p=u.shift(),g=d(p);n.has(g)||(n.add(g),c.push(p),u.push(...t(p,o)))}return c}function y(r,o){const t=`${o}.${r.key}`,d=r.description??(r.sample!==void 0&&r.sample!==null?String(r.sample):void 0),n={label:r.label,path:t};return d!==void 0&&(n.description=d),r.children&&r.children.length>0&&(n.children=r.children.map(c=>y(c,t))),n}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.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.parseToAST=e.parseToAST;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.wrapFormula=e.wrapFormula;exports.FIELD_TYPE_OPTIONS=b.FIELD_TYPE_OPTIONS;exports.SchemaBuilder=b.SchemaBuilder;exports.SchemaBuilderDrawer=b.SchemaBuilderDrawer;exports.useFlowForm=b.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=s.FlowForgeCanvas;exports.FlowForgeHeader=s.FlowForgeHeader;exports.SubWorkflowPreviewDrawer=s.SubWorkflowPreviewDrawer;exports.WorkflowCanvas=s.FlowForgeCanvas;exports.WorkflowExecutionHistory=s.WorkflowExecutionHistory;exports.WorkflowTemplateLibrary=s.WorkflowTemplateLibrary;exports.accessRequestSkeleton=s.accessRequestSkeleton;exports.offboardingSkeleton=s.offboardingSkeleton;exports.userOnboardingSkeleton=s.userOnboardingSkeleton;exports.webhookIntegrationSkeleton=s.webhookIntegrationSkeleton;exports.defaultFlowForgeMessages=S.defaultFlowForgeMessages;exports.loadWorkflowFromBpmn=k.loadWorkflowFromBpmn;exports.saveWorkflowToBpmn=k.saveWorkflowToBpmn;exports.ActionNode=a.ActionNode;exports.ApprovalNode=a.ApprovalNode;exports.EdgeWithPlusLabel=a.EdgeWithPlusLabel;exports.EndNode=a.EndNode;exports.FilterNode=a.FilterNode;exports.RestApiNode=a.RestApiNode;exports.StartNode=a.StartNode;exports.TriggerNode=a.TriggerNode;exports.WebhookTriggerNode=a.WebhookTriggerNode;exports.builtInNodeTypes=a.builtInNodeTypes;exports.buildBackendPayload=R.buildBackendPayload;exports.buildVariableGroups=P;exports.notificationChannelRegistry=N;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-DUbQPmIx.js"),F=require("./SchemaBuilderDrawer-CIxQGffa.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-CQkhhFQr.js"),S=require("./messages-Bg7b9RbI.js"),y=require("./bpmn-CcuE2X_Q.js"),s=require("./GatewayBranchEdge-6rCziASt.js"),D=require("./buildBackendPayload-BvrjW1uM.js");class N{constructor(){this.channels=new Map}register(o,t){this.channels.set(o,t)}get(o){return this.channels.get(o)}list(){return Array.from(this.channels.entries()).map(([o,t])=>({key:o,...t}))}has(o){return this.channels.has(o)}}const P=new N;function R(r){const{currentNodeId:o,nodes:t,getParents:l,getOutputSchema:a,nodePath:d,nodeLabel:c,getNodeId:u=n=>n.id}=r,g=t.find(n=>u(n)===o);if(!g)return[];const w=v(g,t,l,u),h=[];for(const n of w){const m=a(n);if(!m||m.length===0)continue;const b=d(n);h.push({label:c?c(n):b,items:m.map(k=>T(k,b))})}return h}function v(r,o,t,l){const a=new Set,d=[],c=[...t(r,o)];for(;c.length>0;){const u=c.shift(),g=l(u);a.has(g)||(a.add(g),d.push(u),c.push(...t(u,o)))}return d}function T(r,o){const t=`${o}.${r.key}`,l=r.description??(r.sample!==void 0&&r.sample!==null?String(r.sample):void 0),a={label:r.label,path:t};return l!==void 0&&(a.description=l),r.children&&r.children.length>0&&(a.children=r.children.map(d=>T(d,t))),a}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.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.parseToAST=e.parseToAST;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.wrapFormula=e.wrapFormula;exports.FIELD_TYPE_OPTIONS=F.FIELD_TYPE_OPTIONS;exports.SchemaBuilder=F.SchemaBuilder;exports.SchemaBuilderDrawer=F.SchemaBuilderDrawer;exports.useFlowForm=F.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=y.loadWorkflowFromBpmn;exports.saveWorkflowToBpmn=y.saveWorkflowToBpmn;exports.ActionNode=s.ActionNode;exports.ApprovalNode=s.ApprovalNode;exports.EdgeWithPlusLabel=s.EdgeWithPlusLabel;exports.EndNode=s.EndNode;exports.FilterNode=s.FilterNode;exports.RestApiNode=s.RestApiNode;exports.StartNode=s.StartNode;exports.TriggerNode=s.TriggerNode;exports.WebhookTriggerNode=s.WebhookTriggerNode;exports.builtInNodeTypes=s.builtInNodeTypes;exports.buildBackendPayload=D.buildBackendPayload;exports.buildVariableGroups=R;exports.notificationChannelRegistry=P;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/notificationChannelRegistry/index.ts","../src/datapills/buildVariableGroups.ts"],"sourcesContent":["export interface NotificationChannelOption {\n value: string;\n label: string;\n}\n\nexport interface NotificationChannelConfig {\n label: string;\n /** Fetch recipients/channels for this notification channel at runtime */\n fetchRecipients?: () => Promise<NotificationChannelOption[]>;\n}\n\nclass NotificationChannelRegistry {\n private channels = new Map<string, NotificationChannelConfig>();\n\n register(key: string, config: NotificationChannelConfig): void {\n this.channels.set(key, config);\n }\n\n get(key: string): NotificationChannelConfig | undefined {\n return this.channels.get(key);\n }\n\n list(): Array<{ key: string } & NotificationChannelConfig> {\n return Array.from(this.channels.entries()).map(([key, cfg]) => ({ key, ...cfg }));\n }\n\n has(key: string): boolean {\n return this.channels.has(key);\n }\n}\n\nexport const notificationChannelRegistry = new NotificationChannelRegistry();\nexport default NotificationChannelRegistry;\n","/**\n * buildVariableGroups — graph walker that turns upstream nodes' outputSchemas\n * into Smart Values picker groups.\n *\n * Pattern matches Workato's datapill model: every node declares what it\n * outputs; downstream nodes see the union of upstream outputs. The package\n * doesn't know your node-id scheme, your API, or your edge model — pass\n * those in via the four predicates and we do the rest.\n *\n * Usage (IAM-side):\n *\n * const variableGroups = buildVariableGroups({\n * currentNodeId,\n * nodes, // canvas state slots\n * getParents: (node) => upstreamSlotsOf(node, edges),\n * getOutputSchema: (node) => tasksByKey[node.descriptorType]?.outputSchema ?? [],\n * nodePath: (node) => node.id === 'trigger' ? 'endUser' : `data.${index(node)}`,\n * nodeLabel: (node) => node.label,\n * });\n *\n * <FlowForm variableGroups={variableGroups} ... />\n */\n\nimport type { VariableGroup, VariableItem } from '../FlowForm/VariablePicker/VariablePickerContext';\n\nexport interface OutputSchemaItem {\n key: string;\n label: string;\n /** Optional — display only. Lets the picker show a type chip (\"ABC\" / 123). */\n type?: string;\n /** Optional — shown under/beside the label in the picker (Workato-style). */\n sample?: string | number | boolean;\n /** Optional tooltip text (independent of `sample`). */\n description?: string;\n /** Nested fields — renders as an expandable subgroup. */\n children?: OutputSchemaItem[];\n}\n\nexport interface BuildVariableGroupsOptions<TNode> {\n /** Id of the node currently being configured (its outputs are NOT included). */\n currentNodeId: string;\n /** All nodes in the canvas / workflow. */\n nodes: TNode[];\n /** Return the immediate parent node(s) — consumer walks its own edge model. */\n getParents: (node: TNode, nodes: TNode[]) => TNode[];\n /** Return the node's output schema array (empty array if none). */\n getOutputSchema: (node: TNode) => OutputSchemaItem[];\n /** Return the runtime path prefix for this node (e.g. 'endUser', 'data.1'). */\n nodePath: (node: TNode) => string;\n /** Optional — group label shown in the picker. Defaults to `nodePath(node)`. */\n nodeLabel?: (node: TNode) => string;\n /**\n * Optional — function reading a node's id. Defaults to `(n) => (n as any).id`.\n * Override if your node model nests the id (e.g. `n.data.id`).\n */\n getNodeId?: (node: TNode) => string;\n}\n\n/**\n * Walks upstream from `currentNodeId` (excluding it), collects each ancestor's\n * outputSchema, and returns a `VariableGroup[]` ready for `<FlowForm variableGroups>`.\n *\n * - Excludes the current node (a node never references its own outputs).\n * - Deduplicates ancestors via id — diamond graphs don't produce duplicate groups.\n * - Skips ancestors with empty outputSchema (no group rendered for nodes that emit nothing).\n * - Preserves traversal order — the closest parent appears first in the picker.\n */\nexport function buildVariableGroups<TNode>(\n opts: BuildVariableGroupsOptions<TNode>\n): VariableGroup[] {\n const {\n currentNodeId,\n nodes,\n getParents,\n getOutputSchema,\n nodePath,\n nodeLabel,\n getNodeId = (n: TNode) => (n as unknown as { id: string }).id,\n } = opts;\n\n const current = nodes.find((n) => getNodeId(n) === currentNodeId);\n if (!current) return [];\n\n const upstream = collectUpstream(current, nodes, getParents, getNodeId);\n\n const groups: VariableGroup[] = [];\n for (const node of upstream) {\n const schema = getOutputSchema(node);\n if (!schema || schema.length === 0) continue;\n const prefix = nodePath(node);\n groups.push({\n label: nodeLabel ? nodeLabel(node) : prefix,\n items: schema.map((item) => mapToVariableItem(item, prefix)),\n });\n }\n return groups;\n}\n\n// ─── Internals ──────────────────────────────────────────────────────────────\n\nfunction collectUpstream<TNode>(\n start: TNode,\n nodes: TNode[],\n getParents: (node: TNode, nodes: TNode[]) => TNode[],\n getNodeId: (node: TNode) => string\n): TNode[] {\n const seen = new Set<string>();\n const ordered: TNode[] = [];\n // BFS upstream — the closest parent ends up first, mirroring how Workato\n // groups the most recent step at the top of the datapill panel.\n const queue: TNode[] = [...getParents(start, nodes)];\n while (queue.length > 0) {\n const node = queue.shift() as TNode;\n const id = getNodeId(node);\n if (seen.has(id)) continue;\n seen.add(id);\n ordered.push(node);\n queue.push(...getParents(node, nodes));\n }\n return ordered;\n}\n\nfunction mapToVariableItem(\n item: OutputSchemaItem,\n prefix: string\n): VariableItem {\n const path = `${prefix}.${item.key}`;\n // Workato-style: show the sample value under the label when present.\n const description =\n item.description ??\n (item.sample !== undefined && item.sample !== null\n ? String(item.sample)\n : undefined);\n const result: VariableItem = { label: item.label, path };\n if (description !== undefined) result.description = description;\n if (item.children && item.children.length > 0) {\n result.children = item.children.map((c) => mapToVariableItem(c, path));\n }\n return result;\n}\n"],"names":["NotificationChannelRegistry","key","config","cfg","notificationChannelRegistry","buildVariableGroups","opts","currentNodeId","nodes","getParents","getOutputSchema","nodePath","nodeLabel","getNodeId","n","current","upstream","collectUpstream","groups","node","schema","prefix","item","mapToVariableItem","start","seen","ordered","queue","id","path","description","result"],"mappings":"8hBAWA,MAAMA,CAA4B,CAAlC,aAAA,CACE,KAAQ,aAAe,GAAuC,CAE9D,SAASC,EAAaC,EAAyC,CAC7D,KAAK,SAAS,IAAID,EAAKC,CAAM,CAC/B,CAEA,IAAID,EAAoD,CACtD,OAAO,KAAK,SAAS,IAAIA,CAAG,CAC9B,CAEA,MAA2D,CACzD,OAAO,MAAM,KAAK,KAAK,SAAS,QAAA,CAAS,EAAE,IAAI,CAAC,CAACA,EAAKE,CAAG,KAAO,CAAE,IAAAF,EAAK,GAAGE,GAAM,CAClF,CAEA,IAAIF,EAAsB,CACxB,OAAO,KAAK,SAAS,IAAIA,CAAG,CAC9B,CACF,CAEO,MAAMG,EAA8B,IAAIJ,ECoCxC,SAASK,EACdC,EACiB,CACjB,KAAM,CACJ,cAAAC,EACA,MAAAC,EACA,WAAAC,EACA,gBAAAC,EACA,SAAAC,EACA,UAAAC,EACA,UAAAC,EAAaC,GAAcA,EAAgC,EAAA,EACzDR,EAEES,EAAUP,EAAM,KAAMM,GAAMD,EAAUC,CAAC,IAAMP,CAAa,EAChE,GAAI,CAACQ,EAAS,MAAO,CAAA,EAErB,MAAMC,EAAWC,EAAgBF,EAASP,EAAOC,EAAYI,CAAS,EAEhEK,EAA0B,CAAA,EAChC,UAAWC,KAAQH,EAAU,CAC3B,MAAMI,EAASV,EAAgBS,CAAI,EACnC,GAAI,CAACC,GAAUA,EAAO,SAAW,EAAG,SACpC,MAAMC,EAASV,EAASQ,CAAI,EAC5BD,EAAO,KAAK,CACV,MAAON,EAAYA,EAAUO,CAAI,EAAIE,EACrC,MAAOD,EAAO,IAAKE,GAASC,EAAkBD,EAAMD,CAAM,CAAC,CAAA,CAC5D,CACH,CACA,OAAOH,CACT,CAIA,SAASD,EACPO,EACAhB,EACAC,EACAI,EACS,CACT,MAAMY,MAAW,IACXC,EAAmB,CAAA,EAGnBC,EAAiB,CAAC,GAAGlB,EAAWe,EAAOhB,CAAK,CAAC,EACnD,KAAOmB,EAAM,OAAS,GAAG,CACvB,MAAMR,EAAOQ,EAAM,MAAA,EACbC,EAAKf,EAAUM,CAAI,EACrBM,EAAK,IAAIG,CAAE,IACfH,EAAK,IAAIG,CAAE,EACXF,EAAQ,KAAKP,CAAI,EACjBQ,EAAM,KAAK,GAAGlB,EAAWU,EAAMX,CAAK,CAAC,EACvC,CACA,OAAOkB,CACT,CAEA,SAASH,EACPD,EACAD,EACc,CACd,MAAMQ,EAAO,GAAGR,CAAM,IAAIC,EAAK,GAAG,GAE5BQ,EACJR,EAAK,cACJA,EAAK,SAAW,QAAaA,EAAK,SAAW,KAC1C,OAAOA,EAAK,MAAM,EAClB,QACAS,EAAuB,CAAE,MAAOT,EAAK,MAAO,KAAAO,CAAA,EAClD,OAAIC,IAAgB,SAAWC,EAAO,YAAcD,GAChDR,EAAK,UAAYA,EAAK,SAAS,OAAS,IAC1CS,EAAO,SAAWT,EAAK,SAAS,IAAK,GAAMC,EAAkB,EAAGM,CAAI,CAAC,GAEhEE,CACT"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/notificationChannelRegistry/index.ts","../src/datapills/buildVariableGroups.ts"],"sourcesContent":["export interface NotificationChannelOption {\n value: string;\n label: string;\n}\n\nexport interface NotificationChannelConfig {\n label: string;\n /** Fetch recipients/channels for this notification channel at runtime */\n fetchRecipients?: () => Promise<NotificationChannelOption[]>;\n}\n\nclass NotificationChannelRegistry {\n private channels = new Map<string, NotificationChannelConfig>();\n\n register(key: string, config: NotificationChannelConfig): void {\n this.channels.set(key, config);\n }\n\n get(key: string): NotificationChannelConfig | undefined {\n return this.channels.get(key);\n }\n\n list(): Array<{ key: string } & NotificationChannelConfig> {\n return Array.from(this.channels.entries()).map(([key, cfg]) => ({ key, ...cfg }));\n }\n\n has(key: string): boolean {\n return this.channels.has(key);\n }\n}\n\nexport const notificationChannelRegistry = new NotificationChannelRegistry();\nexport default NotificationChannelRegistry;\n","/**\n * buildVariableGroups — graph walker that turns upstream nodes' outputSchemas\n * into Smart Values picker groups.\n *\n * Pattern matches Workato's datapill model: every node declares what it\n * outputs; downstream nodes see the union of upstream outputs. The package\n * doesn't know your node-id scheme, your API, or your edge model — pass\n * those in via the four predicates and we do the rest.\n *\n * Usage (IAM-side):\n *\n * const variableGroups = buildVariableGroups({\n * currentNodeId,\n * nodes, // canvas state slots\n * getParents: (node) => upstreamSlotsOf(node, edges),\n * getOutputSchema: (node) => tasksByKey[node.descriptorType]?.outputSchema ?? [],\n * nodePath: (node) => node.id === 'trigger' ? 'endUser' : `data.${index(node)}`,\n * nodeLabel: (node) => node.label,\n * });\n *\n * <FlowForm variableGroups={variableGroups} ... />\n */\n\nimport type { VariableGroup, VariableItem } from '../FlowForm/VariablePicker/VariablePickerContext';\n\nexport interface OutputSchemaItem {\n key: string;\n label: string;\n /** Optional — display only. Lets the picker show a type chip (\"ABC\" / 123). */\n type?: string;\n /** Optional — shown under/beside the label in the picker (Workato-style). */\n sample?: string | number | boolean;\n /** Optional tooltip text (independent of `sample`). */\n description?: string;\n /** Nested fields — renders as an expandable subgroup. */\n children?: OutputSchemaItem[];\n}\n\nexport interface BuildVariableGroupsOptions<TNode> {\n /** Id of the node currently being configured (its outputs are NOT included). */\n currentNodeId: string;\n /** All nodes in the canvas / workflow. */\n nodes: TNode[];\n /** Return the immediate parent node(s) — consumer walks its own edge model. */\n getParents: (node: TNode, nodes: TNode[]) => TNode[];\n /** Return the node's output schema array (empty array if none). */\n getOutputSchema: (node: TNode) => OutputSchemaItem[];\n /** Return the runtime path prefix for this node (e.g. 'endUser', 'data.1'). */\n nodePath: (node: TNode) => string;\n /** Optional — group label shown in the picker. Defaults to `nodePath(node)`. */\n nodeLabel?: (node: TNode) => string;\n /**\n * Optional — function reading a node's id. Defaults to `(n) => (n as any).id`.\n * Override if your node model nests the id (e.g. `n.data.id`).\n */\n getNodeId?: (node: TNode) => string;\n}\n\n/**\n * Walks upstream from `currentNodeId` (excluding it), collects each ancestor's\n * outputSchema, and returns a `VariableGroup[]` ready for `<FlowForm variableGroups>`.\n *\n * - Excludes the current node (a node never references its own outputs).\n * - Deduplicates ancestors via id — diamond graphs don't produce duplicate groups.\n * - Skips ancestors with empty outputSchema (no group rendered for nodes that emit nothing).\n * - Preserves traversal order — the closest parent appears first in the picker.\n */\nexport function buildVariableGroups<TNode>(\n opts: BuildVariableGroupsOptions<TNode>\n): VariableGroup[] {\n const {\n currentNodeId,\n nodes,\n getParents,\n getOutputSchema,\n nodePath,\n nodeLabel,\n getNodeId = (n: TNode) => (n as unknown as { id: string }).id,\n } = opts;\n\n const current = nodes.find((n) => getNodeId(n) === currentNodeId);\n if (!current) return [];\n\n const upstream = collectUpstream(current, nodes, getParents, getNodeId);\n\n const groups: VariableGroup[] = [];\n for (const node of upstream) {\n const schema = getOutputSchema(node);\n if (!schema || schema.length === 0) continue;\n const prefix = nodePath(node);\n groups.push({\n label: nodeLabel ? nodeLabel(node) : prefix,\n items: schema.map((item) => mapToVariableItem(item, prefix)),\n });\n }\n return groups;\n}\n\n// ─── Internals ──────────────────────────────────────────────────────────────\n\nfunction collectUpstream<TNode>(\n start: TNode,\n nodes: TNode[],\n getParents: (node: TNode, nodes: TNode[]) => TNode[],\n getNodeId: (node: TNode) => string\n): TNode[] {\n const seen = new Set<string>();\n const ordered: TNode[] = [];\n // BFS upstream — the closest parent ends up first, mirroring how Workato\n // groups the most recent step at the top of the datapill panel.\n const queue: TNode[] = [...getParents(start, nodes)];\n while (queue.length > 0) {\n const node = queue.shift() as TNode;\n const id = getNodeId(node);\n if (seen.has(id)) continue;\n seen.add(id);\n ordered.push(node);\n queue.push(...getParents(node, nodes));\n }\n return ordered;\n}\n\nfunction mapToVariableItem(\n item: OutputSchemaItem,\n prefix: string\n): VariableItem {\n const path = `${prefix}.${item.key}`;\n // Workato-style: show the sample value under the label when present.\n const description =\n item.description ??\n (item.sample !== undefined && item.sample !== null\n ? String(item.sample)\n : undefined);\n const result: VariableItem = { label: item.label, path };\n if (description !== undefined) result.description = description;\n if (item.children && item.children.length > 0) {\n result.children = item.children.map((c) => mapToVariableItem(c, path));\n }\n return result;\n}\n"],"names":["NotificationChannelRegistry","key","config","cfg","notificationChannelRegistry","buildVariableGroups","opts","currentNodeId","nodes","getParents","getOutputSchema","nodePath","nodeLabel","getNodeId","current","upstream","collectUpstream","groups","node","schema","prefix","item","mapToVariableItem","start","seen","ordered","queue","id","path","description","result","c"],"mappings":"qiBAWA,MAAMA,CAA4B,CAAlC,aAAA,CACE,KAAQ,aAAe,GAAuC,CAE9D,SAASC,EAAaC,EAAyC,CAC7D,KAAK,SAAS,IAAID,EAAKC,CAAM,CAC/B,CAEA,IAAID,EAAoD,CACtD,OAAO,KAAK,SAAS,IAAIA,CAAG,CAC9B,CAEA,MAA2D,CACzD,OAAO,MAAM,KAAK,KAAK,SAAS,QAAA,CAAS,EAAE,IAAI,CAAC,CAACA,EAAKE,CAAG,KAAO,CAAE,IAAAF,EAAK,GAAGE,GAAM,CAClF,CAEA,IAAIF,EAAsB,CACxB,OAAO,KAAK,SAAS,IAAIA,CAAG,CAC9B,CACF,CAEO,MAAMG,EAA8B,IAAIJ,ECoCxC,SAASK,EACdC,EACiB,CACjB,KAAM,CACJ,cAAAC,EACA,MAAAC,EACA,WAAAC,EACA,gBAAAC,EACA,SAAAC,EACA,UAAAC,EACA,UAAAC,EAAa,GAAc,EAAgC,EAAA,EACzDP,EAEEQ,EAAUN,EAAM,KAAM,GAAMK,EAAU,CAAC,IAAMN,CAAa,EAChE,GAAI,CAACO,EAAS,MAAO,CAAA,EAErB,MAAMC,EAAWC,EAAgBF,EAASN,EAAOC,EAAYI,CAAS,EAEhEI,EAA0B,CAAA,EAChC,UAAWC,KAAQH,EAAU,CAC3B,MAAMI,EAAST,EAAgBQ,CAAI,EACnC,GAAI,CAACC,GAAUA,EAAO,SAAW,EAAG,SACpC,MAAMC,EAAST,EAASO,CAAI,EAC5BD,EAAO,KAAK,CACV,MAAOL,EAAYA,EAAUM,CAAI,EAAIE,EACrC,MAAOD,EAAO,IAAKE,GAASC,EAAkBD,EAAMD,CAAM,CAAC,CAAA,CAC5D,CACH,CACA,OAAOH,CACT,CAIA,SAASD,EACPO,EACAf,EACAC,EACAI,EACS,CACT,MAAMW,MAAW,IACXC,EAAmB,CAAA,EAGnBC,EAAiB,CAAC,GAAGjB,EAAWc,EAAOf,CAAK,CAAC,EACnD,KAAOkB,EAAM,OAAS,GAAG,CACvB,MAAMR,EAAOQ,EAAM,MAAA,EACbC,EAAKd,EAAUK,CAAI,EACrBM,EAAK,IAAIG,CAAE,IACfH,EAAK,IAAIG,CAAE,EACXF,EAAQ,KAAKP,CAAI,EACjBQ,EAAM,KAAK,GAAGjB,EAAWS,EAAMV,CAAK,CAAC,EACvC,CACA,OAAOiB,CACT,CAEA,SAASH,EACPD,EACAD,EACc,CACd,MAAMQ,EAAO,GAAGR,CAAM,IAAIC,EAAK,GAAG,GAE5BQ,EACJR,EAAK,cACJA,EAAK,SAAW,QAAaA,EAAK,SAAW,KAC1C,OAAOA,EAAK,MAAM,EAClB,QACAS,EAAuB,CAAE,MAAOT,EAAK,MAAO,KAAAO,CAAA,EAClD,OAAIC,IAAgB,SAAWC,EAAO,YAAcD,GAChDR,EAAK,UAAYA,EAAK,SAAS,OAAS,IAC1CS,EAAO,SAAWT,EAAK,SAAS,IAAKU,GAAMT,EAAkBS,EAAGH,CAAI,CAAC,GAEhEE,CACT"}
package/dist/index.d.ts CHANGED
@@ -14,8 +14,6 @@ import { StylesConfig } from 'react-select';
14
14
  import { useFormik } from 'formik';
15
15
  import * as Yup from 'yup';
16
16
 
17
- export declare const accessRequestSkeleton: WorkflowState;
18
-
19
17
  export declare const ActionNode: ({ id, data }: NodeProps) => JSX_2.Element;
20
18
 
21
19
  declare interface ActiveField {
@@ -356,12 +354,6 @@ export declare interface ConditionFieldDef {
356
354
  value: string;
357
355
  label: string;
358
356
  }>;
359
- /**
360
- * Declarative dynamic options — same shape as `FieldDescriptor.optionsSource`.
361
- * `dependsOn` resolves against the OUTER form values (not the condition entry),
362
- * so a condition column can depend on another top-level field (e.g. attributes
363
- * scoped by `applicationUuid`).
364
- */
365
357
  optionsSource?: OptionsSource;
366
358
  /** When true, renders a FormulaInput chip editor instead of a plain <input> */
367
359
  formula?: boolean;
@@ -934,6 +926,13 @@ export declare interface FlowForgeMessages {
934
926
  noConfigurationNeeded: string;
935
927
  save: string;
936
928
  cancel: string;
929
+ eventTriggerSourceTitle: string;
930
+ selectTriggerTitle: string;
931
+ schedulerTriggerTitle: string;
932
+ schedulerToBeConfigured: string;
933
+ noSourceSelected: string;
934
+ selectTriggerCta: string;
935
+ clickEditToConfigure: string;
937
936
  }
938
937
 
939
938
  export declare const FlowForgeRegistry: Registry;
@@ -1304,12 +1303,9 @@ export declare interface ObjectFieldRendererProps {
1304
1303
  item?: Record<string, unknown>;
1305
1304
  }
1306
1305
 
1307
- export declare const offboardingSkeleton: WorkflowState;
1308
-
1309
1306
  /** A resolver function — transport-agnostic. */
1310
1307
  export declare type OptionsResolver = (deps: Record<string, unknown>, ctx: OptionsResolverContext) => Promise<OptionsResolverResult>;
1311
1308
 
1312
- /** Args passed to a resolver per call — cursor for pagination, input for typeahead. */
1313
1309
  export declare interface OptionsResolverContext {
1314
1310
  cursor?: unknown;
1315
1311
  input?: string;
@@ -1331,10 +1327,6 @@ export declare interface OptionsResolverResult {
1331
1327
  nextCursor?: unknown;
1332
1328
  }
1333
1329
 
1334
- /**
1335
- * Map of named resolvers — the host registers these once on the canvas / form.
1336
- * Keys are the `optionsSource.id` strings referenced by field descriptors.
1337
- */
1338
1330
  export declare type OptionsResolvers = Record<string, OptionsResolver>;
1339
1331
 
1340
1332
  declare interface OptionsResolversContextValue {
@@ -1351,26 +1343,8 @@ export declare function OptionsResolversProvider({ resolvers, children }: Provid
1351
1343
  export declare interface OptionsSource {
1352
1344
  /** Resolver id — must match a key in the host's `optionsResolvers` map. */
1353
1345
  id: string;
1354
- /**
1355
- * Other field values this resolver depends on. Two shapes accepted:
1356
- * - `string[]` — pass through verbatim ({ fieldA: values.fieldA, ... })
1357
- * - `Record<arg, fieldName>` — rename parent values for the resolver
1358
- *
1359
- * When any dep value changes, the cache key for this field invalidates
1360
- * and the resolver re-fires.
1361
- */
1362
1346
  dependsOn?: string[] | Record<string, string>;
1363
- /**
1364
- * Static params merged into the deps object for every call. Use for
1365
- * "URL template via the generic resolver" style:
1366
- * { id: 'default', params: { url: '/groups', valueKey: 'uuid' } }
1367
- */
1368
1347
  params?: Record<string, unknown>;
1369
- /**
1370
- * Lookup individual options by value (edit-mode hydration). When set,
1371
- * the field calls this resolver with `{ ids: [...] }` to render labels
1372
- * for already-selected values that aren't in the current page.
1373
- */
1374
1348
  resolveValueId?: string;
1375
1349
  }
1376
1350
 
@@ -1815,8 +1789,6 @@ export declare interface UseFlowFormOptions {
1815
1789
 
1816
1790
  export declare function useOptionsResolvers(): OptionsResolversContextValue;
1817
1791
 
1818
- export declare const userOnboardingSkeleton: WorkflowState;
1819
-
1820
1792
  export declare function useVariablePickerContext(): VariablePickerContextValue | null;
1821
1793
 
1822
1794
  export declare interface VariableGroup {
@@ -1873,12 +1845,6 @@ export declare interface VariablePickerProps {
1873
1845
  * 'popover' — absolutely positioned, shown/hidden via isOpen.
1874
1846
  */
1875
1847
  mode?: 'drawer' | 'popover';
1876
- /**
1877
- * Render the panel via a body-level Portal and fix-position it next to
1878
- * the nearest MUI Drawer (`.MuiDrawer-paper`) so it escapes clipping
1879
- * parents. Only meaningful for `mode='drawer'`; popover mode already
1880
- * portals itself. Default: false.
1881
- */
1882
1848
  floating?: boolean;
1883
1849
  }
1884
1850
 
@@ -1889,8 +1855,6 @@ declare interface VariablePickerProviderProps {
1889
1855
  children: default_2.ReactNode;
1890
1856
  }
1891
1857
 
1892
- export declare const webhookIntegrationSkeleton: WorkflowState;
1893
-
1894
1858
  export declare const webhookTriggerDescriptor: NodeDescriptor;
1895
1859
 
1896
1860
  export declare const WebhookTriggerNode: ({ data }: NodeProps) => JSX_2.Element;
package/dist/index.js CHANGED
@@ -1,117 +1,116 @@
1
- import { D as N, F as R, a as D, b as P, c as W, I as A, O as E, T as I, V as C, d as O, e as B, f as V, g as z, h as L, i as q, j as H, k as M, E as _, l as $, m as j, n as G, o as U, p as Y, q as J, r as K, s as Q, t as X, u as Z, v as ee, w as se, x as oe, y as ae, z as re, A as te, B as ie, C as ne } from "./index-B-D9UuLO.js";
1
+ import { D as N, F as D, a as R, b as P, c as W, I as A, O as E, T as C, V as I, d as B, e as O, f as V, g as z, h as L, i as H, j as q, k as M, E as _, l as $, m as j, n as G, o as U, p as Y, q as J, r as K, s as Q, t as X, u as Z, v as ee, w as se, x as re, y as oe, z as ae, A as te, B as ie, C as ne } from "./index-B-D9UuLO.js";
2
2
  import { F as ce, S as de, a as pe, u as ue } from "./SchemaBuilderDrawer-BP7aZgFe.js";
3
3
  import "react/jsx-runtime";
4
4
  import "react";
5
5
  import "@mui/material";
6
6
  import "react-icons/md";
7
- import { NodeTypeRegistry as he, baseNodeDefaults as me, conditionBranchDescriptor as ge, defineNode as be, endEventDescriptor as Fe, makeSubWorkflowDescriptor as ke, nodeTypeRegistry as we, notificationDescriptor as Se, restApiDescriptor as Te, startEventDescriptor as ye, subWorkflowDescriptor as xe, webhookTriggerDescriptor as ve, webhookTriggerTemplate as Ne } from "./nodeRegistry.js";
8
- import { TemplateRegistry as De, templateRegistry as Pe } from "./templateRegistry.js";
9
- import { F as Ae, a as Ee, S as Ie, F as Ce, W as Oe, b as Be, c as Ve, o as ze, u as Le, w as qe } from "./templateSkeletons-f-XQQvyE.js";
10
- import { d as Me } from "./messages-CO299wPN.js";
11
- import { l as $e, s as je } from "./bpmn-CtfWDaOY.js";
12
- import { A as Ue, b as Ye, E as Je, c as Ke, F as Qe, R as Xe, S as Ze, T as es, W as ss, e as os } from "./GatewayBranchEdge-CrgczPYJ.js";
13
- import { b as rs } from "./buildBackendPayload-4SwOp7St.js";
7
+ import { NodeTypeRegistry as he, baseNodeDefaults as me, conditionBranchDescriptor as ge, defineNode as Fe, endEventDescriptor as be, makeSubWorkflowDescriptor as Te, nodeTypeRegistry as we, notificationDescriptor as ye, restApiDescriptor as ke, startEventDescriptor as Se, subWorkflowDescriptor as xe, webhookTriggerDescriptor as ve, webhookTriggerTemplate as Ne } from "./nodeRegistry.js";
8
+ import { TemplateRegistry as Re, templateRegistry as Pe } from "./templateRegistry.js";
9
+ import { F as Ae, a as Ee, S as Ce, F as Ie, W as Be, b as Oe } from "./WorkflowExecutionHistory-CF0-D-7q.js";
10
+ import { d as ze } from "./messages-CRZgWFU-.js";
11
+ import { l as He, s as qe } from "./bpmn-CtfWDaOY.js";
12
+ import { A as _e, b as $e, E as je, c as Ge, F as Ue, R as Ye, S as Je, T as Ke, W as Qe, e as Xe } from "./GatewayBranchEdge-PsxBbEky.js";
13
+ import { b as es } from "./buildBackendPayload-4SwOp7St.js";
14
14
  class g {
15
15
  constructor() {
16
16
  this.channels = /* @__PURE__ */ new Map();
17
17
  }
18
- register(s, o) {
19
- this.channels.set(s, o);
18
+ register(s, r) {
19
+ this.channels.set(s, r);
20
20
  }
21
21
  get(s) {
22
22
  return this.channels.get(s);
23
23
  }
24
24
  list() {
25
- return Array.from(this.channels.entries()).map(([s, o]) => ({ key: s, ...o }));
25
+ return Array.from(this.channels.entries()).map(([s, r]) => ({ key: s, ...r }));
26
26
  }
27
27
  has(s) {
28
28
  return this.channels.has(s);
29
29
  }
30
30
  }
31
- const T = new g();
32
- function y(e) {
31
+ const k = new g();
32
+ function S(e) {
33
33
  const {
34
34
  currentNodeId: s,
35
- nodes: o,
35
+ nodes: r,
36
36
  getParents: t,
37
- getOutputSchema: a,
37
+ getOutputSchema: o,
38
38
  nodePath: i,
39
39
  nodeLabel: n,
40
- getNodeId: l = (r) => r.id
41
- } = e, c = o.find((r) => l(r) === s);
40
+ getNodeId: l = (a) => a.id
41
+ } = e, c = r.find((a) => l(a) === s);
42
42
  if (!c) return [];
43
- const h = b(c, o, t, l), p = [];
44
- for (const r of h) {
45
- const d = a(r);
43
+ const h = F(c, r, t, l), p = [];
44
+ for (const a of h) {
45
+ const d = o(a);
46
46
  if (!d || d.length === 0) continue;
47
- const u = i(r);
47
+ const u = i(a);
48
48
  p.push({
49
- label: n ? n(r) : u,
49
+ label: n ? n(a) : u,
50
50
  items: d.map((m) => f(m, u))
51
51
  });
52
52
  }
53
53
  return p;
54
54
  }
55
- function b(e, s, o, t) {
56
- const a = /* @__PURE__ */ new Set(), i = [], n = [...o(e, s)];
55
+ function F(e, s, r, t) {
56
+ const o = /* @__PURE__ */ new Set(), i = [], n = [...r(e, s)];
57
57
  for (; n.length > 0; ) {
58
58
  const l = n.shift(), c = t(l);
59
- a.has(c) || (a.add(c), i.push(l), n.push(...o(l, s)));
59
+ o.has(c) || (o.add(c), i.push(l), n.push(...r(l, s)));
60
60
  }
61
61
  return i;
62
62
  }
63
63
  function f(e, s) {
64
- const o = `${s}.${e.key}`, t = e.description ?? (e.sample !== void 0 && e.sample !== null ? String(e.sample) : void 0), a = { label: e.label, path: o };
65
- return t !== void 0 && (a.description = t), e.children && e.children.length > 0 && (a.children = e.children.map((i) => f(i, o))), a;
64
+ const r = `${s}.${e.key}`, t = e.description ?? (e.sample !== void 0 && e.sample !== null ? String(e.sample) : void 0), o = { label: e.label, path: r };
65
+ return t !== void 0 && (o.description = t), e.children && e.children.length > 0 && (o.children = e.children.map((i) => f(i, r))), o;
66
66
  }
67
67
  export {
68
- Ue as ActionNode,
69
- Ye as ApprovalNode,
68
+ _e as ActionNode,
69
+ $e as ApprovalNode,
70
70
  N as DynamicFormRenderer,
71
- Je as EdgeWithPlusLabel,
72
- Ke as EndNode,
73
- R as FF,
71
+ je as EdgeWithPlusLabel,
72
+ Ge as EndNode,
73
+ D as FF,
74
74
  ce as FIELD_TYPE_OPTIONS,
75
- Qe as FilterNode,
75
+ Ue as FilterNode,
76
76
  Ae as FlowForgeCanvas,
77
77
  Ee as FlowForgeHeader,
78
- D as FlowForgeRegistry,
78
+ R as FlowForgeRegistry,
79
79
  P as FlowForm,
80
80
  W as FormulaInput,
81
81
  A as InfiniteSelectField,
82
82
  he as NodeTypeRegistry,
83
83
  E as OptionsResolversProvider,
84
- Xe as RestApiNode,
84
+ Ye as RestApiNode,
85
85
  de as SchemaBuilder,
86
86
  pe as SchemaBuilderDrawer,
87
- Ze as StartNode,
88
- Ie as SubWorkflowPreviewDrawer,
89
- I as TablePickerField,
90
- De as TemplateRegistry,
91
- es as TriggerNode,
92
- C as VariablePicker,
93
- O as VariablePickerProvider,
94
- ss as WebhookTriggerNode,
95
- Ce as WorkflowCanvas,
96
- Oe as WorkflowExecutionHistory,
97
- Be as WorkflowTemplateLibrary,
98
- Ve as accessRequestSkeleton,
99
- B as astHasRefs,
87
+ Je as StartNode,
88
+ Ce as SubWorkflowPreviewDrawer,
89
+ C as TablePickerField,
90
+ Re as TemplateRegistry,
91
+ Ke as TriggerNode,
92
+ I as VariablePicker,
93
+ B as VariablePickerProvider,
94
+ Qe as WebhookTriggerNode,
95
+ Ie as WorkflowCanvas,
96
+ Be as WorkflowExecutionHistory,
97
+ Oe as WorkflowTemplateLibrary,
98
+ O as astHasRefs,
100
99
  V as astToTokens,
101
100
  me as baseNodeDefaults,
102
- rs as buildBackendPayload,
101
+ es as buildBackendPayload,
103
102
  z as buildEvaluationPayload,
104
103
  L as buildFieldConfig,
105
- q as buildFormulaPath,
106
- H as buildSelectStyles,
104
+ H as buildFormulaPath,
105
+ q as buildSelectStyles,
107
106
  M as buildValidationSchema,
108
- y as buildVariableGroups,
109
- os as builtInNodeTypes,
107
+ S as buildVariableGroups,
108
+ Xe as builtInNodeTypes,
110
109
  ge as conditionBranchDescriptor,
111
110
  _ as dataSourceRegistry,
112
- Me as defaultFlowForgeMessages,
113
- be as defineNode,
114
- Fe as endEventDescriptor,
111
+ ze as defaultFlowForgeMessages,
112
+ Fe as defineNode,
113
+ be as endEventDescriptor,
115
114
  $ as errorTextStyle,
116
115
  j as extractLabel,
117
116
  G as fieldRegistry,
@@ -119,30 +118,27 @@ export {
119
118
  Y as helperTextStyle,
120
119
  J as inputStyle,
121
120
  K as isFormula,
122
- $e as loadWorkflowFromBpmn,
123
- ke as makeSubWorkflowDescriptor,
121
+ He as loadWorkflowFromBpmn,
122
+ Te as makeSubWorkflowDescriptor,
124
123
  we as nodeTypeRegistry,
125
- T as notificationChannelRegistry,
126
- Se as notificationDescriptor,
127
- ze as offboardingSkeleton,
124
+ k as notificationChannelRegistry,
125
+ ye as notificationDescriptor,
128
126
  Q as parseToAST,
129
- Te as restApiDescriptor,
130
- je as saveWorkflowToBpmn,
127
+ ke as restApiDescriptor,
128
+ qe as saveWorkflowToBpmn,
131
129
  X as serializeAST,
132
130
  Z as serializeASTAsConfig,
133
131
  ee as serializeConditionExpressions,
134
- ye as startEventDescriptor,
132
+ Se as startEventDescriptor,
135
133
  se as stripFormulaTokens,
136
134
  xe as subWorkflowDescriptor,
137
135
  Pe as templateRegistry,
138
- oe as tokenize,
139
- ae as unwrapFormula,
140
- re as useDynamicOptions,
136
+ re as tokenize,
137
+ oe as unwrapFormula,
138
+ ae as useDynamicOptions,
141
139
  ue as useFlowForm,
142
140
  te as useOptionsResolvers,
143
141
  ie as useVariablePickerContext,
144
- Le as userOnboardingSkeleton,
145
- qe as webhookIntegrationSkeleton,
146
142
  ve as webhookTriggerDescriptor,
147
143
  Ne as webhookTriggerTemplate,
148
144
  ne as wrapFormula
@@ -1,2 +1,2 @@
1
- "use strict";const e={addTriggerTitle:"Add Trigger",addTriggerTooltip:"Click to add a trigger for your workflow",addTriggerButton:"Add Trigger",chooseTrigger:"Choose a trigger to start the workflow.",noTriggers:"No triggers registered.",addStepTitle:"Add Step",chooseAction:"Choose an action to add to the workflow.",noActions:"No actions available for this trigger.",configureStep:"Configure Step",loadingConfiguration:"Loading configuration...",noConfigurationNeeded:"No configuration needed for this step.",save:"Save",cancel:"Cancel"},r=o=>({...e,...o??{}});exports.defaultFlowForgeMessages=e;exports.mergeMessages=r;
2
- //# sourceMappingURL=messages-O9Tw_XXR.js.map
1
+ "use strict";const e={addTriggerTitle:"Add Trigger",addTriggerTooltip:"Click to add a trigger for your workflow",addTriggerButton:"Add Trigger",chooseTrigger:"Choose a trigger to start the workflow.",noTriggers:"No triggers registered.",addStepTitle:"Add Step",chooseAction:"Choose an action to add to the workflow.",noActions:"No actions available for this trigger.",configureStep:"Configure Step",loadingConfiguration:"Loading configuration...",noConfigurationNeeded:"No configuration needed for this step.",save:"Save",cancel:"Cancel",eventTriggerSourceTitle:"Event Trigger Source",selectTriggerTitle:"Select Trigger",schedulerTriggerTitle:"Scheduler Trigger",schedulerToBeConfigured:"Scheduler to be configured",noSourceSelected:"No source selected",selectTriggerCta:"Click to select a trigger to start your workflow",clickEditToConfigure:"Click edit to configure"},o=r=>({...e,...r??{}});exports.defaultFlowForgeMessages=e;exports.mergeMessages=o;
2
+ //# sourceMappingURL=messages-Bg7b9RbI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages-Bg7b9RbI.js","sources":["../src/WorkflowCanvas/messages.ts"],"sourcesContent":["import { FlowForgeMessages } from './types';\r\n\r\nexport const defaultFlowForgeMessages: FlowForgeMessages = {\r\n addTriggerTitle: 'Add Trigger',\r\n addTriggerTooltip: 'Click to add a trigger for your workflow',\r\n addTriggerButton: 'Add Trigger',\r\n chooseTrigger: 'Choose a trigger to start the workflow.',\r\n noTriggers: 'No triggers registered.',\r\n addStepTitle: 'Add Step',\r\n chooseAction: 'Choose an action to add to the workflow.',\r\n noActions: 'No actions available for this trigger.',\r\n configureStep: 'Configure Step',\r\n loadingConfiguration: 'Loading configuration...',\r\n noConfigurationNeeded: 'No configuration needed for this step.',\r\n save: 'Save',\r\n cancel: 'Cancel',\r\n eventTriggerSourceTitle: 'Event Trigger Source',\r\n selectTriggerTitle: 'Select Trigger',\r\n schedulerTriggerTitle: 'Scheduler Trigger',\r\n schedulerToBeConfigured: 'Scheduler to be configured',\r\n noSourceSelected: 'No source selected',\r\n selectTriggerCta: 'Click to select a trigger to start your workflow',\r\n clickEditToConfigure: 'Click edit to configure',\r\n};\r\n\r\nexport const mergeMessages = (messages?: Partial<FlowForgeMessages>): FlowForgeMessages => ({\r\n ...defaultFlowForgeMessages,\r\n ...(messages ?? {}),\r\n});\r\n"],"names":["defaultFlowForgeMessages","mergeMessages","messages"],"mappings":"aAEO,MAAMA,EAA8C,CACzD,gBAAiB,cACjB,kBAAmB,2CACnB,iBAAkB,cAClB,cAAe,0CACf,WAAY,0BACZ,aAAc,WACd,aAAc,2CACd,UAAW,yCACX,cAAe,iBACf,qBAAsB,2BACtB,sBAAuB,yCACvB,KAAM,OACN,OAAQ,SACR,wBAAyB,uBACzB,mBAAoB,iBACpB,sBAAuB,oBACvB,wBAAyB,6BACzB,iBAAkB,qBAClB,iBAAkB,mDAClB,qBAAsB,yBACxB,EAEaC,EAAiBC,IAA8D,CAC1F,GAAGF,EACH,GAAIE,GAAY,CAAA,CAClB"}
@@ -1,4 +1,4 @@
1
- const e = {
1
+ const r = {
2
2
  addTriggerTitle: "Add Trigger",
3
3
  addTriggerTooltip: "Click to add a trigger for your workflow",
4
4
  addTriggerButton: "Add Trigger",
@@ -11,13 +11,20 @@ const e = {
11
11
  loadingConfiguration: "Loading configuration...",
12
12
  noConfigurationNeeded: "No configuration needed for this step.",
13
13
  save: "Save",
14
- cancel: "Cancel"
15
- }, r = (o) => ({
16
- ...e,
17
- ...o ?? {}
14
+ cancel: "Cancel",
15
+ eventTriggerSourceTitle: "Event Trigger Source",
16
+ selectTriggerTitle: "Select Trigger",
17
+ schedulerTriggerTitle: "Scheduler Trigger",
18
+ schedulerToBeConfigured: "Scheduler to be configured",
19
+ noSourceSelected: "No source selected",
20
+ selectTriggerCta: "Click to select a trigger to start your workflow",
21
+ clickEditToConfigure: "Click edit to configure"
22
+ }, o = (e) => ({
23
+ ...r,
24
+ ...e ?? {}
18
25
  });
19
26
  export {
20
- e as d,
21
- r as m
27
+ r as d,
28
+ o as m
22
29
  };
23
- //# sourceMappingURL=messages-CO299wPN.js.map
30
+ //# sourceMappingURL=messages-CRZgWFU-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages-CRZgWFU-.js","sources":["../src/WorkflowCanvas/messages.ts"],"sourcesContent":["import { FlowForgeMessages } from './types';\r\n\r\nexport const defaultFlowForgeMessages: FlowForgeMessages = {\r\n addTriggerTitle: 'Add Trigger',\r\n addTriggerTooltip: 'Click to add a trigger for your workflow',\r\n addTriggerButton: 'Add Trigger',\r\n chooseTrigger: 'Choose a trigger to start the workflow.',\r\n noTriggers: 'No triggers registered.',\r\n addStepTitle: 'Add Step',\r\n chooseAction: 'Choose an action to add to the workflow.',\r\n noActions: 'No actions available for this trigger.',\r\n configureStep: 'Configure Step',\r\n loadingConfiguration: 'Loading configuration...',\r\n noConfigurationNeeded: 'No configuration needed for this step.',\r\n save: 'Save',\r\n cancel: 'Cancel',\r\n eventTriggerSourceTitle: 'Event Trigger Source',\r\n selectTriggerTitle: 'Select Trigger',\r\n schedulerTriggerTitle: 'Scheduler Trigger',\r\n schedulerToBeConfigured: 'Scheduler to be configured',\r\n noSourceSelected: 'No source selected',\r\n selectTriggerCta: 'Click to select a trigger to start your workflow',\r\n clickEditToConfigure: 'Click edit to configure',\r\n};\r\n\r\nexport const mergeMessages = (messages?: Partial<FlowForgeMessages>): FlowForgeMessages => ({\r\n ...defaultFlowForgeMessages,\r\n ...(messages ?? {}),\r\n});\r\n"],"names":["defaultFlowForgeMessages","mergeMessages","messages"],"mappings":"AAEO,MAAMA,IAA8C;AAAA,EACzD,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,cAAc;AAAA,EACd,WAAW;AAAA,EACX,eAAe;AAAA,EACf,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,yBAAyB;AAAA,EACzB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,sBAAsB;AACxB,GAEaC,IAAgB,CAACC,OAA8D;AAAA,EAC1F,GAAGF;AAAA,EACH,GAAIE,KAAY,CAAA;AAClB;"}
@@ -59,12 +59,6 @@ declare interface ConditionFieldDef {
59
59
  value: string;
60
60
  label: string;
61
61
  }>;
62
- /**
63
- * Declarative dynamic options — same shape as `FieldDescriptor.optionsSource`.
64
- * `dependsOn` resolves against the OUTER form values (not the condition entry),
65
- * so a condition column can depend on another top-level field (e.g. attributes
66
- * scoped by `applicationUuid`).
67
- */
68
62
  optionsSource?: OptionsSource;
69
63
  /** When true, renders a FormulaInput chip editor instead of a plain <input> */
70
64
  formula?: boolean;
@@ -298,26 +292,8 @@ export declare const notificationDescriptor: NodeDescriptor;
298
292
  declare interface OptionsSource {
299
293
  /** Resolver id — must match a key in the host's `optionsResolvers` map. */
300
294
  id: string;
301
- /**
302
- * Other field values this resolver depends on. Two shapes accepted:
303
- * - `string[]` — pass through verbatim ({ fieldA: values.fieldA, ... })
304
- * - `Record<arg, fieldName>` — rename parent values for the resolver
305
- *
306
- * When any dep value changes, the cache key for this field invalidates
307
- * and the resolver re-fires.
308
- */
309
295
  dependsOn?: string[] | Record<string, string>;
310
- /**
311
- * Static params merged into the deps object for every call. Use for
312
- * "URL template via the generic resolver" style:
313
- * { id: 'default', params: { url: '/groups', valueKey: 'uuid' } }
314
- */
315
296
  params?: Record<string, unknown>;
316
- /**
317
- * Lookup individual options by value (edit-mode hydration). When set,
318
- * the field calls this resolver with `{ ids: [...] }` to render labels
319
- * for already-selected values that aren't in the current page.
320
- */
321
297
  resolveValueId?: string;
322
298
  }
323
299
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@notmrabhi/flowforge",
3
- "version": "0.1.53",
3
+ "version": "0.1.55",
4
4
  "description": "Schema-driven form renderer and workflow engine for miniOrange IAM",
5
5
  "license": "UNLICENSED",
6
6
  "author": "miniOrange",