@archireport/react-native-svg-draw 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -76,7 +76,7 @@ Component with header and footer, based on DrawCore
76
76
  #### Properties
77
77
 
78
78
  | Name | Type | Description |
79
- | ---------------- | --------------- | ---------------------------------------------------------------------------------------- |
79
+ | ---------------- |-----------------|------------------------------------------------------------------------------------------|
80
80
  | `close` | function | (optional) called when cross is pressed |
81
81
  | `takeSnapshot` | function | called when send button (at the bottom) is pressed |
82
82
  | `linearGradient` | React Component | implementation used for linear gradient (differs between expo and bare react native app) |
@@ -89,11 +89,12 @@ Component which can be used to customize header and footer
89
89
  #### Properties
90
90
 
91
91
  | Name | Type | Description |
92
- | ------------------- | --------------- | ---------------------------------------------------------------------------------------- |
92
+ |---------------------| --------------- | ---------------------------------------------------------------------------------------- |
93
93
  | `drawingMode` | enum | used shape for drawing |
94
94
  | `onSelectionChange` | function | called when a shape is selected |
95
95
  | `linearGradient` | React Component | implementation used for linear gradient (differs between expo and bare react native app) |
96
96
  | `image` | image | (optional) background picture |
97
+ | `backgroundColor` | string | (optional) background color of the draw zone |
97
98
 
98
99
  #### Ref attributes
99
100
 
@@ -36,8 +36,7 @@ const styles = _reactNative.StyleSheet.create({
36
36
  drawZone: {
37
37
  flex: 1,
38
38
  justifyContent: 'center',
39
- alignItems: 'center',
40
- backgroundColor: 'white'
39
+ alignItems: 'center'
41
40
  },
42
41
  rightPaneBaseStyle: {
43
42
  position: 'absolute',
@@ -280,7 +279,8 @@ const DrawCore = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
280
279
  image,
281
280
  linearGradient,
282
281
  onSelectionChange,
283
- onCancelChange
282
+ onCancelChange,
283
+ backgroundColor
284
284
  } = _ref;
285
285
  const mode = (0, _reactNativeReanimated.useSharedValue)('pen');
286
286
  const [drawRegion, setDrawRegion] = (0, _react.useState)(null);
@@ -1103,7 +1103,9 @@ const DrawCore = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
1103
1103
  return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
1104
1104
  style: styles.container
1105
1105
  }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
1106
- style: styles.drawZone,
1106
+ style: [styles.drawZone, {
1107
+ backgroundColor: backgroundColor !== null && backgroundColor !== void 0 ? backgroundColor : '#FFF'
1108
+ }],
1107
1109
  onLayout: event => {
1108
1110
  setDrawRegion({
1109
1111
  height: event.nativeEvent.layout.height,
@@ -1 +1 @@
1
- {"version":3,"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","addDoneItem","style","value","runOnJS","type","data","cx","cy","rx","ry","strokeWidth","textBaseHeight","text","onTextHeightUpdate","reducerDrawStates","drawStates","action","doneItems","concat","item","newDoneItems","splice","indice","screenStates","len","length","newScreenStates","pop","onCancelChange","DrawCore","React","forwardRef","ref","drawingMode","image","linearGradient","onSelectionChange","useSharedValue","drawRegion","setDrawRegion","useState","originalImageSize","setOriginalImageSize","imageSize","setImageSize","drawContainer","useRef","viewShot","textVal","setTextVal","initialItem","dispatchDrawStates","useReducer","useCallback","deleteDoneItem","addScreenStates","cancelAction","useImperativeHandle","drawingContainer","deleteSelectedItem","cancelLastAction","takeSnapshot","current","capture","useEffect","panPosition","showTextInput","textFocus","textInputRef","focus","onColorStrokeChange","onGestureEvent","useAnimatedGestureHandler","onStart","ctx","startX","startY","newlyCreated","withTiming","parseFloat","zone","xText","yText","widthText","heightText","some","p","onActive","currentX","currentY","translationX","translationY","map","onEnd","_event","rightPaneStyle","useAnimatedStyle","transform","translateX","sudDidHide","Keyboard","addListener","sudDidShow","event","endCoordinates","remove","textInputContainerStyle","display","opacity","textInputStyle","useAnimatedReaction","sw","c","onPressItem","index","previousItem","blur","onTextHeightChange","calculateSizes","imageWidth","imageHeight","ratioImageHeight","round","infos","Image","resolveAssetSource","uri","getSize","nativeEvent","layout","format","quality","Platform","OS","clear"],"sources":["index.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useReducer,\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\nconst 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 addDoneItem: (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(addDoneItem)(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\ntype Action =\n | { type: 'ADD_DONE_ITEM'; item: DrawItem }\n | { type: 'DELETE_DONE_ITEM'; indice: number }\n | {\n type: 'ADD_SCREEN_STATE';\n currentItem: DrawItem | null;\n }\n | {\n type: 'CANCEL';\n onCancelChange?: (cancel: boolean) => void;\n };\n\nconst reducerDrawStates = (\n drawStates: { doneItems: DrawItem[]; screenStates: DrawItem[][] },\n action: Action\n) => {\n 'worklet';\n switch (action.type) {\n case 'ADD_DONE_ITEM':\n return {\n ...drawStates,\n doneItems: drawStates.doneItems.concat(action.item),\n };\n case 'DELETE_DONE_ITEM':\n const newDoneItems = drawStates.doneItems;\n newDoneItems.splice(action.indice, 1);\n return {\n ...drawStates,\n doneItems: newDoneItems,\n };\n case 'ADD_SCREEN_STATE':\n if (action.currentItem) {\n return {\n ...drawStates,\n screenStates: drawStates.screenStates.concat([\n [...drawStates.doneItems, action.currentItem],\n ]),\n };\n } else {\n return {\n ...drawStates,\n screenStates: drawStates.screenStates.concat([\n [...drawStates.doneItems],\n ]),\n };\n }\n\n case 'CANCEL':\n const len = drawStates.screenStates.length;\n if (len > 1) {\n const newScreenStates = drawStates.screenStates;\n newScreenStates.pop();\n if (newScreenStates.length === 1) {\n action.onCancelChange?.(false);\n }\n return {\n doneItems: drawStates.screenStates[len - 2],\n screenStates: newScreenStates,\n };\n } else {\n return drawStates;\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 onCancelChange?: (cancel: boolean) => void;\n }\n>(\n (\n { drawingMode, image, linearGradient, onSelectionChange, onCancelChange },\n ref\n ) => {\n const mode = useSharedValue<DrawItemType>('pen');\n\n const [drawRegion, setDrawRegion] = useState<Size | null>(null);\n\n const [originalImageSize, setOriginalImageSize] =\n 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 [drawStates, dispatchDrawStates] = useReducer(reducerDrawStates, {\n doneItems: [],\n screenStates: [[]],\n });\n\n const textBaseHeight = useSharedValue<number | null>(null);\n\n const addDoneItem = useCallback((item: DrawItem) => {\n dispatchDrawStates({ type: 'ADD_DONE_ITEM', item: item });\n }, []);\n\n const deleteDoneItem = useCallback((indice: number) => {\n dispatchDrawStates({ type: 'DELETE_DONE_ITEM', indice: indice });\n }, []);\n\n const addScreenStates = useCallback((item: DrawItem | null) => {\n dispatchDrawStates({\n type: 'ADD_SCREEN_STATE',\n currentItem: item,\n });\n }, []);\n\n const cancelAction = useCallback(() => {\n dispatchDrawStates({\n type: 'CANCEL',\n onCancelChange: onCancelChange,\n });\n }, [onCancelChange]);\n\n useImperativeHandle(\n ref,\n () => ({\n drawingContainer: drawContainer,\n deleteSelectedItem: () => {\n if (currentItem.value) {\n currentItem.value = null;\n addScreenStates(null);\n }\n onSelectionChange?.(false);\n onCancelChange?.(true);\n },\n cancelLastAction: () => {\n onSelectionChange?.(false);\n if (currentItem.value) {\n currentItem.value = null;\n }\n cancelAction();\n },\n takeSnapshot: async (): Promise<string | undefined> => {\n if (currentItem.value) {\n addDoneItem(currentItem.value);\n currentItem.value = null;\n }\n return viewShot.current?.capture?.();\n },\n }),\n [\n currentItem,\n onSelectionChange,\n onCancelChange,\n addScreenStates,\n cancelAction,\n addDoneItem,\n ]\n );\n\n useEffect(() => {\n mode.value = drawingMode;\n if (currentItem.value) {\n addDoneItem(currentItem.value);\n }\n currentItem.value = null;\n onSelectionChange?.(false);\n }, [drawingMode, mode, currentItem, onSelectionChange, addDoneItem]);\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 const onColorStrokeChange = useCallback(() => {\n if (currentItem.value) {\n addScreenStates(currentItem.value);\n }\n }, [addScreenStates, currentItem.value]);\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: startX, y: startY }, ctx) => {\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) ||\n (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: (\n { x: currentX, y: currentY, translationX, translationY },\n ctx\n ) => {\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 drawNewItem(\n mode,\n currentItem,\n addDoneItem,\n { x: startX, y: startY },\n { textBaseHeight, strokeWidth, color }\n );\n onSelectionChange && runOnJS(onSelectionChange)(true);\n onCancelChange && runOnJS(onCancelChange)(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: currentX,\n y: currentY,\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 runOnJS(addScreenStates)(currentItem.value);\n },\n },\n []\n );\n\n const rightPaneStyle = useAnimatedStyle(() => {\n return {\n transform: [{ translateX: panPosition.value }],\n };\n });\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 {\n strokeWidth: strokeWidth.value,\n color: color.value,\n };\n },\n ({\n strokeWidth: sw,\n color: c,\n }: {\n strokeWidth: number;\n color: hslColor;\n }) => {\n switch (currentItem.value?.type) {\n case 'singleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'doubleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'ellipse':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'rectangle':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n\n case 'pen':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'text':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\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 deleteDoneItem(index);\n\n if (previousItem) {\n addDoneItem(previousItem);\n }\n\n if (item.type === 'text') {\n setTextVal(item.text ?? '');\n } else {\n textInputRef.current?.blur();\n }\n },\n [\n onSelectionChange,\n currentItem,\n strokeWidth,\n color,\n deleteDoneItem,\n addDoneItem,\n ]\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 onGestureEvent={onGestureEvent}>\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={drawStates.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={drawStates.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\n minValue={2}\n maxValue={10}\n stroke={strokeWidth}\n onStrokeChange={onColorStrokeChange}\n />\n </View>\n <View style={styles.colorSliderContainer}>\n <ColorSlider\n color={color}\n linearGradient={linearGradient}\n onColorChange={onColorStrokeChange}\n />\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);\n\nexport default DrawCore;\n"],"mappings":"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"}
1
+ {"version":3,"names":["RIGHT_PANE_WIDTH","styles","StyleSheet","create","container","flex","drawZone","justifyContent","alignItems","rightPaneBaseStyle","position","right","top","bottom","backgroundColor","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","addDoneItem","style","value","runOnJS","type","data","cx","cy","rx","ry","strokeWidth","textBaseHeight","text","onTextHeightUpdate","reducerDrawStates","drawStates","action","doneItems","concat","item","newDoneItems","splice","indice","screenStates","len","length","newScreenStates","pop","onCancelChange","DrawCore","React","forwardRef","ref","drawingMode","image","linearGradient","onSelectionChange","useSharedValue","drawRegion","setDrawRegion","useState","originalImageSize","setOriginalImageSize","imageSize","setImageSize","drawContainer","useRef","viewShot","textVal","setTextVal","initialItem","dispatchDrawStates","useReducer","useCallback","deleteDoneItem","addScreenStates","cancelAction","useImperativeHandle","drawingContainer","deleteSelectedItem","cancelLastAction","takeSnapshot","current","capture","useEffect","panPosition","showTextInput","textFocus","textInputRef","focus","onColorStrokeChange","onGestureEvent","useAnimatedGestureHandler","onStart","ctx","startX","startY","newlyCreated","withTiming","parseFloat","zone","xText","yText","widthText","heightText","some","p","onActive","currentX","currentY","translationX","translationY","map","onEnd","_event","rightPaneStyle","useAnimatedStyle","transform","translateX","sudDidHide","Keyboard","addListener","sudDidShow","event","endCoordinates","remove","textInputContainerStyle","display","opacity","textInputStyle","useAnimatedReaction","sw","c","onPressItem","index","previousItem","blur","onTextHeightChange","calculateSizes","imageWidth","imageHeight","ratioImageHeight","round","infos","Image","resolveAssetSource","uri","getSize","nativeEvent","layout","format","quality","Platform","OS","clear"],"sources":["index.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useReducer,\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 },\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\nconst 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 addDoneItem: (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(addDoneItem)(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\ntype Action =\n | { type: 'ADD_DONE_ITEM'; item: DrawItem }\n | { type: 'DELETE_DONE_ITEM'; indice: number }\n | {\n type: 'ADD_SCREEN_STATE';\n currentItem: DrawItem | null;\n }\n | {\n type: 'CANCEL';\n onCancelChange?: (cancel: boolean) => void;\n };\n\nconst reducerDrawStates = (\n drawStates: { doneItems: DrawItem[]; screenStates: DrawItem[][] },\n action: Action\n) => {\n 'worklet';\n switch (action.type) {\n case 'ADD_DONE_ITEM':\n return {\n ...drawStates,\n doneItems: drawStates.doneItems.concat(action.item),\n };\n case 'DELETE_DONE_ITEM':\n const newDoneItems = drawStates.doneItems;\n newDoneItems.splice(action.indice, 1);\n return {\n ...drawStates,\n doneItems: newDoneItems,\n };\n case 'ADD_SCREEN_STATE':\n if (action.currentItem) {\n return {\n ...drawStates,\n screenStates: drawStates.screenStates.concat([\n [...drawStates.doneItems, action.currentItem],\n ]),\n };\n } else {\n return {\n ...drawStates,\n screenStates: drawStates.screenStates.concat([\n [...drawStates.doneItems],\n ]),\n };\n }\n\n case 'CANCEL':\n const len = drawStates.screenStates.length;\n if (len > 1) {\n const newScreenStates = drawStates.screenStates;\n newScreenStates.pop();\n if (newScreenStates.length === 1) {\n action.onCancelChange?.(false);\n }\n return {\n doneItems: drawStates.screenStates[len - 2],\n screenStates: newScreenStates,\n };\n } else {\n return drawStates;\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 onCancelChange?: (cancel: boolean) => void;\n backgroundColor?: string;\n }\n>(\n (\n {\n drawingMode,\n image,\n linearGradient,\n onSelectionChange,\n onCancelChange,\n backgroundColor,\n },\n ref\n ) => {\n const mode = useSharedValue<DrawItemType>('pen');\n\n const [drawRegion, setDrawRegion] = useState<Size | null>(null);\n\n const [originalImageSize, setOriginalImageSize] =\n 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 [drawStates, dispatchDrawStates] = useReducer(reducerDrawStates, {\n doneItems: [],\n screenStates: [[]],\n });\n\n const textBaseHeight = useSharedValue<number | null>(null);\n\n const addDoneItem = useCallback((item: DrawItem) => {\n dispatchDrawStates({ type: 'ADD_DONE_ITEM', item: item });\n }, []);\n\n const deleteDoneItem = useCallback((indice: number) => {\n dispatchDrawStates({ type: 'DELETE_DONE_ITEM', indice: indice });\n }, []);\n\n const addScreenStates = useCallback((item: DrawItem | null) => {\n dispatchDrawStates({\n type: 'ADD_SCREEN_STATE',\n currentItem: item,\n });\n }, []);\n\n const cancelAction = useCallback(() => {\n dispatchDrawStates({\n type: 'CANCEL',\n onCancelChange: onCancelChange,\n });\n }, [onCancelChange]);\n\n useImperativeHandle(\n ref,\n () => ({\n drawingContainer: drawContainer,\n deleteSelectedItem: () => {\n if (currentItem.value) {\n currentItem.value = null;\n addScreenStates(null);\n }\n onSelectionChange?.(false);\n onCancelChange?.(true);\n },\n cancelLastAction: () => {\n onSelectionChange?.(false);\n if (currentItem.value) {\n currentItem.value = null;\n }\n cancelAction();\n },\n takeSnapshot: async (): Promise<string | undefined> => {\n if (currentItem.value) {\n addDoneItem(currentItem.value);\n currentItem.value = null;\n }\n return viewShot.current?.capture?.();\n },\n }),\n [\n currentItem,\n onSelectionChange,\n onCancelChange,\n addScreenStates,\n cancelAction,\n addDoneItem,\n ]\n );\n\n useEffect(() => {\n mode.value = drawingMode;\n if (currentItem.value) {\n addDoneItem(currentItem.value);\n }\n currentItem.value = null;\n onSelectionChange?.(false);\n }, [drawingMode, mode, currentItem, onSelectionChange, addDoneItem]);\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 const onColorStrokeChange = useCallback(() => {\n if (currentItem.value) {\n addScreenStates(currentItem.value);\n }\n }, [addScreenStates, currentItem.value]);\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: startX, y: startY }, ctx) => {\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) ||\n (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: (\n { x: currentX, y: currentY, translationX, translationY },\n ctx\n ) => {\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 drawNewItem(\n mode,\n currentItem,\n addDoneItem,\n { x: startX, y: startY },\n { textBaseHeight, strokeWidth, color }\n );\n onSelectionChange && runOnJS(onSelectionChange)(true);\n onCancelChange && runOnJS(onCancelChange)(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: currentX,\n y: currentY,\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 runOnJS(addScreenStates)(currentItem.value);\n },\n },\n []\n );\n\n const rightPaneStyle = useAnimatedStyle(() => {\n return {\n transform: [{ translateX: panPosition.value }],\n };\n });\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 {\n strokeWidth: strokeWidth.value,\n color: color.value,\n };\n },\n ({\n strokeWidth: sw,\n color: c,\n }: {\n strokeWidth: number;\n color: hslColor;\n }) => {\n switch (currentItem.value?.type) {\n case 'singleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'doubleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'ellipse':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'rectangle':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n\n case 'pen':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'text':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\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 deleteDoneItem(index);\n\n if (previousItem) {\n addDoneItem(previousItem);\n }\n\n if (item.type === 'text') {\n setTextVal(item.text ?? '');\n } else {\n textInputRef.current?.blur();\n }\n },\n [\n onSelectionChange,\n currentItem,\n strokeWidth,\n color,\n deleteDoneItem,\n addDoneItem,\n ]\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={[\n styles.drawZone,\n { backgroundColor: backgroundColor ?? '#FFF' },\n ]}\n onLayout={(event) => {\n setDrawRegion({\n height: event.nativeEvent.layout.height,\n width: event.nativeEvent.layout.width,\n });\n }}\n >\n <PanGestureHandler onGestureEvent={onGestureEvent}>\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={drawStates.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={drawStates.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\n minValue={2}\n maxValue={10}\n stroke={strokeWidth}\n onStrokeChange={onColorStrokeChange}\n />\n </View>\n <View style={styles.colorSliderContainer}>\n <ColorSlider\n color={color}\n linearGradient={linearGradient}\n onColorChange={onColorStrokeChange}\n />\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);\n\nexport default DrawCore;\n"],"mappings":"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"}
@@ -14,8 +14,7 @@ const styles = StyleSheet.create({
14
14
  drawZone: {
15
15
  flex: 1,
16
16
  justifyContent: 'center',
17
- alignItems: 'center',
18
- backgroundColor: 'white'
17
+ alignItems: 'center'
19
18
  },
20
19
  rightPaneBaseStyle: {
21
20
  position: 'absolute',
@@ -257,7 +256,8 @@ const DrawCore = /*#__PURE__*/React.forwardRef((_ref, ref) => {
257
256
  image,
258
257
  linearGradient,
259
258
  onSelectionChange,
260
- onCancelChange
259
+ onCancelChange,
260
+ backgroundColor
261
261
  } = _ref;
262
262
  const mode = useSharedValue('pen');
263
263
  const [drawRegion, setDrawRegion] = useState(null);
@@ -1077,7 +1077,9 @@ const DrawCore = /*#__PURE__*/React.forwardRef((_ref, ref) => {
1077
1077
  return /*#__PURE__*/React.createElement(View, {
1078
1078
  style: styles.container
1079
1079
  }, /*#__PURE__*/React.createElement(View, {
1080
- style: styles.drawZone,
1080
+ style: [styles.drawZone, {
1081
+ backgroundColor: backgroundColor !== null && backgroundColor !== void 0 ? backgroundColor : '#FFF'
1082
+ }],
1081
1083
  onLayout: event => {
1082
1084
  setDrawRegion({
1083
1085
  height: event.nativeEvent.layout.height,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useImperativeHandle","useReducer","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","addDoneItem","style","value","type","data","cx","cy","rx","ry","strokeWidth","textBaseHeight","text","onTextHeightUpdate","reducerDrawStates","drawStates","action","doneItems","concat","item","newDoneItems","splice","indice","screenStates","len","length","newScreenStates","pop","onCancelChange","DrawCore","forwardRef","ref","drawingMode","image","linearGradient","onSelectionChange","drawRegion","setDrawRegion","originalImageSize","setOriginalImageSize","imageSize","setImageSize","drawContainer","viewShot","textVal","setTextVal","initialItem","dispatchDrawStates","deleteDoneItem","addScreenStates","cancelAction","drawingContainer","deleteSelectedItem","cancelLastAction","takeSnapshot","current","capture","panPosition","showTextInput","textFocus","textInputRef","focus","onColorStrokeChange","onGestureEvent","onStart","ctx","startX","startY","newlyCreated","parseFloat","zone","xText","yText","widthText","heightText","some","p","onActive","currentX","currentY","translationX","translationY","map","onEnd","_event","rightPaneStyle","transform","translateX","sudDidHide","addListener","sudDidShow","event","endCoordinates","remove","textInputContainerStyle","display","opacity","textInputStyle","sw","c","onPressItem","index","previousItem","blur","onTextHeightChange","calculateSizes","imageWidth","imageHeight","ratioImageHeight","round","infos","resolveAssetSource","uri","getSize","nativeEvent","layout","format","quality","OS","clear"],"sources":["index.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useReducer,\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\nconst 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 addDoneItem: (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(addDoneItem)(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\ntype Action =\n | { type: 'ADD_DONE_ITEM'; item: DrawItem }\n | { type: 'DELETE_DONE_ITEM'; indice: number }\n | {\n type: 'ADD_SCREEN_STATE';\n currentItem: DrawItem | null;\n }\n | {\n type: 'CANCEL';\n onCancelChange?: (cancel: boolean) => void;\n };\n\nconst reducerDrawStates = (\n drawStates: { doneItems: DrawItem[]; screenStates: DrawItem[][] },\n action: Action\n) => {\n 'worklet';\n switch (action.type) {\n case 'ADD_DONE_ITEM':\n return {\n ...drawStates,\n doneItems: drawStates.doneItems.concat(action.item),\n };\n case 'DELETE_DONE_ITEM':\n const newDoneItems = drawStates.doneItems;\n newDoneItems.splice(action.indice, 1);\n return {\n ...drawStates,\n doneItems: newDoneItems,\n };\n case 'ADD_SCREEN_STATE':\n if (action.currentItem) {\n return {\n ...drawStates,\n screenStates: drawStates.screenStates.concat([\n [...drawStates.doneItems, action.currentItem],\n ]),\n };\n } else {\n return {\n ...drawStates,\n screenStates: drawStates.screenStates.concat([\n [...drawStates.doneItems],\n ]),\n };\n }\n\n case 'CANCEL':\n const len = drawStates.screenStates.length;\n if (len > 1) {\n const newScreenStates = drawStates.screenStates;\n newScreenStates.pop();\n if (newScreenStates.length === 1) {\n action.onCancelChange?.(false);\n }\n return {\n doneItems: drawStates.screenStates[len - 2],\n screenStates: newScreenStates,\n };\n } else {\n return drawStates;\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 onCancelChange?: (cancel: boolean) => void;\n }\n>(\n (\n { drawingMode, image, linearGradient, onSelectionChange, onCancelChange },\n ref\n ) => {\n const mode = useSharedValue<DrawItemType>('pen');\n\n const [drawRegion, setDrawRegion] = useState<Size | null>(null);\n\n const [originalImageSize, setOriginalImageSize] =\n 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 [drawStates, dispatchDrawStates] = useReducer(reducerDrawStates, {\n doneItems: [],\n screenStates: [[]],\n });\n\n const textBaseHeight = useSharedValue<number | null>(null);\n\n const addDoneItem = useCallback((item: DrawItem) => {\n dispatchDrawStates({ type: 'ADD_DONE_ITEM', item: item });\n }, []);\n\n const deleteDoneItem = useCallback((indice: number) => {\n dispatchDrawStates({ type: 'DELETE_DONE_ITEM', indice: indice });\n }, []);\n\n const addScreenStates = useCallback((item: DrawItem | null) => {\n dispatchDrawStates({\n type: 'ADD_SCREEN_STATE',\n currentItem: item,\n });\n }, []);\n\n const cancelAction = useCallback(() => {\n dispatchDrawStates({\n type: 'CANCEL',\n onCancelChange: onCancelChange,\n });\n }, [onCancelChange]);\n\n useImperativeHandle(\n ref,\n () => ({\n drawingContainer: drawContainer,\n deleteSelectedItem: () => {\n if (currentItem.value) {\n currentItem.value = null;\n addScreenStates(null);\n }\n onSelectionChange?.(false);\n onCancelChange?.(true);\n },\n cancelLastAction: () => {\n onSelectionChange?.(false);\n if (currentItem.value) {\n currentItem.value = null;\n }\n cancelAction();\n },\n takeSnapshot: async (): Promise<string | undefined> => {\n if (currentItem.value) {\n addDoneItem(currentItem.value);\n currentItem.value = null;\n }\n return viewShot.current?.capture?.();\n },\n }),\n [\n currentItem,\n onSelectionChange,\n onCancelChange,\n addScreenStates,\n cancelAction,\n addDoneItem,\n ]\n );\n\n useEffect(() => {\n mode.value = drawingMode;\n if (currentItem.value) {\n addDoneItem(currentItem.value);\n }\n currentItem.value = null;\n onSelectionChange?.(false);\n }, [drawingMode, mode, currentItem, onSelectionChange, addDoneItem]);\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 const onColorStrokeChange = useCallback(() => {\n if (currentItem.value) {\n addScreenStates(currentItem.value);\n }\n }, [addScreenStates, currentItem.value]);\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: startX, y: startY }, ctx) => {\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) ||\n (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: (\n { x: currentX, y: currentY, translationX, translationY },\n ctx\n ) => {\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 drawNewItem(\n mode,\n currentItem,\n addDoneItem,\n { x: startX, y: startY },\n { textBaseHeight, strokeWidth, color }\n );\n onSelectionChange && runOnJS(onSelectionChange)(true);\n onCancelChange && runOnJS(onCancelChange)(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: currentX,\n y: currentY,\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 runOnJS(addScreenStates)(currentItem.value);\n },\n },\n []\n );\n\n const rightPaneStyle = useAnimatedStyle(() => {\n return {\n transform: [{ translateX: panPosition.value }],\n };\n });\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 {\n strokeWidth: strokeWidth.value,\n color: color.value,\n };\n },\n ({\n strokeWidth: sw,\n color: c,\n }: {\n strokeWidth: number;\n color: hslColor;\n }) => {\n switch (currentItem.value?.type) {\n case 'singleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'doubleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'ellipse':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'rectangle':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n\n case 'pen':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'text':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\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 deleteDoneItem(index);\n\n if (previousItem) {\n addDoneItem(previousItem);\n }\n\n if (item.type === 'text') {\n setTextVal(item.text ?? '');\n } else {\n textInputRef.current?.blur();\n }\n },\n [\n onSelectionChange,\n currentItem,\n strokeWidth,\n color,\n deleteDoneItem,\n addDoneItem,\n ]\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 onGestureEvent={onGestureEvent}>\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={drawStates.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={drawStates.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\n minValue={2}\n maxValue={10}\n stroke={strokeWidth}\n onStrokeChange={onColorStrokeChange}\n />\n </View>\n <View style={styles.colorSliderContainer}>\n <ColorSlider\n color={color}\n linearGradient={linearGradient}\n onColorChange={onColorStrokeChange}\n />\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);\n\nexport default DrawCore;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useCallback","useEffect","useImperativeHandle","useReducer","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","rightPaneBaseStyle","position","right","top","bottom","backgroundColor","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","addDoneItem","style","value","type","data","cx","cy","rx","ry","strokeWidth","textBaseHeight","text","onTextHeightUpdate","reducerDrawStates","drawStates","action","doneItems","concat","item","newDoneItems","splice","indice","screenStates","len","length","newScreenStates","pop","onCancelChange","DrawCore","forwardRef","ref","drawingMode","image","linearGradient","onSelectionChange","drawRegion","setDrawRegion","originalImageSize","setOriginalImageSize","imageSize","setImageSize","drawContainer","viewShot","textVal","setTextVal","initialItem","dispatchDrawStates","deleteDoneItem","addScreenStates","cancelAction","drawingContainer","deleteSelectedItem","cancelLastAction","takeSnapshot","current","capture","panPosition","showTextInput","textFocus","textInputRef","focus","onColorStrokeChange","onGestureEvent","onStart","ctx","startX","startY","newlyCreated","parseFloat","zone","xText","yText","widthText","heightText","some","p","onActive","currentX","currentY","translationX","translationY","map","onEnd","_event","rightPaneStyle","transform","translateX","sudDidHide","addListener","sudDidShow","event","endCoordinates","remove","textInputContainerStyle","display","opacity","textInputStyle","sw","c","onPressItem","index","previousItem","blur","onTextHeightChange","calculateSizes","imageWidth","imageHeight","ratioImageHeight","round","infos","resolveAssetSource","uri","getSize","nativeEvent","layout","format","quality","OS","clear"],"sources":["index.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useReducer,\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 },\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\nconst 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 addDoneItem: (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(addDoneItem)(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\ntype Action =\n | { type: 'ADD_DONE_ITEM'; item: DrawItem }\n | { type: 'DELETE_DONE_ITEM'; indice: number }\n | {\n type: 'ADD_SCREEN_STATE';\n currentItem: DrawItem | null;\n }\n | {\n type: 'CANCEL';\n onCancelChange?: (cancel: boolean) => void;\n };\n\nconst reducerDrawStates = (\n drawStates: { doneItems: DrawItem[]; screenStates: DrawItem[][] },\n action: Action\n) => {\n 'worklet';\n switch (action.type) {\n case 'ADD_DONE_ITEM':\n return {\n ...drawStates,\n doneItems: drawStates.doneItems.concat(action.item),\n };\n case 'DELETE_DONE_ITEM':\n const newDoneItems = drawStates.doneItems;\n newDoneItems.splice(action.indice, 1);\n return {\n ...drawStates,\n doneItems: newDoneItems,\n };\n case 'ADD_SCREEN_STATE':\n if (action.currentItem) {\n return {\n ...drawStates,\n screenStates: drawStates.screenStates.concat([\n [...drawStates.doneItems, action.currentItem],\n ]),\n };\n } else {\n return {\n ...drawStates,\n screenStates: drawStates.screenStates.concat([\n [...drawStates.doneItems],\n ]),\n };\n }\n\n case 'CANCEL':\n const len = drawStates.screenStates.length;\n if (len > 1) {\n const newScreenStates = drawStates.screenStates;\n newScreenStates.pop();\n if (newScreenStates.length === 1) {\n action.onCancelChange?.(false);\n }\n return {\n doneItems: drawStates.screenStates[len - 2],\n screenStates: newScreenStates,\n };\n } else {\n return drawStates;\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 onCancelChange?: (cancel: boolean) => void;\n backgroundColor?: string;\n }\n>(\n (\n {\n drawingMode,\n image,\n linearGradient,\n onSelectionChange,\n onCancelChange,\n backgroundColor,\n },\n ref\n ) => {\n const mode = useSharedValue<DrawItemType>('pen');\n\n const [drawRegion, setDrawRegion] = useState<Size | null>(null);\n\n const [originalImageSize, setOriginalImageSize] =\n 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 [drawStates, dispatchDrawStates] = useReducer(reducerDrawStates, {\n doneItems: [],\n screenStates: [[]],\n });\n\n const textBaseHeight = useSharedValue<number | null>(null);\n\n const addDoneItem = useCallback((item: DrawItem) => {\n dispatchDrawStates({ type: 'ADD_DONE_ITEM', item: item });\n }, []);\n\n const deleteDoneItem = useCallback((indice: number) => {\n dispatchDrawStates({ type: 'DELETE_DONE_ITEM', indice: indice });\n }, []);\n\n const addScreenStates = useCallback((item: DrawItem | null) => {\n dispatchDrawStates({\n type: 'ADD_SCREEN_STATE',\n currentItem: item,\n });\n }, []);\n\n const cancelAction = useCallback(() => {\n dispatchDrawStates({\n type: 'CANCEL',\n onCancelChange: onCancelChange,\n });\n }, [onCancelChange]);\n\n useImperativeHandle(\n ref,\n () => ({\n drawingContainer: drawContainer,\n deleteSelectedItem: () => {\n if (currentItem.value) {\n currentItem.value = null;\n addScreenStates(null);\n }\n onSelectionChange?.(false);\n onCancelChange?.(true);\n },\n cancelLastAction: () => {\n onSelectionChange?.(false);\n if (currentItem.value) {\n currentItem.value = null;\n }\n cancelAction();\n },\n takeSnapshot: async (): Promise<string | undefined> => {\n if (currentItem.value) {\n addDoneItem(currentItem.value);\n currentItem.value = null;\n }\n return viewShot.current?.capture?.();\n },\n }),\n [\n currentItem,\n onSelectionChange,\n onCancelChange,\n addScreenStates,\n cancelAction,\n addDoneItem,\n ]\n );\n\n useEffect(() => {\n mode.value = drawingMode;\n if (currentItem.value) {\n addDoneItem(currentItem.value);\n }\n currentItem.value = null;\n onSelectionChange?.(false);\n }, [drawingMode, mode, currentItem, onSelectionChange, addDoneItem]);\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 const onColorStrokeChange = useCallback(() => {\n if (currentItem.value) {\n addScreenStates(currentItem.value);\n }\n }, [addScreenStates, currentItem.value]);\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: startX, y: startY }, ctx) => {\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) ||\n (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: (\n { x: currentX, y: currentY, translationX, translationY },\n ctx\n ) => {\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 drawNewItem(\n mode,\n currentItem,\n addDoneItem,\n { x: startX, y: startY },\n { textBaseHeight, strokeWidth, color }\n );\n onSelectionChange && runOnJS(onSelectionChange)(true);\n onCancelChange && runOnJS(onCancelChange)(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: currentX,\n y: currentY,\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 runOnJS(addScreenStates)(currentItem.value);\n },\n },\n []\n );\n\n const rightPaneStyle = useAnimatedStyle(() => {\n return {\n transform: [{ translateX: panPosition.value }],\n };\n });\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 {\n strokeWidth: strokeWidth.value,\n color: color.value,\n };\n },\n ({\n strokeWidth: sw,\n color: c,\n }: {\n strokeWidth: number;\n color: hslColor;\n }) => {\n switch (currentItem.value?.type) {\n case 'singleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'doubleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'ellipse':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'rectangle':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n\n case 'pen':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\n };\n break;\n case 'text':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth: sw,\n color: c,\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 deleteDoneItem(index);\n\n if (previousItem) {\n addDoneItem(previousItem);\n }\n\n if (item.type === 'text') {\n setTextVal(item.text ?? '');\n } else {\n textInputRef.current?.blur();\n }\n },\n [\n onSelectionChange,\n currentItem,\n strokeWidth,\n color,\n deleteDoneItem,\n addDoneItem,\n ]\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={[\n styles.drawZone,\n { backgroundColor: backgroundColor ?? '#FFF' },\n ]}\n onLayout={(event) => {\n setDrawRegion({\n height: event.nativeEvent.layout.height,\n width: event.nativeEvent.layout.width,\n });\n }}\n >\n <PanGestureHandler onGestureEvent={onGestureEvent}>\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={drawStates.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={drawStates.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\n minValue={2}\n maxValue={10}\n stroke={strokeWidth}\n onStrokeChange={onColorStrokeChange}\n />\n </View>\n <View style={styles.colorSliderContainer}>\n <ColorSlider\n color={color}\n linearGradient={linearGradient}\n onColorChange={onColorStrokeChange}\n />\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);\n\nexport default DrawCore;\n"],"mappings":"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"}
@@ -9,5 +9,6 @@ declare const DrawCore: React.ForwardRefExoticComponent<{
9
9
  } & ViewProps>;
10
10
  onSelectionChange?: ((selected: boolean) => void) | undefined;
11
11
  onCancelChange?: ((cancel: boolean) => void) | undefined;
12
+ backgroundColor?: string | undefined;
12
13
  } & React.RefAttributes<DrawCoreProps>>;
13
14
  export default DrawCore;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@archireport/react-native-svg-draw",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
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",
@@ -53,7 +53,6 @@ const styles = StyleSheet.create({
53
53
  flex: 1,
54
54
  justifyContent: 'center',
55
55
  alignItems: 'center',
56
- backgroundColor: 'white',
57
56
  },
58
57
  rightPaneBaseStyle: {
59
58
  position: 'absolute',
@@ -321,10 +320,18 @@ const DrawCore = React.forwardRef<
321
320
  linearGradient: React.ComponentType<{ colors: any[] } & ViewProps>;
322
321
  onSelectionChange?: (selected: boolean) => void;
323
322
  onCancelChange?: (cancel: boolean) => void;
323
+ backgroundColor?: string;
324
324
  }
325
325
  >(
326
326
  (
327
- { drawingMode, image, linearGradient, onSelectionChange, onCancelChange },
327
+ {
328
+ drawingMode,
329
+ image,
330
+ linearGradient,
331
+ onSelectionChange,
332
+ onCancelChange,
333
+ backgroundColor,
334
+ },
328
335
  ref
329
336
  ) => {
330
337
  const mode = useSharedValue<DrawItemType>('pen');
@@ -1331,7 +1338,10 @@ const DrawCore = React.forwardRef<
1331
1338
  return (
1332
1339
  <View style={styles.container}>
1333
1340
  <View
1334
- style={styles.drawZone}
1341
+ style={[
1342
+ styles.drawZone,
1343
+ { backgroundColor: backgroundColor ?? '#FFF' },
1344
+ ]}
1335
1345
  onLayout={(event) => {
1336
1346
  setDrawRegion({
1337
1347
  height: event.nativeEvent.layout.height,