Update TS version and code-split deepslate

This commit is contained in:
Misode
2022-05-07 00:40:16 +02:00
parent bcb2ae3f85
commit bd5679f44a
13 changed files with 53 additions and 39 deletions

View File

@@ -18,11 +18,13 @@ export function useCanvas({ size, draw, onDrag, onHover, onLeave }: {
const dragBusy = useRef(false)
useEffect(() => {
if (!canvas.current) return
const onMouseDown = (e: MouseEvent) => {
dragStart.current = [e.offsetX, e.offsetY]
}
const onMouseMove = (e: MouseEvent) => {
if (dragStart.current === undefined) {
if (!canvas.current) return
const x = e.offsetX / canvas.current.clientWidth
const y = e.offsetY / canvas.current.clientHeight
onHover?.(x, y)
@@ -34,8 +36,10 @@ export function useCanvas({ size, draw, onDrag, onHover, onLeave }: {
if (!(dx === 0 && dy === 0)) {
dragPending.current = [dragPending.current[0] + dx, dragPending.current[1] + dy]
if (!dragBusy.current) {
if (!dragRequest.current) return
cancelAnimationFrame(dragRequest.current)
dragRequest.current = requestAnimationFrame(async () => {
if (!canvas.current) return
dragBusy.current = true
const dx = dragPending.current[0] / canvas.current.clientWidth
const dy = dragPending.current[1] / canvas.current.clientHeight
@@ -70,6 +74,7 @@ export function useCanvas({ size, draw, onDrag, onHover, onLeave }: {
const redraw = useRef<() => Promise<unknown>>()
const redrawCount = useRef(0)
redraw.current = async () => {
if (!canvas.current) return
const ctx = canvas.current.getContext('2d')!
const s = size()
canvas.current.width = s[0]