import { SortableContainer, SortableContainerProps, SortableElement, SortableElementProps } from '@o/react-sortable-hoc' import { Grid, GridProps } from 'gloss' import React from 'react' import { isRightClick } from './helpers/isRightClick' import { View } from './View/View' export type GetGridItem = (item: A, index: number) => any export type GetSortableItem = ( item: A, index: number, ) => Partial | undefined | null export type SortableGridProps = SortableContainerProps & Omit & { /** The items to be used for getItem in the grid */ items?: A[] /** Callback that return the react node for each item */ getItem?: GetGridItem getSortableItemProps?: GetSortableItem sortable?: boolean } type SortableGridItemProps = { value: any getItem: GetGridItem realIndex: number } class SortableGridItem extends React.PureComponent { render() { const { value, realIndex, getItem } = this.props return {getItem(value, realIndex)} } } const SortableItem = SortableElement(SortableGridItem) const SortableGridInner = SortableContainer( ({ items, getItem, getSortableItemProps, sortable, ...props }: any) => { return ( {items.map((value, index) => ( ))} ) }, ) export function SortableGrid(props: SortableGridProps) { return ( ) }