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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/lib/commonjs/components/DrawCore/ColorSlider.js +17 -13
  2. package/lib/commonjs/components/DrawCore/ColorSlider.js.map +1 -1
  3. package/lib/commonjs/components/DrawCore/CurrentAnimatedItem.js +4 -3
  4. package/lib/commonjs/components/DrawCore/CurrentAnimatedItem.js.map +1 -1
  5. package/lib/commonjs/components/DrawCore/CurrentAnimatedText.js +5 -4
  6. package/lib/commonjs/components/DrawCore/CurrentAnimatedText.js.map +1 -1
  7. package/lib/commonjs/components/DrawCore/DrawPad.js +7 -6
  8. package/lib/commonjs/components/DrawCore/DrawPad.js.map +1 -1
  9. package/lib/commonjs/components/DrawCore/Item.js +7 -5
  10. package/lib/commonjs/components/DrawCore/Item.js.map +1 -1
  11. package/lib/commonjs/components/DrawCore/StrokeSlider.js +18 -14
  12. package/lib/commonjs/components/DrawCore/StrokeSlider.js.map +1 -1
  13. package/lib/commonjs/components/DrawCore/index.js +26 -21
  14. package/lib/commonjs/components/DrawCore/index.js.map +1 -1
  15. package/lib/commonjs/components/DrawWithOptions/ArrowSvg.js +1 -1
  16. package/lib/commonjs/components/DrawWithOptions/ArrowSvg.js.map +1 -1
  17. package/lib/commonjs/components/DrawWithOptions/CancelSvg.js +1 -1
  18. package/lib/commonjs/components/DrawWithOptions/CancelSvg.js.map +1 -1
  19. package/lib/commonjs/components/DrawWithOptions/CircleSvg.js +1 -1
  20. package/lib/commonjs/components/DrawWithOptions/CircleSvg.js.map +1 -1
  21. package/lib/commonjs/components/DrawWithOptions/CloseSvg.js +1 -1
  22. package/lib/commonjs/components/DrawWithOptions/CloseSvg.js.map +1 -1
  23. package/lib/commonjs/components/DrawWithOptions/DoubleHeadSvg.js +1 -1
  24. package/lib/commonjs/components/DrawWithOptions/DoubleHeadSvg.js.map +1 -1
  25. package/lib/commonjs/components/DrawWithOptions/PenSvg.js +1 -1
  26. package/lib/commonjs/components/DrawWithOptions/PenSvg.js.map +1 -1
  27. package/lib/commonjs/components/DrawWithOptions/SendSvg.js +1 -1
  28. package/lib/commonjs/components/DrawWithOptions/SendSvg.js.map +1 -1
  29. package/lib/commonjs/components/DrawWithOptions/SquareSvg.js +1 -1
  30. package/lib/commonjs/components/DrawWithOptions/SquareSvg.js.map +1 -1
  31. package/lib/commonjs/components/DrawWithOptions/TextSvg.js +1 -1
  32. package/lib/commonjs/components/DrawWithOptions/TextSvg.js.map +1 -1
  33. package/lib/commonjs/components/DrawWithOptions/ThrashSvg.js +1 -1
  34. package/lib/commonjs/components/DrawWithOptions/ThrashSvg.js.map +1 -1
  35. package/lib/commonjs/components/DrawWithOptions/index.js +9 -7
  36. package/lib/commonjs/components/DrawWithOptions/index.js.map +1 -1
  37. package/lib/commonjs/index.js.map +1 -1
  38. package/lib/commonjs/types.d.js +4 -0
  39. package/lib/commonjs/types.d.js.map +1 -1
  40. package/lib/module/components/DrawCore/ColorSlider.js +17 -13
  41. package/lib/module/components/DrawCore/ColorSlider.js.map +1 -1
  42. package/lib/module/components/DrawCore/CurrentAnimatedItem.js +4 -3
  43. package/lib/module/components/DrawCore/CurrentAnimatedItem.js.map +1 -1
  44. package/lib/module/components/DrawCore/CurrentAnimatedText.js +5 -4
  45. package/lib/module/components/DrawCore/CurrentAnimatedText.js.map +1 -1
  46. package/lib/module/components/DrawCore/DrawPad.js +7 -6
  47. package/lib/module/components/DrawCore/DrawPad.js.map +1 -1
  48. package/lib/module/components/DrawCore/Item.js +7 -5
  49. package/lib/module/components/DrawCore/Item.js.map +1 -1
  50. package/lib/module/components/DrawCore/StrokeSlider.js +18 -14
  51. package/lib/module/components/DrawCore/StrokeSlider.js.map +1 -1
  52. package/lib/module/components/DrawCore/index.js +26 -21
  53. package/lib/module/components/DrawCore/index.js.map +1 -1
  54. package/lib/module/components/DrawWithOptions/ArrowSvg.js +1 -1
  55. package/lib/module/components/DrawWithOptions/ArrowSvg.js.map +1 -1
  56. package/lib/module/components/DrawWithOptions/CancelSvg.js +1 -1
  57. package/lib/module/components/DrawWithOptions/CancelSvg.js.map +1 -1
  58. package/lib/module/components/DrawWithOptions/CircleSvg.js +1 -1
  59. package/lib/module/components/DrawWithOptions/CircleSvg.js.map +1 -1
  60. package/lib/module/components/DrawWithOptions/CloseSvg.js +1 -1
  61. package/lib/module/components/DrawWithOptions/CloseSvg.js.map +1 -1
  62. package/lib/module/components/DrawWithOptions/DoubleHeadSvg.js +1 -1
  63. package/lib/module/components/DrawWithOptions/DoubleHeadSvg.js.map +1 -1
  64. package/lib/module/components/DrawWithOptions/PenSvg.js +1 -1
  65. package/lib/module/components/DrawWithOptions/PenSvg.js.map +1 -1
  66. package/lib/module/components/DrawWithOptions/SendSvg.js +1 -1
  67. package/lib/module/components/DrawWithOptions/SendSvg.js.map +1 -1
  68. package/lib/module/components/DrawWithOptions/SquareSvg.js +1 -1
  69. package/lib/module/components/DrawWithOptions/SquareSvg.js.map +1 -1
  70. package/lib/module/components/DrawWithOptions/TextSvg.js +1 -1
  71. package/lib/module/components/DrawWithOptions/TextSvg.js.map +1 -1
  72. package/lib/module/components/DrawWithOptions/ThrashSvg.js +1 -1
  73. package/lib/module/components/DrawWithOptions/ThrashSvg.js.map +1 -1
  74. package/lib/module/components/DrawWithOptions/index.js +9 -7
  75. package/lib/module/components/DrawWithOptions/index.js.map +1 -1
  76. package/lib/module/index.js.map +1 -1
  77. package/lib/module/types.d.js +1 -1
  78. package/lib/module/types.d.js.map +1 -1
  79. package/lib/typescript/components/DrawCore/CurrentAnimatedItem.d.ts +1 -0
  80. package/lib/typescript/components/DrawCore/CurrentAnimatedText.d.ts +1 -0
  81. package/lib/typescript/components/DrawCore/DrawPad.d.ts +1 -0
  82. package/lib/typescript/components/DrawCore/Item.d.ts +1 -0
  83. package/lib/typescript/components/DrawCore/StrokeSlider.d.ts +1 -0
  84. package/lib/typescript/components/DrawWithOptions/ArrowSvg.d.ts +1 -0
  85. package/lib/typescript/components/DrawWithOptions/CancelSvg.d.ts +1 -0
  86. package/lib/typescript/components/DrawWithOptions/CircleSvg.d.ts +1 -0
  87. package/lib/typescript/components/DrawWithOptions/CloseSvg.d.ts +1 -0
  88. package/lib/typescript/components/DrawWithOptions/DoubleHeadSvg.d.ts +1 -0
  89. package/lib/typescript/components/DrawWithOptions/PenSvg.d.ts +1 -0
  90. package/lib/typescript/components/DrawWithOptions/SendSvg.d.ts +1 -0
  91. package/lib/typescript/components/DrawWithOptions/SquareSvg.d.ts +1 -0
  92. package/lib/typescript/components/DrawWithOptions/TextSvg.d.ts +1 -0
  93. package/lib/typescript/components/DrawWithOptions/ThrashSvg.d.ts +1 -0
  94. package/lib/typescript/components/DrawWithOptions/index.d.ts +3 -1
  95. package/package.json +1 -1
  96. package/src/components/DrawWithOptions/index.tsx +4 -1
@@ -31,12 +31,13 @@ const styles = StyleSheet.create({
31
31
  }
32
32
  });
33
33
 
34
- const StrokeSlider = ({
35
- minValue,
36
- maxValue,
37
- stroke,
38
- onStrokeChange
39
- }) => {
34
+ const StrokeSlider = _ref => {
35
+ let {
36
+ minValue,
37
+ maxValue,
38
+ stroke,
39
+ onStrokeChange
40
+ } = _ref;
40
41
  const sliderHeight = useSharedValue(0);
41
42
  const [text, setText] = useState(stroke.value);
42
43
  const position = useDerivedValue(() => {
@@ -44,16 +45,19 @@ const StrokeSlider = ({
44
45
  return sliderHeight.value / (maxValue - minValue) * (stroke.value - minValue);
45
46
  });
46
47
  const onGestureEvent = useAnimatedGestureHandler({
47
- onStart: ({
48
- y
49
- }, ctx) => {
48
+ onStart: (_ref2, ctx) => {
49
+ let {
50
+ y
51
+ } = _ref2;
50
52
  ctx.startY = y;
51
53
  },
52
- onActive: ({
53
- translationY
54
- }, {
55
- startY
56
- }) => {
54
+ onActive: (_ref3, _ref4) => {
55
+ let {
56
+ translationY
57
+ } = _ref3;
58
+ let {
59
+ startY
60
+ } = _ref4;
57
61
  stroke.value = Math.min(maxValue, Math.max(minValue, (startY + translationY) / sliderHeight.value * (maxValue - minValue) + minValue));
58
62
  },
59
63
  onEnd: () => {
@@ -1 +1 @@
1
- {"version":3,"sources":["StrokeSlider.tsx"],"names":["React","useState","PanGestureHandler","Animated","runOnJS","useAnimatedGestureHandler","useAnimatedStyle","useDerivedValue","useSharedValue","View","StyleSheet","Text","TRACK_R","styles","create","container","flex","alignItems","width","thumb","position","height","borderRadius","top","backgroundColor","track","textIndicator","color","fontSize","marginTop","fontWeight","StrokeSlider","minValue","maxValue","stroke","onStrokeChange","sliderHeight","text","setText","value","Math","round","onGestureEvent","onStart","y","ctx","startY","onActive","translationY","min","max","onEnd","style","transform","translateY","event","nativeEvent","layout"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\nimport Animated, {\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n} from 'react-native-reanimated';\nimport { View, StyleSheet, Text } from 'react-native';\n\nconst TRACK_R = 10;\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n width: '100%',\n },\n thumb: {\n position: 'absolute',\n width: TRACK_R * 2,\n height: TRACK_R * 2,\n borderRadius: TRACK_R,\n top: 0,\n backgroundColor: 'white',\n },\n track: {\n width: 10,\n flex: 1,\n borderRadius: 5,\n backgroundColor: 'black',\n },\n textIndicator: {\n color: 'white',\n fontSize: 14,\n marginTop: 10,\n fontWeight: 'bold',\n },\n});\n\nconst StrokeSlider = ({\n minValue,\n maxValue,\n stroke,\n onStrokeChange,\n}: {\n minValue: number;\n maxValue: number;\n stroke: Animated.SharedValue<number>;\n onStrokeChange: () => void;\n}) => {\n const sliderHeight = useSharedValue(0);\n\n const [text, setText] = useState(stroke.value);\n\n const position = useDerivedValue(() => {\n runOnJS(setText)(Math.round(stroke.value));\n return (\n (sliderHeight.value / (maxValue - minValue)) * (stroke.value - minValue)\n );\n });\n\n const onGestureEvent = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n { startY: number }\n >(\n {\n onStart: ({ y }, ctx) => {\n ctx.startY = y;\n },\n onActive: ({ translationY }, { startY }) => {\n stroke.value = Math.min(\n maxValue,\n Math.max(\n minValue,\n ((startY + translationY) / sliderHeight.value) *\n (maxValue - minValue) +\n minValue\n )\n );\n },\n onEnd: () => {\n runOnJS(onStrokeChange)();\n },\n },\n []\n );\n\n const style = useAnimatedStyle(() => {\n return {\n transform: [{ translateY: position.value - TRACK_R }],\n };\n }, [position.value]);\n\n return (\n <View style={styles.container}>\n <PanGestureHandler onGestureEvent={onGestureEvent}>\n <Animated.View style={styles.container}>\n <View\n onLayout={(event) => {\n sliderHeight.value = event.nativeEvent.layout.height;\n }}\n style={styles.track}\n />\n <Animated.View style={[styles.thumb, style]} />\n </Animated.View>\n </PanGestureHandler>\n <Text style={styles.textIndicator}>{text}</Text>\n </View>\n );\n};\n\nexport default StrokeSlider;\n"]}
1
+ {"version":3,"names":["React","useState","PanGestureHandler","Animated","runOnJS","useAnimatedGestureHandler","useAnimatedStyle","useDerivedValue","useSharedValue","View","StyleSheet","Text","TRACK_R","styles","create","container","flex","alignItems","width","thumb","position","height","borderRadius","top","backgroundColor","track","textIndicator","color","fontSize","marginTop","fontWeight","StrokeSlider","minValue","maxValue","stroke","onStrokeChange","sliderHeight","text","setText","value","Math","round","onGestureEvent","onStart","ctx","y","startY","onActive","translationY","min","max","onEnd","style","transform","translateY","event","nativeEvent","layout"],"sources":["StrokeSlider.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\nimport Animated, {\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n} from 'react-native-reanimated';\nimport { View, StyleSheet, Text } from 'react-native';\n\nconst TRACK_R = 10;\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n width: '100%',\n },\n thumb: {\n position: 'absolute',\n width: TRACK_R * 2,\n height: TRACK_R * 2,\n borderRadius: TRACK_R,\n top: 0,\n backgroundColor: 'white',\n },\n track: {\n width: 10,\n flex: 1,\n borderRadius: 5,\n backgroundColor: 'black',\n },\n textIndicator: {\n color: 'white',\n fontSize: 14,\n marginTop: 10,\n fontWeight: 'bold',\n },\n});\n\nconst StrokeSlider = ({\n minValue,\n maxValue,\n stroke,\n onStrokeChange,\n}: {\n minValue: number;\n maxValue: number;\n stroke: Animated.SharedValue<number>;\n onStrokeChange: () => void;\n}) => {\n const sliderHeight = useSharedValue(0);\n\n const [text, setText] = useState(stroke.value);\n\n const position = useDerivedValue(() => {\n runOnJS(setText)(Math.round(stroke.value));\n return (\n (sliderHeight.value / (maxValue - minValue)) * (stroke.value - minValue)\n );\n });\n\n const onGestureEvent = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n { startY: number }\n >(\n {\n onStart: ({ y }, ctx) => {\n ctx.startY = y;\n },\n onActive: ({ translationY }, { startY }) => {\n stroke.value = Math.min(\n maxValue,\n Math.max(\n minValue,\n ((startY + translationY) / sliderHeight.value) *\n (maxValue - minValue) +\n minValue\n )\n );\n },\n onEnd: () => {\n runOnJS(onStrokeChange)();\n },\n },\n []\n );\n\n const style = useAnimatedStyle(() => {\n return {\n transform: [{ translateY: position.value - TRACK_R }],\n };\n }, [position.value]);\n\n return (\n <View style={styles.container}>\n <PanGestureHandler onGestureEvent={onGestureEvent}>\n <Animated.View style={styles.container}>\n <View\n onLayout={(event) => {\n sliderHeight.value = event.nativeEvent.layout.height;\n }}\n style={styles.track}\n />\n <Animated.View style={[styles.thumb, style]} />\n </Animated.View>\n </PanGestureHandler>\n <Text style={styles.textIndicator}>{text}</Text>\n </View>\n );\n};\n\nexport default StrokeSlider;\n"],"mappings":"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"}
@@ -249,15 +249,16 @@ const reducerDrawStates = (drawStates, action) => {
249
249
  }
250
250
  };
251
251
 
252
- const DrawCore = /*#__PURE__*/React.forwardRef(({
253
- drawingMode,
254
- image,
255
- linearGradient,
256
- onSelectionChange,
257
- onCancelChange
258
- }, ref) => {
252
+ const DrawCore = /*#__PURE__*/React.forwardRef((_ref, ref) => {
259
253
  var _textInputRef$current3, _textInputRef$current4;
260
254
 
255
+ let {
256
+ drawingMode,
257
+ image,
258
+ linearGradient,
259
+ onSelectionChange,
260
+ onCancelChange
261
+ } = _ref;
261
262
  const mode = useSharedValue('pen');
262
263
  const [drawRegion, setDrawRegion] = useState(null);
263
264
  const [originalImageSize, setOriginalImageSize] = useState(null);
@@ -365,12 +366,13 @@ const DrawCore = /*#__PURE__*/React.forwardRef(({
365
366
  }
366
367
  }, [currentItem, textVal]);
367
368
  const onGestureEvent = useAnimatedGestureHandler({
368
- onStart: ({
369
- x: startX,
370
- y: startY
371
- }, ctx) => {
369
+ onStart: (_ref2, ctx) => {
372
370
  var _currentItem$value3;
373
371
 
372
+ let {
373
+ x: startX,
374
+ y: startY
375
+ } = _ref2;
374
376
  ctx.startX = startX;
375
377
  ctx.startY = startY;
376
378
  ctx.newlyCreated = false;
@@ -491,14 +493,15 @@ const DrawCore = /*#__PURE__*/React.forwardRef(({
491
493
  break;
492
494
  }
493
495
  },
494
- onActive: ({
495
- x: currentX,
496
- y: currentY,
497
- translationX,
498
- translationY
499
- }, ctx) => {
496
+ onActive: (_ref3, ctx) => {
500
497
  var _currentItem$value4, _initialItem$value, _initialItem$value2, _initialItem$value4, _initialItem$value17, _initialItem$value30;
501
498
 
499
+ let {
500
+ x: currentX,
501
+ y: currentY,
502
+ translationX,
503
+ translationY
504
+ } = _ref3;
502
505
  const {
503
506
  startX,
504
507
  startY,
@@ -948,12 +951,14 @@ const DrawCore = /*#__PURE__*/React.forwardRef(({
948
951
  strokeWidth: strokeWidth.value,
949
952
  color: color.value
950
953
  };
951
- }, ({
952
- strokeWidth: sw,
953
- color: c
954
- }) => {
954
+ }, _ref4 => {
955
955
  var _currentItem$value6;
956
956
 
957
+ let {
958
+ strokeWidth: sw,
959
+ color: c
960
+ } = _ref4;
961
+
957
962
  switch ((_currentItem$value6 = currentItem.value) === null || _currentItem$value6 === void 0 ? void 0 : _currentItem$value6.type) {
958
963
  case 'singleHead':
959
964
  currentItem.value = {
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"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","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","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"],"mappings":"AAAA,OAAOA,KAAP,IACEC,WADF,EAEEC,SAFF,EAGEC,mBAHF,EAIEC,UAJF,EAKEC,MALF,EAMEC,QANF,QAOO,OAPP;AAQA,SACEC,UADF,EAEEC,SAFF,EAGEC,IAHF,EAIEC,QAJF,EAKEC,eALF,EAMEC,KANF,EAUEC,QAVF,EAWEC,kBAXF,QAYO,cAZP;AAaA,OAAOC,QAAP,IACEC,OADF,EAEEC,yBAFF,EAGEC,mBAHF,EAIEC,gBAJF,EAKEC,cALF,EAMEC,UANF,QAOO,yBAPP;AAQA,SACEC,iBADF,QAGO,8BAHP;AAIA,OAAOC,WAAP,MAAwB,eAAxB;AACA,OAAOC,YAAP,MAAyB,gBAAzB;AAQA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,QAAP,MAAqB,wBAArB;AAEA,MAAMC,gBAAgB,GAAG,EAAzB;AAEA,MAAMC,MAAM,GAAGrB,UAAU,CAACsB,MAAX,CAAkB;AAC/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,IAAI,EAAE;AADG,GADoB;AAI/BC,EAAAA,QAAQ,EAAE;AACRD,IAAAA,IAAI,EAAE,CADE;AAERE,IAAAA,cAAc,EAAE,QAFR;AAGRC,IAAAA,UAAU,EAAE,QAHJ;AAIRC,IAAAA,eAAe,EAAE;AAJT,GAJqB;AAU/BC,EAAAA,kBAAkB,EAAE;AAClBC,IAAAA,QAAQ,EAAE,UADQ;AAElBC,IAAAA,KAAK,EAAE,CAFW;AAGlBC,IAAAA,GAAG,EAAE,CAHa;AAIlBC,IAAAA,MAAM,EAAE,CAJU;AAKlBL,IAAAA,eAAe,EAAE,WALC;AAMlBM,IAAAA,KAAK,EAAEd,gBANW;AAOlBM,IAAAA,cAAc,EAAE,cAPE;AAQlBS,IAAAA,cAAc,EAAE,EARE;AASlBC,IAAAA,mBAAmB,EAAE,EATH;AAUlBC,IAAAA,sBAAsB,EAAE,EAVN;AAWlBC,IAAAA,eAAe,EAAE;AAXC,GAVW;AAuB/BC,EAAAA,qBAAqB,EAAE;AACrBf,IAAAA,IAAI,EAAE,CADe;AAErBgB,IAAAA,aAAa,EAAE,EAFM;AAGrBC,IAAAA,iBAAiB,EAAE,SAHE;AAIrBC,IAAAA,iBAAiB,EAAE;AAJE,GAvBQ;AA6B/BC,EAAAA,oBAAoB,EAAE;AAAEnB,IAAAA,IAAI,EAAE,CAAR;AAAWoB,IAAAA,UAAU,EAAE;AAAvB,GA7BS;AA8B/BC,EAAAA,OAAO,EAAE;AAAEX,IAAAA,KAAK,EAAE,MAAT;AAAiBY,IAAAA,MAAM,EAAE;AAAzB,GA9BsB;AA+B/BC,EAAAA,SAAS,EAAE;AACTnB,IAAAA,eAAe,EAAE,WADR;AAETU,IAAAA,eAAe,EAAE,EAFR;AAGTU,IAAAA,iBAAiB,EAAE,EAHV;AAITC,IAAAA,QAAQ,EAAE,EAJD;AAKTC,IAAAA,KAAK,EAAE,OALE;AAMThB,IAAAA,KAAK,EAAE;AANE;AA/BoB,CAAlB,CAAf;;AAyCA,MAAMiB,SAAS,GAAG,CAChBC,KADgB,EAEhBC,IAFgB,KAGb;AACH;;AACA,QAAM;AAAEC,IAAAA,EAAF;AAAMC,IAAAA,EAAN;AAAUC,IAAAA,EAAV;AAAcC,IAAAA;AAAd,MAAqBJ,IAA3B;AACA,QAAM;AAAEK,IAAAA,CAAF;AAAKC,IAAAA;AAAL,MAAWP,KAAjB;AAEA,MAAIQ,CAAC,GAAGF,CAAC,GAAGJ,EAAZ;AACA,MAAIO,CAAC,GAAGF,CAAC,GAAGH,EAAZ;AACA,MAAIM,CAAC,GAAGP,EAAE,GAAGD,EAAb;AACA,MAAIS,CAAC,GAAGN,EAAE,GAAGD,EAAb;AAEA,MAAIQ,GAAG,GAAGJ,CAAC,GAAGE,CAAJ,GAAQD,CAAC,GAAGE,CAAtB;AACA,MAAIE,MAAM,GAAGH,CAAC,GAAGA,CAAJ,GAAQC,CAAC,GAAGA,CAAzB;AACA,MAAIG,KAAK,GAAG,CAAC,CAAb;;AACA,MAAID,MAAM,KAAK,CAAf,EAAkB;AAChB;AACAC,IAAAA,KAAK,GAAGF,GAAG,GAAGC,MAAd;AACD;;AAED,MAAIE,EAAJ,EAAQC,EAAR;;AAEA,MAAIF,KAAK,GAAG,CAAZ,EAAe;AACbC,IAAAA,EAAE,GAAGb,EAAL;AACAc,IAAAA,EAAE,GAAGZ,EAAL;AACD,GAHD,MAGO,IAAIU,KAAK,GAAG,CAAZ,EAAe;AACpBC,IAAAA,EAAE,GAAGZ,EAAL;AACAa,IAAAA,EAAE,GAAGX,EAAL;AACD,GAHM,MAGA;AACLU,IAAAA,EAAE,GAAGb,EAAE,GAAGY,KAAK,GAAGJ,CAAlB;AACAM,IAAAA,EAAE,GAAGZ,EAAE,GAAGU,KAAK,GAAGH,CAAlB;AACD;;AAED,MAAIM,EAAE,GAAGX,CAAC,GAAGS,EAAb;AACA,MAAIG,EAAE,GAAGX,CAAC,GAAGS,EAAb;AACA,SAAOG,IAAI,CAACC,IAAL,CAAUH,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAzB,CAAP;AACD,CArCD;;AAuCA,MAAMG,iBAAiB,GAAGjE,QAAQ,CAACkE,uBAAT,CAAiCzE,SAAjC,CAA1B;AAEA,MAAM0E,YAAY,GAAG,EAArB;AAEA,MAAMC,SAAS,GAAG,EAAlB;;AAmBA,MAAMC,WAAW,GAAG,CAClBC,IADkB,EAElBC,WAFkB,EAGlBC,WAHkB,EAIlBlD,QAJkB,EAKlBmD,KALkB,KAUf;AACH;;AAEA,MAAIF,WAAW,CAACG,KAAhB,EAAuB;AACrBzE,IAAAA,OAAO,CAACuE,WAAD,CAAP,CAAqBD,WAAW,CAACG,KAAjC;AACD;;AAED,UAAQJ,IAAI,CAACI,KAAb;AACE,SAAK,SAAL;AACEH,MAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,QAAAA,IAAI,EAAEL,IAAI,CAACI,KADO;AAElBE,QAAAA,IAAI,EAAE;AACJC,UAAAA,EAAE,EAAEvD,QAAQ,CAAC4B,CADT;AAEJ4B,UAAAA,EAAE,EAAExD,QAAQ,CAAC6B,CAFT;AAGJ4B,UAAAA,EAAE,EAAE,CAHA;AAIJC,UAAAA,EAAE,EAAE;AAJA,SAFY;AAQlBC,QAAAA,WAAW,EAAER,KAAK,CAACQ,WAAN,CAAkBP,KARb;AASlBhC,QAAAA,KAAK,EAAE+B,KAAK,CAAC/B,KAAN,CAAYgC;AATD,OAApB;AAWA;;AACF,SAAK,WAAL;AACEH,MAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,QAAAA,IAAI,EAAEL,IAAI,CAACI,KADO;AAElBE,QAAAA,IAAI,EAAE;AAAE1B,UAAAA,CAAC,EAAE5B,QAAQ,CAAC4B,CAAd;AAAiBC,UAAAA,CAAC,EAAE7B,QAAQ,CAAC6B,CAA7B;AAAgCzB,UAAAA,KAAK,EAAE,CAAvC;AAA0CY,UAAAA,MAAM,EAAE;AAAlD,SAFY;AAGlB2C,QAAAA,WAAW,EAAER,KAAK,CAACQ,WAAN,CAAkBP,KAHb;AAIlBhC,QAAAA,KAAK,EAAE+B,KAAK,CAAC/B,KAAN,CAAYgC;AAJD,OAApB;AAMA;;AACF,SAAK,YAAL;AACA,SAAK,YAAL;AACEH,MAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,QAAAA,IAAI,EAAEL,IAAI,CAACI,KADO;AAElBE,QAAAA,IAAI,EAAE;AACJ9B,UAAAA,EAAE,EAAExB,QAAQ,CAAC4B,CADT;AAEJF,UAAAA,EAAE,EAAE1B,QAAQ,CAAC6B,CAFT;AAGJJ,UAAAA,EAAE,EAAEzB,QAAQ,CAAC4B,CAHT;AAIJD,UAAAA,EAAE,EAAE3B,QAAQ,CAAC6B;AAJT,SAFY;AAQlB8B,QAAAA,WAAW,EAAER,KAAK,CAACQ,WAAN,CAAkBP,KARb;AASlBhC,QAAAA,KAAK,EAAE+B,KAAK,CAAC/B,KAAN,CAAYgC;AATD,OAApB;AAWA;;AACF,SAAK,MAAL;AACEH,MAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,QAAAA,IAAI,EAAEL,IAAI,CAACI,KADO;AAElBE,QAAAA,IAAI,EAAE;AACJ1B,UAAAA,CAAC,EAAE5B,QAAQ,CAAC4B,CADR;AAEJC,UAAAA,CAAC,EAAE7B,QAAQ,CAAC6B,CAFR;AAGJzB,UAAAA,KAAK,EAAE,GAHH;AAIJY,UAAAA,MAAM,EAAEmC,KAAK,CAACS,cAAN,CAAqBR,KAArB,IAA8B;AAJlC,SAFY;AAQlBO,QAAAA,WAAW,EAAER,KAAK,CAACQ,WAAN,CAAkBP,KARb;AASlBS,QAAAA,IAAI,EAAEhB,YATY;AAUlBzB,QAAAA,KAAK,EAAE+B,KAAK,CAAC/B,KAAN,CAAYgC;AAVD,OAApB;AAYA;;AACF,SAAK,KAAL;AACEH,MAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,QAAAA,IAAI,EAAEL,IAAI,CAACI,KADO;AAElBE,QAAAA,IAAI,EAAE,EAFY;AAGlBK,QAAAA,WAAW,EAAER,KAAK,CAACQ,WAAN,CAAkBP,KAHb;AAIlBhC,QAAAA,KAAK,EAAE+B,KAAK,CAAC/B,KAAN,CAAYgC;AAJD,OAApB;AAMA;AAzDJ;AA2DD,CA5ED;;AA8EA,MAAMU,kBAAkB,GAAG,CACzBb,WADyB,EAEzBW,cAFyB,EAGzB5C,MAHyB,KAItB;AACH;;AADG;;AAEH,MAAI,uBAAAiC,WAAW,CAACG,KAAZ,0EAAmBC,IAAnB,MAA4B,MAAhC,EAAwC;AACtCO,IAAAA,cAAc,CAACR,KAAf,GAAuBQ,cAAc,CAACR,KAAf,IAAwBpC,MAA/C;AAEAiC,IAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBE,MAAAA,IAAI,EAAE,EACJ,GAAGL,WAAW,CAACG,KAAZ,CAAkBE,IADjB;AAEJtC,QAAAA,MAAM,EAAEA;AAFJ,OADY;AAKlBqC,MAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IALN;AAMlBM,MAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WANb;AAOlBvC,MAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAPP;AAQlByC,MAAAA,IAAI,EAAEZ,WAAW,CAACG,KAAZ,CAAkBS;AARN,KAApB;AAUD;AACF,CApBD;;AAkCA,MAAME,iBAAiB,GAAG,CACxBC,UADwB,EAExBC,MAFwB,KAGrB;AACH;;AACA,UAAQA,MAAM,CAACZ,IAAf;AACE,SAAK,eAAL;AACE,aAAO,EACL,GAAGW,UADE;AAELE,QAAAA,SAAS,EAAEF,UAAU,CAACE,SAAX,CAAqBC,MAArB,CAA4BF,MAAM,CAACG,IAAnC;AAFN,OAAP;;AAIF,SAAK,kBAAL;AACE,YAAMC,YAAY,GAAGL,UAAU,CAACE,SAAhC;AACAG,MAAAA,YAAY,CAACC,MAAb,CAAoBL,MAAM,CAACM,MAA3B,EAAmC,CAAnC;AACA,aAAO,EACL,GAAGP,UADE;AAELE,QAAAA,SAAS,EAAEG;AAFN,OAAP;;AAIF,SAAK,kBAAL;AACE,UAAIJ,MAAM,CAAChB,WAAX,EAAwB;AACtB,eAAO,EACL,GAAGe,UADE;AAELQ,UAAAA,YAAY,EAAER,UAAU,CAACQ,YAAX,CAAwBL,MAAxB,CAA+B,CAC3C,CAAC,GAAGH,UAAU,CAACE,SAAf,EAA0BD,MAAM,CAAChB,WAAjC,CAD2C,CAA/B;AAFT,SAAP;AAMD,OAPD,MAOO;AACL,eAAO,EACL,GAAGe,UADE;AAELQ,UAAAA,YAAY,EAAER,UAAU,CAACQ,YAAX,CAAwBL,MAAxB,CAA+B,CAC3C,CAAC,GAAGH,UAAU,CAACE,SAAf,CAD2C,CAA/B;AAFT,SAAP;AAMD;;AAEH,SAAK,QAAL;AACE,YAAMO,GAAG,GAAGT,UAAU,CAACQ,YAAX,CAAwBE,MAApC;;AACA,UAAID,GAAG,GAAG,CAAV,EAAa;AACX,cAAME,eAAe,GAAGX,UAAU,CAACQ,YAAnC;AACAG,QAAAA,eAAe,CAACC,GAAhB;;AACA,YAAID,eAAe,CAACD,MAAhB,KAA2B,CAA/B,EAAkC;AAAA;;AAChC,mCAAAT,MAAM,CAACY,cAAP,qFAAAZ,MAAM,EAAkB,KAAlB,CAAN;AACD;;AACD,eAAO;AACLC,UAAAA,SAAS,EAAEF,UAAU,CAACQ,YAAX,CAAwBC,GAAG,GAAG,CAA9B,CADN;AAELD,UAAAA,YAAY,EAAEG;AAFT,SAAP;AAID,OAVD,MAUO;AACL,eAAOX,UAAP;AACD;;AA5CL;AA8CD,CAnDD;;AAqDA,MAAMc,QAAQ,gBAAGnH,KAAK,CAACoH,UAAN,CAUf,CACE;AAAEC,EAAAA,WAAF;AAAeC,EAAAA,KAAf;AAAsBC,EAAAA,cAAtB;AAAsCC,EAAAA,iBAAtC;AAAyDN,EAAAA;AAAzD,CADF,EAEEO,GAFF,KAGK;AAAA;;AACH,QAAMpC,IAAI,GAAGjE,cAAc,CAAe,KAAf,CAA3B;AAEA,QAAM,CAACsG,UAAD,EAAaC,aAAb,IAA8BrH,QAAQ,CAAc,IAAd,CAA5C;AAEA,QAAM,CAACsH,iBAAD,EAAoBC,oBAApB,IACJvH,QAAQ,CAAc,IAAd,CADV;AAGA,QAAM,CAACwH,SAAD,EAAYC,YAAZ,IAA4BzH,QAAQ,CAAc,IAAd,CAA1C;AAEA,QAAM0H,aAAa,GAAG3H,MAAM,CAAO,IAAP,CAA5B;AAEA,QAAM4H,QAAQ,GAAG5H,MAAM,CAAW,IAAX,CAAvB;AAEA,QAAM,CAAC6H,OAAD,EAAUC,UAAV,IAAwB7H,QAAQ,CAAS,EAAT,CAAtC;AAEA,QAAMgF,WAAW,GAAGlE,cAAc,CAAkB,IAAlB,CAAlC;AAEA,QAAMgH,WAAW,GAAGhH,cAAc,CAAkB,IAAlB,CAAlC;AAEA,QAAM,CAACiF,UAAD,EAAagC,kBAAb,IAAmCjI,UAAU,CAACgG,iBAAD,EAAoB;AACrEG,IAAAA,SAAS,EAAE,EAD0D;AAErEM,IAAAA,YAAY,EAAE,CAAC,EAAD;AAFuD,GAApB,CAAnD;AAKA,QAAMZ,cAAc,GAAG7E,cAAc,CAAgB,IAAhB,CAArC;AAEA,QAAMmE,WAAW,GAAGtF,WAAW,CAAEwG,IAAD,IAAoB;AAClD4B,IAAAA,kBAAkB,CAAC;AAAE3C,MAAAA,IAAI,EAAE,eAAR;AAAyBe,MAAAA,IAAI,EAAEA;AAA/B,KAAD,CAAlB;AACD,GAF8B,EAE5B,EAF4B,CAA/B;AAIA,QAAM6B,cAAc,GAAGrI,WAAW,CAAE2G,MAAD,IAAoB;AACrDyB,IAAAA,kBAAkB,CAAC;AAAE3C,MAAAA,IAAI,EAAE,kBAAR;AAA4BkB,MAAAA,MAAM,EAAEA;AAApC,KAAD,CAAlB;AACD,GAFiC,EAE/B,EAF+B,CAAlC;AAIA,QAAM2B,eAAe,GAAGtI,WAAW,CAAEwG,IAAD,IAA2B;AAC7D4B,IAAAA,kBAAkB,CAAC;AACjB3C,MAAAA,IAAI,EAAE,kBADW;AAEjBJ,MAAAA,WAAW,EAAEmB;AAFI,KAAD,CAAlB;AAID,GALkC,EAKhC,EALgC,CAAnC;AAOA,QAAM+B,YAAY,GAAGvI,WAAW,CAAC,MAAM;AACrCoI,IAAAA,kBAAkB,CAAC;AACjB3C,MAAAA,IAAI,EAAE,QADW;AAEjBwB,MAAAA,cAAc,EAAEA;AAFC,KAAD,CAAlB;AAID,GAL+B,EAK7B,CAACA,cAAD,CAL6B,CAAhC;AAOA/G,EAAAA,mBAAmB,CACjBsH,GADiB,EAEjB,OAAO;AACLgB,IAAAA,gBAAgB,EAAET,aADb;AAELU,IAAAA,kBAAkB,EAAE,MAAM;AACxB,UAAIpD,WAAW,CAACG,KAAhB,EAAuB;AACrBH,QAAAA,WAAW,CAACG,KAAZ,GAAoB,IAApB;AACA8C,QAAAA,eAAe,CAAC,IAAD,CAAf;AACD;;AACDf,MAAAA,iBAAiB,SAAjB,IAAAA,iBAAiB,WAAjB,YAAAA,iBAAiB,CAAG,KAAH,CAAjB;AACAN,MAAAA,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAG,IAAH,CAAd;AACD,KATI;AAULyB,IAAAA,gBAAgB,EAAE,MAAM;AACtBnB,MAAAA,iBAAiB,SAAjB,IAAAA,iBAAiB,WAAjB,YAAAA,iBAAiB,CAAG,KAAH,CAAjB;;AACA,UAAIlC,WAAW,CAACG,KAAhB,EAAuB;AACrBH,QAAAA,WAAW,CAACG,KAAZ,GAAoB,IAApB;AACD;;AACD+C,MAAAA,YAAY;AACb,KAhBI;AAiBLI,IAAAA,YAAY,EAAE,YAAyC;AAAA;;AACrD,UAAItD,WAAW,CAACG,KAAhB,EAAuB;AACrBF,QAAAA,WAAW,CAACD,WAAW,CAACG,KAAb,CAAX;AACAH,QAAAA,WAAW,CAACG,KAAZ,GAAoB,IAApB;AACD;;AACD,kCAAOwC,QAAQ,CAACY,OAAhB,+EAAO,kBAAkBC,OAAzB,0DAAO,6CAAP;AACD;AAvBI,GAAP,CAFiB,EA2BjB,CACExD,WADF,EAEEkC,iBAFF,EAGEN,cAHF,EAIEqB,eAJF,EAKEC,YALF,EAMEjD,WANF,CA3BiB,CAAnB;AAqCArF,EAAAA,SAAS,CAAC,MAAM;AACdmF,IAAAA,IAAI,CAACI,KAAL,GAAa4B,WAAb;;AACA,QAAI/B,WAAW,CAACG,KAAhB,EAAuB;AACrBF,MAAAA,WAAW,CAACD,WAAW,CAACG,KAAb,CAAX;AACD;;AACDH,IAAAA,WAAW,CAACG,KAAZ,GAAoB,IAApB;AACA+B,IAAAA,iBAAiB,SAAjB,IAAAA,iBAAiB,WAAjB,YAAAA,iBAAiB,CAAG,KAAH,CAAjB;AACD,GAPQ,EAON,CAACH,WAAD,EAAchC,IAAd,EAAoBC,WAApB,EAAiCkC,iBAAjC,EAAoDjC,WAApD,CAPM,CAAT;AASA,QAAMS,WAAW,GAAG5E,cAAc,CAAS,CAAT,CAAlC;AAEA,QAAMqC,KAAK,GAAGrC,cAAc,CAAW,kBAAX,CAA5B;AAEA,QAAM2H,WAAW,GAAG3H,cAAc,CAAC,CAAD,CAAlC;AAEA,QAAM4H,aAAa,GAAG5H,cAAc,CAAC,KAAD,CAApC;AAEA,QAAM6H,SAAS,GAAGhJ,WAAW,CAAC,MAAM;AAAA;;AAClC,6BAAAiJ,YAAY,CAACL,OAAb,gFAAsBM,KAAtB;AACD,GAF4B,EAE1B,EAF0B,CAA7B;AAIA,QAAMC,mBAAmB,GAAGnJ,WAAW,CAAC,MAAM;AAC5C,QAAIqF,WAAW,CAACG,KAAhB,EAAuB;AACrB8C,MAAAA,eAAe,CAACjD,WAAW,CAACG,KAAb,CAAf;AACD;AACF,GAJsC,EAIpC,CAAC8C,eAAD,EAAkBjD,WAAW,CAACG,KAA9B,CAJoC,CAAvC;AAMAvF,EAAAA,SAAS,CAAC,MAAM;AAAA;;AACd,QAAI,wBAAAoF,WAAW,CAACG,KAAZ,4EAAmBC,IAAnB,MAA4B,MAAhC,EAAwC;AACtCJ,MAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBE,QAAAA,IAAI,EAAEL,WAAW,CAACG,KAAZ,CAAkBE,IADN;AAElBD,QAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IAFN;AAGlBM,QAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAHb;AAIlBvC,QAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAJP;AAKlByC,QAAAA,IAAI,EAAEgC;AALY,OAApB;AAOD;AACF,GAVQ,EAUN,CAAC5C,WAAD,EAAc4C,OAAd,CAVM,CAAT;AAYA,QAAMmB,cAAc,GAAGpI,yBAAyB,CAI9C;AACEqI,IAAAA,OAAO,EAAE,CAAC;AAAErF,MAAAA,CAAC,EAAEsF,MAAL;AAAarF,MAAAA,CAAC,EAAEsF;AAAhB,KAAD,EAA2BC,GAA3B,KAAmC;AAAA;;AAC1CA,MAAAA,GAAG,CAACF,MAAJ,GAAaA,MAAb;AACAE,MAAAA,GAAG,CAACD,MAAJ,GAAaA,MAAb;AACAC,MAAAA,GAAG,CAACC,YAAJ,GAAmB,KAAnB;AAEAX,MAAAA,WAAW,CAACtD,KAAZ,GAAoBpE,UAAU,CAACM,gBAAD,CAA9B;AAEAyG,MAAAA,WAAW,CAAC3C,KAAZ,GAAoBH,WAAW,CAACG,KAAhC;;AAEA,qCAAQH,WAAW,CAACG,KAApB,wDAAQ,oBAAmBC,IAA3B;AACE,aAAK,SAAL;AACE,gBAAME,EAAE,GACN,OAAON,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBC,EAA9B,KAAqC,QAArC,GACI+D,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBC,EAAxB,CADd,GAEIN,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBC,EAAvB,IAA6B,CAHnC;AAIA,gBAAMC,EAAE,GACN,OAAOP,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBE,EAA9B,KAAqC,QAArC,GACI8D,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBE,EAAxB,CADd,GAEIP,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBE,EAAvB,IAA6B,CAHnC;AAIA,gBAAMC,EAAE,GACN,OAAOR,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBG,EAA9B,KAAqC,QAArC,GACI6D,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBG,EAAxB,CADd,GAEIR,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBG,EAAvB,IAA6B,CAHnC;AAIA,gBAAMC,EAAE,GACN,OAAOT,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBI,EAA9B,KAAqC,QAArC,GACI4D,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBI,EAAxB,CADd,GAEIT,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBI,EAAvB,IAA6B,CAHnC;;AAKA,cACEwD,MAAM,IAAI3D,EAAE,GAAGT,SAAf,IACAoE,MAAM,IAAI3D,EAAE,GAAGT,SADf,IAEAqE,MAAM,IAAI3D,EAAE,GAAGE,EAAL,GAAUZ,SAFpB,IAGAqE,MAAM,IAAI3D,EAAE,GAAGE,EAAL,GAAUZ,SAJtB,EAKE;AACAsE,YAAAA,GAAG,CAACG,IAAJ,GAAW,KAAX;AACD,WAPD,MAOO,IACLL,MAAM,IAAI3D,EAAE,GAAGT,SAAf,IACAoE,MAAM,IAAI3D,EAAE,GAAGT,SADf,IAEAqE,MAAM,IAAI3D,EAAE,GAAGE,EAAL,GAAUZ,SAFpB,IAGAqE,MAAM,IAAI3D,EAAE,GAAGE,EAAL,GAAUZ,SAJf,EAKL;AACAsE,YAAAA,GAAG,CAACG,IAAJ,GAAW,QAAX;AACD,WAPM,MAOA,IACLJ,MAAM,IAAI3D,EAAE,GAAGV,SAAf,IACAqE,MAAM,IAAI3D,EAAE,GAAGV,SADf,IAEAoE,MAAM,IAAI3D,EAAE,GAAGE,EAAL,GAAUX,SAFpB,IAGAoE,MAAM,IAAI3D,EAAE,GAAGE,EAAL,GAAUX,SAJf,EAKL;AACAsE,YAAAA,GAAG,CAACG,IAAJ,GAAW,MAAX;AACD,WAPM,MAOA,IACLJ,MAAM,IAAI3D,EAAE,GAAGV,SAAf,IACAqE,MAAM,IAAI3D,EAAE,GAAGV,SADf,IAEAoE,MAAM,IAAI3D,EAAE,GAAGE,EAAL,GAAUX,SAFpB,IAGAoE,MAAM,IAAI3D,EAAE,GAAGE,EAAL,GAAUX,SAJf,EAKL;AACAsE,YAAAA,GAAG,CAACG,IAAJ,GAAW,OAAX;AACD,WAPM,MAOA,IACL,CAAE9D,EAAE,GAAG,CAAL,IAAUyD,MAAM,GAAG3D,EAAE,GAAGE,EAAxB,IAA8ByD,MAAM,GAAG3D,EAAE,GAAGE,EAA7C,IACEA,EAAE,GAAG,CAAL,IAAUyD,MAAM,GAAG3D,EAAE,GAAGE,EAAxB,IAA8ByD,MAAM,GAAG3D,EAAE,GAAGE,EAD/C,MAEEC,EAAE,GAAG,CAAL,IAAUyD,MAAM,GAAG3D,EAAE,GAAGE,EAAxB,IAA8ByD,MAAM,GAAG3D,EAAE,GAAGE,EAA7C,IACEA,EAAE,GAAG,CAAL,IAAUyD,MAAM,GAAG3D,EAAE,GAAGE,EAAxB,IAA8ByD,MAAM,GAAG3D,EAAE,GAAGE,EAH/C,CADK,EAKL;AACA0D,YAAAA,GAAG,CAACG,IAAJ,GAAW,QAAX;AACD,WAPM,MAOA;AACLH,YAAAA,GAAG,CAACG,IAAJ,GAAW,KAAX;AACAxB,YAAAA,WAAW,CAAC3C,KAAZ,GAAoB,IAApB;AACD;;AAED;;AACF,aAAK,WAAL;AACE,gBAAMxB,CAAC,GACL,OAAOqB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB1B,CAA9B,KAAoC,QAApC,GACI0F,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB1B,CAAxB,CADd,GAEIqB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB1B,CAAvB,IAA4B,CAHlC;AAIA,gBAAMC,CAAC,GACL,OAAOoB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBzB,CAA9B,KAAoC,QAApC,GACIyF,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBzB,CAAxB,CADd,GAEIoB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBzB,CAAvB,IAA4B,CAHlC;AAIA,gBAAMb,MAAM,GACV,OAAOiC,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBtC,MAA9B,KAAyC,QAAzC,GACIsG,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBtC,MAAxB,CADd,GAEIiC,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBtC,MAAvB,IAAiC,CAHvC;AAIA,gBAAMZ,KAAK,GACT,OAAO6C,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBlD,KAA9B,KAAwC,QAAxC,GACIkH,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBlD,KAAxB,CADd,GAEI6C,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBlD,KAAvB,IAAgC,CAHtC;;AAKA,cAAI8G,MAAM,IAAItF,CAAC,GAAGkB,SAAd,IAA2BoE,MAAM,IAAItF,CAAC,GAAGkB,SAA7C,EAAwD;AACtD,gBAAIqE,MAAM,IAAItF,CAAC,GAAGiB,SAAd,IAA2BqE,MAAM,IAAItF,CAAC,GAAGiB,SAA7C,EAAwD;AACtDsE,cAAAA,GAAG,CAACG,IAAJ,GAAW,UAAX;AACD,aAFD,MAEO,IACLJ,MAAM,IAAItF,CAAC,GAAGb,MAAJ,GAAa8B,SAAvB,IACAqE,MAAM,IAAItF,CAAC,GAAGb,MAAJ,GAAa8B,SAFlB,EAGL;AACAsE,cAAAA,GAAG,CAACG,IAAJ,GAAW,aAAX;AACD;AACF,WATD,MASO,IACLL,MAAM,IAAItF,CAAC,GAAGxB,KAAJ,GAAY0C,SAAtB,IACAoE,MAAM,IAAItF,CAAC,GAAGxB,KAAJ,GAAY0C,SAFjB,EAGL;AACA,gBAAIqE,MAAM,IAAItF,CAAC,GAAGiB,SAAd,IAA2BqE,MAAM,IAAItF,CAAC,GAAGiB,SAA7C,EAAwD;AACtDsE,cAAAA,GAAG,CAACG,IAAJ,GAAW,WAAX;AACD,aAFD,MAEO,IACLJ,MAAM,IAAItF,CAAC,GAAGb,MAAJ,GAAa8B,SAAvB,IACAqE,MAAM,IAAItF,CAAC,GAAGb,MAAJ,GAAa8B,SAFlB,EAGL;AACAsE,cAAAA,GAAG,CAACG,IAAJ,GAAW,cAAX;AACD;AACF,WAZM,MAYA,IACL,CAAEnH,KAAK,GAAG,CAAR,IAAa8G,MAAM,GAAGtF,CAAtB,IAA2BsF,MAAM,GAAGtF,CAAC,GAAGxB,KAAzC,IACEA,KAAK,GAAG,CAAR,IAAa8G,MAAM,GAAGtF,CAAtB,IAA2BsF,MAAM,GAAGtF,CAAC,GAAGxB,KAD3C,MAEEY,MAAM,GAAG,CAAT,IAAcmG,MAAM,GAAGtF,CAAvB,IAA4BsF,MAAM,GAAGtF,CAAC,GAAGb,MAA1C,IACEA,MAAM,GAAG,CAAT,IAAcmG,MAAM,GAAGtF,CAAvB,IAA4BsF,MAAM,GAAGtF,CAAC,GAAGb,MAH5C,CADK,EAKL;AACAoG,YAAAA,GAAG,CAACG,IAAJ,GAAW,QAAX;AACD,WAPM,MAOA;AACLH,YAAAA,GAAG,CAACG,IAAJ,GAAW,KAAX;AACAxB,YAAAA,WAAW,CAAC3C,KAAZ,GAAoB,IAApB;AACD;;AAED;;AACF,aAAK,YAAL;AACA,aAAK,YAAL;AACE,gBAAM5B,EAAE,GACN,OAAOyB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB9B,EAA9B,KAAqC,QAArC,GACI8F,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB9B,EAAxB,CADd,GAEIyB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB9B,EAAvB,IAA6B,CAHnC;AAIA,gBAAME,EAAE,GACN,OAAOuB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB5B,EAA9B,KAAqC,QAArC,GACI4F,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB5B,EAAxB,CADd,GAEIuB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB5B,EAAvB,IAA6B,CAHnC;AAIA,gBAAMD,EAAE,GACN,OAAOwB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB7B,EAA9B,KAAqC,QAArC,GACI6F,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB7B,EAAxB,CADd,GAEIwB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB7B,EAAvB,IAA6B,CAHnC;AAIA,gBAAME,EAAE,GACN,OAAOsB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB3B,EAA9B,KAAqC,QAArC,GACI2F,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB3B,EAAxB,CADd,GAEIsB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB3B,EAAvB,IAA6B,CAHnC;;AAKA,cACEuF,MAAM,IAAI1F,EAAE,GAAGsB,SAAf,IACAoE,MAAM,IAAI1F,EAAE,GAAGsB,SADf,IAEAqE,MAAM,IAAIzF,EAAE,GAAGoB,SAFf,IAGAqE,MAAM,IAAIzF,EAAE,GAAGoB,SAJjB,EAKE;AACAsE,YAAAA,GAAG,CAACG,IAAJ,GAAW,KAAX;AACD,WAPD,MAOO,IACLL,MAAM,IAAIzF,EAAE,GAAGqB,SAAf,IACAoE,MAAM,IAAIzF,EAAE,GAAGqB,SADf,IAEAqE,MAAM,GAAGrE,SAAT,IAAsBnB,EAAE,GAAGmB,SAF3B,IAGAqE,MAAM,GAAGrE,SAAT,IAAsBnB,EAAE,GAAGmB,SAJtB,EAKL;AACAsE,YAAAA,GAAG,CAACG,IAAJ,GAAW,QAAX;AACD,WAPM,MAOA,IACLlG,SAAS,CAAC;AAAEO,YAAAA,CAAC,EAAEsF,MAAL;AAAarF,YAAAA,CAAC,EAAEsF;AAAhB,WAAD,EAA2B;AAAE3F,YAAAA,EAAF;AAAMC,YAAAA,EAAN;AAAUC,YAAAA,EAAV;AAAcC,YAAAA;AAAd,WAA3B,CAAT,IACEmB,SADF,KAEEoE,MAAM,GAAG1F,EAAT,IAAe0F,MAAM,GAAGzF,EAAzB,IACEyF,MAAM,GAAG1F,EAAT,IAAe0F,MAAM,GAAGzF,EAH3B,MAIE0F,MAAM,GAAGzF,EAAT,IAAeyF,MAAM,GAAGxF,EAAzB,IAAiCwF,MAAM,GAAGzF,EAAT,IAAeyF,MAAM,GAAGxF,EAJ1D,CADK,EAML;AACAyF,YAAAA,GAAG,CAACG,IAAJ,GAAW,QAAX;AACD,WARM,MAQA;AACLH,YAAAA,GAAG,CAACG,IAAJ,GAAW,KAAX;AACAxB,YAAAA,WAAW,CAAC3C,KAAZ,GAAoB,IAApB;AACD;;AAED;;AACF,aAAK,MAAL;AACE,gBAAMoE,KAAK,GACT,OAAOvE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB1B,CAA9B,KAAoC,QAApC,GACI0F,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB1B,CAAxB,CADd,GAEIqB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB1B,CAAvB,IAA4B,CAHlC;AAIA,gBAAM6F,KAAK,GACT,OAAOxE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBzB,CAA9B,KAAoC,QAApC,GACIyF,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBzB,CAAxB,CADd,GAEIoB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBzB,CAAvB,IAA4B,CAHlC;AAIA,gBAAM6F,SAAS,GACb,OAAOzE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBlD,KAA9B,KAAwC,QAAxC,GACIkH,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBlD,KAAxB,CADd,GAEI6C,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBlD,KAAvB,IAAgC,CAHtC;AAIA,gBAAMuH,UAAU,GACd,OAAO1E,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBtC,MAA9B,KAAyC,QAAzC,GACIsG,UAAU,CAACrE,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBtC,MAAxB,CADd,GAEIiC,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBtC,MAAvB,IAAiC,CAHvC;;AAKA,cACEkG,MAAM,IAAIM,KAAK,GAAG1E,SAAlB,IACAoE,MAAM,IAAIM,KAAK,GAAG1E,SADlB,IAEAqE,MAAM,IAAIM,KAAK,GAAGE,UAAU,GAAG,CAArB,GAAyB7E,SAFnC,IAGAqE,MAAM,IAAIM,KAAK,GAAGE,UAAU,GAAG,CAArB,GAAyB7E,SAJrC,EAKE;AACAsE,YAAAA,GAAG,CAACG,IAAJ,GAAW,MAAX;AACD,WAPD,MAOO,IACLL,MAAM,IAAIM,KAAK,GAAGE,SAAR,GAAoB5E,SAA9B,IACAoE,MAAM,IAAIM,KAAK,GAAGE,SAAR,GAAoB5E,SAD9B,IAEAqE,MAAM,IAAIM,KAAK,GAAGE,UAAU,GAAG,CAArB,GAAyB7E,SAFnC,IAGAqE,MAAM,IAAIM,KAAK,GAAGE,UAAU,GAAG,CAArB,GAAyB7E,SAJ9B,EAKL;AACAsE,YAAAA,GAAG,CAACG,IAAJ,GAAW,OAAX;AACD,WAPM,MAOA,IACL,CAAEG,SAAS,GAAG,CAAZ,IACAR,MAAM,GAAGM,KADT,IAEAN,MAAM,GAAGM,KAAK,GAAGE,SAFlB,IAGEA,SAAS,GAAG,CAAZ,IACCR,MAAM,GAAGM,KADV,IAECN,MAAM,GAAGM,KAAK,GAAGE,SALrB,MAMEC,UAAU,GAAG,CAAb,IACAR,MAAM,GAAGM,KADT,IAEAN,MAAM,GAAGM,KAAK,GAAGE,UAFlB,IAGEA,UAAU,GAAG,CAAb,IACCR,MAAM,GAAGM,KADV,IAECN,MAAM,GAAGM,KAAK,GAAGE,UAXrB,CADK,EAaL;AACAP,YAAAA,GAAG,CAACG,IAAJ,GAAW,QAAX;AACD,WAfM,MAeA;AACLH,YAAAA,GAAG,CAACG,IAAJ,GAAW,KAAX;AACAxB,YAAAA,WAAW,CAAC3C,KAAZ,GAAoB,IAApB;AACD;;AAED;;AACF,aAAK,KAAL;AACE,cACEH,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBsE,IAAvB,CACGC,CAAD,IACEX,MAAM,IAAIW,CAAC,CAACjG,CAAF,GAAMkB,SAAhB,IACAoE,MAAM,IAAIW,CAAC,CAACjG,CAAF,GAAMkB,SADhB,IAEAqE,MAAM,IAAIU,CAAC,CAAChG,CAAF,GAAMiB,SAFhB,IAGAqE,MAAM,IAAIU,CAAC,CAAChG,CAAF,GAAMiB,SALpB,CADF,EAQE;AACAsE,YAAAA,GAAG,CAACG,IAAJ,GAAW,QAAX;AACD,WAVD,MAUO;AACLH,YAAAA,GAAG,CAACG,IAAJ,GAAW,KAAX;AACAxB,YAAAA,WAAW,CAAC3C,KAAZ,GAAoB,IAApB;AACD;;AACD;;AACF;AACEgE,UAAAA,GAAG,CAACG,IAAJ,GAAW,KAAX;AACAxB,UAAAA,WAAW,CAAC3C,KAAZ,GAAoB,IAApB;AACA;AAvOJ;AAyOD,KAnPH;AAoPE0E,IAAAA,QAAQ,EAAE,CACR;AAAElG,MAAAA,CAAC,EAAEmG,QAAL;AAAelG,MAAAA,CAAC,EAAEmG,QAAlB;AAA4BC,MAAAA,YAA5B;AAA0CC,MAAAA;AAA1C,KADQ,EAERd,GAFQ,KAGL;AAAA;;AACH,YAAM;AAAEF,QAAAA,MAAF;AAAUC,QAAAA,MAAV;AAAkBI,QAAAA,IAAlB;AAAwBF,QAAAA;AAAxB,UAAyCD,GAA/C;;AACA,UAAIG,IAAI,KAAK,KAAT,IAAkBF,YAAY,KAAK,KAAvC,EAA8C;AAC5CD,QAAAA,GAAG,CAACC,YAAJ,GAAmB,IAAnB;;AACA,YAAIrE,IAAI,CAACI,KAAL,KAAe,MAAnB,EAA2B;AACzBzE,UAAAA,OAAO,CAACmH,UAAD,CAAP,CAAoB,EAApB;AACD;;AACD/C,QAAAA,WAAW,CACTC,IADS,EAETC,WAFS,EAGTC,WAHS,EAIT;AAAEtB,UAAAA,CAAC,EAAEsF,MAAL;AAAarF,UAAAA,CAAC,EAAEsF;AAAhB,SAJS,EAKT;AAAEvD,UAAAA,cAAF;AAAkBD,UAAAA,WAAlB;AAA+BvC,UAAAA;AAA/B,SALS,CAAX;AAOA+D,QAAAA,iBAAiB,IAAIxG,OAAO,CAACwG,iBAAD,CAAP,CAA2B,IAA3B,CAArB;AACAN,QAAAA,cAAc,IAAIlG,OAAO,CAACkG,cAAD,CAAP,CAAwB,IAAxB,CAAlB;AACD;;AACD,qCAAQ5B,WAAW,CAACG,KAApB,wDAAQ,oBAAmBC,IAA3B;AACE,aAAK,KAAL;AACE,cACE,uBAAA0C,WAAW,CAAC3C,KAAZ,0EAAmBC,IAAnB,MAA4BJ,WAAW,CAACG,KAAZ,CAAkBC,IAA9C,IACAkE,IAAI,KAAK,QAFX,EAGE;AACAtE,YAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,cAAAA,IAAI,EAAE,KADY;AAElBM,cAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,cAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,cAAAA,IAAI,EAAEyC,WAAW,CAAC3C,KAAZ,CAAkBE,IAAlB,CAAuB6E,GAAvB,CAA4BN,CAAD,KAAQ;AACvCjG,gBAAAA,CAAC,EAAEiG,CAAC,CAACjG,CAAF,GAAMqG,YAD8B;AAEvCpG,gBAAAA,CAAC,EAAEgG,CAAC,CAAChG,CAAF,GAAMqG;AAF8B,eAAR,CAA3B;AAJY,aAApB;AASD,WAbD,MAaO;AACLjF,YAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,cAAAA,IAAI,EAAE,KADY;AAElBM,cAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,cAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,cAAAA,IAAI,EAAEL,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBa,MAAvB,CAA8B;AAClCvC,gBAAAA,CAAC,EAAEmG,QAD+B;AAElClG,gBAAAA,CAAC,EAAEmG;AAF+B,eAA9B;AAJY,aAApB;AASD;;AACD;;AACF,aAAK,SAAL;AACE,cAAI,wBAAAjC,WAAW,CAAC3C,KAAZ,4EAAmBC,IAAnB,MAA4BJ,WAAW,CAACG,KAAZ,CAAkBC,IAAlD,EAAwD;AAAA;;AACtD,kBAAMI,EAAE,GACN,OAAOsC,WAAW,CAAC3C,KAAZ,CAAkBE,IAAlB,CAAuBG,EAA9B,KAAqC,QAArC,GACI6D,UAAU,wBAACvB,WAAW,CAAC3C,KAAb,wDAAC,oBAAmBE,IAAnB,CAAwBG,EAAzB,CADd,GAEIsC,WAAW,CAAC3C,KAAZ,CAAkBE,IAAlB,CAAuBG,EAAvB,IAA6B,CAHnC;AAKA,kBAAMC,EAAE,GACN,OAAOqC,WAAW,CAAC3C,KAAZ,CAAkBE,IAAlB,CAAuBI,EAA9B,KAAqC,QAArC,GACI4D,UAAU,CAACvB,WAAW,CAAC3C,KAAZ,CAAkBE,IAAlB,CAAuBI,EAAxB,CADd,GAEIqC,WAAW,CAAC3C,KAAZ,CAAkBE,IAAlB,CAAuBI,EAAvB,IAA6B,CAHnC;AAKA,kBAAMH,EAAE,GACN,OAAOwC,WAAW,CAAC3C,KAAZ,CAAkBE,IAAlB,CAAuBC,EAA9B,KAAqC,QAArC,GACI+D,UAAU,CAACvB,WAAW,CAAC3C,KAAZ,CAAkBE,IAAlB,CAAuBC,EAAxB,CADd,GAEIwC,WAAW,CAAC3C,KAAZ,CAAkBE,IAAlB,CAAuBC,EAAvB,IAA6B,CAHnC;AAKA,kBAAMC,EAAE,GACN,OAAOuC,WAAW,CAAC3C,KAAZ,CAAkBE,IAAlB,CAAuBE,EAA9B,KAAqC,QAArC,GACI8D,UAAU,CAACvB,WAAW,CAAC3C,KAAZ,CAAkBE,IAAlB,CAAuBE,EAAxB,CADd,GAEIuC,WAAW,CAAC3C,KAAZ,CAAkBE,IAAlB,CAAuBE,EAAvB,IAA6B,CAHnC;;AAKA,oBAAQ+D,IAAR;AACE,mBAAK,KAAL;AACEtE,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,kBAAAA,IAAI,EAAE;AACJC,oBAAAA,EAAE,EAAEA,EADA;AAEJC,oBAAAA,EAAE,EAAEA,EAAE,GAAG0E,YAFL;AAGJzE,oBAAAA,EAAE,EAAEA,EAHA;AAIJC,oBAAAA,EAAE,EAAEA,EAAE,GAAGwE;AAJL;AAJY,iBAApB;AAWA;;AACF,mBAAK,QAAL;AACEjF,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,kBAAAA,IAAI,EAAE;AACJC,oBAAAA,EAAE,EAAEA,EADA;AAEJC,oBAAAA,EAAE,EAAEA,EAAE,GAAG0E,YAFL;AAGJzE,oBAAAA,EAAE,EAAEA,EAHA;AAIJC,oBAAAA,EAAE,EAAEA,EAAE,GAAGwE;AAJL;AAJY,iBAApB;AAWA;;AACF,mBAAK,MAAL;AACEjF,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,kBAAAA,IAAI,EAAE;AACJC,oBAAAA,EAAE,EAAEA,EAAE,GAAG0E,YADL;AAEJzE,oBAAAA,EAAE,EAAEA,EAFA;AAGJC,oBAAAA,EAAE,EAAEA,EAAE,GAAGwE,YAHL;AAIJvE,oBAAAA,EAAE,EAAEA;AAJA;AAJY,iBAApB;AAWA;;AACF,mBAAK,OAAL;AACET,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,kBAAAA,IAAI,EAAE;AACJC,oBAAAA,EAAE,EAAEA,EAAE,GAAG0E,YADL;AAEJzE,oBAAAA,EAAE,EAAEA,EAFA;AAGJC,oBAAAA,EAAE,EAAEA,EAAE,GAAGwE,YAHL;AAIJvE,oBAAAA,EAAE,EAAEA;AAJA;AAJY,iBAApB;AAWA;;AACF,mBAAK,QAAL;AACET,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,kBAAAA,IAAI,EAAE;AACJC,oBAAAA,EAAE,EAAEA,EAAE,GAAG0E,YADL;AAEJzE,oBAAAA,EAAE,EAAEA,EAAE,GAAG0E,YAFL;AAGJzE,oBAAAA,EAAE,EAAEA,EAHA;AAIJC,oBAAAA,EAAE,EAAEA;AAJA;AAJY,iBAApB;AAWA;AAjEJ;AAmED,WAxFD,MAwFO;AACLT,YAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,cAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,cAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,cAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,cAAAA,IAAI,EAAE;AACJC,gBAAAA,EAAE,EAAE2D,MAAM,GAAGe,YADT;AAEJzE,gBAAAA,EAAE,EAAE2D,MAAM,GAAGe,YAFT;AAGJzE,gBAAAA,EAAE,EAAEwE,YAHA;AAIJvE,gBAAAA,EAAE,EAAEwE;AAJA;AAJY,aAApB;AAWD;;AAED;;AACF,aAAK,WAAL;AACE,cAAI,wBAAAnC,WAAW,CAAC3C,KAAZ,4EAAmBC,IAAnB,MAA4BJ,WAAW,CAACG,KAAZ,CAAkBC,IAAlD,EAAwD;AAAA;;AACtD,kBAAMrC,MAAM,GACV,+BAAO+E,WAAW,CAAC3C,KAAnB,wDAAO,oBAAmBE,IAAnB,CAAwBtC,MAA/B,MAA0C,QAA1C,GACIsG,UAAU,wBAACvB,WAAW,CAAC3C,KAAb,wDAAC,oBAAmBE,IAAnB,CAAwBtC,MAAzB,CADd,GAEI,wBAAA+E,WAAW,CAAC3C,KAAZ,4EAAmBE,IAAnB,CAAwBtC,MAAxB,KAAkC,CAHxC;AAKA,kBAAMZ,KAAK,GACT,+BAAO2F,WAAW,CAAC3C,KAAnB,wDAAO,oBAAmBE,IAAnB,CAAwBlD,KAA/B,MAAyC,QAAzC,GACIkH,UAAU,wBAACvB,WAAW,CAAC3C,KAAb,wDAAC,oBAAmBE,IAAnB,CAAwBlD,KAAzB,CADd,GAEI,yBAAA2F,WAAW,CAAC3C,KAAZ,8EAAmBE,IAAnB,CAAwBlD,KAAxB,KAAiC,CAHvC;AAKA,kBAAMwB,CAAC,GACL,gCAAOmE,WAAW,CAAC3C,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwB1B,CAA/B,MAAqC,QAArC,GACI0F,UAAU,yBAACvB,WAAW,CAAC3C,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwB1B,CAAzB,CADd,GAEI,yBAAAmE,WAAW,CAAC3C,KAAZ,8EAAmBE,IAAnB,CAAwB1B,CAAxB,KAA6B,CAHnC;AAKA,kBAAMC,CAAC,GACL,gCAAOkE,WAAW,CAAC3C,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwBzB,CAA/B,MAAqC,QAArC,GACIyF,UAAU,yBAACvB,WAAW,CAAC3C,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwBzB,CAAzB,CADd,GAEI,yBAAAkE,WAAW,CAAC3C,KAAZ,8EAAmBE,IAAnB,CAAwBzB,CAAxB,KAA6B,CAHnC;;AAKA,oBAAQ0F,IAAR;AACE,mBAAK,UAAL;AACEtE,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAE,WADY;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,kBAAAA,IAAI,EAAE;AACJ1B,oBAAAA,CAAC,EAAEsF,MAAM,GAAGe,YADR;AAEJpG,oBAAAA,CAAC,EAAEsF,MAAM,GAAGe,YAFR;AAGJ9H,oBAAAA,KAAK,EAAEA,KAAK,GAAG6H,YAHX;AAIJjH,oBAAAA,MAAM,EAAEA,MAAM,GAAGkH;AAJb;AAJY,iBAApB;AAWA;;AACF,mBAAK,WAAL;AACEjF,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAE,WADY;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,kBAAAA,IAAI,EAAE;AACJ1B,oBAAAA,CAAC,EAAEA,CADC;AAEJC,oBAAAA,CAAC,EAAEsF,MAAM,GAAGe,YAFR;AAGJ9H,oBAAAA,KAAK,EAAEA,KAAK,GAAG6H,YAHX;AAIJjH,oBAAAA,MAAM,EAAEA,MAAM,GAAGkH;AAJb;AAJY,iBAApB;AAWA;;AACF,mBAAK,aAAL;AACEjF,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAE,WADY;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,kBAAAA,IAAI,EAAE;AACJ1B,oBAAAA,CAAC,EAAEsF,MAAM,GAAGe,YADR;AAEJpG,oBAAAA,CAAC,EAAEA,CAFC;AAGJzB,oBAAAA,KAAK,EAAEA,KAAK,GAAG6H,YAHX;AAIJjH,oBAAAA,MAAM,EAAEA,MAAM,GAAGkH;AAJb;AAJY,iBAApB;AAWA;;AACF,mBAAK,cAAL;AACEjF,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAE,WADY;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,kBAAAA,IAAI,EAAE;AACJ1B,oBAAAA,CAAC,EAAEA,CADC;AAEJC,oBAAAA,CAAC,EAAEA,CAFC;AAGJzB,oBAAAA,KAAK,EAAEA,KAAK,GAAG6H,YAHX;AAIJjH,oBAAAA,MAAM,EAAEA,MAAM,GAAGkH;AAJb;AAJY,iBAApB;AAWA;;AACF,mBAAK,QAAL;AACEjF,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAE,WADY;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,kBAAAA,IAAI,EAAE;AACJ1B,oBAAAA,CAAC,EAAEA,CAAC,GAAGqG,YADH;AAEJpG,oBAAAA,CAAC,EAAEA,CAAC,GAAGqG,YAFH;AAGJ9H,oBAAAA,KAAK,EAAEA,KAHH;AAIJY,oBAAAA,MAAM,EAAEA;AAJJ;AAJY,iBAApB;AAWA;AAjEJ;AAmED,WAxFD,MAwFO;AACLiC,YAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,cAAAA,IAAI,EAAE,WADY;AAElBM,cAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,cAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,cAAAA,IAAI,EAAE;AACJ1B,gBAAAA,CAAC,EAAEqB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB1B,CADtB;AAEJC,gBAAAA,CAAC,EAAEoB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBzB,CAFtB;AAGJzB,gBAAAA,KAAK,EAAE6H,YAHH;AAIJjH,gBAAAA,MAAM,EAAEkH;AAJJ;AAJY,aAApB;AAWD;;AACD;;AACF,aAAK,YAAL;AACA,aAAK,YAAL;AACE,cAAI,yBAAAnC,WAAW,CAAC3C,KAAZ,8EAAmBC,IAAnB,MAA4BJ,WAAW,CAACG,KAAZ,CAAkBC,IAAlD,EAAwD;AAAA;;AACtD,kBAAM7B,EAAE,GACN,gCAAOuE,WAAW,CAAC3C,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwB9B,EAA/B,MAAsC,QAAtC,GACI8F,UAAU,yBAACvB,WAAW,CAAC3C,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwB9B,EAAzB,CADd,GAEI,yBAAAuE,WAAW,CAAC3C,KAAZ,8EAAmBE,IAAnB,CAAwB9B,EAAxB,KAA8B,CAHpC;AAKA,kBAAME,EAAE,GACN,gCAAOqE,WAAW,CAAC3C,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwB5B,EAA/B,MAAsC,QAAtC,GACI4F,UAAU,yBAACvB,WAAW,CAAC3C,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwB5B,EAAzB,CADd,GAEI,yBAAAqE,WAAW,CAAC3C,KAAZ,8EAAmBE,IAAnB,CAAwB5B,EAAxB,KAA8B,CAHpC;AAKA,kBAAMD,EAAE,GACN,gCAAOsE,WAAW,CAAC3C,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwB7B,EAA/B,MAAsC,QAAtC,GACI6F,UAAU,yBAACvB,WAAW,CAAC3C,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwB7B,EAAzB,CADd,GAEI,yBAAAsE,WAAW,CAAC3C,KAAZ,8EAAmBE,IAAnB,CAAwB7B,EAAxB,KAA8B,CAHpC;AAKA,kBAAME,EAAE,GACN,gCAAOoE,WAAW,CAAC3C,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwB3B,EAA/B,MAAsC,QAAtC,GACI2F,UAAU,yBAACvB,WAAW,CAAC3C,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwB3B,EAAzB,CADd,GAEI,yBAAAoE,WAAW,CAAC3C,KAAZ,8EAAmBE,IAAnB,CAAwB3B,EAAxB,KAA8B,CAHpC;;AAKA,oBAAQ4F,IAAR;AACE,mBAAK,KAAL;AACEtE,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,kBAAAA,IAAI,EAAE;AACJ9B,oBAAAA,EAAE,EAAEA,EAAE,GAAGyG,YADL;AAEJvG,oBAAAA,EAAE,EAAEA,EAAE,GAAGwG,YAFL;AAGJzG,oBAAAA,EAAE,EAAEA,EAHA;AAIJE,oBAAAA,EAAE,EAAEA;AAJA;AAJY,iBAApB;AAWA;;AACF,mBAAK,QAAL;AACEsB,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,kBAAAA,IAAI,EAAE;AACJ9B,oBAAAA,EAAE,EAAEA,EADA;AAEJE,oBAAAA,EAAE,EAAEA,EAFA;AAGJD,oBAAAA,EAAE,EAAEA,EAAE,GAAGwG,YAHL;AAIJtG,oBAAAA,EAAE,EAAEA,EAAE,GAAGuG;AAJL;AAJY,iBAApB;AAWA;;AACF,mBAAK,QAAL;AACEjF,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,kBAAAA,IAAI,EAAE;AACJ9B,oBAAAA,EAAE,EAAEA,EAAE,GAAGyG,YADL;AAEJvG,oBAAAA,EAAE,EAAEA,EAAE,GAAGwG,YAFL;AAGJzG,oBAAAA,EAAE,EAAEA,EAAE,GAAGwG,YAHL;AAIJtG,oBAAAA,EAAE,EAAEA,EAAE,GAAGuG;AAJL;AAJY,iBAApB;AAWA;AAvCJ;AAyCD,WA9DD,MA8DO;AACLjF,YAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,cAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,cAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,cAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,cAAAA,IAAI,EAAE;AACJ9B,gBAAAA,EAAE,EAAE0F,MADA;AAEJxF,gBAAAA,EAAE,EAAEyF,MAFA;AAGJ1F,gBAAAA,EAAE,EAAEyF,MAAM,GAAGe,YAHT;AAIJtG,gBAAAA,EAAE,EAAEwF,MAAM,GAAGe;AAJT;AAJY,aAApB;AAWD;;AACD;;AACF,aAAK,MAAL;AACE,cAAI,yBAAAnC,WAAW,CAAC3C,KAAZ,8EAAmBC,IAAnB,MAA4BJ,WAAW,CAACG,KAAZ,CAAkBC,IAAlD,EAAwD;AAAA;;AACtD,kBAAMmE,KAAK,GACT,gCAAOzB,WAAW,CAAC3C,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwB1B,CAA/B,MAAqC,QAArC,GACI0F,UAAU,yBAACvB,WAAW,CAAC3C,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwB1B,CAAzB,CADd,GAEI,yBAAAmE,WAAW,CAAC3C,KAAZ,8EAAmBE,IAAnB,CAAwB1B,CAAxB,KAA6B,CAHnC;AAIA,kBAAM6F,KAAK,GACT,gCAAO1B,WAAW,CAAC3C,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwBzB,CAA/B,MAAqC,QAArC,GACIyF,UAAU,yBAACvB,WAAW,CAAC3C,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwBzB,CAAzB,CADd,GAEI,yBAAAkE,WAAW,CAAC3C,KAAZ,8EAAmBE,IAAnB,CAAwBzB,CAAxB,KAA6B,CAHnC;AAIA,kBAAM6F,SAAS,GACb,gCAAO3B,WAAW,CAAC3C,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwBlD,KAA/B,MAAyC,QAAzC,GACIkH,UAAU,yBAACvB,WAAW,CAAC3C,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwBlD,KAAzB,CADd,GAEI,yBAAA2F,WAAW,CAAC3C,KAAZ,8EAAmBE,IAAnB,CAAwBlD,KAAxB,KAAiC,CAHvC;AAIA,kBAAMuH,UAAU,GACd,gCAAO5B,WAAW,CAAC3C,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwBtC,MAA/B,MAA0C,QAA1C,GACIsG,UAAU,yBAACvB,WAAW,CAAC3C,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwBtC,MAAzB,CADd,GAEI,yBAAA+E,WAAW,CAAC3C,KAAZ,8EAAmBE,IAAnB,CAAwBtC,MAAxB,KAAkC,CAHxC;;AAKA,oBAAQuG,IAAR;AACE,mBAAK,MAAL;AACEtE,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlByC,kBAAAA,IAAI,EAAEZ,WAAW,CAACG,KAAZ,CAAkBS,IAJN;AAKlBP,kBAAAA,IAAI,EAAE;AACJ1B,oBAAAA,CAAC,EAAE4F,KAAK,GAAGS,YADP;AAEJpG,oBAAAA,CAAC,EAAE4F,KAFC;AAGJrH,oBAAAA,KAAK,EAAEsH,SAAS,GAAGO,YAHf;AAIJjH,oBAAAA,MAAM,EAAE2G;AAJJ;AALY,iBAApB;AAYA;;AACF,mBAAK,OAAL;AACE1E,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlByC,kBAAAA,IAAI,EAAEZ,WAAW,CAACG,KAAZ,CAAkBS,IAJN;AAKlBP,kBAAAA,IAAI,EAAE;AACJ1B,oBAAAA,CAAC,EAAE4F,KADC;AAEJ3F,oBAAAA,CAAC,EAAE4F,KAFC;AAGJrH,oBAAAA,KAAK,EAAEsH,SAAS,GAAGO,YAHf;AAIJjH,oBAAAA,MAAM,EAAE2G;AAJJ;AALY,iBAApB;AAYA;;AACF,mBAAK,QAAL;AACE1E,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,kBAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlByC,kBAAAA,IAAI,EAAEZ,WAAW,CAACG,KAAZ,CAAkBS,IAJN;AAKlBP,kBAAAA,IAAI,EAAE;AACJ1B,oBAAAA,CAAC,EAAE4F,KAAK,GAAGS,YADP;AAEJpG,oBAAAA,CAAC,EAAE4F,KAAK,GAAGS,YAFP;AAGJ9H,oBAAAA,KAAK,EAAEsH,SAHH;AAIJ1G,oBAAAA,MAAM,EAAE2G;AAJJ;AALY,iBAApB;AAYA;AA1CJ;AA4CD,WA9DD,MA8DO;AACL1E,YAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,cAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,cAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,cAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlByC,cAAAA,IAAI,EAAEZ,WAAW,CAACG,KAAZ,CAAkBS,IAJN;AAKlBP,cAAAA,IAAI,EAAE;AACJ1B,gBAAAA,CAAC,EAAEsF,MAAM,GAAGe,YADR;AAEJpG,gBAAAA,CAAC,EAAEsF,MAAM,GAAGe,YAFR;AAGJ9H,gBAAAA,KAAK,EAAE6C,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBlD,KAH1B;AAIJY,gBAAAA,MAAM,EAAEiC,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBtC;AAJ3B;AALY,aAApB;AAYD;;AApYL;AAsYD,KA9oBH;AA+oBEoH,IAAAA,KAAK,EAAGC,MAAD,IAAY;AAAA;;AACjB3B,MAAAA,WAAW,CAACtD,KAAZ,GAAoBpE,UAAU,CAAC,CAAD,CAA9B;;AAEA,UAAI,wBAAAiE,WAAW,CAACG,KAAZ,4EAAmBC,IAAnB,MAA4B,MAAhC,EAAwC;AAAA;;AACtC1E,QAAAA,OAAO,CAACiI,SAAD,CAAP;AAEA3D,QAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,UAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,UAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBvC,UAAAA,KAAK,EAAE6B,WAAW,CAACG,KAAZ,CAAkBhC,KAHP;AAIlBkC,UAAAA,IAAI,EAAEL,WAAW,CAACG,KAAZ,CAAkBE,IAJN;AAKlBO,UAAAA,IAAI,EACFZ,WAAW,CAACG,KAAZ,CAAkBS,IAAlB,KAA2BhB,YAA3B,4BACII,WAAW,CAACG,KAAZ,CAAkBS,IADtB,yEAC8B,EAD9B,GAEI;AARY,SAApB;AAUD;;AAEDlF,MAAAA,OAAO,CAACuH,eAAD,CAAP,CAAyBjD,WAAW,CAACG,KAArC;AACD;AAlqBH,GAJ8C,EAwqB9C,EAxqB8C,CAAhD;AA2qBA,QAAMkF,cAAc,GAAGxJ,gBAAgB,CAAC,MAAM;AAC5C,WAAO;AACLyJ,MAAAA,SAAS,EAAE,CAAC;AAAEC,QAAAA,UAAU,EAAE9B,WAAW,CAACtD;AAA1B,OAAD;AADN,KAAP;AAGD,GAJsC,CAAvC;AAMAvF,EAAAA,SAAS,CAAC,MAAM;AACd,UAAM4K,UAAU,GAAGpK,QAAQ,CAACqK,WAAT,CAAqB,iBAArB,EAAwC,MAAM;AAC/D/B,MAAAA,aAAa,CAACvD,KAAd,GAAsB,KAAtB;AACD,KAFkB,CAAnB;AAIA,UAAMuF,UAAU,GAAGtK,QAAQ,CAACqK,WAAT,CAAqB,iBAArB,EAAyCE,KAAD,IAAW;AACpE;AACA,UAAIA,KAAK,CAACC,cAAN,CAAqB7H,MAArB,GAA8B,GAAlC,EAAuC;AACrC2F,QAAAA,aAAa,CAACvD,KAAd,GAAsB,IAAtB;AACD;AACF,KALkB,CAAnB,CALc,CAYd;;AACA,WAAO,MAAM;AACXuF,MAAAA,UAAU,CAACG,MAAX;AACAL,MAAAA,UAAU,CAACK,MAAX;AACD,KAHD;AAID,GAjBQ,EAiBN,CAACnC,aAAD,CAjBM,CAAT;AAmBA,QAAME,YAAY,GAAG7I,MAAM,CAAY,IAAZ,CAA3B;AAEA,QAAM+K,uBAAuB,GAAGjK,gBAAgB,CAAC,MAAM;AACrD,WAAO;AACLkC,MAAAA,MAAM,EAAE,MADH;AAELlB,MAAAA,eAAe,EAAE,OAFZ;AAGLkJ,MAAAA,OAAO,EAAE,MAHJ;AAILC,MAAAA,OAAO,EAAEtC,aAAa,CAACvD,KAAd,GAAsBpE,UAAU,CAAC,CAAD,CAAhC,GAAsCA,UAAU,CAAC,CAAD;AAJpD,KAAP;AAMD,GAP+C,EAO7C,CAAC2H,aAAa,CAACvD,KAAf,CAP6C,CAAhD;AASA,QAAM8F,cAAc,GAAGpK,gBAAgB,CAAC,MAAM;AAC5C,WAAO;AACLkK,MAAAA,OAAO,EAAErC,aAAa,CAACvD,KAAd,GAAsB,MAAtB,GAA+B,MADnC;AAEL6F,MAAAA,OAAO,EAAEtC,aAAa,CAACvD,KAAd,GAAsBpE,UAAU,CAAC,CAAD,CAAhC,GAAsCA,UAAU,CAAC,CAAD;AAFpD,KAAP;AAID,GALsC,EAKpC,CAAC2H,aAAa,CAACvD,KAAf,CALoC,CAAvC;AAOAvE,EAAAA,mBAAmB,CACjB,MAAM;AACJ,WAAO;AACL8E,MAAAA,WAAW,EAAEA,WAAW,CAACP,KADpB;AAELhC,MAAAA,KAAK,EAAEA,KAAK,CAACgC;AAFR,KAAP;AAID,GANgB,EAOjB,CAAC;AACCO,IAAAA,WAAW,EAAEwF,EADd;AAEC/H,IAAAA,KAAK,EAAEgI;AAFR,GAAD,KAMM;AAAA;;AACJ,mCAAQnG,WAAW,CAACG,KAApB,wDAAQ,oBAAmBC,IAA3B;AACE,WAAK,YAAL;AACEJ,QAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,UAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBC,UAAAA,IAAI,EAAEL,WAAW,CAACG,KAAZ,CAAkBE,IAFN;AAGlBK,UAAAA,WAAW,EAAEwF,EAHK;AAIlB/H,UAAAA,KAAK,EAAEgI;AAJW,SAApB;AAMA;;AACF,WAAK,YAAL;AACEnG,QAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,UAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBC,UAAAA,IAAI,EAAEL,WAAW,CAACG,KAAZ,CAAkBE,IAFN;AAGlBK,UAAAA,WAAW,EAAEwF,EAHK;AAIlB/H,UAAAA,KAAK,EAAEgI;AAJW,SAApB;AAMA;;AACF,WAAK,SAAL;AACEnG,QAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,UAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBC,UAAAA,IAAI,EAAEL,WAAW,CAACG,KAAZ,CAAkBE,IAFN;AAGlBK,UAAAA,WAAW,EAAEwF,EAHK;AAIlB/H,UAAAA,KAAK,EAAEgI;AAJW,SAApB;AAMA;;AACF,WAAK,WAAL;AACEnG,QAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,UAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBC,UAAAA,IAAI,EAAEL,WAAW,CAACG,KAAZ,CAAkBE,IAFN;AAGlBK,UAAAA,WAAW,EAAEwF,EAHK;AAIlB/H,UAAAA,KAAK,EAAEgI;AAJW,SAApB;AAMA;;AAEF,WAAK,KAAL;AACEnG,QAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,UAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBC,UAAAA,IAAI,EAAEL,WAAW,CAACG,KAAZ,CAAkBE,IAFN;AAGlBK,UAAAA,WAAW,EAAEwF,EAHK;AAIlB/H,UAAAA,KAAK,EAAEgI;AAJW,SAApB;AAMA;;AACF,WAAK,MAAL;AACEnG,QAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,UAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBC,UAAAA,IAAI,EAAEL,WAAW,CAACG,KAAZ,CAAkBE,IAFN;AAGlBK,UAAAA,WAAW,EAAEwF,EAHK;AAIlB/H,UAAAA,KAAK,EAAEgI,CAJW;AAKlBvF,UAAAA,IAAI,EAAEZ,WAAW,CAACG,KAAZ,CAAkBS;AALN,SAApB;AAOA;AAlDJ;AAoDD,GAlEgB,EAmEjB,CAACF,WAAW,CAACP,KAAb,EAAoBhC,KAAK,CAACgC,KAA1B,CAnEiB,CAAnB;AAsEA,QAAMiG,WAAW,GAAGzL,WAAW,CAC7B,CAACwG,IAAD,EAAiBkF,KAAjB,KAAmC,MAAM;AACvCnE,IAAAA,iBAAiB,SAAjB,IAAAA,iBAAiB,WAAjB,YAAAA,iBAAiB,CAAG,IAAH,CAAjB;AAEA,UAAMoE,YAAY,GAAGtG,WAAW,CAACG,KAAjC;AAEAO,IAAAA,WAAW,CAACP,KAAZ,GAAoBgB,IAAI,CAACT,WAAzB;AACAvC,IAAAA,KAAK,CAACgC,KAAN,GAAcgB,IAAI,CAAChD,KAAnB;AACA6B,IAAAA,WAAW,CAACG,KAAZ,GAAoBgB,IAApB;AAEA6B,IAAAA,cAAc,CAACqD,KAAD,CAAd;;AAEA,QAAIC,YAAJ,EAAkB;AAChBrG,MAAAA,WAAW,CAACqG,YAAD,CAAX;AACD;;AAED,QAAInF,IAAI,CAACf,IAAL,KAAc,MAAlB,EAA0B;AAAA;;AACxByC,MAAAA,UAAU,eAAC1B,IAAI,CAACP,IAAN,mDAAc,EAAd,CAAV;AACD,KAFD,MAEO;AAAA;;AACL,gCAAAgD,YAAY,CAACL,OAAb,kFAAsBgD,IAAtB;AACD;AACF,GArB4B,EAsB7B,CACErE,iBADF,EAEElC,WAFF,EAGEU,WAHF,EAIEvC,KAJF,EAKE6E,cALF,EAME/C,WANF,CAtB6B,CAA/B;AAgCA,QAAMuG,kBAAkB,GAAG7L,WAAW,CACnCoD,MAAD,IAAoB;AAClB8C,IAAAA,kBAAkB,CAACb,WAAD,EAAcW,cAAd,EAA8B5C,MAA9B,CAAlB;AACD,GAHmC,EAIpC,CAACiC,WAAD,EAAcW,cAAd,CAJoC,CAAtC;AAOA,QAAM8F,cAAc,GAAG9L,WAAW,CAChC,CAAC+L,UAAD,EAAqBC,WAArB,KAA6C;AAC3C,QAAIvE,UAAJ,EAAgB;AACdG,MAAAA,oBAAoB,CAAC;AAAEpF,QAAAA,KAAK,EAAEuJ,UAAT;AAAqB3I,QAAAA,MAAM,EAAE4I;AAA7B,OAAD,CAApB;AAEA,YAAMC,gBAAgB,GACpBpH,IAAI,CAACqH,KAAL,CAAaF,WAAW,GAAGvE,UAAU,CAACjF,KAA1B,GAAmCuJ,UAApC,GAAkD,GAA7D,IACA,GAFF;;AAIA,UAAIE,gBAAgB,GAAGxE,UAAU,CAACrE,MAAlC,EAA0C;AACxC0E,QAAAA,YAAY,CAAC;AACXtF,UAAAA,KAAK,EAAEiF,UAAU,CAACjF,KADP;AAEXY,UAAAA,MAAM,EAAE6I;AAFG,SAAD,CAAZ;AAID,OALD,MAKO;AACLnE,QAAAA,YAAY,CAAC;AACX1E,UAAAA,MAAM,EAAEqE,UAAU,CAACrE,MADR;AAEXZ,UAAAA,KAAK,EACHqC,IAAI,CAACqH,KAAL,CACIH,UAAU,GAAGtE,UAAU,CAACrE,MAAzB,GAAmC4I,WAApC,GAAmD,GADrD,IAEI;AALK,SAAD,CAAZ;AAOD;AACF;AACF,GAxB+B,EAyBhC,CAACvE,UAAD,CAzBgC,CAAlC;AA4BAxH,EAAAA,SAAS,CAAC,MAAM;AACd,QAAIwH,UAAU,IAAIJ,KAAlB,EAAyB;AACvB,UAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B,cAAM8E,KAAK,GAAGxL,KAAK,CAACyL,kBAAN,CAAyB/E,KAAzB,CAAd;AAEAyE,QAAAA,cAAc,CAACK,KAAK,CAAC3J,KAAP,EAAc2J,KAAK,CAAC/I,MAApB,CAAd;AACD,OAJD,MAIO,IAAIiE,KAAK,CAACgF,GAAV,EAAe;AACpB1L,QAAAA,KAAK,CAAC2L,OAAN,CAAcjF,KAAK,CAACgF,GAApB,EAAyB,CAACN,UAAD,EAAaC,WAAb,KAA6B;AACpDF,UAAAA,cAAc,CAACC,UAAD,EAAaC,WAAb,CAAd;AACD,SAFD;AAGD;AACF;AACF,GAZQ,EAYN,CAAC3E,KAAD,EAAQI,UAAR,EAAoBqE,cAApB,CAZM,CAAT;AAcA,sBACE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEnK,MAAM,CAACE;AAApB,kBACE,oBAAC,IAAD;AACE,IAAA,KAAK,EAAEF,MAAM,CAACI,QADhB;AAEE,IAAA,QAAQ,EAAGiJ,KAAD,IAAW;AACnBtD,MAAAA,aAAa,CAAC;AACZtE,QAAAA,MAAM,EAAE4H,KAAK,CAACuB,WAAN,CAAkBC,MAAlB,CAAyBpJ,MADrB;AAEZZ,QAAAA,KAAK,EAAEwI,KAAK,CAACuB,WAAN,CAAkBC,MAAlB,CAAyBhK;AAFpB,OAAD,CAAb;AAID;AAPH,kBASE,oBAAC,iBAAD;AAAmB,IAAA,cAAc,EAAE4G;AAAnC,kBACE,oBAAC,QAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAEvB,SAAS,IAAIJ;AAAnC,kBACE,oBAAC,IAAD;AAAM,IAAA,GAAG,EAAEM;AAAX,KACGV,KAAK,GACJQ,SAAS,IAAIF,iBAAb,gBACE,oBAAC,QAAD;AACE,IAAA,GAAG,EAAEK,QADP;AAEE,IAAA,OAAO,EAAE;AACPyE,MAAAA,MAAM,EAAE,KADD;AAEPC,MAAAA,OAAO,EAAE;AAFF,KAFX;AAME,IAAA,KAAK,EAAE7E;AANT,kBAQE,oBAAC,eAAD;AAAiB,IAAA,MAAM,EAAER,KAAzB;AAAgC,IAAA,KAAK,EAAE1F,MAAM,CAACwB;AAA9C,kBACE,oBAAC,OAAD;AACE,IAAA,WAAW,EAAEkC,WADf;AAEE,IAAA,SAAS,EAAEe,UAAU,CAACE,SAFxB;AAGE,IAAA,WAAW,EAAEmF,WAHf;AAIE,IAAA,kBAAkB,EAAEI;AAJtB,IADF,CARF,CADF,GAkBI,IAnBA,GAoBFpE,UAAU,gBACZ,oBAAC,QAAD;AACE,IAAA,GAAG,EAAEO,QADP;AAEE,IAAA,OAAO,EAAE;AACPyE,MAAAA,MAAM,EAAE,KADD;AAEPC,MAAAA,OAAO,EAAE,CAFF;AAGP,SAAGjF;AAHI,KAFX;AAOE,IAAA,KAAK,EAAEA;AAPT,kBASE,oBAAC,OAAD;AACE,IAAA,WAAW,EAAEpC,WADf;AAEE,IAAA,SAAS,EAAEe,UAAU,CAACE,SAFxB;AAGE,IAAA,WAAW,EAAEmF,WAHf;AAIE,IAAA,kBAAkB,EAAEI;AAJtB,IATF,CADY,GAiBV,IAtCN,CADF,CADF,CATF,eAsDE,oBAAC,QAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAE,CAAClK,MAAM,CAACQ,kBAAR,EAA4BuI,cAA5B;AAAtB,kBACE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE/I,MAAM,CAACkB;AAApB,kBACE,oBAAC,YAAD;AACE,IAAA,QAAQ,EAAE,CADZ;AAEE,IAAA,QAAQ,EAAE,EAFZ;AAGE,IAAA,MAAM,EAAEkD,WAHV;AAIE,IAAA,cAAc,EAAEoD;AAJlB,IADF,CADF,eASE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAExH,MAAM,CAACsB;AAApB,kBACE,oBAAC,WAAD;AACE,IAAA,KAAK,EAAEO,KADT;AAEE,IAAA,cAAc,EAAE8D,cAFlB;AAGE,IAAA,aAAa,EAAE6B;AAHjB,IADF,CATF,CAtDF,CADF,EAyEGvI,QAAQ,CAAC+L,EAAT,KAAgB,KAAhB,gBACC,oBAAC,kBAAD,qBACE,oBAAC,iBAAD;AACE,IAAA,GAAG,EAAE1D,YADP;AAEE,IAAA,KAAK,EAAE,CAACtH,MAAM,CAAC0B,SAAR,EAAmBiI,cAAnB,CAFT;AAGE,IAAA,YAAY,4BAAErC,YAAY,CAACL,OAAf,2DAAE,uBAAsBgE,KAHtC;AAIE,IAAA,YAAY,EAAE1E,UAJhB;AAKE,IAAA,KAAK,EAAED,OALT;AAME,IAAA,WAAW,EAAE;AANf,IADF,CADD,gBAYC,oBAAC,QAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAEkD;AAAtB,kBACE,oBAAC,SAAD;AACE,IAAA,GAAG,EAAElC,YADP;AAEE,IAAA,KAAK,EAAEtH,MAAM,CAAC0B,SAFhB;AAGE,IAAA,YAAY,4BAAE4F,YAAY,CAACL,OAAf,2DAAE,uBAAsBgE,KAHtC;AAIE,IAAA,YAAY,EAAE1E,UAJhB;AAKE,IAAA,KAAK,EAAED,OALT;AAME,IAAA,WAAW,EAAE;AANf,IADF,CArFJ,CADF;AAmGD,CA1lCc,CAAjB;AA6lCA,eAAef,QAAf","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"]}
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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"}