@archireport/react-native-drawing 0.2.0
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 +181 -0
- package/lib/commonjs/DrawingEditor.js +815 -0
- package/lib/commonjs/DrawingEditor.js.map +1 -0
- package/lib/commonjs/assets/toolbar-icons/arrow-disabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/arrow-enabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/arrow.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/circle-disabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/circle-enabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/circle.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/freehand-disabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/freehand-enabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/freehand.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/line-disabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/line-enabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/line.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/measure-disabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/measure-enabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/measure.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/move-disabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/move-enabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/move.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/polygon-disabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/polygon-enabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/polygon.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/rectangle-disabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/rectangle-enabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/rectangle.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/text-disabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/text-enabled.png +0 -0
- package/lib/commonjs/assets/toolbar-icons/text.png +0 -0
- package/lib/commonjs/components/ColorPalette.js +379 -0
- package/lib/commonjs/components/ColorPalette.js.map +1 -0
- package/lib/commonjs/components/LineWidthSlider.js +70 -0
- package/lib/commonjs/components/LineWidthSlider.js.map +1 -0
- package/lib/commonjs/components/MeasurementEditModal.js +153 -0
- package/lib/commonjs/components/MeasurementEditModal.js.map +1 -0
- package/lib/commonjs/components/MiniMap.js +244 -0
- package/lib/commonjs/components/MiniMap.js.map +1 -0
- package/lib/commonjs/components/TextAnnotation.js +162 -0
- package/lib/commonjs/components/TextAnnotation.js.map +1 -0
- package/lib/commonjs/components/TextEditModal.js +133 -0
- package/lib/commonjs/components/TextEditModal.js.map +1 -0
- package/lib/commonjs/components/Toolbar.js +198 -0
- package/lib/commonjs/components/Toolbar.js.map +1 -0
- package/lib/commonjs/components/ZoomBadge.js +161 -0
- package/lib/commonjs/components/ZoomBadge.js.map +1 -0
- package/lib/commonjs/hooks/useFreehandGesture.js +173 -0
- package/lib/commonjs/hooks/useFreehandGesture.js.map +1 -0
- package/lib/commonjs/hooks/usePolygonGesture.js +109 -0
- package/lib/commonjs/hooks/usePolygonGesture.js.map +1 -0
- package/lib/commonjs/hooks/useSelectionGesture.js +236 -0
- package/lib/commonjs/hooks/useSelectionGesture.js.map +1 -0
- package/lib/commonjs/hooks/useShapeGesture.js +181 -0
- package/lib/commonjs/hooks/useShapeGesture.js.map +1 -0
- package/lib/commonjs/hooks/useViewportGesture.js +238 -0
- package/lib/commonjs/hooks/useViewportGesture.js.map +1 -0
- package/lib/commonjs/index.js +104 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/renderers/ArrowRenderer.js +118 -0
- package/lib/commonjs/renderers/ArrowRenderer.js.map +1 -0
- package/lib/commonjs/renderers/CircleRenderer.js +51 -0
- package/lib/commonjs/renderers/CircleRenderer.js.map +1 -0
- package/lib/commonjs/renderers/FreehandRenderer.js +31 -0
- package/lib/commonjs/renderers/FreehandRenderer.js.map +1 -0
- package/lib/commonjs/renderers/InProgressRenderer.js +174 -0
- package/lib/commonjs/renderers/InProgressRenderer.js.map +1 -0
- package/lib/commonjs/renderers/LineRenderer.js +27 -0
- package/lib/commonjs/renderers/LineRenderer.js.map +1 -0
- package/lib/commonjs/renderers/MeasurementRenderer.js +134 -0
- package/lib/commonjs/renderers/MeasurementRenderer.js.map +1 -0
- package/lib/commonjs/renderers/ObjectRenderer.js +65 -0
- package/lib/commonjs/renderers/ObjectRenderer.js.map +1 -0
- package/lib/commonjs/renderers/PolygonRenderer.js +46 -0
- package/lib/commonjs/renderers/PolygonRenderer.js.map +1 -0
- package/lib/commonjs/renderers/RectRenderer.js +51 -0
- package/lib/commonjs/renderers/RectRenderer.js.map +1 -0
- package/lib/commonjs/renderers/SelectedObjectRenderer.js +592 -0
- package/lib/commonjs/renderers/SelectedObjectRenderer.js.map +1 -0
- package/lib/commonjs/renderers/SelectionOverlay.js +120 -0
- package/lib/commonjs/renderers/SelectionOverlay.js.map +1 -0
- package/lib/commonjs/store/useDrawingStore.js +354 -0
- package/lib/commonjs/store/useDrawingStore.js.map +1 -0
- package/lib/commonjs/types.js +6 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/utils/colors.js +44 -0
- package/lib/commonjs/utils/colors.js.map +1 -0
- package/lib/commonjs/utils/coordinates.js +81 -0
- package/lib/commonjs/utils/coordinates.js.map +1 -0
- package/lib/commonjs/utils/hitTesting.js +181 -0
- package/lib/commonjs/utils/hitTesting.js.map +1 -0
- package/lib/commonjs/utils/serialization.js +42 -0
- package/lib/commonjs/utils/serialization.js.map +1 -0
- package/lib/commonjs/utils/shapeDetection.js +151 -0
- package/lib/commonjs/utils/shapeDetection.js.map +1 -0
- package/lib/commonjs/utils/smoothing.js +85 -0
- package/lib/commonjs/utils/smoothing.js.map +1 -0
- package/lib/module/DrawingEditor.js +811 -0
- package/lib/module/DrawingEditor.js.map +1 -0
- package/lib/module/assets/toolbar-icons/arrow-disabled.png +0 -0
- package/lib/module/assets/toolbar-icons/arrow-enabled.png +0 -0
- package/lib/module/assets/toolbar-icons/arrow.png +0 -0
- package/lib/module/assets/toolbar-icons/circle-disabled.png +0 -0
- package/lib/module/assets/toolbar-icons/circle-enabled.png +0 -0
- package/lib/module/assets/toolbar-icons/circle.png +0 -0
- package/lib/module/assets/toolbar-icons/freehand-disabled.png +0 -0
- package/lib/module/assets/toolbar-icons/freehand-enabled.png +0 -0
- package/lib/module/assets/toolbar-icons/freehand.png +0 -0
- package/lib/module/assets/toolbar-icons/line-disabled.png +0 -0
- package/lib/module/assets/toolbar-icons/line-enabled.png +0 -0
- package/lib/module/assets/toolbar-icons/line.png +0 -0
- package/lib/module/assets/toolbar-icons/measure-disabled.png +0 -0
- package/lib/module/assets/toolbar-icons/measure-enabled.png +0 -0
- package/lib/module/assets/toolbar-icons/measure.png +0 -0
- package/lib/module/assets/toolbar-icons/move-disabled.png +0 -0
- package/lib/module/assets/toolbar-icons/move-enabled.png +0 -0
- package/lib/module/assets/toolbar-icons/move.png +0 -0
- package/lib/module/assets/toolbar-icons/polygon-disabled.png +0 -0
- package/lib/module/assets/toolbar-icons/polygon-enabled.png +0 -0
- package/lib/module/assets/toolbar-icons/polygon.png +0 -0
- package/lib/module/assets/toolbar-icons/rectangle-disabled.png +0 -0
- package/lib/module/assets/toolbar-icons/rectangle-enabled.png +0 -0
- package/lib/module/assets/toolbar-icons/rectangle.png +0 -0
- package/lib/module/assets/toolbar-icons/text-disabled.png +0 -0
- package/lib/module/assets/toolbar-icons/text-enabled.png +0 -0
- package/lib/module/assets/toolbar-icons/text.png +0 -0
- package/lib/module/components/ColorPalette.js +374 -0
- package/lib/module/components/ColorPalette.js.map +1 -0
- package/lib/module/components/LineWidthSlider.js +64 -0
- package/lib/module/components/LineWidthSlider.js.map +1 -0
- package/lib/module/components/MeasurementEditModal.js +148 -0
- package/lib/module/components/MeasurementEditModal.js.map +1 -0
- package/lib/module/components/MiniMap.js +239 -0
- package/lib/module/components/MiniMap.js.map +1 -0
- package/lib/module/components/TextAnnotation.js +157 -0
- package/lib/module/components/TextAnnotation.js.map +1 -0
- package/lib/module/components/TextEditModal.js +128 -0
- package/lib/module/components/TextEditModal.js.map +1 -0
- package/lib/module/components/Toolbar.js +193 -0
- package/lib/module/components/Toolbar.js.map +1 -0
- package/lib/module/components/ZoomBadge.js +155 -0
- package/lib/module/components/ZoomBadge.js.map +1 -0
- package/lib/module/hooks/useFreehandGesture.js +169 -0
- package/lib/module/hooks/useFreehandGesture.js.map +1 -0
- package/lib/module/hooks/usePolygonGesture.js +106 -0
- package/lib/module/hooks/usePolygonGesture.js.map +1 -0
- package/lib/module/hooks/useSelectionGesture.js +232 -0
- package/lib/module/hooks/useSelectionGesture.js.map +1 -0
- package/lib/module/hooks/useShapeGesture.js +177 -0
- package/lib/module/hooks/useShapeGesture.js.map +1 -0
- package/lib/module/hooks/useViewportGesture.js +234 -0
- package/lib/module/hooks/useViewportGesture.js.map +1 -0
- package/lib/module/index.js +20 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/renderers/ArrowRenderer.js +113 -0
- package/lib/module/renderers/ArrowRenderer.js.map +1 -0
- package/lib/module/renderers/CircleRenderer.js +46 -0
- package/lib/module/renderers/CircleRenderer.js.map +1 -0
- package/lib/module/renderers/FreehandRenderer.js +26 -0
- package/lib/module/renderers/FreehandRenderer.js.map +1 -0
- package/lib/module/renderers/InProgressRenderer.js +169 -0
- package/lib/module/renderers/InProgressRenderer.js.map +1 -0
- package/lib/module/renderers/LineRenderer.js +22 -0
- package/lib/module/renderers/LineRenderer.js.map +1 -0
- package/lib/module/renderers/MeasurementRenderer.js +129 -0
- package/lib/module/renderers/MeasurementRenderer.js.map +1 -0
- package/lib/module/renderers/ObjectRenderer.js +60 -0
- package/lib/module/renderers/ObjectRenderer.js.map +1 -0
- package/lib/module/renderers/PolygonRenderer.js +41 -0
- package/lib/module/renderers/PolygonRenderer.js.map +1 -0
- package/lib/module/renderers/RectRenderer.js +46 -0
- package/lib/module/renderers/RectRenderer.js.map +1 -0
- package/lib/module/renderers/SelectedObjectRenderer.js +587 -0
- package/lib/module/renderers/SelectedObjectRenderer.js.map +1 -0
- package/lib/module/renderers/SelectionOverlay.js +116 -0
- package/lib/module/renderers/SelectionOverlay.js.map +1 -0
- package/lib/module/store/useDrawingStore.js +350 -0
- package/lib/module/store/useDrawingStore.js.map +1 -0
- package/lib/module/types.js +4 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/utils/colors.js +40 -0
- package/lib/module/utils/colors.js.map +1 -0
- package/lib/module/utils/coordinates.js +71 -0
- package/lib/module/utils/coordinates.js.map +1 -0
- package/lib/module/utils/hitTesting.js +171 -0
- package/lib/module/utils/hitTesting.js.map +1 -0
- package/lib/module/utils/serialization.js +36 -0
- package/lib/module/utils/serialization.js.map +1 -0
- package/lib/module/utils/shapeDetection.js +147 -0
- package/lib/module/utils/shapeDetection.js.map +1 -0
- package/lib/module/utils/smoothing.js +80 -0
- package/lib/module/utils/smoothing.js.map +1 -0
- package/lib/typescript/DrawingEditor.d.ts +3 -0
- package/lib/typescript/DrawingEditor.d.ts.map +1 -0
- package/lib/typescript/components/ColorPalette.d.ts +9 -0
- package/lib/typescript/components/ColorPalette.d.ts.map +1 -0
- package/lib/typescript/components/LineWidthSlider.d.ts +11 -0
- package/lib/typescript/components/LineWidthSlider.d.ts.map +1 -0
- package/lib/typescript/components/MeasurementEditModal.d.ts +11 -0
- package/lib/typescript/components/MeasurementEditModal.d.ts.map +1 -0
- package/lib/typescript/components/MiniMap.d.ts +23 -0
- package/lib/typescript/components/MiniMap.d.ts.map +1 -0
- package/lib/typescript/components/TextAnnotation.d.ts +22 -0
- package/lib/typescript/components/TextAnnotation.d.ts.map +1 -0
- package/lib/typescript/components/TextEditModal.d.ts +10 -0
- package/lib/typescript/components/TextEditModal.d.ts.map +1 -0
- package/lib/typescript/components/Toolbar.d.ts +13 -0
- package/lib/typescript/components/Toolbar.d.ts.map +1 -0
- package/lib/typescript/components/ZoomBadge.d.ts +9 -0
- package/lib/typescript/components/ZoomBadge.d.ts.map +1 -0
- package/lib/typescript/hooks/useFreehandGesture.d.ts +47 -0
- package/lib/typescript/hooks/useFreehandGesture.d.ts.map +1 -0
- package/lib/typescript/hooks/usePolygonGesture.d.ts +47 -0
- package/lib/typescript/hooks/usePolygonGesture.d.ts.map +1 -0
- package/lib/typescript/hooks/useSelectionGesture.d.ts +32 -0
- package/lib/typescript/hooks/useSelectionGesture.d.ts.map +1 -0
- package/lib/typescript/hooks/useShapeGesture.d.ts +54 -0
- package/lib/typescript/hooks/useShapeGesture.d.ts.map +1 -0
- package/lib/typescript/hooks/useViewportGesture.d.ts +37 -0
- package/lib/typescript/hooks/useViewportGesture.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +11 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/renderers/ArrowRenderer.d.ts +9 -0
- package/lib/typescript/renderers/ArrowRenderer.d.ts.map +1 -0
- package/lib/typescript/renderers/CircleRenderer.d.ts +9 -0
- package/lib/typescript/renderers/CircleRenderer.d.ts.map +1 -0
- package/lib/typescript/renderers/FreehandRenderer.d.ts +9 -0
- package/lib/typescript/renderers/FreehandRenderer.d.ts.map +1 -0
- package/lib/typescript/renderers/InProgressRenderer.d.ts +32 -0
- package/lib/typescript/renderers/InProgressRenderer.d.ts.map +1 -0
- package/lib/typescript/renderers/LineRenderer.d.ts +9 -0
- package/lib/typescript/renderers/LineRenderer.d.ts.map +1 -0
- package/lib/typescript/renderers/MeasurementRenderer.d.ts +9 -0
- package/lib/typescript/renderers/MeasurementRenderer.d.ts.map +1 -0
- package/lib/typescript/renderers/ObjectRenderer.d.ts +12 -0
- package/lib/typescript/renderers/ObjectRenderer.d.ts.map +1 -0
- package/lib/typescript/renderers/PolygonRenderer.d.ts +13 -0
- package/lib/typescript/renderers/PolygonRenderer.d.ts.map +1 -0
- package/lib/typescript/renderers/RectRenderer.d.ts +9 -0
- package/lib/typescript/renderers/RectRenderer.d.ts.map +1 -0
- package/lib/typescript/renderers/SelectedObjectRenderer.d.ts +18 -0
- package/lib/typescript/renderers/SelectedObjectRenderer.d.ts.map +1 -0
- package/lib/typescript/renderers/SelectionOverlay.d.ts +21 -0
- package/lib/typescript/renderers/SelectionOverlay.d.ts.map +1 -0
- package/lib/typescript/store/useDrawingStore.d.ts +30 -0
- package/lib/typescript/store/useDrawingStore.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +130 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/lib/typescript/utils/colors.d.ts +11 -0
- package/lib/typescript/utils/colors.d.ts.map +1 -0
- package/lib/typescript/utils/coordinates.d.ts +34 -0
- package/lib/typescript/utils/coordinates.d.ts.map +1 -0
- package/lib/typescript/utils/hitTesting.d.ts +18 -0
- package/lib/typescript/utils/hitTesting.d.ts.map +1 -0
- package/lib/typescript/utils/serialization.d.ts +17 -0
- package/lib/typescript/utils/serialization.d.ts.map +1 -0
- package/lib/typescript/utils/shapeDetection.d.ts +22 -0
- package/lib/typescript/utils/shapeDetection.d.ts.map +1 -0
- package/lib/typescript/utils/smoothing.d.ts +16 -0
- package/lib/typescript/utils/smoothing.d.ts.map +1 -0
- package/package.json +108 -0
- package/src/DrawingEditor.tsx +1071 -0
- package/src/assets/toolbar-icons/arrow-disabled.png +0 -0
- package/src/assets/toolbar-icons/arrow-enabled.png +0 -0
- package/src/assets/toolbar-icons/arrow.png +0 -0
- package/src/assets/toolbar-icons/circle-disabled.png +0 -0
- package/src/assets/toolbar-icons/circle-enabled.png +0 -0
- package/src/assets/toolbar-icons/circle.png +0 -0
- package/src/assets/toolbar-icons/freehand-disabled.png +0 -0
- package/src/assets/toolbar-icons/freehand-enabled.png +0 -0
- package/src/assets/toolbar-icons/freehand.png +0 -0
- package/src/assets/toolbar-icons/line-disabled.png +0 -0
- package/src/assets/toolbar-icons/line-enabled.png +0 -0
- package/src/assets/toolbar-icons/line.png +0 -0
- package/src/assets/toolbar-icons/measure-disabled.png +0 -0
- package/src/assets/toolbar-icons/measure-enabled.png +0 -0
- package/src/assets/toolbar-icons/measure.png +0 -0
- package/src/assets/toolbar-icons/move-disabled.png +0 -0
- package/src/assets/toolbar-icons/move-enabled.png +0 -0
- package/src/assets/toolbar-icons/move.png +0 -0
- package/src/assets/toolbar-icons/polygon-disabled.png +0 -0
- package/src/assets/toolbar-icons/polygon-enabled.png +0 -0
- package/src/assets/toolbar-icons/polygon.png +0 -0
- package/src/assets/toolbar-icons/rectangle-disabled.png +0 -0
- package/src/assets/toolbar-icons/rectangle-enabled.png +0 -0
- package/src/assets/toolbar-icons/rectangle.png +0 -0
- package/src/assets/toolbar-icons/text-disabled.png +0 -0
- package/src/assets/toolbar-icons/text-enabled.png +0 -0
- package/src/assets/toolbar-icons/text.png +0 -0
- package/src/components/ColorPalette.tsx +497 -0
- package/src/components/LineWidthSlider.tsx +87 -0
- package/src/components/MeasurementEditModal.tsx +163 -0
- package/src/components/MiniMap.tsx +275 -0
- package/src/components/TextAnnotation.tsx +198 -0
- package/src/components/TextEditModal.tsx +139 -0
- package/src/components/Toolbar.tsx +254 -0
- package/src/components/ZoomBadge.tsx +166 -0
- package/src/hooks/useFreehandGesture.ts +249 -0
- package/src/hooks/usePolygonGesture.ts +162 -0
- package/src/hooks/useSelectionGesture.ts +293 -0
- package/src/hooks/useShapeGesture.ts +256 -0
- package/src/hooks/useViewportGesture.ts +337 -0
- package/src/index.tsx +51 -0
- package/src/renderers/ArrowRenderer.tsx +123 -0
- package/src/renderers/CircleRenderer.tsx +60 -0
- package/src/renderers/FreehandRenderer.tsx +33 -0
- package/src/renderers/InProgressRenderer.tsx +217 -0
- package/src/renderers/LineRenderer.tsx +34 -0
- package/src/renderers/MeasurementRenderer.tsx +179 -0
- package/src/renderers/ObjectRenderer.tsx +42 -0
- package/src/renderers/PolygonRenderer.tsx +66 -0
- package/src/renderers/RectRenderer.tsx +60 -0
- package/src/renderers/SelectedObjectRenderer.tsx +738 -0
- package/src/renderers/SelectionOverlay.tsx +170 -0
- package/src/store/useDrawingStore.ts +357 -0
- package/src/types.ts +186 -0
- package/src/utils/colors.ts +98 -0
- package/src/utils/coordinates.ts +75 -0
- package/src/utils/hitTesting.ts +242 -0
- package/src/utils/serialization.ts +45 -0
- package/src/utils/shapeDetection.ts +160 -0
- package/src/utils/smoothing.ts +84 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useShapeGesture = useShapeGesture;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _reactNativeGestureHandler = require("react-native-gesture-handler");
|
|
9
|
+
var _reactNativeReanimated = require("react-native-reanimated");
|
|
10
|
+
var _coordinates = require("../utils/coordinates");
|
|
11
|
+
var _serialization = require("../utils/serialization");
|
|
12
|
+
var _useDrawingStore = require("../store/useDrawingStore");
|
|
13
|
+
const MIN_GESTURE_DURATION_MS = 300;
|
|
14
|
+
const MIN_GESTURE_DISTANCE = 5;
|
|
15
|
+
function useShapeGesture({
|
|
16
|
+
shapeType,
|
|
17
|
+
colorSV,
|
|
18
|
+
lineWidthSV,
|
|
19
|
+
fillColorSV,
|
|
20
|
+
fillAlphaSV,
|
|
21
|
+
canvasSize,
|
|
22
|
+
enabled,
|
|
23
|
+
imageOffsetX,
|
|
24
|
+
imageOffsetY,
|
|
25
|
+
imageWidth,
|
|
26
|
+
imageHeight,
|
|
27
|
+
viewScale,
|
|
28
|
+
viewTranslateX,
|
|
29
|
+
viewTranslateY,
|
|
30
|
+
onMeasureCreated
|
|
31
|
+
}) {
|
|
32
|
+
// Shared values for the in-progress shape (pixel coords)
|
|
33
|
+
const startX = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
34
|
+
const startY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
35
|
+
const currentX = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
36
|
+
const currentY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
37
|
+
const isDrawing = (0, _reactNativeReanimated.useSharedValue)(false);
|
|
38
|
+
const gestureStartTime = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
39
|
+
const addObject = (0, _useDrawingStore.useDrawingStore)(s => s.addObject);
|
|
40
|
+
const inProgressColor = (0, _reactNativeReanimated.useDerivedValue)(() => colorSV.value);
|
|
41
|
+
const inProgressWidth = (0, _reactNativeReanimated.useDerivedValue)(() => lineWidthSV.value);
|
|
42
|
+
const inProgressFillColor = (0, _reactNativeReanimated.useDerivedValue)(() => fillColorSV.value);
|
|
43
|
+
const inProgressFillAlpha = (0, _reactNativeReanimated.useDerivedValue)(() => fillAlphaSV.value);
|
|
44
|
+
const commitShape = (0, _react.useCallback)((sx, sy, ex, ey, color, lineWidth, fillColor, fillAlpha) => {
|
|
45
|
+
const from = (0, _coordinates.normalize)({
|
|
46
|
+
x: sx,
|
|
47
|
+
y: sy
|
|
48
|
+
}, canvasSize);
|
|
49
|
+
const to = (0, _coordinates.normalize)({
|
|
50
|
+
x: ex,
|
|
51
|
+
y: ey
|
|
52
|
+
}, canvasSize);
|
|
53
|
+
let obj;
|
|
54
|
+
switch (shapeType) {
|
|
55
|
+
case "line":
|
|
56
|
+
obj = {
|
|
57
|
+
id: (0, _serialization.generateId)(),
|
|
58
|
+
type: "line",
|
|
59
|
+
from,
|
|
60
|
+
to,
|
|
61
|
+
color,
|
|
62
|
+
lineWidth
|
|
63
|
+
};
|
|
64
|
+
break;
|
|
65
|
+
case "arrow":
|
|
66
|
+
obj = {
|
|
67
|
+
id: (0, _serialization.generateId)(),
|
|
68
|
+
type: "arrow",
|
|
69
|
+
from,
|
|
70
|
+
to,
|
|
71
|
+
color,
|
|
72
|
+
lineWidth
|
|
73
|
+
};
|
|
74
|
+
break;
|
|
75
|
+
case "rectangle":
|
|
76
|
+
obj = {
|
|
77
|
+
id: (0, _serialization.generateId)(),
|
|
78
|
+
type: "rectangle",
|
|
79
|
+
from,
|
|
80
|
+
to,
|
|
81
|
+
color,
|
|
82
|
+
lineWidth,
|
|
83
|
+
backgroundColor: fillColor ?? undefined,
|
|
84
|
+
backgroundAlpha: fillColor ? fillAlpha : undefined
|
|
85
|
+
};
|
|
86
|
+
break;
|
|
87
|
+
case "circle":
|
|
88
|
+
obj = {
|
|
89
|
+
id: (0, _serialization.generateId)(),
|
|
90
|
+
type: "circle",
|
|
91
|
+
from,
|
|
92
|
+
to,
|
|
93
|
+
color,
|
|
94
|
+
lineWidth,
|
|
95
|
+
backgroundColor: fillColor ?? undefined,
|
|
96
|
+
backgroundAlpha: fillColor ? fillAlpha : undefined
|
|
97
|
+
};
|
|
98
|
+
break;
|
|
99
|
+
case "measure":
|
|
100
|
+
{
|
|
101
|
+
const measureId = (0, _serialization.generateId)();
|
|
102
|
+
obj = {
|
|
103
|
+
id: measureId,
|
|
104
|
+
type: "measure",
|
|
105
|
+
from,
|
|
106
|
+
to,
|
|
107
|
+
color,
|
|
108
|
+
lineWidth,
|
|
109
|
+
text: "",
|
|
110
|
+
unit: "cm",
|
|
111
|
+
measureStyle: 0
|
|
112
|
+
};
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
addObject(obj);
|
|
117
|
+
if (shapeType === "measure" && onMeasureCreated) {
|
|
118
|
+
onMeasureCreated(obj.id);
|
|
119
|
+
}
|
|
120
|
+
}, [canvasSize, shapeType, addObject, onMeasureCreated]);
|
|
121
|
+
const gesture = _reactNativeGestureHandler.Gesture.Pan().enabled(enabled).maxPointers(1).minDistance(0).onBegin(e => {
|
|
122
|
+
"worklet";
|
|
123
|
+
|
|
124
|
+
const canvas = (0, _coordinates.screenToCanvas)(e.x, e.y, viewScale.value, viewTranslateX.value, viewTranslateY.value);
|
|
125
|
+
const x = Math.max(0, Math.min(imageWidth.value, canvas.x - imageOffsetX.value));
|
|
126
|
+
const y = Math.max(0, Math.min(imageHeight.value, canvas.y - imageOffsetY.value));
|
|
127
|
+
isDrawing.value = true;
|
|
128
|
+
gestureStartTime.value = Date.now();
|
|
129
|
+
startX.value = x;
|
|
130
|
+
startY.value = y;
|
|
131
|
+
currentX.value = x;
|
|
132
|
+
currentY.value = y;
|
|
133
|
+
}).onUpdate(e => {
|
|
134
|
+
"worklet";
|
|
135
|
+
|
|
136
|
+
const canvas = (0, _coordinates.screenToCanvas)(e.x, e.y, viewScale.value, viewTranslateX.value, viewTranslateY.value);
|
|
137
|
+
currentX.value = Math.max(0, Math.min(imageWidth.value, canvas.x - imageOffsetX.value));
|
|
138
|
+
currentY.value = Math.max(0, Math.min(imageHeight.value, canvas.y - imageOffsetY.value));
|
|
139
|
+
}).onEnd(e => {
|
|
140
|
+
"worklet";
|
|
141
|
+
|
|
142
|
+
const canvas = (0, _coordinates.screenToCanvas)(e.x, e.y, viewScale.value, viewTranslateX.value, viewTranslateY.value);
|
|
143
|
+
const clampedX = Math.max(0, Math.min(imageWidth.value, canvas.x - imageOffsetX.value));
|
|
144
|
+
const clampedY = Math.max(0, Math.min(imageHeight.value, canvas.y - imageOffsetY.value));
|
|
145
|
+
const duration = Date.now() - gestureStartTime.value;
|
|
146
|
+
const dx = clampedX - startX.value;
|
|
147
|
+
const dy = clampedY - startY.value;
|
|
148
|
+
const dist = Math.sqrt(dx * dx + dy * dy);
|
|
149
|
+
if (duration < MIN_GESTURE_DURATION_MS && dist < MIN_GESTURE_DISTANCE) {
|
|
150
|
+
isDrawing.value = false;
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
const sx = startX.value;
|
|
154
|
+
const sy = startY.value;
|
|
155
|
+
const ex = currentX.value;
|
|
156
|
+
const ey = currentY.value;
|
|
157
|
+
const color = colorSV.value;
|
|
158
|
+
const lw = lineWidthSV.value;
|
|
159
|
+
const fc = fillColorSV.value;
|
|
160
|
+
const fa = fillAlphaSV.value;
|
|
161
|
+
isDrawing.value = false;
|
|
162
|
+
(0, _reactNativeReanimated.runOnJS)(commitShape)(sx, sy, ex, ey, color, lw, fc, fa);
|
|
163
|
+
}).onFinalize(() => {
|
|
164
|
+
"worklet";
|
|
165
|
+
|
|
166
|
+
isDrawing.value = false;
|
|
167
|
+
});
|
|
168
|
+
return {
|
|
169
|
+
gesture,
|
|
170
|
+
startX,
|
|
171
|
+
startY,
|
|
172
|
+
currentX,
|
|
173
|
+
currentY,
|
|
174
|
+
isDrawing,
|
|
175
|
+
inProgressColor,
|
|
176
|
+
inProgressWidth,
|
|
177
|
+
inProgressFillColor,
|
|
178
|
+
inProgressFillAlpha
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=useShapeGesture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNativeGestureHandler","_reactNativeReanimated","_coordinates","_serialization","_useDrawingStore","MIN_GESTURE_DURATION_MS","MIN_GESTURE_DISTANCE","useShapeGesture","shapeType","colorSV","lineWidthSV","fillColorSV","fillAlphaSV","canvasSize","enabled","imageOffsetX","imageOffsetY","imageWidth","imageHeight","viewScale","viewTranslateX","viewTranslateY","onMeasureCreated","startX","useSharedValue","startY","currentX","currentY","isDrawing","gestureStartTime","addObject","useDrawingStore","s","inProgressColor","useDerivedValue","value","inProgressWidth","inProgressFillColor","inProgressFillAlpha","commitShape","useCallback","sx","sy","ex","ey","color","lineWidth","fillColor","fillAlpha","from","normalize","x","y","to","obj","id","generateId","type","backgroundColor","undefined","backgroundAlpha","measureId","text","unit","measureStyle","gesture","Gesture","Pan","maxPointers","minDistance","onBegin","e","canvas","screenToCanvas","Math","max","min","Date","now","onUpdate","onEnd","clampedX","clampedY","duration","dx","dy","dist","sqrt","lw","fc","fa","runOnJS","onFinalize"],"sourceRoot":"../../../src","sources":["hooks/useShapeGesture.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useViewportGesture = useViewportGesture;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _reactNativeGestureHandler = require("react-native-gesture-handler");
|
|
9
|
+
var _reactNativeReanimated = require("react-native-reanimated");
|
|
10
|
+
const DEFAULT_MAX_ZOOM = 5;
|
|
11
|
+
const RESET_DURATION = 250;
|
|
12
|
+
function clampTranslate(tx, ty, scale, _layoutW, _layoutH, imgOffX, imgOffY, imgW, imgH) {
|
|
13
|
+
"worklet";
|
|
14
|
+
|
|
15
|
+
// The image occupies [imgOffX, imgOffY] to [imgOffX+imgW, imgOffY+imgH] in layout space.
|
|
16
|
+
// After zoom, the image spans imgW*scale in canvas coords, displayed from (imgOffX*scale + tx).
|
|
17
|
+
// We want the scaled image to cover its original area:
|
|
18
|
+
// - Left edge of scaled image <= left edge of original area: imgOffX*scale + tx <= imgOffX
|
|
19
|
+
// - Right edge of scaled image >= right edge of original area: imgOffX*scale + tx + imgW*scale >= imgOffX + imgW
|
|
20
|
+
// Simplify:
|
|
21
|
+
// tx <= imgOffX * (1 - scale)
|
|
22
|
+
// tx >= (imgOffX + imgW) * (1 - scale) + (layoutW - imgOffX - imgW) ... no, let's think differently.
|
|
23
|
+
//
|
|
24
|
+
// Viewport model: the canvas is rendered with transform [translate(tx,ty), scale(s)] applied from origin.
|
|
25
|
+
// A point at canvas coords (cx, cy) maps to screen (cx*s + tx, cy*s + ty).
|
|
26
|
+
// Image starts at canvas (imgOffX, imgOffY) with size (imgW, imgH).
|
|
27
|
+
// On screen, image top-left = (imgOffX*s + tx, imgOffY*s + ty).
|
|
28
|
+
// On screen, image bottom-right = ((imgOffX+imgW)*s + tx, (imgOffY+imgH)*s + ty).
|
|
29
|
+
//
|
|
30
|
+
// Constraint: image should fill the original viewport area [imgOffX..imgOffX+imgW] x [imgOffY..imgOffY+imgH]:
|
|
31
|
+
// imgOffX*s + tx <= imgOffX => tx <= imgOffX*(1-s)
|
|
32
|
+
// (imgOffX+imgW)*s + tx >= imgOffX+imgW => tx >= (imgOffX+imgW)*(1-s)
|
|
33
|
+
// same for Y.
|
|
34
|
+
const minTx = (imgOffX + imgW) * (1 - scale);
|
|
35
|
+
const maxTx = imgOffX * (1 - scale);
|
|
36
|
+
const minTy = (imgOffY + imgH) * (1 - scale);
|
|
37
|
+
const maxTy = imgOffY * (1 - scale);
|
|
38
|
+
const clampedTx = Math.min(maxTx, Math.max(minTx, tx));
|
|
39
|
+
const clampedTy = Math.min(maxTy, Math.max(minTy, ty));
|
|
40
|
+
return [clampedTx, clampedTy];
|
|
41
|
+
}
|
|
42
|
+
function useViewportGesture({
|
|
43
|
+
maxZoom = DEFAULT_MAX_ZOOM,
|
|
44
|
+
layoutWidth,
|
|
45
|
+
layoutHeight,
|
|
46
|
+
imageOffsetX,
|
|
47
|
+
imageOffsetY,
|
|
48
|
+
imageWidth,
|
|
49
|
+
imageHeight,
|
|
50
|
+
onPinchEnd
|
|
51
|
+
}) {
|
|
52
|
+
const scale = (0, _reactNativeReanimated.useSharedValue)(1);
|
|
53
|
+
const translateX = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
54
|
+
const translateY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
55
|
+
|
|
56
|
+
// Saved state at gesture start
|
|
57
|
+
const savedScale = (0, _reactNativeReanimated.useSharedValue)(1);
|
|
58
|
+
const savedTranslateX = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
59
|
+
const savedTranslateY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
60
|
+
|
|
61
|
+
// Saved focal point at pinch start (for stable zoom center)
|
|
62
|
+
const savedFocalX = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
63
|
+
const savedFocalY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
64
|
+
|
|
65
|
+
// Flag to prevent 2-finger pan from interfering during pinch
|
|
66
|
+
const isPinching = (0, _reactNativeReanimated.useSharedValue)(false);
|
|
67
|
+
|
|
68
|
+
// ─── Pinch-to-zoom ──────────────────────────────────────────────────────
|
|
69
|
+
const pinchGesture = _reactNativeGestureHandler.Gesture.Pinch().onBegin(e => {
|
|
70
|
+
"worklet";
|
|
71
|
+
|
|
72
|
+
isPinching.value = true;
|
|
73
|
+
savedScale.value = scale.value;
|
|
74
|
+
savedTranslateX.value = translateX.value;
|
|
75
|
+
savedTranslateY.value = translateY.value;
|
|
76
|
+
savedFocalX.value = e.focalX;
|
|
77
|
+
savedFocalY.value = e.focalY;
|
|
78
|
+
}).onUpdate(e => {
|
|
79
|
+
"worklet";
|
|
80
|
+
|
|
81
|
+
const newScale = Math.min(maxZoom, Math.max(1, savedScale.value * e.scale));
|
|
82
|
+
|
|
83
|
+
// Canvas point under initial focal at gesture start:
|
|
84
|
+
const canvasFocalX = (savedFocalX.value - savedTranslateX.value) / savedScale.value;
|
|
85
|
+
const canvasFocalY = (savedFocalY.value - savedTranslateY.value) / savedScale.value;
|
|
86
|
+
|
|
87
|
+
// Pan delta from finger movement since gesture start:
|
|
88
|
+
const focalDeltaX = e.focalX - savedFocalX.value;
|
|
89
|
+
const focalDeltaY = e.focalY - savedFocalY.value;
|
|
90
|
+
|
|
91
|
+
// New translate: zoom around initial focal + follow finger pan
|
|
92
|
+
const newTx = savedFocalX.value - canvasFocalX * newScale + focalDeltaX;
|
|
93
|
+
const newTy = savedFocalY.value - canvasFocalY * newScale + focalDeltaY;
|
|
94
|
+
scale.value = newScale;
|
|
95
|
+
const [cx, cy] = clampTranslate(newTx, newTy, newScale, layoutWidth.value, layoutHeight.value, imageOffsetX.value, imageOffsetY.value, imageWidth.value, imageHeight.value);
|
|
96
|
+
translateX.value = cx;
|
|
97
|
+
translateY.value = cy;
|
|
98
|
+
}).onEnd(() => {
|
|
99
|
+
"worklet";
|
|
100
|
+
|
|
101
|
+
isPinching.value = false;
|
|
102
|
+
if (scale.value <= 1.05) {
|
|
103
|
+
// Snap back to 1x if close enough
|
|
104
|
+
scale.value = (0, _reactNativeReanimated.withTiming)(1, {
|
|
105
|
+
duration: RESET_DURATION
|
|
106
|
+
});
|
|
107
|
+
translateX.value = (0, _reactNativeReanimated.withTiming)(0, {
|
|
108
|
+
duration: RESET_DURATION
|
|
109
|
+
});
|
|
110
|
+
translateY.value = (0, _reactNativeReanimated.withTiming)(0, {
|
|
111
|
+
duration: RESET_DURATION
|
|
112
|
+
});
|
|
113
|
+
} else if (onPinchEnd) {
|
|
114
|
+
// Zoomed in — notify caller so it can deactivate the tool
|
|
115
|
+
(0, _reactNativeReanimated.runOnJS)(onPinchEnd)();
|
|
116
|
+
}
|
|
117
|
+
}).onFinalize(() => {
|
|
118
|
+
"worklet";
|
|
119
|
+
|
|
120
|
+
isPinching.value = false;
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
// ─── Two-finger pan (only when zoomed and NOT pinching) ─────────────────
|
|
124
|
+
const twoFingerPanGesture = _reactNativeGestureHandler.Gesture.Pan().minPointers(2).maxPointers(2).onBegin(() => {
|
|
125
|
+
"worklet";
|
|
126
|
+
|
|
127
|
+
savedTranslateX.value = translateX.value;
|
|
128
|
+
savedTranslateY.value = translateY.value;
|
|
129
|
+
}).onUpdate(e => {
|
|
130
|
+
"worklet";
|
|
131
|
+
|
|
132
|
+
// Skip if pinch is active — pinch handles its own panning
|
|
133
|
+
if (isPinching.value) return;
|
|
134
|
+
if (scale.value <= 1) return;
|
|
135
|
+
const newTx = savedTranslateX.value + e.translationX;
|
|
136
|
+
const newTy = savedTranslateY.value + e.translationY;
|
|
137
|
+
const [cx, cy] = clampTranslate(newTx, newTy, scale.value, layoutWidth.value, layoutHeight.value, imageOffsetX.value, imageOffsetY.value, imageWidth.value, imageHeight.value);
|
|
138
|
+
translateX.value = cx;
|
|
139
|
+
translateY.value = cy;
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
// ─── Single-finger pan (when zoomed with no active tool) ───────────────
|
|
143
|
+
const singleFingerPanGesture = _reactNativeGestureHandler.Gesture.Pan().minPointers(1).maxPointers(1).minDistance(5).onBegin(() => {
|
|
144
|
+
"worklet";
|
|
145
|
+
|
|
146
|
+
savedTranslateX.value = translateX.value;
|
|
147
|
+
savedTranslateY.value = translateY.value;
|
|
148
|
+
}).onUpdate(e => {
|
|
149
|
+
"worklet";
|
|
150
|
+
|
|
151
|
+
if (scale.value <= 1) return;
|
|
152
|
+
const newTx = savedTranslateX.value + e.translationX;
|
|
153
|
+
const newTy = savedTranslateY.value + e.translationY;
|
|
154
|
+
const [cx, cy] = clampTranslate(newTx, newTy, scale.value, layoutWidth.value, layoutHeight.value, imageOffsetX.value, imageOffsetY.value, imageWidth.value, imageHeight.value);
|
|
155
|
+
translateX.value = cx;
|
|
156
|
+
translateY.value = cy;
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
// ─── Double-tap two-finger reset ───────────────────────────────────────
|
|
160
|
+
const doubleTapResetGesture = _reactNativeGestureHandler.Gesture.Tap().numberOfTaps(2).minPointers(2).maxDuration(500).onEnd(() => {
|
|
161
|
+
"worklet";
|
|
162
|
+
|
|
163
|
+
scale.value = (0, _reactNativeReanimated.withTiming)(1, {
|
|
164
|
+
duration: RESET_DURATION
|
|
165
|
+
});
|
|
166
|
+
translateX.value = (0, _reactNativeReanimated.withTiming)(0, {
|
|
167
|
+
duration: RESET_DURATION
|
|
168
|
+
});
|
|
169
|
+
translateY.value = (0, _reactNativeReanimated.withTiming)(0, {
|
|
170
|
+
duration: RESET_DURATION
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// ─── Programmatic reset ────────────────────────────────────────────────
|
|
175
|
+
const resetViewport = (0, _react.useCallback)(() => {
|
|
176
|
+
scale.value = (0, _reactNativeReanimated.withTiming)(1, {
|
|
177
|
+
duration: RESET_DURATION
|
|
178
|
+
});
|
|
179
|
+
translateX.value = (0, _reactNativeReanimated.withTiming)(0, {
|
|
180
|
+
duration: RESET_DURATION
|
|
181
|
+
});
|
|
182
|
+
translateY.value = (0, _reactNativeReanimated.withTiming)(0, {
|
|
183
|
+
duration: RESET_DURATION
|
|
184
|
+
});
|
|
185
|
+
}, [scale, translateX, translateY]);
|
|
186
|
+
const zoomAt = (0, _react.useCallback)((screenX, screenY, scaleFactor) => {
|
|
187
|
+
if (imageWidth.value <= 0 || imageHeight.value <= 0) return;
|
|
188
|
+
const previousScale = scale.value;
|
|
189
|
+
const nextScale = Math.min(maxZoom, Math.max(1, previousScale * scaleFactor));
|
|
190
|
+
if (Math.abs(nextScale - previousScale) < 0.001) return;
|
|
191
|
+
if (nextScale <= 1.05) {
|
|
192
|
+
scale.value = (0, _reactNativeReanimated.withTiming)(1, {
|
|
193
|
+
duration: RESET_DURATION
|
|
194
|
+
});
|
|
195
|
+
translateX.value = (0, _reactNativeReanimated.withTiming)(0, {
|
|
196
|
+
duration: RESET_DURATION
|
|
197
|
+
});
|
|
198
|
+
translateY.value = (0, _reactNativeReanimated.withTiming)(0, {
|
|
199
|
+
duration: RESET_DURATION
|
|
200
|
+
});
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const canvasFocalX = (screenX - translateX.value) / previousScale;
|
|
204
|
+
const canvasFocalY = (screenY - translateY.value) / previousScale;
|
|
205
|
+
const nextTranslateX = screenX - canvasFocalX * nextScale;
|
|
206
|
+
const nextTranslateY = screenY - canvasFocalY * nextScale;
|
|
207
|
+
const [clampedX, clampedY] = clampTranslate(nextTranslateX, nextTranslateY, nextScale, layoutWidth.value, layoutHeight.value, imageOffsetX.value, imageOffsetY.value, imageWidth.value, imageHeight.value);
|
|
208
|
+
scale.value = nextScale;
|
|
209
|
+
translateX.value = clampedX;
|
|
210
|
+
translateY.value = clampedY;
|
|
211
|
+
if (previousScale <= 1.05 && onPinchEnd) {
|
|
212
|
+
onPinchEnd();
|
|
213
|
+
}
|
|
214
|
+
}, [maxZoom, onPinchEnd, scale, translateX, translateY, layoutWidth, layoutHeight, imageOffsetX, imageOffsetY, imageWidth, imageHeight]);
|
|
215
|
+
|
|
216
|
+
// ─── Programmatic pan (for minimap drag) ────────────────────────────────
|
|
217
|
+
const panViewport = (0, _react.useCallback)((dtx, dty) => {
|
|
218
|
+
const newTx = translateX.value + dtx;
|
|
219
|
+
const newTy = translateY.value + dty;
|
|
220
|
+
const [cx, cy] = clampTranslate(newTx, newTy, scale.value, layoutWidth.value, layoutHeight.value, imageOffsetX.value, imageOffsetY.value, imageWidth.value, imageHeight.value);
|
|
221
|
+
translateX.value = cx;
|
|
222
|
+
translateY.value = cy;
|
|
223
|
+
}, [scale, translateX, translateY, layoutWidth, layoutHeight, imageOffsetX, imageOffsetY, imageWidth, imageHeight]);
|
|
224
|
+
return {
|
|
225
|
+
pinchGesture,
|
|
226
|
+
twoFingerPanGesture,
|
|
227
|
+
singleFingerPanGesture,
|
|
228
|
+
doubleTapResetGesture,
|
|
229
|
+
scale,
|
|
230
|
+
translateX,
|
|
231
|
+
translateY,
|
|
232
|
+
isPinching,
|
|
233
|
+
resetViewport,
|
|
234
|
+
panViewport,
|
|
235
|
+
zoomAt
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=useViewportGesture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNativeGestureHandler","_reactNativeReanimated","DEFAULT_MAX_ZOOM","RESET_DURATION","clampTranslate","tx","ty","scale","_layoutW","_layoutH","imgOffX","imgOffY","imgW","imgH","minTx","maxTx","minTy","maxTy","clampedTx","Math","min","max","clampedTy","useViewportGesture","maxZoom","layoutWidth","layoutHeight","imageOffsetX","imageOffsetY","imageWidth","imageHeight","onPinchEnd","useSharedValue","translateX","translateY","savedScale","savedTranslateX","savedTranslateY","savedFocalX","savedFocalY","isPinching","pinchGesture","Gesture","Pinch","onBegin","e","value","focalX","focalY","onUpdate","newScale","canvasFocalX","canvasFocalY","focalDeltaX","focalDeltaY","newTx","newTy","cx","cy","onEnd","withTiming","duration","runOnJS","onFinalize","twoFingerPanGesture","Pan","minPointers","maxPointers","translationX","translationY","singleFingerPanGesture","minDistance","doubleTapResetGesture","Tap","numberOfTaps","maxDuration","resetViewport","useCallback","zoomAt","screenX","screenY","scaleFactor","previousScale","nextScale","abs","nextTranslateX","nextTranslateY","clampedX","clampedY","panViewport","dtx","dty"],"sourceRoot":"../../../src","sources":["hooks/useViewportGesture.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "ColorPalette", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _ColorPalette.ColorPalette;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "DEFAULT_STROKE_COLOR", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _colors.DEFAULT_STROKE_COLOR;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "DrawingEditor", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _DrawingEditor.DrawingEditor;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "LineWidthSlider", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _LineWidthSlider.LineWidthSlider;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "PRESET_COLORS", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _colors.PRESET_COLORS;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "Toolbar", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _Toolbar.Toolbar;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "denormalize", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () {
|
|
45
|
+
return _coordinates.denormalize;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
Object.defineProperty(exports, "denormalizePoints", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () {
|
|
51
|
+
return _coordinates.denormalizePoints;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(exports, "deserializeObjects", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _serialization.deserializeObjects;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
Object.defineProperty(exports, "generateId", {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
get: function () {
|
|
63
|
+
return _serialization.generateId;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(exports, "normalize", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
get: function () {
|
|
69
|
+
return _coordinates.normalize;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
Object.defineProperty(exports, "normalizePoints", {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () {
|
|
75
|
+
return _coordinates.normalizePoints;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
Object.defineProperty(exports, "screenToCanvas", {
|
|
79
|
+
enumerable: true,
|
|
80
|
+
get: function () {
|
|
81
|
+
return _coordinates.screenToCanvas;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
Object.defineProperty(exports, "serializeObjects", {
|
|
85
|
+
enumerable: true,
|
|
86
|
+
get: function () {
|
|
87
|
+
return _serialization.serializeObjects;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
Object.defineProperty(exports, "useDrawingStore", {
|
|
91
|
+
enumerable: true,
|
|
92
|
+
get: function () {
|
|
93
|
+
return _useDrawingStore.useDrawingStore;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
var _DrawingEditor = require("./DrawingEditor");
|
|
97
|
+
var _useDrawingStore = require("./store/useDrawingStore");
|
|
98
|
+
var _coordinates = require("./utils/coordinates");
|
|
99
|
+
var _serialization = require("./utils/serialization");
|
|
100
|
+
var _colors = require("./utils/colors");
|
|
101
|
+
var _Toolbar = require("./components/Toolbar");
|
|
102
|
+
var _ColorPalette = require("./components/ColorPalette");
|
|
103
|
+
var _LineWidthSlider = require("./components/LineWidthSlider");
|
|
104
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_DrawingEditor","require","_useDrawingStore","_coordinates","_serialization","_colors","_Toolbar","_ColorPalette","_LineWidthSlider"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAAA,cAAA,GAAAC,OAAA;AAGA,IAAAC,gBAAA,GAAAD,OAAA;AA6BA,IAAAE,YAAA,GAAAF,OAAA;AAOA,IAAAG,cAAA,GAAAH,OAAA;AAKA,IAAAI,OAAA,GAAAJ,OAAA;AAGA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AACA,IAAAO,gBAAA,GAAAP,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|