tachybase_todo/packages/plugins/@tachybase/plugin-workflow/src/client/ExecutionContextProvider.tsx
2024-06-11 21:17:42 +08:00

33 lines
878 B
TypeScript

import React from 'react';
import { SchemaComponentOptions, usePlugin } from '@tachybase/client';
import PluginWorkflowClient, { FlowContext } from '.';
export function ExecutionContextProvider({ children, workflow, execution, nodes }) {
const workflowPlugin = usePlugin(PluginWorkflowClient);
const triggerComponents = workflowPlugin.triggers.get(workflow.type).components;
const nodeComponents = nodes.reduce(
(components, { type }) => Object.assign(components, workflowPlugin.instructions.get(type).components),
{},
);
return (
<FlowContext.Provider
value={{
workflow,
nodes,
execution,
}}
>
<SchemaComponentOptions
components={{
...triggerComponents,
...nodeComponents,
}}
>
{children}
</SchemaComponentOptions>
</FlowContext.Provider>
);
}