react-native-image-editor-skia 0.1.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/LICENSE +21 -0
- package/README.md +202 -0
- package/lib/commonjs/ImageEditor.js +141 -0
- package/lib/commonjs/ImageEditor.js.map +1 -0
- package/lib/commonjs/annotations/AnnotationView.js +42 -0
- package/lib/commonjs/annotations/AnnotationView.js.map +1 -0
- package/lib/commonjs/annotations/ArrowAnnotation.js +29 -0
- package/lib/commonjs/annotations/ArrowAnnotation.js.map +1 -0
- package/lib/commonjs/annotations/CircleAnnotation.js +31 -0
- package/lib/commonjs/annotations/CircleAnnotation.js.map +1 -0
- package/lib/commonjs/annotations/FreehandAnnotation.js +29 -0
- package/lib/commonjs/annotations/FreehandAnnotation.js.map +1 -0
- package/lib/commonjs/annotations/MarkerAnnotation.js +27 -0
- package/lib/commonjs/annotations/MarkerAnnotation.js.map +1 -0
- package/lib/commonjs/annotations/RotatedGroup.js +34 -0
- package/lib/commonjs/annotations/RotatedGroup.js.map +1 -0
- package/lib/commonjs/annotations/TextAnnotation.js +40 -0
- package/lib/commonjs/annotations/TextAnnotation.js.map +1 -0
- package/lib/commonjs/annotations/geometry.js +73 -0
- package/lib/commonjs/annotations/geometry.js.map +1 -0
- package/lib/commonjs/annotations/geometryPure.js +104 -0
- package/lib/commonjs/annotations/geometryPure.js.map +1 -0
- package/lib/commonjs/canvas/AnnotationLayer.js +58 -0
- package/lib/commonjs/canvas/AnnotationLayer.js.map +1 -0
- package/lib/commonjs/canvas/BaseImageLayer.js +27 -0
- package/lib/commonjs/canvas/BaseImageLayer.js.map +1 -0
- package/lib/commonjs/canvas/CropOverlay.js +135 -0
- package/lib/commonjs/canvas/CropOverlay.js.map +1 -0
- package/lib/commonjs/canvas/EditorCanvas.js +91 -0
- package/lib/commonjs/canvas/EditorCanvas.js.map +1 -0
- package/lib/commonjs/canvas/InFlightLayer.js +152 -0
- package/lib/commonjs/canvas/InFlightLayer.js.map +1 -0
- package/lib/commonjs/canvas/SelectionOverlay.js +90 -0
- package/lib/commonjs/canvas/SelectionOverlay.js.map +1 -0
- package/lib/commonjs/constants.js +56 -0
- package/lib/commonjs/constants.js.map +1 -0
- package/lib/commonjs/context/EditorContext.js +132 -0
- package/lib/commonjs/context/EditorContext.js.map +1 -0
- package/lib/commonjs/export/drawScene.js +97 -0
- package/lib/commonjs/export/drawScene.js.map +1 -0
- package/lib/commonjs/export/exportImage.js +92 -0
- package/lib/commonjs/export/exportImage.js.map +1 -0
- package/lib/commonjs/gestures/applyTransform.js +79 -0
- package/lib/commonjs/gestures/applyTransform.js.map +1 -0
- package/lib/commonjs/gestures/createAnnotation.js +73 -0
- package/lib/commonjs/gestures/createAnnotation.js.map +1 -0
- package/lib/commonjs/gestures/handles.js +53 -0
- package/lib/commonjs/gestures/handles.js.map +1 -0
- package/lib/commonjs/gestures/hitTest.js +72 -0
- package/lib/commonjs/gestures/hitTest.js.map +1 -0
- package/lib/commonjs/gestures/useCropGesture.js +149 -0
- package/lib/commonjs/gestures/useCropGesture.js.map +1 -0
- package/lib/commonjs/gestures/useEditorGestures.js +289 -0
- package/lib/commonjs/gestures/useEditorGestures.js.map +1 -0
- package/lib/commonjs/image/disposeRegistry.js +63 -0
- package/lib/commonjs/image/disposeRegistry.js.map +1 -0
- package/lib/commonjs/image/useLoadedImage.js +121 -0
- package/lib/commonjs/image/useLoadedImage.js.map +1 -0
- package/lib/commonjs/index.js +52 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/state/history.js +85 -0
- package/lib/commonjs/state/history.js.map +1 -0
- package/lib/commonjs/state/selectors.js +19 -0
- package/lib/commonjs/state/selectors.js.map +1 -0
- package/lib/commonjs/state/useEditorReducer.js +83 -0
- package/lib/commonjs/state/useEditorReducer.js.map +1 -0
- package/lib/commonjs/toolbar/ColorPicker.js +84 -0
- package/lib/commonjs/toolbar/ColorPicker.js.map +1 -0
- package/lib/commonjs/toolbar/CropControls.js +65 -0
- package/lib/commonjs/toolbar/CropControls.js.map +1 -0
- package/lib/commonjs/toolbar/RotationSlider.js +73 -0
- package/lib/commonjs/toolbar/RotationSlider.js.map +1 -0
- package/lib/commonjs/toolbar/TextInputOverlay.js +108 -0
- package/lib/commonjs/toolbar/TextInputOverlay.js.map +1 -0
- package/lib/commonjs/toolbar/ToolButton.js +56 -0
- package/lib/commonjs/toolbar/ToolButton.js.map +1 -0
- package/lib/commonjs/toolbar/Toolbar.js +137 -0
- package/lib/commonjs/toolbar/Toolbar.js.map +1 -0
- package/lib/commonjs/types.js +47 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/utils/color.js +37 -0
- package/lib/commonjs/utils/color.js.map +1 -0
- package/lib/commonjs/utils/id.js +14 -0
- package/lib/commonjs/utils/id.js.map +1 -0
- package/lib/commonjs/utils/math.js +277 -0
- package/lib/commonjs/utils/math.js.map +1 -0
- package/lib/module/ImageEditor.js +138 -0
- package/lib/module/ImageEditor.js.map +1 -0
- package/lib/module/annotations/AnnotationView.js +39 -0
- package/lib/module/annotations/AnnotationView.js.map +1 -0
- package/lib/module/annotations/ArrowAnnotation.js +26 -0
- package/lib/module/annotations/ArrowAnnotation.js.map +1 -0
- package/lib/module/annotations/CircleAnnotation.js +27 -0
- package/lib/module/annotations/CircleAnnotation.js.map +1 -0
- package/lib/module/annotations/FreehandAnnotation.js +25 -0
- package/lib/module/annotations/FreehandAnnotation.js.map +1 -0
- package/lib/module/annotations/MarkerAnnotation.js +23 -0
- package/lib/module/annotations/MarkerAnnotation.js.map +1 -0
- package/lib/module/annotations/RotatedGroup.js +29 -0
- package/lib/module/annotations/RotatedGroup.js.map +1 -0
- package/lib/module/annotations/TextAnnotation.js +37 -0
- package/lib/module/annotations/TextAnnotation.js.map +1 -0
- package/lib/module/annotations/geometry.js +56 -0
- package/lib/module/annotations/geometry.js.map +1 -0
- package/lib/module/annotations/geometryPure.js +100 -0
- package/lib/module/annotations/geometryPure.js.map +1 -0
- package/lib/module/canvas/AnnotationLayer.js +55 -0
- package/lib/module/canvas/AnnotationLayer.js.map +1 -0
- package/lib/module/canvas/BaseImageLayer.js +23 -0
- package/lib/module/canvas/BaseImageLayer.js.map +1 -0
- package/lib/module/canvas/CropOverlay.js +131 -0
- package/lib/module/canvas/CropOverlay.js.map +1 -0
- package/lib/module/canvas/EditorCanvas.js +88 -0
- package/lib/module/canvas/EditorCanvas.js.map +1 -0
- package/lib/module/canvas/InFlightLayer.js +149 -0
- package/lib/module/canvas/InFlightLayer.js.map +1 -0
- package/lib/module/canvas/SelectionOverlay.js +85 -0
- package/lib/module/canvas/SelectionOverlay.js.map +1 -0
- package/lib/module/constants.js +52 -0
- package/lib/module/constants.js.map +1 -0
- package/lib/module/context/EditorContext.js +126 -0
- package/lib/module/context/EditorContext.js.map +1 -0
- package/lib/module/export/drawScene.js +93 -0
- package/lib/module/export/drawScene.js.map +1 -0
- package/lib/module/export/exportImage.js +88 -0
- package/lib/module/export/exportImage.js.map +1 -0
- package/lib/module/gestures/applyTransform.js +75 -0
- package/lib/module/gestures/applyTransform.js.map +1 -0
- package/lib/module/gestures/createAnnotation.js +65 -0
- package/lib/module/gestures/createAnnotation.js.map +1 -0
- package/lib/module/gestures/handles.js +49 -0
- package/lib/module/gestures/handles.js.map +1 -0
- package/lib/module/gestures/hitTest.js +69 -0
- package/lib/module/gestures/hitTest.js.map +1 -0
- package/lib/module/gestures/useCropGesture.js +145 -0
- package/lib/module/gestures/useCropGesture.js.map +1 -0
- package/lib/module/gestures/useEditorGestures.js +285 -0
- package/lib/module/gestures/useEditorGestures.js.map +1 -0
- package/lib/module/image/disposeRegistry.js +57 -0
- package/lib/module/image/disposeRegistry.js.map +1 -0
- package/lib/module/image/useLoadedImage.js +117 -0
- package/lib/module/image/useLoadedImage.js.map +1 -0
- package/lib/module/index.js +8 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/state/history.js +76 -0
- package/lib/module/state/history.js.map +1 -0
- package/lib/module/state/selectors.js +14 -0
- package/lib/module/state/selectors.js.map +1 -0
- package/lib/module/state/useEditorReducer.js +79 -0
- package/lib/module/state/useEditorReducer.js.map +1 -0
- package/lib/module/toolbar/ColorPicker.js +80 -0
- package/lib/module/toolbar/ColorPicker.js.map +1 -0
- package/lib/module/toolbar/CropControls.js +62 -0
- package/lib/module/toolbar/CropControls.js.map +1 -0
- package/lib/module/toolbar/RotationSlider.js +69 -0
- package/lib/module/toolbar/RotationSlider.js.map +1 -0
- package/lib/module/toolbar/TextInputOverlay.js +105 -0
- package/lib/module/toolbar/TextInputOverlay.js.map +1 -0
- package/lib/module/toolbar/ToolButton.js +52 -0
- package/lib/module/toolbar/ToolButton.js.map +1 -0
- package/lib/module/toolbar/Toolbar.js +133 -0
- package/lib/module/toolbar/Toolbar.js.map +1 -0
- package/lib/module/types.js +43 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/utils/color.js +33 -0
- package/lib/module/utils/color.js.map +1 -0
- package/lib/module/utils/id.js +10 -0
- package/lib/module/utils/id.js.map +1 -0
- package/lib/module/utils/math.js +258 -0
- package/lib/module/utils/math.js.map +1 -0
- package/lib/typescript/src/ImageEditor.d.ts +9 -0
- package/lib/typescript/src/ImageEditor.d.ts.map +1 -0
- package/lib/typescript/src/annotations/AnnotationView.d.ts +6 -0
- package/lib/typescript/src/annotations/AnnotationView.d.ts.map +1 -0
- package/lib/typescript/src/annotations/ArrowAnnotation.d.ts +5 -0
- package/lib/typescript/src/annotations/ArrowAnnotation.d.ts.map +1 -0
- package/lib/typescript/src/annotations/CircleAnnotation.d.ts +5 -0
- package/lib/typescript/src/annotations/CircleAnnotation.d.ts.map +1 -0
- package/lib/typescript/src/annotations/FreehandAnnotation.d.ts +5 -0
- package/lib/typescript/src/annotations/FreehandAnnotation.d.ts.map +1 -0
- package/lib/typescript/src/annotations/MarkerAnnotation.d.ts +5 -0
- package/lib/typescript/src/annotations/MarkerAnnotation.d.ts.map +1 -0
- package/lib/typescript/src/annotations/RotatedGroup.d.ts +13 -0
- package/lib/typescript/src/annotations/RotatedGroup.d.ts.map +1 -0
- package/lib/typescript/src/annotations/TextAnnotation.d.ts +10 -0
- package/lib/typescript/src/annotations/TextAnnotation.d.ts.map +1 -0
- package/lib/typescript/src/annotations/geometry.d.ts +11 -0
- package/lib/typescript/src/annotations/geometry.d.ts.map +1 -0
- package/lib/typescript/src/annotations/geometryPure.d.ts +14 -0
- package/lib/typescript/src/annotations/geometryPure.d.ts.map +1 -0
- package/lib/typescript/src/canvas/AnnotationLayer.d.ts +11 -0
- package/lib/typescript/src/canvas/AnnotationLayer.d.ts.map +1 -0
- package/lib/typescript/src/canvas/BaseImageLayer.d.ts +12 -0
- package/lib/typescript/src/canvas/BaseImageLayer.d.ts.map +1 -0
- package/lib/typescript/src/canvas/CropOverlay.d.ts +10 -0
- package/lib/typescript/src/canvas/CropOverlay.d.ts.map +1 -0
- package/lib/typescript/src/canvas/EditorCanvas.d.ts +18 -0
- package/lib/typescript/src/canvas/EditorCanvas.d.ts.map +1 -0
- package/lib/typescript/src/canvas/InFlightLayer.d.ts +12 -0
- package/lib/typescript/src/canvas/InFlightLayer.d.ts.map +1 -0
- package/lib/typescript/src/canvas/SelectionOverlay.d.ts +11 -0
- package/lib/typescript/src/canvas/SelectionOverlay.d.ts.map +1 -0
- package/lib/typescript/src/constants.d.ts +25 -0
- package/lib/typescript/src/constants.d.ts.map +1 -0
- package/lib/typescript/src/context/EditorContext.d.ts +66 -0
- package/lib/typescript/src/context/EditorContext.d.ts.map +1 -0
- package/lib/typescript/src/export/drawScene.d.ts +10 -0
- package/lib/typescript/src/export/drawScene.d.ts.map +1 -0
- package/lib/typescript/src/export/exportImage.d.ts +23 -0
- package/lib/typescript/src/export/exportImage.d.ts.map +1 -0
- package/lib/typescript/src/gestures/applyTransform.d.ts +17 -0
- package/lib/typescript/src/gestures/applyTransform.d.ts.map +1 -0
- package/lib/typescript/src/gestures/createAnnotation.d.ts +11 -0
- package/lib/typescript/src/gestures/createAnnotation.d.ts.map +1 -0
- package/lib/typescript/src/gestures/handles.d.ts +17 -0
- package/lib/typescript/src/gestures/handles.d.ts.map +1 -0
- package/lib/typescript/src/gestures/hitTest.d.ts +9 -0
- package/lib/typescript/src/gestures/hitTest.d.ts.map +1 -0
- package/lib/typescript/src/gestures/useCropGesture.d.ts +7 -0
- package/lib/typescript/src/gestures/useCropGesture.d.ts.map +1 -0
- package/lib/typescript/src/gestures/useEditorGestures.d.ts +8 -0
- package/lib/typescript/src/gestures/useEditorGestures.d.ts.map +1 -0
- package/lib/typescript/src/image/disposeRegistry.d.ts +25 -0
- package/lib/typescript/src/image/disposeRegistry.d.ts.map +1 -0
- package/lib/typescript/src/image/useLoadedImage.d.ts +23 -0
- package/lib/typescript/src/image/useLoadedImage.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +6 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/state/history.d.ts +23 -0
- package/lib/typescript/src/state/history.d.ts.map +1 -0
- package/lib/typescript/src/state/selectors.d.ts +5 -0
- package/lib/typescript/src/state/selectors.d.ts.map +1 -0
- package/lib/typescript/src/state/useEditorReducer.d.ts +32 -0
- package/lib/typescript/src/state/useEditorReducer.d.ts.map +1 -0
- package/lib/typescript/src/toolbar/ColorPicker.d.ts +7 -0
- package/lib/typescript/src/toolbar/ColorPicker.d.ts.map +1 -0
- package/lib/typescript/src/toolbar/CropControls.d.ts +3 -0
- package/lib/typescript/src/toolbar/CropControls.d.ts.map +1 -0
- package/lib/typescript/src/toolbar/RotationSlider.d.ts +8 -0
- package/lib/typescript/src/toolbar/RotationSlider.d.ts.map +1 -0
- package/lib/typescript/src/toolbar/TextInputOverlay.d.ts +9 -0
- package/lib/typescript/src/toolbar/TextInputOverlay.d.ts.map +1 -0
- package/lib/typescript/src/toolbar/ToolButton.d.ts +7 -0
- package/lib/typescript/src/toolbar/ToolButton.d.ts.map +1 -0
- package/lib/typescript/src/toolbar/Toolbar.d.ts +4 -0
- package/lib/typescript/src/toolbar/Toolbar.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +170 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/lib/typescript/src/utils/color.d.ts +8 -0
- package/lib/typescript/src/utils/color.d.ts.map +1 -0
- package/lib/typescript/src/utils/id.d.ts +3 -0
- package/lib/typescript/src/utils/id.d.ts.map +1 -0
- package/lib/typescript/src/utils/math.d.ts +68 -0
- package/lib/typescript/src/utils/math.d.ts.map +1 -0
- package/package.json +90 -0
- package/src/ImageEditor.tsx +133 -0
- package/src/annotations/AnnotationView.tsx +24 -0
- package/src/annotations/ArrowAnnotation.tsx +26 -0
- package/src/annotations/CircleAnnotation.tsx +22 -0
- package/src/annotations/FreehandAnnotation.tsx +22 -0
- package/src/annotations/MarkerAnnotation.tsx +20 -0
- package/src/annotations/RotatedGroup.tsx +28 -0
- package/src/annotations/TextAnnotation.tsx +42 -0
- package/src/annotations/geometry.ts +62 -0
- package/src/annotations/geometryPure.ts +73 -0
- package/src/canvas/AnnotationLayer.tsx +43 -0
- package/src/canvas/BaseImageLayer.tsx +28 -0
- package/src/canvas/CropOverlay.tsx +92 -0
- package/src/canvas/EditorCanvas.tsx +70 -0
- package/src/canvas/InFlightLayer.tsx +140 -0
- package/src/canvas/SelectionOverlay.tsx +92 -0
- package/src/constants.ts +46 -0
- package/src/context/EditorContext.tsx +229 -0
- package/src/export/drawScene.ts +120 -0
- package/src/export/exportImage.ts +111 -0
- package/src/gestures/applyTransform.ts +76 -0
- package/src/gestures/createAnnotation.ts +92 -0
- package/src/gestures/handles.ts +50 -0
- package/src/gestures/hitTest.ts +79 -0
- package/src/gestures/useCropGesture.ts +123 -0
- package/src/gestures/useEditorGestures.ts +308 -0
- package/src/image/disposeRegistry.ts +59 -0
- package/src/image/useLoadedImage.ts +131 -0
- package/src/index.ts +32 -0
- package/src/state/history.ts +71 -0
- package/src/state/selectors.ts +16 -0
- package/src/state/useEditorReducer.ts +93 -0
- package/src/toolbar/ColorPicker.tsx +72 -0
- package/src/toolbar/CropControls.tsx +46 -0
- package/src/toolbar/RotationSlider.tsx +56 -0
- package/src/toolbar/TextInputOverlay.tsx +104 -0
- package/src/toolbar/ToolButton.tsx +46 -0
- package/src/toolbar/Toolbar.tsx +110 -0
- package/src/types.ts +203 -0
- package/src/utils/color.ts +34 -0
- package/src/utils/id.ts +7 -0
- package/src/utils/math.ts +222 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.InFlightLayer = InFlightLayer;
|
|
7
|
+
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
8
|
+
var _reactNativeReanimated = require("react-native-reanimated");
|
|
9
|
+
var _constants = require("../constants");
|
|
10
|
+
var _color = require("../utils/color");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
/**
|
|
13
|
+
* Renders the shape currently being drawn, bound to the `draw` shared values so
|
|
14
|
+
* it updates on the UI thread. The active tool is fixed for the duration of a
|
|
15
|
+
* draw, so switching on it here is safe. Opacity is 0 when not drawing.
|
|
16
|
+
*
|
|
17
|
+
* Receives `editor` as a prop (context does not cross the Skia Canvas boundary).
|
|
18
|
+
*/
|
|
19
|
+
function InFlightLayer({
|
|
20
|
+
editor
|
|
21
|
+
}) {
|
|
22
|
+
const {
|
|
23
|
+
tool,
|
|
24
|
+
draw,
|
|
25
|
+
strokeColor,
|
|
26
|
+
strokeWidth
|
|
27
|
+
} = editor;
|
|
28
|
+
const opacity = (0, _reactNativeReanimated.useDerivedValue)(() => draw.active.value ? 1 : 0);
|
|
29
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Group, {
|
|
30
|
+
opacity: opacity,
|
|
31
|
+
children: [tool === 'circle' && /*#__PURE__*/(0, _jsxRuntime.jsx)(CirclePreview, {
|
|
32
|
+
draw: draw,
|
|
33
|
+
color: strokeColor,
|
|
34
|
+
width: strokeWidth
|
|
35
|
+
}), tool === 'arrow' && /*#__PURE__*/(0, _jsxRuntime.jsx)(ArrowPreview, {
|
|
36
|
+
draw: draw,
|
|
37
|
+
color: strokeColor,
|
|
38
|
+
width: strokeWidth
|
|
39
|
+
}), tool === 'marker' && /*#__PURE__*/(0, _jsxRuntime.jsx)(MarkerPreview, {
|
|
40
|
+
draw: draw,
|
|
41
|
+
color: strokeColor
|
|
42
|
+
}), tool === 'freehand' && /*#__PURE__*/(0, _jsxRuntime.jsx)(FreehandPreview, {
|
|
43
|
+
draw: draw,
|
|
44
|
+
color: strokeColor,
|
|
45
|
+
width: strokeWidth
|
|
46
|
+
})]
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function CirclePreview({
|
|
50
|
+
draw,
|
|
51
|
+
color,
|
|
52
|
+
width
|
|
53
|
+
}) {
|
|
54
|
+
const cx = (0, _reactNativeReanimated.useDerivedValue)(() => draw.start.value.x);
|
|
55
|
+
const cy = (0, _reactNativeReanimated.useDerivedValue)(() => draw.start.value.y);
|
|
56
|
+
const r = (0, _reactNativeReanimated.useDerivedValue)(() => Math.hypot(draw.current.value.x - draw.start.value.x, draw.current.value.y - draw.start.value.y));
|
|
57
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Circle, {
|
|
58
|
+
cx: cx,
|
|
59
|
+
cy: cy,
|
|
60
|
+
r: r,
|
|
61
|
+
color: color,
|
|
62
|
+
style: "stroke",
|
|
63
|
+
strokeWidth: width
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
function ArrowPreview({
|
|
67
|
+
draw,
|
|
68
|
+
color,
|
|
69
|
+
width
|
|
70
|
+
}) {
|
|
71
|
+
const headSize = width * _constants.ARROW_HEAD_RATIO;
|
|
72
|
+
const p1 = (0, _reactNativeReanimated.useDerivedValue)(() => draw.start.value);
|
|
73
|
+
const p2 = (0, _reactNativeReanimated.useDerivedValue)(() => draw.current.value);
|
|
74
|
+
const barb1 = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
75
|
+
const s = draw.start.value;
|
|
76
|
+
const e = draw.current.value;
|
|
77
|
+
const angle = Math.atan2(e.y - s.y, e.x - s.x);
|
|
78
|
+
const barb = Math.PI * 5 / 6;
|
|
79
|
+
return {
|
|
80
|
+
x: e.x + headSize * Math.cos(angle + barb),
|
|
81
|
+
y: e.y + headSize * Math.sin(angle + barb)
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
const barb2 = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
85
|
+
const s = draw.start.value;
|
|
86
|
+
const e = draw.current.value;
|
|
87
|
+
const angle = Math.atan2(e.y - s.y, e.x - s.x);
|
|
88
|
+
const barb = Math.PI * 5 / 6;
|
|
89
|
+
return {
|
|
90
|
+
x: e.x + headSize * Math.cos(angle - barb),
|
|
91
|
+
y: e.y + headSize * Math.sin(angle - barb)
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Group, {
|
|
95
|
+
color: color,
|
|
96
|
+
style: "stroke",
|
|
97
|
+
strokeWidth: width,
|
|
98
|
+
strokeCap: "round",
|
|
99
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Line, {
|
|
100
|
+
p1: p1,
|
|
101
|
+
p2: p2
|
|
102
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Line, {
|
|
103
|
+
p1: p2,
|
|
104
|
+
p2: barb1
|
|
105
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Line, {
|
|
106
|
+
p1: p2,
|
|
107
|
+
p2: barb2
|
|
108
|
+
})]
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
function MarkerPreview({
|
|
112
|
+
draw,
|
|
113
|
+
color
|
|
114
|
+
}) {
|
|
115
|
+
const x = (0, _reactNativeReanimated.useDerivedValue)(() => Math.min(draw.start.value.x, draw.current.value.x));
|
|
116
|
+
const y = (0, _reactNativeReanimated.useDerivedValue)(() => Math.min(draw.start.value.y, draw.current.value.y));
|
|
117
|
+
const w = (0, _reactNativeReanimated.useDerivedValue)(() => Math.abs(draw.current.value.x - draw.start.value.x));
|
|
118
|
+
const h = (0, _reactNativeReanimated.useDerivedValue)(() => Math.abs(draw.current.value.y - draw.start.value.y));
|
|
119
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Rect, {
|
|
120
|
+
x: x,
|
|
121
|
+
y: y,
|
|
122
|
+
width: w,
|
|
123
|
+
height: h,
|
|
124
|
+
color: (0, _color.withOpacity)(color, _constants.MARKER_OPACITY)
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function FreehandPreview({
|
|
128
|
+
draw,
|
|
129
|
+
color,
|
|
130
|
+
width
|
|
131
|
+
}) {
|
|
132
|
+
const path = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
133
|
+
const pts = draw.points.value;
|
|
134
|
+
const p = _reactNativeSkia.Skia.Path.Make();
|
|
135
|
+
if (pts.length > 0) {
|
|
136
|
+
p.moveTo(pts[0].x, pts[0].y);
|
|
137
|
+
for (let i = 1; i < pts.length; i++) {
|
|
138
|
+
p.lineTo(pts[i].x, pts[i].y);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return p;
|
|
142
|
+
});
|
|
143
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Path, {
|
|
144
|
+
path: path,
|
|
145
|
+
color: color,
|
|
146
|
+
style: "stroke",
|
|
147
|
+
strokeWidth: width,
|
|
148
|
+
strokeCap: "round",
|
|
149
|
+
strokeJoin: "round"
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=InFlightLayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_reactNativeReanimated","_constants","_color","_jsxRuntime","InFlightLayer","editor","tool","draw","strokeColor","strokeWidth","opacity","useDerivedValue","active","value","jsxs","Group","children","jsx","CirclePreview","color","width","ArrowPreview","MarkerPreview","FreehandPreview","cx","start","x","cy","y","r","Math","hypot","current","Circle","style","headSize","ARROW_HEAD_RATIO","p1","p2","barb1","s","e","angle","atan2","barb","PI","cos","sin","barb2","strokeCap","Line","min","w","abs","h","Rect","height","withOpacity","MARKER_OPACITY","path","pts","points","p","Skia","Path","Make","length","moveTo","i","lineTo","strokeJoin"],"sourceRoot":"..\\..\\..\\src","sources":["canvas/InFlightLayer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SelectionOverlay = SelectionOverlay;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
9
|
+
var _reactNativeReanimated = require("react-native-reanimated");
|
|
10
|
+
var _selectors = require("../state/selectors");
|
|
11
|
+
var _handles = require("../gestures/handles");
|
|
12
|
+
var _constants = require("../constants");
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
15
|
+
const SELECTION_COLOR = '#1E90FF';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Draws the selection bounding box + resize corners + rotate handle in SCREEN
|
|
19
|
+
* space (outside the scene transform, so handle size is zoom-independent). The
|
|
20
|
+
* overlay hides itself during an active live transform to avoid a stale double.
|
|
21
|
+
*/
|
|
22
|
+
function SelectionOverlay({
|
|
23
|
+
editor
|
|
24
|
+
}) {
|
|
25
|
+
const {
|
|
26
|
+
annotations,
|
|
27
|
+
selectedId,
|
|
28
|
+
matrix,
|
|
29
|
+
live
|
|
30
|
+
} = editor;
|
|
31
|
+
const selected = (0, _selectors.getAnnotationById)(annotations, selectedId);
|
|
32
|
+
const opacity = (0, _reactNativeReanimated.useDerivedValue)(() => live.active.value ? 0 : 1);
|
|
33
|
+
const handles = (0, _react.useMemo)(() => selected ? (0, _handles.selectionHandles)(selected, matrix) : null, [selected, matrix]);
|
|
34
|
+
const boxPath = (0, _react.useMemo)(() => {
|
|
35
|
+
if (!handles) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const p = _reactNativeSkia.Skia.Path.Make();
|
|
39
|
+
const c = handles.corners;
|
|
40
|
+
p.moveTo(c[0].x, c[0].y);
|
|
41
|
+
p.lineTo(c[1].x, c[1].y);
|
|
42
|
+
p.lineTo(c[2].x, c[2].y);
|
|
43
|
+
p.lineTo(c[3].x, c[3].y);
|
|
44
|
+
p.close();
|
|
45
|
+
return p;
|
|
46
|
+
}, [handles]);
|
|
47
|
+
if (!selected || !handles || !boxPath) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
const topMid = {
|
|
51
|
+
x: (handles.corners[0].x + handles.corners[1].x) / 2,
|
|
52
|
+
y: (handles.corners[0].y + handles.corners[1].y) / 2
|
|
53
|
+
};
|
|
54
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Group, {
|
|
55
|
+
opacity: opacity,
|
|
56
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Path, {
|
|
57
|
+
path: boxPath,
|
|
58
|
+
color: SELECTION_COLOR,
|
|
59
|
+
style: "stroke",
|
|
60
|
+
strokeWidth: 2
|
|
61
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Line, {
|
|
62
|
+
p1: topMid,
|
|
63
|
+
p2: handles.rotate,
|
|
64
|
+
color: SELECTION_COLOR,
|
|
65
|
+
strokeWidth: 2
|
|
66
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Circle, {
|
|
67
|
+
cx: handles.rotate.x,
|
|
68
|
+
cy: handles.rotate.y,
|
|
69
|
+
r: _constants.HANDLE_SIZE / 2,
|
|
70
|
+
color: SELECTION_COLOR
|
|
71
|
+
}), handles.corners.map((corner, i) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.default.Fragment, {
|
|
72
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Rect, {
|
|
73
|
+
x: corner.x - _constants.HANDLE_SIZE / 2,
|
|
74
|
+
y: corner.y - _constants.HANDLE_SIZE / 2,
|
|
75
|
+
width: _constants.HANDLE_SIZE,
|
|
76
|
+
height: _constants.HANDLE_SIZE,
|
|
77
|
+
color: "#FFFFFF"
|
|
78
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Rect, {
|
|
79
|
+
x: corner.x - _constants.HANDLE_SIZE / 2,
|
|
80
|
+
y: corner.y - _constants.HANDLE_SIZE / 2,
|
|
81
|
+
width: _constants.HANDLE_SIZE,
|
|
82
|
+
height: _constants.HANDLE_SIZE,
|
|
83
|
+
color: SELECTION_COLOR,
|
|
84
|
+
style: "stroke",
|
|
85
|
+
strokeWidth: 2
|
|
86
|
+
})]
|
|
87
|
+
}, i))]
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=SelectionOverlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNativeSkia","_reactNativeReanimated","_selectors","_handles","_constants","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SELECTION_COLOR","SelectionOverlay","editor","annotations","selectedId","matrix","live","selected","getAnnotationById","opacity","useDerivedValue","active","value","handles","useMemo","selectionHandles","boxPath","p","Skia","Path","Make","c","corners","moveTo","x","y","lineTo","close","topMid","jsxs","Group","children","jsx","path","color","style","strokeWidth","Line","p1","p2","rotate","Circle","cx","cy","HANDLE_SIZE","map","corner","Fragment","Rect","width","height"],"sourceRoot":"..\\..\\..\\src","sources":["canvas/SelectionOverlay.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ROTATE_HANDLE_OFFSET = exports.MAX_HISTORY = exports.MARKER_OPACITY = exports.HIT_SLOP = exports.HANDLE_SIZE = exports.FREEHAND_MIN_DISTANCE = exports.DEFAULT_TEXT_WIDTH = exports.DEFAULT_TEXT_COLOR = exports.DEFAULT_STROKE_WIDTH = exports.DEFAULT_STROKE_COLOR = exports.DEFAULT_PALETTE = exports.DEFAULT_FONT_SIZE = exports.ARROW_HEAD_RATIO = void 0;
|
|
7
|
+
/** Default stroke width (in image pixels) for new shapes. */
|
|
8
|
+
const DEFAULT_STROKE_WIDTH = exports.DEFAULT_STROKE_WIDTH = 8;
|
|
9
|
+
|
|
10
|
+
/** Default font size (in image pixels) for new text annotations. */
|
|
11
|
+
const DEFAULT_FONT_SIZE = exports.DEFAULT_FONT_SIZE = 48;
|
|
12
|
+
|
|
13
|
+
/** Default wrap width (in image pixels) for new text boxes. */
|
|
14
|
+
const DEFAULT_TEXT_WIDTH = exports.DEFAULT_TEXT_WIDTH = 400;
|
|
15
|
+
|
|
16
|
+
/** Semi-transparent opacity for the marker/highlighter tool. */
|
|
17
|
+
const MARKER_OPACITY = exports.MARKER_OPACITY = 0.4;
|
|
18
|
+
|
|
19
|
+
/** Arrowhead barb length as a multiple of stroke width. */
|
|
20
|
+
const ARROW_HEAD_RATIO = exports.ARROW_HEAD_RATIO = 4;
|
|
21
|
+
|
|
22
|
+
/** Touch slop (in screen points) added to hit-test radii for easier selection. */
|
|
23
|
+
const HIT_SLOP = exports.HIT_SLOP = 12;
|
|
24
|
+
|
|
25
|
+
/** On-screen size (points) of selection handles. */
|
|
26
|
+
const HANDLE_SIZE = exports.HANDLE_SIZE = 14;
|
|
27
|
+
|
|
28
|
+
/** Distance (points) the rotate handle sits above the selection's top edge. */
|
|
29
|
+
const ROTATE_HANDLE_OFFSET = exports.ROTATE_HANDLE_OFFSET = 36;
|
|
30
|
+
|
|
31
|
+
/** Max entries retained in the undo/redo history. */
|
|
32
|
+
const MAX_HISTORY = exports.MAX_HISTORY = 50;
|
|
33
|
+
|
|
34
|
+
/** Minimum spacing (image px) between sampled freehand points. */
|
|
35
|
+
const FREEHAND_MIN_DISTANCE = exports.FREEHAND_MIN_DISTANCE = 3;
|
|
36
|
+
const DEFAULT_STROKE_COLOR = exports.DEFAULT_STROKE_COLOR = '#FF3B30';
|
|
37
|
+
const DEFAULT_TEXT_COLOR = exports.DEFAULT_TEXT_COLOR = '#FFFFFF';
|
|
38
|
+
const DEFAULT_PALETTE = exports.DEFAULT_PALETTE = ['#FF3B30',
|
|
39
|
+
// red
|
|
40
|
+
'#FF9500',
|
|
41
|
+
// orange
|
|
42
|
+
'#FFCC00',
|
|
43
|
+
// yellow
|
|
44
|
+
'#34C759',
|
|
45
|
+
// green
|
|
46
|
+
'#007AFF',
|
|
47
|
+
// blue
|
|
48
|
+
'#5856D6',
|
|
49
|
+
// indigo
|
|
50
|
+
'#AF52DE',
|
|
51
|
+
// purple
|
|
52
|
+
'#FFFFFF',
|
|
53
|
+
// white
|
|
54
|
+
'#000000' // black
|
|
55
|
+
];
|
|
56
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DEFAULT_STROKE_WIDTH","exports","DEFAULT_FONT_SIZE","DEFAULT_TEXT_WIDTH","MARKER_OPACITY","ARROW_HEAD_RATIO","HIT_SLOP","HANDLE_SIZE","ROTATE_HANDLE_OFFSET","MAX_HISTORY","FREEHAND_MIN_DISTANCE","DEFAULT_STROKE_COLOR","DEFAULT_TEXT_COLOR","DEFAULT_PALETTE"],"sourceRoot":"..\\..\\src","sources":["constants.ts"],"mappings":";;;;;;AAEA;AACO,MAAMA,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAAG,CAAC;;AAErC;AACO,MAAME,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,GAAG,EAAE;;AAEnC;AACO,MAAMC,kBAAkB,GAAAF,OAAA,CAAAE,kBAAA,GAAG,GAAG;;AAErC;AACO,MAAMC,cAAc,GAAAH,OAAA,CAAAG,cAAA,GAAG,GAAG;;AAEjC;AACO,MAAMC,gBAAgB,GAAAJ,OAAA,CAAAI,gBAAA,GAAG,CAAC;;AAEjC;AACO,MAAMC,QAAQ,GAAAL,OAAA,CAAAK,QAAA,GAAG,EAAE;;AAE1B;AACO,MAAMC,WAAW,GAAAN,OAAA,CAAAM,WAAA,GAAG,EAAE;;AAE7B;AACO,MAAMC,oBAAoB,GAAAP,OAAA,CAAAO,oBAAA,GAAG,EAAE;;AAEtC;AACO,MAAMC,WAAW,GAAAR,OAAA,CAAAQ,WAAA,GAAG,EAAE;;AAE7B;AACO,MAAMC,qBAAqB,GAAAT,OAAA,CAAAS,qBAAA,GAAG,CAAC;AAE/B,MAAMC,oBAAiC,GAAAV,OAAA,CAAAU,oBAAA,GAAG,SAAS;AACnD,MAAMC,kBAA+B,GAAAX,OAAA,CAAAW,kBAAA,GAAG,SAAS;AAEjD,MAAMC,eAA8B,GAAAZ,OAAA,CAAAY,eAAA,GAAG,CAC5C,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS,CAAE;AAAA,CACZ","ignoreList":[]}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.EditorProvider = EditorProvider;
|
|
7
|
+
exports.useEditor = useEditor;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _reactNativeReanimated = require("react-native-reanimated");
|
|
10
|
+
var _constants = require("../constants");
|
|
11
|
+
var _useEditorReducer = require("../state/useEditorReducer");
|
|
12
|
+
var _history = require("../state/history");
|
|
13
|
+
var _math = require("../utils/math");
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
16
|
+
/** Live geometry of a shape currently being drawn (UI-thread shared values). */
|
|
17
|
+
|
|
18
|
+
/** Live transform applied to the selected annotation during move/resize/rotate. */
|
|
19
|
+
|
|
20
|
+
const EditorContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
21
|
+
function useEditor() {
|
|
22
|
+
const ctx = (0, _react.useContext)(EditorContext);
|
|
23
|
+
if (!ctx) {
|
|
24
|
+
throw new Error('useEditor must be used within <EditorProvider>');
|
|
25
|
+
}
|
|
26
|
+
return ctx;
|
|
27
|
+
}
|
|
28
|
+
function EditorProvider({
|
|
29
|
+
imageSize,
|
|
30
|
+
initialStrokeColor = _constants.DEFAULT_STROKE_COLOR,
|
|
31
|
+
initialTextColor = _constants.DEFAULT_TEXT_COLOR,
|
|
32
|
+
palette = _constants.DEFAULT_PALETTE,
|
|
33
|
+
children
|
|
34
|
+
}) {
|
|
35
|
+
const [state, dispatch] = (0, _useEditorReducer.useEditorReducer)();
|
|
36
|
+
const [tool, setTool] = (0, _react.useState)('select');
|
|
37
|
+
const [selectedId, setSelectedId] = (0, _react.useState)(null);
|
|
38
|
+
const [strokeColor, setStrokeColor] = (0, _react.useState)(initialStrokeColor);
|
|
39
|
+
const [textColor, setTextColor] = (0, _react.useState)(initialTextColor);
|
|
40
|
+
const [strokeWidth, setStrokeWidth] = (0, _react.useState)(_constants.DEFAULT_STROKE_WIDTH);
|
|
41
|
+
const [editingTextId, setEditingTextId] = (0, _react.useState)(null);
|
|
42
|
+
const [layout, setLayout] = (0, _react.useState)({
|
|
43
|
+
width: 1,
|
|
44
|
+
height: 1
|
|
45
|
+
});
|
|
46
|
+
const doc = state.present;
|
|
47
|
+
|
|
48
|
+
// Draw shared values.
|
|
49
|
+
const drawActive = (0, _reactNativeReanimated.useSharedValue)(false);
|
|
50
|
+
const drawStart = (0, _reactNativeReanimated.useSharedValue)({
|
|
51
|
+
x: 0,
|
|
52
|
+
y: 0
|
|
53
|
+
});
|
|
54
|
+
const drawCurrent = (0, _reactNativeReanimated.useSharedValue)({
|
|
55
|
+
x: 0,
|
|
56
|
+
y: 0
|
|
57
|
+
});
|
|
58
|
+
const drawPoints = (0, _reactNativeReanimated.useSharedValue)([]);
|
|
59
|
+
|
|
60
|
+
// Live transform shared values.
|
|
61
|
+
const liveActive = (0, _reactNativeReanimated.useSharedValue)(false);
|
|
62
|
+
const liveTx = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
63
|
+
const liveTy = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
64
|
+
const liveRotate = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
65
|
+
const liveScale = (0, _reactNativeReanimated.useSharedValue)(1);
|
|
66
|
+
const liveOrigin = (0, _reactNativeReanimated.useSharedValue)({
|
|
67
|
+
x: 0,
|
|
68
|
+
y: 0
|
|
69
|
+
});
|
|
70
|
+
const matrixSV = (0, _reactNativeReanimated.useSharedValue)((0, _math.identity)());
|
|
71
|
+
const cropRectSV = (0, _reactNativeReanimated.useSharedValue)({
|
|
72
|
+
x: 0,
|
|
73
|
+
y: 0,
|
|
74
|
+
width: imageSize.width,
|
|
75
|
+
height: imageSize.height
|
|
76
|
+
});
|
|
77
|
+
const matrix = (0, _react.useMemo)(() => (0, _math.imageToScreenMatrix)(doc.scene, imageSize, layout), [doc.scene, imageSize, layout]);
|
|
78
|
+
|
|
79
|
+
// Mirror the JS-thread matrix into the shared value for worklet reads.
|
|
80
|
+
(0, _react.useEffect)(() => {
|
|
81
|
+
matrixSV.value = matrix;
|
|
82
|
+
}, [matrix, matrixSV]);
|
|
83
|
+
const value = (0, _react.useMemo)(() => ({
|
|
84
|
+
state,
|
|
85
|
+
dispatch,
|
|
86
|
+
doc,
|
|
87
|
+
annotations: doc.annotations,
|
|
88
|
+
canUndo: (0, _history.canUndo)(state),
|
|
89
|
+
canRedo: (0, _history.canRedo)(state),
|
|
90
|
+
tool,
|
|
91
|
+
setTool,
|
|
92
|
+
selectedId,
|
|
93
|
+
setSelectedId,
|
|
94
|
+
strokeColor,
|
|
95
|
+
setStrokeColor,
|
|
96
|
+
textColor,
|
|
97
|
+
setTextColor,
|
|
98
|
+
strokeWidth,
|
|
99
|
+
setStrokeWidth,
|
|
100
|
+
palette,
|
|
101
|
+
editingTextId,
|
|
102
|
+
setEditingTextId,
|
|
103
|
+
layout,
|
|
104
|
+
setLayout,
|
|
105
|
+
imageSize,
|
|
106
|
+
matrix,
|
|
107
|
+
matrixSV,
|
|
108
|
+
draw: {
|
|
109
|
+
active: drawActive,
|
|
110
|
+
start: drawStart,
|
|
111
|
+
current: drawCurrent,
|
|
112
|
+
points: drawPoints
|
|
113
|
+
},
|
|
114
|
+
live: {
|
|
115
|
+
active: liveActive,
|
|
116
|
+
tx: liveTx,
|
|
117
|
+
ty: liveTy,
|
|
118
|
+
rotate: liveRotate,
|
|
119
|
+
scale: liveScale,
|
|
120
|
+
origin: liveOrigin
|
|
121
|
+
},
|
|
122
|
+
cropRectSV
|
|
123
|
+
}),
|
|
124
|
+
// Shared values are stable refs; only re-memoize on JS-state changes.
|
|
125
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
126
|
+
[state, doc, tool, selectedId, strokeColor, textColor, strokeWidth, palette, editingTextId, layout, imageSize, matrix]);
|
|
127
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(EditorContext.Provider, {
|
|
128
|
+
value: value,
|
|
129
|
+
children: children
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=EditorContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNativeReanimated","_constants","_useEditorReducer","_history","_math","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","EditorContext","createContext","useEditor","ctx","useContext","Error","EditorProvider","imageSize","initialStrokeColor","DEFAULT_STROKE_COLOR","initialTextColor","DEFAULT_TEXT_COLOR","palette","DEFAULT_PALETTE","children","state","dispatch","useEditorReducer","tool","setTool","useState","selectedId","setSelectedId","strokeColor","setStrokeColor","textColor","setTextColor","strokeWidth","setStrokeWidth","DEFAULT_STROKE_WIDTH","editingTextId","setEditingTextId","layout","setLayout","width","height","doc","present","drawActive","useSharedValue","drawStart","x","y","drawCurrent","drawPoints","liveActive","liveTx","liveTy","liveRotate","liveScale","liveOrigin","matrixSV","identity","cropRectSV","matrix","useMemo","imageToScreenMatrix","scene","useEffect","value","annotations","canUndo","canRedo","draw","active","start","current","points","live","tx","ty","rotate","scale","origin","jsx","Provider"],"sourceRoot":"..\\..\\..\\src","sources":["context/EditorContext.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.drawScene = drawScene;
|
|
7
|
+
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
8
|
+
var _selectors = require("../state/selectors");
|
|
9
|
+
var _geometry = require("../annotations/geometry");
|
|
10
|
+
var _color = require("../utils/color");
|
|
11
|
+
const RAD_TO_DEG = 180 / Math.PI;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Imperative draw of the base image + all annotations onto `canvas`, in IMAGE
|
|
15
|
+
* space. Shared by the off-screen export path. Mirrors the declarative on-screen
|
|
16
|
+
* renderers (same geometry, same rotation-about-center), so exports match the
|
|
17
|
+
* preview. The caller sets up the output transform + clip before calling this.
|
|
18
|
+
*/
|
|
19
|
+
function drawScene(canvas, image, annotations) {
|
|
20
|
+
canvas.drawImage(image, 0, 0);
|
|
21
|
+
for (const a of (0, _selectors.sortedByZ)(annotations)) {
|
|
22
|
+
drawAnnotation(canvas, a);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function strokePaint(color, width) {
|
|
26
|
+
const paint = _reactNativeSkia.Skia.Paint();
|
|
27
|
+
paint.setColor(_reactNativeSkia.Skia.Color(color));
|
|
28
|
+
paint.setStyle(_reactNativeSkia.PaintStyle.Stroke);
|
|
29
|
+
paint.setStrokeWidth(width);
|
|
30
|
+
paint.setAntiAlias(true);
|
|
31
|
+
paint.setStrokeCap(_reactNativeSkia.StrokeCap.Round);
|
|
32
|
+
paint.setStrokeJoin(_reactNativeSkia.StrokeJoin.Round);
|
|
33
|
+
return paint;
|
|
34
|
+
}
|
|
35
|
+
function fillPaint(color) {
|
|
36
|
+
const paint = _reactNativeSkia.Skia.Paint();
|
|
37
|
+
paint.setColor(_reactNativeSkia.Skia.Color(color));
|
|
38
|
+
paint.setStyle(_reactNativeSkia.PaintStyle.Fill);
|
|
39
|
+
paint.setAntiAlias(true);
|
|
40
|
+
return paint;
|
|
41
|
+
}
|
|
42
|
+
function drawAnnotation(canvas, a) {
|
|
43
|
+
const center = (0, _geometry.annotationCenter)(a);
|
|
44
|
+
canvas.save();
|
|
45
|
+
if (a.rotation) {
|
|
46
|
+
canvas.translate(center.x, center.y);
|
|
47
|
+
canvas.rotate(a.rotation * RAD_TO_DEG, 0, 0);
|
|
48
|
+
canvas.translate(-center.x, -center.y);
|
|
49
|
+
}
|
|
50
|
+
switch (a.type) {
|
|
51
|
+
case 'circle':
|
|
52
|
+
{
|
|
53
|
+
if (a.fill) {
|
|
54
|
+
canvas.drawCircle(a.center.x, a.center.y, a.radius, fillPaint(a.fill));
|
|
55
|
+
}
|
|
56
|
+
canvas.drawCircle(a.center.x, a.center.y, a.radius, strokePaint(a.strokeColor, a.strokeWidth));
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
case 'arrow':
|
|
60
|
+
{
|
|
61
|
+
const path = (0, _geometry.buildArrowPath)(a.start, a.end, a.headSize);
|
|
62
|
+
canvas.drawPath(path, strokePaint(a.strokeColor, a.strokeWidth));
|
|
63
|
+
path.dispose?.();
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
case 'marker':
|
|
67
|
+
{
|
|
68
|
+
const rect = _reactNativeSkia.Skia.XYWHRect(a.rect.x, a.rect.y, a.rect.width, a.rect.height);
|
|
69
|
+
canvas.drawRect(rect, fillPaint((0, _color.withOpacity)(a.color, a.opacity)));
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
case 'freehand':
|
|
73
|
+
{
|
|
74
|
+
const path = (0, _geometry.buildFreehandPath)(a.points);
|
|
75
|
+
canvas.drawPath(path, strokePaint(a.strokeColor, a.strokeWidth));
|
|
76
|
+
path.dispose?.();
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
case 'text':
|
|
80
|
+
{
|
|
81
|
+
const font = (0, _reactNativeSkia.matchFont)({
|
|
82
|
+
fontFamily: 'sans-serif',
|
|
83
|
+
fontSize: a.fontSize,
|
|
84
|
+
fontStyle: 'normal',
|
|
85
|
+
fontWeight: 'normal'
|
|
86
|
+
});
|
|
87
|
+
const paint = fillPaint(a.color);
|
|
88
|
+
const lineHeight = a.fontSize * 1.2;
|
|
89
|
+
a.text.split('\n').forEach((line, i) => {
|
|
90
|
+
canvas.drawText(line, a.origin.x, a.origin.y + a.fontSize + i * lineHeight, paint, font);
|
|
91
|
+
});
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
canvas.restore();
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=drawScene.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_selectors","_geometry","_color","RAD_TO_DEG","Math","PI","drawScene","canvas","image","annotations","drawImage","a","sortedByZ","drawAnnotation","strokePaint","color","width","paint","Skia","Paint","setColor","Color","setStyle","PaintStyle","Stroke","setStrokeWidth","setAntiAlias","setStrokeCap","StrokeCap","Round","setStrokeJoin","StrokeJoin","fillPaint","Fill","center","annotationCenter","save","rotation","translate","x","y","rotate","type","fill","drawCircle","radius","strokeColor","strokeWidth","path","buildArrowPath","start","end","headSize","drawPath","dispose","rect","XYWHRect","height","drawRect","withOpacity","opacity","buildFreehandPath","points","font","matchFont","fontFamily","fontSize","fontStyle","fontWeight","lineHeight","text","split","forEach","line","i","drawText","origin","restore"],"sourceRoot":"..\\..\\..\\src","sources":["export/drawScene.ts"],"mappings":"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","ignoreList":[]}
|