@walkeros/explorer 0.3.1 → 1.0.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/AGENT.md +406 -0
- package/STYLE.md +993 -0
- package/dist/__mocks__/@monaco-editor/react.d.ts +3 -0
- package/dist/__mocks__/@monaco-editor/react.d.ts.map +1 -0
- package/dist/__mocks__/@monaco-editor/react.js +4 -0
- package/dist/__mocks__/@monaco-editor/react.js.map +1 -0
- package/dist/chunk-VWWAIDNX.mjs +2939 -0
- package/dist/chunk-VWWAIDNX.mjs.map +1 -0
- package/dist/components/atoms/base-mapping-pane.d.ts +85 -0
- package/dist/components/atoms/base-mapping-pane.d.ts.map +1 -0
- package/dist/components/atoms/base-mapping-pane.js +53 -0
- package/dist/components/atoms/base-mapping-pane.js.map +1 -0
- package/dist/components/atoms/box.d.ts +27 -0
- package/dist/components/atoms/box.d.ts.map +1 -0
- package/dist/components/atoms/box.js +86 -0
- package/dist/components/atoms/box.js.map +1 -0
- package/dist/components/atoms/box.stories.d.ts +34 -0
- package/dist/components/atoms/box.stories.d.ts.map +1 -0
- package/dist/components/atoms/box.stories.js +104 -0
- package/dist/components/atoms/box.stories.js.map +1 -0
- package/dist/components/atoms/button-group.d.ts +17 -0
- package/dist/components/atoms/button-group.d.ts.map +1 -0
- package/dist/components/atoms/button-group.js +12 -0
- package/dist/components/atoms/button-group.js.map +1 -0
- package/dist/components/atoms/button-group.stories.d.ts +18 -0
- package/dist/components/atoms/button-group.stories.d.ts.map +1 -0
- package/dist/components/atoms/button-group.stories.js +35 -0
- package/dist/components/atoms/button-group.stories.js.map +1 -0
- package/dist/components/atoms/button-link.d.ts +12 -0
- package/dist/components/atoms/button-link.d.ts.map +1 -0
- package/dist/components/atoms/button-link.js +10 -0
- package/dist/components/atoms/button-link.js.map +1 -0
- package/dist/components/atoms/button-link.stories.d.ts +13 -0
- package/dist/components/atoms/button-link.stories.d.ts.map +1 -0
- package/dist/components/atoms/button-link.stories.js +64 -0
- package/dist/components/atoms/button-link.stories.js.map +1 -0
- package/dist/components/atoms/button.d.ts +15 -0
- package/dist/components/atoms/button.d.ts.map +1 -0
- package/dist/components/atoms/button.js +11 -0
- package/dist/components/atoms/button.js.map +1 -0
- package/dist/components/atoms/code.d.ts +55 -0
- package/dist/components/atoms/code.d.ts.map +1 -0
- package/dist/components/atoms/code.js +251 -0
- package/dist/components/atoms/code.js.map +1 -0
- package/dist/components/atoms/code.stories.d.ts +53 -0
- package/dist/components/atoms/code.stories.d.ts.map +1 -0
- package/dist/components/atoms/code.stories.js +190 -0
- package/dist/components/atoms/code.stories.js.map +1 -0
- package/dist/components/atoms/config-tile.d.ts +38 -0
- package/dist/components/atoms/config-tile.d.ts.map +1 -0
- package/dist/components/atoms/config-tile.js +29 -0
- package/dist/components/atoms/config-tile.js.map +1 -0
- package/dist/components/atoms/consent-state-tile.d.ts +14 -0
- package/dist/components/atoms/consent-state-tile.d.ts.map +1 -0
- package/dist/components/atoms/consent-state-tile.js +5 -0
- package/dist/components/atoms/consent-state-tile.js.map +1 -0
- package/dist/components/atoms/field-header.d.ts +41 -0
- package/dist/components/atoms/field-header.d.ts.map +1 -0
- package/dist/components/atoms/field-header.js +42 -0
- package/dist/components/atoms/field-header.js.map +1 -0
- package/dist/components/atoms/footer.d.ts +21 -0
- package/dist/components/atoms/footer.d.ts.map +1 -0
- package/dist/components/atoms/footer.js +19 -0
- package/dist/components/atoms/footer.js.map +1 -0
- package/dist/components/atoms/grid.d.ts +65 -0
- package/dist/components/atoms/grid.d.ts.map +1 -0
- package/dist/components/atoms/grid.js +169 -0
- package/dist/components/atoms/grid.js.map +1 -0
- package/dist/components/atoms/header.d.ts +7 -0
- package/dist/components/atoms/header.d.ts.map +1 -0
- package/dist/components/atoms/header.js +5 -0
- package/dist/components/atoms/header.js.map +1 -0
- package/dist/components/atoms/icon-button.d.ts +26 -0
- package/dist/components/atoms/icon-button.d.ts.map +1 -0
- package/dist/components/atoms/icon-button.js +39 -0
- package/dist/components/atoms/icon-button.js.map +1 -0
- package/dist/components/atoms/icons/icons.d.ts +2 -0
- package/dist/components/atoms/icons/icons.d.ts.map +1 -0
- package/dist/components/atoms/icons/icons.js +7 -0
- package/dist/components/atoms/icons/icons.js.map +1 -0
- package/dist/components/atoms/icons/index.d.ts +3 -0
- package/dist/components/atoms/icons/index.d.ts.map +1 -0
- package/dist/components/atoms/icons/index.js +3 -0
- package/dist/components/atoms/icons/index.js.map +1 -0
- package/dist/components/atoms/mapping-boolean.d.ts +31 -0
- package/dist/components/atoms/mapping-boolean.d.ts.map +1 -0
- package/dist/components/atoms/mapping-boolean.js +38 -0
- package/dist/components/atoms/mapping-boolean.js.map +1 -0
- package/dist/components/atoms/mapping-breadcrumb.d.ts +14 -0
- package/dist/components/atoms/mapping-breadcrumb.d.ts.map +1 -0
- package/dist/components/atoms/mapping-breadcrumb.js +10 -0
- package/dist/components/atoms/mapping-breadcrumb.js.map +1 -0
- package/dist/components/atoms/mapping-collapsible.d.ts +54 -0
- package/dist/components/atoms/mapping-collapsible.d.ts.map +1 -0
- package/dist/components/atoms/mapping-collapsible.js +87 -0
- package/dist/components/atoms/mapping-collapsible.js.map +1 -0
- package/dist/components/atoms/mapping-condition-field.d.ts +18 -0
- package/dist/components/atoms/mapping-condition-field.d.ts.map +1 -0
- package/dist/components/atoms/mapping-condition-field.js +34 -0
- package/dist/components/atoms/mapping-condition-field.js.map +1 -0
- package/dist/components/atoms/mapping-condition.d.ts +34 -0
- package/dist/components/atoms/mapping-condition.d.ts.map +1 -0
- package/dist/components/atoms/mapping-condition.js +70 -0
- package/dist/components/atoms/mapping-condition.js.map +1 -0
- package/dist/components/atoms/mapping-confirm-button.d.ts +29 -0
- package/dist/components/atoms/mapping-confirm-button.d.ts.map +1 -0
- package/dist/components/atoms/mapping-confirm-button.js +42 -0
- package/dist/components/atoms/mapping-confirm-button.js.map +1 -0
- package/dist/components/atoms/mapping-consent-field.d.ts +20 -0
- package/dist/components/atoms/mapping-consent-field.d.ts.map +1 -0
- package/dist/components/atoms/mapping-consent-field.js +36 -0
- package/dist/components/atoms/mapping-consent-field.js.map +1 -0
- package/dist/components/atoms/mapping-consent.d.ts +34 -0
- package/dist/components/atoms/mapping-consent.d.ts.map +1 -0
- package/dist/components/atoms/mapping-consent.js +86 -0
- package/dist/components/atoms/mapping-consent.js.map +1 -0
- package/dist/components/atoms/mapping-data-field.d.ts +23 -0
- package/dist/components/atoms/mapping-data-field.d.ts.map +1 -0
- package/dist/components/atoms/mapping-data-field.js +38 -0
- package/dist/components/atoms/mapping-data-field.js.map +1 -0
- package/dist/components/atoms/mapping-data.d.ts +34 -0
- package/dist/components/atoms/mapping-data.d.ts.map +1 -0
- package/dist/components/atoms/mapping-data.js +76 -0
- package/dist/components/atoms/mapping-data.js.map +1 -0
- package/dist/components/atoms/mapping-enum-select.d.ts +28 -0
- package/dist/components/atoms/mapping-enum-select.d.ts.map +1 -0
- package/dist/components/atoms/mapping-enum-select.js +142 -0
- package/dist/components/atoms/mapping-enum-select.js.map +1 -0
- package/dist/components/atoms/mapping-fn-field.d.ts +23 -0
- package/dist/components/atoms/mapping-fn-field.d.ts.map +1 -0
- package/dist/components/atoms/mapping-fn-field.js +38 -0
- package/dist/components/atoms/mapping-fn-field.js.map +1 -0
- package/dist/components/atoms/mapping-fn.d.ts +34 -0
- package/dist/components/atoms/mapping-fn.d.ts.map +1 -0
- package/dist/components/atoms/mapping-fn.js +70 -0
- package/dist/components/atoms/mapping-fn.js.map +1 -0
- package/dist/components/atoms/mapping-grid.d.ts +45 -0
- package/dist/components/atoms/mapping-grid.d.ts.map +1 -0
- package/dist/components/atoms/mapping-grid.js +83 -0
- package/dist/components/atoms/mapping-grid.js.map +1 -0
- package/dist/components/atoms/mapping-input-with-button.d.ts +54 -0
- package/dist/components/atoms/mapping-input-with-button.d.ts.map +1 -0
- package/dist/components/atoms/mapping-input-with-button.js +54 -0
- package/dist/components/atoms/mapping-input-with-button.js.map +1 -0
- package/dist/components/atoms/mapping-input.d.ts +44 -0
- package/dist/components/atoms/mapping-input.d.ts.map +1 -0
- package/dist/components/atoms/mapping-input.js +35 -0
- package/dist/components/atoms/mapping-input.js.map +1 -0
- package/dist/components/atoms/mapping-key-field.d.ts +23 -0
- package/dist/components/atoms/mapping-key-field.d.ts.map +1 -0
- package/dist/components/atoms/mapping-key-field.js +39 -0
- package/dist/components/atoms/mapping-key-field.js.map +1 -0
- package/dist/components/atoms/mapping-key.d.ts +35 -0
- package/dist/components/atoms/mapping-key.d.ts.map +1 -0
- package/dist/components/atoms/mapping-key.js +48 -0
- package/dist/components/atoms/mapping-key.js.map +1 -0
- package/dist/components/atoms/mapping-map-entry.d.ts +31 -0
- package/dist/components/atoms/mapping-map-entry.d.ts.map +1 -0
- package/dist/components/atoms/mapping-map-entry.js +68 -0
- package/dist/components/atoms/mapping-map-entry.js.map +1 -0
- package/dist/components/atoms/mapping-number.d.ts +32 -0
- package/dist/components/atoms/mapping-number.d.ts.map +1 -0
- package/dist/components/atoms/mapping-number.js +52 -0
- package/dist/components/atoms/mapping-number.js.map +1 -0
- package/dist/components/atoms/mapping-object-explorer-field.d.ts +30 -0
- package/dist/components/atoms/mapping-object-explorer-field.d.ts.map +1 -0
- package/dist/components/atoms/mapping-object-explorer-field.js +48 -0
- package/dist/components/atoms/mapping-object-explorer-field.js.map +1 -0
- package/dist/components/atoms/mapping-object-explorer.d.ts +59 -0
- package/dist/components/atoms/mapping-object-explorer.d.ts.map +1 -0
- package/dist/components/atoms/mapping-object-explorer.js +215 -0
- package/dist/components/atoms/mapping-object-explorer.js.map +1 -0
- package/dist/components/atoms/mapping-set-entry.d.ts +31 -0
- package/dist/components/atoms/mapping-set-entry.d.ts.map +1 -0
- package/dist/components/atoms/mapping-set-entry.js +66 -0
- package/dist/components/atoms/mapping-set-entry.js.map +1 -0
- package/dist/components/atoms/mapping-settings-field.d.ts +33 -0
- package/dist/components/atoms/mapping-settings-field.d.ts.map +1 -0
- package/dist/components/atoms/mapping-settings-field.js +48 -0
- package/dist/components/atoms/mapping-settings-field.js.map +1 -0
- package/dist/components/atoms/mapping-settings.d.ts +44 -0
- package/dist/components/atoms/mapping-settings.d.ts.map +1 -0
- package/dist/components/atoms/mapping-settings.js +108 -0
- package/dist/components/atoms/mapping-settings.js.map +1 -0
- package/dist/components/atoms/mapping-string.d.ts +19 -0
- package/dist/components/atoms/mapping-string.d.ts.map +1 -0
- package/dist/components/atoms/mapping-string.js +26 -0
- package/dist/components/atoms/mapping-string.js.map +1 -0
- package/dist/components/atoms/mapping-tab.d.ts +15 -0
- package/dist/components/atoms/mapping-tab.d.ts.map +1 -0
- package/dist/components/atoms/mapping-tab.js +8 -0
- package/dist/components/atoms/mapping-tab.js.map +1 -0
- package/dist/components/atoms/mapping-type-button.d.ts +19 -0
- package/dist/components/atoms/mapping-type-button.d.ts.map +1 -0
- package/dist/components/atoms/mapping-type-button.js +5 -0
- package/dist/components/atoms/mapping-type-button.js.map +1 -0
- package/dist/components/atoms/mapping-validate-field.d.ts +23 -0
- package/dist/components/atoms/mapping-validate-field.d.ts.map +1 -0
- package/dist/components/atoms/mapping-validate-field.js +38 -0
- package/dist/components/atoms/mapping-validate-field.js.map +1 -0
- package/dist/components/atoms/mapping-validate.d.ts +34 -0
- package/dist/components/atoms/mapping-validate.d.ts.map +1 -0
- package/dist/components/atoms/mapping-validate.js +68 -0
- package/dist/components/atoms/mapping-validate.js.map +1 -0
- package/dist/components/atoms/mapping-value.d.ts +17 -0
- package/dist/components/atoms/mapping-value.d.ts.map +1 -0
- package/dist/components/atoms/mapping-value.js +127 -0
- package/dist/components/atoms/mapping-value.js.map +1 -0
- package/dist/components/atoms/mdx-code.d.ts +33 -0
- package/dist/components/atoms/mdx-code.d.ts.map +1 -0
- package/dist/components/atoms/mdx-code.js +69 -0
- package/dist/components/atoms/mdx-code.js.map +1 -0
- package/dist/components/atoms/pane-header.d.ts +24 -0
- package/dist/components/atoms/pane-header.d.ts.map +1 -0
- package/dist/components/atoms/pane-header.js +5 -0
- package/dist/components/atoms/pane-header.js.map +1 -0
- package/dist/components/atoms/panel-hints.d.ts +35 -0
- package/dist/components/atoms/panel-hints.d.ts.map +1 -0
- package/dist/components/atoms/panel-hints.js +5 -0
- package/dist/components/atoms/panel-hints.js.map +1 -0
- package/dist/components/atoms/preview-footer.d.ts +32 -0
- package/dist/components/atoms/preview-footer.d.ts.map +1 -0
- package/dist/components/atoms/preview-footer.js +31 -0
- package/dist/components/atoms/preview-footer.js.map +1 -0
- package/dist/components/atoms/toggle.d.ts +9 -0
- package/dist/components/atoms/toggle.d.ts.map +1 -0
- package/dist/components/atoms/toggle.js +6 -0
- package/dist/components/atoms/toggle.js.map +1 -0
- package/dist/components/demos/DestinationDemo.d.ts +48 -0
- package/dist/components/demos/DestinationDemo.d.ts.map +1 -0
- package/dist/components/demos/DestinationDemo.js +105 -0
- package/dist/components/demos/DestinationDemo.js.map +1 -0
- package/dist/components/demos/DestinationDemo.stories.d.ts +17 -0
- package/dist/components/demos/DestinationDemo.stories.d.ts.map +1 -0
- package/dist/components/demos/DestinationDemo.stories.js +53 -0
- package/dist/components/demos/DestinationDemo.stories.js.map +1 -0
- package/dist/components/demos/DestinationInitDemo.d.ts +34 -0
- package/dist/components/demos/DestinationInitDemo.d.ts.map +1 -0
- package/dist/components/demos/DestinationInitDemo.js +73 -0
- package/dist/components/demos/DestinationInitDemo.js.map +1 -0
- package/dist/components/demos/DestinationInitDemo.stories.d.ts +17 -0
- package/dist/components/demos/DestinationInitDemo.stories.d.ts.map +1 -0
- package/dist/components/demos/DestinationInitDemo.stories.js +39 -0
- package/dist/components/demos/DestinationInitDemo.stories.js.map +1 -0
- package/dist/components/demos/MappingCode.d.ts +34 -0
- package/dist/components/demos/MappingCode.d.ts.map +1 -0
- package/dist/components/demos/MappingCode.js +54 -0
- package/dist/components/demos/MappingCode.js.map +1 -0
- package/dist/components/demos/MappingCode.stories.d.ts +16 -0
- package/dist/components/demos/MappingCode.stories.d.ts.map +1 -0
- package/dist/components/demos/MappingCode.stories.js +42 -0
- package/dist/components/demos/MappingCode.stories.js.map +1 -0
- package/dist/components/demos/MappingDemo.d.ts +41 -0
- package/dist/components/demos/MappingDemo.d.ts.map +1 -0
- package/dist/components/demos/MappingDemo.js +62 -0
- package/dist/components/demos/MappingDemo.js.map +1 -0
- package/dist/components/demos/MappingDemo.stories.d.ts +16 -0
- package/dist/components/demos/MappingDemo.stories.d.ts.map +1 -0
- package/dist/components/demos/MappingDemo.stories.js +63 -0
- package/dist/components/demos/MappingDemo.stories.js.map +1 -0
- package/dist/components/demos/PromotionPlayground.d.ts +25 -0
- package/dist/components/demos/PromotionPlayground.d.ts.map +1 -0
- package/dist/components/demos/PromotionPlayground.js +280 -0
- package/dist/components/demos/PromotionPlayground.js.map +1 -0
- package/dist/components/demos/PromotionPlayground.stories.d.ts +27 -0
- package/dist/components/demos/PromotionPlayground.stories.d.ts.map +1 -0
- package/dist/components/demos/PromotionPlayground.stories.js +32 -0
- package/dist/components/demos/PromotionPlayground.stories.js.map +1 -0
- package/dist/components/forms/field-registry.d.ts +42 -0
- package/dist/components/forms/field-registry.d.ts.map +1 -0
- package/dist/components/forms/field-registry.js +64 -0
- package/dist/components/forms/field-registry.js.map +1 -0
- package/dist/components/forms/mapping-form-wrapper.d.ts +14 -0
- package/dist/components/forms/mapping-form-wrapper.d.ts.map +1 -0
- package/dist/components/forms/mapping-form-wrapper.js +105 -0
- package/dist/components/forms/mapping-form-wrapper.js.map +1 -0
- package/dist/components/forms/widget-registry.d.ts +42 -0
- package/dist/components/forms/widget-registry.d.ts.map +1 -0
- package/dist/components/forms/widget-registry.js +54 -0
- package/dist/components/forms/widget-registry.js.map +1 -0
- package/dist/components/molecules/architecture-flow/ArchitectureFlow.d.ts +24 -0
- package/dist/components/molecules/architecture-flow/ArchitectureFlow.d.ts.map +1 -0
- package/dist/components/molecules/architecture-flow/ArchitectureFlow.js +10 -0
- package/dist/components/molecules/architecture-flow/ArchitectureFlow.js.map +1 -0
- package/dist/components/molecules/architecture-flow/ArchitectureFlow.stories.d.ts +7 -0
- package/dist/components/molecules/architecture-flow/ArchitectureFlow.stories.d.ts.map +1 -0
- package/dist/components/molecules/architecture-flow/ArchitectureFlow.stories.js +71 -0
- package/dist/components/molecules/architecture-flow/ArchitectureFlow.stories.js.map +1 -0
- package/dist/components/molecules/architecture-flow/index.d.ts +3 -0
- package/dist/components/molecules/architecture-flow/index.d.ts.map +1 -0
- package/dist/components/molecules/architecture-flow/index.js +2 -0
- package/dist/components/molecules/architecture-flow/index.js.map +1 -0
- package/dist/components/molecules/auto-select.d.ts +29 -0
- package/dist/components/molecules/auto-select.d.ts.map +1 -0
- package/dist/components/molecules/auto-select.js +188 -0
- package/dist/components/molecules/auto-select.js.map +1 -0
- package/dist/components/molecules/code-box.d.ts +69 -0
- package/dist/components/molecules/code-box.d.ts.map +1 -0
- package/dist/components/molecules/code-box.js +109 -0
- package/dist/components/molecules/code-box.js.map +1 -0
- package/dist/components/molecules/code-box.stories.d.ts +30 -0
- package/dist/components/molecules/code-box.stories.d.ts.map +1 -0
- package/dist/components/molecules/code-box.stories.js +127 -0
- package/dist/components/molecules/code-box.stories.js.map +1 -0
- package/dist/components/molecules/code-snippet.d.ts +58 -0
- package/dist/components/molecules/code-snippet.d.ts.map +1 -0
- package/dist/components/molecules/code-snippet.js +72 -0
- package/dist/components/molecules/code-snippet.js.map +1 -0
- package/dist/components/molecules/code-snippet.stories.d.ts +20 -0
- package/dist/components/molecules/code-snippet.stories.d.ts.map +1 -0
- package/dist/components/molecules/code-snippet.stories.js +68 -0
- package/dist/components/molecules/code-snippet.stories.js.map +1 -0
- package/dist/components/molecules/config-overview-pane.d.ts +44 -0
- package/dist/components/molecules/config-overview-pane.d.ts.map +1 -0
- package/dist/components/molecules/config-overview-pane.js +75 -0
- package/dist/components/molecules/config-overview-pane.js.map +1 -0
- package/dist/components/molecules/config-tree-sidebar.d.ts +46 -0
- package/dist/components/molecules/config-tree-sidebar.d.ts.map +1 -0
- package/dist/components/molecules/config-tree-sidebar.js +183 -0
- package/dist/components/molecules/config-tree-sidebar.js.map +1 -0
- package/dist/components/molecules/destination-config-overview-pane.d.ts +33 -0
- package/dist/components/molecules/destination-config-overview-pane.d.ts.map +1 -0
- package/dist/components/molecules/destination-config-overview-pane.js +153 -0
- package/dist/components/molecules/destination-config-overview-pane.js.map +1 -0
- package/dist/components/molecules/flow-map/FlowMap.d.ts +74 -0
- package/dist/components/molecules/flow-map/FlowMap.d.ts.map +1 -0
- package/dist/components/molecules/flow-map/FlowMap.js +1028 -0
- package/dist/components/molecules/flow-map/FlowMap.js.map +1 -0
- package/dist/components/molecules/flow-map/FlowMap.stories.d.ts +73 -0
- package/dist/components/molecules/flow-map/FlowMap.stories.d.ts.map +1 -0
- package/dist/components/molecules/flow-map/FlowMap.stories.js +587 -0
- package/dist/components/molecules/flow-map/FlowMap.stories.js.map +1 -0
- package/dist/components/molecules/flow-map/FlowMap.transformers.stories.d.ts +45 -0
- package/dist/components/molecules/flow-map/FlowMap.transformers.stories.d.ts.map +1 -0
- package/dist/components/molecules/flow-map/FlowMap.transformers.stories.js +195 -0
- package/dist/components/molecules/flow-map/FlowMap.transformers.stories.js.map +1 -0
- package/dist/components/molecules/flow-map/index.d.ts +3 -0
- package/dist/components/molecules/flow-map/index.d.ts.map +1 -0
- package/dist/components/molecules/flow-map/index.js +2 -0
- package/dist/components/molecules/flow-map/index.js.map +1 -0
- package/dist/components/molecules/mapping-batch-pane-view.d.ts +22 -0
- package/dist/components/molecules/mapping-batch-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-batch-pane-view.js +45 -0
- package/dist/components/molecules/mapping-batch-pane-view.js.map +1 -0
- package/dist/components/molecules/mapping-boolean-pane-view.d.ts +28 -0
- package/dist/components/molecules/mapping-boolean-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-boolean-pane-view.js +34 -0
- package/dist/components/molecules/mapping-boolean-pane-view.js.map +1 -0
- package/dist/components/molecules/mapping-condition-pane-view.d.ts +18 -0
- package/dist/components/molecules/mapping-condition-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-condition-pane-view.js +63 -0
- package/dist/components/molecules/mapping-condition-pane-view.js.map +1 -0
- package/dist/components/molecules/mapping-consent-pane-view.d.ts +16 -0
- package/dist/components/molecules/mapping-consent-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-consent-pane-view.js +65 -0
- package/dist/components/molecules/mapping-consent-pane-view.js.map +1 -0
- package/dist/components/molecules/mapping-consent-row.d.ts +29 -0
- package/dist/components/molecules/mapping-consent-row.d.ts.map +1 -0
- package/dist/components/molecules/mapping-consent-row.js +26 -0
- package/dist/components/molecules/mapping-consent-row.js.map +1 -0
- package/dist/components/molecules/mapping-entity-pane.d.ts +17 -0
- package/dist/components/molecules/mapping-entity-pane.d.ts.map +1 -0
- package/dist/components/molecules/mapping-entity-pane.js +68 -0
- package/dist/components/molecules/mapping-entity-pane.js.map +1 -0
- package/dist/components/molecules/mapping-enum-pane-view.d.ts +40 -0
- package/dist/components/molecules/mapping-enum-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-enum-pane-view.js +32 -0
- package/dist/components/molecules/mapping-enum-pane-view.js.map +1 -0
- package/dist/components/molecules/mapping-fn-pane-view.d.ts +18 -0
- package/dist/components/molecules/mapping-fn-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-fn-pane-view.js +77 -0
- package/dist/components/molecules/mapping-fn-pane-view.js.map +1 -0
- package/dist/components/molecules/mapping-function-pane-base.d.ts +53 -0
- package/dist/components/molecules/mapping-function-pane-base.d.ts.map +1 -0
- package/dist/components/molecules/mapping-function-pane-base.js +60 -0
- package/dist/components/molecules/mapping-function-pane-base.js.map +1 -0
- package/dist/components/molecules/mapping-key-pane-view.d.ts +23 -0
- package/dist/components/molecules/mapping-key-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-key-pane-view.js +12 -0
- package/dist/components/molecules/mapping-key-pane-view.js.map +1 -0
- package/dist/components/molecules/mapping-loop-field.d.ts +44 -0
- package/dist/components/molecules/mapping-loop-field.d.ts.map +1 -0
- package/dist/components/molecules/mapping-loop-field.js +133 -0
- package/dist/components/molecules/mapping-loop-field.js.map +1 -0
- package/dist/components/molecules/mapping-loop-pane-view.d.ts +28 -0
- package/dist/components/molecules/mapping-loop-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-loop-pane-view.js +44 -0
- package/dist/components/molecules/mapping-loop-pane-view.js.map +1 -0
- package/dist/components/molecules/mapping-map-field.d.ts +31 -0
- package/dist/components/molecules/mapping-map-field.d.ts.map +1 -0
- package/dist/components/molecules/mapping-map-field.js +120 -0
- package/dist/components/molecules/mapping-map-field.js.map +1 -0
- package/dist/components/molecules/mapping-map-overview.d.ts +13 -0
- package/dist/components/molecules/mapping-map-overview.d.ts.map +1 -0
- package/dist/components/molecules/mapping-map-overview.js +58 -0
- package/dist/components/molecules/mapping-map-overview.js.map +1 -0
- package/dist/components/molecules/mapping-map-pane-view-rjsf.d.ts +53 -0
- package/dist/components/molecules/mapping-map-pane-view-rjsf.d.ts.map +1 -0
- package/dist/components/molecules/mapping-map-pane-view-rjsf.js +127 -0
- package/dist/components/molecules/mapping-map-pane-view-rjsf.js.map +1 -0
- package/dist/components/molecules/mapping-name-pane-view.d.ts +22 -0
- package/dist/components/molecules/mapping-name-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-name-pane-view.js +38 -0
- package/dist/components/molecules/mapping-name-pane-view.js.map +1 -0
- package/dist/components/molecules/mapping-navigation-header.d.ts +27 -0
- package/dist/components/molecules/mapping-navigation-header.d.ts.map +1 -0
- package/dist/components/molecules/mapping-navigation-header.js +7 -0
- package/dist/components/molecules/mapping-navigation-header.js.map +1 -0
- package/dist/components/molecules/mapping-overview-pane.d.ts +14 -0
- package/dist/components/molecules/mapping-overview-pane.d.ts.map +1 -0
- package/dist/components/molecules/mapping-overview-pane.js +60 -0
- package/dist/components/molecules/mapping-overview-pane.js.map +1 -0
- package/dist/components/molecules/mapping-pane.d.ts +52 -0
- package/dist/components/molecules/mapping-pane.d.ts.map +1 -0
- package/dist/components/molecules/mapping-pane.js +155 -0
- package/dist/components/molecules/mapping-pane.js.map +1 -0
- package/dist/components/molecules/mapping-policy-overview-pane.d.ts +26 -0
- package/dist/components/molecules/mapping-policy-overview-pane.d.ts.map +1 -0
- package/dist/components/molecules/mapping-policy-overview-pane.js +69 -0
- package/dist/components/molecules/mapping-policy-overview-pane.js.map +1 -0
- package/dist/components/molecules/mapping-primitive-pane-view.d.ts +30 -0
- package/dist/components/molecules/mapping-primitive-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-primitive-pane-view.js +43 -0
- package/dist/components/molecules/mapping-primitive-pane-view.js.map +1 -0
- package/dist/components/molecules/mapping-rule-pane-view.d.ts +25 -0
- package/dist/components/molecules/mapping-rule-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-rule-pane-view.js +35 -0
- package/dist/components/molecules/mapping-rule-pane-view.js.map +1 -0
- package/dist/components/molecules/mapping-set-field.d.ts +34 -0
- package/dist/components/molecules/mapping-set-field.d.ts.map +1 -0
- package/dist/components/molecules/mapping-set-field.js +160 -0
- package/dist/components/molecules/mapping-set-field.js.map +1 -0
- package/dist/components/molecules/mapping-set-pane-view.d.ts +31 -0
- package/dist/components/molecules/mapping-set-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-set-pane-view.js +96 -0
- package/dist/components/molecules/mapping-set-pane-view.js.map +1 -0
- package/dist/components/molecules/mapping-tab-bar.d.ts +15 -0
- package/dist/components/molecules/mapping-tab-bar.d.ts.map +1 -0
- package/dist/components/molecules/mapping-tab-bar.js +9 -0
- package/dist/components/molecules/mapping-tab-bar.js.map +1 -0
- package/dist/components/molecules/mapping-tree-sidebar.d.ts +59 -0
- package/dist/components/molecules/mapping-tree-sidebar.d.ts.map +1 -0
- package/dist/components/molecules/mapping-tree-sidebar.js +491 -0
- package/dist/components/molecules/mapping-tree-sidebar.js.map +1 -0
- package/dist/components/molecules/mapping-type-grid.d.ts +12 -0
- package/dist/components/molecules/mapping-type-grid.d.ts.map +1 -0
- package/dist/components/molecules/mapping-type-grid.js +107 -0
- package/dist/components/molecules/mapping-type-grid.js.map +1 -0
- package/dist/components/molecules/mapping-type-selector.d.ts +21 -0
- package/dist/components/molecules/mapping-type-selector.d.ts.map +1 -0
- package/dist/components/molecules/mapping-type-selector.js +38 -0
- package/dist/components/molecules/mapping-type-selector.js.map +1 -0
- package/dist/components/molecules/mapping-validate-pane-view.d.ts +19 -0
- package/dist/components/molecules/mapping-validate-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-validate-pane-view.js +66 -0
- package/dist/components/molecules/mapping-validate-pane-view.js.map +1 -0
- package/dist/components/molecules/mapping-value-config-pane-view.d.ts +30 -0
- package/dist/components/molecules/mapping-value-config-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-value-config-pane-view.js +105 -0
- package/dist/components/molecules/mapping-value-config-pane-view.js.map +1 -0
- package/dist/components/molecules/mapping-value-pane-view.d.ts +28 -0
- package/dist/components/molecules/mapping-value-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-value-pane-view.js +40 -0
- package/dist/components/molecules/mapping-value-pane-view.js.map +1 -0
- package/dist/components/molecules/mapping-value-type-pane-view.d.ts +27 -0
- package/dist/components/molecules/mapping-value-type-pane-view.d.ts.map +1 -0
- package/dist/components/molecules/mapping-value-type-pane-view.js +253 -0
- package/dist/components/molecules/mapping-value-type-pane-view.js.map +1 -0
- package/dist/components/molecules/options-pane.d.ts +28 -0
- package/dist/components/molecules/options-pane.d.ts.map +1 -0
- package/dist/components/molecules/options-pane.js +80 -0
- package/dist/components/molecules/options-pane.js.map +1 -0
- package/dist/components/molecules/preview.d.ts +22 -0
- package/dist/components/molecules/preview.d.ts.map +1 -0
- package/dist/components/molecules/preview.js +221 -0
- package/dist/components/molecules/preview.js.map +1 -0
- package/dist/components/molecules/preview.stories.d.ts +23 -0
- package/dist/components/molecules/preview.stories.d.ts.map +1 -0
- package/dist/components/molecules/preview.stories.js +186 -0
- package/dist/components/molecules/preview.stories.js.map +1 -0
- package/dist/components/molecules/property-suggestions.d.ts +17 -0
- package/dist/components/molecules/property-suggestions.d.ts.map +1 -0
- package/dist/components/molecules/property-suggestions.js +56 -0
- package/dist/components/molecules/property-suggestions.js.map +1 -0
- package/dist/components/molecules/property-table.d.ts +7 -0
- package/dist/components/molecules/property-table.d.ts.map +1 -0
- package/dist/components/molecules/property-table.js +88 -0
- package/dist/components/molecules/property-table.js.map +1 -0
- package/dist/components/molecules/property-table.stories.d.ts +24 -0
- package/dist/components/molecules/property-table.stories.d.ts.map +1 -0
- package/dist/components/molecules/property-table.stories.js +86 -0
- package/dist/components/molecules/property-table.stories.js.map +1 -0
- package/dist/components/molecules/settings-overview-pane.d.ts +32 -0
- package/dist/components/molecules/settings-overview-pane.d.ts.map +1 -0
- package/dist/components/molecules/settings-overview-pane.js +85 -0
- package/dist/components/molecules/settings-overview-pane.js.map +1 -0
- package/dist/components/molecules/validation-overview-pane.d.ts +27 -0
- package/dist/components/molecules/validation-overview-pane.d.ts.map +1 -0
- package/dist/components/molecules/validation-overview-pane.js +50 -0
- package/dist/components/molecules/validation-overview-pane.js.map +1 -0
- package/dist/components/organisms/browser-box.d.ts +31 -0
- package/dist/components/organisms/browser-box.d.ts.map +1 -0
- package/dist/components/organisms/browser-box.js +80 -0
- package/dist/components/organisms/browser-box.js.map +1 -0
- package/dist/components/organisms/browser-box.stories.d.ts +26 -0
- package/dist/components/organisms/browser-box.stories.d.ts.map +1 -0
- package/dist/components/organisms/browser-box.stories.js +102 -0
- package/dist/components/organisms/browser-box.stories.js.map +1 -0
- package/dist/components/organisms/collector-box.d.ts +24 -0
- package/dist/components/organisms/collector-box.d.ts.map +1 -0
- package/dist/components/organisms/collector-box.js +56 -0
- package/dist/components/organisms/collector-box.js.map +1 -0
- package/dist/components/organisms/collector-box.stories.d.ts +22 -0
- package/dist/components/organisms/collector-box.stories.d.ts.map +1 -0
- package/dist/components/organisms/collector-box.stories.js +59 -0
- package/dist/components/organisms/collector-box.stories.js.map +1 -0
- package/dist/components/organisms/config-editor/config-editor-box.d.ts +35 -0
- package/dist/components/organisms/config-editor/config-editor-box.d.ts.map +1 -0
- package/dist/components/organisms/config-editor/config-editor-box.js +50 -0
- package/dist/components/organisms/config-editor/config-editor-box.js.map +1 -0
- package/dist/components/organisms/config-editor/config-editor-tabs.d.ts +52 -0
- package/dist/components/organisms/config-editor/config-editor-tabs.d.ts.map +1 -0
- package/dist/components/organisms/config-editor/config-editor-tabs.js +127 -0
- package/dist/components/organisms/config-editor/config-editor-tabs.js.map +1 -0
- package/dist/components/organisms/config-editor/config-editor.d.ts +47 -0
- package/dist/components/organisms/config-editor/config-editor.d.ts.map +1 -0
- package/dist/components/organisms/config-editor/config-editor.js +50 -0
- package/dist/components/organisms/config-editor/config-editor.js.map +1 -0
- package/dist/components/organisms/config-editor/config-editor.stories.d.ts +25 -0
- package/dist/components/organisms/config-editor/config-editor.stories.d.ts.map +1 -0
- package/dist/components/organisms/config-editor/config-editor.stories.js +77 -0
- package/dist/components/organisms/config-editor/config-editor.stories.js.map +1 -0
- package/dist/components/organisms/config-editor/index.d.ts +22 -0
- package/dist/components/organisms/config-editor/index.d.ts.map +1 -0
- package/dist/components/organisms/config-editor/index.js +20 -0
- package/dist/components/organisms/config-editor/index.js.map +1 -0
- package/dist/components/organisms/live-code.d.ts +22 -0
- package/dist/components/organisms/live-code.d.ts.map +1 -0
- package/dist/components/organisms/live-code.js +50 -0
- package/dist/components/organisms/live-code.js.map +1 -0
- package/dist/components/organisms/live-code.stories.d.ts +24 -0
- package/dist/components/organisms/live-code.stories.d.ts.map +1 -0
- package/dist/components/organisms/live-code.stories.js +55 -0
- package/dist/components/organisms/live-code.stories.js.map +1 -0
- package/dist/components/ui/button.d.ts +4 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +6 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/icon.d.ts +5 -0
- package/dist/components/ui/icon.d.ts.map +1 -0
- package/dist/components/ui/icon.js +5 -0
- package/dist/components/ui/icon.js.map +1 -0
- package/dist/components/ui/label.d.ts +5 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/label.js +5 -0
- package/dist/components/ui/label.js.map +1 -0
- package/dist/contexts/GridHeightContext.d.ts +11 -0
- package/dist/contexts/GridHeightContext.d.ts.map +1 -0
- package/dist/contexts/GridHeightContext.js +14 -0
- package/dist/contexts/GridHeightContext.js.map +1 -0
- package/dist/helpers/capture.d.ts +83 -0
- package/dist/helpers/capture.d.ts.map +1 -0
- package/dist/helpers/capture.js +125 -0
- package/dist/helpers/capture.js.map +1 -0
- package/dist/helpers/destinations.d.ts +21 -0
- package/dist/helpers/destinations.d.ts.map +1 -0
- package/dist/helpers/destinations.js +46 -0
- package/dist/helpers/destinations.js.map +1 -0
- package/dist/hooks/useMappingNavigation.d.ts +62 -0
- package/dist/hooks/useMappingNavigation.d.ts.map +1 -0
- package/dist/hooks/useMappingNavigation.js +339 -0
- package/dist/hooks/useMappingNavigation.js.map +1 -0
- package/dist/hooks/useMappingState.d.ts +56 -0
- package/dist/hooks/useMappingState.d.ts.map +1 -0
- package/dist/hooks/useMappingState.js +142 -0
- package/dist/hooks/useMappingState.js.map +1 -0
- package/dist/hooks/useMonacoHeight.d.ts +31 -0
- package/dist/hooks/useMonacoHeight.d.ts.map +1 -0
- package/dist/hooks/useMonacoHeight.js +83 -0
- package/dist/hooks/useMonacoHeight.js.map +1 -0
- package/dist/hooks/useTreeState.d.ts +32 -0
- package/dist/hooks/useTreeState.d.ts.map +1 -0
- package/dist/hooks/useTreeState.js +94 -0
- package/dist/hooks/useTreeState.js.map +1 -0
- package/dist/index.d.cts +152 -33
- package/dist/index.d.ts +65 -1265
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -14046
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4759 -1375
- package/dist/index.mjs.map +1 -1
- package/dist/lib/utils.d.ts +7 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +10 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/{monaco-types-GBPMPIMU.mjs → monaco-types-4FIH5OVX.mjs} +2 -2
- package/dist/providers/MDXProvider.d.ts +40 -0
- package/dist/providers/MDXProvider.d.ts.map +1 -0
- package/dist/providers/MDXProvider.js +57 -0
- package/dist/providers/MDXProvider.js.map +1 -0
- package/dist/schemas/config-structures/destination-config.d.ts +27 -0
- package/dist/schemas/config-structures/destination-config.d.ts.map +1 -0
- package/dist/schemas/config-structures/destination-config.js +104 -0
- package/dist/schemas/config-structures/destination-config.js.map +1 -0
- package/dist/schemas/config-structures/index.d.ts +17 -0
- package/dist/schemas/config-structures/index.d.ts.map +1 -0
- package/dist/schemas/config-structures/index.js +17 -0
- package/dist/schemas/config-structures/index.js.map +1 -0
- package/dist/schemas/config-structures/mapping-rule.d.ts +17 -0
- package/dist/schemas/config-structures/mapping-rule.d.ts.map +1 -0
- package/dist/schemas/config-structures/mapping-rule.js +81 -0
- package/dist/schemas/config-structures/mapping-rule.js.map +1 -0
- package/dist/schemas/config-structures/types.d.ts +62 -0
- package/dist/schemas/config-structures/types.d.ts.map +1 -0
- package/dist/schemas/config-structures/types.js +2 -0
- package/dist/schemas/config-structures/types.js.map +1 -0
- package/dist/schemas/mapping-rule-schema.d.ts +25 -0
- package/dist/schemas/mapping-rule-schema.d.ts.map +1 -0
- package/dist/schemas/mapping-rule-schema.js +86 -0
- package/dist/schemas/mapping-rule-schema.js.map +1 -0
- package/dist/schemas/rule-properties-schema.d.ts +42 -0
- package/dist/schemas/rule-properties-schema.d.ts.map +1 -0
- package/dist/schemas/rule-properties-schema.js +79 -0
- package/dist/schemas/rule-properties-schema.js.map +1 -0
- package/dist/schemas/value-config-schema.d.ts +36 -0
- package/dist/schemas/value-config-schema.d.ts.map +1 -0
- package/dist/schemas/value-config-schema.js +227 -0
- package/dist/schemas/value-config-schema.js.map +1 -0
- package/dist/styles.css +317 -0
- package/dist/themes/index.d.ts +23 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +29 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/themes/lighthouse.d.ts +26 -0
- package/dist/themes/lighthouse.d.ts.map +1 -0
- package/dist/themes/lighthouse.js +229 -0
- package/dist/themes/lighthouse.js.map +1 -0
- package/dist/themes/palenight.d.ts +31 -0
- package/dist/themes/palenight.d.ts.map +1 -0
- package/dist/themes/palenight.js +235 -0
- package/dist/themes/palenight.js.map +1 -0
- package/dist/themes/types.d.ts +103 -0
- package/dist/themes/types.d.ts.map +1 -0
- package/dist/themes/types.js +8 -0
- package/dist/themes/types.js.map +1 -0
- package/dist/types/schemas.d.ts +29 -0
- package/dist/types/schemas.d.ts.map +1 -0
- package/dist/types/schemas.js +2 -0
- package/dist/types/schemas.js.map +1 -0
- package/dist/utils/clean-form-data.d.ts +26 -0
- package/dist/utils/clean-form-data.d.ts.map +1 -0
- package/dist/utils/clean-form-data.js +76 -0
- package/dist/utils/clean-form-data.js.map +1 -0
- package/dist/utils/code-normalizer.d.ts +11 -0
- package/dist/utils/code-normalizer.d.ts.map +1 -0
- package/dist/utils/code-normalizer.js +21 -0
- package/dist/utils/code-normalizer.js.map +1 -0
- package/dist/utils/config-validator.d.ts +12 -0
- package/dist/utils/config-validator.d.ts.map +1 -0
- package/dist/utils/config-validator.js +10 -0
- package/dist/utils/config-validator.js.map +1 -0
- package/dist/utils/consent-scanner.d.ts +19 -0
- package/dist/utils/consent-scanner.d.ts.map +1 -0
- package/dist/utils/consent-scanner.js +115 -0
- package/dist/utils/consent-scanner.js.map +1 -0
- package/dist/utils/format-code.d.ts +9 -0
- package/dist/utils/format-code.d.ts.map +1 -0
- package/dist/utils/format-code.js +68 -0
- package/dist/utils/format-code.js.map +1 -0
- package/dist/utils/generic-tree-builder.d.ts +37 -0
- package/dist/utils/generic-tree-builder.d.ts.map +1 -0
- package/dist/utils/generic-tree-builder.js +225 -0
- package/dist/utils/generic-tree-builder.js.map +1 -0
- package/dist/utils/mapping-path.d.ts +146 -0
- package/dist/utils/mapping-path.d.ts.map +1 -0
- package/dist/utils/mapping-path.js +271 -0
- package/dist/utils/mapping-path.js.map +1 -0
- package/dist/utils/monaco-context-types.d.ts +39 -0
- package/dist/utils/monaco-context-types.d.ts.map +1 -0
- package/dist/utils/monaco-context-types.js +426 -0
- package/dist/utils/monaco-context-types.js.map +1 -0
- package/dist/utils/monaco-decorators.d.ts +17 -0
- package/dist/utils/monaco-decorators.d.ts.map +1 -0
- package/dist/utils/monaco-decorators.js +79 -0
- package/dist/utils/monaco-decorators.js.map +1 -0
- package/dist/utils/monaco-formatters.d.ts +16 -0
- package/dist/utils/monaco-formatters.d.ts.map +1 -0
- package/dist/utils/monaco-formatters.js +139 -0
- package/dist/utils/monaco-formatters.js.map +1 -0
- package/dist/utils/monaco-types.d.ts +174 -0
- package/dist/utils/monaco-types.d.ts.map +1 -0
- package/dist/utils/monaco-types.js +378 -0
- package/dist/utils/monaco-types.js.map +1 -0
- package/dist/utils/path-analyzer.d.ts +88 -0
- package/dist/utils/path-analyzer.d.ts.map +1 -0
- package/dist/utils/path-analyzer.js +215 -0
- package/dist/utils/path-analyzer.js.map +1 -0
- package/dist/utils/schema-validation.d.ts +36 -0
- package/dist/utils/schema-validation.d.ts.map +1 -0
- package/dist/utils/schema-validation.js +136 -0
- package/dist/utils/schema-validation.js.map +1 -0
- package/dist/utils/type-detector.d.ts +35 -0
- package/dist/utils/type-detector.d.ts.map +1 -0
- package/dist/utils/type-detector.js +241 -0
- package/dist/utils/type-detector.js.map +1 -0
- package/dist/utils/value-display-formatter.d.ts +31 -0
- package/dist/utils/value-display-formatter.d.ts.map +1 -0
- package/dist/utils/value-display-formatter.js +110 -0
- package/dist/utils/value-display-formatter.js.map +1 -0
- package/package.json +44 -28
- package/dist/chunk-BEAIHYJ5.mjs +0 -587
- package/dist/chunk-BEAIHYJ5.mjs.map +0 -1
- /package/dist/{monaco-types-GBPMPIMU.mjs.map → monaco-types-4FIH5OVX.mjs.map} +0 -0
|
@@ -0,0 +1,1028 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import React, { useEffect, useRef } from 'react';
|
|
3
|
+
import rough from 'roughjs';
|
|
4
|
+
import { Icon } from '@iconify/react';
|
|
5
|
+
/**
|
|
6
|
+
* RoughRect - Renders a hand-drawn rectangle using rough.js SVG mode
|
|
7
|
+
* Uses a rounded rectangle path for softer corners
|
|
8
|
+
*/
|
|
9
|
+
function RoughRect({ x, y, width, height, fill, stroke, }) {
|
|
10
|
+
const ref = useRef(null);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
if (!ref.current)
|
|
13
|
+
return;
|
|
14
|
+
const svg = ref.current.ownerSVGElement;
|
|
15
|
+
if (!svg)
|
|
16
|
+
return;
|
|
17
|
+
// Clear previous content
|
|
18
|
+
ref.current.replaceChildren();
|
|
19
|
+
const rs = rough.svg(svg);
|
|
20
|
+
const r = 8; // corner radius
|
|
21
|
+
// Create rounded rectangle path
|
|
22
|
+
const path = `M ${x + r} ${y}
|
|
23
|
+
L ${x + width - r} ${y}
|
|
24
|
+
Q ${x + width} ${y} ${x + width} ${y + r}
|
|
25
|
+
L ${x + width} ${y + height - r}
|
|
26
|
+
Q ${x + width} ${y + height} ${x + width - r} ${y + height}
|
|
27
|
+
L ${x + r} ${y + height}
|
|
28
|
+
Q ${x} ${y + height} ${x} ${y + height - r}
|
|
29
|
+
L ${x} ${y + r}
|
|
30
|
+
Q ${x} ${y} ${x + r} ${y}
|
|
31
|
+
Z`;
|
|
32
|
+
// Draw main rectangle
|
|
33
|
+
const rectNode = rs.path(path, {
|
|
34
|
+
fill,
|
|
35
|
+
fillStyle: 'solid',
|
|
36
|
+
stroke,
|
|
37
|
+
strokeWidth: 1.5,
|
|
38
|
+
roughness: 1.2,
|
|
39
|
+
bowing: 1,
|
|
40
|
+
});
|
|
41
|
+
ref.current.appendChild(rectNode);
|
|
42
|
+
return () => {
|
|
43
|
+
ref.current?.replaceChildren();
|
|
44
|
+
};
|
|
45
|
+
}, [x, y, width, height, fill, stroke]);
|
|
46
|
+
return _jsx("g", { ref: ref });
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* RoughCircle - Renders a hand-drawn circle using rough.js SVG mode
|
|
50
|
+
*/
|
|
51
|
+
function RoughCircle({ cx, cy, diameter, fill, stroke, }) {
|
|
52
|
+
const ref = useRef(null);
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
if (!ref.current)
|
|
55
|
+
return;
|
|
56
|
+
const svg = ref.current.ownerSVGElement;
|
|
57
|
+
if (!svg)
|
|
58
|
+
return;
|
|
59
|
+
ref.current.replaceChildren();
|
|
60
|
+
const rs = rough.svg(svg);
|
|
61
|
+
const circleNode = rs.circle(cx, cy, diameter, {
|
|
62
|
+
fill,
|
|
63
|
+
fillStyle: 'solid',
|
|
64
|
+
stroke,
|
|
65
|
+
strokeWidth: 1.5,
|
|
66
|
+
roughness: 0.8,
|
|
67
|
+
});
|
|
68
|
+
ref.current.appendChild(circleNode);
|
|
69
|
+
return () => {
|
|
70
|
+
ref.current?.replaceChildren();
|
|
71
|
+
};
|
|
72
|
+
}, [cx, cy, diameter, fill, stroke]);
|
|
73
|
+
return _jsx("g", { ref: ref });
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Marker - Red circle with number/text inside
|
|
77
|
+
*/
|
|
78
|
+
function Marker({ x, y, text }) {
|
|
79
|
+
return (_jsxs("g", { children: [_jsx(RoughCircle, { cx: x, cy: y, diameter: MARKER_SIZE, fill: "var(--flow-marker-fill, #dc2626)", stroke: "var(--flow-marker-stroke, #991b1b)" }), _jsx("text", { x: x, y: y, textAnchor: "middle", dominantBaseline: "central", fill: "var(--flow-marker-text, #ffffff)", fontSize: 10, fontWeight: 600, fontFamily: "system-ui, -apple-system, sans-serif", children: text })] }));
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* RoughArrow - Renders a hand-drawn curved arrow using rough.js SVG mode
|
|
83
|
+
* Uses quadratic bezier curves for an organic feel.
|
|
84
|
+
* Includes arrowhead that follows the curve's final angle.
|
|
85
|
+
*/
|
|
86
|
+
function RoughArrow({ fromX, fromY, toX, toY, stroke, arrowSize = 8, centerY, }) {
|
|
87
|
+
const ref = useRef(null);
|
|
88
|
+
useEffect(() => {
|
|
89
|
+
if (!ref.current)
|
|
90
|
+
return;
|
|
91
|
+
const svg = ref.current.ownerSVGElement;
|
|
92
|
+
if (!svg)
|
|
93
|
+
return;
|
|
94
|
+
// Clear previous content
|
|
95
|
+
ref.current.replaceChildren();
|
|
96
|
+
const rs = rough.svg(svg);
|
|
97
|
+
const strokeWidth = 1.5;
|
|
98
|
+
const color = stroke;
|
|
99
|
+
const dx = toX - fromX;
|
|
100
|
+
const dy = toY - fromY;
|
|
101
|
+
const length = Math.sqrt(dx * dx + dy * dy);
|
|
102
|
+
// Calculate control point for quadratic bezier curve
|
|
103
|
+
// For horizontal lines: slight upward curve
|
|
104
|
+
// For diagonal lines: curve that exits horizontally then bends to target
|
|
105
|
+
const midX = (fromX + toX) / 2;
|
|
106
|
+
const midY = (fromY + toY) / 2;
|
|
107
|
+
let controlX;
|
|
108
|
+
let controlY;
|
|
109
|
+
if (Math.abs(dy) < 2) {
|
|
110
|
+
// Nearly horizontal: subtle upward curve
|
|
111
|
+
controlX = midX;
|
|
112
|
+
controlY = midY - Math.min(length * 0.08, 12);
|
|
113
|
+
}
|
|
114
|
+
else if (centerY !== undefined) {
|
|
115
|
+
// Curve towards whichever endpoint is farther from center
|
|
116
|
+
// This creates natural spreading for fan-in and fan-out
|
|
117
|
+
const fromDistFromCenter = Math.abs(fromY - centerY);
|
|
118
|
+
const toDistFromCenter = Math.abs(toY - centerY);
|
|
119
|
+
controlX = fromX + dx * 0.5;
|
|
120
|
+
if (fromDistFromCenter >= toDistFromCenter) {
|
|
121
|
+
// Source is farther from center → curve towards source's side
|
|
122
|
+
controlY =
|
|
123
|
+
fromY < centerY
|
|
124
|
+
? midY - Math.abs(dy) * 0.3 // Source above center → curve UP
|
|
125
|
+
: midY + Math.abs(dy) * 0.3; // Source below center → curve DOWN
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
// Target is farther from center → curve towards target's side
|
|
129
|
+
controlY =
|
|
130
|
+
toY < centerY
|
|
131
|
+
? midY - Math.abs(dy) * 0.3 // Target above center → curve UP
|
|
132
|
+
: midY + Math.abs(dy) * 0.3; // Target below center → curve DOWN
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
// Fallback when centerY not provided: simple direction-based curve
|
|
137
|
+
controlX = fromX + dx * 0.5;
|
|
138
|
+
controlY =
|
|
139
|
+
dy > 0 ? fromY - Math.abs(dy) * 0.3 : fromY + Math.abs(dy) * 0.3;
|
|
140
|
+
}
|
|
141
|
+
// Calculate the angle at the end of the curve (tangent at t=1)
|
|
142
|
+
// For quadratic bezier: tangent = 2(1-t)(P1-P0) + 2t(P2-P1) at t=1 = 2(P2-P1)
|
|
143
|
+
const tangentX = toX - controlX;
|
|
144
|
+
const tangentY = toY - controlY;
|
|
145
|
+
const endAngle = Math.atan2(tangentY, tangentX);
|
|
146
|
+
// Calculate where the curve should stop (before the arrowhead)
|
|
147
|
+
const curveEndX = toX - Math.cos(endAngle) * arrowSize;
|
|
148
|
+
const curveEndY = toY - Math.sin(endAngle) * arrowSize;
|
|
149
|
+
// Draw curved line using SVG path with quadratic bezier
|
|
150
|
+
const curvePath = `M ${fromX} ${fromY} Q ${controlX} ${controlY} ${curveEndX} ${curveEndY}`;
|
|
151
|
+
const curveNode = rs.path(curvePath, {
|
|
152
|
+
stroke: color,
|
|
153
|
+
strokeWidth,
|
|
154
|
+
roughness: 0.8,
|
|
155
|
+
fill: 'none',
|
|
156
|
+
});
|
|
157
|
+
ref.current.appendChild(curveNode);
|
|
158
|
+
// Draw arrowhead (two lines at angles from curve's end tangent)
|
|
159
|
+
const arrowAngle = Math.PI / 6; // 30 degrees
|
|
160
|
+
const arrowLength = 8;
|
|
161
|
+
// Arrow head line 1 (upper)
|
|
162
|
+
const arrow1EndX = curveEndX - Math.cos(endAngle - arrowAngle) * arrowLength;
|
|
163
|
+
const arrow1EndY = curveEndY - Math.sin(endAngle - arrowAngle) * arrowLength;
|
|
164
|
+
const arrowHead1 = rs.line(curveEndX, curveEndY, arrow1EndX, arrow1EndY, {
|
|
165
|
+
stroke: color,
|
|
166
|
+
strokeWidth,
|
|
167
|
+
roughness: 0.5,
|
|
168
|
+
});
|
|
169
|
+
ref.current.appendChild(arrowHead1);
|
|
170
|
+
// Arrow head line 2 (lower)
|
|
171
|
+
const arrow2EndX = curveEndX - Math.cos(endAngle + arrowAngle) * arrowLength;
|
|
172
|
+
const arrow2EndY = curveEndY - Math.sin(endAngle + arrowAngle) * arrowLength;
|
|
173
|
+
const arrowHead2 = rs.line(curveEndX, curveEndY, arrow2EndX, arrow2EndY, {
|
|
174
|
+
stroke: color,
|
|
175
|
+
strokeWidth,
|
|
176
|
+
roughness: 0.5,
|
|
177
|
+
});
|
|
178
|
+
ref.current.appendChild(arrowHead2);
|
|
179
|
+
return () => {
|
|
180
|
+
ref.current?.replaceChildren();
|
|
181
|
+
};
|
|
182
|
+
}, [fromX, fromY, toX, toY, stroke, arrowSize, centerY]);
|
|
183
|
+
return _jsx("g", { ref: ref });
|
|
184
|
+
}
|
|
185
|
+
// Default layout configuration
|
|
186
|
+
export const defaultLayout = {
|
|
187
|
+
labelSize: 13,
|
|
188
|
+
labelWeight: '600',
|
|
189
|
+
textSize: 12,
|
|
190
|
+
textWeight: 'normal',
|
|
191
|
+
boxHeight: 50,
|
|
192
|
+
descriptionSize: 13,
|
|
193
|
+
};
|
|
194
|
+
// Layout constants
|
|
195
|
+
const STAGE_WIDTH = 120;
|
|
196
|
+
const STAGE_HEIGHT = 50;
|
|
197
|
+
const STAGE_GAP = 50; // Horizontal gap between stages
|
|
198
|
+
const VERTICAL_GAP = 12; // Vertical gap between stacked sources/destinations
|
|
199
|
+
const PADDING_X = 8;
|
|
200
|
+
const PADDING_Y = 8;
|
|
201
|
+
const EDGE_ARROW_LENGTH = 25; // Space for incoming/outgoing arrows
|
|
202
|
+
const TITLE_HEIGHT = 30;
|
|
203
|
+
const ARROW_SIZE = 8;
|
|
204
|
+
const ARROW_OFFSET = 6; // Vertical offset for parallel return arrows
|
|
205
|
+
/**
|
|
206
|
+
* Resolves a transformer chain by following `next` references.
|
|
207
|
+
* Returns an ordered array of transformers from the starting key to the end.
|
|
208
|
+
* Throws if a reference is invalid or circular.
|
|
209
|
+
*/
|
|
210
|
+
function resolveTransformerChain(transformers, startKey) {
|
|
211
|
+
if (!transformers || !startKey)
|
|
212
|
+
return [];
|
|
213
|
+
const result = [];
|
|
214
|
+
const visited = new Set();
|
|
215
|
+
let currentKey = startKey;
|
|
216
|
+
while (currentKey) {
|
|
217
|
+
if (visited.has(currentKey)) {
|
|
218
|
+
throw new Error(`FlowMap: Circular reference detected in transformer chain at "${currentKey}"`);
|
|
219
|
+
}
|
|
220
|
+
const config = transformers[currentKey];
|
|
221
|
+
if (!config) {
|
|
222
|
+
throw new Error(`FlowMap: Invalid transformer reference "${currentKey}". Available transformers: ${Object.keys(transformers).join(', ') || 'none'}`);
|
|
223
|
+
}
|
|
224
|
+
visited.add(currentKey);
|
|
225
|
+
result.push({ name: currentKey, config });
|
|
226
|
+
currentKey = config.next;
|
|
227
|
+
}
|
|
228
|
+
return result;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Collects all unique transformers that are reachable from sources (pre) or destinations (post).
|
|
232
|
+
* Returns them in chain order based on `next` references.
|
|
233
|
+
* Finds the chain head (transformer not referenced by any other's `next`) and walks from there.
|
|
234
|
+
*/
|
|
235
|
+
function collectReachableTransformers(transformers, entryPoints) {
|
|
236
|
+
if (!transformers)
|
|
237
|
+
return [];
|
|
238
|
+
// Find all unique transformer names referenced by walking each entry point's chain
|
|
239
|
+
const referencedNames = new Set();
|
|
240
|
+
for (const entry of entryPoints) {
|
|
241
|
+
if (!entry || !transformers[entry])
|
|
242
|
+
continue;
|
|
243
|
+
const chain = resolveTransformerChain(transformers, entry);
|
|
244
|
+
chain.forEach((p) => referencedNames.add(p.name));
|
|
245
|
+
}
|
|
246
|
+
if (referencedNames.size === 0)
|
|
247
|
+
return [];
|
|
248
|
+
// Find chain head: transformer in our set that's not anyone's `next`
|
|
249
|
+
const nextTargets = new Set();
|
|
250
|
+
for (const name of referencedNames) {
|
|
251
|
+
const next = transformers[name]?.next;
|
|
252
|
+
if (next && referencedNames.has(next)) {
|
|
253
|
+
nextTargets.add(next);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
// Chain head = in referencedNames but not in nextTargets
|
|
257
|
+
let chainHead;
|
|
258
|
+
for (const name of referencedNames) {
|
|
259
|
+
if (!nextTargets.has(name)) {
|
|
260
|
+
chainHead = name;
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// Walk from chain head
|
|
265
|
+
if (!chainHead)
|
|
266
|
+
chainHead = [...referencedNames][0];
|
|
267
|
+
return resolveTransformerChain(transformers, chainHead);
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Gets the index of a transformer in the transformer list.
|
|
271
|
+
* Returns transformerList.length if not found (= connects directly to collector).
|
|
272
|
+
*/
|
|
273
|
+
function getTransformerIndex(transformerName, transformerList) {
|
|
274
|
+
if (!transformerName)
|
|
275
|
+
return transformerList.length;
|
|
276
|
+
const idx = transformerList.findIndex((p) => p.name === transformerName);
|
|
277
|
+
return idx >= 0 ? idx : transformerList.length;
|
|
278
|
+
}
|
|
279
|
+
// Dynamic width calculation function
|
|
280
|
+
function calculateTotalWidth(stageCount, hasStageBefore, hasStageAfter) {
|
|
281
|
+
const leftEdge = hasStageBefore ? 0 : EDGE_ARROW_LENGTH;
|
|
282
|
+
const rightEdge = hasStageAfter ? 0 : EDGE_ARROW_LENGTH;
|
|
283
|
+
return (leftEdge +
|
|
284
|
+
STAGE_WIDTH * stageCount +
|
|
285
|
+
STAGE_GAP * (stageCount - 1) +
|
|
286
|
+
rightEdge);
|
|
287
|
+
}
|
|
288
|
+
const MARKER_SIZE = 16;
|
|
289
|
+
const MARKER_OFFSET = 4; // Offset from box edge
|
|
290
|
+
function getMarkerPosition(position, stages, centerY, totalWidth) {
|
|
291
|
+
const sourcePos = stages.source;
|
|
292
|
+
const collectorPos = stages.collector;
|
|
293
|
+
const destPos = stages.destination;
|
|
294
|
+
const beforePos = stages.before;
|
|
295
|
+
const afterPos = stages.after;
|
|
296
|
+
// Helper to get box marker position (top corners)
|
|
297
|
+
const getBoxMarker = (pos, variant) => {
|
|
298
|
+
if (!pos)
|
|
299
|
+
return null;
|
|
300
|
+
if (variant === '-left') {
|
|
301
|
+
return { x: pos.x + MARKER_OFFSET, y: pos.y - MARKER_OFFSET };
|
|
302
|
+
}
|
|
303
|
+
// Default and -right: top-right corner
|
|
304
|
+
return {
|
|
305
|
+
x: pos.x + pos.width - MARKER_OFFSET,
|
|
306
|
+
y: pos.y - MARKER_OFFSET,
|
|
307
|
+
};
|
|
308
|
+
};
|
|
309
|
+
// Helper to get arrow marker position (between stages)
|
|
310
|
+
const getArrowMarker = (fromPos) => {
|
|
311
|
+
if (!fromPos)
|
|
312
|
+
return null;
|
|
313
|
+
const fromCenterY = fromPos.y + fromPos.height / 2;
|
|
314
|
+
return {
|
|
315
|
+
x: fromPos.x + fromPos.width + STAGE_GAP / 2 - 6,
|
|
316
|
+
y: fromCenterY + MARKER_SIZE / 2 + 4,
|
|
317
|
+
};
|
|
318
|
+
};
|
|
319
|
+
switch (position) {
|
|
320
|
+
// Stage-before (only right side, no left)
|
|
321
|
+
case 'stage-before':
|
|
322
|
+
case 'stage-before-right':
|
|
323
|
+
return getBoxMarker(beforePos);
|
|
324
|
+
// Source stage (above box, top corners) - first source
|
|
325
|
+
case 'source':
|
|
326
|
+
case 'source-right':
|
|
327
|
+
return getBoxMarker(sourcePos);
|
|
328
|
+
case 'source-left':
|
|
329
|
+
return getBoxMarker(sourcePos, '-left');
|
|
330
|
+
// Collector stage (above box, top corners)
|
|
331
|
+
case 'collector':
|
|
332
|
+
case 'collector-right':
|
|
333
|
+
return getBoxMarker(collectorPos);
|
|
334
|
+
case 'collector-left':
|
|
335
|
+
return getBoxMarker(collectorPos, '-left');
|
|
336
|
+
// Destination stage (above box, top corners) - first destination
|
|
337
|
+
case 'destination':
|
|
338
|
+
case 'destination-right':
|
|
339
|
+
return getBoxMarker(destPos);
|
|
340
|
+
case 'destination-left':
|
|
341
|
+
return getBoxMarker(destPos, '-left');
|
|
342
|
+
// Stage-after (only left side, no right)
|
|
343
|
+
case 'stage-after':
|
|
344
|
+
case 'stage-after-left':
|
|
345
|
+
return getBoxMarker(afterPos, '-left');
|
|
346
|
+
// Edge arrows (in/out)
|
|
347
|
+
case 'incoming':
|
|
348
|
+
return { x: EDGE_ARROW_LENGTH / 2, y: centerY + MARKER_SIZE / 2 + 8 };
|
|
349
|
+
case 'outgoing':
|
|
350
|
+
return {
|
|
351
|
+
x: totalWidth - EDGE_ARROW_LENGTH / 2,
|
|
352
|
+
y: centerY + MARKER_SIZE / 2 + 8,
|
|
353
|
+
};
|
|
354
|
+
// Arrow between before and source
|
|
355
|
+
case 'before-source':
|
|
356
|
+
return getArrowMarker(beforePos);
|
|
357
|
+
// Between-stage arrows (for simple flows without transformers)
|
|
358
|
+
case 'source-collector':
|
|
359
|
+
return getArrowMarker(sourcePos);
|
|
360
|
+
case 'collector-destination':
|
|
361
|
+
return getArrowMarker(collectorPos);
|
|
362
|
+
// Arrow between destination and after
|
|
363
|
+
case 'destination-after':
|
|
364
|
+
return getArrowMarker(destPos);
|
|
365
|
+
// Pre-transformer to collector arrow
|
|
366
|
+
case 'pre-collector':
|
|
367
|
+
// Find the last pre-transformer position
|
|
368
|
+
const preKeys = Object.keys(stages).filter((k) => k.startsWith('pre-'));
|
|
369
|
+
if (preKeys.length === 0)
|
|
370
|
+
return null;
|
|
371
|
+
const lastPrePos = stages[preKeys[preKeys.length - 1]];
|
|
372
|
+
return getArrowMarker(lastPrePos);
|
|
373
|
+
// Collector to post-transformer arrow
|
|
374
|
+
case 'collector-post':
|
|
375
|
+
return getArrowMarker(collectorPos);
|
|
376
|
+
default: {
|
|
377
|
+
// Handle named source markers: source-{name}, source-{name}-left, source-{name}-right
|
|
378
|
+
const sourceNameMatch = position.match(/^source-([^-]+)(-left|-right)?$/);
|
|
379
|
+
if (sourceNameMatch) {
|
|
380
|
+
const name = sourceNameMatch[1];
|
|
381
|
+
const variant = sourceNameMatch[2];
|
|
382
|
+
const pos = stages[`source-${name}`];
|
|
383
|
+
return getBoxMarker(pos, variant);
|
|
384
|
+
}
|
|
385
|
+
// Handle named destination markers: destination-{name}, destination-{name}-left, destination-{name}-right
|
|
386
|
+
const destNameMatch = position.match(/^destination-([^-]+)(-left|-right)?$/);
|
|
387
|
+
if (destNameMatch) {
|
|
388
|
+
const name = destNameMatch[1];
|
|
389
|
+
const variant = destNameMatch[2];
|
|
390
|
+
const pos = stages[`destination-${name}`];
|
|
391
|
+
return getBoxMarker(pos, variant);
|
|
392
|
+
}
|
|
393
|
+
// Handle pre-transformer markers: pre-{name}, pre-{name}-left, pre-{name}-right
|
|
394
|
+
const preMatch = position.match(/^pre-([^-]+)(-left|-right)?$/);
|
|
395
|
+
if (preMatch) {
|
|
396
|
+
const name = preMatch[1];
|
|
397
|
+
const variant = preMatch[2];
|
|
398
|
+
// Skip if this looks like a -next pattern
|
|
399
|
+
if (name === 'collector')
|
|
400
|
+
return null;
|
|
401
|
+
const pos = stages[`pre-${name}`];
|
|
402
|
+
return getBoxMarker(pos, variant);
|
|
403
|
+
}
|
|
404
|
+
// Handle post-transformer markers: post-{name}, post-{name}-left, post-{name}-right
|
|
405
|
+
const postMatch = position.match(/^post-([^-]+)(-left|-right)?$/);
|
|
406
|
+
if (postMatch) {
|
|
407
|
+
const name = postMatch[1];
|
|
408
|
+
const variant = postMatch[2];
|
|
409
|
+
const pos = stages[`post-${name}`];
|
|
410
|
+
return getBoxMarker(pos, variant);
|
|
411
|
+
}
|
|
412
|
+
// Handle source to pre-transformer arrow: source-{name}-pre
|
|
413
|
+
const sourcePreMatch = position.match(/^source-([^-]+)-pre$/);
|
|
414
|
+
if (sourcePreMatch) {
|
|
415
|
+
const name = sourcePreMatch[1];
|
|
416
|
+
const pos = stages[`source-${name}`];
|
|
417
|
+
return getArrowMarker(pos);
|
|
418
|
+
}
|
|
419
|
+
// Handle source to collector arrow: source-{name}-collector
|
|
420
|
+
const sourceCollectorMatch = position.match(/^source-([^-]+)-collector$/);
|
|
421
|
+
if (sourceCollectorMatch) {
|
|
422
|
+
const name = sourceCollectorMatch[1];
|
|
423
|
+
const pos = stages[`source-${name}`];
|
|
424
|
+
return getArrowMarker(pos);
|
|
425
|
+
}
|
|
426
|
+
// Handle pre-transformer chain arrow: pre-{name}-next
|
|
427
|
+
const preNextMatch = position.match(/^pre-([^-]+)-next$/);
|
|
428
|
+
if (preNextMatch) {
|
|
429
|
+
const name = preNextMatch[1];
|
|
430
|
+
const pos = stages[`pre-${name}`];
|
|
431
|
+
return getArrowMarker(pos);
|
|
432
|
+
}
|
|
433
|
+
// Handle post-transformer chain arrow: post-{name}-next
|
|
434
|
+
const postNextMatch = position.match(/^post-([^-]+)-next$/);
|
|
435
|
+
if (postNextMatch) {
|
|
436
|
+
const name = postNextMatch[1];
|
|
437
|
+
const pos = stages[`post-${name}`];
|
|
438
|
+
return getArrowMarker(pos);
|
|
439
|
+
}
|
|
440
|
+
// Handle post to destination arrow: post-destination-{name}
|
|
441
|
+
const postDestMatch = position.match(/^post-destination-([^-]+)$/);
|
|
442
|
+
if (postDestMatch) {
|
|
443
|
+
const name = postDestMatch[1];
|
|
444
|
+
// Find the last post-transformer position before this destination
|
|
445
|
+
const postKeys = Object.keys(stages).filter((k) => k.startsWith('post-'));
|
|
446
|
+
if (postKeys.length === 0)
|
|
447
|
+
return getArrowMarker(collectorPos);
|
|
448
|
+
const lastPostPos = stages[postKeys[postKeys.length - 1]];
|
|
449
|
+
return getArrowMarker(lastPostPos);
|
|
450
|
+
}
|
|
451
|
+
return null;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
export function FlowMap({ stageBefore, sources, preTransformers, collector, postTransformers, destinations, stageAfter, title, layout = defaultLayout, boxHeight: boxHeightProp, descriptionHeight: descriptionHeightProp, markers, className, withReturn, }) {
|
|
456
|
+
// Convert Record-based sources/destinations to arrays with names
|
|
457
|
+
const sourceEntries = Object.entries(sources ?? { default: {} });
|
|
458
|
+
const destinationEntries = Object.entries(destinations ?? { default: {} });
|
|
459
|
+
// Collect pre-transformers reachable from sources
|
|
460
|
+
const sourceNextValues = sourceEntries.map(([, config]) => config.next);
|
|
461
|
+
const preTransformerList = collectReachableTransformers(preTransformers, sourceNextValues);
|
|
462
|
+
// Collect post-transformers reachable from destinations (via 'before')
|
|
463
|
+
const destBeforeValues = destinationEntries.map(([, config]) => config.before);
|
|
464
|
+
const postTransformerList = collectReachableTransformers(postTransformers, destBeforeValues);
|
|
465
|
+
// Sort sources by target transformer index to avoid edge crossings
|
|
466
|
+
// Sources connecting to earlier transformers go on top
|
|
467
|
+
const sortedSourceEntries = [...sourceEntries].sort(([, a], [, b]) => {
|
|
468
|
+
const aIdx = getTransformerIndex(a.next, preTransformerList);
|
|
469
|
+
const bIdx = getTransformerIndex(b.next, preTransformerList);
|
|
470
|
+
return aIdx - bIdx;
|
|
471
|
+
});
|
|
472
|
+
// Sort destinations by source transformer index - ASCENDING (earlier transformer = top)
|
|
473
|
+
// This mirrors source sorting behavior for symmetry
|
|
474
|
+
const sortedDestinationEntries = [...destinationEntries].sort(([, a], [, b]) => {
|
|
475
|
+
const aIdx = getTransformerIndex(a.before, postTransformerList);
|
|
476
|
+
const bIdx = getTransformerIndex(b.before, postTransformerList);
|
|
477
|
+
return aIdx - bIdx; // ASCENDING: earlier transformer at top (mirrors sources)
|
|
478
|
+
});
|
|
479
|
+
const containerRef = useRef(null);
|
|
480
|
+
// Check if any stage has a description or link
|
|
481
|
+
const hasDescription = stageBefore?.description ||
|
|
482
|
+
sourceEntries.some(([, s]) => s.description) ||
|
|
483
|
+
preTransformerList.some((p) => p.config.description) ||
|
|
484
|
+
collector?.description ||
|
|
485
|
+
postTransformerList.some((p) => p.config.description) ||
|
|
486
|
+
destinationEntries.some(([, d]) => d.description) ||
|
|
487
|
+
stageAfter?.description ||
|
|
488
|
+
destinationEntries.some(([, d]) => d.after?.description);
|
|
489
|
+
const hasLink = stageBefore?.link !== false ||
|
|
490
|
+
sourceEntries.some(([, s]) => s.link !== false) ||
|
|
491
|
+
preTransformerList.some((p) => p.config.link !== false) ||
|
|
492
|
+
collector?.link !== false ||
|
|
493
|
+
postTransformerList.some((p) => p.config.link !== false) ||
|
|
494
|
+
destinationEntries.some(([, d]) => d.link !== false) ||
|
|
495
|
+
stageAfter?.link !== false ||
|
|
496
|
+
destinationEntries.some(([, d]) => d.after?.link !== false);
|
|
497
|
+
// Check if markers need extra padding (top for stage markers, bottom for arrow markers)
|
|
498
|
+
const stageMarkerPositions = [
|
|
499
|
+
'stage-before',
|
|
500
|
+
'stage-before-right',
|
|
501
|
+
'source',
|
|
502
|
+
'source-left',
|
|
503
|
+
'source-right',
|
|
504
|
+
'collector',
|
|
505
|
+
'collector-left',
|
|
506
|
+
'collector-right',
|
|
507
|
+
'destination',
|
|
508
|
+
'destination-left',
|
|
509
|
+
'destination-right',
|
|
510
|
+
'stage-after',
|
|
511
|
+
'stage-after-left',
|
|
512
|
+
];
|
|
513
|
+
// Helper to check if a position is a stage marker (including named stages and transformers)
|
|
514
|
+
const isStageMarker = (pos) => {
|
|
515
|
+
if (stageMarkerPositions.includes(pos))
|
|
516
|
+
return true;
|
|
517
|
+
// Check patterns: source-{name}, destination-{name}, pre-{name}, post-{name}
|
|
518
|
+
return /^(source|destination|pre|post)-[^-]+(-left|-right)?$/.test(pos);
|
|
519
|
+
};
|
|
520
|
+
const hasTopMarkers = markers?.some((m) => isStageMarker(m.position)) ?? false;
|
|
521
|
+
const markerTopPadding = hasTopMarkers ? MARKER_SIZE / 2 + MARKER_OFFSET : 0;
|
|
522
|
+
// Filter markers that have legend text
|
|
523
|
+
const legendItems = markers?.filter((m) => m.text) ?? [];
|
|
524
|
+
// Estimate total text length to determine how many lines we need
|
|
525
|
+
const totalTextLength = legendItems.reduce((sum, item) => sum + (item.text?.length ?? 0), 0);
|
|
526
|
+
// Rough estimate: ~5.5 chars per pixel at 11px font, available width ~450px = ~82 chars per line
|
|
527
|
+
const LEGEND_LINE_HEIGHT = 18;
|
|
528
|
+
const estimatedLines = Math.max(1, Math.ceil(totalTextLength / 70));
|
|
529
|
+
const legendHeight = legendItems.length > 0 ? LEGEND_LINE_HEIGHT * estimatedLines + 8 : 0;
|
|
530
|
+
// Use prop values if provided, otherwise use layout defaults
|
|
531
|
+
const boxHeight = boxHeightProp ?? layout.boxHeight;
|
|
532
|
+
const descriptionHeight = descriptionHeightProp ?? 30;
|
|
533
|
+
const belowBoxHeight = hasDescription || hasLink ? descriptionHeight + 10 : 0; // Space for description/link content
|
|
534
|
+
// Calculate max rows for multi-source/destination layout
|
|
535
|
+
const maxRows = Math.max(sourceEntries.length, destinationEntries.length, 1);
|
|
536
|
+
const stackedHeight = boxHeight * maxRows + VERTICAL_GAP * (maxRows - 1);
|
|
537
|
+
// Check if any destination has an after stage or if shared stageAfter exists
|
|
538
|
+
const hasAnyAfterStage = stageAfter || destinationEntries.some(([, d]) => d.after);
|
|
539
|
+
// Calculate stage count and total width dynamically
|
|
540
|
+
// Stages: stageBefore? + sources(1) + preTransformers + collector(1) + postTransformers + destinations(1) + afterStages?
|
|
541
|
+
const stageCount = (stageBefore ? 1 : 0) +
|
|
542
|
+
1 + // sources column
|
|
543
|
+
preTransformerList.length +
|
|
544
|
+
1 + // collector
|
|
545
|
+
postTransformerList.length +
|
|
546
|
+
1 + // destinations column
|
|
547
|
+
(hasAnyAfterStage ? 1 : 0);
|
|
548
|
+
const totalWidth = calculateTotalWidth(stageCount, !!stageBefore, !!hasAnyAfterStage);
|
|
549
|
+
const baseHeight = PADDING_Y * 2 +
|
|
550
|
+
stackedHeight +
|
|
551
|
+
belowBoxHeight +
|
|
552
|
+
markerTopPadding +
|
|
553
|
+
legendHeight;
|
|
554
|
+
const totalHeight = title ? baseHeight + TITLE_HEIGHT : baseHeight;
|
|
555
|
+
// Calculate positions (declarative, no useEffect)
|
|
556
|
+
const baseY = (title ? TITLE_HEIGHT : 0) + PADDING_Y + markerTopPadding;
|
|
557
|
+
// Calculate the vertical center of the stacked area (for collector positioning)
|
|
558
|
+
const stackedCenterY = baseY + stackedHeight / 2;
|
|
559
|
+
// Helper to calculate Y positions for stacked items centered around stackedCenterY
|
|
560
|
+
const getStackedY = (index, count) => {
|
|
561
|
+
const totalStackHeight = boxHeight * count + VERTICAL_GAP * (count - 1);
|
|
562
|
+
const startY = stackedCenterY - totalStackHeight / 2;
|
|
563
|
+
return startY + index * (boxHeight + VERTICAL_GAP);
|
|
564
|
+
};
|
|
565
|
+
// Build stage positions dynamically based on which stages are active
|
|
566
|
+
// Start at 0 if stageBefore exists (no left edge arrow), otherwise leave space for arrow
|
|
567
|
+
let currentX = stageBefore ? 0 : EDGE_ARROW_LENGTH;
|
|
568
|
+
const stages = {};
|
|
569
|
+
// Arrays to hold named source/destination positions
|
|
570
|
+
const sourcePositions = [];
|
|
571
|
+
const destinationPositions = [];
|
|
572
|
+
if (stageBefore) {
|
|
573
|
+
stages.before = {
|
|
574
|
+
x: currentX,
|
|
575
|
+
y: stackedCenterY - boxHeight / 2, // Center vertically
|
|
576
|
+
width: STAGE_WIDTH,
|
|
577
|
+
height: boxHeight,
|
|
578
|
+
};
|
|
579
|
+
currentX += STAGE_WIDTH + STAGE_GAP;
|
|
580
|
+
}
|
|
581
|
+
// Position ALL sources in the source column (stacked vertically)
|
|
582
|
+
const sourceX = currentX;
|
|
583
|
+
sortedSourceEntries.forEach(([name], index) => {
|
|
584
|
+
const pos = {
|
|
585
|
+
x: sourceX,
|
|
586
|
+
y: getStackedY(index, sortedSourceEntries.length),
|
|
587
|
+
width: STAGE_WIDTH,
|
|
588
|
+
height: boxHeight,
|
|
589
|
+
};
|
|
590
|
+
sourcePositions.push({ name, pos });
|
|
591
|
+
stages[`source-${name}`] = pos;
|
|
592
|
+
});
|
|
593
|
+
// Keep 'source' alias pointing to first source for backward compatibility
|
|
594
|
+
if (sourcePositions.length > 0) {
|
|
595
|
+
stages.source = sourcePositions[0].pos;
|
|
596
|
+
}
|
|
597
|
+
currentX += STAGE_WIDTH + STAGE_GAP;
|
|
598
|
+
// Pre-transformer positions
|
|
599
|
+
// Strategy: position at source Y if only ONE source connects, otherwise center
|
|
600
|
+
// This keeps transformers aligned with their sources when there's no branching
|
|
601
|
+
const preTransformerPositions = [];
|
|
602
|
+
// Build map: transformer name → list of sources that connect to it (directly or via chain)
|
|
603
|
+
const transformerIncomingSources = new Map();
|
|
604
|
+
sortedSourceEntries.forEach(([sourceName, config]) => {
|
|
605
|
+
const targetTransformer = config.next;
|
|
606
|
+
if (targetTransformer) {
|
|
607
|
+
const existing = transformerIncomingSources.get(targetTransformer) ?? [];
|
|
608
|
+
existing.push(sourceName);
|
|
609
|
+
transformerIncomingSources.set(targetTransformer, existing);
|
|
610
|
+
}
|
|
611
|
+
});
|
|
612
|
+
// Also track chain connections (transformer A → transformer B means B receives from A's sources too)
|
|
613
|
+
preTransformerList.forEach(({ name, config }) => {
|
|
614
|
+
if (config.next) {
|
|
615
|
+
// This transformer's output goes to config.next
|
|
616
|
+
// So config.next receives from all sources that this transformer receives from
|
|
617
|
+
const mySources = transformerIncomingSources.get(name) ?? [];
|
|
618
|
+
const nextSources = transformerIncomingSources.get(config.next) ?? [];
|
|
619
|
+
// Mark that the next transformer receives from chain (we'll use this for positioning)
|
|
620
|
+
transformerIncomingSources.set(config.next, [
|
|
621
|
+
...new Set([...nextSources, `chain:${name}`]),
|
|
622
|
+
]);
|
|
623
|
+
}
|
|
624
|
+
});
|
|
625
|
+
preTransformerList.forEach(({ name }) => {
|
|
626
|
+
const incomingSources = transformerIncomingSources.get(name) ?? [];
|
|
627
|
+
// Filter to only direct sources (not chain connections)
|
|
628
|
+
const directSources = incomingSources.filter((s) => !s.startsWith('chain:'));
|
|
629
|
+
const hasChainInput = incomingSources.some((s) => s.startsWith('chain:'));
|
|
630
|
+
let y;
|
|
631
|
+
if (directSources.length === 1 && !hasChainInput) {
|
|
632
|
+
// Only ONE direct source, no chain input → align with that source
|
|
633
|
+
const sourcePos = stages[`source-${directSources[0]}`];
|
|
634
|
+
y = sourcePos ? sourcePos.y : stackedCenterY - boxHeight / 2;
|
|
635
|
+
}
|
|
636
|
+
else {
|
|
637
|
+
// Multiple sources or has chain input → center
|
|
638
|
+
y = stackedCenterY - boxHeight / 2;
|
|
639
|
+
}
|
|
640
|
+
const pos = {
|
|
641
|
+
x: currentX,
|
|
642
|
+
y,
|
|
643
|
+
width: STAGE_WIDTH,
|
|
644
|
+
height: boxHeight,
|
|
645
|
+
};
|
|
646
|
+
preTransformerPositions.push({ name, pos });
|
|
647
|
+
stages[`pre-${name}`] = pos;
|
|
648
|
+
currentX += STAGE_WIDTH + STAGE_GAP;
|
|
649
|
+
});
|
|
650
|
+
// Collector position (single, centered)
|
|
651
|
+
stages.collector = {
|
|
652
|
+
x: currentX,
|
|
653
|
+
y: stackedCenterY - boxHeight / 2,
|
|
654
|
+
width: STAGE_WIDTH,
|
|
655
|
+
height: boxHeight,
|
|
656
|
+
};
|
|
657
|
+
currentX += STAGE_WIDTH + STAGE_GAP;
|
|
658
|
+
// Post-transformer positions
|
|
659
|
+
// Strategy: position at destination Y if only ONE destination connects, otherwise center
|
|
660
|
+
// This mirrors pre-transformer behavior for symmetry
|
|
661
|
+
const postTransformerPositions = [];
|
|
662
|
+
// Build map: transformer name → list of destinations that receive from it (directly or via chain)
|
|
663
|
+
const transformerOutgoingDests = new Map();
|
|
664
|
+
sortedDestinationEntries.forEach(([destName, config]) => {
|
|
665
|
+
const sourceTransformer = config.before;
|
|
666
|
+
if (sourceTransformer) {
|
|
667
|
+
const existing = transformerOutgoingDests.get(sourceTransformer) ?? [];
|
|
668
|
+
existing.push(destName);
|
|
669
|
+
transformerOutgoingDests.set(sourceTransformer, existing);
|
|
670
|
+
}
|
|
671
|
+
});
|
|
672
|
+
// Also track chain connections (transformer A → transformer B means A sends to all of B's destinations)
|
|
673
|
+
// Walk backwards through chain to propagate destination info
|
|
674
|
+
for (let i = postTransformerList.length - 1; i >= 0; i--) {
|
|
675
|
+
const { name, config } = postTransformerList[i];
|
|
676
|
+
if (config.next) {
|
|
677
|
+
// This transformer sends to config.next, so it indirectly sends to config.next's destinations
|
|
678
|
+
const nextDests = transformerOutgoingDests.get(config.next) ?? [];
|
|
679
|
+
const myDests = transformerOutgoingDests.get(name) ?? [];
|
|
680
|
+
// Mark chain connection
|
|
681
|
+
transformerOutgoingDests.set(name, [
|
|
682
|
+
...new Set([...myDests, `chain:${config.next}`]),
|
|
683
|
+
]);
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
// First position destinations (we need their positions for smart post-transformer positioning)
|
|
687
|
+
const destinationX = currentX + postTransformerList.length * (STAGE_WIDTH + STAGE_GAP);
|
|
688
|
+
sortedDestinationEntries.forEach(([name], index) => {
|
|
689
|
+
const pos = {
|
|
690
|
+
x: destinationX,
|
|
691
|
+
y: getStackedY(index, sortedDestinationEntries.length),
|
|
692
|
+
width: STAGE_WIDTH,
|
|
693
|
+
height: boxHeight,
|
|
694
|
+
};
|
|
695
|
+
destinationPositions.push({ name, pos });
|
|
696
|
+
stages[`destination-${name}`] = pos;
|
|
697
|
+
});
|
|
698
|
+
// Keep 'destination' alias pointing to first destination for backward compatibility
|
|
699
|
+
if (destinationPositions.length > 0) {
|
|
700
|
+
stages.destination = destinationPositions[0].pos;
|
|
701
|
+
}
|
|
702
|
+
// Now position post-transformers with smart Y-positioning (can now reference destination positions)
|
|
703
|
+
postTransformerList.forEach(({ name }) => {
|
|
704
|
+
const outgoingDests = transformerOutgoingDests.get(name) ?? [];
|
|
705
|
+
// Filter to only direct destinations (not chain connections)
|
|
706
|
+
const directDests = outgoingDests.filter((d) => !d.startsWith('chain:'));
|
|
707
|
+
const hasChainOutput = outgoingDests.some((d) => d.startsWith('chain:'));
|
|
708
|
+
let y;
|
|
709
|
+
if (directDests.length === 1 && !hasChainOutput) {
|
|
710
|
+
// Only ONE direct destination, no chain output → align with that destination
|
|
711
|
+
const destPos = stages[`destination-${directDests[0]}`];
|
|
712
|
+
y = destPos ? destPos.y : stackedCenterY - boxHeight / 2;
|
|
713
|
+
}
|
|
714
|
+
else {
|
|
715
|
+
// Multiple destinations or has chain output → center
|
|
716
|
+
y = stackedCenterY - boxHeight / 2;
|
|
717
|
+
}
|
|
718
|
+
const pos = {
|
|
719
|
+
x: currentX,
|
|
720
|
+
y,
|
|
721
|
+
width: STAGE_WIDTH,
|
|
722
|
+
height: boxHeight,
|
|
723
|
+
};
|
|
724
|
+
postTransformerPositions.push({ name, pos });
|
|
725
|
+
stages[`post-${name}`] = pos;
|
|
726
|
+
currentX += STAGE_WIDTH + STAGE_GAP;
|
|
727
|
+
});
|
|
728
|
+
// Position after stages (per-destination or shared)
|
|
729
|
+
// Each destination with `after` or falling back to shared `stageAfter` gets its own box
|
|
730
|
+
const afterPositions = [];
|
|
731
|
+
if (hasAnyAfterStage) {
|
|
732
|
+
const afterX = currentX + STAGE_WIDTH + STAGE_GAP;
|
|
733
|
+
sortedDestinationEntries.forEach(([destName, destConfig], index) => {
|
|
734
|
+
// Use destination's after config, or fall back to shared stageAfter
|
|
735
|
+
const afterConfig = destConfig.after ?? stageAfter;
|
|
736
|
+
if (afterConfig) {
|
|
737
|
+
const pos = {
|
|
738
|
+
x: afterX,
|
|
739
|
+
y: getStackedY(index, sortedDestinationEntries.length), // Same Y as destination
|
|
740
|
+
width: STAGE_WIDTH,
|
|
741
|
+
height: boxHeight,
|
|
742
|
+
};
|
|
743
|
+
afterPositions.push({ name: destName, pos, config: afterConfig });
|
|
744
|
+
stages[`after-${destName}`] = pos;
|
|
745
|
+
}
|
|
746
|
+
});
|
|
747
|
+
// Keep 'after' alias pointing to first after position for backward compatibility
|
|
748
|
+
if (afterPositions.length > 0) {
|
|
749
|
+
stages.after = afterPositions[0].pos;
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
// Calculate center Y for arrows (collector's center)
|
|
753
|
+
const centerY = stackedCenterY;
|
|
754
|
+
// Stage configurations with colors and default links
|
|
755
|
+
const stageConfigs = [
|
|
756
|
+
...(stageBefore
|
|
757
|
+
? [
|
|
758
|
+
{
|
|
759
|
+
key: 'before',
|
|
760
|
+
config: stageBefore,
|
|
761
|
+
fillVar: '--flow-before-fill',
|
|
762
|
+
strokeVar: '--flow-before-stroke',
|
|
763
|
+
defaultLabel: 'Before',
|
|
764
|
+
defaultLink: undefined,
|
|
765
|
+
},
|
|
766
|
+
]
|
|
767
|
+
: []),
|
|
768
|
+
// Sources (named, sorted by target transformer)
|
|
769
|
+
...sortedSourceEntries.map(([name, sourceConfig]) => ({
|
|
770
|
+
key: `source-${name}`,
|
|
771
|
+
config: sourceConfig,
|
|
772
|
+
fillVar: '--flow-source-fill',
|
|
773
|
+
strokeVar: '--flow-source-stroke',
|
|
774
|
+
defaultLabel: 'Source',
|
|
775
|
+
defaultLink: '/docs/sources',
|
|
776
|
+
})),
|
|
777
|
+
// Pre-transformers
|
|
778
|
+
...preTransformerList.map(({ name, config }) => ({
|
|
779
|
+
key: `pre-${name}`,
|
|
780
|
+
config,
|
|
781
|
+
fillVar: '--flow-transformer-fill',
|
|
782
|
+
strokeVar: '--flow-transformer-stroke',
|
|
783
|
+
defaultLabel: name.charAt(0).toUpperCase() + name.slice(1),
|
|
784
|
+
defaultLink: '/docs/transformers',
|
|
785
|
+
})),
|
|
786
|
+
{
|
|
787
|
+
key: 'collector',
|
|
788
|
+
config: collector,
|
|
789
|
+
fillVar: '--flow-collector-fill',
|
|
790
|
+
strokeVar: '--flow-collector-stroke',
|
|
791
|
+
defaultLabel: 'Collector',
|
|
792
|
+
defaultLink: '/docs/collectors',
|
|
793
|
+
},
|
|
794
|
+
// Post-transformers
|
|
795
|
+
...postTransformerList.map(({ name, config }) => ({
|
|
796
|
+
key: `post-${name}`,
|
|
797
|
+
config,
|
|
798
|
+
fillVar: '--flow-transformer-fill',
|
|
799
|
+
strokeVar: '--flow-transformer-stroke',
|
|
800
|
+
defaultLabel: name.charAt(0).toUpperCase() + name.slice(1),
|
|
801
|
+
defaultLink: '/docs/transformers',
|
|
802
|
+
})),
|
|
803
|
+
// Destinations (named, sorted by source transformer)
|
|
804
|
+
...sortedDestinationEntries.map(([name, destConfig]) => ({
|
|
805
|
+
key: `destination-${name}`,
|
|
806
|
+
config: destConfig,
|
|
807
|
+
fillVar: '--flow-destination-fill',
|
|
808
|
+
strokeVar: '--flow-destination-stroke',
|
|
809
|
+
defaultLabel: 'Destination',
|
|
810
|
+
defaultLink: '/docs/destinations',
|
|
811
|
+
})),
|
|
812
|
+
// After stages (per-destination)
|
|
813
|
+
...afterPositions.map(({ name: destName, config: afterConfig }) => ({
|
|
814
|
+
key: `after-${destName}`,
|
|
815
|
+
config: afterConfig,
|
|
816
|
+
fillVar: '--flow-after-fill',
|
|
817
|
+
strokeVar: '--flow-after-stroke',
|
|
818
|
+
defaultLabel: 'External',
|
|
819
|
+
defaultLink: undefined,
|
|
820
|
+
})),
|
|
821
|
+
];
|
|
822
|
+
return (_jsx("div", { ref: containerRef, className: `elb-explorer elb-flow-map ${className || ''}`, style: {
|
|
823
|
+
width: '100%',
|
|
824
|
+
maxWidth: totalWidth,
|
|
825
|
+
}, children: _jsxs("svg", { viewBox: `0 0 ${totalWidth} ${totalHeight}`, style: {
|
|
826
|
+
width: '100%',
|
|
827
|
+
height: 'auto',
|
|
828
|
+
display: 'block',
|
|
829
|
+
}, children: [title && (_jsx("text", { x: totalWidth / 2, y: 18, textAnchor: "middle", dominantBaseline: "middle", fill: "var(--color-text, #f3f4f6)", fontSize: 14, fontWeight: 600, fontFamily: "system-ui, -apple-system, sans-serif", children: title })), (() => {
|
|
830
|
+
const collectorPos = stages.collector;
|
|
831
|
+
const collectorCenterY = collectorPos.y + boxHeight / 2;
|
|
832
|
+
// Helper to spread connection points vertically on an edge
|
|
833
|
+
const getSpreadY = (idx, count, baseY) => {
|
|
834
|
+
if (count <= 1)
|
|
835
|
+
return baseY;
|
|
836
|
+
const spread = Math.min(boxHeight * 0.6, (count - 1) * 12);
|
|
837
|
+
const step = spread / (count - 1);
|
|
838
|
+
return baseY - spread / 2 + idx * step;
|
|
839
|
+
};
|
|
840
|
+
// Find target position for a source (either pre-transformer or collector)
|
|
841
|
+
const getSourceTarget = (sourceName, sourceConfig) => {
|
|
842
|
+
if (sourceConfig.next && preTransformers?.[sourceConfig.next]) {
|
|
843
|
+
return stages[`pre-${sourceConfig.next}`];
|
|
844
|
+
}
|
|
845
|
+
// No pre-transformer, connect to first pre-transformer or collector
|
|
846
|
+
if (preTransformerList.length > 0) {
|
|
847
|
+
return stages[`pre-${preTransformerList[0].name}`];
|
|
848
|
+
}
|
|
849
|
+
return collectorPos;
|
|
850
|
+
};
|
|
851
|
+
// Find source position for a destination (either post-transformer or collector)
|
|
852
|
+
const getDestinationSource = (destName, destConfig) => {
|
|
853
|
+
if (destConfig.before && postTransformers?.[destConfig.before]) {
|
|
854
|
+
return stages[`post-${destConfig.before}`];
|
|
855
|
+
}
|
|
856
|
+
// No post-transformer, connect from last post-transformer or collector
|
|
857
|
+
if (postTransformerList.length > 0) {
|
|
858
|
+
return stages[`post-${postTransformerList[postTransformerList.length - 1].name}`];
|
|
859
|
+
}
|
|
860
|
+
return collectorPos;
|
|
861
|
+
};
|
|
862
|
+
return (_jsxs(_Fragment, { children: [!stageBefore && sourceEntries.length === 1 && (_jsx(RoughArrow, { fromX: 0, fromY: centerY, toX: stages.source.x, toY: centerY, stroke: "var(--flow-edge-stroke, #9ca3af)", centerY: centerY })), stageBefore && (_jsx(RoughArrow, { fromX: stages.before.x + STAGE_WIDTH, fromY: centerY, toX: stages.source.x, toY: stages.source.y + boxHeight / 2, stroke: "var(--flow-edge-stroke, #9ca3af)", centerY: centerY })), (() => {
|
|
863
|
+
// Build map: targetKey -> list of sources connecting to it
|
|
864
|
+
const sourcesByTarget = new Map();
|
|
865
|
+
sourcePositions.forEach(({ name, pos }, sortIndex) => {
|
|
866
|
+
const sourceConfig = sources?.[name] ?? {};
|
|
867
|
+
const targetKey = sourceConfig.next
|
|
868
|
+
? `pre-${sourceConfig.next}`
|
|
869
|
+
: preTransformerList.length > 0
|
|
870
|
+
? `pre-${preTransformerList[0].name}`
|
|
871
|
+
: 'collector';
|
|
872
|
+
const existing = sourcesByTarget.get(targetKey) ?? [];
|
|
873
|
+
existing.push({ name, pos, sortIndex });
|
|
874
|
+
sourcesByTarget.set(targetKey, existing);
|
|
875
|
+
});
|
|
876
|
+
return sourcePositions.map(({ name, pos: sourcePos }) => {
|
|
877
|
+
const sourceConfig = sources?.[name] ?? {};
|
|
878
|
+
const targetPos = getSourceTarget(name, sourceConfig);
|
|
879
|
+
const sourceCenterY = sourcePos.y + boxHeight / 2;
|
|
880
|
+
const targetCenterY = targetPos.y + boxHeight / 2;
|
|
881
|
+
// Find sources connecting to the same target
|
|
882
|
+
const targetKey = sourceConfig.next
|
|
883
|
+
? `pre-${sourceConfig.next}`
|
|
884
|
+
: preTransformerList.length > 0
|
|
885
|
+
? `pre-${preTransformerList[0].name}`
|
|
886
|
+
: 'collector';
|
|
887
|
+
const sourcesToSameTarget = sourcesByTarget.get(targetKey) ?? [];
|
|
888
|
+
const indexWithinTarget = sourcesToSameTarget.findIndex((s) => s.name === name);
|
|
889
|
+
// Only spread if multiple sources connect to same target
|
|
890
|
+
const spreadY = getSpreadY(indexWithinTarget, sourcesToSameTarget.length, targetCenterY);
|
|
891
|
+
const offset = withReturn ? ARROW_OFFSET : 0;
|
|
892
|
+
return (_jsxs(React.Fragment, { children: [_jsx(RoughArrow, { fromX: sourcePos.x + STAGE_WIDTH, fromY: sourceCenterY - offset, toX: targetPos.x, toY: spreadY - offset, stroke: "var(--flow-edge-stroke, #9ca3af)", centerY: centerY }), withReturn && (_jsx(RoughArrow, { fromX: targetPos.x, fromY: spreadY + offset, toX: sourcePos.x + STAGE_WIDTH, toY: sourceCenterY + offset, stroke: "var(--flow-edge-stroke, #9ca3af)", centerY: centerY }))] }, `source-${name}-arrows`));
|
|
893
|
+
});
|
|
894
|
+
})(), preTransformerPositions.map(({ name, pos }, index) => {
|
|
895
|
+
const procConfig = preTransformers?.[name] ?? {};
|
|
896
|
+
// Find next target: next transformer in chain, or collector
|
|
897
|
+
let targetPos;
|
|
898
|
+
if (procConfig.next && preTransformers?.[procConfig.next]) {
|
|
899
|
+
targetPos = stages[`pre-${procConfig.next}`];
|
|
900
|
+
}
|
|
901
|
+
else {
|
|
902
|
+
targetPos = collectorPos;
|
|
903
|
+
}
|
|
904
|
+
const fromY = pos.y + boxHeight / 2;
|
|
905
|
+
const toY = targetPos.y + boxHeight / 2;
|
|
906
|
+
const offset = withReturn ? ARROW_OFFSET : 0;
|
|
907
|
+
return (_jsxs(React.Fragment, { children: [_jsx(RoughArrow, { fromX: pos.x + STAGE_WIDTH, fromY: fromY - offset, toX: targetPos.x, toY: toY - offset, stroke: "var(--flow-edge-stroke, #9ca3af)", centerY: centerY }), withReturn && (_jsx(RoughArrow, { fromX: targetPos.x, fromY: toY + offset, toX: pos.x + STAGE_WIDTH, toY: fromY + offset, stroke: "var(--flow-edge-stroke, #9ca3af)", centerY: centerY }))] }, `pre-${name}-chain`));
|
|
908
|
+
}), destinationPositions.map(({ name, pos: destPos }) => {
|
|
909
|
+
const destConfig = destinations?.[name] ?? {};
|
|
910
|
+
const sourcePos = getDestinationSource(name, destConfig);
|
|
911
|
+
const destCenterY = destPos.y + boxHeight / 2;
|
|
912
|
+
const sourceCenterY = sourcePos.y + boxHeight / 2;
|
|
913
|
+
// Draw straight horizontal arrow (post-transformers are already at destination Y)
|
|
914
|
+
const offset = withReturn ? ARROW_OFFSET : 0;
|
|
915
|
+
return (_jsxs(React.Fragment, { children: [_jsx(RoughArrow, { fromX: sourcePos.x + STAGE_WIDTH, fromY: sourceCenterY - offset, toX: destPos.x, toY: destCenterY - offset, stroke: "var(--flow-edge-stroke, #9ca3af)", centerY: centerY }), withReturn && (_jsx(RoughArrow, { fromX: destPos.x, fromY: destCenterY + offset, toX: sourcePos.x + STAGE_WIDTH, toY: sourceCenterY + offset, stroke: "var(--flow-edge-stroke, #9ca3af)", centerY: centerY }))] }, `destination-${name}-arrows`));
|
|
916
|
+
}), postTransformerPositions
|
|
917
|
+
.slice(0, -1)
|
|
918
|
+
.map(({ name, pos }, index) => {
|
|
919
|
+
const procConfig = postTransformers?.[name] ?? {};
|
|
920
|
+
// Find next target: next transformer in chain
|
|
921
|
+
const nextProc = postTransformerPositions[index + 1];
|
|
922
|
+
if (!nextProc)
|
|
923
|
+
return null;
|
|
924
|
+
const targetPos = nextProc.pos;
|
|
925
|
+
const fromY = pos.y + boxHeight / 2;
|
|
926
|
+
const toY = targetPos.y + boxHeight / 2;
|
|
927
|
+
const offset = withReturn ? ARROW_OFFSET : 0;
|
|
928
|
+
return (_jsxs(React.Fragment, { children: [_jsx(RoughArrow, { fromX: pos.x + STAGE_WIDTH, fromY: fromY - offset, toX: targetPos.x, toY: toY - offset, stroke: "var(--flow-edge-stroke, #9ca3af)", centerY: centerY }), withReturn && (_jsx(RoughArrow, { fromX: targetPos.x, fromY: toY + offset, toX: pos.x + STAGE_WIDTH, toY: fromY + offset, stroke: "var(--flow-edge-stroke, #9ca3af)", centerY: centerY }))] }, `post-${name}-chain`));
|
|
929
|
+
}), postTransformerList.length > 0 &&
|
|
930
|
+
(() => {
|
|
931
|
+
const firstPostPos = stages[`post-${postTransformerList[0].name}`];
|
|
932
|
+
const fromY = collectorCenterY;
|
|
933
|
+
const toY = firstPostPos.y + boxHeight / 2;
|
|
934
|
+
const offset = withReturn ? ARROW_OFFSET : 0;
|
|
935
|
+
return (_jsxs(_Fragment, { children: [_jsx(RoughArrow, { fromX: collectorPos.x + STAGE_WIDTH, fromY: fromY - offset, toX: firstPostPos.x, toY: toY - offset, stroke: "var(--flow-edge-stroke, #9ca3af)", centerY: centerY }), withReturn && (_jsx(RoughArrow, { fromX: firstPostPos.x, fromY: toY + offset, toX: collectorPos.x + STAGE_WIDTH, toY: fromY + offset, stroke: "var(--flow-edge-stroke, #9ca3af)", centerY: centerY }))] }));
|
|
936
|
+
})(), afterPositions.map(({ name: destName, pos: afterPos }) => {
|
|
937
|
+
const destPos = stages[`destination-${destName}`];
|
|
938
|
+
if (!destPos)
|
|
939
|
+
return null;
|
|
940
|
+
const destCenterY = destPos.y + boxHeight / 2;
|
|
941
|
+
const afterCenterY = afterPos.y + boxHeight / 2;
|
|
942
|
+
return (_jsx(RoughArrow, { fromX: destPos.x + STAGE_WIDTH, fromY: destCenterY, toX: afterPos.x, toY: afterCenterY, stroke: "var(--flow-edge-stroke, #9ca3af)", centerY: centerY }, `dest-${destName}-after`));
|
|
943
|
+
}), !hasAnyAfterStage && destinationEntries.length === 1 && (_jsx(RoughArrow, { fromX: stages.destination.x + STAGE_WIDTH, fromY: centerY, toX: totalWidth, toY: centerY, stroke: "var(--flow-edge-stroke, #9ca3af)", centerY: centerY }))] }));
|
|
944
|
+
})(), stageConfigs.map(({ key, config, fillVar, strokeVar, defaultLabel, defaultLink }) => {
|
|
945
|
+
const pos = stages[key];
|
|
946
|
+
const icon = config?.icon;
|
|
947
|
+
const label = config?.label || defaultLabel;
|
|
948
|
+
const text = config?.text;
|
|
949
|
+
const description = config?.description;
|
|
950
|
+
const link = config?.link;
|
|
951
|
+
const stageHighlight = config?.highlight !== false;
|
|
952
|
+
// Calculate label Y position
|
|
953
|
+
// When text exists: label at ~25% from top, text fills remaining space centered
|
|
954
|
+
const labelY = text
|
|
955
|
+
? pos.y + pos.height * 0.28
|
|
956
|
+
: pos.y + pos.height / 2;
|
|
957
|
+
// Resolve link URL: undefined = default, false = none, string = custom
|
|
958
|
+
const linkUrl = link === false
|
|
959
|
+
? null
|
|
960
|
+
: typeof link === 'string'
|
|
961
|
+
? link
|
|
962
|
+
: defaultLink;
|
|
963
|
+
// Content to render (box, label, text, description)
|
|
964
|
+
const stageContent = (_jsxs(_Fragment, { children: [_jsx(RoughRect, { x: pos.x, y: pos.y, width: pos.width, height: pos.height, fill: `var(${fillVar}, #6b7280)`, stroke: stageHighlight
|
|
965
|
+
? `var(${strokeVar}, #6b7280)`
|
|
966
|
+
: 'var(--flow-edge-stroke, #9ca3af)' }), _jsx("foreignObject", { x: pos.x + 4, y: labelY - layout.labelSize / 2 - 2, width: pos.width - 8, height: layout.labelSize + 4, children: _jsxs("div", { style: {
|
|
967
|
+
display: 'flex',
|
|
968
|
+
alignItems: 'center',
|
|
969
|
+
justifyContent: 'center',
|
|
970
|
+
gap: '6px',
|
|
971
|
+
height: '100%',
|
|
972
|
+
fontSize: layout.labelSize,
|
|
973
|
+
fontWeight: layout.labelWeight,
|
|
974
|
+
fontFamily: 'system-ui, -apple-system, sans-serif',
|
|
975
|
+
color: 'var(--color-text)',
|
|
976
|
+
}, children: [icon && _jsx(Icon, { icon: icon, width: 14, height: 14 }), _jsx("span", { children: label })] }) }), text && (_jsx("foreignObject", { x: pos.x + 4, y: pos.y + pos.height * 0.34, width: pos.width - 8, height: pos.height * 0.62, children: _jsx("div", { style: {
|
|
977
|
+
fontSize: layout.textSize,
|
|
978
|
+
fontWeight: layout.textWeight,
|
|
979
|
+
color: 'var(--color-text)',
|
|
980
|
+
textAlign: 'center',
|
|
981
|
+
fontFamily: 'system-ui, -apple-system, sans-serif',
|
|
982
|
+
lineHeight: 1.3,
|
|
983
|
+
height: '100%',
|
|
984
|
+
display: 'flex',
|
|
985
|
+
alignItems: 'center',
|
|
986
|
+
justifyContent: 'center',
|
|
987
|
+
}, children: text }) })), description && (_jsx("foreignObject", { x: pos.x, y: pos.y + pos.height + 8, width: STAGE_WIDTH, height: descriptionHeight, children: _jsx("div", { style: {
|
|
988
|
+
fontSize: layout.descriptionSize,
|
|
989
|
+
color: 'var(--color-text-muted)',
|
|
990
|
+
textAlign: 'center',
|
|
991
|
+
fontFamily: 'system-ui, -apple-system, sans-serif',
|
|
992
|
+
lineHeight: 1.3,
|
|
993
|
+
}, children: description }) }))] }));
|
|
994
|
+
// Wrap in link if URL is set
|
|
995
|
+
return linkUrl ? (_jsx("a", { href: linkUrl, style: { cursor: 'pointer', textDecoration: 'none' }, children: stageContent }, key)) : (_jsx("g", { children: stageContent }, key));
|
|
996
|
+
}), markers?.map((marker, index) => {
|
|
997
|
+
const pos = getMarkerPosition(marker.position, stages, centerY, totalWidth);
|
|
998
|
+
// Skip markers for stages that don't exist
|
|
999
|
+
if (!pos)
|
|
1000
|
+
return null;
|
|
1001
|
+
const id = marker.id ?? String(index + 1);
|
|
1002
|
+
return (_jsx(Marker, { x: pos.x, y: pos.y, text: id }, `marker-${index}`));
|
|
1003
|
+
}), legendItems.length > 0 && (_jsx("foreignObject", { x: PADDING_X, y: baseY + stackedHeight + belowBoxHeight + 4, width: totalWidth - PADDING_X * 2, height: LEGEND_LINE_HEIGHT * estimatedLines, children: _jsx("div", { style: {
|
|
1004
|
+
fontSize: 11,
|
|
1005
|
+
fontFamily: 'system-ui, -apple-system, sans-serif',
|
|
1006
|
+
color: 'var(--color-text-muted)',
|
|
1007
|
+
lineHeight: 1.6,
|
|
1008
|
+
}, children: legendItems.map((item, index) => {
|
|
1009
|
+
const id = item.id ?? String((markers?.indexOf(item) ?? index) + 1);
|
|
1010
|
+
return (_jsxs("span", { children: [_jsx("span", { style: {
|
|
1011
|
+
width: 12,
|
|
1012
|
+
height: 12,
|
|
1013
|
+
borderRadius: '50%',
|
|
1014
|
+
background: 'var(--flow-marker-fill, #dc2626)',
|
|
1015
|
+
display: 'inline-flex',
|
|
1016
|
+
alignItems: 'center',
|
|
1017
|
+
justifyContent: 'center',
|
|
1018
|
+
fontSize: 8,
|
|
1019
|
+
fontWeight: 600,
|
|
1020
|
+
color: 'var(--flow-marker-text, #ffffff)',
|
|
1021
|
+
verticalAlign: 'middle',
|
|
1022
|
+
marginRight: 4,
|
|
1023
|
+
position: 'relative',
|
|
1024
|
+
top: -1,
|
|
1025
|
+
}, children: id }), _jsx("span", { style: { marginRight: 10 }, children: item.text })] }, `legend-${index}`));
|
|
1026
|
+
}) }) }))] }) }));
|
|
1027
|
+
}
|
|
1028
|
+
//# sourceMappingURL=FlowMap.js.map
|