@deepnoid/canvas 0.1.79 → 0.1.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -8
- package/dist/engine/annotation/annotationTypes.d.ts +12 -2
- package/dist/engine/annotation/annotationTypes.js +1 -2
- package/dist/engine/annotation/hitTest.d.ts +5 -0
- package/dist/engine/annotation/hitTest.js +63 -0
- package/dist/engine/annotation/polygon/polygonController.d.ts +34 -0
- package/dist/engine/annotation/polygon/polygonController.js +252 -0
- package/dist/engine/annotation/polygon/polygonHitTest.d.ts +6 -0
- package/dist/engine/annotation/polygon/polygonHitTest.js +84 -0
- package/dist/engine/annotation/polygon/polygonInteraction.d.ts +19 -0
- package/dist/engine/annotation/polygon/polygonInteraction.js +36 -0
- package/dist/engine/annotation/polygon/polygonMath.d.ts +7 -0
- package/dist/engine/annotation/polygon/polygonMath.js +47 -0
- package/dist/engine/annotation/polygon/polygonRenderer.d.ts +2 -0
- package/dist/engine/annotation/polygon/polygonRenderer.js +79 -0
- package/dist/engine/annotation/polygon/polygonTransform.d.ts +14 -0
- package/dist/engine/annotation/polygon/polygonTransform.js +68 -0
- package/dist/engine/annotation/polygon/polygonTypes.d.ts +9 -0
- package/dist/engine/annotation/polygon/polygonTypes.js +1 -0
- package/dist/engine/annotation/rectangle/rectangleController.js +27 -16
- package/dist/engine/annotation/rectangle/rectangleHitTest.js +5 -4
- package/dist/engine/annotation/rectangle/rectangleRenderer.js +8 -0
- package/dist/engine/annotation/rectangle/rectangleTransform.js +31 -28
- package/dist/engine/interaction/drawModeRouter.js +47 -27
- package/dist/engine/interaction/interactionController.d.ts +1 -0
- package/dist/engine/interaction/interactionController.js +17 -0
- package/dist/engine/interaction/interface.d.ts +1 -0
- package/dist/engine/interaction/pointerInteraction.js +7 -2
- package/dist/engine/public/annotationEngine.d.ts +3 -1
- package/dist/engine/public/annotationEngine.js +19 -1
- package/dist/react/AnnotationCanvas.js +6 -1
- package/dist/react/hooks/useHotkeys.d.ts +2 -1
- package/dist/react/hooks/useHotkeys.js +4 -2
- package/package.json +1 -1
|
@@ -33,6 +33,7 @@ const AnnotationCanvas = ({ image, annotations = [], setAnnotations, options, dr
|
|
|
33
33
|
onDelete: () => engineRef.current?.deleteSelected(),
|
|
34
34
|
toggleSelectionOnly: () => engineRef.current?.toggleShowSelectedOnly(),
|
|
35
35
|
onUndoRedo: (isRedo) => engineRef.current?.undoRedo(isRedo),
|
|
36
|
+
onEscape: () => engineRef.current?.onKeyDown(new KeyboardEvent('keydown', { key: 'Escape' })),
|
|
36
37
|
enabled: enableHotkeys,
|
|
37
38
|
});
|
|
38
39
|
/* ---------- Image / Engine lifecycle ---------- */
|
|
@@ -160,6 +161,10 @@ const AnnotationCanvas = ({ image, annotations = [], setAnnotations, options, dr
|
|
|
160
161
|
useEffect(() => engineRef.current?.setEditable(editable), [editable]);
|
|
161
162
|
useEffect(() => engineRef.current?.setDrawing(drawing), [drawing]);
|
|
162
163
|
/* ---------- Render ---------- */
|
|
163
|
-
return (_jsx("div", { ref: containerRef, style: { width: '100%', height: '100%', position: 'relative', flex: 1 }, onWheel: (e) => engineRef.current?.onWheel(e.nativeEvent), onMouseDown: (e) => engineRef.current?.onMouseDown(e.nativeEvent), onMouseMove: (e) => engineRef.current?.onMouseMove(e.nativeEvent), onMouseUp: (e) => engineRef.current?.onMouseUp(e.nativeEvent), onMouseLeave: (e) => engineRef.current?.onMouseLeave(e.nativeEvent), onContextMenu: (e) => e.preventDefault(),
|
|
164
|
+
return (_jsx("div", { ref: containerRef, style: { width: '100%', height: '100%', position: 'relative', flex: 1 }, onWheel: (e) => engineRef.current?.onWheel(e.nativeEvent), onMouseDown: (e) => engineRef.current?.onMouseDown(e.nativeEvent), onMouseMove: (e) => engineRef.current?.onMouseMove(e.nativeEvent), onMouseUp: (e) => engineRef.current?.onMouseUp(e.nativeEvent), onMouseLeave: (e) => engineRef.current?.onMouseLeave(e.nativeEvent), onContextMenu: (e) => e.preventDefault(), tabIndex: 0, onKeyDown: (e) => {
|
|
165
|
+
if (e.key === 'Escape' || e.code === 'Escape') {
|
|
166
|
+
engineRef.current?.onKeyDown(e.nativeEvent);
|
|
167
|
+
}
|
|
168
|
+
}, children: ZoomButton && (_jsx(ZoomButton, { onClick: () => engineRef.current?.initImageCanvas(true), children: engineRef.current?.getZoomRatioLabel() })) }));
|
|
164
169
|
};
|
|
165
170
|
export default AnnotationCanvas;
|
|
@@ -2,7 +2,8 @@ type Props = {
|
|
|
2
2
|
onDelete: () => void;
|
|
3
3
|
toggleSelectionOnly: () => void;
|
|
4
4
|
onUndoRedo: (isRedo: boolean) => void;
|
|
5
|
+
onEscape?: () => void;
|
|
5
6
|
enabled?: boolean;
|
|
6
7
|
};
|
|
7
|
-
export declare function useHotkeys({ onDelete, toggleSelectionOnly, onUndoRedo, enabled }: Props): void;
|
|
8
|
+
export declare function useHotkeys({ onDelete, toggleSelectionOnly, onUndoRedo, onEscape, enabled }: Props): void;
|
|
8
9
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
|
-
export function useHotkeys({ onDelete, toggleSelectionOnly, onUndoRedo, enabled = false }) {
|
|
2
|
+
export function useHotkeys({ onDelete, toggleSelectionOnly, onUndoRedo, onEscape, enabled = false }) {
|
|
3
3
|
useEffect(() => {
|
|
4
4
|
if (!enabled)
|
|
5
5
|
return;
|
|
@@ -10,8 +10,10 @@ export function useHotkeys({ onDelete, toggleSelectionOnly, onUndoRedo, enabled
|
|
|
10
10
|
toggleSelectionOnly();
|
|
11
11
|
if (event.code === 'KeyZ' && (event.metaKey || event.ctrlKey))
|
|
12
12
|
onUndoRedo(event.shiftKey);
|
|
13
|
+
if (event.key === 'Escape' || event.code === 'Escape')
|
|
14
|
+
onEscape?.();
|
|
13
15
|
};
|
|
14
16
|
window.addEventListener('keydown', handleKeyDown);
|
|
15
17
|
return () => window.removeEventListener('keydown', handleKeyDown);
|
|
16
|
-
}, [onDelete, toggleSelectionOnly, onUndoRedo, enabled]);
|
|
18
|
+
}, [onDelete, toggleSelectionOnly, onUndoRedo, onEscape, enabled]);
|
|
17
19
|
}
|