import { getShapeUtils } from 'lib/shape-utils' import { memo } from 'react' import { useSelector } from 'state' import { deepCompareArrays, getCurrentCamera, getPage } from 'utils/utils' import { DotCircle, Handle } from './misc' export default function Defs() { const zoom = useSelector((s) => getCurrentCamera(s.data).zoom) const currentPageShapeIds = useSelector(({ data }) => { return Object.values(getPage(data).shapes) .sort((a, b) => a.childIndex - b.childIndex) .map((shape) => shape.id) }, deepCompareArrays) return ( {currentPageShapeIds.map((id) => ( ))} ) } const Def = memo(function Def({ id }: { id: string }) { const shape = useSelector(({ data }) => getPage(data).shapes[id]) if (!shape) return null return getShapeUtils(shape).render(shape) })