/*! * Copyright (c) Microsoft. All rights reserved. * Licensed under the MIT license. See LICENSE file in the project. */ import type { Step } from '@datashaper/workflow' import { produce } from 'immer' import { useCallback } from 'react' import type { StepChangeFunction } from '../../types.js' export type CheckboxChangeHandler = ( event?: React.FormEvent, checked?: boolean, ) => void export function useCheckboxChangeHandler( step: Step, updateFn: (step: Step, newValue: boolean | undefined) => void, onChange?: StepChangeFunction, ): CheckboxChangeHandler { /* eslint-disable-next-line react-hooks/exhaustive-deps */ return useCallback(getCheckboxChangeHandler(step, updateFn, onChange), [ step, updateFn, onChange, ]) } function getCheckboxChangeHandler( step: Step, updateFn: (step: Step, newValue: boolean | undefined) => void, onChange?: StepChangeFunction, ): CheckboxChangeHandler { return (_event, checked) => { onChange?.( produce(step, (draft) => { updateFn(draft as Step, checked) }), ) } }