in experimenter/experimenter/nimbus-ui/src/components/FormOverview/documentationLink.ts [21:62]
export function useDocumentationLinks(
experiment: getExperiment_experimentBySlug | null | undefined,
control: UseFormMethods["control"],
setValue: UseFormMethods["setValue"],
) {
const {
fields: documentationLinks,
append,
remove,
} = useFieldArray<AnnotatedDocumentationLink>({
control,
name: "documentationLinks",
});
const stateAPI = useMemo(
() => ({
addDocumentationLink: () => {
append(emptyDocumentationLink());
},
removeDocumentationLink: (
documentationLink: Partial<
ArrayField<AnnotatedDocumentationLink, "id">
>,
) => {
const index = documentationLinks.findIndex(
(d) => d.id === documentationLink.id,
);
remove(index);
},
}),
[documentationLinks, append, remove],
);
useEffect(() => {
const documentationLinks = setupDocumentationLinks(
experiment?.documentationLinks,
);
setValue("documentationLinks", documentationLinks);
}, [experiment, setValue]);
return { documentationLinks, ...stateAPI };
}