import { PickerModalState, useCreatePickerModal as useCreatePickerModalBase, UsePickerModalParams as UsePickerModalParamsOriginal, UsePickerModalParamsBase, useSyncPickerModalProps, } from '../hooks'; import { wixPatternsEnvironment, FiltersMap, OptionalFiltersMap, } from '@wix/bex-core'; import { PaginationModeConfig } from '@wix/bex-core/react'; import { useEssentials } from '@wix/yoshi-flow-bm/fe-essentials-giza'; import { useCallback, useState } from 'react'; interface UsePickerModalParamsOverrides { environment?: Partial['environment']>; } type UsePickerModalParamsEssentials = Omit< UsePickerModalParamsBase, | 'paginationMode' | 'fetchData' | 'environment' | 'errorMonitor' | 'biLoggerFactory' >; export type UsePickerModalParams< T, F extends FiltersMap, > = UsePickerModalParamsEssentials & UsePickerModalParamsOverrides & PaginationModeConfig; export type PikerModalFactory = ( config: UsePickerModalParams, ) => PickerModalState; export function useCreatePickerModal(): PikerModalFactory { const { errorMonitor, environment, createChildEssentials } = useEssentials(); const createPickerModalBase = useCreatePickerModalBase(); return useCallback( (params: any) => { const { biLoggerFactory } = createChildEssentials({}); return createPickerModalBase({ errorMonitor, biLoggerFactory, ...params, environment: wixPatternsEnvironment({ ...environment, ...params?.environment, }), } as UsePickerModalParamsOriginal); }, [], ); } export function usePickerModal( params: UsePickerModalParams, ) { const createPickerModal = useCreatePickerModal(); const [state] = useState(() => createPickerModal(params)); useSyncPickerModalProps(state, params); return state; }