Skip to content

Commit

Permalink
fix(creation-toolbar): use pointerUp set basic pointer cause onChange…
Browse files Browse the repository at this point in the history
… do not fire on mobile

bind pointermove/pointerup to viewportContainerRef to implement dnd on mobile
#20
  • Loading branch information
pubuzhixing8 committed Nov 8, 2024
1 parent 463c92a commit 54b036b
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 85 deletions.
48 changes: 24 additions & 24 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
"private": true,
"dependencies": {
"@floating-ui/react": "^0.26.24",
"@plait/common": "^0.69.1",
"@plait/core": "^0.69.1",
"@plait/draw": "^0.69.1",
"@plait/layouts": "^0.69.1",
"@plait/mind": "^0.69.1",
"@plait/text-plugins": "^0.69.1",
"@plait/common": "^0.69.2",
"@plait/core": "^0.69.2",
"@plait/draw": "^0.69.2",
"@plait/layouts": "^0.69.2",
"@plait/mind": "^0.69.2",
"@plait/text-plugins": "^0.69.2",
"ahooks": "^3.8.0",
"browser-fs-access": "^0.35.0",
"classnames": "^2.5.1",
Expand Down
17 changes: 6 additions & 11 deletions packages/drawnix/src/components/toolbar/creation-toolbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -93,19 +93,16 @@ export const isShapePointer = (board: PlaitBoard) => {
return Object.keys(BasicShapes).includes(board.pointer);
};

export const CreationToolbar: React.FC<CreationToolbarProps> = ({ setPointer }) => {
export const CreationToolbar: React.FC<CreationToolbarProps> = ({
setPointer,
}) => {
const board = useBoard();
const container = PlaitBoard.getBoardContainer(board);

const [arrowOpen, setArrowOpen] = useState(false);

const [shapeOpen, setShapeOpen] = useState(false);

const onChange = (pointer: DrawnixPointerType) => {
BoardTransforms.updatePointerType(board, pointer);
setPointer(pointer);
};

const onPointerDown = (pointer: DrawnixPointerType) => {
setCreationMode(board, BoardCreationMode.dnd);
BoardTransforms.updatePointerType(board, pointer);
Expand Down Expand Up @@ -221,11 +218,6 @@ export const CreationToolbar: React.FC<CreationToolbarProps> = ({ setPointer })
checked={isChecked(button)}
title={`${button.title}`}
aria-label={`${button.title}`}
onChange={() => {
if (button.pointer && isBasicPointer(button.pointer)) {
onChange(button.pointer);
}
}}
onPointerDown={() => {
if (button.pointer && !isBasicPointer(button.pointer)) {
onPointerDown(button.pointer);
Expand All @@ -234,6 +226,9 @@ export const CreationToolbar: React.FC<CreationToolbarProps> = ({ setPointer })
onPointerUp={() => {
if (button.pointer && !isBasicPointer(button.pointer)) {
onPointerUp();
} else if (button.pointer && isBasicPointer(button.pointer)) {
BoardTransforms.updatePointerType(board, button.pointer);
setPointer(button.pointer);
}
}}
/>
Expand Down
2 changes: 1 addition & 1 deletion packages/react-board/src/board.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ export const Board: React.FC<PlaitBoardProps> = ({
};
}, []);

useBoardPluginEvent(board, hostRef);
useBoardPluginEvent(board, viewportContainerRef, hostRef);
useBoardEvent(board, viewportContainerRef);

return (
Expand Down
48 changes: 5 additions & 43 deletions packages/react-board/src/hooks/use-plugin-event.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,15 @@ import {
hasInputOrTextareaTarget,
setFragment,
toHostPoint,
toViewBoxPoint
toViewBoxPoint,
} from '@plait/core';
import { useEventListener } from 'ahooks';

const useBoardPluginEvent = (
board: PlaitBoard,
viewportContainerRef: React.RefObject<HTMLDivElement>,
hostRef: React.RefObject<SVGSVGElement>
) => {
useEventListener(
'mousedown',
(event) => {
board.mousedown(event);
},
{ target: hostRef }
);

useEventListener(
'pointerdown',
(event) => {
Expand All @@ -32,31 +25,13 @@ const useBoardPluginEvent = (
{ target: hostRef }
);

useEventListener(
'mousemove',
(event) => {
BOARD_TO_MOVING_POINT_IN_BOARD.set(board, [event.x, event.y]);
board.mousemove(event);
},
{ target: hostRef }
);

useEventListener(
'pointermove',
(event) => {
BOARD_TO_MOVING_POINT_IN_BOARD.set(board, [event.x, event.y]);
board.pointerMove(event);
},
{ target: hostRef }
);

useEventListener(
'mouseleave',
(event) => {
BOARD_TO_MOVING_POINT_IN_BOARD.delete(board);
board.mouseleave(event);
},
{ target: hostRef }
{ target: viewportContainerRef }
);

useEventListener(
Expand All @@ -65,23 +40,15 @@ const useBoardPluginEvent = (
BOARD_TO_MOVING_POINT_IN_BOARD.delete(board);
board.pointerLeave(event);
},
{ target: hostRef }
);

useEventListener(
'mouseup',
(event) => {
board.mouseup(event);
},
{ target: hostRef }
{ target: viewportContainerRef }
);

useEventListener(
'pointerup',
(event) => {
board.pointerUp(event);
},
{ target: hostRef }
{ target: viewportContainerRef }
);

useEventListener(
Expand All @@ -94,11 +61,6 @@ const useBoardPluginEvent = (
{ target: hostRef }
);

useEventListener('mousemove', (event) => {
BOARD_TO_MOVING_POINT.set(board, [event.x, event.y]);
board.globalMousemove(event);
});

useEventListener('pointermove', (event) => {
BOARD_TO_MOVING_POINT.set(board, [event.x, event.y]);
board.globalPointerMove(event);
Expand Down

0 comments on commit 54b036b

Please sign in to comment.