@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,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ArrowRenderer = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
9
|
+
var _coordinates = require("../utils/coordinates");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
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); }
|
|
12
|
+
/**
|
|
13
|
+
* Build an arrow path.
|
|
14
|
+
* - lineWidth < 8: simple line + triangular head
|
|
15
|
+
* - lineWidth >= 8: filled body with wider triangular head
|
|
16
|
+
*/
|
|
17
|
+
function buildArrowPath(fx, fy, tx, ty, lineWidth) {
|
|
18
|
+
const dx = tx - fx;
|
|
19
|
+
const dy = ty - fy;
|
|
20
|
+
const len = Math.sqrt(dx * dx + dy * dy);
|
|
21
|
+
if (len === 0) return "";
|
|
22
|
+
const angle = Math.atan2(dy, dx);
|
|
23
|
+
const cos = Math.cos(angle);
|
|
24
|
+
const sin = Math.sin(angle);
|
|
25
|
+
if (lineWidth < 8) {
|
|
26
|
+
// Simple arrow: line + triangular head
|
|
27
|
+
const headLen = lineWidth * 2;
|
|
28
|
+
const headW = lineWidth * 2;
|
|
29
|
+
|
|
30
|
+
// Head points
|
|
31
|
+
const hx1 = tx - headLen * cos + headW / 2 * sin;
|
|
32
|
+
const hy1 = ty - headLen * sin - headW / 2 * cos;
|
|
33
|
+
const hx2 = tx - headLen * cos - headW / 2 * sin;
|
|
34
|
+
const hy2 = ty - headLen * sin + headW / 2 * cos;
|
|
35
|
+
return `M ${fx} ${fy} L ${tx} ${ty} ` + `M ${tx} ${ty} L ${hx1} ${hy1} M ${tx} ${ty} L ${hx2} ${hy2}`;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Filled arrow: rectangular body + triangular head
|
|
39
|
+
const headLen = lineWidth * 3;
|
|
40
|
+
const headW = lineWidth * 3;
|
|
41
|
+
const bodyW = lineWidth;
|
|
42
|
+
const bodyLen = Math.max(0, len - headLen);
|
|
43
|
+
|
|
44
|
+
// Body rectangle (in local space: from origin going right)
|
|
45
|
+
// Then transformed via rotation
|
|
46
|
+
const halfBody = bodyW / 2;
|
|
47
|
+
|
|
48
|
+
// Points in local space (arrow points to the right)
|
|
49
|
+
const b1 = {
|
|
50
|
+
x: 0,
|
|
51
|
+
y: -halfBody
|
|
52
|
+
};
|
|
53
|
+
const b2 = {
|
|
54
|
+
x: bodyLen,
|
|
55
|
+
y: -halfBody
|
|
56
|
+
};
|
|
57
|
+
const b3 = {
|
|
58
|
+
x: bodyLen,
|
|
59
|
+
y: halfBody
|
|
60
|
+
};
|
|
61
|
+
const b4 = {
|
|
62
|
+
x: 0,
|
|
63
|
+
y: halfBody
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// Head triangle in local space
|
|
67
|
+
const h1 = {
|
|
68
|
+
x: bodyLen,
|
|
69
|
+
y: -headW / 2
|
|
70
|
+
};
|
|
71
|
+
const h2 = {
|
|
72
|
+
x: len,
|
|
73
|
+
y: 0
|
|
74
|
+
};
|
|
75
|
+
const h3 = {
|
|
76
|
+
x: bodyLen,
|
|
77
|
+
y: headW / 2
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// Transform function: rotate + translate
|
|
81
|
+
const transform = p => ({
|
|
82
|
+
x: fx + p.x * cos - p.y * sin,
|
|
83
|
+
y: fy + p.x * sin + p.y * cos
|
|
84
|
+
});
|
|
85
|
+
const tb1 = transform(b1);
|
|
86
|
+
const tb2 = transform(b2);
|
|
87
|
+
const tb3 = transform(b3);
|
|
88
|
+
const tb4 = transform(b4);
|
|
89
|
+
const th1 = transform(h1);
|
|
90
|
+
const th2 = transform(h2);
|
|
91
|
+
const th3 = transform(h3);
|
|
92
|
+
return `M ${tb1.x} ${tb1.y} L ${tb2.x} ${tb2.y} L ${tb3.x} ${tb3.y} L ${tb4.x} ${tb4.y} Z ` + `M ${th1.x} ${th1.y} L ${th2.x} ${th2.y} L ${th3.x} ${th3.y} Z`;
|
|
93
|
+
}
|
|
94
|
+
const ArrowRenderer = exports.ArrowRenderer = /*#__PURE__*/_react.default.memo(function ArrowRenderer({
|
|
95
|
+
object,
|
|
96
|
+
canvasSize
|
|
97
|
+
}) {
|
|
98
|
+
const from = (0, _react.useMemo)(() => (0, _coordinates.denormalize)(object.from, canvasSize), [object.from, canvasSize]);
|
|
99
|
+
const to = (0, _react.useMemo)(() => (0, _coordinates.denormalize)(object.to, canvasSize), [object.to, canvasSize]);
|
|
100
|
+
const pathString = (0, _react.useMemo)(() => buildArrowPath(from.x, from.y, to.x, to.y, object.lineWidth), [from, to, object.lineWidth]);
|
|
101
|
+
if (!pathString) return null;
|
|
102
|
+
if (object.lineWidth < 8) {
|
|
103
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Path, {
|
|
104
|
+
path: pathString,
|
|
105
|
+
style: "stroke",
|
|
106
|
+
strokeWidth: object.lineWidth,
|
|
107
|
+
color: object.color,
|
|
108
|
+
strokeCap: "round",
|
|
109
|
+
strokeJoin: "round"
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Path, {
|
|
113
|
+
path: pathString,
|
|
114
|
+
style: "fill",
|
|
115
|
+
color: object.color
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=ArrowRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNativeSkia","_coordinates","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","buildArrowPath","fx","fy","tx","ty","lineWidth","dx","dy","len","Math","sqrt","angle","atan2","cos","sin","headLen","headW","hx1","hy1","hx2","hy2","bodyW","bodyLen","max","halfBody","b1","x","y","b2","b3","b4","h1","h2","h3","transform","p","tb1","tb2","tb3","tb4","th1","th2","th3","ArrowRenderer","exports","React","memo","object","canvasSize","from","useMemo","denormalize","to","pathString","jsx","Path","path","style","strokeWidth","color","strokeCap","strokeJoin"],"sourceRoot":"../../../src","sources":["renderers/ArrowRenderer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.CircleRenderer = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
9
|
+
var _coordinates = require("../utils/coordinates");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
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); }
|
|
12
|
+
const CircleRenderer = exports.CircleRenderer = /*#__PURE__*/_react.default.memo(function CircleRenderer({
|
|
13
|
+
object,
|
|
14
|
+
canvasSize
|
|
15
|
+
}) {
|
|
16
|
+
const from = (0, _react.useMemo)(() => (0, _coordinates.denormalize)(object.from, canvasSize), [object.from, canvasSize]);
|
|
17
|
+
const to = (0, _react.useMemo)(() => (0, _coordinates.denormalize)(object.to, canvasSize), [object.to, canvasSize]);
|
|
18
|
+
const rect = (0, _react.useMemo)(() => {
|
|
19
|
+
const x = Math.min(from.x, to.x);
|
|
20
|
+
const y = Math.min(from.y, to.y);
|
|
21
|
+
const width = Math.abs(to.x - from.x);
|
|
22
|
+
const height = Math.abs(to.y - from.y);
|
|
23
|
+
return {
|
|
24
|
+
x,
|
|
25
|
+
y,
|
|
26
|
+
width,
|
|
27
|
+
height
|
|
28
|
+
};
|
|
29
|
+
}, [from, to]);
|
|
30
|
+
const hasFill = object.backgroundColor && object.backgroundAlpha;
|
|
31
|
+
const fillColor = hasFill ? object.backgroundColor.replace(/[\d.]+\)$/, `${object.backgroundAlpha})`) : undefined;
|
|
32
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Group, {
|
|
33
|
+
children: [fillColor && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Oval, {
|
|
34
|
+
x: rect.x,
|
|
35
|
+
y: rect.y,
|
|
36
|
+
width: rect.width,
|
|
37
|
+
height: rect.height,
|
|
38
|
+
color: fillColor,
|
|
39
|
+
style: "fill"
|
|
40
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Oval, {
|
|
41
|
+
x: rect.x,
|
|
42
|
+
y: rect.y,
|
|
43
|
+
width: rect.width,
|
|
44
|
+
height: rect.height,
|
|
45
|
+
color: object.color,
|
|
46
|
+
style: "stroke",
|
|
47
|
+
strokeWidth: object.lineWidth
|
|
48
|
+
})]
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=CircleRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNativeSkia","_coordinates","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CircleRenderer","exports","React","memo","object","canvasSize","from","useMemo","denormalize","to","rect","x","Math","min","y","width","abs","height","hasFill","backgroundColor","backgroundAlpha","fillColor","replace","undefined","jsxs","Group","children","jsx","Oval","color","style","strokeWidth","lineWidth"],"sourceRoot":"../../../src","sources":["renderers/CircleRenderer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.FreehandRenderer = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
9
|
+
var _coordinates = require("../utils/coordinates");
|
|
10
|
+
var _smoothing = require("../utils/smoothing");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
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); }
|
|
13
|
+
const FreehandRenderer = exports.FreehandRenderer = /*#__PURE__*/_react.default.memo(function FreehandRenderer({
|
|
14
|
+
object,
|
|
15
|
+
canvasSize
|
|
16
|
+
}) {
|
|
17
|
+
const pathString = (0, _react.useMemo)(() => {
|
|
18
|
+
const denormalized = (0, _coordinates.denormalizePoints)(object.points, canvasSize);
|
|
19
|
+
return (0, _smoothing.buildSmoothedPath)(denormalized);
|
|
20
|
+
}, [object.points, canvasSize]);
|
|
21
|
+
if (!pathString) return null;
|
|
22
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Path, {
|
|
23
|
+
path: pathString,
|
|
24
|
+
style: "stroke",
|
|
25
|
+
strokeWidth: object.lineWidth,
|
|
26
|
+
color: object.color,
|
|
27
|
+
strokeCap: "round",
|
|
28
|
+
strokeJoin: "round"
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=FreehandRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNativeSkia","_coordinates","_smoothing","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FreehandRenderer","exports","React","memo","object","canvasSize","pathString","useMemo","denormalized","denormalizePoints","points","buildSmoothedPath","jsx","Path","path","style","strokeWidth","lineWidth","color","strokeCap","strokeJoin"],"sourceRoot":"../../../src","sources":["renderers/FreehandRenderer.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAEA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAAuD,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAD,wBAAAM,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAR,uBAAA,YAAAA,CAAAM,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAOhD,MAAMkB,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,gBAAGE,cAAK,CAACC,IAAI,CAAC,SAASH,gBAAgBA,CAAC;EACnEI,MAAM;EACNC;AACqB,CAAC,EAAE;EACxB,MAAMC,UAAU,GAAG,IAAAC,cAAO,EAAC,MAAM;IAC/B,MAAMC,YAAY,GAAG,IAAAC,8BAAiB,EAACL,MAAM,CAACM,MAAM,EAAEL,UAAU,CAAC;IACjE,OAAO,IAAAM,4BAAiB,EAACH,YAAY,CAAC;EACxC,CAAC,EAAE,CAACJ,MAAM,CAACM,MAAM,EAAEL,UAAU,CAAC,CAAC;EAE/B,IAAI,CAACC,UAAU,EAAE,OAAO,IAAI;EAE5B,oBACE,IAAA1B,WAAA,CAAAgC,GAAA,EAACnC,gBAAA,CAAAoC,IAAI;IACHC,IAAI,EAAER,UAAW;IACjBS,KAAK,EAAC,QAAQ;IACdC,WAAW,EAAEZ,MAAM,CAACa,SAAU;IAC9BC,KAAK,EAAEd,MAAM,CAACc,KAAM;IACpBC,SAAS,EAAC,OAAO;IACjBC,UAAU,EAAC;EAAO,CACnB,CAAC;AAEN,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ShapeInProgress = exports.PolygonInProgress = exports.FreehandInProgress = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
9
|
+
var _reactNativeReanimated = require("react-native-reanimated");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
// ─── Freehand In-Progress ────────────────────────────────────────────────────
|
|
13
|
+
|
|
14
|
+
// Empty path constant used as fallback when not drawing
|
|
15
|
+
const EMPTY_PATH = _reactNativeSkia.Skia.Path.Make();
|
|
16
|
+
const FreehandInProgress = exports.FreehandInProgress = /*#__PURE__*/_react.default.memo(function FreehandInProgress({
|
|
17
|
+
path,
|
|
18
|
+
color,
|
|
19
|
+
lineWidth
|
|
20
|
+
}) {
|
|
21
|
+
const safePath = (0, _reactNativeReanimated.useDerivedValue)(() => path.value ?? EMPTY_PATH);
|
|
22
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Path, {
|
|
23
|
+
path: safePath,
|
|
24
|
+
style: "stroke",
|
|
25
|
+
strokeWidth: lineWidth,
|
|
26
|
+
color: color,
|
|
27
|
+
strokeCap: "round",
|
|
28
|
+
strokeJoin: "round"
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
// ─── Polygon In-Progress ─────────────────────────────────────────────────────
|
|
33
|
+
|
|
34
|
+
const POLYGON_VERTEX_RADIUS = 8;
|
|
35
|
+
const POLYGON_VERTEX_COLOR = "rgba(0, 122, 255, 0.8)";
|
|
36
|
+
const PolygonInProgress = exports.PolygonInProgress = /*#__PURE__*/_react.default.memo(function PolygonInProgress({
|
|
37
|
+
pointsFlat,
|
|
38
|
+
pointCount
|
|
39
|
+
}) {
|
|
40
|
+
// Build a path of circles at each vertex using a derived path with addCircle
|
|
41
|
+
const verticesPath = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
42
|
+
const p = _reactNativeSkia.Skia.Path.Make();
|
|
43
|
+
const count = pointCount.value;
|
|
44
|
+
const flat = pointsFlat.value;
|
|
45
|
+
for (let i = 0; i < count; i++) {
|
|
46
|
+
const cx = flat[i * 2];
|
|
47
|
+
const cy = flat[i * 2 + 1];
|
|
48
|
+
p.addCircle(cx, cy, POLYGON_VERTEX_RADIUS);
|
|
49
|
+
}
|
|
50
|
+
return p;
|
|
51
|
+
});
|
|
52
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Path, {
|
|
53
|
+
path: verticesPath,
|
|
54
|
+
style: "fill",
|
|
55
|
+
color: POLYGON_VERTEX_COLOR
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// ─── Shape In-Progress ───────────────────────────────────────────────────────
|
|
60
|
+
|
|
61
|
+
const ShapeInProgress = exports.ShapeInProgress = /*#__PURE__*/_react.default.memo(function ShapeInProgress({
|
|
62
|
+
shapeType,
|
|
63
|
+
startX,
|
|
64
|
+
startY,
|
|
65
|
+
currentX,
|
|
66
|
+
currentY,
|
|
67
|
+
color,
|
|
68
|
+
lineWidth,
|
|
69
|
+
fillColor,
|
|
70
|
+
fillAlpha,
|
|
71
|
+
isDrawing
|
|
72
|
+
}) {
|
|
73
|
+
// Hide when not actively drawing (prevents ghost shapes when switching tools)
|
|
74
|
+
const opacity = (0, _reactNativeReanimated.useDerivedValue)(() => isDrawing.value ? 1 : 0);
|
|
75
|
+
|
|
76
|
+
// Derived values for the shape bounds
|
|
77
|
+
const x = (0, _reactNativeReanimated.useDerivedValue)(() => Math.min(startX.value, currentX.value));
|
|
78
|
+
const y = (0, _reactNativeReanimated.useDerivedValue)(() => Math.min(startY.value, currentY.value));
|
|
79
|
+
const width = (0, _reactNativeReanimated.useDerivedValue)(() => Math.abs(currentX.value - startX.value));
|
|
80
|
+
const height = (0, _reactNativeReanimated.useDerivedValue)(() => Math.abs(currentY.value - startY.value));
|
|
81
|
+
|
|
82
|
+
// Derived point values for Line-based shapes
|
|
83
|
+
const p1 = (0, _reactNativeReanimated.useDerivedValue)(() => ({
|
|
84
|
+
x: startX.value,
|
|
85
|
+
y: startY.value
|
|
86
|
+
}));
|
|
87
|
+
const p2 = (0, _reactNativeReanimated.useDerivedValue)(() => ({
|
|
88
|
+
x: currentX.value,
|
|
89
|
+
y: currentY.value
|
|
90
|
+
}));
|
|
91
|
+
const resolvedFillColor = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
92
|
+
if (!fillColor.value || !isDrawing.value) return "transparent";
|
|
93
|
+
return fillColor.value.replace(/[\d.]+\)$/, `${fillAlpha.value})`);
|
|
94
|
+
});
|
|
95
|
+
switch (shapeType) {
|
|
96
|
+
case "line":
|
|
97
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Group, {
|
|
98
|
+
opacity: opacity,
|
|
99
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Line, {
|
|
100
|
+
p1: p1,
|
|
101
|
+
p2: p2,
|
|
102
|
+
color: color,
|
|
103
|
+
style: "stroke",
|
|
104
|
+
strokeWidth: lineWidth,
|
|
105
|
+
strokeCap: "round"
|
|
106
|
+
})
|
|
107
|
+
});
|
|
108
|
+
case "arrow":
|
|
109
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Group, {
|
|
110
|
+
opacity: opacity,
|
|
111
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Line, {
|
|
112
|
+
p1: p1,
|
|
113
|
+
p2: p2,
|
|
114
|
+
color: color,
|
|
115
|
+
style: "stroke",
|
|
116
|
+
strokeWidth: lineWidth,
|
|
117
|
+
strokeCap: "round"
|
|
118
|
+
})
|
|
119
|
+
});
|
|
120
|
+
case "rectangle":
|
|
121
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Group, {
|
|
122
|
+
opacity: opacity,
|
|
123
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Rect, {
|
|
124
|
+
x: x,
|
|
125
|
+
y: y,
|
|
126
|
+
width: width,
|
|
127
|
+
height: height,
|
|
128
|
+
color: resolvedFillColor,
|
|
129
|
+
style: "fill"
|
|
130
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Rect, {
|
|
131
|
+
x: x,
|
|
132
|
+
y: y,
|
|
133
|
+
width: width,
|
|
134
|
+
height: height,
|
|
135
|
+
color: color,
|
|
136
|
+
style: "stroke",
|
|
137
|
+
strokeWidth: lineWidth
|
|
138
|
+
})]
|
|
139
|
+
});
|
|
140
|
+
case "circle":
|
|
141
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Group, {
|
|
142
|
+
opacity: opacity,
|
|
143
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Oval, {
|
|
144
|
+
x: x,
|
|
145
|
+
y: y,
|
|
146
|
+
width: width,
|
|
147
|
+
height: height,
|
|
148
|
+
color: resolvedFillColor,
|
|
149
|
+
style: "fill"
|
|
150
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Oval, {
|
|
151
|
+
x: x,
|
|
152
|
+
y: y,
|
|
153
|
+
width: width,
|
|
154
|
+
height: height,
|
|
155
|
+
color: color,
|
|
156
|
+
style: "stroke",
|
|
157
|
+
strokeWidth: lineWidth
|
|
158
|
+
})]
|
|
159
|
+
});
|
|
160
|
+
case "measure":
|
|
161
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Group, {
|
|
162
|
+
opacity: opacity,
|
|
163
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Line, {
|
|
164
|
+
p1: p1,
|
|
165
|
+
p2: p2,
|
|
166
|
+
color: color,
|
|
167
|
+
style: "stroke",
|
|
168
|
+
strokeWidth: lineWidth,
|
|
169
|
+
strokeCap: "round"
|
|
170
|
+
})
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
//# sourceMappingURL=InProgressRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNativeSkia","_reactNativeReanimated","_jsxRuntime","e","__esModule","default","EMPTY_PATH","Skia","Path","Make","FreehandInProgress","exports","React","memo","path","color","lineWidth","safePath","useDerivedValue","value","jsx","style","strokeWidth","strokeCap","strokeJoin","POLYGON_VERTEX_RADIUS","POLYGON_VERTEX_COLOR","PolygonInProgress","pointsFlat","pointCount","verticesPath","p","count","flat","i","cx","cy","addCircle","ShapeInProgress","shapeType","startX","startY","currentX","currentY","fillColor","fillAlpha","isDrawing","opacity","x","Math","min","y","width","abs","height","p1","p2","resolvedFillColor","replace","Group","children","Line","jsxs","Rect","Oval"],"sourceRoot":"../../../src","sources":["renderers/InProgressRenderer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.LineRenderer = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
9
|
+
var _coordinates = require("../utils/coordinates");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
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); }
|
|
12
|
+
const LineRenderer = exports.LineRenderer = /*#__PURE__*/_react.default.memo(function LineRenderer({
|
|
13
|
+
object,
|
|
14
|
+
canvasSize
|
|
15
|
+
}) {
|
|
16
|
+
const from = (0, _react.useMemo)(() => (0, _coordinates.denormalize)(object.from, canvasSize), [object.from, canvasSize]);
|
|
17
|
+
const to = (0, _react.useMemo)(() => (0, _coordinates.denormalize)(object.to, canvasSize), [object.to, canvasSize]);
|
|
18
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Line, {
|
|
19
|
+
p1: from,
|
|
20
|
+
p2: to,
|
|
21
|
+
color: object.color,
|
|
22
|
+
style: "stroke",
|
|
23
|
+
strokeWidth: object.lineWidth,
|
|
24
|
+
strokeCap: "round"
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=LineRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNativeSkia","_coordinates","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","LineRenderer","exports","React","memo","object","canvasSize","from","useMemo","denormalize","to","jsx","Line","p1","p2","color","style","strokeWidth","lineWidth","strokeCap"],"sourceRoot":"../../../src","sources":["renderers/LineRenderer.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAEA,IAAAE,YAAA,GAAAF,OAAA;AAAmD,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAO5C,MAAMkB,YAAY,GAAAC,OAAA,CAAAD,YAAA,gBAAGE,cAAK,CAACC,IAAI,CAAC,SAASH,YAAYA,CAAC;EAC3DI,MAAM;EACNC;AACiB,CAAC,EAAE;EACpB,MAAMC,IAAI,GAAG,IAAAC,cAAO,EAClB,MAAM,IAAAC,wBAAW,EAACJ,MAAM,CAACE,IAAI,EAAED,UAAU,CAAC,EAC1C,CAACD,MAAM,CAACE,IAAI,EAAED,UAAU,CAC1B,CAAC;EACD,MAAMI,EAAE,GAAG,IAAAF,cAAO,EAChB,MAAM,IAAAC,wBAAW,EAACJ,MAAM,CAACK,EAAE,EAAEJ,UAAU,CAAC,EACxC,CAACD,MAAM,CAACK,EAAE,EAAEJ,UAAU,CACxB,CAAC;EAED,oBACE,IAAAzB,WAAA,CAAA8B,GAAA,EAAChC,gBAAA,CAAAiC,IAAQ;IACPC,EAAE,EAAEN,IAAK;IACTO,EAAE,EAAEJ,EAAG;IACPK,KAAK,EAAEV,MAAM,CAACU,KAAM;IACpBC,KAAK,EAAC,QAAQ;IACdC,WAAW,EAAEZ,MAAM,CAACa,SAAU;IAC9BC,SAAS,EAAC;EAAO,CAClB,CAAC;AAEN,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.MeasurementRenderer = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
10
|
+
var _coordinates = require("../utils/coordinates");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
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); }
|
|
13
|
+
const FONT_FAMILY = _reactNative.Platform.OS === "android" ? "sans-serif" : "System";
|
|
14
|
+
const TEXT_GAP_PADDING = 6;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Build a measurement / cotation path with a gap in the middle for the label.
|
|
18
|
+
* - Two inward-pointing arrowheads
|
|
19
|
+
* - Perpendicular extension lines at endpoints
|
|
20
|
+
* - Main line split in two halves around a central gap
|
|
21
|
+
*/
|
|
22
|
+
function buildMeasurementPath(fx, fy, tx, ty, lineWidth, style, gapHalfWidth) {
|
|
23
|
+
const dx = tx - fx;
|
|
24
|
+
const dy = ty - fy;
|
|
25
|
+
const len = Math.sqrt(dx * dx + dy * dy);
|
|
26
|
+
if (len === 0) return "";
|
|
27
|
+
const angle = Math.atan2(dy, dx);
|
|
28
|
+
const cos = Math.cos(angle);
|
|
29
|
+
const sin = Math.sin(angle);
|
|
30
|
+
const perpCos = Math.cos(angle + Math.PI / 2);
|
|
31
|
+
const perpSin = Math.sin(angle + Math.PI / 2);
|
|
32
|
+
const headLen = Math.min(lineWidth * 3, len / 4);
|
|
33
|
+
const headW = lineWidth * 2;
|
|
34
|
+
const extLen = lineWidth * 4;
|
|
35
|
+
|
|
36
|
+
// Midpoint
|
|
37
|
+
const mx = (fx + tx) / 2;
|
|
38
|
+
const my = (fy + ty) / 2;
|
|
39
|
+
let svg = "";
|
|
40
|
+
|
|
41
|
+
// Main line — split into two segments with gap
|
|
42
|
+
if (gapHalfWidth > 0 && len > gapHalfWidth * 2) {
|
|
43
|
+
const gapStartX = mx - gapHalfWidth * cos;
|
|
44
|
+
const gapStartY = my - gapHalfWidth * sin;
|
|
45
|
+
const gapEndX = mx + gapHalfWidth * cos;
|
|
46
|
+
const gapEndY = my + gapHalfWidth * sin;
|
|
47
|
+
svg += `M ${fx} ${fy} L ${gapStartX} ${gapStartY} `;
|
|
48
|
+
svg += `M ${gapEndX} ${gapEndY} L ${tx} ${ty} `;
|
|
49
|
+
} else {
|
|
50
|
+
svg += `M ${fx} ${fy} L ${tx} ${ty} `;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Arrowhead at "from" pointing toward "to"
|
|
54
|
+
const ah1x = fx + headLen * cos + headW / 2 * perpCos;
|
|
55
|
+
const ah1y = fy + headLen * sin + headW / 2 * perpSin;
|
|
56
|
+
const ah2x = fx + headLen * cos - headW / 2 * perpCos;
|
|
57
|
+
const ah2y = fy + headLen * sin - headW / 2 * perpSin;
|
|
58
|
+
svg += `M ${fx} ${fy} L ${ah1x} ${ah1y} M ${fx} ${fy} L ${ah2x} ${ah2y} `;
|
|
59
|
+
|
|
60
|
+
// Arrowhead at "to" pointing toward "from"
|
|
61
|
+
const bh1x = tx - headLen * cos + headW / 2 * perpCos;
|
|
62
|
+
const bh1y = ty - headLen * sin + headW / 2 * perpSin;
|
|
63
|
+
const bh2x = tx - headLen * cos - headW / 2 * perpCos;
|
|
64
|
+
const bh2y = ty - headLen * sin - headW / 2 * perpSin;
|
|
65
|
+
svg += `M ${tx} ${ty} L ${bh1x} ${bh1y} M ${tx} ${ty} L ${bh2x} ${bh2y} `;
|
|
66
|
+
|
|
67
|
+
// Extension lines (perpendicular to the main line at each endpoint)
|
|
68
|
+
if (style === 0 || style === 2) {
|
|
69
|
+
svg += `M ${fx + extLen * perpCos} ${fy + extLen * perpSin} L ${fx - extLen * perpCos} ${fy - extLen * perpSin} `;
|
|
70
|
+
svg += `M ${tx + extLen * perpCos} ${ty + extLen * perpSin} L ${tx - extLen * perpCos} ${ty - extLen * perpSin} `;
|
|
71
|
+
}
|
|
72
|
+
return svg;
|
|
73
|
+
}
|
|
74
|
+
const MeasurementRenderer = exports.MeasurementRenderer = /*#__PURE__*/_react.default.memo(function MeasurementRenderer({
|
|
75
|
+
object,
|
|
76
|
+
canvasSize
|
|
77
|
+
}) {
|
|
78
|
+
const from = (0, _react.useMemo)(() => (0, _coordinates.denormalize)(object.from, canvasSize), [object.from, canvasSize]);
|
|
79
|
+
const to = (0, _react.useMemo)(() => (0, _coordinates.denormalize)(object.to, canvasSize), [object.to, canvasSize]);
|
|
80
|
+
const labelText = `${object.text}${object.unit}`;
|
|
81
|
+
const hasLabel = object.text.length > 0;
|
|
82
|
+
const fontSize = Math.max(14, object.lineWidth * 3);
|
|
83
|
+
const font = (0, _react.useMemo)(() => (0, _reactNativeSkia.matchFont)({
|
|
84
|
+
fontFamily: FONT_FAMILY,
|
|
85
|
+
fontSize
|
|
86
|
+
}), [fontSize]);
|
|
87
|
+
|
|
88
|
+
// Measure text width for the gap
|
|
89
|
+
const textWidth = (0, _react.useMemo)(() => {
|
|
90
|
+
if (!hasLabel) return 0;
|
|
91
|
+
return font.getTextWidth(labelText);
|
|
92
|
+
}, [font, labelText, hasLabel]);
|
|
93
|
+
const gapHalfWidth = hasLabel ? textWidth / 2 + TEXT_GAP_PADDING : 0;
|
|
94
|
+
const pathString = (0, _react.useMemo)(() => buildMeasurementPath(from.x, from.y, to.x, to.y, object.lineWidth, object.measureStyle, gapHalfWidth), [from, to, object.lineWidth, object.measureStyle, gapHalfWidth]);
|
|
95
|
+
|
|
96
|
+
// Center of the line
|
|
97
|
+
const midX = (from.x + to.x) / 2;
|
|
98
|
+
const midY = (from.y + to.y) / 2;
|
|
99
|
+
|
|
100
|
+
// Angle of the line — keep text readable (never upside down)
|
|
101
|
+
const rawAngle = Math.atan2(to.y - from.y, to.x - from.x);
|
|
102
|
+
const angle = rawAngle > Math.PI / 2 ? rawAngle - Math.PI : rawAngle < -Math.PI / 2 ? rawAngle + Math.PI : rawAngle;
|
|
103
|
+
|
|
104
|
+
// Position text centered at origin (will be transformed to midpoint)
|
|
105
|
+
const textX = -textWidth / 2;
|
|
106
|
+
const textY = fontSize / 3;
|
|
107
|
+
if (!pathString) return null;
|
|
108
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Group, {
|
|
109
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Path, {
|
|
110
|
+
path: pathString,
|
|
111
|
+
style: "stroke",
|
|
112
|
+
strokeWidth: object.lineWidth,
|
|
113
|
+
color: object.color,
|
|
114
|
+
strokeCap: "round",
|
|
115
|
+
strokeJoin: "round"
|
|
116
|
+
}), hasLabel && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Group, {
|
|
117
|
+
transform: [{
|
|
118
|
+
translateX: midX
|
|
119
|
+
}, {
|
|
120
|
+
translateY: midY
|
|
121
|
+
}, {
|
|
122
|
+
rotate: angle
|
|
123
|
+
}],
|
|
124
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Text, {
|
|
125
|
+
x: textX,
|
|
126
|
+
y: textY,
|
|
127
|
+
text: labelText,
|
|
128
|
+
font: font,
|
|
129
|
+
color: object.color
|
|
130
|
+
})
|
|
131
|
+
})]
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
//# sourceMappingURL=MeasurementRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSkia","_coordinates","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FONT_FAMILY","Platform","OS","TEXT_GAP_PADDING","buildMeasurementPath","fx","fy","tx","ty","lineWidth","style","gapHalfWidth","dx","dy","len","Math","sqrt","angle","atan2","cos","sin","perpCos","PI","perpSin","headLen","min","headW","extLen","mx","my","svg","gapStartX","gapStartY","gapEndX","gapEndY","ah1x","ah1y","ah2x","ah2y","bh1x","bh1y","bh2x","bh2y","MeasurementRenderer","exports","React","memo","object","canvasSize","from","useMemo","denormalize","to","labelText","text","unit","hasLabel","length","fontSize","max","font","matchFont","fontFamily","textWidth","getTextWidth","pathString","x","y","measureStyle","midX","midY","rawAngle","textX","textY","jsxs","Group","children","jsx","Path","path","strokeWidth","color","strokeCap","strokeJoin","transform","translateX","translateY","rotate","Text"],"sourceRoot":"../../../src","sources":["renderers/MeasurementRenderer.tsx"],"mappings":"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","ignoreList":[]}
|