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,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "annotationBounds", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _geometryPure.annotationBounds;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "annotationCenter", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _geometryPure.annotationCenter;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
exports.buildArrowPath = buildArrowPath;
|
|
19
|
+
exports.buildFreehandPath = buildFreehandPath;
|
|
20
|
+
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
21
|
+
var _geometryPure = require("./geometryPure");
|
|
22
|
+
// Re-export the pure helpers so existing imports from './geometry' keep working.
|
|
23
|
+
// (Worklet/test-safe versions with no Skia dependency live in ./geometryPure.)
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Build a Skia path for an arrow (shaft + two arrowhead barbs).
|
|
27
|
+
* Not a worklet — it allocates an `SkPath` (a Skia object) on the JS thread.
|
|
28
|
+
*/
|
|
29
|
+
function buildArrowPath(start, end, headSize) {
|
|
30
|
+
const path = _reactNativeSkia.Skia.Path.Make();
|
|
31
|
+
path.moveTo(start.x, start.y);
|
|
32
|
+
path.lineTo(end.x, end.y);
|
|
33
|
+
const angle = Math.atan2(end.y - start.y, end.x - start.x);
|
|
34
|
+
const barb = Math.PI * 5 / 6; // 150° from the shaft direction
|
|
35
|
+
const b1 = {
|
|
36
|
+
x: end.x + headSize * Math.cos(angle + barb),
|
|
37
|
+
y: end.y + headSize * Math.sin(angle + barb)
|
|
38
|
+
};
|
|
39
|
+
const b2 = {
|
|
40
|
+
x: end.x + headSize * Math.cos(angle - barb),
|
|
41
|
+
y: end.y + headSize * Math.sin(angle - barb)
|
|
42
|
+
};
|
|
43
|
+
path.moveTo(end.x, end.y);
|
|
44
|
+
path.lineTo(b1.x, b1.y);
|
|
45
|
+
path.moveTo(end.x, end.y);
|
|
46
|
+
path.lineTo(b2.x, b2.y);
|
|
47
|
+
return path;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** Build a smoothed (quadratic) path through freehand points. */
|
|
51
|
+
function buildFreehandPath(points) {
|
|
52
|
+
const path = _reactNativeSkia.Skia.Path.Make();
|
|
53
|
+
if (points.length === 0) {
|
|
54
|
+
return path;
|
|
55
|
+
}
|
|
56
|
+
path.moveTo(points[0].x, points[0].y);
|
|
57
|
+
if (points.length === 1) {
|
|
58
|
+
// Draw a dot.
|
|
59
|
+
path.lineTo(points[0].x + 0.01, points[0].y + 0.01);
|
|
60
|
+
return path;
|
|
61
|
+
}
|
|
62
|
+
for (let i = 1; i < points.length - 1; i++) {
|
|
63
|
+
const p = points[i];
|
|
64
|
+
const next = points[i + 1];
|
|
65
|
+
const midX = (p.x + next.x) / 2;
|
|
66
|
+
const midY = (p.y + next.y) / 2;
|
|
67
|
+
path.quadTo(p.x, p.y, midX, midY);
|
|
68
|
+
}
|
|
69
|
+
const last = points[points.length - 1];
|
|
70
|
+
path.lineTo(last.x, last.y);
|
|
71
|
+
return path;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=geometry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_geometryPure","buildArrowPath","start","end","headSize","path","Skia","Path","Make","moveTo","x","y","lineTo","angle","Math","atan2","barb","PI","b1","cos","sin","b2","buildFreehandPath","points","length","i","p","next","midX","midY","quadTo","last"],"sourceRoot":"..\\..\\..\\src","sources":["annotations/geometry.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
|
+
exports.annotationBounds = annotationBounds;
|
|
7
|
+
exports.annotationCenter = annotationCenter;
|
|
8
|
+
var _math = require("../utils/math");
|
|
9
|
+
/**
|
|
10
|
+
* Pure annotation geometry (no Skia imports) so it is safe to use from worklets
|
|
11
|
+
* AND from plain unit tests without loading the native Skia module.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/** Center of an annotation in image space (used as rotation/scale origin). */
|
|
15
|
+
function annotationCenter(a) {
|
|
16
|
+
'worklet';
|
|
17
|
+
|
|
18
|
+
switch (a.type) {
|
|
19
|
+
case 'circle':
|
|
20
|
+
return {
|
|
21
|
+
x: a.center.x,
|
|
22
|
+
y: a.center.y
|
|
23
|
+
};
|
|
24
|
+
case 'arrow':
|
|
25
|
+
return {
|
|
26
|
+
x: (a.start.x + a.end.x) / 2,
|
|
27
|
+
y: (a.start.y + a.end.y) / 2
|
|
28
|
+
};
|
|
29
|
+
case 'marker':
|
|
30
|
+
return {
|
|
31
|
+
x: a.rect.x + a.rect.width / 2,
|
|
32
|
+
y: a.rect.y + a.rect.height / 2
|
|
33
|
+
};
|
|
34
|
+
case 'freehand':
|
|
35
|
+
{
|
|
36
|
+
const b = (0, _math.boundsOfPoints)(a.points);
|
|
37
|
+
return {
|
|
38
|
+
x: b.x + b.width / 2,
|
|
39
|
+
y: b.y + b.height / 2
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
case 'text':
|
|
43
|
+
return {
|
|
44
|
+
x: a.origin.x + a.width / 2,
|
|
45
|
+
y: a.origin.y + a.fontSize * 1.2 / 2
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Axis-aligned bounding box of an annotation in its LOCAL (unrotated) frame.
|
|
52
|
+
* The selection overlay rotates this box by `annotation.rotation` about the
|
|
53
|
+
* center when drawing handles.
|
|
54
|
+
*/
|
|
55
|
+
function annotationBounds(a) {
|
|
56
|
+
'worklet';
|
|
57
|
+
|
|
58
|
+
switch (a.type) {
|
|
59
|
+
case 'circle':
|
|
60
|
+
return {
|
|
61
|
+
x: a.center.x - a.radius,
|
|
62
|
+
y: a.center.y - a.radius,
|
|
63
|
+
width: a.radius * 2,
|
|
64
|
+
height: a.radius * 2
|
|
65
|
+
};
|
|
66
|
+
case 'arrow':
|
|
67
|
+
{
|
|
68
|
+
const pad = a.headSize + a.strokeWidth;
|
|
69
|
+
const minX = Math.min(a.start.x, a.end.x) - pad;
|
|
70
|
+
const minY = Math.min(a.start.y, a.end.y) - pad;
|
|
71
|
+
const maxX = Math.max(a.start.x, a.end.x) + pad;
|
|
72
|
+
const maxY = Math.max(a.start.y, a.end.y) + pad;
|
|
73
|
+
return {
|
|
74
|
+
x: minX,
|
|
75
|
+
y: minY,
|
|
76
|
+
width: maxX - minX,
|
|
77
|
+
height: maxY - minY
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
case 'marker':
|
|
81
|
+
return {
|
|
82
|
+
...a.rect
|
|
83
|
+
};
|
|
84
|
+
case 'freehand':
|
|
85
|
+
{
|
|
86
|
+
const b = (0, _math.boundsOfPoints)(a.points);
|
|
87
|
+
const pad = a.strokeWidth / 2;
|
|
88
|
+
return {
|
|
89
|
+
x: b.x - pad,
|
|
90
|
+
y: b.y - pad,
|
|
91
|
+
width: b.width + pad * 2,
|
|
92
|
+
height: b.height + pad * 2
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
case 'text':
|
|
96
|
+
return {
|
|
97
|
+
x: a.origin.x,
|
|
98
|
+
y: a.origin.y,
|
|
99
|
+
width: a.width,
|
|
100
|
+
height: a.fontSize * 1.2
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=geometryPure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_math","require","annotationCenter","a","type","x","center","y","start","end","rect","width","height","b","boundsOfPoints","points","origin","fontSize","annotationBounds","radius","pad","headSize","strokeWidth","minX","Math","min","minY","maxX","max","maxY"],"sourceRoot":"..\\..\\..\\src","sources":["annotations/geometryPure.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AnnotationLayer = AnnotationLayer;
|
|
7
|
+
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
8
|
+
var _reactNativeReanimated = require("react-native-reanimated");
|
|
9
|
+
var _selectors = require("../state/selectors");
|
|
10
|
+
var _AnnotationView = require("../annotations/AnnotationView");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
/**
|
|
13
|
+
* Renders all committed annotations in paint order. The selected annotation is
|
|
14
|
+
* wrapped in a Group whose transform is driven by the `live` shared values, so
|
|
15
|
+
* move/resize/rotate previews run on the UI thread with zero React re-renders.
|
|
16
|
+
* When idle the live transform is identity, so this is a no-op visually.
|
|
17
|
+
*/
|
|
18
|
+
function AnnotationLayer({
|
|
19
|
+
editor
|
|
20
|
+
}) {
|
|
21
|
+
const {
|
|
22
|
+
annotations,
|
|
23
|
+
selectedId,
|
|
24
|
+
live,
|
|
25
|
+
editingTextId
|
|
26
|
+
} = editor;
|
|
27
|
+
const liveTransform = (0, _reactNativeReanimated.useDerivedValue)(() => [{
|
|
28
|
+
translateX: live.tx.value
|
|
29
|
+
}, {
|
|
30
|
+
translateY: live.ty.value
|
|
31
|
+
}, {
|
|
32
|
+
rotate: live.rotate.value
|
|
33
|
+
}, {
|
|
34
|
+
scale: live.scale.value
|
|
35
|
+
}]);
|
|
36
|
+
const liveOrigin = (0, _reactNativeReanimated.useDerivedValue)(() => live.origin.value);
|
|
37
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
38
|
+
children: (0, _selectors.sortedByZ)(annotations).map(a => {
|
|
39
|
+
// Hide the text annotation currently being edited in the native overlay.
|
|
40
|
+
if (a.type === 'text' && a.id === editingTextId) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
if (a.id === selectedId) {
|
|
44
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Group, {
|
|
45
|
+
origin: liveOrigin,
|
|
46
|
+
transform: liveTransform,
|
|
47
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_AnnotationView.AnnotationView, {
|
|
48
|
+
a: a
|
|
49
|
+
})
|
|
50
|
+
}, a.id);
|
|
51
|
+
}
|
|
52
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_AnnotationView.AnnotationView, {
|
|
53
|
+
a: a
|
|
54
|
+
}, a.id);
|
|
55
|
+
})
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=AnnotationLayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_reactNativeReanimated","_selectors","_AnnotationView","_jsxRuntime","AnnotationLayer","editor","annotations","selectedId","live","editingTextId","liveTransform","useDerivedValue","translateX","tx","value","translateY","ty","rotate","scale","liveOrigin","origin","jsx","Fragment","children","sortedByZ","map","a","type","id","Group","transform","AnnotationView"],"sourceRoot":"..\\..\\..\\src","sources":["canvas/AnnotationLayer.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AAGA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AAA+D,IAAAI,WAAA,GAAAJ,OAAA;AAE/D;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,eAAeA,CAAC;EAAEC;AAAuC,CAAC,EAAE;EAC1E,MAAM;IAAEC,WAAW;IAAEC,UAAU;IAAEC,IAAI;IAAEC;EAAc,CAAC,GAAGJ,MAAM;EAE/D,MAAMK,aAAa,GAAG,IAAAC,sCAAe,EAAC,MAAM,CAC1C;IAAEC,UAAU,EAAEJ,IAAI,CAACK,EAAE,CAACC;EAAM,CAAC,EAC7B;IAAEC,UAAU,EAAEP,IAAI,CAACQ,EAAE,CAACF;EAAM,CAAC,EAC7B;IAAEG,MAAM,EAAET,IAAI,CAACS,MAAM,CAACH;EAAM,CAAC,EAC7B;IAAEI,KAAK,EAAEV,IAAI,CAACU,KAAK,CAACJ;EAAM,CAAC,CAC5B,CAAC;EACF,MAAMK,UAAU,GAAG,IAAAR,sCAAe,EAAC,MAAMH,IAAI,CAACY,MAAM,CAACN,KAAK,CAAC;EAE3D,oBACE,IAAAX,WAAA,CAAAkB,GAAA,EAAAlB,WAAA,CAAAmB,QAAA;IAAAC,QAAA,EACG,IAAAC,oBAAS,EAAClB,WAAW,CAAC,CAACmB,GAAG,CAAEC,CAAC,IAAK;MACjC;MACA,IAAIA,CAAC,CAACC,IAAI,KAAK,MAAM,IAAID,CAAC,CAACE,EAAE,KAAKnB,aAAa,EAAE;QAC/C,OAAO,IAAI;MACb;MACA,IAAIiB,CAAC,CAACE,EAAE,KAAKrB,UAAU,EAAE;QACvB,oBACE,IAAAJ,WAAA,CAAAkB,GAAA,EAACvB,gBAAA,CAAA+B,KAAK;UAAYT,MAAM,EAAED,UAAW;UAACW,SAAS,EAAEpB,aAAc;UAAAa,QAAA,eAC7D,IAAApB,WAAA,CAAAkB,GAAA,EAACnB,eAAA,CAAA6B,cAAc;YAACL,CAAC,EAAEA;UAAE,CAAE;QAAC,GADdA,CAAC,CAACE,EAEP,CAAC;MAEZ;MACA,oBAAO,IAAAzB,WAAA,CAAAkB,GAAA,EAACnB,eAAA,CAAA6B,cAAc;QAAYL,CAAC,EAAEA;MAAE,GAAXA,CAAC,CAACE,EAAW,CAAC;IAC5C,CAAC;EAAC,CACF,CAAC;AAEP","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.BaseImageLayer = BaseImageLayer;
|
|
7
|
+
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
8
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
9
|
+
/**
|
|
10
|
+
* Draws the base image in IMAGE space (x=0,y=0, native width/height). The parent
|
|
11
|
+
* scene `<Group>` maps it onto the screen, so this same layer renders identically
|
|
12
|
+
* off-screen at full resolution during export.
|
|
13
|
+
*/
|
|
14
|
+
function BaseImageLayer({
|
|
15
|
+
image,
|
|
16
|
+
size
|
|
17
|
+
}) {
|
|
18
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Image, {
|
|
19
|
+
image: image,
|
|
20
|
+
x: 0,
|
|
21
|
+
y: 0,
|
|
22
|
+
width: size.width,
|
|
23
|
+
height: size.height,
|
|
24
|
+
fit: "fill"
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=BaseImageLayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_jsxRuntime","BaseImageLayer","image","size","jsx","Image","x","y","width","height","fit"],"sourceRoot":"..\\..\\..\\src","sources":["canvas/BaseImageLayer.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAAmD,IAAAC,WAAA,GAAAD,OAAA;AAKnD;AACA;AACA;AACA;AACA;AACO,SAASE,cAAcA,CAAC;EAC7BC,KAAK;EACLC;AAIF,CAAC,EAAE;EACD,oBACE,IAAAH,WAAA,CAAAI,GAAA,EAACN,gBAAA,CAAAO,KAAK;IACJH,KAAK,EAAEA,KAAM;IACbI,CAAC,EAAE,CAAE;IACLC,CAAC,EAAE,CAAE;IACLC,KAAK,EAAEL,IAAI,CAACK,KAAM;IAClBC,MAAM,EAAEN,IAAI,CAACM,MAAO;IACpBC,GAAG,EAAC;EAAM,CACX,CAAC;AAEN","ignoreList":[]}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.CropOverlay = CropOverlay;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
9
|
+
var _reactNativeReanimated = require("react-native-reanimated");
|
|
10
|
+
var _constants = require("../constants");
|
|
11
|
+
var _math = require("../utils/math");
|
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
+
/**
|
|
14
|
+
* Crop UI drawn in screen space: a dimmed full-screen scrim plus the crop
|
|
15
|
+
* rectangle's border and corner handles, which follow `cropRectSV` on the UI
|
|
16
|
+
* thread (works even when the scene is rotated, since the border is a quad).
|
|
17
|
+
*/
|
|
18
|
+
function CropOverlay({
|
|
19
|
+
editor
|
|
20
|
+
}) {
|
|
21
|
+
const {
|
|
22
|
+
tool,
|
|
23
|
+
doc,
|
|
24
|
+
cropRectSV,
|
|
25
|
+
matrixSV,
|
|
26
|
+
imageSize,
|
|
27
|
+
layout
|
|
28
|
+
} = editor;
|
|
29
|
+
|
|
30
|
+
// When entering the crop tool, seed the crop rect from the current scene.
|
|
31
|
+
(0, _react.useEffect)(() => {
|
|
32
|
+
if (tool === 'crop') {
|
|
33
|
+
cropRectSV.value = doc.scene.cropRect ?? {
|
|
34
|
+
x: 0,
|
|
35
|
+
y: 0,
|
|
36
|
+
width: imageSize.width,
|
|
37
|
+
height: imageSize.height
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
41
|
+
}, [tool]);
|
|
42
|
+
const cropPath = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
43
|
+
const r = cropRectSV.value;
|
|
44
|
+
const m = matrixSV.value;
|
|
45
|
+
const p = _reactNativeSkia.Skia.Path.Make();
|
|
46
|
+
const c0 = (0, _math.applyToPoint)(m, {
|
|
47
|
+
x: r.x,
|
|
48
|
+
y: r.y
|
|
49
|
+
});
|
|
50
|
+
const c1 = (0, _math.applyToPoint)(m, {
|
|
51
|
+
x: r.x + r.width,
|
|
52
|
+
y: r.y
|
|
53
|
+
});
|
|
54
|
+
const c2 = (0, _math.applyToPoint)(m, {
|
|
55
|
+
x: r.x + r.width,
|
|
56
|
+
y: r.y + r.height
|
|
57
|
+
});
|
|
58
|
+
const c3 = (0, _math.applyToPoint)(m, {
|
|
59
|
+
x: r.x,
|
|
60
|
+
y: r.y + r.height
|
|
61
|
+
});
|
|
62
|
+
p.moveTo(c0.x, c0.y);
|
|
63
|
+
p.lineTo(c1.x, c1.y);
|
|
64
|
+
p.lineTo(c2.x, c2.y);
|
|
65
|
+
p.lineTo(c3.x, c3.y);
|
|
66
|
+
p.close();
|
|
67
|
+
return p;
|
|
68
|
+
});
|
|
69
|
+
const corners = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
70
|
+
const r = cropRectSV.value;
|
|
71
|
+
const m = matrixSV.value;
|
|
72
|
+
return [(0, _math.applyToPoint)(m, {
|
|
73
|
+
x: r.x,
|
|
74
|
+
y: r.y
|
|
75
|
+
}), (0, _math.applyToPoint)(m, {
|
|
76
|
+
x: r.x + r.width,
|
|
77
|
+
y: r.y
|
|
78
|
+
}), (0, _math.applyToPoint)(m, {
|
|
79
|
+
x: r.x + r.width,
|
|
80
|
+
y: r.y + r.height
|
|
81
|
+
}), (0, _math.applyToPoint)(m, {
|
|
82
|
+
x: r.x,
|
|
83
|
+
y: r.y + r.height
|
|
84
|
+
})];
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
// Per-corner x/y derived values (declared unconditionally — rules of hooks).
|
|
88
|
+
const c0x = (0, _reactNativeReanimated.useDerivedValue)(() => corners.value[0].x);
|
|
89
|
+
const c0y = (0, _reactNativeReanimated.useDerivedValue)(() => corners.value[0].y);
|
|
90
|
+
const c1x = (0, _reactNativeReanimated.useDerivedValue)(() => corners.value[1].x);
|
|
91
|
+
const c1y = (0, _reactNativeReanimated.useDerivedValue)(() => corners.value[1].y);
|
|
92
|
+
const c2x = (0, _reactNativeReanimated.useDerivedValue)(() => corners.value[2].x);
|
|
93
|
+
const c2y = (0, _reactNativeReanimated.useDerivedValue)(() => corners.value[2].y);
|
|
94
|
+
const c3x = (0, _reactNativeReanimated.useDerivedValue)(() => corners.value[3].x);
|
|
95
|
+
const c3y = (0, _reactNativeReanimated.useDerivedValue)(() => corners.value[3].y);
|
|
96
|
+
if (tool !== 'crop') {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
const r = _constants.HANDLE_SIZE / 2;
|
|
100
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Group, {
|
|
101
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Rect, {
|
|
102
|
+
x: 0,
|
|
103
|
+
y: 0,
|
|
104
|
+
width: layout.width,
|
|
105
|
+
height: layout.height,
|
|
106
|
+
color: "rgba(0,0,0,0.45)"
|
|
107
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Path, {
|
|
108
|
+
path: cropPath,
|
|
109
|
+
color: "#FFFFFF",
|
|
110
|
+
style: "stroke",
|
|
111
|
+
strokeWidth: 2
|
|
112
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Circle, {
|
|
113
|
+
cx: c0x,
|
|
114
|
+
cy: c0y,
|
|
115
|
+
r: r,
|
|
116
|
+
color: "#FFFFFF"
|
|
117
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Circle, {
|
|
118
|
+
cx: c1x,
|
|
119
|
+
cy: c1y,
|
|
120
|
+
r: r,
|
|
121
|
+
color: "#FFFFFF"
|
|
122
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Circle, {
|
|
123
|
+
cx: c2x,
|
|
124
|
+
cy: c2y,
|
|
125
|
+
r: r,
|
|
126
|
+
color: "#FFFFFF"
|
|
127
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Circle, {
|
|
128
|
+
cx: c3x,
|
|
129
|
+
cy: c3y,
|
|
130
|
+
r: r,
|
|
131
|
+
color: "#FFFFFF"
|
|
132
|
+
})]
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=CropOverlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNativeSkia","_reactNativeReanimated","_constants","_math","_jsxRuntime","CropOverlay","editor","tool","doc","cropRectSV","matrixSV","imageSize","layout","useEffect","value","scene","cropRect","x","y","width","height","cropPath","useDerivedValue","r","m","p","Skia","Path","Make","c0","applyToPoint","c1","c2","c3","moveTo","lineTo","close","corners","c0x","c0y","c1x","c1y","c2x","c2y","c3x","c3y","HANDLE_SIZE","jsxs","Group","children","jsx","Rect","color","path","style","strokeWidth","Circle","cx","cy"],"sourceRoot":"..\\..\\..\\src","sources":["canvas/CropOverlay.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.EditorCanvas = EditorCanvas;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
10
|
+
var _reactNativeGestureHandler = require("react-native-gesture-handler");
|
|
11
|
+
var _EditorContext = require("../context/EditorContext");
|
|
12
|
+
var _math = require("../utils/math");
|
|
13
|
+
var _useEditorGestures = require("../gestures/useEditorGestures");
|
|
14
|
+
var _useCropGesture = require("../gestures/useCropGesture");
|
|
15
|
+
var _BaseImageLayer = require("./BaseImageLayer");
|
|
16
|
+
var _AnnotationLayer = require("./AnnotationLayer");
|
|
17
|
+
var _InFlightLayer = require("./InFlightLayer");
|
|
18
|
+
var _SelectionOverlay = require("./SelectionOverlay");
|
|
19
|
+
var _CropOverlay = require("./CropOverlay");
|
|
20
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
|
+
/**
|
|
22
|
+
* The Skia canvas host. Layers, under one scene `<Group>` transform:
|
|
23
|
+
* base image → committed annotations → in-flight draft
|
|
24
|
+
* plus screen-space overlays (selection handles, crop UI). A single composed
|
|
25
|
+
* gesture drives all editing.
|
|
26
|
+
*
|
|
27
|
+
* IMPORTANT: React Context does NOT cross the Skia `<Canvas>` boundary — Skia
|
|
28
|
+
* renders Canvas children with its own reconciler, so a Provider mounted outside
|
|
29
|
+
* the Canvas is invisible inside it. Every Canvas child therefore receives the
|
|
30
|
+
* whole editor value via an `editor` PROP instead of calling `useEditor()`.
|
|
31
|
+
* Also, `<Canvas onLayout>` is unsupported on the New Architecture, so we measure
|
|
32
|
+
* on a wrapping `<View>`.
|
|
33
|
+
*/
|
|
34
|
+
function EditorCanvas({
|
|
35
|
+
image
|
|
36
|
+
}) {
|
|
37
|
+
const editor = (0, _EditorContext.useEditor)();
|
|
38
|
+
const {
|
|
39
|
+
doc,
|
|
40
|
+
imageSize,
|
|
41
|
+
setLayout,
|
|
42
|
+
layout
|
|
43
|
+
} = editor;
|
|
44
|
+
const pan = (0, _useEditorGestures.useEditorGestures)();
|
|
45
|
+
const cropPan = (0, _useCropGesture.useCropGesture)();
|
|
46
|
+
const gesture = (0, _react.useMemo)(() => _reactNativeGestureHandler.Gesture.Race(cropPan, pan), [cropPan, pan]);
|
|
47
|
+
const transform = (0, _react.useMemo)(() => (0, _math.sceneTransforms2d)(doc.scene, imageSize, layout), [doc.scene, imageSize, layout]);
|
|
48
|
+
const onLayout = e => {
|
|
49
|
+
const {
|
|
50
|
+
width,
|
|
51
|
+
height
|
|
52
|
+
} = e.nativeEvent.layout;
|
|
53
|
+
if (width > 0 && height > 0) {
|
|
54
|
+
setLayout({
|
|
55
|
+
width,
|
|
56
|
+
height
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
61
|
+
style: styles.fill,
|
|
62
|
+
onLayout: onLayout,
|
|
63
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector, {
|
|
64
|
+
gesture: gesture,
|
|
65
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Canvas, {
|
|
66
|
+
style: styles.fill,
|
|
67
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Group, {
|
|
68
|
+
transform: transform,
|
|
69
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_BaseImageLayer.BaseImageLayer, {
|
|
70
|
+
image: image,
|
|
71
|
+
size: imageSize
|
|
72
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_AnnotationLayer.AnnotationLayer, {
|
|
73
|
+
editor: editor
|
|
74
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_InFlightLayer.InFlightLayer, {
|
|
75
|
+
editor: editor
|
|
76
|
+
})]
|
|
77
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_SelectionOverlay.SelectionOverlay, {
|
|
78
|
+
editor: editor
|
|
79
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CropOverlay.CropOverlay, {
|
|
80
|
+
editor: editor
|
|
81
|
+
})]
|
|
82
|
+
})
|
|
83
|
+
})
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
const styles = _reactNative.StyleSheet.create({
|
|
87
|
+
fill: {
|
|
88
|
+
flex: 1
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=EditorCanvas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_reactNativeSkia","_reactNativeGestureHandler","_EditorContext","_math","_useEditorGestures","_useCropGesture","_BaseImageLayer","_AnnotationLayer","_InFlightLayer","_SelectionOverlay","_CropOverlay","_jsxRuntime","EditorCanvas","image","editor","useEditor","doc","imageSize","setLayout","layout","pan","useEditorGestures","cropPan","useCropGesture","gesture","useMemo","Gesture","Race","transform","sceneTransforms2d","scene","onLayout","e","width","height","nativeEvent","jsx","View","style","styles","fill","children","GestureDetector","jsxs","Canvas","Group","BaseImageLayer","size","AnnotationLayer","InFlightLayer","SelectionOverlay","CropOverlay","StyleSheet","create","flex"],"sourceRoot":"..\\..\\..\\src","sources":["canvas/EditorCanvas.tsx"],"mappings":"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","ignoreList":[]}
|