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 (
)
}