@archireport/react-native-svg-draw 1.0.0 → 1.0.3

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.
@@ -83,11 +83,11 @@ const ColorSlider = ({
83
83
  const slidePos = Math.min(sliderHeight.value, startY + translationY);
84
84
 
85
85
  if (slidePos < 0.1 * sliderHeight.value) {
86
- color.value = `hsl(${0}, ${100}%, ${Math.min(100, 100 - slidePos / (0.1 * sliderHeight.value) * 50)}%)`;
86
+ color.value = `hsl(0, 100%, ${Math.min(100, 100 - slidePos / (0.1 * sliderHeight.value) * 50).toFixed(10)}%)`;
87
87
  } else if (slidePos > 0.9 * sliderHeight.value) {
88
- color.value = `hsl(${0}, ${100}%, ${Math.max(50 - (slidePos - 0.9 * sliderHeight.value) / (0.1 * sliderHeight.value) * 50, 0)}%)`;
88
+ color.value = `hsl(0, 100%, ${Math.max(50 - (slidePos - 0.9 * sliderHeight.value) / (0.1 * sliderHeight.value) * 50, 0).toFixed(10)}%)`;
89
89
  } else {
90
- color.value = `hsl(${(slidePos - sliderHeight.value * 0.1) / (sliderHeight.value - sliderHeight.value * 0.2) * 360}, ${100}%, ${50}%)`;
90
+ color.value = `hsl(${(slidePos - sliderHeight.value * 0.1) / (sliderHeight.value - sliderHeight.value * 0.2) * 360}, 100%, 50%)`;
91
91
  }
92
92
  },
93
93
  onEnd: () => {}
@@ -1 +1 @@
1
- {"version":3,"sources":["ColorSlider.tsx"],"names":["TRACK_R","gradientColors","styles","StyleSheet","create","container","flex","alignItems","width","thumb","position","height","borderRadius","top","backgroundColor","track","borderWidth","indicator","marginTop","ColorSlider","color","linearGradient","LinearGradient","sliderHeight","hslRegExp","RegExp","res","exec","value","lum","parseFloat","tint","Math","min","max","onGestureEvent","onStart","y","ctx","startY","onActive","translationY","slidePos","onEnd","style","transform","translateY","selectedColorStyle","onLayout","event","nativeEvent","layout"],"mappings":"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","sourcesContent":["import React, { useCallback } from 'react';\nimport { LayoutChangeEvent, StyleSheet, View, ViewProps } from 'react-native';\n\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\nimport Animated, {\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n} from 'react-native-reanimated';\nimport type { hslColor } from '../../types';\n\nconst TRACK_R = 10;\n\nconst gradientColors = [\n 'hsl(0, 100%, 100%) 00%',\n 'hsl(0, 100%, 50%) 10%',\n 'hsl(45, 100%, 50%) 20%',\n 'hsl(90, 100%, 50%) 30%',\n 'hsl(135, 100%, 50%) 40%',\n 'hsl(180, 100%, 50%) 50%',\n 'hsl(225, 100%, 50%) 60%',\n 'hsl(270, 100%, 50%) 70%',\n 'hsl(315, 100%, 50%) 80%',\n 'hsl(360, 100%, 50%) 90%',\n 'hsl(0, 100%, 0%) 100% ',\n];\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n width: '100%',\n },\n thumb: {\n position: 'absolute',\n width: TRACK_R * 2,\n height: TRACK_R * 2,\n borderRadius: TRACK_R,\n top: 0,\n backgroundColor: 'white',\n },\n track: { width: 10, flex: 1, borderRadius: 5, borderWidth: 1 },\n indicator: {\n width: 22,\n height: 22,\n borderRadius: 22,\n marginTop: 20,\n },\n});\n\nconst ColorSlider = ({\n color,\n linearGradient: LinearGradient,\n}: {\n color: Animated.SharedValue<hslColor>;\n linearGradient: React.ComponentType<{ colors: any[] } & ViewProps>;\n}) => {\n const sliderHeight = useSharedValue(0);\n\n const position = useDerivedValue(() => {\n const hslRegExp = new RegExp(/hsl\\(([\\d.]+),\\s*(\\d+)%,\\s*([\\d.]+)%\\)/);\n const res = hslRegExp.exec(color.value);\n\n const lum = res ? parseFloat(res[3]) : 0;\n\n const tint = res ? parseFloat(res[1]) : 0;\n\n if (lum > 50) {\n return ((sliderHeight.value * 0.1) / 50) * (100 - lum);\n }\n\n if (lum < 50) {\n return sliderHeight.value - ((sliderHeight.value * 0.1) / 50) * lum;\n }\n\n return Math.min(\n sliderHeight.value,\n Math.max(\n 0,\n sliderHeight.value * 0.1 +\n tint * ((sliderHeight.value - sliderHeight.value * 0.2) / 360)\n )\n );\n }, [sliderHeight.value]);\n\n const onGestureEvent = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n { startY: number }\n >(\n {\n onStart: ({ y }, ctx) => {\n ctx.startY = y;\n },\n onActive: ({ translationY }, { startY }) => {\n const slidePos = Math.min(sliderHeight.value, startY + translationY);\n\n if (slidePos < 0.1 * sliderHeight.value) {\n color.value = `hsl(${0 as number}, ${100 as number}%, ${Math.min(\n 100,\n 100 - (slidePos / (0.1 * sliderHeight.value)) * 50\n )}%)` as const;\n } else if (slidePos > 0.9 * sliderHeight.value) {\n color.value = `hsl(${0 as number}, ${100 as number}%, ${Math.max(\n 50 -\n ((slidePos - 0.9 * sliderHeight.value) /\n (0.1 * sliderHeight.value)) *\n 50,\n 0\n )}%)` as const;\n } else {\n color.value = `hsl(${\n ((slidePos - sliderHeight.value * 0.1) /\n (sliderHeight.value - sliderHeight.value * 0.2)) *\n 360\n }, ${100 as number}%, ${50 as number}%)` as const;\n }\n },\n onEnd: () => {},\n },\n []\n );\n\n const style = useAnimatedStyle(() => {\n return {\n transform: [{ translateY: position.value - TRACK_R }],\n };\n }, [position.value]);\n\n const selectedColorStyle = useAnimatedStyle(() => {\n return {\n backgroundColor: color.value,\n };\n }, [color.value]);\n\n const onLayout = useCallback(\n (event: LayoutChangeEvent) => {\n sliderHeight.value = event.nativeEvent.layout.height;\n },\n [sliderHeight]\n );\n\n return (\n <View style={styles.container}>\n <PanGestureHandler onGestureEvent={onGestureEvent}>\n <Animated.View style={styles.container}>\n <LinearGradient\n colors={gradientColors}\n onLayout={onLayout}\n style={styles.track}\n />\n <Animated.View style={[styles.thumb, style]} />\n </Animated.View>\n </PanGestureHandler>\n\n <Animated.View style={[styles.indicator, selectedColorStyle]} />\n </View>\n );\n};\n\nexport default ColorSlider;\n"]}
1
+ {"version":3,"sources":["ColorSlider.tsx"],"names":["TRACK_R","gradientColors","styles","StyleSheet","create","container","flex","alignItems","width","thumb","position","height","borderRadius","top","backgroundColor","track","borderWidth","indicator","marginTop","ColorSlider","color","linearGradient","LinearGradient","sliderHeight","hslRegExp","RegExp","res","exec","value","lum","parseFloat","tint","Math","min","max","onGestureEvent","onStart","y","ctx","startY","onActive","translationY","slidePos","toFixed","onEnd","style","transform","translateY","selectedColorStyle","onLayout","event","nativeEvent","layout"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAIA;;;;;;AAQA,MAAMA,OAAO,GAAG,EAAhB;AAEA,MAAMC,cAAc,GAAG,CACrB,wBADqB,EAErB,uBAFqB,EAGrB,wBAHqB,EAIrB,wBAJqB,EAKrB,yBALqB,EAMrB,yBANqB,EAOrB,yBAPqB,EAQrB,yBARqB,EASrB,yBATqB,EAUrB,yBAVqB,EAWrB,yBAXqB,CAAvB;;AAcA,MAAMC,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,IAAI,EAAE,CADG;AAETC,IAAAA,UAAU,EAAE,QAFH;AAGTC,IAAAA,KAAK,EAAE;AAHE,GADoB;AAM/BC,EAAAA,KAAK,EAAE;AACLC,IAAAA,QAAQ,EAAE,UADL;AAELF,IAAAA,KAAK,EAAER,OAAO,GAAG,CAFZ;AAGLW,IAAAA,MAAM,EAAEX,OAAO,GAAG,CAHb;AAILY,IAAAA,YAAY,EAAEZ,OAJT;AAKLa,IAAAA,GAAG,EAAE,CALA;AAMLC,IAAAA,eAAe,EAAE;AANZ,GANwB;AAc/BC,EAAAA,KAAK,EAAE;AAAEP,IAAAA,KAAK,EAAE,EAAT;AAAaF,IAAAA,IAAI,EAAE,CAAnB;AAAsBM,IAAAA,YAAY,EAAE,CAApC;AAAuCI,IAAAA,WAAW,EAAE;AAApD,GAdwB;AAe/BC,EAAAA,SAAS,EAAE;AACTT,IAAAA,KAAK,EAAE,EADE;AAETG,IAAAA,MAAM,EAAE,EAFC;AAGTC,IAAAA,YAAY,EAAE,EAHL;AAITM,IAAAA,SAAS,EAAE;AAJF;AAfoB,CAAlB,CAAf;;AAuBA,MAAMC,WAAW,GAAG,CAAC;AACnBC,EAAAA,KADmB;AAEnBC,EAAAA,cAAc,EAAEC;AAFG,CAAD,KAMd;AACJ,QAAMC,YAAY,GAAG,2CAAe,CAAf,CAArB;AAEA,QAAMb,QAAQ,GAAG,4CAAgB,MAAM;AACrC,UAAMc,SAAS,GAAG,IAAIC,MAAJ,CAAW,wCAAX,CAAlB;AACA,UAAMC,GAAG,GAAGF,SAAS,CAACG,IAAV,CAAeP,KAAK,CAACQ,KAArB,CAAZ;AAEA,UAAMC,GAAG,GAAGH,GAAG,GAAGI,UAAU,CAACJ,GAAG,CAAC,CAAD,CAAJ,CAAb,GAAwB,CAAvC;AAEA,UAAMK,IAAI,GAAGL,GAAG,GAAGI,UAAU,CAACJ,GAAG,CAAC,CAAD,CAAJ,CAAb,GAAwB,CAAxC;;AAEA,QAAIG,GAAG,GAAG,EAAV,EAAc;AACZ,aAASN,YAAY,CAACK,KAAb,GAAqB,GAAtB,GAA6B,EAA9B,IAAqC,MAAMC,GAA3C,CAAP;AACD;;AAED,QAAIA,GAAG,GAAG,EAAV,EAAc;AACZ,aAAON,YAAY,CAACK,KAAb,GAAuBL,YAAY,CAACK,KAAb,GAAqB,GAAtB,GAA6B,EAA9B,GAAoCC,GAAhE;AACD;;AAED,WAAOG,IAAI,CAACC,GAAL,CACLV,YAAY,CAACK,KADR,EAELI,IAAI,CAACE,GAAL,CACE,CADF,EAEEX,YAAY,CAACK,KAAb,GAAqB,GAArB,GACEG,IAAI,IAAI,CAACR,YAAY,CAACK,KAAb,GAAqBL,YAAY,CAACK,KAAb,GAAqB,GAA3C,IAAkD,GAAtD,CAHR,CAFK,CAAP;AAQD,GAxBgB,EAwBd,CAACL,YAAY,CAACK,KAAd,CAxBc,CAAjB;AA0BA,QAAMO,cAAc,GAAG,sDAIrB;AACEC,IAAAA,OAAO,EAAE,CAAC;AAAEC,MAAAA;AAAF,KAAD,EAAQC,GAAR,KAAgB;AACvBA,MAAAA,GAAG,CAACC,MAAJ,GAAaF,CAAb;AACD,KAHH;AAIEG,IAAAA,QAAQ,EAAE,CAAC;AAAEC,MAAAA;AAAF,KAAD,EAAmB;AAAEF,MAAAA;AAAF,KAAnB,KAAkC;AAC1C,YAAMG,QAAQ,GAAGV,IAAI,CAACC,GAAL,CAASV,YAAY,CAACK,KAAtB,EAA6BW,MAAM,GAAGE,YAAtC,CAAjB;;AAEA,UAAIC,QAAQ,GAAG,MAAMnB,YAAY,CAACK,KAAlC,EAAyC;AACvCR,QAAAA,KAAK,CAACQ,KAAN,GAAe,gBAAeI,IAAI,CAACC,GAAL,CAC5B,GAD4B,EAE5B,MAAOS,QAAQ,IAAI,MAAMnB,YAAY,CAACK,KAAvB,CAAT,GAA0C,EAFpB,EAG5Be,OAH4B,CAGpB,EAHoB,CAGhB,IAHd;AAID,OALD,MAKO,IAAID,QAAQ,GAAG,MAAMnB,YAAY,CAACK,KAAlC,EAAyC;AAC9CR,QAAAA,KAAK,CAACQ,KAAN,GAAe,gBAAeI,IAAI,CAACE,GAAL,CAC5B,KACG,CAACQ,QAAQ,GAAG,MAAMnB,YAAY,CAACK,KAA/B,KACE,MAAML,YAAY,CAACK,KADrB,CAAD,GAEE,EAJwB,EAK5B,CAL4B,EAM5Be,OAN4B,CAMpB,EANoB,CAMhB,IANd;AAOD,OARM,MAQA;AACLvB,QAAAA,KAAK,CAACQ,KAAN,GAAe,OACZ,CAACc,QAAQ,GAAGnB,YAAY,CAACK,KAAb,GAAqB,GAAjC,KACEL,YAAY,CAACK,KAAb,GAAqBL,YAAY,CAACK,KAAb,GAAqB,GAD5C,CAAD,GAEA,GACD,cAJD;AAKD;AACF,KA3BH;AA4BEgB,IAAAA,KAAK,EAAE,MAAM,CAAE;AA5BjB,GAJqB,EAkCrB,EAlCqB,CAAvB;AAqCA,QAAMC,KAAK,GAAG,6CAAiB,MAAM;AACnC,WAAO;AACLC,MAAAA,SAAS,EAAE,CAAC;AAAEC,QAAAA,UAAU,EAAErC,QAAQ,CAACkB,KAAT,GAAiB5B;AAA/B,OAAD;AADN,KAAP;AAGD,GAJa,EAIX,CAACU,QAAQ,CAACkB,KAAV,CAJW,CAAd;AAMA,QAAMoB,kBAAkB,GAAG,6CAAiB,MAAM;AAChD,WAAO;AACLlC,MAAAA,eAAe,EAAEM,KAAK,CAACQ;AADlB,KAAP;AAGD,GAJ0B,EAIxB,CAACR,KAAK,CAACQ,KAAP,CAJwB,CAA3B;AAMA,QAAMqB,QAAQ,GAAG,wBACdC,KAAD,IAA8B;AAC5B3B,IAAAA,YAAY,CAACK,KAAb,GAAqBsB,KAAK,CAACC,WAAN,CAAkBC,MAAlB,CAAyBzC,MAA9C;AACD,GAHc,EAIf,CAACY,YAAD,CAJe,CAAjB;AAOA,sBACE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAErB,MAAM,CAACG;AAApB,kBACE,6BAAC,4CAAD;AAAmB,IAAA,cAAc,EAAE8B;AAAnC,kBACE,6BAAC,8BAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAEjC,MAAM,CAACG;AAA7B,kBACE,6BAAC,cAAD;AACE,IAAA,MAAM,EAAEJ,cADV;AAEE,IAAA,QAAQ,EAAEgD,QAFZ;AAGE,IAAA,KAAK,EAAE/C,MAAM,CAACa;AAHhB,IADF,eAME,6BAAC,8BAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAE,CAACb,MAAM,CAACO,KAAR,EAAeoC,KAAf;AAAtB,IANF,CADF,CADF,eAYE,6BAAC,8BAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAE,CAAC3C,MAAM,CAACe,SAAR,EAAmB+B,kBAAnB;AAAtB,IAZF,CADF;AAgBD,CA3GD;;eA6Ge7B,W","sourcesContent":["import React, { useCallback } from 'react';\nimport { LayoutChangeEvent, StyleSheet, View, ViewProps } from 'react-native';\n\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\nimport Animated, {\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n} from 'react-native-reanimated';\nimport type { hslColor } from '../../types';\n\nconst TRACK_R = 10;\n\nconst gradientColors = [\n 'hsl(0, 100%, 100%) 00%',\n 'hsl(0, 100%, 50%) 10%',\n 'hsl(45, 100%, 50%) 20%',\n 'hsl(90, 100%, 50%) 30%',\n 'hsl(135, 100%, 50%) 40%',\n 'hsl(180, 100%, 50%) 50%',\n 'hsl(225, 100%, 50%) 60%',\n 'hsl(270, 100%, 50%) 70%',\n 'hsl(315, 100%, 50%) 80%',\n 'hsl(360, 100%, 50%) 90%',\n 'hsl(0, 100%, 0%) 100% ',\n];\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n width: '100%',\n },\n thumb: {\n position: 'absolute',\n width: TRACK_R * 2,\n height: TRACK_R * 2,\n borderRadius: TRACK_R,\n top: 0,\n backgroundColor: 'white',\n },\n track: { width: 10, flex: 1, borderRadius: 5, borderWidth: 1 },\n indicator: {\n width: 22,\n height: 22,\n borderRadius: 22,\n marginTop: 20,\n },\n});\n\nconst ColorSlider = ({\n color,\n linearGradient: LinearGradient,\n}: {\n color: Animated.SharedValue<hslColor>;\n linearGradient: React.ComponentType<{ colors: any[] } & ViewProps>;\n}) => {\n const sliderHeight = useSharedValue(0);\n\n const position = useDerivedValue(() => {\n const hslRegExp = new RegExp(/hsl\\(([\\d.]+),\\s*(\\d+)%,\\s*([\\d.]+)%\\)/);\n const res = hslRegExp.exec(color.value);\n\n const lum = res ? parseFloat(res[3]) : 0;\n\n const tint = res ? parseFloat(res[1]) : 0;\n\n if (lum > 50) {\n return ((sliderHeight.value * 0.1) / 50) * (100 - lum);\n }\n\n if (lum < 50) {\n return sliderHeight.value - ((sliderHeight.value * 0.1) / 50) * lum;\n }\n\n return Math.min(\n sliderHeight.value,\n Math.max(\n 0,\n sliderHeight.value * 0.1 +\n tint * ((sliderHeight.value - sliderHeight.value * 0.2) / 360)\n )\n );\n }, [sliderHeight.value]);\n\n const onGestureEvent = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n { startY: number }\n >(\n {\n onStart: ({ y }, ctx) => {\n ctx.startY = y;\n },\n onActive: ({ translationY }, { startY }) => {\n const slidePos = Math.min(sliderHeight.value, startY + translationY);\n\n if (slidePos < 0.1 * sliderHeight.value) {\n color.value = `hsl(0, 100%, ${Math.min(\n 100,\n 100 - (slidePos / (0.1 * sliderHeight.value)) * 50\n ).toFixed(10)}%)`;\n } else if (slidePos > 0.9 * sliderHeight.value) {\n color.value = `hsl(0, 100%, ${Math.max(\n 50 -\n ((slidePos - 0.9 * sliderHeight.value) /\n (0.1 * sliderHeight.value)) *\n 50,\n 0\n ).toFixed(10)}%)`;\n } else {\n color.value = `hsl(${\n ((slidePos - sliderHeight.value * 0.1) /\n (sliderHeight.value - sliderHeight.value * 0.2)) *\n 360\n }, 100%, 50%)`;\n }\n },\n onEnd: () => {},\n },\n []\n );\n\n const style = useAnimatedStyle(() => {\n return {\n transform: [{ translateY: position.value - TRACK_R }],\n };\n }, [position.value]);\n\n const selectedColorStyle = useAnimatedStyle(() => {\n return {\n backgroundColor: color.value,\n };\n }, [color.value]);\n\n const onLayout = useCallback(\n (event: LayoutChangeEvent) => {\n sliderHeight.value = event.nativeEvent.layout.height;\n },\n [sliderHeight]\n );\n\n return (\n <View style={styles.container}>\n <PanGestureHandler onGestureEvent={onGestureEvent}>\n <Animated.View style={styles.container}>\n <LinearGradient\n colors={gradientColors}\n onLayout={onLayout}\n style={styles.track}\n />\n <Animated.View style={[styles.thumb, style]} />\n </Animated.View>\n </PanGestureHandler>\n\n <Animated.View style={[styles.indicator, selectedColorStyle]} />\n </View>\n );\n};\n\nexport default ColorSlider;\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"]}
@@ -67,11 +67,11 @@ const ColorSlider = ({
67
67
  const slidePos = Math.min(sliderHeight.value, startY + translationY);
68
68
 
69
69
  if (slidePos < 0.1 * sliderHeight.value) {
70
- color.value = `hsl(${0}, ${100}%, ${Math.min(100, 100 - slidePos / (0.1 * sliderHeight.value) * 50)}%)`;
70
+ color.value = `hsl(0, 100%, ${Math.min(100, 100 - slidePos / (0.1 * sliderHeight.value) * 50).toFixed(10)}%)`;
71
71
  } else if (slidePos > 0.9 * sliderHeight.value) {
72
- color.value = `hsl(${0}, ${100}%, ${Math.max(50 - (slidePos - 0.9 * sliderHeight.value) / (0.1 * sliderHeight.value) * 50, 0)}%)`;
72
+ color.value = `hsl(0, 100%, ${Math.max(50 - (slidePos - 0.9 * sliderHeight.value) / (0.1 * sliderHeight.value) * 50, 0).toFixed(10)}%)`;
73
73
  } else {
74
- color.value = `hsl(${(slidePos - sliderHeight.value * 0.1) / (sliderHeight.value - sliderHeight.value * 0.2) * 360}, ${100}%, ${50}%)`;
74
+ color.value = `hsl(${(slidePos - sliderHeight.value * 0.1) / (sliderHeight.value - sliderHeight.value * 0.2) * 360}, 100%, 50%)`;
75
75
  }
76
76
  },
77
77
  onEnd: () => {}
@@ -1 +1 @@
1
- {"version":3,"sources":["ColorSlider.tsx"],"names":["React","useCallback","StyleSheet","View","PanGestureHandler","Animated","useAnimatedGestureHandler","useAnimatedStyle","useDerivedValue","useSharedValue","TRACK_R","gradientColors","styles","create","container","flex","alignItems","width","thumb","position","height","borderRadius","top","backgroundColor","track","borderWidth","indicator","marginTop","ColorSlider","color","linearGradient","LinearGradient","sliderHeight","hslRegExp","RegExp","res","exec","value","lum","parseFloat","tint","Math","min","max","onGestureEvent","onStart","y","ctx","startY","onActive","translationY","slidePos","onEnd","style","transform","translateY","selectedColorStyle","onLayout","event","nativeEvent","layout"],"mappings":"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","sourcesContent":["import React, { useCallback } from 'react';\nimport { LayoutChangeEvent, StyleSheet, View, ViewProps } from 'react-native';\n\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\nimport Animated, {\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n} from 'react-native-reanimated';\nimport type { hslColor } from '../../types';\n\nconst TRACK_R = 10;\n\nconst gradientColors = [\n 'hsl(0, 100%, 100%) 00%',\n 'hsl(0, 100%, 50%) 10%',\n 'hsl(45, 100%, 50%) 20%',\n 'hsl(90, 100%, 50%) 30%',\n 'hsl(135, 100%, 50%) 40%',\n 'hsl(180, 100%, 50%) 50%',\n 'hsl(225, 100%, 50%) 60%',\n 'hsl(270, 100%, 50%) 70%',\n 'hsl(315, 100%, 50%) 80%',\n 'hsl(360, 100%, 50%) 90%',\n 'hsl(0, 100%, 0%) 100% ',\n];\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n width: '100%',\n },\n thumb: {\n position: 'absolute',\n width: TRACK_R * 2,\n height: TRACK_R * 2,\n borderRadius: TRACK_R,\n top: 0,\n backgroundColor: 'white',\n },\n track: { width: 10, flex: 1, borderRadius: 5, borderWidth: 1 },\n indicator: {\n width: 22,\n height: 22,\n borderRadius: 22,\n marginTop: 20,\n },\n});\n\nconst ColorSlider = ({\n color,\n linearGradient: LinearGradient,\n}: {\n color: Animated.SharedValue<hslColor>;\n linearGradient: React.ComponentType<{ colors: any[] } & ViewProps>;\n}) => {\n const sliderHeight = useSharedValue(0);\n\n const position = useDerivedValue(() => {\n const hslRegExp = new RegExp(/hsl\\(([\\d.]+),\\s*(\\d+)%,\\s*([\\d.]+)%\\)/);\n const res = hslRegExp.exec(color.value);\n\n const lum = res ? parseFloat(res[3]) : 0;\n\n const tint = res ? parseFloat(res[1]) : 0;\n\n if (lum > 50) {\n return ((sliderHeight.value * 0.1) / 50) * (100 - lum);\n }\n\n if (lum < 50) {\n return sliderHeight.value - ((sliderHeight.value * 0.1) / 50) * lum;\n }\n\n return Math.min(\n sliderHeight.value,\n Math.max(\n 0,\n sliderHeight.value * 0.1 +\n tint * ((sliderHeight.value - sliderHeight.value * 0.2) / 360)\n )\n );\n }, [sliderHeight.value]);\n\n const onGestureEvent = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n { startY: number }\n >(\n {\n onStart: ({ y }, ctx) => {\n ctx.startY = y;\n },\n onActive: ({ translationY }, { startY }) => {\n const slidePos = Math.min(sliderHeight.value, startY + translationY);\n\n if (slidePos < 0.1 * sliderHeight.value) {\n color.value = `hsl(${0 as number}, ${100 as number}%, ${Math.min(\n 100,\n 100 - (slidePos / (0.1 * sliderHeight.value)) * 50\n )}%)` as const;\n } else if (slidePos > 0.9 * sliderHeight.value) {\n color.value = `hsl(${0 as number}, ${100 as number}%, ${Math.max(\n 50 -\n ((slidePos - 0.9 * sliderHeight.value) /\n (0.1 * sliderHeight.value)) *\n 50,\n 0\n )}%)` as const;\n } else {\n color.value = `hsl(${\n ((slidePos - sliderHeight.value * 0.1) /\n (sliderHeight.value - sliderHeight.value * 0.2)) *\n 360\n }, ${100 as number}%, ${50 as number}%)` as const;\n }\n },\n onEnd: () => {},\n },\n []\n );\n\n const style = useAnimatedStyle(() => {\n return {\n transform: [{ translateY: position.value - TRACK_R }],\n };\n }, [position.value]);\n\n const selectedColorStyle = useAnimatedStyle(() => {\n return {\n backgroundColor: color.value,\n };\n }, [color.value]);\n\n const onLayout = useCallback(\n (event: LayoutChangeEvent) => {\n sliderHeight.value = event.nativeEvent.layout.height;\n },\n [sliderHeight]\n );\n\n return (\n <View style={styles.container}>\n <PanGestureHandler onGestureEvent={onGestureEvent}>\n <Animated.View style={styles.container}>\n <LinearGradient\n colors={gradientColors}\n onLayout={onLayout}\n style={styles.track}\n />\n <Animated.View style={[styles.thumb, style]} />\n </Animated.View>\n </PanGestureHandler>\n\n <Animated.View style={[styles.indicator, selectedColorStyle]} />\n </View>\n );\n};\n\nexport default ColorSlider;\n"]}
1
+ {"version":3,"sources":["ColorSlider.tsx"],"names":["React","useCallback","StyleSheet","View","PanGestureHandler","Animated","useAnimatedGestureHandler","useAnimatedStyle","useDerivedValue","useSharedValue","TRACK_R","gradientColors","styles","create","container","flex","alignItems","width","thumb","position","height","borderRadius","top","backgroundColor","track","borderWidth","indicator","marginTop","ColorSlider","color","linearGradient","LinearGradient","sliderHeight","hslRegExp","RegExp","res","exec","value","lum","parseFloat","tint","Math","min","max","onGestureEvent","onStart","y","ctx","startY","onActive","translationY","slidePos","toFixed","onEnd","style","transform","translateY","selectedColorStyle","onLayout","event","nativeEvent","layout"],"mappings":"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","sourcesContent":["import React, { useCallback } from 'react';\nimport { LayoutChangeEvent, StyleSheet, View, ViewProps } from 'react-native';\n\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\nimport Animated, {\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n} from 'react-native-reanimated';\nimport type { hslColor } from '../../types';\n\nconst TRACK_R = 10;\n\nconst gradientColors = [\n 'hsl(0, 100%, 100%) 00%',\n 'hsl(0, 100%, 50%) 10%',\n 'hsl(45, 100%, 50%) 20%',\n 'hsl(90, 100%, 50%) 30%',\n 'hsl(135, 100%, 50%) 40%',\n 'hsl(180, 100%, 50%) 50%',\n 'hsl(225, 100%, 50%) 60%',\n 'hsl(270, 100%, 50%) 70%',\n 'hsl(315, 100%, 50%) 80%',\n 'hsl(360, 100%, 50%) 90%',\n 'hsl(0, 100%, 0%) 100% ',\n];\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n width: '100%',\n },\n thumb: {\n position: 'absolute',\n width: TRACK_R * 2,\n height: TRACK_R * 2,\n borderRadius: TRACK_R,\n top: 0,\n backgroundColor: 'white',\n },\n track: { width: 10, flex: 1, borderRadius: 5, borderWidth: 1 },\n indicator: {\n width: 22,\n height: 22,\n borderRadius: 22,\n marginTop: 20,\n },\n});\n\nconst ColorSlider = ({\n color,\n linearGradient: LinearGradient,\n}: {\n color: Animated.SharedValue<hslColor>;\n linearGradient: React.ComponentType<{ colors: any[] } & ViewProps>;\n}) => {\n const sliderHeight = useSharedValue(0);\n\n const position = useDerivedValue(() => {\n const hslRegExp = new RegExp(/hsl\\(([\\d.]+),\\s*(\\d+)%,\\s*([\\d.]+)%\\)/);\n const res = hslRegExp.exec(color.value);\n\n const lum = res ? parseFloat(res[3]) : 0;\n\n const tint = res ? parseFloat(res[1]) : 0;\n\n if (lum > 50) {\n return ((sliderHeight.value * 0.1) / 50) * (100 - lum);\n }\n\n if (lum < 50) {\n return sliderHeight.value - ((sliderHeight.value * 0.1) / 50) * lum;\n }\n\n return Math.min(\n sliderHeight.value,\n Math.max(\n 0,\n sliderHeight.value * 0.1 +\n tint * ((sliderHeight.value - sliderHeight.value * 0.2) / 360)\n )\n );\n }, [sliderHeight.value]);\n\n const onGestureEvent = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n { startY: number }\n >(\n {\n onStart: ({ y }, ctx) => {\n ctx.startY = y;\n },\n onActive: ({ translationY }, { startY }) => {\n const slidePos = Math.min(sliderHeight.value, startY + translationY);\n\n if (slidePos < 0.1 * sliderHeight.value) {\n color.value = `hsl(0, 100%, ${Math.min(\n 100,\n 100 - (slidePos / (0.1 * sliderHeight.value)) * 50\n ).toFixed(10)}%)`;\n } else if (slidePos > 0.9 * sliderHeight.value) {\n color.value = `hsl(0, 100%, ${Math.max(\n 50 -\n ((slidePos - 0.9 * sliderHeight.value) /\n (0.1 * sliderHeight.value)) *\n 50,\n 0\n ).toFixed(10)}%)`;\n } else {\n color.value = `hsl(${\n ((slidePos - sliderHeight.value * 0.1) /\n (sliderHeight.value - sliderHeight.value * 0.2)) *\n 360\n }, 100%, 50%)`;\n }\n },\n onEnd: () => {},\n },\n []\n );\n\n const style = useAnimatedStyle(() => {\n return {\n transform: [{ translateY: position.value - TRACK_R }],\n };\n }, [position.value]);\n\n const selectedColorStyle = useAnimatedStyle(() => {\n return {\n backgroundColor: color.value,\n };\n }, [color.value]);\n\n const onLayout = useCallback(\n (event: LayoutChangeEvent) => {\n sliderHeight.value = event.nativeEvent.layout.height;\n },\n [sliderHeight]\n );\n\n return (\n <View style={styles.container}>\n <PanGestureHandler onGestureEvent={onGestureEvent}>\n <Animated.View style={styles.container}>\n <LinearGradient\n colors={gradientColors}\n onLayout={onLayout}\n style={styles.track}\n />\n <Animated.View style={[styles.thumb, style]} />\n </Animated.View>\n </PanGestureHandler>\n\n <Animated.View style={[styles.indicator, selectedColorStyle]} />\n </View>\n );\n};\n\nexport default ColorSlider;\n"]}
@@ -232,9 +232,14 @@ const DrawCore = /*#__PURE__*/React.forwardRef(({
232
232
  takeSnapshot: async () => {
233
233
  var _viewShot$current, _viewShot$current$cap;
234
234
 
235
+ if (currentItem.value) {
236
+ updateDoneItems(currentItem.value);
237
+ currentItem.value = null;
238
+ }
239
+
235
240
  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);
236
241
  }
237
- }), [currentItem, onSelectionChange]);
242
+ }), [currentItem, onSelectionChange, updateDoneItems]);
238
243
  useEffect(() => {
239
244
  mode.value = drawingMode;
240
245
 
@@ -998,8 +1003,7 @@ const DrawCore = /*#__PURE__*/React.forwardRef(({
998
1003
  ref: viewShot,
999
1004
  options: {
1000
1005
  format: 'jpg',
1001
- quality: 1,
1002
- ...originalImageSize
1006
+ quality: 1
1003
1007
  },
1004
1008
  style: imageSize
1005
1009
  }, /*#__PURE__*/React.createElement(ImageBackground, {
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["React","useCallback","useEffect","useImperativeHandle","useRef","useState","StyleSheet","TextInput","View","Keyboard","ImageBackground","Image","Platform","InputAccessoryView","Animated","runOnJS","useAnimatedGestureHandler","useAnimatedReaction","useAnimatedStyle","useSharedValue","withTiming","PanGestureHandler","ColorSlider","StrokeSlider","DrawPad","ViewShot","RIGHT_PANE_WIDTH","styles","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","createAnimatedComponent","DEFAULT_TEXT","THRESHOLD","drawNewItem","mode","currentItem","updateDoneItems","style","value","type","data","cx","cy","rx","ry","strokeWidth","textBaseHeight","text","onTextHeightUpdate","DrawCore","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","addListener","sudDidShow","event","endCoordinates","remove","textInputContainerStyle","display","opacity","textInputStyle","onPressItem","item","index","previousItem","copy","splice","blur","onTextHeightChange","calculateSizes","imageWidth","imageHeight","ratioImageHeight","round","infos","resolveAssetSource","uri","getSize","nativeEvent","layout","format","quality","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":["React","useCallback","useEffect","useImperativeHandle","useRef","useState","StyleSheet","TextInput","View","Keyboard","ImageBackground","Image","Platform","InputAccessoryView","Animated","runOnJS","useAnimatedGestureHandler","useAnimatedReaction","useAnimatedStyle","useSharedValue","withTiming","PanGestureHandler","ColorSlider","StrokeSlider","DrawPad","ViewShot","RIGHT_PANE_WIDTH","styles","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","createAnimatedComponent","DEFAULT_TEXT","THRESHOLD","drawNewItem","mode","currentItem","updateDoneItems","style","value","type","data","cx","cy","rx","ry","strokeWidth","textBaseHeight","text","onTextHeightUpdate","DrawCore","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","addListener","sudDidShow","event","endCoordinates","remove","textInputContainerStyle","display","opacity","textInputStyle","onPressItem","item","index","previousItem","copy","splice","blur","onTextHeightChange","calculateSizes","imageWidth","imageHeight","ratioImageHeight","round","infos","resolveAssetSource","uri","getSize","nativeEvent","layout","format","quality","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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@archireport/react-native-svg-draw",
3
- "version": "1.0.0",
3
+ "version": "1.0.3",
4
4
  "description": "React Native drawing component based on SVG with editable annotations",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -99,24 +99,24 @@ const ColorSlider = ({
99
99
  const slidePos = Math.min(sliderHeight.value, startY + translationY);
100
100
 
101
101
  if (slidePos < 0.1 * sliderHeight.value) {
102
- color.value = `hsl(${0 as number}, ${100 as number}%, ${Math.min(
102
+ color.value = `hsl(0, 100%, ${Math.min(
103
103
  100,
104
104
  100 - (slidePos / (0.1 * sliderHeight.value)) * 50
105
- )}%)` as const;
105
+ ).toFixed(10)}%)`;
106
106
  } else if (slidePos > 0.9 * sliderHeight.value) {
107
- color.value = `hsl(${0 as number}, ${100 as number}%, ${Math.max(
107
+ color.value = `hsl(0, 100%, ${Math.max(
108
108
  50 -
109
109
  ((slidePos - 0.9 * sliderHeight.value) /
110
110
  (0.1 * sliderHeight.value)) *
111
111
  50,
112
112
  0
113
- )}%)` as const;
113
+ ).toFixed(10)}%)`;
114
114
  } else {
115
115
  color.value = `hsl(${
116
116
  ((slidePos - sliderHeight.value * 0.1) /
117
117
  (sliderHeight.value - sliderHeight.value * 0.2)) *
118
118
  360
119
- }, ${100 as number}%, ${50 as number}%)` as const;
119
+ }, 100%, 50%)`;
120
120
  }
121
121
  },
122
122
  onEnd: () => {},
@@ -293,10 +293,14 @@ const DrawCore = React.forwardRef<
293
293
  onSelectionChange?.(false);
294
294
  },
295
295
  takeSnapshot: async (): Promise<string | undefined> => {
296
+ if (currentItem.value) {
297
+ updateDoneItems(currentItem.value);
298
+ currentItem.value = null;
299
+ }
296
300
  return viewShot.current?.capture?.();
297
301
  },
298
302
  }),
299
- [currentItem, onSelectionChange]
303
+ [currentItem, onSelectionChange, updateDoneItems]
300
304
  );
301
305
 
302
306
  useEffect(() => {
@@ -1220,7 +1224,6 @@ const DrawCore = React.forwardRef<
1220
1224
  options={{
1221
1225
  format: 'jpg',
1222
1226
  quality: 1,
1223
- ...originalImageSize,
1224
1227
  }}
1225
1228
  style={imageSize}
1226
1229
  >
package/src/types.d.ts CHANGED
@@ -9,7 +9,9 @@ import {
9
9
 
10
10
  export type Point = { x: number; y: number };
11
11
 
12
- export type hslColor = `hsl(${number}, ${number}%, ${number}%)`;
12
+ export type hslColor = `hsl(${number}, ${number | string}%, ${
13
+ | number
14
+ | string}%)`;
13
15
 
14
16
  type Size = { width: number; height: number };
15
17