import React, { ReactElement, useCallback } from 'react'; import { RenderItem } from './RenderItem'; import { GridCardItem } from './GridCardItem'; import { SupportedCardGalleryItemProps } from './SupportedCardGalleryItemProps'; import { GridBaseState } from '../../state'; import { AddItemProps } from '@wix/design-system'; import { ActionCell } from '../ActionCell'; import { FiltersMap } from '@wix/bex-core'; import { FolderIcon } from '../FolderIcon'; import { GridDragAndDrop } from '../GridDragAndDropDndKit/GridDragAndDrop'; export interface UseRenderFolderItemParams { folderPreset?: 'full' | 'title'; renderFolderItem?: ( item: T, index: number, ) => Partial; state: GridBaseState; renderFolderAddItem?: () => ReactElement; folderActionCell?: ActionCell; dragAndDrop?: typeof GridDragAndDrop; } export function useRenderFolderItem( params: UseRenderFolderItemParams, ) { const { state, folderPreset = 'title', renderFolderItem, dragAndDrop, folderActionCell, } = params; return useCallback( (index, { itemKey: _itemKey, index2d } = {}) => { const renderType = state.getItemRenderTypeAt(index); if (renderType === null) { return null; } if (renderType === 'trailing') { return null; } let child = ( ({ backgroundImageNode: , imagePlacement: 'side', ...renderFolderItem?.(item, i), })} preset={folderPreset} actionCell={folderActionCell} /> ); if (dragAndDrop) { const { DraggableCard } = dragAndDrop; child = ( {child} ); } return child; }, [dragAndDrop?.DraggableCard], ); }