@mindlogic-ai/logician-ui 3.1.0 → 3.2.0-alpha.0
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/components/Icon/_constants/iconList.d.ts +1 -1
- package/dist/components/Icon/_constants/iconList.d.ts.map +1 -1
- package/dist/components/Icon/_constants/iconList.js +18 -0
- package/dist/components/Icon/_constants/iconList.js.map +1 -1
- package/dist/components/Icon/_constants/iconList.mjs +20 -2
- package/dist/components/Icon/_constants/iconList.mjs.map +1 -1
- package/dist/components/Icon/index.d.ts +2 -1
- package/dist/components/Icon/index.d.ts.map +1 -1
- package/dist/components/Icon/index.js +20 -1
- package/dist/components/Icon/index.js.map +1 -1
- package/dist/components/Icon/index.mjs +4 -2
- package/dist/components/Icon/index.mjs.map +1 -1
- package/dist/components/Workflow/Workflow.d.ts +3 -0
- package/dist/components/Workflow/Workflow.d.ts.map +1 -0
- package/dist/components/Workflow/Workflow.js +109 -0
- package/dist/components/Workflow/Workflow.js.map +1 -0
- package/dist/components/Workflow/Workflow.mjs +107 -0
- package/dist/components/Workflow/Workflow.mjs.map +1 -0
- package/dist/components/Workflow/Workflow.translations.json.js +164 -0
- package/dist/components/Workflow/Workflow.translations.json.js.map +1 -0
- package/dist/components/Workflow/Workflow.translations.json.mjs +138 -0
- package/dist/components/Workflow/Workflow.translations.json.mjs.map +1 -0
- package/dist/components/Workflow/Workflow.types.d.ts +435 -0
- package/dist/components/Workflow/Workflow.types.d.ts.map +1 -0
- package/dist/components/Workflow/Workflow.types.js +19 -0
- package/dist/components/Workflow/Workflow.types.js.map +1 -0
- package/dist/components/Workflow/Workflow.types.mjs +16 -0
- package/dist/components/Workflow/Workflow.types.mjs.map +1 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.d.ts +10 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.d.ts.map +1 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.js +163 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.js.map +1 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.mjs +159 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.mjs.map +1 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.types.d.ts +117 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.types.d.ts.map +1 -0
- package/dist/components/Workflow/WorkflowContext/index.d.ts +3 -0
- package/dist/components/Workflow/WorkflowContext/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.d.ts +19 -0
- package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.js +44 -0
- package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.js.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.mjs +42 -0
- package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.mjs.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.d.ts +10 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.js +531 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.js.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.mjs +529 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.mjs.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.styles.d.ts +53 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.styles.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.styles.js +96 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.styles.js.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.styles.mjs +93 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.styles.mjs.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/CanvasControls.d.ts +27 -0
- package/dist/components/Workflow/canvas/Canvas/CanvasControls.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/CanvasControls.js +70 -0
- package/dist/components/Workflow/canvas/Canvas/CanvasControls.js.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/CanvasControls.mjs +68 -0
- package/dist/components/Workflow/canvas/Canvas/CanvasControls.mjs.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.d.ts +10 -0
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.js +106 -0
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.js.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.mjs +104 -0
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.mjs.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.d.ts +13 -0
- package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.js +18 -0
- package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.js.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.mjs +16 -0
- package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.mjs.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/index.d.ts +2 -0
- package/dist/components/Workflow/canvas/Canvas/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.d.ts +30 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.js +34 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.js.map +1 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.mjs +32 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.mjs.map +1 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/index.d.ts +2 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.d.ts +37 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.js +33 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.js.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.mjs +31 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.mjs.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.d.ts +16 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.js +54 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.js.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.mjs +52 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.mjs.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.d.ts +27 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.js +178 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.js.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.mjs +176 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.mjs.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/index.d.ts +3 -0
- package/dist/components/Workflow/canvas/DrawerShell/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.d.ts +12 -0
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.js +68 -0
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.js.map +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.mjs +66 -0
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.mjs.map +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.d.ts +19 -0
- package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.js +35 -0
- package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.js.map +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.mjs +32 -0
- package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.mjs.map +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/index.d.ts +3 -0
- package/dist/components/Workflow/canvas/EdgeInspector/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.d.ts +54 -0
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.js +56 -0
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.js.map +1 -0
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.mjs +54 -0
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.mjs.map +1 -0
- package/dist/components/Workflow/canvas/FieldWrapper/index.d.ts +3 -0
- package/dist/components/Workflow/canvas/FieldWrapper/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.d.ts +16 -0
- package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.js +25 -0
- package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.js.map +1 -0
- package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.mjs +22 -0
- package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.mjs.map +1 -0
- package/dist/components/Workflow/canvas/FloatingCard/index.d.ts +2 -0
- package/dist/components/Workflow/canvas/FloatingCard/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.d.ts +14 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.js +61 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.js.map +1 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.mjs +59 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.mjs.map +1 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.types.d.ts +11 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.types.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/GenericNode/index.d.ts +3 -0
- package/dist/components/Workflow/canvas/GenericNode/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.d.ts +15 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.js +145 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.js.map +1 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.mjs +143 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.mjs.map +1 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/index.d.ts +2 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.d.ts +10 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.js +21 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.js.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.mjs +19 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.mjs.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.styles.d.ts +18 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.styles.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.styles.js +40 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.styles.js.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.styles.mjs +37 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.styles.mjs.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.types.d.ts +15 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.types.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/index.d.ts +4 -0
- package/dist/components/Workflow/canvas/IconTile/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/IssueList/IssueList.d.ts +24 -0
- package/dist/components/Workflow/canvas/IssueList/IssueList.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/IssueList/IssueList.js +34 -0
- package/dist/components/Workflow/canvas/IssueList/IssueList.js.map +1 -0
- package/dist/components/Workflow/canvas/IssueList/IssueList.mjs +32 -0
- package/dist/components/Workflow/canvas/IssueList/IssueList.mjs.map +1 -0
- package/dist/components/Workflow/canvas/IssueList/index.d.ts +2 -0
- package/dist/components/Workflow/canvas/IssueList/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.d.ts +9 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.js +94 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.js.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.mjs +92 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.mjs.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.d.ts +7 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.js +13 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.js.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.mjs +10 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.mjs.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.d.ts +10 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.js +28 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.js.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.mjs +26 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.mjs.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/index.d.ts +4 -0
- package/dist/components/Workflow/canvas/NodePalette/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.d.ts +3 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.js +137 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.js.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.mjs +135 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.mjs.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.d.ts +66 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.js +87 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.js.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.mjs +77 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.mjs.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.types.d.ts +35 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.types.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/index.d.ts +4 -0
- package/dist/components/Workflow/canvas/NodeShell/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.d.ts +15 -0
- package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.js +14 -0
- package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.js.map +1 -0
- package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.mjs +12 -0
- package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.mjs.map +1 -0
- package/dist/components/Workflow/canvas/SeverityDot/index.d.ts +2 -0
- package/dist/components/Workflow/canvas/SeverityDot/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/issueSeverity.d.ts +23 -0
- package/dist/components/Workflow/canvas/issueSeverity.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/issueSeverity.js +51 -0
- package/dist/components/Workflow/canvas/issueSeverity.js.map +1 -0
- package/dist/components/Workflow/canvas/issueSeverity.mjs +47 -0
- package/dist/components/Workflow/canvas/issueSeverity.mjs.map +1 -0
- package/dist/components/Workflow/canvas/useFieldFocusRequest.d.ts +14 -0
- package/dist/components/Workflow/canvas/useFieldFocusRequest.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/useFieldFocusRequest.js +48 -0
- package/dist/components/Workflow/canvas/useFieldFocusRequest.js.map +1 -0
- package/dist/components/Workflow/canvas/useFieldFocusRequest.mjs +46 -0
- package/dist/components/Workflow/canvas/useFieldFocusRequest.mjs.map +1 -0
- package/dist/components/Workflow/canvas/workflowLabelProps.d.ts +12 -0
- package/dist/components/Workflow/canvas/workflowLabelProps.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/workflowLabelProps.js +17 -0
- package/dist/components/Workflow/canvas/workflowLabelProps.js.map +1 -0
- package/dist/components/Workflow/canvas/workflowLabelProps.mjs +15 -0
- package/dist/components/Workflow/canvas/workflowLabelProps.mjs.map +1 -0
- package/dist/components/Workflow/connectionRules.d.ts +59 -0
- package/dist/components/Workflow/connectionRules.d.ts.map +1 -0
- package/dist/components/Workflow/connectionRules.js +150 -0
- package/dist/components/Workflow/connectionRules.js.map +1 -0
- package/dist/components/Workflow/connectionRules.mjs +145 -0
- package/dist/components/Workflow/connectionRules.mjs.map +1 -0
- package/dist/components/Workflow/createNode.d.ts +27 -0
- package/dist/components/Workflow/createNode.d.ts.map +1 -0
- package/dist/components/Workflow/createNode.js +66 -0
- package/dist/components/Workflow/createNode.js.map +1 -0
- package/dist/components/Workflow/createNode.mjs +62 -0
- package/dist/components/Workflow/createNode.mjs.map +1 -0
- package/dist/components/Workflow/graphHistory.d.ts +23 -0
- package/dist/components/Workflow/graphHistory.d.ts.map +1 -0
- package/dist/components/Workflow/graphHistory.js +73 -0
- package/dist/components/Workflow/graphHistory.js.map +1 -0
- package/dist/components/Workflow/graphHistory.mjs +70 -0
- package/dist/components/Workflow/graphHistory.mjs.map +1 -0
- package/dist/components/Workflow/graphObserver.d.ts +13 -0
- package/dist/components/Workflow/graphObserver.d.ts.map +1 -0
- package/dist/components/Workflow/graphObserver.js +11 -0
- package/dist/components/Workflow/graphObserver.js.map +1 -0
- package/dist/components/Workflow/graphObserver.mjs +8 -0
- package/dist/components/Workflow/graphObserver.mjs.map +1 -0
- package/dist/components/Workflow/graphReducer.d.ts +75 -0
- package/dist/components/Workflow/graphReducer.d.ts.map +1 -0
- package/dist/components/Workflow/graphReducer.js +122 -0
- package/dist/components/Workflow/graphReducer.js.map +1 -0
- package/dist/components/Workflow/graphReducer.mjs +119 -0
- package/dist/components/Workflow/graphReducer.mjs.map +1 -0
- package/dist/components/Workflow/index.d.ts +22 -0
- package/dist/components/Workflow/index.d.ts.map +1 -0
- package/dist/components/Workflow/layout/autoLayout.d.ts +49 -0
- package/dist/components/Workflow/layout/autoLayout.d.ts.map +1 -0
- package/dist/components/Workflow/layout/autoLayout.js +149 -0
- package/dist/components/Workflow/layout/autoLayout.js.map +1 -0
- package/dist/components/Workflow/layout/autoLayout.mjs +146 -0
- package/dist/components/Workflow/layout/autoLayout.mjs.map +1 -0
- package/dist/components/Workflow/stories/toyNodeTypes.d.ts +40 -0
- package/dist/components/Workflow/stories/toyNodeTypes.d.ts.map +1 -0
- package/dist/components/Workflow/useWorkflowIssueMessage.d.ts +15 -0
- package/dist/components/Workflow/useWorkflowIssueMessage.d.ts.map +1 -0
- package/dist/components/Workflow/useWorkflowIssueMessage.js +45 -0
- package/dist/components/Workflow/useWorkflowIssueMessage.js.map +1 -0
- package/dist/components/Workflow/useWorkflowIssueMessage.mjs +43 -0
- package/dist/components/Workflow/useWorkflowIssueMessage.mjs.map +1 -0
- package/dist/components/Workflow/useWorkflowKeyboard.d.ts +10 -0
- package/dist/components/Workflow/useWorkflowKeyboard.d.ts.map +1 -0
- package/dist/components/Workflow/useWorkflowKeyboard.js +116 -0
- package/dist/components/Workflow/useWorkflowKeyboard.js.map +1 -0
- package/dist/components/Workflow/useWorkflowKeyboard.mjs +114 -0
- package/dist/components/Workflow/useWorkflowKeyboard.mjs.map +1 -0
- package/dist/icons.js +17 -0
- package/dist/icons.js.map +1 -1
- package/dist/icons.mjs +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +14 -0
- package/dist/index.mjs.map +1 -1
- package/dist/test-support/setup.d.ts +5 -0
- package/dist/test-support/setup.d.ts.map +1 -0
- package/package.json +10 -2
- package/src/components/Icon/_constants/iconList.ts +35 -0
- package/src/components/Icon/index.tsx +20 -0
- package/src/components/Workflow/README.md +362 -0
- package/src/components/Workflow/Workflow.translations.json +112 -0
- package/src/components/Workflow/Workflow.tsx +189 -0
- package/src/components/Workflow/Workflow.types.ts +496 -0
- package/src/components/Workflow/WorkflowContext/WorkflowContext.tsx +215 -0
- package/src/components/Workflow/WorkflowContext/WorkflowContext.types.ts +122 -0
- package/src/components/Workflow/WorkflowContext/index.ts +10 -0
- package/src/components/Workflow/WorkflowContext/workflowSelection.test.tsx +93 -0
- package/src/components/Workflow/canvas/Canvas/BranchLabelBadge.tsx +69 -0
- package/src/components/Workflow/canvas/Canvas/Canvas.styles.ts +91 -0
- package/src/components/Workflow/canvas/Canvas/Canvas.tsx +773 -0
- package/src/components/Workflow/canvas/Canvas/CanvasControls.tsx +178 -0
- package/src/components/Workflow/canvas/Canvas/LabeledEdge.tsx +198 -0
- package/src/components/Workflow/canvas/Canvas/edgeLabelVariant.test.ts +26 -0
- package/src/components/Workflow/canvas/Canvas/edgeLabelVariant.ts +23 -0
- package/src/components/Workflow/canvas/Canvas/index.ts +1 -0
- package/src/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.tsx +96 -0
- package/src/components/Workflow/canvas/CollapsibleSection/index.ts +4 -0
- package/src/components/Workflow/canvas/DrawerShell/DrawerHeader.tsx +104 -0
- package/src/components/Workflow/canvas/DrawerShell/DrawerIssues.tsx +115 -0
- package/src/components/Workflow/canvas/DrawerShell/DrawerShell.tsx +408 -0
- package/src/components/Workflow/canvas/DrawerShell/index.ts +2 -0
- package/src/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.tsx +135 -0
- package/src/components/Workflow/canvas/EdgeInspector/endpointTitle.ts +38 -0
- package/src/components/Workflow/canvas/EdgeInspector/index.ts +2 -0
- package/src/components/Workflow/canvas/FieldWrapper/FieldWrapper.tsx +118 -0
- package/src/components/Workflow/canvas/FieldWrapper/index.ts +6 -0
- package/src/components/Workflow/canvas/FloatingCard/FloatingCard.tsx +37 -0
- package/src/components/Workflow/canvas/FloatingCard/index.ts +1 -0
- package/src/components/Workflow/canvas/GenericNode/GenericNode.tsx +114 -0
- package/src/components/Workflow/canvas/GenericNode/GenericNode.types.ts +10 -0
- package/src/components/Workflow/canvas/GenericNode/index.ts +5 -0
- package/src/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.tsx +284 -0
- package/src/components/Workflow/canvas/GraphErrorBanner/index.ts +1 -0
- package/src/components/Workflow/canvas/IconTile/IconTile.styles.ts +40 -0
- package/src/components/Workflow/canvas/IconTile/IconTile.tsx +36 -0
- package/src/components/Workflow/canvas/IconTile/IconTile.types.ts +13 -0
- package/src/components/Workflow/canvas/IconTile/index.ts +7 -0
- package/src/components/Workflow/canvas/IssueList/IssueList.tsx +84 -0
- package/src/components/Workflow/canvas/IssueList/index.ts +1 -0
- package/src/components/Workflow/canvas/NodePalette/NodePalette.styles.ts +7 -0
- package/src/components/Workflow/canvas/NodePalette/NodePalette.tsx +180 -0
- package/src/components/Workflow/canvas/NodePalette/NodePaletteToggle.tsx +39 -0
- package/src/components/Workflow/canvas/NodePalette/index.ts +3 -0
- package/src/components/Workflow/canvas/NodeShell/NodeShell.styles.ts +84 -0
- package/src/components/Workflow/canvas/NodeShell/NodeShell.tsx +321 -0
- package/src/components/Workflow/canvas/NodeShell/NodeShell.types.ts +45 -0
- package/src/components/Workflow/canvas/NodeShell/index.ts +8 -0
- package/src/components/Workflow/canvas/SeverityDot/SeverityDot.tsx +33 -0
- package/src/components/Workflow/canvas/SeverityDot/index.ts +1 -0
- package/src/components/Workflow/canvas/issueSeverity.ts +48 -0
- package/src/components/Workflow/canvas/useFieldFocusRequest.ts +54 -0
- package/src/components/Workflow/canvas/workflowLabelProps.ts +11 -0
- package/src/components/Workflow/connectionRules.test.ts +326 -0
- package/src/components/Workflow/connectionRules.ts +190 -0
- package/src/components/Workflow/createNode.test.ts +61 -0
- package/src/components/Workflow/createNode.ts +67 -0
- package/src/components/Workflow/graphHistory.test.ts +178 -0
- package/src/components/Workflow/graphHistory.ts +91 -0
- package/src/components/Workflow/graphObserver.ts +21 -0
- package/src/components/Workflow/graphReducer.test.ts +314 -0
- package/src/components/Workflow/graphReducer.ts +196 -0
- package/src/components/Workflow/index.ts +74 -0
- package/src/components/Workflow/layout/autoLayout.test.ts +170 -0
- package/src/components/Workflow/layout/autoLayout.ts +200 -0
- package/src/components/Workflow/stories/Workflow.stories.tsx +111 -0
- package/src/components/Workflow/stories/toyNodeTypes.tsx +146 -0
- package/src/components/Workflow/useWorkflowIssueMessage.test.ts +101 -0
- package/src/components/Workflow/useWorkflowIssueMessage.ts +49 -0
- package/src/components/Workflow/useWorkflowKeyboard.ts +126 -0
- package/src/index.ts +1 -0
- package/src/test-support/setup.ts +11 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var react = require('@xyflow/react');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Edge defaults. Stroke comes from a theme token (slate.700) via CSS var
|
|
8
|
+
* since React Flow takes SVG-style props, not Chakra ones. The label
|
|
9
|
+
* itself is rendered through the `labeled` custom edge so its
|
|
10
|
+
* typography uses the design system's semantic `Subtext` primitive —
|
|
11
|
+
* see `LabeledEdge.tsx`. The arrowhead makes each edge's direction
|
|
12
|
+
* self-describing rather than implied by left→right placement alone.
|
|
13
|
+
*/
|
|
14
|
+
const defaultEdgeOptions = {
|
|
15
|
+
type: 'labeled',
|
|
16
|
+
style: {
|
|
17
|
+
stroke: 'var(--chakra-colors-slate-700)',
|
|
18
|
+
strokeWidth: 1.5,
|
|
19
|
+
},
|
|
20
|
+
markerEnd: {
|
|
21
|
+
type: react.MarkerType.ArrowClosed,
|
|
22
|
+
color: 'var(--chakra-colors-slate-700)',
|
|
23
|
+
width: 18,
|
|
24
|
+
height: 18,
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Selection outline for edges. React Flow toggles `.selected` on the
|
|
29
|
+
* edge group; we layer an outline on the path so the user gets visual
|
|
30
|
+
* feedback before pressing Delete. Scoped via the Canvas wrapper's
|
|
31
|
+
* `css` prop rather than a global stylesheet.
|
|
32
|
+
*/
|
|
33
|
+
const canvasSelectionCss = {
|
|
34
|
+
// Ports paint as 8px dots (see PORT_STYLE) but that's a pixel-hunt drag
|
|
35
|
+
// target; a pseudo-element participates in its parent's hit-testing, so this
|
|
36
|
+
// pads every handle's grab area to ~24px without changing the visual dot.
|
|
37
|
+
'& .react-flow__handle::after': {
|
|
38
|
+
content: '""',
|
|
39
|
+
position: 'absolute',
|
|
40
|
+
inset: '-8px',
|
|
41
|
+
},
|
|
42
|
+
// Hover feedback: thicken/darken the path so an edge reads as grabbable
|
|
43
|
+
// before it's selected. Listed before the `.selected` rule (equal
|
|
44
|
+
// specificity) so selection styling wins when an edge is both.
|
|
45
|
+
'& .react-flow__edge:hover .react-flow__edge-path': {
|
|
46
|
+
stroke: 'var(--chakra-colors-slate-900)',
|
|
47
|
+
strokeWidth: 2,
|
|
48
|
+
},
|
|
49
|
+
'& .react-flow__edge.selected .react-flow__edge-path': {
|
|
50
|
+
stroke: 'var(--chakra-colors-primary-main)',
|
|
51
|
+
strokeWidth: 2.5,
|
|
52
|
+
filter: 'drop-shadow(0 0 4px var(--chakra-colors-primary-lighter))',
|
|
53
|
+
},
|
|
54
|
+
'& .react-flow__edge.selected .react-flow__edge-interaction': {
|
|
55
|
+
stroke: 'var(--chakra-colors-primary-main)',
|
|
56
|
+
},
|
|
57
|
+
// React Flow's stock zoom/lock controls are fixed white — point its theme
|
|
58
|
+
// vars at our tokens so the cluster follows the color mode (light values match
|
|
59
|
+
// the stock look). A solid surface (rather than transparent buttons) keeps the
|
|
60
|
+
// icons legible as the canvas pans content beneath the cluster, and matches the
|
|
61
|
+
// minimap panel in the opposite corner. Frame it like the node cards — md
|
|
62
|
+
// radius + slate.200 border + shadow — so it reads as a deliberate floating
|
|
63
|
+
// toolbar; the border carries the definition in dark mode where the stock
|
|
64
|
+
// shadow is invisible on the dark canvas. `overflow: hidden` clips the stacked
|
|
65
|
+
// buttons to the rounded corners (tooltips portal out, so they aren't clipped).
|
|
66
|
+
'& .react-flow__controls': {
|
|
67
|
+
'--xy-controls-button-background-color': 'var(--chakra-colors-bg-surface)',
|
|
68
|
+
'--xy-controls-button-background-color-hover': 'var(--chakra-colors-slate-100)',
|
|
69
|
+
'--xy-controls-button-color': 'var(--chakra-colors-slate-1200)',
|
|
70
|
+
'--xy-controls-button-color-hover': 'var(--chakra-colors-slate-1500)',
|
|
71
|
+
'--xy-controls-button-border-color': 'var(--chakra-colors-slate-200)',
|
|
72
|
+
'--xy-controls-box-shadow': 'var(--chakra-shadows-sm)',
|
|
73
|
+
borderRadius: 'var(--chakra-radii-md)',
|
|
74
|
+
border: '1px solid var(--chakra-colors-slate-200)',
|
|
75
|
+
overflow: 'hidden',
|
|
76
|
+
},
|
|
77
|
+
// Our control glyphs (lucide Plus/Minus + Tabler arrows/lock/maximize/sitemap)
|
|
78
|
+
// are stroke-based — `fill="none"`, `stroke="currentColor"`. React Flow's stock
|
|
79
|
+
// CSS forces `fill: currentColor` on control-button SVGs (its own icons are
|
|
80
|
+
// solid), which fills these outline icons into blobs (the lock rendered as a
|
|
81
|
+
// solid lozenge) and, via its `:disabled svg { fill-opacity: .4 }` companion,
|
|
82
|
+
// painted a translucent gray inside the disabled undo/redo arrows. Restore the
|
|
83
|
+
// intended stroke-only rendering.
|
|
84
|
+
'& .react-flow__controls-button svg': {
|
|
85
|
+
fill: 'none',
|
|
86
|
+
},
|
|
87
|
+
// With fill removed, RF's fill-opacity disabled cue is a no-op — dim the whole
|
|
88
|
+
// glyph instead so disabled undo/redo still read as inactive.
|
|
89
|
+
'& .react-flow__controls-button:disabled svg': {
|
|
90
|
+
opacity: 0.4,
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
exports.canvasSelectionCss = canvasSelectionCss;
|
|
95
|
+
exports.defaultEdgeOptions = defaultEdgeOptions;
|
|
96
|
+
//# sourceMappingURL=Canvas.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Canvas.styles.js","sources":["../../../../../src/components/Workflow/canvas/Canvas/Canvas.styles.ts"],"sourcesContent":[null],"names":["MarkerType"],"mappings":";;;;;AAEA;;;;;;;AAOG;AACI,MAAM,kBAAkB,GAAuB;AACpD,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,KAAK,EAAE;AACL,QAAA,MAAM,EAAE,gCAAgC;AACxC,QAAA,WAAW,EAAE,GAAG;AACjB,KAAA;AACD,IAAA,SAAS,EAAE;QACT,IAAI,EAAEA,gBAAU,CAAC,WAAW;AAC5B,QAAA,KAAK,EAAE,gCAAgC;AACvC,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,MAAM,EAAE,EAAE;AACX,KAAA;;AAGH;;;;;AAKG;AACI,MAAM,kBAAkB,GAAG;;;;AAIhC,IAAA,8BAA8B,EAAE;AAC9B,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;;;;AAID,IAAA,kDAAkD,EAAE;AAClD,QAAA,MAAM,EAAE,gCAAgC;AACxC,QAAA,WAAW,EAAE,CAAC;AACf,KAAA;AACD,IAAA,qDAAqD,EAAE;AACrD,QAAA,MAAM,EAAE,mCAAmC;AAC3C,QAAA,WAAW,EAAE,GAAG;AAChB,QAAA,MAAM,EAAE,2DAA2D;AACpE,KAAA;AACD,IAAA,4DAA4D,EAAE;AAC5D,QAAA,MAAM,EAAE,mCAAmC;AAC5C,KAAA;;;;;;;;;;AAUD,IAAA,yBAAyB,EAAE;AACzB,QAAA,uCAAuC,EAAE,iCAAiC;AAC1E,QAAA,6CAA6C,EAC3C,gCAAgC;AAClC,QAAA,4BAA4B,EAAE,iCAAiC;AAC/D,QAAA,kCAAkC,EAAE,iCAAiC;AACrE,QAAA,mCAAmC,EAAE,gCAAgC;AACrE,QAAA,0BAA0B,EAAE,0BAA0B;AACtD,QAAA,YAAY,EAAE,wBAAwB;AACtC,QAAA,MAAM,EAAE,0CAA0C;AAClD,QAAA,QAAQ,EAAE,QAAQ;AACnB,KAAA;;;;;;;;AAQD,IAAA,oCAAoC,EAAE;AACpC,QAAA,IAAI,EAAE,MAAM;AACb,KAAA;;;AAGD,IAAA,6CAA6C,EAAE;AAC7C,QAAA,OAAO,EAAE,GAAG;AACb,KAAA;;;;;;"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { MarkerType } from '@xyflow/react';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Edge defaults. Stroke comes from a theme token (slate.700) via CSS var
|
|
6
|
+
* since React Flow takes SVG-style props, not Chakra ones. The label
|
|
7
|
+
* itself is rendered through the `labeled` custom edge so its
|
|
8
|
+
* typography uses the design system's semantic `Subtext` primitive —
|
|
9
|
+
* see `LabeledEdge.tsx`. The arrowhead makes each edge's direction
|
|
10
|
+
* self-describing rather than implied by left→right placement alone.
|
|
11
|
+
*/
|
|
12
|
+
const defaultEdgeOptions = {
|
|
13
|
+
type: 'labeled',
|
|
14
|
+
style: {
|
|
15
|
+
stroke: 'var(--chakra-colors-slate-700)',
|
|
16
|
+
strokeWidth: 1.5,
|
|
17
|
+
},
|
|
18
|
+
markerEnd: {
|
|
19
|
+
type: MarkerType.ArrowClosed,
|
|
20
|
+
color: 'var(--chakra-colors-slate-700)',
|
|
21
|
+
width: 18,
|
|
22
|
+
height: 18,
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Selection outline for edges. React Flow toggles `.selected` on the
|
|
27
|
+
* edge group; we layer an outline on the path so the user gets visual
|
|
28
|
+
* feedback before pressing Delete. Scoped via the Canvas wrapper's
|
|
29
|
+
* `css` prop rather than a global stylesheet.
|
|
30
|
+
*/
|
|
31
|
+
const canvasSelectionCss = {
|
|
32
|
+
// Ports paint as 8px dots (see PORT_STYLE) but that's a pixel-hunt drag
|
|
33
|
+
// target; a pseudo-element participates in its parent's hit-testing, so this
|
|
34
|
+
// pads every handle's grab area to ~24px without changing the visual dot.
|
|
35
|
+
'& .react-flow__handle::after': {
|
|
36
|
+
content: '""',
|
|
37
|
+
position: 'absolute',
|
|
38
|
+
inset: '-8px',
|
|
39
|
+
},
|
|
40
|
+
// Hover feedback: thicken/darken the path so an edge reads as grabbable
|
|
41
|
+
// before it's selected. Listed before the `.selected` rule (equal
|
|
42
|
+
// specificity) so selection styling wins when an edge is both.
|
|
43
|
+
'& .react-flow__edge:hover .react-flow__edge-path': {
|
|
44
|
+
stroke: 'var(--chakra-colors-slate-900)',
|
|
45
|
+
strokeWidth: 2,
|
|
46
|
+
},
|
|
47
|
+
'& .react-flow__edge.selected .react-flow__edge-path': {
|
|
48
|
+
stroke: 'var(--chakra-colors-primary-main)',
|
|
49
|
+
strokeWidth: 2.5,
|
|
50
|
+
filter: 'drop-shadow(0 0 4px var(--chakra-colors-primary-lighter))',
|
|
51
|
+
},
|
|
52
|
+
'& .react-flow__edge.selected .react-flow__edge-interaction': {
|
|
53
|
+
stroke: 'var(--chakra-colors-primary-main)',
|
|
54
|
+
},
|
|
55
|
+
// React Flow's stock zoom/lock controls are fixed white — point its theme
|
|
56
|
+
// vars at our tokens so the cluster follows the color mode (light values match
|
|
57
|
+
// the stock look). A solid surface (rather than transparent buttons) keeps the
|
|
58
|
+
// icons legible as the canvas pans content beneath the cluster, and matches the
|
|
59
|
+
// minimap panel in the opposite corner. Frame it like the node cards — md
|
|
60
|
+
// radius + slate.200 border + shadow — so it reads as a deliberate floating
|
|
61
|
+
// toolbar; the border carries the definition in dark mode where the stock
|
|
62
|
+
// shadow is invisible on the dark canvas. `overflow: hidden` clips the stacked
|
|
63
|
+
// buttons to the rounded corners (tooltips portal out, so they aren't clipped).
|
|
64
|
+
'& .react-flow__controls': {
|
|
65
|
+
'--xy-controls-button-background-color': 'var(--chakra-colors-bg-surface)',
|
|
66
|
+
'--xy-controls-button-background-color-hover': 'var(--chakra-colors-slate-100)',
|
|
67
|
+
'--xy-controls-button-color': 'var(--chakra-colors-slate-1200)',
|
|
68
|
+
'--xy-controls-button-color-hover': 'var(--chakra-colors-slate-1500)',
|
|
69
|
+
'--xy-controls-button-border-color': 'var(--chakra-colors-slate-200)',
|
|
70
|
+
'--xy-controls-box-shadow': 'var(--chakra-shadows-sm)',
|
|
71
|
+
borderRadius: 'var(--chakra-radii-md)',
|
|
72
|
+
border: '1px solid var(--chakra-colors-slate-200)',
|
|
73
|
+
overflow: 'hidden',
|
|
74
|
+
},
|
|
75
|
+
// Our control glyphs (lucide Plus/Minus + Tabler arrows/lock/maximize/sitemap)
|
|
76
|
+
// are stroke-based — `fill="none"`, `stroke="currentColor"`. React Flow's stock
|
|
77
|
+
// CSS forces `fill: currentColor` on control-button SVGs (its own icons are
|
|
78
|
+
// solid), which fills these outline icons into blobs (the lock rendered as a
|
|
79
|
+
// solid lozenge) and, via its `:disabled svg { fill-opacity: .4 }` companion,
|
|
80
|
+
// painted a translucent gray inside the disabled undo/redo arrows. Restore the
|
|
81
|
+
// intended stroke-only rendering.
|
|
82
|
+
'& .react-flow__controls-button svg': {
|
|
83
|
+
fill: 'none',
|
|
84
|
+
},
|
|
85
|
+
// With fill removed, RF's fill-opacity disabled cue is a no-op — dim the whole
|
|
86
|
+
// glyph instead so disabled undo/redo still read as inactive.
|
|
87
|
+
'& .react-flow__controls-button:disabled svg': {
|
|
88
|
+
opacity: 0.4,
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export { canvasSelectionCss, defaultEdgeOptions };
|
|
93
|
+
//# sourceMappingURL=Canvas.styles.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Canvas.styles.mjs","sources":["../../../../../src/components/Workflow/canvas/Canvas/Canvas.styles.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAEA;;;;;;;AAOG;AACI,MAAM,kBAAkB,GAAuB;AACpD,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,KAAK,EAAE;AACL,QAAA,MAAM,EAAE,gCAAgC;AACxC,QAAA,WAAW,EAAE,GAAG;AACjB,KAAA;AACD,IAAA,SAAS,EAAE;QACT,IAAI,EAAE,UAAU,CAAC,WAAW;AAC5B,QAAA,KAAK,EAAE,gCAAgC;AACvC,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,MAAM,EAAE,EAAE;AACX,KAAA;;AAGH;;;;;AAKG;AACI,MAAM,kBAAkB,GAAG;;;;AAIhC,IAAA,8BAA8B,EAAE;AAC9B,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;;;;AAID,IAAA,kDAAkD,EAAE;AAClD,QAAA,MAAM,EAAE,gCAAgC;AACxC,QAAA,WAAW,EAAE,CAAC;AACf,KAAA;AACD,IAAA,qDAAqD,EAAE;AACrD,QAAA,MAAM,EAAE,mCAAmC;AAC3C,QAAA,WAAW,EAAE,GAAG;AAChB,QAAA,MAAM,EAAE,2DAA2D;AACpE,KAAA;AACD,IAAA,4DAA4D,EAAE;AAC5D,QAAA,MAAM,EAAE,mCAAmC;AAC5C,KAAA;;;;;;;;;;AAUD,IAAA,yBAAyB,EAAE;AACzB,QAAA,uCAAuC,EAAE,iCAAiC;AAC1E,QAAA,6CAA6C,EAC3C,gCAAgC;AAClC,QAAA,4BAA4B,EAAE,iCAAiC;AAC/D,QAAA,kCAAkC,EAAE,iCAAiC;AACrE,QAAA,mCAAmC,EAAE,gCAAgC;AACrE,QAAA,0BAA0B,EAAE,0BAA0B;AACtD,QAAA,YAAY,EAAE,wBAAwB;AACtC,QAAA,MAAM,EAAE,0CAA0C;AAClD,QAAA,QAAQ,EAAE,QAAQ;AACnB,KAAA;;;;;;;;AAQD,IAAA,oCAAoC,EAAE;AACpC,QAAA,IAAI,EAAE,MAAM;AACb,KAAA;;;AAGD,IAAA,6CAA6C,EAAE;AAC7C,QAAA,OAAO,EAAE,GAAG;AACb,KAAA;;;;;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { FitViewOptions } from '@xyflow/react';
|
|
2
|
+
type CanvasControlsProps = {
|
|
3
|
+
/** Read-only preview hides the authoring-only lock and auto-arrange actions. */
|
|
4
|
+
readOnly: boolean;
|
|
5
|
+
/** Tidy the graph left-to-right — owned by the canvas, which has the node
|
|
6
|
+
measurements the layout needs. */
|
|
7
|
+
onAutoArrange: () => void;
|
|
8
|
+
/** Shared fit-view framing so the manual button settles the view the same way
|
|
9
|
+
the initial mount and re-fits do. */
|
|
10
|
+
fitViewOptions: FitViewOptions;
|
|
11
|
+
/** Whether the top-left corner already holds overlay chrome (palette toggle or
|
|
12
|
+
error banner). When it does, the controls tuck below it; otherwise they sit
|
|
13
|
+
tight in the corner so they never float under an empty gap. */
|
|
14
|
+
topLeftChromePresent: boolean;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* The top-left canvas controls. We render every button ourselves — React
|
|
18
|
+
* Flow's built-in zoom / fit / interactivity buttons are suppressed — so each
|
|
19
|
+
* carries a localized {@link Tooltip} instead of React Flow's hardcoded English
|
|
20
|
+
* `title`. We dock the cluster into the top-left overlay corner (rather than
|
|
21
|
+
* React Flow's default bottom-left) so it doesn't read as orphaned mid-canvas —
|
|
22
|
+
* most noticeably when the version-history inspector docks on the left.
|
|
23
|
+
* Placement "right" keeps the tooltip on-canvas.
|
|
24
|
+
*/
|
|
25
|
+
export declare function CanvasControls({ readOnly, onAutoArrange, fitViewOptions, topLeftChromePresent, }: CanvasControlsProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=CanvasControls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasControls.d.ts","sourceRoot":"","sources":["../../../../../src/components/Workflow/canvas/Canvas/CanvasControls.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAkCpD,KAAK,mBAAmB,GAAG;IACzB,gFAAgF;IAChF,QAAQ,EAAE,OAAO,CAAC;IAClB;yCACqC;IACrC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B;4CACwC;IACxC,cAAc,EAAE,cAAc,CAAC;IAC/B;;sEAEkE;IAClE,oBAAoB,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,aAAa,EACb,cAAc,EACd,oBAAoB,GACrB,EAAE,mBAAmB,2CAgHrB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var react = require('@xyflow/react');
|
|
6
|
+
var index = require('../../../Icon/index.js');
|
|
7
|
+
var Tooltip = require('../../../Tooltip/Tooltip.js');
|
|
8
|
+
var WorkflowContext = require('../../WorkflowContext/WorkflowContext.js');
|
|
9
|
+
|
|
10
|
+
// Rendered height of the palette toggle the controls tuck under in edit mode;
|
|
11
|
+
// update if the toggle resizes. Combined with the palette's own top gutter
|
|
12
|
+
// (spacing-4) it forms the clearance the controls drop by so they sit just
|
|
13
|
+
// below the toggle instead of overlapping it.
|
|
14
|
+
const PALETTE_TOGGLE_HEIGHT_PX = 52;
|
|
15
|
+
// Edit-mode top offset: clear the palette toggle (its gutter + height). Read-only
|
|
16
|
+
// preview has no chrome, so the controls sit at the plain corner inset instead.
|
|
17
|
+
const TOP_LEFT_OVERLAY_CLEARANCE = `calc(var(--chakra-spacing-4) + ${PALETTE_TOGGLE_HEIGHT_PX}px)`;
|
|
18
|
+
// Corner inset (spacing-3) for the controls when no chrome sits above them.
|
|
19
|
+
const CORNER_INSET = 'var(--chakra-spacing-3)';
|
|
20
|
+
/**
|
|
21
|
+
* The top-left canvas controls. We render every button ourselves — React
|
|
22
|
+
* Flow's built-in zoom / fit / interactivity buttons are suppressed — so each
|
|
23
|
+
* carries a localized {@link Tooltip} instead of React Flow's hardcoded English
|
|
24
|
+
* `title`. We dock the cluster into the top-left overlay corner (rather than
|
|
25
|
+
* React Flow's default bottom-left) so it doesn't read as orphaned mid-canvas —
|
|
26
|
+
* most noticeably when the version-history inspector docks on the left.
|
|
27
|
+
* Placement "right" keeps the tooltip on-canvas.
|
|
28
|
+
*/
|
|
29
|
+
function CanvasControls({ readOnly, onAutoArrange, fitViewOptions, topLeftChromePresent, }) {
|
|
30
|
+
const { zoomIn, zoomOut, fitView } = react.useReactFlow();
|
|
31
|
+
// Context undo/redo route through the Workflow wrapper that also asks the
|
|
32
|
+
// host to persist a position-only revert — same path the keyboard shortcuts
|
|
33
|
+
// take, so a button-driven undo of an auto-arrange sticks across reloads.
|
|
34
|
+
const { undo, redo, canUndo, canRedo } = WorkflowContext.useWorkflow();
|
|
35
|
+
const translate = WorkflowContext.useWorkflowTranslate();
|
|
36
|
+
const t = (key) => translate(key);
|
|
37
|
+
// Mirror React Flow's built-in interactivity lock so our custom buttons drive
|
|
38
|
+
// the same store state the default lock button would. "Interactive" means
|
|
39
|
+
// nodes can be dragged, connected, and selected; the lock flips all three.
|
|
40
|
+
const isInteractive = react.useStore((s) => s.nodesDraggable || s.nodesConnectable || s.elementsSelectable);
|
|
41
|
+
const store = react.useStoreApi();
|
|
42
|
+
const onToggleInteractivity = () => store.setState({
|
|
43
|
+
nodesDraggable: !isInteractive,
|
|
44
|
+
nodesConnectable: !isInteractive,
|
|
45
|
+
elementsSelectable: !isInteractive,
|
|
46
|
+
});
|
|
47
|
+
const zoomInLabel = t('workflow_zoom_in');
|
|
48
|
+
const zoomOutLabel = t('workflow_zoom_out');
|
|
49
|
+
const fitViewLabel = t('workflow_fit_view');
|
|
50
|
+
const undoLabel = t('workflow_undo');
|
|
51
|
+
const redoLabel = t('workflow_redo');
|
|
52
|
+
const autoArrangeLabel = t('workflow_auto_arrange');
|
|
53
|
+
// The tooltip names the action a click performs: an interactive canvas locks,
|
|
54
|
+
// a locked canvas unlocks.
|
|
55
|
+
const interactivityLabel = isInteractive
|
|
56
|
+
? t('workflow_lock_canvas')
|
|
57
|
+
: t('workflow_unlock_canvas');
|
|
58
|
+
return (jsxRuntime.jsxs(react.Controls, { showZoom: false, showFitView: false, showInteractive: false,
|
|
59
|
+
// Dock into the top-left overlay corner. When the corner already holds
|
|
60
|
+
// chrome (the palette toggle or the error banner) the cluster tucks below
|
|
61
|
+
// it; otherwise it sits at the corner so it never floats under an empty gap.
|
|
62
|
+
position: "top-left", style: {
|
|
63
|
+
top: topLeftChromePresent ? TOP_LEFT_OVERLAY_CLEARANCE : CORNER_INSET,
|
|
64
|
+
left: CORNER_INSET,
|
|
65
|
+
margin: 0,
|
|
66
|
+
}, children: [jsxRuntime.jsx(Tooltip.Tooltip, { content: zoomInLabel, placement: "right", children: jsxRuntime.jsx(react.ControlButton, { onClick: () => zoomIn(), "aria-label": zoomInLabel, children: jsxRuntime.jsx(index.Plus, {}) }) }), jsxRuntime.jsx(Tooltip.Tooltip, { content: zoomOutLabel, placement: "right", children: jsxRuntime.jsx(react.ControlButton, { onClick: () => zoomOut(), "aria-label": zoomOutLabel, children: jsxRuntime.jsx(index.Minus, {}) }) }), jsxRuntime.jsx(Tooltip.Tooltip, { content: fitViewLabel, placement: "right", children: jsxRuntime.jsx(react.ControlButton, { onClick: () => fitView(fitViewOptions), "aria-label": fitViewLabel, children: jsxRuntime.jsx(index.TbMaximize, {}) }) }), readOnly ? null : (jsxRuntime.jsx(Tooltip.Tooltip, { content: undoLabel, placement: "right", children: jsxRuntime.jsx(react.ControlButton, { onClick: undo, disabled: !canUndo, "aria-label": undoLabel, children: jsxRuntime.jsx(index.TbArrowBackUp, {}) }) })), readOnly ? null : (jsxRuntime.jsx(Tooltip.Tooltip, { content: redoLabel, placement: "right", children: jsxRuntime.jsx(react.ControlButton, { onClick: redo, disabled: !canRedo, "aria-label": redoLabel, children: jsxRuntime.jsx(index.TbArrowForwardUp, {}) }) })), readOnly ? null : (jsxRuntime.jsx(Tooltip.Tooltip, { content: interactivityLabel, placement: "right", children: jsxRuntime.jsx(react.ControlButton, { onClick: onToggleInteractivity, "aria-label": interactivityLabel, children: isInteractive ? jsxRuntime.jsx(index.TbLockOpen, {}) : jsxRuntime.jsx(index.TbLock, {}) }) })), readOnly ? null : (jsxRuntime.jsx(Tooltip.Tooltip, { content: autoArrangeLabel, placement: "right", children: jsxRuntime.jsx(react.ControlButton, { onClick: onAutoArrange, "aria-label": autoArrangeLabel, children: jsxRuntime.jsx(index.TbSitemap, {}) }) }))] }));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
exports.CanvasControls = CanvasControls;
|
|
70
|
+
//# sourceMappingURL=CanvasControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasControls.js","sources":["../../../../../src/components/Workflow/canvas/Canvas/CanvasControls.tsx"],"sourcesContent":[null],"names":["useReactFlow","useWorkflow","useWorkflowTranslate","useStore","useStoreApi","_jsxs","Controls","_jsx","Tooltip","ControlButton","Plus","Minus","TbMaximize","TbArrowBackUp","TbArrowForwardUp","TbLockOpen","TbLock","TbSitemap"],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useReactFlow, useStore, useStoreApi, Controls, ControlButton } from '@xyflow/react';
|
|
4
|
+
import { Plus, Minus, TbMaximize, TbArrowBackUp, TbArrowForwardUp, TbLockOpen, TbLock, TbSitemap } from '../../../Icon/index.mjs';
|
|
5
|
+
import { Tooltip } from '../../../Tooltip/Tooltip.mjs';
|
|
6
|
+
import { useWorkflow, useWorkflowTranslate } from '../../WorkflowContext/WorkflowContext.mjs';
|
|
7
|
+
|
|
8
|
+
// Rendered height of the palette toggle the controls tuck under in edit mode;
|
|
9
|
+
// update if the toggle resizes. Combined with the palette's own top gutter
|
|
10
|
+
// (spacing-4) it forms the clearance the controls drop by so they sit just
|
|
11
|
+
// below the toggle instead of overlapping it.
|
|
12
|
+
const PALETTE_TOGGLE_HEIGHT_PX = 52;
|
|
13
|
+
// Edit-mode top offset: clear the palette toggle (its gutter + height). Read-only
|
|
14
|
+
// preview has no chrome, so the controls sit at the plain corner inset instead.
|
|
15
|
+
const TOP_LEFT_OVERLAY_CLEARANCE = `calc(var(--chakra-spacing-4) + ${PALETTE_TOGGLE_HEIGHT_PX}px)`;
|
|
16
|
+
// Corner inset (spacing-3) for the controls when no chrome sits above them.
|
|
17
|
+
const CORNER_INSET = 'var(--chakra-spacing-3)';
|
|
18
|
+
/**
|
|
19
|
+
* The top-left canvas controls. We render every button ourselves — React
|
|
20
|
+
* Flow's built-in zoom / fit / interactivity buttons are suppressed — so each
|
|
21
|
+
* carries a localized {@link Tooltip} instead of React Flow's hardcoded English
|
|
22
|
+
* `title`. We dock the cluster into the top-left overlay corner (rather than
|
|
23
|
+
* React Flow's default bottom-left) so it doesn't read as orphaned mid-canvas —
|
|
24
|
+
* most noticeably when the version-history inspector docks on the left.
|
|
25
|
+
* Placement "right" keeps the tooltip on-canvas.
|
|
26
|
+
*/
|
|
27
|
+
function CanvasControls({ readOnly, onAutoArrange, fitViewOptions, topLeftChromePresent, }) {
|
|
28
|
+
const { zoomIn, zoomOut, fitView } = useReactFlow();
|
|
29
|
+
// Context undo/redo route through the Workflow wrapper that also asks the
|
|
30
|
+
// host to persist a position-only revert — same path the keyboard shortcuts
|
|
31
|
+
// take, so a button-driven undo of an auto-arrange sticks across reloads.
|
|
32
|
+
const { undo, redo, canUndo, canRedo } = useWorkflow();
|
|
33
|
+
const translate = useWorkflowTranslate();
|
|
34
|
+
const t = (key) => translate(key);
|
|
35
|
+
// Mirror React Flow's built-in interactivity lock so our custom buttons drive
|
|
36
|
+
// the same store state the default lock button would. "Interactive" means
|
|
37
|
+
// nodes can be dragged, connected, and selected; the lock flips all three.
|
|
38
|
+
const isInteractive = useStore((s) => s.nodesDraggable || s.nodesConnectable || s.elementsSelectable);
|
|
39
|
+
const store = useStoreApi();
|
|
40
|
+
const onToggleInteractivity = () => store.setState({
|
|
41
|
+
nodesDraggable: !isInteractive,
|
|
42
|
+
nodesConnectable: !isInteractive,
|
|
43
|
+
elementsSelectable: !isInteractive,
|
|
44
|
+
});
|
|
45
|
+
const zoomInLabel = t('workflow_zoom_in');
|
|
46
|
+
const zoomOutLabel = t('workflow_zoom_out');
|
|
47
|
+
const fitViewLabel = t('workflow_fit_view');
|
|
48
|
+
const undoLabel = t('workflow_undo');
|
|
49
|
+
const redoLabel = t('workflow_redo');
|
|
50
|
+
const autoArrangeLabel = t('workflow_auto_arrange');
|
|
51
|
+
// The tooltip names the action a click performs: an interactive canvas locks,
|
|
52
|
+
// a locked canvas unlocks.
|
|
53
|
+
const interactivityLabel = isInteractive
|
|
54
|
+
? t('workflow_lock_canvas')
|
|
55
|
+
: t('workflow_unlock_canvas');
|
|
56
|
+
return (jsxs(Controls, { showZoom: false, showFitView: false, showInteractive: false,
|
|
57
|
+
// Dock into the top-left overlay corner. When the corner already holds
|
|
58
|
+
// chrome (the palette toggle or the error banner) the cluster tucks below
|
|
59
|
+
// it; otherwise it sits at the corner so it never floats under an empty gap.
|
|
60
|
+
position: "top-left", style: {
|
|
61
|
+
top: topLeftChromePresent ? TOP_LEFT_OVERLAY_CLEARANCE : CORNER_INSET,
|
|
62
|
+
left: CORNER_INSET,
|
|
63
|
+
margin: 0,
|
|
64
|
+
}, children: [jsx(Tooltip, { content: zoomInLabel, placement: "right", children: jsx(ControlButton, { onClick: () => zoomIn(), "aria-label": zoomInLabel, children: jsx(Plus, {}) }) }), jsx(Tooltip, { content: zoomOutLabel, placement: "right", children: jsx(ControlButton, { onClick: () => zoomOut(), "aria-label": zoomOutLabel, children: jsx(Minus, {}) }) }), jsx(Tooltip, { content: fitViewLabel, placement: "right", children: jsx(ControlButton, { onClick: () => fitView(fitViewOptions), "aria-label": fitViewLabel, children: jsx(TbMaximize, {}) }) }), readOnly ? null : (jsx(Tooltip, { content: undoLabel, placement: "right", children: jsx(ControlButton, { onClick: undo, disabled: !canUndo, "aria-label": undoLabel, children: jsx(TbArrowBackUp, {}) }) })), readOnly ? null : (jsx(Tooltip, { content: redoLabel, placement: "right", children: jsx(ControlButton, { onClick: redo, disabled: !canRedo, "aria-label": redoLabel, children: jsx(TbArrowForwardUp, {}) }) })), readOnly ? null : (jsx(Tooltip, { content: interactivityLabel, placement: "right", children: jsx(ControlButton, { onClick: onToggleInteractivity, "aria-label": interactivityLabel, children: isInteractive ? jsx(TbLockOpen, {}) : jsx(TbLock, {}) }) })), readOnly ? null : (jsx(Tooltip, { content: autoArrangeLabel, placement: "right", children: jsx(ControlButton, { onClick: onAutoArrange, "aria-label": autoArrangeLabel, children: jsx(TbSitemap, {}) }) }))] }));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export { CanvasControls };
|
|
68
|
+
//# sourceMappingURL=CanvasControls.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasControls.mjs","sources":["../../../../../src/components/Workflow/canvas/Canvas/CanvasControls.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAyBA;AACA;AACA;AACA;AACA,MAAM,wBAAwB,GAAG,EAAE;AACnC;AACA;AACA,MAAM,0BAA0B,GAAG,CAAA,+BAAA,EAAkC,wBAAwB,KAAK;AAClG;AACA,MAAM,YAAY,GAAG,yBAAyB;AAiB9C;;;;;;;;AAQG;AACG,SAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,aAAa,EACb,cAAc,EACd,oBAAoB,GACA,EAAA;IACpB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE;;;;AAInD,IAAA,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE;AACtD,IAAA,MAAM,SAAS,GAAG,oBAAoB,EAAE;IACxC,MAAM,CAAC,GAAG,CAAC,GAAW,KAAK,SAAS,CAAC,GAAG,CAAW;;;;IAKnD,MAAM,aAAa,GAAG,QAAQ,CAC5B,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,kBAAkB,CACtE;AACD,IAAA,MAAM,KAAK,GAAG,WAAW,EAAE;IAC3B,MAAM,qBAAqB,GAAG,MAC5B,KAAK,CAAC,QAAQ,CAAC;QACb,cAAc,EAAE,CAAC,aAAa;QAC9B,gBAAgB,EAAE,CAAC,aAAa;QAChC,kBAAkB,EAAE,CAAC,aAAa;AACnC,KAAA,CAAC;AAEJ,IAAA,MAAM,WAAW,GAAG,CAAC,CAAC,kBAAkB,CAAC;AACzC,IAAA,MAAM,YAAY,GAAG,CAAC,CAAC,mBAAmB,CAAC;AAC3C,IAAA,MAAM,YAAY,GAAG,CAAC,CAAC,mBAAmB,CAAC;AAC3C,IAAA,MAAM,SAAS,GAAG,CAAC,CAAC,eAAe,CAAC;AACpC,IAAA,MAAM,SAAS,GAAG,CAAC,CAAC,eAAe,CAAC;AACpC,IAAA,MAAM,gBAAgB,GAAG,CAAC,CAAC,uBAAuB,CAAC;;;IAGnD,MAAM,kBAAkB,GAAG;AACzB,UAAE,CAAC,CAAC,sBAAsB;AAC1B,UAAE,CAAC,CAAC,wBAAwB,CAAC;AAE/B,IAAA,QACEA,IAAA,CAAC,QAAQ,EAAA,EACP,QAAQ,EAAE,KAAK,EACf,WAAW,EAAE,KAAK,EAClB,eAAe,EAAE,KAAK;;;;AAItB,QAAA,QAAQ,EAAC,UAAU,EACnB,KAAK,EAAE;YACL,GAAG,EAAE,oBAAoB,GAAG,0BAA0B,GAAG,YAAY;AACrE,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,MAAM,EAAE,CAAC;AACV,SAAA,EAAA,QAAA,EAAA,CAEDC,GAAA,CAAC,OAAO,EAAA,EAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAC,OAAO,EAAA,QAAA,EAC9CA,GAAA,CAAC,aAAa,EAAA,EAAC,OAAO,EAAE,MAAM,MAAM,EAAE,EAAA,YAAA,EAAc,WAAW,EAAA,QAAA,EAC7DA,GAAA,CAAC,IAAI,EAAA,EAAA,CAAG,EAAA,CACM,EAAA,CACR,EACVA,GAAA,CAAC,OAAO,EAAA,EAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAC,OAAO,EAAA,QAAA,EAC/CA,GAAA,CAAC,aAAa,EAAA,EAAC,OAAO,EAAE,MAAM,OAAO,EAAE,EAAA,YAAA,EAAc,YAAY,EAAA,QAAA,EAC/DA,GAAA,CAAC,KAAK,EAAA,EAAA,CAAG,EAAA,CACK,EAAA,CACR,EACVA,IAAC,OAAO,EAAA,EAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAC,OAAO,EAAA,QAAA,EAC/CA,GAAA,CAAC,aAAa,EAAA,EACZ,OAAO,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,EAAA,YAAA,EAC1B,YAAY,EAAA,QAAA,EAExBA,GAAA,CAAC,UAAU,EAAA,EAAA,CAAG,EAAA,CACA,EAAA,CACR,EAIT,QAAQ,GAAG,IAAI,IACdA,GAAA,CAAC,OAAO,EAAA,EAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAC,OAAO,EAAA,QAAA,EAC5CA,GAAA,CAAC,aAAa,EAAA,EACZ,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,CAAC,OAAO,EAAA,YAAA,EACN,SAAS,YAErBA,GAAA,CAAC,aAAa,EAAA,EAAA,CAAG,EAAA,CACH,EAAA,CACR,CACX,EACA,QAAQ,GAAG,IAAI,IACdA,GAAA,CAAC,OAAO,EAAA,EAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAC,OAAO,EAAA,QAAA,EAC5CA,GAAA,CAAC,aAAa,EAAA,EACZ,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,CAAC,OAAO,EAAA,YAAA,EACN,SAAS,EAAA,QAAA,EAErBA,GAAA,CAAC,gBAAgB,EAAA,EAAA,CAAG,EAAA,CACN,EAAA,CACR,CACX,EACA,QAAQ,GAAG,IAAI,IACdA,GAAA,CAAC,OAAO,EAAA,EAAC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAC,OAAO,EAAA,QAAA,EACrDA,GAAA,CAAC,aAAa,EAAA,EACZ,OAAO,EAAE,qBAAqB,EAAA,YAAA,EAClB,kBAAkB,EAAA,QAAA,EAE7B,aAAa,GAAGA,GAAA,CAAC,UAAU,EAAA,EAAA,CAAG,GAAGA,GAAA,CAAC,MAAM,EAAA,EAAA,CAAG,EAAA,CAC9B,EAAA,CACR,CACX,EACA,QAAQ,GAAG,IAAI,IACdA,GAAA,CAAC,OAAO,EAAA,EAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAC,OAAO,EAAA,QAAA,EACnDA,GAAA,CAAC,aAAa,EAAA,EAAC,OAAO,EAAE,aAAa,EAAA,YAAA,EAAc,gBAAgB,EAAA,QAAA,EACjEA,GAAA,CAAC,SAAS,EAAA,EAAA,CAAG,EAAA,CACC,EAAA,CACR,CACX,CAAA,EAAA,CACQ;AAEf;;;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type EdgeProps } from '@xyflow/react';
|
|
2
|
+
/**
|
|
3
|
+
* Edge with a logician-ui `Badge` label that rides the connection midpoint.
|
|
4
|
+
* Clicking the label selects the edge (opens its inspector); hovering the edge
|
|
5
|
+
* reveals a delete button BESIDE the label (not replacing it), so the label
|
|
6
|
+
* stays clickable. Labels use `EdgeLabelRenderer` rather than React Flow's SVG
|
|
7
|
+
* `labelStyle` so they inherit the design system's Badge styling.
|
|
8
|
+
*/
|
|
9
|
+
export declare function LabeledEdge({ id, source, sourceHandleId, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label, markerEnd, style, }: EdgeProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=LabeledEdge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LabeledEdge.d.ts","sourceRoot":"","sources":["../../../../../src/components/Workflow/canvas/Canvas/LabeledEdge.tsx"],"names":[],"mappings":"AAWA,OAAO,EAGL,KAAK,SAAS,EAEf,MAAM,eAAe,CAAC;AAevB;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,EAC1B,EAAE,EACF,MAAM,EACN,cAAc,EACd,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,KAAK,EACL,SAAS,EACT,KAAK,GACN,EAAE,SAAS,2CAkJX"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var react$1 = require('@chakra-ui/react');
|
|
7
|
+
var react = require('@xyflow/react');
|
|
8
|
+
var index = require('../../../Icon/index.js');
|
|
9
|
+
var IconButton = require('../../../IconButton/IconButton.js');
|
|
10
|
+
require('../../../IconButton/IconButton.styles.js');
|
|
11
|
+
var WorkflowContext = require('../../WorkflowContext/WorkflowContext.js');
|
|
12
|
+
require('../../../Input/Input.js');
|
|
13
|
+
require('../../../Typography/H1.js');
|
|
14
|
+
require('../../../Typography/H2.js');
|
|
15
|
+
require('../../../Typography/H3.js');
|
|
16
|
+
require('../../../Typography/H4.js');
|
|
17
|
+
require('../../../Typography/H5.js');
|
|
18
|
+
require('../../../Typography/Link.js');
|
|
19
|
+
require('../../../Typography/Subtext.js');
|
|
20
|
+
require('../../../Typography/Subtitle.js');
|
|
21
|
+
require('../../../Typography/Text.js');
|
|
22
|
+
require('../../../Toast/Toaster.js');
|
|
23
|
+
var endpointTitle = require('../EdgeInspector/endpointTitle.js');
|
|
24
|
+
var BranchLabelBadge = require('./BranchLabelBadge.js');
|
|
25
|
+
var edgeLabelVariant = require('./edgeLabelVariant.js');
|
|
26
|
+
|
|
27
|
+
// Grace period on pointer-leave so moving from the SVG edge to the portaled
|
|
28
|
+
// label (or the delete button beside it) doesn't flicker the affordance off in
|
|
29
|
+
// the gap between layers.
|
|
30
|
+
const HOVER_LEAVE_GRACE_MS = 80;
|
|
31
|
+
/**
|
|
32
|
+
* Edge with a logician-ui `Badge` label that rides the connection midpoint.
|
|
33
|
+
* Clicking the label selects the edge (opens its inspector); hovering the edge
|
|
34
|
+
* reveals a delete button BESIDE the label (not replacing it), so the label
|
|
35
|
+
* stays clickable. Labels use `EdgeLabelRenderer` rather than React Flow's SVG
|
|
36
|
+
* `labelStyle` so they inherit the design system's Badge styling.
|
|
37
|
+
*/
|
|
38
|
+
function LabeledEdge({ id, source, sourceHandleId, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label, markerEnd, style, }) {
|
|
39
|
+
const { graph, getNodeType, dispatch, readOnly, editor: { selectedEdgeId }, setSelectedNodeId, setSelectedEdgeId, setDrawerTarget, revealInspector, } = WorkflowContext.useWorkflow();
|
|
40
|
+
const translate = WorkflowContext.useWorkflowTranslate();
|
|
41
|
+
const [hovered, setHovered] = React.useState(false);
|
|
42
|
+
const leaveTimer = React.useRef(undefined);
|
|
43
|
+
const onEnter = React.useCallback(() => {
|
|
44
|
+
if (leaveTimer.current)
|
|
45
|
+
clearTimeout(leaveTimer.current);
|
|
46
|
+
setHovered(true);
|
|
47
|
+
}, []);
|
|
48
|
+
const onLeave = React.useCallback(() => {
|
|
49
|
+
leaveTimer.current = setTimeout(() => setHovered(false), HOVER_LEAVE_GRACE_MS);
|
|
50
|
+
}, []);
|
|
51
|
+
React.useEffect(() => () => {
|
|
52
|
+
if (leaveTimer.current)
|
|
53
|
+
clearTimeout(leaveTimer.current);
|
|
54
|
+
}, []);
|
|
55
|
+
// Clicking the label selects the edge and opens its inspector — mirrors the
|
|
56
|
+
// canvas `onEdgeClick` so the label is just another way in. Routes through
|
|
57
|
+
// revealInspector so a label click in test mode also restores the parked
|
|
58
|
+
// inspector (the badge stops propagation, so it never reaches onEdgeClick).
|
|
59
|
+
const onSelect = React.useCallback((e) => {
|
|
60
|
+
e.stopPropagation();
|
|
61
|
+
setSelectedNodeId(null);
|
|
62
|
+
setSelectedEdgeId(id);
|
|
63
|
+
revealInspector({ type: 'edge', id });
|
|
64
|
+
}, [id, setSelectedNodeId, setSelectedEdgeId, revealInspector]);
|
|
65
|
+
const onDelete = React.useCallback((e) => {
|
|
66
|
+
// Don't let the click fall through to edge/pane selection handlers.
|
|
67
|
+
e.stopPropagation();
|
|
68
|
+
dispatch({ type: 'deleteEdge', id });
|
|
69
|
+
// Mirror the keyboard-delete cleanup so the inspector doesn't linger on a
|
|
70
|
+
// now-removed edge.
|
|
71
|
+
if (selectedEdgeId === id) {
|
|
72
|
+
setSelectedEdgeId(null);
|
|
73
|
+
setDrawerTarget(null);
|
|
74
|
+
}
|
|
75
|
+
}, [dispatch, id, selectedEdgeId, setSelectedEdgeId, setDrawerTarget]);
|
|
76
|
+
const [edgePath, labelX, labelY] = react.getSmoothStepPath({
|
|
77
|
+
sourceX,
|
|
78
|
+
sourceY,
|
|
79
|
+
sourcePosition,
|
|
80
|
+
targetX,
|
|
81
|
+
targetY,
|
|
82
|
+
targetPosition,
|
|
83
|
+
});
|
|
84
|
+
// The label's text: an explicit edge label wins; otherwise fall back to the
|
|
85
|
+
// source handle's label, so semantic exits (Pass / Fail / branch / Else) ride
|
|
86
|
+
// on the wire without the author having to name every edge.
|
|
87
|
+
const variant = edgeLabelVariant.getEdgeLabelVariant(sourceHandleId);
|
|
88
|
+
// Resolve the source handle's label once (not per render): React Flow
|
|
89
|
+
// re-renders edges constantly during pan/zoom, and `handles()` rebuilds its
|
|
90
|
+
// outputs array each call.
|
|
91
|
+
const handleLabel = React.useMemo(() => {
|
|
92
|
+
const sourceNode = graph.nodes.find((n) => n.id === source);
|
|
93
|
+
return endpointTitle.findPort(sourceNode, sourceNode ? getNodeType(sourceNode.kind) : undefined, 'outputs', sourceHandleId ?? undefined)?.label;
|
|
94
|
+
}, [graph.nodes, source, sourceHandleId, getNodeType]);
|
|
95
|
+
const displayLabel = label ?? handleLabel;
|
|
96
|
+
// Delete shows only while the name badge itself is hovered (when editable) —
|
|
97
|
+
// not anywhere on the wire — so it's a deliberate, low-noise affordance. The
|
|
98
|
+
// edge inspector's delete button (see DrawerShell) covers labelless edges and
|
|
99
|
+
// anyone who'd rather delete from the sidebar.
|
|
100
|
+
const showDelete = hovered && !readOnly && Boolean(displayLabel);
|
|
101
|
+
const wrapperTransform = `translate(-50%, -50%) translate(${labelX}px, ${labelY}px)`;
|
|
102
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(react.BaseEdge, { id: id, path: edgePath, markerEnd: markerEnd, style: style }), showDelete || displayLabel ? (jsxRuntime.jsx(react.EdgeLabelRenderer, { children: jsxRuntime.jsxs(react$1.Box, { position: "absolute", transform: wrapperTransform, pointerEvents: "all", display: "inline-flex", onMouseEnter: onEnter, onMouseLeave: onLeave, children: [displayLabel ? (jsxRuntime.jsx(BranchLabelBadge.BranchLabelBadge, { variant: variant, onClick: onSelect, children: displayLabel })) : null, showDelete ? (jsxRuntime.jsx(react$1.Box, { position: "absolute", left: "100%", top: "50%", transform: "translateY(-50%)", pl: 1, children: jsxRuntime.jsx(IconButton.IconButton, { "aria-label": translate('workflow_edge_delete'), onClick: onDelete, size: "xs", variant: "outline", colorPalette: "danger", bg: "bg.surface", borderRadius: "full", children: jsxRuntime.jsx(index.TbX, { boxSize: "xs" }) }) })) : null] }) })) : null] }));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
exports.LabeledEdge = LabeledEdge;
|
|
106
|
+
//# sourceMappingURL=LabeledEdge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LabeledEdge.js","sources":["../../../../../src/components/Workflow/canvas/Canvas/LabeledEdge.tsx"],"sourcesContent":[null],"names":["useWorkflow","useWorkflowTranslate","useState","useRef","useCallback","useEffect","getSmoothStepPath","getEdgeLabelVariant","useMemo","findPort","_jsxs","_Fragment","_jsx","BaseEdge","EdgeLabelRenderer","Box","BranchLabelBadge","IconButton","TbX"],"mappings":"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"}
|