💡 (index.tsx): add non-null assertion operator to playground variable ♻️ (use-on-file-drop.tsx): add type annotations for folderId and folderChangeCallback ♻️ (use-auto-resize-text-area.tsx): add type annotations for value and inputRef ♻️ (use-drag-and-drop.tsx): add type annotations for setIsDragging, setFiles, currentFlowId, and setErrorData ♻️ (use-focus-unlock.tsx): add type annotations for lockChat and inputRef ♻️ (use-upload.tsx): add type annotations for uploadFile, currentFlowId, setFiles, and lockChat ♻️ (use-column-defs.tsx): add type annotation for myData ♻️ (use-row-data.tsx): add type annotations for myData and open ♻️ (index.tsx): remove commented-out code ♻️ (use-filtered-flows.tsx): add type annotations for flowsFromFolder, searchFlowsComponents, and setAllFlows 💡 (index.tsx): add non-null assertion operator to flowsFromFolder variable
40 lines
1 KiB
TypeScript
40 lines
1 KiB
TypeScript
import { cloneDeep } from "lodash";
|
|
import { NodeDataType } from "../../types/flow";
|
|
|
|
const useHandleNodeClass = (
|
|
data: NodeDataType,
|
|
name: string,
|
|
takeSnapshot: () => void,
|
|
setNode: (id: string, callback: (oldNode: any) => any) => void,
|
|
updateNodeInternals: (id: string) => void,
|
|
) => {
|
|
const handleNodeClass = (newNodeClass, code, type?: string) => {
|
|
if (!data.node) return;
|
|
if (data.node!.template[name].value !== code) {
|
|
takeSnapshot();
|
|
}
|
|
|
|
setNode(data.id, (oldNode) => {
|
|
let newNode = cloneDeep(oldNode);
|
|
|
|
newNode.data = {
|
|
...newNode.data,
|
|
node: newNodeClass,
|
|
description: newNodeClass.description ?? data.node!.description,
|
|
display_name: newNodeClass.display_name ?? data.node!.display_name,
|
|
};
|
|
if (type) {
|
|
newNode.data.node.template[name].type = type;
|
|
}
|
|
newNode.data.node.template[name].value = code;
|
|
|
|
return newNode;
|
|
});
|
|
|
|
updateNodeInternals(data.id);
|
|
};
|
|
|
|
return { handleNodeClass };
|
|
};
|
|
|
|
export default useHandleNodeClass;
|