Math.max(MIN_ZOOM, Math.min(MAX_ZOOM, value * (event.deltaY > 0 ? 0.9 : 1.1))));
}}
onPointerDown={(event) => {
+ if (event.pointerType === "touch") return;
event.currentTarget.setPointerCapture(event.pointerId);
dragRef.current = { x: event.clientX, y: event.clientY, originX: pan.x, originY: pan.y };
}}
onPointerMove={(event) => {
- if (!dragRef.current) return;
- setPan({ x: dragRef.current.originX + event.clientX - dragRef.current.x, y: dragRef.current.originY + event.clientY - dragRef.current.y });
+ if (event.pointerType !== "touch" && dragRef.current) {
+ setPan({ x: dragRef.current.originX + event.clientX - dragRef.current.x, y: dragRef.current.originY + event.clientY - dragRef.current.y });
+ }
+ }}
+ onPointerUp={(event) => {
+ if (event.pointerType !== "touch") dragRef.current = null;
+ }}
+ onPointerCancel={(event) => {
+ if (event.pointerType !== "touch") dragRef.current = null;
}}
- onPointerUp={() => { dragRef.current = null; }}
>
{document.artboards.length || document.pasteboardLayers.length ? (
{
});
});
+ it("fits complete bounds inside a narrow mobile viewport", () => {
+ const transform = fitBounds({ x: -500, y: -100, width: 1100, height: 800 }, { width: 390, height: 700 }, 40);
+ expect(transform.zoom).toBeCloseTo(310 / 1100);
+ expect(transform.pan).toEqual({ x: 0, y: 0 });
+ });
+
it("focuses an artboard relative to the document center", () => {
const transform = focusArtboard(artboards[0], artboardBounds(document), { width: 1000, height: 800 }, 100);
expect(transform.zoom).toBe(1.5);