@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.
Files changed (34) hide show
  1. package/README.md +19 -8
  2. package/dist/engine/annotation/annotationTypes.d.ts +12 -2
  3. package/dist/engine/annotation/annotationTypes.js +1 -2
  4. package/dist/engine/annotation/hitTest.d.ts +5 -0
  5. package/dist/engine/annotation/hitTest.js +63 -0
  6. package/dist/engine/annotation/polygon/polygonController.d.ts +34 -0
  7. package/dist/engine/annotation/polygon/polygonController.js +252 -0
  8. package/dist/engine/annotation/polygon/polygonHitTest.d.ts +6 -0
  9. package/dist/engine/annotation/polygon/polygonHitTest.js +84 -0
  10. package/dist/engine/annotation/polygon/polygonInteraction.d.ts +19 -0
  11. package/dist/engine/annotation/polygon/polygonInteraction.js +36 -0
  12. package/dist/engine/annotation/polygon/polygonMath.d.ts +7 -0
  13. package/dist/engine/annotation/polygon/polygonMath.js +47 -0
  14. package/dist/engine/annotation/polygon/polygonRenderer.d.ts +2 -0
  15. package/dist/engine/annotation/polygon/polygonRenderer.js +79 -0
  16. package/dist/engine/annotation/polygon/polygonTransform.d.ts +14 -0
  17. package/dist/engine/annotation/polygon/polygonTransform.js +68 -0
  18. package/dist/engine/annotation/polygon/polygonTypes.d.ts +9 -0
  19. package/dist/engine/annotation/polygon/polygonTypes.js +1 -0
  20. package/dist/engine/annotation/rectangle/rectangleController.js +27 -16
  21. package/dist/engine/annotation/rectangle/rectangleHitTest.js +5 -4
  22. package/dist/engine/annotation/rectangle/rectangleRenderer.js +8 -0
  23. package/dist/engine/annotation/rectangle/rectangleTransform.js +31 -28
  24. package/dist/engine/interaction/drawModeRouter.js +47 -27
  25. package/dist/engine/interaction/interactionController.d.ts +1 -0
  26. package/dist/engine/interaction/interactionController.js +17 -0
  27. package/dist/engine/interaction/interface.d.ts +1 -0
  28. package/dist/engine/interaction/pointerInteraction.js +7 -2
  29. package/dist/engine/public/annotationEngine.d.ts +3 -1
  30. package/dist/engine/public/annotationEngine.js +19 -1
  31. package/dist/react/AnnotationCanvas.js +6 -1
  32. package/dist/react/hooks/useHotkeys.d.ts +2 -1
  33. package/dist/react/hooks/useHotkeys.js +4 -2
  34. 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(), children: ZoomButton && (_jsx(ZoomButton, { onClick: () => engineRef.current?.initImageCanvas(true), children: engineRef.current?.getZoomRatioLabel() })) }));
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deepnoid/canvas",
3
- "version": "0.1.79",
3
+ "version": "0.1.81",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.cjs",