@archireport/react-native-svg-draw 0.3.4 → 1.0.2
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/lib/commonjs/components/DrawCore/CurrentAnimatedItem.js +5 -9
- package/lib/commonjs/components/DrawCore/CurrentAnimatedItem.js.map +1 -1
- package/lib/commonjs/components/DrawCore/DrawPad.js +2 -1
- package/lib/commonjs/components/DrawCore/DrawPad.js.map +1 -1
- package/lib/commonjs/components/DrawCore/index.js +7 -3
- package/lib/commonjs/components/DrawCore/index.js.map +1 -1
- package/lib/module/components/DrawCore/CurrentAnimatedItem.js +5 -9
- package/lib/module/components/DrawCore/CurrentAnimatedItem.js.map +1 -1
- package/lib/module/components/DrawCore/DrawPad.js +2 -1
- package/lib/module/components/DrawCore/DrawPad.js.map +1 -1
- package/lib/module/components/DrawCore/index.js +7 -3
- package/lib/module/components/DrawCore/index.js.map +1 -1
- package/package.json +19 -19
- package/src/components/DrawCore/CurrentAnimatedItem.tsx +5 -9
- package/src/components/DrawCore/DrawPad.tsx +1 -0
- package/src/components/DrawCore/index.tsx +5 -2
- package/src/types.d.ts +1 -0
|
@@ -100,7 +100,6 @@ function CurrentAnimatedItem({
|
|
|
100
100
|
ry: coordinates.ry,
|
|
101
101
|
stroke: hslToRgb(((_currentItem$value2 = currentItem.value) === null || _currentItem$value2 === void 0 ? void 0 : _currentItem$value2.color) || 'hsl(0, 0%, 0%)'),
|
|
102
102
|
opacity: ((_currentItem$value3 = currentItem.value) === null || _currentItem$value3 === void 0 ? void 0 : _currentItem$value3.type) === 'ellipse' ? 1 : 0,
|
|
103
|
-
fill: 'none',
|
|
104
103
|
strokeWidth: ((_currentItem$value4 = currentItem.value) === null || _currentItem$value4 === void 0 ? void 0 : _currentItem$value4.type) === 'ellipse' ? currentItem.value.strokeWidth : 0,
|
|
105
104
|
marker: 'url(#selection)'
|
|
106
105
|
};
|
|
@@ -121,9 +120,8 @@ function CurrentAnimatedItem({
|
|
|
121
120
|
y2: coordinates.y2,
|
|
122
121
|
stroke: hslToRgb(((_currentItem$value6 = currentItem.value) === null || _currentItem$value6 === void 0 ? void 0 : _currentItem$value6.color) || 'hsl(0, 0%, 0%)'),
|
|
123
122
|
opacity: ((_currentItem$value7 = currentItem.value) === null || _currentItem$value7 === void 0 ? void 0 : _currentItem$value7.type) === 'singleHead' ? 1 : 0,
|
|
124
|
-
fill: 'none',
|
|
125
123
|
strokeWidth: ((_currentItem$value8 = currentItem.value) === null || _currentItem$value8 === void 0 ? void 0 : _currentItem$value8.type) === 'singleHead' ? currentItem.value.strokeWidth : 0,
|
|
126
|
-
markerEnd: '
|
|
124
|
+
markerEnd: 'arrowhead'
|
|
127
125
|
};
|
|
128
126
|
}, [currentItem.value]);
|
|
129
127
|
const doubleHeadAnimatedProps = (0, _reactNativeReanimated.useAnimatedProps)(() => {
|
|
@@ -142,10 +140,9 @@ function CurrentAnimatedItem({
|
|
|
142
140
|
y2: coordinates.y2,
|
|
143
141
|
stroke: hslToRgb(((_currentItem$value10 = currentItem.value) === null || _currentItem$value10 === void 0 ? void 0 : _currentItem$value10.color) || 'hsl(0, 0%, 0%)'),
|
|
144
142
|
opacity: ((_currentItem$value11 = currentItem.value) === null || _currentItem$value11 === void 0 ? void 0 : _currentItem$value11.type) === 'doubleHead' ? 1 : 0,
|
|
145
|
-
fill: 'none',
|
|
146
143
|
strokeWidth: ((_currentItem$value12 = currentItem.value) === null || _currentItem$value12 === void 0 ? void 0 : _currentItem$value12.type) === 'doubleHead' ? currentItem.value.strokeWidth : 0,
|
|
147
|
-
markerStart: '
|
|
148
|
-
markerEnd: '
|
|
144
|
+
markerStart: 'side',
|
|
145
|
+
markerEnd: 'side'
|
|
149
146
|
};
|
|
150
147
|
}, [currentItem.value]);
|
|
151
148
|
const rectangleAnimatedProps = (0, _reactNativeReanimated.useAnimatedProps)(() => {
|
|
@@ -163,7 +160,6 @@ function CurrentAnimatedItem({
|
|
|
163
160
|
width: coordinates.width,
|
|
164
161
|
height: coordinates.height,
|
|
165
162
|
stroke: hslToRgb(((_currentItem$value14 = currentItem.value) === null || _currentItem$value14 === void 0 ? void 0 : _currentItem$value14.color) || 'hsl(0, 0%, 0%)'),
|
|
166
|
-
fill: 'none',
|
|
167
163
|
opacity: ((_currentItem$value15 = currentItem.value) === null || _currentItem$value15 === void 0 ? void 0 : _currentItem$value15.type) === 'rectangle' ? 1 : 0,
|
|
168
164
|
strokeWidth: ((_currentItem$value16 = currentItem.value) === null || _currentItem$value16 === void 0 ? void 0 : _currentItem$value16.type) === 'rectangle' ? currentItem.value.strokeWidth : 0,
|
|
169
165
|
marker: 'url(#selection)'
|
|
@@ -180,8 +176,8 @@ function CurrentAnimatedItem({
|
|
|
180
176
|
strokeWidth: ((_currentItem$value18 = currentItem.value) === null || _currentItem$value18 === void 0 ? void 0 : _currentItem$value18.type) === 'pen' ? currentItem.value.strokeWidth : 0,
|
|
181
177
|
stroke: hslToRgb(((_currentItem$value19 = currentItem.value) === null || _currentItem$value19 === void 0 ? void 0 : _currentItem$value19.color) || 'hsl(0, 0%, 0%)'),
|
|
182
178
|
opacity: ((_currentItem$value20 = currentItem.value) === null || _currentItem$value20 === void 0 ? void 0 : _currentItem$value20.type) === 'pen' ? 1 : 0,
|
|
183
|
-
markerStart: '
|
|
184
|
-
markerEnd: '
|
|
179
|
+
markerStart: 'selection',
|
|
180
|
+
markerEnd: 'selection'
|
|
185
181
|
};
|
|
186
182
|
}, [currentItem.value]);
|
|
187
183
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(AnimatedEllipse, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CurrentAnimatedItem.tsx"],"names":["AnimatedPath","Animated","createAnimatedComponent","Path","AnimatedEllipse","Ellipse","AnimatedRectangle","Rect","AnimatedLine","Line","pointsToPath","points","length","reduce","acc","point","x","y","hue2rgb","p","q","t","hslToRgb","col","hslRegExp","RegExp","res","exec","h","parseFloat","s","l","r","g","b","Math","round","CurrentAnimatedItem","currentItem","ellipseAnimatedProps","coordinates","value","type","data","cx","cy","rx","ry","stroke","color","opacity","fill","strokeWidth","marker","singleHeadAnimatedProps","x1","y1","x2","y2","markerEnd","doubleHeadAnimatedProps","markerStart","rectangleAnimatedProps","width","height","penAnimatedProps","d"],"mappings":"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","sourcesContent":["import React from 'react';\nimport Animated, { useAnimatedProps } from 'react-native-reanimated';\nimport { Path, Ellipse, Rect, Line, G } from 'react-native-svg';\nimport type { DrawItem, hslColor, Point } from '../../types';\n\nconst AnimatedPath = Animated.createAnimatedComponent(Path);\n\nconst AnimatedEllipse = Animated.createAnimatedComponent(Ellipse);\n\nconst AnimatedRectangle = Animated.createAnimatedComponent(Rect);\n\nconst AnimatedLine = Animated.createAnimatedComponent(Line);\n\nconst pointsToPath = (points: Point[]) => {\n 'worklet';\n return points.length > 0\n ? points.reduce(\n (acc, point) => `${acc} L ${point.x},${point.y}`,\n `M ${points[0].x},${points[0].y}`\n )\n : '';\n};\n\nfunction hue2rgb(p: number, q: number, t: number) {\n 'worklet';\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n\n// see https://github.com/software-mansion/react-native-reanimated/issues/1909\nfunction hslToRgb(col: hslColor) {\n 'worklet';\n const hslRegExp = new RegExp(/hsl\\(([\\d.]+),\\s*(\\d+)%,\\s*([\\d.]+)%\\)/);\n const res = hslRegExp.exec(col);\n\n const h = res ? parseFloat(res[1]) / 360 : 0;\n const s = res ? parseFloat(res[2]) / 100 : 0;\n const l = res ? parseFloat(res[3]) / 100 : 0;\n\n var r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return `rgb(${Math.round(r * 255)}, ${Math.round(g * 255)}, ${Math.round(\n b * 255\n )})`;\n}\n\nexport default function CurrentAnimatedItem({\n currentItem,\n}: {\n currentItem: Animated.SharedValue<DrawItem | null>;\n}) {\n const ellipseAnimatedProps = useAnimatedProps(() => {\n const coordinates =\n currentItem.value?.type === 'ellipse'\n ? currentItem.value.data\n : { cx: -10, cy: -10, rx: 0, ry: 0 };\n\n return {\n cx: coordinates.cx,\n cy: coordinates.cy,\n rx: coordinates.rx,\n ry: coordinates.ry,\n stroke: hslToRgb(currentItem.value?.color || 'hsl(0, 0%, 0%)'),\n opacity: currentItem.value?.type === 'ellipse' ? 1 : 0,\n fill: 'none',\n strokeWidth:\n currentItem.value?.type === 'ellipse'\n ? currentItem.value.strokeWidth\n : 0,\n marker: 'url(#selection)',\n };\n }, [currentItem.value]);\n\n const singleHeadAnimatedProps = useAnimatedProps(() => {\n const coordinates =\n currentItem.value?.type === 'singleHead'\n ? currentItem.value.data\n : { x1: -10, y1: -10, x2: -10, y2: -10 };\n return {\n x1: coordinates.x1,\n y1: coordinates.y1,\n x2: coordinates.x2,\n y2: coordinates.y2,\n stroke: hslToRgb(currentItem.value?.color || 'hsl(0, 0%, 0%)'),\n opacity: currentItem.value?.type === 'singleHead' ? 1 : 0,\n fill: 'none',\n strokeWidth:\n currentItem.value?.type === 'singleHead'\n ? currentItem.value.strokeWidth\n : 0,\n markerEnd: 'url(#arrowhead)',\n };\n }, [currentItem.value]);\n\n const doubleHeadAnimatedProps = useAnimatedProps(() => {\n const coordinates =\n currentItem.value?.type === 'doubleHead'\n ? currentItem.value.data\n : { x1: -10, y1: -10, x2: -10, y2: -10 };\n\n return {\n x1: coordinates.x1,\n y1: coordinates.y1,\n x2: coordinates.x2,\n y2: coordinates.y2,\n stroke: hslToRgb(currentItem.value?.color || 'hsl(0, 0%, 0%)'),\n opacity: currentItem.value?.type === 'doubleHead' ? 1 : 0,\n fill: 'none',\n strokeWidth:\n currentItem.value?.type === 'doubleHead'\n ? currentItem.value.strokeWidth\n : 0,\n markerStart: 'url(#side)',\n markerEnd: 'url(#side)',\n };\n }, [currentItem.value]);\n\n const rectangleAnimatedProps = useAnimatedProps(() => {\n const coordinates =\n currentItem.value?.type === 'rectangle'\n ? currentItem.value.data\n : { x: -10, y: -10, width: 0, height: 0 };\n return {\n x: coordinates.x,\n y: coordinates.y,\n width: coordinates.width,\n height: coordinates.height,\n stroke: hslToRgb(currentItem.value?.color || 'hsl(0, 0%, 0%)'),\n fill: 'none',\n opacity: currentItem.value?.type === 'rectangle' ? 1 : 0,\n strokeWidth:\n currentItem.value?.type === 'rectangle'\n ? currentItem.value.strokeWidth\n : 0,\n\n marker: 'url(#selection)',\n };\n }, [currentItem.value]);\n\n const penAnimatedProps = useAnimatedProps(() => {\n return {\n d: pointsToPath(\n currentItem.value?.type === 'pen'\n ? currentItem.value.data\n : [{ x: -10, y: -10 }]\n ),\n strokeWidth:\n currentItem.value?.type === 'pen' ? currentItem.value.strokeWidth : 0,\n stroke: hslToRgb(currentItem.value?.color || 'hsl(0, 0%, 0%)'),\n opacity: currentItem.value?.type === 'pen' ? 1 : 0,\n markerStart: 'url(#selection)',\n markerEnd: 'url(#selection)',\n };\n }, [currentItem.value]);\n\n return (\n <>\n <AnimatedEllipse animatedProps={ellipseAnimatedProps} />\n <G markerStart=\"url(#selection)\" markerEnd=\"url(#selection)\">\n <AnimatedLine animatedProps={singleHeadAnimatedProps} />\n </G>\n <G markerStart=\"url(#selection)\" markerEnd=\"url(#selection)\">\n <AnimatedLine animatedProps={doubleHeadAnimatedProps} />\n </G>\n <AnimatedRectangle animatedProps={rectangleAnimatedProps} />\n <AnimatedPath animatedProps={penAnimatedProps} />\n </>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["CurrentAnimatedItem.tsx"],"names":["AnimatedPath","Animated","createAnimatedComponent","Path","AnimatedEllipse","Ellipse","AnimatedRectangle","Rect","AnimatedLine","Line","pointsToPath","points","length","reduce","acc","point","x","y","hue2rgb","p","q","t","hslToRgb","col","hslRegExp","RegExp","res","exec","h","parseFloat","s","l","r","g","b","Math","round","CurrentAnimatedItem","currentItem","ellipseAnimatedProps","coordinates","value","type","data","cx","cy","rx","ry","stroke","color","opacity","strokeWidth","marker","singleHeadAnimatedProps","x1","y1","x2","y2","markerEnd","doubleHeadAnimatedProps","markerStart","rectangleAnimatedProps","width","height","penAnimatedProps","d"],"mappings":"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","sourcesContent":["import React from 'react';\nimport Animated, { useAnimatedProps } from 'react-native-reanimated';\nimport { Path, Ellipse, Rect, Line, G } from 'react-native-svg';\nimport type { DrawItem, hslColor, Point } from '../../types';\n\nconst AnimatedPath = Animated.createAnimatedComponent(Path);\n\nconst AnimatedEllipse = Animated.createAnimatedComponent(Ellipse);\n\nconst AnimatedRectangle = Animated.createAnimatedComponent(Rect);\n\nconst AnimatedLine = Animated.createAnimatedComponent(Line);\n\nconst pointsToPath = (points: Point[]) => {\n 'worklet';\n return points.length > 0\n ? points.reduce(\n (acc, point) => `${acc} L ${point.x},${point.y}`,\n `M ${points[0].x},${points[0].y}`\n )\n : '';\n};\n\nfunction hue2rgb(p: number, q: number, t: number) {\n 'worklet';\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n\n// see https://github.com/software-mansion/react-native-reanimated/issues/1909\nfunction hslToRgb(col: hslColor) {\n 'worklet';\n const hslRegExp = new RegExp(/hsl\\(([\\d.]+),\\s*(\\d+)%,\\s*([\\d.]+)%\\)/);\n const res = hslRegExp.exec(col);\n\n const h = res ? parseFloat(res[1]) / 360 : 0;\n const s = res ? parseFloat(res[2]) / 100 : 0;\n const l = res ? parseFloat(res[3]) / 100 : 0;\n\n var r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return `rgb(${Math.round(r * 255)}, ${Math.round(g * 255)}, ${Math.round(\n b * 255\n )})`;\n}\n\nexport default function CurrentAnimatedItem({\n currentItem,\n}: {\n currentItem: Animated.SharedValue<DrawItem | null>;\n}) {\n const ellipseAnimatedProps = useAnimatedProps(() => {\n const coordinates =\n currentItem.value?.type === 'ellipse'\n ? currentItem.value.data\n : { cx: -10, cy: -10, rx: 0, ry: 0 };\n\n return {\n cx: coordinates.cx,\n cy: coordinates.cy,\n rx: coordinates.rx,\n ry: coordinates.ry,\n stroke: hslToRgb(currentItem.value?.color || 'hsl(0, 0%, 0%)'),\n opacity: currentItem.value?.type === 'ellipse' ? 1 : 0,\n strokeWidth:\n currentItem.value?.type === 'ellipse'\n ? currentItem.value.strokeWidth\n : 0,\n marker: 'url(#selection)',\n };\n }, [currentItem.value]);\n\n const singleHeadAnimatedProps = useAnimatedProps(() => {\n const coordinates =\n currentItem.value?.type === 'singleHead'\n ? currentItem.value.data\n : { x1: -10, y1: -10, x2: -10, y2: -10 };\n return {\n x1: coordinates.x1,\n y1: coordinates.y1,\n x2: coordinates.x2,\n y2: coordinates.y2,\n stroke: hslToRgb(currentItem.value?.color || 'hsl(0, 0%, 0%)'),\n opacity: currentItem.value?.type === 'singleHead' ? 1 : 0,\n strokeWidth:\n currentItem.value?.type === 'singleHead'\n ? currentItem.value.strokeWidth\n : 0,\n markerEnd: 'arrowhead',\n };\n }, [currentItem.value]);\n\n const doubleHeadAnimatedProps = useAnimatedProps(() => {\n const coordinates =\n currentItem.value?.type === 'doubleHead'\n ? currentItem.value.data\n : { x1: -10, y1: -10, x2: -10, y2: -10 };\n\n return {\n x1: coordinates.x1,\n y1: coordinates.y1,\n x2: coordinates.x2,\n y2: coordinates.y2,\n stroke: hslToRgb(currentItem.value?.color || 'hsl(0, 0%, 0%)'),\n opacity: currentItem.value?.type === 'doubleHead' ? 1 : 0,\n strokeWidth:\n currentItem.value?.type === 'doubleHead'\n ? currentItem.value.strokeWidth\n : 0,\n markerStart: 'side',\n markerEnd: 'side',\n };\n }, [currentItem.value]);\n\n const rectangleAnimatedProps = useAnimatedProps(() => {\n const coordinates =\n currentItem.value?.type === 'rectangle'\n ? currentItem.value.data\n : { x: -10, y: -10, width: 0, height: 0 };\n return {\n x: coordinates.x,\n y: coordinates.y,\n width: coordinates.width,\n height: coordinates.height,\n stroke: hslToRgb(currentItem.value?.color || 'hsl(0, 0%, 0%)'),\n opacity: currentItem.value?.type === 'rectangle' ? 1 : 0,\n strokeWidth:\n currentItem.value?.type === 'rectangle'\n ? currentItem.value.strokeWidth\n : 0,\n\n marker: 'url(#selection)',\n };\n }, [currentItem.value]);\n\n const penAnimatedProps = useAnimatedProps(() => {\n return {\n d: pointsToPath(\n currentItem.value?.type === 'pen'\n ? currentItem.value.data\n : [{ x: -10, y: -10 }]\n ),\n strokeWidth:\n currentItem.value?.type === 'pen' ? currentItem.value.strokeWidth : 0,\n stroke: hslToRgb(currentItem.value?.color || 'hsl(0, 0%, 0%)'),\n opacity: currentItem.value?.type === 'pen' ? 1 : 0,\n markerStart: 'selection',\n markerEnd: 'selection',\n };\n }, [currentItem.value]);\n\n return (\n <>\n <AnimatedEllipse animatedProps={ellipseAnimatedProps} />\n <G markerStart=\"url(#selection)\" markerEnd=\"url(#selection)\">\n <AnimatedLine animatedProps={singleHeadAnimatedProps} />\n </G>\n <G markerStart=\"url(#selection)\" markerEnd=\"url(#selection)\">\n <AnimatedLine animatedProps={doubleHeadAnimatedProps} />\n </G>\n <AnimatedRectangle animatedProps={rectangleAnimatedProps} />\n <AnimatedPath animatedProps={penAnimatedProps} />\n </>\n );\n}\n"]}
|
|
@@ -57,7 +57,8 @@ const DrawPad = ({
|
|
|
57
57
|
}, /*#__PURE__*/_react.default.createElement(_reactNativeSvg.Polyline, {
|
|
58
58
|
stroke: "context-stroke",
|
|
59
59
|
points: "0,-2 0,2 0,0",
|
|
60
|
-
strokeLinecap: "round"
|
|
60
|
+
strokeLinecap: "round",
|
|
61
|
+
strokeLinejoin: "round"
|
|
61
62
|
})), /*#__PURE__*/_react.default.createElement(_reactNativeSvg.Marker, {
|
|
62
63
|
id: "selection",
|
|
63
64
|
markerUnits: 'userSpaceOnUse',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DrawPad.tsx"],"names":["DrawPad","currentItem","doneItems","onPressItem","onTextHeightChange","map","item","index"],"mappings":";;;;;;;AAAA;;AAEA;;AAQA;;AACA;;AACA;;;;;;;;AAGA,MAAMA,OAAO,GAAG,CAAC;AACfC,EAAAA,WADe;AAEfC,EAAAA,SAFe;AAGfC,EAAAA,WAHe;AAIfC,EAAAA;AAJe,CAAD,KAUV;AACJ,sBACE,yEACE,6BAAC,uBAAD;AAAK,IAAA,QAAQ,EAAC;AAAd,kBACE,6BAAC,oBAAD,qBACE,6BAAC,sBAAD;AACE,IAAA,EAAE,EAAC,oBADL;AAEE,IAAA,IAAI,EAAC,SAFP;AAGE,IAAA,CAAC,EAAE,CAHL;AAIE,IAAA,EAAE,EAAE,CAJN;AAKE,IAAA,EAAE,EAAE,CALN;AAME,IAAA,WAAW,EAAE,CANf;AAOE,IAAA,MAAM,EAAC;AAPT,IADF,eAUE,6BAAC,sBAAD;AACE,IAAA,EAAE,EAAC,WADL;AAEE,IAAA,WAAW,EAAE,aAFf;AAGE,IAAA,IAAI,EAAC,GAHP;AAIE,IAAA,IAAI,EAAC,GAJP;AAKE,IAAA,MAAM,EAAC;AALT,kBAOE,6BAAC,wBAAD;AACE,IAAA,MAAM,EAAC,oBADT;AAEE,IAAA,MAAM,EAAC,gBAFT;AAGE,IAAA,aAAa,EAAC,OAHhB;AAIE,IAAA,cAAc,EAAC;AAJjB,IAPF,CAVF,eAyBE,6BAAC,sBAAD;AACE,IAAA,EAAE,EAAC,MADL;AAEE,IAAA,WAAW,EAAE,aAFf;AAGE,IAAA,IAAI,EAAC,GAHP;AAIE,IAAA,IAAI,EAAC,GAJP;AAKE,IAAA,MAAM,EAAC;AALT,kBAOE,6BAAC,wBAAD;AACE,IAAA,MAAM,EAAC,gBADT;AAEE,IAAA,MAAM,EAAC,cAFT;AAGE,IAAA,aAAa,EAAC;
|
|
1
|
+
{"version":3,"sources":["DrawPad.tsx"],"names":["DrawPad","currentItem","doneItems","onPressItem","onTextHeightChange","map","item","index"],"mappings":";;;;;;;AAAA;;AAEA;;AAQA;;AACA;;AACA;;;;;;;;AAGA,MAAMA,OAAO,GAAG,CAAC;AACfC,EAAAA,WADe;AAEfC,EAAAA,SAFe;AAGfC,EAAAA,WAHe;AAIfC,EAAAA;AAJe,CAAD,KAUV;AACJ,sBACE,yEACE,6BAAC,uBAAD;AAAK,IAAA,QAAQ,EAAC;AAAd,kBACE,6BAAC,oBAAD,qBACE,6BAAC,sBAAD;AACE,IAAA,EAAE,EAAC,oBADL;AAEE,IAAA,IAAI,EAAC,SAFP;AAGE,IAAA,CAAC,EAAE,CAHL;AAIE,IAAA,EAAE,EAAE,CAJN;AAKE,IAAA,EAAE,EAAE,CALN;AAME,IAAA,WAAW,EAAE,CANf;AAOE,IAAA,MAAM,EAAC;AAPT,IADF,eAUE,6BAAC,sBAAD;AACE,IAAA,EAAE,EAAC,WADL;AAEE,IAAA,WAAW,EAAE,aAFf;AAGE,IAAA,IAAI,EAAC,GAHP;AAIE,IAAA,IAAI,EAAC,GAJP;AAKE,IAAA,MAAM,EAAC;AALT,kBAOE,6BAAC,wBAAD;AACE,IAAA,MAAM,EAAC,oBADT;AAEE,IAAA,MAAM,EAAC,gBAFT;AAGE,IAAA,aAAa,EAAC,OAHhB;AAIE,IAAA,cAAc,EAAC;AAJjB,IAPF,CAVF,eAyBE,6BAAC,sBAAD;AACE,IAAA,EAAE,EAAC,MADL;AAEE,IAAA,WAAW,EAAE,aAFf;AAGE,IAAA,IAAI,EAAC,GAHP;AAIE,IAAA,IAAI,EAAC,GAJP;AAKE,IAAA,MAAM,EAAC;AALT,kBAOE,6BAAC,wBAAD;AACE,IAAA,MAAM,EAAC,gBADT;AAEE,IAAA,MAAM,EAAC,cAFT;AAGE,IAAA,aAAa,EAAC,OAHhB;AAIE,IAAA,cAAc,EAAC;AAJjB,IAPF,CAzBF,eAwCE,6BAAC,sBAAD;AACE,IAAA,EAAE,EAAC,WADL;AAEE,IAAA,WAAW,EAAE,gBAFf;AAGE,IAAA,IAAI,EAAC,GAHP;AAIE,IAAA,IAAI,EAAC,GAJP;AAKE,IAAA,MAAM,EAAC;AALT,kBAOE,6BAAC,mBAAD;AAAK,IAAA,IAAI,EAAC;AAAV,IAPF,CAxCF,CADF,eAoDE,6BAAC,4BAAD;AAAqB,IAAA,WAAW,EAAEH;AAAlC,IApDF,EAsDGC,SAAS,CAACG,GAAV,CAAc,CAACC,IAAD,EAAOC,KAAP,kBACb,6BAAC,aAAD;AAAM,IAAA,GAAG,EAAEA,KAAX;AAAkB,IAAA,IAAI,EAAED,IAAxB;AAA8B,IAAA,OAAO,EAAEH,WAAW,CAACG,IAAD,EAAOC,KAAP;AAAlD,IADD,CAtDH,CADF,eA4DE,6BAAC,4BAAD;AACE,IAAA,WAAW,EAAEN,WADf;AAEE,IAAA,cAAc,EAAEG;AAFlB,IA5DF,CADF;AAmED,CA9ED;;eAgFeJ,O","sourcesContent":["import React from 'react';\nimport type Animated from 'react-native-reanimated';\nimport Svg, {\n Circle,\n Defs,\n Marker,\n MarkerUnits,\n Polyline,\n Use,\n} from 'react-native-svg';\nimport CurrentAnimatedItem from './CurrentAnimatedItem';\nimport CurrentAnimatedText from './CurrentAnimatedText';\nimport Item from './Item';\nimport type { DrawItem } from '../../types';\n\nconst DrawPad = ({\n currentItem,\n doneItems,\n onPressItem,\n onTextHeightChange,\n}: {\n currentItem: Animated.SharedValue<DrawItem | null>;\n doneItems: Array<DrawItem>;\n onPressItem: (item: DrawItem, index: number) => () => void;\n onTextHeightChange: (height: number) => void;\n}) => {\n return (\n <>\n <Svg fillRule=\"evenodd\">\n <Defs>\n <Circle\n id=\"selectionIndicator\"\n fill=\"#3a6cff\"\n r={5}\n cx={0}\n cy={0}\n strokeWidth={1}\n stroke=\"white\"\n />\n <Marker\n id=\"arrowhead\"\n markerUnits={'strokeWidth' as MarkerUnits}\n refX=\"0\"\n refY=\"0\"\n orient=\"auto\"\n >\n <Polyline\n points=\"-2,-2 0,0 -2,2 0,0\"\n stroke=\"context-stroke\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Marker>\n\n <Marker\n id=\"side\"\n markerUnits={'strokeWidth' as MarkerUnits}\n refX=\"0\"\n refY=\"0\"\n orient=\"auto\"\n >\n <Polyline\n stroke=\"context-stroke\"\n points=\"0,-2 0,2 0,0\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Marker>\n\n <Marker\n id=\"selection\"\n markerUnits={'userSpaceOnUse' as MarkerUnits}\n refX=\"0\"\n refY=\"0\"\n orient=\"auto\"\n >\n <Use href=\"#selectionIndicator\" />\n </Marker>\n </Defs>\n\n <CurrentAnimatedItem currentItem={currentItem} />\n\n {doneItems.map((item, index) => (\n <Item key={index} item={item} onPress={onPressItem(item, index)} />\n ))}\n </Svg>\n\n <CurrentAnimatedText\n currentItem={currentItem}\n onHeightChange={onTextHeightChange}\n />\n </>\n );\n};\n\nexport default DrawPad;\n"]}
|
|
@@ -255,9 +255,14 @@ const DrawCore = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
255
255
|
takeSnapshot: async () => {
|
|
256
256
|
var _viewShot$current, _viewShot$current$cap;
|
|
257
257
|
|
|
258
|
+
if (currentItem.value) {
|
|
259
|
+
updateDoneItems(currentItem.value);
|
|
260
|
+
currentItem.value = null;
|
|
261
|
+
}
|
|
262
|
+
|
|
258
263
|
return (_viewShot$current = viewShot.current) === null || _viewShot$current === void 0 ? void 0 : (_viewShot$current$cap = _viewShot$current.capture) === null || _viewShot$current$cap === void 0 ? void 0 : _viewShot$current$cap.call(_viewShot$current);
|
|
259
264
|
}
|
|
260
|
-
}), [currentItem, onSelectionChange]);
|
|
265
|
+
}), [currentItem, onSelectionChange, updateDoneItems]);
|
|
261
266
|
(0, _react.useEffect)(() => {
|
|
262
267
|
mode.value = drawingMode;
|
|
263
268
|
|
|
@@ -1024,8 +1029,7 @@ const DrawCore = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
1024
1029
|
ref: viewShot,
|
|
1025
1030
|
options: {
|
|
1026
1031
|
format: 'jpg',
|
|
1027
|
-
quality: 1
|
|
1028
|
-
...originalImageSize
|
|
1032
|
+
quality: 1
|
|
1029
1033
|
},
|
|
1030
1034
|
style: imageSize
|
|
1031
1035
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.ImageBackground, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.tsx"],"names":["RIGHT_PANE_WIDTH","styles","StyleSheet","create","container","flex","drawZone","justifyContent","alignItems","backgroundColor","rightPaneBaseStyle","position","right","top","bottom","width","marginVertical","borderTopLeftRadius","borderBottomLeftRadius","paddingVertical","strokeSliderContainer","paddingBottom","borderBottomColor","borderBottomWidth","colorSliderContainer","paddingTop","bgImage","height","textInput","paddingHorizontal","fontSize","color","pDistance","point","line","x1","x2","y1","y2","x","y","A","B","C","D","dot","len_sq","param","xx","yy","dx","dy","Math","sqrt","AnimatedTextInput","Animated","createAnimatedComponent","TextInput","DEFAULT_TEXT","THRESHOLD","drawNewItem","mode","currentItem","updateDoneItems","style","value","type","data","cx","cy","rx","ry","strokeWidth","textBaseHeight","text","onTextHeightUpdate","DrawCore","React","forwardRef","drawingMode","image","linearGradient","onSelectionChange","ref","drawRegion","setDrawRegion","originalImageSize","setOriginalImageSize","imageSize","setImageSize","drawContainer","viewShot","textVal","setTextVal","initialItem","doneItems","setDoneItems","done","previous","concat","drawingContainer","deleteSelectedItem","takeSnapshot","current","capture","addNewItem","panPosition","showTextInput","textFocus","textInputRef","focus","onGestureEvent","onStart","ctx","startX","startY","newlyCreated","parseFloat","zone","xText","yText","widthText","heightText","some","p","onActive","translationX","translationY","map","onEnd","_event","rightPaneStyle","transform","translateX","sudDidHide","Keyboard","addListener","sudDidShow","event","endCoordinates","remove","textInputContainerStyle","display","opacity","textInputStyle","onPressItem","item","index","previousItem","copy","splice","blur","onTextHeightChange","calculateSizes","imageWidth","imageHeight","ratioImageHeight","round","infos","Image","resolveAssetSource","uri","getSize","nativeEvent","layout","format","quality","Platform","OS","clear"],"mappings":"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","sourcesContent":["import React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport {\n StyleSheet,\n TextInput,\n View,\n Keyboard,\n ImageBackground,\n Image,\n ImageRequireSource,\n ImageURISource,\n ViewProps,\n Platform,\n InputAccessoryView,\n} from 'react-native';\nimport Animated, {\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedReaction,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\nimport ColorSlider from './ColorSlider';\nimport StrokeSlider from './StrokeSlider';\nimport type {\n DrawItem,\n DrawItemType,\n DrawCoreProps,\n hslColor,\n Size,\n} from '../../types';\nimport DrawPad from './DrawPad';\nimport ViewShot from 'react-native-view-shot';\n\nconst RIGHT_PANE_WIDTH = 60;\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n drawZone: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'white',\n },\n rightPaneBaseStyle: {\n position: 'absolute',\n right: 0,\n top: 0,\n bottom: 0,\n backgroundColor: '#000000cc',\n width: RIGHT_PANE_WIDTH,\n justifyContent: 'space-evenly',\n marginVertical: 20,\n borderTopLeftRadius: 20,\n borderBottomLeftRadius: 20,\n paddingVertical: 30,\n },\n strokeSliderContainer: {\n flex: 1,\n paddingBottom: 15,\n borderBottomColor: '#000000',\n borderBottomWidth: 2,\n },\n colorSliderContainer: { flex: 1, paddingTop: 15 },\n bgImage: { width: '100%', height: '100%' },\n textInput: {\n backgroundColor: '#000000c5',\n paddingVertical: 16,\n paddingHorizontal: 24,\n fontSize: 16,\n color: 'white',\n width: '100%',\n },\n});\n\nfunction pDistance(\n point: { x: number; y: number },\n line: { x1: number; x2: number; y1: number; y2: number }\n) {\n 'worklet';\n const { x1, x2, y1, y2 } = line;\n const { x, y } = point;\n\n var A = x - x1;\n var B = y - y1;\n var C = x2 - x1;\n var D = y2 - y1;\n\n var dot = A * C + B * D;\n var len_sq = C * C + D * D;\n var param = -1;\n if (len_sq !== 0) {\n //in case of 0 length line\n param = dot / len_sq;\n }\n\n var xx, yy;\n\n if (param < 0) {\n xx = x1;\n yy = y1;\n } else if (param > 1) {\n xx = x2;\n yy = y2;\n } else {\n xx = x1 + param * C;\n yy = y1 + param * D;\n }\n\n var dx = x - xx;\n var dy = y - yy;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nconst AnimatedTextInput = Animated.createAnimatedComponent(TextInput);\n\nconst DEFAULT_TEXT = '';\n\nconst THRESHOLD = 20;\n\ntype Context = {\n startX: number;\n startY: number;\n newlyCreated: boolean;\n zone?:\n | 'TOP'\n | 'BOTTOM'\n | 'LEFT'\n | 'RIGHT'\n | 'TOP_LEFT'\n | 'TOP_RIGHT'\n | 'BOTTOM_LEFT'\n | 'BOTTOM_RIGHT'\n | 'CENTER'\n | 'OUT';\n};\n\nconst drawNewItem = (\n mode: Animated.SharedValue<DrawItemType>,\n currentItem: Animated.SharedValue<DrawItem | null>,\n updateDoneItems: (item: DrawItem) => void,\n position: { x: number; y: number },\n style: {\n textBaseHeight: Animated.SharedValue<number | null>;\n strokeWidth: Animated.SharedValue<number>;\n color: Animated.SharedValue<hslColor>;\n }\n) => {\n 'worklet';\n\n if (currentItem.value) {\n runOnJS(updateDoneItems)(currentItem.value);\n }\n\n switch (mode.value) {\n case 'ellipse':\n currentItem.value = {\n type: mode.value,\n data: {\n cx: position.x,\n cy: position.y,\n rx: 0,\n ry: 0,\n },\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n case 'rectangle':\n currentItem.value = {\n type: mode.value,\n data: { x: position.x, y: position.y, width: 0, height: 0 },\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n case 'singleHead':\n case 'doubleHead':\n currentItem.value = {\n type: mode.value,\n data: {\n x1: position.x,\n y1: position.y,\n x2: position.x,\n y2: position.y,\n },\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n case 'text':\n currentItem.value = {\n type: mode.value,\n data: {\n x: position.x,\n y: position.y,\n width: 200,\n height: style.textBaseHeight.value || 0,\n },\n strokeWidth: style.strokeWidth.value,\n text: DEFAULT_TEXT,\n color: style.color.value,\n };\n break;\n case 'pen':\n currentItem.value = {\n type: mode.value,\n data: [],\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n }\n};\n\nconst onTextHeightUpdate = (\n currentItem: Animated.SharedValue<DrawItem | null>,\n textBaseHeight: Animated.SharedValue<number | null>,\n height: number\n) => {\n 'worklet';\n if (currentItem.value?.type === 'text') {\n textBaseHeight.value = textBaseHeight.value || height;\n\n currentItem.value = {\n data: {\n ...currentItem.value.data,\n height: height,\n },\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n };\n }\n};\n\nconst DrawCore = React.forwardRef<\n DrawCoreProps,\n {\n drawingMode: DrawItemType;\n image?: ImageRequireSource | ImageURISource;\n linearGradient: React.ComponentType<{ colors: any[] } & ViewProps>;\n onSelectionChange?: (selected: boolean) => void;\n }\n>(({ drawingMode, image, linearGradient, onSelectionChange }, ref) => {\n const mode = useSharedValue<DrawItemType>('pen');\n\n const [drawRegion, setDrawRegion] = useState<Size | null>(null);\n\n const [originalImageSize, setOriginalImageSize] = useState<Size | null>(null);\n\n const [imageSize, setImageSize] = useState<Size | null>(null);\n\n const drawContainer = useRef<View>(null);\n\n const viewShot = useRef<ViewShot>(null);\n\n const [textVal, setTextVal] = useState<string>('');\n\n const currentItem = useSharedValue<DrawItem | null>(null);\n\n const initialItem = useSharedValue<DrawItem | null>(null);\n\n const [doneItems, setDoneItems] = useState<DrawItem[]>([]);\n\n const textBaseHeight = useSharedValue<number | null>(null);\n\n const updateDoneItems = useCallback((done: DrawItem) => {\n setDoneItems((previous) => previous.concat(done));\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n drawingContainer: drawContainer,\n deleteSelectedItem: () => {\n if (currentItem.value) {\n currentItem.value = null;\n }\n onSelectionChange?.(false);\n },\n takeSnapshot: async (): Promise<string | undefined> => {\n return viewShot.current?.capture?.();\n },\n }),\n [currentItem, onSelectionChange]\n );\n\n useEffect(() => {\n mode.value = drawingMode;\n if (currentItem.value) {\n updateDoneItems(currentItem.value);\n }\n currentItem.value = null;\n onSelectionChange?.(false);\n }, [drawingMode, mode, currentItem, updateDoneItems, onSelectionChange]);\n\n const addNewItem = runOnJS(updateDoneItems);\n\n const strokeWidth = useSharedValue<number>(2);\n\n const color = useSharedValue<hslColor>('hsl(0, 100%, 0%)');\n\n const panPosition = useSharedValue(0);\n\n const showTextInput = useSharedValue(false);\n\n const textFocus = useCallback(() => {\n textInputRef.current?.focus();\n }, []);\n\n useEffect(() => {\n if (currentItem.value?.type === 'text') {\n currentItem.value = {\n data: currentItem.value.data,\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: textVal,\n };\n }\n }, [currentItem, textVal]);\n\n const onGestureEvent = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n Context\n >(\n {\n onStart: ({ x, y }, ctx) => {\n const startX = x;\n const startY = y;\n ctx.startX = startX;\n ctx.startY = startY;\n ctx.newlyCreated = false;\n\n panPosition.value = withTiming(RIGHT_PANE_WIDTH);\n\n initialItem.value = currentItem.value;\n\n switch (currentItem.value?.type) {\n case 'ellipse':\n const cx =\n typeof currentItem.value.data.cx === 'string'\n ? parseFloat(currentItem.value.data.cx)\n : currentItem.value.data.cx || 0;\n const cy =\n typeof currentItem.value.data.cy === 'string'\n ? parseFloat(currentItem.value.data.cy)\n : currentItem.value.data.cy || 0;\n const rx =\n typeof currentItem.value.data.rx === 'string'\n ? parseFloat(currentItem.value.data.rx)\n : currentItem.value.data.rx || 0;\n const ry =\n typeof currentItem.value.data.ry === 'string'\n ? parseFloat(currentItem.value.data.ry)\n : currentItem.value.data.ry || 0;\n\n if (\n startX <= cx + THRESHOLD &&\n startX >= cx - THRESHOLD &&\n startY <= cy - ry + THRESHOLD &&\n startY >= cy - ry - THRESHOLD\n ) {\n ctx.zone = 'TOP';\n } else if (\n startX <= cx + THRESHOLD &&\n startX >= cx - THRESHOLD &&\n startY <= cy + ry + THRESHOLD &&\n startY >= cy + ry - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM';\n } else if (\n startY <= cy + THRESHOLD &&\n startY >= cy - THRESHOLD &&\n startX <= cx - rx + THRESHOLD &&\n startX >= cx - rx - THRESHOLD\n ) {\n ctx.zone = 'LEFT';\n } else if (\n startY <= cy + THRESHOLD &&\n startY >= cy - THRESHOLD &&\n startX <= cx + rx + THRESHOLD &&\n startX >= cx + rx - THRESHOLD\n ) {\n ctx.zone = 'RIGHT';\n } else if (\n ((rx > 0 && startX > cx - rx && startX < cx + rx) ||\n (rx < 0 && startX < cx - rx && startX > cx + rx)) &&\n ((ry > 0 && startY > cy - ry && startY < cy + ry) ||\n (ry < 0 && startY < cy - ry && startY > cy + ry))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'rectangle':\n const x =\n typeof currentItem.value.data.x === 'string'\n ? parseFloat(currentItem.value.data.x)\n : currentItem.value.data.x || 0;\n const y =\n typeof currentItem.value.data.y === 'string'\n ? parseFloat(currentItem.value.data.y)\n : currentItem.value.data.y || 0;\n const height =\n typeof currentItem.value.data.height === 'string'\n ? parseFloat(currentItem.value.data.height)\n : currentItem.value.data.height || 0;\n const width =\n typeof currentItem.value.data.width === 'string'\n ? parseFloat(currentItem.value.data.width)\n : currentItem.value.data.width || 0;\n\n if (startX <= x + THRESHOLD && startX >= x - THRESHOLD) {\n if (startY <= y + THRESHOLD && startY >= y - THRESHOLD) {\n ctx.zone = 'TOP_LEFT';\n } else if (\n startY <= y + height + THRESHOLD &&\n startY >= y + height - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM_LEFT';\n }\n } else if (\n startX <= x + width + THRESHOLD &&\n startX >= x + width - THRESHOLD\n ) {\n if (startY <= y + THRESHOLD && startY >= y - THRESHOLD) {\n ctx.zone = 'TOP_RIGHT';\n } else if (\n startY <= y + height + THRESHOLD &&\n startY >= y + height - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM_RIGHT';\n }\n } else if (\n ((width > 0 && startX > x && startX < x + width) ||\n (width < 0 && startX < x && startX > x + width)) &&\n ((height > 0 && startY > y && startY < y + height) ||\n (height < 0 && startY < y && startY > y + height))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'doubleHead':\n case 'singleHead':\n const x1 =\n typeof currentItem.value.data.x1 === 'string'\n ? parseFloat(currentItem.value.data.x1)\n : currentItem.value.data.x1 || 0;\n const y1 =\n typeof currentItem.value.data.y1 === 'string'\n ? parseFloat(currentItem.value.data.y1)\n : currentItem.value.data.y1 || 0;\n const x2 =\n typeof currentItem.value.data.x2 === 'string'\n ? parseFloat(currentItem.value.data.x2)\n : currentItem.value.data.x2 || 0;\n const y2 =\n typeof currentItem.value.data.y2 === 'string'\n ? parseFloat(currentItem.value.data.y2)\n : currentItem.value.data.y2 || 0;\n\n if (\n startX <= x1 + THRESHOLD &&\n startX >= x1 - THRESHOLD &&\n startY <= y1 + THRESHOLD &&\n startY >= y1 - THRESHOLD\n ) {\n ctx.zone = 'TOP';\n } else if (\n startX <= x2 + THRESHOLD &&\n startX >= x2 - THRESHOLD &&\n startY - THRESHOLD <= y2 + THRESHOLD &&\n startY + THRESHOLD >= y2 - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM';\n } else if (\n pDistance({ x: startX, y: startY }, { x1, x2, y1, y2 }) <=\n THRESHOLD &&\n ((startX > x1 && startX < x2) || (startX < x1 && startX > x2)) &&\n ((startY > y1 && startY < y2) || (startY < y1 && startY > y2))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'text':\n const xText =\n typeof currentItem.value.data.x === 'string'\n ? parseFloat(currentItem.value.data.x)\n : currentItem.value.data.x || 0;\n const yText =\n typeof currentItem.value.data.y === 'string'\n ? parseFloat(currentItem.value.data.y)\n : currentItem.value.data.y || 0;\n const widthText =\n typeof currentItem.value.data.width === 'string'\n ? parseFloat(currentItem.value.data.width)\n : currentItem.value.data.width || 0;\n const heightText =\n typeof currentItem.value.data.height === 'string'\n ? parseFloat(currentItem.value.data.height)\n : currentItem.value.data.height || 0;\n\n if (\n startX <= xText + THRESHOLD &&\n startX >= xText - THRESHOLD &&\n startY <= yText + heightText / 2 + THRESHOLD &&\n startY >= yText + heightText / 2 - THRESHOLD\n ) {\n ctx.zone = 'LEFT';\n } else if (\n startX <= xText + widthText + THRESHOLD &&\n startX >= xText + widthText - THRESHOLD &&\n startY <= yText + heightText / 2 + THRESHOLD &&\n startY >= yText + heightText / 2 - THRESHOLD\n ) {\n ctx.zone = 'RIGHT';\n } else if (\n ((widthText > 0 &&\n startX > xText &&\n startX < xText + widthText) ||\n (widthText < 0 &&\n startX < xText &&\n startX > xText + widthText)) &&\n ((heightText > 0 &&\n startY > yText &&\n startY < yText + heightText) ||\n (heightText < 0 &&\n startY < yText &&\n startY > yText + heightText))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'pen':\n if (\n currentItem.value.data.some(\n (p) =>\n startX <= p.x + THRESHOLD &&\n startX >= p.x - THRESHOLD &&\n startY <= p.y + THRESHOLD &&\n startY >= p.y - THRESHOLD\n )\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n break;\n default:\n ctx.zone = 'OUT';\n initialItem.value = null;\n break;\n }\n },\n onActive: ({ x, y, translationX, translationY }, ctx) => {\n const { startX, startY, zone, newlyCreated } = ctx;\n if (zone === 'OUT' && newlyCreated === false) {\n ctx.newlyCreated = true;\n if (mode.value === 'text') {\n runOnJS(setTextVal)('');\n }\n\n drawNewItem(\n mode,\n currentItem,\n addNewItem,\n { x: startX, y: startY },\n { textBaseHeight, strokeWidth, color }\n );\n onSelectionChange && runOnJS(onSelectionChange)(true);\n }\n switch (currentItem.value?.type) {\n case 'pen':\n if (\n initialItem.value?.type === currentItem.value.type &&\n zone === 'CENTER'\n ) {\n currentItem.value = {\n type: 'pen',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: initialItem.value.data.map((p) => ({\n x: p.x + translationX,\n y: p.y + translationY,\n })),\n };\n } else {\n currentItem.value = {\n type: 'pen',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: currentItem.value.data.concat({\n x: x,\n y: y,\n }),\n };\n }\n break;\n case 'ellipse':\n if (initialItem.value?.type === currentItem.value.type) {\n const rx =\n typeof initialItem.value.data.rx === 'string'\n ? parseFloat(initialItem.value?.data.rx)\n : initialItem.value.data.rx || 0;\n\n const ry =\n typeof initialItem.value.data.ry === 'string'\n ? parseFloat(initialItem.value.data.ry)\n : initialItem.value.data.ry || 0;\n\n const cx =\n typeof initialItem.value.data.cx === 'string'\n ? parseFloat(initialItem.value.data.cx)\n : initialItem.value.data.cx || 0;\n\n const cy =\n typeof initialItem.value.data.cy === 'string'\n ? parseFloat(initialItem.value.data.cy)\n : initialItem.value.data.cy || 0;\n\n switch (zone) {\n case 'TOP':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx,\n cy: cy + translationY,\n rx: rx,\n ry: ry - translationY,\n },\n };\n break;\n case 'BOTTOM':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx,\n cy: cy + translationY,\n rx: rx,\n ry: ry + translationY,\n },\n };\n break;\n case 'LEFT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx + translationX,\n cy: cy,\n rx: rx - translationX,\n ry: ry,\n },\n };\n break;\n case 'RIGHT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx + translationX,\n cy: cy,\n rx: rx + translationX,\n ry: ry,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx + translationX,\n cy: cy + translationY,\n rx: rx,\n ry: ry,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: startX + translationX,\n cy: startY + translationY,\n rx: translationX,\n ry: translationY,\n },\n };\n }\n\n break;\n case 'rectangle':\n if (initialItem.value?.type === currentItem.value.type) {\n const height =\n typeof initialItem.value?.data.height === 'string'\n ? parseFloat(initialItem.value?.data.height)\n : initialItem.value?.data.height || 0;\n\n const width =\n typeof initialItem.value?.data.width === 'string'\n ? parseFloat(initialItem.value?.data.width)\n : initialItem.value?.data.width || 0;\n\n const x =\n typeof initialItem.value?.data.x === 'string'\n ? parseFloat(initialItem.value?.data.x)\n : initialItem.value?.data.x || 0;\n\n const y =\n typeof initialItem.value?.data.y === 'string'\n ? parseFloat(initialItem.value?.data.y)\n : initialItem.value?.data.y || 0;\n\n switch (zone) {\n case 'TOP_LEFT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: startX + translationX,\n y: startY + translationY,\n width: width - translationX,\n height: height - translationY,\n },\n };\n break;\n case 'TOP_RIGHT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: x,\n y: startY + translationY,\n width: width + translationX,\n height: height - translationY,\n },\n };\n break;\n case 'BOTTOM_LEFT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: startX + translationX,\n y: y,\n width: width - translationX,\n height: height + translationY,\n },\n };\n break;\n case 'BOTTOM_RIGHT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: x,\n y: y,\n width: width + translationX,\n height: height + translationY,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: x + translationX,\n y: y + translationY,\n width: width,\n height: height,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: currentItem.value.data.x,\n y: currentItem.value.data.y,\n width: translationX,\n height: translationY,\n },\n };\n }\n break;\n case 'singleHead':\n case 'doubleHead':\n if (initialItem.value?.type === currentItem.value.type) {\n const x1 =\n typeof initialItem.value?.data.x1 === 'string'\n ? parseFloat(initialItem.value?.data.x1)\n : initialItem.value?.data.x1 || 0;\n\n const y1 =\n typeof initialItem.value?.data.y1 === 'string'\n ? parseFloat(initialItem.value?.data.y1)\n : initialItem.value?.data.y1 || 0;\n\n const x2 =\n typeof initialItem.value?.data.x2 === 'string'\n ? parseFloat(initialItem.value?.data.x2)\n : initialItem.value?.data.x2 || 0;\n\n const y2 =\n typeof initialItem.value?.data.y2 === 'string'\n ? parseFloat(initialItem.value?.data.y2)\n : initialItem.value?.data.y2 || 0;\n\n switch (zone) {\n case 'TOP':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: x1 + translationX,\n y1: y1 + translationY,\n x2: x2,\n y2: y2,\n },\n };\n break;\n case 'BOTTOM':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: x1,\n y1: y1,\n x2: x2 + translationX,\n y2: y2 + translationY,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: x1 + translationX,\n y1: y1 + translationY,\n x2: x2 + translationX,\n y2: y2 + translationY,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: startX,\n y1: startY,\n x2: startX + translationX,\n y2: startY + translationY,\n },\n };\n }\n break;\n case 'text':\n if (initialItem.value?.type === currentItem.value.type) {\n const xText =\n typeof initialItem.value?.data.x === 'string'\n ? parseFloat(initialItem.value?.data.x)\n : initialItem.value?.data.x || 0;\n const yText =\n typeof initialItem.value?.data.y === 'string'\n ? parseFloat(initialItem.value?.data.y)\n : initialItem.value?.data.y || 0;\n const widthText =\n typeof initialItem.value?.data.width === 'string'\n ? parseFloat(initialItem.value?.data.width)\n : initialItem.value?.data.width || 0;\n const heightText =\n typeof initialItem.value?.data.height === 'string'\n ? parseFloat(initialItem.value?.data.height)\n : initialItem.value?.data.height || 0;\n\n switch (zone) {\n case 'LEFT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: xText + translationX,\n y: yText,\n width: widthText - translationX,\n height: heightText,\n },\n };\n break;\n case 'RIGHT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: xText,\n y: yText,\n width: widthText + translationX,\n height: heightText,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: xText + translationX,\n y: yText + translationY,\n width: widthText,\n height: heightText,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: startX + translationX,\n y: startY + translationY,\n width: currentItem.value.data.width,\n height: currentItem.value.data.height,\n },\n };\n }\n }\n },\n onEnd: (_event) => {\n panPosition.value = withTiming(0);\n\n if (currentItem.value?.type === 'text') {\n runOnJS(textFocus)();\n\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: currentItem.value.data,\n text:\n currentItem.value.text !== DEFAULT_TEXT\n ? currentItem.value.text ?? ''\n : '',\n };\n }\n },\n },\n []\n );\n\n const rightPaneStyle = useAnimatedStyle(() => {\n return {\n transform: [{ translateX: panPosition.value }],\n };\n }, [panPosition.value]);\n\n useEffect(() => {\n const sudDidHide = Keyboard.addListener('keyboardDidHide', () => {\n showTextInput.value = false;\n });\n\n const sudDidShow = Keyboard.addListener('keyboardDidShow', (event) => {\n // avoid events triggered by InputAccessoryView\n if (event.endCoordinates.height > 100) {\n showTextInput.value = true;\n }\n });\n\n // cleanup function\n return () => {\n sudDidShow.remove();\n sudDidHide.remove();\n };\n }, [showTextInput]);\n\n const textInputRef = useRef<TextInput>(null);\n\n const textInputContainerStyle = useAnimatedStyle(() => {\n return {\n height: 'auto',\n backgroundColor: 'white',\n display: 'flex',\n opacity: showTextInput.value ? withTiming(1) : withTiming(0),\n };\n }, [showTextInput.value]);\n\n const textInputStyle = useAnimatedStyle(() => {\n return {\n display: showTextInput.value ? 'flex' : 'none',\n opacity: showTextInput.value ? withTiming(1) : withTiming(0),\n };\n }, [showTextInput.value]);\n\n useAnimatedReaction(\n () => {\n return { strokeWidth: strokeWidth.value, color: color.value };\n },\n ({ strokeWidth, color }: { strokeWidth: number; color: hslColor }) => {\n switch (currentItem.value?.type) {\n case 'singleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'doubleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'ellipse':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'rectangle':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n\n case 'pen':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'text':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n text: currentItem.value.text,\n };\n break;\n }\n },\n [strokeWidth.value, color.value]\n );\n\n const onPressItem = useCallback(\n (item: DrawItem, index: number) => () => {\n onSelectionChange?.(true);\n\n const previousItem = currentItem.value;\n\n strokeWidth.value = item.strokeWidth;\n color.value = item.color;\n currentItem.value = item;\n\n setDoneItems((done) => {\n const copy = [...done];\n copy.splice(index, 1);\n return copy;\n });\n\n if (previousItem) {\n updateDoneItems(previousItem);\n }\n\n if (item.type === 'text') {\n setTextVal(item.text ?? '');\n } else {\n textInputRef.current?.blur();\n }\n },\n [color, currentItem, strokeWidth, updateDoneItems, onSelectionChange]\n );\n\n const onTextHeightChange = useCallback(\n (height: number) => {\n onTextHeightUpdate(currentItem, textBaseHeight, height);\n },\n [currentItem, textBaseHeight]\n );\n\n const calculateSizes = useCallback(\n (imageWidth: number, imageHeight: number) => {\n if (drawRegion) {\n setOriginalImageSize({ width: imageWidth, height: imageHeight });\n\n const ratioImageHeight =\n Math.round(((imageHeight * drawRegion.width) / imageWidth) * 100) /\n 100;\n\n if (ratioImageHeight < drawRegion.height) {\n setImageSize({\n width: drawRegion.width,\n height: ratioImageHeight,\n });\n } else {\n setImageSize({\n height: drawRegion.height,\n width:\n Math.round(\n ((imageWidth * drawRegion.height) / imageHeight) * 100\n ) / 100,\n });\n }\n }\n },\n [drawRegion]\n );\n\n useEffect(() => {\n if (drawRegion && image) {\n if (typeof image === 'number') {\n const infos = Image.resolveAssetSource(image);\n\n calculateSizes(infos.width, infos.height);\n } else if (image.uri) {\n Image.getSize(image.uri, (imageWidth, imageHeight) => {\n calculateSizes(imageWidth, imageHeight);\n });\n }\n }\n }, [image, drawRegion, calculateSizes]);\n\n return (\n <View style={styles.container}>\n <View\n style={styles.drawZone}\n onLayout={(event) => {\n setDrawRegion({\n height: event.nativeEvent.layout.height,\n width: event.nativeEvent.layout.width,\n });\n }}\n >\n <PanGestureHandler\n activeOffsetX={2}\n activeOffsetY={2}\n onGestureEvent={onGestureEvent}\n >\n <Animated.View style={imageSize || drawRegion}>\n <View ref={drawContainer}>\n {image ? (\n imageSize && originalImageSize ? (\n <ViewShot\n ref={viewShot}\n options={{\n format: 'jpg',\n quality: 1,\n ...originalImageSize,\n }}\n style={imageSize}\n >\n <ImageBackground source={image} style={styles.bgImage}>\n <DrawPad\n currentItem={currentItem}\n doneItems={doneItems}\n onPressItem={onPressItem}\n onTextHeightChange={onTextHeightChange}\n />\n </ImageBackground>\n </ViewShot>\n ) : null\n ) : drawRegion ? (\n <ViewShot\n ref={viewShot}\n options={{\n format: 'jpg',\n quality: 1,\n ...drawRegion,\n }}\n style={drawRegion}\n >\n <DrawPad\n currentItem={currentItem}\n doneItems={doneItems}\n onPressItem={onPressItem}\n onTextHeightChange={onTextHeightChange}\n />\n </ViewShot>\n ) : null}\n </View>\n </Animated.View>\n </PanGestureHandler>\n\n <Animated.View style={[styles.rightPaneBaseStyle, rightPaneStyle]}>\n <View style={styles.strokeSliderContainer}>\n <StrokeSlider minValue={2} maxValue={10} stroke={strokeWidth} />\n </View>\n <View style={styles.colorSliderContainer}>\n <ColorSlider color={color} linearGradient={linearGradient} />\n </View>\n </Animated.View>\n </View>\n {Platform.OS === 'ios' ? (\n <InputAccessoryView>\n <AnimatedTextInput\n ref={textInputRef}\n style={[styles.textInput, textInputStyle]}\n onEndEditing={textInputRef.current?.clear}\n onChangeText={setTextVal}\n value={textVal}\n autoCorrect={false}\n />\n </InputAccessoryView>\n ) : (\n <Animated.View style={textInputContainerStyle}>\n <TextInput\n ref={textInputRef}\n style={styles.textInput}\n onEndEditing={textInputRef.current?.clear}\n onChangeText={setTextVal}\n value={textVal}\n autoCorrect={false}\n />\n </Animated.View>\n )}\n </View>\n );\n});\n\nexport default DrawCore;\n"]}
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":["RIGHT_PANE_WIDTH","styles","StyleSheet","create","container","flex","drawZone","justifyContent","alignItems","backgroundColor","rightPaneBaseStyle","position","right","top","bottom","width","marginVertical","borderTopLeftRadius","borderBottomLeftRadius","paddingVertical","strokeSliderContainer","paddingBottom","borderBottomColor","borderBottomWidth","colorSliderContainer","paddingTop","bgImage","height","textInput","paddingHorizontal","fontSize","color","pDistance","point","line","x1","x2","y1","y2","x","y","A","B","C","D","dot","len_sq","param","xx","yy","dx","dy","Math","sqrt","AnimatedTextInput","Animated","createAnimatedComponent","TextInput","DEFAULT_TEXT","THRESHOLD","drawNewItem","mode","currentItem","updateDoneItems","style","value","type","data","cx","cy","rx","ry","strokeWidth","textBaseHeight","text","onTextHeightUpdate","DrawCore","React","forwardRef","drawingMode","image","linearGradient","onSelectionChange","ref","drawRegion","setDrawRegion","originalImageSize","setOriginalImageSize","imageSize","setImageSize","drawContainer","viewShot","textVal","setTextVal","initialItem","doneItems","setDoneItems","done","previous","concat","drawingContainer","deleteSelectedItem","takeSnapshot","current","capture","addNewItem","panPosition","showTextInput","textFocus","textInputRef","focus","onGestureEvent","onStart","ctx","startX","startY","newlyCreated","parseFloat","zone","xText","yText","widthText","heightText","some","p","onActive","translationX","translationY","map","onEnd","_event","rightPaneStyle","transform","translateX","sudDidHide","Keyboard","addListener","sudDidShow","event","endCoordinates","remove","textInputContainerStyle","display","opacity","textInputStyle","onPressItem","item","index","previousItem","copy","splice","blur","onTextHeightChange","calculateSizes","imageWidth","imageHeight","ratioImageHeight","round","infos","Image","resolveAssetSource","uri","getSize","nativeEvent","layout","format","quality","Platform","OS","clear"],"mappings":"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","sourcesContent":["import React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport {\n StyleSheet,\n TextInput,\n View,\n Keyboard,\n ImageBackground,\n Image,\n ImageRequireSource,\n ImageURISource,\n ViewProps,\n Platform,\n InputAccessoryView,\n} from 'react-native';\nimport Animated, {\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedReaction,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\nimport ColorSlider from './ColorSlider';\nimport StrokeSlider from './StrokeSlider';\nimport type {\n DrawItem,\n DrawItemType,\n DrawCoreProps,\n hslColor,\n Size,\n} from '../../types';\nimport DrawPad from './DrawPad';\nimport ViewShot from 'react-native-view-shot';\n\nconst RIGHT_PANE_WIDTH = 60;\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n drawZone: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'white',\n },\n rightPaneBaseStyle: {\n position: 'absolute',\n right: 0,\n top: 0,\n bottom: 0,\n backgroundColor: '#000000cc',\n width: RIGHT_PANE_WIDTH,\n justifyContent: 'space-evenly',\n marginVertical: 20,\n borderTopLeftRadius: 20,\n borderBottomLeftRadius: 20,\n paddingVertical: 30,\n },\n strokeSliderContainer: {\n flex: 1,\n paddingBottom: 15,\n borderBottomColor: '#000000',\n borderBottomWidth: 2,\n },\n colorSliderContainer: { flex: 1, paddingTop: 15 },\n bgImage: { width: '100%', height: '100%' },\n textInput: {\n backgroundColor: '#000000c5',\n paddingVertical: 16,\n paddingHorizontal: 24,\n fontSize: 16,\n color: 'white',\n width: '100%',\n },\n});\n\nfunction pDistance(\n point: { x: number; y: number },\n line: { x1: number; x2: number; y1: number; y2: number }\n) {\n 'worklet';\n const { x1, x2, y1, y2 } = line;\n const { x, y } = point;\n\n var A = x - x1;\n var B = y - y1;\n var C = x2 - x1;\n var D = y2 - y1;\n\n var dot = A * C + B * D;\n var len_sq = C * C + D * D;\n var param = -1;\n if (len_sq !== 0) {\n //in case of 0 length line\n param = dot / len_sq;\n }\n\n var xx, yy;\n\n if (param < 0) {\n xx = x1;\n yy = y1;\n } else if (param > 1) {\n xx = x2;\n yy = y2;\n } else {\n xx = x1 + param * C;\n yy = y1 + param * D;\n }\n\n var dx = x - xx;\n var dy = y - yy;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nconst AnimatedTextInput = Animated.createAnimatedComponent(TextInput);\n\nconst DEFAULT_TEXT = '';\n\nconst THRESHOLD = 20;\n\ntype Context = {\n startX: number;\n startY: number;\n newlyCreated: boolean;\n zone?:\n | 'TOP'\n | 'BOTTOM'\n | 'LEFT'\n | 'RIGHT'\n | 'TOP_LEFT'\n | 'TOP_RIGHT'\n | 'BOTTOM_LEFT'\n | 'BOTTOM_RIGHT'\n | 'CENTER'\n | 'OUT';\n};\n\nconst drawNewItem = (\n mode: Animated.SharedValue<DrawItemType>,\n currentItem: Animated.SharedValue<DrawItem | null>,\n updateDoneItems: (item: DrawItem) => void,\n position: { x: number; y: number },\n style: {\n textBaseHeight: Animated.SharedValue<number | null>;\n strokeWidth: Animated.SharedValue<number>;\n color: Animated.SharedValue<hslColor>;\n }\n) => {\n 'worklet';\n\n if (currentItem.value) {\n runOnJS(updateDoneItems)(currentItem.value);\n }\n\n switch (mode.value) {\n case 'ellipse':\n currentItem.value = {\n type: mode.value,\n data: {\n cx: position.x,\n cy: position.y,\n rx: 0,\n ry: 0,\n },\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n case 'rectangle':\n currentItem.value = {\n type: mode.value,\n data: { x: position.x, y: position.y, width: 0, height: 0 },\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n case 'singleHead':\n case 'doubleHead':\n currentItem.value = {\n type: mode.value,\n data: {\n x1: position.x,\n y1: position.y,\n x2: position.x,\n y2: position.y,\n },\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n case 'text':\n currentItem.value = {\n type: mode.value,\n data: {\n x: position.x,\n y: position.y,\n width: 200,\n height: style.textBaseHeight.value || 0,\n },\n strokeWidth: style.strokeWidth.value,\n text: DEFAULT_TEXT,\n color: style.color.value,\n };\n break;\n case 'pen':\n currentItem.value = {\n type: mode.value,\n data: [],\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n }\n};\n\nconst onTextHeightUpdate = (\n currentItem: Animated.SharedValue<DrawItem | null>,\n textBaseHeight: Animated.SharedValue<number | null>,\n height: number\n) => {\n 'worklet';\n if (currentItem.value?.type === 'text') {\n textBaseHeight.value = textBaseHeight.value || height;\n\n currentItem.value = {\n data: {\n ...currentItem.value.data,\n height: height,\n },\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n };\n }\n};\n\nconst DrawCore = React.forwardRef<\n DrawCoreProps,\n {\n drawingMode: DrawItemType;\n image?: ImageRequireSource | ImageURISource;\n linearGradient: React.ComponentType<{ colors: any[] } & ViewProps>;\n onSelectionChange?: (selected: boolean) => void;\n }\n>(({ drawingMode, image, linearGradient, onSelectionChange }, ref) => {\n const mode = useSharedValue<DrawItemType>('pen');\n\n const [drawRegion, setDrawRegion] = useState<Size | null>(null);\n\n const [originalImageSize, setOriginalImageSize] = useState<Size | null>(null);\n\n const [imageSize, setImageSize] = useState<Size | null>(null);\n\n const drawContainer = useRef<View>(null);\n\n const viewShot = useRef<ViewShot>(null);\n\n const [textVal, setTextVal] = useState<string>('');\n\n const currentItem = useSharedValue<DrawItem | null>(null);\n\n const initialItem = useSharedValue<DrawItem | null>(null);\n\n const [doneItems, setDoneItems] = useState<DrawItem[]>([]);\n\n const textBaseHeight = useSharedValue<number | null>(null);\n\n const updateDoneItems = useCallback((done: DrawItem) => {\n setDoneItems((previous) => previous.concat(done));\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n drawingContainer: drawContainer,\n deleteSelectedItem: () => {\n if (currentItem.value) {\n currentItem.value = null;\n }\n onSelectionChange?.(false);\n },\n takeSnapshot: async (): Promise<string | undefined> => {\n if (currentItem.value) {\n updateDoneItems(currentItem.value);\n currentItem.value = null;\n }\n return viewShot.current?.capture?.();\n },\n }),\n [currentItem, onSelectionChange, updateDoneItems]\n );\n\n useEffect(() => {\n mode.value = drawingMode;\n if (currentItem.value) {\n updateDoneItems(currentItem.value);\n }\n currentItem.value = null;\n onSelectionChange?.(false);\n }, [drawingMode, mode, currentItem, updateDoneItems, onSelectionChange]);\n\n const addNewItem = runOnJS(updateDoneItems);\n\n const strokeWidth = useSharedValue<number>(2);\n\n const color = useSharedValue<hslColor>('hsl(0, 100%, 0%)');\n\n const panPosition = useSharedValue(0);\n\n const showTextInput = useSharedValue(false);\n\n const textFocus = useCallback(() => {\n textInputRef.current?.focus();\n }, []);\n\n useEffect(() => {\n if (currentItem.value?.type === 'text') {\n currentItem.value = {\n data: currentItem.value.data,\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: textVal,\n };\n }\n }, [currentItem, textVal]);\n\n const onGestureEvent = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n Context\n >(\n {\n onStart: ({ x, y }, ctx) => {\n const startX = x;\n const startY = y;\n ctx.startX = startX;\n ctx.startY = startY;\n ctx.newlyCreated = false;\n\n panPosition.value = withTiming(RIGHT_PANE_WIDTH);\n\n initialItem.value = currentItem.value;\n\n switch (currentItem.value?.type) {\n case 'ellipse':\n const cx =\n typeof currentItem.value.data.cx === 'string'\n ? parseFloat(currentItem.value.data.cx)\n : currentItem.value.data.cx || 0;\n const cy =\n typeof currentItem.value.data.cy === 'string'\n ? parseFloat(currentItem.value.data.cy)\n : currentItem.value.data.cy || 0;\n const rx =\n typeof currentItem.value.data.rx === 'string'\n ? parseFloat(currentItem.value.data.rx)\n : currentItem.value.data.rx || 0;\n const ry =\n typeof currentItem.value.data.ry === 'string'\n ? parseFloat(currentItem.value.data.ry)\n : currentItem.value.data.ry || 0;\n\n if (\n startX <= cx + THRESHOLD &&\n startX >= cx - THRESHOLD &&\n startY <= cy - ry + THRESHOLD &&\n startY >= cy - ry - THRESHOLD\n ) {\n ctx.zone = 'TOP';\n } else if (\n startX <= cx + THRESHOLD &&\n startX >= cx - THRESHOLD &&\n startY <= cy + ry + THRESHOLD &&\n startY >= cy + ry - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM';\n } else if (\n startY <= cy + THRESHOLD &&\n startY >= cy - THRESHOLD &&\n startX <= cx - rx + THRESHOLD &&\n startX >= cx - rx - THRESHOLD\n ) {\n ctx.zone = 'LEFT';\n } else if (\n startY <= cy + THRESHOLD &&\n startY >= cy - THRESHOLD &&\n startX <= cx + rx + THRESHOLD &&\n startX >= cx + rx - THRESHOLD\n ) {\n ctx.zone = 'RIGHT';\n } else if (\n ((rx > 0 && startX > cx - rx && startX < cx + rx) ||\n (rx < 0 && startX < cx - rx && startX > cx + rx)) &&\n ((ry > 0 && startY > cy - ry && startY < cy + ry) ||\n (ry < 0 && startY < cy - ry && startY > cy + ry))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'rectangle':\n const x =\n typeof currentItem.value.data.x === 'string'\n ? parseFloat(currentItem.value.data.x)\n : currentItem.value.data.x || 0;\n const y =\n typeof currentItem.value.data.y === 'string'\n ? parseFloat(currentItem.value.data.y)\n : currentItem.value.data.y || 0;\n const height =\n typeof currentItem.value.data.height === 'string'\n ? parseFloat(currentItem.value.data.height)\n : currentItem.value.data.height || 0;\n const width =\n typeof currentItem.value.data.width === 'string'\n ? parseFloat(currentItem.value.data.width)\n : currentItem.value.data.width || 0;\n\n if (startX <= x + THRESHOLD && startX >= x - THRESHOLD) {\n if (startY <= y + THRESHOLD && startY >= y - THRESHOLD) {\n ctx.zone = 'TOP_LEFT';\n } else if (\n startY <= y + height + THRESHOLD &&\n startY >= y + height - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM_LEFT';\n }\n } else if (\n startX <= x + width + THRESHOLD &&\n startX >= x + width - THRESHOLD\n ) {\n if (startY <= y + THRESHOLD && startY >= y - THRESHOLD) {\n ctx.zone = 'TOP_RIGHT';\n } else if (\n startY <= y + height + THRESHOLD &&\n startY >= y + height - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM_RIGHT';\n }\n } else if (\n ((width > 0 && startX > x && startX < x + width) ||\n (width < 0 && startX < x && startX > x + width)) &&\n ((height > 0 && startY > y && startY < y + height) ||\n (height < 0 && startY < y && startY > y + height))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'doubleHead':\n case 'singleHead':\n const x1 =\n typeof currentItem.value.data.x1 === 'string'\n ? parseFloat(currentItem.value.data.x1)\n : currentItem.value.data.x1 || 0;\n const y1 =\n typeof currentItem.value.data.y1 === 'string'\n ? parseFloat(currentItem.value.data.y1)\n : currentItem.value.data.y1 || 0;\n const x2 =\n typeof currentItem.value.data.x2 === 'string'\n ? parseFloat(currentItem.value.data.x2)\n : currentItem.value.data.x2 || 0;\n const y2 =\n typeof currentItem.value.data.y2 === 'string'\n ? parseFloat(currentItem.value.data.y2)\n : currentItem.value.data.y2 || 0;\n\n if (\n startX <= x1 + THRESHOLD &&\n startX >= x1 - THRESHOLD &&\n startY <= y1 + THRESHOLD &&\n startY >= y1 - THRESHOLD\n ) {\n ctx.zone = 'TOP';\n } else if (\n startX <= x2 + THRESHOLD &&\n startX >= x2 - THRESHOLD &&\n startY - THRESHOLD <= y2 + THRESHOLD &&\n startY + THRESHOLD >= y2 - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM';\n } else if (\n pDistance({ x: startX, y: startY }, { x1, x2, y1, y2 }) <=\n THRESHOLD &&\n ((startX > x1 && startX < x2) || (startX < x1 && startX > x2)) &&\n ((startY > y1 && startY < y2) || (startY < y1 && startY > y2))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'text':\n const xText =\n typeof currentItem.value.data.x === 'string'\n ? parseFloat(currentItem.value.data.x)\n : currentItem.value.data.x || 0;\n const yText =\n typeof currentItem.value.data.y === 'string'\n ? parseFloat(currentItem.value.data.y)\n : currentItem.value.data.y || 0;\n const widthText =\n typeof currentItem.value.data.width === 'string'\n ? parseFloat(currentItem.value.data.width)\n : currentItem.value.data.width || 0;\n const heightText =\n typeof currentItem.value.data.height === 'string'\n ? parseFloat(currentItem.value.data.height)\n : currentItem.value.data.height || 0;\n\n if (\n startX <= xText + THRESHOLD &&\n startX >= xText - THRESHOLD &&\n startY <= yText + heightText / 2 + THRESHOLD &&\n startY >= yText + heightText / 2 - THRESHOLD\n ) {\n ctx.zone = 'LEFT';\n } else if (\n startX <= xText + widthText + THRESHOLD &&\n startX >= xText + widthText - THRESHOLD &&\n startY <= yText + heightText / 2 + THRESHOLD &&\n startY >= yText + heightText / 2 - THRESHOLD\n ) {\n ctx.zone = 'RIGHT';\n } else if (\n ((widthText > 0 &&\n startX > xText &&\n startX < xText + widthText) ||\n (widthText < 0 &&\n startX < xText &&\n startX > xText + widthText)) &&\n ((heightText > 0 &&\n startY > yText &&\n startY < yText + heightText) ||\n (heightText < 0 &&\n startY < yText &&\n startY > yText + heightText))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'pen':\n if (\n currentItem.value.data.some(\n (p) =>\n startX <= p.x + THRESHOLD &&\n startX >= p.x - THRESHOLD &&\n startY <= p.y + THRESHOLD &&\n startY >= p.y - THRESHOLD\n )\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n break;\n default:\n ctx.zone = 'OUT';\n initialItem.value = null;\n break;\n }\n },\n onActive: ({ x, y, translationX, translationY }, ctx) => {\n const { startX, startY, zone, newlyCreated } = ctx;\n if (zone === 'OUT' && newlyCreated === false) {\n ctx.newlyCreated = true;\n if (mode.value === 'text') {\n runOnJS(setTextVal)('');\n }\n\n drawNewItem(\n mode,\n currentItem,\n addNewItem,\n { x: startX, y: startY },\n { textBaseHeight, strokeWidth, color }\n );\n onSelectionChange && runOnJS(onSelectionChange)(true);\n }\n switch (currentItem.value?.type) {\n case 'pen':\n if (\n initialItem.value?.type === currentItem.value.type &&\n zone === 'CENTER'\n ) {\n currentItem.value = {\n type: 'pen',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: initialItem.value.data.map((p) => ({\n x: p.x + translationX,\n y: p.y + translationY,\n })),\n };\n } else {\n currentItem.value = {\n type: 'pen',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: currentItem.value.data.concat({\n x: x,\n y: y,\n }),\n };\n }\n break;\n case 'ellipse':\n if (initialItem.value?.type === currentItem.value.type) {\n const rx =\n typeof initialItem.value.data.rx === 'string'\n ? parseFloat(initialItem.value?.data.rx)\n : initialItem.value.data.rx || 0;\n\n const ry =\n typeof initialItem.value.data.ry === 'string'\n ? parseFloat(initialItem.value.data.ry)\n : initialItem.value.data.ry || 0;\n\n const cx =\n typeof initialItem.value.data.cx === 'string'\n ? parseFloat(initialItem.value.data.cx)\n : initialItem.value.data.cx || 0;\n\n const cy =\n typeof initialItem.value.data.cy === 'string'\n ? parseFloat(initialItem.value.data.cy)\n : initialItem.value.data.cy || 0;\n\n switch (zone) {\n case 'TOP':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx,\n cy: cy + translationY,\n rx: rx,\n ry: ry - translationY,\n },\n };\n break;\n case 'BOTTOM':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx,\n cy: cy + translationY,\n rx: rx,\n ry: ry + translationY,\n },\n };\n break;\n case 'LEFT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx + translationX,\n cy: cy,\n rx: rx - translationX,\n ry: ry,\n },\n };\n break;\n case 'RIGHT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx + translationX,\n cy: cy,\n rx: rx + translationX,\n ry: ry,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx + translationX,\n cy: cy + translationY,\n rx: rx,\n ry: ry,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: startX + translationX,\n cy: startY + translationY,\n rx: translationX,\n ry: translationY,\n },\n };\n }\n\n break;\n case 'rectangle':\n if (initialItem.value?.type === currentItem.value.type) {\n const height =\n typeof initialItem.value?.data.height === 'string'\n ? parseFloat(initialItem.value?.data.height)\n : initialItem.value?.data.height || 0;\n\n const width =\n typeof initialItem.value?.data.width === 'string'\n ? parseFloat(initialItem.value?.data.width)\n : initialItem.value?.data.width || 0;\n\n const x =\n typeof initialItem.value?.data.x === 'string'\n ? parseFloat(initialItem.value?.data.x)\n : initialItem.value?.data.x || 0;\n\n const y =\n typeof initialItem.value?.data.y === 'string'\n ? parseFloat(initialItem.value?.data.y)\n : initialItem.value?.data.y || 0;\n\n switch (zone) {\n case 'TOP_LEFT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: startX + translationX,\n y: startY + translationY,\n width: width - translationX,\n height: height - translationY,\n },\n };\n break;\n case 'TOP_RIGHT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: x,\n y: startY + translationY,\n width: width + translationX,\n height: height - translationY,\n },\n };\n break;\n case 'BOTTOM_LEFT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: startX + translationX,\n y: y,\n width: width - translationX,\n height: height + translationY,\n },\n };\n break;\n case 'BOTTOM_RIGHT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: x,\n y: y,\n width: width + translationX,\n height: height + translationY,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: x + translationX,\n y: y + translationY,\n width: width,\n height: height,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: currentItem.value.data.x,\n y: currentItem.value.data.y,\n width: translationX,\n height: translationY,\n },\n };\n }\n break;\n case 'singleHead':\n case 'doubleHead':\n if (initialItem.value?.type === currentItem.value.type) {\n const x1 =\n typeof initialItem.value?.data.x1 === 'string'\n ? parseFloat(initialItem.value?.data.x1)\n : initialItem.value?.data.x1 || 0;\n\n const y1 =\n typeof initialItem.value?.data.y1 === 'string'\n ? parseFloat(initialItem.value?.data.y1)\n : initialItem.value?.data.y1 || 0;\n\n const x2 =\n typeof initialItem.value?.data.x2 === 'string'\n ? parseFloat(initialItem.value?.data.x2)\n : initialItem.value?.data.x2 || 0;\n\n const y2 =\n typeof initialItem.value?.data.y2 === 'string'\n ? parseFloat(initialItem.value?.data.y2)\n : initialItem.value?.data.y2 || 0;\n\n switch (zone) {\n case 'TOP':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: x1 + translationX,\n y1: y1 + translationY,\n x2: x2,\n y2: y2,\n },\n };\n break;\n case 'BOTTOM':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: x1,\n y1: y1,\n x2: x2 + translationX,\n y2: y2 + translationY,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: x1 + translationX,\n y1: y1 + translationY,\n x2: x2 + translationX,\n y2: y2 + translationY,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: startX,\n y1: startY,\n x2: startX + translationX,\n y2: startY + translationY,\n },\n };\n }\n break;\n case 'text':\n if (initialItem.value?.type === currentItem.value.type) {\n const xText =\n typeof initialItem.value?.data.x === 'string'\n ? parseFloat(initialItem.value?.data.x)\n : initialItem.value?.data.x || 0;\n const yText =\n typeof initialItem.value?.data.y === 'string'\n ? parseFloat(initialItem.value?.data.y)\n : initialItem.value?.data.y || 0;\n const widthText =\n typeof initialItem.value?.data.width === 'string'\n ? parseFloat(initialItem.value?.data.width)\n : initialItem.value?.data.width || 0;\n const heightText =\n typeof initialItem.value?.data.height === 'string'\n ? parseFloat(initialItem.value?.data.height)\n : initialItem.value?.data.height || 0;\n\n switch (zone) {\n case 'LEFT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: xText + translationX,\n y: yText,\n width: widthText - translationX,\n height: heightText,\n },\n };\n break;\n case 'RIGHT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: xText,\n y: yText,\n width: widthText + translationX,\n height: heightText,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: xText + translationX,\n y: yText + translationY,\n width: widthText,\n height: heightText,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: startX + translationX,\n y: startY + translationY,\n width: currentItem.value.data.width,\n height: currentItem.value.data.height,\n },\n };\n }\n }\n },\n onEnd: (_event) => {\n panPosition.value = withTiming(0);\n\n if (currentItem.value?.type === 'text') {\n runOnJS(textFocus)();\n\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: currentItem.value.data,\n text:\n currentItem.value.text !== DEFAULT_TEXT\n ? currentItem.value.text ?? ''\n : '',\n };\n }\n },\n },\n []\n );\n\n const rightPaneStyle = useAnimatedStyle(() => {\n return {\n transform: [{ translateX: panPosition.value }],\n };\n }, [panPosition.value]);\n\n useEffect(() => {\n const sudDidHide = Keyboard.addListener('keyboardDidHide', () => {\n showTextInput.value = false;\n });\n\n const sudDidShow = Keyboard.addListener('keyboardDidShow', (event) => {\n // avoid events triggered by InputAccessoryView\n if (event.endCoordinates.height > 100) {\n showTextInput.value = true;\n }\n });\n\n // cleanup function\n return () => {\n sudDidShow.remove();\n sudDidHide.remove();\n };\n }, [showTextInput]);\n\n const textInputRef = useRef<TextInput>(null);\n\n const textInputContainerStyle = useAnimatedStyle(() => {\n return {\n height: 'auto',\n backgroundColor: 'white',\n display: 'flex',\n opacity: showTextInput.value ? withTiming(1) : withTiming(0),\n };\n }, [showTextInput.value]);\n\n const textInputStyle = useAnimatedStyle(() => {\n return {\n display: showTextInput.value ? 'flex' : 'none',\n opacity: showTextInput.value ? withTiming(1) : withTiming(0),\n };\n }, [showTextInput.value]);\n\n useAnimatedReaction(\n () => {\n return { strokeWidth: strokeWidth.value, color: color.value };\n },\n ({ strokeWidth, color }: { strokeWidth: number; color: hslColor }) => {\n switch (currentItem.value?.type) {\n case 'singleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'doubleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'ellipse':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'rectangle':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n\n case 'pen':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'text':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n text: currentItem.value.text,\n };\n break;\n }\n },\n [strokeWidth.value, color.value]\n );\n\n const onPressItem = useCallback(\n (item: DrawItem, index: number) => () => {\n onSelectionChange?.(true);\n\n const previousItem = currentItem.value;\n\n strokeWidth.value = item.strokeWidth;\n color.value = item.color;\n currentItem.value = item;\n\n setDoneItems((done) => {\n const copy = [...done];\n copy.splice(index, 1);\n return copy;\n });\n\n if (previousItem) {\n updateDoneItems(previousItem);\n }\n\n if (item.type === 'text') {\n setTextVal(item.text ?? '');\n } else {\n textInputRef.current?.blur();\n }\n },\n [color, currentItem, strokeWidth, updateDoneItems, onSelectionChange]\n );\n\n const onTextHeightChange = useCallback(\n (height: number) => {\n onTextHeightUpdate(currentItem, textBaseHeight, height);\n },\n [currentItem, textBaseHeight]\n );\n\n const calculateSizes = useCallback(\n (imageWidth: number, imageHeight: number) => {\n if (drawRegion) {\n setOriginalImageSize({ width: imageWidth, height: imageHeight });\n\n const ratioImageHeight =\n Math.round(((imageHeight * drawRegion.width) / imageWidth) * 100) /\n 100;\n\n if (ratioImageHeight < drawRegion.height) {\n setImageSize({\n width: drawRegion.width,\n height: ratioImageHeight,\n });\n } else {\n setImageSize({\n height: drawRegion.height,\n width:\n Math.round(\n ((imageWidth * drawRegion.height) / imageHeight) * 100\n ) / 100,\n });\n }\n }\n },\n [drawRegion]\n );\n\n useEffect(() => {\n if (drawRegion && image) {\n if (typeof image === 'number') {\n const infos = Image.resolveAssetSource(image);\n\n calculateSizes(infos.width, infos.height);\n } else if (image.uri) {\n Image.getSize(image.uri, (imageWidth, imageHeight) => {\n calculateSizes(imageWidth, imageHeight);\n });\n }\n }\n }, [image, drawRegion, calculateSizes]);\n\n return (\n <View style={styles.container}>\n <View\n style={styles.drawZone}\n onLayout={(event) => {\n setDrawRegion({\n height: event.nativeEvent.layout.height,\n width: event.nativeEvent.layout.width,\n });\n }}\n >\n <PanGestureHandler\n activeOffsetX={2}\n activeOffsetY={2}\n onGestureEvent={onGestureEvent}\n >\n <Animated.View style={imageSize || drawRegion}>\n <View ref={drawContainer}>\n {image ? (\n imageSize && originalImageSize ? (\n <ViewShot\n ref={viewShot}\n options={{\n format: 'jpg',\n quality: 1,\n }}\n style={imageSize}\n >\n <ImageBackground source={image} style={styles.bgImage}>\n <DrawPad\n currentItem={currentItem}\n doneItems={doneItems}\n onPressItem={onPressItem}\n onTextHeightChange={onTextHeightChange}\n />\n </ImageBackground>\n </ViewShot>\n ) : null\n ) : drawRegion ? (\n <ViewShot\n ref={viewShot}\n options={{\n format: 'jpg',\n quality: 1,\n ...drawRegion,\n }}\n style={drawRegion}\n >\n <DrawPad\n currentItem={currentItem}\n doneItems={doneItems}\n onPressItem={onPressItem}\n onTextHeightChange={onTextHeightChange}\n />\n </ViewShot>\n ) : null}\n </View>\n </Animated.View>\n </PanGestureHandler>\n\n <Animated.View style={[styles.rightPaneBaseStyle, rightPaneStyle]}>\n <View style={styles.strokeSliderContainer}>\n <StrokeSlider minValue={2} maxValue={10} stroke={strokeWidth} />\n </View>\n <View style={styles.colorSliderContainer}>\n <ColorSlider color={color} linearGradient={linearGradient} />\n </View>\n </Animated.View>\n </View>\n {Platform.OS === 'ios' ? (\n <InputAccessoryView>\n <AnimatedTextInput\n ref={textInputRef}\n style={[styles.textInput, textInputStyle]}\n onEndEditing={textInputRef.current?.clear}\n onChangeText={setTextVal}\n value={textVal}\n autoCorrect={false}\n />\n </InputAccessoryView>\n ) : (\n <Animated.View style={textInputContainerStyle}>\n <TextInput\n ref={textInputRef}\n style={styles.textInput}\n onEndEditing={textInputRef.current?.clear}\n onChangeText={setTextVal}\n value={textVal}\n autoCorrect={false}\n />\n </Animated.View>\n )}\n </View>\n );\n});\n\nexport default DrawCore;\n"]}
|