( parent: View | null, reusableView: View, renderDropIndicator?: (target: ItemDropTarget) => ReactNode )
| 156 | } |
| 157 | |
| 158 | function renderWrapper( |
| 159 | parent: View | null, |
| 160 | reusableView: View, |
| 161 | renderDropIndicator?: (target: ItemDropTarget) => ReactNode |
| 162 | ): ReactNode { |
| 163 | let rendered = ( |
| 164 | <VirtualizerItem |
| 165 | key={reusableView.key} |
| 166 | layoutInfo={reusableView.layoutInfo!} |
| 167 | virtualizer={reusableView.virtualizer} |
| 168 | parent={parent?.layoutInfo}> |
| 169 | {reusableView.rendered} |
| 170 | </VirtualizerItem> |
| 171 | ); |
| 172 | |
| 173 | let {collection, layout} = reusableView.virtualizer; |
| 174 | let node = reusableView.content; |
| 175 | if (node?.type === 'item' && renderDropIndicator && layout.getDropTargetLayoutInfo) { |
| 176 | rendered = ( |
| 177 | <React.Fragment key={reusableView.key}> |
| 178 | {renderDropIndicatorWrapper( |
| 179 | parent, |
| 180 | reusableView, |
| 181 | {type: 'item', key: reusableView.content!.key, dropPosition: 'before'}, |
| 182 | renderDropIndicator |
| 183 | )} |
| 184 | {rendered} |
| 185 | {renderAfterDropIndicators(collection, node, target => |
| 186 | renderDropIndicatorWrapper(parent, reusableView, target, renderDropIndicator) |
| 187 | )} |
| 188 | </React.Fragment> |
| 189 | ); |
| 190 | } |
| 191 | |
| 192 | return rendered; |
| 193 | } |
| 194 | |
| 195 | function renderDropIndicatorWrapper( |
| 196 | parent: View | null, |
no test coverage detected