Add native categories to constants.ts and update nodeToolbarComponent
This commit is contained in:
parent
d4313a05ce
commit
cfbbddd95c
5 changed files with 94 additions and 2 deletions
|
|
@ -740,6 +740,16 @@ export const PRIORITY_SIDEBAR_ORDER = [
|
||||||
"helpers",
|
"helpers",
|
||||||
"experimental",
|
"experimental",
|
||||||
];
|
];
|
||||||
|
export const NATIVE_CATEGORIES = [
|
||||||
|
"inputs",
|
||||||
|
"outputs",
|
||||||
|
"prompts",
|
||||||
|
"data",
|
||||||
|
"prompt",
|
||||||
|
"models",
|
||||||
|
"helpers",
|
||||||
|
"experimental",
|
||||||
|
];
|
||||||
/*
|
/*
|
||||||
Data ingestion
|
Data ingestion
|
||||||
Basic Prompting
|
Basic Prompting
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import {
|
||||||
SelectItem,
|
SelectItem,
|
||||||
SelectTrigger,
|
SelectTrigger,
|
||||||
} from "../../../../components/ui/select-custom";
|
} from "../../../../components/ui/select-custom";
|
||||||
|
import { postCustomComponent } from "../../../../controllers/API";
|
||||||
import ConfirmationModal from "../../../../modals/ConfirmationModal";
|
import ConfirmationModal from "../../../../modals/ConfirmationModal";
|
||||||
import EditNodeModal from "../../../../modals/EditNodeModal";
|
import EditNodeModal from "../../../../modals/EditNodeModal";
|
||||||
import ShareModal from "../../../../modals/shareModal";
|
import ShareModal from "../../../../modals/shareModal";
|
||||||
|
|
@ -18,6 +19,7 @@ import { useDarkStore } from "../../../../stores/darkStore";
|
||||||
import useFlowStore from "../../../../stores/flowStore";
|
import useFlowStore from "../../../../stores/flowStore";
|
||||||
import useFlowsManagerStore from "../../../../stores/flowsManagerStore";
|
import useFlowsManagerStore from "../../../../stores/flowsManagerStore";
|
||||||
import { useStoreStore } from "../../../../stores/storeStore";
|
import { useStoreStore } from "../../../../stores/storeStore";
|
||||||
|
import { useTypesStore } from "../../../../stores/typesStore";
|
||||||
import { APIClassType } from "../../../../types/api";
|
import { APIClassType } from "../../../../types/api";
|
||||||
import { nodeToolbarPropsType } from "../../../../types/components";
|
import { nodeToolbarPropsType } from "../../../../types/components";
|
||||||
import { FlowType } from "../../../../types/flow";
|
import { FlowType } from "../../../../types/flow";
|
||||||
|
|
@ -38,6 +40,7 @@ export default function NodeToolbarComponent({
|
||||||
showNode,
|
showNode,
|
||||||
name = "code",
|
name = "code",
|
||||||
selected,
|
selected,
|
||||||
|
updateNodeCode,
|
||||||
setShowState,
|
setShowState,
|
||||||
onCloseAdvancedModal,
|
onCloseAdvancedModal,
|
||||||
}: nodeToolbarPropsType): JSX.Element {
|
}: nodeToolbarPropsType): JSX.Element {
|
||||||
|
|
@ -56,7 +59,7 @@ export default function NodeToolbarComponent({
|
||||||
data.node.template[templateField].type === "dict" ||
|
data.node.template[templateField].type === "dict" ||
|
||||||
data.node.template[templateField].type === "NestedDict")
|
data.node.template[templateField].type === "NestedDict")
|
||||||
).length;
|
).length;
|
||||||
|
const templates = useTypesStore((state) => state.templates);
|
||||||
const hasStore = useStoreStore((state) => state.hasStore);
|
const hasStore = useStoreStore((state) => state.hasStore);
|
||||||
const hasApiKey = useStoreStore((state) => state.hasApiKey);
|
const hasApiKey = useStoreStore((state) => state.hasApiKey);
|
||||||
const validApiKey = useStoreStore((state) => state.validApiKey);
|
const validApiKey = useStoreStore((state) => state.validApiKey);
|
||||||
|
|
@ -70,6 +73,7 @@ export default function NodeToolbarComponent({
|
||||||
const nodes = useFlowStore((state) => state.nodes);
|
const nodes = useFlowStore((state) => state.nodes);
|
||||||
const edges = useFlowStore((state) => state.edges);
|
const edges = useFlowStore((state) => state.edges);
|
||||||
const setNodes = useFlowStore((state) => state.setNodes);
|
const setNodes = useFlowStore((state) => state.setNodes);
|
||||||
|
|
||||||
const setEdges = useFlowStore((state) => state.setEdges);
|
const setEdges = useFlowStore((state) => state.setEdges);
|
||||||
const unselectAll = useFlowStore((state) => state.unselectAll);
|
const unselectAll = useFlowStore((state) => state.unselectAll);
|
||||||
const saveComponent = useFlowsManagerStore((state) => state.saveComponent);
|
const saveComponent = useFlowsManagerStore((state) => state.saveComponent);
|
||||||
|
|
@ -79,7 +83,9 @@ export default function NodeToolbarComponent({
|
||||||
const [showModalAdvanced, setShowModalAdvanced] = useState(false);
|
const [showModalAdvanced, setShowModalAdvanced] = useState(false);
|
||||||
const [showconfirmShare, setShowconfirmShare] = useState(false);
|
const [showconfirmShare, setShowconfirmShare] = useState(false);
|
||||||
const [showOverrideModal, setShowOverrideModal] = useState(false);
|
const [showOverrideModal, setShowOverrideModal] = useState(false);
|
||||||
|
const isOutdated = useFlowStore((state) => state.outDatedNodes).includes(
|
||||||
|
data.id
|
||||||
|
);
|
||||||
const [flowComponent, setFlowComponent] = useState<FlowType>();
|
const [flowComponent, setFlowComponent] = useState<FlowType>();
|
||||||
|
|
||||||
const openInNewTab = (url) => {
|
const openInNewTab = (url) => {
|
||||||
|
|
@ -170,6 +176,37 @@ export default function NodeToolbarComponent({
|
||||||
paneY: nodes.find((node) => node.id === data.id)?.position.y,
|
paneY: nodes.find((node) => node.id === data.id)?.position.y,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
break;
|
||||||
|
case "update":
|
||||||
|
takeSnapshot();
|
||||||
|
// to update we must get the code from the templates in useTypesStore
|
||||||
|
const thisNodeTemplate = templates[data.type].template;
|
||||||
|
// if the template does not have a code key
|
||||||
|
// return
|
||||||
|
if (!thisNodeTemplate.code) return;
|
||||||
|
|
||||||
|
const currentCode = thisNodeTemplate.code.value;
|
||||||
|
if (data.node) {
|
||||||
|
postCustomComponent(currentCode, data.node)
|
||||||
|
.then((apiReturn) => {
|
||||||
|
const { data } = apiReturn;
|
||||||
|
if (data && updateNodeCode) {
|
||||||
|
updateNodeCode(data, currentCode, "code");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
setNode(data.id, (oldNode) => {
|
||||||
|
let newNode = cloneDeep(oldNode);
|
||||||
|
newNode.data = {
|
||||||
|
...data,
|
||||||
|
};
|
||||||
|
newNode.data.node.template.code.value = currentCode;
|
||||||
|
return newNode;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -470,6 +507,28 @@ export default function NodeToolbarComponent({
|
||||||
<span className="absolute right-2 top-[0.4em]">C</span>
|
<span className="absolute right-2 top-[0.4em]">C</span>
|
||||||
</div>
|
</div>
|
||||||
</SelectItem>
|
</SelectItem>
|
||||||
|
{isOutdated && (
|
||||||
|
<SelectItem value={"update"}>
|
||||||
|
<div className="flex">
|
||||||
|
<IconComponent
|
||||||
|
name="Code"
|
||||||
|
className="relative top-0.5 mr-2 h-4 w-4 "
|
||||||
|
/>{" "}
|
||||||
|
<span className="">Update</span>{" "}
|
||||||
|
{navigator.userAgent.toUpperCase().includes("MAC") ? (
|
||||||
|
<IconComponent
|
||||||
|
name="Command"
|
||||||
|
className="absolute right-[1.15rem] top-[0.65em] h-3.5 w-3.5 stroke-2"
|
||||||
|
></IconComponent>
|
||||||
|
) : (
|
||||||
|
<span className="absolute right-[1.15rem] top-[0.40em] stroke-2">
|
||||||
|
Ctrl +{" "}
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
|
<span className="absolute right-2 top-[0.4em]">U</span>
|
||||||
|
</div>
|
||||||
|
</SelectItem>
|
||||||
|
)}
|
||||||
{hasStore && (
|
{hasStore && (
|
||||||
<SelectItem
|
<SelectItem
|
||||||
value={"Share"}
|
value={"Share"}
|
||||||
|
|
|
||||||
|
|
@ -581,6 +581,21 @@ const useFlowStore = create<FlowStoreType>((set, get) => ({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
outDatedNodes: [],
|
||||||
|
addToOutdatedNodes: (nodeId) => {
|
||||||
|
// add the nodes to the list of outdated nodes
|
||||||
|
// without removing the previous ones
|
||||||
|
let oldOutDatedNodes = get().outDatedNodes;
|
||||||
|
// filter out the nodes that are already in the list
|
||||||
|
if (!oldOutDatedNodes.includes(nodeId)) {
|
||||||
|
set({ outDatedNodes: [...oldOutDatedNodes, nodeId] });
|
||||||
|
}
|
||||||
|
},
|
||||||
|
removeFromOutdatedNodes: (nodeId) => {
|
||||||
|
// remove the nodes from the list of outdated nodes
|
||||||
|
let oldOutDatedNodes = get().outDatedNodes;
|
||||||
|
set({ outDatedNodes: oldOutDatedNodes.filter((id) => id !== nodeId) });
|
||||||
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
export default useFlowStore;
|
export default useFlowStore;
|
||||||
|
|
|
||||||
|
|
@ -491,6 +491,11 @@ export type nodeToolbarPropsType = {
|
||||||
openAdvancedModal?: boolean;
|
openAdvancedModal?: boolean;
|
||||||
onCloseAdvancedModal?: (close: boolean) => void;
|
onCloseAdvancedModal?: (close: boolean) => void;
|
||||||
selected: boolean;
|
selected: boolean;
|
||||||
|
updateNodeCode?: (
|
||||||
|
newNodeClass: APIClassType,
|
||||||
|
code?: string,
|
||||||
|
name?: string
|
||||||
|
) => void;
|
||||||
setShowState: (show: boolean | SetStateAction<boolean>) => void;
|
setShowState: (show: boolean | SetStateAction<boolean>) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -124,4 +124,7 @@ export type FlowStoreType = {
|
||||||
data: FlowPoolObjectType | ChatOutputType | chatInputType,
|
data: FlowPoolObjectType | ChatOutputType | chatInputType,
|
||||||
buildId?: string
|
buildId?: string
|
||||||
) => void;
|
) => void;
|
||||||
|
outDatedNodes: string[];
|
||||||
|
addToOutdatedNodes: (nodeId: string) => void;
|
||||||
|
removeFromOutdatedNodes: (nodeId: string) => void;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue