import React from "react"; import { getMutationProviderData } from "../../misc"; import { PartialMutationProviderOutput } from "../../types"; import { TypedVariantDeleteMutation, TypedVariantImageAssignMutation, TypedVariantImageUnassignMutation, TypedVariantUpdateMutation } from "../mutations"; import { VariantDelete, VariantDeleteVariables } from "../types/VariantDelete"; import { VariantImageAssign, VariantImageAssignVariables } from "../types/VariantImageAssign"; import { VariantImageUnassign, VariantImageUnassignVariables } from "../types/VariantImageUnassign"; import { VariantUpdate, VariantUpdateVariables } from "../types/VariantUpdate"; interface VariantDeleteOperationsProps { children: (props: { deleteVariant: PartialMutationProviderOutput< VariantDelete, VariantDeleteVariables >; updateVariant: PartialMutationProviderOutput< VariantUpdate, VariantUpdateVariables >; assignImage: PartialMutationProviderOutput< VariantImageAssign, VariantImageAssignVariables >; unassignImage: PartialMutationProviderOutput< VariantImageUnassign, VariantImageUnassignVariables >; }) => React.ReactNode; onDelete?: (data: VariantDelete) => void; onImageAssign?: (data: VariantImageAssign) => void; onImageUnassign?: (data: VariantImageUnassign) => void; onUpdate?: (data: VariantUpdate) => void; } const VariantUpdateOperations: React.FC = ({ children, onDelete, onUpdate, onImageAssign, onImageUnassign }) => ( {(...assignImage) => ( {(...unassignImage) => ( {(...updateVariant) => ( {(...deleteVariant) => children({ assignImage: getMutationProviderData(...assignImage), deleteVariant: getMutationProviderData(...deleteVariant), unassignImage: getMutationProviderData(...unassignImage), updateVariant: getMutationProviderData(...updateVariant) }) } )} )} )} ); export default VariantUpdateOperations;