@archireport/react-native-svg-draw 0.3.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/DrawCore/CurrentAnimatedItem.js +5 -9
- package/lib/commonjs/components/DrawCore/CurrentAnimatedItem.js.map +1 -1
- package/lib/commonjs/components/DrawCore/DrawPad.js +2 -1
- package/lib/commonjs/components/DrawCore/DrawPad.js.map +1 -1
- package/lib/commonjs/components/DrawCore/index.js +3 -6
- package/lib/commonjs/components/DrawCore/index.js.map +1 -1
- package/lib/commonjs/components/DrawWithOptions/index.js +21 -2
- package/lib/commonjs/components/DrawWithOptions/index.js.map +1 -1
- package/lib/module/components/DrawCore/CurrentAnimatedItem.js +5 -9
- package/lib/module/components/DrawCore/CurrentAnimatedItem.js.map +1 -1
- package/lib/module/components/DrawCore/DrawPad.js +2 -1
- package/lib/module/components/DrawCore/DrawPad.js.map +1 -1
- package/lib/module/components/DrawCore/index.js +4 -6
- package/lib/module/components/DrawCore/index.js.map +1 -1
- package/lib/module/components/DrawWithOptions/index.js +21 -4
- package/lib/module/components/DrawWithOptions/index.js.map +1 -1
- package/package.json +19 -19
- package/src/components/DrawCore/CurrentAnimatedItem.tsx +5 -9
- package/src/components/DrawCore/DrawPad.tsx +1 -0
- package/src/components/DrawCore/index.tsx +3 -10
- package/src/components/DrawWithOptions/index.tsx +39 -15
- package/src/types.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.tsx"],"names":["React","useCallback","useEffect","useImperativeHandle","useRef","useState","StyleSheet","TextInput","View","KeyboardAvoidingView","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","AnimatedKeyboardAvoidingView","createAnimatedComponent","AnimatedTextInput","DEFAULT_TEXT","THRESHOLD","drawNewItem","mode","currentItem","updateDoneItems","style","value","type","data","cx","cy","rx","ry","strokeWidth","textBaseHeight","text","onTextHeightUpdate","DrawCore","forwardRef","drawingMode","image","linearGradient","onSelectionChange","ref","drawRegion","setDrawRegion","originalImageSize","setOriginalImageSize","imageSize","setImageSize","drawContainer","viewShot","textVal","setTextVal","initialItem","doneItems","setDoneItems","done","previous","concat","drawingContainer","deleteSelectedItem","takeSnapshot","current","capture","addNewItem","panPosition","showTextInput","textFocus","textInputRef","focus","onGestureEvent","onStart","ctx","startX","startY","newlyCreated","parseFloat","zone","xText","yText","widthText","heightText","some","p","onActive","translationX","translationY","map","onEnd","_event","rightPaneStyle","transform","translateX","sudDidHide","addListener","sudDidShow","event","endCoordinates","remove","keyboardAvoidingViewStyle","display","opacity","textInputStyle","onPressItem","item","index","previousItem","copy","splice","blur","onTextHeightChange","calculateSizes","imageWidth","imageHeight","ratioImageHeight","round","infos","resolveAssetSource","uri","getSize","nativeEvent","layout","format","quality","OS","clear"],"mappings":"AAAA,OAAOA,KAAP,IACEC,WADF,EAEEC,SAFF,EAGEC,mBAHF,EAIEC,MAJF,EAKEC,QALF,QAMO,OANP;AAOA,SACEC,UADF,EAEEC,SAFF,EAGEC,IAHF,EAIEC,oBAJF,EAKEC,QALF,EAMEC,eANF,EAOEC,KAPF,EAWEC,QAXF,EAYEC,kBAZF,QAaO,cAbP;AAcA,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,GAAGtB,UAAU,CAACuB,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,SAASiB,SAAT,CACEC,KADF,EAEEC,IAFF,EAGE;AACA;;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;;AAED,MAAMG,4BAA4B,GAChCjE,QAAQ,CAACkE,uBAAT,CAAiCxE,oBAAjC,CADF;AAGA,MAAMyE,iBAAiB,GAAGnE,QAAQ,CAACkE,uBAAT,CAAiC1E,SAAjC,CAA1B;AAEA,MAAM4E,YAAY,GAAG,EAArB;AAEA,MAAMC,SAAS,GAAG,EAAlB;;AAmBA,MAAMC,WAAW,GAAG,CAClBC,IADkB,EAElBC,WAFkB,EAGlBC,eAHkB,EAIlBnD,QAJkB,EAKlBoD,KALkB,KAUf;AACH;;AAEA,MAAIF,WAAW,CAACG,KAAhB,EAAuB;AACrB1E,IAAAA,OAAO,CAACwE,eAAD,CAAP,CAAyBD,WAAW,CAACG,KAArC;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,EAAExD,QAAQ,CAAC4B,CADT;AAEJ6B,UAAAA,EAAE,EAAEzD,QAAQ,CAAC6B,CAFT;AAGJ6B,UAAAA,EAAE,EAAE,CAHA;AAIJC,UAAAA,EAAE,EAAE;AAJA,SAFY;AAQlBC,QAAAA,WAAW,EAAER,KAAK,CAACQ,WAAN,CAAkBP,KARb;AASlBjC,QAAAA,KAAK,EAAEgC,KAAK,CAAChC,KAAN,CAAYiC;AATD,OAApB;AAWA;;AACF,SAAK,WAAL;AACEH,MAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,QAAAA,IAAI,EAAEL,IAAI,CAACI,KADO;AAElBE,QAAAA,IAAI,EAAE;AAAE3B,UAAAA,CAAC,EAAE5B,QAAQ,CAAC4B,CAAd;AAAiBC,UAAAA,CAAC,EAAE7B,QAAQ,CAAC6B,CAA7B;AAAgCzB,UAAAA,KAAK,EAAE,CAAvC;AAA0CY,UAAAA,MAAM,EAAE;AAAlD,SAFY;AAGlB4C,QAAAA,WAAW,EAAER,KAAK,CAACQ,WAAN,CAAkBP,KAHb;AAIlBjC,QAAAA,KAAK,EAAEgC,KAAK,CAAChC,KAAN,CAAYiC;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;AACJ/B,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;AAQlB+B,QAAAA,WAAW,EAAER,KAAK,CAACQ,WAAN,CAAkBP,KARb;AASlBjC,QAAAA,KAAK,EAAEgC,KAAK,CAAChC,KAAN,CAAYiC;AATD,OAApB;AAWA;;AACF,SAAK,MAAL;AACEH,MAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,QAAAA,IAAI,EAAEL,IAAI,CAACI,KADO;AAElBE,QAAAA,IAAI,EAAE;AACJ3B,UAAAA,CAAC,EAAE5B,QAAQ,CAAC4B,CADR;AAEJC,UAAAA,CAAC,EAAE7B,QAAQ,CAAC6B,CAFR;AAGJzB,UAAAA,KAAK,EAAE,GAHH;AAIJY,UAAAA,MAAM,EAAEoC,KAAK,CAACS,cAAN,CAAqBR,KAArB,IAA8B;AAJlC,SAFY;AAQlBO,QAAAA,WAAW,EAAER,KAAK,CAACQ,WAAN,CAAkBP,KARb;AASlBS,QAAAA,IAAI,EAAEhB,YATY;AAUlB1B,QAAAA,KAAK,EAAEgC,KAAK,CAAChC,KAAN,CAAYiC;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;AAIlBjC,QAAAA,KAAK,EAAEgC,KAAK,CAAChC,KAAN,CAAYiC;AAJD,OAApB;AAMA;AAzDJ;AA2DD,CA5ED;;AA8EA,MAAMU,kBAAkB,GAAG,CACzBb,WADyB,EAEzBW,cAFyB,EAGzB7C,MAHyB,KAItB;AACH;;AADG;;AAEH,MAAI,uBAAAkC,WAAW,CAACG,KAAZ,0EAAmBC,IAAnB,MAA4B,MAAhC,EAAwC;AACtCO,IAAAA,cAAc,CAACR,KAAf,GAAuBQ,cAAc,CAACR,KAAf,IAAwBrC,MAA/C;AAEAkC,IAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBE,MAAAA,IAAI,EAAE,EACJ,GAAGL,WAAW,CAACG,KAAZ,CAAkBE,IADjB;AAEJvC,QAAAA,MAAM,EAAEA;AAFJ,OADY;AAKlBsC,MAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IALN;AAMlBM,MAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WANb;AAOlBxC,MAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAPP;AAQlB0C,MAAAA,IAAI,EAAEZ,WAAW,CAACG,KAAZ,CAAkBS;AARN,KAApB;AAUD;AACF,CApBD;;AAsBA,MAAME,QAAQ,gBAAGrG,KAAK,CAACsG,UAAN,CAQf,CAAC;AAAEC,EAAAA,WAAF;AAAeC,EAAAA,KAAf;AAAsBC,EAAAA,cAAtB;AAAsCC,EAAAA;AAAtC,CAAD,EAA4DC,GAA5D,KAAoE;AAAA;;AACpE,QAAMrB,IAAI,GAAGlE,cAAc,CAAe,KAAf,CAA3B;AAEA,QAAM,CAACwF,UAAD,EAAaC,aAAb,IAA8BxG,QAAQ,CAAc,IAAd,CAA5C;AAEA,QAAM,CAACyG,iBAAD,EAAoBC,oBAApB,IAA4C1G,QAAQ,CAAc,IAAd,CAA1D;AAEA,QAAM,CAAC2G,SAAD,EAAYC,YAAZ,IAA4B5G,QAAQ,CAAc,IAAd,CAA1C;AAEA,QAAM6G,aAAa,GAAG9G,MAAM,CAAO,IAAP,CAA5B;AAEA,QAAM+G,QAAQ,GAAG/G,MAAM,CAAW,IAAX,CAAvB;AAEA,QAAM,CAACgH,OAAD,EAAUC,UAAV,IAAwBhH,QAAQ,CAAS,EAAT,CAAtC;AAEA,QAAMkF,WAAW,GAAGnE,cAAc,CAAkB,IAAlB,CAAlC;AAEA,QAAMkG,WAAW,GAAGlG,cAAc,CAAkB,IAAlB,CAAlC;AAEA,QAAM,CAACmG,SAAD,EAAYC,YAAZ,IAA4BnH,QAAQ,CAAa,EAAb,CAA1C;AAEA,QAAM6F,cAAc,GAAG9E,cAAc,CAAgB,IAAhB,CAArC;AAEA,QAAMoE,eAAe,GAAGvF,WAAW,CAAEwH,IAAD,IAAoB;AACtDD,IAAAA,YAAY,CAAEE,QAAD,IAAcA,QAAQ,CAACC,MAAT,CAAgBF,IAAhB,CAAf,CAAZ;AACD,GAFkC,EAEhC,EAFgC,CAAnC;AAIAtH,EAAAA,mBAAmB,CACjBwG,GADiB,EAEjB,OAAO;AACLiB,IAAAA,gBAAgB,EAAEV,aADb;AAELW,IAAAA,kBAAkB,EAAE,MAAM;AACxB,UAAItC,WAAW,CAACG,KAAhB,EAAuB;AACrBH,QAAAA,WAAW,CAACG,KAAZ,GAAoB,IAApB;AACD;;AACDgB,MAAAA,iBAAiB,SAAjB,IAAAA,iBAAiB,WAAjB,YAAAA,iBAAiB,CAAG,KAAH,CAAjB;AACD,KAPI;AAQLoB,IAAAA,YAAY,EAAE,YAAyC;AAAA;;AACrD,kCAAOX,QAAQ,CAACY,OAAhB,+EAAO,kBAAkBC,OAAzB,0DAAO,6CAAP;AACD;AAVI,GAAP,CAFiB,EAcjB,CAACzC,WAAD,EAAcmB,iBAAd,CAdiB,CAAnB;AAiBAxG,EAAAA,SAAS,CAAC,MAAM;AACdoF,IAAAA,IAAI,CAACI,KAAL,GAAaa,WAAb;;AACA,QAAIhB,WAAW,CAACG,KAAhB,EAAuB;AACrBF,MAAAA,eAAe,CAACD,WAAW,CAACG,KAAb,CAAf;AACD;;AACDH,IAAAA,WAAW,CAACG,KAAZ,GAAoB,IAApB;AACAgB,IAAAA,iBAAiB,SAAjB,IAAAA,iBAAiB,WAAjB,YAAAA,iBAAiB,CAAG,KAAH,CAAjB;AACD,GAPQ,EAON,CAACH,WAAD,EAAcjB,IAAd,EAAoBC,WAApB,EAAiCC,eAAjC,EAAkDkB,iBAAlD,CAPM,CAAT;AASA,QAAMuB,UAAU,GAAGjH,OAAO,CAACwE,eAAD,CAA1B;AAEA,QAAMS,WAAW,GAAG7E,cAAc,CAAS,CAAT,CAAlC;AAEA,QAAMqC,KAAK,GAAGrC,cAAc,CAAW,kBAAX,CAA5B;AAEA,QAAM8G,WAAW,GAAG9G,cAAc,CAAC,CAAD,CAAlC;AAEA,QAAM+G,aAAa,GAAG/G,cAAc,CAAC,KAAD,CAApC;AAEA,QAAMgH,SAAS,GAAGnI,WAAW,CAAC,MAAM;AAAA;;AAClC,6BAAAoI,YAAY,CAACN,OAAb,gFAAsBO,KAAtB;AACD,GAF4B,EAE1B,EAF0B,CAA7B;AAIApI,EAAAA,SAAS,CAAC,MAAM;AAAA;;AACd,QAAI,wBAAAqF,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;AAIlBxC,QAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAJP;AAKlB0C,QAAAA,IAAI,EAAEiB;AALY,OAApB;AAOD;AACF,GAVQ,EAUN,CAAC7B,WAAD,EAAc6B,OAAd,CAVM,CAAT;AAYA,QAAMmB,cAAc,GAAGtH,yBAAyB,CAI9C;AACEuH,IAAAA,OAAO,EAAE,CAAC;AAAEvE,MAAAA,CAAF;AAAKC,MAAAA;AAAL,KAAD,EAAWuE,GAAX,KAAmB;AAAA;;AAC1B,YAAMC,MAAM,GAAGzE,CAAf;AACA,YAAM0E,MAAM,GAAGzE,CAAf;AACAuE,MAAAA,GAAG,CAACC,MAAJ,GAAaA,MAAb;AACAD,MAAAA,GAAG,CAACE,MAAJ,GAAaA,MAAb;AACAF,MAAAA,GAAG,CAACG,YAAJ,GAAmB,KAAnB;AAEAV,MAAAA,WAAW,CAACxC,KAAZ,GAAoBrE,UAAU,CAACM,gBAAD,CAA9B;AAEA2F,MAAAA,WAAW,CAAC5B,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,GACIgD,UAAU,CAACtD,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,GACI+C,UAAU,CAACtD,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,GACI8C,UAAU,CAACtD,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,GACI6C,UAAU,CAACtD,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBI,EAAxB,CADd,GAEIT,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBI,EAAvB,IAA6B,CAHnC;;AAKA,cACE0C,MAAM,IAAI7C,EAAE,GAAGT,SAAf,IACAsD,MAAM,IAAI7C,EAAE,GAAGT,SADf,IAEAuD,MAAM,IAAI7C,EAAE,GAAGE,EAAL,GAAUZ,SAFpB,IAGAuD,MAAM,IAAI7C,EAAE,GAAGE,EAAL,GAAUZ,SAJtB,EAKE;AACAqD,YAAAA,GAAG,CAACK,IAAJ,GAAW,KAAX;AACD,WAPD,MAOO,IACLJ,MAAM,IAAI7C,EAAE,GAAGT,SAAf,IACAsD,MAAM,IAAI7C,EAAE,GAAGT,SADf,IAEAuD,MAAM,IAAI7C,EAAE,GAAGE,EAAL,GAAUZ,SAFpB,IAGAuD,MAAM,IAAI7C,EAAE,GAAGE,EAAL,GAAUZ,SAJf,EAKL;AACAqD,YAAAA,GAAG,CAACK,IAAJ,GAAW,QAAX;AACD,WAPM,MAOA,IACLH,MAAM,IAAI7C,EAAE,GAAGV,SAAf,IACAuD,MAAM,IAAI7C,EAAE,GAAGV,SADf,IAEAsD,MAAM,IAAI7C,EAAE,GAAGE,EAAL,GAAUX,SAFpB,IAGAsD,MAAM,IAAI7C,EAAE,GAAGE,EAAL,GAAUX,SAJf,EAKL;AACAqD,YAAAA,GAAG,CAACK,IAAJ,GAAW,MAAX;AACD,WAPM,MAOA,IACLH,MAAM,IAAI7C,EAAE,GAAGV,SAAf,IACAuD,MAAM,IAAI7C,EAAE,GAAGV,SADf,IAEAsD,MAAM,IAAI7C,EAAE,GAAGE,EAAL,GAAUX,SAFpB,IAGAsD,MAAM,IAAI7C,EAAE,GAAGE,EAAL,GAAUX,SAJf,EAKL;AACAqD,YAAAA,GAAG,CAACK,IAAJ,GAAW,OAAX;AACD,WAPM,MAOA,IACL,CAAE/C,EAAE,GAAG,CAAL,IAAU2C,MAAM,GAAG7C,EAAE,GAAGE,EAAxB,IAA8B2C,MAAM,GAAG7C,EAAE,GAAGE,EAA7C,IACEA,EAAE,GAAG,CAAL,IAAU2C,MAAM,GAAG7C,EAAE,GAAGE,EAAxB,IAA8B2C,MAAM,GAAG7C,EAAE,GAAGE,EAD/C,MAEEC,EAAE,GAAG,CAAL,IAAU2C,MAAM,GAAG7C,EAAE,GAAGE,EAAxB,IAA8B2C,MAAM,GAAG7C,EAAE,GAAGE,EAA7C,IACEA,EAAE,GAAG,CAAL,IAAU2C,MAAM,GAAG7C,EAAE,GAAGE,EAAxB,IAA8B2C,MAAM,GAAG7C,EAAE,GAAGE,EAH/C,CADK,EAKL;AACAyC,YAAAA,GAAG,CAACK,IAAJ,GAAW,QAAX;AACD,WAPM,MAOA;AACLL,YAAAA,GAAG,CAACK,IAAJ,GAAW,KAAX;AACAxB,YAAAA,WAAW,CAAC5B,KAAZ,GAAoB,IAApB;AACD;;AAED;;AACF,aAAK,WAAL;AACE,gBAAMzB,CAAC,GACL,OAAOsB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB3B,CAA9B,KAAoC,QAApC,GACI4E,UAAU,CAACtD,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB3B,CAAxB,CADd,GAEIsB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB3B,CAAvB,IAA4B,CAHlC;AAIA,gBAAMC,CAAC,GACL,OAAOqB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB1B,CAA9B,KAAoC,QAApC,GACI2E,UAAU,CAACtD,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB1B,CAAxB,CADd,GAEIqB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB1B,CAAvB,IAA4B,CAHlC;AAIA,gBAAMb,MAAM,GACV,OAAOkC,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBvC,MAA9B,KAAyC,QAAzC,GACIwF,UAAU,CAACtD,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBvC,MAAxB,CADd,GAEIkC,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBvC,MAAvB,IAAiC,CAHvC;AAIA,gBAAMZ,KAAK,GACT,OAAO8C,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBnD,KAA9B,KAAwC,QAAxC,GACIoG,UAAU,CAACtD,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBnD,KAAxB,CADd,GAEI8C,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBnD,KAAvB,IAAgC,CAHtC;;AAKA,cAAIiG,MAAM,IAAIzE,CAAC,GAAGmB,SAAd,IAA2BsD,MAAM,IAAIzE,CAAC,GAAGmB,SAA7C,EAAwD;AACtD,gBAAIuD,MAAM,IAAIzE,CAAC,GAAGkB,SAAd,IAA2BuD,MAAM,IAAIzE,CAAC,GAAGkB,SAA7C,EAAwD;AACtDqD,cAAAA,GAAG,CAACK,IAAJ,GAAW,UAAX;AACD,aAFD,MAEO,IACLH,MAAM,IAAIzE,CAAC,GAAGb,MAAJ,GAAa+B,SAAvB,IACAuD,MAAM,IAAIzE,CAAC,GAAGb,MAAJ,GAAa+B,SAFlB,EAGL;AACAqD,cAAAA,GAAG,CAACK,IAAJ,GAAW,aAAX;AACD;AACF,WATD,MASO,IACLJ,MAAM,IAAIzE,CAAC,GAAGxB,KAAJ,GAAY2C,SAAtB,IACAsD,MAAM,IAAIzE,CAAC,GAAGxB,KAAJ,GAAY2C,SAFjB,EAGL;AACA,gBAAIuD,MAAM,IAAIzE,CAAC,GAAGkB,SAAd,IAA2BuD,MAAM,IAAIzE,CAAC,GAAGkB,SAA7C,EAAwD;AACtDqD,cAAAA,GAAG,CAACK,IAAJ,GAAW,WAAX;AACD,aAFD,MAEO,IACLH,MAAM,IAAIzE,CAAC,GAAGb,MAAJ,GAAa+B,SAAvB,IACAuD,MAAM,IAAIzE,CAAC,GAAGb,MAAJ,GAAa+B,SAFlB,EAGL;AACAqD,cAAAA,GAAG,CAACK,IAAJ,GAAW,cAAX;AACD;AACF,WAZM,MAYA,IACL,CAAErG,KAAK,GAAG,CAAR,IAAaiG,MAAM,GAAGzE,CAAtB,IAA2ByE,MAAM,GAAGzE,CAAC,GAAGxB,KAAzC,IACEA,KAAK,GAAG,CAAR,IAAaiG,MAAM,GAAGzE,CAAtB,IAA2ByE,MAAM,GAAGzE,CAAC,GAAGxB,KAD3C,MAEEY,MAAM,GAAG,CAAT,IAAcsF,MAAM,GAAGzE,CAAvB,IAA4ByE,MAAM,GAAGzE,CAAC,GAAGb,MAA1C,IACEA,MAAM,GAAG,CAAT,IAAcsF,MAAM,GAAGzE,CAAvB,IAA4ByE,MAAM,GAAGzE,CAAC,GAAGb,MAH5C,CADK,EAKL;AACAoF,YAAAA,GAAG,CAACK,IAAJ,GAAW,QAAX;AACD,WAPM,MAOA;AACLL,YAAAA,GAAG,CAACK,IAAJ,GAAW,KAAX;AACAxB,YAAAA,WAAW,CAAC5B,KAAZ,GAAoB,IAApB;AACD;;AAED;;AACF,aAAK,YAAL;AACA,aAAK,YAAL;AACE,gBAAM7B,EAAE,GACN,OAAO0B,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB/B,EAA9B,KAAqC,QAArC,GACIgF,UAAU,CAACtD,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB/B,EAAxB,CADd,GAEI0B,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB/B,EAAvB,IAA6B,CAHnC;AAIA,gBAAME,EAAE,GACN,OAAOwB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB7B,EAA9B,KAAqC,QAArC,GACI8E,UAAU,CAACtD,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB7B,EAAxB,CADd,GAEIwB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB7B,EAAvB,IAA6B,CAHnC;AAIA,gBAAMD,EAAE,GACN,OAAOyB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB9B,EAA9B,KAAqC,QAArC,GACI+E,UAAU,CAACtD,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,GACI6E,UAAU,CAACtD,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB5B,EAAxB,CADd,GAEIuB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB5B,EAAvB,IAA6B,CAHnC;;AAKA,cACE0E,MAAM,IAAI7E,EAAE,GAAGuB,SAAf,IACAsD,MAAM,IAAI7E,EAAE,GAAGuB,SADf,IAEAuD,MAAM,IAAI5E,EAAE,GAAGqB,SAFf,IAGAuD,MAAM,IAAI5E,EAAE,GAAGqB,SAJjB,EAKE;AACAqD,YAAAA,GAAG,CAACK,IAAJ,GAAW,KAAX;AACD,WAPD,MAOO,IACLJ,MAAM,IAAI5E,EAAE,GAAGsB,SAAf,IACAsD,MAAM,IAAI5E,EAAE,GAAGsB,SADf,IAEAuD,MAAM,GAAGvD,SAAT,IAAsBpB,EAAE,GAAGoB,SAF3B,IAGAuD,MAAM,GAAGvD,SAAT,IAAsBpB,EAAE,GAAGoB,SAJtB,EAKL;AACAqD,YAAAA,GAAG,CAACK,IAAJ,GAAW,QAAX;AACD,WAPM,MAOA,IACLpF,SAAS,CAAC;AAAEO,YAAAA,CAAC,EAAEyE,MAAL;AAAaxE,YAAAA,CAAC,EAAEyE;AAAhB,WAAD,EAA2B;AAAE9E,YAAAA,EAAF;AAAMC,YAAAA,EAAN;AAAUC,YAAAA,EAAV;AAAcC,YAAAA;AAAd,WAA3B,CAAT,IACEoB,SADF,KAEEsD,MAAM,GAAG7E,EAAT,IAAe6E,MAAM,GAAG5E,EAAzB,IAAiC4E,MAAM,GAAG7E,EAAT,IAAe6E,MAAM,GAAG5E,EAF1D,MAGE6E,MAAM,GAAG5E,EAAT,IAAe4E,MAAM,GAAG3E,EAAzB,IAAiC2E,MAAM,GAAG5E,EAAT,IAAe4E,MAAM,GAAG3E,EAH1D,CADK,EAKL;AACAyE,YAAAA,GAAG,CAACK,IAAJ,GAAW,QAAX;AACD,WAPM,MAOA;AACLL,YAAAA,GAAG,CAACK,IAAJ,GAAW,KAAX;AACAxB,YAAAA,WAAW,CAAC5B,KAAZ,GAAoB,IAApB;AACD;;AAED;;AACF,aAAK,MAAL;AACE,gBAAMqD,KAAK,GACT,OAAOxD,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB3B,CAA9B,KAAoC,QAApC,GACI4E,UAAU,CAACtD,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB3B,CAAxB,CADd,GAEIsB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB3B,CAAvB,IAA4B,CAHlC;AAIA,gBAAM+E,KAAK,GACT,OAAOzD,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB1B,CAA9B,KAAoC,QAApC,GACI2E,UAAU,CAACtD,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB1B,CAAxB,CADd,GAEIqB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB1B,CAAvB,IAA4B,CAHlC;AAIA,gBAAM+E,SAAS,GACb,OAAO1D,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBnD,KAA9B,KAAwC,QAAxC,GACIoG,UAAU,CAACtD,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBnD,KAAxB,CADd,GAEI8C,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBnD,KAAvB,IAAgC,CAHtC;AAIA,gBAAMyG,UAAU,GACd,OAAO3D,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBvC,MAA9B,KAAyC,QAAzC,GACIwF,UAAU,CAACtD,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBvC,MAAxB,CADd,GAEIkC,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBvC,MAAvB,IAAiC,CAHvC;;AAKA,cACEqF,MAAM,IAAIK,KAAK,GAAG3D,SAAlB,IACAsD,MAAM,IAAIK,KAAK,GAAG3D,SADlB,IAEAuD,MAAM,IAAIK,KAAK,GAAGE,UAAU,GAAG,CAArB,GAAyB9D,SAFnC,IAGAuD,MAAM,IAAIK,KAAK,GAAGE,UAAU,GAAG,CAArB,GAAyB9D,SAJrC,EAKE;AACAqD,YAAAA,GAAG,CAACK,IAAJ,GAAW,MAAX;AACD,WAPD,MAOO,IACLJ,MAAM,IAAIK,KAAK,GAAGE,SAAR,GAAoB7D,SAA9B,IACAsD,MAAM,IAAIK,KAAK,GAAGE,SAAR,GAAoB7D,SAD9B,IAEAuD,MAAM,IAAIK,KAAK,GAAGE,UAAU,GAAG,CAArB,GAAyB9D,SAFnC,IAGAuD,MAAM,IAAIK,KAAK,GAAGE,UAAU,GAAG,CAArB,GAAyB9D,SAJ9B,EAKL;AACAqD,YAAAA,GAAG,CAACK,IAAJ,GAAW,OAAX;AACD,WAPM,MAOA,IACL,CAAEG,SAAS,GAAG,CAAZ,IACAP,MAAM,GAAGK,KADT,IAEAL,MAAM,GAAGK,KAAK,GAAGE,SAFlB,IAGEA,SAAS,GAAG,CAAZ,IACCP,MAAM,GAAGK,KADV,IAECL,MAAM,GAAGK,KAAK,GAAGE,SALrB,MAMEC,UAAU,GAAG,CAAb,IACAP,MAAM,GAAGK,KADT,IAEAL,MAAM,GAAGK,KAAK,GAAGE,UAFlB,IAGEA,UAAU,GAAG,CAAb,IACCP,MAAM,GAAGK,KADV,IAECL,MAAM,GAAGK,KAAK,GAAGE,UAXrB,CADK,EAaL;AACAT,YAAAA,GAAG,CAACK,IAAJ,GAAW,QAAX;AACD,WAfM,MAeA;AACLL,YAAAA,GAAG,CAACK,IAAJ,GAAW,KAAX;AACAxB,YAAAA,WAAW,CAAC5B,KAAZ,GAAoB,IAApB;AACD;;AAED;;AACF,aAAK,KAAL;AACE,cACEH,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBuD,IAAvB,CACGC,CAAD,IACEV,MAAM,IAAIU,CAAC,CAACnF,CAAF,GAAMmB,SAAhB,IACAsD,MAAM,IAAIU,CAAC,CAACnF,CAAF,GAAMmB,SADhB,IAEAuD,MAAM,IAAIS,CAAC,CAAClF,CAAF,GAAMkB,SAFhB,IAGAuD,MAAM,IAAIS,CAAC,CAAClF,CAAF,GAAMkB,SALpB,CADF,EAQE;AACAqD,YAAAA,GAAG,CAACK,IAAJ,GAAW,QAAX;AACD,WAVD,MAUO;AACLL,YAAAA,GAAG,CAACK,IAAJ,GAAW,KAAX;AACAxB,YAAAA,WAAW,CAAC5B,KAAZ,GAAoB,IAApB;AACD;;AACD;;AACF;AACE+C,UAAAA,GAAG,CAACK,IAAJ,GAAW,KAAX;AACAxB,UAAAA,WAAW,CAAC5B,KAAZ,GAAoB,IAApB;AACA;AAtOJ;AAwOD,KApPH;AAqPE2D,IAAAA,QAAQ,EAAE,CAAC;AAAEpF,MAAAA,CAAF;AAAKC,MAAAA,CAAL;AAAQoF,MAAAA,YAAR;AAAsBC,MAAAA;AAAtB,KAAD,EAAuCd,GAAvC,KAA+C;AAAA;;AACvD,YAAM;AAAEC,QAAAA,MAAF;AAAUC,QAAAA,MAAV;AAAkBG,QAAAA,IAAlB;AAAwBF,QAAAA;AAAxB,UAAyCH,GAA/C;;AACA,UAAIK,IAAI,KAAK,KAAT,IAAkBF,YAAY,KAAK,KAAvC,EAA8C;AAC5CH,QAAAA,GAAG,CAACG,YAAJ,GAAmB,IAAnB;;AACA,YAAItD,IAAI,CAACI,KAAL,KAAe,MAAnB,EAA2B;AACzB1E,UAAAA,OAAO,CAACqG,UAAD,CAAP,CAAoB,EAApB;AACD;;AAEDhC,QAAAA,WAAW,CACTC,IADS,EAETC,WAFS,EAGT0C,UAHS,EAIT;AAAEhE,UAAAA,CAAC,EAAEyE,MAAL;AAAaxE,UAAAA,CAAC,EAAEyE;AAAhB,SAJS,EAKT;AAAEzC,UAAAA,cAAF;AAAkBD,UAAAA,WAAlB;AAA+BxC,UAAAA;AAA/B,SALS,CAAX;AAOAiD,QAAAA,iBAAiB,IAAI1F,OAAO,CAAC0F,iBAAD,CAAP,CAA2B,IAA3B,CAArB;AACD;;AACD,qCAAQnB,WAAW,CAACG,KAApB,wDAAQ,oBAAmBC,IAA3B;AACE,aAAK,KAAL;AACE,cACE,uBAAA2B,WAAW,CAAC5B,KAAZ,0EAAmBC,IAAnB,MAA4BJ,WAAW,CAACG,KAAZ,CAAkBC,IAA9C,IACAmD,IAAI,KAAK,QAFX,EAGE;AACAvD,YAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,cAAAA,IAAI,EAAE,KADY;AAElBM,cAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,cAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,cAAAA,IAAI,EAAE0B,WAAW,CAAC5B,KAAZ,CAAkBE,IAAlB,CAAuB4D,GAAvB,CAA4BJ,CAAD,KAAQ;AACvCnF,gBAAAA,CAAC,EAAEmF,CAAC,CAACnF,CAAF,GAAMqF,YAD8B;AAEvCpF,gBAAAA,CAAC,EAAEkF,CAAC,CAAClF,CAAF,GAAMqF;AAF8B,eAAR,CAA3B;AAJY,aAApB;AASD,WAbD,MAaO;AACLhE,YAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,cAAAA,IAAI,EAAE,KADY;AAElBM,cAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,cAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,cAAAA,IAAI,EAAEL,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB+B,MAAvB,CAA8B;AAClC1D,gBAAAA,CAAC,EAAEA,CAD+B;AAElCC,gBAAAA,CAAC,EAAEA;AAF+B,eAA9B;AAJY,aAApB;AASD;;AACD;;AACF,aAAK,SAAL;AACE,cAAI,wBAAAoD,WAAW,CAAC5B,KAAZ,4EAAmBC,IAAnB,MAA4BJ,WAAW,CAACG,KAAZ,CAAkBC,IAAlD,EAAwD;AAAA;;AACtD,kBAAMI,EAAE,GACN,OAAOuB,WAAW,CAAC5B,KAAZ,CAAkBE,IAAlB,CAAuBG,EAA9B,KAAqC,QAArC,GACI8C,UAAU,wBAACvB,WAAW,CAAC5B,KAAb,wDAAC,oBAAmBE,IAAnB,CAAwBG,EAAzB,CADd,GAEIuB,WAAW,CAAC5B,KAAZ,CAAkBE,IAAlB,CAAuBG,EAAvB,IAA6B,CAHnC;AAKA,kBAAMC,EAAE,GACN,OAAOsB,WAAW,CAAC5B,KAAZ,CAAkBE,IAAlB,CAAuBI,EAA9B,KAAqC,QAArC,GACI6C,UAAU,CAACvB,WAAW,CAAC5B,KAAZ,CAAkBE,IAAlB,CAAuBI,EAAxB,CADd,GAEIsB,WAAW,CAAC5B,KAAZ,CAAkBE,IAAlB,CAAuBI,EAAvB,IAA6B,CAHnC;AAKA,kBAAMH,EAAE,GACN,OAAOyB,WAAW,CAAC5B,KAAZ,CAAkBE,IAAlB,CAAuBC,EAA9B,KAAqC,QAArC,GACIgD,UAAU,CAACvB,WAAW,CAAC5B,KAAZ,CAAkBE,IAAlB,CAAuBC,EAAxB,CADd,GAEIyB,WAAW,CAAC5B,KAAZ,CAAkBE,IAAlB,CAAuBC,EAAvB,IAA6B,CAHnC;AAKA,kBAAMC,EAAE,GACN,OAAOwB,WAAW,CAAC5B,KAAZ,CAAkBE,IAAlB,CAAuBE,EAA9B,KAAqC,QAArC,GACI+C,UAAU,CAACvB,WAAW,CAAC5B,KAAZ,CAAkBE,IAAlB,CAAuBE,EAAxB,CADd,GAEIwB,WAAW,CAAC5B,KAAZ,CAAkBE,IAAlB,CAAuBE,EAAvB,IAA6B,CAHnC;;AAKA,oBAAQgD,IAAR;AACE,mBAAK,KAAL;AACEvD,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,kBAAAA,IAAI,EAAE;AACJC,oBAAAA,EAAE,EAAEA,EADA;AAEJC,oBAAAA,EAAE,EAAEA,EAAE,GAAGyD,YAFL;AAGJxD,oBAAAA,EAAE,EAAEA,EAHA;AAIJC,oBAAAA,EAAE,EAAEA,EAAE,GAAGuD;AAJL;AAJY,iBAApB;AAWA;;AACF,mBAAK,QAAL;AACEhE,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,kBAAAA,IAAI,EAAE;AACJC,oBAAAA,EAAE,EAAEA,EADA;AAEJC,oBAAAA,EAAE,EAAEA,EAAE,GAAGyD,YAFL;AAGJxD,oBAAAA,EAAE,EAAEA,EAHA;AAIJC,oBAAAA,EAAE,EAAEA,EAAE,GAAGuD;AAJL;AAJY,iBAApB;AAWA;;AACF,mBAAK,MAAL;AACEhE,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,kBAAAA,IAAI,EAAE;AACJC,oBAAAA,EAAE,EAAEA,EAAE,GAAGyD,YADL;AAEJxD,oBAAAA,EAAE,EAAEA,EAFA;AAGJC,oBAAAA,EAAE,EAAEA,EAAE,GAAGuD,YAHL;AAIJtD,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;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,kBAAAA,IAAI,EAAE;AACJC,oBAAAA,EAAE,EAAEA,EAAE,GAAGyD,YADL;AAEJxD,oBAAAA,EAAE,EAAEA,EAFA;AAGJC,oBAAAA,EAAE,EAAEA,EAAE,GAAGuD,YAHL;AAIJtD,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;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,kBAAAA,IAAI,EAAE;AACJC,oBAAAA,EAAE,EAAEA,EAAE,GAAGyD,YADL;AAEJxD,oBAAAA,EAAE,EAAEA,EAAE,GAAGyD,YAFL;AAGJxD,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;AAGlBxC,cAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,cAAAA,IAAI,EAAE;AACJC,gBAAAA,EAAE,EAAE6C,MAAM,GAAGY,YADT;AAEJxD,gBAAAA,EAAE,EAAE6C,MAAM,GAAGY,YAFT;AAGJxD,gBAAAA,EAAE,EAAEuD,YAHA;AAIJtD,gBAAAA,EAAE,EAAEuD;AAJA;AAJY,aAApB;AAWD;;AAED;;AACF,aAAK,WAAL;AACE,cAAI,wBAAAjC,WAAW,CAAC5B,KAAZ,4EAAmBC,IAAnB,MAA4BJ,WAAW,CAACG,KAAZ,CAAkBC,IAAlD,EAAwD;AAAA;;AACtD,kBAAMtC,MAAM,GACV,+BAAOiE,WAAW,CAAC5B,KAAnB,wDAAO,oBAAmBE,IAAnB,CAAwBvC,MAA/B,MAA0C,QAA1C,GACIwF,UAAU,wBAACvB,WAAW,CAAC5B,KAAb,wDAAC,oBAAmBE,IAAnB,CAAwBvC,MAAzB,CADd,GAEI,wBAAAiE,WAAW,CAAC5B,KAAZ,4EAAmBE,IAAnB,CAAwBvC,MAAxB,KAAkC,CAHxC;AAKA,kBAAMZ,KAAK,GACT,+BAAO6E,WAAW,CAAC5B,KAAnB,wDAAO,oBAAmBE,IAAnB,CAAwBnD,KAA/B,MAAyC,QAAzC,GACIoG,UAAU,wBAACvB,WAAW,CAAC5B,KAAb,wDAAC,oBAAmBE,IAAnB,CAAwBnD,KAAzB,CADd,GAEI,yBAAA6E,WAAW,CAAC5B,KAAZ,8EAAmBE,IAAnB,CAAwBnD,KAAxB,KAAiC,CAHvC;AAKA,kBAAMwB,CAAC,GACL,gCAAOqD,WAAW,CAAC5B,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwB3B,CAA/B,MAAqC,QAArC,GACI4E,UAAU,yBAACvB,WAAW,CAAC5B,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwB3B,CAAzB,CADd,GAEI,yBAAAqD,WAAW,CAAC5B,KAAZ,8EAAmBE,IAAnB,CAAwB3B,CAAxB,KAA6B,CAHnC;AAKA,kBAAMC,CAAC,GACL,gCAAOoD,WAAW,CAAC5B,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwB1B,CAA/B,MAAqC,QAArC,GACI2E,UAAU,yBAACvB,WAAW,CAAC5B,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwB1B,CAAzB,CADd,GAEI,yBAAAoD,WAAW,CAAC5B,KAAZ,8EAAmBE,IAAnB,CAAwB1B,CAAxB,KAA6B,CAHnC;;AAKA,oBAAQ4E,IAAR;AACE,mBAAK,UAAL;AACEvD,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAE,WADY;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,kBAAAA,IAAI,EAAE;AACJ3B,oBAAAA,CAAC,EAAEyE,MAAM,GAAGY,YADR;AAEJpF,oBAAAA,CAAC,EAAEyE,MAAM,GAAGY,YAFR;AAGJ9G,oBAAAA,KAAK,EAAEA,KAAK,GAAG6G,YAHX;AAIJjG,oBAAAA,MAAM,EAAEA,MAAM,GAAGkG;AAJb;AAJY,iBAApB;AAWA;;AACF,mBAAK,WAAL;AACEhE,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAE,WADY;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,kBAAAA,IAAI,EAAE;AACJ3B,oBAAAA,CAAC,EAAEA,CADC;AAEJC,oBAAAA,CAAC,EAAEyE,MAAM,GAAGY,YAFR;AAGJ9G,oBAAAA,KAAK,EAAEA,KAAK,GAAG6G,YAHX;AAIJjG,oBAAAA,MAAM,EAAEA,MAAM,GAAGkG;AAJb;AAJY,iBAApB;AAWA;;AACF,mBAAK,aAAL;AACEhE,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAE,WADY;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,kBAAAA,IAAI,EAAE;AACJ3B,oBAAAA,CAAC,EAAEyE,MAAM,GAAGY,YADR;AAEJpF,oBAAAA,CAAC,EAAEA,CAFC;AAGJzB,oBAAAA,KAAK,EAAEA,KAAK,GAAG6G,YAHX;AAIJjG,oBAAAA,MAAM,EAAEA,MAAM,GAAGkG;AAJb;AAJY,iBAApB;AAWA;;AACF,mBAAK,cAAL;AACEhE,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAE,WADY;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,kBAAAA,IAAI,EAAE;AACJ3B,oBAAAA,CAAC,EAAEA,CADC;AAEJC,oBAAAA,CAAC,EAAEA,CAFC;AAGJzB,oBAAAA,KAAK,EAAEA,KAAK,GAAG6G,YAHX;AAIJjG,oBAAAA,MAAM,EAAEA,MAAM,GAAGkG;AAJb;AAJY,iBAApB;AAWA;;AACF,mBAAK,QAAL;AACEhE,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAE,WADY;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,kBAAAA,IAAI,EAAE;AACJ3B,oBAAAA,CAAC,EAAEA,CAAC,GAAGqF,YADH;AAEJpF,oBAAAA,CAAC,EAAEA,CAAC,GAAGqF,YAFH;AAGJ9G,oBAAAA,KAAK,EAAEA,KAHH;AAIJY,oBAAAA,MAAM,EAAEA;AAJJ;AAJY,iBAApB;AAWA;AAjEJ;AAmED,WAxFD,MAwFO;AACLkC,YAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,cAAAA,IAAI,EAAE,WADY;AAElBM,cAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,cAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,cAAAA,IAAI,EAAE;AACJ3B,gBAAAA,CAAC,EAAEsB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB3B,CADtB;AAEJC,gBAAAA,CAAC,EAAEqB,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuB1B,CAFtB;AAGJzB,gBAAAA,KAAK,EAAE6G,YAHH;AAIJjG,gBAAAA,MAAM,EAAEkG;AAJJ;AAJY,aAApB;AAWD;;AACD;;AACF,aAAK,YAAL;AACA,aAAK,YAAL;AACE,cAAI,yBAAAjC,WAAW,CAAC5B,KAAZ,8EAAmBC,IAAnB,MAA4BJ,WAAW,CAACG,KAAZ,CAAkBC,IAAlD,EAAwD;AAAA;;AACtD,kBAAM9B,EAAE,GACN,gCAAOyD,WAAW,CAAC5B,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwB/B,EAA/B,MAAsC,QAAtC,GACIgF,UAAU,yBAACvB,WAAW,CAAC5B,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwB/B,EAAzB,CADd,GAEI,yBAAAyD,WAAW,CAAC5B,KAAZ,8EAAmBE,IAAnB,CAAwB/B,EAAxB,KAA8B,CAHpC;AAKA,kBAAME,EAAE,GACN,gCAAOuD,WAAW,CAAC5B,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwB7B,EAA/B,MAAsC,QAAtC,GACI8E,UAAU,yBAACvB,WAAW,CAAC5B,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwB7B,EAAzB,CADd,GAEI,yBAAAuD,WAAW,CAAC5B,KAAZ,8EAAmBE,IAAnB,CAAwB7B,EAAxB,KAA8B,CAHpC;AAKA,kBAAMD,EAAE,GACN,gCAAOwD,WAAW,CAAC5B,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwB9B,EAA/B,MAAsC,QAAtC,GACI+E,UAAU,yBAACvB,WAAW,CAAC5B,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwB9B,EAAzB,CADd,GAEI,yBAAAwD,WAAW,CAAC5B,KAAZ,8EAAmBE,IAAnB,CAAwB9B,EAAxB,KAA8B,CAHpC;AAKA,kBAAME,EAAE,GACN,gCAAOsD,WAAW,CAAC5B,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwB5B,EAA/B,MAAsC,QAAtC,GACI6E,UAAU,yBAACvB,WAAW,CAAC5B,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwB5B,EAAzB,CADd,GAEI,yBAAAsD,WAAW,CAAC5B,KAAZ,8EAAmBE,IAAnB,CAAwB5B,EAAxB,KAA8B,CAHpC;;AAKA,oBAAQ8E,IAAR;AACE,mBAAK,KAAL;AACEvD,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,kBAAAA,IAAI,EAAE;AACJ/B,oBAAAA,EAAE,EAAEA,EAAE,GAAGyF,YADL;AAEJvF,oBAAAA,EAAE,EAAEA,EAAE,GAAGwF,YAFL;AAGJzF,oBAAAA,EAAE,EAAEA,EAHA;AAIJE,oBAAAA,EAAE,EAAEA;AAJA;AAJY,iBAApB;AAWA;;AACF,mBAAK,QAAL;AACEuB,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,kBAAAA,IAAI,EAAE;AACJ/B,oBAAAA,EAAE,EAAEA,EADA;AAEJE,oBAAAA,EAAE,EAAEA,EAFA;AAGJD,oBAAAA,EAAE,EAAEA,EAAE,GAAGwF,YAHL;AAIJtF,oBAAAA,EAAE,EAAEA,EAAE,GAAGuF;AAJL;AAJY,iBAApB;AAWA;;AACF,mBAAK,QAAL;AACEhE,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,kBAAAA,IAAI,EAAE;AACJ/B,oBAAAA,EAAE,EAAEA,EAAE,GAAGyF,YADL;AAEJvF,oBAAAA,EAAE,EAAEA,EAAE,GAAGwF,YAFL;AAGJzF,oBAAAA,EAAE,EAAEA,EAAE,GAAGwF,YAHL;AAIJtF,oBAAAA,EAAE,EAAEA,EAAE,GAAGuF;AAJL;AAJY,iBAApB;AAWA;AAvCJ;AAyCD,WA9DD,MA8DO;AACLhE,YAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,cAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,cAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,cAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,cAAAA,IAAI,EAAE;AACJ/B,gBAAAA,EAAE,EAAE6E,MADA;AAEJ3E,gBAAAA,EAAE,EAAE4E,MAFA;AAGJ7E,gBAAAA,EAAE,EAAE4E,MAAM,GAAGY,YAHT;AAIJtF,gBAAAA,EAAE,EAAE2E,MAAM,GAAGY;AAJT;AAJY,aAApB;AAWD;;AACD;;AACF,aAAK,MAAL;AACE,cAAI,yBAAAjC,WAAW,CAAC5B,KAAZ,8EAAmBC,IAAnB,MAA4BJ,WAAW,CAACG,KAAZ,CAAkBC,IAAlD,EAAwD;AAAA;;AACtD,kBAAMoD,KAAK,GACT,gCAAOzB,WAAW,CAAC5B,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwB3B,CAA/B,MAAqC,QAArC,GACI4E,UAAU,yBAACvB,WAAW,CAAC5B,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwB3B,CAAzB,CADd,GAEI,yBAAAqD,WAAW,CAAC5B,KAAZ,8EAAmBE,IAAnB,CAAwB3B,CAAxB,KAA6B,CAHnC;AAIA,kBAAM+E,KAAK,GACT,gCAAO1B,WAAW,CAAC5B,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwB1B,CAA/B,MAAqC,QAArC,GACI2E,UAAU,yBAACvB,WAAW,CAAC5B,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwB1B,CAAzB,CADd,GAEI,yBAAAoD,WAAW,CAAC5B,KAAZ,8EAAmBE,IAAnB,CAAwB1B,CAAxB,KAA6B,CAHnC;AAIA,kBAAM+E,SAAS,GACb,gCAAO3B,WAAW,CAAC5B,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwBnD,KAA/B,MAAyC,QAAzC,GACIoG,UAAU,yBAACvB,WAAW,CAAC5B,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwBnD,KAAzB,CADd,GAEI,yBAAA6E,WAAW,CAAC5B,KAAZ,8EAAmBE,IAAnB,CAAwBnD,KAAxB,KAAiC,CAHvC;AAIA,kBAAMyG,UAAU,GACd,gCAAO5B,WAAW,CAAC5B,KAAnB,yDAAO,qBAAmBE,IAAnB,CAAwBvC,MAA/B,MAA0C,QAA1C,GACIwF,UAAU,yBAACvB,WAAW,CAAC5B,KAAb,yDAAC,qBAAmBE,IAAnB,CAAwBvC,MAAzB,CADd,GAEI,yBAAAiE,WAAW,CAAC5B,KAAZ,8EAAmBE,IAAnB,CAAwBvC,MAAxB,KAAkC,CAHxC;;AAKA,oBAAQyF,IAAR;AACE,mBAAK,MAAL;AACEvD,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlB0C,kBAAAA,IAAI,EAAEZ,WAAW,CAACG,KAAZ,CAAkBS,IAJN;AAKlBP,kBAAAA,IAAI,EAAE;AACJ3B,oBAAAA,CAAC,EAAE8E,KAAK,GAAGO,YADP;AAEJpF,oBAAAA,CAAC,EAAE8E,KAFC;AAGJvG,oBAAAA,KAAK,EAAEwG,SAAS,GAAGK,YAHf;AAIJjG,oBAAAA,MAAM,EAAE6F;AAJJ;AALY,iBAApB;AAYA;;AACF,mBAAK,OAAL;AACE3D,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlB0C,kBAAAA,IAAI,EAAEZ,WAAW,CAACG,KAAZ,CAAkBS,IAJN;AAKlBP,kBAAAA,IAAI,EAAE;AACJ3B,oBAAAA,CAAC,EAAE8E,KADC;AAEJ7E,oBAAAA,CAAC,EAAE8E,KAFC;AAGJvG,oBAAAA,KAAK,EAAEwG,SAAS,GAAGK,YAHf;AAIJjG,oBAAAA,MAAM,EAAE6F;AAJJ;AALY,iBAApB;AAYA;;AACF,mBAAK,QAAL;AACE3D,gBAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,kBAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,kBAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,kBAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlB0C,kBAAAA,IAAI,EAAEZ,WAAW,CAACG,KAAZ,CAAkBS,IAJN;AAKlBP,kBAAAA,IAAI,EAAE;AACJ3B,oBAAAA,CAAC,EAAE8E,KAAK,GAAGO,YADP;AAEJpF,oBAAAA,CAAC,EAAE8E,KAAK,GAAGO,YAFP;AAGJ9G,oBAAAA,KAAK,EAAEwG,SAHH;AAIJ5F,oBAAAA,MAAM,EAAE6F;AAJJ;AALY,iBAApB;AAYA;AA1CJ;AA4CD,WA9DD,MA8DO;AACL3D,YAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,cAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,cAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,cAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlB0C,cAAAA,IAAI,EAAEZ,WAAW,CAACG,KAAZ,CAAkBS,IAJN;AAKlBP,cAAAA,IAAI,EAAE;AACJ3B,gBAAAA,CAAC,EAAEyE,MAAM,GAAGY,YADR;AAEJpF,gBAAAA,CAAC,EAAEyE,MAAM,GAAGY,YAFR;AAGJ9G,gBAAAA,KAAK,EAAE8C,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBnD,KAH1B;AAIJY,gBAAAA,MAAM,EAAEkC,WAAW,CAACG,KAAZ,CAAkBE,IAAlB,CAAuBvC;AAJ3B;AALY,aAApB;AAYD;;AApYL;AAsYD,KA5oBH;AA6oBEoG,IAAAA,KAAK,EAAGC,MAAD,IAAY;AAAA;;AACjBxB,MAAAA,WAAW,CAACxC,KAAZ,GAAoBrE,UAAU,CAAC,CAAD,CAA9B;;AAEA,UAAI,wBAAAkE,WAAW,CAACG,KAAZ,4EAAmBC,IAAnB,MAA4B,MAAhC,EAAwC;AAAA;;AACtC3E,QAAAA,OAAO,CAACoH,SAAD,CAAP;AAEA7C,QAAAA,WAAW,CAACG,KAAZ,GAAoB;AAClBC,UAAAA,IAAI,EAAEJ,WAAW,CAACG,KAAZ,CAAkBC,IADN;AAElBM,UAAAA,WAAW,EAAEV,WAAW,CAACG,KAAZ,CAAkBO,WAFb;AAGlBxC,UAAAA,KAAK,EAAE8B,WAAW,CAACG,KAAZ,CAAkBjC,KAHP;AAIlBmC,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;AACF;AA9pBH,GAJ8C,EAoqB9C,EApqB8C,CAAhD;AAuqBA,QAAMwD,cAAc,GAAGxI,gBAAgB,CAAC,MAAM;AAC5C,WAAO;AACLyI,MAAAA,SAAS,EAAE,CAAC;AAAEC,QAAAA,UAAU,EAAE3B,WAAW,CAACxC;AAA1B,OAAD;AADN,KAAP;AAGD,GAJsC,EAIpC,CAACwC,WAAW,CAACxC,KAAb,CAJoC,CAAvC;AAMAxF,EAAAA,SAAS,CAAC,MAAM;AACd,UAAM4J,UAAU,GAAGpJ,QAAQ,CAACqJ,WAAT,CAAqB,iBAArB,EAAwC,MAAM;AAC/D5B,MAAAA,aAAa,CAACzC,KAAd,GAAsB,KAAtB;AACD,KAFkB,CAAnB;AAIA,UAAMsE,UAAU,GAAGtJ,QAAQ,CAACqJ,WAAT,CAAqB,iBAArB,EAAyCE,KAAD,IAAW;AACpE;AACA,UAAIA,KAAK,CAACC,cAAN,CAAqB7G,MAArB,GAA8B,GAAlC,EAAuC;AACrC8E,QAAAA,aAAa,CAACzC,KAAd,GAAsB,IAAtB;AACD;AACF,KALkB,CAAnB,CALc,CAYd;;AACA,WAAO,MAAM;AACXsE,MAAAA,UAAU,CAACG,MAAX;AACAL,MAAAA,UAAU,CAACK,MAAX;AACD,KAHD;AAID,GAjBQ,EAiBN,CAAChC,aAAD,CAjBM,CAAT;AAmBA,QAAME,YAAY,GAAGjI,MAAM,CAAY,IAAZ,CAA3B;AAEA,QAAMgK,yBAAyB,GAAGjJ,gBAAgB,CAAC,MAAM;AACvD,WAAO;AACLkC,MAAAA,MAAM,EAAE,MADH;AAELlB,MAAAA,eAAe,EAAE,OAFZ;AAGLkI,MAAAA,OAAO,EAAE,MAHJ;AAILC,MAAAA,OAAO,EAAEnC,aAAa,CAACzC,KAAd,GAAsBrE,UAAU,CAAC,CAAD,CAAhC,GAAsCA,UAAU,CAAC,CAAD;AAJpD,KAAP;AAMD,GAPiD,EAO/C,CAAC8G,aAAa,CAACzC,KAAf,CAP+C,CAAlD;AASA,QAAM6E,cAAc,GAAGpJ,gBAAgB,CAAC,MAAM;AAC5C,WAAO;AACLkJ,MAAAA,OAAO,EAAElC,aAAa,CAACzC,KAAd,GAAsB,MAAtB,GAA+B,MADnC;AAEL4E,MAAAA,OAAO,EAAEnC,aAAa,CAACzC,KAAd,GAAsBrE,UAAU,CAAC,CAAD,CAAhC,GAAsCA,UAAU,CAAC,CAAD;AAFpD,KAAP;AAID,GALsC,EAKpC,CAAC8G,aAAa,CAACzC,KAAf,CALoC,CAAvC;AAOAxE,EAAAA,mBAAmB,CACjB,MAAM;AACJ,WAAO;AAAE+E,MAAAA,WAAW,EAAEA,WAAW,CAACP,KAA3B;AAAkCjC,MAAAA,KAAK,EAAEA,KAAK,CAACiC;AAA/C,KAAP;AACD,GAHgB,EAIjB,CAAC;AAAEO,IAAAA,WAAF;AAAexC,IAAAA;AAAf,GAAD,KAAsE;AAAA;;AACpE,mCAAQ8B,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,WAHkB;AAIlBxC,UAAAA;AAJkB,SAApB;AAMA;;AACF,WAAK,YAAL;AACE8B,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,WAHkB;AAIlBxC,UAAAA;AAJkB,SAApB;AAMA;;AACF,WAAK,SAAL;AACE8B,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,WAHkB;AAIlBxC,UAAAA;AAJkB,SAApB;AAMA;;AACF,WAAK,WAAL;AACE8B,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,WAHkB;AAIlBxC,UAAAA;AAJkB,SAApB;AAMA;;AAEF,WAAK,KAAL;AACE8B,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,WAHkB;AAIlBxC,UAAAA;AAJkB,SAApB;AAMA;;AACF,WAAK,MAAL;AACE8B,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,WAHkB;AAIlBxC,UAAAA,KAJkB;AAKlB0C,UAAAA,IAAI,EAAEZ,WAAW,CAACG,KAAZ,CAAkBS;AALN,SAApB;AAOA;AAlDJ;AAoDD,GAzDgB,EA0DjB,CAACF,WAAW,CAACP,KAAb,EAAoBjC,KAAK,CAACiC,KAA1B,CA1DiB,CAAnB;AA6DA,QAAM8E,WAAW,GAAGvK,WAAW,CAC7B,CAACwK,IAAD,EAAiBC,KAAjB,KAAmC,MAAM;AACvChE,IAAAA,iBAAiB,SAAjB,IAAAA,iBAAiB,WAAjB,YAAAA,iBAAiB,CAAG,IAAH,CAAjB;AAEA,UAAMiE,YAAY,GAAGpF,WAAW,CAACG,KAAjC;AAEAO,IAAAA,WAAW,CAACP,KAAZ,GAAoB+E,IAAI,CAACxE,WAAzB;AACAxC,IAAAA,KAAK,CAACiC,KAAN,GAAc+E,IAAI,CAAChH,KAAnB;AACA8B,IAAAA,WAAW,CAACG,KAAZ,GAAoB+E,IAApB;AAEAjD,IAAAA,YAAY,CAAEC,IAAD,IAAU;AACrB,YAAMmD,IAAI,GAAG,CAAC,GAAGnD,IAAJ,CAAb;AACAmD,MAAAA,IAAI,CAACC,MAAL,CAAYH,KAAZ,EAAmB,CAAnB;AACA,aAAOE,IAAP;AACD,KAJW,CAAZ;;AAMA,QAAID,YAAJ,EAAkB;AAChBnF,MAAAA,eAAe,CAACmF,YAAD,CAAf;AACD;;AAED,QAAIF,IAAI,CAAC9E,IAAL,KAAc,MAAlB,EAA0B;AAAA;;AACxB0B,MAAAA,UAAU,eAACoD,IAAI,CAACtE,IAAN,mDAAc,EAAd,CAAV;AACD,KAFD,MAEO;AAAA;;AACL,gCAAAkC,YAAY,CAACN,OAAb,kFAAsB+C,IAAtB;AACD;AACF,GAzB4B,EA0B7B,CAACrH,KAAD,EAAQ8B,WAAR,EAAqBU,WAArB,EAAkCT,eAAlC,EAAmDkB,iBAAnD,CA1B6B,CAA/B;AA6BA,QAAMqE,kBAAkB,GAAG9K,WAAW,CACnCoD,MAAD,IAAoB;AAClB+C,IAAAA,kBAAkB,CAACb,WAAD,EAAcW,cAAd,EAA8B7C,MAA9B,CAAlB;AACD,GAHmC,EAIpC,CAACkC,WAAD,EAAcW,cAAd,CAJoC,CAAtC;AAOA,QAAM8E,cAAc,GAAG/K,WAAW,CAChC,CAACgL,UAAD,EAAqBC,WAArB,KAA6C;AAC3C,QAAItE,UAAJ,EAAgB;AACdG,MAAAA,oBAAoB,CAAC;AAAEtE,QAAAA,KAAK,EAAEwI,UAAT;AAAqB5H,QAAAA,MAAM,EAAE6H;AAA7B,OAAD,CAApB;AAEA,YAAMC,gBAAgB,GACpBrG,IAAI,CAACsG,KAAL,CAAaF,WAAW,GAAGtE,UAAU,CAACnE,KAA1B,GAAmCwI,UAApC,GAAkD,GAA7D,IACA,GAFF;;AAIA,UAAIE,gBAAgB,GAAGvE,UAAU,CAACvD,MAAlC,EAA0C;AACxC4D,QAAAA,YAAY,CAAC;AACXxE,UAAAA,KAAK,EAAEmE,UAAU,CAACnE,KADP;AAEXY,UAAAA,MAAM,EAAE8H;AAFG,SAAD,CAAZ;AAID,OALD,MAKO;AACLlE,QAAAA,YAAY,CAAC;AACX5D,UAAAA,MAAM,EAAEuD,UAAU,CAACvD,MADR;AAEXZ,UAAAA,KAAK,EACHqC,IAAI,CAACsG,KAAL,CACIH,UAAU,GAAGrE,UAAU,CAACvD,MAAzB,GAAmC6H,WAApC,GAAmD,GADrD,IAEI;AALK,SAAD,CAAZ;AAOD;AACF;AACF,GAxB+B,EAyBhC,CAACtE,UAAD,CAzBgC,CAAlC;AA4BA1G,EAAAA,SAAS,CAAC,MAAM;AACd,QAAI0G,UAAU,IAAIJ,KAAlB,EAAyB;AACvB,UAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B,cAAM6E,KAAK,GAAGzK,KAAK,CAAC0K,kBAAN,CAAyB9E,KAAzB,CAAd;AAEAwE,QAAAA,cAAc,CAACK,KAAK,CAAC5I,KAAP,EAAc4I,KAAK,CAAChI,MAApB,CAAd;AACD,OAJD,MAIO,IAAImD,KAAK,CAAC+E,GAAV,EAAe;AACpB3K,QAAAA,KAAK,CAAC4K,OAAN,CAAchF,KAAK,CAAC+E,GAApB,EAAyB,CAACN,UAAD,EAAaC,WAAb,KAA6B;AACpDF,UAAAA,cAAc,CAACC,UAAD,EAAaC,WAAb,CAAd;AACD,SAFD;AAGD;AACF;AACF,GAZQ,EAYN,CAAC1E,KAAD,EAAQI,UAAR,EAAoBoE,cAApB,CAZM,CAAT;AAcA,sBACE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEpJ,MAAM,CAACE;AAApB,kBACE,oBAAC,IAAD;AACE,IAAA,KAAK,EAAEF,MAAM,CAACI,QADhB;AAEE,IAAA,QAAQ,EAAGiI,KAAD,IAAW;AACnBpD,MAAAA,aAAa,CAAC;AACZxD,QAAAA,MAAM,EAAE4G,KAAK,CAACwB,WAAN,CAAkBC,MAAlB,CAAyBrI,MADrB;AAEZZ,QAAAA,KAAK,EAAEwH,KAAK,CAACwB,WAAN,CAAkBC,MAAlB,CAAyBjJ;AAFpB,OAAD,CAAb;AAID;AAPH,kBASE,oBAAC,iBAAD;AACE,IAAA,aAAa,EAAE,CADjB;AAEE,IAAA,aAAa,EAAE,CAFjB;AAGE,IAAA,cAAc,EAAE8F;AAHlB,kBAKE,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;AACPwE,MAAAA,MAAM,EAAE,KADD;AAEPC,MAAAA,OAAO,EAAE,CAFF;AAGP,SAAG9E;AAHI,KAFX;AAOE,IAAA,KAAK,EAAEE;AAPT,kBASE,oBAAC,eAAD;AAAiB,IAAA,MAAM,EAAER,KAAzB;AAAgC,IAAA,KAAK,EAAE5E,MAAM,CAACwB;AAA9C,kBACE,oBAAC,OAAD;AACE,IAAA,WAAW,EAAEmC,WADf;AAEE,IAAA,SAAS,EAAEgC,SAFb;AAGE,IAAA,WAAW,EAAEiD,WAHf;AAIE,IAAA,kBAAkB,EAAEO;AAJtB,IADF,CATF,CADF,GAmBI,IApBA,GAqBFnE,UAAU,gBACZ,oBAAC,QAAD;AACE,IAAA,GAAG,EAAEO,QADP;AAEE,IAAA,OAAO,EAAE;AACPwE,MAAAA,MAAM,EAAE,KADD;AAEPC,MAAAA,OAAO,EAAE,CAFF;AAGP,SAAGhF;AAHI,KAFX;AAOE,IAAA,KAAK,EAAEA;AAPT,kBASE,oBAAC,OAAD;AACE,IAAA,WAAW,EAAErB,WADf;AAEE,IAAA,SAAS,EAAEgC,SAFb;AAGE,IAAA,WAAW,EAAEiD,WAHf;AAIE,IAAA,kBAAkB,EAAEO;AAJtB,IATF,CADY,GAiBV,IAvCN,CADF,CALF,CATF,eA2DE,oBAAC,QAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAE,CAACnJ,MAAM,CAACQ,kBAAR,EAA4BuH,cAA5B;AAAtB,kBACE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE/H,MAAM,CAACkB;AAApB,kBACE,oBAAC,YAAD;AAAc,IAAA,QAAQ,EAAE,CAAxB;AAA2B,IAAA,QAAQ,EAAE,EAArC;AAAyC,IAAA,MAAM,EAAEmD;AAAjD,IADF,CADF,eAIE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAErE,MAAM,CAACsB;AAApB,kBACE,oBAAC,WAAD;AAAa,IAAA,KAAK,EAAEO,KAApB;AAA2B,IAAA,cAAc,EAAEgD;AAA3C,IADF,CAJF,CA3DF,CADF,EAqEG5F,QAAQ,CAACgL,EAAT,KAAgB,KAAhB,gBACC,oBAAC,kBAAD,qBACE,oBAAC,iBAAD;AACE,IAAA,GAAG,EAAExD,YADP;AAEE,IAAA,KAAK,EAAE,CAACzG,MAAM,CAAC0B,SAAR,EAAmBiH,cAAnB,CAFT;AAGE,IAAA,YAAY,4BAAElC,YAAY,CAACN,OAAf,2DAAE,uBAAsB+D,KAHtC;AAIE,IAAA,YAAY,EAAEzE,UAJhB;AAKE,IAAA,KAAK,EAAED,OALT;AAME,IAAA,WAAW,EAAE;AANf,IADF,CADD,gBAYC,oBAAC,4BAAD;AACE,IAAA,QAAQ,EAAC,UADX;AAEE,IAAA,KAAK,EAAEgD;AAFT,kBAIE,oBAAC,SAAD;AACE,IAAA,GAAG,EAAE/B,YADP;AAEE,IAAA,KAAK,EAAEzG,MAAM,CAAC0B,SAFhB;AAGE,IAAA,YAAY,4BAAE+E,YAAY,CAACN,OAAf,2DAAE,uBAAsB+D,KAHtC;AAIE,IAAA,YAAY,EAAEzE,UAJhB;AAKE,IAAA,KAAK,EAAED,OALT;AAME,IAAA,WAAW,EAAE;AANf,IAJF,CAjFJ,CADF;AAkGD,CAthCgB,CAAjB;AAwhCA,eAAef,QAAf","sourcesContent":["import React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport {\n StyleSheet,\n TextInput,\n View,\n KeyboardAvoidingView,\n Keyboard,\n ImageBackground,\n Image,\n ImageRequireSource,\n ImageURISource,\n ViewProps,\n Platform,\n InputAccessoryView,\n} from 'react-native';\nimport Animated, {\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedReaction,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\nimport ColorSlider from './ColorSlider';\nimport StrokeSlider from './StrokeSlider';\nimport type {\n DrawItem,\n DrawItemType,\n DrawCoreProps,\n hslColor,\n Size,\n} from '../../types';\nimport DrawPad from './DrawPad';\nimport ViewShot from 'react-native-view-shot';\n\nconst RIGHT_PANE_WIDTH = 60;\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n drawZone: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'white',\n },\n rightPaneBaseStyle: {\n position: 'absolute',\n right: 0,\n top: 0,\n bottom: 0,\n backgroundColor: '#000000cc',\n width: RIGHT_PANE_WIDTH,\n justifyContent: 'space-evenly',\n marginVertical: 20,\n borderTopLeftRadius: 20,\n borderBottomLeftRadius: 20,\n paddingVertical: 30,\n },\n strokeSliderContainer: {\n flex: 1,\n paddingBottom: 15,\n borderBottomColor: '#000000',\n borderBottomWidth: 2,\n },\n colorSliderContainer: { flex: 1, paddingTop: 15 },\n bgImage: { width: '100%', height: '100%' },\n textInput: {\n backgroundColor: '#000000c5',\n paddingVertical: 16,\n paddingHorizontal: 24,\n fontSize: 16,\n color: 'white',\n width: '100%',\n },\n});\n\nfunction pDistance(\n point: { x: number; y: number },\n line: { x1: number; x2: number; y1: number; y2: number }\n) {\n 'worklet';\n const { x1, x2, y1, y2 } = line;\n const { x, y } = point;\n\n var A = x - x1;\n var B = y - y1;\n var C = x2 - x1;\n var D = y2 - y1;\n\n var dot = A * C + B * D;\n var len_sq = C * C + D * D;\n var param = -1;\n if (len_sq !== 0) {\n //in case of 0 length line\n param = dot / len_sq;\n }\n\n var xx, yy;\n\n if (param < 0) {\n xx = x1;\n yy = y1;\n } else if (param > 1) {\n xx = x2;\n yy = y2;\n } else {\n xx = x1 + param * C;\n yy = y1 + param * D;\n }\n\n var dx = x - xx;\n var dy = y - yy;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nconst AnimatedKeyboardAvoidingView =\n Animated.createAnimatedComponent(KeyboardAvoidingView);\n\nconst AnimatedTextInput = Animated.createAnimatedComponent(TextInput);\n\nconst DEFAULT_TEXT = '';\n\nconst THRESHOLD = 20;\n\ntype Context = {\n startX: number;\n startY: number;\n newlyCreated: boolean;\n zone?:\n | 'TOP'\n | 'BOTTOM'\n | 'LEFT'\n | 'RIGHT'\n | 'TOP_LEFT'\n | 'TOP_RIGHT'\n | 'BOTTOM_LEFT'\n | 'BOTTOM_RIGHT'\n | 'CENTER'\n | 'OUT';\n};\n\nconst drawNewItem = (\n mode: Animated.SharedValue<DrawItemType>,\n currentItem: Animated.SharedValue<DrawItem | null>,\n updateDoneItems: (item: DrawItem) => void,\n position: { x: number; y: number },\n style: {\n textBaseHeight: Animated.SharedValue<number | null>;\n strokeWidth: Animated.SharedValue<number>;\n color: Animated.SharedValue<hslColor>;\n }\n) => {\n 'worklet';\n\n if (currentItem.value) {\n runOnJS(updateDoneItems)(currentItem.value);\n }\n\n switch (mode.value) {\n case 'ellipse':\n currentItem.value = {\n type: mode.value,\n data: {\n cx: position.x,\n cy: position.y,\n rx: 0,\n ry: 0,\n },\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n case 'rectangle':\n currentItem.value = {\n type: mode.value,\n data: { x: position.x, y: position.y, width: 0, height: 0 },\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n case 'singleHead':\n case 'doubleHead':\n currentItem.value = {\n type: mode.value,\n data: {\n x1: position.x,\n y1: position.y,\n x2: position.x,\n y2: position.y,\n },\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n case 'text':\n currentItem.value = {\n type: mode.value,\n data: {\n x: position.x,\n y: position.y,\n width: 200,\n height: style.textBaseHeight.value || 0,\n },\n strokeWidth: style.strokeWidth.value,\n text: DEFAULT_TEXT,\n color: style.color.value,\n };\n break;\n case 'pen':\n currentItem.value = {\n type: mode.value,\n data: [],\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n }\n};\n\nconst onTextHeightUpdate = (\n currentItem: Animated.SharedValue<DrawItem | null>,\n textBaseHeight: Animated.SharedValue<number | null>,\n height: number\n) => {\n 'worklet';\n if (currentItem.value?.type === 'text') {\n textBaseHeight.value = textBaseHeight.value || height;\n\n currentItem.value = {\n data: {\n ...currentItem.value.data,\n height: height,\n },\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n };\n }\n};\n\nconst DrawCore = React.forwardRef<\n DrawCoreProps,\n {\n drawingMode: DrawItemType;\n image?: ImageRequireSource | ImageURISource;\n linearGradient: React.ComponentType<{ colors: any[] } & ViewProps>;\n onSelectionChange?: (selected: boolean) => void;\n }\n>(({ drawingMode, image, linearGradient, onSelectionChange }, ref) => {\n const mode = useSharedValue<DrawItemType>('pen');\n\n const [drawRegion, setDrawRegion] = useState<Size | null>(null);\n\n const [originalImageSize, setOriginalImageSize] = useState<Size | null>(null);\n\n const [imageSize, setImageSize] = useState<Size | null>(null);\n\n const drawContainer = useRef<View>(null);\n\n const viewShot = useRef<ViewShot>(null);\n\n const [textVal, setTextVal] = useState<string>('');\n\n const currentItem = useSharedValue<DrawItem | null>(null);\n\n const initialItem = useSharedValue<DrawItem | null>(null);\n\n const [doneItems, setDoneItems] = useState<DrawItem[]>([]);\n\n const textBaseHeight = useSharedValue<number | null>(null);\n\n const updateDoneItems = useCallback((done: DrawItem) => {\n setDoneItems((previous) => previous.concat(done));\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n drawingContainer: drawContainer,\n deleteSelectedItem: () => {\n if (currentItem.value) {\n currentItem.value = null;\n }\n onSelectionChange?.(false);\n },\n takeSnapshot: async (): Promise<string | undefined> => {\n return viewShot.current?.capture?.();\n },\n }),\n [currentItem, onSelectionChange]\n );\n\n useEffect(() => {\n mode.value = drawingMode;\n if (currentItem.value) {\n updateDoneItems(currentItem.value);\n }\n currentItem.value = null;\n onSelectionChange?.(false);\n }, [drawingMode, mode, currentItem, updateDoneItems, onSelectionChange]);\n\n const addNewItem = runOnJS(updateDoneItems);\n\n const strokeWidth = useSharedValue<number>(2);\n\n const color = useSharedValue<hslColor>('hsl(0, 100%, 0%)');\n\n const panPosition = useSharedValue(0);\n\n const showTextInput = useSharedValue(false);\n\n const textFocus = useCallback(() => {\n textInputRef.current?.focus();\n }, []);\n\n useEffect(() => {\n if (currentItem.value?.type === 'text') {\n currentItem.value = {\n data: currentItem.value.data,\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: textVal,\n };\n }\n }, [currentItem, textVal]);\n\n const onGestureEvent = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n Context\n >(\n {\n onStart: ({ x, y }, ctx) => {\n const startX = x;\n const startY = y;\n ctx.startX = startX;\n ctx.startY = startY;\n ctx.newlyCreated = false;\n\n panPosition.value = withTiming(RIGHT_PANE_WIDTH);\n\n initialItem.value = currentItem.value;\n\n switch (currentItem.value?.type) {\n case 'ellipse':\n const cx =\n typeof currentItem.value.data.cx === 'string'\n ? parseFloat(currentItem.value.data.cx)\n : currentItem.value.data.cx || 0;\n const cy =\n typeof currentItem.value.data.cy === 'string'\n ? parseFloat(currentItem.value.data.cy)\n : currentItem.value.data.cy || 0;\n const rx =\n typeof currentItem.value.data.rx === 'string'\n ? parseFloat(currentItem.value.data.rx)\n : currentItem.value.data.rx || 0;\n const ry =\n typeof currentItem.value.data.ry === 'string'\n ? parseFloat(currentItem.value.data.ry)\n : currentItem.value.data.ry || 0;\n\n if (\n startX <= cx + THRESHOLD &&\n startX >= cx - THRESHOLD &&\n startY <= cy - ry + THRESHOLD &&\n startY >= cy - ry - THRESHOLD\n ) {\n ctx.zone = 'TOP';\n } else if (\n startX <= cx + THRESHOLD &&\n startX >= cx - THRESHOLD &&\n startY <= cy + ry + THRESHOLD &&\n startY >= cy + ry - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM';\n } else if (\n startY <= cy + THRESHOLD &&\n startY >= cy - THRESHOLD &&\n startX <= cx - rx + THRESHOLD &&\n startX >= cx - rx - THRESHOLD\n ) {\n ctx.zone = 'LEFT';\n } else if (\n startY <= cy + THRESHOLD &&\n startY >= cy - THRESHOLD &&\n startX <= cx + rx + THRESHOLD &&\n startX >= cx + rx - THRESHOLD\n ) {\n ctx.zone = 'RIGHT';\n } else if (\n ((rx > 0 && startX > cx - rx && startX < cx + rx) ||\n (rx < 0 && startX < cx - rx && startX > cx + rx)) &&\n ((ry > 0 && startY > cy - ry && startY < cy + ry) ||\n (ry < 0 && startY < cy - ry && startY > cy + ry))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'rectangle':\n const x =\n typeof currentItem.value.data.x === 'string'\n ? parseFloat(currentItem.value.data.x)\n : currentItem.value.data.x || 0;\n const y =\n typeof currentItem.value.data.y === 'string'\n ? parseFloat(currentItem.value.data.y)\n : currentItem.value.data.y || 0;\n const height =\n typeof currentItem.value.data.height === 'string'\n ? parseFloat(currentItem.value.data.height)\n : currentItem.value.data.height || 0;\n const width =\n typeof currentItem.value.data.width === 'string'\n ? parseFloat(currentItem.value.data.width)\n : currentItem.value.data.width || 0;\n\n if (startX <= x + THRESHOLD && startX >= x - THRESHOLD) {\n if (startY <= y + THRESHOLD && startY >= y - THRESHOLD) {\n ctx.zone = 'TOP_LEFT';\n } else if (\n startY <= y + height + THRESHOLD &&\n startY >= y + height - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM_LEFT';\n }\n } else if (\n startX <= x + width + THRESHOLD &&\n startX >= x + width - THRESHOLD\n ) {\n if (startY <= y + THRESHOLD && startY >= y - THRESHOLD) {\n ctx.zone = 'TOP_RIGHT';\n } else if (\n startY <= y + height + THRESHOLD &&\n startY >= y + height - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM_RIGHT';\n }\n } else if (\n ((width > 0 && startX > x && startX < x + width) ||\n (width < 0 && startX < x && startX > x + width)) &&\n ((height > 0 && startY > y && startY < y + height) ||\n (height < 0 && startY < y && startY > y + height))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'doubleHead':\n case 'singleHead':\n const x1 =\n typeof currentItem.value.data.x1 === 'string'\n ? parseFloat(currentItem.value.data.x1)\n : currentItem.value.data.x1 || 0;\n const y1 =\n typeof currentItem.value.data.y1 === 'string'\n ? parseFloat(currentItem.value.data.y1)\n : currentItem.value.data.y1 || 0;\n const x2 =\n typeof currentItem.value.data.x2 === 'string'\n ? parseFloat(currentItem.value.data.x2)\n : currentItem.value.data.x2 || 0;\n const y2 =\n typeof currentItem.value.data.y2 === 'string'\n ? parseFloat(currentItem.value.data.y2)\n : currentItem.value.data.y2 || 0;\n\n if (\n startX <= x1 + THRESHOLD &&\n startX >= x1 - THRESHOLD &&\n startY <= y1 + THRESHOLD &&\n startY >= y1 - THRESHOLD\n ) {\n ctx.zone = 'TOP';\n } else if (\n startX <= x2 + THRESHOLD &&\n startX >= x2 - THRESHOLD &&\n startY - THRESHOLD <= y2 + THRESHOLD &&\n startY + THRESHOLD >= y2 - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM';\n } else if (\n pDistance({ x: startX, y: startY }, { x1, x2, y1, y2 }) <=\n THRESHOLD &&\n ((startX > x1 && startX < x2) || (startX < x1 && startX > x2)) &&\n ((startY > y1 && startY < y2) || (startY < y1 && startY > y2))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'text':\n const xText =\n typeof currentItem.value.data.x === 'string'\n ? parseFloat(currentItem.value.data.x)\n : currentItem.value.data.x || 0;\n const yText =\n typeof currentItem.value.data.y === 'string'\n ? parseFloat(currentItem.value.data.y)\n : currentItem.value.data.y || 0;\n const widthText =\n typeof currentItem.value.data.width === 'string'\n ? parseFloat(currentItem.value.data.width)\n : currentItem.value.data.width || 0;\n const heightText =\n typeof currentItem.value.data.height === 'string'\n ? parseFloat(currentItem.value.data.height)\n : currentItem.value.data.height || 0;\n\n if (\n startX <= xText + THRESHOLD &&\n startX >= xText - THRESHOLD &&\n startY <= yText + heightText / 2 + THRESHOLD &&\n startY >= yText + heightText / 2 - THRESHOLD\n ) {\n ctx.zone = 'LEFT';\n } else if (\n startX <= xText + widthText + THRESHOLD &&\n startX >= xText + widthText - THRESHOLD &&\n startY <= yText + heightText / 2 + THRESHOLD &&\n startY >= yText + heightText / 2 - THRESHOLD\n ) {\n ctx.zone = 'RIGHT';\n } else if (\n ((widthText > 0 &&\n startX > xText &&\n startX < xText + widthText) ||\n (widthText < 0 &&\n startX < xText &&\n startX > xText + widthText)) &&\n ((heightText > 0 &&\n startY > yText &&\n startY < yText + heightText) ||\n (heightText < 0 &&\n startY < yText &&\n startY > yText + heightText))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'pen':\n if (\n currentItem.value.data.some(\n (p) =>\n startX <= p.x + THRESHOLD &&\n startX >= p.x - THRESHOLD &&\n startY <= p.y + THRESHOLD &&\n startY >= p.y - THRESHOLD\n )\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n break;\n default:\n ctx.zone = 'OUT';\n initialItem.value = null;\n break;\n }\n },\n onActive: ({ x, y, translationX, translationY }, ctx) => {\n const { startX, startY, zone, newlyCreated } = ctx;\n if (zone === 'OUT' && newlyCreated === false) {\n ctx.newlyCreated = true;\n if (mode.value === 'text') {\n runOnJS(setTextVal)('');\n }\n\n drawNewItem(\n mode,\n currentItem,\n addNewItem,\n { x: startX, y: startY },\n { textBaseHeight, strokeWidth, color }\n );\n onSelectionChange && runOnJS(onSelectionChange)(true);\n }\n switch (currentItem.value?.type) {\n case 'pen':\n if (\n initialItem.value?.type === currentItem.value.type &&\n zone === 'CENTER'\n ) {\n currentItem.value = {\n type: 'pen',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: initialItem.value.data.map((p) => ({\n x: p.x + translationX,\n y: p.y + translationY,\n })),\n };\n } else {\n currentItem.value = {\n type: 'pen',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: currentItem.value.data.concat({\n x: x,\n y: y,\n }),\n };\n }\n break;\n case 'ellipse':\n if (initialItem.value?.type === currentItem.value.type) {\n const rx =\n typeof initialItem.value.data.rx === 'string'\n ? parseFloat(initialItem.value?.data.rx)\n : initialItem.value.data.rx || 0;\n\n const ry =\n typeof initialItem.value.data.ry === 'string'\n ? parseFloat(initialItem.value.data.ry)\n : initialItem.value.data.ry || 0;\n\n const cx =\n typeof initialItem.value.data.cx === 'string'\n ? parseFloat(initialItem.value.data.cx)\n : initialItem.value.data.cx || 0;\n\n const cy =\n typeof initialItem.value.data.cy === 'string'\n ? parseFloat(initialItem.value.data.cy)\n : initialItem.value.data.cy || 0;\n\n switch (zone) {\n case 'TOP':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx,\n cy: cy + translationY,\n rx: rx,\n ry: ry - translationY,\n },\n };\n break;\n case 'BOTTOM':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx,\n cy: cy + translationY,\n rx: rx,\n ry: ry + translationY,\n },\n };\n break;\n case 'LEFT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx + translationX,\n cy: cy,\n rx: rx - translationX,\n ry: ry,\n },\n };\n break;\n case 'RIGHT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx + translationX,\n cy: cy,\n rx: rx + translationX,\n ry: ry,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx + translationX,\n cy: cy + translationY,\n rx: rx,\n ry: ry,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: startX + translationX,\n cy: startY + translationY,\n rx: translationX,\n ry: translationY,\n },\n };\n }\n\n break;\n case 'rectangle':\n if (initialItem.value?.type === currentItem.value.type) {\n const height =\n typeof initialItem.value?.data.height === 'string'\n ? parseFloat(initialItem.value?.data.height)\n : initialItem.value?.data.height || 0;\n\n const width =\n typeof initialItem.value?.data.width === 'string'\n ? parseFloat(initialItem.value?.data.width)\n : initialItem.value?.data.width || 0;\n\n const x =\n typeof initialItem.value?.data.x === 'string'\n ? parseFloat(initialItem.value?.data.x)\n : initialItem.value?.data.x || 0;\n\n const y =\n typeof initialItem.value?.data.y === 'string'\n ? parseFloat(initialItem.value?.data.y)\n : initialItem.value?.data.y || 0;\n\n switch (zone) {\n case 'TOP_LEFT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: startX + translationX,\n y: startY + translationY,\n width: width - translationX,\n height: height - translationY,\n },\n };\n break;\n case 'TOP_RIGHT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: x,\n y: startY + translationY,\n width: width + translationX,\n height: height - translationY,\n },\n };\n break;\n case 'BOTTOM_LEFT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: startX + translationX,\n y: y,\n width: width - translationX,\n height: height + translationY,\n },\n };\n break;\n case 'BOTTOM_RIGHT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: x,\n y: y,\n width: width + translationX,\n height: height + translationY,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: x + translationX,\n y: y + translationY,\n width: width,\n height: height,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: currentItem.value.data.x,\n y: currentItem.value.data.y,\n width: translationX,\n height: translationY,\n },\n };\n }\n break;\n case 'singleHead':\n case 'doubleHead':\n if (initialItem.value?.type === currentItem.value.type) {\n const x1 =\n typeof initialItem.value?.data.x1 === 'string'\n ? parseFloat(initialItem.value?.data.x1)\n : initialItem.value?.data.x1 || 0;\n\n const y1 =\n typeof initialItem.value?.data.y1 === 'string'\n ? parseFloat(initialItem.value?.data.y1)\n : initialItem.value?.data.y1 || 0;\n\n const x2 =\n typeof initialItem.value?.data.x2 === 'string'\n ? parseFloat(initialItem.value?.data.x2)\n : initialItem.value?.data.x2 || 0;\n\n const y2 =\n typeof initialItem.value?.data.y2 === 'string'\n ? parseFloat(initialItem.value?.data.y2)\n : initialItem.value?.data.y2 || 0;\n\n switch (zone) {\n case 'TOP':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: x1 + translationX,\n y1: y1 + translationY,\n x2: x2,\n y2: y2,\n },\n };\n break;\n case 'BOTTOM':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: x1,\n y1: y1,\n x2: x2 + translationX,\n y2: y2 + translationY,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: x1 + translationX,\n y1: y1 + translationY,\n x2: x2 + translationX,\n y2: y2 + translationY,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: startX,\n y1: startY,\n x2: startX + translationX,\n y2: startY + translationY,\n },\n };\n }\n break;\n case 'text':\n if (initialItem.value?.type === currentItem.value.type) {\n const xText =\n typeof initialItem.value?.data.x === 'string'\n ? parseFloat(initialItem.value?.data.x)\n : initialItem.value?.data.x || 0;\n const yText =\n typeof initialItem.value?.data.y === 'string'\n ? parseFloat(initialItem.value?.data.y)\n : initialItem.value?.data.y || 0;\n const widthText =\n typeof initialItem.value?.data.width === 'string'\n ? parseFloat(initialItem.value?.data.width)\n : initialItem.value?.data.width || 0;\n const heightText =\n typeof initialItem.value?.data.height === 'string'\n ? parseFloat(initialItem.value?.data.height)\n : initialItem.value?.data.height || 0;\n\n switch (zone) {\n case 'LEFT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: xText + translationX,\n y: yText,\n width: widthText - translationX,\n height: heightText,\n },\n };\n break;\n case 'RIGHT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: xText,\n y: yText,\n width: widthText + translationX,\n height: heightText,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: xText + translationX,\n y: yText + translationY,\n width: widthText,\n height: heightText,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: startX + translationX,\n y: startY + translationY,\n width: currentItem.value.data.width,\n height: currentItem.value.data.height,\n },\n };\n }\n }\n },\n onEnd: (_event) => {\n panPosition.value = withTiming(0);\n\n if (currentItem.value?.type === 'text') {\n runOnJS(textFocus)();\n\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: currentItem.value.data,\n text:\n currentItem.value.text !== DEFAULT_TEXT\n ? currentItem.value.text ?? ''\n : '',\n };\n }\n },\n },\n []\n );\n\n const rightPaneStyle = useAnimatedStyle(() => {\n return {\n transform: [{ translateX: panPosition.value }],\n };\n }, [panPosition.value]);\n\n useEffect(() => {\n const sudDidHide = Keyboard.addListener('keyboardDidHide', () => {\n showTextInput.value = false;\n });\n\n const sudDidShow = Keyboard.addListener('keyboardDidShow', (event) => {\n // avoid events triggered by InputAccessoryView\n if (event.endCoordinates.height > 100) {\n showTextInput.value = true;\n }\n });\n\n // cleanup function\n return () => {\n sudDidShow.remove();\n sudDidHide.remove();\n };\n }, [showTextInput]);\n\n const textInputRef = useRef<TextInput>(null);\n\n const keyboardAvoidingViewStyle = useAnimatedStyle(() => {\n return {\n height: 'auto',\n backgroundColor: 'white',\n display: 'flex',\n opacity: showTextInput.value ? withTiming(1) : withTiming(0),\n };\n }, [showTextInput.value]);\n\n const textInputStyle = useAnimatedStyle(() => {\n return {\n display: showTextInput.value ? 'flex' : 'none',\n opacity: showTextInput.value ? withTiming(1) : withTiming(0),\n };\n }, [showTextInput.value]);\n\n useAnimatedReaction(\n () => {\n return { strokeWidth: strokeWidth.value, color: color.value };\n },\n ({ strokeWidth, color }: { strokeWidth: number; color: hslColor }) => {\n switch (currentItem.value?.type) {\n case 'singleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'doubleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'ellipse':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'rectangle':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n\n case 'pen':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'text':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n text: currentItem.value.text,\n };\n break;\n }\n },\n [strokeWidth.value, color.value]\n );\n\n const onPressItem = useCallback(\n (item: DrawItem, index: number) => () => {\n onSelectionChange?.(true);\n\n const previousItem = currentItem.value;\n\n strokeWidth.value = item.strokeWidth;\n color.value = item.color;\n currentItem.value = item;\n\n setDoneItems((done) => {\n const copy = [...done];\n copy.splice(index, 1);\n return copy;\n });\n\n if (previousItem) {\n updateDoneItems(previousItem);\n }\n\n if (item.type === 'text') {\n setTextVal(item.text ?? '');\n } else {\n textInputRef.current?.blur();\n }\n },\n [color, currentItem, strokeWidth, updateDoneItems, onSelectionChange]\n );\n\n const onTextHeightChange = useCallback(\n (height: number) => {\n onTextHeightUpdate(currentItem, textBaseHeight, height);\n },\n [currentItem, textBaseHeight]\n );\n\n const calculateSizes = useCallback(\n (imageWidth: number, imageHeight: number) => {\n if (drawRegion) {\n setOriginalImageSize({ width: imageWidth, height: imageHeight });\n\n const ratioImageHeight =\n Math.round(((imageHeight * drawRegion.width) / imageWidth) * 100) /\n 100;\n\n if (ratioImageHeight < drawRegion.height) {\n setImageSize({\n width: drawRegion.width,\n height: ratioImageHeight,\n });\n } else {\n setImageSize({\n height: drawRegion.height,\n width:\n Math.round(\n ((imageWidth * drawRegion.height) / imageHeight) * 100\n ) / 100,\n });\n }\n }\n },\n [drawRegion]\n );\n\n useEffect(() => {\n if (drawRegion && image) {\n if (typeof image === 'number') {\n const infos = Image.resolveAssetSource(image);\n\n calculateSizes(infos.width, infos.height);\n } else if (image.uri) {\n Image.getSize(image.uri, (imageWidth, imageHeight) => {\n calculateSizes(imageWidth, imageHeight);\n });\n }\n }\n }, [image, drawRegion, calculateSizes]);\n\n return (\n <View style={styles.container}>\n <View\n style={styles.drawZone}\n onLayout={(event) => {\n setDrawRegion({\n height: event.nativeEvent.layout.height,\n width: event.nativeEvent.layout.width,\n });\n }}\n >\n <PanGestureHandler\n activeOffsetX={2}\n activeOffsetY={2}\n onGestureEvent={onGestureEvent}\n >\n <Animated.View style={imageSize || drawRegion}>\n <View ref={drawContainer}>\n {image ? (\n imageSize && originalImageSize ? (\n <ViewShot\n ref={viewShot}\n options={{\n format: 'jpg',\n quality: 1,\n ...originalImageSize,\n }}\n style={imageSize}\n >\n <ImageBackground source={image} style={styles.bgImage}>\n <DrawPad\n currentItem={currentItem}\n doneItems={doneItems}\n onPressItem={onPressItem}\n onTextHeightChange={onTextHeightChange}\n />\n </ImageBackground>\n </ViewShot>\n ) : null\n ) : drawRegion ? (\n <ViewShot\n ref={viewShot}\n options={{\n format: 'jpg',\n quality: 1,\n ...drawRegion,\n }}\n style={drawRegion}\n >\n <DrawPad\n currentItem={currentItem}\n doneItems={doneItems}\n onPressItem={onPressItem}\n onTextHeightChange={onTextHeightChange}\n />\n </ViewShot>\n ) : null}\n </View>\n </Animated.View>\n </PanGestureHandler>\n\n <Animated.View style={[styles.rightPaneBaseStyle, rightPaneStyle]}>\n <View style={styles.strokeSliderContainer}>\n <StrokeSlider minValue={2} maxValue={10} stroke={strokeWidth} />\n </View>\n <View style={styles.colorSliderContainer}>\n <ColorSlider color={color} linearGradient={linearGradient} />\n </View>\n </Animated.View>\n </View>\n {Platform.OS === 'ios' ? (\n <InputAccessoryView>\n <AnimatedTextInput\n ref={textInputRef}\n style={[styles.textInput, textInputStyle]}\n onEndEditing={textInputRef.current?.clear}\n onChangeText={setTextVal}\n value={textVal}\n autoCorrect={false}\n />\n </InputAccessoryView>\n ) : (\n <AnimatedKeyboardAvoidingView\n behavior=\"position\"\n style={keyboardAvoidingViewStyle}\n >\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 </AnimatedKeyboardAvoidingView>\n )}\n </View>\n );\n});\n\nexport default DrawCore;\n"]}
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":["React","useCallback","useEffect","useImperativeHandle","useRef","useState","StyleSheet","TextInput","View","Keyboard","ImageBackground","Image","Platform","InputAccessoryView","Animated","runOnJS","useAnimatedGestureHandler","useAnimatedReaction","useAnimatedStyle","useSharedValue","withTiming","PanGestureHandler","ColorSlider","StrokeSlider","DrawPad","ViewShot","RIGHT_PANE_WIDTH","styles","create","container","flex","drawZone","justifyContent","alignItems","backgroundColor","rightPaneBaseStyle","position","right","top","bottom","width","marginVertical","borderTopLeftRadius","borderBottomLeftRadius","paddingVertical","strokeSliderContainer","paddingBottom","borderBottomColor","borderBottomWidth","colorSliderContainer","paddingTop","bgImage","height","textInput","paddingHorizontal","fontSize","color","pDistance","point","line","x1","x2","y1","y2","x","y","A","B","C","D","dot","len_sq","param","xx","yy","dx","dy","Math","sqrt","AnimatedTextInput","createAnimatedComponent","DEFAULT_TEXT","THRESHOLD","drawNewItem","mode","currentItem","updateDoneItems","style","value","type","data","cx","cy","rx","ry","strokeWidth","textBaseHeight","text","onTextHeightUpdate","DrawCore","forwardRef","drawingMode","image","linearGradient","onSelectionChange","ref","drawRegion","setDrawRegion","originalImageSize","setOriginalImageSize","imageSize","setImageSize","drawContainer","viewShot","textVal","setTextVal","initialItem","doneItems","setDoneItems","done","previous","concat","drawingContainer","deleteSelectedItem","takeSnapshot","current","capture","addNewItem","panPosition","showTextInput","textFocus","textInputRef","focus","onGestureEvent","onStart","ctx","startX","startY","newlyCreated","parseFloat","zone","xText","yText","widthText","heightText","some","p","onActive","translationX","translationY","map","onEnd","_event","rightPaneStyle","transform","translateX","sudDidHide","addListener","sudDidShow","event","endCoordinates","remove","textInputContainerStyle","display","opacity","textInputStyle","onPressItem","item","index","previousItem","copy","splice","blur","onTextHeightChange","calculateSizes","imageWidth","imageHeight","ratioImageHeight","round","infos","resolveAssetSource","uri","getSize","nativeEvent","layout","format","quality","OS","clear"],"mappings":"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","sourcesContent":["import React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport {\n StyleSheet,\n TextInput,\n View,\n Keyboard,\n ImageBackground,\n Image,\n ImageRequireSource,\n ImageURISource,\n ViewProps,\n Platform,\n InputAccessoryView,\n} from 'react-native';\nimport Animated, {\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedReaction,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\nimport ColorSlider from './ColorSlider';\nimport StrokeSlider from './StrokeSlider';\nimport type {\n DrawItem,\n DrawItemType,\n DrawCoreProps,\n hslColor,\n Size,\n} from '../../types';\nimport DrawPad from './DrawPad';\nimport ViewShot from 'react-native-view-shot';\n\nconst RIGHT_PANE_WIDTH = 60;\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n drawZone: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'white',\n },\n rightPaneBaseStyle: {\n position: 'absolute',\n right: 0,\n top: 0,\n bottom: 0,\n backgroundColor: '#000000cc',\n width: RIGHT_PANE_WIDTH,\n justifyContent: 'space-evenly',\n marginVertical: 20,\n borderTopLeftRadius: 20,\n borderBottomLeftRadius: 20,\n paddingVertical: 30,\n },\n strokeSliderContainer: {\n flex: 1,\n paddingBottom: 15,\n borderBottomColor: '#000000',\n borderBottomWidth: 2,\n },\n colorSliderContainer: { flex: 1, paddingTop: 15 },\n bgImage: { width: '100%', height: '100%' },\n textInput: {\n backgroundColor: '#000000c5',\n paddingVertical: 16,\n paddingHorizontal: 24,\n fontSize: 16,\n color: 'white',\n width: '100%',\n },\n});\n\nfunction pDistance(\n point: { x: number; y: number },\n line: { x1: number; x2: number; y1: number; y2: number }\n) {\n 'worklet';\n const { x1, x2, y1, y2 } = line;\n const { x, y } = point;\n\n var A = x - x1;\n var B = y - y1;\n var C = x2 - x1;\n var D = y2 - y1;\n\n var dot = A * C + B * D;\n var len_sq = C * C + D * D;\n var param = -1;\n if (len_sq !== 0) {\n //in case of 0 length line\n param = dot / len_sq;\n }\n\n var xx, yy;\n\n if (param < 0) {\n xx = x1;\n yy = y1;\n } else if (param > 1) {\n xx = x2;\n yy = y2;\n } else {\n xx = x1 + param * C;\n yy = y1 + param * D;\n }\n\n var dx = x - xx;\n var dy = y - yy;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nconst AnimatedTextInput = Animated.createAnimatedComponent(TextInput);\n\nconst DEFAULT_TEXT = '';\n\nconst THRESHOLD = 20;\n\ntype Context = {\n startX: number;\n startY: number;\n newlyCreated: boolean;\n zone?:\n | 'TOP'\n | 'BOTTOM'\n | 'LEFT'\n | 'RIGHT'\n | 'TOP_LEFT'\n | 'TOP_RIGHT'\n | 'BOTTOM_LEFT'\n | 'BOTTOM_RIGHT'\n | 'CENTER'\n | 'OUT';\n};\n\nconst drawNewItem = (\n mode: Animated.SharedValue<DrawItemType>,\n currentItem: Animated.SharedValue<DrawItem | null>,\n updateDoneItems: (item: DrawItem) => void,\n position: { x: number; y: number },\n style: {\n textBaseHeight: Animated.SharedValue<number | null>;\n strokeWidth: Animated.SharedValue<number>;\n color: Animated.SharedValue<hslColor>;\n }\n) => {\n 'worklet';\n\n if (currentItem.value) {\n runOnJS(updateDoneItems)(currentItem.value);\n }\n\n switch (mode.value) {\n case 'ellipse':\n currentItem.value = {\n type: mode.value,\n data: {\n cx: position.x,\n cy: position.y,\n rx: 0,\n ry: 0,\n },\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n case 'rectangle':\n currentItem.value = {\n type: mode.value,\n data: { x: position.x, y: position.y, width: 0, height: 0 },\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n case 'singleHead':\n case 'doubleHead':\n currentItem.value = {\n type: mode.value,\n data: {\n x1: position.x,\n y1: position.y,\n x2: position.x,\n y2: position.y,\n },\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n case 'text':\n currentItem.value = {\n type: mode.value,\n data: {\n x: position.x,\n y: position.y,\n width: 200,\n height: style.textBaseHeight.value || 0,\n },\n strokeWidth: style.strokeWidth.value,\n text: DEFAULT_TEXT,\n color: style.color.value,\n };\n break;\n case 'pen':\n currentItem.value = {\n type: mode.value,\n data: [],\n strokeWidth: style.strokeWidth.value,\n color: style.color.value,\n };\n break;\n }\n};\n\nconst onTextHeightUpdate = (\n currentItem: Animated.SharedValue<DrawItem | null>,\n textBaseHeight: Animated.SharedValue<number | null>,\n height: number\n) => {\n 'worklet';\n if (currentItem.value?.type === 'text') {\n textBaseHeight.value = textBaseHeight.value || height;\n\n currentItem.value = {\n data: {\n ...currentItem.value.data,\n height: height,\n },\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n };\n }\n};\n\nconst DrawCore = React.forwardRef<\n DrawCoreProps,\n {\n drawingMode: DrawItemType;\n image?: ImageRequireSource | ImageURISource;\n linearGradient: React.ComponentType<{ colors: any[] } & ViewProps>;\n onSelectionChange?: (selected: boolean) => void;\n }\n>(({ drawingMode, image, linearGradient, onSelectionChange }, ref) => {\n const mode = useSharedValue<DrawItemType>('pen');\n\n const [drawRegion, setDrawRegion] = useState<Size | null>(null);\n\n const [originalImageSize, setOriginalImageSize] = useState<Size | null>(null);\n\n const [imageSize, setImageSize] = useState<Size | null>(null);\n\n const drawContainer = useRef<View>(null);\n\n const viewShot = useRef<ViewShot>(null);\n\n const [textVal, setTextVal] = useState<string>('');\n\n const currentItem = useSharedValue<DrawItem | null>(null);\n\n const initialItem = useSharedValue<DrawItem | null>(null);\n\n const [doneItems, setDoneItems] = useState<DrawItem[]>([]);\n\n const textBaseHeight = useSharedValue<number | null>(null);\n\n const updateDoneItems = useCallback((done: DrawItem) => {\n setDoneItems((previous) => previous.concat(done));\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n drawingContainer: drawContainer,\n deleteSelectedItem: () => {\n if (currentItem.value) {\n currentItem.value = null;\n }\n onSelectionChange?.(false);\n },\n takeSnapshot: async (): Promise<string | undefined> => {\n return viewShot.current?.capture?.();\n },\n }),\n [currentItem, onSelectionChange]\n );\n\n useEffect(() => {\n mode.value = drawingMode;\n if (currentItem.value) {\n updateDoneItems(currentItem.value);\n }\n currentItem.value = null;\n onSelectionChange?.(false);\n }, [drawingMode, mode, currentItem, updateDoneItems, onSelectionChange]);\n\n const addNewItem = runOnJS(updateDoneItems);\n\n const strokeWidth = useSharedValue<number>(2);\n\n const color = useSharedValue<hslColor>('hsl(0, 100%, 0%)');\n\n const panPosition = useSharedValue(0);\n\n const showTextInput = useSharedValue(false);\n\n const textFocus = useCallback(() => {\n textInputRef.current?.focus();\n }, []);\n\n useEffect(() => {\n if (currentItem.value?.type === 'text') {\n currentItem.value = {\n data: currentItem.value.data,\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: textVal,\n };\n }\n }, [currentItem, textVal]);\n\n const onGestureEvent = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n Context\n >(\n {\n onStart: ({ x, y }, ctx) => {\n const startX = x;\n const startY = y;\n ctx.startX = startX;\n ctx.startY = startY;\n ctx.newlyCreated = false;\n\n panPosition.value = withTiming(RIGHT_PANE_WIDTH);\n\n initialItem.value = currentItem.value;\n\n switch (currentItem.value?.type) {\n case 'ellipse':\n const cx =\n typeof currentItem.value.data.cx === 'string'\n ? parseFloat(currentItem.value.data.cx)\n : currentItem.value.data.cx || 0;\n const cy =\n typeof currentItem.value.data.cy === 'string'\n ? parseFloat(currentItem.value.data.cy)\n : currentItem.value.data.cy || 0;\n const rx =\n typeof currentItem.value.data.rx === 'string'\n ? parseFloat(currentItem.value.data.rx)\n : currentItem.value.data.rx || 0;\n const ry =\n typeof currentItem.value.data.ry === 'string'\n ? parseFloat(currentItem.value.data.ry)\n : currentItem.value.data.ry || 0;\n\n if (\n startX <= cx + THRESHOLD &&\n startX >= cx - THRESHOLD &&\n startY <= cy - ry + THRESHOLD &&\n startY >= cy - ry - THRESHOLD\n ) {\n ctx.zone = 'TOP';\n } else if (\n startX <= cx + THRESHOLD &&\n startX >= cx - THRESHOLD &&\n startY <= cy + ry + THRESHOLD &&\n startY >= cy + ry - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM';\n } else if (\n startY <= cy + THRESHOLD &&\n startY >= cy - THRESHOLD &&\n startX <= cx - rx + THRESHOLD &&\n startX >= cx - rx - THRESHOLD\n ) {\n ctx.zone = 'LEFT';\n } else if (\n startY <= cy + THRESHOLD &&\n startY >= cy - THRESHOLD &&\n startX <= cx + rx + THRESHOLD &&\n startX >= cx + rx - THRESHOLD\n ) {\n ctx.zone = 'RIGHT';\n } else if (\n ((rx > 0 && startX > cx - rx && startX < cx + rx) ||\n (rx < 0 && startX < cx - rx && startX > cx + rx)) &&\n ((ry > 0 && startY > cy - ry && startY < cy + ry) ||\n (ry < 0 && startY < cy - ry && startY > cy + ry))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'rectangle':\n const x =\n typeof currentItem.value.data.x === 'string'\n ? parseFloat(currentItem.value.data.x)\n : currentItem.value.data.x || 0;\n const y =\n typeof currentItem.value.data.y === 'string'\n ? parseFloat(currentItem.value.data.y)\n : currentItem.value.data.y || 0;\n const height =\n typeof currentItem.value.data.height === 'string'\n ? parseFloat(currentItem.value.data.height)\n : currentItem.value.data.height || 0;\n const width =\n typeof currentItem.value.data.width === 'string'\n ? parseFloat(currentItem.value.data.width)\n : currentItem.value.data.width || 0;\n\n if (startX <= x + THRESHOLD && startX >= x - THRESHOLD) {\n if (startY <= y + THRESHOLD && startY >= y - THRESHOLD) {\n ctx.zone = 'TOP_LEFT';\n } else if (\n startY <= y + height + THRESHOLD &&\n startY >= y + height - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM_LEFT';\n }\n } else if (\n startX <= x + width + THRESHOLD &&\n startX >= x + width - THRESHOLD\n ) {\n if (startY <= y + THRESHOLD && startY >= y - THRESHOLD) {\n ctx.zone = 'TOP_RIGHT';\n } else if (\n startY <= y + height + THRESHOLD &&\n startY >= y + height - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM_RIGHT';\n }\n } else if (\n ((width > 0 && startX > x && startX < x + width) ||\n (width < 0 && startX < x && startX > x + width)) &&\n ((height > 0 && startY > y && startY < y + height) ||\n (height < 0 && startY < y && startY > y + height))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'doubleHead':\n case 'singleHead':\n const x1 =\n typeof currentItem.value.data.x1 === 'string'\n ? parseFloat(currentItem.value.data.x1)\n : currentItem.value.data.x1 || 0;\n const y1 =\n typeof currentItem.value.data.y1 === 'string'\n ? parseFloat(currentItem.value.data.y1)\n : currentItem.value.data.y1 || 0;\n const x2 =\n typeof currentItem.value.data.x2 === 'string'\n ? parseFloat(currentItem.value.data.x2)\n : currentItem.value.data.x2 || 0;\n const y2 =\n typeof currentItem.value.data.y2 === 'string'\n ? parseFloat(currentItem.value.data.y2)\n : currentItem.value.data.y2 || 0;\n\n if (\n startX <= x1 + THRESHOLD &&\n startX >= x1 - THRESHOLD &&\n startY <= y1 + THRESHOLD &&\n startY >= y1 - THRESHOLD\n ) {\n ctx.zone = 'TOP';\n } else if (\n startX <= x2 + THRESHOLD &&\n startX >= x2 - THRESHOLD &&\n startY - THRESHOLD <= y2 + THRESHOLD &&\n startY + THRESHOLD >= y2 - THRESHOLD\n ) {\n ctx.zone = 'BOTTOM';\n } else if (\n pDistance({ x: startX, y: startY }, { x1, x2, y1, y2 }) <=\n THRESHOLD &&\n ((startX > x1 && startX < x2) || (startX < x1 && startX > x2)) &&\n ((startY > y1 && startY < y2) || (startY < y1 && startY > y2))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'text':\n const xText =\n typeof currentItem.value.data.x === 'string'\n ? parseFloat(currentItem.value.data.x)\n : currentItem.value.data.x || 0;\n const yText =\n typeof currentItem.value.data.y === 'string'\n ? parseFloat(currentItem.value.data.y)\n : currentItem.value.data.y || 0;\n const widthText =\n typeof currentItem.value.data.width === 'string'\n ? parseFloat(currentItem.value.data.width)\n : currentItem.value.data.width || 0;\n const heightText =\n typeof currentItem.value.data.height === 'string'\n ? parseFloat(currentItem.value.data.height)\n : currentItem.value.data.height || 0;\n\n if (\n startX <= xText + THRESHOLD &&\n startX >= xText - THRESHOLD &&\n startY <= yText + heightText / 2 + THRESHOLD &&\n startY >= yText + heightText / 2 - THRESHOLD\n ) {\n ctx.zone = 'LEFT';\n } else if (\n startX <= xText + widthText + THRESHOLD &&\n startX >= xText + widthText - THRESHOLD &&\n startY <= yText + heightText / 2 + THRESHOLD &&\n startY >= yText + heightText / 2 - THRESHOLD\n ) {\n ctx.zone = 'RIGHT';\n } else if (\n ((widthText > 0 &&\n startX > xText &&\n startX < xText + widthText) ||\n (widthText < 0 &&\n startX < xText &&\n startX > xText + widthText)) &&\n ((heightText > 0 &&\n startY > yText &&\n startY < yText + heightText) ||\n (heightText < 0 &&\n startY < yText &&\n startY > yText + heightText))\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n\n break;\n case 'pen':\n if (\n currentItem.value.data.some(\n (p) =>\n startX <= p.x + THRESHOLD &&\n startX >= p.x - THRESHOLD &&\n startY <= p.y + THRESHOLD &&\n startY >= p.y - THRESHOLD\n )\n ) {\n ctx.zone = 'CENTER';\n } else {\n ctx.zone = 'OUT';\n initialItem.value = null;\n }\n break;\n default:\n ctx.zone = 'OUT';\n initialItem.value = null;\n break;\n }\n },\n onActive: ({ x, y, translationX, translationY }, ctx) => {\n const { startX, startY, zone, newlyCreated } = ctx;\n if (zone === 'OUT' && newlyCreated === false) {\n ctx.newlyCreated = true;\n if (mode.value === 'text') {\n runOnJS(setTextVal)('');\n }\n\n drawNewItem(\n mode,\n currentItem,\n addNewItem,\n { x: startX, y: startY },\n { textBaseHeight, strokeWidth, color }\n );\n onSelectionChange && runOnJS(onSelectionChange)(true);\n }\n switch (currentItem.value?.type) {\n case 'pen':\n if (\n initialItem.value?.type === currentItem.value.type &&\n zone === 'CENTER'\n ) {\n currentItem.value = {\n type: 'pen',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: initialItem.value.data.map((p) => ({\n x: p.x + translationX,\n y: p.y + translationY,\n })),\n };\n } else {\n currentItem.value = {\n type: 'pen',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: currentItem.value.data.concat({\n x: x,\n y: y,\n }),\n };\n }\n break;\n case 'ellipse':\n if (initialItem.value?.type === currentItem.value.type) {\n const rx =\n typeof initialItem.value.data.rx === 'string'\n ? parseFloat(initialItem.value?.data.rx)\n : initialItem.value.data.rx || 0;\n\n const ry =\n typeof initialItem.value.data.ry === 'string'\n ? parseFloat(initialItem.value.data.ry)\n : initialItem.value.data.ry || 0;\n\n const cx =\n typeof initialItem.value.data.cx === 'string'\n ? parseFloat(initialItem.value.data.cx)\n : initialItem.value.data.cx || 0;\n\n const cy =\n typeof initialItem.value.data.cy === 'string'\n ? parseFloat(initialItem.value.data.cy)\n : initialItem.value.data.cy || 0;\n\n switch (zone) {\n case 'TOP':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx,\n cy: cy + translationY,\n rx: rx,\n ry: ry - translationY,\n },\n };\n break;\n case 'BOTTOM':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx,\n cy: cy + translationY,\n rx: rx,\n ry: ry + translationY,\n },\n };\n break;\n case 'LEFT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx + translationX,\n cy: cy,\n rx: rx - translationX,\n ry: ry,\n },\n };\n break;\n case 'RIGHT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx + translationX,\n cy: cy,\n rx: rx + translationX,\n ry: ry,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: cx + translationX,\n cy: cy + translationY,\n rx: rx,\n ry: ry,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n cx: startX + translationX,\n cy: startY + translationY,\n rx: translationX,\n ry: translationY,\n },\n };\n }\n\n break;\n case 'rectangle':\n if (initialItem.value?.type === currentItem.value.type) {\n const height =\n typeof initialItem.value?.data.height === 'string'\n ? parseFloat(initialItem.value?.data.height)\n : initialItem.value?.data.height || 0;\n\n const width =\n typeof initialItem.value?.data.width === 'string'\n ? parseFloat(initialItem.value?.data.width)\n : initialItem.value?.data.width || 0;\n\n const x =\n typeof initialItem.value?.data.x === 'string'\n ? parseFloat(initialItem.value?.data.x)\n : initialItem.value?.data.x || 0;\n\n const y =\n typeof initialItem.value?.data.y === 'string'\n ? parseFloat(initialItem.value?.data.y)\n : initialItem.value?.data.y || 0;\n\n switch (zone) {\n case 'TOP_LEFT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: startX + translationX,\n y: startY + translationY,\n width: width - translationX,\n height: height - translationY,\n },\n };\n break;\n case 'TOP_RIGHT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: x,\n y: startY + translationY,\n width: width + translationX,\n height: height - translationY,\n },\n };\n break;\n case 'BOTTOM_LEFT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: startX + translationX,\n y: y,\n width: width - translationX,\n height: height + translationY,\n },\n };\n break;\n case 'BOTTOM_RIGHT':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: x,\n y: y,\n width: width + translationX,\n height: height + translationY,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: x + translationX,\n y: y + translationY,\n width: width,\n height: height,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: 'rectangle',\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x: currentItem.value.data.x,\n y: currentItem.value.data.y,\n width: translationX,\n height: translationY,\n },\n };\n }\n break;\n case 'singleHead':\n case 'doubleHead':\n if (initialItem.value?.type === currentItem.value.type) {\n const x1 =\n typeof initialItem.value?.data.x1 === 'string'\n ? parseFloat(initialItem.value?.data.x1)\n : initialItem.value?.data.x1 || 0;\n\n const y1 =\n typeof initialItem.value?.data.y1 === 'string'\n ? parseFloat(initialItem.value?.data.y1)\n : initialItem.value?.data.y1 || 0;\n\n const x2 =\n typeof initialItem.value?.data.x2 === 'string'\n ? parseFloat(initialItem.value?.data.x2)\n : initialItem.value?.data.x2 || 0;\n\n const y2 =\n typeof initialItem.value?.data.y2 === 'string'\n ? parseFloat(initialItem.value?.data.y2)\n : initialItem.value?.data.y2 || 0;\n\n switch (zone) {\n case 'TOP':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: x1 + translationX,\n y1: y1 + translationY,\n x2: x2,\n y2: y2,\n },\n };\n break;\n case 'BOTTOM':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: x1,\n y1: y1,\n x2: x2 + translationX,\n y2: y2 + translationY,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: x1 + translationX,\n y1: y1 + translationY,\n x2: x2 + translationX,\n y2: y2 + translationY,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: {\n x1: startX,\n y1: startY,\n x2: startX + translationX,\n y2: startY + translationY,\n },\n };\n }\n break;\n case 'text':\n if (initialItem.value?.type === currentItem.value.type) {\n const xText =\n typeof initialItem.value?.data.x === 'string'\n ? parseFloat(initialItem.value?.data.x)\n : initialItem.value?.data.x || 0;\n const yText =\n typeof initialItem.value?.data.y === 'string'\n ? parseFloat(initialItem.value?.data.y)\n : initialItem.value?.data.y || 0;\n const widthText =\n typeof initialItem.value?.data.width === 'string'\n ? parseFloat(initialItem.value?.data.width)\n : initialItem.value?.data.width || 0;\n const heightText =\n typeof initialItem.value?.data.height === 'string'\n ? parseFloat(initialItem.value?.data.height)\n : initialItem.value?.data.height || 0;\n\n switch (zone) {\n case 'LEFT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: xText + translationX,\n y: yText,\n width: widthText - translationX,\n height: heightText,\n },\n };\n break;\n case 'RIGHT':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: xText,\n y: yText,\n width: widthText + translationX,\n height: heightText,\n },\n };\n break;\n case 'CENTER':\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: xText + translationX,\n y: yText + translationY,\n width: widthText,\n height: heightText,\n },\n };\n break;\n }\n } else {\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n text: currentItem.value.text,\n data: {\n x: startX + translationX,\n y: startY + translationY,\n width: currentItem.value.data.width,\n height: currentItem.value.data.height,\n },\n };\n }\n }\n },\n onEnd: (_event) => {\n panPosition.value = withTiming(0);\n\n if (currentItem.value?.type === 'text') {\n runOnJS(textFocus)();\n\n currentItem.value = {\n type: currentItem.value.type,\n strokeWidth: currentItem.value.strokeWidth,\n color: currentItem.value.color,\n data: currentItem.value.data,\n text:\n currentItem.value.text !== DEFAULT_TEXT\n ? currentItem.value.text ?? ''\n : '',\n };\n }\n },\n },\n []\n );\n\n const rightPaneStyle = useAnimatedStyle(() => {\n return {\n transform: [{ translateX: panPosition.value }],\n };\n }, [panPosition.value]);\n\n useEffect(() => {\n const sudDidHide = Keyboard.addListener('keyboardDidHide', () => {\n showTextInput.value = false;\n });\n\n const sudDidShow = Keyboard.addListener('keyboardDidShow', (event) => {\n // avoid events triggered by InputAccessoryView\n if (event.endCoordinates.height > 100) {\n showTextInput.value = true;\n }\n });\n\n // cleanup function\n return () => {\n sudDidShow.remove();\n sudDidHide.remove();\n };\n }, [showTextInput]);\n\n const textInputRef = useRef<TextInput>(null);\n\n const textInputContainerStyle = useAnimatedStyle(() => {\n return {\n height: 'auto',\n backgroundColor: 'white',\n display: 'flex',\n opacity: showTextInput.value ? withTiming(1) : withTiming(0),\n };\n }, [showTextInput.value]);\n\n const textInputStyle = useAnimatedStyle(() => {\n return {\n display: showTextInput.value ? 'flex' : 'none',\n opacity: showTextInput.value ? withTiming(1) : withTiming(0),\n };\n }, [showTextInput.value]);\n\n useAnimatedReaction(\n () => {\n return { strokeWidth: strokeWidth.value, color: color.value };\n },\n ({ strokeWidth, color }: { strokeWidth: number; color: hslColor }) => {\n switch (currentItem.value?.type) {\n case 'singleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'doubleHead':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'ellipse':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'rectangle':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n\n case 'pen':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n };\n break;\n case 'text':\n currentItem.value = {\n type: currentItem.value.type,\n data: currentItem.value.data,\n strokeWidth,\n color,\n text: currentItem.value.text,\n };\n break;\n }\n },\n [strokeWidth.value, color.value]\n );\n\n const onPressItem = useCallback(\n (item: DrawItem, index: number) => () => {\n onSelectionChange?.(true);\n\n const previousItem = currentItem.value;\n\n strokeWidth.value = item.strokeWidth;\n color.value = item.color;\n currentItem.value = item;\n\n setDoneItems((done) => {\n const copy = [...done];\n copy.splice(index, 1);\n return copy;\n });\n\n if (previousItem) {\n updateDoneItems(previousItem);\n }\n\n if (item.type === 'text') {\n setTextVal(item.text ?? '');\n } else {\n textInputRef.current?.blur();\n }\n },\n [color, currentItem, strokeWidth, updateDoneItems, onSelectionChange]\n );\n\n const onTextHeightChange = useCallback(\n (height: number) => {\n onTextHeightUpdate(currentItem, textBaseHeight, height);\n },\n [currentItem, textBaseHeight]\n );\n\n const calculateSizes = useCallback(\n (imageWidth: number, imageHeight: number) => {\n if (drawRegion) {\n setOriginalImageSize({ width: imageWidth, height: imageHeight });\n\n const ratioImageHeight =\n Math.round(((imageHeight * drawRegion.width) / imageWidth) * 100) /\n 100;\n\n if (ratioImageHeight < drawRegion.height) {\n setImageSize({\n width: drawRegion.width,\n height: ratioImageHeight,\n });\n } else {\n setImageSize({\n height: drawRegion.height,\n width:\n Math.round(\n ((imageWidth * drawRegion.height) / imageHeight) * 100\n ) / 100,\n });\n }\n }\n },\n [drawRegion]\n );\n\n useEffect(() => {\n if (drawRegion && image) {\n if (typeof image === 'number') {\n const infos = Image.resolveAssetSource(image);\n\n calculateSizes(infos.width, infos.height);\n } else if (image.uri) {\n Image.getSize(image.uri, (imageWidth, imageHeight) => {\n calculateSizes(imageWidth, imageHeight);\n });\n }\n }\n }, [image, drawRegion, calculateSizes]);\n\n return (\n <View style={styles.container}>\n <View\n style={styles.drawZone}\n onLayout={(event) => {\n setDrawRegion({\n height: event.nativeEvent.layout.height,\n width: event.nativeEvent.layout.width,\n });\n }}\n >\n <PanGestureHandler\n activeOffsetX={2}\n activeOffsetY={2}\n onGestureEvent={onGestureEvent}\n >\n <Animated.View style={imageSize || drawRegion}>\n <View ref={drawContainer}>\n {image ? (\n imageSize && originalImageSize ? (\n <ViewShot\n ref={viewShot}\n options={{\n format: 'jpg',\n quality: 1,\n ...originalImageSize,\n }}\n style={imageSize}\n >\n <ImageBackground source={image} style={styles.bgImage}>\n <DrawPad\n currentItem={currentItem}\n doneItems={doneItems}\n onPressItem={onPressItem}\n onTextHeightChange={onTextHeightChange}\n />\n </ImageBackground>\n </ViewShot>\n ) : null\n ) : drawRegion ? (\n <ViewShot\n ref={viewShot}\n options={{\n format: 'jpg',\n quality: 1,\n ...drawRegion,\n }}\n style={drawRegion}\n >\n <DrawPad\n currentItem={currentItem}\n doneItems={doneItems}\n onPressItem={onPressItem}\n onTextHeightChange={onTextHeightChange}\n />\n </ViewShot>\n ) : null}\n </View>\n </Animated.View>\n </PanGestureHandler>\n\n <Animated.View style={[styles.rightPaneBaseStyle, rightPaneStyle]}>\n <View style={styles.strokeSliderContainer}>\n <StrokeSlider minValue={2} maxValue={10} stroke={strokeWidth} />\n </View>\n <View style={styles.colorSliderContainer}>\n <ColorSlider color={color} linearGradient={linearGradient} />\n </View>\n </Animated.View>\n </View>\n {Platform.OS === 'ios' ? (\n <InputAccessoryView>\n <AnimatedTextInput\n ref={textInputRef}\n style={[styles.textInput, textInputStyle]}\n onEndEditing={textInputRef.current?.clear}\n onChangeText={setTextVal}\n value={textVal}\n autoCorrect={false}\n />\n </InputAccessoryView>\n ) : (\n <Animated.View style={textInputContainerStyle}>\n <TextInput\n ref={textInputRef}\n style={styles.textInput}\n onEndEditing={textInputRef.current?.clear}\n onChangeText={setTextVal}\n value={textVal}\n autoCorrect={false}\n />\n </Animated.View>\n )}\n </View>\n );\n});\n\nexport default DrawCore;\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React, { useCallback, useRef, useState } from 'react';
|
|
2
|
-
import { Pressable, View, StyleSheet } from 'react-native';
|
|
1
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { Pressable, View, StyleSheet, Keyboard } from 'react-native';
|
|
3
3
|
import DrawCore from '../DrawCore';
|
|
4
4
|
import DoubleHeadSvg from './DoubleHeadSvg';
|
|
5
5
|
import CircleSvg from './CircleSvg';
|
|
@@ -65,6 +65,23 @@ export default function DrawWithOptions({
|
|
|
65
65
|
takeSnapshot === null || takeSnapshot === void 0 ? void 0 : takeSnapshot(drawRef.current.takeSnapshot());
|
|
66
66
|
}
|
|
67
67
|
}, [takeSnapshot]);
|
|
68
|
+
const [showToolbar, setShowToolbar] = useState(true);
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
const sudDidHide = Keyboard.addListener('keyboardDidHide', () => {
|
|
71
|
+
setShowToolbar(true);
|
|
72
|
+
});
|
|
73
|
+
const sudDidShow = Keyboard.addListener('keyboardDidShow', event => {
|
|
74
|
+
// avoid events triggered by InputAccessoryView
|
|
75
|
+
if (event.endCoordinates.height > 100) {
|
|
76
|
+
setShowToolbar(false);
|
|
77
|
+
}
|
|
78
|
+
}); // cleanup function
|
|
79
|
+
|
|
80
|
+
return () => {
|
|
81
|
+
sudDidShow.remove();
|
|
82
|
+
sudDidHide.remove();
|
|
83
|
+
};
|
|
84
|
+
}, []);
|
|
68
85
|
return /*#__PURE__*/React.createElement(View, {
|
|
69
86
|
style: styles.container
|
|
70
87
|
}, /*#__PURE__*/React.createElement(View, {
|
|
@@ -134,7 +151,7 @@ export default function DrawWithOptions({
|
|
|
134
151
|
image: image,
|
|
135
152
|
linearGradient: linearGradient,
|
|
136
153
|
onSelectionChange: setSelectedItem
|
|
137
|
-
}), /*#__PURE__*/React.createElement(View, {
|
|
154
|
+
}), showToolbar ? /*#__PURE__*/React.createElement(View, {
|
|
138
155
|
style: styles.bottomToolBar
|
|
139
156
|
}, selectedItem ? /*#__PURE__*/React.createElement(Pressable, {
|
|
140
157
|
style: styles.option,
|
|
@@ -154,6 +171,6 @@ export default function DrawWithOptions({
|
|
|
154
171
|
fill: "#fff",
|
|
155
172
|
width: 20,
|
|
156
173
|
height: 20
|
|
157
|
-
}))));
|
|
174
|
+
}))) : null);
|
|
158
175
|
}
|
|
159
176
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.tsx"],"names":["React","useCallback","useRef","useState","Pressable","View","StyleSheet","DrawCore","DoubleHeadSvg","CircleSvg","SquareSvg","ArrowSvg","TextSvg","CloseSvg","ThrashSvg","SendSvg","styles","create","container","flex","backgroundColor","option","width","height","justifyContent","alignItems","marginHorizontal","toolbar","flexDirection","paddingBottom","paddingTop","paddingHorizontal","drawOptions","sendButton","borderRadius","marginLeft","bottomToolBar","DrawWithOptions","close","takeSnapshot","linearGradient","image","drawRef","drawingMode","setDrawingMode","selectedItem","setSelectedItem","onPressSend","current","deleteSelectedItem"],"mappings":"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","sourcesContent":["import React, { useCallback, useRef, useState } from 'react';\nimport {\n Pressable,\n View,\n StyleSheet,\n ViewProps,\n ImageRequireSource,\n ImageURISource,\n} from 'react-native';\nimport DrawCore from '../DrawCore';\nimport type { DrawItemType, DrawCoreProps } from '../../types';\nimport DoubleHeadSvg from './DoubleHeadSvg';\nimport CircleSvg from './CircleSvg';\nimport SquareSvg from './SquareSvg';\nimport ArrowSvg from './ArrowSvg';\nimport TextSvg from './TextSvg';\nimport CloseSvg from './CloseSvg';\nimport ThrashSvg from './ThrashSvg';\nimport SendSvg from './SendSvg';\n\nconst styles = StyleSheet.create({\n container: { flex: 1, backgroundColor: '#000000' },\n option: {\n width: 30,\n height: 30,\n justifyContent: 'center',\n alignItems: 'center',\n marginHorizontal: 4,\n },\n toolbar: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingBottom: 30,\n paddingTop: 15,\n paddingHorizontal: 15,\n },\n drawOptions: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n sendButton: {\n backgroundColor: '#3a6cff',\n width: 48,\n height: 48,\n borderRadius: 24,\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 20,\n },\n bottomToolBar: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n alignItems: 'center',\n paddingBottom: 30,\n paddingTop: 30,\n paddingHorizontal: 20,\n },\n});\n\nexport default function DrawWithOptions({\n close,\n takeSnapshot,\n linearGradient,\n image,\n}: {\n close?: () => void;\n takeSnapshot?: (snap: Promise<string | undefined>) => void;\n linearGradient: React.ComponentType<{ colors: any[] } & ViewProps>;\n image?: ImageRequireSource | ImageURISource;\n}) {\n const drawRef = useRef<DrawCoreProps>(null);\n\n const [drawingMode, setDrawingMode] = useState<DrawItemType>('ellipse');\n\n const [selectedItem, setSelectedItem] = useState(false);\n\n const onPressSend = useCallback(() => {\n if (drawRef.current) {\n takeSnapshot?.(drawRef.current.takeSnapshot());\n }\n }, [takeSnapshot]);\n\n return (\n <View style={styles.container}>\n <View style={styles.toolbar}>\n <Pressable style={styles.option} onPress={close}>\n <CloseSvg height={20} width={20} fill=\"#ffffff\" />\n </Pressable>\n <View style={styles.drawOptions}>\n <Pressable\n style={styles.option}\n onPress={() => {\n setDrawingMode('doubleHead');\n }}\n >\n <DoubleHeadSvg\n height={20}\n width={20}\n fill=\"#ffffff\"\n opacity={drawingMode === 'doubleHead' ? 1 : 0.5}\n />\n </Pressable>\n <Pressable\n style={styles.option}\n onPress={() => {\n setDrawingMode('singleHead');\n }}\n >\n <ArrowSvg\n height={23}\n width={23}\n fill=\"#ffffff\"\n opacity={drawingMode === 'singleHead' ? 1 : 0.5}\n />\n </Pressable>\n <Pressable\n style={styles.option}\n onPress={() => {\n setDrawingMode('rectangle');\n }}\n >\n <SquareSvg\n height={27}\n width={27}\n fill=\"#ffffff\"\n opacity={drawingMode === 'rectangle' ? 1 : 0.5}\n />\n </Pressable>\n <Pressable\n style={styles.option}\n onPress={() => {\n setDrawingMode('ellipse');\n }}\n >\n <CircleSvg\n fill=\"#ffffff\"\n height={26}\n width={26}\n opacity={drawingMode === 'ellipse' ? 1 : 0.5}\n />\n </Pressable>\n\n <Pressable\n style={styles.option}\n onPress={() => {\n setDrawingMode('text');\n }}\n >\n <TextSvg\n height={28}\n width={28}\n fill=\"#ffffff\"\n opacity={drawingMode === 'text' ? 1 : 0.5}\n />\n </Pressable>\n </View>\n </View>\n <DrawCore\n ref={drawRef}\n drawingMode={drawingMode}\n image={image}\n linearGradient={linearGradient}\n onSelectionChange={setSelectedItem}\n />\n\n <View style={styles.bottomToolBar}>\n {selectedItem ? (\n <Pressable\n style={styles.option}\n onPress={() => {\n drawRef.current?.deleteSelectedItem();\n }}\n >\n <ThrashSvg width={28} height={28} fill=\"white\" />\n </Pressable>\n ) : null}\n <Pressable style={styles.sendButton} onPress={onPressSend}>\n <SendSvg fill=\"#fff\" width={20} height={20} />\n </Pressable>\n </View>\n </View>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":["React","useCallback","useEffect","useRef","useState","Pressable","View","StyleSheet","Keyboard","DrawCore","DoubleHeadSvg","CircleSvg","SquareSvg","ArrowSvg","TextSvg","CloseSvg","ThrashSvg","SendSvg","styles","create","container","flex","backgroundColor","option","width","height","justifyContent","alignItems","marginHorizontal","toolbar","flexDirection","paddingBottom","paddingTop","paddingHorizontal","drawOptions","sendButton","borderRadius","marginLeft","bottomToolBar","DrawWithOptions","close","takeSnapshot","linearGradient","image","drawRef","drawingMode","setDrawingMode","selectedItem","setSelectedItem","onPressSend","current","showToolbar","setShowToolbar","sudDidHide","addListener","sudDidShow","event","endCoordinates","remove","deleteSelectedItem"],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n Pressable,\n View,\n StyleSheet,\n ViewProps,\n ImageRequireSource,\n ImageURISource,\n Keyboard,\n} from 'react-native';\nimport DrawCore from '../DrawCore';\nimport type { DrawItemType, DrawCoreProps } from '../../types';\nimport DoubleHeadSvg from './DoubleHeadSvg';\nimport CircleSvg from './CircleSvg';\nimport SquareSvg from './SquareSvg';\nimport ArrowSvg from './ArrowSvg';\nimport TextSvg from './TextSvg';\nimport CloseSvg from './CloseSvg';\nimport ThrashSvg from './ThrashSvg';\nimport SendSvg from './SendSvg';\n\nconst styles = StyleSheet.create({\n container: { flex: 1, backgroundColor: '#000000' },\n option: {\n width: 30,\n height: 30,\n justifyContent: 'center',\n alignItems: 'center',\n marginHorizontal: 4,\n },\n toolbar: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingBottom: 30,\n paddingTop: 15,\n paddingHorizontal: 15,\n },\n drawOptions: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n sendButton: {\n backgroundColor: '#3a6cff',\n width: 48,\n height: 48,\n borderRadius: 24,\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 20,\n },\n bottomToolBar: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n alignItems: 'center',\n paddingBottom: 30,\n paddingTop: 30,\n paddingHorizontal: 20,\n },\n});\n\nexport default function DrawWithOptions({\n close,\n takeSnapshot,\n linearGradient,\n image,\n}: {\n close?: () => void;\n takeSnapshot?: (snap: Promise<string | undefined>) => void;\n linearGradient: React.ComponentType<{ colors: any[] } & ViewProps>;\n image?: ImageRequireSource | ImageURISource;\n}) {\n const drawRef = useRef<DrawCoreProps>(null);\n\n const [drawingMode, setDrawingMode] = useState<DrawItemType>('ellipse');\n\n const [selectedItem, setSelectedItem] = useState(false);\n\n const onPressSend = useCallback(() => {\n if (drawRef.current) {\n takeSnapshot?.(drawRef.current.takeSnapshot());\n }\n }, [takeSnapshot]);\n\n const [showToolbar, setShowToolbar] = useState(true);\n\n useEffect(() => {\n const sudDidHide = Keyboard.addListener('keyboardDidHide', () => {\n setShowToolbar(true);\n });\n\n const sudDidShow = Keyboard.addListener('keyboardDidShow', (event) => {\n // avoid events triggered by InputAccessoryView\n if (event.endCoordinates.height > 100) {\n setShowToolbar(false);\n }\n });\n\n // cleanup function\n return () => {\n sudDidShow.remove();\n sudDidHide.remove();\n };\n }, []);\n\n return (\n <View style={styles.container}>\n <View style={styles.toolbar}>\n <Pressable style={styles.option} onPress={close}>\n <CloseSvg height={20} width={20} fill=\"#ffffff\" />\n </Pressable>\n <View style={styles.drawOptions}>\n <Pressable\n style={styles.option}\n onPress={() => {\n setDrawingMode('doubleHead');\n }}\n >\n <DoubleHeadSvg\n height={20}\n width={20}\n fill=\"#ffffff\"\n opacity={drawingMode === 'doubleHead' ? 1 : 0.5}\n />\n </Pressable>\n <Pressable\n style={styles.option}\n onPress={() => {\n setDrawingMode('singleHead');\n }}\n >\n <ArrowSvg\n height={23}\n width={23}\n fill=\"#ffffff\"\n opacity={drawingMode === 'singleHead' ? 1 : 0.5}\n />\n </Pressable>\n <Pressable\n style={styles.option}\n onPress={() => {\n setDrawingMode('rectangle');\n }}\n >\n <SquareSvg\n height={27}\n width={27}\n fill=\"#ffffff\"\n opacity={drawingMode === 'rectangle' ? 1 : 0.5}\n />\n </Pressable>\n <Pressable\n style={styles.option}\n onPress={() => {\n setDrawingMode('ellipse');\n }}\n >\n <CircleSvg\n fill=\"#ffffff\"\n height={26}\n width={26}\n opacity={drawingMode === 'ellipse' ? 1 : 0.5}\n />\n </Pressable>\n\n <Pressable\n style={styles.option}\n onPress={() => {\n setDrawingMode('text');\n }}\n >\n <TextSvg\n height={28}\n width={28}\n fill=\"#ffffff\"\n opacity={drawingMode === 'text' ? 1 : 0.5}\n />\n </Pressable>\n </View>\n </View>\n <DrawCore\n ref={drawRef}\n drawingMode={drawingMode}\n image={image}\n linearGradient={linearGradient}\n onSelectionChange={setSelectedItem}\n />\n\n {showToolbar ? (\n <View style={styles.bottomToolBar}>\n {selectedItem ? (\n <Pressable\n style={styles.option}\n onPress={() => {\n drawRef.current?.deleteSelectedItem();\n }}\n >\n <ThrashSvg width={28} height={28} fill=\"white\" />\n </Pressable>\n ) : null}\n <Pressable style={styles.sendButton} onPress={onPressSend}>\n <SendSvg fill=\"#fff\" width={20} height={20} />\n </Pressable>\n </View>\n ) : null}\n </View>\n );\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@archireport/react-native-svg-draw",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "React Native drawing component based on SVG with editable annotations",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -48,29 +48,29 @@
|
|
|
48
48
|
"public": true
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@commitlint/config-conventional": "^
|
|
52
|
-
"@react-native-community/eslint-config": "^
|
|
53
|
-
"@release-it/conventional-changelog": "^
|
|
54
|
-
"@types/jest": "^
|
|
55
|
-
"@types/react": "^
|
|
56
|
-
"@types/react-native": "0.
|
|
57
|
-
"commitlint": "^
|
|
58
|
-
"eslint": "^7.
|
|
51
|
+
"@commitlint/config-conventional": "^16.2.4",
|
|
52
|
+
"@react-native-community/eslint-config": "^3.0.1",
|
|
53
|
+
"@release-it/conventional-changelog": "^5.0.0",
|
|
54
|
+
"@types/jest": "^27.5.0",
|
|
55
|
+
"@types/react": "^17.0.0",
|
|
56
|
+
"@types/react-native": "^0.67.6",
|
|
57
|
+
"commitlint": "^16.2.4",
|
|
58
|
+
"eslint": "^7.32.0",
|
|
59
59
|
"eslint-config-prettier": "^7.0.0",
|
|
60
60
|
"eslint-plugin-prettier": "^3.1.3",
|
|
61
61
|
"husky": "^4.2.5",
|
|
62
|
-
"jest": "^
|
|
63
|
-
"pod-install": "^0.1.
|
|
62
|
+
"jest": "^28.1.0",
|
|
63
|
+
"pod-install": "^0.1.35",
|
|
64
64
|
"prettier": "^2.0.5",
|
|
65
|
-
"react": "
|
|
66
|
-
"react-native": "0.
|
|
67
|
-
"react-native-builder-bob": "^0.18.
|
|
68
|
-
"react-native-gesture-handler": "^
|
|
69
|
-
"react-native-reanimated": "^2.
|
|
70
|
-
"react-native-svg": "^12.
|
|
65
|
+
"react": "17.0.2",
|
|
66
|
+
"react-native": "^0.68.2",
|
|
67
|
+
"react-native-builder-bob": "^0.18.2",
|
|
68
|
+
"react-native-gesture-handler": "^2.4.2",
|
|
69
|
+
"react-native-reanimated": "^2.8.0",
|
|
70
|
+
"react-native-svg": "^12.3.0",
|
|
71
71
|
"react-native-view-shot": "^3.1.2",
|
|
72
|
-
"release-it": "^
|
|
73
|
-
"typescript": "^4.
|
|
72
|
+
"release-it": "^15.0.0",
|
|
73
|
+
"typescript": "^4.4.0"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
76
76
|
"react": "*",
|