@plusscommunities/pluss-core-app 1.5.2 → 1.5.6

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.
@@ -394,7 +394,7 @@ class CommentSection extends Component {
394
394
  onConfirm: this.onPressConfirmReport,
395
395
  onCancel: this.onPressCancelReport,
396
396
  onClose: this.onPressCancelReport,
397
- text: "Are you sure?",
397
+ text: "Are you sure you want to report this comment?",
398
398
  extraContent: /*#__PURE__*/React.createElement(Text, {
399
399
  style: styles.commentReportText
400
400
  }, "This comment will be reported to our team and considered for deletion")
@@ -458,16 +458,17 @@ class CommentSection extends Component {
458
458
  name: "trash",
459
459
  type: "font-awesome",
460
460
  iconStyle: styles.commentButtonIcon
461
- }))) : null // (
462
- // !this.props.disableFlag && (
463
- // <TouchableOpacity onPress={this.onPressReportComment.bind(this, c)}>
464
- // <View style={[styles.commentButtonContainer, { backgroundColor: this.props.colourBrandingMain }]}>
465
- // <Icon name="flag" type="font-awesome" iconStyle={styles.commentButtonIcon} />
466
- // </View>
467
- // </TouchableOpacity>
468
- // )
469
- // )
470
- , /*#__PURE__*/React.createElement(Text, {
461
+ }))) : !this.props.disableFlag && /*#__PURE__*/React.createElement(TouchableOpacity, {
462
+ onPress: this.onPressReportComment.bind(this, c)
463
+ }, /*#__PURE__*/React.createElement(View, {
464
+ style: [styles.commentButtonContainer, {
465
+ backgroundColor: this.props.colourBrandingMain
466
+ }]
467
+ }, /*#__PURE__*/React.createElement(Icon, {
468
+ name: "flag",
469
+ type: "font-awesome",
470
+ iconStyle: styles.commentButtonIcon
471
+ }))), /*#__PURE__*/React.createElement(Text, {
471
472
  style: [styles.commentName, {
472
473
  fontSize: this.getAdjustedSize(13)
473
474
  }]
@@ -1 +1 @@
1
- {"version":3,"sources":["CommentSection.js"],"names":["React","Component","View","Text","TouchableOpacity","Image","StyleSheet","_","moment","connect","Icon","getPluralS","getThumb300","get1400","getSiteSettingFromState","getFirstName","getPluralOptions","getMainBrandingColourFromState","TEXT_DARKEST","BG_GREY","TEXT_LIGHT","LINEGREY","reactionActions","notificationActions","ConfirmPopup","ProfilePic","ImagePopup","InlineButton","Spinner","Services","CommentSection","constructor","props","c","setState","commentToDelete","removeComment","state","Id","then","res","console","log","newComments","filter","comments","commentToReport","commentId","reportLoading","reportComment","commentReportedStatus","catch","error","comment","navigation","navigate","threadId","entityType","entityId","processing","data","muteEntity","muteExpiry","Expiry","unmuteEntity","actual","duration","diff","asHours","Math","abs","ceil","notificationsForComments","getEntityNotificationSetting","muteLoaded","commentsLoading","hideReplyButton","threadComments","innerC","ParentId","content","isEmpty","styles","commentRepliesText","color","colourBrandingMain","User","displayName","profilePics","take","uniqBy","UserId","multiReplyContainer","map","i","marginRight","profilePic","marginLeft","length","commentReplies","onOpenThread","addingComment","componentDidMount","getNotificationSate","includes","user","hidden","getComments","componentWillUnmount","loadTimer","clearTimeout","onPressCommentImage","image","imagePopupSource","imagePopupOpen","onGoToAdd","commentReply","focusInput","getAdjustedSize","size","scaleFont","fontScale","commentsLoadStarted","current","loadingStarted","loadComments","minTime","maxBy","Timestamp","sortBy","concat","onCommentsLoaded","loadingCompleted","live","setTimeout","refreshFrequency","startedAddingComment","commentAdded","push","onCommentAdded","canRemoveComment","uid","permissions","adminPermission","closeCommentGallery","renderCommentDeleteConfirm","onPressConfirmDelete","onPressCancelDelete","renderCommentReportConfirm","onPressConfirmReport","onPressCancelReport","commentReportText","renderCommentReportStatus","isSuccess","onPressConfirmReportStatus","renderCommentImage","commentImageContainer","bind","commentImage","uri","renderComment","commentFlex","commentProfilePic","commentBlock","commentTitleRow","onPressDeleteComment","commentButtonContainer","backgroundColor","commentButtonIcon","commentName","fontSize","Comment","commentText","commentBottom","commentTime","utc","local","format","renderReplyText","renderMute","muteSpinnerContainer","isMuted","hours","getMuteRemaining","mutedFor","muteContainer","mutedForText","onUnmute","onMute","borderColor","muteButton","muteButtonInner","muteButtonIcon","muteButtonText","renderComments","commentSection","isNil","placeHolder","commentsEmpty","source","reverseOrder","reverse","showReplies","commentSectionTitleRow","alignItems","hideAddComment","goToText","commentCount","renderCommentImagePopup","renderReportLoading","reportLoadingContainer","render","commentSectionOuter","style","create","flex","paddingHorizontal","paddingVertical","borderTopColor","borderTopWidth","fontFamily","marginTop","flexDirection","borderRadius","padding","width","height","justifyContent","textAlign","paddingLeft","marginBottom","borderWidth","mapStateToProps","forwardRef"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,SAASC,IAAT,EAAeC,IAAf,EAAqBC,gBAArB,EAAuCC,KAAvC,EAA8CC,UAA9C,QAAgE,cAAhE;AACA,OAAOC,CAAP,MAAc,QAAd;AACA,OAAOC,MAAP,MAAmB,QAAnB;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,SAASC,IAAT,QAAqB,uBAArB;AACA,SAASC,UAAT,EAAqBC,WAArB,EAAkCC,OAAlC,EAA2CC,uBAA3C,EAAoEC,YAApE,EAAkFC,gBAAlF,QAA0G,WAA1G;AACA,SAASC,8BAAT,EAAyCC,YAAzC,EAAuDC,OAAvD,EAAgEC,UAAhE,EAA4EC,QAA5E,QAA4F,YAA5F;AACA,SAASC,eAAT,EAA0BC,mBAA1B,QAAqD,SAArD;AACA,SAASC,YAAT,QAA6B,gBAA7B;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,YAAT,QAA6B,gBAA7B;AACA,SAASC,OAAT,QAAwB,WAAxB;AACA,SAASC,QAAT,QAAyB,WAAzB;;AAEA,MAAMC,cAAN,SAA6B7B,SAA7B,CAAuC;AACrC8B,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;;AADiB,kDA8BIC,CAAC,IAAI;AAC1B,WAAKC,QAAL,CAAc;AAAEC,QAAAA,eAAe,EAAEF;AAAnB,OAAd;AACD,KAhCkB;;AAAA,kDAkCI,MAAM;AAC3BX,MAAAA,eAAe,CAACc,aAAhB,CAA8B,KAAKC,KAAL,CAAWF,eAAX,CAA2BG,EAAzD,EAA6DC,IAA7D,CAAkEC,GAAG,IAAI;AACvEC,QAAAA,OAAO,CAACC,GAAR,CAAY,SAAZ;AACD,OAFD;;AAGA,YAAMC,WAAW,GAAGpC,CAAC,CAACqC,MAAF,CAAS,KAAKP,KAAL,CAAWQ,QAApB,EAA8BZ,CAAC,IAAI;AACrD,eAAOA,CAAC,CAACK,EAAF,KAAS,KAAKD,KAAL,CAAWF,eAAX,CAA2BG,EAA3C;AACD,OAFmB,CAApB;;AAGA,WAAKJ,QAAL,CAAc;AACZW,QAAAA,QAAQ,EAAEF,WADE;AAEZR,QAAAA,eAAe,EAAE;AAFL,OAAd;AAID,KA7CkB;;AAAA,iDA+CG,MAAM;AAC1B,WAAKD,QAAL,CAAc;AAAEC,QAAAA,eAAe,EAAE;AAAnB,OAAd;AACD,KAjDkB;;AAAA,kDAmDIF,CAAC,IAAI;AAC1B,WAAKC,QAAL,CAAc;AAAEY,QAAAA,eAAe,EAAEb;AAAnB,OAAd;AACD,KArDkB;;AAAA,kDAuDI,MAAM;AAC3B,YAAMc,SAAS,GAAG,KAAKV,KAAL,CAAWS,eAAX,CAA2BR,EAA7C;AACA,WAAKJ,QAAL,CAAc;AAAEc,QAAAA,aAAa,EAAE,IAAjB;AAAuBF,QAAAA,eAAe,EAAE;AAAxC,OAAd,EAA8D,MAAM;AAClExB,QAAAA,eAAe,CACZ2B,aADH,CACiBF,SADjB,EAEGR,IAFH,CAEQC,GAAG,IAAI;AACX,eAAKN,QAAL,CAAc;AAAEgB,YAAAA,qBAAqB,EAAE,SAAzB;AAAoCF,YAAAA,aAAa,EAAE;AAAnD,WAAd;AACD,SAJH,EAKGG,KALH,CAKSC,KAAK,IAAI;AACdX,UAAAA,OAAO,CAACC,GAAR,CAAY,eAAZ,EAA6BU,KAA7B;AACA,eAAKlB,QAAL,CAAc;AAAEgB,YAAAA,qBAAqB,EAAE,MAAzB;AAAiCF,YAAAA,aAAa,EAAE;AAAhD,WAAd;AACD,SARH;AASD,OAVD;AAWD,KApEkB;;AAAA,iDAsEG,MAAM;AAC1B,WAAKd,QAAL,CAAc;AAAEY,QAAAA,eAAe,EAAE;AAAnB,OAAd;AACD,KAxEkB;;AAAA,wDA0EU,MAAM;AACjC,WAAKZ,QAAL,CAAc;AAAEgB,QAAAA,qBAAqB,EAAE;AAAzB,OAAd;AACD,KA5EkB;;AAAA,0CAyFJG,OAAO,IAAI;AACxBxB,MAAAA,QAAQ,CAACyB,UAAT,CAAoBC,QAApB,CAA6B,QAA7B,EAAuC,EAAE,GAAG,KAAKvB,KAAV;AAAiBwB,QAAAA,QAAQ,EAAEH,OAAO,CAACf;AAAnC,OAAvC;AACD,KA3FkB;;AAAA,oCA6FV,MAAM;AACb,YAAM;AAAEmB,QAAAA,UAAF;AAAcC,QAAAA;AAAd,UAA2B,KAAK1B,KAAtC;AACA,WAAKE,QAAL,CAAc;AAAEyB,QAAAA,UAAU,EAAE;AAAd,OAAd,EAAoC,YAAY;AAC9C,YAAI;AACF,gBAAM;AAAEC,YAAAA;AAAF,cAAW,MAAMrC,mBAAmB,CAACsC,UAApB,CAA+BJ,UAA/B,EAA2CC,QAA3C,CAAvB,CADE,CAEF;;AACA,gBAAMI,UAAU,GAAGtD,MAAM,CAACoD,IAAI,CAACG,MAAN,CAAzB;AACA,eAAK7B,QAAL,CAAc;AAAE4B,YAAAA,UAAF;AAAcH,YAAAA,UAAU,EAAE;AAA1B,WAAd;AACD,SALD,CAKE,OAAOP,KAAP,EAAc;AACdX,UAAAA,OAAO,CAACW,KAAR,CAAc,QAAd,EAAwBA,KAAxB;AACA,eAAKlB,QAAL,CAAc;AAAEyB,YAAAA,UAAU,EAAE;AAAd,WAAd;AACD;AACF,OAVD;AAWD,KA1GkB;;AAAA,sCA4GR,MAAM;AACf,YAAM;AAAEF,QAAAA,UAAF;AAAcC,QAAAA;AAAd,UAA2B,KAAK1B,KAAtC;AACA,WAAKE,QAAL,CAAc;AAAEyB,QAAAA,UAAU,EAAE;AAAd,OAAd,EAAoC,YAAY;AAC9C,YAAI;AACF,gBAAM;AAAEC,YAAAA;AAAF,cAAW,MAAMrC,mBAAmB,CAACyC,YAApB,CAAiCP,UAAjC,EAA6CC,QAA7C,CAAvB,CADE,CAEF;;AACA,eAAKxB,QAAL,CAAc;AAAE4B,YAAAA,UAAU,EAAE,IAAd;AAAoBH,YAAAA,UAAU,EAAE;AAAhC,WAAd;AACD,SAJD,CAIE,OAAOP,KAAP,EAAc;AACdX,UAAAA,OAAO,CAACW,KAAR,CAAc,UAAd,EAA0BA,KAA1B;AACA,eAAKlB,QAAL,CAAc;AAAEyB,YAAAA,UAAU,EAAE;AAAd,WAAd;AACD;AACF,OATD;AAUD,KAxHkB;;AAAA,qCA0HT,MAAM;AACd,YAAM;AAAEG,QAAAA;AAAF,UAAiB,KAAKzB,KAA5B;AACA,aAAOyB,UAAU,IAAItD,MAAM,MAAMsD,UAAjC;AACD,KA7HkB;;AAAA,8CA+HA,MAAM;AACvB,YAAM;AAAEA,QAAAA;AAAF,UAAiB,KAAKzB,KAA5B;AACA,YAAM4B,MAAM,GAAGH,UAAU,GAAGtD,MAAM,CAAC0D,QAAP,CAAgBJ,UAAU,CAACK,IAAX,CAAgB3D,MAAM,EAAtB,CAAhB,EAA2C4D,OAA3C,EAAH,GAA0D,CAAnF;AACA,aAAOC,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,IAAL,CAAUN,MAAV,CAAT,CAAP;AACD,KAnIkB;;AAAA,iDAqIG,MAAM;AAC1B,YAAM;AAAEN,QAAAA;AAAF,UAAiB,KAAKtB,KAA5B;AACA,YAAM;AAAEoB,QAAAA,UAAF;AAAcC,QAAAA,QAAd;AAAwBc,QAAAA;AAAxB,UAAqD,KAAKxC,KAAhE;AACA,UAAI2B,UAAU,IAAI,CAACa,wBAAnB,EAA6C;AAE7C,WAAKtC,QAAL,CAAc;AAAEyB,QAAAA,UAAU,EAAE;AAAd,OAAd,EAAoC,YAAY;AAC9C,YAAI;AACF,gBAAM;AAAEC,YAAAA;AAAF,cAAW,MAAMrC,mBAAmB,CAACkD,4BAApB,CAAiDhB,UAAjD,EAA6DC,QAA7D,CAAvB,CADE,CAEF;;AACA,gBAAMI,UAAU,GAAGF,IAAI,GAAGpD,MAAM,CAACoD,IAAI,CAACG,MAAN,CAAT,GAAyB,IAAhD;AACA,eAAK7B,QAAL,CAAc;AAAE4B,YAAAA,UAAF;AAAcY,YAAAA,UAAU,EAAE,IAA1B;AAAgCf,YAAAA,UAAU,EAAE;AAA5C,WAAd;AACD,SALD,CAKE,OAAOP,KAAP,EAAc;AACdX,UAAAA,OAAO,CAACW,KAAR,CAAc,qBAAd,EAAqCA,KAArC;AACA,eAAKlB,QAAL,CAAc;AAAEyB,YAAAA,UAAU,EAAE;AAAd,WAAd;AACD;AACF,OAVD;AAWD,KArJkB;;AAAA,uCAwNP,MAAM;AAChB,aAAO,KAAKtB,KAAL,CAAWsC,eAAlB;AACD,KA1NkB;;AAAA,6CAuTD1C,CAAC,IAAI;AACrB,UAAI,KAAKD,KAAL,CAAWwB,QAAX,IAAuB,KAAKxB,KAAL,CAAW4C,eAAtC,EAAuD;AACrD,eAAO,IAAP;AACD;;AAED,YAAMC,cAAc,GAAGtE,CAAC,CAACqC,MAAF,CAAS,KAAKP,KAAL,CAAWQ,QAApB,EAA8BiC,MAAM,IAAI;AAC7D,eAAOA,MAAM,CAACC,QAAP,KAAoB9C,CAAC,CAACK,EAA7B;AACD,OAFsB,CAAvB;;AAIA,UAAI0C,OAAO,GAAG,IAAd;;AAEA,UAAIzE,CAAC,CAAC0E,OAAF,CAAUJ,cAAV,CAAJ,EAA+B;AAC7B;AACAG,QAAAA,OAAO,gBACL,oBAAC,IAAD;AAAM,UAAA,KAAK,EAAE,CAACE,MAAM,CAACC,kBAAR,EAA4B;AAAEC,YAAAA,KAAK,EAAE,KAAKpD,KAAL,CAAWqD;AAApB,WAA5B;AAAb,WAAsF,YAAWtE,YAAY,CAC3GkB,CAAC,CAACqD,IAAF,GAASrD,CAAC,CAACqD,IAAF,CAAOC,WAAhB,GAA8B,SAD6E,CAE3G,EAFF,CADF;AAKD,OAPD,MAOO;AACL;AACA,cAAMC,WAAW,GAAGjF,CAAC,CAACkF,IAAF,CAClBlF,CAAC,CAACmF,MAAF,CAASb,cAAT,EAAyB5C,CAAC,IAAIA,CAAC,CAAC0D,MAAhC,CADkB,EAElB,CAFkB,CAApB;;AAIAX,QAAAA,OAAO,gBACL,oBAAC,IAAD;AAAM,UAAA,KAAK,EAAEE,MAAM,CAACU;AAApB,WACGJ,WAAW,CAACK,GAAZ,CAAgB,CAAC5D,CAAD,EAAI6D,CAAJ,KAAU;AACzB,8BAAO,oBAAC,UAAD;AAAY,YAAA,KAAK,EAAE;AAAEC,cAAAA,WAAW,EAAE,CAAC;AAAhB,aAAnB;AAAyC,YAAA,QAAQ,EAAE,EAAnD;AAAuD,YAAA,UAAU,EAAE9D,CAAC,CAACqD,IAAF,CAAOU;AAA1E,YAAP;AACD,SAFA,CADH,eAIE,oBAAC,IAAD;AAAM,UAAA,KAAK,EAAE,CAACd,MAAM,CAACC,kBAAR,EAA4B;AAAEc,YAAAA,UAAU,EAAE,EAAd;AAAkBb,YAAAA,KAAK,EAAE,KAAKpD,KAAL,CAAWqD;AAApC,WAA5B;AAAb,WAAsG,GACpGR,cAAc,CAACqB,MAChB,QAAOlF,gBAAgB,CAAC6D,cAAc,CAACqB,MAAhB,EAAwB,GAAxB,EAA6B,KAA7B,CAAoC,EAF5D,CAJF,CADF;AAUD;;AAED,0BACE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEhB,MAAM,CAACiB;AAApB,sBACE,oBAAC,gBAAD;AACE,QAAA,OAAO,EAAE,MAAM;AACb,eAAKC,YAAL,CAAkBnE,CAAlB;AACD;AAHH,SAKG+C,OALH,CADF,CADF;AAWD,KAtWkB;;AAEjB,SAAK3C,KAAL,GAAa;AACXsC,MAAAA,eAAe,EAAE,KADN;AAEX9B,MAAAA,QAAQ,EAAE,EAFC;AAGXwD,MAAAA,aAAa,EAAE,KAHJ;AAIXlE,MAAAA,eAAe,EAAE,IAJN;AAKXW,MAAAA,eAAe,EAAE,IALN;AAMXI,MAAAA,qBAAqB,EAAE,IANZ;AAOXF,MAAAA,aAAa,EAAE,KAPJ;AAQXW,MAAAA,UAAU,EAAE,KARD;AASXG,MAAAA,UAAU,EAAE,IATD;AAUXY,MAAAA,UAAU,EAAE;AAVD,KAAb;AAYD;;AAED4B,EAAAA,iBAAiB,GAAG;AAClB,SAAKC,mBAAL;;AAEA,QAAI,CAAChG,CAAC,CAACiG,QAAF,CAAW,KAAKxE,KAAL,CAAWyE,IAAX,CAAgBC,MAA3B,EAAmC,aAAnC,CAAL,EAAwD;AACtD,WAAKC,WAAL;AACD;AACF;;AAEDC,EAAAA,oBAAoB,GAAG;AACrB,QAAI,KAAKC,SAAT,EAAoB;AAClBC,MAAAA,YAAY,CAAC,KAAKD,SAAN,CAAZ;AACD;AACF;;AAkDDE,EAAAA,mBAAmB,CAACC,KAAD,EAAQ;AACzB,SAAK9E,QAAL,CAAc;AACZ+E,MAAAA,gBAAgB,EAAE,CAACD,KAAD,CADN;AAEZE,MAAAA,cAAc,EAAE;AAFJ,KAAd;AAID;;AAEDC,EAAAA,SAAS,GAAG;AACV,SAAKnF,KAAL,CAAWoF,YAAX,CAAwBC,UAAxB;AACD;;AAgEDC,EAAAA,eAAe,CAACC,IAAD,EAAO;AACpB,QAAI,KAAKvF,KAAL,CAAWwF,SAAf,EAA0B;AACxB,aAAOD,IAAI,GAAG,KAAKvF,KAAL,CAAWyE,IAAX,CAAgBgB,SAA9B;AACD;;AACD,WAAOF,IAAP;AACD;;AAEDZ,EAAAA,WAAW,GAAG;AACZ,QAAI,CAAC,KAAKtE,KAAL,CAAWqF,mBAAhB,EAAqC;AAAA;;AACnC,WAAKxF,QAAL,CAAc;AACZwF,QAAAA,mBAAmB,EAAE,IADT;AAEZ/C,QAAAA,eAAe,EAAE;AAFL,OAAd;AAIA,oCAAK3C,KAAL,CAAWoF,YAAX,0GAAyBO,OAAzB,kFAAkCC,cAAlC;AAEA,WAAKC,YAAL;AACD;AACF;;AAED5C,EAAAA,OAAO,GAAG;AACR,WAAO1E,CAAC,CAAC0E,OAAF,CAAU,KAAK5C,KAAL,CAAWQ,QAArB,CAAP;AACD;;AAEDgF,EAAAA,YAAY,GAAG;AACb,UAAMC,OAAO,GAAG,KAAK7C,OAAL,KACZ,CADY,GAEZ1E,CAAC,CAACwH,KAAF,CAAQ,KAAK1F,KAAL,CAAWQ,QAAnB,EAA6BZ,CAAC,IAAI;AAChC,aAAOA,CAAC,CAAC+F,SAAT;AACD,KAFD,EAEGA,SAJP;AAKA1G,IAAAA,eAAe,CAACqF,WAAhB,CAA4B,KAAK3E,KAAL,CAAW0B,QAAvC,EAAiD,KAAK1B,KAAL,CAAWyB,UAA5D,EAAwEqE,OAAxE,EAAiFvF,IAAjF,CAAsFC,GAAG,IAAI;AAAA;;AAC3F,WAAKN,QAAL,CACE;AACEW,QAAAA,QAAQ,EAAEtC,CAAC,CAAC0H,MAAF,CACR1H,CAAC,CAACmF,MAAF,CACEnF,CAAC,CAACqC,MAAF,CAASrC,CAAC,CAAC2H,MAAF,CAAS,KAAK7F,KAAL,CAAWQ,QAApB,EAA8BL,GAAG,CAACoB,IAAlC,CAAT,EAAkD3B,CAAC,IAAI;AACrD,cAAI,CAAC,KAAKD,KAAL,CAAWwB,QAAhB,EAA0B;AACxB,mBAAO,IAAP;AACD;;AACD,iBAAOvB,CAAC,CAACK,EAAF,KAAS,KAAKN,KAAL,CAAWwB,QAApB,IAAgCvB,CAAC,CAAC8C,QAAF,KAAe,KAAK/C,KAAL,CAAWwB,QAAjE;AACD,SALD,CADF,EAOEvB,CAAC,IAAI;AACH,iBAAOA,CAAC,CAACK,EAAT;AACD,SATH,CADQ,EAYR,WAZQ,CADZ;AAeEqC,QAAAA,eAAe,EAAE;AAfnB,OADF,EAkBE,MAAM;AACJ,YAAI,KAAK3C,KAAL,CAAWmG,gBAAf,EAAiC;AAC/B,eAAKnG,KAAL,CAAWmG,gBAAX,CAA4B,KAAK9F,KAAL,CAAWQ,QAAX,CAAoBqD,MAAhD;AACD;AACF,OAtBH,EAD2F,CAyB3F;;AACA,qCAAKlE,KAAL,CAAWoF,YAAX,4GAAyBO,OAAzB,kFAAkCS,gBAAlC,GA1B2F,CA2B3F;;AACA,UAAI,KAAKpG,KAAL,CAAWqG,IAAf,EAAqB;AACnB,aAAKxB,SAAL,GAAiByB,UAAU,CAAC,MAAM;AAChC,eAAKT,YAAL;AACD,SAF0B,EAExB,KAAK7F,KAAL,CAAWuG,gBAAX,IAA+B,IAFP,CAA3B;AAGD;AACF,KAjCD;AAkCD;;AAMDC,EAAAA,oBAAoB,GAAG;AACrB,SAAKtG,QAAL,CAAc;AACZmE,MAAAA,aAAa,EAAE;AADH,KAAd;AAGD;;AAEDoC,EAAAA,YAAY,CAACpF,OAAD,EAAU;AACpB,UAAMV,WAAW,GAAG,KAAKN,KAAL,CAAWQ,QAA/B;AACAF,IAAAA,WAAW,CAAC+F,IAAZ,CAAiBrF,OAAjB;AACA,SAAKnB,QAAL,CACE;AACEmE,MAAAA,aAAa,EAAE,KADjB;AAEExD,MAAAA,QAAQ,EAAEF;AAFZ,KADF,EAKE,MAAM;AACJ,UAAI,KAAKX,KAAL,CAAW2G,cAAf,EAA+B;AAC7B,aAAK3G,KAAL,CAAW2G,cAAX;AACD;AACF,KATH;AAWD;;AAEDC,EAAAA,gBAAgB,CAAC3G,CAAD,EAAI;AAClB,QAAI,KAAKD,KAAL,CAAWyE,IAAX,CAAgBoC,GAAhB,KAAwB5G,CAAC,CAAC0D,MAA9B,EAAsC;AACpC,aAAO,IAAP;AACD;;AACD,WAAOpF,CAAC,CAACiG,QAAF,CAAW,KAAKxE,KAAL,CAAWyE,IAAX,CAAgBqC,WAA3B,EAAwC,KAAK9G,KAAL,CAAW+G,eAAnD,CAAP;AACD;;AAEDC,EAAAA,mBAAmB,GAAG;AACpB,SAAK9G,QAAL,CAAc;AACZ+E,MAAAA,gBAAgB,EAAE,EADN;AAEZC,MAAAA,cAAc,EAAE;AAFJ,KAAd;AAID;;AAED+B,EAAAA,0BAA0B,GAAG;AAC3B,wBACE,oBAAC,YAAD;AACE,MAAA,OAAO,EAAE,CAAC,CAAC,KAAK5G,KAAL,CAAWF,eADxB;AAEE,MAAA,SAAS,EAAE,KAAK+G,oBAFlB;AAGE,MAAA,QAAQ,EAAE,KAAKC,mBAHjB;AAIE,MAAA,OAAO,EAAE,KAAKA,mBAJhB;AAKE,MAAA,IAAI,EAAC;AALP,MADF;AASD;;AAEDC,EAAAA,0BAA0B,GAAG;AAC3B,wBACE,oBAAC,YAAD;AACE,MAAA,OAAO,EAAE,CAAC,CAAC,KAAK/G,KAAL,CAAWS,eADxB;AAEE,MAAA,SAAS,EAAE,KAAKuG,oBAFlB;AAGE,MAAA,QAAQ,EAAE,KAAKC,mBAHjB;AAIE,MAAA,OAAO,EAAE,KAAKA,mBAJhB;AAKE,MAAA,IAAI,EAAC,eALP;AAME,MAAA,YAAY,eAAE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEpE,MAAM,CAACqE;AAApB;AANhB,MADF;AAUD;;AAEDC,EAAAA,yBAAyB,GAAG;AAC1B,UAAM;AAAEtG,MAAAA;AAAF,QAA4B,KAAKb,KAAvC;AACA,UAAMoH,SAAS,GAAGvG,qBAAqB,KAAK,SAA5C;AACA,wBACE,oBAAC,YAAD;AACE,MAAA,OAAO,EAAE,CAAC,CAACA,qBADb;AAEE,MAAA,SAAS,EAAE,KAAKwG,0BAFlB;AAGE,MAAA,IAAI,EAAED,SAAS,GAAG,yBAAH,GAA+B,kBAHhD;AAIE,MAAA,YAAY,eACV,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEvE,MAAM,CAACqE;AAApB,SACGE,SAAS,GAAG,4CAAH,GAAkD,kEAD9D,CALJ;AASE,MAAA,MAAM,MATR;AAUE,MAAA,OAAO,EAAE;AAVX,MADF;AAcD;;AAEDE,EAAAA,kBAAkB,CAAC1H,CAAD,EAAI;AACpB,QAAI1B,CAAC,CAAC0E,OAAF,CAAUhD,CAAC,CAAC5B,KAAZ,CAAJ,EAAwB;AACtB,aAAO,IAAP;AACD;;AACD,wBACE,oBAAC,gBAAD;AAAkB,MAAA,KAAK,EAAE6E,MAAM,CAAC0E,qBAAhC;AAAuD,MAAA,OAAO,EAAE,KAAK7C,mBAAL,CAAyB8C,IAAzB,CAA8B,IAA9B,EAAoChJ,OAAO,CAACoB,CAAC,CAAC5B,KAAH,CAA3C;AAAhE,oBACE,oBAAC,KAAD;AAAO,MAAA,KAAK,EAAE6E,MAAM,CAAC4E,YAArB;AAAmC,MAAA,MAAM,EAAE;AAAEC,QAAAA,GAAG,EAAEnJ,WAAW,CAACqB,CAAC,CAAC5B,KAAH;AAAlB;AAA3C,MADF,CADF;AAKD;;AAmDD2J,EAAAA,aAAa,CAAC/H,CAAD,EAAI;AACf,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEiD,MAAM,CAAC7B,OAApB;AAA6B,MAAA,GAAG,EAAEpB,CAAC,CAACK;AAApC,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE4C,MAAM,CAAC+E;AAApB,oBACE,oBAAC,UAAD;AAAY,MAAA,UAAU,EAAEhI,CAAC,CAACqD,IAAF,CAAOU,UAA/B;AAA2C,MAAA,QAAQ,EAAE,EAArD;AAAyD,MAAA,KAAK,EAAEd,MAAM,CAACgF;AAAvE,MADF,eAEE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEhF,MAAM,CAACiF;AAApB,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEjF,MAAM,CAACkF;AAApB,OACG,KAAKxB,gBAAL,CAAsB3G,CAAtB,iBACC,oBAAC,gBAAD;AAAkB,MAAA,OAAO,EAAE,KAAKoI,oBAAL,CAA0BR,IAA1B,CAA+B,IAA/B,EAAqC5H,CAArC;AAA3B,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAACiD,MAAM,CAACoF,sBAAR,EAAgC;AAAEC,QAAAA,eAAe,EAAE,KAAKvI,KAAL,CAAWqD;AAA9B,OAAhC;AAAb,oBACE,oBAAC,IAAD;AAAM,MAAA,IAAI,EAAC,OAAX;AAAmB,MAAA,IAAI,EAAC,cAAxB;AAAuC,MAAA,SAAS,EAAEH,MAAM,CAACsF;AAAzD,MADF,CADF,CADD,GAMG,IAPN,CAQE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBF,mBAkBE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAACtF,MAAM,CAACuF,WAAR,EAAqB;AAAEC,QAAAA,QAAQ,EAAE,KAAKpD,eAAL,CAAqB,EAArB;AAAZ,OAArB;AAAb,OAA4ErF,CAAC,CAACqD,IAAF,CAAOC,WAAnF,CAlBF,CADF,EAqBG,CAAChF,CAAC,CAAC0E,OAAF,CAAUhD,CAAC,CAAC0I,OAAZ,CAAD,iBAAyB,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAACzF,MAAM,CAAC0F,WAAR,EAAqB;AAAEF,QAAAA,QAAQ,EAAE,KAAKpD,eAAL,CAAqB,EAArB;AAAZ,OAArB;AAAb,OAA4ErF,CAAC,CAAC0I,OAA9E,CArB5B,EAsBG,KAAKhB,kBAAL,CAAwB1H,CAAxB,CAtBH,CAFF,CADF,eA4BE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEiD,MAAM,CAAC2F;AAApB,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAAC3F,MAAM,CAAC4F,WAAR,EAAqB;AAAEJ,QAAAA,QAAQ,EAAE,KAAKpD,eAAL,CAAqB,EAArB;AAAZ,OAArB;AAAb,OACG9G,MAAM,CACJuK,GADF,CACM9I,CAAC,CAAC+F,SADR,EAEEgD,KAFF,GAGEC,MAHF,CAGS,eAHT,CADH,CADF,EAOG,KAAKC,eAAL,CAAqBjJ,CAArB,CAPH,CA5BF,CADF;AAwCD;;AAEDkJ,EAAAA,UAAU,GAAG;AACX,UAAM;AAAE3G,MAAAA;AAAF,QAA+B,KAAKxC,KAA1C;AACA,UAAM;AAAE0C,MAAAA,UAAF;AAAcZ,MAAAA,UAAd;AAA0BH,MAAAA;AAA1B,QAAyC,KAAKtB,KAApD;AACA,QAAI,CAACmC,wBAAD,IAA6B,CAACE,UAAlC,EAA8C,OAAO,IAAP;AAE9C,QAAIf,UAAJ,EACE,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEuB,MAAM,CAACkG;AAApB,oBACE,oBAAC,OAAD;AAAS,MAAA,IAAI,EAAE,OAAf;AAAwB,MAAA,KAAK,EAAE,KAAKpJ,KAAL,CAAWqD;AAA1C,MADF,CADF;AAMF,UAAMgG,OAAO,GAAG,KAAKA,OAAL,EAAhB;AACA,UAAMC,KAAK,GAAG,KAAKC,gBAAL,EAAd;AACA,UAAMC,QAAQ,GAAI,aAAYF,KAAM,QAAO3K,UAAU,CAAC2K,KAAD,CAAQ,EAA7D,CAdW,CAeX;;AAEA,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEpG,MAAM,CAACuG;AAApB,OACGJ,OAAO,IAAIvH,UAAX,gBAAwB,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAAC;AAAEsB,QAAAA,KAAK,EAAE,KAAKpD,KAAL,CAAWqD;AAApB,OAAD,EAA2CH,MAAM,CAACwG,YAAlD;AAAb,OAA+EF,QAA/E,CAAxB,GAA0H,IAD7H,eAEE,oBAAC,YAAD;AACE,MAAA,OAAO,EAAEH,OAAO,GAAG,KAAKM,QAAR,GAAmB,KAAKC,MAD1C;AAEE,MAAA,KAAK,EAAC,MAFR;AAGE,MAAA,KAAK,EAAE,CAAC;AAAEC,QAAAA,WAAW,EAAE,KAAK7J,KAAL,CAAWqD;AAA1B,OAAD,EAAiDH,MAAM,CAAC4G,UAAxD,CAHT;AAIE,MAAA,QAAQ,EAAEnI,UAJZ;AAKE,MAAA,eAAe,MALjB;AAME,MAAA,MAAM;AANR,oBAQE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEuB,MAAM,CAAC6G;AAApB,oBACE,oBAAC,IAAD;AACE,MAAA,IAAI,EAAEV,OAAO,GAAG,QAAH,GAAc,cAD7B;AAEE,MAAA,IAAI,EAAE,cAFR;AAGE,MAAA,SAAS,EAAE,CAAC;AAAEjG,QAAAA,KAAK,EAAE,KAAKpD,KAAL,CAAWqD;AAApB,OAAD,EAA2CH,MAAM,CAAC8G,cAAlD;AAHb,MADF,eAME,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAAC;AAAE5G,QAAAA,KAAK,EAAE,KAAKpD,KAAL,CAAWqD;AAApB,OAAD,EAA2CH,MAAM,CAAC+G,cAAlD;AAAb,OAAiFZ,OAAO,GAAG,QAAH,GAAc,MAAtG,CANF,CARF,CAFF,CADF;AAsBD;;AAEDa,EAAAA,cAAc,GAAG;AACf,QAAI,KAAK7J,KAAL,CAAWsC,eAAf,EAAgC;AAC9B,0BACE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEO,MAAM,CAACiH;AAApB,sBACE,oBAAC,OAAD;AAAS,QAAA,KAAK,EAAE,KAAKnK,KAAL,CAAWqD;AAA3B,QADF,CADF;AAKD;;AACD,QAAI,KAAKJ,OAAL,MAAkB,CAAC,KAAK5C,KAAL,CAAWgE,aAAlC,EAAiD;AAC/C,UAAI9F,CAAC,CAACiG,QAAF,CAAW,KAAKxE,KAAL,CAAWyE,IAAX,CAAgBC,MAA3B,EAAmC,YAAnC,CAAJ,EAAsD;AACpD,eAAO,IAAP;AACD;;AACD,UAAI,CAACnG,CAAC,CAAC6L,KAAF,CAAQ,KAAKpK,KAAL,CAAWqK,WAAnB,CAAD,IAAoC9L,CAAC,CAAC0E,OAAF,CAAU,KAAKjD,KAAL,CAAWqK,WAArB,CAAxC,EAA2E,OAAO,IAAP;AAC3E,0BACE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEnH,MAAM,CAACiH;AAApB,sBACE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAE,CAACjH,MAAM,CAACoH,aAAR,EAAuB;AAAE5B,UAAAA,QAAQ,EAAE,KAAKpD,eAAL,CAAqB,EAArB;AAAZ,SAAvB;AAAb,SACG/G,CAAC,CAAC6L,KAAF,CAAQ,KAAKpK,KAAL,CAAWqK,WAAnB,IAAkC,gCAAlC,GAAqE,KAAKrK,KAAL,CAAWqK,WADnF,CADF,CADF;AAOD;;AACD,QAAIE,MAAM,GAAG,CAAC,GAAG,KAAKlK,KAAL,CAAWQ,QAAf,CAAb;;AACA,QAAI,KAAKb,KAAL,CAAWwK,YAAf,EAA6B;AAC3BD,MAAAA,MAAM,GAAGA,MAAM,CAACE,OAAP,EAAT;AACD;;AACD,QAAI,CAAC,KAAKzK,KAAL,CAAW0K,WAAZ,IAA2B,CAAC,KAAK1K,KAAL,CAAWwB,QAA3C,EAAqD;AACnD+I,MAAAA,MAAM,GAAGhM,CAAC,CAACqC,MAAF,CAAS2J,MAAT,EAAiBtK,CAAC,IAAI;AAC7B,eAAO,CAACA,CAAC,CAAC8C,QAAV;AACD,OAFQ,CAAT;AAGD;;AACD,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEG,MAAM,CAACiH;AAApB,OACG,CAAC,KAAKlH,OAAL,EAAD,iBACC,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEC,MAAM,CAACyH;AAApB,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE;AAAEC,QAAAA,UAAU,EAAE;AAAd;AAAb,OACG,KAAKzB,UAAL,EADH,EAEG,CAAC,KAAKnJ,KAAL,CAAW6K,cAAZ,IAA8B,KAAKxK,KAAL,CAAWQ,QAAX,CAAoBqD,MAApB,GAA6B,CAA3D,iBACC,oBAAC,gBAAD;AAAkB,MAAA,OAAO,EAAE,KAAKiB,SAAL,CAAe0C,IAAf,CAAoB,IAApB;AAA3B,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAAC3E,MAAM,CAAC4H,QAAR,EAAkB;AAAE1H,QAAAA,KAAK,EAAE,KAAKpD,KAAL,CAAWqD;AAApB,OAAlB;AAAb,uBADF,CAHJ,CADF,eASE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAACH,MAAM,CAAC6H,YAAR,EAAsB;AAAErC,QAAAA,QAAQ,EAAE,KAAKpD,eAAL,CAAqB,EAArB;AAAZ,OAAtB;AAAb,OACG,KAAKjF,KAAL,CAAWQ,QAAX,CAAoBqD,MADvB,EAEI,WAAUvF,UAAU,CAAC,KAAK0B,KAAL,CAAWQ,QAAX,CAAoBqD,MAArB,CAA6B,EAFrD,CATF,CAFJ,EAiBG,KAAKlE,KAAL,CAAWwK,YAAX,IAA2B,KAAKnK,KAAL,CAAWgE,aAAtC,iBAAuD,oBAAC,OAAD;AAAS,MAAA,KAAK,EAAE,KAAKrE,KAAL,CAAWqD;AAA3B,MAjB1D,EAkBGkH,MAAM,CAAC1G,GAAP,CAAW5D,CAAC,IAAI;AACf,aAAO,KAAK+H,aAAL,CAAmB/H,CAAnB,CAAP;AACD,KAFA,CAlBH,EAqBG,CAAC,KAAKD,KAAL,CAAWwK,YAAZ,IAA4B,KAAKnK,KAAL,CAAWgE,aAAvC,iBAAwD,oBAAC,OAAD;AAAS,MAAA,KAAK,EAAE,KAAKrE,KAAL,CAAWqD;AAA3B,MArB3D,CADF;AAyBD;;AAED2H,EAAAA,uBAAuB,GAAG;AACxB,wBACE,oBAAC,UAAD;AACE,MAAA,OAAO,EAAE,KAAK3K,KAAL,CAAW6E,cADtB;AAEE,MAAA,MAAM,EAAE,KAAK7E,KAAL,CAAW4E,gBAFrB;AAGE,MAAA,OAAO,EAAE,KAAK+B,mBAAL,CAAyBa,IAAzB,CAA8B,IAA9B,CAHX;AAIE,MAAA,GAAG,EAAC;AAJN,MADF;AAQD;;AAEDoD,EAAAA,mBAAmB,GAAG;AACpB,QAAI,CAAC,KAAK5K,KAAL,CAAWW,aAAhB,EAA+B,OAAO,IAAP;AAC/B,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEkC,MAAM,CAACgI;AAApB,oBACE,oBAAC,OAAD;AAAS,MAAA,KAAK,EAAE,KAAKlL,KAAL,CAAWqD;AAA3B,MADF,CADF;AAKD;;AAED8H,EAAAA,MAAM,GAAG;AACP,QAAI5M,CAAC,CAACiG,QAAF,CAAW,KAAKxE,KAAL,CAAWyE,IAAX,CAAgBC,MAA3B,EAAmC,aAAnC,CAAJ,EAAuD;AACrD,aAAO,IAAP;AACD;;AACD,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAACxB,MAAM,CAACkI,mBAAR,EAA6B,KAAKpL,KAAL,CAAWqL,KAAxC;AAAb,OACG,KAAKnB,cAAL,EADH,EAEG,KAAKe,mBAAL,EAFH,EAGG,KAAKhE,0BAAL,EAHH,EAIG,KAAKG,0BAAL,EAJH,EAKG,KAAKI,yBAAL,EALH,EAMG,KAAKwD,uBAAL,EANH,CADF;AAUD;;AAxhBoC;;AA2hBvC,MAAM9H,MAAM,GAAG5E,UAAU,CAACgN,MAAX,CAAkB;AAC/BF,EAAAA,mBAAmB,EAAE;AACnBG,IAAAA,IAAI,EAAE,CADa;AAEnBC,IAAAA,iBAAiB,EAAE;AAFA,GADU;AAK/BrB,EAAAA,cAAc,EAAE;AACdoB,IAAAA,IAAI,EAAE,CADQ;AAEdE,IAAAA,eAAe,EAAE,EAFH;AAGdC,IAAAA,cAAc,EAAErM,QAHF;AAIdsM,IAAAA,cAAc,EAAE;AAJF,GALe;AAW/BZ,EAAAA,YAAY,EAAE;AACZa,IAAAA,UAAU,EAAE,aADA;AAEZxI,IAAAA,KAAK,EAAElE,YAFK;AAGZqM,IAAAA,IAAI,EAAE,CAHM;AAIZM,IAAAA,SAAS,EAAE;AAJC,GAXiB;AAiB/BxK,EAAAA,OAAO,EAAE;AACPwK,IAAAA,SAAS,EAAE;AADJ,GAjBsB;AAoB/B5D,EAAAA,WAAW,EAAE;AACX6D,IAAAA,aAAa,EAAE;AADJ,GApBkB;AAuB/B5D,EAAAA,iBAAiB,EAAE;AACjBnE,IAAAA,WAAW,EAAE;AADI,GAvBY;AA0B/BoE,EAAAA,YAAY,EAAE;AACZoD,IAAAA,IAAI,EAAE,CADM;AAEZhD,IAAAA,eAAe,EAAEpJ,OAFL;AAGZ4M,IAAAA,YAAY,EAAE,CAHF;AAIZC,IAAAA,OAAO,EAAE;AAJG,GA1BiB;AAgC/B5D,EAAAA,eAAe,EAAE;AACf0D,IAAAA,aAAa,EAAE,aADA;AAEflB,IAAAA,UAAU,EAAE;AAFG,GAhCc;AAoC/BtC,EAAAA,sBAAsB,EAAE;AACtB2D,IAAAA,KAAK,EAAE,EADe;AAEtBC,IAAAA,MAAM,EAAE,EAFc;AAGtBH,IAAAA,YAAY,EAAE,EAHQ;AAItBnB,IAAAA,UAAU,EAAE,QAJU;AAKtBuB,IAAAA,cAAc,EAAE;AALM,GApCO;AA2C/B3D,EAAAA,iBAAiB,EAAE;AACjBE,IAAAA,QAAQ,EAAE,EADO;AAEjBtF,IAAAA,KAAK,EAAE;AAFU,GA3CY;AA+C/BqF,EAAAA,WAAW,EAAE;AACXmD,IAAAA,UAAU,EAAE,aADD;AAEXxI,IAAAA,KAAK,EAAElE,YAFI;AAGXqM,IAAAA,IAAI,EAAE;AAHK,GA/CkB;AAoD/B3C,EAAAA,WAAW,EAAE;AACXiD,IAAAA,SAAS,EAAE,CADA;AAEXD,IAAAA,UAAU,EAAE,YAFD;AAGXxI,IAAAA,KAAK,EAAElE;AAHI,GApDkB;AAyD/B2J,EAAAA,aAAa,EAAE;AACbiD,IAAAA,aAAa,EAAE,aADF;AAEbK,IAAAA,cAAc,EAAE,eAFH;AAGbvB,IAAAA,UAAU,EAAE;AAHC,GAzDgB;AA8D/B9B,EAAAA,WAAW,EAAE;AACX8C,IAAAA,UAAU,EAAE,YADD;AAEXC,IAAAA,SAAS,EAAE,CAFA;AAGXzI,IAAAA,KAAK,EAAEhE,UAHI;AAIXgN,IAAAA,SAAS,EAAE;AAJA,GA9DkB;AAoE/BjI,EAAAA,cAAc,EAAE;AACdoH,IAAAA,IAAI,EAAE,CADQ;AAEdc,IAAAA,WAAW,EAAE;AAFC,GApEe;AAwE/BlJ,EAAAA,kBAAkB,EAAE;AAClByI,IAAAA,UAAU,EAAE,aADM;AAElBlD,IAAAA,QAAQ,EAAE;AAFQ,GAxEW;AA4E/B9E,EAAAA,mBAAmB,EAAE;AACnBkI,IAAAA,aAAa,EAAE,KADI;AAEnBlB,IAAAA,UAAU,EAAE,QAFO;AAGnBa,IAAAA,eAAe,EAAE;AAHE,GA5EU;AAiF/B7D,EAAAA,qBAAqB,EAAE;AACrBiE,IAAAA,SAAS,EAAE,CADU;AAErBI,IAAAA,KAAK,EAAE,EAFc;AAGrBC,IAAAA,MAAM,EAAE;AAHa,GAjFQ;AAsF/BpE,EAAAA,YAAY,EAAE;AACZmE,IAAAA,KAAK,EAAE,EADK;AAEZC,IAAAA,MAAM,EAAE,EAFI;AAGZH,IAAAA,YAAY,EAAE;AAHF,GAtFiB;AA2F/BzB,EAAAA,aAAa,EAAE;AACbsB,IAAAA,UAAU,EAAE,aADC;AAEbxI,IAAAA,KAAK,EAAElE;AAFM,GA3FgB;AA+F/ByL,EAAAA,sBAAsB,EAAE;AACtBmB,IAAAA,aAAa,EAAE;AADO,GA/FO;AAkG/BvE,EAAAA,iBAAiB,EAAE;AACjBqE,IAAAA,UAAU,EAAE,YADK;AAEjBlD,IAAAA,QAAQ,EAAE,EAFO;AAGjB8C,IAAAA,iBAAiB,EAAE,EAHF;AAIjBY,IAAAA,SAAS,EAAE;AAJM,GAlGY;AAwG/BlB,EAAAA,sBAAsB,EAAE;AACtBO,IAAAA,eAAe,EAAE;AADK,GAxGO;AA2G/BX,EAAAA,QAAQ,EAAE;AACRe,IAAAA,SAAS,EAAE;AADH,GA3GqB;AA8G/BzC,EAAAA,oBAAoB,EAAE;AACpB6C,IAAAA,KAAK,EAAE,GADa;AAEpBK,IAAAA,YAAY,EAAE;AAFM,GA9GS;AAkH/B7C,EAAAA,aAAa,EAAE;AACbqC,IAAAA,aAAa,EAAE,KADF;AAEblB,IAAAA,UAAU,EAAE,QAFC;AAGbuB,IAAAA,cAAc,EAAE,UAHH;AAIbG,IAAAA,YAAY,EAAE;AAJD,GAlHgB;AAwH/B5C,EAAAA,YAAY,EAAE;AACZkC,IAAAA,UAAU,EAAE,aADA;AAEZlD,IAAAA,QAAQ,EAAE,EAFE;AAGZ3E,IAAAA,WAAW,EAAE;AAHD,GAxHiB;AA6H/B+F,EAAAA,UAAU,EAAE;AACVyC,IAAAA,WAAW,EAAE,CADH;AAEVf,IAAAA,iBAAiB,EAAE;AAFT,GA7HmB;AAiI/BzB,EAAAA,eAAe,EAAE;AACf+B,IAAAA,aAAa,EAAE,KADA;AAEflB,IAAAA,UAAU,EAAE;AAFG,GAjIc;AAqI/BZ,EAAAA,cAAc,EAAE;AACdtB,IAAAA,QAAQ,EAAE;AADI,GArIe;AAwI/BuB,EAAAA,cAAc,EAAE;AACd2B,IAAAA,UAAU,EAAE,aADE;AAEdlD,IAAAA,QAAQ,EAAE,EAFI;AAGdzE,IAAAA,UAAU,EAAE;AAHE;AAxIe,CAAlB,CAAf;;AA+IA,MAAMuI,eAAe,GAAGnM,KAAK,IAAI;AAC/B,SAAO;AACLgD,IAAAA,kBAAkB,EAAEpE,8BAA8B,CAACoB,KAAD,CAD7C;AAELoE,IAAAA,IAAI,EAAEpE,KAAK,CAACoE,IAFP;AAGLjC,IAAAA,wBAAwB,EAAE1D,uBAAuB,CAACuB,KAAD,EAAQ,0BAAR,EAAoC,KAApC;AAH5C,GAAP;AAKD,CAND;;AAQA,MAAM8J,cAAc,GAAG1L,OAAO,CAAC+N,eAAD,EAAkB,EAAlB,EAAsB,IAAtB,EAA4B;AAAEC,EAAAA,UAAU,EAAE;AAAd,CAA5B,CAAP,CAAyD3M,cAAzD,CAAvB;AACA,SAASqK,cAAc,IAAIrK,cAA3B","sourcesContent":["import React, { Component } from 'react';\nimport { View, Text, TouchableOpacity, Image, StyleSheet } from 'react-native';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport { connect } from 'react-redux';\nimport { Icon } from 'react-native-elements';\nimport { getPluralS, getThumb300, get1400, getSiteSettingFromState, getFirstName, getPluralOptions } from '../helper';\nimport { getMainBrandingColourFromState, TEXT_DARKEST, BG_GREY, TEXT_LIGHT, LINEGREY } from '../colours';\nimport { reactionActions, notificationActions } from '../apis';\nimport { ConfirmPopup } from './ConfirmPopup';\nimport { ProfilePic } from './ProfilePic';\nimport { ImagePopup } from './ImagePopup';\nimport { InlineButton } from './InlineButton';\nimport { Spinner } from './Spinner';\nimport { Services } from '../config';\n\nclass CommentSection extends Component {\n constructor(props) {\n super(props);\n this.state = {\n commentsLoading: false,\n comments: [],\n addingComment: false,\n commentToDelete: null,\n commentToReport: null,\n commentReportedStatus: null,\n reportLoading: false,\n processing: false,\n muteExpiry: null,\n muteLoaded: false,\n };\n }\n\n componentDidMount() {\n this.getNotificationSate();\n\n if (!_.includes(this.props.user.hidden, 'viewComment')) {\n this.getComments();\n }\n }\n\n componentWillUnmount() {\n if (this.loadTimer) {\n clearTimeout(this.loadTimer);\n }\n }\n\n onPressDeleteComment = c => {\n this.setState({ commentToDelete: c });\n };\n\n onPressConfirmDelete = () => {\n reactionActions.removeComment(this.state.commentToDelete.Id).then(res => {\n console.log('deleted');\n });\n const newComments = _.filter(this.state.comments, c => {\n return c.Id !== this.state.commentToDelete.Id;\n });\n this.setState({\n comments: newComments,\n commentToDelete: null,\n });\n };\n\n onPressCancelDelete = () => {\n this.setState({ commentToDelete: null });\n };\n\n onPressReportComment = c => {\n this.setState({ commentToReport: c });\n };\n\n onPressConfirmReport = () => {\n const commentId = this.state.commentToReport.Id;\n this.setState({ reportLoading: true, commentToReport: null }, () => {\n reactionActions\n .reportComment(commentId)\n .then(res => {\n this.setState({ commentReportedStatus: 'success', reportLoading: false });\n })\n .catch(error => {\n console.log('reportComment', error);\n this.setState({ commentReportedStatus: 'fail', reportLoading: false });\n });\n });\n };\n\n onPressCancelReport = () => {\n this.setState({ commentToReport: null });\n };\n\n onPressConfirmReportStatus = () => {\n this.setState({ commentReportedStatus: null });\n };\n\n onPressCommentImage(image) {\n this.setState({\n imagePopupSource: [image],\n imagePopupOpen: true,\n });\n }\n\n onGoToAdd() {\n this.props.commentReply.focusInput();\n }\n\n onOpenThread = comment => {\n Services.navigation.navigate('thread', { ...this.props, threadId: comment.Id });\n };\n\n onMute = () => {\n const { entityType, entityId } = this.props;\n this.setState({ processing: true }, async () => {\n try {\n const { data } = await notificationActions.muteEntity(entityType, entityId);\n // console.log('onMute', data);\n const muteExpiry = moment(data.Expiry);\n this.setState({ muteExpiry, processing: false });\n } catch (error) {\n console.error('onMute', error);\n this.setState({ processing: false });\n }\n });\n };\n\n onUnmute = () => {\n const { entityType, entityId } = this.props;\n this.setState({ processing: true }, async () => {\n try {\n const { data } = await notificationActions.unmuteEntity(entityType, entityId);\n // console.log('onUnmute', data);\n this.setState({ muteExpiry: null, processing: false });\n } catch (error) {\n console.error('onUnmute', error);\n this.setState({ processing: false });\n }\n });\n };\n\n isMuted = () => {\n const { muteExpiry } = this.state;\n return muteExpiry && moment() <= muteExpiry;\n };\n\n getMuteRemaining = () => {\n const { muteExpiry } = this.state;\n const actual = muteExpiry ? moment.duration(muteExpiry.diff(moment())).asHours() : 0;\n return Math.abs(Math.ceil(actual));\n };\n\n getNotificationSate = () => {\n const { processing } = this.state;\n const { entityType, entityId, notificationsForComments } = this.props;\n if (processing || !notificationsForComments) return;\n\n this.setState({ processing: true }, async () => {\n try {\n const { data } = await notificationActions.getEntityNotificationSetting(entityType, entityId);\n // console.log('getNotificationSate', data);\n const muteExpiry = data ? moment(data.Expiry) : null;\n this.setState({ muteExpiry, muteLoaded: true, processing: false });\n } catch (error) {\n console.error('getNotificationSate', error);\n this.setState({ processing: false });\n }\n });\n };\n\n getAdjustedSize(size) {\n if (this.props.scaleFont) {\n return size + this.props.user.fontScale;\n }\n return size;\n }\n\n getComments() {\n if (!this.state.commentsLoadStarted) {\n this.setState({\n commentsLoadStarted: true,\n commentsLoading: true,\n });\n this.props.commentReply?.current?.loadingStarted();\n\n this.loadComments();\n }\n }\n\n isEmpty() {\n return _.isEmpty(this.state.comments);\n }\n\n loadComments() {\n const minTime = this.isEmpty()\n ? 0\n : _.maxBy(this.state.comments, c => {\n return c.Timestamp;\n }).Timestamp;\n reactionActions.getComments(this.props.entityId, this.props.entityType, minTime).then(res => {\n this.setState(\n {\n comments: _.sortBy(\n _.uniqBy(\n _.filter(_.concat(this.state.comments, res.data), c => {\n if (!this.props.threadId) {\n return true;\n }\n return c.Id === this.props.threadId || c.ParentId === this.props.threadId;\n }),\n c => {\n return c.Id;\n },\n ),\n 'Timestamp',\n ),\n commentsLoading: false,\n },\n () => {\n if (this.props.onCommentsLoaded) {\n this.props.onCommentsLoaded(this.state.comments.length);\n }\n },\n );\n //if (this.props.commentReply) {\n this.props.commentReply?.current?.loadingCompleted();\n //}\n if (this.props.live) {\n this.loadTimer = setTimeout(() => {\n this.loadComments();\n }, this.props.refreshFrequency || 2000);\n }\n });\n }\n\n isLoading = () => {\n return this.state.commentsLoading;\n };\n\n startedAddingComment() {\n this.setState({\n addingComment: true,\n });\n }\n\n commentAdded(comment) {\n const newComments = this.state.comments;\n newComments.push(comment);\n this.setState(\n {\n addingComment: false,\n comments: newComments,\n },\n () => {\n if (this.props.onCommentAdded) {\n this.props.onCommentAdded();\n }\n },\n );\n }\n\n canRemoveComment(c) {\n if (this.props.user.uid === c.UserId) {\n return true;\n }\n return _.includes(this.props.user.permissions, this.props.adminPermission);\n }\n\n closeCommentGallery() {\n this.setState({\n imagePopupSource: [],\n imagePopupOpen: false,\n });\n }\n\n renderCommentDeleteConfirm() {\n return (\n <ConfirmPopup\n visible={!!this.state.commentToDelete}\n onConfirm={this.onPressConfirmDelete}\n onCancel={this.onPressCancelDelete}\n onClose={this.onPressCancelDelete}\n text=\"Are you sure you want to delete this comment?\"\n />\n );\n }\n\n renderCommentReportConfirm() {\n return (\n <ConfirmPopup\n visible={!!this.state.commentToReport}\n onConfirm={this.onPressConfirmReport}\n onCancel={this.onPressCancelReport}\n onClose={this.onPressCancelReport}\n text=\"Are you sure?\"\n extraContent={<Text style={styles.commentReportText}>This comment will be reported to our team and considered for deletion</Text>}\n />\n );\n }\n\n renderCommentReportStatus() {\n const { commentReportedStatus } = this.state;\n const isSuccess = commentReportedStatus === 'success';\n return (\n <ConfirmPopup\n visible={!!commentReportedStatus}\n onConfirm={this.onPressConfirmReportStatus}\n text={isSuccess ? 'Thank you for reporting' : 'Unable to report'}\n extraContent={\n <Text style={styles.commentReportText}>\n {isSuccess ? 'We will review the comment within 24 hours' : 'There was a problem reporting the comment please try again later'}\n </Text>\n }\n hideNo\n yesText={'Back to Article'}\n />\n );\n }\n\n renderCommentImage(c) {\n if (_.isEmpty(c.Image)) {\n return null;\n }\n return (\n <TouchableOpacity style={styles.commentImageContainer} onPress={this.onPressCommentImage.bind(this, get1400(c.Image))}>\n <Image style={styles.commentImage} source={{ uri: getThumb300(c.Image) }} />\n </TouchableOpacity>\n );\n }\n\n renderReplyText = c => {\n if (this.props.threadId || this.props.hideReplyButton) {\n return null;\n }\n\n const threadComments = _.filter(this.state.comments, innerC => {\n return innerC.ParentId === c.Id;\n });\n\n let content = null;\n\n if (_.isEmpty(threadComments)) {\n // no replies\n content = (\n <Text style={[styles.commentRepliesText, { color: this.props.colourBrandingMain }]}>{`Reply to ${getFirstName(\n c.User ? c.User.displayName : 'comment',\n )}`}</Text>\n );\n } else {\n // existing replies\n const profilePics = _.take(\n _.uniqBy(threadComments, c => c.UserId),\n 3,\n );\n content = (\n <View style={styles.multiReplyContainer}>\n {profilePics.map((c, i) => {\n return <ProfilePic style={{ marginRight: -10 }} Diameter={20} ProfilePic={c.User.profilePic} />;\n })}\n <Text style={[styles.commentRepliesText, { marginLeft: 20, color: this.props.colourBrandingMain }]}>{`${\n threadComments.length\n } repl${getPluralOptions(threadComments.length, 'y', 'ies')}`}</Text>\n </View>\n );\n }\n\n return (\n <View style={styles.commentReplies}>\n <TouchableOpacity\n onPress={() => {\n this.onOpenThread(c);\n }}\n >\n {content}\n </TouchableOpacity>\n </View>\n );\n };\n\n renderComment(c) {\n return (\n <View style={styles.comment} key={c.Id}>\n <View style={styles.commentFlex}>\n <ProfilePic ProfilePic={c.User.profilePic} Diameter={40} style={styles.commentProfilePic} />\n <View style={styles.commentBlock}>\n <View style={styles.commentTitleRow}>\n {this.canRemoveComment(c) ? (\n <TouchableOpacity onPress={this.onPressDeleteComment.bind(this, c)}>\n <View style={[styles.commentButtonContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"trash\" type=\"font-awesome\" iconStyle={styles.commentButtonIcon} />\n </View>\n </TouchableOpacity>\n ) : null\n // (\n // !this.props.disableFlag && (\n // <TouchableOpacity onPress={this.onPressReportComment.bind(this, c)}>\n // <View style={[styles.commentButtonContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n // <Icon name=\"flag\" type=\"font-awesome\" iconStyle={styles.commentButtonIcon} />\n // </View>\n // </TouchableOpacity>\n // )\n // )\n }\n <Text style={[styles.commentName, { fontSize: this.getAdjustedSize(13) }]}>{c.User.displayName}</Text>\n </View>\n {!_.isEmpty(c.Comment) && <Text style={[styles.commentText, { fontSize: this.getAdjustedSize(13) }]}>{c.Comment}</Text>}\n {this.renderCommentImage(c)}\n </View>\n </View>\n <View style={styles.commentBottom}>\n <Text style={[styles.commentTime, { fontSize: this.getAdjustedSize(13) }]}>\n {moment\n .utc(c.Timestamp)\n .local()\n .format('D MMM • h:mma')}\n </Text>\n {this.renderReplyText(c)}\n </View>\n </View>\n );\n }\n\n renderMute() {\n const { notificationsForComments } = this.props;\n const { muteLoaded, muteExpiry, processing } = this.state;\n if (!notificationsForComments || !muteLoaded) return null;\n\n if (processing)\n return (\n <View style={styles.muteSpinnerContainer}>\n <Spinner size={'small'} color={this.props.colourBrandingMain} />\n </View>\n );\n\n const isMuted = this.isMuted();\n const hours = this.getMuteRemaining();\n const mutedFor = `Muted for ${hours} hour${getPluralS(hours)}`;\n // console.log(muteExpiry.format('DD MMM YYYY hh:mm a'));\n\n return (\n <View style={styles.muteContainer}>\n {isMuted && muteExpiry ? <Text style={[{ color: this.props.colourBrandingMain }, styles.mutedForText]}>{mutedFor}</Text> : null}\n <InlineButton\n onPress={isMuted ? this.onUnmute : this.onMute}\n color=\"#fff\"\n style={[{ borderColor: this.props.colourBrandingMain }, styles.muteButton]}\n disabled={processing}\n disabledOpacity\n noText\n >\n <View style={styles.muteButtonInner}>\n <Icon\n name={isMuted ? 'bell-o' : 'bell-slash-o'}\n type={'font-awesome'}\n iconStyle={[{ color: this.props.colourBrandingMain }, styles.muteButtonIcon]}\n />\n <Text style={[{ color: this.props.colourBrandingMain }, styles.muteButtonText]}>{isMuted ? 'Unmute' : 'Mute'}</Text>\n </View>\n </InlineButton>\n </View>\n );\n }\n\n renderComments() {\n if (this.state.commentsLoading) {\n return (\n <View style={styles.commentSection}>\n <Spinner color={this.props.colourBrandingMain} />\n </View>\n );\n }\n if (this.isEmpty() && !this.state.addingComment) {\n if (_.includes(this.props.user.hidden, 'addComment')) {\n return null;\n }\n if (!_.isNil(this.props.placeHolder) && _.isEmpty(this.props.placeHolder)) return null;\n return (\n <View style={styles.commentSection}>\n <Text style={[styles.commentsEmpty, { fontSize: this.getAdjustedSize(15) }]}>\n {_.isNil(this.props.placeHolder) ? 'Be the first to add a comment!' : this.props.placeHolder}\n </Text>\n </View>\n );\n }\n let source = [...this.state.comments];\n if (this.props.reverseOrder) {\n source = source.reverse();\n }\n if (!this.props.showReplies && !this.props.threadId) {\n source = _.filter(source, c => {\n return !c.ParentId;\n });\n }\n return (\n <View style={styles.commentSection}>\n {!this.isEmpty() && (\n <View style={styles.commentSectionTitleRow}>\n <View style={{ alignItems: 'flex-end' }}>\n {this.renderMute()}\n {!this.props.hideAddComment && this.state.comments.length > 2 && (\n <TouchableOpacity onPress={this.onGoToAdd.bind(this)}>\n <Text style={[styles.goToText, { color: this.props.colourBrandingMain }]}>Add a comment</Text>\n </TouchableOpacity>\n )}\n </View>\n <Text style={[styles.commentCount, { fontSize: this.getAdjustedSize(15) }]}>\n {this.state.comments.length}\n {` comment${getPluralS(this.state.comments.length)}`}\n </Text>\n </View>\n )}\n {this.props.reverseOrder && this.state.addingComment && <Spinner color={this.props.colourBrandingMain} />}\n {source.map(c => {\n return this.renderComment(c);\n })}\n {!this.props.reverseOrder && this.state.addingComment && <Spinner color={this.props.colourBrandingMain} />}\n </View>\n );\n }\n\n renderCommentImagePopup() {\n return (\n <ImagePopup\n visible={this.state.imagePopupOpen}\n images={this.state.imagePopupSource}\n onClose={this.closeCommentGallery.bind(this)}\n ref=\"commentImagePopup\"\n />\n );\n }\n\n renderReportLoading() {\n if (!this.state.reportLoading) return null;\n return (\n <View style={styles.reportLoadingContainer}>\n <Spinner color={this.props.colourBrandingMain} />\n </View>\n );\n }\n\n render() {\n if (_.includes(this.props.user.hidden, 'viewComment')) {\n return null;\n }\n return (\n <View style={[styles.commentSectionOuter, this.props.style]}>\n {this.renderComments()}\n {this.renderReportLoading()}\n {this.renderCommentDeleteConfirm()}\n {this.renderCommentReportConfirm()}\n {this.renderCommentReportStatus()}\n {this.renderCommentImagePopup()}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n commentSectionOuter: {\n flex: 1,\n paddingHorizontal: 16,\n },\n commentSection: {\n flex: 1,\n paddingVertical: 12,\n borderTopColor: LINEGREY,\n borderTopWidth: 1,\n },\n commentCount: {\n fontFamily: 'sf-semibold',\n color: TEXT_DARKEST,\n flex: 1,\n marginTop: 4,\n },\n comment: {\n marginTop: 16,\n },\n commentFlex: {\n flexDirection: 'row',\n },\n commentProfilePic: {\n marginRight: 8,\n },\n commentBlock: {\n flex: 1,\n backgroundColor: BG_GREY,\n borderRadius: 5,\n padding: 8,\n },\n commentTitleRow: {\n flexDirection: 'row-reverse',\n alignItems: 'center',\n },\n commentButtonContainer: {\n width: 24,\n height: 24,\n borderRadius: 12,\n alignItems: 'center',\n justifyContent: 'center',\n },\n commentButtonIcon: {\n fontSize: 13,\n color: '#fff',\n },\n commentName: {\n fontFamily: 'sf-semibold',\n color: TEXT_DARKEST,\n flex: 1,\n },\n commentText: {\n marginTop: 8,\n fontFamily: 'sf-regular',\n color: TEXT_DARKEST,\n },\n commentBottom: {\n flexDirection: 'row-reverse',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n commentTime: {\n fontFamily: 'sf-regular',\n marginTop: 4,\n color: TEXT_LIGHT,\n textAlign: 'right',\n },\n commentReplies: {\n flex: 1,\n paddingLeft: 48,\n },\n commentRepliesText: {\n fontFamily: 'sf-semibold',\n fontSize: 15,\n },\n multiReplyContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 4,\n },\n commentImageContainer: {\n marginTop: 8,\n width: 60,\n height: 60,\n },\n commentImage: {\n width: 60,\n height: 60,\n borderRadius: 2,\n },\n commentsEmpty: {\n fontFamily: 'sf-semibold',\n color: TEXT_DARKEST,\n },\n commentSectionTitleRow: {\n flexDirection: 'row-reverse',\n },\n commentReportText: {\n fontFamily: 'sf-regular',\n fontSize: 14,\n paddingHorizontal: 22,\n textAlign: 'center',\n },\n reportLoadingContainer: {\n paddingVertical: 10,\n },\n goToText: {\n marginTop: 4,\n },\n muteSpinnerContainer: {\n width: 100,\n marginBottom: 6,\n },\n muteContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n marginBottom: 6,\n },\n mutedForText: {\n fontFamily: 'sf-semibold',\n fontSize: 13,\n marginRight: 8,\n },\n muteButton: {\n borderWidth: 1,\n paddingHorizontal: 8,\n },\n muteButtonInner: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n muteButtonIcon: {\n fontSize: 14,\n },\n muteButtonText: {\n fontFamily: 'sf-semibold',\n fontSize: 14,\n marginLeft: 6,\n },\n});\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: getMainBrandingColourFromState(state),\n user: state.user,\n notificationsForComments: getSiteSettingFromState(state, 'NotificationsForComments', false),\n };\n};\n\nconst commentSection = connect(mapStateToProps, {}, null, { forwardRef: true })(CommentSection);\nexport { commentSection as CommentSection };\n"]}
1
+ {"version":3,"sources":["CommentSection.js"],"names":["React","Component","View","Text","TouchableOpacity","Image","StyleSheet","_","moment","connect","Icon","getPluralS","getThumb300","get1400","getSiteSettingFromState","getFirstName","getPluralOptions","getMainBrandingColourFromState","TEXT_DARKEST","BG_GREY","TEXT_LIGHT","LINEGREY","reactionActions","notificationActions","ConfirmPopup","ProfilePic","ImagePopup","InlineButton","Spinner","Services","CommentSection","constructor","props","c","setState","commentToDelete","removeComment","state","Id","then","res","console","log","newComments","filter","comments","commentToReport","commentId","reportLoading","reportComment","commentReportedStatus","catch","error","comment","navigation","navigate","threadId","entityType","entityId","processing","data","muteEntity","muteExpiry","Expiry","unmuteEntity","actual","duration","diff","asHours","Math","abs","ceil","notificationsForComments","getEntityNotificationSetting","muteLoaded","commentsLoading","hideReplyButton","threadComments","innerC","ParentId","content","isEmpty","styles","commentRepliesText","color","colourBrandingMain","User","displayName","profilePics","take","uniqBy","UserId","multiReplyContainer","map","i","marginRight","profilePic","marginLeft","length","commentReplies","onOpenThread","addingComment","componentDidMount","getNotificationSate","includes","user","hidden","getComments","componentWillUnmount","loadTimer","clearTimeout","onPressCommentImage","image","imagePopupSource","imagePopupOpen","onGoToAdd","commentReply","focusInput","getAdjustedSize","size","scaleFont","fontScale","commentsLoadStarted","current","loadingStarted","loadComments","minTime","maxBy","Timestamp","sortBy","concat","onCommentsLoaded","loadingCompleted","live","setTimeout","refreshFrequency","startedAddingComment","commentAdded","push","onCommentAdded","canRemoveComment","uid","permissions","adminPermission","closeCommentGallery","renderCommentDeleteConfirm","onPressConfirmDelete","onPressCancelDelete","renderCommentReportConfirm","onPressConfirmReport","onPressCancelReport","commentReportText","renderCommentReportStatus","isSuccess","onPressConfirmReportStatus","renderCommentImage","commentImageContainer","bind","commentImage","uri","renderComment","commentFlex","commentProfilePic","commentBlock","commentTitleRow","onPressDeleteComment","commentButtonContainer","backgroundColor","commentButtonIcon","disableFlag","onPressReportComment","commentName","fontSize","Comment","commentText","commentBottom","commentTime","utc","local","format","renderReplyText","renderMute","muteSpinnerContainer","isMuted","hours","getMuteRemaining","mutedFor","muteContainer","mutedForText","onUnmute","onMute","borderColor","muteButton","muteButtonInner","muteButtonIcon","muteButtonText","renderComments","commentSection","isNil","placeHolder","commentsEmpty","source","reverseOrder","reverse","showReplies","commentSectionTitleRow","alignItems","hideAddComment","goToText","commentCount","renderCommentImagePopup","renderReportLoading","reportLoadingContainer","render","commentSectionOuter","style","create","flex","paddingHorizontal","paddingVertical","borderTopColor","borderTopWidth","fontFamily","marginTop","flexDirection","borderRadius","padding","width","height","justifyContent","textAlign","paddingLeft","marginBottom","borderWidth","mapStateToProps","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { View, Text, TouchableOpacity, Image, StyleSheet } from 'react-native';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport { connect } from 'react-redux';\nimport { Icon } from 'react-native-elements';\nimport { getPluralS, getThumb300, get1400, getSiteSettingFromState, getFirstName, getPluralOptions } from '../helper';\nimport { getMainBrandingColourFromState, TEXT_DARKEST, BG_GREY, TEXT_LIGHT, LINEGREY } from '../colours';\nimport { reactionActions, notificationActions } from '../apis';\nimport { ConfirmPopup } from './ConfirmPopup';\nimport { ProfilePic } from './ProfilePic';\nimport { ImagePopup } from './ImagePopup';\nimport { InlineButton } from './InlineButton';\nimport { Spinner } from './Spinner';\nimport { Services } from '../config';\n\nclass CommentSection extends Component {\n constructor(props) {\n super(props);\n this.state = {\n commentsLoading: false,\n comments: [],\n addingComment: false,\n commentToDelete: null,\n commentToReport: null,\n commentReportedStatus: null,\n reportLoading: false,\n processing: false,\n muteExpiry: null,\n muteLoaded: false,\n };\n }\n\n componentDidMount() {\n this.getNotificationSate();\n\n if (!_.includes(this.props.user.hidden, 'viewComment')) {\n this.getComments();\n }\n }\n\n componentWillUnmount() {\n if (this.loadTimer) {\n clearTimeout(this.loadTimer);\n }\n }\n\n onPressDeleteComment = c => {\n this.setState({ commentToDelete: c });\n };\n\n onPressConfirmDelete = () => {\n reactionActions.removeComment(this.state.commentToDelete.Id).then(res => {\n console.log('deleted');\n });\n const newComments = _.filter(this.state.comments, c => {\n return c.Id !== this.state.commentToDelete.Id;\n });\n this.setState({\n comments: newComments,\n commentToDelete: null,\n });\n };\n\n onPressCancelDelete = () => {\n this.setState({ commentToDelete: null });\n };\n\n onPressReportComment = c => {\n this.setState({ commentToReport: c });\n };\n\n onPressConfirmReport = () => {\n const commentId = this.state.commentToReport.Id;\n this.setState({ reportLoading: true, commentToReport: null }, () => {\n reactionActions\n .reportComment(commentId)\n .then(res => {\n this.setState({ commentReportedStatus: 'success', reportLoading: false });\n })\n .catch(error => {\n console.log('reportComment', error);\n this.setState({ commentReportedStatus: 'fail', reportLoading: false });\n });\n });\n };\n\n onPressCancelReport = () => {\n this.setState({ commentToReport: null });\n };\n\n onPressConfirmReportStatus = () => {\n this.setState({ commentReportedStatus: null });\n };\n\n onPressCommentImage(image) {\n this.setState({\n imagePopupSource: [image],\n imagePopupOpen: true,\n });\n }\n\n onGoToAdd() {\n this.props.commentReply.focusInput();\n }\n\n onOpenThread = comment => {\n Services.navigation.navigate('thread', { ...this.props, threadId: comment.Id });\n };\n\n onMute = () => {\n const { entityType, entityId } = this.props;\n this.setState({ processing: true }, async () => {\n try {\n const { data } = await notificationActions.muteEntity(entityType, entityId);\n // console.log('onMute', data);\n const muteExpiry = moment(data.Expiry);\n this.setState({ muteExpiry, processing: false });\n } catch (error) {\n console.error('onMute', error);\n this.setState({ processing: false });\n }\n });\n };\n\n onUnmute = () => {\n const { entityType, entityId } = this.props;\n this.setState({ processing: true }, async () => {\n try {\n const { data } = await notificationActions.unmuteEntity(entityType, entityId);\n // console.log('onUnmute', data);\n this.setState({ muteExpiry: null, processing: false });\n } catch (error) {\n console.error('onUnmute', error);\n this.setState({ processing: false });\n }\n });\n };\n\n isMuted = () => {\n const { muteExpiry } = this.state;\n return muteExpiry && moment() <= muteExpiry;\n };\n\n getMuteRemaining = () => {\n const { muteExpiry } = this.state;\n const actual = muteExpiry ? moment.duration(muteExpiry.diff(moment())).asHours() : 0;\n return Math.abs(Math.ceil(actual));\n };\n\n getNotificationSate = () => {\n const { processing } = this.state;\n const { entityType, entityId, notificationsForComments } = this.props;\n if (processing || !notificationsForComments) return;\n\n this.setState({ processing: true }, async () => {\n try {\n const { data } = await notificationActions.getEntityNotificationSetting(entityType, entityId);\n // console.log('getNotificationSate', data);\n const muteExpiry = data ? moment(data.Expiry) : null;\n this.setState({ muteExpiry, muteLoaded: true, processing: false });\n } catch (error) {\n console.error('getNotificationSate', error);\n this.setState({ processing: false });\n }\n });\n };\n\n getAdjustedSize(size) {\n if (this.props.scaleFont) {\n return size + this.props.user.fontScale;\n }\n return size;\n }\n\n getComments() {\n if (!this.state.commentsLoadStarted) {\n this.setState({\n commentsLoadStarted: true,\n commentsLoading: true,\n });\n this.props.commentReply?.current?.loadingStarted();\n\n this.loadComments();\n }\n }\n\n isEmpty() {\n return _.isEmpty(this.state.comments);\n }\n\n loadComments() {\n const minTime = this.isEmpty()\n ? 0\n : _.maxBy(this.state.comments, c => {\n return c.Timestamp;\n }).Timestamp;\n reactionActions.getComments(this.props.entityId, this.props.entityType, minTime).then(res => {\n this.setState(\n {\n comments: _.sortBy(\n _.uniqBy(\n _.filter(_.concat(this.state.comments, res.data), c => {\n if (!this.props.threadId) {\n return true;\n }\n return c.Id === this.props.threadId || c.ParentId === this.props.threadId;\n }),\n c => {\n return c.Id;\n },\n ),\n 'Timestamp',\n ),\n commentsLoading: false,\n },\n () => {\n if (this.props.onCommentsLoaded) {\n this.props.onCommentsLoaded(this.state.comments.length);\n }\n },\n );\n //if (this.props.commentReply) {\n this.props.commentReply?.current?.loadingCompleted();\n //}\n if (this.props.live) {\n this.loadTimer = setTimeout(() => {\n this.loadComments();\n }, this.props.refreshFrequency || 2000);\n }\n });\n }\n\n isLoading = () => {\n return this.state.commentsLoading;\n };\n\n startedAddingComment() {\n this.setState({\n addingComment: true,\n });\n }\n\n commentAdded(comment) {\n const newComments = this.state.comments;\n newComments.push(comment);\n this.setState(\n {\n addingComment: false,\n comments: newComments,\n },\n () => {\n if (this.props.onCommentAdded) {\n this.props.onCommentAdded();\n }\n },\n );\n }\n\n canRemoveComment(c) {\n if (this.props.user.uid === c.UserId) {\n return true;\n }\n return _.includes(this.props.user.permissions, this.props.adminPermission);\n }\n\n closeCommentGallery() {\n this.setState({\n imagePopupSource: [],\n imagePopupOpen: false,\n });\n }\n\n renderCommentDeleteConfirm() {\n return (\n <ConfirmPopup\n visible={!!this.state.commentToDelete}\n onConfirm={this.onPressConfirmDelete}\n onCancel={this.onPressCancelDelete}\n onClose={this.onPressCancelDelete}\n text=\"Are you sure you want to delete this comment?\"\n />\n );\n }\n\n renderCommentReportConfirm() {\n return (\n <ConfirmPopup\n visible={!!this.state.commentToReport}\n onConfirm={this.onPressConfirmReport}\n onCancel={this.onPressCancelReport}\n onClose={this.onPressCancelReport}\n text=\"Are you sure you want to report this comment?\"\n extraContent={<Text style={styles.commentReportText}>This comment will be reported to our team and considered for deletion</Text>}\n />\n );\n }\n\n renderCommentReportStatus() {\n const { commentReportedStatus } = this.state;\n const isSuccess = commentReportedStatus === 'success';\n return (\n <ConfirmPopup\n visible={!!commentReportedStatus}\n onConfirm={this.onPressConfirmReportStatus}\n text={isSuccess ? 'Thank you for reporting' : 'Unable to report'}\n extraContent={\n <Text style={styles.commentReportText}>\n {isSuccess ? 'We will review the comment within 24 hours' : 'There was a problem reporting the comment please try again later'}\n </Text>\n }\n hideNo\n yesText={'Back to Article'}\n />\n );\n }\n\n renderCommentImage(c) {\n if (_.isEmpty(c.Image)) {\n return null;\n }\n return (\n <TouchableOpacity style={styles.commentImageContainer} onPress={this.onPressCommentImage.bind(this, get1400(c.Image))}>\n <Image style={styles.commentImage} source={{ uri: getThumb300(c.Image) }} />\n </TouchableOpacity>\n );\n }\n\n renderReplyText = c => {\n if (this.props.threadId || this.props.hideReplyButton) {\n return null;\n }\n\n const threadComments = _.filter(this.state.comments, innerC => {\n return innerC.ParentId === c.Id;\n });\n\n let content = null;\n\n if (_.isEmpty(threadComments)) {\n // no replies\n content = (\n <Text style={[styles.commentRepliesText, { color: this.props.colourBrandingMain }]}>{`Reply to ${getFirstName(\n c.User ? c.User.displayName : 'comment',\n )}`}</Text>\n );\n } else {\n // existing replies\n const profilePics = _.take(\n _.uniqBy(threadComments, c => c.UserId),\n 3,\n );\n content = (\n <View style={styles.multiReplyContainer}>\n {profilePics.map((c, i) => {\n return <ProfilePic style={{ marginRight: -10 }} Diameter={20} ProfilePic={c.User.profilePic} />;\n })}\n <Text style={[styles.commentRepliesText, { marginLeft: 20, color: this.props.colourBrandingMain }]}>{`${\n threadComments.length\n } repl${getPluralOptions(threadComments.length, 'y', 'ies')}`}</Text>\n </View>\n );\n }\n\n return (\n <View style={styles.commentReplies}>\n <TouchableOpacity\n onPress={() => {\n this.onOpenThread(c);\n }}\n >\n {content}\n </TouchableOpacity>\n </View>\n );\n };\n\n renderComment(c) {\n return (\n <View style={styles.comment} key={c.Id}>\n <View style={styles.commentFlex}>\n <ProfilePic ProfilePic={c.User.profilePic} Diameter={40} style={styles.commentProfilePic} />\n <View style={styles.commentBlock}>\n <View style={styles.commentTitleRow}>\n {this.canRemoveComment(c) ? (\n <TouchableOpacity onPress={this.onPressDeleteComment.bind(this, c)}>\n <View style={[styles.commentButtonContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"trash\" type=\"font-awesome\" iconStyle={styles.commentButtonIcon} />\n </View>\n </TouchableOpacity>\n ) : (\n !this.props.disableFlag && (\n <TouchableOpacity onPress={this.onPressReportComment.bind(this, c)}>\n <View style={[styles.commentButtonContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"flag\" type=\"font-awesome\" iconStyle={styles.commentButtonIcon} />\n </View>\n </TouchableOpacity>\n )\n )}\n <Text style={[styles.commentName, { fontSize: this.getAdjustedSize(13) }]}>{c.User.displayName}</Text>\n </View>\n {!_.isEmpty(c.Comment) && <Text style={[styles.commentText, { fontSize: this.getAdjustedSize(13) }]}>{c.Comment}</Text>}\n {this.renderCommentImage(c)}\n </View>\n </View>\n <View style={styles.commentBottom}>\n <Text style={[styles.commentTime, { fontSize: this.getAdjustedSize(13) }]}>\n {moment\n .utc(c.Timestamp)\n .local()\n .format('D MMM • h:mma')}\n </Text>\n {this.renderReplyText(c)}\n </View>\n </View>\n );\n }\n\n renderMute() {\n const { notificationsForComments } = this.props;\n const { muteLoaded, muteExpiry, processing } = this.state;\n if (!notificationsForComments || !muteLoaded) return null;\n\n if (processing)\n return (\n <View style={styles.muteSpinnerContainer}>\n <Spinner size={'small'} color={this.props.colourBrandingMain} />\n </View>\n );\n\n const isMuted = this.isMuted();\n const hours = this.getMuteRemaining();\n const mutedFor = `Muted for ${hours} hour${getPluralS(hours)}`;\n // console.log(muteExpiry.format('DD MMM YYYY hh:mm a'));\n\n return (\n <View style={styles.muteContainer}>\n {isMuted && muteExpiry ? <Text style={[{ color: this.props.colourBrandingMain }, styles.mutedForText]}>{mutedFor}</Text> : null}\n <InlineButton\n onPress={isMuted ? this.onUnmute : this.onMute}\n color=\"#fff\"\n style={[{ borderColor: this.props.colourBrandingMain }, styles.muteButton]}\n disabled={processing}\n disabledOpacity\n noText\n >\n <View style={styles.muteButtonInner}>\n <Icon\n name={isMuted ? 'bell-o' : 'bell-slash-o'}\n type={'font-awesome'}\n iconStyle={[{ color: this.props.colourBrandingMain }, styles.muteButtonIcon]}\n />\n <Text style={[{ color: this.props.colourBrandingMain }, styles.muteButtonText]}>{isMuted ? 'Unmute' : 'Mute'}</Text>\n </View>\n </InlineButton>\n </View>\n );\n }\n\n renderComments() {\n if (this.state.commentsLoading) {\n return (\n <View style={styles.commentSection}>\n <Spinner color={this.props.colourBrandingMain} />\n </View>\n );\n }\n if (this.isEmpty() && !this.state.addingComment) {\n if (_.includes(this.props.user.hidden, 'addComment')) {\n return null;\n }\n if (!_.isNil(this.props.placeHolder) && _.isEmpty(this.props.placeHolder)) return null;\n return (\n <View style={styles.commentSection}>\n <Text style={[styles.commentsEmpty, { fontSize: this.getAdjustedSize(15) }]}>\n {_.isNil(this.props.placeHolder) ? 'Be the first to add a comment!' : this.props.placeHolder}\n </Text>\n </View>\n );\n }\n let source = [...this.state.comments];\n if (this.props.reverseOrder) {\n source = source.reverse();\n }\n if (!this.props.showReplies && !this.props.threadId) {\n source = _.filter(source, c => {\n return !c.ParentId;\n });\n }\n return (\n <View style={styles.commentSection}>\n {!this.isEmpty() && (\n <View style={styles.commentSectionTitleRow}>\n <View style={{ alignItems: 'flex-end' }}>\n {this.renderMute()}\n {!this.props.hideAddComment && this.state.comments.length > 2 && (\n <TouchableOpacity onPress={this.onGoToAdd.bind(this)}>\n <Text style={[styles.goToText, { color: this.props.colourBrandingMain }]}>Add a comment</Text>\n </TouchableOpacity>\n )}\n </View>\n <Text style={[styles.commentCount, { fontSize: this.getAdjustedSize(15) }]}>\n {this.state.comments.length}\n {` comment${getPluralS(this.state.comments.length)}`}\n </Text>\n </View>\n )}\n {this.props.reverseOrder && this.state.addingComment && <Spinner color={this.props.colourBrandingMain} />}\n {source.map(c => {\n return this.renderComment(c);\n })}\n {!this.props.reverseOrder && this.state.addingComment && <Spinner color={this.props.colourBrandingMain} />}\n </View>\n );\n }\n\n renderCommentImagePopup() {\n return (\n <ImagePopup\n visible={this.state.imagePopupOpen}\n images={this.state.imagePopupSource}\n onClose={this.closeCommentGallery.bind(this)}\n ref=\"commentImagePopup\"\n />\n );\n }\n\n renderReportLoading() {\n if (!this.state.reportLoading) return null;\n return (\n <View style={styles.reportLoadingContainer}>\n <Spinner color={this.props.colourBrandingMain} />\n </View>\n );\n }\n\n render() {\n if (_.includes(this.props.user.hidden, 'viewComment')) {\n return null;\n }\n return (\n <View style={[styles.commentSectionOuter, this.props.style]}>\n {this.renderComments()}\n {this.renderReportLoading()}\n {this.renderCommentDeleteConfirm()}\n {this.renderCommentReportConfirm()}\n {this.renderCommentReportStatus()}\n {this.renderCommentImagePopup()}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n commentSectionOuter: {\n flex: 1,\n paddingHorizontal: 16,\n },\n commentSection: {\n flex: 1,\n paddingVertical: 12,\n borderTopColor: LINEGREY,\n borderTopWidth: 1,\n },\n commentCount: {\n fontFamily: 'sf-semibold',\n color: TEXT_DARKEST,\n flex: 1,\n marginTop: 4,\n },\n comment: {\n marginTop: 16,\n },\n commentFlex: {\n flexDirection: 'row',\n },\n commentProfilePic: {\n marginRight: 8,\n },\n commentBlock: {\n flex: 1,\n backgroundColor: BG_GREY,\n borderRadius: 5,\n padding: 8,\n },\n commentTitleRow: {\n flexDirection: 'row-reverse',\n alignItems: 'center',\n },\n commentButtonContainer: {\n width: 24,\n height: 24,\n borderRadius: 12,\n alignItems: 'center',\n justifyContent: 'center',\n },\n commentButtonIcon: {\n fontSize: 13,\n color: '#fff',\n },\n commentName: {\n fontFamily: 'sf-semibold',\n color: TEXT_DARKEST,\n flex: 1,\n },\n commentText: {\n marginTop: 8,\n fontFamily: 'sf-regular',\n color: TEXT_DARKEST,\n },\n commentBottom: {\n flexDirection: 'row-reverse',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n commentTime: {\n fontFamily: 'sf-regular',\n marginTop: 4,\n color: TEXT_LIGHT,\n textAlign: 'right',\n },\n commentReplies: {\n flex: 1,\n paddingLeft: 48,\n },\n commentRepliesText: {\n fontFamily: 'sf-semibold',\n fontSize: 15,\n },\n multiReplyContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 4,\n },\n commentImageContainer: {\n marginTop: 8,\n width: 60,\n height: 60,\n },\n commentImage: {\n width: 60,\n height: 60,\n borderRadius: 2,\n },\n commentsEmpty: {\n fontFamily: 'sf-semibold',\n color: TEXT_DARKEST,\n },\n commentSectionTitleRow: {\n flexDirection: 'row-reverse',\n },\n commentReportText: {\n fontFamily: 'sf-regular',\n fontSize: 14,\n paddingHorizontal: 22,\n textAlign: 'center',\n },\n reportLoadingContainer: {\n paddingVertical: 10,\n },\n goToText: {\n marginTop: 4,\n },\n muteSpinnerContainer: {\n width: 100,\n marginBottom: 6,\n },\n muteContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n marginBottom: 6,\n },\n mutedForText: {\n fontFamily: 'sf-semibold',\n fontSize: 13,\n marginRight: 8,\n },\n muteButton: {\n borderWidth: 1,\n paddingHorizontal: 8,\n },\n muteButtonInner: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n muteButtonIcon: {\n fontSize: 14,\n },\n muteButtonText: {\n fontFamily: 'sf-semibold',\n fontSize: 14,\n marginLeft: 6,\n },\n});\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: getMainBrandingColourFromState(state),\n user: state.user,\n notificationsForComments: getSiteSettingFromState(state, 'NotificationsForComments', false),\n };\n};\n\nconst commentSection = connect(mapStateToProps, {}, null, { forwardRef: true })(CommentSection);\nexport { commentSection as CommentSection };\n"]}
@@ -343,7 +343,8 @@ class ImageUploader extends Component {
343
343
  }
344
344
  } else {
345
345
  if (mediaSelected[0].mediaType === MediaLibrary.MediaType.video) {
346
- this.handleVideoPicked(mediaSelected[0].localUri);
346
+ const uri = mediaSelected[0].localUri || mediaSelected[0].uri;
347
+ this.handleVideoPicked(uri);
347
348
  } else {
348
349
  this.handleMultiImagePicked(mediaSelected);
349
350
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["ImageUploader.js"],"names":["React","Component","View","ScrollView","TouchableOpacity","Text","Platform","Linking","Modal","Dimensions","StyleSheet","ImageBackground","connect","Icon","_","Camera","MediaLibrary","ImageManipulator","ImagePicker","ImageBrowser","ExpoImageManipulator","Header","Popup","PopupMenu","InlineButton","getValueOrDefault","getThumb300","isVideo","getMainBrandingColourFromState","BOXGREY","INACTIVE_BUTTON","TEXT_BLUEGREY","TEXT_DARK","LINEGREY","Config","fileActions","stockImagesLoaded","imageLibraryLoaded","SCREEN_WIDTH","get","width","SCREEN_HEIGHT","height","DEFAULT_ASPECT","DEFAULT_ALLOWS_EDITING","DEFAULT_ALLOWS_IOS_CAMERA_EDITING","DEFAULT_EXIF","DEFULAT_IMAGE_TYPE","DEFAULT_IMAGE_NAME","DEFAULT_VIDEO_NAME","DEFAULT_SIZE","DEFAULT_COMPRESSION","ImageUploader","constructor","props","hasPermission","getPermissionsAsync","granted","setState","loadingLocalFolders","localAlbums","getAlbumsAsync","includeSmartAlbums","title","id","error","console","log","loadingRemoteFolders","stockImages","getStockPhotos","libraryRes","getMediaFolders","user","site","data","mediaUri","uploadUri","uri","resizeImageAsync","res","uploadUserMediaWithProgress","progress","onUploadProgress","onUploadSuccess","env","baseUploadsUrl","key","e","onUploadFailed","actions","resize","size","saveOptions","format","compress","quality","base64","manipulateAsync","imageUri","fileName","getUploadUrl","userId","onUploadStarted","hideUploadMenu","resized","onlySelectImage","onImageSelected","imagesSelected","imagesUploaded","map","image","i","length","fileType","substring","lastIndexOf","cameraPermission","requestCameraPermissionsAsync","rollPermission","requestPermissionsAsync","status","showWarningPopup","state","loadLocalAlbums","multiple","allowVideo","allowsEditing","askPermissionsAsync","result","launchImageLibraryAsync","mediaTypes","MediaTypeOptions","Images","isEditingEnabled","aspect","exif","cancelled","handleImagePicked","Videos","handleVideoPicked","editingAllowed","OS","allowsEditingIOSCamera","launchCameraAsync","showUploadMenu","showPhotos","selected","showRemote","selectedAlbumId","showCropper","showSelectAlbum","videoSelected","onAttach","selectedType","callback","openCropper","mediaSelected","onLibrarySelected","media","mediaType","MediaType","video","localUri","handleMultiImagePicked","hidePhotos","deleteIndex","indexOf","splice","options","text","onPress","openCamera","push","openVideoCamera","openPhotos","hideLibrary","openLibrary","selectedItemNumber","styles","selectedItemContainer","selectedMarkerContainer","backgroundColor","colourBrandingMain","selectedItemText","selectedItemIcon","warning","componentDidMount","loadRemoteAlbums","camera","roll","innerWarning","closeWarningPopup","goToPermissionSettings","openURL","renderSelectionPreview","selectionPreviewContainer","previewItemContainer","previewItemImage","previewItemRemoveButton","onRemoveImage","previewItemRemoveContainer","previewItemRemoveIcon","renderSelectedAlbum","selectedAlbum","imageLibrary","find","album","selectedAlbumText","onSelectAlbum","selectAlbumButton","selectAlbumButtonText","selectAlbumButtonIcon","renderBrowser","imagesLimit","onSelectionChange","renderSelectedComponent","onSelected","browserContainer","itemContainer","renderAttachButton","canAttach","isEmpty","attachText","buttonContainer","renderSelectAlbumPopup","onSelectAlbumClosed","selectAlbumModal","selectAlbumContainer","selectAlbumTitleContainer","selectAlbumTitle","index","onAlbumSelected","albumOptionContainer","borderTopWidth","albumOptionText","marginHorizontal","color","renderPhotos","popupTitle","contentContainer","render","action","bind","bold","buildOptions","toggleCropper","create","flex","padding","position","top","right","borderRadius","alignItems","justifyContent","fontFamily","fontSize","marginBottom","paddingHorizontal","paddingTop","flexDirection","marginRight","bottom","left","zIndex","borderTopLeftRadius","borderTopRightRadius","maxHeight","borderColor","borderBottomWidth","textAlign","paddingVertical","paddingRight","paddingLeft","overflow","borderWidth","mapStateToProps","filter","folder","Public","Name","RowId","images","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { View, ScrollView, TouchableOpacity, Text, Platform, Linking, Modal, Dimensions, StyleSheet, ImageBackground } from 'react-native';\nimport { connect } from 'react-redux';\nimport { Icon } from 'react-native-elements';\nimport _ from 'lodash';\nimport { Camera } from 'expo-camera';\nimport * as MediaLibrary from 'expo-media-library';\nimport * as ImageManipulator from 'expo-image-manipulator';\nimport * as ImagePicker from 'expo-image-picker';\nimport ImageBrowser from './expo-image-picker-multiple/ImageBrowser';\nimport ExpoImageManipulator from './react-native-expo-image-cropper/ExpoImageManipulator';\nimport Header from './Header';\nimport { Popup } from './Popup';\nimport { PopupMenu } from './PopupMenu';\nimport { InlineButton } from './InlineButton';\nimport { getValueOrDefault, getThumb300, isVideo } from '../helper';\nimport { getMainBrandingColourFromState, BOXGREY, INACTIVE_BUTTON, TEXT_BLUEGREY, TEXT_DARK, LINEGREY } from '../colours';\nimport Config from '../config';\nimport { fileActions } from '../apis';\nimport { stockImagesLoaded, imageLibraryLoaded } from '../actions';\n\nconst SCREEN_WIDTH = Dimensions.get('window').width;\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\nconst DEFAULT_ASPECT = [1, 1];\nconst DEFAULT_ALLOWS_EDITING = true;\nconst DEFAULT_ALLOWS_IOS_CAMERA_EDITING = false;\nconst DEFAULT_EXIF = true;\nconst DEFULAT_IMAGE_TYPE = 'jpeg';\nconst DEFAULT_IMAGE_NAME = 'image';\nconst DEFAULT_VIDEO_NAME = 'video';\nconst DEFAULT_SIZE = {\n width: 1400,\n};\nconst DEFAULT_COMPRESSION = 0.8;\n\nclass ImageUploader extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n showUploadMenu: false,\n warning: null,\n showPhotos: false,\n showRemote: false,\n selected: [],\n selectedType: '',\n onAttach: null,\n selectedAlbumId: '',\n showSelectAlbum: false,\n showCropper: false,\n localAlbums: [],\n loadingLocalFolders: false,\n loadingRemoteFolders: false,\n };\n }\n\n componentDidMount() {\n this.loadLocalAlbums();\n this.loadRemoteAlbums();\n }\n\n loadLocalAlbums = async () => {\n const hasPermission = await MediaLibrary.getPermissionsAsync();\n if (!hasPermission.granted) return;\n\n this.setState({ loadingLocalFolders: true }, async () => {\n try {\n const localAlbums = await MediaLibrary.getAlbumsAsync({ includeSmartAlbums: true });\n this.setState({\n loadingLocalFolders: false,\n localAlbums: [\n {\n title: 'All Photos',\n id: '',\n },\n ...localAlbums,\n ],\n });\n } catch (error) {\n console.log('loadLocalAlbums - error', error);\n this.setState({ loadingLocalFolders: false });\n }\n });\n };\n\n loadRemoteAlbums = () => {\n this.setState({ loadingRemoteFolders: true }, async () => {\n try {\n const stockImages = await fileActions.getStockPhotos();\n this.props.stockImagesLoaded(stockImages);\n const libraryRes = await fileActions.getMediaFolders(this.props.user.site);\n this.props.imageLibraryLoaded(libraryRes.data);\n } catch (error) {\n console.log('loadRemoteAlbums - error', error);\n } finally {\n this.setState({ loadingRemoteFolders: false });\n }\n });\n };\n\n showUploadMenu() {\n this.setState({\n showUploadMenu: true,\n });\n }\n\n hideUploadMenu() {\n this.setState({\n showUploadMenu: false,\n });\n }\n\n retryUpload = async (mediaUri, uploadUri) => {\n try {\n const uri = isVideo(uploadUri) ? mediaUri : (await this.resizeImageAsync(mediaUri)).uri;\n const res = await fileActions.uploadUserMediaWithProgress(uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload(retry) success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('retryUpload error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n resizeImageAsync = async uri => {\n const actions = [\n {\n resize: getValueOrDefault(this.props.size, DEFAULT_SIZE),\n },\n ];\n const saveOptions = {\n format: DEFULAT_IMAGE_TYPE,\n compress: getValueOrDefault(this.props.quality, DEFAULT_COMPRESSION),\n base64: true,\n };\n return await ImageManipulator.manipulateAsync(uri, actions, saveOptions);\n };\n\n handleImagePicked = async imageUri => {\n let uploadUri;\n try {\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_IMAGE_NAME)}.${DEFULAT_IMAGE_TYPE}`;\n uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n\n this.props.onUploadStarted(uploadUri, imageUri);\n this.hideUploadMenu();\n\n const resized = await this.resizeImageAsync(imageUri);\n if (this.props.onlySelectImage) {\n this.props.onImageSelected(resized, fileName);\n return;\n }\n\n const res = await fileActions.uploadUserMediaWithProgress(resized.uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('handleImagePicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n handleMultiImagePicked = async imagesSelected => {\n // Signal start of all images selected\n const imagesUploaded = imagesSelected.map(image => {\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_IMAGE_NAME)}.${DEFULAT_IMAGE_TYPE}`;\n const uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n if (!this.props.onlySelectImage) this.props.onUploadStarted(uploadUri, image.uri);\n return { imageUri: image.uri, uploadUri, fileName };\n });\n this.hideUploadMenu();\n\n // Sequentially upload all imagesUploaded\n for (let i = 0; i < imagesUploaded.length; i++) {\n const image = imagesUploaded[i];\n const { imageUri, uploadUri, fileName } = image;\n try {\n const resized = await this.resizeImageAsync(imageUri);\n if (this.props.onlySelectImage) {\n this.props.onImageSelected(resized, fileName);\n return;\n }\n\n const res = await fileActions.uploadUserMediaWithProgress(resized.uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('handleMultiImagePicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n }\n };\n\n handleVideoPicked = async uri => {\n let uploadUri;\n try {\n const fileType = uri.substring(uri.lastIndexOf('.') + 1);\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_VIDEO_NAME)}.${fileType}`;\n uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n\n this.props.onUploadStarted(uploadUri, uri);\n this.hideUploadMenu();\n\n const res = await fileActions.uploadUserMediaWithProgress(uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('handleVideoPicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n showWarningPopup(camera, roll) {\n if (Platform.OS !== 'ios') {\n return;\n }\n let innerWarning = '';\n if (camera && roll) {\n innerWarning = 'both your camera and photo library';\n } else if (camera) {\n innerWarning = 'your camera';\n } else if (roll) {\n innerWarning = 'your photo library';\n } else {\n // nothing to warn about\n return;\n }\n this.setState({\n warning: `You must grant access to ${innerWarning}. Tap Go to settings to change your permission settings.`,\n });\n }\n\n closeWarningPopup() {\n this.setState({\n warning: null,\n });\n }\n\n goToPermissionSettings() {\n Linking.openURL('app-settings:');\n this.setState({\n warning: null,\n });\n }\n\n askPermissionsAsync = async () => {\n const cameraPermission = await Camera.requestCameraPermissionsAsync();\n const rollPermission = await MediaLibrary.requestPermissionsAsync();\n if (cameraPermission.status !== 'granted' || rollPermission.status !== 'granted') {\n this.showWarningPopup(cameraPermission.status !== 'granted', rollPermission.status !== 'granted');\n return false;\n }\n if (this.state.localAlbums?.length <= 0) this.loadLocalAlbums();\n\n return true;\n };\n\n isEditingEnabled = () => {\n return !this.props.multiple && !this.props.allowVideo && getValueOrDefault(this.props.allowsEditing, DEFAULT_ALLOWS_EDITING);\n };\n\n // NOTE: No longer used (replaced by openPhotos)\n openCameraRoll = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n const result = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\n allowsEditing: this.isEditingEnabled(),\n aspect: getValueOrDefault(this.props.aspect, DEFAULT_ASPECT),\n exif: true,\n base64: true,\n });\n\n if (!result.cancelled) this.handleImagePicked(result.uri);\n };\n\n // NOTE: No longer used (replaced by openPhotos)\n openVideoRoll = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n const result = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Videos,\n allowsEditing: this.isEditingEnabled(),\n });\n\n if (!result.cancelled) this.handleVideoPicked(result.uri);\n };\n\n openCamera = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n let editingAllowed = this.isEditingEnabled();\n if (Platform.OS === 'ios') {\n editingAllowed = getValueOrDefault(\n this.props.allowsEditingIOSCamera,\n getValueOrDefault(this.props.allowsEditing, DEFAULT_ALLOWS_IOS_CAMERA_EDITING),\n );\n }\n const result = await ImagePicker.launchCameraAsync({\n allowsEditing: editingAllowed,\n aspect: getValueOrDefault(this.props.aspect, DEFAULT_ASPECT),\n exif: getValueOrDefault(this.props.exif, DEFAULT_EXIF),\n });\n\n if (!result.cancelled) this.handleImagePicked(result.uri);\n };\n\n openVideoCamera = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n const result = await ImagePicker.launchCameraAsync({\n allowsEditing: this.isEditingEnabled(),\n mediaTypes: ImagePicker.MediaTypeOptions.Videos,\n });\n\n if (!result.cancelled) this.handleVideoPicked(result.uri);\n };\n\n openLibrary = async () => {\n this.setState({\n showUploadMenu: false,\n showPhotos: true,\n selected: [],\n showRemote: true,\n selectedAlbumId: '',\n });\n };\n\n openPhotos = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n this.setState({\n showUploadMenu: false,\n showPhotos: true,\n selected: [],\n showRemote: false,\n selectedAlbumId: '',\n });\n };\n\n hidePhotos = () => {\n this.setState({ showPhotos: false });\n };\n\n openCropper = () => {\n this.setState({ showPhotos: false, showCropper: true });\n };\n\n toggleCropper = () => {\n this.setState({ showCropper: !this.state.showCropper });\n };\n\n onSelectAlbum = () => {\n this.setState({ showSelectAlbum: true });\n };\n\n onSelectAlbumClosed = () => {\n this.setState({ showSelectAlbum: false });\n };\n\n onAlbumSelected = selectedAlbumId => {\n this.setState({ showSelectAlbum: false, selectedAlbumId });\n };\n\n onSelectionChange = (selected, videoSelected, onAttach) => {\n this.setState({\n selected,\n selectedType: videoSelected ? 'video' : 'image',\n onAttach,\n });\n };\n\n onSelected = async callback => {\n if (this.isEditingEnabled()) {\n this.openCropper();\n } else {\n const mediaSelected = await callback;\n // console.log('mediaSelected', mediaSelected);\n if (this.state.showRemote) {\n if (this.props.onLibrarySelected) {\n mediaSelected.map(media => {\n this.props.onLibrarySelected(media.uri);\n });\n }\n } else {\n if (mediaSelected[0].mediaType === MediaLibrary.MediaType.video) {\n this.handleVideoPicked(mediaSelected[0].localUri);\n } else {\n this.handleMultiImagePicked(mediaSelected);\n }\n }\n\n this.hidePhotos();\n }\n };\n\n onRemoveImage = uri => {\n const selected = [...this.state.selected];\n const deleteIndex = selected.indexOf(uri);\n selected.splice(deleteIndex, 1);\n this.setState({ selected });\n };\n\n buildOptions = () => {\n const options = [\n {\n text: 'Take photo',\n onPress: this.openCamera,\n },\n ];\n if (this.props.allowVideo)\n options.push({\n text: 'Record video',\n onPress: this.openVideoCamera,\n });\n options.push({\n text: 'Camera Roll',\n onPress: this.openPhotos,\n });\n if (!this.props.hideLibrary)\n options.push({\n text: 'Image Library',\n onPress: this.openLibrary,\n });\n\n return options;\n };\n\n renderSelectionPreview() {\n const { selected, showRemote } = this.state;\n\n return (\n <View>\n <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={styles.selectionPreviewContainer}>\n {selected &&\n selected.map(uri => {\n const imageUri = showRemote ? getThumb300(uri) : uri;\n return (\n <View key={uri} style={styles.previewItemContainer}>\n <ImageBackground style={styles.previewItemImage} source={{ uri: imageUri }} />\n <TouchableOpacity style={styles.previewItemRemoveButton} onPress={() => this.onRemoveImage(uri)}>\n <View style={[styles.previewItemRemoveContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"times\" type=\"font-awesome\" iconStyle={styles.previewItemRemoveIcon} />\n </View>\n </TouchableOpacity>\n </View>\n );\n })}\n </ScrollView>\n </View>\n );\n }\n\n renderSelectedAlbum() {\n const { localAlbums, selectedAlbumId, showRemote } = this.state;\n const selectedAlbum = (showRemote ? this.props.imageLibrary : localAlbums).find(album => album.id === selectedAlbumId);\n const selectedAlbumText = selectedAlbum ? selectedAlbum.title : '';\n\n return (\n <TouchableOpacity onPress={this.onSelectAlbum}>\n <View style={styles.selectAlbumButton}>\n <Text style={styles.selectAlbumButtonText}>{selectedAlbumText}</Text>\n <Icon name=\"angle-down\" type=\"font-awesome\" iconStyle={styles.selectAlbumButtonIcon} />\n </View>\n </TouchableOpacity>\n );\n }\n\n renderSelectedComponent = selectedItemNumber => {\n return (\n <View style={styles.selectedItemContainer}>\n <View style={[styles.selectedMarkerContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n {this.props.multiple ? (\n <Text style={styles.selectedItemText}>{selectedItemNumber}</Text>\n ) : (\n <Icon name=\"check\" type=\"font-awesome\" iconStyle={styles.selectedItemIcon} />\n )}\n </View>\n </View>\n );\n };\n\n renderBrowser() {\n const { selected, selectedAlbumId, showRemote } = this.state;\n const { imagesLimit, multiple, allowVideo, imageLibrary } = this.props;\n const width = (SCREEN_WIDTH - 10 * 2) / 4;\n\n return (\n <ImageBrowser\n max={!multiple ? 1 : imagesLimit}\n loadCount={30}\n onChange={this.onSelectionChange}\n renderSelectedComponent={this.renderSelectedComponent}\n callback={this.onSelected}\n selected={selected}\n allowVideo={allowVideo}\n style={styles.browserContainer}\n itemStyle={styles.itemContainer}\n itemWidth={width}\n itemHeight={width}\n album={selectedAlbumId}\n remoteAlbums={showRemote ? imageLibrary : null}\n />\n );\n }\n\n renderAttachButton() {\n const { selected, selectedType } = this.state;\n const canAttach = selected.length > 0 && !_.isEmpty(selectedType);\n const attachText = `Attach ${canAttach ? selected.length : ''} ${canAttach ? selectedType : ''}${selected.length > 1 ? 's' : ''}`;\n\n return (\n <View style={styles.buttonContainer}>\n <InlineButton\n color={canAttach ? this.props.colourBrandingMain : INACTIVE_BUTTON}\n onPress={this.state.onAttach}\n fillTouchable\n large\n disabled={!canAttach}\n >\n {attachText}\n </InlineButton>\n </View>\n );\n }\n\n renderSelectAlbumPopup() {\n const { showSelectAlbum, localAlbums, showRemote } = this.state;\n if (!showSelectAlbum) return null;\n\n return (\n <Modal visible transparent animationType=\"slide\" onRequestClose={this.onSelectAlbumClosed}>\n <View style={styles.selectAlbumModal}>\n <View style={styles.selectAlbumContainer}>\n <View style={styles.selectAlbumTitleContainer}>\n <Text style={styles.selectAlbumTitle}>Select Album</Text>\n </View>\n <ScrollView>\n {(showRemote ? this.props.imageLibrary : localAlbums).map((album, index) => {\n return (\n <TouchableOpacity key={album.id} onPress={() => this.onAlbumSelected(album.id)}>\n <View style={[styles.albumOptionContainer, index === 0 && { borderTopWidth: 0 }]}>\n <Text style={styles.albumOptionText}>{album.title}</Text>\n </View>\n </TouchableOpacity>\n );\n })}\n </ScrollView>\n <TouchableOpacity onPress={this.onSelectAlbumClosed}>\n <View style={[styles.albumOptionContainer, { marginHorizontal: 0 }]}>\n <Text style={[styles.albumOptionText, { color: this.props.colourBrandingMain }]}>Cancel</Text>\n </View>\n </TouchableOpacity>\n </View>\n </View>\n </Modal>\n );\n }\n\n renderPhotos() {\n return (\n <Modal visible transparent animationType=\"slide\" onRequestClose={this.hidePhotos}>\n <Header leftIcon=\"angle-left\" onPressLeft={this.hidePhotos} text={this.props.popupTitle || 'Attach image'} />\n <View style={styles.contentContainer}>\n {this.renderSelectionPreview()}\n {this.renderSelectedAlbum()}\n {this.renderBrowser()}\n </View>\n {this.renderAttachButton()}\n {this.renderSelectAlbumPopup()}\n </Modal>\n );\n }\n\n render() {\n const { warning, showUploadMenu, showPhotos, showCropper, selected } = this.state;\n\n if (warning != null) {\n return (\n <Popup\n title=\"Permissions missing\"\n text={warning}\n options={[\n {\n text: 'Go to settings',\n action: this.goToPermissionSettings.bind(this),\n bold: true,\n },\n {\n text: 'Ignore',\n action: this.closeWarningPopup.bind(this),\n },\n ]}\n />\n );\n }\n\n if (showUploadMenu) {\n const options = this.buildOptions();\n return <PopupMenu onClose={this.hideUploadMenu.bind(this)} options={options} title={this.props.popupTitle} cancelText=\"Cancel\" />;\n }\n\n if (showPhotos) return this.renderPhotos();\n\n if (showCropper) {\n return (\n <ExpoImageManipulator\n photo={{ uri: selected[0] }}\n onToggleModal={this.toggleCropper}\n isVisible={showCropper}\n onPictureChoosed={data => {\n this.handleImagePicked(data.uri);\n }}\n />\n );\n }\n\n return null;\n }\n}\n\nconst styles = StyleSheet.create({\n contentContainer: {\n flex: 1,\n backgroundColor: BOXGREY,\n },\n browserContainer: {\n padding: 10,\n },\n itemContainer: {\n padding: 4,\n },\n selectedItemContainer: {\n flex: 1,\n backgroundColor: '#0008',\n },\n selectedMarkerContainer: {\n position: 'absolute',\n top: 6,\n right: 6,\n width: 20,\n height: 20,\n borderRadius: 10,\n alignItems: 'center',\n justifyContent: 'center',\n },\n selectedItemText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n color: '#fff',\n marginBottom: 1,\n },\n selectedItemIcon: {\n fontSize: 12,\n color: '#fff',\n marginBottom: 1,\n },\n buttonContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n height: 60,\n paddingHorizontal: 14,\n backgroundColor: '#fff',\n },\n selectAlbumButton: {\n paddingTop: 13,\n paddingHorizontal: 14,\n flexDirection: 'row',\n alignItems: 'center',\n },\n selectAlbumButtonText: {\n fontFamily: 'sf-medium',\n fontSize: 14,\n color: TEXT_BLUEGREY,\n marginRight: 6,\n },\n selectAlbumButtonIcon: {\n fontSize: 20,\n color: TEXT_BLUEGREY,\n },\n selectAlbumModal: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n backgroundColor: 'rgba(0,0,0,0.5)',\n zIndex: 1000,\n },\n selectAlbumContainer: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: '#fff',\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n maxHeight: SCREEN_HEIGHT / 2,\n },\n selectAlbumTitleContainer: {\n padding: 16,\n borderColor: LINEGREY,\n borderBottomWidth: 1,\n },\n selectAlbumTitle: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n textAlign: 'center',\n color: TEXT_DARK,\n },\n albumOptionContainer: {\n marginHorizontal: 16,\n paddingVertical: 16,\n borderColor: LINEGREY,\n borderTopWidth: 1,\n },\n albumOptionText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n textAlign: 'center',\n color: TEXT_DARK,\n },\n selectionPreviewContainer: {\n paddingTop: 14,\n paddingRight: 2,\n paddingLeft: 14,\n },\n previewItemContainer: {\n marginRight: 12,\n },\n previewItemImage: {\n width: 50,\n height: 50,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 4,\n overflow: 'hidden',\n },\n previewItemRemoveButton: {\n position: 'absolute',\n top: -8,\n right: -8,\n },\n previewItemRemoveContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 10,\n width: 20,\n height: 20,\n borderWidth: 2,\n borderColor: '#fff',\n },\n previewItemRemoveIcon: {\n fontSize: 10,\n color: '#fff',\n marginBottom: 1,\n },\n});\n\nconst mapStateToProps = state => {\n const { user, media } = state;\n const imageLibrary = media.imageLibrary\n .filter(folder => !folder.Public)\n .map(album => {\n return {\n title: album.Name,\n id: album.RowId || '',\n images: album.RowId ? album.Images : media.stockImages,\n };\n });\n\n return {\n user,\n imageLibrary,\n colourBrandingMain: getMainBrandingColourFromState(state),\n };\n};\n\nexport default connect(mapStateToProps, { stockImagesLoaded, imageLibraryLoaded }, null, { forwardRef: true })(ImageUploader);\n"]}
1
+ {"version":3,"sources":["ImageUploader.js"],"names":["React","Component","View","ScrollView","TouchableOpacity","Text","Platform","Linking","Modal","Dimensions","StyleSheet","ImageBackground","connect","Icon","_","Camera","MediaLibrary","ImageManipulator","ImagePicker","ImageBrowser","ExpoImageManipulator","Header","Popup","PopupMenu","InlineButton","getValueOrDefault","getThumb300","isVideo","getMainBrandingColourFromState","BOXGREY","INACTIVE_BUTTON","TEXT_BLUEGREY","TEXT_DARK","LINEGREY","Config","fileActions","stockImagesLoaded","imageLibraryLoaded","SCREEN_WIDTH","get","width","SCREEN_HEIGHT","height","DEFAULT_ASPECT","DEFAULT_ALLOWS_EDITING","DEFAULT_ALLOWS_IOS_CAMERA_EDITING","DEFAULT_EXIF","DEFULAT_IMAGE_TYPE","DEFAULT_IMAGE_NAME","DEFAULT_VIDEO_NAME","DEFAULT_SIZE","DEFAULT_COMPRESSION","ImageUploader","constructor","props","hasPermission","getPermissionsAsync","granted","setState","loadingLocalFolders","localAlbums","getAlbumsAsync","includeSmartAlbums","title","id","error","console","log","loadingRemoteFolders","stockImages","getStockPhotos","libraryRes","getMediaFolders","user","site","data","mediaUri","uploadUri","uri","resizeImageAsync","res","uploadUserMediaWithProgress","progress","onUploadProgress","onUploadSuccess","env","baseUploadsUrl","key","e","onUploadFailed","actions","resize","size","saveOptions","format","compress","quality","base64","manipulateAsync","imageUri","fileName","getUploadUrl","userId","onUploadStarted","hideUploadMenu","resized","onlySelectImage","onImageSelected","imagesSelected","imagesUploaded","map","image","i","length","fileType","substring","lastIndexOf","cameraPermission","requestCameraPermissionsAsync","rollPermission","requestPermissionsAsync","status","showWarningPopup","state","loadLocalAlbums","multiple","allowVideo","allowsEditing","askPermissionsAsync","result","launchImageLibraryAsync","mediaTypes","MediaTypeOptions","Images","isEditingEnabled","aspect","exif","cancelled","handleImagePicked","Videos","handleVideoPicked","editingAllowed","OS","allowsEditingIOSCamera","launchCameraAsync","showUploadMenu","showPhotos","selected","showRemote","selectedAlbumId","showCropper","showSelectAlbum","videoSelected","onAttach","selectedType","callback","openCropper","mediaSelected","onLibrarySelected","media","mediaType","MediaType","video","localUri","handleMultiImagePicked","hidePhotos","deleteIndex","indexOf","splice","options","text","onPress","openCamera","push","openVideoCamera","openPhotos","hideLibrary","openLibrary","selectedItemNumber","styles","selectedItemContainer","selectedMarkerContainer","backgroundColor","colourBrandingMain","selectedItemText","selectedItemIcon","warning","componentDidMount","loadRemoteAlbums","camera","roll","innerWarning","closeWarningPopup","goToPermissionSettings","openURL","renderSelectionPreview","selectionPreviewContainer","previewItemContainer","previewItemImage","previewItemRemoveButton","onRemoveImage","previewItemRemoveContainer","previewItemRemoveIcon","renderSelectedAlbum","selectedAlbum","imageLibrary","find","album","selectedAlbumText","onSelectAlbum","selectAlbumButton","selectAlbumButtonText","selectAlbumButtonIcon","renderBrowser","imagesLimit","onSelectionChange","renderSelectedComponent","onSelected","browserContainer","itemContainer","renderAttachButton","canAttach","isEmpty","attachText","buttonContainer","renderSelectAlbumPopup","onSelectAlbumClosed","selectAlbumModal","selectAlbumContainer","selectAlbumTitleContainer","selectAlbumTitle","index","onAlbumSelected","albumOptionContainer","borderTopWidth","albumOptionText","marginHorizontal","color","renderPhotos","popupTitle","contentContainer","render","action","bind","bold","buildOptions","toggleCropper","create","flex","padding","position","top","right","borderRadius","alignItems","justifyContent","fontFamily","fontSize","marginBottom","paddingHorizontal","paddingTop","flexDirection","marginRight","bottom","left","zIndex","borderTopLeftRadius","borderTopRightRadius","maxHeight","borderColor","borderBottomWidth","textAlign","paddingVertical","paddingRight","paddingLeft","overflow","borderWidth","mapStateToProps","filter","folder","Public","Name","RowId","images","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { View, ScrollView, TouchableOpacity, Text, Platform, Linking, Modal, Dimensions, StyleSheet, ImageBackground } from 'react-native';\nimport { connect } from 'react-redux';\nimport { Icon } from 'react-native-elements';\nimport _ from 'lodash';\nimport { Camera } from 'expo-camera';\nimport * as MediaLibrary from 'expo-media-library';\nimport * as ImageManipulator from 'expo-image-manipulator';\nimport * as ImagePicker from 'expo-image-picker';\nimport ImageBrowser from './expo-image-picker-multiple/ImageBrowser';\nimport ExpoImageManipulator from './react-native-expo-image-cropper/ExpoImageManipulator';\nimport Header from './Header';\nimport { Popup } from './Popup';\nimport { PopupMenu } from './PopupMenu';\nimport { InlineButton } from './InlineButton';\nimport { getValueOrDefault, getThumb300, isVideo } from '../helper';\nimport { getMainBrandingColourFromState, BOXGREY, INACTIVE_BUTTON, TEXT_BLUEGREY, TEXT_DARK, LINEGREY } from '../colours';\nimport Config from '../config';\nimport { fileActions } from '../apis';\nimport { stockImagesLoaded, imageLibraryLoaded } from '../actions';\n\nconst SCREEN_WIDTH = Dimensions.get('window').width;\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\nconst DEFAULT_ASPECT = [1, 1];\nconst DEFAULT_ALLOWS_EDITING = true;\nconst DEFAULT_ALLOWS_IOS_CAMERA_EDITING = false;\nconst DEFAULT_EXIF = true;\nconst DEFULAT_IMAGE_TYPE = 'jpeg';\nconst DEFAULT_IMAGE_NAME = 'image';\nconst DEFAULT_VIDEO_NAME = 'video';\nconst DEFAULT_SIZE = {\n width: 1400,\n};\nconst DEFAULT_COMPRESSION = 0.8;\n\nclass ImageUploader extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n showUploadMenu: false,\n warning: null,\n showPhotos: false,\n showRemote: false,\n selected: [],\n selectedType: '',\n onAttach: null,\n selectedAlbumId: '',\n showSelectAlbum: false,\n showCropper: false,\n localAlbums: [],\n loadingLocalFolders: false,\n loadingRemoteFolders: false,\n };\n }\n\n componentDidMount() {\n this.loadLocalAlbums();\n this.loadRemoteAlbums();\n }\n\n loadLocalAlbums = async () => {\n const hasPermission = await MediaLibrary.getPermissionsAsync();\n if (!hasPermission.granted) return;\n\n this.setState({ loadingLocalFolders: true }, async () => {\n try {\n const localAlbums = await MediaLibrary.getAlbumsAsync({ includeSmartAlbums: true });\n this.setState({\n loadingLocalFolders: false,\n localAlbums: [\n {\n title: 'All Photos',\n id: '',\n },\n ...localAlbums,\n ],\n });\n } catch (error) {\n console.log('loadLocalAlbums - error', error);\n this.setState({ loadingLocalFolders: false });\n }\n });\n };\n\n loadRemoteAlbums = () => {\n this.setState({ loadingRemoteFolders: true }, async () => {\n try {\n const stockImages = await fileActions.getStockPhotos();\n this.props.stockImagesLoaded(stockImages);\n const libraryRes = await fileActions.getMediaFolders(this.props.user.site);\n this.props.imageLibraryLoaded(libraryRes.data);\n } catch (error) {\n console.log('loadRemoteAlbums - error', error);\n } finally {\n this.setState({ loadingRemoteFolders: false });\n }\n });\n };\n\n showUploadMenu() {\n this.setState({\n showUploadMenu: true,\n });\n }\n\n hideUploadMenu() {\n this.setState({\n showUploadMenu: false,\n });\n }\n\n retryUpload = async (mediaUri, uploadUri) => {\n try {\n const uri = isVideo(uploadUri) ? mediaUri : (await this.resizeImageAsync(mediaUri)).uri;\n const res = await fileActions.uploadUserMediaWithProgress(uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload(retry) success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('retryUpload error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n resizeImageAsync = async uri => {\n const actions = [\n {\n resize: getValueOrDefault(this.props.size, DEFAULT_SIZE),\n },\n ];\n const saveOptions = {\n format: DEFULAT_IMAGE_TYPE,\n compress: getValueOrDefault(this.props.quality, DEFAULT_COMPRESSION),\n base64: true,\n };\n return await ImageManipulator.manipulateAsync(uri, actions, saveOptions);\n };\n\n handleImagePicked = async imageUri => {\n let uploadUri;\n try {\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_IMAGE_NAME)}.${DEFULAT_IMAGE_TYPE}`;\n uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n\n this.props.onUploadStarted(uploadUri, imageUri);\n this.hideUploadMenu();\n\n const resized = await this.resizeImageAsync(imageUri);\n if (this.props.onlySelectImage) {\n this.props.onImageSelected(resized, fileName);\n return;\n }\n\n const res = await fileActions.uploadUserMediaWithProgress(resized.uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('handleImagePicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n handleMultiImagePicked = async imagesSelected => {\n // Signal start of all images selected\n const imagesUploaded = imagesSelected.map(image => {\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_IMAGE_NAME)}.${DEFULAT_IMAGE_TYPE}`;\n const uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n if (!this.props.onlySelectImage) this.props.onUploadStarted(uploadUri, image.uri);\n return { imageUri: image.uri, uploadUri, fileName };\n });\n this.hideUploadMenu();\n\n // Sequentially upload all imagesUploaded\n for (let i = 0; i < imagesUploaded.length; i++) {\n const image = imagesUploaded[i];\n const { imageUri, uploadUri, fileName } = image;\n try {\n const resized = await this.resizeImageAsync(imageUri);\n if (this.props.onlySelectImage) {\n this.props.onImageSelected(resized, fileName);\n return;\n }\n\n const res = await fileActions.uploadUserMediaWithProgress(resized.uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('handleMultiImagePicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n }\n };\n\n handleVideoPicked = async uri => {\n let uploadUri;\n try {\n const fileType = uri.substring(uri.lastIndexOf('.') + 1);\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_VIDEO_NAME)}.${fileType}`;\n uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n\n this.props.onUploadStarted(uploadUri, uri);\n this.hideUploadMenu();\n\n const res = await fileActions.uploadUserMediaWithProgress(uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('handleVideoPicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n showWarningPopup(camera, roll) {\n if (Platform.OS !== 'ios') {\n return;\n }\n let innerWarning = '';\n if (camera && roll) {\n innerWarning = 'both your camera and photo library';\n } else if (camera) {\n innerWarning = 'your camera';\n } else if (roll) {\n innerWarning = 'your photo library';\n } else {\n // nothing to warn about\n return;\n }\n this.setState({\n warning: `You must grant access to ${innerWarning}. Tap Go to settings to change your permission settings.`,\n });\n }\n\n closeWarningPopup() {\n this.setState({\n warning: null,\n });\n }\n\n goToPermissionSettings() {\n Linking.openURL('app-settings:');\n this.setState({\n warning: null,\n });\n }\n\n askPermissionsAsync = async () => {\n const cameraPermission = await Camera.requestCameraPermissionsAsync();\n const rollPermission = await MediaLibrary.requestPermissionsAsync();\n if (cameraPermission.status !== 'granted' || rollPermission.status !== 'granted') {\n this.showWarningPopup(cameraPermission.status !== 'granted', rollPermission.status !== 'granted');\n return false;\n }\n if (this.state.localAlbums?.length <= 0) this.loadLocalAlbums();\n\n return true;\n };\n\n isEditingEnabled = () => {\n return !this.props.multiple && !this.props.allowVideo && getValueOrDefault(this.props.allowsEditing, DEFAULT_ALLOWS_EDITING);\n };\n\n // NOTE: No longer used (replaced by openPhotos)\n openCameraRoll = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n const result = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\n allowsEditing: this.isEditingEnabled(),\n aspect: getValueOrDefault(this.props.aspect, DEFAULT_ASPECT),\n exif: true,\n base64: true,\n });\n\n if (!result.cancelled) this.handleImagePicked(result.uri);\n };\n\n // NOTE: No longer used (replaced by openPhotos)\n openVideoRoll = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n const result = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Videos,\n allowsEditing: this.isEditingEnabled(),\n });\n\n if (!result.cancelled) this.handleVideoPicked(result.uri);\n };\n\n openCamera = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n let editingAllowed = this.isEditingEnabled();\n if (Platform.OS === 'ios') {\n editingAllowed = getValueOrDefault(\n this.props.allowsEditingIOSCamera,\n getValueOrDefault(this.props.allowsEditing, DEFAULT_ALLOWS_IOS_CAMERA_EDITING),\n );\n }\n const result = await ImagePicker.launchCameraAsync({\n allowsEditing: editingAllowed,\n aspect: getValueOrDefault(this.props.aspect, DEFAULT_ASPECT),\n exif: getValueOrDefault(this.props.exif, DEFAULT_EXIF),\n });\n\n if (!result.cancelled) this.handleImagePicked(result.uri);\n };\n\n openVideoCamera = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n const result = await ImagePicker.launchCameraAsync({\n allowsEditing: this.isEditingEnabled(),\n mediaTypes: ImagePicker.MediaTypeOptions.Videos,\n });\n\n if (!result.cancelled) this.handleVideoPicked(result.uri);\n };\n\n openLibrary = async () => {\n this.setState({\n showUploadMenu: false,\n showPhotos: true,\n selected: [],\n showRemote: true,\n selectedAlbumId: '',\n });\n };\n\n openPhotos = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n this.setState({\n showUploadMenu: false,\n showPhotos: true,\n selected: [],\n showRemote: false,\n selectedAlbumId: '',\n });\n };\n\n hidePhotos = () => {\n this.setState({ showPhotos: false });\n };\n\n openCropper = () => {\n this.setState({ showPhotos: false, showCropper: true });\n };\n\n toggleCropper = () => {\n this.setState({ showCropper: !this.state.showCropper });\n };\n\n onSelectAlbum = () => {\n this.setState({ showSelectAlbum: true });\n };\n\n onSelectAlbumClosed = () => {\n this.setState({ showSelectAlbum: false });\n };\n\n onAlbumSelected = selectedAlbumId => {\n this.setState({ showSelectAlbum: false, selectedAlbumId });\n };\n\n onSelectionChange = (selected, videoSelected, onAttach) => {\n this.setState({\n selected,\n selectedType: videoSelected ? 'video' : 'image',\n onAttach,\n });\n };\n\n onSelected = async callback => {\n if (this.isEditingEnabled()) {\n this.openCropper();\n } else {\n const mediaSelected = await callback;\n // console.log('mediaSelected', mediaSelected);\n if (this.state.showRemote) {\n if (this.props.onLibrarySelected) {\n mediaSelected.map(media => {\n this.props.onLibrarySelected(media.uri);\n });\n }\n } else {\n if (mediaSelected[0].mediaType === MediaLibrary.MediaType.video) {\n const uri = mediaSelected[0].localUri || mediaSelected[0].uri;\n this.handleVideoPicked(uri);\n } else {\n this.handleMultiImagePicked(mediaSelected);\n }\n }\n\n this.hidePhotos();\n }\n };\n\n onRemoveImage = uri => {\n const selected = [...this.state.selected];\n const deleteIndex = selected.indexOf(uri);\n selected.splice(deleteIndex, 1);\n this.setState({ selected });\n };\n\n buildOptions = () => {\n const options = [\n {\n text: 'Take photo',\n onPress: this.openCamera,\n },\n ];\n if (this.props.allowVideo)\n options.push({\n text: 'Record video',\n onPress: this.openVideoCamera,\n });\n options.push({\n text: 'Camera Roll',\n onPress: this.openPhotos,\n });\n if (!this.props.hideLibrary)\n options.push({\n text: 'Image Library',\n onPress: this.openLibrary,\n });\n\n return options;\n };\n\n renderSelectionPreview() {\n const { selected, showRemote } = this.state;\n\n return (\n <View>\n <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={styles.selectionPreviewContainer}>\n {selected &&\n selected.map(uri => {\n const imageUri = showRemote ? getThumb300(uri) : uri;\n return (\n <View key={uri} style={styles.previewItemContainer}>\n <ImageBackground style={styles.previewItemImage} source={{ uri: imageUri }} />\n <TouchableOpacity style={styles.previewItemRemoveButton} onPress={() => this.onRemoveImage(uri)}>\n <View style={[styles.previewItemRemoveContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"times\" type=\"font-awesome\" iconStyle={styles.previewItemRemoveIcon} />\n </View>\n </TouchableOpacity>\n </View>\n );\n })}\n </ScrollView>\n </View>\n );\n }\n\n renderSelectedAlbum() {\n const { localAlbums, selectedAlbumId, showRemote } = this.state;\n const selectedAlbum = (showRemote ? this.props.imageLibrary : localAlbums).find(album => album.id === selectedAlbumId);\n const selectedAlbumText = selectedAlbum ? selectedAlbum.title : '';\n\n return (\n <TouchableOpacity onPress={this.onSelectAlbum}>\n <View style={styles.selectAlbumButton}>\n <Text style={styles.selectAlbumButtonText}>{selectedAlbumText}</Text>\n <Icon name=\"angle-down\" type=\"font-awesome\" iconStyle={styles.selectAlbumButtonIcon} />\n </View>\n </TouchableOpacity>\n );\n }\n\n renderSelectedComponent = selectedItemNumber => {\n return (\n <View style={styles.selectedItemContainer}>\n <View style={[styles.selectedMarkerContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n {this.props.multiple ? (\n <Text style={styles.selectedItemText}>{selectedItemNumber}</Text>\n ) : (\n <Icon name=\"check\" type=\"font-awesome\" iconStyle={styles.selectedItemIcon} />\n )}\n </View>\n </View>\n );\n };\n\n renderBrowser() {\n const { selected, selectedAlbumId, showRemote } = this.state;\n const { imagesLimit, multiple, allowVideo, imageLibrary } = this.props;\n const width = (SCREEN_WIDTH - 10 * 2) / 4;\n\n return (\n <ImageBrowser\n max={!multiple ? 1 : imagesLimit}\n loadCount={30}\n onChange={this.onSelectionChange}\n renderSelectedComponent={this.renderSelectedComponent}\n callback={this.onSelected}\n selected={selected}\n allowVideo={allowVideo}\n style={styles.browserContainer}\n itemStyle={styles.itemContainer}\n itemWidth={width}\n itemHeight={width}\n album={selectedAlbumId}\n remoteAlbums={showRemote ? imageLibrary : null}\n />\n );\n }\n\n renderAttachButton() {\n const { selected, selectedType } = this.state;\n const canAttach = selected.length > 0 && !_.isEmpty(selectedType);\n const attachText = `Attach ${canAttach ? selected.length : ''} ${canAttach ? selectedType : ''}${selected.length > 1 ? 's' : ''}`;\n\n return (\n <View style={styles.buttonContainer}>\n <InlineButton\n color={canAttach ? this.props.colourBrandingMain : INACTIVE_BUTTON}\n onPress={this.state.onAttach}\n fillTouchable\n large\n disabled={!canAttach}\n >\n {attachText}\n </InlineButton>\n </View>\n );\n }\n\n renderSelectAlbumPopup() {\n const { showSelectAlbum, localAlbums, showRemote } = this.state;\n if (!showSelectAlbum) return null;\n\n return (\n <Modal visible transparent animationType=\"slide\" onRequestClose={this.onSelectAlbumClosed}>\n <View style={styles.selectAlbumModal}>\n <View style={styles.selectAlbumContainer}>\n <View style={styles.selectAlbumTitleContainer}>\n <Text style={styles.selectAlbumTitle}>Select Album</Text>\n </View>\n <ScrollView>\n {(showRemote ? this.props.imageLibrary : localAlbums).map((album, index) => {\n return (\n <TouchableOpacity key={album.id} onPress={() => this.onAlbumSelected(album.id)}>\n <View style={[styles.albumOptionContainer, index === 0 && { borderTopWidth: 0 }]}>\n <Text style={styles.albumOptionText}>{album.title}</Text>\n </View>\n </TouchableOpacity>\n );\n })}\n </ScrollView>\n <TouchableOpacity onPress={this.onSelectAlbumClosed}>\n <View style={[styles.albumOptionContainer, { marginHorizontal: 0 }]}>\n <Text style={[styles.albumOptionText, { color: this.props.colourBrandingMain }]}>Cancel</Text>\n </View>\n </TouchableOpacity>\n </View>\n </View>\n </Modal>\n );\n }\n\n renderPhotos() {\n return (\n <Modal visible transparent animationType=\"slide\" onRequestClose={this.hidePhotos}>\n <Header leftIcon=\"angle-left\" onPressLeft={this.hidePhotos} text={this.props.popupTitle || 'Attach image'} />\n <View style={styles.contentContainer}>\n {this.renderSelectionPreview()}\n {this.renderSelectedAlbum()}\n {this.renderBrowser()}\n </View>\n {this.renderAttachButton()}\n {this.renderSelectAlbumPopup()}\n </Modal>\n );\n }\n\n render() {\n const { warning, showUploadMenu, showPhotos, showCropper, selected } = this.state;\n\n if (warning != null) {\n return (\n <Popup\n title=\"Permissions missing\"\n text={warning}\n options={[\n {\n text: 'Go to settings',\n action: this.goToPermissionSettings.bind(this),\n bold: true,\n },\n {\n text: 'Ignore',\n action: this.closeWarningPopup.bind(this),\n },\n ]}\n />\n );\n }\n\n if (showUploadMenu) {\n const options = this.buildOptions();\n return <PopupMenu onClose={this.hideUploadMenu.bind(this)} options={options} title={this.props.popupTitle} cancelText=\"Cancel\" />;\n }\n\n if (showPhotos) return this.renderPhotos();\n\n if (showCropper) {\n return (\n <ExpoImageManipulator\n photo={{ uri: selected[0] }}\n onToggleModal={this.toggleCropper}\n isVisible={showCropper}\n onPictureChoosed={data => {\n this.handleImagePicked(data.uri);\n }}\n />\n );\n }\n\n return null;\n }\n}\n\nconst styles = StyleSheet.create({\n contentContainer: {\n flex: 1,\n backgroundColor: BOXGREY,\n },\n browserContainer: {\n padding: 10,\n },\n itemContainer: {\n padding: 4,\n },\n selectedItemContainer: {\n flex: 1,\n backgroundColor: '#0008',\n },\n selectedMarkerContainer: {\n position: 'absolute',\n top: 6,\n right: 6,\n width: 20,\n height: 20,\n borderRadius: 10,\n alignItems: 'center',\n justifyContent: 'center',\n },\n selectedItemText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n color: '#fff',\n marginBottom: 1,\n },\n selectedItemIcon: {\n fontSize: 12,\n color: '#fff',\n marginBottom: 1,\n },\n buttonContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n height: 60,\n paddingHorizontal: 14,\n backgroundColor: '#fff',\n },\n selectAlbumButton: {\n paddingTop: 13,\n paddingHorizontal: 14,\n flexDirection: 'row',\n alignItems: 'center',\n },\n selectAlbumButtonText: {\n fontFamily: 'sf-medium',\n fontSize: 14,\n color: TEXT_BLUEGREY,\n marginRight: 6,\n },\n selectAlbumButtonIcon: {\n fontSize: 20,\n color: TEXT_BLUEGREY,\n },\n selectAlbumModal: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n backgroundColor: 'rgba(0,0,0,0.5)',\n zIndex: 1000,\n },\n selectAlbumContainer: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: '#fff',\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n maxHeight: SCREEN_HEIGHT / 2,\n },\n selectAlbumTitleContainer: {\n padding: 16,\n borderColor: LINEGREY,\n borderBottomWidth: 1,\n },\n selectAlbumTitle: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n textAlign: 'center',\n color: TEXT_DARK,\n },\n albumOptionContainer: {\n marginHorizontal: 16,\n paddingVertical: 16,\n borderColor: LINEGREY,\n borderTopWidth: 1,\n },\n albumOptionText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n textAlign: 'center',\n color: TEXT_DARK,\n },\n selectionPreviewContainer: {\n paddingTop: 14,\n paddingRight: 2,\n paddingLeft: 14,\n },\n previewItemContainer: {\n marginRight: 12,\n },\n previewItemImage: {\n width: 50,\n height: 50,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 4,\n overflow: 'hidden',\n },\n previewItemRemoveButton: {\n position: 'absolute',\n top: -8,\n right: -8,\n },\n previewItemRemoveContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 10,\n width: 20,\n height: 20,\n borderWidth: 2,\n borderColor: '#fff',\n },\n previewItemRemoveIcon: {\n fontSize: 10,\n color: '#fff',\n marginBottom: 1,\n },\n});\n\nconst mapStateToProps = state => {\n const { user, media } = state;\n const imageLibrary = media.imageLibrary\n .filter(folder => !folder.Public)\n .map(album => {\n return {\n title: album.Name,\n id: album.RowId || '',\n images: album.RowId ? album.Images : media.stockImages,\n };\n });\n\n return {\n user,\n imageLibrary,\n colourBrandingMain: getMainBrandingColourFromState(state),\n };\n};\n\nexport default connect(mapStateToProps, { stockImagesLoaded, imageLibraryLoaded }, null, { forwardRef: true })(ImageUploader);\n"]}
@@ -2,8 +2,7 @@ import React, { Component } from 'react';
2
2
  import { View, Text, TouchableWithoutFeedback, Modal } from 'react-native';
3
3
  import _ from 'lodash';
4
4
  import { connect } from 'react-redux';
5
- import { LINEGREY, TEXT_DARK, TEXT_LIGHT } from '../colours';
6
- import { getMainBrandingColourFromState } from '../helper';
5
+ import { LINEGREY, TEXT_DARK, TEXT_LIGHT, getMainBrandingColourFromState } from '../colours';
7
6
  import { InlineButton } from './InlineButton';
8
7
 
9
8
  class Popup extends Component {
@@ -1 +1 @@
1
- {"version":3,"sources":["Popup.js"],"names":["React","Component","View","Text","TouchableWithoutFeedback","Modal","_","connect","LINEGREY","TEXT_DARK","TEXT_LIGHT","getMainBrandingColourFromState","InlineButton","Popup","renderOptions","props","options","styles","bottom","map","option","index","action","optionText","color","colourBrandingMain","bold","optionTextBold","text","renderTitle","title","renderContent","content","render","onClose","container","menu","containerStyle","top","children","position","left","right","backgroundColor","zIndex","paddingHorizontal","paddingVertical","justifyContent","alignItems","width","borderRadius","padding","fontFamily","fontSize","lineHeight","textAlign","marginBottom","borderTopColor","borderTopWidth","flexDirection","marginRight","mapStateToProps","state","popup"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { View, Text, TouchableWithoutFeedback, Modal } from 'react-native';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { LINEGREY, TEXT_DARK, TEXT_LIGHT } from '../colours';\nimport { getMainBrandingColourFromState } from '../helper';\nimport { InlineButton } from './InlineButton';\n\nclass Popup extends Component {\n renderOptions() {\n if (!this.props.options) {\n return null;\n }\n return (\n <View style={styles.bottom}>\n {_.map(this.props.options, (option, index) => {\n return (\n <InlineButton\n key={index}\n onPress={option.action}\n color=\"#fff\"\n textStyle={[styles.optionText, { color: this.props.colourBrandingMain }, option.bold && styles.optionTextBold]}\n >\n {option.text}\n </InlineButton>\n );\n })}\n </View>\n );\n }\n\n renderTitle() {\n if (!this.props.title) {\n return null;\n }\n return <Text style={[styles.title, { color: this.props.colourBrandingMain }]}>{this.props.title}</Text>;\n }\n\n renderContent() {\n if (this.props.content) {\n return this.props.content;\n }\n if (!this.props.text) {\n return null;\n }\n return <Text style={styles.text}>{this.props.text}</Text>;\n }\n\n render() {\n return (\n <Modal visible transparent animationType=\"fade\" onRequestClose={this.props.onClose}>\n <TouchableWithoutFeedback style={styles.container} onPress={this.props.onClose}>\n <View style={styles.container}>\n <View style={[styles.menu, this.props.containerStyle]}>\n <View style={styles.top}>\n {this.renderTitle()}\n {this.renderContent()}\n {this.props.children}\n </View>\n {this.renderOptions()}\n </View>\n </View>\n </TouchableWithoutFeedback>\n </Modal>\n );\n }\n}\n\nconst styles = {\n container: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n backgroundColor: 'rgba(0,0,0,0.5)',\n zIndex: 1000,\n paddingHorizontal: 16,\n paddingVertical: 32,\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n },\n menu: {\n backgroundColor: '#fff',\n borderRadius: 12,\n },\n top: {\n padding: 24,\n },\n title: {\n fontFamily: 'sf-bold',\n fontSize: 24,\n lineHeight: 24,\n color: TEXT_DARK,\n textAlign: 'center',\n marginBottom: 16,\n },\n text: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n lineHeight: 22,\n color: TEXT_LIGHT,\n textAlign: 'center',\n },\n bottom: {\n borderTopColor: LINEGREY,\n borderTopWidth: 1,\n flexDirection: 'row-reverse',\n padding: 8,\n },\n option: {\n marginRight: 16,\n },\n optionText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n },\n optionTextBold: {\n fontFamily: 'sf-semibold',\n },\n};\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: getMainBrandingColourFromState(state),\n };\n};\n\nconst popup = connect(mapStateToProps, {})(Popup);\nexport { popup as Popup };\n"]}
1
+ {"version":3,"sources":["Popup.js"],"names":["React","Component","View","Text","TouchableWithoutFeedback","Modal","_","connect","LINEGREY","TEXT_DARK","TEXT_LIGHT","getMainBrandingColourFromState","InlineButton","Popup","renderOptions","props","options","styles","bottom","map","option","index","action","optionText","color","colourBrandingMain","bold","optionTextBold","text","renderTitle","title","renderContent","content","render","onClose","container","menu","containerStyle","top","children","position","left","right","backgroundColor","zIndex","paddingHorizontal","paddingVertical","justifyContent","alignItems","width","borderRadius","padding","fontFamily","fontSize","lineHeight","textAlign","marginBottom","borderTopColor","borderTopWidth","flexDirection","marginRight","mapStateToProps","state","popup"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { View, Text, TouchableWithoutFeedback, Modal } from 'react-native';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { LINEGREY, TEXT_DARK, TEXT_LIGHT, getMainBrandingColourFromState } from '../colours';\nimport { InlineButton } from './InlineButton';\n\nclass Popup extends Component {\n renderOptions() {\n if (!this.props.options) {\n return null;\n }\n return (\n <View style={styles.bottom}>\n {_.map(this.props.options, (option, index) => {\n return (\n <InlineButton\n key={index}\n onPress={option.action}\n color=\"#fff\"\n textStyle={[styles.optionText, { color: this.props.colourBrandingMain }, option.bold && styles.optionTextBold]}\n >\n {option.text}\n </InlineButton>\n );\n })}\n </View>\n );\n }\n\n renderTitle() {\n if (!this.props.title) {\n return null;\n }\n return <Text style={[styles.title, { color: this.props.colourBrandingMain }]}>{this.props.title}</Text>;\n }\n\n renderContent() {\n if (this.props.content) {\n return this.props.content;\n }\n if (!this.props.text) {\n return null;\n }\n return <Text style={styles.text}>{this.props.text}</Text>;\n }\n\n render() {\n return (\n <Modal visible transparent animationType=\"fade\" onRequestClose={this.props.onClose}>\n <TouchableWithoutFeedback style={styles.container} onPress={this.props.onClose}>\n <View style={styles.container}>\n <View style={[styles.menu, this.props.containerStyle]}>\n <View style={styles.top}>\n {this.renderTitle()}\n {this.renderContent()}\n {this.props.children}\n </View>\n {this.renderOptions()}\n </View>\n </View>\n </TouchableWithoutFeedback>\n </Modal>\n );\n }\n}\n\nconst styles = {\n container: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n backgroundColor: 'rgba(0,0,0,0.5)',\n zIndex: 1000,\n paddingHorizontal: 16,\n paddingVertical: 32,\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n },\n menu: {\n backgroundColor: '#fff',\n borderRadius: 12,\n },\n top: {\n padding: 24,\n },\n title: {\n fontFamily: 'sf-bold',\n fontSize: 24,\n lineHeight: 24,\n color: TEXT_DARK,\n textAlign: 'center',\n marginBottom: 16,\n },\n text: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n lineHeight: 22,\n color: TEXT_LIGHT,\n textAlign: 'center',\n },\n bottom: {\n borderTopColor: LINEGREY,\n borderTopWidth: 1,\n flexDirection: 'row-reverse',\n padding: 8,\n },\n option: {\n marginRight: 16,\n },\n optionText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n },\n optionTextBold: {\n fontFamily: 'sf-semibold',\n },\n};\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: getMainBrandingColourFromState(state),\n };\n};\n\nconst popup = connect(mapStateToProps, {})(Popup);\nexport { popup as Popup };\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-core-app",
3
- "version": "1.5.2",
3
+ "version": "1.5.6",
4
4
  "description": "Core extension package for Pluss Communities platform",
5
5
  "main": "dist/module/index.js",
6
6
  "module": "dist/module/index.js",
@@ -290,7 +290,7 @@ class CommentSection extends Component {
290
290
  onConfirm={this.onPressConfirmReport}
291
291
  onCancel={this.onPressCancelReport}
292
292
  onClose={this.onPressCancelReport}
293
- text="Are you sure?"
293
+ text="Are you sure you want to report this comment?"
294
294
  extraContent={<Text style={styles.commentReportText}>This comment will be reported to our team and considered for deletion</Text>}
295
295
  />
296
296
  );
@@ -388,17 +388,15 @@ class CommentSection extends Component {
388
388
  <Icon name="trash" type="font-awesome" iconStyle={styles.commentButtonIcon} />
389
389
  </View>
390
390
  </TouchableOpacity>
391
- ) : null
392
- // (
393
- // !this.props.disableFlag && (
394
- // <TouchableOpacity onPress={this.onPressReportComment.bind(this, c)}>
395
- // <View style={[styles.commentButtonContainer, { backgroundColor: this.props.colourBrandingMain }]}>
396
- // <Icon name="flag" type="font-awesome" iconStyle={styles.commentButtonIcon} />
397
- // </View>
398
- // </TouchableOpacity>
399
- // )
400
- // )
401
- }
391
+ ) : (
392
+ !this.props.disableFlag && (
393
+ <TouchableOpacity onPress={this.onPressReportComment.bind(this, c)}>
394
+ <View style={[styles.commentButtonContainer, { backgroundColor: this.props.colourBrandingMain }]}>
395
+ <Icon name="flag" type="font-awesome" iconStyle={styles.commentButtonIcon} />
396
+ </View>
397
+ </TouchableOpacity>
398
+ )
399
+ )}
402
400
  <Text style={[styles.commentName, { fontSize: this.getAdjustedSize(13) }]}>{c.User.displayName}</Text>
403
401
  </View>
404
402
  {!_.isEmpty(c.Comment) && <Text style={[styles.commentText, { fontSize: this.getAdjustedSize(13) }]}>{c.Comment}</Text>}
@@ -394,7 +394,8 @@ class ImageUploader extends Component {
394
394
  }
395
395
  } else {
396
396
  if (mediaSelected[0].mediaType === MediaLibrary.MediaType.video) {
397
- this.handleVideoPicked(mediaSelected[0].localUri);
397
+ const uri = mediaSelected[0].localUri || mediaSelected[0].uri;
398
+ this.handleVideoPicked(uri);
398
399
  } else {
399
400
  this.handleMultiImagePicked(mediaSelected);
400
401
  }
@@ -2,8 +2,7 @@ import React, { Component } from 'react';
2
2
  import { View, Text, TouchableWithoutFeedback, Modal } from 'react-native';
3
3
  import _ from 'lodash';
4
4
  import { connect } from 'react-redux';
5
- import { LINEGREY, TEXT_DARK, TEXT_LIGHT } from '../colours';
6
- import { getMainBrandingColourFromState } from '../helper';
5
+ import { LINEGREY, TEXT_DARK, TEXT_LIGHT, getMainBrandingColourFromState } from '../colours';
7
6
  import { InlineButton } from './InlineButton';
8
7
 
9
8
  class Popup extends Component {