@archireport/react-native-svg-draw 1.0.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/DrawCore/ColorSlider.js +5 -2
- package/lib/commonjs/components/DrawCore/ColorSlider.js.map +1 -1
- package/lib/commonjs/components/DrawCore/CurrentAnimatedItem.js +56 -6
- package/lib/commonjs/components/DrawCore/CurrentAnimatedItem.js.map +1 -1
- package/lib/commonjs/components/DrawCore/DrawPad.js +4 -4
- package/lib/commonjs/components/DrawCore/DrawPad.js.map +1 -1
- package/lib/commonjs/components/DrawCore/Item.js +3 -5
- package/lib/commonjs/components/DrawCore/Item.js.map +1 -1
- package/lib/commonjs/components/DrawCore/StrokeSlider.js +5 -2
- package/lib/commonjs/components/DrawCore/StrokeSlider.js.map +1 -1
- package/lib/commonjs/components/DrawCore/index.js +138 -50
- package/lib/commonjs/components/DrawCore/index.js.map +1 -1
- package/lib/commonjs/components/DrawWithOptions/CancelSvg.js +35 -0
- package/lib/commonjs/components/DrawWithOptions/CancelSvg.js.map +1 -0
- package/lib/commonjs/components/DrawWithOptions/PenSvg.js +27 -0
- package/lib/commonjs/components/DrawWithOptions/PenSvg.js.map +1 -0
- package/lib/commonjs/components/DrawWithOptions/index.js +30 -1
- package/lib/commonjs/components/DrawWithOptions/index.js.map +1 -1
- package/lib/module/components/DrawCore/ColorSlider.js +6 -3
- package/lib/module/components/DrawCore/ColorSlider.js.map +1 -1
- package/lib/module/components/DrawCore/CurrentAnimatedItem.js +53 -7
- package/lib/module/components/DrawCore/CurrentAnimatedItem.js.map +1 -1
- package/lib/module/components/DrawCore/DrawPad.js +4 -4
- package/lib/module/components/DrawCore/DrawPad.js.map +1 -1
- package/lib/module/components/DrawCore/Item.js +2 -6
- package/lib/module/components/DrawCore/Item.js.map +1 -1
- package/lib/module/components/DrawCore/StrokeSlider.js +5 -2
- package/lib/module/components/DrawCore/StrokeSlider.js.map +1 -1
- package/lib/module/components/DrawCore/index.js +139 -51
- package/lib/module/components/DrawCore/index.js.map +1 -1
- package/lib/module/components/DrawWithOptions/CancelSvg.js +22 -0
- package/lib/module/components/DrawWithOptions/CancelSvg.js.map +1 -0
- package/lib/module/components/DrawWithOptions/PenSvg.js +14 -0
- package/lib/module/components/DrawWithOptions/PenSvg.js.map +1 -0
- package/lib/module/components/DrawWithOptions/index.js +28 -1
- package/lib/module/components/DrawWithOptions/index.js.map +1 -1
- package/lib/typescript/components/DrawCore/ColorSlider.d.ts +2 -1
- package/lib/typescript/components/DrawCore/CurrentAnimatedItem.d.ts +2 -1
- package/lib/typescript/components/DrawCore/StrokeSlider.d.ts +2 -1
- package/lib/typescript/components/DrawCore/index.d.ts +1 -0
- package/lib/typescript/components/DrawWithOptions/CancelSvg.d.ts +2 -0
- package/lib/typescript/components/DrawWithOptions/PenSvg.d.ts +2 -0
- package/package.json +5 -5
- package/src/components/DrawCore/ColorSlider.tsx +6 -1
- package/src/components/DrawCore/CurrentAnimatedItem.tsx +59 -8
- package/src/components/DrawCore/DrawPad.tsx +2 -2
- package/src/components/DrawCore/Item.tsx +3 -11
- package/src/components/DrawCore/StrokeSlider.tsx +5 -1
- package/src/components/DrawCore/index.tsx +1105 -970
- package/src/components/DrawWithOptions/CancelSvg.tsx +23 -0
- package/src/components/DrawWithOptions/PenSvg.tsx +14 -0
- package/src/components/DrawWithOptions/index.tsx +34 -0
- package/src/types.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.tsx"],"names":["RIGHT_PANE_WIDTH","styles","StyleSheet","create","container","flex","drawZone","justifyContent","alignItems","backgroundColor","rightPaneBaseStyle","position","right","top","bottom","width","marginVertical","borderTopLeftRadius","borderBottomLeftRadius","paddingVertical","strokeSliderContainer","paddingBottom","borderBottomColor","borderBottomWidth","colorSliderContainer","paddingTop","bgImage","height","textInput","paddingHorizontal","fontSize","color","pDistance","point","line","x1","x2","y1","y2","x","y","A","B","C","D","dot","len_sq","param","xx","yy","dx","dy","Math","sqrt","AnimatedTextInput","Animated","createAnimatedComponent","TextInput","DEFAULT_TEXT","THRESHOLD","drawNewItem","mode","currentItem","updateDoneItems","style","value","type","data","cx","cy","rx","ry","strokeWidth","textBaseHeight","text","onTextHeightUpdate","DrawCore","React","forwardRef","drawingMode","image","linearGradient","onSelectionChange","ref","drawRegion","setDrawRegion","originalImageSize","setOriginalImageSize","imageSize","setImageSize","drawContainer","viewShot","textVal","setTextVal","initialItem","doneItems","setDoneItems","done","previous","concat","drawingContainer","deleteSelectedItem","takeSnapshot","current","capture","addNewItem","panPosition","showTextInput","textFocus","textInputRef","focus","onGestureEvent","onStart","ctx","startX","startY","newlyCreated","parseFloat","zone","xText","yText","widthText","heightText","some","p","onActive","translationX","translationY","map","onEnd","_event","rightPaneStyle","transform","translateX","sudDidHide","Keyboard","addListener","sudDidShow","event","endCoordinates","remove","textInputContainerStyle","display","opacity","textInputStyle","onPressItem","item","index","previousItem","copy","splice","blur","onTextHeightChange","calculateSizes","imageWidth","imageHeight","ratioImageHeight","round","infos","Image","resolveAssetSource","uri","getSize","nativeEvent","layout","format","quality","Platform","OS","clear"],"mappings":"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","sourcesContent":["import React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport {\n StyleSheet,\n TextInput,\n View,\n Keyboard,\n ImageBackground,\n Image,\n ImageRequireSource,\n ImageURISource,\n ViewProps,\n Platform,\n InputAccessoryView,\n} from 'react-native';\nimport Animated, {\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedReaction,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\nimport ColorSlider from './ColorSlider';\nimport StrokeSlider from './StrokeSlider';\nimport type {\n DrawItem,\n DrawItemType,\n DrawCoreProps,\n hslColor,\n Size,\n} from '../../types';\nimport DrawPad from './DrawPad';\nimport ViewShot from 'react-native-view-shot';\n\nconst RIGHT_PANE_WIDTH = 60;\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n drawZone: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'white',\n },\n rightPaneBaseStyle: {\n position: 'absolute',\n right: 0,\n top: 0,\n bottom: 0,\n backgroundColor: '#000000cc',\n width: RIGHT_PANE_WIDTH,\n justifyContent: 'space-evenly',\n marginVertical: 20,\n borderTopLeftRadius: 20,\n borderBottomLeftRadius: 20,\n paddingVertical: 30,\n },\n strokeSliderContainer: {\n flex: 1,\n paddingBottom: 15,\n borderBottomColor: '#000000',\n borderBottomWidth: 2,\n },\n colorSliderContainer: { flex: 1, paddingTop: 15 },\n bgImage: { width: '100%', height: '100%' },\n textInput: {\n backgroundColor: '#000000c5',\n paddingVertical: 16,\n paddingHorizontal: 24,\n fontSize: 16,\n color: 'white',\n width: '100%',\n },\n});\n\nfunction pDistance(\n point: { x: number; y: number },\n line: { x1: number; x2: number; y1: number; y2: number }\n) {\n 'worklet';\n const { x1, x2, y1, y2 } = line;\n const { x, y } = point;\n\n var A = x - x1;\n var B = y - y1;\n var C = x2 - x1;\n var D = y2 - y1;\n\n var dot = A * C + B * D;\n var len_sq = C * C + D * D;\n var param = -1;\n if (len_sq !== 0) {\n //in case of 0 length line\n param = dot / len_sq;\n }\n\n var xx, yy;\n\n if (param < 0) {\n xx = x1;\n yy = y1;\n } else if (param > 1) {\n xx = x2;\n yy = y2;\n } else {\n xx = x1 + param * C;\n yy = y1 + param * D;\n }\n\n var dx = x - xx;\n var dy = y - yy;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nconst AnimatedTextInput = Animated.createAnimatedComponent(TextInput);\n\nconst DEFAULT_TEXT = '';\n\nconst THRESHOLD = 20;\n\ntype Context = {\n startX: number;\n startY: number;\n newlyCreated: boolean;\n zone?:\n | 'TOP'\n | 'BOTTOM'\n | 'LEFT'\n | 'RIGHT'\n | 'TOP_LEFT'\n | 'TOP_RIGHT'\n | 'BOTTOM_LEFT'\n | 'BOTTOM_RIGHT'\n | 'CENTER'\n | 'OUT';\n};\n\nconst drawNewItem = (\n mode: Animated.SharedValue<DrawItemType>,\n currentItem: Animated.SharedValue<DrawItem | null>,\n updateDoneItems: (item: DrawItem) => void,\n position: { x: number; y: number },\n style: {\n textBaseHeight: Animated.SharedValue<number | null>;\n strokeWidth: Animated.SharedValue<number>;\n color: Animated.SharedValue<hslColor>;\n }\n) => {\n 'worklet';\n\n if (currentItem.value) {\n runOnJS(updateDoneItems)(currentItem.value);\n }\n\n switch (mode.value) {\n case 'ellipse':\n currentItem.value = {\n type: mode.value,\n data: {\n cx: position.x,\n cy: position.y,\n rx: 0,\n ry: 0,\n },\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n case 'rectangle':\n currentItem.value = {\n type: mode.value,\n data: { x: position.x, y: position.y, width: 0, height: 0 },\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n case 'singleHead':\n case 'doubleHead':\n currentItem.value = {\n type: mode.value,\n data: {\n x1: position.x,\n y1: position.y,\n x2: position.x,\n y2: position.y,\n },\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n case 'text':\n currentItem.value = {\n type: mode.value,\n data: {\n x: position.x,\n y: position.y,\n width: 200,\n height: style.textBaseHeight.value || 0,\n },\n strokeWidth: style.strokeWidth.value,\n text: DEFAULT_TEXT,\n color: style.color.value,\n };\n break;\n case 'pen':\n currentItem.value = {\n type: mode.value,\n data: [],\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n }\n};\n\nconst onTextHeightUpdate = (\n currentItem: Animated.SharedValue<DrawItem | null>,\n textBaseHeight: Animated.SharedValue<number | null>,\n height: number\n) => {\n 'worklet';\n if (currentItem.value?.type === 'text') {\n textBaseHeight.value = textBaseHeight.value || height;\n\n currentItem.value = {\n data: {\n ...currentItem.value.data,\n height: height,\n },\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n };\n }\n};\n\nconst DrawCore = React.forwardRef<\n DrawCoreProps,\n {\n drawingMode: DrawItemType;\n image?: ImageRequireSource | ImageURISource;\n linearGradient: React.ComponentType<{ colors: any[] } & ViewProps>;\n onSelectionChange?: (selected: boolean) => void;\n }\n>(({ drawingMode, image, linearGradient, onSelectionChange }, ref) => {\n const mode = useSharedValue<DrawItemType>('pen');\n\n const [drawRegion, setDrawRegion] = useState<Size | null>(null);\n\n const [originalImageSize, setOriginalImageSize] = useState<Size | null>(null);\n\n const [imageSize, setImageSize] = useState<Size | null>(null);\n\n const drawContainer = useRef<View>(null);\n\n const viewShot = useRef<ViewShot>(null);\n\n const [textVal, setTextVal] = useState<string>('');\n\n const currentItem = useSharedValue<DrawItem | null>(null);\n\n const initialItem = useSharedValue<DrawItem | null>(null);\n\n const [doneItems, setDoneItems] = useState<DrawItem[]>([]);\n\n const textBaseHeight = useSharedValue<number | null>(null);\n\n const updateDoneItems = useCallback((done: DrawItem) => {\n setDoneItems((previous) => previous.concat(done));\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n drawingContainer: drawContainer,\n deleteSelectedItem: () => {\n if (currentItem.value) {\n currentItem.value = null;\n }\n onSelectionChange?.(false);\n },\n takeSnapshot: async (): Promise<string | undefined> => {\n if (currentItem.value) {\n updateDoneItems(currentItem.value);\n currentItem.value = null;\n }\n return viewShot.current?.capture?.();\n },\n }),\n [currentItem, onSelectionChange, updateDoneItems]\n );\n\n useEffect(() => {\n mode.value = drawingMode;\n if (currentItem.value) {\n updateDoneItems(currentItem.value);\n }\n currentItem.value = null;\n onSelectionChange?.(false);\n }, [drawingMode, mode, currentItem, updateDoneItems, onSelectionChange]);\n\n const addNewItem = runOnJS(updateDoneItems);\n\n const strokeWidth = useSharedValue<number>(2);\n\n const color = useSharedValue<hslColor>('hsl(0, 100%, 0%)');\n\n const panPosition = useSharedValue(0);\n\n const showTextInput = useSharedValue(false);\n\n const textFocus = useCallback(() => {\n textInputRef.current?.focus();\n }, []);\n\n useEffect(() => {\n if (currentItem.value?.type === 'text') {\n currentItem.value = {\n data: currentItem.value.data,\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: textVal,\n };\n }\n }, [currentItem, textVal]);\n\n const onGestureEvent = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n Context\n >(\n {\n onStart: ({ x, y }, ctx) => {\n const startX = x;\n const startY = y;\n ctx.startX = startX;\n ctx.startY = startY;\n ctx.newlyCreated = false;\n\n panPosition.value = withTiming(RIGHT_PANE_WIDTH);\n\n initialItem.value = currentItem.value;\n\n switch (currentItem.value?.type) {\n case 'ellipse':\n const cx =\n typeof currentItem.value.data.cx === 'string'\n ? parseFloat(currentItem.value.data.cx)\n : currentItem.value.data.cx || 0;\n const cy =\n typeof currentItem.value.data.cy === 'string'\n ? parseFloat(currentItem.value.data.cy)\n : currentItem.value.data.cy || 0;\n const rx =\n typeof currentItem.value.data.rx === 'string'\n ? parseFloat(currentItem.value.data.rx)\n : currentItem.value.data.rx || 0;\n const ry =\n typeof currentItem.value.data.ry === 'string'\n ? parseFloat(currentItem.value.data.ry)\n : currentItem.value.data.ry || 0;\n\n if (\n startX <= cx + THRESHOLD &&\n startX >= cx - THRESHOLD &&\n startY <= cy - ry + THRESHOLD &&\n startY >= cy - ry - THRESHOLD\n ) {\n ctx.zone = 'TOP';\n } else if (\n startX <= cx + THRESHOLD &&\n startX >= cx - THRESHOLD &&\n startY <= cy + ry + THRESHOLD &&\n startY >= cy + ry - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM';\n } else if (\n startY <= cy + THRESHOLD &&\n startY >= cy - THRESHOLD &&\n startX <= cx - rx + THRESHOLD &&\n startX >= cx - rx - THRESHOLD\n ) {\n ctx.zone = 'LEFT';\n } else if (\n startY <= cy + THRESHOLD &&\n startY >= cy - THRESHOLD &&\n startX <= cx + rx + THRESHOLD &&\n startX >= cx + rx - THRESHOLD\n ) {\n ctx.zone = 'RIGHT';\n } else if (\n ((rx > 0 && startX > cx - rx && startX < cx + rx) ||\n (rx < 0 && startX < cx - rx && startX > cx + rx)) &&\n ((ry > 0 && startY > cy - ry && startY < cy + ry) ||\n (ry < 0 && startY < cy - ry && startY > cy + ry))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'rectangle':\n const x =\n typeof currentItem.value.data.x === 'string'\n ? parseFloat(currentItem.value.data.x)\n : currentItem.value.data.x || 0;\n const y =\n typeof currentItem.value.data.y === 'string'\n ? parseFloat(currentItem.value.data.y)\n : currentItem.value.data.y || 0;\n const height =\n typeof currentItem.value.data.height === 'string'\n ? parseFloat(currentItem.value.data.height)\n : currentItem.value.data.height || 0;\n const width =\n typeof currentItem.value.data.width === 'string'\n ? parseFloat(currentItem.value.data.width)\n : currentItem.value.data.width || 0;\n\n if (startX <= x + THRESHOLD && startX >= x - THRESHOLD) {\n if (startY <= y + THRESHOLD && startY >= y - THRESHOLD) {\n ctx.zone = 'TOP_LEFT';\n } else if (\n startY <= y + height + THRESHOLD &&\n startY >= y + height - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM_LEFT';\n }\n } else if (\n startX <= x + width + THRESHOLD &&\n startX >= x + width - THRESHOLD\n ) {\n if (startY <= y + THRESHOLD && startY >= y - THRESHOLD) {\n ctx.zone = 'TOP_RIGHT';\n } else if (\n startY <= y + height + THRESHOLD &&\n startY >= y + height - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM_RIGHT';\n }\n } else if (\n ((width > 0 && startX > x && startX < x + width) ||\n (width < 0 && startX < x && startX > x + width)) &&\n ((height > 0 && startY > y && startY < y + height) ||\n (height < 0 && startY < y && startY > y + height))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'doubleHead':\n case 'singleHead':\n const x1 =\n typeof currentItem.value.data.x1 === 'string'\n ? parseFloat(currentItem.value.data.x1)\n : currentItem.value.data.x1 || 0;\n const y1 =\n typeof currentItem.value.data.y1 === 'string'\n ? parseFloat(currentItem.value.data.y1)\n : currentItem.value.data.y1 || 0;\n const x2 =\n typeof currentItem.value.data.x2 === 'string'\n ? parseFloat(currentItem.value.data.x2)\n : currentItem.value.data.x2 || 0;\n const y2 =\n typeof currentItem.value.data.y2 === 'string'\n ? parseFloat(currentItem.value.data.y2)\n : currentItem.value.data.y2 || 0;\n\n if (\n startX <= x1 + THRESHOLD &&\n startX >= x1 - THRESHOLD &&\n startY <= y1 + THRESHOLD &&\n startY >= y1 - THRESHOLD\n ) {\n ctx.zone = 'TOP';\n } else if (\n startX <= x2 + THRESHOLD &&\n startX >= x2 - THRESHOLD &&\n startY - THRESHOLD <= y2 + THRESHOLD &&\n startY + THRESHOLD >= y2 - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM';\n } else if (\n pDistance({ x: startX, y: startY }, { x1, x2, y1, y2 }) <=\n THRESHOLD &&\n ((startX > x1 && startX < x2) || (startX < x1 && startX > x2)) &&\n ((startY > y1 && startY < y2) || (startY < y1 && startY > y2))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'text':\n const xText =\n typeof currentItem.value.data.x === 'string'\n ? parseFloat(currentItem.value.data.x)\n : currentItem.value.data.x || 0;\n const yText =\n typeof currentItem.value.data.y === 'string'\n ? parseFloat(currentItem.value.data.y)\n : currentItem.value.data.y || 0;\n const widthText =\n typeof currentItem.value.data.width === 'string'\n ? parseFloat(currentItem.value.data.width)\n : currentItem.value.data.width || 0;\n const heightText =\n typeof currentItem.value.data.height === 'string'\n ? parseFloat(currentItem.value.data.height)\n : currentItem.value.data.height || 0;\n\n if (\n startX <= xText + THRESHOLD &&\n startX >= xText - THRESHOLD &&\n startY <= yText + heightText / 2 + THRESHOLD &&\n startY >= yText + heightText / 2 - THRESHOLD\n ) {\n ctx.zone = 'LEFT';\n } else if (\n startX <= xText + widthText + THRESHOLD &&\n startX >= xText + widthText - THRESHOLD &&\n startY <= yText + heightText / 2 + THRESHOLD &&\n startY >= yText + heightText / 2 - THRESHOLD\n ) {\n ctx.zone = 'RIGHT';\n } else if (\n ((widthText > 0 &&\n startX > xText &&\n startX < xText + widthText) ||\n (widthText < 0 &&\n startX < xText &&\n startX > xText + widthText)) &&\n ((heightText > 0 &&\n startY > yText &&\n startY < yText + heightText) ||\n (heightText < 0 &&\n startY < yText &&\n startY > yText + heightText))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'pen':\n if (\n currentItem.value.data.some(\n (p) =>\n startX <= p.x + THRESHOLD &&\n startX >= p.x - THRESHOLD &&\n startY <= p.y + THRESHOLD &&\n startY >= p.y - THRESHOLD\n )\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n break;\n default:\n ctx.zone = 'OUT';\n initialItem.value = null;\n break;\n }\n },\n onActive: ({ x, y, translationX, translationY }, ctx) => {\n const { startX, startY, zone, newlyCreated } = ctx;\n if (zone === 'OUT' && newlyCreated === false) {\n ctx.newlyCreated = true;\n if (mode.value === 'text') {\n runOnJS(setTextVal)('');\n }\n\n drawNewItem(\n mode,\n currentItem,\n addNewItem,\n { x: startX, y: startY },\n { textBaseHeight, strokeWidth, color }\n );\n onSelectionChange && runOnJS(onSelectionChange)(true);\n }\n switch (currentItem.value?.type) {\n case 'pen':\n if (\n initialItem.value?.type === currentItem.value.type &&\n zone === 'CENTER'\n ) {\n currentItem.value = {\n type: 'pen',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: initialItem.value.data.map((p) => ({\n x: p.x + translationX,\n y: p.y + translationY,\n })),\n };\n } else {\n currentItem.value = {\n type: 'pen',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: currentItem.value.data.concat({\n x: x,\n y: y,\n }),\n };\n }\n break;\n case 'ellipse':\n if (initialItem.value?.type === currentItem.value.type) {\n const rx =\n typeof initialItem.value.data.rx === 'string'\n ? parseFloat(initialItem.value?.data.rx)\n : initialItem.value.data.rx || 0;\n\n const ry =\n typeof initialItem.value.data.ry === 'string'\n ? parseFloat(initialItem.value.data.ry)\n : initialItem.value.data.ry || 0;\n\n const cx =\n typeof initialItem.value.data.cx === 'string'\n ? parseFloat(initialItem.value.data.cx)\n : initialItem.value.data.cx || 0;\n\n const cy =\n typeof initialItem.value.data.cy === 'string'\n ? parseFloat(initialItem.value.data.cy)\n : initialItem.value.data.cy || 0;\n\n switch (zone) {\n case 'TOP':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx,\n cy: cy + translationY,\n rx: rx,\n ry: ry - translationY,\n },\n };\n break;\n case 'BOTTOM':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx,\n cy: cy + translationY,\n rx: rx,\n ry: ry + translationY,\n },\n };\n break;\n case 'LEFT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx + translationX,\n cy: cy,\n rx: rx - translationX,\n ry: ry,\n },\n };\n break;\n case 'RIGHT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx + translationX,\n cy: cy,\n rx: rx + translationX,\n ry: ry,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx + translationX,\n cy: cy + translationY,\n rx: rx,\n ry: ry,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: startX + translationX,\n cy: startY + translationY,\n rx: translationX,\n ry: translationY,\n },\n };\n }\n\n break;\n case 'rectangle':\n if (initialItem.value?.type === currentItem.value.type) {\n const height =\n typeof initialItem.value?.data.height === 'string'\n ? parseFloat(initialItem.value?.data.height)\n : initialItem.value?.data.height || 0;\n\n const width =\n typeof initialItem.value?.data.width === 'string'\n ? parseFloat(initialItem.value?.data.width)\n : initialItem.value?.data.width || 0;\n\n const x =\n typeof initialItem.value?.data.x === 'string'\n ? parseFloat(initialItem.value?.data.x)\n : initialItem.value?.data.x || 0;\n\n const y =\n typeof initialItem.value?.data.y === 'string'\n ? parseFloat(initialItem.value?.data.y)\n : initialItem.value?.data.y || 0;\n\n switch (zone) {\n case 'TOP_LEFT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: startX + translationX,\n y: startY + translationY,\n width: width - translationX,\n height: height - translationY,\n },\n };\n break;\n case 'TOP_RIGHT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: x,\n y: startY + translationY,\n width: width + translationX,\n height: height - translationY,\n },\n };\n break;\n case 'BOTTOM_LEFT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: startX + translationX,\n y: y,\n width: width - translationX,\n height: height + translationY,\n },\n };\n break;\n case 'BOTTOM_RIGHT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: x,\n y: y,\n width: width + translationX,\n height: height + translationY,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: x + translationX,\n y: y + translationY,\n width: width,\n height: height,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: currentItem.value.data.x,\n y: currentItem.value.data.y,\n width: translationX,\n height: translationY,\n },\n };\n }\n break;\n case 'singleHead':\n case 'doubleHead':\n if (initialItem.value?.type === currentItem.value.type) {\n const x1 =\n typeof initialItem.value?.data.x1 === 'string'\n ? parseFloat(initialItem.value?.data.x1)\n : initialItem.value?.data.x1 || 0;\n\n const y1 =\n typeof initialItem.value?.data.y1 === 'string'\n ? parseFloat(initialItem.value?.data.y1)\n : initialItem.value?.data.y1 || 0;\n\n const x2 =\n typeof initialItem.value?.data.x2 === 'string'\n ? parseFloat(initialItem.value?.data.x2)\n : initialItem.value?.data.x2 || 0;\n\n const y2 =\n typeof initialItem.value?.data.y2 === 'string'\n ? parseFloat(initialItem.value?.data.y2)\n : initialItem.value?.data.y2 || 0;\n\n switch (zone) {\n case 'TOP':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: x1 + translationX,\n y1: y1 + translationY,\n x2: x2,\n y2: y2,\n },\n };\n break;\n case 'BOTTOM':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: x1,\n y1: y1,\n x2: x2 + translationX,\n y2: y2 + translationY,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: x1 + translationX,\n y1: y1 + translationY,\n x2: x2 + translationX,\n y2: y2 + translationY,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: startX,\n y1: startY,\n x2: startX + translationX,\n y2: startY + translationY,\n },\n };\n }\n break;\n case 'text':\n if (initialItem.value?.type === currentItem.value.type) {\n const xText =\n typeof initialItem.value?.data.x === 'string'\n ? parseFloat(initialItem.value?.data.x)\n : initialItem.value?.data.x || 0;\n const yText =\n typeof initialItem.value?.data.y === 'string'\n ? parseFloat(initialItem.value?.data.y)\n : initialItem.value?.data.y || 0;\n const widthText =\n typeof initialItem.value?.data.width === 'string'\n ? parseFloat(initialItem.value?.data.width)\n : initialItem.value?.data.width || 0;\n const heightText =\n typeof initialItem.value?.data.height === 'string'\n ? parseFloat(initialItem.value?.data.height)\n : initialItem.value?.data.height || 0;\n\n switch (zone) {\n case 'LEFT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: xText + translationX,\n y: yText,\n width: widthText - translationX,\n height: heightText,\n },\n };\n break;\n case 'RIGHT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: xText,\n y: yText,\n width: widthText + translationX,\n height: heightText,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: xText + translationX,\n y: yText + translationY,\n width: widthText,\n height: heightText,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: startX + translationX,\n y: startY + translationY,\n width: currentItem.value.data.width,\n height: currentItem.value.data.height,\n },\n };\n }\n }\n },\n onEnd: (_event) => {\n panPosition.value = withTiming(0);\n\n if (currentItem.value?.type === 'text') {\n runOnJS(textFocus)();\n\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: currentItem.value.data,\n text:\n currentItem.value.text !== DEFAULT_TEXT\n ? currentItem.value.text ?? ''\n : '',\n };\n }\n },\n },\n []\n );\n\n const rightPaneStyle = useAnimatedStyle(() => {\n return {\n transform: [{ translateX: panPosition.value }],\n };\n }, [panPosition.value]);\n\n useEffect(() => {\n const sudDidHide = Keyboard.addListener('keyboardDidHide', () => {\n showTextInput.value = false;\n });\n\n const sudDidShow = Keyboard.addListener('keyboardDidShow', (event) => {\n // avoid events triggered by InputAccessoryView\n if (event.endCoordinates.height > 100) {\n showTextInput.value = true;\n }\n });\n\n // cleanup function\n return () => {\n sudDidShow.remove();\n sudDidHide.remove();\n };\n }, [showTextInput]);\n\n const textInputRef = useRef<TextInput>(null);\n\n const textInputContainerStyle = useAnimatedStyle(() => {\n return {\n height: 'auto',\n backgroundColor: 'white',\n display: 'flex',\n opacity: showTextInput.value ? withTiming(1) : withTiming(0),\n };\n }, [showTextInput.value]);\n\n const textInputStyle = useAnimatedStyle(() => {\n return {\n display: showTextInput.value ? 'flex' : 'none',\n opacity: showTextInput.value ? withTiming(1) : withTiming(0),\n };\n }, [showTextInput.value]);\n\n useAnimatedReaction(\n () => {\n return { strokeWidth: strokeWidth.value, color: color.value };\n },\n ({ strokeWidth, color }: { strokeWidth: number; color: hslColor }) => {\n switch (currentItem.value?.type) {\n case 'singleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'doubleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'ellipse':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'rectangle':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n\n case 'pen':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'text':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n text: currentItem.value.text,\n };\n break;\n }\n },\n [strokeWidth.value, color.value]\n );\n\n const onPressItem = useCallback(\n (item: DrawItem, index: number) => () => {\n onSelectionChange?.(true);\n\n const previousItem = currentItem.value;\n\n strokeWidth.value = item.strokeWidth;\n color.value = item.color;\n currentItem.value = item;\n\n setDoneItems((done) => {\n const copy = [...done];\n copy.splice(index, 1);\n return copy;\n });\n\n if (previousItem) {\n updateDoneItems(previousItem);\n }\n\n if (item.type === 'text') {\n setTextVal(item.text ?? '');\n } else {\n textInputRef.current?.blur();\n }\n },\n [color, currentItem, strokeWidth, updateDoneItems, onSelectionChange]\n );\n\n const onTextHeightChange = useCallback(\n (height: number) => {\n onTextHeightUpdate(currentItem, textBaseHeight, height);\n },\n [currentItem, textBaseHeight]\n );\n\n const calculateSizes = useCallback(\n (imageWidth: number, imageHeight: number) => {\n if (drawRegion) {\n setOriginalImageSize({ width: imageWidth, height: imageHeight });\n\n const ratioImageHeight =\n Math.round(((imageHeight * drawRegion.width) / imageWidth) * 100) /\n 100;\n\n if (ratioImageHeight < drawRegion.height) {\n setImageSize({\n width: drawRegion.width,\n height: ratioImageHeight,\n });\n } else {\n setImageSize({\n height: drawRegion.height,\n width:\n Math.round(\n ((imageWidth * drawRegion.height) / imageHeight) * 100\n ) / 100,\n });\n }\n }\n },\n [drawRegion]\n );\n\n useEffect(() => {\n if (drawRegion && image) {\n if (typeof image === 'number') {\n const infos = Image.resolveAssetSource(image);\n\n calculateSizes(infos.width, infos.height);\n } else if (image.uri) {\n Image.getSize(image.uri, (imageWidth, imageHeight) => {\n calculateSizes(imageWidth, imageHeight);\n });\n }\n }\n }, [image, drawRegion, calculateSizes]);\n\n return (\n <View style={styles.container}>\n <View\n style={styles.drawZone}\n onLayout={(event) => {\n setDrawRegion({\n height: event.nativeEvent.layout.height,\n width: event.nativeEvent.layout.width,\n });\n }}\n >\n <PanGestureHandler\n activeOffsetX={2}\n activeOffsetY={2}\n onGestureEvent={onGestureEvent}\n >\n <Animated.View style={imageSize || drawRegion}>\n <View ref={drawContainer}>\n {image ? (\n imageSize && originalImageSize ? (\n <ViewShot\n ref={viewShot}\n options={{\n format: 'jpg',\n quality: 1,\n }}\n style={imageSize}\n >\n <ImageBackground source={image} style={styles.bgImage}>\n <DrawPad\n currentItem={currentItem}\n doneItems={doneItems}\n onPressItem={onPressItem}\n onTextHeightChange={onTextHeightChange}\n />\n </ImageBackground>\n </ViewShot>\n ) : null\n ) : drawRegion ? (\n <ViewShot\n ref={viewShot}\n options={{\n format: 'jpg',\n quality: 1,\n ...drawRegion,\n }}\n style={drawRegion}\n >\n <DrawPad\n currentItem={currentItem}\n doneItems={doneItems}\n onPressItem={onPressItem}\n onTextHeightChange={onTextHeightChange}\n />\n </ViewShot>\n ) : null}\n </View>\n </Animated.View>\n </PanGestureHandler>\n\n <Animated.View style={[styles.rightPaneBaseStyle, rightPaneStyle]}>\n <View style={styles.strokeSliderContainer}>\n <StrokeSlider minValue={2} maxValue={10} stroke={strokeWidth} />\n </View>\n <View style={styles.colorSliderContainer}>\n <ColorSlider color={color} linearGradient={linearGradient} />\n </View>\n </Animated.View>\n </View>\n {Platform.OS === 'ios' ? (\n <InputAccessoryView>\n <AnimatedTextInput\n ref={textInputRef}\n style={[styles.textInput, textInputStyle]}\n onEndEditing={textInputRef.current?.clear}\n onChangeText={setTextVal}\n value={textVal}\n autoCorrect={false}\n />\n </InputAccessoryView>\n ) : (\n <Animated.View style={textInputContainerStyle}>\n <TextInput\n ref={textInputRef}\n style={styles.textInput}\n onEndEditing={textInputRef.current?.clear}\n onChangeText={setTextVal}\n value={textVal}\n autoCorrect={false}\n />\n </Animated.View>\n )}\n </View>\n );\n});\n\nexport default DrawCore;\n"]}
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":["RIGHT_PANE_WIDTH","styles","StyleSheet","create","container","flex","drawZone","justifyContent","alignItems","backgroundColor","rightPaneBaseStyle","position","right","top","bottom","width","marginVertical","borderTopLeftRadius","borderBottomLeftRadius","paddingVertical","strokeSliderContainer","paddingBottom","borderBottomColor","borderBottomWidth","colorSliderContainer","paddingTop","bgImage","height","textInput","paddingHorizontal","fontSize","color","pDistance","point","line","x1","x2","y1","y2","x","y","A","B","C","D","dot","len_sq","param","xx","yy","dx","dy","Math","sqrt","AnimatedTextInput","Animated","createAnimatedComponent","TextInput","DEFAULT_TEXT","THRESHOLD","drawNewItem","mode","currentItem","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","React","forwardRef","drawingMode","image","linearGradient","onSelectionChange","ref","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","startX","startY","ctx","newlyCreated","parseFloat","zone","xText","yText","widthText","heightText","some","p","onActive","currentX","currentY","translationX","translationY","map","onEnd","_event","rightPaneStyle","transform","translateX","sudDidHide","Keyboard","addListener","sudDidShow","event","endCoordinates","remove","textInputContainerStyle","display","opacity","textInputStyle","sw","c","onPressItem","index","previousItem","blur","onTextHeightChange","calculateSizes","imageWidth","imageHeight","ratioImageHeight","round","infos","Image","resolveAssetSource","uri","getSize","nativeEvent","layout","format","quality","Platform","OS","clear"],"mappings":"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","sourcesContent":["import React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n 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"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = CancelSvg;
|
|
7
|
+
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _reactNativeSvg = _interopRequireWildcard(require("react-native-svg"));
|
|
11
|
+
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
|
|
14
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
+
|
|
16
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
17
|
+
|
|
18
|
+
function CancelSvg(props) {
|
|
19
|
+
return /*#__PURE__*/React.createElement(_reactNativeSvg.default, _extends({
|
|
20
|
+
viewBox: "0 0 24 24"
|
|
21
|
+
}, props), /*#__PURE__*/React.createElement(_reactNativeSvg.Path, {
|
|
22
|
+
d: "M2 4L2 10L8 10",
|
|
23
|
+
stroke: "#F1F1F5",
|
|
24
|
+
"stroke-width": "1.99277",
|
|
25
|
+
"stroke-linecap": "round",
|
|
26
|
+
"stroke-linejoin": "round"
|
|
27
|
+
}), /*#__PURE__*/React.createElement(_reactNativeSvg.Path, {
|
|
28
|
+
d: "M4.51 15.0004C5.15839 16.8408 6.38734 18.4206 8.01166 19.5018C9.63598 20.583 11.5677 21.107 13.5157 20.9949C15.4637 20.8828 17.3226 20.1406 18.8121 18.8802C20.3017 17.6198 21.3413 15.9094 21.7742 14.0068C22.2072 12.1042 22.0101 10.1124 21.2126 8.33154C20.4152 6.55068 19.0605 5.07723 17.3528 4.1332C15.6451 3.18917 13.6769 2.8257 11.7447 3.09755C9.81245 3.36941 8.02091 4.26186 6.64 5.64044L2 10.0004",
|
|
29
|
+
stroke: "#F1F1F5",
|
|
30
|
+
"stroke-width": "1.99277",
|
|
31
|
+
"stroke-linecap": "round",
|
|
32
|
+
"stroke-linejoin": "round"
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=CancelSvg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["CancelSvg.tsx"],"names":["CancelSvg","props"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;AAEe,SAASA,SAAT,CAAmBC,KAAnB,EAAoC;AACjD,sBACE,oBAAC,uBAAD;AAAK,IAAA,OAAO,EAAC;AAAb,KAA6BA,KAA7B,gBACE,oBAAC,oBAAD;AACE,IAAA,CAAC,EAAC,gBADJ;AAEE,IAAA,MAAM,EAAC,SAFT;AAGE,oBAAa,SAHf;AAIE,sBAAe,OAJjB;AAKE,uBAAgB;AALlB,IADF,eAQE,oBAAC,oBAAD;AACE,IAAA,CAAC,EAAC,kZADJ;AAEE,IAAA,MAAM,EAAC,SAFT;AAGE,oBAAa,SAHf;AAIE,sBAAe,OAJjB;AAKE,uBAAgB;AALlB,IARF,CADF;AAkBD","sourcesContent":["import * as React from 'react';\nimport Svg, { Path, SvgProps } from 'react-native-svg';\n\nexport default function CancelSvg(props: SvgProps) {\n return (\n <Svg viewBox=\"0 0 24 24\" {...props}>\n <Path\n d=\"M2 4L2 10L8 10\"\n stroke=\"#F1F1F5\"\n stroke-width=\"1.99277\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <Path\n d=\"M4.51 15.0004C5.15839 16.8408 6.38734 18.4206 8.01166 19.5018C9.63598 20.583 11.5677 21.107 13.5157 20.9949C15.4637 20.8828 17.3226 20.1406 18.8121 18.8802C20.3017 17.6198 21.3413 15.9094 21.7742 14.0068C22.2072 12.1042 22.0101 10.1124 21.2126 8.33154C20.4152 6.55068 19.0605 5.07723 17.3528 4.1332C15.6451 3.18917 13.6769 2.8257 11.7447 3.09755C9.81245 3.36941 8.02091 4.26186 6.64 5.64044L2 10.0004\"\n stroke=\"#F1F1F5\"\n stroke-width=\"1.99277\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </Svg>\n );\n}\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = PenSvg;
|
|
7
|
+
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _reactNativeSvg = _interopRequireWildcard(require("react-native-svg"));
|
|
11
|
+
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
|
|
14
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
+
|
|
16
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
17
|
+
|
|
18
|
+
function PenSvg(props) {
|
|
19
|
+
return /*#__PURE__*/React.createElement(_reactNativeSvg.default, _extends({
|
|
20
|
+
viewBox: "0 0 22 23"
|
|
21
|
+
}, props), /*#__PURE__*/React.createElement(_reactNativeSvg.Path, {
|
|
22
|
+
"stroke-linecap": "round",
|
|
23
|
+
"stroke-linejoin": "round",
|
|
24
|
+
d: "M16.1298 2.09927C16.3947 1.83435 16.7092 1.62421 17.0553 1.48084C17.4015 1.33746 17.7725 1.26367 18.1471 1.26367C18.5217 1.26367 18.8927 1.33746 19.2389 1.48084C19.585 1.62421 19.8995 1.83435 20.1644 2.09927C20.4293 2.36418 20.6395 2.67869 20.7828 3.02482C20.9262 3.37094 21 3.74192 21 4.11657C21 4.49122 20.9262 4.8622 20.7828 5.20833C20.6395 5.55446 20.4293 5.86896 20.1644 6.13388L6.54759 19.7507L1 21.2637L2.51298 15.7161L16.1298 2.09927Z"
|
|
25
|
+
}));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=PenSvg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["PenSvg.tsx"],"names":["PenSvg","props"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;AAEe,SAASA,MAAT,CAAgBC,KAAhB,EAAiC;AAC9C,sBACE,oBAAC,uBAAD;AAAK,IAAA,OAAO,EAAC;AAAb,KAA6BA,KAA7B,gBACE,oBAAC,oBAAD;AACE,sBAAe,OADjB;AAEE,uBAAgB,OAFlB;AAGE,IAAA,CAAC,EAAC;AAHJ,IADF,CADF;AASD","sourcesContent":["import * as React from 'react';\nimport Svg, { Path, SvgProps } from 'react-native-svg';\n\nexport default function PenSvg(props: SvgProps) {\n return (\n <Svg viewBox=\"0 0 22 23\" {...props}>\n <Path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M16.1298 2.09927C16.3947 1.83435 16.7092 1.62421 17.0553 1.48084C17.4015 1.33746 17.7725 1.26367 18.1471 1.26367C18.5217 1.26367 18.8927 1.33746 19.2389 1.48084C19.585 1.62421 19.8995 1.83435 20.1644 2.09927C20.4293 2.36418 20.6395 2.67869 20.7828 3.02482C20.9262 3.37094 21 3.74192 21 4.11657C21 4.49122 20.9262 4.8622 20.7828 5.20833C20.6395 5.55446 20.4293 5.86896 20.1644 6.13388L6.54759 19.7507L1 21.2637L2.51298 15.7161L16.1298 2.09927Z\"\n />\n </Svg>\n );\n}\n"]}
|
|
@@ -11,6 +11,8 @@ var _reactNative = require("react-native");
|
|
|
11
11
|
|
|
12
12
|
var _DrawCore = _interopRequireDefault(require("../DrawCore"));
|
|
13
13
|
|
|
14
|
+
var _PenSvg = _interopRequireDefault(require("./PenSvg"));
|
|
15
|
+
|
|
14
16
|
var _DoubleHeadSvg = _interopRequireDefault(require("./DoubleHeadSvg"));
|
|
15
17
|
|
|
16
18
|
var _CircleSvg = _interopRequireDefault(require("./CircleSvg"));
|
|
@@ -27,6 +29,8 @@ var _ThrashSvg = _interopRequireDefault(require("./ThrashSvg"));
|
|
|
27
29
|
|
|
28
30
|
var _SendSvg = _interopRequireDefault(require("./SendSvg"));
|
|
29
31
|
|
|
32
|
+
var _CancelSvg = _interopRequireDefault(require("./CancelSvg"));
|
|
33
|
+
|
|
30
34
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
35
|
|
|
32
36
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -85,6 +89,7 @@ function DrawWithOptions({
|
|
|
85
89
|
const drawRef = (0, _react.useRef)(null);
|
|
86
90
|
const [drawingMode, setDrawingMode] = (0, _react.useState)('ellipse');
|
|
87
91
|
const [selectedItem, setSelectedItem] = (0, _react.useState)(false);
|
|
92
|
+
const [cancelEnabled, setCancelEnabled] = (0, _react.useState)(false);
|
|
88
93
|
const onPressSend = (0, _react.useCallback)(() => {
|
|
89
94
|
if (drawRef.current) {
|
|
90
95
|
takeSnapshot === null || takeSnapshot === void 0 ? void 0 : takeSnapshot(drawRef.current.takeSnapshot());
|
|
@@ -123,6 +128,17 @@ function DrawWithOptions({
|
|
|
123
128
|
})), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
124
129
|
style: styles.drawOptions
|
|
125
130
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
|
|
131
|
+
style: styles.option,
|
|
132
|
+
onPress: () => {
|
|
133
|
+
setDrawingMode('pen');
|
|
134
|
+
}
|
|
135
|
+
}, /*#__PURE__*/_react.default.createElement(_PenSvg.default, {
|
|
136
|
+
height: 23,
|
|
137
|
+
width: 22,
|
|
138
|
+
stroke: "#ffffff",
|
|
139
|
+
strokeWidth: "2",
|
|
140
|
+
opacity: drawingMode === 'pen' ? 1 : 0.5
|
|
141
|
+
})), /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
|
|
126
142
|
style: styles.option,
|
|
127
143
|
onPress: () => {
|
|
128
144
|
setDrawingMode('doubleHead');
|
|
@@ -177,7 +193,8 @@ function DrawWithOptions({
|
|
|
177
193
|
drawingMode: drawingMode,
|
|
178
194
|
image: image,
|
|
179
195
|
linearGradient: linearGradient,
|
|
180
|
-
onSelectionChange: setSelectedItem
|
|
196
|
+
onSelectionChange: setSelectedItem,
|
|
197
|
+
onCancelChange: setCancelEnabled
|
|
181
198
|
}), showToolbar ? /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
182
199
|
style: styles.bottomToolBar
|
|
183
200
|
}, selectedItem ? /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
|
|
@@ -191,6 +208,18 @@ function DrawWithOptions({
|
|
|
191
208
|
width: 28,
|
|
192
209
|
height: 28,
|
|
193
210
|
fill: "white"
|
|
211
|
+
})) : null, cancelEnabled ? /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
|
|
212
|
+
style: styles.option,
|
|
213
|
+
onPress: () => {
|
|
214
|
+
var _drawRef$current2;
|
|
215
|
+
|
|
216
|
+
(_drawRef$current2 = drawRef.current) === null || _drawRef$current2 === void 0 ? void 0 : _drawRef$current2.cancelLastAction();
|
|
217
|
+
}
|
|
218
|
+
}, /*#__PURE__*/_react.default.createElement(_CancelSvg.default, {
|
|
219
|
+
width: 27,
|
|
220
|
+
height: 27,
|
|
221
|
+
stroke: "#ffffff",
|
|
222
|
+
strokeWidth: 2
|
|
194
223
|
})) : null, /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
|
|
195
224
|
style: styles.sendButton,
|
|
196
225
|
onPress: onPressSend
|