1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2753,3897],{22753:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>m});var r=a(95155),s=a(63270),l=a.n(s),i=a(12115),n=a(44797),o=a(3361),u=a(63897),d=a(81331),c=a(49498);let m=({tableRowsDisplayed:e,messageOption:t,messageModalId:a,selectedIds:s})=>{let{shortPhrase:m,venueId:h,officialReviewName:p,officialMetaReviewName:f,submissionName:b,emailReplyTo:w,messageSubmissionReviewersInvitationId:v,messageSubmissionAreaChairsInvitationId:g,messageSubmissionSecondaryAreaChairsInvitationId:y,reviewerName:C="Reviewers",areaChairName:x="Area Chairs",secondaryAreaChairName:j,seniorAreaChairName:A="Senior_Area_Chairs"}=(0,i.useContext)(d.A),[N,S]=(0,i.useState)(1),[k,_]=(0,i.useState)(null),[L,F]=(0,i.useState)(`${m} Reminder`),[I,M]=(0,i.useState)(null),[E,R]=(0,i.useState)(!1),[Y,z]=(0,i.useState)([]),[B,D]=(0,i.useState)([]),P=l()(B,e=>e.preferredId).reduce((e,t)=>e+t.count,0),G=l()(B,e=>e.preferredId),T=async()=>{let r,l;if(1===N)return void S(2);switch(R(!0),t.value){case"allAreaChairs":r=x,l=g;break;case"allSecondaryAreaChairs":r=x,l=y;break;case"allAuthors":r="Authors",l=`${h}/-/Edit`;break;case"allSACs":r=A,l=`${h}/-/Edit`;break;default:r=C,l=v}try{let i=e.map(e=>({id:e.note.id,number:e.note.number,forum:e.note.forum,messageSignature:e.messageSignature})),n=Math.ceil(s.length/1e3),u=Array.from({length:n},(e,t)=>s.slice(1e3*t,(t+1)*1e3)).reduce((e,a)=>e.then(()=>{let e=a.map(e=>{let a=i.find(t=>t.id===e),s=Y.get(a?.number);return s?.length?o.A.post("/messages",{invitation:l?l.replace("{number}",a.number):`${h}/-/Edit`,signature:a.messageSignature??h,groups:s,subject:L,message:(e=>{if("allAuthors"===t.value||"allSACs"===t.value)return I.replaceAll(`{{${b.toLowerCase()}_number}}`,e.number);if("allAreaChairs"===t.value||"allSecondaryAreaChairs"===t.value){let t=`https://openreview.net/forum?id=${e.forum}¬eId=${e.id}&invitationId=${h}/${b}${e.number}/-/${f}`;return I.replaceAll("{{submit_review_link}}",t)}let a=`https://openreview.net/forum?id=${e.forum}¬eId=${e.id}&invitationId=${h}/${b}${e.number}/-/${p}`;return I.replaceAll("{{submit_review_link}}",a)})(a),parentGroup:`${h}/${b}${a.number}/${r}`,replyTo:w}):Promise.resolve()});return Promise.all(e)}),Promise.resolve());await u,$(`#${a}`).modal("hide"),promptMessage(`Successfully sent ${P} emails`)}catch(e){_(e.message)}R(!1)};return(0,i.useEffect)(()=>{if(!t)return;M("Your message...");let a=(a=>{if(!a.length)return[];let r=e.filter(e=>a.includes(e.note.id));switch(t.value){case"allReviewers":return r.flatMap(e=>e.reviewers);case"allAreaChairs":return r.flatMap(e=>e.metaReviewData.areaChairs);case"allSecondaryAreaChairs":return r.flatMap(e=>e.metaReviewData.secondaryAreaChairs);case"withReviews":return r.flatMap(e=>e.reviewers).filter(e=>e.hasReview);case"missingReviews":return r.flatMap(e=>e.reviewers).filter(e=>!e.hasReview);case"allAuthors":return r.flatMap(e=>e.authors??[]);case"allSACs":return r.flatMap(e=>e.metaReviewData.seniorAreaChairs??[]);default:return[]}})(s),r={},l=new Map;a.forEach(e=>{let{noteNumber:t}=e;l.has(t)?l.get(t).push(e.anonymizedGroup):l.set(t,[e.anonymizedGroup]),e.preferredId in r?r[e.preferredId].count+=1:r[e.preferredId]={...e,count:1}}),z(l),D(Object.values(r))},[t]),(0,r.jsxs)(u.A,{id:a,title:t?.label,primaryButtonText:1===N?"Next":"Confirm & Send Messages",onPrimaryButtonClick:T,primaryButtonDisabled:!P||E,onClose:()=>{R(!1),S(1),_(null)},options:{extraClasses:"message-reviewers-modal",useSpinnerButton:!0},isLoading:E,children:[k&&(0,r.jsx)("div",{className:"alert alert-danger",children:k}),1===N?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{children:(()=>{switch(t?.value){case"allAuthors":return`You may customize the message that will be sent to authors. You can also use {{fullname}} to replace the recipient full name and {{${b.toLowerCase()}_number}} to replace the ${b.toLowerCase()} number. If your message is not specific to a ${b.toLowerCase()}, please email from the author group.`;case"allSACs":return`You may customize the message that will be sent to ${(0,c.prettyField)(A)}. You can also use {{fullname}} to replace the recipient full name and {{${b.toLowerCase()}_number}} to replace the ${b.toLowerCase()} number. If your message is not specific to a ${b.toLowerCase()}, please email from the ${(0,c.prettyField)(A)} group.`;case"allAreaChairs":return`You may customize the message that will be sent to the ${(0,c.prettyField)(x).toLowerCase()}. In the email body, the text {{submit_review_link}} will be replaced with a hyperlink to the form where the ${(0,c.prettyField)(x).toLowerCase()} can fill out his or her ${(0,c.prettyField)(f).toLowerCase()}. You can also use {{fullname}} to personalize the recipient full name.`;case"allSecondaryAreaChairs":return`You may customize the message that will be sent to the ${(0,c.prettyField)(j)?.toLowerCase()}. In the email body, the text {{submit_review_link}} will be replaced with a hyperlink to the form where the ${(0,c.prettyField)(j)?.toLowerCase()} can fill out his or her ${(0,c.prettyField)(f).toLowerCase()}. You can also use {{fullname}} to personalize the recipient full name.`;default:return`You may customize the message that will be sent to the ${(0,c.prettyField)(C).toLowerCase()}. In the email body, the text {{submit_review_link}} will be replaced with a hyperlink to the form where the ${(0,c.prettyField)(C).toLowerCase()} can fill out his or her ${(0,c.prettyField)(p).toLowerCase()}. You can also use {{fullname}} to personalize the recipient full name.`}})()}),(0,r.jsxs)("div",{className:"form-group",children:[(0,r.jsx)("label",{htmlFor:"subject",children:"Email Subject"}),(0,r.jsx)("input",{type:"text",name:"subject",className:"form-control",value:L,required:!0,onChange:e=>F(e.target.value)}),(0,r.jsx)("label",{htmlFor:"message",children:"Email Body"}),(0,r.jsx)("textarea",{name:"message",className:"form-control message-body",rows:"6",value:I??"",required:!0,onChange:e=>M(e.target.value)})]})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("p",{children:["A total of ",(0,r.jsx)("span",{className:"num-reviewers",children:P})," reminder emails will be sent to the following users:"]}),(0,r.jsx)("div",{className:"well reviewer-list",children:(0,r.jsx)(n.A,{data:G,itemHeight:18,height:Math.min(18*G.length,580),itemKey:"preferredId",children:e=>(0,r.jsxs)("li",{children:[" ",`${e.preferredName} ${e.count>1?` \xd7 ${e.count}`:""}`]})})})]})]})}},63270:(e,t,a)=>{var r=a(33011),s=a(21899);e.exports=function(e,t){return e&&e.length?s(e,r(t,2)):[]}},63897:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(95155),s=a(12115),l=a(83895);function i({id:e,title:t,children:a,primaryButtonText:i="Submit",cancelButtonText:n="Cancel",primaryButtonDisabled:o=!1,onPrimaryButtonClick:u,onClose:d,onOpen:c,isLoading:m,options:h={}}){let p=(0,s.useRef)(null);return(0,s.useEffect)(()=>($(p.current).on("hidden.bs.modal",()=>{"function"==typeof d&&d()}),$(p.current).on("show.bs.modal",e=>{clearMessage(),"function"==typeof c&&c(e.relatedTarget)}),()=>{$(p.current).off("hidden.bs.modal,show.bs.modal")}),[p]),(0,r.jsx)("div",{id:e,className:"modal fade",tabIndex:"-1",role:"dialog",ref:p,children:(0,r.jsx)("div",{className:`modal-dialog ${h.extraClasse
1s||""}`,children:(0,r.jsxs)("div",{className:"modal-content",children:[t&&(0,r.jsxs)("div",{className:"modal-header",children:[(0,r.jsx)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":"Close",children:(0,r.jsx)("span",{"aria-hidden":"true",children:"\xd7"})}),(0,r.jsx)("h3",{className:"modal-title",children:t})]}),(0,r.jsx)("div",{className:"modal-body",children:a}),!h.hideFooter&&(0,r.jsxs)("div",{className:"modal-footer",children:[(0,r.jsx)("button",{type:"button",className:"btn btn-default","data-dismiss":"modal",children:n}),i&&(h.useSpinnerButton?(0,r.jsx)(l.A,{type:"primary",onClick:u,disabled:o,loading:m,children:i}):(0,r.jsx)("button",{type:"button",className:"btn btn-primary",onClick:u,disabled:o,children:i}))]})]})})})}},83895:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var r=a(95155);function s({type:e,onClick:t,disabled:a,loading:s,className:l,children:i,size:n="sm"}){return(0,r.jsxs)("button",{type:"button",className:`btn btn-${n} btn-${e}${l?` ${l}`:""}`,onClick:t,disabled:a,children:[i," ",s&&(0,r.jsxs)("div",{className:"spinner-small",children:[(0,r.jsx)("div",{className:"rect1"}),(0,r.jsx)("div",{className:"rect2"}),(0,r.jsx)("div",{className:"rect3"}),(0,r.jsx)("div",{className:"rect4"})]})]})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.