funcionando mas ainda não ideal
This commit is contained in:
parent
596ab2f282
commit
354e1bc126
2 changed files with 47 additions and 7 deletions
|
|
@ -199,11 +199,10 @@ const useFlowsManagerStore = create<FlowsManagerStoreType>((set, get) => ({
|
||||||
position?: XYPosition,
|
position?: XYPosition,
|
||||||
fromDragAndDrop?: boolean,
|
fromDragAndDrop?: boolean,
|
||||||
): Promise<string | undefined> => {
|
): Promise<string | undefined> => {
|
||||||
|
let flowData = flow
|
||||||
|
? processDataFromFlow(flow)
|
||||||
|
: { nodes: [], edges: [], viewport: { zoom: 1, x: 0, y: 0 } };
|
||||||
if (newProject) {
|
if (newProject) {
|
||||||
let flowData = flow
|
|
||||||
? processDataFromFlow(flow)
|
|
||||||
: { nodes: [], edges: [], viewport: { zoom: 1, x: 0, y: 0 } };
|
|
||||||
|
|
||||||
// Create a new flow with a default name if no flow is provided.
|
// Create a new flow with a default name if no flow is provided.
|
||||||
const folder_id = useFolderStore.getState().folderUrl;
|
const folder_id = useFolderStore.getState().folderUrl;
|
||||||
const my_collection_id = useFolderStore.getState().myCollectionId;
|
const my_collection_id = useFolderStore.getState().myCollectionId;
|
||||||
|
|
@ -272,7 +271,7 @@ const useFlowsManagerStore = create<FlowsManagerStoreType>((set, get) => ({
|
||||||
useFlowStore
|
useFlowStore
|
||||||
.getState()
|
.getState()
|
||||||
.paste(
|
.paste(
|
||||||
{ nodes: flow!.data!.nodes, edges: flow!.data!.edges },
|
{ nodes: flowData?.nodes, edges: flowData?.edges },
|
||||||
position ?? { x: 10, y: 10 },
|
position ?? { x: 10, y: 10 },
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -191,8 +191,8 @@ export const processDataFromFlow = (flow: FlowType, refreshIds = true) => {
|
||||||
let data = flow?.data ? flow.data : null;
|
let data = flow?.data ? flow.data : null;
|
||||||
if (data) {
|
if (data) {
|
||||||
processFlowEdges(flow);
|
processFlowEdges(flow);
|
||||||
//prevent node update for now
|
//add dropdown option to nodeOutputs
|
||||||
// processFlowNodes(flow);
|
processFlowNodes(flow);
|
||||||
//add animation to text type edges
|
//add animation to text type edges
|
||||||
updateEdges(data.edges);
|
updateEdges(data.edges);
|
||||||
// updateNodes(data.nodes, data.edges);
|
// updateNodes(data.nodes, data.edges);
|
||||||
|
|
@ -410,6 +410,34 @@ export function updateEdgesHandleIds({
|
||||||
return newEdges;
|
return newEdges;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function updateNewOutput({ nodes, edges }: updateEdgesHandleIdsType) {
|
||||||
|
let newEdges = cloneDeep(edges);
|
||||||
|
let newNodes = cloneDeep(nodes);
|
||||||
|
newNodes.forEach((node) => {
|
||||||
|
if (
|
||||||
|
!node.data.node?.outputs &&
|
||||||
|
(node.data.node?.base_classes ?? []).length > 0
|
||||||
|
) {
|
||||||
|
const selected = node.data.node?.base_classes[0]!;
|
||||||
|
node.data.node!.outputs = [
|
||||||
|
{ types: node.data.node!.base_classes, selected: selected },
|
||||||
|
];
|
||||||
|
newEdges.forEach((edge) => {
|
||||||
|
if (edge.source === node.id && edge.sourceHandle) {
|
||||||
|
let newSourceHandle: sourceHandleType = scapeJSONParse(
|
||||||
|
edge.sourceHandle,
|
||||||
|
);
|
||||||
|
newSourceHandle.baseClasses = [selected];
|
||||||
|
edge.sourceHandle = scapedJSONStringfy(newSourceHandle);
|
||||||
|
edge.data.sourceHandle = newSourceHandle;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return { nodes: newNodes, edges: newEdges };
|
||||||
|
}
|
||||||
|
|
||||||
export function handleKeyDown(
|
export function handleKeyDown(
|
||||||
e:
|
e:
|
||||||
| React.KeyboardEvent<HTMLInputElement>
|
| React.KeyboardEvent<HTMLInputElement>
|
||||||
|
|
@ -561,6 +589,10 @@ export function checkOldEdgesHandles(edges: Edge[]): boolean {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function checkOldNodesOutput(nodes: NodeType[]): boolean {
|
||||||
|
return nodes.some((node) => !node.data.node?.outputs);
|
||||||
|
}
|
||||||
|
|
||||||
export function customStringify(obj: any): string {
|
export function customStringify(obj: any): string {
|
||||||
if (typeof obj === "undefined") {
|
if (typeof obj === "undefined") {
|
||||||
return "null";
|
return "null";
|
||||||
|
|
@ -1017,6 +1049,15 @@ export function processFlowEdges(flow: FlowType) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function processFlowNodes(flow: FlowType) {
|
||||||
|
if (!flow.data || !flow.data.nodes) return;
|
||||||
|
if (checkOldNodesOutput(flow.data.nodes)) {
|
||||||
|
const { nodes, edges } = updateNewOutput(flow.data);
|
||||||
|
flow.data.nodes = nodes;
|
||||||
|
flow.data.edges = edges;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function expandGroupNode(
|
export function expandGroupNode(
|
||||||
id: string,
|
id: string,
|
||||||
flow: FlowType,
|
flow: FlowType,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue