@plusscommunities/pluss-core-app 1.7.3-beta.0 → 1.7.4-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -331,7 +331,9 @@ class CommentSection extends Component {
331
331
  }
332
332
 
333
333
  onGoToAdd() {
334
- this.props.commentReply.focusInput();
334
+ var _this$props$commentRe, _this$props$commentRe2;
335
+
336
+ (_this$props$commentRe = this.props.commentReply) === null || _this$props$commentRe === void 0 ? void 0 : (_this$props$commentRe2 = _this$props$commentRe.current) === null || _this$props$commentRe2 === void 0 ? void 0 : _this$props$commentRe2.focusInput();
335
337
  }
336
338
 
337
339
  getAdjustedSize(size) {
@@ -344,13 +346,13 @@ class CommentSection extends Component {
344
346
 
345
347
  getComments() {
346
348
  if (!this.state.commentsLoadStarted) {
347
- var _this$props$commentRe, _this$props$commentRe2;
349
+ var _this$props$commentRe3, _this$props$commentRe4;
348
350
 
349
351
  this.setState({
350
352
  commentsLoadStarted: true,
351
353
  commentsLoading: true
352
354
  });
353
- (_this$props$commentRe = this.props.commentReply) === null || _this$props$commentRe === void 0 ? void 0 : (_this$props$commentRe2 = _this$props$commentRe.current) === null || _this$props$commentRe2 === void 0 ? void 0 : _this$props$commentRe2.loadingStarted();
355
+ (_this$props$commentRe3 = this.props.commentReply) === null || _this$props$commentRe3 === void 0 ? void 0 : (_this$props$commentRe4 = _this$props$commentRe3.current) === null || _this$props$commentRe4 === void 0 ? void 0 : _this$props$commentRe4.loadingStarted();
354
356
  this.loadComments();
355
357
  }
356
358
  }
@@ -364,7 +366,7 @@ class CommentSection extends Component {
364
366
  return c.Timestamp;
365
367
  }).Timestamp;
366
368
  reactionActions.getComments(this.props.entityId, this.props.entityType, minTime).then(res => {
367
- var _this$props$commentRe3, _this$props$commentRe4;
369
+ var _this$props$commentRe5, _this$props$commentRe6;
368
370
 
369
371
  this.setState({
370
372
  comments: _.sortBy(_.uniqBy(_.filter(_.concat(this.state.comments, res.data), c => {
@@ -383,7 +385,7 @@ class CommentSection extends Component {
383
385
  }
384
386
  }); //if (this.props.commentReply) {
385
387
 
386
- (_this$props$commentRe3 = this.props.commentReply) === null || _this$props$commentRe3 === void 0 ? void 0 : (_this$props$commentRe4 = _this$props$commentRe3.current) === null || _this$props$commentRe4 === void 0 ? void 0 : _this$props$commentRe4.loadingCompleted(); //}
388
+ (_this$props$commentRe5 = this.props.commentReply) === null || _this$props$commentRe5 === void 0 ? void 0 : (_this$props$commentRe6 = _this$props$commentRe5.current) === null || _this$props$commentRe6 === void 0 ? void 0 : _this$props$commentRe6.loadingCompleted(); //}
387
389
 
388
390
  if (this.props.live) {
389
391
  this.loadTimer = setTimeout(() => {
@@ -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","blockUser","unblockUser","ConfirmPopup","ProfilePic","ImagePopup","InlineButton","Spinner","Services","CommentSection","constructor","props","c","setState","commentToDelete","removeComment","state","Id","then","res","console","log","newComments","filter","comments","commentToReport","commentToBlock","userId","UserId","commentToUnblock","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","includes","blockedUsers","user","uid","isUserBlocked","hideReplyButton","threadComments","innerC","ParentId","content","isEmpty","styles","commentRepliesText","color","colourBrandingMain","User","displayName","profilePics","take","uniqBy","multiReplyContainer","map","i","marginRight","profilePic","marginLeft","length","commentReplies","onOpenThread","addingComment","componentDidMount","getNotificationSate","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","permissions","adminPermission","closeCommentGallery","renderCommentDeleteConfirm","onPressConfirmDelete","onPressCancelDelete","renderCommentReportConfirm","onPressConfirmReport","onPressCancelReport","commentReportText","renderCommentBlockConfirm","onPressConfirmBlock","onPressCancelBlock","renderCommentUnblockConfirm","onPressConfirmUnblock","onPressCancelUnblock","renderCommentReportStatus","isSuccess","onPressConfirmReportStatus","renderCommentImage","commentImageContainer","bind","commentImage","uri","renderComment","commentFlex","commentProfilePic","commentBlock","commentTitleRow","onPressDeleteComment","commentButtonContainer","backgroundColor","commentButtonIcon","disableFlag","onPressReportComment","canBlockComment","onPressUnblockUser","onPressBlockUser","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","userSettings","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,SAAT,EAAoBC,WAApB,QAAuC,YAAvC;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,SAA6B/B,SAA7B,CAAuC;AACrCgC,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;AAC3Bb,MAAAA,eAAe,CAACgB,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,GAAGtC,CAAC,CAACuC,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,8CAuDAA,CAAC,IAAI;AACtB,WAAKC,QAAL,CAAc;AAAEa,QAAAA,cAAc,EAAEd;AAAlB,OAAd;AACD,KAzDkB;;AAAA,iDA2DG,MAAM;AAC1B,YAAMe,MAAM,GAAG,KAAKX,KAAL,CAAWU,cAAX,CAA0BE,MAAzC;AACA,WAAKjB,KAAL,CAAWV,SAAX,CAAqB0B,MAArB;AACA,WAAKd,QAAL,CAAc;AAAEa,QAAAA,cAAc,EAAE;AAAlB,OAAd;AACD,KA/DkB;;AAAA,gDAiEE,MAAM;AACzB,WAAKb,QAAL,CAAc;AAAEa,QAAAA,cAAc,EAAE;AAAlB,OAAd;AACD,KAnEkB;;AAAA,gDAqEEd,CAAC,IAAI;AACxB,WAAKC,QAAL,CAAc;AAAEgB,QAAAA,gBAAgB,EAAEjB;AAApB,OAAd;AACD,KAvEkB;;AAAA,mDAyEK,MAAM;AAC5B,YAAMe,MAAM,GAAG,KAAKX,KAAL,CAAWa,gBAAX,CAA4BD,MAA3C;AACA,WAAKjB,KAAL,CAAWT,WAAX,CAAuByB,MAAvB;AACA,WAAKd,QAAL,CAAc;AAAEgB,QAAAA,gBAAgB,EAAE;AAApB,OAAd;AACD,KA7EkB;;AAAA,kDA+EI,MAAM;AAC3B,WAAKhB,QAAL,CAAc;AAAEgB,QAAAA,gBAAgB,EAAE;AAApB,OAAd;AACD,KAjFkB;;AAAA,kDAmFI,MAAM;AAC3B,YAAMC,SAAS,GAAG,KAAKd,KAAL,CAAWS,eAAX,CAA2BR,EAA7C;AACA,WAAKJ,QAAL,CAAc;AAAEkB,QAAAA,aAAa,EAAE,IAAjB;AAAuBN,QAAAA,eAAe,EAAE;AAAxC,OAAd,EAA8D,MAAM;AAClE1B,QAAAA,eAAe,CACZiC,aADH,CACiBF,SADjB,EAEGZ,IAFH,CAEQC,GAAG,IAAI;AACX,eAAKN,QAAL,CAAc;AAAEoB,YAAAA,qBAAqB,EAAE,SAAzB;AAAoCF,YAAAA,aAAa,EAAE;AAAnD,WAAd;AACD,SAJH,EAKGG,KALH,CAKSC,KAAK,IAAI;AACdf,UAAAA,OAAO,CAACC,GAAR,CAAY,eAAZ,EAA6Bc,KAA7B;AACA,eAAKtB,QAAL,CAAc;AAAEoB,YAAAA,qBAAqB,EAAE,MAAzB;AAAiCF,YAAAA,aAAa,EAAE;AAAhD,WAAd;AACD,SARH;AASD,OAVD;AAWD,KAhGkB;;AAAA,iDAkGG,MAAM;AAC1B,WAAKlB,QAAL,CAAc;AAAEY,QAAAA,eAAe,EAAE;AAAnB,OAAd;AACD,KApGkB;;AAAA,wDAsGU,MAAM;AACjC,WAAKZ,QAAL,CAAc;AAAEoB,QAAAA,qBAAqB,EAAE;AAAzB,OAAd;AACD,KAxGkB;;AAAA,0CAqHJG,OAAO,IAAI;AACxB5B,MAAAA,QAAQ,CAAC6B,UAAT,CAAoBC,QAApB,CAA6B,QAA7B,EAAuC,EAAE,GAAG,KAAK3B,KAAV;AAAiB4B,QAAAA,QAAQ,EAAEH,OAAO,CAACnB;AAAnC,OAAvC;AACD,KAvHkB;;AAAA,oCAyHV,MAAM;AACb,YAAM;AAAEuB,QAAAA,UAAF;AAAcC,QAAAA;AAAd,UAA2B,KAAK9B,KAAtC;AACA,WAAKE,QAAL,CAAc;AAAE6B,QAAAA,UAAU,EAAE;AAAd,OAAd,EAAoC,YAAY;AAC9C,YAAI;AACF,gBAAM;AAAEC,YAAAA;AAAF,cAAW,MAAM3C,mBAAmB,CAAC4C,UAApB,CAA+BJ,UAA/B,EAA2CC,QAA3C,CAAvB,CADE,CAEF;;AACA,gBAAMI,UAAU,GAAG5D,MAAM,CAAC0D,IAAI,CAACG,MAAN,CAAzB;AACA,eAAKjC,QAAL,CAAc;AAAEgC,YAAAA,UAAF;AAAcH,YAAAA,UAAU,EAAE;AAA1B,WAAd;AACD,SALD,CAKE,OAAOP,KAAP,EAAc;AACdf,UAAAA,OAAO,CAACe,KAAR,CAAc,QAAd,EAAwBA,KAAxB;AACA,eAAKtB,QAAL,CAAc;AAAE6B,YAAAA,UAAU,EAAE;AAAd,WAAd;AACD;AACF,OAVD;AAWD,KAtIkB;;AAAA,sCAwIR,MAAM;AACf,YAAM;AAAEF,QAAAA,UAAF;AAAcC,QAAAA;AAAd,UAA2B,KAAK9B,KAAtC;AACA,WAAKE,QAAL,CAAc;AAAE6B,QAAAA,UAAU,EAAE;AAAd,OAAd,EAAoC,YAAY;AAC9C,YAAI;AACF,gBAAM;AAAEC,YAAAA;AAAF,cAAW,MAAM3C,mBAAmB,CAAC+C,YAApB,CAAiCP,UAAjC,EAA6CC,QAA7C,CAAvB,CADE,CAEF;;AACA,eAAK5B,QAAL,CAAc;AAAEgC,YAAAA,UAAU,EAAE,IAAd;AAAoBH,YAAAA,UAAU,EAAE;AAAhC,WAAd;AACD,SAJD,CAIE,OAAOP,KAAP,EAAc;AACdf,UAAAA,OAAO,CAACe,KAAR,CAAc,UAAd,EAA0BA,KAA1B;AACA,eAAKtB,QAAL,CAAc;AAAE6B,YAAAA,UAAU,EAAE;AAAd,WAAd;AACD;AACF,OATD;AAUD,KApJkB;;AAAA,qCAsJT,MAAM;AACd,YAAM;AAAEG,QAAAA;AAAF,UAAiB,KAAK7B,KAA5B;AACA,aAAO6B,UAAU,IAAI5D,MAAM,MAAM4D,UAAjC;AACD,KAzJkB;;AAAA,8CA2JA,MAAM;AACvB,YAAM;AAAEA,QAAAA;AAAF,UAAiB,KAAK7B,KAA5B;AACA,YAAMgC,MAAM,GAAGH,UAAU,GAAG5D,MAAM,CAACgE,QAAP,CAAgBJ,UAAU,CAACK,IAAX,CAAgBjE,MAAM,EAAtB,CAAhB,EAA2CkE,OAA3C,EAAH,GAA0D,CAAnF;AACA,aAAOC,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,IAAL,CAAUN,MAAV,CAAT,CAAP;AACD,KA/JkB;;AAAA,iDAiKG,MAAM;AAC1B,YAAM;AAAEN,QAAAA;AAAF,UAAiB,KAAK1B,KAA5B;AACA,YAAM;AAAEwB,QAAAA,UAAF;AAAcC,QAAAA,QAAd;AAAwBc,QAAAA;AAAxB,UAAqD,KAAK5C,KAAhE;AACA,UAAI+B,UAAU,IAAI,CAACa,wBAAnB,EAA6C;AAE7C,WAAK1C,QAAL,CAAc;AAAE6B,QAAAA,UAAU,EAAE;AAAd,OAAd,EAAoC,YAAY;AAC9C,YAAI;AACF,gBAAM;AAAEC,YAAAA;AAAF,cAAW,MAAM3C,mBAAmB,CAACwD,4BAApB,CAAiDhB,UAAjD,EAA6DC,QAA7D,CAAvB,CADE,CAEF;;AACA,gBAAMI,UAAU,GAAGF,IAAI,GAAG1D,MAAM,CAAC0D,IAAI,CAACG,MAAN,CAAT,GAAyB,IAAhD;AACA,eAAKjC,QAAL,CAAc;AAAEgC,YAAAA,UAAF;AAAcY,YAAAA,UAAU,EAAE,IAA1B;AAAgCf,YAAAA,UAAU,EAAE;AAA5C,WAAd;AACD,SALD,CAKE,OAAOP,KAAP,EAAc;AACdf,UAAAA,OAAO,CAACe,KAAR,CAAc,qBAAd,EAAqCA,KAArC;AACA,eAAKtB,QAAL,CAAc;AAAE6B,YAAAA,UAAU,EAAE;AAAd,WAAd;AACD;AACF,OAVD;AAWD,KAjLkB;;AAAA,uCAoPP,MAAM;AAChB,aAAO,KAAK1B,KAAL,CAAW0C,eAAlB;AACD,KAtPkB;;AAAA,2CA8QH9C,CAAC,IAAI;AACnB,aAAO5B,CAAC,CAAC2E,QAAF,CAAW,KAAKhD,KAAL,CAAWiD,YAAtB,EAAoChD,CAAC,CAACgB,MAAtC,CAAP;AACD,KAhRkB;;AAAA,6CAkRDhB,CAAC,IAAI;AACrB,aAAO,KAAKD,KAAL,CAAWkD,IAAX,CAAgBC,GAAhB,KAAwBlD,CAAC,CAACgB,MAAjC;AACD,KApRkB;;AAAA,6CAqXD,CAAChB,CAAD,EAAImD,aAAJ,KAAsB;AACtC,UAAI,KAAKpD,KAAL,CAAW4B,QAAX,IAAuB,KAAK5B,KAAL,CAAWqD,eAAtC,EAAuD;AACrD,eAAO,IAAP;AACD;;AAED,YAAMC,cAAc,GAAGjF,CAAC,CAACuC,MAAF,CAAS,KAAKP,KAAL,CAAWQ,QAApB,EAA8B0C,MAAM,IAAI;AAC7D,eAAOA,MAAM,CAACC,QAAP,KAAoBvD,CAAC,CAACK,EAA7B;AACD,OAFsB,CAAvB;;AAIA,UAAImD,OAAO,GAAG,IAAd;;AAEA,UAAIpF,CAAC,CAACqF,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,KAAK7D,KAAL,CAAW8D;AAApB,WAA5B;AAAb,WAAsF,YAAWjF,YAAY,CAC3G,CAACuE,aAAD,IAAkBnD,CAAC,CAAC8D,IAApB,GAA2B9D,CAAC,CAAC8D,IAAF,CAAOC,WAAlC,GAAgD,SAD2D,CAE3G,EAFF,CADF;AAKD,OAPD,MAOO;AACL;AACA,cAAMC,WAAW,GAAG5F,CAAC,CAAC6F,IAAF,CAClB7F,CAAC,CAAC8F,MAAF,CAASb,cAAT,EAAyBrD,CAAC,IAAIA,CAAC,CAACgB,MAAhC,CADkB,EAElB,CAFkB,CAApB;;AAIAwC,QAAAA,OAAO,gBACL,oBAAC,IAAD;AAAM,UAAA,KAAK,EAAEE,MAAM,CAACS;AAApB,WACGH,WAAW,CAACI,GAAZ,CAAgB,CAACpE,CAAD,EAAIqE,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,EAAEtE,CAAC,CAAC8D,IAAF,CAAOS;AAA1E,YAAP;AACD,SAFA,CADH,eAIE,oBAAC,IAAD;AAAM,UAAA,KAAK,EAAE,CAACb,MAAM,CAACC,kBAAR,EAA4B;AAAEa,YAAAA,UAAU,EAAE,EAAd;AAAkBZ,YAAAA,KAAK,EAAE,KAAK7D,KAAL,CAAW8D;AAApC,WAA5B;AAAb,WAAsG,GACpGR,cAAc,CAACoB,MAChB,QAAO5F,gBAAgB,CAACwE,cAAc,CAACoB,MAAhB,EAAwB,GAAxB,EAA6B,KAA7B,CAAoC,EAF5D,CAJF,CADF;AAUD;;AAED,0BACE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEf,MAAM,CAACgB;AAApB,sBACE,oBAAC,gBAAD;AACE,QAAA,OAAO,EAAE,MAAM;AACb,eAAKC,YAAL,CAAkB3E,CAAlB;AACD;AAHH,SAKGwD,OALH,CADF,CADF;AAWD,KApakB;;AAEjB,SAAKpD,KAAL,GAAa;AACX0C,MAAAA,eAAe,EAAE,KADN;AAEXlC,MAAAA,QAAQ,EAAE,EAFC;AAGXgE,MAAAA,aAAa,EAAE,KAHJ;AAIX1E,MAAAA,eAAe,EAAE,IAJN;AAKXW,MAAAA,eAAe,EAAE,IALN;AAMXQ,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;;AAEDgC,EAAAA,iBAAiB,GAAG;AAClB,SAAKC,mBAAL;;AAEA,QAAI,CAAC1G,CAAC,CAAC2E,QAAF,CAAW,KAAKhD,KAAL,CAAWkD,IAAX,CAAgB8B,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;;AA8EDE,EAAAA,mBAAmB,CAACC,KAAD,EAAQ;AACzB,SAAKpF,QAAL,CAAc;AACZqF,MAAAA,gBAAgB,EAAE,CAACD,KAAD,CADN;AAEZE,MAAAA,cAAc,EAAE;AAFJ,KAAd;AAID;;AAEDC,EAAAA,SAAS,GAAG;AACV,SAAKzF,KAAL,CAAW0F,YAAX,CAAwBC,UAAxB;AACD;;AAgEDC,EAAAA,eAAe,CAACC,IAAD,EAAO;AACpB,QAAI,KAAK7F,KAAL,CAAW8F,SAAf,EAA0B;AACxB,aAAOD,IAAI,GAAG,KAAK7F,KAAL,CAAWkD,IAAX,CAAgB6C,SAA9B;AACD;;AACD,WAAOF,IAAP;AACD;;AAEDZ,EAAAA,WAAW,GAAG;AACZ,QAAI,CAAC,KAAK5E,KAAL,CAAW2F,mBAAhB,EAAqC;AAAA;;AACnC,WAAK9F,QAAL,CAAc;AACZ8F,QAAAA,mBAAmB,EAAE,IADT;AAEZjD,QAAAA,eAAe,EAAE;AAFL,OAAd;AAIA,oCAAK/C,KAAL,CAAW0F,YAAX,0GAAyBO,OAAzB,kFAAkCC,cAAlC;AAEA,WAAKC,YAAL;AACD;AACF;;AAEDzC,EAAAA,OAAO,GAAG;AACR,WAAOrF,CAAC,CAACqF,OAAF,CAAU,KAAKrD,KAAL,CAAWQ,QAArB,CAAP;AACD;;AAEDsF,EAAAA,YAAY,GAAG;AACb,UAAMC,OAAO,GAAG,KAAK1C,OAAL,KACZ,CADY,GAEZrF,CAAC,CAACgI,KAAF,CAAQ,KAAKhG,KAAL,CAAWQ,QAAnB,EAA6BZ,CAAC,IAAI;AAChC,aAAOA,CAAC,CAACqG,SAAT;AACD,KAFD,EAEGA,SAJP;AAKAlH,IAAAA,eAAe,CAAC6F,WAAhB,CAA4B,KAAKjF,KAAL,CAAW8B,QAAvC,EAAiD,KAAK9B,KAAL,CAAW6B,UAA5D,EAAwEuE,OAAxE,EAAiF7F,IAAjF,CAAsFC,GAAG,IAAI;AAAA;;AAC3F,WAAKN,QAAL,CACE;AACEW,QAAAA,QAAQ,EAAExC,CAAC,CAACkI,MAAF,CACRlI,CAAC,CAAC8F,MAAF,CACE9F,CAAC,CAACuC,MAAF,CAASvC,CAAC,CAACmI,MAAF,CAAS,KAAKnG,KAAL,CAAWQ,QAApB,EAA8BL,GAAG,CAACwB,IAAlC,CAAT,EAAkD/B,CAAC,IAAI;AACrD,cAAI,CAAC,KAAKD,KAAL,CAAW4B,QAAhB,EAA0B;AACxB,mBAAO,IAAP;AACD;;AACD,iBAAO3B,CAAC,CAACK,EAAF,KAAS,KAAKN,KAAL,CAAW4B,QAApB,IAAgC3B,CAAC,CAACuD,QAAF,KAAe,KAAKxD,KAAL,CAAW4B,QAAjE;AACD,SALD,CADF,EAOE3B,CAAC,IAAI;AACH,iBAAOA,CAAC,CAACK,EAAT;AACD,SATH,CADQ,EAYR,WAZQ,CADZ;AAeEyC,QAAAA,eAAe,EAAE;AAfnB,OADF,EAkBE,MAAM;AACJ,YAAI,KAAK/C,KAAL,CAAWyG,gBAAf,EAAiC;AAC/B,eAAKzG,KAAL,CAAWyG,gBAAX,CAA4B,KAAKpG,KAAL,CAAWQ,QAAX,CAAoB6D,MAAhD;AACD;AACF,OAtBH,EAD2F,CAyB3F;;AACA,qCAAK1E,KAAL,CAAW0F,YAAX,4GAAyBO,OAAzB,kFAAkCS,gBAAlC,GA1B2F,CA2B3F;;AACA,UAAI,KAAK1G,KAAL,CAAW2G,IAAf,EAAqB;AACnB,aAAKxB,SAAL,GAAiByB,UAAU,CAAC,MAAM;AAChC,eAAKT,YAAL;AACD,SAF0B,EAExB,KAAKnG,KAAL,CAAW6G,gBAAX,IAA+B,IAFP,CAA3B;AAGD;AACF,KAjCD;AAkCD;;AAMDC,EAAAA,oBAAoB,GAAG;AACrB,SAAK5G,QAAL,CAAc;AACZ2E,MAAAA,aAAa,EAAE;AADH,KAAd;AAGD;;AAEDkC,EAAAA,YAAY,CAACtF,OAAD,EAAU;AACpB,UAAMd,WAAW,GAAG,KAAKN,KAAL,CAAWQ,QAA/B;AACAF,IAAAA,WAAW,CAACqG,IAAZ,CAAiBvF,OAAjB;AACA,SAAKvB,QAAL,CACE;AACE2E,MAAAA,aAAa,EAAE,KADjB;AAEEhE,MAAAA,QAAQ,EAAEF;AAFZ,KADF,EAKE,MAAM;AACJ,UAAI,KAAKX,KAAL,CAAWiH,cAAf,EAA+B;AAC7B,aAAKjH,KAAL,CAAWiH,cAAX;AACD;AACF,KATH;AAWD;;AAUDC,EAAAA,gBAAgB,CAACjH,CAAD,EAAI;AAClB,QAAI,KAAKD,KAAL,CAAWkD,IAAX,CAAgBC,GAAhB,KAAwBlD,CAAC,CAACgB,MAA9B,EAAsC;AACpC,aAAO,IAAP;AACD;;AACD,WAAO5C,CAAC,CAAC2E,QAAF,CAAW,KAAKhD,KAAL,CAAWkD,IAAX,CAAgBiE,WAA3B,EAAwC,KAAKnH,KAAL,CAAWoH,eAAnD,CAAP;AACD;;AAEDC,EAAAA,mBAAmB,GAAG;AACpB,SAAKnH,QAAL,CAAc;AACZqF,MAAAA,gBAAgB,EAAE,EADN;AAEZC,MAAAA,cAAc,EAAE;AAFJ,KAAd;AAID;;AAED8B,EAAAA,0BAA0B,GAAG;AAC3B,wBACE,oBAAC,YAAD;AACE,MAAA,OAAO,EAAE,CAAC,CAAC,KAAKjH,KAAL,CAAWF,eADxB;AAEE,MAAA,SAAS,EAAE,KAAKoH,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,KAAKpH,KAAL,CAAWS,eADxB;AAEE,MAAA,SAAS,EAAE,KAAK4G,oBAFlB;AAGE,MAAA,QAAQ,EAAE,KAAKC,mBAHjB;AAIE,MAAA,OAAO,EAAE,KAAKA,mBAJhB;AAKE,MAAA,IAAI,EAAC,+CALP;AAME,MAAA,YAAY,eAAE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEhE,MAAM,CAACiE;AAApB;AANhB,MADF;AAUD;;AAEDC,EAAAA,yBAAyB,GAAG;AAC1B,wBACE,oBAAC,YAAD;AACE,MAAA,OAAO,EAAE,CAAC,CAAC,KAAKxH,KAAL,CAAWU,cADxB;AAEE,MAAA,SAAS,EAAE,KAAK+G,mBAFlB;AAGE,MAAA,QAAQ,EAAE,KAAKC,kBAHjB;AAIE,MAAA,OAAO,EAAE,KAAKA,kBAJhB;AAKE,MAAA,IAAI,EAAC,2CALP;AAME,MAAA,YAAY,eAAE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEpE,MAAM,CAACiE;AAApB;AANhB,MADF;AAUD;;AAEDI,EAAAA,2BAA2B,GAAG;AAC5B,wBACE,oBAAC,YAAD;AACE,MAAA,OAAO,EAAE,CAAC,CAAC,KAAK3H,KAAL,CAAWa,gBADxB;AAEE,MAAA,SAAS,EAAE,KAAK+G,qBAFlB;AAGE,MAAA,QAAQ,EAAE,KAAKC,oBAHjB;AAIE,MAAA,OAAO,EAAE,KAAKA,oBAJhB;AAKE,MAAA,IAAI,EAAC,6CALP;AAME,MAAA,YAAY,eAAE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEvE,MAAM,CAACiE;AAApB;AANhB,MADF;AAUD;;AAEDO,EAAAA,yBAAyB,GAAG;AAC1B,UAAM;AAAE7G,MAAAA;AAAF,QAA4B,KAAKjB,KAAvC;AACA,UAAM+H,SAAS,GAAG9G,qBAAqB,KAAK,SAA5C;AACA,wBACE,oBAAC,YAAD;AACE,MAAA,OAAO,EAAE,CAAC,CAACA,qBADb;AAEE,MAAA,SAAS,EAAE,KAAK+G,0BAFlB;AAGE,MAAA,IAAI,EAAED,SAAS,GAAG,yBAAH,GAA+B,kBAHhD;AAIE,MAAA,YAAY,eACV,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEzE,MAAM,CAACiE;AAApB,SACGQ,SAAS,GAAG,4CAAH,GAAkD,kEAD9D,CALJ;AASE,MAAA,MAAM,MATR;AAUE,MAAA,OAAO,EAAE;AAVX,MADF;AAcD;;AAEDE,EAAAA,kBAAkB,CAACrI,CAAD,EAAI;AACpB,QAAI5B,CAAC,CAACqF,OAAF,CAAUzD,CAAC,CAAC9B,KAAZ,CAAJ,EAAwB;AACtB,aAAO,IAAP;AACD;;AACD,wBACE,oBAAC,gBAAD;AAAkB,MAAA,KAAK,EAAEwF,MAAM,CAAC4E,qBAAhC;AAAuD,MAAA,OAAO,EAAE,KAAKlD,mBAAL,CAAyBmD,IAAzB,CAA8B,IAA9B,EAAoC7J,OAAO,CAACsB,CAAC,CAAC9B,KAAH,CAA3C;AAAhE,oBACE,oBAAC,KAAD;AAAO,MAAA,KAAK,EAAEwF,MAAM,CAAC8E,YAArB;AAAmC,MAAA,MAAM,EAAE;AAAEC,QAAAA,GAAG,EAAEhK,WAAW,CAACuB,CAAC,CAAC9B,KAAH;AAAlB;AAA3C,MADF,CADF;AAKD;;AAmDDwK,EAAAA,aAAa,CAAC1I,CAAD,EAAI;AACf,UAAMmD,aAAa,GAAG,KAAKA,aAAL,CAAmBnD,CAAnB,CAAtB;AACA,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE0D,MAAM,CAAClC,OAApB;AAA6B,MAAA,GAAG,EAAExB,CAAC,CAACK;AAApC,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEqD,MAAM,CAACiF;AAApB,oBACE,oBAAC,UAAD;AAAY,MAAA,UAAU,EAAExF,aAAa,GAAG,IAAH,GAAUnD,CAAC,CAAC8D,IAAF,CAAOS,UAAtD;AAAkE,MAAA,QAAQ,EAAE,EAA5E;AAAgF,MAAA,KAAK,EAAEb,MAAM,CAACkF;AAA9F,MADF,eAEE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAElF,MAAM,CAACmF;AAApB,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEnF,MAAM,CAACoF;AAApB,OACG,KAAK7B,gBAAL,CAAsBjH,CAAtB,iBACC,oBAAC,gBAAD;AAAkB,MAAA,OAAO,EAAE,KAAK+I,oBAAL,CAA0BR,IAA1B,CAA+B,IAA/B,EAAqCvI,CAArC;AAA3B,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAAC0D,MAAM,CAACsF,sBAAR,EAAgC;AAAEC,QAAAA,eAAe,EAAE,KAAKlJ,KAAL,CAAW8D;AAA9B,OAAhC;AAAb,oBACE,oBAAC,IAAD;AAAM,MAAA,IAAI,EAAC,OAAX;AAAmB,MAAA,IAAI,EAAC,cAAxB;AAAuC,MAAA,SAAS,EAAEH,MAAM,CAACwF;AAAzD,MADF,CADF,CADD,GAOC,CAAC,KAAKnJ,KAAL,CAAWoJ,WAAZ,iBACE,oBAAC,gBAAD;AAAkB,MAAA,OAAO,EAAE,KAAKC,oBAAL,CAA0Bb,IAA1B,CAA+B,IAA/B,EAAqCvI,CAArC;AAA3B,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAAC0D,MAAM,CAACsF,sBAAR,EAAgC;AAAEC,QAAAA,eAAe,EAAE,KAAKlJ,KAAL,CAAW8D;AAA9B,OAAhC;AAAb,oBACE,oBAAC,IAAD;AAAM,MAAA,IAAI,EAAC,MAAX;AAAkB,MAAA,IAAI,EAAC,cAAvB;AAAsC,MAAA,SAAS,EAAEH,MAAM,CAACwF;AAAxD,MADF,CADF,CATN,EAgBG,CAAC,KAAKnJ,KAAL,CAAWoJ,WAAZ,IACC,KAAKE,eAAL,CAAqBrJ,CAArB,CADD,KAEEmD,aAAa,gBACZ,oBAAC,gBAAD;AAAkB,MAAA,KAAK,EAAE;AAAEmB,QAAAA,WAAW,EAAE;AAAf,OAAzB;AAA6C,MAAA,OAAO,EAAE,KAAKgF,kBAAL,CAAwBf,IAAxB,CAA6B,IAA7B,EAAmCvI,CAAnC;AAAtD,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAAC0D,MAAM,CAACsF,sBAAR,EAAgC;AAAEC,QAAAA,eAAe,EAAE,KAAKlJ,KAAL,CAAW8D;AAA9B,OAAhC;AAAb,oBACE,oBAAC,IAAD;AAAM,MAAA,IAAI,EAAC,WAAX;AAAuB,MAAA,IAAI,EAAC,cAA5B;AAA2C,MAAA,SAAS,EAAEH,MAAM,CAACwF;AAA7D,MADF,CADF,CADY,gBAOZ,oBAAC,gBAAD;AAAkB,MAAA,KAAK,EAAE;AAAE5E,QAAAA,WAAW,EAAE;AAAf,OAAzB;AAA6C,MAAA,OAAO,EAAE,KAAKiF,gBAAL,CAAsBhB,IAAtB,CAA2B,IAA3B,EAAiCvI,CAAjC;AAAtD,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAAC0D,MAAM,CAACsF,sBAAR,EAAgC;AAAEC,QAAAA,eAAe,EAAE,KAAKlJ,KAAL,CAAW8D;AAA9B,OAAhC;AAAb,oBACE,oBAAC,IAAD;AAAM,MAAA,IAAI,EAAC,YAAX;AAAwB,MAAA,IAAI,EAAC,cAA7B;AAA4C,MAAA,SAAS,EAAEH,MAAM,CAACwF;AAA9D,MADF,CADF,CATH,CAhBH,eA+BE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAACxF,MAAM,CAAC8F,WAAR,EAAqB;AAAEC,QAAAA,QAAQ,EAAE,KAAK9D,eAAL,CAAqB,EAArB;AAAZ,OAArB;AAAb,OACGxC,aAAa,GAAG,gBAAH,GAAsBnD,CAAC,CAAC8D,IAAF,CAAOC,WAD7C,CA/BF,CADF,EAoCG,CAAC3F,CAAC,CAACqF,OAAF,CAAUzD,CAAC,CAAC0J,OAAZ,CAAD,iBACC,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAAChG,MAAM,CAACiG,WAAR,EAAqB;AAAEF,QAAAA,QAAQ,EAAE,KAAK9D,eAAL,CAAqB,EAArB;AAAZ,OAArB;AAAb,OAA4ExC,aAAa,GAAG,UAAH,GAAgBnD,CAAC,CAAC0J,OAA3G,CArCJ,EAuCG,CAACvG,aAAD,IAAkB,KAAKkF,kBAAL,CAAwBrI,CAAxB,CAvCrB,CAFF,CADF,eA6CE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE0D,MAAM,CAACkG;AAApB,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAAClG,MAAM,CAACmG,WAAR,EAAqB;AAAEJ,QAAAA,QAAQ,EAAE,KAAK9D,eAAL,CAAqB,EAArB;AAAZ,OAArB;AAAb,OACGtH,MAAM,CACJyL,GADF,CACM9J,CAAC,CAACqG,SADR,EAEE0D,KAFF,GAGEC,MAHF,CAGS,eAHT,CADH,CADF,EAOG,KAAKC,eAAL,CAAqBjK,CAArB,EAAwBmD,aAAxB,CAPH,CA7CF,CADF;AAyDD;;AAED+G,EAAAA,UAAU,GAAG;AACX,UAAM;AAAEvH,MAAAA;AAAF,QAA+B,KAAK5C,KAA1C;AACA,UAAM;AAAE8C,MAAAA,UAAF;AAAcZ,MAAAA,UAAd;AAA0BH,MAAAA;AAA1B,QAAyC,KAAK1B,KAApD;AACA,QAAI,CAACuC,wBAAD,IAA6B,CAACE,UAAlC,EAA8C,OAAO,IAAP;AAE9C,QAAIf,UAAJ,EACE,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE4B,MAAM,CAACyG;AAApB,oBACE,oBAAC,OAAD;AAAS,MAAA,IAAI,EAAE,OAAf;AAAwB,MAAA,KAAK,EAAE,KAAKpK,KAAL,CAAW8D;AAA1C,MADF,CADF;AAMF,UAAMuG,OAAO,GAAG,KAAKA,OAAL,EAAhB;AACA,UAAMC,KAAK,GAAG,KAAKC,gBAAL,EAAd;AACA,UAAMC,QAAQ,GAAI,aAAYF,KAAM,QAAO7L,UAAU,CAAC6L,KAAD,CAAQ,EAA7D,CAdW,CAeX;;AAEA,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE3G,MAAM,CAAC8G;AAApB,OACGJ,OAAO,IAAInI,UAAX,gBAAwB,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAAC;AAAE2B,QAAAA,KAAK,EAAE,KAAK7D,KAAL,CAAW8D;AAApB,OAAD,EAA2CH,MAAM,CAAC+G,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,KAAK7K,KAAL,CAAW8D;AAA1B,OAAD,EAAiDH,MAAM,CAACmH,UAAxD,CAHT;AAIE,MAAA,QAAQ,EAAE/I,UAJZ;AAKE,MAAA,eAAe,MALjB;AAME,MAAA,MAAM;AANR,oBAQE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE4B,MAAM,CAACoH;AAApB,oBACE,oBAAC,IAAD;AACE,MAAA,IAAI,EAAEV,OAAO,GAAG,QAAH,GAAc,cAD7B;AAEE,MAAA,IAAI,EAAE,cAFR;AAGE,MAAA,SAAS,EAAE,CAAC;AAAExG,QAAAA,KAAK,EAAE,KAAK7D,KAAL,CAAW8D;AAApB,OAAD,EAA2CH,MAAM,CAACqH,cAAlD;AAHb,MADF,eAME,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAAC;AAAEnH,QAAAA,KAAK,EAAE,KAAK7D,KAAL,CAAW8D;AAApB,OAAD,EAA2CH,MAAM,CAACsH,cAAlD;AAAb,OAAiFZ,OAAO,GAAG,QAAH,GAAc,MAAtG,CANF,CARF,CAFF,CADF;AAsBD;;AAEDa,EAAAA,cAAc,GAAG;AACf,QAAI,KAAK7K,KAAL,CAAW0C,eAAf,EAAgC;AAC9B,0BACE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEY,MAAM,CAACwH;AAApB,sBACE,oBAAC,OAAD;AAAS,QAAA,KAAK,EAAE,KAAKnL,KAAL,CAAW8D;AAA3B,QADF,CADF;AAKD;;AACD,QAAI,KAAKJ,OAAL,MAAkB,CAAC,KAAKrD,KAAL,CAAWwE,aAAlC,EAAiD;AAC/C,UAAIxG,CAAC,CAAC2E,QAAF,CAAW,KAAKhD,KAAL,CAAWkD,IAAX,CAAgB8B,MAA3B,EAAmC,YAAnC,CAAJ,EAAsD;AACpD,eAAO,IAAP;AACD;;AACD,UAAI,CAAC3G,CAAC,CAAC+M,KAAF,CAAQ,KAAKpL,KAAL,CAAWqL,WAAnB,CAAD,IAAoChN,CAAC,CAACqF,OAAF,CAAU,KAAK1D,KAAL,CAAWqL,WAArB,CAAxC,EAA2E,OAAO,IAAP;AAC3E,0BACE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAE1H,MAAM,CAACwH;AAApB,sBACE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAE,CAACxH,MAAM,CAAC2H,aAAR,EAAuB;AAAE5B,UAAAA,QAAQ,EAAE,KAAK9D,eAAL,CAAqB,EAArB;AAAZ,SAAvB;AAAb,SACGvH,CAAC,CAAC+M,KAAF,CAAQ,KAAKpL,KAAL,CAAWqL,WAAnB,IAAkC,gCAAlC,GAAqE,KAAKrL,KAAL,CAAWqL,WADnF,CADF,CADF;AAOD;;AACD,QAAIE,MAAM,GAAG,CAAC,GAAG,KAAKlL,KAAL,CAAWQ,QAAf,CAAb;;AACA,QAAI,KAAKb,KAAL,CAAWwL,YAAf,EAA6B;AAC3BD,MAAAA,MAAM,GAAGA,MAAM,CAACE,OAAP,EAAT;AACD;;AACD,QAAI,CAAC,KAAKzL,KAAL,CAAW0L,WAAZ,IAA2B,CAAC,KAAK1L,KAAL,CAAW4B,QAA3C,EAAqD;AACnD2J,MAAAA,MAAM,GAAGlN,CAAC,CAACuC,MAAF,CAAS2K,MAAT,EAAiBtL,CAAC,IAAI;AAC7B,eAAO,CAACA,CAAC,CAACuD,QAAV;AACD,OAFQ,CAAT;AAGD;;AACD,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEG,MAAM,CAACwH;AAApB,OACG,CAAC,KAAKzH,OAAL,EAAD,iBACC,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEC,MAAM,CAACgI;AAApB,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE;AAAEC,QAAAA,UAAU,EAAE;AAAd;AAAb,OACG,KAAKzB,UAAL,EADH,EAEG,CAAC,KAAKnK,KAAL,CAAW6L,cAAZ,IAA8B,KAAKxL,KAAL,CAAWQ,QAAX,CAAoB6D,MAApB,GAA6B,CAA3D,iBACC,oBAAC,gBAAD;AAAkB,MAAA,OAAO,EAAE,KAAKe,SAAL,CAAe+C,IAAf,CAAoB,IAApB;AAA3B,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAAC7E,MAAM,CAACmI,QAAR,EAAkB;AAAEjI,QAAAA,KAAK,EAAE,KAAK7D,KAAL,CAAW8D;AAApB,OAAlB;AAAb,uBADF,CAHJ,CADF,eASE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAACH,MAAM,CAACoI,YAAR,EAAsB;AAAErC,QAAAA,QAAQ,EAAE,KAAK9D,eAAL,CAAqB,EAArB;AAAZ,OAAtB;AAAb,OACG,KAAKvF,KAAL,CAAWQ,QAAX,CAAoB6D,MADvB,EAEI,WAAUjG,UAAU,CAAC,KAAK4B,KAAL,CAAWQ,QAAX,CAAoB6D,MAArB,CAA6B,EAFrD,CATF,CAFJ,EAiBG,KAAK1E,KAAL,CAAWwL,YAAX,IAA2B,KAAKnL,KAAL,CAAWwE,aAAtC,iBAAuD,oBAAC,OAAD;AAAS,MAAA,KAAK,EAAE,KAAK7E,KAAL,CAAW8D;AAA3B,MAjB1D,EAkBGyH,MAAM,CAAClH,GAAP,CAAWpE,CAAC,IAAI;AACf,aAAO,KAAK0I,aAAL,CAAmB1I,CAAnB,CAAP;AACD,KAFA,CAlBH,EAqBG,CAAC,KAAKD,KAAL,CAAWwL,YAAZ,IAA4B,KAAKnL,KAAL,CAAWwE,aAAvC,iBAAwD,oBAAC,OAAD;AAAS,MAAA,KAAK,EAAE,KAAK7E,KAAL,CAAW8D;AAA3B,MArB3D,CADF;AAyBD;;AAEDkI,EAAAA,uBAAuB,GAAG;AACxB,wBACE,oBAAC,UAAD;AACE,MAAA,OAAO,EAAE,KAAK3L,KAAL,CAAWmF,cADtB;AAEE,MAAA,MAAM,EAAE,KAAKnF,KAAL,CAAWkF,gBAFrB;AAGE,MAAA,OAAO,EAAE,KAAK8B,mBAAL,CAAyBmB,IAAzB,CAA8B,IAA9B,CAHX;AAIE,MAAA,GAAG,EAAC;AAJN,MADF;AAQD;;AAEDyD,EAAAA,mBAAmB,GAAG;AACpB,QAAI,CAAC,KAAK5L,KAAL,CAAWe,aAAhB,EAA+B,OAAO,IAAP;AAC/B,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEuC,MAAM,CAACuI;AAApB,oBACE,oBAAC,OAAD;AAAS,MAAA,KAAK,EAAE,KAAKlM,KAAL,CAAW8D;AAA3B,MADF,CADF;AAKD;;AAEDqI,EAAAA,MAAM,GAAG;AACP,QAAI9N,CAAC,CAAC2E,QAAF,CAAW,KAAKhD,KAAL,CAAWkD,IAAX,CAAgB8B,MAA3B,EAAmC,aAAnC,CAAJ,EAAuD;AACrD,aAAO,IAAP;AACD;;AACD,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAACrB,MAAM,CAACyI,mBAAR,EAA6B,KAAKpM,KAAL,CAAWqM,KAAxC;AAAb,OACG,KAAKnB,cAAL,EADH,EAEG,KAAKe,mBAAL,EAFH,EAGG,KAAK3E,0BAAL,EAHH,EAIG,KAAKG,0BAAL,EAJH,EAKG,KAAKI,yBAAL,EALH,EAMG,KAAKG,2BAAL,EANH,EAOG,KAAKG,yBAAL,EAPH,EAQG,KAAK6D,uBAAL,EARH,CADF;AAYD;;AA1mBoC;;AA6mBvC,MAAMrI,MAAM,GAAGvF,UAAU,CAACkO,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,EAAEvN,QAHF;AAIdwN,IAAAA,cAAc,EAAE;AAJF,GALe;AAW/BZ,EAAAA,YAAY,EAAE;AACZa,IAAAA,UAAU,EAAE,aADA;AAEZ/I,IAAAA,KAAK,EAAE7E,YAFK;AAGZuN,IAAAA,IAAI,EAAE,CAHM;AAIZM,IAAAA,SAAS,EAAE;AAJC,GAXiB;AAiB/BpL,EAAAA,OAAO,EAAE;AACPoL,IAAAA,SAAS,EAAE;AADJ,GAjBsB;AAoB/BjE,EAAAA,WAAW,EAAE;AACXkE,IAAAA,aAAa,EAAE;AADJ,GApBkB;AAuB/BjE,EAAAA,iBAAiB,EAAE;AACjBtE,IAAAA,WAAW,EAAE;AADI,GAvBY;AA0B/BuE,EAAAA,YAAY,EAAE;AACZyD,IAAAA,IAAI,EAAE,CADM;AAEZrD,IAAAA,eAAe,EAAEjK,OAFL;AAGZ8N,IAAAA,YAAY,EAAE,CAHF;AAIZC,IAAAA,OAAO,EAAE;AAJG,GA1BiB;AAgC/BjE,EAAAA,eAAe,EAAE;AACf+D,IAAAA,aAAa,EAAE,aADA;AAEflB,IAAAA,UAAU,EAAE;AAFG,GAhCc;AAoC/B3C,EAAAA,sBAAsB,EAAE;AACtBgE,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/BhE,EAAAA,iBAAiB,EAAE;AACjBO,IAAAA,QAAQ,EAAE,EADO;AAEjB7F,IAAAA,KAAK,EAAE;AAFU,GA3CY;AA+C/B4F,EAAAA,WAAW,EAAE;AACXmD,IAAAA,UAAU,EAAE,aADD;AAEX/I,IAAAA,KAAK,EAAE7E,YAFI;AAGXuN,IAAAA,IAAI,EAAE;AAHK,GA/CkB;AAoD/B3C,EAAAA,WAAW,EAAE;AACXiD,IAAAA,SAAS,EAAE,CADA;AAEXD,IAAAA,UAAU,EAAE,YAFD;AAGX/I,IAAAA,KAAK,EAAE7E;AAHI,GApDkB;AAyD/B6K,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;AAGXhJ,IAAAA,KAAK,EAAE3E,UAHI;AAIXkO,IAAAA,SAAS,EAAE;AAJA,GA9DkB;AAoE/BzI,EAAAA,cAAc,EAAE;AACd4H,IAAAA,IAAI,EAAE,CADQ;AAEdc,IAAAA,WAAW,EAAE;AAFC,GApEe;AAwE/BzJ,EAAAA,kBAAkB,EAAE;AAClBgJ,IAAAA,UAAU,EAAE,aADM;AAElBlD,IAAAA,QAAQ,EAAE;AAFQ,GAxEW;AA4E/BtF,EAAAA,mBAAmB,EAAE;AACnB0I,IAAAA,aAAa,EAAE,KADI;AAEnBlB,IAAAA,UAAU,EAAE,QAFO;AAGnBa,IAAAA,eAAe,EAAE;AAHE,GA5EU;AAiF/BlE,EAAAA,qBAAqB,EAAE;AACrBsE,IAAAA,SAAS,EAAE,CADU;AAErBI,IAAAA,KAAK,EAAE,EAFc;AAGrBC,IAAAA,MAAM,EAAE;AAHa,GAjFQ;AAsF/BzE,EAAAA,YAAY,EAAE;AACZwE,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;AAEb/I,IAAAA,KAAK,EAAE7E;AAFM,GA3FgB;AA+F/B2M,EAAAA,sBAAsB,EAAE;AACtBmB,IAAAA,aAAa,EAAE;AADO,GA/FO;AAkG/BlF,EAAAA,iBAAiB,EAAE;AACjBgF,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;AAGZnF,IAAAA,WAAW,EAAE;AAHD,GAxHiB;AA6H/BuG,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;AAGdjF,IAAAA,UAAU,EAAE;AAHE;AAxIe,CAAlB,CAAf;;AA+IA,MAAM+I,eAAe,GAAGnN,KAAK,IAAI;AAC/B,SAAO;AACLyD,IAAAA,kBAAkB,EAAE/E,8BAA8B,CAACsB,KAAD,CAD7C;AAEL6C,IAAAA,IAAI,EAAE7C,KAAK,CAAC6C,IAFP;AAGLN,IAAAA,wBAAwB,EAAEhE,uBAAuB,CAACyB,KAAD,EAAQ,0BAAR,EAAoC,KAApC,CAH5C;AAIL4C,IAAAA,YAAY,EAAE5C,KAAK,CAACoN,YAAN,CAAmBxK,YAAnB,IAAmC;AAJ5C,GAAP;AAMD,CAPD;;AASA,MAAMkI,cAAc,GAAG5M,OAAO,CAACiP,eAAD,EAAkB;AAAElO,EAAAA,SAAF;AAAaC,EAAAA;AAAb,CAAlB,EAA8C,IAA9C,EAAoD;AAAEmO,EAAAA,UAAU,EAAE;AAAd,CAApD,CAAP,CAAiF5N,cAAjF,CAAvB;AACA,SAASqL,cAAc,IAAIrL,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 { blockUser, unblockUser } from '../actions';\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 onPressBlockUser = c => {\n this.setState({ commentToBlock: c });\n };\n\n onPressConfirmBlock = () => {\n const userId = this.state.commentToBlock.UserId;\n this.props.blockUser(userId);\n this.setState({ commentToBlock: null });\n };\n\n onPressCancelBlock = () => {\n this.setState({ commentToBlock: null });\n };\n\n onPressUnblockUser = c => {\n this.setState({ commentToUnblock: c });\n };\n\n onPressConfirmUnblock = () => {\n const userId = this.state.commentToUnblock.UserId;\n this.props.unblockUser(userId);\n this.setState({ commentToUnblock: null });\n };\n\n onPressCancelUnblock = () => {\n this.setState({ commentToUnblock: null });\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 isUserBlocked = c => {\n return _.includes(this.props.blockedUsers, c.UserId);\n };\n\n canBlockComment = c => {\n return this.props.user.uid !== c.UserId;\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 renderCommentBlockConfirm() {\n return (\n <ConfirmPopup\n visible={!!this.state.commentToBlock}\n onConfirm={this.onPressConfirmBlock}\n onCancel={this.onPressCancelBlock}\n onClose={this.onPressCancelBlock}\n text=\"Are you sure you want to block this user?\"\n extraContent={<Text style={styles.commentReportText}>You will no longer see comments made by this user</Text>}\n />\n );\n }\n\n renderCommentUnblockConfirm() {\n return (\n <ConfirmPopup\n visible={!!this.state.commentToUnblock}\n onConfirm={this.onPressConfirmUnblock}\n onCancel={this.onPressCancelUnblock}\n onClose={this.onPressCancelUnblock}\n text=\"Are you sure you want to unblock this user?\"\n extraContent={<Text style={styles.commentReportText}>You will once again see comments made by this user</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={'Done'}\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, isUserBlocked) => {\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 !isUserBlocked && 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 const isUserBlocked = this.isUserBlocked(c);\n return (\n <View style={styles.comment} key={c.Id}>\n <View style={styles.commentFlex}>\n <ProfilePic ProfilePic={isUserBlocked ? null : 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 {!this.props.disableFlag &&\n this.canBlockComment(c) &&\n (isUserBlocked ? (\n <TouchableOpacity style={{ marginRight: 8 }} onPress={this.onPressUnblockUser.bind(this, c)}>\n <View style={[styles.commentButtonContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"user-plus\" type=\"font-awesome\" iconStyle={styles.commentButtonIcon} />\n </View>\n </TouchableOpacity>\n ) : (\n <TouchableOpacity style={{ marginRight: 8 }} onPress={this.onPressBlockUser.bind(this, c)}>\n <View style={[styles.commentButtonContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"user-times\" type=\"font-awesome\" iconStyle={styles.commentButtonIcon} />\n </View>\n </TouchableOpacity>\n ))}\n <Text style={[styles.commentName, { fontSize: this.getAdjustedSize(13) }]}>\n {isUserBlocked ? '[blocked user]' : c.User.displayName}\n </Text>\n </View>\n {!_.isEmpty(c.Comment) && (\n <Text style={[styles.commentText, { fontSize: this.getAdjustedSize(13) }]}>{isUserBlocked ? '[hidden]' : c.Comment}</Text>\n )}\n {!isUserBlocked && 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, isUserBlocked)}\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.renderCommentBlockConfirm()}\n {this.renderCommentUnblockConfirm()}\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 blockedUsers: state.userSettings.blockedUsers || [],\n };\n};\n\nconst commentSection = connect(mapStateToProps, { blockUser, unblockUser }, 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","blockUser","unblockUser","ConfirmPopup","ProfilePic","ImagePopup","InlineButton","Spinner","Services","CommentSection","constructor","props","c","setState","commentToDelete","removeComment","state","Id","then","res","console","log","newComments","filter","comments","commentToReport","commentToBlock","userId","UserId","commentToUnblock","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","includes","blockedUsers","user","uid","isUserBlocked","hideReplyButton","threadComments","innerC","ParentId","content","isEmpty","styles","commentRepliesText","color","colourBrandingMain","User","displayName","profilePics","take","uniqBy","multiReplyContainer","map","i","marginRight","profilePic","marginLeft","length","commentReplies","onOpenThread","addingComment","componentDidMount","getNotificationSate","hidden","getComments","componentWillUnmount","loadTimer","clearTimeout","onPressCommentImage","image","imagePopupSource","imagePopupOpen","onGoToAdd","commentReply","current","focusInput","getAdjustedSize","size","scaleFont","fontScale","commentsLoadStarted","loadingStarted","loadComments","minTime","maxBy","Timestamp","sortBy","concat","onCommentsLoaded","loadingCompleted","live","setTimeout","refreshFrequency","startedAddingComment","commentAdded","push","onCommentAdded","canRemoveComment","permissions","adminPermission","closeCommentGallery","renderCommentDeleteConfirm","onPressConfirmDelete","onPressCancelDelete","renderCommentReportConfirm","onPressConfirmReport","onPressCancelReport","commentReportText","renderCommentBlockConfirm","onPressConfirmBlock","onPressCancelBlock","renderCommentUnblockConfirm","onPressConfirmUnblock","onPressCancelUnblock","renderCommentReportStatus","isSuccess","onPressConfirmReportStatus","renderCommentImage","commentImageContainer","bind","commentImage","uri","renderComment","commentFlex","commentProfilePic","commentBlock","commentTitleRow","onPressDeleteComment","commentButtonContainer","backgroundColor","commentButtonIcon","disableFlag","onPressReportComment","canBlockComment","onPressUnblockUser","onPressBlockUser","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","userSettings","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 { blockUser, unblockUser } from '../actions';\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 onPressBlockUser = c => {\n this.setState({ commentToBlock: c });\n };\n\n onPressConfirmBlock = () => {\n const userId = this.state.commentToBlock.UserId;\n this.props.blockUser(userId);\n this.setState({ commentToBlock: null });\n };\n\n onPressCancelBlock = () => {\n this.setState({ commentToBlock: null });\n };\n\n onPressUnblockUser = c => {\n this.setState({ commentToUnblock: c });\n };\n\n onPressConfirmUnblock = () => {\n const userId = this.state.commentToUnblock.UserId;\n this.props.unblockUser(userId);\n this.setState({ commentToUnblock: null });\n };\n\n onPressCancelUnblock = () => {\n this.setState({ commentToUnblock: null });\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?.current?.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 isUserBlocked = c => {\n return _.includes(this.props.blockedUsers, c.UserId);\n };\n\n canBlockComment = c => {\n return this.props.user.uid !== c.UserId;\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 renderCommentBlockConfirm() {\n return (\n <ConfirmPopup\n visible={!!this.state.commentToBlock}\n onConfirm={this.onPressConfirmBlock}\n onCancel={this.onPressCancelBlock}\n onClose={this.onPressCancelBlock}\n text=\"Are you sure you want to block this user?\"\n extraContent={<Text style={styles.commentReportText}>You will no longer see comments made by this user</Text>}\n />\n );\n }\n\n renderCommentUnblockConfirm() {\n return (\n <ConfirmPopup\n visible={!!this.state.commentToUnblock}\n onConfirm={this.onPressConfirmUnblock}\n onCancel={this.onPressCancelUnblock}\n onClose={this.onPressCancelUnblock}\n text=\"Are you sure you want to unblock this user?\"\n extraContent={<Text style={styles.commentReportText}>You will once again see comments made by this user</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={'Done'}\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, isUserBlocked) => {\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 !isUserBlocked && 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 const isUserBlocked = this.isUserBlocked(c);\n return (\n <View style={styles.comment} key={c.Id}>\n <View style={styles.commentFlex}>\n <ProfilePic ProfilePic={isUserBlocked ? null : 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 {!this.props.disableFlag &&\n this.canBlockComment(c) &&\n (isUserBlocked ? (\n <TouchableOpacity style={{ marginRight: 8 }} onPress={this.onPressUnblockUser.bind(this, c)}>\n <View style={[styles.commentButtonContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"user-plus\" type=\"font-awesome\" iconStyle={styles.commentButtonIcon} />\n </View>\n </TouchableOpacity>\n ) : (\n <TouchableOpacity style={{ marginRight: 8 }} onPress={this.onPressBlockUser.bind(this, c)}>\n <View style={[styles.commentButtonContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"user-times\" type=\"font-awesome\" iconStyle={styles.commentButtonIcon} />\n </View>\n </TouchableOpacity>\n ))}\n <Text style={[styles.commentName, { fontSize: this.getAdjustedSize(13) }]}>\n {isUserBlocked ? '[blocked user]' : c.User.displayName}\n </Text>\n </View>\n {!_.isEmpty(c.Comment) && (\n <Text style={[styles.commentText, { fontSize: this.getAdjustedSize(13) }]}>{isUserBlocked ? '[hidden]' : c.Comment}</Text>\n )}\n {!isUserBlocked && 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, isUserBlocked)}\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.renderCommentBlockConfirm()}\n {this.renderCommentUnblockConfirm()}\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 blockedUsers: state.userSettings.blockedUsers || [],\n };\n};\n\nconst commentSection = connect(mapStateToProps, { blockUser, unblockUser }, null, { forwardRef: true })(CommentSection);\nexport { commentSection as CommentSection };\n"]}
@@ -8,8 +8,6 @@ import { getSessionTokenAWS } from './session'; // seperated files to export
8
8
  import detectFaces from './js/images/detectFaces';
9
9
  import findLandmarkRange from './js/images/findLandmarkRange';
10
10
  import getScaledOffset from './js/images/getScaledOffset';
11
- import getSiteLevelFromState from './js/site/getSiteLevelFromState';
12
- import isTVEnabled from './js/site/isTVEnabled';
13
11
  const TIMESTAMP_FORMAT = 'D MMM • h:mma';
14
12
  const DATE_FORMAT = 'D MMM YYYY';
15
13
 
@@ -457,5 +455,5 @@ const allowComments = canComment => {
457
455
  return Config.env.defaultAllowComments;
458
456
  };
459
457
 
460
- export { TIMESTAMP_FORMAT, DATE_FORMAT, getUrl, getAuthTokenHeader, getShadowStyle, StatusBarHeight, getStatusBarHeight, getSiteSettingFromState, getValueOrDefault, getExtension, getFileName, isVideo, get300, getThumb300, get1400, getMimeType, getCompressed, imageExists, getPluralS, getPluralOptions, randomString, generateImageName, getSite, getImageSource, getFirstName, usersToSearchResult, searchUsers, getEnabledTabsFromState, getReactions, hasReacted, isTablet, isYoutube, getYoutubeEmbed, getValidUrl, getUserPreview, allowComments, isVideoUrl, detectFaces, findLandmarkRange, getScaledOffset, getSiteLevelFromState, isTVEnabled };
458
+ export { TIMESTAMP_FORMAT, DATE_FORMAT, getUrl, getAuthTokenHeader, getShadowStyle, StatusBarHeight, getStatusBarHeight, getSiteSettingFromState, getValueOrDefault, getExtension, getFileName, isVideo, get300, getThumb300, get1400, getMimeType, getCompressed, imageExists, getPluralS, getPluralOptions, randomString, generateImageName, getSite, getImageSource, getFirstName, usersToSearchResult, searchUsers, getEnabledTabsFromState, getReactions, hasReacted, isTablet, isYoutube, getYoutubeEmbed, getValidUrl, getUserPreview, allowComments, isVideoUrl, detectFaces, findLandmarkRange, getScaledOffset };
461
459
  //# sourceMappingURL=helper.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["helper.js"],"names":["_","Platform","StatusBar","Dimensions","Constants","Config","LINEGREY","getSessionTokenAWS","detectFaces","findLandmarkRange","getScaledOffset","getSiteLevelFromState","isTVEnabled","TIMESTAMP_FORMAT","DATE_FORMAT","getUrl","baseAction","action","query","baseAPIUrl","baseStage","env","queryPart","keys","forEach","key","index","encodeURIComponent","getAuthTokenHeader","Promise","resolve","reject","then","idToken","getShadowStyle","OS","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","backgroundColor","borderColor","elevation","StatusBarHeight","size","getStatusBarHeight","statusBarHeight","currentHeight","getSiteSettingFromState","state","defaultValue","user","siteSettings","isUndefined","getValueOrDefault","value","def","getExtension","url","fileSplit","split","length","toLowerCase","getFileName","noExtension","name","isVideo","extension","includes","isVideoUrl","urlToCheck","getValidUrl","isYoutube","isVimeo","isStockImage","indexOf","getThumb300","replace","baseUploadsUrl","urlToUse","substring","get1400","get300","getMimeType","getCompressed","imageExists","fetch","method","cache","response","status","catch","getPluralS","count","getPluralOptions","singular","plural","randomString","c","r","Math","random","v","toString","generateImageName","source","result","last","getSite","site","preferredSite","getTakeoverThumb","uri","filename","pop","getTakeoverImage","getImageSource","isThumb","getFirstName","isEmpty","usersToSearchResult","contacts","excludedUserIds","push","displayName","id","objectID","ID","userId","Id","profilePic","photoURL","unit","contact","searchUsers","term","filter","some","part","getTabSettingsFromState","tabSettings","interface","getEnabledTabsFromState","tab","isEnabled","getReactions","icon","require","hasReacted","reactions","isTablet","get","getVimeoEmbed","vimeoId","regExp","match","getYoutubeEmbed","newUrl","decodeURIComponent","trim","test","getUserPreview","uid","allowComments","canComment","defaultAllowComments"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport { Platform, StatusBar, Dimensions } from 'react-native';\nimport Constants from 'expo-constants';\nimport Config from './config';\nimport { LINEGREY } from './colours';\nimport { getSessionTokenAWS } from './session';\n\n// seperated files to export\nimport detectFaces from './js/images/detectFaces';\nimport findLandmarkRange from './js/images/findLandmarkRange';\nimport getScaledOffset from './js/images/getScaledOffset';\n\nimport getSiteLevelFromState from './js/site/getSiteLevelFromState';\nimport isTVEnabled from './js/site/isTVEnabled';\n\nconst TIMESTAMP_FORMAT = 'D MMM • h:mma';\nconst DATE_FORMAT = 'D MMM YYYY';\n\nconst getUrl = (baseAction, action, query) => {\n const { baseAPIUrl, baseStage } = Config.env;\n let queryPart = '';\n if (query) {\n _.keys(query).forEach((key, index) => {\n queryPart += `${index === 0 ? '?' : '&'}${key}=${encodeURIComponent(query[key])}`;\n });\n }\n return `${baseAPIUrl}/${baseAction}-${baseStage}/${action}${queryPart}`;\n};\n\nconst getAuthTokenHeader = () => {\n return new Promise((resolve, reject) => {\n getSessionTokenAWS().then(idToken => {\n resolve(`Bearer ${idToken}`);\n });\n });\n};\n\nconst getShadowStyle = () => {\n if (Platform.OS === 'ios') {\n return {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 1,\n },\n shadowOpacity: 0.1,\n shadowRadius: 3,\n backgroundColor: '#fff',\n };\n }\n return {\n borderColor: LINEGREY,\n backgroundColor: '#fff',\n elevation: 8,\n };\n};\n\nconst StatusBarHeight = size => {\n return getStatusBarHeight() + size;\n};\n\nconst getStatusBarHeight = () => {\n return Platform.OS === 'ios' ? Constants.statusBarHeight : StatusBar.currentHeight;\n};\n\nconst getSiteSettingFromState = (state, key, defaultValue) => {\n if (state && state.user && state.user.siteSettings && !_.isUndefined(state.user.siteSettings[key])) {\n return state.user.siteSettings[key];\n }\n return defaultValue || null;\n};\n\nconst getValueOrDefault = (value, def) => {\n return !_.isUndefined(value) ? value : def;\n};\n\nconst getExtension = url => {\n if (!url) {\n return null;\n }\n const fileSplit = url.split('.');\n return fileSplit[fileSplit.length - 1].toLowerCase();\n};\n\nconst getFileName = (url, noExtension) => {\n if (!url) {\n return null;\n }\n const fileSplit = url.split('/');\n const name = fileSplit[fileSplit.length - 1].toLowerCase();\n if (!noExtension) {\n return name;\n }\n return name.split('.')[0];\n};\n\nconst isVideo = url => {\n const extension = getExtension(url);\n return ['mov', 'mp4'].includes(extension);\n};\n\nconst isVideoUrl = url => {\n const urlToCheck = getValidUrl(url);\n if (isVideo(urlToCheck)) {\n return true;\n }\n if (isYoutube(urlToCheck)) {\n return true;\n }\n if (isVimeo(urlToCheck)) {\n return true;\n }\n return false;\n};\n\nconst isStockImage = url => {\n return url.indexOf('https://pluss60-dev-uploads.s3.ap-southeast-2.amazonaws.com/uploads/library') !== -1;\n};\n\nconst getThumb300 = url => {\n if (!url) {\n return url;\n }\n if (url.indexOf('https://plussprdstorage.blob.core.windows.net/') !== -1) {\n return url.replace('https://plussprdstorage.blob.core.windows.net/', 'https://plusscdn.azureedge.net/');\n }\n if (url.indexOf('https://plusscdn.azureedge.net/') !== -1) {\n return url\n .replace('/uploads/', '/uploads-thumb/')\n .replace('/general/', '/general300/')\n .replace('/uploads1400/', '/uploads-thumb/')\n .replace('/general1400/', '/general300/');\n }\n if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {\n const extension = getExtension(url);\n let urlToUse = url;\n if (extension !== 'jpg') {\n urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;\n }\n return urlToUse.replace('/1400/', '/thumb300/').replace('/uploads/', '/thumb300/');\n }\n return url;\n};\n\nconst get1400 = url => {\n if (!url) {\n return url;\n }\n if (url.indexOf('https://plussprdstorage.blob.core.windows.net/') !== -1) {\n return url.replace('https://plussprdstorage.blob.core.windows.net/', 'https://plusscdn.azureedge.net/');\n }\n if (url.indexOf('https://plusscdn.azureedge.net/') !== -1) {\n return url.replace('/uploads/', '/uploads1400/').replace('/general/', '/general1400/');\n }\n if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {\n const extension = getExtension(url);\n let urlToUse = url;\n if (extension !== 'jpg') {\n urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;\n }\n return urlToUse.replace('/uploads/', '/1400/');\n }\n return url;\n};\n\nconst get300 = url => {\n if (!url) {\n return url;\n }\n if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {\n const extension = getExtension(url);\n let urlToUse = url;\n if (extension !== 'jpg') {\n urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;\n }\n return urlToUse.replace('/uploads/', '/300/').replace('/1400/', '/300/');\n }\n return url;\n};\n\nconst getMimeType = url => {\n const extension = getExtension(url);\n switch (extension) {\n case 'mov':\n return 'video/quicktime';\n case 'mp4':\n return 'video/mp4';\n default:\n return 'image/jpeg';\n }\n};\n\nconst getCompressed = url => {\n if (!url || typeof url !== 'string') return '';\n return url.replace('/uploads/', '/compressed/');\n};\n\nconst imageExists = url => {\n return new Promise(resolve => {\n fetch(url, { method: 'HEAD', cache: 'no-cache' })\n .then(response => {\n resolve(response.status === 200);\n })\n .catch(() => {\n resolve(false);\n });\n });\n};\n\nconst getPluralS = count => {\n return count === 1 ? '' : 's';\n};\n\nconst getPluralOptions = (count, singular, plural) => {\n if (count === 1) {\n return singular;\n }\n return plural;\n};\n\nconst randomString = (name = '') => {\n return `xxxxxxxx4xxxyxxxxxxxxxxxxx${name}`.replace(/[xy]/g, c => {\n // eslint-disable-next-line\n var r = (Math.random() * 16) | 0,\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\nconst generateImageName = (name, source) => {\n let result = randomString(name);\n if (source) {\n result += `.${_.last(source.split('.'))}`;\n }\n return result;\n};\n\nconst getSite = site => {\n return site === 'plussSpace' || site === 'hq' ? Config.env.preferredSite : site;\n};\n\nconst getTakeoverThumb = uri => {\n const filename = uri.split('/').pop();\n switch (filename) {\n default:\n return { uri };\n }\n};\n\nconst getTakeoverImage = uri => {\n const filename = uri.split('/').pop();\n switch (filename) {\n default:\n return { uri };\n }\n};\n\nconst getImageSource = (uri, isThumb) => {\n if (uri == null) return null;\n if (isThumb) return getTakeoverThumb(uri);\n return getTakeoverImage(uri);\n};\n\nconst getFirstName = name => {\n if (_.isEmpty(name)) {\n return name;\n }\n return name.split(' ')[0];\n};\n\nconst usersToSearchResult = (contacts, excludedUserIds) => {\n let result = [];\n contacts.forEach(user => {\n result.push({\n displayName: user.displayName,\n id: user.objectID || user.id || user.ID || user.userId || user.Id,\n profilePic: user.profilePic || user.photoURL || null,\n unit: user.unit,\n });\n });\n result = _.reject(result, contact => {\n return _.includes(excludedUserIds, contact.id);\n });\n return result;\n};\n\nconst searchUsers = (source, term) => {\n if (_.isEmpty(term)) {\n return source;\n }\n return _.filter(source, user => {\n const split = user.displayName.split(' ');\n return _.some(split, part => {\n return part.toLowerCase().indexOf(term.toLowerCase()) === 0;\n });\n });\n};\n\nconst getTabSettingsFromState = state => {\n const tabSettings = (state.user && state.user.interface) || getSiteSettingFromState(state, 'TabSettings', null);\n return tabSettings;\n};\n\nconst getEnabledTabsFromState = state => {\n const tabSettings = getTabSettingsFromState(state);\n return tabSettings ? tabSettings.filter(tab => tab.isEnabled) : [];\n};\n\nconst getReactions = () => {\n return [\n {\n key: 'heart',\n icon: require('./assets/icons/reactions/heart.png'),\n },\n {\n key: 'smile',\n icon: require('./assets/icons/reactions/smile.png'),\n },\n {\n key: 'sad',\n icon: require('./assets/icons/reactions/sad.png'),\n },\n {\n key: 'party',\n icon: require('./assets/icons/reactions/party.png'),\n },\n ];\n};\n\nconst hasReacted = (reactions, userId) => {\n return _.some(reactions, r => {\n return !!r[userId];\n });\n};\n\nconst isTablet = () => {\n return Dimensions.get('screen').width > 600;\n};\n\nconst isVimeo = url => {\n if (_.isEmpty(url)) {\n return false;\n }\n if (url.indexOf('https://vimeo.com/') === 0) {\n return true;\n }\n if (url.indexOf('https://player.vimeo.com/video/') === 0) {\n return true;\n }\n};\n\nconst getVimeoEmbed = url => {\n if (_.isEmpty(url)) {\n return '';\n }\n if (url.indexOf('https://vimeo.com/') === 0) {\n const vimeoId = 'lol'; //TODO\n return `https://player.vimeo.com/video/${vimeoId}`;\n }\n return url; //TODO\n};\n\nconst isYoutube = url => {\n if (_.isUndefined(url) || _.isEmpty(url)) {\n return false;\n }\n const regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|\\?v=)([^#\\&\\?]*).*/;\n const match = url.match(regExp);\n if (match && match[2].length === 11) {\n return true;\n }\n return false;\n};\n\nconst getYoutubeEmbed = url => {\n const regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|\\?v=)([^#\\&\\?]*).*/;\n const match = url.match(regExp);\n return `https://www.youtube.com/embed/${match[2]}?autoplay=0`;\n};\n\nconst getValidUrl = (url = '') => {\n let newUrl = decodeURIComponent(url);\n newUrl = newUrl.trim().replace(/\\s/g, '');\n\n if (/^(:\\/\\/)/.test(newUrl)) {\n return `https${newUrl}`;\n }\n if (!/^(f|ht)tps?:\\/\\//i.test(newUrl)) {\n return `https://${newUrl}`;\n }\n\n return newUrl;\n};\n\nconst getUserPreview = user => {\n return {\n id: user.uid,\n displayName: user.displayName,\n profilePic: user.profilePic || null,\n };\n};\n\nconst allowComments = canComment => {\n if (canComment === false) {\n return false;\n }\n if (canComment === true) {\n return true;\n }\n return Config.env.defaultAllowComments;\n};\n\nexport {\n TIMESTAMP_FORMAT,\n DATE_FORMAT,\n getUrl,\n getAuthTokenHeader,\n getShadowStyle,\n StatusBarHeight,\n getStatusBarHeight,\n getSiteSettingFromState,\n getValueOrDefault,\n getExtension,\n getFileName,\n isVideo,\n get300,\n getThumb300,\n get1400,\n getMimeType,\n getCompressed,\n imageExists,\n getPluralS,\n getPluralOptions,\n randomString,\n generateImageName,\n getSite,\n getImageSource,\n getFirstName,\n usersToSearchResult,\n searchUsers,\n getEnabledTabsFromState,\n getReactions,\n hasReacted,\n isTablet,\n isYoutube,\n getYoutubeEmbed,\n getValidUrl,\n getUserPreview,\n allowComments,\n isVideoUrl,\n detectFaces,\n findLandmarkRange,\n getScaledOffset,\n getSiteLevelFromState,\n isTVEnabled,\n};\n"]}
1
+ {"version":3,"sources":["helper.js"],"names":["_","Platform","StatusBar","Dimensions","Constants","Config","LINEGREY","getSessionTokenAWS","detectFaces","findLandmarkRange","getScaledOffset","TIMESTAMP_FORMAT","DATE_FORMAT","getUrl","baseAction","action","query","baseAPIUrl","baseStage","env","queryPart","keys","forEach","key","index","encodeURIComponent","getAuthTokenHeader","Promise","resolve","reject","then","idToken","getShadowStyle","OS","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","backgroundColor","borderColor","elevation","StatusBarHeight","size","getStatusBarHeight","statusBarHeight","currentHeight","getSiteSettingFromState","state","defaultValue","user","siteSettings","isUndefined","getValueOrDefault","value","def","getExtension","url","fileSplit","split","length","toLowerCase","getFileName","noExtension","name","isVideo","extension","includes","isVideoUrl","urlToCheck","getValidUrl","isYoutube","isVimeo","isStockImage","indexOf","getThumb300","replace","baseUploadsUrl","urlToUse","substring","get1400","get300","getMimeType","getCompressed","imageExists","fetch","method","cache","response","status","catch","getPluralS","count","getPluralOptions","singular","plural","randomString","c","r","Math","random","v","toString","generateImageName","source","result","last","getSite","site","preferredSite","getTakeoverThumb","uri","filename","pop","getTakeoverImage","getImageSource","isThumb","getFirstName","isEmpty","usersToSearchResult","contacts","excludedUserIds","push","displayName","id","objectID","ID","userId","Id","profilePic","photoURL","unit","contact","searchUsers","term","filter","some","part","getTabSettingsFromState","tabSettings","interface","getEnabledTabsFromState","tab","isEnabled","getReactions","icon","require","hasReacted","reactions","isTablet","get","getVimeoEmbed","vimeoId","regExp","match","getYoutubeEmbed","newUrl","decodeURIComponent","trim","test","getUserPreview","uid","allowComments","canComment","defaultAllowComments"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport { Platform, StatusBar, Dimensions } from 'react-native';\nimport Constants from 'expo-constants';\nimport Config from './config';\nimport { LINEGREY } from './colours';\nimport { getSessionTokenAWS } from './session';\n\n// seperated files to export\nimport detectFaces from './js/images/detectFaces';\nimport findLandmarkRange from './js/images/findLandmarkRange';\nimport getScaledOffset from './js/images/getScaledOffset';\n\nconst TIMESTAMP_FORMAT = 'D MMM • h:mma';\nconst DATE_FORMAT = 'D MMM YYYY';\n\nconst getUrl = (baseAction, action, query) => {\n const { baseAPIUrl, baseStage } = Config.env;\n let queryPart = '';\n if (query) {\n _.keys(query).forEach((key, index) => {\n queryPart += `${index === 0 ? '?' : '&'}${key}=${encodeURIComponent(query[key])}`;\n });\n }\n return `${baseAPIUrl}/${baseAction}-${baseStage}/${action}${queryPart}`;\n};\n\nconst getAuthTokenHeader = () => {\n return new Promise((resolve, reject) => {\n getSessionTokenAWS().then(idToken => {\n resolve(`Bearer ${idToken}`);\n });\n });\n};\n\nconst getShadowStyle = () => {\n if (Platform.OS === 'ios') {\n return {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 1,\n },\n shadowOpacity: 0.1,\n shadowRadius: 3,\n backgroundColor: '#fff',\n };\n }\n return {\n borderColor: LINEGREY,\n backgroundColor: '#fff',\n elevation: 8,\n };\n};\n\nconst StatusBarHeight = size => {\n return getStatusBarHeight() + size;\n};\n\nconst getStatusBarHeight = () => {\n return Platform.OS === 'ios' ? Constants.statusBarHeight : StatusBar.currentHeight;\n};\n\nconst getSiteSettingFromState = (state, key, defaultValue) => {\n if (state && state.user && state.user.siteSettings && !_.isUndefined(state.user.siteSettings[key])) {\n return state.user.siteSettings[key];\n }\n return defaultValue || null;\n};\n\nconst getValueOrDefault = (value, def) => {\n return !_.isUndefined(value) ? value : def;\n};\n\nconst getExtension = url => {\n if (!url) {\n return null;\n }\n const fileSplit = url.split('.');\n return fileSplit[fileSplit.length - 1].toLowerCase();\n};\n\nconst getFileName = (url, noExtension) => {\n if (!url) {\n return null;\n }\n const fileSplit = url.split('/');\n const name = fileSplit[fileSplit.length - 1].toLowerCase();\n if (!noExtension) {\n return name;\n }\n return name.split('.')[0];\n};\n\nconst isVideo = url => {\n const extension = getExtension(url);\n return ['mov', 'mp4'].includes(extension);\n};\n\nconst isVideoUrl = url => {\n const urlToCheck = getValidUrl(url);\n if (isVideo(urlToCheck)) {\n return true;\n }\n if (isYoutube(urlToCheck)) {\n return true;\n }\n if (isVimeo(urlToCheck)) {\n return true;\n }\n return false;\n};\n\nconst isStockImage = url => {\n return url.indexOf('https://pluss60-dev-uploads.s3.ap-southeast-2.amazonaws.com/uploads/library') !== -1;\n};\n\nconst getThumb300 = url => {\n if (!url) {\n return url;\n }\n if (url.indexOf('https://plussprdstorage.blob.core.windows.net/') !== -1) {\n return url.replace('https://plussprdstorage.blob.core.windows.net/', 'https://plusscdn.azureedge.net/');\n }\n if (url.indexOf('https://plusscdn.azureedge.net/') !== -1) {\n return url\n .replace('/uploads/', '/uploads-thumb/')\n .replace('/general/', '/general300/')\n .replace('/uploads1400/', '/uploads-thumb/')\n .replace('/general1400/', '/general300/');\n }\n if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {\n const extension = getExtension(url);\n let urlToUse = url;\n if (extension !== 'jpg') {\n urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;\n }\n return urlToUse.replace('/1400/', '/thumb300/').replace('/uploads/', '/thumb300/');\n }\n return url;\n};\n\nconst get1400 = url => {\n if (!url) {\n return url;\n }\n if (url.indexOf('https://plussprdstorage.blob.core.windows.net/') !== -1) {\n return url.replace('https://plussprdstorage.blob.core.windows.net/', 'https://plusscdn.azureedge.net/');\n }\n if (url.indexOf('https://plusscdn.azureedge.net/') !== -1) {\n return url.replace('/uploads/', '/uploads1400/').replace('/general/', '/general1400/');\n }\n if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {\n const extension = getExtension(url);\n let urlToUse = url;\n if (extension !== 'jpg') {\n urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;\n }\n return urlToUse.replace('/uploads/', '/1400/');\n }\n return url;\n};\n\nconst get300 = url => {\n if (!url) {\n return url;\n }\n if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {\n const extension = getExtension(url);\n let urlToUse = url;\n if (extension !== 'jpg') {\n urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;\n }\n return urlToUse.replace('/uploads/', '/300/').replace('/1400/', '/300/');\n }\n return url;\n};\n\nconst getMimeType = url => {\n const extension = getExtension(url);\n switch (extension) {\n case 'mov':\n return 'video/quicktime';\n case 'mp4':\n return 'video/mp4';\n default:\n return 'image/jpeg';\n }\n};\n\nconst getCompressed = url => {\n if (!url || typeof url !== 'string') return '';\n return url.replace('/uploads/', '/compressed/');\n};\n\nconst imageExists = url => {\n return new Promise(resolve => {\n fetch(url, { method: 'HEAD', cache: 'no-cache' })\n .then(response => {\n resolve(response.status === 200);\n })\n .catch(() => {\n resolve(false);\n });\n });\n};\n\nconst getPluralS = count => {\n return count === 1 ? '' : 's';\n};\n\nconst getPluralOptions = (count, singular, plural) => {\n if (count === 1) {\n return singular;\n }\n return plural;\n};\n\nconst randomString = (name = '') => {\n return `xxxxxxxx4xxxyxxxxxxxxxxxxx${name}`.replace(/[xy]/g, c => {\n // eslint-disable-next-line\n var r = (Math.random() * 16) | 0,\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\nconst generateImageName = (name, source) => {\n let result = randomString(name);\n if (source) {\n result += `.${_.last(source.split('.'))}`;\n }\n return result;\n};\n\nconst getSite = site => {\n return site === 'plussSpace' || site === 'hq' ? Config.env.preferredSite : site;\n};\n\nconst getTakeoverThumb = uri => {\n const filename = uri.split('/').pop();\n switch (filename) {\n default:\n return { uri };\n }\n};\n\nconst getTakeoverImage = uri => {\n const filename = uri.split('/').pop();\n switch (filename) {\n default:\n return { uri };\n }\n};\n\nconst getImageSource = (uri, isThumb) => {\n if (uri == null) return null;\n if (isThumb) return getTakeoverThumb(uri);\n return getTakeoverImage(uri);\n};\n\nconst getFirstName = name => {\n if (_.isEmpty(name)) {\n return name;\n }\n return name.split(' ')[0];\n};\n\nconst usersToSearchResult = (contacts, excludedUserIds) => {\n let result = [];\n contacts.forEach(user => {\n result.push({\n displayName: user.displayName,\n id: user.objectID || user.id || user.ID || user.userId || user.Id,\n profilePic: user.profilePic || user.photoURL || null,\n unit: user.unit,\n });\n });\n result = _.reject(result, contact => {\n return _.includes(excludedUserIds, contact.id);\n });\n return result;\n};\n\nconst searchUsers = (source, term) => {\n if (_.isEmpty(term)) {\n return source;\n }\n return _.filter(source, user => {\n const split = user.displayName.split(' ');\n return _.some(split, part => {\n return part.toLowerCase().indexOf(term.toLowerCase()) === 0;\n });\n });\n};\n\nconst getTabSettingsFromState = state => {\n const tabSettings = (state.user && state.user.interface) || getSiteSettingFromState(state, 'TabSettings', null);\n return tabSettings;\n};\n\nconst getEnabledTabsFromState = state => {\n const tabSettings = getTabSettingsFromState(state);\n return tabSettings ? tabSettings.filter(tab => tab.isEnabled) : [];\n};\n\nconst getReactions = () => {\n return [\n {\n key: 'heart',\n icon: require('./assets/icons/reactions/heart.png'),\n },\n {\n key: 'smile',\n icon: require('./assets/icons/reactions/smile.png'),\n },\n {\n key: 'sad',\n icon: require('./assets/icons/reactions/sad.png'),\n },\n {\n key: 'party',\n icon: require('./assets/icons/reactions/party.png'),\n },\n ];\n};\n\nconst hasReacted = (reactions, userId) => {\n return _.some(reactions, r => {\n return !!r[userId];\n });\n};\n\nconst isTablet = () => {\n return Dimensions.get('screen').width > 600;\n};\n\nconst isVimeo = url => {\n if (_.isEmpty(url)) {\n return false;\n }\n if (url.indexOf('https://vimeo.com/') === 0) {\n return true;\n }\n if (url.indexOf('https://player.vimeo.com/video/') === 0) {\n return true;\n }\n};\n\nconst getVimeoEmbed = url => {\n if (_.isEmpty(url)) {\n return '';\n }\n if (url.indexOf('https://vimeo.com/') === 0) {\n const vimeoId = 'lol'; //TODO\n return `https://player.vimeo.com/video/${vimeoId}`;\n }\n return url; //TODO\n};\n\nconst isYoutube = url => {\n if (_.isUndefined(url) || _.isEmpty(url)) {\n return false;\n }\n const regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|\\?v=)([^#\\&\\?]*).*/;\n const match = url.match(regExp);\n if (match && match[2].length === 11) {\n return true;\n }\n return false;\n};\n\nconst getYoutubeEmbed = url => {\n const regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|\\?v=)([^#\\&\\?]*).*/;\n const match = url.match(regExp);\n return `https://www.youtube.com/embed/${match[2]}?autoplay=0`;\n};\n\nconst getValidUrl = (url = '') => {\n let newUrl = decodeURIComponent(url);\n newUrl = newUrl.trim().replace(/\\s/g, '');\n\n if (/^(:\\/\\/)/.test(newUrl)) {\n return `https${newUrl}`;\n }\n if (!/^(f|ht)tps?:\\/\\//i.test(newUrl)) {\n return `https://${newUrl}`;\n }\n\n return newUrl;\n};\n\nconst getUserPreview = user => {\n return {\n id: user.uid,\n displayName: user.displayName,\n profilePic: user.profilePic || null,\n };\n};\n\nconst allowComments = canComment => {\n if (canComment === false) {\n return false;\n }\n if (canComment === true) {\n return true;\n }\n return Config.env.defaultAllowComments;\n};\n\nexport {\n TIMESTAMP_FORMAT,\n DATE_FORMAT,\n getUrl,\n getAuthTokenHeader,\n getShadowStyle,\n StatusBarHeight,\n getStatusBarHeight,\n getSiteSettingFromState,\n getValueOrDefault,\n getExtension,\n getFileName,\n isVideo,\n get300,\n getThumb300,\n get1400,\n getMimeType,\n getCompressed,\n imageExists,\n getPluralS,\n getPluralOptions,\n randomString,\n generateImageName,\n getSite,\n getImageSource,\n getFirstName,\n usersToSearchResult,\n searchUsers,\n getEnabledTabsFromState,\n getReactions,\n hasReacted,\n isTablet,\n isYoutube,\n getYoutubeEmbed,\n getValidUrl,\n getUserPreview,\n allowComments,\n isVideoUrl,\n detectFaces,\n findLandmarkRange,\n getScaledOffset,\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-core-app",
3
- "version": "1.7.3-beta.0",
3
+ "version": "1.7.4-beta.0",
4
4
  "description": "Core extension package for Pluss Communities platform",
5
5
  "main": "dist/module/index.js",
6
6
  "module": "dist/module/index.js",
@@ -130,7 +130,7 @@ class CommentSection extends Component {
130
130
  }
131
131
 
132
132
  onGoToAdd() {
133
- this.props.commentReply.focusInput();
133
+ this.props.commentReply?.current?.focusInput();
134
134
  }
135
135
 
136
136
  onOpenThread = comment => {
package/src/helper.js CHANGED
@@ -10,9 +10,6 @@ import detectFaces from './js/images/detectFaces';
10
10
  import findLandmarkRange from './js/images/findLandmarkRange';
11
11
  import getScaledOffset from './js/images/getScaledOffset';
12
12
 
13
- import getSiteLevelFromState from './js/site/getSiteLevelFromState';
14
- import isTVEnabled from './js/site/isTVEnabled';
15
-
16
13
  const TIMESTAMP_FORMAT = 'D MMM • h:mma';
17
14
  const DATE_FORMAT = 'D MMM YYYY';
18
15
 
@@ -451,6 +448,4 @@ export {
451
448
  detectFaces,
452
449
  findLandmarkRange,
453
450
  getScaledOffset,
454
- getSiteLevelFromState,
455
- isTVEnabled,
456
451
  };
@@ -1,35 +0,0 @@
1
- const getSiteLevelFromState = state => {
2
- let siteType = 'legacy';
3
-
4
- if (state && state.user && state.user.siteInfo && state.user.siteInfo.Type) {
5
- siteType = state.user.siteInfo.Type;
6
- }
7
-
8
- const siteConfig = {
9
- type: siteType,
10
- hasTV: true,
11
- hasKiosk: false,
12
- hasPayments: true,
13
- hasPersonalNotes: true,
14
- hasEmergencyContacts: true,
15
- hasPersonalDocuments: true
16
- };
17
-
18
- switch (siteType) {
19
- case 'free':
20
- siteConfig.hasTV = false;
21
- siteConfig.hasPayments = false;
22
- siteConfig.hasPersonalNotes = false;
23
- siteConfig.hasEmergencyContacts = false;
24
- siteConfig.hasPersonalDocuments = false;
25
- break;
26
-
27
- default:
28
- break;
29
- }
30
-
31
- return siteConfig;
32
- };
33
-
34
- export default getSiteLevelFromState;
35
- //# sourceMappingURL=getSiteLevelFromState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["getSiteLevelFromState.js"],"names":["getSiteLevelFromState","state","siteType","user","siteInfo","Type","siteConfig","type","hasTV","hasKiosk","hasPayments","hasPersonalNotes","hasEmergencyContacts","hasPersonalDocuments"],"mappings":"AAAA,MAAMA,qBAAqB,GAAGC,KAAK,IAAI;AACrC,MAAIC,QAAQ,GAAG,QAAf;;AACA,MAAID,KAAK,IAAIA,KAAK,CAACE,IAAf,IAAuBF,KAAK,CAACE,IAAN,CAAWC,QAAlC,IAA8CH,KAAK,CAACE,IAAN,CAAWC,QAAX,CAAoBC,IAAtE,EAA4E;AAC1EH,IAAAA,QAAQ,GAAGD,KAAK,CAACE,IAAN,CAAWC,QAAX,CAAoBC,IAA/B;AACD;;AACD,QAAMC,UAAU,GAAG;AACjBC,IAAAA,IAAI,EAAEL,QADW;AAEjBM,IAAAA,KAAK,EAAE,IAFU;AAGjBC,IAAAA,QAAQ,EAAE,KAHO;AAIjBC,IAAAA,WAAW,EAAE,IAJI;AAKjBC,IAAAA,gBAAgB,EAAE,IALD;AAMjBC,IAAAA,oBAAoB,EAAE,IANL;AAOjBC,IAAAA,oBAAoB,EAAE;AAPL,GAAnB;;AAUA,UAAQX,QAAR;AACE,SAAK,MAAL;AACEI,MAAAA,UAAU,CAACE,KAAX,GAAmB,KAAnB;AACAF,MAAAA,UAAU,CAACI,WAAX,GAAyB,KAAzB;AACAJ,MAAAA,UAAU,CAACK,gBAAX,GAA8B,KAA9B;AACAL,MAAAA,UAAU,CAACM,oBAAX,GAAkC,KAAlC;AACAN,MAAAA,UAAU,CAACO,oBAAX,GAAkC,KAAlC;AACA;;AACF;AACE;AATJ;;AAWA,SAAOP,UAAP;AACD,CA3BD;;AA6BA,eAAeN,qBAAf","sourcesContent":["const getSiteLevelFromState = state => {\n let siteType = 'legacy';\n if (state && state.user && state.user.siteInfo && state.user.siteInfo.Type) {\n siteType = state.user.siteInfo.Type;\n }\n const siteConfig = {\n type: siteType,\n hasTV: true,\n hasKiosk: false,\n hasPayments: true,\n hasPersonalNotes: true,\n hasEmergencyContacts: true,\n hasPersonalDocuments: true,\n };\n\n switch (siteType) {\n case 'free':\n siteConfig.hasTV = false;\n siteConfig.hasPayments = false;\n siteConfig.hasPersonalNotes = false;\n siteConfig.hasEmergencyContacts = false;\n siteConfig.hasPersonalDocuments = false;\n break;\n default:\n break;\n }\n return siteConfig;\n};\n\nexport default getSiteLevelFromState;\n"]}
@@ -1,12 +0,0 @@
1
- import _ from 'lodash';
2
-
3
- const isTVEnabled = (interfaces, feature) => {
4
- return _.some(interfaces, t => {
5
- return t.Type === 'TV' && (!feature || _.some(t.Settings.widgets, f => {
6
- return f.key === feature;
7
- }));
8
- });
9
- };
10
-
11
- export default isTVEnabled;
12
- //# sourceMappingURL=isTVEnabled.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["isTVEnabled.js"],"names":["_","isTVEnabled","interfaces","feature","some","t","Type","Settings","widgets","f","key"],"mappings":"AAAA,OAAOA,CAAP,MAAc,QAAd;;AAEA,MAAMC,WAAW,GAAG,CAACC,UAAD,EAAaC,OAAb,KAAyB;AAC3C,SAAOH,CAAC,CAACI,IAAF,CAAOF,UAAP,EAAmBG,CAAC,IAAI;AAC7B,WACEA,CAAC,CAACC,IAAF,KAAW,IAAX,KACC,CAACH,OAAD,IACCH,CAAC,CAACI,IAAF,CAAOC,CAAC,CAACE,QAAF,CAAWC,OAAlB,EAA2BC,CAAC,IAAI;AAC9B,aAAOA,CAAC,CAACC,GAAF,KAAUP,OAAjB;AACD,KAFD,CAFF,CADF;AAOD,GARM,CAAP;AASD,CAVD;;AAYA,eAAeF,WAAf","sourcesContent":["import _ from 'lodash';\n\nconst isTVEnabled = (interfaces, feature) => {\n return _.some(interfaces, t => {\n return (\n t.Type === 'TV' &&\n (!feature ||\n _.some(t.Settings.widgets, f => {\n return f.key === feature;\n }))\n );\n });\n};\n\nexport default isTVEnabled;\n"]}
@@ -1,30 +0,0 @@
1
- const getSiteLevelFromState = state => {
2
- let siteType = 'legacy';
3
- if (state && state.user && state.user.siteInfo && state.user.siteInfo.Type) {
4
- siteType = state.user.siteInfo.Type;
5
- }
6
- const siteConfig = {
7
- type: siteType,
8
- hasTV: true,
9
- hasKiosk: false,
10
- hasPayments: true,
11
- hasPersonalNotes: true,
12
- hasEmergencyContacts: true,
13
- hasPersonalDocuments: true,
14
- };
15
-
16
- switch (siteType) {
17
- case 'free':
18
- siteConfig.hasTV = false;
19
- siteConfig.hasPayments = false;
20
- siteConfig.hasPersonalNotes = false;
21
- siteConfig.hasEmergencyContacts = false;
22
- siteConfig.hasPersonalDocuments = false;
23
- break;
24
- default:
25
- break;
26
- }
27
- return siteConfig;
28
- };
29
-
30
- export default getSiteLevelFromState;
@@ -1,15 +0,0 @@
1
- import _ from 'lodash';
2
-
3
- const isTVEnabled = (interfaces, feature) => {
4
- return _.some(interfaces, t => {
5
- return (
6
- t.Type === 'TV' &&
7
- (!feature ||
8
- _.some(t.Settings.widgets, f => {
9
- return f.key === feature;
10
- }))
11
- );
12
- });
13
- };
14
-
15
- export default isTVEnabled;