PageSourceSearch

https://app.magicapp.org/build/guidelineEditor-Cdr7QOTZ.js

js magicapp.org collected 2026-10-01 11:40:36 UTC 340,961 bytes, 290 lines download raw bytes

1import{i as e,m as t,e as i,o as s,g as n,S as o,B as a,t as r,C as l,F as c,I as d,b as h,A as u,s as p,n as g,r as m,d as v,T as b,p as f,q as y,u as C,L as _,v as I,D as w,w as S,x as E,y as T,z as k,P as L,E as N,R as $,h as O,G as A,H as P,c as D,J as B,K as M,f as x,O as F,Q as R,U,V as q,W as j,X as V,Y as G,Z as H,_ as W,$ as z,a0 as K,a1 as Y,a2 as Q,a3 as J,a4 as X,a5 as Z,a6 as ee,a7 as te,a8 as ie,a9 as se,aa as ne,ab as oe,ac as ae,ad as re,ae as le}from"./main-D5aZgHqq.js";import{C as ce}from"./confirmDialog-BvoCidzm.js";import{i as de,e as he,l as ue,g as pe}from"./init.js";import{L as ge,F as me,W as ve,G as be,P as fe,d as ye,f as Ce}from"./publishingLog-QrgpeA4R.js";import{M as _e,a as Ie,D as we,A as Se,m as Ee}from"./aboutDialog-BYeZmEcY.js";import{S as Te}from"./staticStores-DzJkpfRP.js";import{F as ke,A as Le,E as Ne,L as $e,b as Oe}from"./formValidation-DEcm_xV1.js";import{a as Ae,M as Pe,G as De,O as Be,S as Me,L as xe}from"./orgMemberEmail-ioYXR7lQ.js";import{e as Fe,i as Re,t as Ue,U as qe,E as je,a as Ve,n as Ge}from"./uploadFileForm-P7gRHCbi.js";import{C as He}from"./comboBox-_UFsAiv6.js";import{C as We}from"./clipboard-_ZabB5Hl.js";import{S as ze,a as Ke}from"./subscribingDialog-y_ZC2Lar.js";let Ye;const Qe={reference:{yes:de.general.ok,title:de.errors.oops,message:de.errors.ref.noLongerExists,mode:"ALERT"},recommendation:{yes:de.general.ok,title:de.errors.oops,message:de.errors.rec.noLongerExists,mode:"ALERT"},pico:{yes:de.general.ok,title:de.errors.oops,message:de.errors.pico.noLongerExists,mode:"ALERT"},outcome:{yes:de.general.ok,title:de.errors.oops,message:de.errors.pico.outcomes.noLongerExists,mode:"ALERT"}};function Je(e,i=window){console.debug("scroll: ",e);const s=t(e);if(s){Ye&&Ye.pause();const e=s.getBoundingClientRect(),t=(i===window?window.scrollY||document.documentElement.scrollTop:i.scrollTop)+e.top-200;i.scrollTo({top:t,behavior:"smooth"}),Ye&&Ye.resume()}else console.warn("no id to scroll to",e)}class Xe extends a{constructor(e){super(...arguments),this.i18n=de,this.templateString='<div class="invite">\n    <form data-magic-id="inviteMember">\n\x3c!--\n        <fieldset class="halfWidth">\n            <label>First Name</label>\n            <input type="text" name="firstname">\n        </fieldset>\n        <fieldset class="halfWidth">\n            <label>Last Name</label>\n            <input type="text" name="lastname">\n        </fieldset>\n--\x3e\n        <fieldset class="halfWidth">\n            <label>Email</label>\n            <input type="email" name="email">\n        </fieldset>\n        <fieldset class="halfWidth">\n            <label>Guideline Permission</label>\n            <select name="permission">\n                <option value="1">${i18n.general.viewer}</option>\n                <option value="2">${i18n.general.account.role.reviewer}</option>\n                <option value="3">${i18n.general.account.role.author}</option>\n                <option value="31">${i18n.general.account.role.admin}</option>\n            </select>\n        </fieldset>\n\x3c!--\n        <fieldset class="lessBotMargin">\n            <label><input type="checkbox" name="orgMembership">Include Org Membership</label>\n        </fieldset>\n--\x3e\n    </form>\n    <div class="inviteButtonWrap">\n        <button data-magic-id="removeBtn" class="inviteRemoveButton">${i18n.actions.remove}</button>\n    </div>\n</div>',this.removable=!1}postCreate(){super.postCreate(),this.own(s(this.inviteMember,"change",(()=>{this._emit("change")}))),this.removable?this.own(s(this.removeBtn,"click",(()=>{this._emit("remove")}))):this.removeBtn.remove()}isValid(){return this.inviteMember.email&&this.inviteMember.email.checkValidity()}getMember(){return Object.fromEntries(new FormData(this.inviteMember))}}class Ze extends a{dialog=null;formButtonsArgs={};guidelineId=0;surveyId=0;resend=null;_memberList=[];constructor(e){super(...arguments),this.i18n=de,this.templateString='<div class="invite">\n    <p class="inviteIntro">\n        <span data-magic-id="headGuideline">${i18n.actions.inviteUsersInfo}</span>
1\n        <span class="hideMe" data-magic-id="headSurvey">${i18n.actions.inviteUsersInfoPoll}</span>\n    </p>\n    <div data-magic-id="memberList"></div>\n    <span data-magic-id="addBtn" class="addMemberLink">${i18n.actions.user.addAnotherUser}</span>\n    <form data-magic-id="inviteForm" class="inviteForm">\n        <fieldset>\n            <label>${i18n.actions.inviteMessage}</label>\n            <textarea name="inviteMsg"></textarea>\n        </fieldset>\n    </form>\n    <div data-magic-id="formButtons"></div>\n</div>',Object.assign(this,e)}postCreate(){super.postCreate(),r(this.headGuideline,l,this.surveyId),r(this.headSurvey,l,!this.surveyId),this.formButtons=new c(this.formButtonsArgs,this.formButtons),this.formButtons.startup(),this.addMember(!1),this.resend&&this._applyResend(),this.own(s(this.inviteForm.inviteMsg,"keyup",this.isValid.bind(this)),s(this.addBtn,"click",this.addMember.bind(this)),s(this.formButtons,"close",this.close.bind(this)),s(this.formButtons,"cancel",this.close.bind(this)),s(this.formButtons,"submit",this.inviteMembers.bind(this)))}addMember(e=!0){const t=new Xe({removable:e});t.startup(),this.own(s(t,"remove",(()=>{this._memberList[t.id].destroyRecursive(),delete this._memberList[t.id]})),s(t,"change",this.isValid.bind(this))),this.memberList.append(t.domNode),this._memberList[t.id]=t}close(){this._emit("close"),this.surveyId||this.dialog.hide()}isValid(){this.inviteForm.inviteMsg.value&&this._validMembers()?this.formButtons.enableSummit():this.formButtons.disableSummit()}inviteMembers(){if(this.resend?.inviteId)return void this._resend();const e={msg:this.inviteForm.inviteMsg.value,membersList:this._getMembers()};(this.surveyId?(new d).inviteGuidelineSurvey(this.guidelineId,this.surveyId,e):(new d).inviteGuideline(this.guidelineId,e)).then((()=>{this.formButtons.setSuccess(de.msg.invites.invitesSent)}))}_applyResend(){const e=Object.keys(this._memberList);if(0===e.length)return;const t=this._memberList[e[0]];this.resend.email&&t.inviteMember?.email&&(t.inviteMember.email.value=this.resend.email,t.inviteMember.email.readOnly=!0),null!=this.resend.permission&&t.inviteMember?.permission&&(t.inviteMember.permission.value=String(this.resend.permission)),this.resend.message&&(this.inviteForm.inviteMsg.value=this.resend.message),this.addBtn&&h(this.addBtn,l),this.isValid()}_getMembers(){return Object.keys(this._memberList).filter((e=>this._memberList[e].isValid())).map((e=>this._memberList[e].getMember()))}async _resend(){const e=this._getMembers()[0],t={message:this.inviteForm.inviteMsg.value,permissionMask:Number(e?.permission)};await(new d).resendInvite(this.guidelineId,this.resend.inviteId,t),this.formButtons.setSuccess(de.msg.invites.inviteResent),this._emit("resent")}_validMembers(){return this._getMembers().length>0}}const et="generate-pdf",tt="show-general-info",it="show-customization",st="show-permissions",nt="show-info",ot="show-coi",at="show-milestones",rt="show-publishing",lt="show-history",ct="show-surveys",dt="show-survey-overview",ht="show-tags",ut="show-subscribe-to",pt="disable-content-lock",gt="download-discussion-report",mt="download-full-html",vt="download-full-zip",bt="download-full-xml-zip";class ft extends a{pdfPath=null;_menu=null;_toggleEditControlMenuOpt=null;_toggleLock=null;constructor(e){super(...arguments),this.id="optionMenu",this.i18n=de,this.templateString=`<div class="optionsLink header-panel">\n                                  <span class="optionsPdfLink" data-magic-id="subscribe">Subscribe</span>\n                                  <span class="optionsPdfLink" data-magic-id="viewPDF">${de.pdf.pdfLabel}</span>\n                                  <span data-magic-id="optMenuSettings"></span>\n                               </div>`,Object.assign(this,...arguments)}startup(){super.startup();const e=this,t=[];let i=u.isPublished()?de.general.about:de.settings.general.label;if(t.push({id:"generalInfo",label:i,onClick:()=>this._emit(tt)}),u.isUserViewer()&&!u.isContentAdmin()||(!u.isPublished()&&u.isContentAdmin()&&t.push({id:"optionMenuCustom",label:de.settings.customization.label,onClick:()=>this._emit(it)}),t.push({id:"optionMenuPermissions",label:de.settings.permissions.label,onClick:()=>this._emit(st)})),t.push({}),u.canUserEdit()&&!u.isPersonalOrg()){t.push({id:"newPDF",label:de.actions.exporting.pdfWord,onClick:()=>this._emit(et)});const i=[];u.isDraft()&&i.push({id:"discussionReport",label:de.actions.rec.recCommentExport,onClick:()=>{e._emit(gt)}}),u.isContentAdmin()&&i.push({id:"downloadFullHTML",label:de.actions.zip.guidelineExport+" (HTML)",onClick:()=>{e._emit(mt)}}),i.push({id:"downloadFullZip",label:de.actions.zip.guidelineExport+" (JSON)",onClick:()=>{e._emit(vt)}}),i.push({id:"downloadFullXmlZip",label:de.actions.zip.guidelineExport+" (XML)",onClick:()=>{e._emit(bt)}}),t.push({label:de.actions.exporting.exportItem,subMenu:i})}if(t.push({}),u.isDraft()&&u.getContentOrgId()>3&&!u.isUserViewer()&&!u.isUserAnon()?(this._publishMenuOpt=new _e({id:"optionMenuPublishing",label:de.settings.publishing.label,onClick:()=>this._emit(rt)}),t.push(this._publishMenuOpt)):(u.isPublished()||u.isUserViewer()||u.isUserAnon())&&(this._publishMenuOpt=new _e({id:"optionMenuVersionHistory",label:de.settings.publishing.history.versionHistory,onClick:()=>this._emit(lt)}
1),t.push(this._publishMenuOpt)),u.isUserViewer()||(t.push({id:"info",label:"Info and Docs",onClick:()=>this._emit(nt)}),t.push({id:"milestones",label:`${de.general.tasks} & ${de.settings.checklist.label}`,onClick:()=>this._emit(at)}),(u.isContentAdmin()||u.getContent().showConflicts)&&t.push({id:"optionMenuCoi",label:de.coi.headerCoi,onClick:()=>this._emit(ot)}),u.isDraft()&&(t.push({id:"votingOverview",label:de.voting.nav.dashboard,onClick:()=>this._emit(dt)}),t.push({id:"tags",label:de.contentTags.manageTags,onClick:()=>this._emit(ht)}))),u.isPublished()&&this.pdfPath?this.own(s(this.viewPDF,"click",this.viewPdf.bind(this,this.pdfPath))):this.viewPDF.remove(),u.isPublished()&&u.getContent().subscriptions&&!u.isSubscribed()?this.own(s(this.subscribe,"click",(()=>this._emit(ut)))):this.subscribe.remove(),u.isDraft()){t.push({});const e=de.voting.votingSettingsMenu.replace("and Delphi tool ","").split("(")[0];t.push({id:"votingSettings",label:e,onClick:()=>this._emit(ct)})}u.showEditControls()&&(t.push({}),t.push(new Ie({label:de.actions.turnTcOn,isChecked:u.isTrackChangesOn(),onClick:this._enableTCC.bind(this)})),u.isContentAdmin()&&(this._toggleLockMenuOpt=new _e({id:"lockContent",label:"Disable content lock",onClick:()=>this._emit(pt)})));const a=u.showEditControls()?"icon settingsIcon":"icon infoIcon",r={label:u.isPublished()?de.general.about:"",name:"settingMenu",btnClass:a,menu:t},l=new we(r,this.optMenuSettings);l.startup(),this.own(n.subscribe(o.topic.toggle.referenceBulkEdit,this._setBulkRefEditControlsLabel.bind(this))),this._menu=l}destroy(){super.destroy(),this._toggleRefBulkMode?.destroyRecursive(),this._toggleLockMenuOpt?.destroyRecursive(),this._publishMenuOpt?.destroyRecursive(),this._menu?.destroyRecursive()}hideControlToggle(){this._toggleEditControlMenuOpt&&this._menu.removeItem(this._toggleEditControlMenuOpt)}showControlToggle(){this._toggleEditControlMenuOpt&&this._menu.addItem(this._toggleEditControlMenuOpt,e.findWidgets(this._menu.menuItems).length-2)}hideLockToggle(){this._toggleLockMenuOpt&&this._menu.removeItem(this._toggleLockMenuOpt)}showLockToggle(){this._toggleLockMenuOpt&&this._menu.addItem(this._toggleLockMenuOpt,e.findWidgets(this._menu.menuItems).length-1)}viewPdf(e){const t=e=>{if(e?.[0]){const t=e[0].location.replace("s3.amazonaws.com/","")+(e[0].fileName||"");window.open(t,"_blank"),this.trackEvent(this._trackActions.download,`pdf:${t.split("/")[5]}`)}};e?t([{location:e}]):p.guidelineStore().getLatestPDF(u.getContentId()).then(t.bind(this))}_getBulkRefEditControlsLabel(){return u.inBulkReferenceEditMode()?de.actions.turnBulkRefOff:de.actions.turnBulkRefOn}_setBulkRefEditControlsLabel(e){const t=e.bulkEditReferenceMode&&!u.isContentAdmin()&&u.inBulkReferenceEditModeByOther();this._toggleRefBulkMode.setDisabled(t),this._toggleRefBulkMode.setLabel(this._getBulkRefEditControlsLabel()),this._publishMenuOpt?.setDisabled(e.bulkEditReferenceMode)}_setContentLockMenuLabel(){this._toggleLockMenuOpt.setLabel("Disable content lock")}_enableTCC(e){p.guidelineStore().enableTCC(u.getContentId(),u.getUserId(),e?1:0).then((()=>u.setTrackChangesOn(e)))}}const yt="_ck-suggestion-marker-ins";var Ct={highlight(e,t){if(!t||""===t)return;!function(e){var t="all",i="className",s="container",n="sensitiveSearch",o="token",a=e["tokens"],r=(e[t][i],e[t][n]);function l(e,t,s,a){var r,l,c,d,h,u,p,g,m,v,b,f,y=e.nodeValue,C=e.parentNode;for(r=0,l=t.length;r<l;r++)for(d=(c=t[r])[o],c[i],h=c[n],u=void 0!==a?a:h,f=!0;;){if((p=u?y.indexOf(d):y.toLowerCase().indexOf(d.toLowerCase()))<0){if(f)break;y&&(v=document.createTextNode(y),C.insertBefore(v,e)),C.removeChild(e);break}f=!1,g=y.substring(0,p),m=y.substr(p,d.length),g&&(v=document.createTextNode(g),C.insertBefore(v,e)),(b=document.createElement("mark")).appendChild(document.createTextNode(m)),C.insertBefore(b,e),y=y.substring(p+d.length)}}!function e(t){if(null!==t){var i,s,n=Array.from(t.childNodes);if(n.length)for(i=0;i<n.length;i++)3===(s=n[i]).nodeType?l(s,a,0,r):1===s.nodeType&&e(s)}}(e[s])}({container:e,all:{className:"highlighter"},tokens:[{token:t,className:"highlight",sensitiveSearch:!1}]})},toggleText(e){e?document.querySelectorAll("._ck-suggestion-marker-ins").forEach((e=>{h(e,g),m(e,yt)})):document.querySelectorAll(".ck-suggestion-marker.ck-suggestion-marker-insertion").forEach((e=>{m(e,g),h(e,yt)})),document.querySelectorAll(".ck-suggestion-marker.ck-suggestion-marker-deletion").forEach((t=>r(t,l,!e)))}};class _t extends a{constructor(t){super(t),this.displaySide="right",Object.assign(this,t),t.location||console.warn("no location var for "+this.id
1),this.id=t.location?"rt_"+t.location:e.getUniqueId(this.constructor.name),this.baseClass="previousText"+t.displaySide=="left"?"onLeft":"onRight",this.templateString='<div class="${baseClass}">\n  <div class="reviewTextHeader">\n    <span class="reviewTextDate">\n        <select data-magic-id="revStart">\n            \x3c!--<option value="0">Select Version</option>--\x3e\n        </select>\n    </span>\n    <span class="icon closeIcon" data-magic-id="closeIcon"></span>\n  </div>\n  <div class="reviewTextContent hideMe" data-magic-id="content"></div>\n</div>\n',this.i18n=de,this.location="",this.objId=""}postCreate(){super.postCreate();const e=this;p.guidelineStore().getPublishedVersions(u.getContentId()).then((t=>{e._versions=t||[],e._versions.forEach((t=>{e.revStart.add(e.makeOption(t))})),e._loadText.call(e)})),this.own(s(this.revStart,"change",this._loadText.bind(this)),s(this.closeIcon,"click",(()=>{this._emit("close")})))}makeOption(e){const t=document.createElement("option");return t.text=de.settings.publishing.history.version+" "+e.versionMajor+"."+e.versionMinor+" - "+v.shortDate(e.publishDate),t.value=e.guidelineId,t}_loadText(){const e=Number(this.revStart.value);if(0===e)return void(this.content.innerHTML="");const t=this;this.loadText(e,!1).then((e=>{m(t.content,"hideMe"),t.content.innerHTML=e&&e.text?e.text:de.msg.versionNoText}))}}let It=!1,wt=!0,St=!0;function Et(e){return!!(e&&e.constructor&&e.call&&e.apply)}St&&(St=!1,n.subscribe(o.topic.update.reference,(()=>{It||(console.debug("expire ckE reference cache!!!"),wt=!0)})));class Tt extends a{_staleData=!1;_ckEditor=null;_citationIds=[];_reviewText=null;_highLight="";_Highlighter=Ct;constructor(t){super(...arguments),this.templateString='<div class="editableText">\n    <div class="editableTextLoader hideMe" data-magic-id="loadSpin"></div>\n    <div class="editableTextHolder" data-magic-id="textHolderNode">\n        <span class="icon editIcon hideMe" data-magic-id="editControl"></span>\n        <span class="editableTextContent" data-magic-id="textNode"></span>\n        <span class="placeHolderText" data-magic-id="placeHolderNode">${placeHolder}</span>\n    </div>\n    <div class="editTextHolder" data-magic-id="editHolderNode"></div>\n    <div class="reviewText" data-magic-id="reviewHolderNode"></div>\n</div>',this.i18n=de,this.cached=!1,this.readOnly=!1,this.noRefs=!1,this.noTrackChanges=!1,this.objId=null,this.location=null,this.text="",this.placeHolder="",this.data={},this.useSave=!0,this.inDialog=!1,Object.assign(this,t),this._loadText=function(){return new Promise((e=>{e(this.data)}))},this._saveText=function(){return new Promise((e=>{e()}))},this.id=t.location?"et_"+t.location:e.getUniqueId(this.constructor.name),this.noRefs=["NO_REF","MIN","STANDARD"].includes(t.toolbar),this._trackId=this.id.replace("et_","").replace(/_/g,":"),this._highLight=u.getFindHighlight(),t.location||console.warn("no location var for "+this.id),t.objId||console.warn("no objId var for "+this.id),"ALL"!==t.toolbar||t.loadVersionText||console.warn("no loadVersionText function for "+this.id)}postCreate(){super.postCreate(),new ge({msg:de.general.loading}).placeAt(this.loadSpin),this.textHolderNode.style.direction=u.getContentLocaleDirection(),Et(this.loadText)||(this.data={text:this.text}),this._inPreviewMode=this._inPreviewMode||!(u.showEditControls()&&!this.readOnly&&!this.cached),It=this.noRefs,this.setDisplay(),this._setText(),this._inPreviewMode||this.own(s(this.editControl,"click",this.loadEditor.bind(this)),n.subscribe(o.topic.toggle.controls,this.toggleEditControls.bind(this))),this.own(n.subscribe(o.topic.toggle.highlight,this.toggleHighlight.bind(this)))}cancel(){this.trackEvent(b.cancelEdit,this._trackId),this._ckEditor.destroy(),this._ckEditor=null,wt&&Et(this.loadText)?this.refreshData():this.showText(),this._emit("cancel")}hasData(){return!!this.text}hideLoading(){r(this.textHolderNode,l,this._ckEditor),r(this.editHolderNode,l,!this._ckEditor),h(this.loadSpin,l)}inEditMode(){return!!this._ckEditor}inEditBy(e,t,i,s){console.info("inEditBy >",this.id,e,t,i,s),this.editControl.title=s?t+" @ "+i:"",r(this.editControl,f,!s),r(this.editControl,y,s)}loadEditor(e){e.stopPropagation();const t=this;this.showLoading(),import("./editor-D5iDfbuj.js").then((({default:e})=>{const i=new e({me:t._getMe(),text:this.text,location:t.location,loadText:t.loadText||t._loadText.bind(t),saveText:t.saveText||t._saveText.bind(t),objId:t.objId,toolbar:t.toolbar,noRefs:t.noRefs,noTrackChanges:t.noTrackChanges,useSave:t.useSave,inDialog:t.inDialog}
1).placeAt(t.editHolderNode);t._ckEditor=i,i.on("load-start",(e=>{t.showLoading(e.detail)})),i.on("load-end",(e=>{t.hideLoading(e.detail)})),i.on("cancel",(e=>{t.cancel(e.detail)})),i.on("saved",(e=>{t.saved(e.detail)})),i.on("review",(()=>{t.reviewText()})),t.trackEvent(b.edit,t._trackId),t._emit("show-editor")}))}refreshData(){const e=this;let t;const i=new Promise(((e,i)=>{t=e}));return this.inEditMode()||this.readOnly?(t(),i):(this.showLoading(),this.loadText(this.objId,!1).then((i=>{console.info("refreshing object :",i),i=i||{text:""},wt=!1,e.text=i.text,null!==e._ckEditor?console.info("editor is open, do NOT update data!!!"):e.setText(i.text),e.hideLoading(),t()})),i)}saved(e){console.info("saving : ",e),this._ckEditor.destroy(),this._ckEditor=null,this.data.text=e.text,this.setText(e.text),this.trackEvent(this._trackActions.save,this._trackId),this.emit("saved",e)}reviewText(){this._reviewText?this.destroyReviewText():(this._reviewText=new _t({displayOn:"right",location:this.location,objId:this.objId,objShortCode:this.objShortCode,loadText:this.loadVersionText}),this._reviewText.startup(),this.reviewHolderNode.replaceChildren(this._reviewText.domNode),h(this.domNode,C),this.own(s(this._reviewText,"close",(()=>{this.destroyReviewText(),this._ckEditor.disableReviewTextIcon()}))))}destroyReviewText(){this._reviewText&&(this._reviewText.destroyRecursive(),this._reviewText=null,m(this.domNode,C))}setDisplay(){m(this.textHolderNode,l),r(this.editControl,l,this._inPreviewMode),r(this.placeHolderNode,l,!!this.text||this.readOnly),r(this.textNode,l,!this.text&&!this.readOnly),h(this.editHolderNode,l),this.destroyReviewText()}setText(e){console.debug("ckE setText",e),this.text=e||"",this.setDisplay(),this._setText()}showLoading(){h(this.textHolderNode,l),h(this.editHolderNode,l),m(this.loadSpin,l)}showText(){null!==this._ckEditor&&(console.info("destroying cke"),this._ckEditor.destroy(),this._ckEditor=null),this.setDisplay(),this._setText()}toggleEditControls(e=!1){this._inPreviewMode,this._inPreviewMode=e,u.canUserEdit()&&(r(this.editControl,l,e),this._ckEditor&&this._ckEditor._cke&&(e?!this._ckEditor._cke.isReadOnly&&this._ckEditor._cke.enableReadOnlyMode(l):this._ckEditor._cke.isReadOnly&&this._ckEditor._cke.disableReadOnlyMode(l)))}toggleHighlight(e){this._highLight=e&&e.highlight||"",this._setText()}_getMe(){return[{id:u.getUserId()+"",name:u.getUserName(),initials:u.getUserInitials()}]}_setText(){this.textNode.innerHTML=this.text,Ct.highlight(this.textNode,this._highLight),u.isDraft()&&Ct.toggleText(u.showEditControls())}}class kt extends a{constructor(e){super(...arguments),this.i18n=de,this.templateString='<div class="settingsGeneral dialogForm">\n    <form data-magic-id="guidelineSettingsForm">\n        <fieldset>\n            <label>${i18n.general.title}</label>\n            <input type="text"\n                   name="name"\n                   required\n                   minlength="4"\n                   data-tooShort="At least 4 chars"\n                   data-customError="${error.provideTitle}">\n        </fieldset>\n        <fieldset>\n            <label>${i18n.general.shortTitle}</label>\n            <input type="text"\n                   name="byName"\n                   required\n                   pattern="[A-zÀ-ÿ0-9$%!_+-\\/\\.,: ]{4,128}"\n                   data-tooShort="At least 4 chars"\n                   data-patternMismatch="Only A-zÀ-ÿ0-9$%!_+-\\/\\.,: and 4 to 128 chars"\n                   data-customError="${error.provideShortTitle}">\n            <span class="settingByline">${i18n.settings.general.shortTitleInfo}</span>\n        </fieldset>\n        <fieldset>\n            <label>${i18n.general.shortCode}</label>\n            <span class="formValue">${obj.shortCode}</span>\n            <span class="settingByline">${i18n.settings.general.shortnameInfo}</span>\n        </fieldset>\n        <fieldset data-magic-id="statusSetting" class="narrow">\n            <label>${i18n.actions.setStatusViewers}</label>\n            <select name="status">\n                <option value="NOTSET">${i18n.general.notSet}</option>\n                <option value="DEV">${i18n.guideline.status.underDevelopment}</option>\n                <option value="PUBLIC_REVIEW">${i18n.guideline.status.inPublicReview}</option>\n                <option value="EXTERNAL_REVIEW">${i18n.guideline.status.inExternalReview}</option>\n                <option value="INTERNAL_REVIEW">${i18n.guideline.status.inInternalReview}</option>\n                <option value="INTERNAL_DRAFT">${i18n.guideline.status.inDraftInternal}</option>\n                <option value="INTERNAL_PUBLISHED">${i18n.guideline.status.inPublishedInternal}</option>\n                <option value="UPDATING">${i18n.guideline.status.inUpdate}</option>\n                <option value="UPDATED">${i18n.msg.updatedStatus}</option>\n            </select>\n        </fieldset>\n        <fieldset>\n            <label>${i18n.contentList.owner}</label>\n            <select name="institutionId"\n                    required\n                    data-magic-id="institutionId"\n                    data-customError="You need to select an owner."></select>\n        </fieldset>\n        <fieldset>\n            <label>${i18n.contentList.editor}</label>\n            <input type="text" required name="mainEditor"\n                   pattern=\'[^<>%\\$\\|~@#\\/\\+"]{2,128}\'\n                   data-tooShort="${i18n.msg.form.validate.editorNameLength}"\n                   data-customError="${error.provideEditor}">\n        </fieldset>\n        <fieldset>\n            <label>${i18n.settings.language}</label>\n            <select name="language" data-magic-id="langSelNode"></select>\n            <div data-magic-id="flags" class="settingsFlags hideMe"></div>
1\n            <span class="settingByline">${i18n.settings.general.languageInfo}</span>\n        </fieldset>\n        <fieldset>\n            <label>${i18n.references.isbn}</label>\n            <input type="text"\n                   name="isbn"\n                   pattern="^(?:ISBN(?:-1[03])?:? )?(?=[0-9X]{10}$|(?=(?:[0-9]+[\\- ]){3})[\\- 0-9X]{13}$|97[89][0-9]{10}$|(?=(?:[0-9]+[\\- ]){4})[\\- 0-9]{17}$)(?:97[89][\\- ]?)?[0-9]{1,5}[\\- ]?[0-9]+[\\- ]?[0-9]+[\\- ]?[0-9X]$"\n                   data-patternMismatch="${error.needValidIsbn}">\n        </fieldset>\n        <fieldset>\n            <label>${i18n.references.issn}</label>\n            <input type="text"\n                   name="issn"\n                   pattern="\\d{4}-?\\d{3}[\\dX]$"\n                   data-patternMismatch="${error.needValidIssn}">\n        </fieldset>\n        <fieldset>\n            <label>Department</label>\n            <input type="text" name="department">\n        </fieldset>\n        <fieldset>\n            <label>${i18n.guideline.orgDocId}</label>\n            <input type="text" name="orgDocId">\n        </fieldset>\n\n        <fieldset class="narrow">\n            <label>${i18n.settings.general.startDate}</label>\n            <input type="date"\n                   name="startDate"\n                   required\n                   data-customError="${error.needValidDate}" />\n        </fieldset>\n        <h4 class="formSubheading">${i18n.general.contact.info}</h4>\n        <fieldset>\n            <label>${i18n.general.name}</label>\n            <input type="text"\n                   class="bottomMargin"\n                   name="contactName"\n                   data-customError="${error.provideName}">\n        </fieldset>\n        <fieldset>\n            <label>${i18n.general.address.default}</label>\n            <input type="text"\n                   class="bottomMargin"\n                   name="contactAddress"\n                   data-customError="${error.provideAddress}">\n        </fieldset>\n        <fieldset class="halfWidth">\n            <label>${i18n.general.contact.email}</label>\n            <input type="email"\n                   class="bottomMargin"\n                   name="contactEmail"\n                   data-customError="${error.provideEmail}">\n        </fieldset>\n        <fieldset class="halfWidth">\n            <label>${i18n.general.contact.phone}</label>\n            <input type="tel"\n                   class="bottomMargin"\n                   name="contactTelephone"\n                   data-customError="${error.provideTelephone}">\n        </fieldset>\n        <fieldset>\n            <label>${i18n.general.website}</label>\n            <input type="url" name="contactWeb"\n                   data-customError="${error.provideUrl}"\n                   data-valueMissing="${error.provideUrl}">\n        </fieldset>\n\n        <fieldset>\n            <label>${i18n.settings.general.sponsors}</label>\n            <span data-magic-id="sponsorText" ></span>\n        </fieldset>\n        <fieldset>\n            <label>${i18n.settings.general.disclaimer}</label>\n            <span data-magic-id="disclaimerText"></span>\n        </fieldset>\n        <fieldset>\n            <label>${i18n.general.description}</label>\n            <span data-magic-id="descriptionText"></span>\n        </fieldset>\n        <div class="formButtons">\n            <div data-magic-id="buttonsNode"></div>\n        </div>\n    </form>\n</div>\n',this.error=he,this.showControls=!1,this.formButtons={},this.formButtonsArgs={submitLabel:de.actions.save,successMsg:de.general.success,failMsg:"fail"},Object.assign(this,e)}postCreate(){super.postCreate(),console.info(">> General settings for ",this.oid,this.admin),u.areWeOnline()&&this.admin&&this.currentDraft&&(this.showControls=!0,this.formButtons=new c(this.formButtonsArgs,this.buttonsNode),this.formButtons.startup(),this.formButtons.enableSummit(),this.own(s(this.formButtons,"submit",this.update.bind(this)),s(this.formButtons,"cancel",(()=>{this.dialog.hide()})),s(this.formButtons,"close",(()=>{this.dialog.hide()}))));const e=new Tt({text:this.obj.sponsors||"",placeHolder:de.settings.general.sponsors,toolbar:"MINI",location:"sponsorText",readOnly:!this.showControls}).placeAt(this.sponsorText,"last"),t=new Tt({text:this.obj.disclaimer||"",placeHolder:de.settings.general.disclaimer,toolbar:"MINI",location:"disclaimerText",readOnly:!this.showControls}).placeAt(this.disclaimerText,"last"),i=new Tt({text:this.obj.description||"",placeHolder:de.general.description,toolbar:"MINI",location:"descriptionText",readOnly:!this.showControls}).placeAt(this.descriptionText,"last");e.startup(),t.startup(),i.startup(),this.languageSelect=new _({},this.langSelNode),this.languageSelect.startup(),this.own(this.languageSelect,e.on("saved",(e=>{this.obj.sponsors=e.text})),t.on("saved",(e=>{this.obj.disclaimer=e.text})),i.on("saved",(e=>{this.obj.description=e.text})),s(this.languageSelect.domNode,"change",(()=>{this.updateFlags("")})))}startup(){super.startup(),this.setupInstitutionSelect().then((()=>{me.setFormValues(this.guidelineSettingsForm,this.obj,!this.showControls),this.updateFlags(this.obj.countryFlag)}))}update(){const e=this.guidelineSettingsForm;if(ke.validForm(e),e.checkValidity()){this.formButtons.setWait();let t=me.getFormValues(e);t.sponsors=this.obj.sponsors,t.disclaimer=this.obj.disclaimer,t.description=this.obj.description,t.startDate=v.dateToISO(e.startDate.value+"T00:00:00"),console.info("Updating "+this.type,t),t.guidelineId=this.oid,p.guidelineStore().updateGuideline(this.oid,t).then((e=>{u.setGuideline(e),n.publish(o.topic.update.contentName,t.name),this.dialog.hide()}))}}setupInstitutionSelect(){return new Promise((e=>{const t=u.getUserInstitutions(),i={institutionId:u.getContentOrgId(),name:u.getContent().owner},s=t=>{const i=document.createDocumentFragment();t.forEach((e=>{const t=document.createElement("option");t.value=e.institutionId,t.innerHTML=e.name,i.appendChild(t)})),this.institutionId.replaceChildren(i),e()};u.isAppAdmin()?p.institutionStore().allOrgs().then(s):u.isContentAdmin()?s(Array.from(new Map([i,...t].map((e=>
1[e.institutionId,e]))).values())):s([i])}))}updateFlags(e=""){console.info("updating flags",e);const t=this.languageSelect.value,i=Te.langToFlag[t]||["worldFlag"];""===e&&(e=i[0].replace("Flag",""));let s="";i.forEach((t=>{const i=t.replace("Flag",""),n=i===e?"CHECKED":"";console.info(" updating flag",i,n),s+=`<div class="settingsFlagWrap"><input type="radio" name="countryFlag" value="${i}" ${n}><span class="flag ${t}"></span></div>`})),this.flags.innerHTML=s,m(this.flags,l)}}class Lt extends a{gradeLabelSelect=null;formButtons={};formButtonsArgs={submitLabel:de.actions.save,successMsg:"success",failMsg:"fail"};constructor(e){super(...arguments),this.templateString='<div class="settingsCustom dialogForm">\n    <form data-magic-id="guidelineCustomizationForm">\n        <h3>${i18n.settings.general.label}</h3>\n        <fieldset>\n            <label class="radioLabel"><input type="checkbox" name="subscriptions">${i18n.settings.customization.defaultSubscription}</label>\n        </fieldset>\n        <fieldset data-magic-id="commentsSetting">\n            <label class="radioLabel"><input type="checkbox" name="commentsInPublished">${i18n.settings.general.defaultComments}</label>\n        </fieldset>\n        <fieldset>\n            <label class="radioLabel"><input type="checkbox" name="trackChanges">${i18n.settings.general.defaultTrackChanges}</label>\n        </fieldset>\n        <fieldset class="bottomFieldset">\n            <label class="radioLabel"><input type="checkbox" name="enableDA">${i18n.settings.customization.showDaInRec}</label>\n        </fieldset>\n\n        <h3>${i18n.section.sections}</h3>\n        <fieldset>\n            <label class="radioLabel"><input type="checkbox" name="showSectionPreview">${i18n.settings.customization.defaultSectionText}</label>\n        </fieldset>\n        <fieldset class="bottomFieldset">\n            <label class="radioLabel"><input type="checkbox" name="sectionNumbers">${i18n.settings.general.defaultSectionNumbering}</label>\n        </fieldset>\n        <h3>${i18n.recommendation.recommendations}</h3>\n        <fieldset data-magic-id="strengthDescription">\n            <label class="radioLabel"><input type="checkbox" name="showRecByline">${i18n.settings.customization.defaultStrengthDescription}</label>\n        </fieldset>\n        <fieldset data-magic-id="strengthLabelsSetting" class="bottomFieldset">\n            <label class="radioLabel"><input type="checkbox" name="showCertaintyStrengthLabels">${i18n.settings.customization.defaultStrengthCertainty}</label>\n        </fieldset>\n\n        <fieldset data-magic-id="recNumberSetting">\n            <label>${i18n.settings.customization.defaultRecNumbering}</label>\n            <select data-magic-id="showRecNumbers" name="showRecNumbers" class="keyInfoType">\n                <option value="NONE" selected>${i18n.settings.customization.recNumberingOff}</option>\n                <option value="DRAFT">${i18n.settings.customization.recNumberingDraft}</option>\n                <option value="ALL">${i18n.settings.customization.recNumberingOn}</option>\n            </select>\n        </fieldset>\n\n        <fieldset data-magic-id="keyInfoSetting">\n            <label>${i18n.settings.general.defaultKeyInfo}</label>\n            <select data-magic-id="defaultKeyInfoType" name="defaultKeyInfoType" class="keyInfoType">\n                <option value="SUMMARY">${i18n.recommendation.keyInfo.framework.summaryGrade}</option>\n                <option value="ETD">${i18n.recommendation.keyInfo.framework.etdShort}</option>\n            </select>\n        </fieldset>\n        <fieldset data-magic-id="keyInfoJudgementTypeSetting">\n            <label>${i18n.settings.customization.defaultKeyInfoJudgementStyle}</label>\n            <select data-magic-id="keyInfoJudgementType" name="keyInfoJudgementType" class="keyInfoType">\n                <option value="DROPDOWN">${i18n.general.dropdownMenu}</option>\n                <option value="RADIO">${i18n.general.radiobuttons}</option>\n            </select>\n        </fieldset>\n\n        <fieldset data-magic-id="gradeStrength"></fieldset>\n        <div class="dialogFormButtons" data-magic-id="dialogFormButtons"></div>\n    </form>\n</div>\n',this.i18n=de,this.error=he,this.showControls=!1,Object.assign(this,e)}postCreate(){super.postCreate(),console.info(">> Custom settings for ",this.oid,this.admin),u.areWeOnline()&&this.admin&&this.currentDraft&&(this.showControls=!0,this.formButtons=new c(this.formButtonsArgs,this.dialogFormButtons),this.formButtons.startup(),this.formButtons.enableSummit(),this.own(s(this.formButtons,"submit",this.update.bind(this)),s(this.formButtons,"cancel",(()=>{this.dialog.hide()})),s(this.formButtons,"close",(()=>{this.dialog.hide()}))))}startup(){super.startup();const e=this,{obj:t,guidelineCustomizationForm:i,showControls:s}=this;Object.keys(t).forEach((e=>{const n=i[e];n&&("checkbox"===n.type?n.checked=t[e]:n.value=t[e],n.disabled=!s)})),ue(t.gradeStrengthLabel||"STRONG_WEAK").then((()=>{e._renderGradeStrengthPicker(t.gradeStrengthLabel)}))}update(){this.formButtons.setWait();const e=()=>{this.dialog.hide()},t={defaultKeyInfoType:this.defaultKeyInfoType.value,gradeStrengthLabel:this.gradeLabelSelect.gradeStrength,keyInfoJudgementType:this.keyInfoJudgementType.value,showRecNumbers:this.showRecNumbers.value};document.querySelectorAll("form[data-magic-id=guidelineCustomizationForm] input[type=checkbox]").forEach((e=>t[e.name]=e.checked)),console.info("Updating "+this.type,t),p.guidelineStore().updateCustomizations({...t,guidelineId:this.oid}).then((t=>{u.setGuideline(t),e(),n.publish(o.topic.reload.toc),n.publish(o.topic.section.renumber),n.publish(o.topic.update.numbering)}))}_renderGradeStrengthPicker(e){this.gradeLabelSelect=new Ae({gradeStrengthLabel:e,orgDefault:u.orgGradeStrength}),this.gradeLabelSelect.startup(),this.gradeStrength.appendChild(this.gradeLabelSelect.domNode),this.own(s(this.gradeLabelSelect,"change-labels",(e=>{let t=e.detail;ue(t).then((()=>{this.gradeLabelSelect.updateLabels()}))})))}}
2/**
3 * @license
4 * Copyright 2017 Google LLC
5 * SPDX-License-Identifier: BSD-3-Clause
6 */class Nt extends Re{constructor(e){if(super(e),this.it=Le,e.type!==Ue.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(e){if(e===Le||null==e)return this._t=void 0,this.it=e;if(e===Ne)return e;if("string"!=typeof e)throw Error(this.constructor.directiveName+"() called with a non-string value");if(e===this.it)return this._t;this.it=e;const t=[e];return t.raw=t,this._t={_$litType$:this.constructor.resultType,strings:t,values:[]}}}Nt.directiveName="unsafeHTML",Nt.resultType=1;const $t=Fe(Nt);function Ot(e){return e&&"false"!==e?de.general.getAlerts:de.msg.noAlerts}function At(e){return`<a href="mailto:${e}">${e}</a>`}function Pt(e){if(!e)return"";const t=new Date(e);return isNaN(t.getTime())?"":t.toLocaleDateString()}class Dt extends $e{static get properties(){return{pending:{type:Array},past:{type:Array},_loadState:{type:String}}}constructor(e){super(e),this.guidelineId=0,this.pending=[],this.past=[],this._loadState="loading",Object.assign(this,e)}postCreate(){super.postCreate(),this.refresh()}render(){return"loading"===this._loadState?Oe`<div class="inviteHistory" data-magic-id="root">${this.renderLoading()}</div>`:"error"===this._loadState?Oe`<div class="inviteHistory" data-magic-id="root"><p class="error" data-magic-id="error">${de.errors.invites.couldNotLoad}</p></div>`:Oe`
7            <div class="inviteHistory" data-magic-id="root">
8                <section data-magic-id="pendingSection">
9                    <h4>${de.invites.pendingInvites}</h4>
10                    ${0===this.pending.length?Oe`<p class="empty">${de.invites.noPendingInvites}</p>`:this.pending.map((e=>this._renderPending(e)))}
11                </section>
12
13                <section data-magic-id="pastSection">
14                    <h4>${de.invites.pastInvites}</h4>
15                    ${0===this.past.length?Oe`<p class="empty">${de.invites.noPastInvites}</p>`:this.past.map((e=>this._renderPast(e)))}
16                </section>
17            </div>`}async refresh(){this._loadState="loading";try{const e=await(new d).getInvites(this.guidelineId);this.pending=e?.pending||[],this.past=e?.past||[],this._loadState="ready"}catch(e){console.error("Failed to load invites",e),this.pending=[],this.past=[],this._loadState="error"}}resendInvite(e){this.trackEvent?.(b.show,"invite:resend");const t=new Ze({guidelineId:this.guidelineId,resend:{email:e.email,permission:e.permission?.mask,message:e.message,inviteId:e.inviteId}});new w({title:de.invites.resendInvite,content:t}).startup(),t.on("resent",this._onResent.bind(this))}async revokeInvite(e){this.trackEvent?.(b.delete,"invite:revoke");await ve.confirm({title:de.invites.revokeInvite,message:`${de.invites.revokeInviteFor} ${e.email}? ${de.invites.willNotBeAdded}.`,yes:de.general.yes,no:de.general.no})&&(await(new d).revokeInvite(this.guidelineId,e.inviteId),await this.refresh())}_onResent(){this.refresh()}_renderInvite(e,t,i=""){return Oe`
18            <div class="inviteRow" data-magic-id="invite-${e.inviteId}">
19                <div class="inviteSummary">
20                    <span class="inviteName">
21                        <strong>${e.firstName||""} ${e.lastName||e.email}</strong>
22                        ${de.invites.invitedOn} ${Pt(e.inviteTime)} as <strong>${function(e){if(null==e)return"";const t=I().find((t=>t.mask===e));return t?t.label:""}(e.permission?.mask)}</strong>
23                    </span>
24                    <span>
25                        ${t}
26                    </span>
27                </div>
28                ${e.message?Oe`<p class="inviteMessage">"${e.message}"</p>`:""}
29                ${e.polls?.length>0?this._renderPolls(e.polls):""}
30                ${i}
31            </div>`}_renderPast(e){const t=Oe`
32            <button data-magic-id="resend-${e.inviteId}"
33                    @click=${this._onResendClick.bind(this,e)}>${de.general.resend}</button>`,i=e.revokedTime?Oe`<span class="inviteRevoked">${de.invites.revokedOn} ${Pt(e.revokedTime)}</span>`:"";return this._renderInvite(e,t,i)}_renderPending(e){const t=Oe`
34            <button data-magic-id="resend-${e.inviteId}"
35                    @click=${this._onResendClick.bind(this,e)}>${de.general.resend}</button>
36            <button class="removeBtn" data-magic-id="revoke-${e.inviteId}"
37                    @click=${this._onRevokeClick.bind(this,e)}>${de.general.revoke}</button>`;return this._renderInvite(e,t)}_renderPolls(e){return Oe`
38            <div class="invitePolls">
39                <h4>${de.voting.polls}</h4>
40                <ul>
41                    ${e.map((e=>Oe`
42                        <li>
43                            <strong>${e.name}</strong> for ${function(e){return e?"PICO"===e.type?`PICO ${e.targetShortCode}`:"REC"===e.type?`Recommendation ${e.targetShortCode}`:de.voting.guidelineLevelPoll:""}(e)}
44                        </li>`))}
45                </ul>
46            </div>`}_onResendClick(e){this.resendInvite(e)}_onRevokeClick(e){this.revokeInvite(e)}}const Bt="ALL";class Mt extends $e{static get properties(){return{admin:{type:Boolean},currentDraft:{type:Boolean},filterGroups:{type:Array,hasChanged:()=>!0},permissionFilters:{type:Array,hasChanged:()=>!0},hasSelection:{type:Boolean},apiAccessAvailable:{type:Boolean},apiAccessAllowed:{type:Boolean},versions:{type:Array,hasChanged:()=>!0},selectedVersionId:{type:Number},_showControls:{type:Boolean}}}admin=!1;currentDraft=!1;oid=0;filterGroups=[];permissionFilters=[];hasSelection=!1;apiAccessAvailable=!1;apiAccessAllowed=!1;versions=[];selectedVersionId=0;_showControls=!1;constructor(e){super(e),Object.assign(this,e),this._isContentAdmin=u.isContentAdmin(),this._permissions=I(),this._refreshPermissionList(),this._refreshShowControls()}render(){const e=this._isSelectedDraft(),t=u.isPersonalOrg();return Oe`
47            <div class="settingsPermissions">
48                <div class="permissionsForm">
49                    ${this._renderVersionChooser()}
50                    ${t?Oe`<p class="permissionsWarn">${$t(de.settings.permissions.infoPersonal)}</p>`:Le}
51                    ${e?Le:Oe`<p class="permissionsWarn">${$t(de.settings.permissions.infoPublic)}</p>`}
52                    ${this._showControls?this._renderAddControls():Le}
53                    <div data-magic-id="userPermissionGrid"></div>
54                    ${this.hasSelection?this._renderBulkBar():Le}
55                </div>
56            </div>`}_renderVersionChooser(){const e=u.isUserOrgAdmin();return Oe`
57            <div class="permissionsVersionRow">
58                <fieldset>
59                    <label for="versionSelect">${de.publishing?.guidelineVersion||"Guideline version"}</label>
60                    <select id="versionSelect" @change=${this._onVersionChange.bind(this)}>
61                        ${this.versions.map((e=>Oe`
62                            <option value="${e.guidelineId}" ?selected=${e.guidelineId===this.selectedVersionId}>
63                                ${e.isDraft?de.general.draft||"Draft":`v${e.version}${e.isCurrent?" (current)":""}`}
64                            </option>`))}
65                    </select>
66                </fieldset>
67                <span class="orgMemberListLink">
68                    ${this._isContentAdmin&&this._isSelectedDraft()?Oe`
69                        <span class="fakeLink" data-magic-id="inviteUsersLink" @click=${this.inviteUser.bind(this)}>${de.actions.inviteUsers}</span>
70                        <span class="fakeLink" data-magic-id="inviteHistoryLink" @click=${this.showInvites.bind(this)}>${de.invites.showInviteHistory}</span>
71                    `:Le}
72                    ${e?Oe`
73                        <a href="#" @click=${this._navigateToOrgMembers.bind(this)}>
74                            ${de.settings.permissions.viewOrgMembers||"View organization member list"} 
75                        </a>`:Le}
76                </span>
77            </div>`}
77_renderAddControls(){return Oe`
78            <h4>
79                ${de.actions.user.addRegisteredUsers}
80                <picture>
81                    <span class="icon questionSmlIcon" aria-label="tooltip icon"></span>
82                    <tool-tip inert="" role="tooltip" tip-position="right">${$t(de.settings.permissions.info)}</tool-tip>
83                </picture>
84            </h4>
85            <div class="tableFilters">
86                <div class="tableFiltersLeft">
87                    <div class="listInput" data-magic-id="userInputContainer"></div>
88                    <select id="permissionSelect">
89                        ${this._permissionList.map((e=>Oe`<option value="${e.id}">${e.name}</option>`))}
90                    </select>
91                    <button type="button" id="addBtn" disabled @click=${this.addUser.bind(this)}>${de.actions.add}</button>
92                </div>
93
94                <div class="tableFiltersRight">
95                    <!--  rob, if we wanted a search by text filter                   
96                        <input type="text" id="searchInput"
97                           placeholder="${de.search.searchByName}"
98                           @keyup=${this._applyFilter.bind(this)}>
99                    -->
100                    ${this.apiAccessAvailable?Oe`
101                    <span class="apiInput">
102                        <label>
103                            <input type="checkbox" id="allowAPIChk"
104                                   .checked=${this.apiAccessAllowed}
105                                   @change=${this._onApiToggle.bind(this)}>
106                            Allow the API User access
107                        </label>
108                    </span>`:Le}
109                    <label for="groupFilter">${de.actions.filterBy}:</label>
110                    <select id="groupFilterSelect" @change=${this._onGroupFilter.bind(this)}>
111                        <option value="${Bt}">${de.general.user.allUsers}</option>
112                        ${this.permissionFilters.map((e=>Oe`<option value="${e.filter}">${e.filterLabel||e.label}</option>`))}
113                        ${this.filterGroups.map((e=>Oe`<option value="${e.id}">${e.name}</option>`))}
114                    </select>
115                    <button type="button" @click=${this.showGroups.bind(this)}>${de.general.account.userGroups}</button>
116                </div>
117            </div>`}_renderBulkBar(){return Oe`
118            <div class="bulkGroupControls">
119                <button @click=${this.sendBulkEmail.bind(this)}>${de.general.contact.email}</button>
120                <button @click=${this.bulkAddToGroup.bind(this)}>${de.actions.user.groups.setGroups}</button>
121                <select @change=${this.bulkSetPermission.bind(this)}>
122                    <option value="">${de.actions.user.groups.setPermission}</option>
123                    ${this._permissionList.map((e=>Oe`<option value="${e.id}">${e.name}</option>`))}
124                </select>
125                <button class="removeBtn" @click=${this.bulkRemove.bind(this)}>${de.actions.remove}</button>
126            </div>`}startup(){super.startup(),this._loadVersionsAndReload(),this._setupApiAccess()}addUser(){const e=this._userInput&&this._userInput.getValue(),t=this.domNode.querySelector("#permissionSelect").value;if(!e||!t)return;this.trackEvent(b.add,`member:${t}:v${this.selectedVersionId}`);const i=this._activeStore().addMember({userId:e,permissionMask:t}).then(this.refreshGrid.bind(this));ve.confirm({message:de.msg.wait,title:de.msg.wait,waitFor:i,yes:de.general.ok,completeMsg:de.msg.userAddSuccess,completeTitle:de.general.success}),this.domNode.querySelector("#permissionSelect").value="2",this._userInput.reset()}inviteUser(){const e=new Ze({guidelineId:u.getGuidelineId()});new w({title:de.actions.inviteUsers,content:e}).startup(),this.trackEvent(b.show,"invite")}setApiAccess(e=!1){this.trackEvent(b.edit,`apiAccess:${e}`),p.permissionStores().allowApiAccess(u.getGuidelineId(),e).then(this.refreshGrid.bind(this))}showInvites(){const e=new Dt({guidelineId:u.getGuidelineId()});new w({title:de.invites.showInviteHistory,content:e}).startup(),this.trackEvent(b.show,"invite:history")}showGroups(){this.trackEvent(b.show,"groupManager");const e=new Pe({contextId:u.getGuidelineId(),store:p.groupGuidelineStore()});new w({title:de.general.account.userGroups,content:e}).startup(),this.own(s(e,"closed",this._onGroupsClosed.bind(this)))}
126showMemberShips(e,t){const i=this._activeMembershipWidget=new De({contextId:u.getGuidelineId(),user:e,store:p.groupGuidelineStore()}),n=new w({title:de.general.account.groupMembership,content:i,closable:!0});n.startup(),this.own(s(i,"close-list",this._onMembershipClose.bind(this,e,t,n)),s(i,"open-group-manager",this.showGroups.bind(this)))}sendBulkEmail(){const e=this.userGrid.getSelectedRows();if(0===e.length)return;this.trackEvent(b.show,`bulkEmail:${e.length}:v${this.selectedVersionId}`);const t=e.map((e=>({userId:e.userId,username:e.displayName,email:e.email||e.sid}))),i=new Be({recipients:t,sendFn:e=>this._activeStore().sendEmailToMembers(e)});new w({title:de.dialog.title.sendEmail,content:i}).startup()}bulkAddToGroup(){const e=this.userGrid.getSelectedRows();if(0===e.length)return;this.trackEvent(b.show,`bulkAddToGroup:${e.length}`);const t=e.map((e=>e.userId)),i=p.groupGuidelineStore(),n=new Map;e.forEach((e=>(e.groups||[]).forEach((e=>n.set(e.id,e)))));const o=new Set(n.keys()),a={userId:null,groups:[...n.values()]},r=this._activeMembershipWidget=new De({contextId:u.getGuidelineId(),user:a,store:i});r.addItem=()=>{},r.removeItem=()=>{};const l=new w({title:de.general.account.groupMembership,content:r,closable:!0});l.startup(),this.own(s(r,"close-list",this._applyBulkMembershipChanges.bind(this,l,i,t,o)),s(r,"open-group-manager",this.showGroups.bind(this)))}async bulkSetPermission(e){const t=e.target,s=parseInt(t.value,10);if(t.value="",!s)return;const n=this.userGrid.getSelectedRows();if(0===n.length)return;const o=(this._permissionList.find((e=>Number(e.id)===s))||{}).name||s;await i.confirm({title:de.settings.permissions.permissionLevelHeader,message:`${de.actions.user.groups.setPermissionTo} "${o}" ${de.general.for} ${n.length} ${de.general.user.groups.member} ${n.length>1?"s":""}?`,yes:de.general.ok,no:de.actions.cancel}),this.trackEvent(b.edit,`bulkPermission:${s}:${n.length}:v${this.selectedVersionId}`),await this._activeStore().setMembersPermission(n.map((e=>e.userId)),s),this.refreshGrid()}async bulkRemove(){const e=this.userGrid.getSelectedRows();0!==e.length&&(await i.confirm({title:de.actions.confirm.deleteItem,message:`${de.actions.remove} ${e.length} ${de.general.user.groups.member} ${e.length>1?"s":""} ${de.guideline.fromThisGuideline}?`,yes:de.general.ok,no:de.actions.cancel}),this.trackEvent(b.deleted,`bulkRemove:${e.length}:v${this.selectedVersionId}`),await this._activeStore().removeMembers(e.map((e=>e.userId))),this.refreshGrid())}async refreshGrid(){await this.userGrid.refresh(),this.hasSelection=!1,this._buildFilters(),await this.updateComplete,this._applyFilter()}updateUser(e,t,i){i[t]="permissionMask"===t?parseInt(e,10):e,"permissionMask"===t?(this._activeStore().updateMember(i),this._buildFilters()):this._activeStore().setNotifications(i.userId,e)}deleteUser(e){i.confirm({title:de.actions.confirm.deleteItem}).then((()=>this._activeStore().removeMember(e.userId).then(this.refreshGrid.bind(this))))}_onGroupsClosed(){this.refreshGrid(),this._activeMembershipWidget&&this._activeMembershipWidget.refresh()}async _loadVersionsAndReload(){const e=u.getGuidelineId();try{this.versions=await p.permissionStores().getGuidelineVersions(e)||[]}catch(e){console.warn("failed to load guideline versions",e),this.versions=[]}this.selectedVersionId=S(this.versions,e),this._refreshPermissionList(),this._refreshShowControls(),await this.updateComplete,this._reload()}async _onVersionChange(e){const t=Number(e.target.value);t!==this.selectedVersionId&&(this.selectedVersionId=t,this.trackEvent(b.filter,`version:${t}`),this._refreshPermissionList(),this._refreshShowControls(),await this.updateComplete,this._reload())}async _reload(){const e=(await this._activeStore().getMembers()).data.map((e=>(e.sid===u.getEmail()&&(e._disabled=!0),e)));this._setUsers(e),this._buildFilters(),this._mountUserComboBox()}_refreshPermissionList(){this._permissionList=E(this._permissions,this._isSelectedDraft())}_refreshShowControls(){const e=this.versions.find((e=>e.guidelineId===this.selectedVersionId));this._showControls=T({isDraft:this._isSelectedDraft(),isOrgAdmin:u.isUserOrgAdmin(),admin:this.admin,canAdminister:e?.canAdminister})}_isSelectedDraft(){return k(this.versions,this.selectedVersionId,this.currentDraft)}_setUsers(e){this.userGrid&&this.userGrid.destroyRecursive(),this.hasSelection=!1;this.userGrid=new be({data:e,columns:this._columns(),refreshFn:()=>this._activeStore().getMembers(),rowId:"userId",showFooter:!0,showSelect:this._showControls}),this.userGrid.startup(),this.domNode.querySelector('[data-magic-id="userPermissionGrid"]').replaceChildren(this.userGrid.domNode),this.own(s(this.userGrid,"datachange",this.updateUser.bind(this)),s(this.userGrid,"selection-change",this._onSelectionChange.bind(this)))}_mountUserComboBox(){if(!this._showControls)return;const e=this.domNode.querySelector('[data-magic-id="userInputContainer"]');e&&(this._userInput||(this._userInput=new He({id:"userName",invalidMessage:de.errors.user.noUsersFound,placeholder:de.settings.permissions.placeHolders.user,type:"text",searchFn:p.permissionStores().findUsersByName.bind(p.permissionStores()),pageSize:25,dataArgs:{id:"userId",label:"displayName"}}),this._userInput.startup(),this.own(s(this._userInput,"is-valid",this._onUserInputValid.bind(this)))),e.contains(this._userInput.dom
126Node)||e.replaceChildren(this._userInput.domNode))}_onUserInputValid(e){const t=this.domNode.querySelector("#addBtn");t&&(t.disabled=!e.detail.isValid)}async _setupApiAccess(){if(!this._isContentAdmin)return;if(!await p.permissionStores().apiAccessForOrg(u.getContentOrgId()))return;this.apiAccessAvailable=!0;const e=await p.permissionStores().apiAccessForGuideline(u.getGuidelineId());this.apiAccessAllowed=!!e}_onApiToggle(e){this.setApiAccess(e.target.checked)}_onSelectionChange(e){this.hasSelection=e.detail.count>0}_onGroupFilter(){const e=this.domNode.querySelector("#groupFilterSelect");e.value!==Bt&&this.trackEvent(b.filter,`group:${e.value}`),this._applyFilter()}_activeStore(){return this._versionStore&&this._versionStore.guidelineId===this.selectedVersionId||(this._versionStore=new L({guidelineId:this.selectedVersionId})),this._versionStore}_applyFilter(){if(!this.userGrid)return;const e=this.domNode.querySelector("#searchInput")?.value||"",t=this.domNode.querySelector("#groupFilterSelect")?.value||Bt;if(e&&this.trackEvent(b.search,`members:${e.toLowerCase()}`),!e&&t===Bt)return void this.userGrid.clearFilter();const i=this._permissions.find((e=>e.filter===t))||null;this.userGrid.filterData(function({search:e="",group:t="ALL",permission:i=null}={}){const s=e.toLowerCase(),n=""!==s,o="ALL"!==t;return e=>{if(n){const t=(e.displayName||"").toLowerCase(),i=(e.email||e.sid||"").toLowerCase();if(!t.includes(s)&&!i.includes(s))return!1}return!o||(i?e.permissionMask===i.mask:(e.groups||[]).some((e=>e.id===Number(t))))}}({search:e,group:t,permission:i}))}_buildFilters(){if(!this._showControls||!this.userGrid)return;const e=function(e,t){const i=new Set(e.map((e=>e.permissionMask))),s=[...t].sort(((e,t)=>t.mask-e.mask)).filter((e=>i.has(e.mask))),n=new Map;e.forEach((e=>(e.groups||[]).forEach((e=>n.set(e.id,e.name)))));const o=[...n.entries()].sort(((e,t)=>e[1].localeCompare(t[1]))).map((([e,t])=>({id:e,name:t})));return{permissionFilters:s,filterGroups:o}}(this.userGrid.getAllData(),this._permissions);this.permissionFilters=e.permissionFilters,this.filterGroups=e.filterGroups}async _applyBulkMembershipChanges(e,t,i,s,n){const o=new Set((n.detail||[]).map((e=>e.item.id))),a=[...o].filter((e=>!s.has(e))),r=[...s].filter((e=>!o.has(e)));e.destroy(),0===a.length&&0===r.length||(await t.syncMemberships(u.getGuidelineId(),i,a,r),this.refreshGrid())}_onMembershipClose(e,t,i,s){const n=s.detail;t.textContent=n.map((e=>e.item.name)).join(","),e.groups=n.map((e=>e.item)),this._buildFilters(),i.destroy()}_columns(){const e=function(e){const t=Object.fromEntries(e.map((e=>[e.mask,e.label])));return e=>t[e]}(this._permissions),t=[{field:"displayName",label:de.settings.displayName,sortable:!0,defaultSort:"asc"},{field:"sid",formatter:At,label:de.settings.permissions.userIdHeader,sortable:!0},{field:"groups",label:"groups",renderCell:this._groupCell.bind(this)}];return this._showControls?t.push({field:"permissionMask",label:de.settings.permissions.permissionLevelHeader,editor:"select",editorArgs:{options:this._permissionList,callback:this.updateUser.bind(this),style:"width:100px;"},editOn:"click",formatter:e,autoSave:!1,sortable:!0},{field:"notifications",label:"notifications",editor:"select",editorArgs:{options:N(),callback:this.updateUser.bind(this),style:"width:100px;"},editOn:"click",formatter:Ot,autoSave:!1,sortable:!0,alwaysEditable:!0},{field:"options",label:de.actions.options,renderCell:this._removeButton.bind(this)}):t.push({field:"permissionMask",label:de.settings.permissions.permissionLevelHeader,formatter:e},{field:"notifications",label:"notifications",formatter:Ot}),t}_groupCell(e){if("API User"===e.displayName)return document.createElement("div");const t=document.createElement("div"),i=document.createElement("span");if(i.textContent=(e.groups||[]).map((e=>e.name)).join(","),t.appendChild(i),this._isContentAdmin){const n=document.createElement("span");n.innerHTML=de.actions.edit,h(n,"userGroupEditLink"),t.appendChild(n),this.own(s(n,"click",(()=>this.showMemberShips(e,i))))}return t}_removeButton(e){if(e.sid===u.getEmail()||"API User"===e.displayName)return document.createElement("div");const t=document.createElement("button");return h(t,"removeBtn"),t.innerHTML=de.actions.remove,this.own(s(t,"click",(()=>this.deleteUser(e)))),t}_navigateToOrgMembers(e){e.preventDefault();const t=u.getContentOrgId();this.trackEvent(b.show,`orgMemberList:${t}`),this.dialog?.close(),$.go(`/org/${t}/members`)}}const xt=de.errors.notValidUrl,Ft=de.errors.pdf.providePdfLink;function Rt(e){if(!e)return!1;try{const t=new URL(e);return"http:"===t.protocol||"https:"===t.protocol}catch(e){return!1}}async function Ut(e){if(!Rt(e))return{valid:!1,error:xt};const t=await async function(e){try{const t=await fetch(e,{method:"HEAD",redirect:"follow"});if("opaque"===t.type||!t.ok)return"unknown";const i=(t.headers.get("Content-Type")||"").toLowerCase();return i?i.includes("pdf")?"pdf":"not-pdf":"unknown"}catch(e){return console.info("HEAD probe for custom PDF URL inconclusive (likely CORS)",e),"unknown"}}(e);return"not-pdf"===t?{valid:!1,error:Ft}:{valid:!0,error:null}}class qt extends a{constructor(e){super(...arguments),this.i18n=de,this.templateString='<div class="publishingForm dialogForm">\n    <div class="publishHistoryTop" data-magic-id="toggleHelp">
126\n        <span class="publishingTip">${i18n.actions.publishingInfo}</span>\n    </div>\n    <p class="permissionsHelp hideMe" data-magic-id="help">\n      ${i18n.settings.publishing.info}\n    </p>\n\n    <div data-magic-id="publishingFormNode">\n        <form class="publishingDetails" data-magic-id="publishingForm">\n            <div class="publishingDetailsTop">\n                <fieldset class="hideMe" data-magic-id="versionTypeField">\n                    <label>${i18n.settings.publishing.version.versionType}</label>\n                    <select name="versionType" data-magic-id="versionTypeSelect">\n                        <option value="MAJOR">${i18n.settings.publishing.version.major}</option>\n                        <option value="MINOR" selected>${i18n.settings.publishing.version.minor}</option>\n                    </select>\n                    <span class="settingByline" data-magic-id="versionExample"></span>\n                    <input type="hidden" name="versionLabel">\n                </fieldset>\n\n                <fieldset>\n                    <label>${i18n.guideline.status.statusLabel}</label>\n                    <select name="guidelineStatus" data-magic-id="guidelineStatus">\n                        <option value="NOTSET">${i18n.general.notSet}</option>\n                        <option value="DEV">${i18n.guideline.status.underDevelopment}</option>\n                        <option value="PUBLIC_REVIEW">${i18n.guideline.status.inPublicReview}</option>\n                        <option value="EXTERNAL_REVIEW">${i18n.guideline.status.inExternalReview}</option>\n                        <option value="INTERNAL_REVIEW">${i18n.guideline.status.inInternalReview}</option>\n                        <option value="INTERNAL_DRAFT">${i18n.guideline.status.inDraftInternal}</option>\n                        <option value="INTERNAL_PUBLISHED">${i18n.guideline.status.inPublishedInternal}</option>\n                        <option value="UPDATING">${i18n.guideline.status.inUpdate}</option>\n                        <option value="UPDATED">${i18n.msg.updatedStatus}</option>\n                    </select>\n                </fieldset>\n\n                <span class="contentMetaItem publishedStatus" data-magic-id="statusLabelPreview"></span>\n            </div>\n\n\n            <fieldset class="hideMe" data-magic-id="versionField">\n                <label>${i18n.settings.publishing.history.version} <span data-magic-id="version"></span></label>\n            </fieldset>\n\n            <div class="publishingPDFType">\n                <fieldset>\n                    <label>\n                        ${i18n.pdf.pdfType}\n                        <picture>\n                            <span class="icon questionSmlIcon" aria-label="tooltip icon"></span>\n                            <tool-tip inert role="tooltip" tip-position="right">${i18n.help.publishing.pdfAutoGenSettingsAndLinks}.</tool-tip>\n                        </picture>\n                    </label>\n                    <select name="pdfType" data-magic-id="pdfTypeSelect">\n                        <option value="MAGIC">${i18n.pdf.autoGenPdf}</option>\n                        <option value="EXTERNAL">${i18n.pdf.customLink}</option>\n                    </select>\n                </fieldset>\n\n                <fieldset class="hideMe" data-magic-id="customPdfField">\n                    <label>${i18n.pdf.linkToCustomPdf}</label>\n                    <input type="url" name="customPdfUrl" data-magic-id="customPdfUrl" placeholder="https://" />\n                    <span class="settingByline">${i18n.pdf.fullUrl}</span>\n                    <span class="formError hideMe" data-magic-id="customPdfError"></span>\n                </fieldset>\n            </div>\n\n            <fieldset>\n                <h4>${i18n.settings.publicSettings.label}</h4>\n                <label class="radioLabel"><input type="checkbox" name="isPublic" data-magic-id="isPublicChk" /> ${i18n.settings.publishing.publicAccess}</label>\n                <label class="radioLabel"><input type="checkbox" checked="checked" name="disableSubscriptions" data-magic-id="disableSubscriptions" /> ${i18n.subscription.sendUpdate}</label>\n                <label class="radioLabel"><input type="checkbox" checked="checked" name="isCurrentVersion" data-magic-id="setCurrent" readonly disabled/>${i18n.guideline.status.setCurrent}</label>\n            </fieldset>\n\n            <fieldset class="halfWidth">\n              <label>${i18n.settings.publishing.version.publishedDate}</label>\n              <input type="date" name="publishDate"\n                     data-magic-id="publishDate"\n                     required\n                     promptMessage="${i18n.general.valueRequired}"\n                     invalidMessage="Your date isn\'t formatted correctly."/>\n            </fieldset>\n\n            <fieldset class="halfWidth">\n              <label>${i18n.settings.publishing.version.lastSearch}</label>\n              <input type="date" name="publishLastSearchDate"\n                     required\n                     data-magic-id="publishLastSearchDate"\n                     promptMessage="${i18n.general.valueRequired}"\n                     invalidMessage="Your date isn\'t formatted correctly."/>\n            </fieldset>\n\n            <fieldset>\n                <h4>${i18n.general.comment}</h4>\n               <div class="publishComments" data-magic-id="publishComments"></div>\n            </fieldset>\n            \x3c!-- todo replace with FormButtons --\x3e\n            <div class="publishingButtons">\n                <input type="button" class="publishButton" value="${i18n.actions.publish}" data-magic-id="publishBtn" disabled/>\n                <input type="button" class="cancelButton" value="${i18n.actions.cancel}" data-magic-id="cancelBtn"/>\n            </div>\n        </form>\n    </div>\n</div>\n',this.ckeComments={},this.dialog=null,this.obj={},Object.assign(this,...arguments)}postCreate(){super.postCreate(),r(this.versionField,l,!this.edit),r(this.versionTypeField,l,this.edit),r(this.disableSubscriptions.parentElement,l,!u.getContent().subscriptions),this.ckeComments=new Tt({text:this.obj.publishComments,placeHolder:de.general.comment,toolbar:"MINI",location:"publishing_comments"}).placeAt(this.publishComments),this.isPublicChk.checked=this.obj.isPublic,0===this.obj.versionMajor&&0===this.obj.versionMinor||(this.setCurrent.disabled=!1,this.setCurrent.readonly=!1),this._loadPdfTypeAndUrl(),this._loadGuidelineStatus(),this.edit?(this.publishBtn.value=de.actions.update,this.version.innerHTML=this.obj.versionLabel,me.setFormValues(this.publishingForm,{isPublic:this.obj.isPublic,publishDate:this.obj.publishDate,publishLastSearchDate:this.obj.publishLastSearchDate,disableSubscriptions:this.obj.disableSubscriptions,isCurrentVersion:this.obj.isCurrentVersion.checked}),this.toggleHelp.remove(),this.help.remove(),this.disableSubscriptions.disabled=!0):this._setVersionLabel(),this._togglePdfFields(),this._updateVersionExample(),this._wireEvents()}startup(){return super.startup(),console.info("starting the publishing screen",this.obj),this.isValid(),Promise.resolve()}
126showPublicAccessWarning(){const e=this.obj.isPublic,t=this.isPublicChk.checked;e&&t!==e&&i.confirm({title:de.msg.warningSure,message:de.msg.warningNoPublic,mode:i.alertMode,yes:de.general.ok})}submitForm(){this.edit?this._updateGuideline():this._publishGuideline()}isValid(){const e=this.publishingForm.checkValidity(),t=this._isCustomPdfUrlValid();this.publishBtn.disabled=!(e&&t)}async validateCustomPdfUrl(){if("EXTERNAL"!==this.pdfTypeSelect.value)return this._clearCustomPdfError(),this.isValid(),!0;const e=await Ut(this.customPdfUrl.value.trim());return e.valid?(this._clearCustomPdfError(),this.isValid(),!0):(this._showCustomPdfError(e.error),!1)}_onCancel(){this._emit("show-history")}_onToggleHelp(){r(this.help,l)}_onVersionTypeChange(){this._setVersionLabel(),this._updateVersionExample()}_onPdfTypeChange(){this._togglePdfFields(),this.isValid()}_onCustomPdfInput(){this._clearCustomPdfError(),this.isValid()}_togglePdfFields(){const e="EXTERNAL"===this.pdfTypeSelect.value;r(this.customPdfField,l,!e),this.customPdfUrl.required=e}_loadPdfTypeAndUrl(){const e=this.edit?this.obj.pdfType||"MAGIC":this.obj.lastPdfType||"MAGIC";this.pdfTypeSelect.value=e,this.edit&&"EXTERNAL"===e&&this.obj.customPdfUrl&&(this.customPdfUrl.value=this.obj.customPdfUrl)}_loadGuidelineStatus(){const e=this.edit?this.obj.guidelineStatus||"NOTSET":this.obj.lastGuidelineStatus||this.obj.status||"NOTSET";this.guidelineStatus.value=e,this._updateStatusPreview()}_updateStatusPreview(){if(!this.statusLabelPreview)return;const e=this.guidelineStatus.selectedOptions[0],t=e?e.value:"NOTSET",i=e&&"NOTSET"!==t?e.textContent.trim():"";this.statusLabelPreview.className=`contentMetaItem publishedStatus ${t}`,this.statusLabelPreview.textContent=i}_onStatusChange(){this._updateStatusPreview()}_isCustomPdfUrlValid(){return"EXTERNAL"!==this.pdfTypeSelect.value||Rt(this.customPdfUrl.value.trim())&&O(this.customPdfError,l)}_showCustomPdfError(e){this.customPdfError.textContent=e,m(this.customPdfError,l),this.publishBtn.disabled=!0}_clearCustomPdfError(){this.customPdfError.textContent="",h(this.customPdfError,l)}async _updateGuideline(){const e=this.oid,t=this.publishingForm;if(!await this.validateCustomPdfUrl())return;const i={isPublic:this.isPublicChk.checked,publishDate:t.publishDate.value,publishLastSearchDate:t.publishLastSearchDate.value,publishComments:this.ckeComments.text,disableSubscriptions:!this.disableSubscriptions.checked,isCurrentVersion:t.isCurrentVersion.checked,pdfType:this.pdfTypeSelect.value,customPdfUrl:"EXTERNAL"===this.pdfTypeSelect.value?this.customPdfUrl.value.trim():null,guidelineStatus:this.guidelineStatus.value};this.publishBtn.disabled=!0,this.publishBtn.value=de.msg.publishing.updating;try{await p.publishingStores().updatePublishingData(e,i),this._emit("show-history")}catch(e){console.error(e),this.publishBtn.disabled=!1,this.publishBtn.value=de.actions.update}}async _publishGuideline(){const e=this.oid;if(!await this.validateCustomPdfUrl())return;const t={isPublic:this.isPublicChk.checked,versionType:this.publishingForm.versionType.value,publishDate:this.publishingForm.publishDate.value,publishLastSearchDate:this.publishingForm.publishLastSearchDate.value,publishComments:this.ckeComments.text||"",disableSubscriptions:!this.disableSubscriptions.checked,isCurrentVersion:this.publishingForm.isCurrentVersion.checked,pdfType:this.pdfTypeSelect.value,customPdfUrl:"EXTERNAL"===this.pdfTypeSelect.value?this.customPdfUrl.value.trim():null,guidelineStatus:this.guidelineStatus.value};console.info("PUBLISH",t),this.publishBtn.disabled=!0,this.publishBtn.value=de.general.submitted;try{await p.publishingStores().publishGuideline(e,t),this.dialog.hide(),i.confirm({id:"publishInProgressDialog",title:de.settings.publishing.inProgress,message:de.settings.publishing.pubSubmitted,yes:de.general.ok,mode:"ALERT"})}catch(e){console.error(e),this.publishBtn.value=de.errors.publishing.cantSubmitJob,this.publishBtn.disabled=!1}}_setVersionLabel(){this.publishingForm.elements.versionLabel.value=this._getVersionNumber()}_updateVersionExample(){this.versionExample&&(this.versionExample.textContent=this.edit?"":`${de.general.example} v${this._getVersionNumber()}`)}_getVersionNumber(){const e="MINOR"===this.publishingForm.versionType.value;return`${this.obj.versionMajor+(e?0:1)}.${e?this.obj.versionMinor+1:0}`}_wireEvents(){this.own(s(this.isPublicChk,"change",this.showPublicAccessWarning.bind(this)),s(this.publishBtn,"click",this.submitForm.bind(this)),s(this.cancelBtn,"click",this._onCancel.bind(this)),s(this.publishDate,"change",this.isValid.bind(this)),s(this.publishLastSearchDate,"change",this.isValid.bind(this)),s(this.toggleHelp,"click",this._onToggleHelp.bind(this)),s(this.versionTypeSelect,"change",this._onVersionTypeChange.bind(this)),s(this.guidelineStatus,"change",this._onStatusChange.bind(this)),s(this.pdfTypeSelect,"change",this._onPdfTypeChange.bind(this)),s(this.customPdfUrl,"input",this._onCustomPdfInput.bind(this)),s(this.customPdfUrl,"blur",this.validateCustomPdfUrl.bind(this)))}}class jt extends a{constructor(e){super(...arguments),this.i18n=de,this.templateString='<div class="publishedVersions">\n    <div class="versionRow">\n        <div class="versionLeft boldVersion">v${data.versionLabel}</div>\n        <div class="versionRight">
126\n            <span class="currentVersionLabel hideMe" data-magic-id="currentLabel">${i18n.guideline.mostCurrentVersion}</span>\n            <span class="publishDate"><b>${i18n.guideline.status.inPublishedShort}:</b> ${data.publishDate}</span>\n            <span class="publishDate"><b>${i18n.settings.publishing.version.lastSearch}:</b> ${data.publishLastSearchDate}</span>\n            <label class="publicVersionLabel" data-magic-id="isPublicLabel">\n                <input type="checkbox" data-magic-id="isPublicCheckBox">\n                <span class="labelText">${i18n.contentList.public}</span>\n            </label>\n            <div class="versionCopyLinkWrap">\n                <span class="viewLink" data-magic-id="viewVersion"><span class="icon eyeIcon"></span> ${i18n.general.view}</span>\n                <span class="copyLink" data-magic-id="copyMenuLabel"><span class="icon linkIcon"></span>${i18n.actions.copy}</span>\n            </div>\n            <div class="copyMenu hideMe" data-magic-id="copyMenu">\n                <span class="copyLinkMenu" data-magic-id="copyLink"><span class="icon linkIcon"></span> ${i18n.actions.copyLink}</span>\n                <a class="pdfLink" href="${data.pdfLocation}" target="_blank" rel="noopener" data-magic-id="downloadPdf"><span class="icon pdfIcon"></span> ${i18n.settings.publishing.history.pdf}</a>\n                <a class="jsonLink" href="${data.jsonLocation}" target="_blank" rel="noopener" data-magic-id="downloadJson"><span class="icon fileIcon"></span> ${i18n.general.json}</a>\n            </div>\n        </div>\n    </div>\n    <div class="versionRow">\n        <div class="versionLeft versionLink">\n            <div data-magic-id="editHistoryBtn">${i18n.actions.edit}</div>\n        </div>\n        <div class="versionRight versionComments">\n            <span>\n                <span class="publishedStatus UPDATED">Updated</span>\n                ${!data.publishComments}\n            </span>\n        </div>\n    </div>\n    <div data-magic-id="_copyHolder"></div>\n</div>\n',this._copyMenuOpen=!1,this.id=`magic_publishVersion_${e.data.guidelineId}`,Object.assign(this,...arguments)}startup(){super.startup(),console.debug("showing history for -",this.data),this.isPublicCheckBox.checked=this.data.isPublic,this.data.isCurrentVersion&&(h(this.domNode,A),m(this.currentLabel,l)),this.own(s(this.viewVersion,"click",this.viewRecommendation.bind(this)),s(this.copyMenuLabel,"click",this.toggleCopyMenu.bind(this)),s(this.copyLink,"click",this._copyLink.bind(this)),s(this.downloadPdf,"click",this._download.bind(this)),s(this.downloadJson,"click",this._download.bind(this))),u.canUserEdit()?u.areWeOffline()||!u.isContentAdmin()?(this.isPublicCheckBox.disabled=!0,h(this.editHistoryBtn,l)):this.own(s(this.isPublicCheckBox,"click",this.setPublicAccess.bind(this)),s(this.editHistoryBtn,"click",(()=>{this._emit("edit-history",this.data)}))):(r(this.editHistoryBtn,l,!0),r(this.isPublicLabel,"noHover",!0),r(this.isPublicLabel,l,!this.data.isPublic),h(this.isPublicCheckBox,l))}isPublic(){return this.isPublicCheckBox.checked}setPublicAccess(){const e=this.isPublicCheckBox.checked;p.publishingStores().setPublicAccess(this.data.guidelineId,e).then((()=>{this.data.isPublic=e}))}toggleCopyMenu(){r(this.copyMenu,l,this._copyMenuOpen),this._copyMenuOpen=!this._copyMenuOpen}viewRecommendation(){window.open(`/#/guideline/${this.data.guidelineId}`,"_blank")}_copyLink(){this.toggleCopyMenu();const e=`${window.location.origin}/#/guideline/${this.data.guidelineId}`;We.copy(e,this._copyHolder),i.confirm({title:de.actions.copyLink,message:de.msg.copyLink,yes:de.general.ok,mode:i.alertMode}).then((()=>{}),(()=>{}))}_download(){this.toggleCopyMenu()}}class Vt extends a{constructor(e){super(...arguments),this.i18n=de,this.templateString='<div class="publishingHistory dialogForm">\n    <div class="publishHistoryTop">\n        <h4>${i18n.settings.publishing.history.versionHistory}</h4>\n        <span class="subscribeLink" data-magic-id="logBtn">${i18n.settings.publishing.logs}</span>\n        <span data-magic-id="subscribeNode" class="subscribeLinkWrap">
126\n            <span class="subscribeLink" data-magic-id="subscriberBtn">${i18n.guideline.subscribers}</span>\n            <span class="subscribeLink" data-magic-id="subscribeToBtn">${i18n.subscription.subscribeUpdates}</span>\n        </span>\n        <span data-magic-id="publishingFormNode">\n            <input type="button" class="publishButton" value="${i18n.actions.publish}" data-magic-id="publishBtn"/>\n        </span>\n    </div>\n    <div class="publishHistoryWrap">\n        <div class="publishHistoryLinkWrap">\n            <div data-magic-id="setCurrent" class="publishCurrent">\n                <span class="permalinkTitle">${i18n.guideline.mostCurrentVersion}</span>\n                <select data-magic-id="currentVersion"></select>\n                <picture>\n                    <span class="icon questionSmlIcon" aria-label="tooltip icon"></span>\n                    <tool-tip inert role="tooltip" tip-position="right">${i18n.help.mostCurrentVersionInfo}</tool-tip>\n                </picture>\n            </div>\n            <div class="permalinkWrap">\n                <span class="permalinkTitle">${i18n.general.permalink}</span>\n                <picture>\n                    <span class="icon questionSmlIcon" aria-label="tooltip icon"></span>\n                    <tool-tip inert role="tooltip" tip-position="left">${i18n.sectionLinks.updatedLink}</tool-tip>\n                </picture>\n                <input type="text" data-magic-id="permalink">\n                <input type="button" value="${i18n.actions.copy}" data-magic-id="copyLink"/>\n            </div>\n        </div>\n        <div class="loadingMessage hideMe" data-magic-id="loadSpin"></div>\n        <div data-magic-id="publicationsList"></div>\n    </div>\n    <div data-magic-id="_copyHolder"></div>\n</div>\n',this._publishedVersion=[],Object.assign(this,...arguments)}startup(){return super.startup(),console.info("starting the publishing screen"),this._publishedVersion=[],this.permalink.value=`${window.location.origin}/#/guideline/${u.getGuidelineShortCode()}`,this.own(s(this.copyLink,"click",this._copyLink.bind(this))),u.isContentAdmin()&&u.showEditControls()&&u.isDraft()?this.own(s(this.publishBtn,"click",(()=>{this._emit("publish")})),s(this.currentVersion,"change",(e=>{this.setCurrentVersion(Number(e.target.value))}))):(this.setCurrent.remove(),this.publishingFormNode.remove()),u.isContentAdmin()&&u.isDraft()?this.own(s(this.logBtn,"click",(()=>{this._emit("show-logs")}))):this.logBtn.remove(),r(this.subscribeNode,l,!u.getContent().subscriptions),this._subscriptions(),this.refreshList()}setCurrentVersion(e){this.publicationsList.querySelectorAll(".publishedVersions.current").forEach((e=>m(e,A))),this.publicationsList.querySelectorAll("[data-magic-id=currentLabel]").forEach((e=>h(e,l))),p.publishingStores().setCurrentVersion(e).then((()=>{let t=document.querySelector(`[widgetid="magic_publishVersion_${e}"]`);h(t,A),m(t.querySelector("[data-magic-id=currentLabel]"),l)}))}refreshList(){let e;const t=new Promise(((t,i)=>{e=t}));return this.publicationsList.replaceChildren(),r(this.loadSpin,l,!1),this.currentVersion.replaceChildren(),p.publishingStores().getHistory(u.getContentId()).then((t=>{t.sort(((e,t)=>t.guidelineId-e.guidelineId)).forEach((e=>{const t=new jt({data:e}).placeAt(this.publicationsList);this.own(t,s(t,"edit-history",(e=>{this._emit("edit-history",e.detail)})));const i=document.createElement("option");i.textContent=`v${e.versionLabel}`,i.value=e.guidelineId,i.selected=e.isCurrentVersion,this.currentVersion.appendChild(i),this._publishedVersion.push(t)})),r(this.loadSpin,l,!0),e()})),t}_copyLink(){We.copy(this.permalink.value,this._copyHolder),i.confirm({title:de.actions.copyLink,message:de.msg.copyLink,mode:i.alertMode,yes:de.general.ok})}_subscriptions(){u.isContentAdmin()?this.own(s(this.subscriberBtn,"click",(()=>{this._emit("show-subscription-list")}))):this.subscriberBtn.remove(),u.isSubscribed()&&(this.subscribeToBtn.innerText=de.subscription.unsubscribe),this.own(s(this.subscribeToBtn,"click",(()=>{this._emit("show-subscribe-to")})))}}let Gt;class Ht extends P{constructor(e){super(...arguments),this.obj={},this.params=e||{},Object.assign(this,e)}showEventsLogs(){const e=new fe({guidelineId:u.getGuidelineId(),inDialog:!0,realtimeOnly:!0,hideOrg:!0});e.startup().then((()=>{const t=de.settings.publishing.logs;Gt=this._openDialog(t,e,"settingsPublishing")})),this.own(s(e,"go-back",this.showHistory.bind(this))),this.trackEvent(b.show,"publishing events logs")}showHistory(){const e=this,t=new Vt(this.params);t.startup().then((()=>{Gt=e._openDialog(de.settings.publishing.label,t)})),this.own(s(t,"publish",this.showPublishDialog.bind(this)),s(t,"edit-history",(e=>{this.showPublishDialog({guideline:e.detail})})),s(t,"show-logs",this.showLogs.bind(this)),s(t,"show-subscribe-to",this.showSubscribeTo.bind(this)),s(t,"show-subscription-list",this.showSubscriptionList.bind(this))),this.trackEvent(b.show,"publishing history")}showLogs(){const e=new fe({guidelineId:u.getGuidelineId(),orgId:u.getContentOrgId(),guidelineShortCode:u.getGuidelineShortCode(),inDialog:!0});e.startup().then((()=>{const t=de.settings.publishing.realtimePubLogs;Gt=this._openDialog(t,e)})),this.own(s(e,"go-back",this.showHistory.bind(this))),this.trackEvent(b.show,"publishing logs")}showPublishDialog(e={}){const t=this.params;if(t.oid=e.guideline?.guidelineId||t.oid,t.obj=e.guideline||t.obj,t.edit=!!e.guideline,!e.guideline){const e=Gt.content._publishedVersion.slice(0)[0];t.obj.isPublic=e?.isPublic()||!1,t.obj.lastPdfType=e?.data?.pdfType,t.obj.lastGuidelineStatus=e?.data?.guidelineStatus,t.edit=!1}const i=new qt(t);i.startup().then((()=>{const t=e.guideline?de.actions.edit:de.actions.publish;Gt=this._openDialog(t,i)})),this.own(s(i,"show-history",this.showHistory.bind(this))),this.trackEvent(b.show,"publishing dialog")}showSubscribeTo(){const e=new ze({});e.startup().then((()=>{const t=u.isSubscribed()?de.subscription.unsubscribe:de.subscription.subscribeUpdates;Gt=this._openDialog(t,e)})),this.own(s(e,"go-back",this.showHistory.bind(this))),this.trackEvent(b.show,"publishing subscribe to")}showSubscriptionList(){const e={data:{guidelineId:u.getGuidelineId(),guidelineShortCode:u.getGuidelineShortCode()}},t=new Me(e);t.startup().then((()=>{const e=de.guideline.subscribers;Gt=this._openDialog(e,t)})),this.own(s(t,"go-back",this.showHistory.bind(this))),this.trackEvent(b.show,"publishing subscription list")}_openDialog(e,t){Gt&&Gt.hide();const i=new w({title:e,content:t});return i.startup(),Gt=i,i}}class Wt extends $e{static get properties(){return{file:{type:Object}}}baseClass="pdfFile";file={};constructor(e){super(e),Object.assign(this,e)}render(){return Oe`
127            <div class="pdfFileContent">
128                <div class="pdfVersion">
129                    v${this.file.guidelineVersion}
130                </div>
131                <span>
132                    <span class="pdfFileTitle">${this.file.displayName}</span>
133                    <div class="pdfFileValues">
134                    ${this.file.fileName?Oe`
135                            <span class="pdfFileValue"><b>${this.file.refCount}</b> ${de.clinical.references}</span>
136                            <span class="pdfFileValue"><b>${this.file.picoCount}</b> ${de.pico.picos}</span>
137                            <span class="pdfFileValue"><b>${this.file.recCount}</b> ${de.recommendation.recommendations}</span>`:Oe`<span>${de.pdf.customLink}</span>`}
138                    </div>
139                    ${this._renderCreated()}
140                </span>
141            </div>
142            <div class="pdfFileBtnWrap">
143                ${this.file.hasWord?Oe`<button class="wordButton" data-magic-id="openFileWord" @click=${this._onOpenWord.bind(this)}>${de.pdf.word}</button>`:Le}
144                <button class="pdfButton" data-magic-id="openFilePDFIcon" @click=${this._onOpenPdf.bind(this)}>PDF</button>
145            </div>`}_onOpenPdf(){const e=this.file.fileName||`custom:${this.file.guidelineId}`;this._openInNewTab(this.file.fileName,`pdf:${e}`)}_onOpenWord(){this._openInNewTab(this.file.fileName.replace(".pdf",".docx"),`docx:${this.file.fileName}`)}_openInNewTab(e,t){const i=this.file.location.replace("s3.amazonaws.com/","");window.open(`${i}${e}`,"_blank"),this.trackEvent(b.download,t)}_renderCreated(){const e=this.file.createdBy,t=v.shortDateTimeFromISO(this.file.createdAt);if(!e&&!t)return Le;return Oe`<div class="pdfFileValues">${e&&t?`Created by ${e} at ${t}`:e?`Created by ${e}`:`Created ${t}`}</div>`}}const zt="render-pdf",Kt="render-complete";function Yt(e){return e.domNode}class Qt extends $e{static get properties(){return{fileWidgets:{type:Array}}}baseClass="settingsGeneral";guideline={};fileWidgets=null;constructor(e){super(e),Object.assign(this,e)}startup(){super.startup(),this._loadFiles()}render(){return Oe`
146            <div class="pdfDialogTop">
147                <h4>${de.general.history}</h4>
148                <div class="pdfDialogTopRight">
149                    ${u.isContentAdmin()?Oe`<span data-magic-id="pdfSettingBtn" class="pdfSettingsLink" @click=${this._onEditSettings.bind(this)}>${de.settings.exporting.exportItem}</span>`:Le}<button data-magic-id="pdfCreateBtn" @click=${this._onCreate.bind(this)}>${de.actions.exporting.exportCreate}</button>
150                </div>
151            </div>
152            <div class="files" data-magic-id="files">${this._renderFiles()}</div>`}async _loadFiles(){try{const e=await p.guidelineStore().getLastPDFRenders(u.getContentShortCode());this.fileWidgets=e.map(this._createFileWidget,this)}catch(e){console.error("can not load pdf renders",e),this.fileWidgets=[]}}_createFileWidget(e){const t=new Wt({file:e});return t.startup(),t}_onCreate(){this._emit(zt)}_onEditSettings(){this._emit("edit-setting")}_renderFiles(){return null===this.fileWidgets?this.renderLoading():0===this.fileWidgets.length?de.errors.exporting.noneMade:this.fileWidgets.map(Yt)}}const Jt="dragOver";class Xt extends a{constructor(){super(...arguments),this.templateString='<div class="settingsGeneral">\n    <form data-magic-id="renderForm">\n        <fieldset data-magic-id="pdfSetting" class="pdfCoverWrap">\n            <input type="hidden" name="pdfCoverPage.image" data-magic-id="pdfCoverPageImage" />\n            <input type="hidden" name="pdfCoverPage.fileName" data-magic-id="pdfCoverPageFileName" />\n            <input type="hidden" name="pdfCoverPage.fileType" data-magic-id="pdfCoverPageFileType" />\n            <input type="hidden" name="pdfCoverPage.fileUrl" data-magic-id="pdfCoverPageFileUrl" />\n\n            <input type="hidden" name="pdfLastPage.image" data-magic-id="pdfLastPageImage" />\n            <input type="hidden" name="pdfLastPage.fileName" data-magic-id="pdfLastPageFileName" />\n            <input type="hidden" name="pdfLastPage.fileType" data-magic-id="pdfLastPageFileType" />\n            <input type="hidden" name="pdfLastPage.fileUrl" data-magic-id="pdfLastPageFileUrl" />\n\n            <div class="pdfCoverText">\n                <h4 class="bottomMargin pdfTopHeading">\n                    ${i18n.settings.general.pdfCover.title}\n                    <picture>
152\n                        <span class="icon questionSmlIcon" aria-label="tooltip icon"></span>\n                        <tool-tip inert role="tooltip" tip-position="bottom">${i18n.settings.general.pdfCover.msg}<br><br>${i18n.settings.general.pdfCover.msgContent}</tool-tip>\n                    </picture>\n                </h4>\n            </div>\n            <div class="pdfCoverDrop">\n                <div class="pdfDropZone" data-magic-id="pdfCoverPageDrop"></div>\n                <h4>Cover page image</h4>\n                <span class="selectPhrase">Click or drop image</span>\n                <span class="removeLink" data-magic-id="removePdfCoverPageBtn">${i18n.actions.remove}</span>\n            </div>\n            <fieldset class="A4Fieldset">\n                <label>PDF Page Size</label>\n                <select data-magic-id="pdfPageSize" name="pdfPageSize" class="narrowInput">\n                    <option value="A4">A4</option>\n                    <option value="US_LETTER">US LETTER</option>\n                </select>\n            </fieldset>\n            <div class="pdfCoverDrop">\n                <div class="pdfDropZone" data-magic-id="pdfLastPageDrop"></div>\n                <h4>End page image</h4>\n                <span class="selectPhrase">Click or drop image</span>\n                <span class="removeLink" data-magic-id="removePdfLastPageBtn">Remove</span>\n            </div>\n        </fieldset>\n        <hr>\n        <h4 class="bottomMargin">${i18n.general.styling}</h4>\n        <div class="topPdfSettings">\n            <fieldset>\n                <label>${i18n.general.section.body.default}</label>\n                <select name="pdfSectionText">\n                    <option value="ONE_COL">${i18n.settings.customization.oneColumn}</option>\n                    <option value="TWO_COL">${i18n.settings.customization.twoColumn}</option>\n                </select>\n            </fieldset>\n            <fieldset>\n                <label>${i18n.settings.customization.pdfColumnTabs}</label>\n                <select name="pdfTabText">\n                    <option value="ONE_COL">${i18n.settings.customization.oneColumn}</option>\n                    <option value="TWO_COL">${i18n.settings.customization.twoColumn}</option>\n                </select>\n            </fieldset>\n            <fieldset class="withNewTip">\n                <label>\n                    ${i18n.actions.trackChanges}\n                    <picture>\n                        <span class="icon questionSmlIcon" aria-label="tooltip icon"></span>\n                        <tool-tip inert="" role="tooltip" tip-position="top">${i18n.pdf.tcPdfInfo}</tool-tip>\n                    </picture>\n                </label>\n                <select name="pdfTrackChanges" >\n                    <option value="SHOW_TC" selected>${i18n.settings.customization.pdfTrackChanges}</option>\n                    <option value="REJECT_TC">${i18n.settings.customization.pdfTrackChangesNo}</option>\n                    <option value="ACCEPT_TC">${i18n.settings.customization.pdfTrackChangesAccepted}</option>\n                </select>\n            </fieldset>\n            <fieldset>\n                <label>${i18n.settings.customization.pdfColor}</label>\n                <input type="color" class="colorInput" data-magic-id="pdfSectionTitleColor" name="pdfSectionTitleColor"/>\n            </fieldset>\n        </div>\n        <hr>\n        <h4 class="bottomMargin">${i18n.contentList.content}</h4>\n        <div class="pdfBottomSettings">\n            <fieldset>\n                <label class="radioLabel"><input type="checkbox" name="pdfHidePicos" />${i18n.settings.customization.pdfPico}</label>\n            </fieldset>\n            <fieldset>\n                <label class="radioLabel"><input type="checkbox" name="pdfPicoReferences" value="true"/>${i18n.settings.customization.pdfPicoRef}</label>\n            </fieldset>\n            <fieldset>\n                <label class="radioLabel"><input type="checkbox" name="pdfPicoInAppendix" />${i18n.settings.customization.pdfPicoAppendix}</label>\n            </fieldset>\n            <fieldset>\n                <label class="radioLabel">
152<input type="checkbox" name="pdfPicoFootNotes" />${i18n.settings.customization.pdfFootnotes}</label>\n            </fieldset>\n            <fieldset>\n                <label class="radioLabel"><input type="checkbox" name="pdfPageB" value="true"/>${i18n.settings.customization.pdfPageB}</label>\n            </fieldset>\n            <fieldset>\n                <label class="radioLabel"><input type="checkbox" name="pdfSubChpPageBreak" />${i18n.settings.customization.pdfPageBrSub}</label>\n            </fieldset>\n            <fieldset>\n                <label class="radioLabel"><input type="checkbox" name="pdfPage2" value="true"/>${i18n.settings.customization.pdfPage2}</label>\n            </fieldset>\n            <fieldset>\n                <label class="radioLabel"><input type="checkbox" name="pdfTOC" />${i18n.settings.customization.pdfToC}</label>\n            </fieldset>\n            <fieldset>\n                <label class="radioLabel"><input type="checkbox" name="pdfSOR" />${i18n.settings.customization.pdfSoR}</label>\n            </fieldset>\n            <fieldset>\n                <label class="radioLabel"><input type="checkbox" name="pdfWatermark" />${i18n.settings.customization.pdfWatermark}</label>\n            </fieldset>\n            <fieldset>\n                <label class="radioLabel"><input type="checkbox" name="pdfHideHiddenRecInDraft" />${i18n.settings.customization.pdfHiddenRec}</label>\n            </fieldset>\n            <fieldset>\n                <label class="radioLabel"><input type="checkbox" name="pdfCiteSquare" />${i18n.settings.customization.pdfCitationBrackets}</label>\n            </fieldset>\n        </div>\n    </form>\n</div>\n',this.i18n=de,this.error=he,this.showControls=!1,this.dialog={},this.guideline={},Object.assign(this,...arguments)}postCreate(){super.postCreate(),console.info("Render PDF form :",this.guideline,this.admin),this.setImages(),this._setupImageHandler(),u.areWeOnline()&&this.admin&&this.currentDraft&&(this.showControls=!0,this.own(s(this.renderForm.elements.pdfHidePicos,"change",this.toggleHidePicoOption.bind(this))))}startup(){super.startup();const e=this.renderForm.elements,t=this.showControls,i=this.guideline.pdfSettings;if(e.pdfPageSize.readonly=!t,e.pdfPageSize.value=i.pdfPageSize,e.pdfTabText.value=i.pdfTabText,e.pdfSectionText.value=i.pdfSectionText,e.pdfSectionTitleColor.value=i.pdfSectionTitleColor||"#1B6292",e.pdfPageB.checked=i.pdfPageB,e.pdfPage2.checked=i.pdfPage2,e.pdfPicoReferences.checked=i.pdfPicoReferences,e.pdfSOR.checked=i.pdfSOR,e.pdfTOC.checked=i.pdfTOC,e.pdfTrackChanges.value=i.pdfTrackChanges,e.pdfWatermark.checked=i.pdfWatermark,e.pdfHideHiddenRecInDraft.checked=i.pdfHideHiddenRecInDraft,e.pdfPicoInAppendix.checked=i.pdfPicoInAppendix,e.pdfPicoFo
152otNotes.checked=i.pdfPicoFootNotes,e.pdfHidePicos.checked=i.pdfHidePicos,e.pdfCiteSquare.checked=i.pdfCiteSquare,e.pdfSubChpPageBreak.checked=i.pdfSubChpPageBreak,this.renderForm.querySelectorAll("input").forEach((e=>{e.disabled=!t,e.readOnly=!t})),this.renderForm.querySelectorAll("select").forEach((e=>{e.disabled=!t,e.readOnly=!t})),t){const e=new Image;e.onload=()=>((e.width>1800||e.height>1800)&&alert("Your image is on the small size"),!0),this._setupDropHandlers(e)}else h(this.removePdfCoverPageBtn,l),h(this.pdfPageSize,l)}getFormValues(){const e=this.renderForm,t=new FormData(e),i={pdfCoverPage:{},pdfLastPage:{}};return e.checkValidity()?(i.pdfCoverPage.background=this.pdfCoverPageDrop.style.background,i.pdfLastPage.background=this.pdfLastPageDrop.style.background,t.forEach(((e,t)=>{"on"===e&&(e=!0),"false"===e&&(e=!1),t.includes("pdfCoverPage.")?i.pdfCoverPage[t.replace("pdfCoverPage.","")]=e:t.includes("pdfLastPage.")?i.pdfLastPage[t.replace("pdfLastPage.","")]=e:i[t]=e})),console.info("PDF Settings",i),i):null}isFormValid(){return this.renderForm.checkValidity()}removePdfCoverPage(){this.clearPdfCoverPage(),this.pdfCoverPageFileUrl.value="REMOVE"}clearPdfCoverPage(){h(this.removePdfCoverPageBtn,l),this.pdfCoverPageDrop.style.background="",this.pdfCoverPageImage.value="",this.pdfCoverPageFileName.value="",this.pdfCoverPageFileType.value=""}removePdfLastPage(){this.clearPdfLastPage(),this.pdfLastPageFileUrl.value="REMOVE"}clearPdfLastPage(){h(this.removePdfLastPageBtn,l),this.pdfLastPageDrop.style.background="",this.pdfLastPageImage.value="",this.pdfLastPageFileName.value="",this.pdfLastPageFileType.value=""}setImages(){this.clearPdfCoverPage(),this.clearPdfLastPage();const e=this.guideline.pdfSettings;this._renderImage(e.pdfCoverPage,this.pdfCoverPageDrop,this.removePdfCoverPageBtn),this._renderImage(e.pdfLastPage,this.pdfLastPageDrop,this.removePdfLastPageBtn)}toggleHidePicoOption(){const e=this.renderForm.elements,t=e.pdfHidePicos.checked;r(e.pdfPicoFootNotes.parentElement.parentElement,l,t),r(e.pdfPicoInAppendix.parentElement.parentElement,l,t),r(e.pdfPicoReferences.parentElement.parentElement,l,t)}_setupImageHandler(){this.guideline.pdfSettings.pdfCoverPage&&this.own(s(this.removePdfCoverPageBtn,"click",this.removePdfCoverPage.bind(this))),this.guideline.pdfSettings.pdfLastPage&&this.own(s(this.removePdfLastPageBtn,"click",this.removePdfLastPage.bind(this)))}_renderImage(e,t,i){e.background&&(t.style.background=e.background),e.fileUrl&&(t.style.background=e.fileUrl.includes("tiff")?"url('/app/images/tiff-placeholder.png') no-repeat center":`url(${e.fileUrl}) no-repeat center`),r(i,l,!(e.fileUrl||e.background))}_setupDropHandlers(e){this._setupDropHandlerForElement("Cover",e),this._setupDropHandlerForElement("Last",e)}_setupDropHandlerForElement(e,t){this[`pdf${e}PageDrop`].ondragover=()=>(h(this[`pdf${e}PageDrop`],Jt),!1),this[`pdf${e}PageDrop`].ondragend=()=>(m(this[`pdf${e}PageDrop`],Jt),!1),this[`pdf${e}PageDrop`].ondrop=i=>(m(this[`pdf${e}PageDrop`],Jt),i.preventDefault(),this._dropImg(e,i.dataTransfer.files[0],t),!1),this[`pdf${e}PageDrop`].onclick=()=>{const i=document.createElement("input");return i.setAttribute("type","file"),i.click(),i.onchange=i=>{this._dropImg(e,i.target.files[0],t)},!1}}_dropImg(e,t,i){const s=new FileReader;s.onload=s=>{i.src=s.target.result,this[`pdf${e}PageImage`].value=s.target.result,this[`pdf${e}PageDrop`].style.background="image/tiff"===t.type?"url('/app/images/tiff-placeholder.png') no-repeat center":`url(${s.target.result}) no-repeat center`},this[`pdf${e}PageFileName`].value=t.name,this[`pdf${e}PageFileType`].value=t.type.split("/")[1].split("+")[0],m(this[`removePdf${e}PageBtn`],l),["image/png","image/jpeg","image/gif","image/svg+xml","image/tiff"].includes(t.type)?s.readAsDataURL(t):alert("Unsupported file type. Only png, jpeg, gif, svg, tiff are allowed.")}}class Zt extends a{dialog={};formButtons={};formButtonsArgs={submitLabel:de.actions.createPdf,successMsg:de.general.success,failMsg:de.errors.exporting.exportItem,help:""};saveSettings=!1;_settings=null;_settingsMode=null;_files=null;_args={};_saveDiv=null;constructor(){super(...arguments),this.templateString='<div class="pdfFile dialogForm">\n    <div data-magic-id="contentNode"></div>\n</div>',this.i18n=de,Object.assign(this,...arguments)}postCreate(){super.postCreate(),this._args={guideline:this.guideline,admin:this.admin,currentDraft:this.currentDraft,dialog:this.dialog},this.formButtons=new c(this.formButtonsArgs,this.dialogFormButtons),this.formButtons.startup(),this.formButtons.enableSummit(),this.formButtons.hide()}
152startup(){super.startup(),this.showFiles(),this.own(s(this._files,"edit-setting",this.updateSettings.bind(this)),s(this._files,zt,this.renderPDF.bind(this)),s(this.formButtons,"cancel",this.showFiles.bind(this)),s(this.formButtons,"submit",(()=>{"RENDER"===this._settingsMode?this._render():this._update()})))}showFiles(){this._files||(this._files=new Qt(this._args),this._files.startup()),this._saveDiv?.classList.add(l),this.formButtons.hide(),this.contentNode.replaceChildren(this._files.domNode)}updateSettings(){this._settings||(this._settings=new Xt(this._args),this._settings.updateMode=!0,this._settings.startup()),this._saveDiv?.classList.add(l),this._settingsMode="SETTINGS",this.formButtons.setReady(de.actions.pdfSaveAsDefault),this.formButtons.show(),this.formButtons.enableSummit(),this._settings.setImages(),this.contentNode.replaceChildren(this._settings.domNode)}renderPDF(){this._settings||(this._settings=new Xt(this._args),this._settings.renderMode=!0,this._settings.startup()),!this._saveDiv&&u.isContentAdmin()&&this._saveOnRenderCheckbox(),this._saveDiv?.classList.remove(l),this._settingsMode="RENDER",this.formButtons.setReady(de.actions.exporting.exportCreate),this.formButtons.show(),this.formButtons.enableSummit(),this.contentNode.replaceChildren(this._settings.domNode)}_update(){if(!this._settings.isFormValid())return void console.warn("form is not valid");const e=this._settings.getFormValues();this.formButtons.disableSummit(),p.guidelineStore().updatePDFSettings(this.guideline.guidelineId,e).then((()=>{u.setGuidelinePDFSettings(e),this.trackEvent(b.save,`guideline:${this.guideline.guidelineId}:pdf`),this.showFiles()}))}_render(){if(!this._settings.isFormValid())return void console.warn("form is not valid");const e=this._settings.getFormValues();e.saveSettings=this.saveSettings,this.formButtons.disableSummit(),p.guidelineStore().renderPDF(this.guideline.guidelineId,e).then((()=>{this.saveSettings&&u.setGuidelinePDFSettings(e),this.trackEvent(b.exported,`guideline:${u.getContentId()}:pdf`),this._emit(Kt,{success:!0})}),(e=>{console.error("can not render pdf",e),this._emit(Kt,{success:!1})}))}_saveOnRenderCheckbox(){this._saveDiv=document.createElement("div"),this._saveDiv.className="saveSettings";const e=document.createElement("input");e.type="checkbox",e.id="saveOnRenderCheckbox",e.onclick=e=>{this.saveSettings=e.target.checked};const t=document.createElement("label");t.htmlFor="saveOnRenderCheckbox",t.textContent=de.actions.pdfSaveAsDefault,this._saveDiv.appendChild(e),this._saveDiv.appendChild(t),this.dialog.footer.appendChild(this._saveDiv)}}class ei extends a{constructor(){super(...arguments),this.templateString='<div class="checkListItem">\n    <label><input type="checkbox" data-magic-id="chkBox" /> ${taskText}</label>\n    <textarea data-magic-id="textBox"></textarea>\n</div>\n',this.taskText="",Object.assign(this,...arguments),this.taskText=(this.task||"").cleanHTML()}postCreate(){super.postCreate(),this.textBox.value=this.comment,this.chkBox.checked=this.isChecked,u.canUserEdit()?(this.chkBox.onchange=this.checkItem.bind(this),this.textBox.onblur=this.checkItem.bind(this)):(this.textBox.readOnly=!0,this.chkBox.readOnly=!0)}checkItem(){const e={itemId:this.itemId,comment:this.textBox.value,isChecked:this.chkBox.checked};p.checkListStore().updateGuidelineChecklist(this.oid,e).then((()=>{console.info("Updated ",e)}))}}class ti extends a{constructor(){super(...arguments),this.i18n=de,this.templateString='<div class="settingsChecklist">\n    <p>${!i18n.settings.checklist.explanation}</p>\n    <h3 data-magic-id="s1">${i18n.guideline.checklist.phase1}</h3>\n    <div data-magic-id="chkPhase1" class="checkListGroup"></div>\n    <h3 data-magic-id="s2">${i18n.guideline.checklist.phase2}</h3>\n    <div data-magic-id="chkPhase2"  class="checkListGroup"></div>\n    <h3 data-magic-id="s3">${i18n.guideline.checklist.phase2}</h3>\n    <div data-magic-id="chkPhase3" class="checkListGroup"></div>\n</div>\n',Object.assign(this,...arguments)}postCreate(){super.postCreate(),console.info(`>> check list for ${this.type} id: ${this.oid}`,this.obj);
152p.checkListStore().getGuidelineChecklist(this.oid).then((e=>{console.info("check list items: ",e),[1,2,3].forEach((t=>{e[t].forEach((e=>{e.canEdit=this.currentDraft,this.addChecks(e,t)}))}))})),this.own(s(this.s1,"click",(()=>{r(this.chkPhase1,l)})),s(this.s2,"click",(()=>{r(this.chkPhase2,l)})),s(this.s3,"click",(()=>{r(this.chkPhase3,l)})))}addChecks(e,t){e.oid=this.oid,e.type=this.type,new ei(e).placeAt(this[`chkPhase${t}`])}}class ii extends a{data={};formButtonsArgs={};_cacheData={};constructor(t){super(...arguments),this.id=e.getUniqueId(this.constructor.name),this.i18n=de,this.templateString='<div class="milestone">\n    <form class="milestoneEdit hideMe" data-magic-id="taskForm">\n        <div>\n            <input type="hidden" name="oid" value="${data.oid}">\n            <input type="hidden" name="itemId" value="${data.itemId}">\n            <label for="status_${id}">${i18n.actions.setStatus}</label>\n            <span class="milestoneStatus">\n                <select id="status_${id}" name="status">\n                    <option value="NEW">${i18n.actions._new}</option>\n                    <option value="IN_PROGRESS">${i18n.guideline.status.inProgress}</option>\n                    <option value="DONE">${i18n.actions.done}</option>\n                    <option value="INACTIVE">${i18n.guideline.status.inactive}</option>\n                </select>\n            </span>\n            <div data-magic-id="deleteTask" class="milestoneIconLink">${i18n.actions.deleteItem}</div>\n        </div>\n        <div>\n            <fieldset>\n                <label for="title_${id}">${i18n.general.title}</label>\n                <input type="text" id="title_${id}" name="title" />\n            </fieldset>\n            <fieldset class="midWidth">\n                <label for="due_${id}">${i18n.general.dueDate}</label>\n                <input type="date" id="due_${id}" name="date" />\n            </fieldset>\n            <fieldset class="midWidth">\n                <label for="responsible_${id}">${i18n.general.responsible}</label>\n                <input type="text" id="responsible_${id}" name="owner" />\n            </fieldset>\n            <fieldset>\n                <label for="description_${id}">${i18n.general.description}</label>\n                <textarea id="description_${id}" rows="4" name="comments"></textarea>\n            </fieldset>\n        </div>\n        <div data-magic-id="formButtons" class="milestonesButtons"></div>\n    </form>\n    <div class="milestoneView hideMe" data-magic-id="taskView">\n        <div class="milestoneChooser">\n            <div class="milestoneStatus" data-magic-id="statusNode" data-field="status"></div>\n            <div data-magic-id="editTask" class="milestoneIconLink">${i18n.actions.edit}</div>\n        </div>\n        <div class="milestoneData">\n            <h4 data-field="title"></h4>\n            <div class="milestoneMeta">\n                <strong>${i18n.general.added}:</strong> <span data-field="dateCreated"></span>\n                <strong>${i18n.general.dueDate}:</strong> <span data-field="date"></span> <span data-magic-id="overdue" class="overdueLabel hideMe">${i18n.guideline.status.overdue}</span>\n                <strong>${i18n.general.responsible}:</strong> <span data-field="owner"></span>\n            </div>\n            <div class="milestoneDescription" data-field="comments"></div>\n        </div>\n    </div>\n</div>\n',Object.assign(this,t),this.data.itemId??=-1}startup(){super.startup(),this.populateForm(this.data),this.formButtons=new c(this.formButtonsArgs,this.formButtons),this.formButtons.startup(),u.canUserEdit()?(this.own(s(this.deleteTask,"click",this.removeTask.bind(this)),s(this.editTask,"click",this.enableEdit.bind(this)),s(this.formButtons,"submit",this.updateTask.bind(this)),s(this.formButtons,"cancel",this.cancelEdit.bind(this)),s(this.taskForm,"change",(()=>{this.formButtons.enableCancel()}))),-1===this.data.itemId?(this.enableEdit(),h(this.deleteTask,l)):(this.enableView(),m(this.deleteTask,l),this.renderView(this.data))):this.formButtons.disable()}cancelEdit(e){e.stopPropagation(),this.populateForm(this._cacheData),this._emit("cancel-task"),-1===this.data.itemId?(console.info("closing tasking -",this.data.itemId),this.destroyRecursive()):this.enableView()}enableEdit(){h(this.taskView,l),m(this.taskForm,l),this._emit("edit-task")}enableView(){m(this.taskView,l),h(this.taskForm,l)}populateForm(e){this._cacheData=e;const t=this.taskForm;for(const[i,s]of Object.entries(e))t.elements[i]?t.elements[i].value=s:console.warn(`No form field found for key: ${i}`)}renderView(e){const t={NEW:de.actions.new,IN_PROGRESS:de.guideline.status.inProgress,DONE:de.actions.done,INACTIVE:de.guideline.status.inactive};e.status??="NEW";const i="DONE"!==e.status&&new Date(e.date)<new Date;this.taskView.className=["milestoneView",e.status.toLowerCase(),i?"overdue":""].join(" "),r(this.overdue,l,!i),[...this.domNode.querySelectorAll("[data-field]")].forEac
152h((i=>{const s=i.dataset.field;e[s]&&(i.innerHTML="status"===s?t[e[s]]||"new":e[s])}))}removeTask(){console.info("Removing task : ",this.data),p.milestonesStore().removeGuidelineTask(this.data.oid,this.data.itemId).then((()=>{this._emit("remove-task",{itemId:this.data.itemId}),this.destroyRecursive()}))}updateTask(){const e=this,t=Object.fromEntries(new FormData(this.taskForm));function i(){e.enableView(),e.renderView(e.data),e.formButtons.disableCancel()}Object.assign(this.data,t),"-1"===t.itemId?p.milestonesStore().addGuidelineTask(this.data.oid,t).then((e=>{this.data.itemId=e.itemId,i(),this._emit("add-task")})):p.milestonesStore().updateGuidelineTask(this.data.oid,t).then((()=>{i(),this._emit("updated-task")}))}}class si extends a{_tasks=[];constructor(){super(...arguments),this.i18n=de,this.templateString='<div class="settingsMilestones">\n    <div class="settingsMilestonesHeader">\n        <span>\n            <button type="button" class="milestoneButton" data-magic-id="addTaskBtn">${i18n.actions.addTask}</button>\n        </span>\n        <span class="settingsMilestonesSelect">\n            ${i18n.general.sortBy}:\n            <select data-magic-id="sortBy">\n                <option value="dateCreated">${i18n.general.added}</option>\n                <option value="date">${i18n.general.dueDate}</option>\n                <option value="status">${i18n.general.status.default}</option>\n                <option value="title">${i18n.general.title}</option>\n            </select>\n        </span>\n    </div>\n    <div data-magic-id="taskNode" class="milestonesWrap"></div>\n</div>\n',Object.assign(this,...arguments)}postCreate(){super.postCreate(),console.info(">> tasks for id: "+this.oid,this.obj),this.currentDraft&&this.own(s(this.addTaskBtn,"click",(()=>{this.placeTask.call(this,{},"first"),this.toggleAddTaskBtn()})),s(this.sortBy,"change",(e=>{console.info("Sorting by",e.target.value),this.sortTasks(e.target.value)}))),u.canUserEdit()||this.addTaskBtn.remove();p.milestonesStore().getGuidelineTask(this.oid).then((e=>{0===e.length?(this.toggleAddTaskBtn(),this.placeTask()):e.forEach((e=>{this.placeTask(e,"last")}))}))}placeTask(e={},t="last"){e.oid=this.oid;const i=new ii({data:e});i.startup(),"last"===t?this.taskNode.appendChild(i.domNode):this.taskNode.insertBefore(i.domNode,this.taskNode.firstChild),this._tasks.push(i),this.own(s(i,"add-task",(()=>{this.toggleAddTaskBtn(!1)})),s(i,"edit-task",(()=>{this.toggleAddTaskBtn()})),s(i,"cancel-task",(()=>{this.toggleAddTaskBtn(!1)})),s(i,"updated-task",(()=>{this.toggleAddTaskBtn(!1)})),s(i,"remove-task",(e=>{const t=e.itemId;this._tasks=this._tasks.filter((e=>e.itemId!==t)),this.toggleAddTaskBtn(!1)})))}sortTasks(e,t="asc"){const i=this.taskNode,s=Array.from(this.domNode.querySelectorAll("div.milestone"));s.sort(((i,s)=>{const n=i.querySelector(`[data-field="${e}"]`)?.textContent?.trim()||"",o=s.querySelector(`[data-field="${e}"]`)?.textContent?.trim()||"";let a,r;if(e.includes("date"))a=new Date(n),r=new Date(o);else{if("status"!==e)return n.localeCompare(o);{const e=["NEW","IN_PROGRESS","DONE","INACTIVE"];a=e.indexOf(n.toUpperCase().replace(" ","_")),r=e.indexOf(o.toUpperCase().replace(" ","_"))}}return"asc"===t?a-r:r-a})),s.forEach((e=>i.appendChild(e)))}toggleAddTaskBtn(e=!0){r(this.addTaskBtn,l,e)}}class ni extends qe{constructor(e){super(...arguments),this.explanation="Add a supporting document to this guideline.",Object.assign(this,...arguments),this.uploadUrl=`/api/v2/guidelines/${this.guidelineId}/file`}}let oi;class ai extends D{constructor(e){super(...arguments),Object.assign(this,e),oi=this}checkFileStatus(e,t){const i=`/api/v2/files/${e}/${t}/av/status`;return oi.get(i)}deleteFile(e){return oi.delete(e)}}const ri="javascript: void(0);";class li extends a{canDelete=!1;fileType="";_selfDelete=!0;constructor(){super(...arguments),this.i18n=de,this.templateString='<div class="${baseClass}">\n    <span class="icon deleteIcon" title="${i18n.actions.deleteItem}" data-magic-id="deleteControl"></span>\n    <span class="icon downloadIcon" data-magic-id="fileLinkIcon"></span>\n    <span class="fileLink">\n        <a href="${file.fullPath}" rel="noopener" data-magic-id="fileLink">${file.displayName}</a>\n    </span>\n    <span class="avStatus" data-magic-id="avStatus">${file.avStatus}</span>\n</div>\n',Object.assign(this,...arguments)}startup(){super.startup(),this.changeStatus(this.file.avStatus),this.toggleEditControls(!this.canDelete||u.inBulkReferenceEditMode()),this._wireEvents()}checkFileStatus(){"CLEAN"!==this.file.avStatus&&(console.info("Check status for",this.file.displayName),(new ai).checkFileStatus(this.fileType,this.file.uuid).then((e=>{this.changeStatus(e.value)})))}changeStatus(e){console.debug("Change status for",this.file.displayName,e),this.file.avStatus=e,r(this.domNode,"clean","CLEAN"===e),r(this.domNode,"notScanned","NOT_SCANNED"===e),r(this.domNode,"infected","INFECTED"===e),r(this.domNode,"inque","INQUEUE"===e),r(this.fileLinkIcon,l,"CLEAN"!==e),"CLEAN"===e?(this.fileLink.href=this.file.fullPath,this.fileLink.target="_blank"):this.fileLink.href=ri,this.avStatus.innerHTML="CLEAN"===e?"":this.i18n.fileUpload[this.file.avStatus]||this.file.avStatus}deleteFile(){console.error("Implement in parent class")}_deleteFile(e){const t=this.confirmDeleteTitle||this.i18n.actions.remove;return i.confirm({title:t}).then((()=>{(new ai).deleteFile(e).then((()=>this.onDelete()),this.cancelDelete.bind(this))})).catch((()=>console.info("Cancelled Delete")))}cancelDelete(){this.trackEvent(this._trackActions.cancelDelete,`file:${this.file.fileId}:${this.file.fileType}`)}fileClicked(){this.fileLink.href!==ri&&this.trackEvent(this._trackActions.download,`file:${this.file.fileId}:${this.file.fileType}`)}onDelete(){this.trackEvent(this._trackActions.deleted,`file:${this.file.fileId}:${this.file.fileType}`),this._emit("delete-file"),this._selfDelete&&this.destroyRecursive()}
152toggleEditControls(e=!1){u.canUserEdit()&&this.deleteControl&&r(this.deleteControl,l,e)}_wireEvents(){u.showEditControls()?this.own(s(this.deleteControl,"click",this.deleteFile.bind(this)),n.subscribe(o.topic.toggle.controls,this.toggleEditControls.bind(this)),n.subscribe(o.topic.toggle.referenceControls,this.toggleEditControls.bind(this))):this.controls&&this.controls.remove(),this.own(s(this.fileLinkIcon,"click",(()=>{console.info("open",this.fileLink),this.fileLink.click()})),s(this.fileLink,"click",this.fileClicked.bind(this)),s(this.fileLink,"mouseover",this.checkFileStatus.bind(this)),s(this.fileLinkIcon,"mouseover",this.checkFileStatus.bind(this)))}}class ci extends li{baseClass="file";fileType="GUIDELINE";canDelete=!0;constructor(e){super(...arguments),this.file={},this.userId=0,Object.assign(this,...arguments),this.confirmDeleteTitle=this.i18n.actions.remove}deleteFile(){console.info("delete file");const e=`/api/v2/guidelines/${u.getGuidelineId()}/file/${this.file.fileId}`;this._deleteFile(e)}}class di extends a{constructor(e){super(...arguments),this.templateString='<div class="infoDocs">\n    <div class="topDocs">\n        <p class="docsIntro">${i18n.msg.infoAndDocs}</p>\n        <h4>${i18n.general.information}</h4>\n        <div data-magic-id="infoTextNode"></div>\n    </div>\n    <div>\n        <h4>${i18n.general.documents}</h4>\n        <button type="button"  data-magic-id="addFileBtn">${i18n.fileUpload.upload}</button>\n        <div data-magic-id="fileList" class="docsFiles"></div>\n    </div>\n</div>',this.i18n=de,this.viewMode=!1,Object.assign(this,...arguments)}postCreate(){super.postCreate(),u.canUserEdit()||this.addFileBtn.remove(),p.guidelineStore().getGuidelineInfo(u.getGuidelineId()).then((e=>this._renderTextArea(e.value))),p.guidelineStore().getGuidelineFiles(u.getGuidelineId()).then((e=>{e.guidelineFiles?.forEach((e=>this.renderFile(e)))})),this.viewMode?this.addFileBtn.remove():this.own(s(this.addFileBtn,"click",this.addFile.bind(this)))}addFile(){console.info("add file....");const e=new ni({guidelineId:u.getGuidelineId()});new w({title:de.fileUpload.upload,content:e}).startup(),this.own(s(e,je,(e=>{this.renderFile(e.detail)}))),this.trackEvent(this._trackActions.attachFile,`info:${u.getGuidelineId()}`)}renderFile(e){new ci({file:e}).placeAt(this.fileList,"last")}_commentChange(e=""){p.guidelineStore().updateGuidelineInfo(u.getGuidelineId(),e)}_renderTextArea(e){this.infoText=new Tt({text:e||"",placeHolder:"",location:`${this.id}_docInfo`,toolbar:"MINI"},this.infoTextNode),this.infoText.startup(),this.infoText.on("saved",(e=>this._commentChange(e.text)))}}const hi="milestone";class ui extends a{constructor(e){super(...arguments),this.i18n=de,this.templateString='<div class="surveyResults">\n    <div class="surveyResultsTabs">\n        <div class="surveyResultsLinkWrap">\n            <span class="tab" tabindex="0" data-magic-id="infoTab">${i18n.orgAccount.info.title} & ${i18n.general.documents}</span>\n            <span class="tab" tabindex="1" data-magic-id="milestonesTab">${i18n.general.tasks}</span>\n            <span class="tab" tabindex="2" data-magic-id="checklistTab">${i18n.settings.checklist.label}</span>\n        </div>\n    </div>\n    <div class="panel" data-magic-id="infoPanel">\n        <div data-magic-id="infoNode"></div>\n    </div>\n    <div class="panel" data-magic-id="milestonesPanel">\n        <div data-magic-id="milestonesNode"></div>\n    </div>\n    <div class="panel" data-magic-id="checklistPanel">\n        <div data-magic-id="checklistNode"></div>\n    </div>\n</div>',this.params={},this.selectedTab=hi,Object.assign(this,...arguments)}startup(){switch(super.startup(),this.milestones=new si(this.params,this.milestonesNode),this.milestones.startup(),this.checklist=new ti(this.params,this.checklistNode),this.checklist.startup(),this.infoAndDocs=new di(this.params,this.infoNode),this.infoAndDocs.startup(),this.own(s(this.infoTab,"click",this.showInfoAndDocs.bind(this)),s(this.checklistTab,"click",this.showCheckList.bind(this)),s(this.milestonesTab,"click",this.showMilestones.bind(this)),s(this.domNode.firstElementChild,"keydown",(e=>{"ArrowRight"===e.key?this.showCheckList():this.showMilestones()}))),this.selectedTab){case"checklist":this.showCheckList();break;case hi:this.showMilestones();break;case"info":this.showInfoAndDocs()}}showInfoAndDocs(){this._hideAll(),h(this.infoTab,B),m(this.infoPanel,l)}showCheckList(){this._hideAll(),h(this.checklistTab,B),m(this.checklistPanel,l)}showMilestones(){this._hideAll(),h(this.milestonesTab,B),m(this.milestonesPanel,l)}_hideAll(){this.domNode.querySelectorAll(".tab").forEach((e=>m(e,B))),this.domNode.querySelectorAll(".panel").forEach((e=>h(e,l)))}}const pi="0123456789abcdef".split("");var gi={md5cycle:function(e,t){let i=e[0],s=e[1],n=e[2],o=e[3];i=this.ff(i,s,n,o,t[0],7,-680876936),o=this.ff(o,i,s,n,t[1],12,-389564586),n=this.ff(n,o,i,s,t[2],17,606105819),s=this.ff(s,n,o,i,t[3],22,-1044525330),i=this.ff(i,s,n,o,t[4],7,-176418897),o=this.ff(o,i,s,n,t[5],12,1200080426),n=this.ff(n,o,i,s,t[6],17,-1473231341),s=this.ff(s,n,o,i,t[7],22,-45705983),i=this.ff(i,s,n,o,t[8],7,1770035416),o=this.ff(o,i,s,n,t[9],12,-1958414417),n=this.ff(n,o,i,s,t[10],17,-42063),s=this.ff(s,n,o,i,t[11],22,-1990404162),i=this.ff(i,s,n,o,t[12],7,1804603682),o=this.ff(o,i,s,n,t[13],12,-40341101),n=this.ff(n,o,i,s,t[14],17,-1502002290),s=this.ff(s,n,o,i,t[15],22,1236535329),i=this.gg(i,s,n,o,t[1],5,-165796510),o=this.gg(o,i,s,n,t[6],9,-1069501632),n=this.gg(n,o,i,s,t[11],14,643717713),s=this.gg(s,n,o,i,t[0],20,-373897302),i=this.gg(i,s,n,o,t[5],5,-701558691),o=this.gg(o,i,s,n,t[10],9,38016083),n=this.gg(n,o,i,s,t[15],14,-660478335),s=this.gg(s,n,o,i,t[4],20,-405537848),i=this.gg(i,s,n,o,t[9],5,568446438),o=this.gg(o,i,s,n,t[14],9,-1019803690),n=this.gg(n,o,i,s,t[3],14,-187363961),s=this.gg(s,n,o,i,t[8],20,1163531501),i=this.gg(i,s,n,o,t[13],5,-1444681467),o=this.gg(o,i,s,n,t[2],9,-51403784),n=this.gg(n,o,i,s,t[7],14,1735328473),s=this.gg(s,n,o,i,t[12],20,-1926607734),i=this.hh(i,s,n,o,t[5],4,-378558),o=this.hh(o,i,s,n,t[8],11,-2022574463),n=this.hh(n,o,i,s,t[11],16,1839030562),s=this.hh(s,n,o,i,t[14],23,-35309556),i=this.hh(i,s,n,o,t[1],4,-1530992060),o=this.hh(o,i,s,n,t[4],11,1272893353),n=this.hh(n,o,i,s,t[7],16,-155497632),s=this.hh(s,n,o,i,t[10],23,-1094730640),i=this.hh(i,s,n,o,t[13],4,681279174),o=this.hh(o,i,s,n,t[0],11,-358537222),n=this.hh(n,o,i,s,t[3],16,-722521979),s=this.hh(s,n,o,i,t[6],23,76029189),i=this.hh(i,s,n,o,t[9],4,-640364487),o=this.hh(o,i,s,n,t[12],11,-421815835),n=this.hh(n,o,i,s,t[15],16,530742520),s=this.hh(s,n,o,i,t[2],23,-995338651),i=this.ii(i,s,n,o,t[0],6,-198630844),o=this.ii(o,i,s,n,t[7],10,1126891415),n=this.ii(n,o,i,s,t[14],15,-1416354905),s=this.ii(s,n,o,i,t[5],21,-57434055),i=this.ii(i,s,n,o,t[12],6,1700485571),o=this.ii(o,i,s,n,t[3],10,-1894986606),n=this.ii(n,o,i,s,t[10],15,-1051523),s=this.ii(s,n,o,i,t[1],21,-2054922799),i=this.ii(i,s,n,o,t[8],6,1873313359),o=this.ii(o,i,s,n,t[15],10,-30611744),n=this.ii(n,o,i,s,t[6],15,-1560198380),s=this.ii(s,n,o,i,t[13],21,1309151649),i=this.ii(i,s,n,o,t[4],6,-145523070),o=this.ii(o,i,s,n,t[11],10,-1120210379),n=this.ii(n,o,i,s,t[2],15,718787259),s=this.ii(s,n,o,i,t[9],21,-343485551),e[0]=this.add32(i,e[0]),e[1]=this.add32(s,e[1]),e[2]=this.add32(n,e[2]),e[3]=this.add32(o,e[3])},cmn:function(e,t,i,s,n,o){return t=this.add32(this.add32(t,e),this.add32(s,o)),this.add32(t<<n|t>>>32-n,i)},ff:function(e,t,i,s,n,o,a){return this.cmn(t&i|~t&s,e,t,n,o,a)},gg:function(e,t,i,s,n,o,a){return this.cmn(t&s|i&~s,e,t,n,o,a)},hh:function(e,t,i,s,n,o,a){return this.cmn(t^i^s,e,t,n,o,a)},ii:function(e,t,i,s,n,o,a){return this.cmn(i^(t|~s),e,t,n,o,a)},md51:function(e){let t,i=e.length,s=[1732584193,-271733879,-1732584194,271733878];for(t=64;t<=e.length;t+=64)this.md5cycle(s,this.md5blk(e.substring(t-64,t)));e=e.substring(t-64);const n=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<e.length;t++)n[t>>2]|=e.charCodeAt(t)<<(t%4<<3);if(n[t>>2]|=128<<(t%4<<3),t>
15255)for(this.md5cycle(s,n),t=0;t<16;t++)n[t]=0;return n[14]=8*i,this.md5cycle(s,n),s},md5blk:function(e){let t,i=[];for(t=0;t<64;t+=4)i[t>>2]=e.charCodeAt(t)+(e.charCodeAt(t+1)<<8)+(e.charCodeAt(t+2)<<16)+(e.charCodeAt(t+3)<<24);return i},rhex:function(e){let t="",i=0;for(;i<4;i++)t+=pi[e>>8*i+4&15]+pi[e>>8*i&15];return t},hex:function(e){for(let t=0;t<e.length;t++)e[t]=this.rhex(e[t]);return e.join("")},md5:function(e){return this.hex(this.md51(e))},add32:function(e,t){return e+t&4294967295}};const mi="showMe",vi=e=>class extends e{constructor(){super(...arguments),this._helpOpen={reference:1,pico:1,recommendation:1}}postCreate(){super.postCreate&&super.postCreate(),this._setHelpOpen(!1),this.own(s(this.helpShow,"click",this.showTabHelp.bind(this)),s(this.helpClose,"click",this.hideTabHelp.bind(this)))}hideTabHelp(e){this.helpNode&&this.helpShow&&(this._setHelpOpen(!1),m(this.helpNode,mi),m(this.helpShow,l),"object"==typeof e&&this.trackEvent(this._trackActions.hide,"help:"+this.id))}helpOpen(){return!u.isPowerUser()&&this._getHelpOpen()}removeHelp(){this.helpNode&&this.helpShow&&(this._setHelpOpen(!1),m(this.helpNode,mi),h(this.helpShow,l))}setHelp(){u.showEditControls()||u.showHelp()?this.helpOpen()?this.showTabHelp(!0):this.hideTabHelp(!0):this.removeHelp()}showTabHelp(e){this.helpNode&&this.helpShow&&(this._setHelpOpen(!0),h(this.helpNode,mi),h(this.helpShow,l),"object"==typeof e&&this.trackEvent(this._trackActions.show,"help:"+this.id))}_setHelpOpen(e){let t=this.id.split("_")[0];this._helpOpen[t]=e}_getHelpOpen(){let e=this.id.split("_")[0];return this._helpOpen[e]}};class bi extends li{canDelete=!0;baseClass="coiFile";fileType="COI";constructor(e){super(...arguments),this.confirmDeleteTitle="",this.file={},this.userId=0,Object.assign(this,...arguments),this.confirmDeleteTitle=this.i18n.actions.remove}postCreate(){super.postCreate()}deleteFile(){console.info("delete file");const e=`/api/v2/guidelines/${u.getGuidelineId()}/conflicts/users/${this.userId}/file/${this.file.fileId}`;this._deleteFile(e)}}class fi extends qe{constructor(e){super(...arguments),this.explanation=de.references.attachFile.explanation,Object.assign(this,...arguments),this.uploadUrl=`/api/v2/guidelines/${this.guidelineId}/conflicts/users/${this.userId}/file`}}const yi={1:de.general.viewer,2:de.general.account.role.reviewer,3:de.general.account.role.author,7:"Create",15:"Delete",31:de.general.account.role.admin};class Ci extends a{constructor(e){super(...arguments),this.templateString='<div class="coiDocs">\n    <div class="coiDocsRow" role="rowgroup" data-magic-id="docRow">\n        <div class="coiDocsCell authorCell" role="cell">\n            <span class="authorName" data-magic-id="authorName"></span>\n            <span class="authorLevel">${permission}</span> <span class="authorLevel">${groups}</span>\n            <span class="interventionEditDate" data-magic-id="lastModDate"></span>\n        </div>\n        <div class="coiDocsCell" role="cell">\n            <div data-magic-id="fileList"></div>\n            <button class="coiDocAddBtn" data-magic-id="addFileBtn">${i18n.actions.add}</button>\n        </div>\n        <div class="coiDocsCell" role="cell">\n            <div data-magic-id="publicComment"></div>\n        </div>\n        <div class="coiDocsCell" role="cell">\n            <div data-magic-id="internComment"></div>\n        </div>\n    </div>\n</div>\n',this.i18n=de,this.ckPublicComment=null,this.ckInternComment=null,this.data={},this.isAdmin=!1,this.isUser=!1,this.viewMode=!1,this.hideInPublicMenuItem=null,Object.assign(this,...arguments),this.user.files=this.user.files||[],this.groups=this.user.groups&&""!==this.user.groups?`/ ${this.user.groups}`:"",this.permission=yi[this.user.permission]||this.user.permission||""}postCreate(){if(super.postCreate(),this.ckPublicComment=new Tt({text:this.user.commentPublic||"",placeHolder:this.isAdmin?de.coi.commentPublic:"",location:`${this.id}_publicComment`,toolbar:"MINI"},this.publicComment),this.ckPublicComment.startup(),this.ckPublicComment.on("saved",(e=>this._commentChange("PUBLIC",e.text))),this.isAdmin){this.user.files.forEac
152h((e=>{this.renderFile(e,this.user.userId)})),this.ckInternComment=new Tt({text:this.user.commentInternal||"",placeHolder:this.isAdmin?de.coi.commentIntern:"",location:`${this.id}_internalComment`,toolbar:"MINI"},this.internComment),this.ckInternComment.startup(),this.ckInternComment.on("saved",(e=>this._commentChange("INTERNAL",e.text))),this.viewMode?this.addFileBtn.remove():this.own(s(this.addFileBtn,"click",this.addFile.bind(this)));const e=this._optMenuUser(this.user);e.startup(),this.authorName.appendChild(e.domNode)}else this.authorName.innerText=this.user.displayName,this.internComment.parentElement.remove(),this.fileList.parentElement.remove()}startup(){super.startup(),this.toggleHide(this.user.excluded),this.lastModDate.innerText=u.showEditControls()&&this.user.lastModified?v.shortDate(this.user.lastModified):""}addFile(){const e=new fi({guidelineId:this.guidelineId,userId:this.user.userId,explanation:""});new w({title:de.fileUpload.upload,content:e}).startup(),this.own(s(e,je,(e=>{this.renderFile(e.detail,this.user.userId),this.lastModDate.innerText=v.shortDate(new Date)}))),this.trackEvent(this._trackActions.attachFile,`coi:${this.guidelineId}`)}toggleHide(e){r(this.docRow,M,e),this.hideInPublicMenuItem&&this.hideInPublicMenuItem.setChecked(e)}renderFile(e,t){new bi({file:e,userId:t}).placeAt(this.fileList,"last").startup()}updateHideInPublic(e,t){return this._emit("update-hide-in-public",{userId:e,toggle:t}),{userId:e,toggle:t}}_commentChange(e,t){console.info("save",e,t),this.lastModDate.innerText=v.shortDate(new Date),this._emit("comment-change",{commentType:e,comment:t})}_optMenuUser(e){const t=[];return this.hideInPublicMenuItem=new Ie({label:"Hide from public",isChecked:e.excluded,onClick:t=>{this.toggleHide(t),this.updateHideInPublic(e.userId,t)}}),t.push(this.hideInPublicMenuItem),new we({addClass:"dropDownText",id:`${this.id}_${e.displayName}`,label:e.displayName,name:"editButton",btnClass:"buttonPlain",menu:t})}}const _i="save",Ii=[{conflict:"SMALL",label:de.general.level.low},{conflict:"MODERATE",label:de.general.level.moderate},{conflict:"LARGE",label:de.general.level.high},{conflict:"NA",label:de.general.na},{conflict:"NOTSET",label:de.general.notSet}];class wi extends a{constructor(e){super(...arguments),this.templateString='<form class="coiForm">\n    <fieldset class="evenMoreNarrow">\n    <label class="iconLabel" data-magic-id="financialLabel">\n        <span class="coiIcon financial"></span> ${i18n.coi.financial}\n        <span class="coiSelect" data-magic-id="financialSelect"></span>\n    </label>\n    </fieldset>\n    <fieldset class="narrow">\n        <label>\n            ${i18n.coi.commentIntern}\n            <textarea data-magic-id="commentFinancial" autofocus></textarea>  \x3c!-- autofocus is a hacky hack to deal with the dropdown getting focus on load --\x3e\n        </label>\n    </fieldset>\n    <fieldset class="evenMoreNarrow">\n        <label class="iconLabel" data-magic-id="intellectualLabel">\n            <span class="coiIcon"></span> ${i18n.coi.intellectual}\n            <span class="coiSelect" data-magic-id="intellectualSelect"></span>\n        </label>\n    </fieldset>\n    <fieldset class="narrow">\n        <label>\n            ${i18n.coi.commentIntern}\n            <textarea data-magic-id="commentIntellectual"></textarea>\n        </label>\n    </fieldset>\n    <fieldset>\n        <label class="radioLabel">\n            <input type="checkbox" data-magic-id="excluded">${i18n.coi.setExcluded}\n        </label>\n    </fieldset>\n    <div data-magic-id="formButtons"></div>\n</form>',this.i18n=de,this.data={financialComment:"hello world",financialConflict:"NOTSET",intellectualComment:"",intellectualConflict:"NOTSET"},this.formButtons={},this.formButtonsArgs={id:"coiFormBtns",submitLabel:de.actions.save,submitBtnType:"",closeLabel:de.actions.close,waitMsg:de.msg.wait},this.conflictSelect={financial:{},intellectual:{}},this._lastClass={financial:"",intellectual:""},this._currentValue={financial:"",intellectual:""},Object.assign(this,...arguments)}startup(){super.startup(),this.excluded.checked=!!this.data.excluded,this.commentFinancial.value=this.data.commentFinancial||"",this.commentIntellectual.value=this.data.commentIntellectual||"",this._createDropDownButton("financial",this.financialSelect),this._updateStrength("financial",this.data.conflictFinancial),this._createDropDownButton("intellectual",this.intellectualSelect),this._updateStrength("intellectual",this.data.conflictIntellectual),this.excluded.checked=this.data.excluded,this.formButtons=new c(this.formButtonsArgs,this.formButtons),this.formButtons.startup(),this.formButtons.enableSummit(),this.own(this.formButtons,s(this.financialLabel,"click",this._stopLabelActivation.bind(this)),s(this.intellectualLabel,"click",this._stopLabelActivation.bind(this)),s(this.formButtons,"submit",(()=>this.save())),s(this.formButtons,"cancel",(()=>this.dialog.hide())),s(this.formButtons,"close",(()=>this.dialog.hide()))),document.activeElement.blur()}save(){const e={excluded:this.excluded.checked,commentFinancial:this.commentFinancial.value||"",conflictFinancial:this._currentValue.financial||"NOTSET",commentIntellectual:this.commentIntellectual.value||"",conflictIntellectual:this._currentValue.intellectual||"NOTSET"};return this._emit(_i,e),e}_stopLabelActivation(e){e.preventDefault(),e.stopPropagation()}_createDropDownButton(e,t){const i=Ii.map((t=>({class:t.conflict.toLowerCase(),label:t.label,onClick:()=>this._updateStrength(e,t.conflict)})));this.conflictSelect[e]=new we({label:de.coi.title.selectConflictLevel,name:`coiConflict_${e}`,menu:i}
152).placeAt(t),this.conflictSelect[e].startup(),this.conflictSelect[e].domNode.blur()}_updateStrength(e,t="NOTSET"){t=t.toUpperCase();const i=Ii.find((e=>e.conflict===t)),s=this.conflictSelect[e],n=i.conflict.toLowerCase();s.updateLabel(i.label),s.updateButtonClass(n),this._currentValue[e]=t}}const Si={conflictFinancial:"NOTSET",commentFinancial:"",conflictIntellectual:"NOTSET",commentIntellectual:"",excluded:!1},Ei=["NOTSET","NA","SMALL","MODERATE","LARGE"],Ti=/\bconflict_[^ ]*[ ]?\b/g;function ki(){return e=>u.isContentAdmin()||!u.isContentAdmin()&&!e.excluded}class Li extends(vi(a)){constructor(e){super(...arguments),this.templateString='<div class="coiContent">\n    <span class="loadingMessage">${i18n.general.loading}</span>\n    <div class="hideMe" data-magic-id="coiDocs">\n        <div class="coiHeader">\n            <h3>${i18n.coi.headerDocComments}</h3>\n            <span class="coiHeaderPublicCheck">|\n            <input type="checkbox" class="miniCheckbox" id="publicDocCheck" data-magic-id="publicDocCheck">\n            <label for="publicDocCheck">${i18n.coi.showPublic}</label>\n        </span>\n            <span class="coiHeaderHelpLink" data-magic-id="helpShow" tabindex="0">${i18n.general.information}</span>\n            <div class="groupFilterWrap">\n                <label>\n                    ${i18n.actions.show}\n                    <select name="groupSelect" tabindex="0" data-magic-id="groupSelect">\n                        <option tabindex="0" value="">${i18n.settings.permissions.allGroups}</option>\n                        <option tabindex="0" value="p:31">${i18n.general.account.role.admin}</option>\n                        <option tabindex="0" value="p:3">${i18n.general.account.role.author}</option>\n                        <option tabindex="0" value="p:2">${i18n.general.account.role.reviewer}</option>\n                        <option tabindex="0" value="p:1">${i18n.general.viewer}</option>\n                    </select>\n                </label>\n            </div>\n        </div>\n\n        <div class="tabContainerHelpWrap" data-magic-id="helpNode">\n            <div class="tabContainerHelp">\n                <span class="icon infoIcon" data-magic-id="helpIcon"></span>\n                <span class="helpText">${!i18n.coi.coiInfo}</span>\n            </div>\n            <span class="icon deleteIcon" data-magic-id="helpClose"></span>\n        </div>\n        \x3c!-- conflict docs --\x3e\n        <div class="coiDocsTable" role="table" aria-label="${i18n.coi.headerDocComments}">\n            <div class="coiDocsRow coiDocsTableHeader" role="rowgroup">\n                <div class="coiDocsCell authorCell" role="columnheader">${i18n.coi.headerRoleGroup}</div>\n                <div class="coiDocsCell" role="columnheader" data-magic-id="docCol">${i18n.general.documents}</div>\n                <div class="coiDocsCell" role="columnheader">${i18n.coi.commentPublic}</div>\n                <div class="coiDocsCell" role="columnheader" data-magic-id="commentInternCol">${i18n.coi.commentIntern}</div>\n            </div>\n            <div data-magic-id="coiDocsTable"></div>\n        </div>\n    </div>\n\n    <div class="hideMe" data-magic-id="coiInterventions">\n        <div class="coiHeader bottomHeader" >\n            <h3>${i18n.coi.headerInterventions}</h3>\n            <span class="coiHeaderPublicCheck">|\n            <input type="checkbox" class="miniCheckbox" id="publicIntCheck" data-magic-id="publicIntCheck">\n            <label for="publicIntCheck">${i18n.coi.showPublic}</label>\n        </span>\n        </div>\n        <span class="coiBottomDesc">\n        <span data-magic-id="coiComment"></span>\n    </span>\n        \x3c!-- conflict key --\x3e\n        <div class="conflictKeyWrap">\n            <span class="conflictKeyLabel">${i18n.coi.coiLevel}:</span>\n            <span class="conflictKey">\n                <span class="conflictColor conflict_notset"></span>\n                <span class="conflictValue">${i18n.general.notSet}</span>\n            </span>\n            <span class="conflictKey">\n                <picture class="tooltip conflictColor conflict_small" tabindex="0">\n                    <tool-tip inert role="tooltip" tip-position="right">${!i18n.coi.coiSmallDescription}</tool-tip>\n                </picture>
152\n                <span class="conflictValue">${i18n.general.level.low}</span>\n            </span>\n            <span class="conflictKey">\n                <picture class="conflictColor conflict_moderate" tabindex="0">\n                    <tool-tip inert role="tooltip" tip-position="right">${!i18n.coi.coiModerateDescription}</tool-tip>\n                </picture>\n                <span class="conflictValue">${i18n.general.level.moderate}</span>\n            </span>\n            <span class="conflictKey">\n                <picture class="tooltip conflictColor conflict_large" tabindex="0">\n                    <tool-tip inert role="tooltip" tip-position="right">${!i18n.coi.coiLargeDescription}</tool-tip>\n                </picture>\n                <span class="conflictValue">${i18n.general.level.high}</span>\n            </span>\n            <div class="conflictCheckWrap">\n                <input type="checkbox" class="miniCheckbox" id="conflictCheck" data-magic-id="conflictCheck">\n                <label for="conflictCheck">${i18n.coi.onlyConflicts}</label>\n            </div>\n        </div>\n\n        \x3c!-- conflict table --\x3e\n        <div class="coiTableWrap">\n            <table role="table" aria-label="${i18n.coi.headerInterventions}" data-magic-id="coiTable">\n                <thead>\n                <tr data-magic-id="coiTableHead"></tr>\n                </thead>\n                <tbody data-magic-id="coiTableRow"></tbody>\n            </table>\n        </div>\n    </div>\n</div>\n',this.i18n=de,this.conflictStore={},this.data={interventions:{},users:{}},this.viewMode=!1,this._docWidgets={},this._idHash={},this._showConflicts=!0,this._hasConflict={interventions:{},users:{}},this._toggleUserHideMenuItems=[],Object.assign(this,...arguments),this.viewMode=u.isPublished()}postCreate(){super.postCreate(),u.isContentAdmin()||(this.publicDocCheck.parentElement.remove(),this.publicIntCheck.parentElement.remove(),this.helpShow.remove())}startup(){super.startup(),this.conflictStore=p.coiStore(),this.conflictStore.getConflicts(this.guidelineId).then(this.renderContent.bind(this));const e=this;p.groupGuidelineStore().getGroups(this.guidelineId).then((t=>{t.forEach((t=>{const i=document.createElement("option");i.value="g:"+t.id,i.text=t.name,e.groupSelect.add(i)}))})),this.own(s(this.conflictCheck,"click",this.toggleConflictShow.bind(this)),s(this.groupSelect,"change",this.filterByGroup.bind(this)))}editConflict(e,t,i,n,o){console.info("editConflict",e,i,t);const a=this,r=a.data.users.find((t=>t.userId===Number(e))),l=r.conflicts,c=l[i]||Si,d=new wi({user:r,data:c}),h=new w({title:de.coi.setConflicts,content:d});h.startup();const u=s(d,_i,(e=>{return s=e.detail,console.info("save coi ",s),l[i]=s,a._updateDom.call(a,n,s.conflictFinancial,s.commentFinancial,s.excluded),a._updateDom.call(a,o,s.conflictIntellectual,s.commentIntellectual,s.excluded),a._setConflicts(r.userId,i,a._isConflict(s.conflictFinancial,s.conflictIntellectual)),a.updateUserConflict(r.userId,t,s),console.info("hideDialog"),u.remove(),void h.close();var s}));this.own(d,u),this.trackEvent(this._trackActions.edit,"coi:"+this.userId)}hideUserFromPublic(e,t){this.conflictStore.updateInterventionUserHideInPublic(e,t).then(function(){this._docWidgets[e].toggleHide(t),this._toggleUserHideMenuItems[e].setChecked(t),this._shadowUser(e,t)}.bind(this))}filterByGroup(e){console.info("filter by group");const t=this,i=e.target.value.split(":"),s=i[0],n=parseInt(i[1]||0,10);this.data.users.forEach((e=>{const i=e.userId,o=""!==s&&("p"===s?e.permission!==n:!e.groupIds.includes(n));t._hideUser(i,o),r(t._docWidgets[i].domNode,l,o)}))}renderContent(e){console.info("render",e);const t=this;this.data=e,u.isContentAdmin()?(this.ckComment=new Tt({text:e.comment||"",placeHolder:de.coi.coiLevelDescriptionOrg,location:this.id+"_comment",toolbar:"MINI"},this.coiComment),this.ckComment.startup(),this.ckComment.on("saved",(e=>{t.updateComment(e.text)})),r(this.coiTable,"hoverTable"),this.publicDocCheck.checked=e.docAndCommentsInPublic,this.publicIntCheck.checked=e.interventionsInPublic,this.own(s(this.publicDocCheck,"click",this.toggleShowDocsAndCommentsInPublic.bind(this)),s(this.publicIntCheck,"click",this.toggleShowInterventionsInPublic.bind(this)))):(this.coiComment.innerHTML=e.comment.cleanHTML(),this.publicDocCheck.checked=e.docAndCommentsInPublic,this.publicIntCheck.checked=e.interventionsInPublic);const i=u.isContentAdmin()||e.docAndCommentsInPublic;this.renderDocsAndComments.call(this,i,this.data.users),this.renderInterventions.call(this,i,this.data.interventions,this.data.users),h(this.domNode.querySelector(".loadingMessage"),l)}renderDocsAndComments(e,t){if(!e)return;u.isContentAdmin()||(this.docCol.remove(),this.commentInternCol.remove());const i=this;
152t.filter(ki()).forEach((e=>{const t={guidelineId:i.guidelineId,user:e,isUser:u.getUserId()===e.userId,isAdmin:u.isContentAdmin(),viewMode:i.viewMode},n=new Ci(t).placeAt(i.coiDocsTable,"last");n.startup(),i._docWidgets[e.userId]=n,i.own(s(n,"comment-change",(t=>{return s=t.detail,void i.updateUserComment.call(i,e.userId,s.comment,s.commentType);var s})),s(n,"update-hide-in-public",(e=>{i.hideUserFromPublic.call(i,e.detail.userId,e.detail.toggle)})))})),m(this.coiDocs,l)}renderInterventions(e,t,i){const n=this;if(!e||0===t.length)return;const o=x.toDom('<th class="interventionCellWidth"></th>');x.place(this.coiTableHead,o,"first"),i.filter(ki()).forEach((e=>{const t=u.showEditControls()?v.shortDate(function(e){const t=[...Object.values(e.comparatorConflicts),...Object.values(e.interventionConflicts)].map((e=>new Date(e.lastModified))),i=new Date(Math.max(...t));return isNaN(i.getTime())?"":i}(e)):"",i=x.toDom('<th colspan="2" role="columnheader" data-user-id="'+e.userId+'"></th>');if(u.showEditControls()){const t=n._optMenuUser.call(n,e);i.appendChild(t.domNode),r(i,M,e.excluded)}else i.appendChild(x.toDom(`<span>${e.displayName}</span>`));i.appendChild(x.toDom(`<span class="interventionEditDate">${t}</span>`)),x.place(n.coiTableHead,i)}));const a=new Map(t.map((({intervention:e})=>[e,{intervention:e,ids:[]}])));for(let{intervention:e,picoId:i,picoElement:s,excluded:n}of t){const t=a.get(e);t.ids.push(...[{id:i,e:s}].flat()),t.excluded=n}[...a.values()].forEach((e=>{const t=e.ids,o=gi.md5(JSON.stringify(t)),a=u.showEditControls()?n._optMenuIntervention.call(n,e,t,o).domNode:x.toDom(`<span>${e.intervention}</span>`),r=e.excluded?u.isContentAdmin()||u.showEditControls()?M:l:"",c=x.toDom('<tr role="rowgroup" class="'+r+'" data-intervention-hash="'+o+'" ></tr>'),d=x.toDom('<td class="interventionCell" role="cell" data-intervention-hash="'+o+'"></td>');n._idHash[o]=t,i.filter(ki()).forEach((i=>{i.conflicts??={},i.conflicts[o]??=Si,t.forEach((e=>{const t=Object.assign({},i.conflicts[o]),s=i.comparatorConflicts[e.id];s&&s.picoElement===e.e&&(i.conflicts[o]=n._setUserConflict(t,s));const a=i.interventionConflicts[e.id];a&&a.picoElement===e.e&&(i.conflicts[o]=n._setUserConflict(t,a))}));const a=i.conflicts[o]||defaultVal;!function(e,t,i,o,a){const r=e.userId,l=i.ids,c=u.isContentAdmin()&&!n.viewMode,d=t.conflictFinancial.toLowerCase(),h=t.conflictIntellectual.toLowerCase(),p=c?(t.commentFinancial||"").replace(/\,\s*$/,""):"",g=c?(t.commentIntellectual||"").replace(/\,\s*$/,""):"",m=t.excluded?"":"hideMe",v=e.excluded||i.excluded?M:"",b=x.toDom('<td class="conflict_'+d+" financialCell "+v+'" role="cell" data-user-id="'+r+'" data-intervention-hash="'+o+'"><picture class="coiIcon tooltip" tabindex="0"><tool-tip inert role="tooltip" tip-position="right">'+p+'</tool-tip></picture><span class="excludedLabel '+m+'">'+de.coi.excluded+"</span></td>"),f=x.toDom('<td class="conflict_'+h+" institutionCell "+v+'" role="cell" data-user-id="'+r+'" data-intervention-hash="'+o+'"><picture class="coiIcon tooltip" tabindex="0"><tool-tip inert role="tooltip" tip-position="right">'+g+'</tool-tip></picture><span class="excludedLabel '+m+'">'+de.coi.excluded+"</span></td>");x.place(a,b,"last"),x.place(a,f,"last"),c&&n.own(s(b,"click",(()=>{n.editConflict(r,l,o,b,f)})),s(f,"click",(()=>{n.editConflict(r,l,o,b,f)})));n._setConflicts(r,o,n._isConflict(d,h))}(i,a,e,o,c)})),d.appendChild(a),x.place(c,d,"first"),x.place(n.coiTableRow,c,"last")})),m(this.coiInterventions,l)}toggleConflictShow(){console.info("toggle conflicts",this._hasConflict);const e=this,t=this._showConflicts,i=this._hasConflict.interventions,s=this._hasConflict.users;Object.keys(s).forEach((i=>{const n=s[i]||{};Object.keys(n).filter((e=>!0===n[e])).length>0||e._hideUser(i,t)}
152)),Object.keys(i).forEach((e=>{for(let s in i[e]){const s=i[e]||{};let n=!1;Object.keys(s).forEach((e=>{n=n||s[e]})),n||this.coiTable.querySelectorAll('[data-intervention-hash="'+e+'"]').forEach((e=>{r(e,l,t)}))}})),this._showConflicts=!this._showConflicts}toggleShowDocsAndCommentsInPublic(){this.conflictStore.toggleShowDocsAndCommentsInPublic(this.publicDocCheck.checked)}toggleShowInterventionsInPublic(){this.conflictStore.toggleShowInterventionsInPublic(this.publicIntCheck.checked)}updateComment(e){this.conflictStore.updateConflictsComment(e)}updateUserComment(e,t,i){"PUBLIC"===i&&this.conflictStore.updateUserConflictCommentPublic(e,t),"INTERNAL"===i&&this.conflictStore.updateUserConflictCommentInternal(e,t)}updateUserConflict(e,t,i){this.conflictStore.updateUserInterventionConflict(e,t,i)}_getConflictLevelFromNode(e){try{return e.className.match(Ti,"")[0].replace("conflict_","").toUpperCase().trim()}catch(e){return""}}_isConflict(e,t){return e=(e||"").toUpperCase(),t=(t||"").toUpperCase(),"MODERATE"===e||"LARGE"===e||"MODERATE"===t||"LARGE"===t}_optMenuIntervention(e,t,i){const s=this;function n(e){const n=[];s.coiTable.querySelectorAll(`td[data-intervention-hash="${i}"]`).forEach((t=>{("NA"===e||"SMALL"===e&&"NOTSET"===s._getConflictLevelFromNode(t))&&(s._updateDom(t,e),n[t.dataset.userId]??=t.dataset.userId)})),n.forEach((n=>{s._setConflicts.call(s,n,i,!1);const o=s.data.users.find((e=>e.userId===Number(n)));if(o){const a=o.conflicts[i];("NA"===e||"SMALL"===e&&"NOTSET"===a.conflictFinancial)&&(a.conflictFinancial=e),("NA"===e||"SMALL"===e&&"NOTSET"===a.conflictIntellectual)&&(a.conflictIntellectual=e),s.updateUserConflict(n,t,a)}else console.warn("can not find user",n)}))}const o=Object.keys(t).length,a=o?" ("+o+")":"",l=[];l.push({label:de.actions.coi.setAllNotSetToLow,onClick:()=>{n("SMALL")}}),l.push({label:de.actions.coi.setAllToNa,onClick:()=>{n("NA")}}),l.push({label:de.actions.coi.hideFromPublic,isChecked:e.excluded,onClick:function(e){s.conflictStore.updateInterventionConflictHideInPublic(t,e).then((()=>{s.coiTable.querySelectorAll(`td[data-intervention-hash="${i}"]`).forEach((t=>{r(t,M,e)}))}))}});let c=new we({id:this.id+"_"+e.intervention,label:e.intervention+a,name:"editButton",btnClass:"buttonPlain",menu:l});return c.startup(),c}_optMenuUser(e){const t=this,i=e.userId;function s(e){const s=[];t.coiTable.querySelectorAll('td[data-user-id="'+i+'"]').forEach((i=>{console.debug(i),("NA"===e||"SMALL"===e&&"NOTSET"===t._getConflictLevelFromNode(i))&&(t._updateDom(i,e),s[i.dataset.interventionHash]??=t._idHash[i.dataset.interventionHash])}));const n=t.data.users.find((e=>e.userId===Number(i)));Object.keys(s).forEach((o=>{t._setConflicts.call(t,n.userId,o,!1);const a=n.conflicts[o];("NA"===e||"SMALL"===e&&"NOTSET"===a.conflictFinancial)&&(a.conflictFinancial=e),("NA"===e||"SMALL"===e&&"NOTSET"===a.conflictIntellectual)&&(a.conflictIntellectual=e),t.updateUserConflict(i,s[o],a)}))}const n=[];n.push({label:de.coi.bulkLow,onClick:()=>{s("SMALL")}}),n.push({label:de.coi.bulkNa,onClick:()=>{s("NA")}});const o=new Ie({label:de.coi.hideRowPublic,isChecked:e.excluded,onClick:function(e){t.hideUserFromPublic.call(t,i,e)}});this._toggleUserHideMenuItems[i]=o,n.push(o);let a=new we({id:this.id+"_"+e.email,label:e.displayName,name:"editButton",btnClass:"buttonPlain",menu:n});return a.startup(),a}_hideUser(e,t){this._setUserClass(e,l,t)}_shadowUser(e,t){this._setUserClass(e,M,t)}_setUserClass(e,t,i){this.coiTable.querySelectorAll(`[data-user-id="${e}"]`).forEach((e=>{r(e,t,i)}))}_setConflicts(e,t,i){this._hasConflict.interventions[t]??={},this._hasConflict.interventions[t][e]=i,(this._hasConflict.users[e]??={})[t]??={},this._hasConflict.users[e][t]=i}_setUserConflict(e,t){return-1!==e.commentFinancial.indexOf(t.commentFinancial)?e.commentFinancial=t.commentFinancial:e.commentFinancial+=t.commentFinancial+", ",-1!==e.commentIntellectual.indexOf(t.commentIntellectual)?e.commentIntellectual=t.commentIntellectual:e.commentIntellectual+=t.commentIntellectual+", ",e.conflictFinancial=Ei.indexOf(t.conflictFinancial)>Ei.indexOf(e.conflictFinancial)?t.conflictFinancial:e.conflictFinancial,e.conflictIntellectual=Ei.indexOf(t.conflictIntellectual)>Ei.indexOf(e.conflictIntellectual)?t.conflictIntellectual:e.conflictIntellectual,e.excluded=t.excluded||!1,e}_updateDom(e,t,i,s){e.className=e.className.replace(Ti,"conflict_"+t.toLowerCase()+" "),null!=i&&(e.querySelector("tool-tip").innerHTML=i),null!=s&&r(e.lastElementChild,l,!s)}}class Ni extends a{constructor(){super(...arguments),this.templateString='<div class="getPicoWidget">\n    <fieldset>\n        <h4>${i18n.sectionLinks.updatedLink}</h4>\n        <textarea class="link" data-magic-id="currentLink" rows="1"></textarea>\n        <button type="button" data-magic-id="copyCurrent">${i18n.actions.copyLink}</button>\n    </fieldset>\n    <fieldset>\n        <h4>${i18n.general.version.link}</h4>\n        <textarea class="link" data-magic-id="directLink" rows="1"></textarea>\n        <button type="button" data-magic-id="copyDirect">${i18n.actions.copyLink}</button>\n    </fieldset>\n</div>\n',this.i18n=de,Object.assign(this,...arguments)}startup(){super.startup(),this.updateLinks(),this.own(s(this.copyDirect,"click",this.copyDirectLink.bind(this)),s(this.copyCurrent,"click",this.coppCurrentLink.bind(this)))}coppCurrentLink(){this.currentLink.select();try{const e=document.execCommand("copy")?"successful":"unsuccessful";console.log("Copying text command was "+e)}catch(e){console.log("Oops, unable to copy")}this.clearSelection()}copyDirectLink(){this.directLink.select();try{const e=document.execCommand("copy")?"successful":"unsuccessful";console.log("Copying text command was "+e)}catch(e){console.log("Oops, unable to copy")}this.clearSelection()}clearSelection(){document.selection?document.selection.empty():window.getSelection&&window.getSelection().removeAllRanges()}updateLinks(){console.info("update links"),this.currentLink.innerHTML=this.getUrl(!1),this.directLink.innerHTML=this.getUrl(!0)}getUrl(e){const t=e?this.sectionId:this.shortCode,i=e?this.guidelineId:this.guidelineShortCode;return t?`${window.location.origin}/#/guideline/${i}/section/${t}`:`${window.location.origin}/#/guideline/${i}`}}const $i=["AGAINST","HIGH","LOW","CONSENSUS","INFO","NOTSET","NO_STRENGTH","ONLY_IN_RESEARCH","PRACTICE","PUBLIC_HEALTH","RESEARCH_STATEMENT","STATUTORY_REQUIREMENT","STRONG","STRONG_AGAINST","WEAK","WEAK_AGAINST","NEW","NEW_EVI
152DENCE","POSSIBLY_OUTDATED","REVIEWED_NO_NEW","UNDER_REVIEW","UPDATED","LARGE_EFFECT","MODERATE","NOT-CONSIDERED","NOT_CONSIDERED","VERY_LOW"],Oi={PICO:"pico_",PICO_C_OUTCOME:"continuous-edit_",PICO_D_OUTCOME:"dichotomous-edit_",PICO_ISSUE:"pico-issues_",PICO_NP_OUTCOME:"non-poolable-edit_",RECOMMENDATION:"recommendation_",REFERENCE:"ref_",SECTION:"sec_"},Ai=["DEVELOPMENT","FINISHED","PUBLISHED","REVIEW","UPDATE"],Pi=["C","I","P"],Di=["/comparator","/comparatorShortName","/intervention","/interventionShortName","/population","/populationShortName"],Bi=["abstractText","acceptability","adaptation","advice","benefits","comments","comparator","comparatorComment","comparatorFollowUp","comparatorShortName","comparatorStudyFiles","comparatorSystematicReviewReference","description","emrCodes","emrImplement","emrResources","equity","evidence","feasibility","heading","interventionPrimaryComment","interventionShortName","interventionStudyFiles","interventionStudyFollowUp","interventionSystematicReviewReference","intervention","issueBoth","issueComparator","issueIntervention","outcome","outcomesText","picoCodes","plainSummaryComment","population","populationShortName","preferences","qualityIndirectnessComment","qualityInconsistencyComment","qualityOfEvidenceComment","qualityPublicationBiasComment","qualityRiskOfBiasComment","rational","recommendedInvention","remarks","resources","shortName","summary","targetPopulation","text","timeFrame"],Mi=["Publishing","attachedFiles","comparatorStudyFiles","confidenceAdequacyComment","confidenceCoherenceComment","confidenceLevelComment","confidenceMethodologicalLimitationsComment","confidenceRelevanceComment","findingFile","findingImage","findingQualitative","interventionStudyData","interventionStudyFiles","pico_finding_extra","pico_finding_ps","pico_finding_sr","publish","recommendationCodes","relationship","picoRelationship","referenceRelationship"],xi=["authors_id","recommendation_cql_code_name","guidelineId","recommendationId","sectionId","picoId","keyInfoId","referenceId"],Fi=Object.freeze({ADD:"ADD",ATTACH_FILE:"ATTACH_FILE",ATTACH_IMAGE:"ATTACH_IMAGE",ATTACH_REFERENCE:"ATTACH_REFERENCE",BACKUP:"BACKUP",CHANGE:"CHANGE",COPY:"COPY",CREATE:"CREATE",DELETE:"DELETE",DETACH_FILE:"DETACH_FILE",DETACH_IMAGE:"DETACH_IMAGE",DETACH_REFERENCE:"DETACH_REFERENCE",GRANT:"GRANT",HIDE:"HIDE",MOVE:"MOVE",PUBLISH:"PUBLISH",READ:"READ",RELATE:"RELATE",RESTORE:"RESTORE",REVOKE:"REVOKE",UNDELETE:"UNDELETE",UNRELATE:"UNRELATE"}),Ri=Object.freeze({GUIDELINE:"GUIDELINE",PICO:"PICO",PICO_CODE:"PICO_CODE",PICO_C_OUTCOME:"PICO_C_OUTCOME",PICO_D_OUTCOME:"PICO_D_OUTCOME",PICO_FINDING:"PICO_FINDING",PICO_ISSUE:"PICO_ISSUE",PICO_NP_OUTCOME:"PICO_NP_OUTCOME",RECOMMENDATION:"RECOMMENDATION",RECOMMENDATION_CODE:"RECOMMENDATION_CODE",RECOMMENDATION_EMR_CODES:"RECOMMENDATION_EMR_CODES",RECOMMENDATION_INTERVENTION:"RECOMMENDATION_INTERVENTION",REFERENCE:"REFERENCE",SECTION:"SECTION"}),Ui=Object.freeze({KEY_INFO:"_KEY_INFO",OUTCOME:"_OUTCOME",RECOMMENDATION:"RECOMMENDATION"}),qi=Object.freeze({IN_SECTION:"IN_SECTION",POPULATION_EXCLUDE:"POPULATION_EXCLUDE",POPULATION_INCLUDE:"POPULATION_INCLUDE",POSITION:"POSITION",RECOMMENDATION_EXCLUDE:"RECOMMENDATION_EXCLUDE",RECOMMENDATION_INCLUDE:"RECOMMENDATION_INCLUDE"}),ji=Object.freeze({START_DATE:"startDate",STUDY_DATA:"StudyData"}),Vi=Object.freeze({NONE:"none",UNDELETE:"undelete",VIEW:"view"}),Gi=new Set(["currentPublished","hideInPublish","isHidden","isSummaryOfJudgementPublic","publicAccess","publishComments","shadowCopy","
152showAdaptation","showConflictOfInterventionsInPublic","showDocsAndCommentsInPublic","benefitsResearchEvidenceInPublic","evidenceResearchEvidenceInPublic","preferenceResearchEvidenceInPublic","resourcesResearchEvidenceInPublic","equityResearchEvidenceInPublic","acceptabilityResearchEvidenceInPublic","feasibilityResearchEvidenceInPublic","benefitsAdditionalConsiderationInPublic","evidenceAdditionalConsiderationInPublic","preferenceAdditionalConsiderationInPublic","resourcesAdditionalConsiderationInPublic","equityAdditionalConsiderationInPublic","acceptabilityAdditionalConsiderationInPublic","feasibilityAdditionalConsiderationInPublic"]);const Hi=new WeakMap;function Wi(e){let t=Hi.get(e);if(t)return t;t=[];for(const i in e)t.push([new RegExp(`(^|\\s)${i}(\\s|$)`,"g"),e[i]]);return Hi.set(e,t),t}const zi=new Set([Ri.SECTION,Ri.PICO_FINDING,Ri.PICO_ISSUE]);const Ki=new RegExp([qi.RECOMMENDATION_INCLUDE,qi.RECOMMENDATION_EXCLUDE,qi.POPULATION_INCLUDE,qi.POPULATION_EXCLUDE].join("|"),"g");const Yi=[function({changeLocation:e,value:t,locations:i}){return e.includes(Ui.RECOMMENDATION)&&t.startsWith(qi.POSITION)?t.replace(qi.POSITION,i[qi.POSITION]).replace(qi.IN_SECTION,i[qi.IN_SECTION]):null},function({changeLocation:e,value:t}){return zi.has(e)?t:null},function({changeLocation:e,value:t,changedField:i,recStrengthMap:s,getKeyInfoLabel:n}){return e.includes(Ui.RECOMMENDATION)&&$i.includes(t)?e===Ri.RECOMMENDATION?"strength"!==i?null:`<span class="strength ${t.toLowerCase()}">${s[t]}</span>`:i.endsWith("Strength")?n(i,t):null:null},function({changeLocation:e,value:t,locations:i}){return e!==Ri.RECOMMENDATION_CODE?null:t.replace(Ki,(e=>i[e]))},function({changeLocation:e,value:t,keys:i,defaultNone:s}){if(!e.includes(Ui.OUTCOME))return null;if(!Ai.includes(t))return null;const n=i[t]||s;return`<span class="status ${t.toLowerCase()}">${n}</span>`},function({changedField:e,value:t}){return e!==ji.START_DATE?null:v.shortDate(t)},function({changedField:e,value:t,booleanLabels:i}){if(!Gi.has(e))return null;const{yes:s="Yes",no:n="No"}=i||{};return""===t||null==t||"false"===t?n:"true"===t?s:null},function({value:e,fields:t,keys:i,emrCodeLabels:s,defaultNone:n}){let o=function(e,t){const i=e.split(" "),s=i.pop();Pi.includes(s)?i.push(t[s.toLowerCase()]||s):i.push(s);return i.join(" ")}(e,t);return o=function(e,t){let i=` ${e.trim()} `;for(const[e,s]of Wi(t))i=i.replace(e,` ${s} `);return i.trim()}(o,i),o=function(e,t){const i=e.split(" "),s=i.pop();return i.push(t[s]||s),i.join(" ")}(o,s),1===o.split(" ").length?i[o]||n:o||n}];var Qi=function(){let e,t,i,s,n,o,a,r,l,c,d,h,u,p,g,m,v,b;return l=e=>">"===e,c=e=>"<"===e,h=e=>/^\s+$/.test(e),d=e=>/^\s*<[^>]+>\s*$/.test(e),u=e=>!d(e),e=function(e,t,i){this.start_in_before=e,this.start_in_after=t,this.length=i,this.end_in_before=this.start_in_before+this.length-1,this.end_in_after=this.start_in_after+this.length-1},n=function(e,i,s){let n;return null==e&&(e=""),null==i&&(i=""),e===i?e:(e=r(e),i=r(i),n=t(e,i),b=s,m(e,i,n))},r=function(e){var t,i="",s="char",n=[];for(let o=0,a=e.length;o<a;o++)switch(t=e[o],s){case"tag":l(t)?(i+=">",n.push(i),i="",s=h(t)?"whitespace":"char"):i+=t;break;case"char":c(t)?(i&&n.push(i),i="<",s="tag"):/\s/.test(t)?(i&&n.push(i),i=t,s="whitespace"):/[\w\#@]+/i.test(t)?i+=t:(i&&n.push(i),i=t);break;case"whitespace":c(t)?(i&&n.push(i),i="<",s="tag"):h(t)?i+=t:(i&&n.push(i),i=t,s="char");break;default:throw new Error("Unknown mode "+s)}return i&&n.push(i),n},o=function(t,i,s,n,o,a,r){var l,c,d,h,u,p,g=a,m=n,v=0,b={};let f;for(let e=f=p=n,i=o;p<=i?f<i:f>i;e=p<=i?++f:--f){u={};for(let i=0,n=(c=s[t[e]]).length;i<n;i++)if(!((l=c[i])<a)){if(l>=r)break;null==b[l-1]&&(b[l-1]=0),h=b[l-1]+1,u[l]=h,h>v&&(m=e-h+1,g=l-h+1,v=h)}b=u}return 0!==v&&(d=new e(m,g,v)),d},g=function(e,t,i,s,n,a,r,l){let c=o(e,0,i,s,n,a,r);return null!=c&&(s<c.start_in_before&&a<c.start_in_after&&g(e,t,i,s,c.start_in_before,a,c.start_in_after,l),l.push(c),c.end_in_before<=n&&c.end_in_after<=r&&g(e,t,i,c.end_in_before+1,n,c.end_in_after+1,r,l)),l},s=function(e){var t,i,s,n;if(null==e.find_these)throw new Error("params must have find_these key");if(null==e.in_these)throw new Error("params must have in_these key");i={};for(let o=0,a=(s=e.find_these).length;o<a;o++)for(i[n=s[o]]=[],t=e.in_these.indexOf(n);-1!==t;)i[n].push(t),t=e.in_these.indexOf(n,t+1);return i},a=function(e,t){let i,n;return n=[],i=s({find_these:e,in_these:t}),g(e,t,i,0,e.length,0,t.length,n)},t=function(t,i){let s,n,o,r,l,c,d,h,u,p,g,m,v,b;if(null==t)throw new Error("before_tokens?");if(null==i)throw new Error("after_tokens?");m=g=0,p=[],s={"false,false":"replace","true,false":"insert","false,true":"delete","true,true":"none"},c=a(t,i),c.push(new e(t.length,i.length,0));for(let e=b=0,t=c.length;b<t;e=++b)l=c[e],h=m===l.start_in_before,d=g===l.start_in_after,n=s[[h,d].toString()],"none"!==n&&p.push({action:n,start_in_before:m,end_in_before:"insert"!==n?l.start_in_before-1:void 0,start_in_after:g,end_in_after:"delete"!==n?l.start_in_after-1:void 0}),0!==l.length&&p.push({action:"equal",start_in_before:l.start_in_before,end_in_before:l.end_in_before,start_in_after:l.start_in_after,end_in_after:l.end_in_after}),m=l.end_in_before+1,g=l.end_in_after+1;v=[],r={action:"none"},o=function(e){return"equal"===e.action&&(e.end_in_before-e.start_in_before==0&&/^\s$/.test(t.slice(e.start_in_before,+e.end_in_before+1||9e9)))};for(let e=0,t=p.length;e<t;e++)u=p[e],o(u)&&"replace"===r.action||"replace"===u.action&&"replace"===r.action?(r.end_in_before=u.end_in_before,r.end_in_after=u.end_in_after):(v.push(u),r=u);return v},i=function(e,t,i){let s,n,o,a;n=void 0;for(let r=a=0,l=(t=t.slice(e,+t.length+1||9e9)).length;a<l&&(o=t[r],s=i(o),!0===s&&(n=r),!1!==s);r=++a);return null!=n?t.slice(0,+n+1||9e9):[]},v=function(e,t){for(var s,n,o=t.length,a=0,r="";!(a>=o);){if(a+=(s=i(a,t,u)).length,0!==s.length){r+="<"+e+" "+(b?"class='"+b+"'":"")+">"+s.join("")+"</"+e+">"}if(a>=o)break;a+=(n=i(a,t,d)).length,r+=n.join("")}return r},p={equal:function(e,t,i){return t.slice(e.start_in_before,+e.end_in_before+1||9e9).join("")},insert:function(e,t,i){var s=i.slice(e.start_in_after,+e.end_in_after+1||9e9);return v("ins",s)},delete:function(e,t,i){var s=t.slice(e.start_in_before,+e.end_in_before+1||9e9);return v("del",s)}},p.replace=function(e,t,i){return p.delete(e,t,i)+p.insert(e,t,i)},m=function(e,t,i){var s,n="";for(let o=0,a=i.length;o<a;o++)s=i[o],n+=p[s.action](s,e,t);return n},a.find_match=o,a.create_index=s,n.html_to_tokens=r,n.find_matching_blocks=a,n.calculate_operations=t,n.render_operations=m,n}();const Ji=de.etd.strength,Xi={benefits:{label:Ji.benefits.question,choice:[{label:de.general.notSet,style:"notset",strength:"notset",buttonLabel:de.general.notSet},{label:Ji.benefits.lessClear,style:"weak",strength:"weak",buttonLabel:Ji.benefits.lessClear},{label:Ji.benefits.clearBenefits,style:"strong",strength:"strong",buttonLabel:Ji.benefits.clearBenefits},{label:Ji.benefits.clearHarms,style:"against",strength:"against",buttonLabel:Ji.benefits.clearHarms}]},evidence:{label:Ji.evidence.question,choice:[{label:de.general.notSet,style:"notset",strength:"notset",buttonLabel:de.general.notSet},{label:de.general.level.veryLow,style:"weak",strength:"very_low",buttonLabel:de.general.level.veryLow},{label:de.general.level.low,style:"weak",strength:"weak",buttonLabel:de.general.level.low},{label:de.general.level.moderate,style:"strong",strength:"moderate",buttonLabel:de.general.level.moderate},{label:de.general.level.high,style:"strong",strength:"high",buttonLabel:de.general.level.high}]},preferences:{label:Ji.preferences.question,choice:[{label:de.general.notSet,style:"notset",strength:"notset",buttonLabel:de.general.notSet},{label:Ji.preferences.variation,style:"weak",strength:"weak",buttonLabel:Ji.preferences.variation},{label:Ji.preferences.noVariation+Ji.preferences.noVariationExample,style:"strong",strength:"strong",buttonLabel:Ji.preferences.noVariation},{label:Ji.preferences.disapproval,style:"against",strength:"against",buttonLabel:Ji.preferences.disapproval}]},resources:{label:Ji.resources.question,choice:[{label:de.general.notSet,style:"notset",strength:"notset",buttonLabel:de.general.notSet},{label:Ji.resources.notConsidered,style:"notset",strength:"not_considered",buttonLabel:Ji.resources.notConsidered},{label:Ji.resources.considerations,style:"weak",strength:"weak",buttonLabel:Ji.resources.considerations},{label:Ji.resources.noConsiderations+Ji.resources.noConsiderationsExample,style:"strong",strength:"strong",buttonLabel:Ji.resources.noConsiderations},{label:Ji.resources.negIssues,style:"against",strength:"against",buttonLabel:Ji.resources.negIssues}]},equity:{label:Ji.equity.question,choice:[{label:de.general.notSet,style:"notset",strength:"notset",buttonLabel:de.general.notSet},{label:Ji.equity.notConsidered,style:"notset",strength:"not_considered",buttonLabel:Ji.equity.notConsidered},{label:Ji.equity.considerations,style:"weak",strength:"weak",buttonLabel:Ji.equity.considerations},{label:Ji.equity.noConsiderations+Ji.equity.noConsiderationsExample,style:"strong",strength:"strong",buttonLabel:Ji.equity.noConsiderations},{label:Ji.equity.negIssues,style:"against",strength:"against",buttonLabel:Ji.equity.negIssues}]},acceptability:{label:Ji.acceptability.question,choice:[{label:de.general.notSet,style:"notset",strength:"notset",buttonLabel:de.general.notSet},{label:Ji.acceptability.notConsidered,style:"notset",strength:"not_considered",buttonLabel:Ji.acceptability.notConsidered},{label:Ji.acceptability.considerations,style:"weak",strength:"weak",buttonLabel:Ji.acceptability.considerations},{label:Ji.acceptability.noConsiderations+Ji.acceptability.noConsiderationsExample,style:"strong",strength:"strong",buttonLabel:Ji.acceptability.noConsiderations},{label:Ji.acceptability.negIssues,style:"against",strength:"against",buttonLabel:Ji.acceptability.negIssues}]},feasibility:{label:Ji.feasibility.question,choice:[{label:de.general.notSet,style:"notset",strength:"notset",buttonLabel:de.general.notSet},{label:Ji.feasibility.notConsidered,style:"notset",strength:"not_considered",buttonLabel:Ji.feasibility.notConsidered},{label:Ji.feasibility.considerations,style:"weak",strength:"weak",buttonLabel:Ji.feasibility.considerations},{label:Ji.feasibility.noConsiderations+Ji.feasibility.noConsiderationsExample,style:"strong",strength:"strong",buttonLabel:Ji.feasibility.noConsiderations},{label:Ji.feasibility.negIssues,style:"against",strength:"against",buttonLabel:Ji.feasibility.negIssues}]}};var Zi={dropDowns:Xi,getLabelNode:(e,t)=>{const i=Xi[e.replace("Strength","")]?.choice;let s="";return i?.forEach((e=>{t.toLowerCase()===e.strength&&(s=`<span class="keyInfoLabel ${e.style}">${e.buttonLabel}</span>`)})),s}};function es(e){return(e=e.replace(/^\//,"")).includes("/")?e.replace("/","_"):e}function ts(e,t){const i=`${e.toLowerCase()}_${t}`;return U[i]||U[t]||`~@~${t}`}function is(e,t,i,s){if(!t)return"";const n=es(t.field),o=Bi.includes(n),a=Mi.includes(n),r=!o&&!a,l=ns(e,t.oldValue,"-",n,s),c=ns(e,t.newValue,"-",n,s),d=a?t.newValue?c:l:r?c:function(e="",t){return Qi(e,t,"magic")}(l,c),h=r?`<span class="toFromWrap"><span class="toFromLabel">${de.general.from}</span><span class="fromValue">${l}</span>`:" ",u=`${r?`<span class="toToLabel">${de.general.to}</span>`:""}${d}`;return`<span>${i?"":ts(e,n)}<span>${h}${u}</span></span>`}function ss(e,t){let i=` ${e.trim()} `;for(const[e,s]of Wi(t))i=i.replace(e,` ${s} `);return i.trim()+" "}function ns(e,t,i,s,n){return function(e){for(const t of Yi){const i=t(e);if(null!==i)return i}return e.defaultNone}({changeLocation:e,value:null==t?"":t,changedField:s,defaultNone:i,recStrengthMap:n,getKeyInfoLabel:Zi.getLabelNode,locations:j,keys:q,fields:U,emrCodeLabels:{[qi.POPULATION_EXCLUDE]:de.recommendation.ehrCodes.exclusion,[qi.POPULATION_INCLUDE]:de.recommendation.ehrCodes.inclusion,[qi.RECOMMENDATION_EXCLUDE]:de.recommendation.ehrCodes.interventionAgainstCodes,[qi.RECOMMENDATION_INCLUDE]:de.recommendation.ehrCodes.interventionCodes},booleanLabels:{yes:de.general.yes,no:de.general.no}})}function os(e,t){const{actions:i,locations:s,recStrengthMap:n,strengthTokens:o,replaceForRecommendation:a,OBJ_MAP:r}=t,l=e.action,c=e.changeLocation,d=l===Fi.PUBLISH?"":s[c]||c,h=i[l]||l,{translatedAction:u,translatedChangeLocationText:p}=function({entry:e,rawAction:t,rawChangeLocation:i,translatedActionBase:s,recStrengthMap:n,strengthTokens:o,replaceForRecommendation:a}){const r=e.changeLocationText||"";if(i===Ri.GUIDELINE&&t===Fi.PUBLISH)return{translatedAction:`${e.userName} ${s} ${r}`,translatedChangeLocationText:""};if(i===Ri.RECOMMENDATION)return{translatedAction:s,translatedChangeLocationText:a(r,n)};const l=r.split(" ")[0]||"";if(o.includes(l))return{translatedAction:s,translatedChangeLocationText:r.replace(l,n[l])};return{translatedAction:s,translatedChangeLocationText:r}}({entry:e,rawAction:l,rawChangeLocation:c,translatedActionBase:h,recStrengthMap:n,strengthTokens:o,replaceForRecommendation:a});return{rawAction:l,rawChangeLocation:c,translatedAction:u,translatedChangeLocation:d,translatedChangeLocationText:p,changeLocationClass:d.split(" ").pop().toLowerCase()||null,idToCheck:`${r[c]||""}${e.locationId}`}}
152const as={[Ri.PICO_C_OUTCOME]:"continuous",[Ri.PICO_D_OUTCOME]:"dichotomous",[Ri.PICO_ISSUE]:"issues",[Ri.PICO_NP_OUTCOME]:"non-poolable"};const rs={[Ri.PICO_C_OUTCOME]:"displayContinuousOutcome",[Ri.PICO_D_OUTCOME]:"displayDichotomousOutcome",[Ri.PICO_NP_OUTCOME]:"displayNonPoolableOutcome"};function ls({action:e,changeLocation:t,idToCheck:i,deleteObjs:s,undeleteObjs:n,hideControls:o,isCurrentContent:a}){const r=function(e,t,i,s,n){return e===Fi.DELETE&&n.includes(i)?Vi.NONE:e===Fi.DELETE&&t!==Ri.RECOMMENDATION_CODE?Vi.UNDELETE:s.includes(i)?Vi.NONE:Vi.VIEW}(e,t,i,s,n),l=function(e,t,i,s,n){return e!==Fi.UNDELETE&&((e!==Fi.DELETE||!n.includes(i))&&((e!==Fi.DELETE||t===Ri.RECOMMENDATION_CODE)&&!s.includes(i)))}(e,t,i,s,n);return{button:o||!a?Vi.NONE:r,showInLabel:l}}const cs="activity-comment-edit",ds="activity-flag-toggle";class hs extends $e{static get properties(){return{entry:{type:Object},editingComment:{type:Boolean},flagged:{type:Boolean}}}entry=null;editingComment=!1;flagged=!1;_commentInputRef=Ve();constructor(e={}){super(e),Object.assign(this,e),this.flagged=!!(this.entry&&this.entry.followUp&&this.entry.followUp.flagged)}render(){const e=this._buildFlagTitle();return Oe`
153            <div class="activityBottom">
154                ${this.editingComment?Oe`
155                    <div class="activityCommentInputWrap">
156                        <textarea ${Ge(this._commentInputRef)} class="activityCommentInput" .defaultValue=${this.entry.comment||""}></textarea>
157                        <span class="activityCommentButton">
158                            <button class="activityCommentSave" @click=${this.saveComment.bind(this)}>${de.actions.save}</button>
159                            <span class="activityCommentCancel" @click=${this.cancelEditComment.bind(this)}>${de.actions.cancel}</span>
160                        </span>
161                    </div>
162                `:Oe`
163                    <div class="activityCommentWrap">
164                        ${this.entry.comment?Oe`<span class="activityCommentText">${$t((t=this.entry.comment,(t||"").replace(/\n/g,"<br>")))}</span>`:Le}
165                        <span class="activityCommentLink" title="${de.actions.addComment}" @click=${this.editComment.bind(this)}>
166                            <span class="icon iconComment"></span>
167                            <span>${this.entry.comment&&de.actions.edit||de.actions.addComment}</span>
168                        </span>
169                    </div>
170                `}
171                <span class="activityFlag ${this.flagged?"active":""}" title="${this.flagged?e:""}" @click=${this.toggleFlag.bind(this)}></span>
172            </div>`;var t}cancelEditComment(){this.editingComment=!1}editComment(){this.editingComment=!0}async saveComment(){const e=this.entry.comment||"",t=this._commentInputRef.value?this._commentInputRef.value.value:"";await p.activityStore().saveComment(this.entry.contentType,this.entry.contentId,this.entry.id,{value:t}),this.entry={...this.entry,comment:t},this.editingComment=!1,e.length>0&&t.length>0||e.length!==t.length&&this._emit(cs,{hasComment:!!t},{bubbles:!0})}async toggleFlag(){const e=!this.entry.followUp||!this.entry.followUp.flagged;await p.activityStore().toggleFlag(this.entry.contentType,this.entry.contentId,this.entry.id,{value:e}),this.entry.followUp=this.entry.followUp||{},this.entry.followUp.flagged=e,this.flagged=e,this._emit(ds,{flagged:e},{bubbles:!0})}_buildFlagTitle(){if(!this.flagged)return"";const e=this.entry.followUp||{},t=e.flaggedDate?` on ${v.shortDateTimeFromISO(e.flaggedDate)}`:"";return e.userName?`${e.userName}${t}`:`${u.getUserName()} on ${v.shortDateTimeFromISO((new Date).toISOString())}`}}const us="activity-goto",ps="activity-filter-by-user",gs="activity-filter-by-location";class ms extends $e{static get properties(){return{entry:{type:Object},detailsVisible:{type:Boolean}}}entry=null;detailsVisible=!1;undeleteObjs=[];deleteObjs=[];hideControls=!1;currentContentId=null;_commentSlotRef=Ve();_commentWidget=null;constructor(e={}){super(e),Object.assign(this,e),this.recStrengthMap=function(){const e=Object.assign({},de.recommendation.strength,pe),t={};for(const i in e)t[i.toUpperCase()]=e[i];return t}(),this.viewModel=os(this.entry,{actions:V,locations:j,recStrengthMap:this.recStrengthMap,strengthTokens:$i,replaceForRecommendation:ss,OBJ_MAP:Oi}),this._applyTrackingUpdates()}render(){const e=this.viewModel,t=ls({action:e.rawAction,changeLocation:e.rawChangeLocation,idToCheck:e.idToCheck,deleteObjs:this.deleteObjs,undeleteObjs:this.undeleteObjs,hideControls:this.hideControls,isCurrentContent:this.currentContentId===this.entry.contentId}),i=this.entry.changes.filter((e=>!xi.includes(es(e.field)))),s=new Date(this.entry.revTime);return Oe`
173            <div class="activityEntry">
174                <div class="filterBar">
175                    ${de.actions.filterBy}:
176                    <span class="icon userIcon" title="${de.actions.filterByUser}" @click=${this._onFilterByUserClick.bind(this)}></span>
177                    <span class="icon textIcon" title="Filter by text" @click=${this._onFilterBySingleFieldClick.bind(this,i)}></span>
178                    <span class="icon locationIcon" title="Filter by location in guideline" @click=${this._onFilterByLocationClick.bind(this)}></span>
179                    ${this._renderControlButton(t)}
180                </div>
181                <div class="time" data-activity-id="${this.entry.id}">${v.shortTimeFromDate(s)}</div>
182                <div class="entry">
183                    <div class="change">
184                        <span class="userName">${this.entry.userName}</span>
185                        <span class="entryAction">${e.translatedAction}</span>
186                        ${this._renderSingleField(i)}
187                        ${t.showInLabel?Oe`<span>${de.general._in}</span>`:Le}
188                        <span>${$t(e.translatedChangeLocationText||"")}</span>
189                        ${i.length>0?Oe`<span class="detailsLink" @click=${this.toggleDetails.bind(this)}>${this.detailsVisible?de.actions.closeDetails:de.actions.showDetail
189s}</span>`:Le}
190                        ${this.detailsVisible?Oe`<div class="activityChanges">${i.map((e=>this._renderChange(e)))}</div>`:Le}
191                    </div>
192                    <div class="location">
193                        ${e.translatedChangeLocation?Oe`<span class="activityType ${e.changeLocationClass}">${e.translatedChangeLocation}</span>`:Le}
194                        ${this.entry.sectionLabel?Oe`<span>${$t(this.entry.sectionLabel)}</span>`:Le}
195                    </div>
196                </div>
197                <div ${Ge(this._commentSlotRef)}></div>
198            </div>`}postCreate(){super.postCreate?.(),this._commentSlotRef.value&&(this._commentWidget=new hs({entry:this.entry}).placeAt(this._commentSlotRef.value,"last"),this._commentWidget.startup(),this.own(this._commentWidget))}goToObject(){!function(e,t,i,s){const n=e.rawChangeLocation,o=e.locationId;if(!n)return!1;if(n.includes(Ui.OUTCOME))return t.openPicoOutcome(e.picoId),!0;switch(n){case Ri.REFERENCE:return t.openReference(o),!0;case Ri.PICO:case Ri.PICO_CODE:return t.openPico(o),!0;case Ri.PICO_FINDING:return t.openPicoFinding(e.picoId),!0;case Ri.PICO_ISSUE:return t.openPicoIssues(e.picoId),!0;case Ri.RECOMMENDATION:return t.openRecommendation(o),!0;case Ri.RECOMMENDATION_CODE:case Ri.RECOMMENDATION_EMR_CODES:case Ri.RECOMMENDATION_INTERVENTION:return t.openRecommendation(o,"interventions"),!0;case Ri.SECTION:return i.publish(s.topic.reload.toc),t.showSection(o),!0;default:console.warn("[activityNavigation] unhandled changeLocation:",n)}}({rawChangeLocation:this.viewModel.rawChangeLocation,locationId:this.entry.locationId,picoId:this.entry.picoId},F,n,o),this._emit(us,{},{bubbles:!0})}toggleDetails(){this.detailsVisible=!this.detailsVisible}async undelete(){const t=function({rawChangeLocation:e,guidelineId:t,sectionId:i,picoId:s,objId:n}){switch(e){case Ri.SECTION:return`/api/v2/un-delete/guidelines/${t}/sections/${i}`;case Ri.REFERENCE:return`/api/v2/un-delete/guidelines/${t}/references/${n}`;case Ri.RECOMMENDATION:return`/api/v2/un-delete/sections/${i}/recommendations/${n}`;case Ri.PICO:return`/api/v2/un-delete/sections/${i}/picos/${s}`;case Ri.PICO_FINDING:return`/api/v2/sections/${i}/picos/${s}/findings/${n}/un-delete`;default:return as[e]?`/api/v2/un-delete/sections/${i}/picos/${s}/outcomes/${as[e]}/${n}`:null}}({rawChangeLocation:this.viewModel.rawChangeLocation,guidelineId:this.entry.guidelineId,sectionId:this.entry.sectionId,picoId:this.entry.picoId,objId:this.entry.locationId});if(t)try{const i=await p.activityStore().undelete(t);!function({rawChangeLocation:e,sectionId:t,picoId:i,guidelineId:s,undeletedObj:n,registry:o,API:a}){switch(e){case Ri.SECTION:return;case Ri.REFERENCE:{const e=o.byId(`guideline_${s}`);return void e?._insertReference(n)}case Ri.RECOMMENDATION:{const e=o.byId(`section_${t}`);return void e?._insertRecommendation(n)}case Ri.PICO:{const e=o.byId(`section_${t}`);return void e?._insertPico(n)}case Ri.PICO_FINDING:{const e=o.byId(`pico_${i}`);return void e?.findingComponent.displayFinding(n)}case Ri.PICO_ISSUE:{const e=o.byId(`pico_${i}`);return void e?.practicalIssuesComponent.displayPracticalIssue(n)}default:{const t=rs[e];if(!t)return;const s=o.byId(`pico_${i}`);if(!s)return;s.outcomeComponent[t](n),a.openPicoOutcome(i)}}}({rawChangeLocation:this.viewModel.rawChangeLocation,guidelineId:this.entry.guidelineId,sectionId:this.entry.sectionId,picoId:this.entry.picoId,undeletedObj:i,registry:e,API:F}),this.goToObject()}catch(e){console.error(e)}}_applyTrackingUpdates(){const e=this.entry.changes[0],t=function({action:e,changeLocation:t,idToCheck:i,firstChangeField:s}){const n={addToDelete:!1,addToUndelete:!1,removeFromDelete:!1};return s&&s.includes(ji.STUDY_DATA)&&(n.addToUndelete=!0),e===Fi.UNDELETE?(n.addToUndelete=!0,n.removeFromDelete=!0,n):(e===Fi.DELETE&&t!==Ri.RECOMMENDATION_CODE&&(n.addToDelete=!0),n)}({action:this.viewModel.rawAction,changeLocation:this.viewModel.rawChangeLocation,idToCheck:this.viewModel.idToCheck,firstChangeField:e?e.field:null});if(t.addToUndelete&&!this.undeleteObjs.includes(this.viewModel.idToCheck)&&this.undeleteObjs.push(this.viewModel.idToCheck),t.removeFromDelete){const e=this.deleteObjs.indexOf(this.viewModel.idToCheck);e>-1&&this.deleteObjs.splice(e,1)}t.addToDelete&&!this.deleteObjs.includes(this.viewModel.idToCheck)&&this.deleteObjs.push(this.viewModel.idToCheck)}_buildLocationFilter(e=[]){const t={lsc:this.entry.locationShortCode,lid:this.entry.locationId,loc:this.viewModel.rawChangeLocation.replace(Ui.KEY_INFO,"*"),fields:e.length>1?Di:e,label:""};return this.viewModel.rawChangeLocation===Ri.PICO&&e.length<=1&&(t.psc=this.entry.locationShortCode,delete t.lsc,delete t.lid),t}_buildUserFilter(){return{id:this.entry.userId,name:this.entry.userName}}_onFilterByLocationClick(){this._emit(gs,this._buildLocationFilter(),{bubbles:!0})}_onFilterBySingleFieldClick(e){const t=e.map((e=>e.field));this._emit(gs,this._buildLocationFilter(t),{bubbles:!0})}_onFilterByUserClick(){this._emit(ps,this._buildUserFilter(),{bubbles:!0})}_renderChange(e){const t=1===this.entry.changes.length,i=is(this.viewModel.rawChangeLocation,e,t,this.recStrengthMap);return Oe`<span class="changeItem">${$t(i)}</span>`}_renderControlButton(e){return e.button===Vi.NONE?Le:e.button===Vi.UNDELETE?Oe`<button class="viewButton" type="button" @click=${this.undelete.bind(this)}>${de.undelete||"un-delete"}</button>`:Oe`<button class="viewButton" type="button" @click=${this.goToObject.bind(this)}>${de.general.view}</button>`}
198_renderSingleField(e){if(0===e.length)return Le;if(1===e.length){const t=es(e[0].field),i=ts(this.viewModel.rawChangeLocation,t),s=i.startsWith("~@~")?i:i.toLowerCase();return Oe`<span>${$t(s)}</span>`}return this.viewModel.rawChangeLocation===Ri.PICO?Oe`<span>${this.viewModel.translatedChangeLocation}</span>`:Le}}class vs extends $e{static get properties(){return{entries:{type:Array,hasChanged:()=>!0},isActivitiesShowing:{type:Boolean}}}entries=[];isActivitiesShowing=!1;title="";firstGroup=!1;hideControls=!1;currentContentId=null;deleteObjs=[];undeleteObjs=[];_activatesRef=Ve();_entryWidgets=[];constructor(e={}){super(e),Object.assign(this,e),this.entries=e.entries||[],this.title=e.title||"",this.firstGroup&&(this.isActivitiesShowing=!0)}render(){const e=this.isActivitiesShowing?"is-open":"is-closed",t=this.isActivitiesShowing?"hideContent":"showContent";return Oe`
199            <div class="activityGroup">
200                <div class="header">
201                    <span class="title">${this.title}</span>
202                    <span class="activityCount">${this.entries.length}</span>
203                    <span class="${t}" @click=${this.toggleEntries.bind(this)}></span>
204                </div>
205                <div class="activates sliderNode ${e}" ${Ge(this._activatesRef)}></div>
206            </div>`}addEntries(e){e.forEach((e=>this.addEntry(e)))}addEntry(e){e.changes=e.changes.filter((e=>!e.field.startsWith("/track"))),e.changeLocation===Ri.PICO&&(e.changes=e.changes.sort(function(){const e={p:1,i:2,c:3};return function(t,i){const s="field",n=e[t[s].charAt(1).toLowerCase()]||0,o=e[i[s].charAt(1).toLowerCase()]||0;return(n>o)-(n<o)}}()));const t=new ms({entry:e,undeleteObjs:this.undeleteObjs,deleteObjs:this.deleteObjs,hideControls:this.hideControls,currentContentId:this.currentContentId}).placeAt(this._activatesRef.value,"last");t.startup(),this._entryWidgets.push(t),this.own(t)}toggleEntries(){this.isActivitiesShowing=!this.isActivitiesShowing}postCreate(){super.postCreate?.(),this._activatesRef.value&&this.entries.forEach((e=>this.addEntry(e)))}}let bs;class fs extends D{apiUrl="/api/v2";shortCodeBaseUrl="";idBaseUrl="";idProperty="messageId";isValidFetchCache=!0;guidelineId=0;ownerType="recommendation";ownerId=0;ownerShortCode="";_ownerIdField="recommendationId";_store=null;constructor(e){if(super(...arguments),Object.assign(this,e),e.guidelineId&&e.ownerId){const t="section"===e.ownerType?"sections":"recommendations";this.shortCodeBaseUrl=`${this.apiUrl}/guidelines/${e.guidelineId}/${t}/${e.ownerId}/discussion`,this.idBaseUrl=this.shortCodeBaseUrl}this._ownerIdField="section"===e.ownerType?"sectionId":"recommendationId",this._store={},bs=this}apiUrlFn(e){return e}fetch(){return bs._fetch(this.shortCodeBaseUrl)}addMessage(e){return bs.post(this.shortCodeBaseUrl,e)}getById(e){return bs.get(`${this.shortCodeBaseUrl}/${e}`)}remove(e){return bs.delete(`${this.shortCodeBaseUrl}/${e}`)}removeReply(e,t){return bs.delete(`${this.shortCodeBaseUrl}/${e}/reply/${t}`)}fetchCounts(e){return bs.get(`${this.apiUrl}/guidelines/${e}/discussion/count`)}addReply(e,t,i){const s={messageId:e,message:t,[this._ownerIdField]:i};return bs.post(`${this.shortCodeBaseUrl}/reply`,s)}updateMessage(e){return bs.put(`${this.shortCodeBaseUrl}/${e.messageId}`,e)}updateReply(e,t,i){return bs.put(`${this.shortCodeBaseUrl}/${e}/reply/${t}`,{value:i})}updateStatus(e,t){return bs.put(`${this.idBaseUrl}/${e}/status`,{value:t})}updateIsHidden(e,t){return bs.put(`${this.idBaseUrl}/${e}/hide`,{value:t})}}const ys={fields:[],location:"",userId:0,userName:""};function Cs(e){for(const t in e)return!1;return!0}class _s extends $e{static get properties(){return{stats:{type:Object,hasChanged:()=>!0},controlsVisible:{type:Boolean},loadingVisible:{type:Boolean},hasMore:{type:Boolean},showOnlyFlagged:{type:Boolean},showOnlyComments:{type:Boolean},filterChips:{type:Array,hasChanged:()=>!0}}}store=null;lastCheckTime=null;lastRev=0;guidelineId=0;fetchOffsetInDays=0;firstGroupShown=!0;showOnlyFlagged=!1;showOnlyComments=!1;controlsVisible=!1;loadingVisible=!0;hasMore=!1;stats={totalCount:"-",draftCount:"-",commentCount:"-",flaggedCount:"-",ckeCommentCount:"...",trackChangeCount:"...",unresolvedCommentCount:"..."};filterChips=[];queryByType={};_activityWidgets={};_undeleteObjs=[];_hasQueryByType=!1;_filterBy={};_delayTimer=null;_filterByTextRef=Ve();_activityListRef=Ve();constructor(e={}){super(e),Object.assign(this,e)}startup(){super.startup(),console.info("Starting up activities"),this._filterBy={...ys,...this.queryByType},this._hasQueryByType=0!==Object.keys(this.queryByType).length,this.refreshActivities(),this.updateStats()}render(){return Oe`
207            <div class="activitiesDialog dialogForm">
208                <div class="activityDialogLeft">
209                    ${this.controlsVisible?Le:Oe`<span class="filterLink" @click=${this.showControls.bind(this)}>${de.activityLog.searchActivities}</span>`}
210                    <div class="dialogControls ${this.controlsVisible?"visible":""}">
211                        <input type="text" class="activityFilter"
212                               placeholder="Filter activity list by term, section, author, etc.."
213                               ${Ge(this._filterByTextRef)}
214                               @keyup=${this.filter.bind(this)}>
215                        <span class="resetLink">
216                            <span @click=${this.resetFilter.bind(this)}>${de.actions.reset}</span>
217                            <span @click=${this.hideControls.bind(this)}>${de.actions.cancel}</span>
218                        </span>
219                    </div>
220                    <div class="activityFilterMessage">${this._renderFilterChips()}</div>
221                    <div class="dialogContent">
222                        <h4>${de.activityLog.activitiesTitle}</h4>
223                        <div class="activityStats">
224                            <span class="activityStat">
225                                ${de.general.total}: <span class="activityStatCount">${this.stats.totalCount}</span>
226                            </span>
227                            <span class="activityStat">
228                                ${de.guideline.status.inThisVersion}: <span class="activityStatCount">${this.stats.draftCount}</span>
229                            </span>
230                            <span class="activityStat">
231                                <span class="iconComment ${this.showOnlyComments?"active":""}" @click=${this.showComments.bind(this)}></span>
232                                <span class="activityStatCount">${this.stats.commentCount}</span>
233                            </span>
234                            <span class="activityStat">
235                                <span class="activityFlag ${this.showOnlyFlagged?"active":""}" @click=${this.showFlagged.bind(this)}></span>
236                                <span class="activityStatCount">${this.stats.flaggedCount}</span>
237                            </span>
238                        </div>
239                        ${this.loadingVisible?Oe`<span class="loadingMessage">${de.general.loading}</span>`:Le}
240                        <div ${Ge(this._activityListRef)}></div>
241                        ${this.hasMore?Oe`<div class="footerLink" @click=${this.loadMore.bind(this)}>${de.actions.readMore}</div>`:Le}
242                    </div>
243                    <div class="dialogFooter"></div>
244                </div>
245                <div class="activityDialogRight">
246                    <h4>${de.activityLog.statsTitle}</h4>
247                    <div class="activitySidebarStat">
248                        <span class="activitySidebarCount">${this.stats.ckeCommentCount}</span>
249                        <span class="activitySidebarCountLabel">${de.general.commentsText}</span>
250                    </div>
251                    <div class="activitySidebarStat">
252                        <span class="activitySidebarCount">${this.stats.trackChangeCount}</span>
253                        <span class="activitySidebarCountLabel">${de.actions.trackChanges}</span>
254                    </div>
255                    <div class="activitySidebarStat">
256                        <span class="activitySidebarCount" data-magic-id="unresolvedCommentCount">${this.stats.unresolvedCommentCount}</span>
257                        <span class="activitySidebarCountLabel">${de.guideline.unresolvedComments}</span>
258                    </div>
259                </div>
260            </div>`}clearActivities(){for(const e in this._activityWidgets)Object.hasOwn(this._activityWidgets,e)&&(this._activityWidgets[e].destroy(),delete this._activityWidgets[e])}filter(){clearTimeout(this._delayTimer),this._delayTimer=setTimeout(this.refreshActivities.bind(this),1200)}getTitle(e){const t=e.split("_");return t[0]+(t[1]&&t[1].includes("v")?" "+t[1]:"")}hide(){return this.dialog.hide(),this}hideControls(){this.controlsVisible=!1,this.resetFilter()}loadMore(){console.info("Getting more activities");const e=this._getFilter(),t=this._getFetchRange();this.store(this.contentType,this.contentShortCode,e,t).then(this._showActivities.bind(this))}refreshActivities(){this.fetchOffsetInDays=0,this.firstGroupShown=!0,this.clearActivities(),this.showActivities(),this.updateStats()}resetFilter(){this._filterBy={...ys},this._filterByTextRef.value&&(this._filterByTextRef.value.value=""),this.refreshActivities()}showActivities(){console.info("Getting activities");const e=this._getFilter(),t=this._getFetchRange();this.store(this.contentType,this.contentShortCode,e,t).then(this._showActivities.bind(this)),this._rebuildFilterChips()}showComments(){this.showOnlyComments=!this.showOnlyComments,this.refreshActivities()}showControls(){this.controlsVisible=!0}showFlagged(){this.showOnlyFlagged=!this.showOnlyFlagged,this.refreshActivities()}updateCkeCommentCount(){const e=u.getContentId();p.guidelineStore().getCommentCount(e).then((e=>{this.stats={...this.stats,ckeCommentCount:e.value||0}}))}updateFeedbackCount(){u.getGuidelineId()&&new fs({apiUrlFn:u.apiUrl}).fetchCounts(u.getGuidelineId()).then((e=>{this.stats={...this.stats,unresolvedCommentCount:e.unresolved}}))}updateStatCounts(){const e=u.getContentId();p.guidelineStore().getContentStats(e).then((e=>{this.stats={...this.stats,trackChangeCount:e.trackChangeCount||0}}))}updateStats(){const e=this._getFilter();p.activityStore().stats(this.contentType,this.contentShortCode,e).then((e=>{this.stats={...this.stats,totalCount:e.totalCount,draftCount:e.latestDraftCount,commentCount:e.numOfComments,flaggedCount:e.numOfFlagged}})),this.updateCkeCommentCount(),this.updateStatCounts(),this.updateFeedbackCount()}updated(e){super.updated?.(e),!this._listenersAttached&&this._activityListRef.value&&(this._listenersAttached=!0,this._wireEvents())}_wireEvents(){const e=this._activityListRef.value;this.own(s(e,us,this._onActivityGoto.bind(this)),s(e,ds,this._onActivityFlagToggle.bind(this)),s(e,cs,this._onActivityCommentEdit.bind(this)),s(e,ps,this._onActivityFilterByUser.bind(this)),s(e,gs,this._onActivityFilterByLocation.bind(this)))}_bucketByDateAndVersion(e){const t={};for(const i in e.activities){const s=e.activities[i];for(const e of s){const s=e.contentId,n=i+(this.currentContentId!==s?`_${s}`:"");t[n]=t[n]||[],t[n].push(e)}}return t}_clearFieldFilter(e){this._filterBy.fields=this._filterBy.fields.filter((t=>t!==e))}_clearLocationFilter(){["psc","loc","lsc","lid"].forEach((e=>delete this._filterBy[e]))}_clearSectionFilter(){delete this._filterBy.ssc}_clearUserFilter(){delete this._filterBy.userId,delete this._filterBy.userName}_getFetchRange(){const e={offset:this.fetchOffsetInDays,limit:this.fetchOffsetInDays+20};return this.fetchOffsetInDays+=20,e}_getFilter(){return{...{searchString:this._filterByTextRef.value?.value||"",flag:this.showOnlyFlagged,comments:this.showOnlyComments},...this._filterBy}}_onActivityCommentEdit(e){const t=parseInt(this.stats.commentCount,10)+(e.detail.hasComment?1:-1);this.stats={...this.stats,commentCount:t}}_onActivityFilterByLocation(e){const t=e.detail;this._filterBy.fields.push(...t.fields),delete t.fields,Object.assign(this._filterBy,t),this.refreshActivities()}_onActivityFilterByUser(e){this._filterBy.userId=e.detail.id,this._filterBy.userName=e.detail.name,this.refreshActivities()}_onActivityFlagToggle(e){const t=parseInt(this.stats.flaggedCount,10)+(e.detail.flagged?1:-1);this.stats={...this.stats,flaggedCount:t}}_onActivityGoto(){this.hide()}_onChipClose(e){e.clear(),this.refreshActivities()}_rebuildFilterChips(){const e=this._getFilter(),t=[];if(e.userId&&t.push({label:e.userName,clear:this._clearUserFilter.bind(this)}),e.ssc&&t.push({label:`${de.activityLog.section}: ${e.ssc}
260`,clear:this._clearSectionFilter.bind(this)}),e.loc){const i=j[e.loc.replace("*","")]||`~${e.loc}`,s=e.label?` ${e.label} `:"";t.push({label:`${i}${s}: ${e.psc||e.lsc||e.lid}`,clear:this._clearLocationFilter.bind(this)})}e.fields.forEach((e=>{t.push({label:U[e]||`~${e}`,clear:this._clearFieldFilter.bind(this,e)})})),this.filterChips=t}_renderFilterChips(){return 0===this.filterChips.length?Le:this.filterChips.map((e=>Oe`
261            <span class="activityFilterItem">
262                <span>${e.label}</span>
263                <span class="activityFilterItemClose" @click=${this._onChipClose.bind(this,e)}>X</span>
264            </span>
265        `))}_showActivities(e){if(console.info("Showing activities",e),this.hasMore=!Cs(e.activities),this.loadingVisible=!1,Cs(e.activities))return;const t=this._bucketByDateAndVersion(e);for(const e in t){const i=t[e];this._activityWidgets[e]?this._activityWidgets[e].addEntries(i):this._spawnGrouping(e,i)}}_spawnGrouping(e,t){const i=new vs({entries:t,title:this.getTitle(e),undeleteObjs:this._undeleteObjs,firstGroup:this.firstGroupShown,hideControls:this._hasQueryByType,currentContentId:this.currentContentId}).placeAt(this._activityListRef.value,"last");this.firstGroupShown=!1,this._activityWidgets[e]=i,this.own(i)}}class Is extends P{activities={};queryByType={};constructor(e){super(...arguments),Object.assign(this,...arguments),this.initializeActivities()}startup(){super.startup();new w({title:de.activityLog.dialogTitle,content:this.activities}).startup()}initializeActivities(){this.activities=new _s({contentType:"guidelines",contentShortCode:u.getContentShortCode(),store:p.activityStore().getActivities,queryByType:this.queryByType,currentContentId:u.getContentId()})}}class ws extends $e{static get properties(){return{notificationCount:{type:Number,hasChanged:()=>!0}}}contentType="guidelines";guidelineId=0;notificationCount=0;_lastCheckTime=null;_lastCheckTimeKey="";_poller=null;_pollStartTimer=null;constructor(e={},t){super(e,t),Object.assign(this,e)}startup(){super.startup(),this._lastCheckTimeKey=`${o.localStorage.activities}:${this.contentType}:${this.guidelineId}`,this._lastCheckTime=localStorage.getItem(this._lastCheckTimeKey)||(new Date).toISOString(),this._pollStartTimer=setTimeout(this._startPolling.bind(this),2e3)}render(){return Oe`
266            <div class="activities">
267                <span class="icon activityIcon" data-magic-id="activityIcon" tabindex="0" @click=${this.showActivities.bind(this)}></span>
268                ${0===this.notificationCount?Le:Oe`<span class="activityCount">${this.notificationCount}</span>`}
269            </div>`}clearNotification(){this.notificationCount=0,this._lastCheckTime=(new Date).toISOString(),localStorage.setItem(this._lastCheckTimeKey,this._lastCheckTime)}destroy(e){super.destroy(e),clearInterval(this._poller),clearTimeout(this._pollStartTimer)}getLastTimeCheck(){return this._lastCheckTime}async pollForChanges(){if(u.isUserAuthed())try{const e=await p.activityStore().pollForChanges(this.contentType,this.guidelineId,this.getLastTimeCheck());this.setNotification(e)}catch(e){console.debug("activity poll failed",e)}else console.debug("!! User does not have valid token, skipping polling for activities")}setNotification(e){this.notificationCount=e.value<0?"?":e.value;try{const t=e.value<0?0:e.value;navigator.setAppBadge(t).catch((e=>console.error(e)))}catch(e){}}showActivities(){new Is({}).startup(),this.trackEvent(b.show,"activities"),this.clearNotification()}_startPolling(){console.info(">> starting activity poller:",3e4),this.pollForChanges(),this._poller=setInterval(this.pollForChanges.bind(this),3e4)}}class Ss extends $e{static get properties(){return{visible:{type:Boolean},isFiltered:{type:Boolean}}}baseClass="guidelineFiltersLeft";visible=!1;isFiltered=!1;_hadControls=null;get toggleDescriptors(){return[]}get selectDescriptors(){return[]}get widgetSelector(){return""}get context(){return""}get hasControls(){return this._activeSelects().length>0||this._activeToggles().length>0}render(){const e=this._activeSelects(),t=this._activeToggles();return e.length||t.length?Oe`
270            <span class="filterBarLabel">${de.actions.filterBy}:</span>
271            ${e.map((e=>this._renderSelect(e)))}
272            ${t.map((e=>this._renderToggle(e)))}`:Le}applyFilter(){const e=[...this.toggleDescriptors.filter((e=>this[e.key])),...this.selectDescriptors.filter((e=>this[e.key]))],t=Object.values(e.reduce(((e,t)=>{const i=t.orGroup||t.key;return(e[i]=e[i]||[]).push(t),e}),{}));let i=!1;document.querySelectorAll(this.widgetSelector).forEach((e=>{const s=!t.every((t=>t.some((t=>this._evalMatcher(t,e)))));this._toggleNodeVisibility(e,s),i||=s})),this.isFiltered=i||e.length>0,this._emit("filter-change",{context:this.context,isFiltered:this.isFiltered})}resetFilters(){this.toggleDescriptors.forEach((e=>{this[e.key]=!1})),this.selectDescriptors.forEach((e=>{this[e.key]=""})),this.applyFilter()}updated(e){super.updated?.(e),e.has("visible")&&r(this.domNode,l,!this.visible),this._emitControlsChanged()}_activeSelects(){return this.selectDescriptors.filter((e=>e.optionsSource.call(this).length>0||!!this[e.key]))}_activeToggles(){return this.toggleDescriptors.filter((e=>0!==e.countSource.call(this)||this[e.key]))}_emitControlsChanged(){const e=this.hasControls;e!==this._hadControls&&(this._hadControls=e,this._emit("filter-controls-change",{context:this.context,hasControls:e}))}_renderToggle(e){const t=e.countSource.call(this);return Oe`
273            <label class="feedbackFilter" data-magic-id="filter-${e.key}">
274                <input type="checkbox" .checked=${this[e.key]} @change=${this._onToggleChange.bind(this,e)}>
275                <span>${e.label()} <span class="filterBarCount">${t}</span></span>
276            </label>`}_renderSelect(e){const t=e.optionsSource.call(this);return Oe`
277            <select data-magic-id="filter-${e.key}" .value=${this[e.key]} @change=${this._onSelectChange.bind(this,e)}>
278                <option value="">${e.label()}</option>
279                ${t.map((e=>Oe`
280                    <option value="${e.value}">${this._optionText(e)}</option>`))}
281            </select>`}_optionText(e){return Number.isFinite(e.count)?`${e.label} (${e.count})`:e.label}_onToggleChange(e,t){this[e.key]=t.target.checked,e.trackingLabel&&this.trackEvent(b.filter,`${e.trackingLabel}:${t.target.checked?"on":"off"}`),this.applyFilter()}_onSelectChange(e,t){this[e.key]=t.target.value,e.trackingLabel&&this.trackEvent(b.filter,`${e.trackingLabel}:${t.target.value||"cleared"}`),this.applyFilter()}_evalMatcher(e,t){return"optionsSource"in e?e.matcher(t,this[e.key]):e.matcher(t)}_toggleNodeVisibility(e,t){r(e,l,t)}}function Es(e=[]){return e.reduce(((e,t)=>(t&&(e[t]=(e[t]||0)+1),e)),{})}function Ts(e=[],t={}){return e.filter((e=>t[e.value]>0)).map((e=>({...e,count:t[e.value]})))}function ks(e=[]){const t=function(e=[]){return e.reduce(((e,t)=>((t||"").split("||").filter(Boolean).forEach((t=>{e[t]=(e[t]||0)+1})),e)),{})}(e),i=Object.keys(t).sort(((e,t)=>e.localeCompare(t))).map((e=>({value:e,label:e})));return Ts(i,t)}function Ls({recI18n:e,gradeLabels:t,labels:i,altLabels:s,clinicalStrength:n}){const o=e=>s?` [${n[e]}]`:"";return[{strength:"notset",label:e.strength.notset},{strength:"weak",label:t.weak+o("weak")},{strength:"weak_against",label:t.weak_against+o("weakAgainst")},{strength:"strong",label:t.strong+o("strong")},{strength:"strong_against",label:t.strong_against+o("strongAgainst")},{strength:"practice",label:i.practice.label},{strength:""},{strength:"info",label:i.info.label,subMenu:!0},{strength:"consensus",label:i.consensus.label,subMenu:!0},{strength:"public_health",label:i.public_health.label,subMenu:!0},{strength:"only_in_research",label:i.only_in_research.label,subMenu:!0},{strength:"research_statement",label:i.research_statement.label,subMenu:!0},{strength:"statutory_requirement",label:i.statutory_requirement.label,subMenu:!0},{strength:"no_strength",label:i.no_strength.label,subMenu:!0}]}function Ns(e,t){const i=(e||"notset").toLowerCase();return!t||"notset"!==i&&"no_strength"!==i?i:""}function $s(e){return[{value:"NEW",label:e.actions._new},{value:"UPDATED",label:e.msg.updatedStatus},{value:"UNDER_REVIEW",label:e.guideline.status.inReview},{value:"POSSIBLY_OUTDATED",label:e.guideline.status.possiblyOutdatedStatus},{value:"NEW_EVIDENCE",label:e.actions.newEvidenceStatus},{value:"REVIEWED_NO_NEW",label:e.guideline.status.reviewedNoNewStatus},{value:"EDITED",label:e.guideline.status.edited}
281,{value:"REVALIDATED",label:e.guideline.status.revalidated},{value:"NOTSET",label:e.general.notSet}]}function Os(e){return e&&"NOTSET"!==e?e:""}class As extends Ss{static get properties(){return{...super.properties,tagFilter:{type:String},strengthFilter:{type:String},statusFilter:{type:String},tagOptions:{type:Array,hasChanged:()=>!0},strengthOptions:{type:Array,hasChanged:()=>!0},statusOptions:{type:Array,hasChanged:()=>!0},noRationale:{type:Boolean},noPico:{type:Boolean},hideRecHidden:{type:Boolean},unrezFeedback:{type:Boolean},unresolvedCkeTc:{type:Boolean},unresolvedInlineComments:{type:Boolean},rationalCount:{type:Number},evidenceCount:{type:Number},hiddenCount:{type:Number},unrezFeedbackCount:{type:Number},unresolvedCkeTcCount:{type:Number},unresolvedInlineCommentsCount:{type:Number}}}tagFilter="";strengthFilter="";statusFilter="";tagOptions=[];strengthOptions=[];statusOptions=[];noRationale=!1;noPico=!1;hideRecHidden=!1;unrezFeedback=!1;unresolvedCkeTc=!1;unresolvedInlineComments=!1;rationalCount=0;evidenceCount=0;hiddenCount=0;unrezFeedbackCount=0;unresolvedCkeTcCount=0;unresolvedInlineCommentsCount=0;_unresolvedTcc=null;_feedbackStatuses=null;get widgetSelector(){return"div.recommendationWidget"}get context(){return"REC"}get toggleDescriptors(){const e=u.isPublished(),t=[{key:"noRationale",label:()=>de.msg.rec.noRationale,countSource:()=>this.rationalCount,matcher:this._matchesNoRationale,draftOnly:!0},{key:"noPico",label:()=>de.msg.pico.noPicos,countSource:()=>this.evidenceCount,matcher:this._matchesNoPico,draftOnly:!0},{key:"hideRecHidden",label:()=>de.general.hiddenLabel,countSource:()=>this.hiddenCount,matcher:this._matchesHidden,draftOnly:!0},{key:"unrezFeedback",label:()=>de.guideline.unresolvedComments,countSource:()=>this.unrezFeedbackCount,matcher:this._matchesFeedback.bind(this),draftOnly:!0},{key:"unresolvedCkeTc",label:()=>de.recommendation.unresolvedTc,countSource:()=>this.unresolvedCkeTcCount,matcher:this._matchesUnresolvedCkeTc.bind(this),draftOnly:!0,trackingLabel:"unresolvedCkeTc",orGroup:"unresolvedTcc"},{key:"unresolvedInlineComments",label:()=>de.recommendation.unresolvedComments,countSource:()=>this.unresolvedInlineCommentsCount,matcher:this._matchesUnresolvedInlineComments.bind(this),draftOnly:!0,trackingLabel:"unresolvedInlineComments",orGroup:"unresolvedTcc"}];return e?t.filter((e=>!e.draftOnly)):t}get selectDescriptors(){return[{key:"tagFilter",label:()=>de.contentTags.filter,optionsSource:()=>this.tagOptions,matcher:this._matchesTag},{key:"strengthFilter",label:()=>de.activityLog.strength.capitalize(),optionsSource:()=>this.strengthOptions,matcher:this._matchesStrength},{key:"statusFilter",label:()=>de.general.status.default.capitalize(),optionsSource:()=>this.statusOptions,matcher:this._matchesStatus}]}constructor(e){super(e),Object.assign(this,e)}postCreate(){super.postCreate();const e=G(this._onRecUpdate.bind(this)),t=G(this._onSelectValueChange.bind(this));this.own(n.subscribe(o.topic.update.recommendation,e),n.subscribe(o.topic.section.update,e),n.subscribe(o.topic.update.recStrength,t),n.subscribe(o.topic.update.recStatus,t),n.subscribe(o.topic.reload.tags,t))}async applyFilter(){this.unrezFeedback&&(this._feedbackStatuses?this._applyFeedbackDsAttributes():await this.refreshFeedback()),!this.unresolvedCkeTc&&!this.unresolvedInlineComments||this._unresolvedTcc||await this.refreshUnresolvedTcc(),super.applyFilter(),this._applyTccSectionRollup(this.unresolvedCkeTc,this.unresolvedInlineComments)}refreshDomCounts(){this.rationalCount=document.querySelectorAll('div.recommendationWidget span[data-magic-id="tabRational"]:not(.hasData)').length,this.evidenceCount=document.querySelectorAll('div.recommendationWidget span[data-magic-id="tabEvidence"]:not(.hasData)').length,this.hiddenCount=document.querySelectorAll("div.recommendationWidget."+H).length,this.refreshSelectOptions()}refreshSelectOptions(){const{tagStrings:e,strengths:t,statuses:i}=this._gatherRecValues(u.isPublished());this.tagOptions=ks(e),this.strengthOptions=Ts(this._strengthCatalog(),Es(t)),this.statusOptions=Ts($s(de),Es(i)),this._reapplyActiveSelects()}refreshTags(){this.refreshSelectOptions()}async refreshFeedback(){const e=await p.recommendationStore().getRecommendationsWithUnresolvedComments(u.getGuidelineShortCode())||[];this._feedbackStatuses=e,this.unrezFeedbackCount=e.length,this._applyFeedbackDsAttributes()}async refreshUnresolvedTcc(){if(u.isPublished())return;const e=await p.guidelineStore().getUnresolvedTcc(u.getGuidelineShortCode());if(!e)return;const t=this._mapUnresolvedTcc(e);this._unresolvedTcc=t.unresolvedTcc,this.unresolvedCkeTcCount=t.tcCount,this.unresolvedInlineCommentsCount=t.commentsCount}_gatherRecValues(t){const i=[],s=[],n=[];for(const o of document.querySelectorAll(this.widgetSelector)){const a=e.byNode(o)?.recommendation;a&&(i.push(o.dataset.tags),s.push(Ns(a.strength,t)),n.push(Os(a.status)))}return{tagStrings:i,strengths:s,statuses:n}}_strengthCatalog(){return Ls({recI18n:de.recommendation,gradeLabels:pe,labels:W(u.getContentOrgShortName()).strengthText,altLabels:u.hasAltGrade(),clinicalStrength:de.clinical.strength}).filter((e=>e.strength)).map((e=>({value:e.strength,label:e.label})))}_reapplyActiveSelects(){(this.tagFilter||this.strengthFilter||this.statusFilter)&&this.applyFilter()}_applyFeedbackDsAttributes(){document.querySelectorAll(this.widgetSelector).forEach((e=>{delete e.dataset.ds})),this._feedbackStatuses?.forEach((e=>{const t=document.querySelector(`[data-short-code='${e.recommendationShortCode}']`);t&&(t.dataset.ds=e.status)}))}_applyTccSectionRollup(e,t){const i=[...document.querySelectorAll("section.recommendationSection")].reverse(),s=new Set;
281i.forEach((i=>{if(!e&&!t)return void m(i,l);const n=Number(i.dataset.sectionId),o=e&&this._unresolvedTcc?.trackChanges.sectionIds.has(n),a=t&&this._unresolvedTcc?.comments.sectionIds.has(n),c=Array.from(i.querySelectorAll("div.recommendationWidget")).some(this._isRecVisible),d=s.has(n),h=o||a||c||d;r(i,l,!h),h&&s.add(Number(i.dataset.parentId))}))}_isRecVisible(e){return!O(e,l)}_mapUnresolvedTcc(e){const t=e.trackChanges||{sectionIds:[],recommendationIds:[],totalCount:0},i=e.comments||{sectionIds:[],recommendationIds:[]};return{unresolvedTcc:{trackChanges:{sectionIds:new Set(t.sectionIds),sectionWidgetIds:new Set(t.sectionIds.map((e=>`section_${e}`))),recommendationIds:new Set(t.recommendationIds),recommendationWidgetIds:new Set(t.recommendationIds.map((e=>`recommendation_${e}`)))},comments:{sectionIds:new Set(i.sectionIds),sectionWidgetIds:new Set(i.sectionIds.map((e=>`section_${e}`))),recommendationIds:new Set(i.recommendationIds),recommendationWidgetIds:new Set(i.recommendationIds.map((e=>`recommendation_${e}`)))}},tcCount:t.totalCount||0,commentsCount:(i.sectionIds?.length||0)+(i.recommendationIds?.length||0)}}_onSelectValueChange(){this.visible&&this.refreshSelectOptions()}async _onRecUpdate(){this.visible&&(this.refreshDomCounts(),await this.refreshFeedback(),await this.refreshUnresolvedTcc(),(this.unresolvedCkeTc||this.unresolvedInlineComments||this.unrezFeedback)&&this.applyFilter())}_matchesNoRationale(e){return!!e.querySelector('span[data-magic-id="tabRational"]:not(.hasData)')}_matchesNoPico(e){return!!e.querySelector('span[data-magic-id="tabEvidence"]:not(.hasData)')}_matchesHidden(e){return O(e,H)}_matchesFeedback(e){return"RESOLVED"!==(e.dataset.ds||"RESOLVED")}_matchesUnresolvedCkeTc(e){return!this._unresolvedTcc||this._unresolvedTcc.trackChanges.recommendationWidgetIds.has(e.getAttribute("widgetid"))}_matchesUnresolvedInlineComments(e){return!this._unresolvedTcc||this._unresolvedTcc.comments.recommendationWidgetIds.has(e.getAttribute("widgetid"))}_matchesTag(e,t){return e.dataset.tags?.includes(`||${t}||`)}_matchesStrength(t,i){const s=e.byNode(t)?.recommendation;return!!s&&Ns(s.strength,u.isPublished())===i}_matchesStatus(t,i){const s=e.byNode(t)?.recommendation;return!!s&&Os(s.status)===i}}class Ps extends Ss{static get properties(){return{...super.properties,incompletePico:{type:Boolean},noOutcomes:{type:Boolean},incompletePicoCount:{type:Number},noOutcomeCount:{type:Number}}}incompletePico=!1;noOutcomes=!1;incompletePicoCount=0;noOutcomeCount=0;_incompletePicoIds=[];get widgetSelector(){return"div.picoWidget"}get context(){return"PICO"}get toggleDescriptors(){return[{key:"incompletePico",label:()=>de.msg.noDirectionSet,countSource:()=>this.incompletePicoCount,matcher:this._matchesIncompletePico.bind(this)},{key:"noOutcomes",label:()=>de.msg.pico.noOutcomes,countSource:()=>this.noOutcomeCount,matcher:this._matchesNoOutcomes}]}constructor(e){super(e),Object.assign(this,e)}postCreate(){super.postCreate(),this.own(n.subscribe(o.topic.update.pico,this.refreshAll.bind(this)),n.subscribe(o.topic.update.outcomes,this.refreshAll.bind(this)))}async refreshAll(){const e=await p.picoStore().getIncompletePicos(u.getGuidelineId());this._incompletePicoIds=e||[],this.incompletePicoCount=this._incompletePicoIds.length,this.noOutcomeCount=document.querySelectorAll('div.picoWidget span[data-magic-id="tabOutcomes"]:not(.hasData)').length}_matchesIncompletePico(e){const t=Number(e.getAttribute("widgetid").replace("pico_",""));return this._incompletePicoIds.includes(t)}_matchesNoOutcomes(e){return!!e.querySelector('span[data-magic-id="tabOutcomes"]:not(.hasData)')}}function Ds(e){return e.referenceType||"NOT_SET"}class Bs extends Ss{static get properties(){return{...super.properties,refType:{type:String},hasFiles:{type:Boolean},isRm5:{type:Boolean},noPMIDorDOI:{type:Boolean},fileCount:{type:Number},rm5Count:{type:Number},doiPmidMissingCount:{type:Number},refTypeOptions:{type:Array,hasChanged:()=>!0}}}refType="";hasFiles=!1;isRm5=!1;noPMIDorDOI=!1;fileCount=0;rm5Count=0;doiPmidMissingCount=0;refTypeOptions=[];_referencesRendered=!1;_refSubscription=null;get widgetSelector(){return"div.referenceWidget"}get context(){return"REF"}get toggleDescriptors(){return[{key:"hasFiles",label:()=>de.msg.file.filesAttached,countSource:()=>this.fileCount,matcher:this._matchesHasFiles},{key:"isRm5",label:()=>de.pico.fromRevman,countSource:()=>this.rm5Count,matcher:this._matchesRm5},{key:"noPMIDorDOI",label:()=>"No DOI/PMID",countSource:()=>this.doiPmidMissingCount,matcher:this._matchesDoiPmid}]}get selectDescriptors(){return[{key:"refType",label:()=>de.references.dialogForm.referenceType.capitalize(),optionsSource:()=>this.refTypeOptions,matcher:this._matchesRefType}]}constructor(e){super(e),Object.assign(this,e)}markReferencesRendered(){this._referencesRendered||(this._referencesRendered=!0,this._refSubscription=n.subscribe(o.topic.update.reference,G(this._onReferenceUpdate.bind(this))),this.own(this._refSubscription),this.refreshAll())}refreshAll(){this.fileCount=document.querySelectorAll("div.referenceWidget:has(div.referenceFile)").length;let t=0,i=0;const s=[];for(const n of document.querySelectorAll(this.widgetSelector)){const o=e.byNode(n);o?.rm5Created&&t++,o?.hasDoiPmId||i++,o?.reference&&s.push(Ds(o.reference))}this.rm5Count=t,this.doiPmidMissingCount=i,this.refTypeOptions=Ts(this._refTypeCatalog(),Es(s)),this.refType&&this.applyFilter()}
281_refTypeCatalog(){return[{value:"PRIMARY_STUDY",label:de.clinical.primary},{value:"SYSTEMATIC_REVIEW",label:de.clinical.sr},{value:"OTHER_REF",label:de.general.other},{value:"NOT_SET",label:de.errors.ref.noRefType}]}_onReferenceUpdate(){this.visible&&this.refreshAll()}_matchesHasFiles(e){return!!e.querySelector("div.referenceFile")}_matchesRm5(t){return!!e.byNode(t)?.rm5Created}_matchesDoiPmid(t){return!e.byNode(t)?.hasDoiPmId}_matchesRefType(t,i){const s=e.byNode(t)?.reference;return!!s&&Ds(s)===i}}const Ms="REC",xs="PICO",Fs="REF",Rs="update-tab-rec",Us="update-tab-pico",qs="update-tab-ref",js={[Ms]:Rs,[xs]:Us,[Fs]:qs};class Vs extends $e{static get properties(){return{currentFilter:{type:String},anyChildFiltered:{type:Boolean}}}currentFilter=null;anyChildFiltered=!1;_recBar=null;_picoBar=null;_refBar=null;constructor(e){super(e),Object.assign(this,e)}render(){return Oe`
282            <div class="guidelineFilterBar" data-magic-id="filterBar">
283                <div data-magic-id="recBarSlot"  class=${this._slotClass(Ms)}></div>
284                <div data-magic-id="picoBarSlot" class=${this._slotClass(xs)}></div>
285                <div data-magic-id="refBarSlot"  class=${this._slotClass(Fs)}></div>
286                <span class="tagFilterReset ${this.anyChildFiltered?"":l}"
287                      data-magic-id="filterReset"
288                      @click=${this.filterViewReset.bind(this)}>${de.actions.reset}</span>
289            </div>`}_slotClass(e){return this.currentFilter===e?"":l}postCreate(){super.postCreate(),this._recBar=new As,this._picoBar=new Ps,this._refBar=new Bs,[this._recBar,this._picoBar,this._refBar].forEach((e=>{e.startup(),this.own(s(e,"filter-change",this._onChildFilterChange.bind(this)),s(e,"filter-controls-change",this._onChildControlsChange.bind(this)))})),this._attachChild(this._recBar,"recBarSlot"),this._attachChild(this._picoBar,"picoBarSlot"),this._attachChild(this._refBar,"refBarSlot")}showRecFilterBar(){this._recBar.refreshDomCounts(),this._recBar.refreshFeedback(),this._recBar.refreshUnresolvedTcc(),this._setVisible(Ms)}showPicoFilterBar(){this._picoBar.refreshAll(),this._setVisible(xs)}showRefFilterBar(){this._refBar._referencesRendered&&this._refBar.refreshAll(),this._setVisible(Fs)}loadTags(){return this._recBar.refreshTags()}markReferencesRendered(){this._refBar.markReferencesRendered()}filterViewReset(){const e=this._childForCurrent();e?.resetFilters()}_attachChild(e,t){this.domNode.querySelector(`[data-magic-id="${t}"]`).replaceChildren(e.domNode)}_applyBarVisibility(){r(this.domNode,l,!this._childForCurrent()?.hasControls)}_setVisible(e){this.currentFilter=e,this._recBar.visible=e===Ms,this._picoBar.visible=e===xs,this._refBar.visible=e===Fs,this._applyBarVisibility()}_childForCurrent(){return this.currentFilter===Ms?this._recBar:this.currentFilter===xs?this._picoBar:this.currentFilter===Fs?this._refBar:null}_onChildControlsChange(){this._applyBarVisibility()}_onChildFilterChange(e){const t=js[e.detail.context];t&&this._emit(t,e.detail.isFiltered),this.anyChildFiltered=[this._recBar,this._picoBar,this._refBar].some((e=>e.isFiltered))}}const Gs={simple:(e={},t)=>((e=Object.assign({},{val:"",result:""},e)).result=e.val.replace(t,"<mark>$&</mark>"),x.toDomFromTemplate('<div class="searchResult"><sapn></sapn><span>${!r.result}</span><input type="hidden" value="${r.val}"></div>',{i18n:de,r:e})),findText(e={}){let t,i=Object.assign({},e);t=i.field.startsWith("recommendation_")?"recommendation":i.field.replace("keyInfo_","").replace("referenceNumber","reference"),"text"===i.field&&"SECTION"===i.objectType&&(t="section_text"),"heading"===i.field&&"SECTION"===i.objectType&&(t="section_heading"),i.field=U[t]||`~${i.field}`;return i=Object.assign({},{result:"",sectionId:0,recommendationId:0,field:""},i),i.recommendationId=i.objectId,i.result=i.match,x.toDomFromTemplate('<div class="searchResult"><span class="leftArrowIcon"></span><span>${!r.result}</span><span class="searchResultLocation">${r.field}</span><input type="hidden" value="${r.recommendationId}"></div>',{i18n:de,r:i})},sectionGroup(e={}){e=Object.assign({},{sectionLabel:"",sectionHeading:"",sectionId:0},e);const t=document.createElement("div");return t.innerHTML=e.sectionHeading||"",e.sectionHeading=t.textContent||t.innerText||"",x.toDomFromTemplate('<div class="searchSection"><h3>${r.sectionLabel} &nbsp;${r.sectionHeading} <span class="expand">+</span></h3><div class="results"></div></div>',{i18n:de,r:e})}};const Hs="autocomplete-active",Ws=["Afghanistan","Albania","Algeria","Andorra","Angola","Anguilla","Antigua & Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia &amp; Herzegovina","Botswana","Brazil","British Virgin Islands","Brunei","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central Arfrican Republic","Chad","Chile","China","Colombia","Congo","Cook Islands","Costa Rica","Cote D Ivoire","Croatia","Cuba","Curacao","Cyprus","Czech Republic","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Ethiopia","Falkland Islands","Faroe Islands","Fiji","Finland","France","French Polynesia","French West Indies","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guam","Guatemala","Guernsey","Guinea","Guinea Bissau","Guyana","Haiti","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Kosovo","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Macau","Macedonia","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Mauritania","Mauritius","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauro","Nepal","Netherlands","Netherlands Antilles","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","North Korea","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Poland","Portugal","Puerto Rico","Qatar","Reunion","Romania","Russia","Rwanda","Saint Pierre &amp; Miquelon","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Korea","South Sudan","Spain","Sri Lanka","St Kitts &amp; Nevis","St Lucia","St Vincent","Sudan","Suriname","Swaziland","Sweden","Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","Timor L'Este","Togo","Tonga","Trinidad &amp; Tobago","Tunisia","Turkey","Turkmenistan","Turks &amp; Caicos","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States of America","Uruguay","Uzbekistan","Vanuatu","Vatican City","Venezuela","Vietnam","Virgin Islands (US)","Yemen","Zambia","Zimbabwe"];class zs extends a{constructor(e){super(...arguments),this.templateString='<div class="autocomplete">\n    <form autocomplete="off">\n        <div class="autocompleteSearch">\n            <input type="text" placeholder="${formPlaceholder}" data-magic-id="searchInp">\n        </div>\n        <div class="autocompleteItems" data-magic-id="autocompleteItems"></div>\n        <input type="button" value="${submitBtn}" class="searchBtn" data-magic-id="searchBtn">\n    </form>\n</div>\n\n\n',this.submitBtn="search",this.formPlaceholder="search",this.showSubmitBtn=!1,this.currentFocus=null,this._results=Ws,this.closeOnSelect=!1,Object.assign(this,e||{}),this.formPlaceholder=e.placeHolder}postCreate(){super.postCreate(),this.showSubmitBtn?this.own(s(this.searchBtn,"keydown",(function(){}))):this.searchBtn.parentNode.removeChild(this.searchBtn),this.own(s(this.searchInp,"input",G(this._onInput.bind(this),1e3)),s(this.searchInp,"keydown",this._onKeyDown.bind(this)))}addActive(e){if(!e)return!1;this.removeActive(e),this.currentFocus>=e.length&&(this.currentFocus=0),this.currentFocus<0&&(this.currentFocus=e.length-1),h(e[this.currentFocus],Hs)}closeAllLists(){console.info("closing all autocomplete"),this.autocompleteItems.replaceChildren()}focusInput(){this.searchInp.focus()}removeActive(e){for(let t=0;t<e.length;t++)m(e[t],Hs)}_onInput(){this.closeAllLists.call(this);const e=this.searchInp.value;if(!e)return!1;this.currentFocus=-1,this._fetch(e).then(this._render.bind(this))}_onKeyDown(e){let t=this.autocompleteItems;t&&(t=t.getElementsByTagName("div")),40===e.keyCode?(this.currentFocus++,this.addActive(t)):38===e.keyCode?(this.currentFocus--,this.addActive(t)):13===e.keyCode&&(e.preventDefault(),this.currentFocus>-1&&t&&t[this.currentFocus]?.click())}_fetch(e){const t=[];for(let i=0;i<this._results.length;i++)this._results[i].substring(0,e.length).toUpperCase()===e.toUpperCase()&&t.pu
289sh({val:this._results[i]});return t}_render(e){console.info("autocomplete results : ",e);const t=this;for(let t=0;t<e.length;t++)i(e[t]);function i(e){const i=t._renderResult(e,t.searchInp);t.autocompleteItems.appendChild(i),t.own(s(i,"click",t._resultCb(e))),t.closeOnSelect&&t.own(s(i,"click",t.closeAllLists.bind(t)))}}_renderResult(e,t){const i=document.createElement("div");return i.innerHTML="<strong>"+e.val.substr(0,t.length)+"</strong>",i.innerHTML+=e.val.substr(t.length),i.innerHTML+='<input type="hidden" value="'+e.val+'">',i}_resultCb(){const e=this;return function(){e.searchInp.value=this.getElementsByTagName("input")[0].value}}}const Ks="selectedSearch",Ys={evidence:de.actions.search.pico,recommendation:de.actions.search.rec,reference:de.actions.search.ref};class Qs extends a{tab="";title="";_autoComplete=null;_lastSearchString="";constructor(){super(...arguments),this.id="findText",this.i18n=de,this.templateString='<div class="findText">\n    <div class="findInputWrap">\n        <div data-magic-id="search"></div>\n    </div>\n    <span class="icon closeIcon" data-magic-id="closeFindBtn"></span>\n</div>',Object.assign(this,...arguments)}startup(){super.startup(),this._wireEvents();const e=this,t={id:"findTextInput",_fetch:t=>(e._lastSearchString=t,p.searchStore().findText(u.getGuidelineId(),e.tab,t)),_render:function({results:e}=e){if("string"==typeof e)return void this.autocompleteItems.appendChild(Gs.simple({val:e}));if(0===e.length)return void this.autocompleteItems.appendChild(Gs.simple({val:de.msg.search.noHits}));const t=this,i=e.reduce(((e,t)=>(e[t.sectionId]=e[t.sectionId]||[],e[t.sectionId].push(t),e)),{});console.info("autocomplete results : ",e,i);for(let e in i)if(i.hasOwnProperty(e)){const o=i[e],a=Gs.sectionGroup(o[0]),c=a.querySelector(".results"),d=a.querySelector(".expand"),h=function(e,t){return()=>{r(e,"expandIcon"),r(e,"hideIcon"),r(t,l)}};s(d,"click",h(d,c)),t.autocompleteItems.appendChild(a);for(let e=0;e<o.length;e++)o[e].matches.forEach((t=>{o[e].match=t,n(o[e],c)}))}function n(e,i){const n=Gs.findText(e);i.appendChild(n),t.own(s(n,"click",t._resultCb(e,n)))}},_resultCb:function(t,i){let s=parseInt(t.objectId,10),a=t.field.split("_")[0],r={evidence(){e._onSelectClick.call(e,i),F.openPico(s,a)},recommendation(){e._onSelectClick.call(e,i),"text"!==a&&"heading"!==a||"SECTION"!==t.objectType?F.openRecommendation(s,a):F.showSection(s,a)},reference(){e._onSelectClick.call(e,i),F.openReference(s,a)}};const l=t.match&&t.matches.length>0?e._lastSearchString:"";return n.publish(o.topic.toggle.highlight,{highlight:l}),r[e.tab]},placeHolder:this.title};this._autoComplete=new zs(t,this.search),this._autoComplete.startup(),this._autoComplete.focusInput(),this.autocompleteItems=this._autoComplete.autocompleteItems,this.own(this._autoComplete,s(this.closeFindBtn,"click",e.closeFind.bind(e)))}closeFind(){console.info("closing find panel"),this._emit("close-find")}destroy(){super.destroy(),this._autoComplete.destroyRecursive(),n.publish(o.topic.toggle.highlight,{})}_changeContext(e){const t=e.replace("Tab","");this.title!==Ys[t]&&(this.tab=t,this.title=Ys[this.tab],this._autoComplete.searchInp.placeholder=Ys[this.tab],this._autoComplete._onInput())}_onSelectClick(e){u.areWeMobile()&&this.closeFind(),this.autocompleteItems.querySelector("div.searchResult")?.classList.remove(Ks),h(e,Ks)}_wireEvents(){const e=this;this.own(n.subscribe(o.topic.show.evidence,(()=>{e._changeContext.call(e,o.tabs.evidence)})),n.subscribe(o.topic.show.recommendation,(()=>{e._changeContext.call(e,o.tabs.recommendation)})),n.subscribe(o.topic.show.references,(()=>{e._changeContext.call(e,o.tabs.reference)})))}}const Js=["SMALL","NONE","NOTSET","NA"],Xs=["notset","hideMe","moderate","large"];class Zs extends a{constructor(){super(...arguments),this.i18n=de,this.templateString='<div class="surveyParticipants">\n    <div class="surveyPartColOne">\n        <input type="checkbox" data-magic-id="includeUser">\n        <span class="icon ${user.hasCompleted}" data-magic-id="hasCompleted"></span>\n    </div>\n    <div class="surveyPartColTwo">\n        ${user.name}\n    </div>\n    <div class="surveyPartColTwo">\n        <a href="mailto:${user.email}?subject=MAGICapp Survey">${user.email}</a>\n    </div>\n    <div class="surveyPartColThree">
289\n        <span class="loadingMessage hideMe" data-magic-id="loadSpinner"></span>\n        <span class="tooltip conflictTip hideMe" data-magic-id="conflictTip">\n            <tool-tip inert role="tooltip" tip-position="top"></tool-tip>\n        </span>\n        <span class="tooltip excludedTip hideMe" data-magic-id="excludeTip">\n            <tool-tip inert role="tooltip" tip-position="top">${i18n.coi.excluded}</tool-tip>\n        </span>\n    </div>\n</div>',this.user={userId:0,name:"",email:"",conflicts:"",hasCompleted:!1,excluded:!1},this.participating=!1,this.viewMode=!0,Object.assign(this,...arguments)}postCreate(){super.postCreate(),this.includeUser.checked=this.participating,r(this.includeUser,l,this.viewMode),r(this.hasCompleted,l,!this.viewMode),this.own(s(this.includeUser,"change",(()=>this._emit("on-change"))))}startup(){super.startup()}getUserId(){return this.user.userId}isSelected(){return this.includeUser&&this.includeUser.checked}showConflictLoadingSpinner(){m(this.loadSpinner,l),h(this.conflictTip,l),h(this.excludeTip,l)}setConflict(e={conflicts:[]}){const t=e.conflicts.some((e=>!Js.includes(e.level)));if(!t)return void h(this.conflictTip.parentElement,l);h(this.loadSpinner,l);let i=0,s=!1,n=[];e.conflicts.filter((e=>!Js.includes(e.level))).forEach((e=>{const t=e.level.toLowerCase(),s=e.level.charAt(0).toUpperCase()+e.level.slice(1),o=de.coi["coi"+s]||s,a=e.comment||"";i<Xs.indexOf(t)&&(i=Xs.indexOf(t)),n.push(`${e.intervention} : ${o} : ${a}`)})),s=e.conflicts.some((e=>e.excluded)),e.showComments&&(this.conflictTip.firstElementChild.innerHTML=n.join("<br>"));const o=Xs[i]||"notset";m(this.conflictTip,...Xs),h(this.conflictTip,o),r(this.excludeTip,l,!s),console.info("set conflict",this.user.name,o,i,s,e)}toggleSection(e){this.includeUser.checked=void 0!==e?e:!this.includeUser.checked}}class en extends a{constructor(){super(...arguments),this.templateString='<div class="surveyQuestion">\n    <h4 class="topMargin">${i18n.voting.questionOpen}</h4>\n    <span data-magic-id="questionCke"></span>\n    <form data-magic-id="form">\n        <input type="hidden" name="question" value="${question.question}"/>\n    </form>\n</div>',this.i18n=de,Object.assign(this,...arguments)}postCreate(){super.postCreate(),this.own(z(this.form)),this.ckComment=new Tt({text:this.question.question||"",placeHolder:"",location:`${this.id}_feedback`,toolbar:"MINI",useSave:!1},this.questionCke),this.ckComment.startup(),this.ckComment.on("saved",(e=>{this.form.elements.question.value=e.text,this._emit("on-change")}))}getQuestions(){return[{picoId:this.picoId||"",picoElement:this.picoElement||"",questionId:this.question.questionId,question:this.form.elements.question.value,questionType:"NO_ANSWER"}]}isValid(){return""!==this.form.elements.question.value}}class tn extends a{constructor(){super(...arguments),this.outcomes=[],this._nodes=[],this._nodes=[],Object.assign(this,...arguments)}getQuestions(e){return this._nodes.filter((e=>e.querySelectorAll('input[type="checkbox"]:checked').length>0)).map((t=>{const i=t.getElementsByTagName("input")[0];return{questionId:parseInt(i.value),question:i.dataset.question,questionType:e,picoId:i.dataset.picoid||"",picoElement:i.dataset.picoelement||""}}))}isValid(){return this._nodes.some((e=>e.getElementsByTagName("input")[0].checked))}renderQuestions(e,t){const i={questionId:e.questionId,selected:e.selected?"checked":"",question:e.question||[],picoId:e.intervention&&e.intervention.picoId||"",picoElement:e.intervention&&e.intervention.picoElement||"",i18n:de},n=x.placeTemplate('<div class="surveyQuestionWrap">\n    <label class="radioLabel"><input type="checkbox" value="${questionId}" data-question="${question}" data-picoId="${picoId}" data-picoElement="${picoElement}" ${selected}> ${question}</label>\n</div>',i,t);this._nodes.push(n),this.own(s(n.firstElementChild,"click",(()=>this._emit("on-change"))))}}class sn extends tn{constructor(){super(...arguments),this.templateString='<div class="surveyQuestion">\n    <h4 class="topMargin">${i18n.clinical.interventions}</h4>\n\n    <p class="surveyByline">${i18n.voting.interventionsMsg}</p>\n    <div data-magic-id="interventionsList" class="surveyInterventionsList"></div>\n</div>\n',this.i18n=de,this.interventions=[],this._nodes=[],Object.assign(this,...arguments)}postCreate(){super.postCreate(),this.interventions.sort(((e,t)=>{const i=(e.question||"").toUpperCase(),s=(t.question||"").toUpperCase();return i.localeCompare(s)}
289)).forEach((e=>this.renderQuestions(e,this.interventionsList)))}}class nn extends tn{constructor(){super(...arguments),this.templateString='<div class="surveyQuestion">\n    <h4 class="topMargin">KeyInfo Factors</h4>\n    <p class="surveyByline">${i18n.voting.title.pickTheFactors}</p>\n    <form data-magic-id="interventionsList" class="surveyInterventionsList">\n        <label><input type="checkbox" value="BENEFITS">${labels.benefits}</label>\n        <label><input type="checkbox" value="EVIDENCE">${labels.evidence}</label>\n        <label><input type="checkbox" value="PREFERENCES">${labels.preferences}</label>\n        <label><input type="checkbox" value="RESOURCES">${labels.resources}</label>\n        <label><input type="checkbox" value="EQUITY" data-keyinfo-type="ETD">${labels.equity}</label>\n        <label><input type="checkbox" value="ACCEPTABILITY" data-keyinfo-type="ETD">${labels.acceptability}</label>\n        <label><input type="checkbox" value="FEASIBILITY" data-keyinfo-type="ETD">${labels.feasibility}</label>\n    </form>\n</div>\n',this.i18n=de,this.factors=[],this._nodes=[],Object.assign(this,...arguments),this.labels={...de.recommendation.keyInfo.title},this.labels.resources="ETD"!==this.keyInfoType?de.etd.resources:this.labels.resources}postCreate(){super.postCreate(),this.own(z(this.interventionsList)),console.info("starting questionKeyInfoJudgement",this.keyInfoType,this.factors),"ETD"!==this.keyInfoType&&this.domNode.querySelectorAll('input[data-keyinfo-type="ETD"]').forEach((e=>{h(e.parentElement,l)})),this.domNode.querySelectorAll('input[type="checkbox"]').forEach((e=>{this.factors.includes(e.value)&&(e.checked=!0),this.own(s(e,"click",(()=>this.onChange())))}))}getQuestions(){const e=this.question&&this.question.questionId||0;return[...this.interventionsList.querySelectorAll('input[type="checkbox"]:checked')].map((t=>({questionId:e,question:t.value,questionType:"KEY_INFO_JUDGEMENTS"})))}isValid(){return this.domNode.querySelectorAll('input[type="checkbox"]:checked').length>0}}class on extends a{constructor(){super(...arguments),this.templateString='<div class="surveyMultiAnswer">\n    <input type="text" maxlength="256" class="answerInput" data-magic-id="answerInput" placeholder="${placeHolder}" disabled>\n    <button type="button" data-magic-id="saveControl">${btnLabel}</button>\n    <span class="icon editIcon" title="${i18n.actions.edit}" data-magic-id="editControl"></span>\n    <span class="icon deleteIcon" title="${i18n.actions.deleteItem}" data-magic-id="deleteControl"></span>\n</div>\n',this.i18n=de,this.placeHolder=de.voting.placeholderAnswer,this.answerId=0,this.btnLabel="",Object.assign(this,...arguments),this.btnLabel=this.answerId?de.general.ok:de.actions.add}startup(){super.startup(),this.answerInput.value=this.answer.answer||"",this.answerInput.disabled=!!this.answer.answer,r(this.saveControl,l,this.answer.answerId),r(this.editControl,l,!this.answer.answerId),r(this.deleteControl,l,!this.answer.answerId),this.saveControl.disabled=""===this.answerInput.value,this.own(s(this.saveControl,"click",(()=>this.saveAnswer())),s(this.editControl,"click",(()=>this.editAnswer())),s(this.deleteControl,"click",(()=>this.removeAnswer())),s(this.answerInput,"keyup",(()=>{this.saveControl.disabled=""===this.answerInput.value})))}editAnswer(){this.saveControl.innerText=de.general.ok,this.answerInput.disabled=!1,m(this.saveControl,l),h(this.editControl,l),h(this.deleteControl,l)}getAnswer(){return{answerId:this.answer.answerId,answer:this.answerInput.value}}saveAnswer(){""!==this.answerInput.value&&(this.saveControl.innerText=this.btnLabel,this.answerInput.disabled=!0,h(this.saveControl,l),m(this.editControl,l),m(this.deleteControl,l),this._emit("save-answer",{answerId:this.answerId,answer:this.answerInput.value}))}setAnswerId(e){this.answerId=e,this.btnLabel="Save",this.saveControl.innerText=this.btnLabel}removeAnswer(){console.info("removeAnswer - ",this.answerId),this._emit("remove-answer",this.answerId)}}class an extends a{constructor(){super(...arguments),this.templateString='<div class="surveyQuestion">\n    <h4 class="topMargin">${i18n.voting.typeQuestion}</h4>\n    <h4>${i18n.voting.question}</h4>\n    <div data-magic-id="questionCke"></div>\n    <form data-magic-id="form">\n        <input type="hidden" name="question" value="${question.question}" />\n    </form>\n    <h4>${i18n.voting.answers}</h4>\n    <div data-magic-id="answerList" class="surveyAnswerList"></div>\n    <button type="button" class="addAnswerBtn" data-magic-id="addBtn">${addBtnLabel}</button>\n</div>',this.i18n=de,this.addBtnLabel=de.voting.addAnswer,this._answers={},Object.assign(this,...arguments)}postCreate(){super.postCreate(),this.own(z(this.form)),this._answers={}
289,this.question.answers.forEach((e=>this.renderAnswer(e)));const e=this;this.ckComment=new Tt({text:this.question.question||"",placeHolder:de.voting.placeholderQuestion,location:this.id+"_multiChoices",toolbar:"MINI",useSave:!1},this.questionCke),this.ckComment.startup(),this.ckComment.on("saved",(t=>{e.form.elements.question.value=t.text,e._emit("on-change")})),this.own(s(this.form.elements.question,"keyup",(()=>this.onChange())),s(this.addBtn,"click",(()=>this.addAnswer())))}addAnswer(){this.renderAnswer({answerId:0}),h(this.addBtn,l)}getQuestions(){const e=Object.keys(this._answers).map((e=>this._answers[e].getAnswer()));return[{questionId:this.question.questionId,question:this.form.elements.question.value,questionType:"MULTI_CHOICE",answers:e}]}onChange(){}renderAnswer(e){const t=new on({answer:e}).placeAt(this.answerList,"last");t.startup(),this._answers[t.id]=t,this.own(t,s(t,"save-answer",(e=>this.saveAnswer(t,e.detail))),s(t,"remove-answer",(()=>this.removeAnswer(t))))}removeAnswer(e){console.info("answer",e.answerId,e.answer),e.destroyRecursive(),delete this._answers[e.id],this.onChange()}saveAnswer(e,t){console.info("answer",t),m(this.addBtn,l),this._answers[e.id]=e,this.onChange()}isValid(){return""!==this.form.elements.question.value&&Object.keys(this._answers).length>1}}class rn extends tn{outcomes=[];_nodes=[];constructor(){super(...arguments),this.templateString='<div class="surveyQuestion">\n    <h4 class="topMargin">${i18n.clinical.outcomes}</h4>\n    <p class="surveyByline">${i18n.voting.outcomesMsg}</p>\n    <div data-magic-id="outcomeList" class="surveyInterventionsList"></div>\n</div>\n',this.i18n=de,Object.assign(this,...arguments)}startup(){super.startup(),this.outcomes.forEach((e=>this.renderQuestions(e,this.outcomeList)))}}class ln extends a{constructor(){super(...arguments),this.templateString='<div class="groupSelectWrap">\n    <select tabindex="0" data-magic-id="groupSelect">\n        <option tabindex="0" value="">${i18n.settings.permissions.allGroups}</option>\n        <option tabindex="0" value="p:31">${i18n.general.account.role.admin}</option>\n        <option tabindex="0" value="p:3">${i18n.general.account.role.author}</option>\n        <option tabindex="0" value="p:2">${i18n.general.account.role.reviewer}</option>\n        <option tabindex="0" value="p:1">${i18n.general.viewer}</option>\n    </select>\n</div>',this.i18n=de}startup(){super.startup(),p.groupGuidelineStore().getGroups(u.getGuidelineId()).then((e=>{e.forEach((e=>{const t=document.createElement("option");t.value=`g:${e.id}`,t.text=e.name,this.groupSelect.add(t)}))})),this.own(s(this.groupSelect,"change",(e=>{this.onChange(e)})))}onChange(e){const[t,i]=e.target.value.split(":"),s=t,n=parseInt(i||0,10);this._emit("on-change",{type:s,id:n})}}const cn="REC_INTERVENTIONS",dn="KEY_INFO_JUDGEMENTS",hn="PICO_OUTCOMES",un="MULTI_CHOICE",pn="NO_ANSWER";function gn(e,t){const i=new Set(e.map((e=>e.question)));return e.concat(t.filter((e=>!i.has(e.question))))}class mn extends a{formButtons={};formButtonsArgs={help:""};oId=0;oShortCode="";mode="new";store=null;coiStore=null;surveyType="";survey={surveyId:0,name:"",instructions:"",questionType:"",startDate:"",endDate:"",objType:""};_surveyType="NO_QUESTION";_questions=null;_surveyParticipant=[];_participantConflicts={};constructor(){super(...arguments),this.templateString='<div class="surveyEditor dialogForm">\n    <form data-magic-id="form">\n        <div class="surveyEditorTop">\n            <fieldset class="halfWidth">\n                <label>${i18n.voting.type}</label>\n                <select name="questionType" required>\n                    <option value="">${i18n.voting.select}</option>\n                    <option value="NO_ANSWER">${i18n.voting.typeFeedback}</option>\n                    <option value="MULTI_CHOICE">${i18n.voting.typeQuestion}</option>\n                    <option value="PICO_OUTCOMES">${i18n.voting.typeOutcomeDirection}</option>\n                    <option value="REC_INTERVENTIONS">${i18n.voting.typeInterventionStrength}</option>\n                    <option value="KEY_INFO_JUDGEMENTS">${i18n.voting.typeEtd}</option>\n                </select>\n            </fieldset>\n            <fieldset class="halfWidth surveyTypeComment">
289\n                <span data-magic-id="surveyTypeComment"></span>\n            </fieldset>\n            <fieldset class="halfWidth lessBotMargin">\n                <label>\n                    ${i18n.voting.name}\n                    <input type="text" name="name" required>\n                </label>\n            </fieldset>\n            <fieldset class="lessBotMargin">\n                <label>\n                    ${i18n.voting.instructions}\n                    <textarea name="instructions" required></textarea>\n                </label>\n            </fieldset>\n        </div>\n        <div>\n            <div class="hideMe" data-magic-id="questionsLoad">${i18n.general.loading}</div>\n            <div data-magic-id="questionForm"></div>\n        </div>\n        <div class="surveyEditorAuthors">\n            <h4>${i18n.voting.includeParticipants}</h4>\n            <p>${i18n.actions.inviteExplanationPoll}</p>\n            <span class="selectAllPart">\n                <label><input type="checkbox" data-magic-id="toggleAll">${i18n.actions.selectAll}</label>\n                <select data-magic-id="groupSelect"></select>\n            </span>\n            <div class="hideMe" data-magic-id="participantLoad">${i18n.general.loading}</div>\n            <div data-magic-id="participantList" class="voterNameList"></div>\n        </div>\n    </form>\n    <div class="dialogFormButtons" data-magic-id="formButtons"></div>\n</div>',this.i18n=de,Object.assign(this,...arguments),this.survey.questions=this.survey.questions||{};const e=this.survey.questions[0];this._surveyType=e&&e.questionType||"NO_QUESTION"}postCreate(){super.postCreate(),u.areWeOnline()&&this.admin&&this.currentDraft&&(this.showControls=!0),this.coiStore=p.coiStore(),this.mode=0===this.survey.surveyId?"new":"edit",this.formButtonsArgs.submitLabel="new"===this.mode?de.actions.create:de.actions.update,this.formButtons=new c(this.formButtonsArgs,this.formButtons),this.formButtons.startup(),this._surveyParticipant=[],this._setPollTypeSelect(),this.own(s(this.toggleAll,"click",this.toggleAllParticipants.bind(this)),s(this.form,"keyup",this._isFormValid.bind(this)),s(this.form.questionType,"change",(e=>{this._isFormValid(),this.loadQuestionForm(e.target.value)})),s(this.formButtons,"submit",this.update.bind(this)),s(this.formButtons,"cancel",(e=>{this._emit("cancel-edit")})))}async startup(){super.startup(),this.own(z(this.form)),0!==this.survey.surveyId?(await this.renderSurvey(),await this.loadParticipants(),await this.loadUserConflicts(),this._filterConflicts()):(await this.loadParticipants(),await this.loadUserConflicts()),this._groupSelector=new ln({},this.groupSelect),this._groupSelector.startup(),this.own(s(this._groupSelector,"on-change",(e=>this.filterUsers(e.detail))))}filterUsers(e){const t=e.type,i=e.id;this._surveyParticipant.forEach((e=>{const s=e.user,n=""!==t&&("p"===t?s.permission!==i:!s.groupIds.contains(i));r(e.domNode,l,n)}))}loadQuestionForm(e){switch(console.info("action",e),this._questions&&this._questions.destroyRecursive(),this.survey.questionType=e,e){case"":this.surveyTypeComment.innerText="";break;case pn:this.surveyTypeComment.innerText=de.voting.typeFeedbackDescr,this._questions=new en({mode:"new",question:{question:""}}).placeAt(this.questionForm,"only"),this.own(s(this._questions,"on-change",this._isFormValid.bind(this)));break;case un:this.renderMultiChoiceQuestions({question:"",answers:[]},this.mode);break;case hn:m(this.questionsLoad,l),this._getOutcomes().then((e=>this.renderOutcomeQuestions(e,this.mode)));break;case cn:m(this.questionsLoad,l),this._getInterventions().then((e=>this.renderInterventionQuestions(e,this.mode)));break;case dn:m(this.questionsLoad,l),this.renderKeyInfoJudgementQuestions([],this.mode);break;default:this.surveyTypeComment.innerText=de.voting.typeEtdDescr,console.warn("unknown action")}}async loadParticipants(){m(this.participantLoad,l);(await this.store.getParticipants(this.survey.surveyId)).forEach((e=>{const t=e.userId,i=this.survey.participantIds&&this.survey.participantIds.includes(parseInt(t)),n=new Zs({user:e,participating:i,viewMode:!1}).placeAt(this.participantList,"last");n.startup(),this._surveyParticipant.push(n),this.own(s(n,"on-change",this._isFormValid.bind(this)))})),h(this.participantLoad,l)}async loadUserConflicts(){const e=this.survey.surveyType||this.surveyType,t={};"PICO"===e&&(t.picoId=this.oId),"REC"===e&&(t.recommendationId=this.oId),this._surveyParticipant.forEach((e=>e.showConflictLoadingSpinner())),await Promise.all(this._surveyParticipant.map((e=>this.coiStore.findConflictsByUser(e.user.userId,t).then((t=>{t.showComments=u.isContentAdmin(),this._participantConflicts[e.user.userId]=t,e.setConflict(t)})))))}renderInterventionQuestions(e,t){this.surveyTypeComment.innerText=de.voting.typeInterventionStrengthDescr,this._questions=new sn({mode:t,interventions:e}).placeAt(this.questionForm,"only"),h(this.questionsLoad,l),this._filterConflicts(),this.own(s(this._questions,"on-change",this._isFormValid.bind(this)),s(this._questions,"on-change",this._filterConflicts.bind(this)))}renderKeyInfoJudgementQuestions(e,t){this.surveyTypeComment.innerText=de.recommendation.keyInfo.factors,this._questions=new nn({mode:t,factors:e,keyInfoType:this.keyInfoType}).placeAt(this.questionForm,"only"),h(this.questionsLoad,l),this.own(s(this._questions,"on-change",this._isFormValid.bind(this)))}renderMultiChoiceQuestions(e,t){this.surveyTypeComment.innerText=de.voting.typeQuestionDescr,this._questions=new an({mode:t,question:e}).placeAt(this.questionForm,"only"),h(this.questionsLoad,l),this.own(s(this._questions,"on-change",this._isFormValid.bind(this)))}renderOutcomeQuestions(e,t){this.surveyTypeComment.innerText=de.voting.typeOutcomeDirectionDescr,this._questions=new rn({mode:t,outcomes:e}).placeAt(this.questionForm,"only"),h(this.questionsLoad,l),this.own(s(this._questions,"on-change",this._isFormValid.bind(this)))}renderSurvey(){this.form.questionType.value=this._surveyType,this.form.questionType.disabled=!0,this.form.name.value=this.survey.name,this.form.instructions.value=this.survey.instructions;let e=this.survey.questions;if(cn===this._surveyType)return this._getInterventions().then((t=>{e=gn(e,t),this.renderInterventionQuestions(e,this.mode)}));if(dn===this._surveyType){const t=[...new Set(e.map((e=>e.question.split("||")[0])))];return this.renderKeyInfoJudgementQuestions(t,this.mode),Promise.resolve()}return hn===this._surveyType?this._getOutcomes().then((t=>{e=gn(e,t),this.renderOutcomeQuestions(e,this.mode)})):un===this._surveyType?(this.renderMultiChoiceQuestions(this.survey.questions[0],this.mode),Promise.resolve()):pn===this._surveyType?(this.surveyTypeComment.innerText=de.voting.typeFeedbackDescr,this._questions=new en({mode:"edit",question:this.survey.questions[0]}).placeAt(this.questionForm,"only"),Promise.resolve()):(this.formButtons.enableSummit(),Promise.resolve())}toggleAllParticipants(){const e=this.toggleAll.checked;this._surveyParticipant.forEach((t=>{O(t.domNode,l)||t.toggleSection(e)})),this._isFormValid()}update(){const e=this._surveyParticipant.filter((e=>e.isSelected())).map((e=>e.getUserId())),t={surveyType:this.surveyType||this.survey.surveyType,name:this.form.name.value,instructions:this.form.instructions.value,questions:this._questions.getQuestions(this.form.questionType.value),participantIds:e,oId:this.oId,oShortCode:this.oShortCode};this.formButtons.setWait();const i=e=>{console.info("survey updated",e),this._emit("updated",e)};0===this.survey.surveyId?this.store.newSurvey(t).then(i):(t.surveyId=this.survey.surveyId,this.store.saveSurvey(t).then(i)),this.trackEvent(this._trackActions.save,`survey:${this.survey.surveyId}`)}_getInterventions(){return this.store.getInterventions(this.oId)}_getOutcomes(){return this.store.getOutcomes(this.oId)}_getMultiChoice(){return this.store.getMultiChoice(this.survey.surveyId)}_filterConflicts(){const e={};this._questions?.getQuestions("").forEach((t=>{e[t.picoId]=e[t.picoId]||[],e[t.picoId].push(t.picoElement)})),this._surveyParticipant.forEach((t=>{const i=this._participantConflicts[t.user.userId],s=Object.keys(e).length>0?i.conflicts.filter((t=>e[t.picoId]?.includes(t.picoElement))):i.conflicts;t.setConflict({conflicts:s,showComments:u.isContentAdmin()})}))}_isFormValid(){console.debug("_isFormValid");const e=this._surveyParticipant.some((e=>e.isSelected())),t=this._questions?.isValid();this.form.checkValidity()&&t&&e?this.formButtons.enableSummit():this.formButtons.disableSummit()}_setPollTypeSelect(){const e=this.form.questionType,t=this.survey.surveyType||this.surveyType,i={GUIDELINE:[cn,hn,dn],PICO:[cn,dn],REC:[hn]};for(let s=e.length-1;s>=0;s--)i[t].includes(e.options[s].value)&&e.remove(s)}}const vn={NO_QUESTION:de.voting.typeFeedback,NO_ANSWER:de.voting.typeFeedback,MULTI_CHOICE:de.voting.typeQuestion,PICO_OUTCOMES:de.voting.typeOutcomeDirection,REC_INTERVENTIONS:de.voting.typeInterventionStrength,KEY_INFO_JUDGEMENTS:de.voting.typeEtd};class bn extends a{survey={surveyId:0,surveyType:"",name:"",instructions:"",questionType:"",startDate:"",endDate:"",completed:0,status:"COMPLETED",excluded:!1,admin:!1};constructor(e){super(...arguments),this.templateString='<div class="surveyManagerItem">\n    <div class="surveyManagerItemMeta">\n        <h4>${survey.name}</h4>
289\n        <span class="surveyItemByline">${survey.dateString} ${survey.surveyType}</span>\n        <p class="surveyByline">${survey.instructions}</p>\n    </div>\n    <div class="surveyManagerItemControls" data-magic-id="control">\n        <span class="surveyVoteCount">${survey.completed} / ${survey.participantCount}</span> <span class="icon pollIcon" data-magic-id="voteIcon"></span>\n        <span data-magic-id="resultsBtn" class="surveyResultsLink">${i18n.voting.viewResults}</span>\n        <button data-magic-id="voteBtn">${voteBtnLabel}</button>\n        <select data-magic-id="actionSelect">\n            <option value="">${i18n.actions.options}</option>\n            <option value="show-voting">${voteBtnLabel}</option>\n            <option value="start-survey">${i18n.voting.reActivatePoll}</option>\n            <option value="stop-survey">${i18n.voting.endPoll}</option>\n            <option value="edit-survey">${i18n.voting.editPoll}</option>\n            <option value="show-invite">${i18n.actions.inviteUsersPoll}</option>\n            <option value="show-results">${i18n.voting.viewResults}</option>\n            <option value="duplicate-survey">${i18n.voting.duplicatePoll}</option>\n            <option value="delete-survey">${i18n.actions.voting.deletePoll}</option>\n        </select>\n    </div>\n</div>\n',this.i18n=de,this.voteBtnLabel=de.voting.vote,Object.assign(this,e);const t=this.survey;t.dateString=v.shortDate(t.startDate)||"",t.dateString+=t.startDate&&t.endDate?" - ":"",t.dateString+=v.shortDate(t.endDate)||"",t.dateString+=t.startDate||t.endDate?" : ":"",t.surveyType=vn[t.questionType]||t.questionType||"",this.survey.hasCompleted&&(this.voteBtnLabel=de.voting.editVote),this.survey.admin=u.isContentAdmin()}postCreate(){super.postCreate();const e=!("ACTIVE"===this.survey.status&&!this.survey.admin&&!this.survey.excluded),t=!("COMPLETED"===this.survey.status&&!this.survey.admin),i=!this.survey.admin;r(this.voteBtn,l,e),r(this.resultsBtn,l,t),r(this.actionSelect,l,i),r(this.voteIcon,K,this.survey.hasCompleted),r(this.voteIcon,B,!this.survey.hasCompleted&&"ACTIVE"===this.survey.status&&!this.survey.excluded);const s="COMPLETED"===this.survey.status?["stop-survey","show-voting","edit-survey"]:this.survey.excluded?["start-survey","show-voting"]:["start-survey"];for(let e=this.actionSelect.length-1;e>=0;e--)s.includes(this.actionSelect.options[e].value)&&this.actionSelect.remove(e);this._wireEvents()}_wireEvents(){const e=this.survey.surveyId;this.own(s(this.voteBtn,"click",(()=>{this._emit("show-voting",e,{bubbles:!1})})),s(this.resultsBtn,"click",(()=>{this._emit("show-results",e,{bubbles:!1})})),s(this.actionSelect,"change",(t=>{this._emit(t.target.value,e,{bubbles:!1})})))}}const fn="go-back",yn="close",Cn="delete-survey",_n="duplicate-survey",In="edit-survey",wn="new-survey",Sn="show-results",En="show-invite",Tn="show-voting",kn="dashboard",Ln="show-manager",Nn="show-vote",$n="start-survey",On="stop-survey";class An extends a{oShortCode="";_surveys={};constructor(){super(...arguments),this.templateString='<div class="surveyManager">\n    <div class="surveyManagerTop">\n        <button class="surveyAdminButton" data-magic-id="newBtn">${i18n.voting.createNewPoll}</button>\n        <span class="surveyManagerTopLink" data-magic-id="dashboardBtn">${i18n.voting.nav.dashboard}</span>\n    </div>\n    <div class="surveyManagerList current">\n        <h3>${i18n.voting.currentPolls}</h3>\n        <div data-magic-id="surveyListActive"></div>\n    </div>\n    <div class="surveyManagerList">\n        <h3>${i18n.voting.closedPolls}</h3>\n        <div data-magic-id="surveyListClosed"></div>\n    </div>\n</div>',this.i18n=de,Object.assign(this,...arguments)}startup(){super.startup(),u.isContentAdmin()?this.own(s(this.newBtn,"click",(()=>this._emit(wn))),s(this.dashboardBtn,"click",(()=>this._emit(kn)))):this.newBtn.remove(),this.loadSurveys()}confirmDeleteSurvey(e){i.confirm({title:de.actions.confirm.deleteItem,message:de.msg.voting.confirmDeletePoll}).then((()=>this._emit(Cn,e)))}confirmDuplicateSurvey(e){i.confirm({title:de.actions.confirm.deleteItem,message:de.voting.confirmDuplicatePoll}).then((()=>this._emit(_n,e)))}confirmStopSurvey(e){i.confirm({title:de.voting.endPoll,message:de.voting.confirmEndPoll}).then((()=>this._emit(On,e)))}confirmStartSurvey(e){i.confirm({title:de.voting.reActivatePoll,message:de.voting.confirmReActivatePoll}).then((()=>this._emit($n,e)))}loadSurveys(){const e=o.types.survey;switch(this.surveyType){case e.PICO:this.store.getSurveysByPico(this.oShortCode).then(this.renderSurveys.bind(this));break;case e.REC:this.store.getSurveysByRecommendation(this.oShortCode).then(this.renderSurveys.bind(this));break;case e.GUIDELINE:this.store.getSurveysByGuideline().then(this.renderSurveys.bind(this));break;default:console.warn("Unknown survey type:",this.surveyType)}}renderSurveys(e){this.surveyListActive?.parentElement.classList.toggle(l,0===e.filter((e=>"ACTIVE"===e.status)).length),this.surveyListClosed?.parentElement.classList.toggle(l,0===e.filter((e=>"COMPLETED"===e.status)).length),Object.values(this._surveys).forEac
289h((e=>e.destroyRecursive())),this._surveys={},e.forEach(this.renderSurvey.bind(this))}renderSurvey(e){const t="ACTIVE"===e.status?this.surveyListActive:this.surveyListClosed,i=new bn({survey:e}).placeAt(t,"last");this._surveys[e.surveyId]=i,i.startup(),this.own(i,s(i,Cn,(e=>this.confirmDeleteSurvey(e.detail))),s(i,_n,(e=>this.confirmDuplicateSurvey(e.detail))),s(i,$n,(e=>this.confirmStartSurvey(e.detail))),s(i,On,(e=>this.confirmStopSurvey(e.detail))),s(i,In,(e=>this._emit(In,e.detail))),s(i,Tn,(e=>this._emit(Tn,e.detail))),s(i,En,(e=>this._emit(En,e.detail))),s(i,Sn,(e=>this._emit(Sn,e.detail))))}removeSurvey(e){this._surveys[e]&&(this._surveys[e].destroyRecursive(),delete this._surveys[e])}}const Pn={BENEFITS:0,BENEFITS_DESIRABLE:1,BENEFITS_UNDESIRABLE:1,EVIDENCE:2,PREFERENCES:3,RESOURCES:4,EQUITY:5,ACCEPTABILITY:6,FEASIBILITY:7},Dn={splitKeyInfoQuestions:e=>e&&"KEY_INFO_JUDGEMENTS"===e[Object.keys(e)[0]].questionType?e.map((e=>({questionId:e.questionId,questionType:"KEY_INFO_JUDGEMENTS",intervention:e.intervention,question:e.question.split("||")[1],factor:e.question.split("||")[0],answers:e.answers}))):e,getJudgementGroupingDom(e){const t=[...new Set(e.map((e=>e.question.split("||")[0])))],i={...de.recommendation.keyInfo.title};return i.resources="ETD"===this.keyInfoType?de.etd.resources:i.resources,t.sort(((e,t)=>Pn[e]-Pn[t])).map((e=>{const t=i[e.toLowerCase()];return x.toDom(`<div class="intVoteWrap"><h3 class="intVoteWrapHeader">${t}</h3><div data-magic-id="judgement_${e}"></div></div>`)}))}},Bn=de.recommendation.keyInfo.judgements,Mn=de.etd.strength,xn={BENEFITS:{choice:[{label:de.general.notSet,style:"intGray",judgement:"not_set"},{label:Bn.benefits.trivial,style:"intYellow",judgement:"trivial"},{label:Bn.benefits.small,style:"intYellow",judgement:"small"},{label:Bn.benefits.mod,style:"intGreen",judgement:"mod"},{label:Bn.benefits.large,style:"intGreenDark",judgement:"large"},{label:Bn.varies,style:"intGray",judgement:"varies"},{label:Bn.dontKnow,style:"intGray",judgement:"dont_know"},{label:de.general.na,style:"intGray",judgement:"na"}]},EVIDENCE:{choice:[{label:de.general.notSet,style:"intGray",judgement:"not_set"},{label:de.general.level.veryLow,style:"intYellow",judgement:"very_low"},{label:de.general.level.low,style:"intYellow",judgement:"weak"},{label:de.general.level.moderate,style:"intGreen",judgement:"moderate"},{label:de.general.level.high,style:"intGreenDark",judgement:"high"},{label:de.general.na,style:"intGray",judgement:"na"}]},PREFERENCES:{choice:[{label:de.general.notSet,style:"intGray",judgement:"not_set"},{label:Mn.preferences.variation,style:"intYellow",judgement:"weak"},{label:`${Mn.preferences.noVariation}${Mn.preferences.noVariationExample}`,style:"intGreen",judgement:"strong"},{label:Mn.preferences.disapproval,style:"intRed",judgement:"against"}]},RESOURCES:{choice:[{label:de.general.notSet,style:"intGray",judgement:"not_set"},{label:Bn.resources.largeSave,style:"intGreenDark",judgement:"large"},{label:Bn.resources.modSave,style:"intGreen",judgement:"mod"},{label:Bn.resources.noSave,style:"intYellow",judgement:"no_save"},{label:Bn.resources.modCost,style:"intRed",judgement:"mod_cost"},{label:Bn.resources.largeCost,style:"intRedDark",judgement:"large_cost"},{label:Bn.varies,style:"intGray",judgement:"varies"},{label:Bn.dontKnow,style:"intGray",judgement:"dont_know"},{label:de.general.na,style:"intGray",judgement:"na"}]},EQUITY:{choice:[{label:de.general.notSet,style:"intGray",judgement:"not_set"},{label:Bn.equity.increase,style:"intGreenDark",judgement:"increase"},{label:Bn.equity.probIncrease,style:"intGreen",judgement:"prob_increase"},{label:Bn.equity.probNoImpact,style:"intYellow",judgement:"prob_no_reduce"},{label:Bn.equity.probReduce,style:"intRed",judgement:"prob_reduce"},{label:Bn.equity.reduce,style:"intRedDark",judgement:"reduce"},{label:Bn.varies,style:"intGray",judgement:"varies"},{label:Bn.dontKnow,style:"intGray",judgement:"dont_know"},{label:de.general.na,style:"intGray",judgement:"na"}]},ACCEPTABILITY:{choice:[{label:de.general.notSet,style:"intGray",judgement:"not_set"},{label:Bn.acceptability.accept,style:"intGreenDark",judgement:"accept"},{label:Bn.acceptability.probAccept,style:"intGreen",judgement:"prob_accept"},{label:Bn.acceptability.probNotAccept,style:"intRed",judgement:"prob_no_accept"},{label:Bn.acceptability.notAccept,style:"intRedDark",judgement:"not_accept"},{label:Bn.varies,style:"intGray",judgement:"varies"},{label:Bn.dontKnow,style:"intGray",judgement:"dont_know"},{label:de.general.na,style:"intGray",judgement:"na"}]},FEASIBILITY:{choice:[{label:de.general.notSet,style:"intGray",judgement:"not_set"},{label:Bn.feasibility.feasible,style:"intGreenDark",judgement:"feasible"},{label:Bn.feasibility.probFeasible,style:"intGreen",judgement:"prob_feasible"},{label:Bn.feasibility.probNotFeasible,style:"intRed",judgement:"prob_not_feasible"},{label:Bn.feasibility.notFeasible,style:"intRedDark",judgement:"not_feasible"},{label:Bn.varies,style:"intGray",judgement:"varies"},{label:Bn.dontKnow,style:"intGray",judgement:"dont_know"},{label:de.general.na,style:"intGray",judgement:"na"}]}};
289xn.BENEFITS_DESIRABLE={choice:JSON.parse(JSON.stringify(xn.BENEFITS.choice))},xn.BENEFITS_UNDESIRABLE={choice:JSON.parse(JSON.stringify(xn.BENEFITS.choice))},xn.BENEFITS_UNDESIRABLE.choice[1].label=Bn.harms.trivial,xn.BENEFITS_UNDESIRABLE.choice[2].label=Bn.harms.small,xn.BENEFITS_UNDESIRABLE.choice[3].label=Bn.harms.mod,xn.BENEFITS_UNDESIRABLE.choice[4].label=Bn.harms.large,xn.BENEFITS_UNDESIRABLE.choice[3].style="intRed",xn.BENEFITS_UNDESIRABLE.choice[4].style="intRedDark";const Fn=(e,t,i)=>{t||="NOT_SET";const s=e.toUpperCase(),n=xn[s];if(!n)return console.warn("unknown factor",e),"";let o="";return n.choice.forEach((e=>{e.judgement.toUpperCase()===t.toUpperCase()&&(o=e[i])})),o};var Rn={factors:xn,getJudgementOrderByFactor:e=>{const t=xn[e].choice.map((e=>e.judgement.toUpperCase())).filter((e=>"NOT_SET"!==e));return t.push("NOT_SET"),t},getStyleForJudgement:(e,t)=>Fn(e,t,"style"),getLabel:(e,t)=>Fn(e,t,"label")};const Un={REC_INTERVENTIONS:'<div>\n    <div class="resultCountWrap ${isWinner}">\n        <span class="strength ${answer}">${answerText}</span>\n        <span class="surveyResultsCount">${count}</span>\n    </div>\n</div>',PICO_OUTCOMES:'<div>\n    <div class="resultCountWrap ${isWinner}">\n        <span class="surveyOutcomeDirection ${answer}">${answerText}</span>\n        <span class="surveyResultsCount">${count}</span>\n    </div>\n</div>',MULTI_CHOICE:'<div>\n    <div class="resultCountWrap ${isWinner}">\n        <span>${answerText}</span>\n        <span class="surveyResultsCount">${count}</span>\n    </div>\n</div>',KEY_INFO_JUDGEMENTS:'<div>\n    <div class="resultCountWrap ${answer} ${isWinner}">\n        <span class="interventionValue">${answerText}</span>\n        <span class="surveyResultsCount">${count}</span>\n    </div>\n</div>',NO_ANSWER:null};let qn=class extends a{constructor(){super(...arguments),this.templateString='<div class="surveyResultsList">\n    <h4>${!question}</h4>\n    <div data-magic-id="resultsList"></div>\n</div>',this.i18n=de,Object.assign(this,...arguments)}postCreate(){super.postCreate(),console.info("survey.results",this.question,this.surveyType,this.results),de.pico.graphView.iAmUncertain=de.voting.uncertain,de.pico.graphView.notSet=de.general.notSet,de.pico.graphView.noAnswer=de.voting.noVotes;const e="REC_INTERVENTIONS"===this.questionType?function(){const e=de;return{notset:e.recommendation.strength.notset,weak:pe.weak,weakAgainst:pe.weak_against,strong:pe.strong,strongAgainst:pe.strong_against,iAmUncertain:e.voting.uncertain,noAnswer:e.voting.noVotes}}():de.pico.graphView,t=this.results,i="NO_ANSWER"===this.questionType?0:this.getMaxCount(t);this.renderResults(t,e,i)}getMaxCount(e){const t=Object.keys(e);return 1===t.length?e[t[0]]:t.reduce(((t,i)=>e[t]>e[i]?e[t]:e[i]))}renderResults(e,t,i){for(const s in e)if(e.hasOwnProperty(s)){const n=e[s];let o,a;this.factor&&(o=Rn.getLabel(this.factor,s)||de.pico.graphView[s.camelCase()]||s,a=Rn.getStyleForJudgement(this.factor,s)||s.camelCase());const r="REC_INTERVENTIONS"===this.questionType?s.toLowerCase():s.camelCase(),l=t[s.camelCase()]||s,c={i18n:this.i18n,answerText:o||l,answer:a||r,isWinner:n===i?"surveyWinner":"",count:"noAnswer"===s.camelCase()?"":n},d=Un[this.questionType];x.placeTemplate(d,c,this.resultsList)}}};class jn extends a{_mailSent=!1;store=null;survey={surveyId:0,name:"",instructions:"",questionType:"",startDate:"",endDate:"",comments:[],participants:[]};_surveyType="NO_QUESTION";_surveyParticipant=[];_participantConflicts={};_conclusionEditor={};_isSurveyActive=!1;_interventions={};constructor(){super(...arguments),this.templateString='<div class="surveyResults">\n    <div class="surveyResultsTabs">\n        <div class="surveyResultsLinkWrap">\n            <span class="backLink" data-magic-id="backBtn">&lt; ${i18n.nav.back}</span>\n            <span class="tab active" data-magic-id="resultsTab">${i18n.general.results}</span>\n            <span class="tab" data-magic-id="participantsTab">${i18n.clinical.participants}</span>\n            <span class="tab" data-magic-id="conclusionTab">${i18n.recommendation.conclusion}</span>\n        </div>\n        \x3c!--\n        commented out due to no ticket -dv\n        <select data-magic-id="coiFilter">\n            <option value="">${i18n.voting.allResults}</option>\n            <option value="no">${i18n.voting.noCoi}</option>\n            <option value="high">${i18n.voting.noHighCoi}</option>\n        </select>\n        --\x3e\n    </div>\n\n    <div class="surveyResultsPanel" data-magic-id="resultsPanel">\n        <p class="surveyInstructions">${survey.instructions}</p>\n        <div class="surveyResultsListWrap" data-magic-id="resultList"></div>\n        <h4 class="surveyCommentsTitle">${i18n.general.comments}</h4>\n        <div data-magic-id="commentsList"></div>\n    </div>\n\n    <div class="hideMe" data-magic-id="participantsPanel">\n        <div class="surveyParticipantsHeader">\n            <div class="surveyPartColOne">${i18n.voting.voted}</div>\n            <div class="surveyPartColTwo">${i18n.general.account.username}</div>\n            <div class="surveyPartColTwo">${i18n.general.contact.email}</div>\n            <div class="surveyPartColThree">${i18n.coi.conflictsLabel}</div>\n        </div>\n        <div data-magic-id="participantList"></div>\n        <div class="surveySendEmail">
289\n            <span data-magic-id="emailBtn">${i18n.voting.emailNoVotees}</span>\n        </div>\n    </div>\n\n    <div class="conclusionPanel hideMe" data-magic-id="conclusionPanel">\n        <div data-magic-id="conclusionText"></div>\n    </div>\n</div>\n',this.i18n=de,Object.assign(this,...arguments),this.survey.questions=this.survey.questions||{};const e=this.survey.questions[Object.keys(this.survey.questions)[0]];this._surveyType=e&&e.questionType||"NO_QUESTION"}postCreate(){if(super.postCreate(),this._mailSent=!1,this._surveyParticipant=[],this._isSurveyActive="ACTIVE"===this.survey.status,r(this.emailBtn,l,!this._isSurveyActive),"KEY_INFO_JUDGEMENTS"===this._surveyType){const e=Object.values(this.survey.questions);this.survey.questions=Dn.splitKeyInfoQuestions(e),Dn.getJudgementGroupingDom(e).forEach((e=>x.place(this.resultList,e)))}else this.survey.questions=Object.values(this.survey.questions||{});this.own(s(this.resultsTab,"click",this.showResults.bind(this)),s(this.participantsTab,"click",this.showParticipants.bind(this)),s(this.conclusionTab,"click",this.showConclusion.bind(this)),s(this.backBtn,"click",(()=>this._emit("go-back"))),s(this.emailBtn,"click",(()=>{this._mailSent||this.sendMail(),this._mailSent=!0})))}startup(){super.startup(),this.survey.participants=this.survey.participants||[],this.survey.participants.forEac
289h((e=>{const t=new Zs({user:e,viewMode:!0,participating:!0}).placeAt(this.participantList,"last");this._surveyParticipant.push(t),this._isSurveyActive||(this._participantConflicts[e.userId]=e.conflicts)})),this.survey.comments=this.survey.comments||[],this.survey.comments.filter((e=>""!==e.comment)).forEach((e=>{const t=v.shortDate(e.timeStamp),i=x.toDom(`<div class="surveyCommentWrap">${e.comment}<span class="surveyCommentName">${e.userName} - ${t}</span></div>`);x.place(this.commentsList,i,"last")})),this.survey.questions.forEach((e=>{const t={factor:e.factor,question:e.question,questionType:e.questionType,surveyType:this.survey.surveyType,results:this.survey.results&&this.survey.results[e.questionId]||[]};let i=this.resultList;if("KEY_INFO_JUDGEMENTS"===e.questionType){const t=e.factor;i=this.domNode.querySelector(`[data-magic-id=judgement_${t}]`)}new qn(t).placeAt(i,"last"),this._interventions[e.picoId]=this._interventions[e.picoId]||[],this._interventions[e.picoId].push(e.picoElement)})),this.renderConclusion(),this._loadUserConflicts()}goBack(){console.info("go back")}renderConclusion(){const e=u.isContentAdmin()?de.guideline.placeholderConclusion:"",t=new Tt({text:this.survey.conclusion||"",placeHolder:e,location:`${this.id}_surveyConclusion`,toolbar:"MINI"},this.conclusionText);t.startup(),t.on("saved",(e=>this.saveConclusion(e.text)))}sendMail(){this.emailBtn.innerText=de.msg.emailSent,this._emit("send-mail")}saveConclusion(e){console.info("saveConclusion",e),p.surveyStore().updateSurveyConclusion(this.survey.surveyId,e)}showResults(){h(this.resultsTab,B),m(this.participantsTab,B),m(this.conclusionTab,B),m(this.resultsPanel,l),h(this.participantsPanel,l),h(this.conclusionPanel,l)}showParticipants(){m(this.resultsTab,B),h(this.participantsTab,B),m(this.conclusionTab,B),h(this.resultsPanel,l),m(this.participantsPanel,l),h(this.conclusionPanel,l)}showConclusion(){m(this.resultsTab,B),m(this.participantsTab,B),h(this.conclusionTab,B),h(this.resultsPanel,l),h(this.participantsPanel,l),m(this.conclusionPanel,l)}_loadUserConflicts(){const e=this.survey.surveyType||this.surveyType;this.survey.questionType,this._surveyParticipant.forEach((e=>e.showConflictLoadingSpinner())),this._surveyParticipant.forEach((t=>{if("ACTIVE"===this.survey.status){const i={};"PICO"===e&&(i.picoId=this.oId),"REC"===e&&(i.recommendationId=this.oId),p.coiStore().findConflictsByUser(t.user.userId,i).then((e=>{console.info("findConflictsByUser",e),this._participantConflicts[t.user.userId]=e.conflicts,this._setConflict(t)}))}else this._setConflict(t)}))}_setConflict(e){const t=this.survey.surveyType||this.surveyType,i=this.survey.questionType;let s=this._participantConflicts[e.user.userId];"REC"===t&&"REC_INTERVENTIONS"===i&&(s=s.filter((e=>this._interventions[e.picoId]&&this._interventions[e.picoId].includes(e.picoElement)))),e.setConflict({conflicts:s,showComments:u.isContentAdmin()})}}class Vn extends a{constructor(){super(...arguments),this.i18n=de,this.question={surveyId:0,questionId:0,question:""},Object.assign(this,...arguments)}getAnswer(){return{questionId:this.question.questionId,answerId:0,answer:""}}}class Gn extends Vn{constructor(){super(...arguments),this.templateString='<div class="multiChoice">\n    <h4 class="bottomMargin">${!question.question}</h4>\n    <div data-magic-id="answerList"></div>\n</div>',Object.assign(this,...arguments)}startup(){super.startup();const e=this.question.answers&&this.question.answers[0].answerId;this.answers.forEach((t=>{const i={answer:t,checked:t.answerId===e?"CHECKED":""};x.placeTemplate('<fieldset>\n    <label class="radioLabel">\n        <input type="radio" name="choice" value="${answer.answerId}" ${checked}> ${answer.answer}\n    </label>\n</fieldset>\n',i,this.answerList)}))}getAnswer(){const e=super.getAnswer();return e.answerId=this.domNode.querySelector('input[name="choice"]:checked').value,console.info(e),e}}class Hn extends Vn{constructor(){super(...arguments),this.templateString='<div class="noAnswer">\n    <h4 class="bottomMargin">${!question.question}</h4>\n</div>',Object.assign(this,...arguments)}getAnswer(){const e=super.getAnswer();return e.answerId=90,e.answer="",e}}
289class Wn extends Vn{constructor(){super(...arguments),this.templateString='<div class="picoOutcomes">\n    <form data-magic-id="formOutcomes">\n        <fieldset>\n            <label>${question.question}</label>\n            <div class="favoredArrowsWrap">\n                <div class="favoredRadioWrap">\n                    <label class="intBetter">\n                        \x3c!-- values are tied to DB.  do not change --\x3e\n                        <input type="radio" name="dirOfEffectType" value="120">\n                        ${i18n.pico.graphView.intBetter}\n                    </label>\n                </div>\n                <div class="favoredRadioWrap">\n                    <label class="compBetter">\n                        <input type="radio" name="dirOfEffectType" value="121">\n                        ${i18n.pico.graphView.compBetter}\n                    </label>\n                </div>\n                <div class="favoredRadioWrap">\n                    <label class="equal">\n                        <input type="radio" name="dirOfEffectType" value="122">\n                        ${i18n.pico.graphView.noDiff}\n                    </label>\n                </div>\n                <div class="favoredRadioWrap">\n                    <label class="uncertain">\n                        <input type="radio" name="dirOfEffectType" value="123" >\n                        ${i18n.pico.graphView.uncertain}\n                    </label>\n                </div>\n                <div class="favoredRadioWrap">\n                    <label class="notset">\n                        <input type="radio" name="dirOfEffectType" value="124">\n                        ${i18n.pico.graphView.directionNotSet}\n                    </label>\n                </div>\n                <div class="favoredRadioWrap">\n                    <label class="notset">\n                        <input type="radio" name="dirOfEffectType" value="125">\n                        ${i18n.pico.graphView.na}\n                    </label>\n                </div>\n                <div class="favoredRadioWrap">\n                    <label class="notset">\n                        <input type="radio" name="dirOfEffectType" value="126">\n                        ${i18n.voting.uncertain}\n                    </label>\n                </div>\n            </div>\n        </fieldset>\n    </form>\n</div>',Object.assign(this,...arguments),this.question.question=this.question.question||"(NO OUTCOME NAME)"}startup(){super.startup(),this.own(z(this.formOutcomes));const e=this.question.answers&&this.question.answers[0].answerId;e&&(this.domNode.querySelector(`input[value="${e}"]`).checked=!0)}getAnswer(){const e=super.getAnswer(),t=this.domNode.querySelector('input[name="dirOfEffectType"]:checked');return e.answerId=t&&t.value||0,console.info(e),e}}class zn extends Vn{constructor(){super(...arguments),this.templateString='<div class="recIntervention">\n    <fieldset>\n        <label class="withSelect" data-magic-id="interventionLabel">${question.question}\n            <div data-magic-id="optMenu" class="surveyInterventionSelect"></div>\n        </label>\n    </fieldset>\n</div>',this.options=[],this._strength="",this._answerId=0,Object.assign(this,...arguments),this.options=function(e){return[{answerId:100,strength:"notset",label:e.recommendation.strength.notset},{answerId:101,strength:"weak",label:pe.weak},{answerId:102,strength:"weak_against",label:pe.weak_against},{answerId:103,strength:"strong",label:pe.strong},{answerId:104,strength:"strong_against",label:pe.strong_against},{answerId:105,strength:"i_am_uncertain",label:e.voting.uncertain}]}(this.i18n)}startup(){super.startup(),this._createDropDownButton(),this.own(s(this.interventionLabel,"click",this._stopLabelActivation.bind(this)));const e=this.question.answers&&this.question.answers[0].answerId;if(e){const t=this.options.find((t=>t.answerId===e));t&&this._updateStrength(t)}}getAnswer(){const e=super.getAnswer();return e.answerId=this._answerId,e.answer=this._strength.toUpperCase(),console.info(e),e}_stopLabelActivation(e){e.preventDefault(),e.stopPropagation()}_createDropDownButton(){const e=this.options.map((e=>({class:e.strength,label:e.label,onClick:()=>this._updateStrength(e)})));this.dropDownButton=new we({btnClass:"buttonStrength",label:"select answer",name:"editButton",menu:e}).placeAt(this.optMenu),this.dropDownButton.startup()}_updateStrength(e){this.dropDownButton.value=e.answerId,this.dropDownButton.updateLabel(e.label),this.dropDownButton.updateButtonClass(e.strength),this._strength=e.strength,this._answerId=e.answerId||0}}class Kn extends a{diffMode=!1;mode="RADIO";_dropDownButton=null;_style="";intervention="";judgement="";factor="";constructor(e){super(...arguments),this.i18n=de,this.templateString='<div class="interventionItem" part="interventionItem">\n    <div class="interventionName"  part="interventionName" data-magic-id="interventionName">
289\n        <span class="comparatorLabel" part="comparatorLabel">${i18n.pico.comparator}:</span>\n        ${intervention}\n    </div>\n    <div class="interventionValue" part="interventionValue" data-magic-id="optionsControl"></div>\n</div>\n',Object.assign(this,e)}postCreate(){super.postCreate();const{factor:e,judgement:t,mode:i,intervention:s}=this,n=Rn.factors[e].choice,o=Rn.getLabel(e,t),a=Rn.getStyleForJudgement(e,t);this._style=a,a&&h(this.domNode,a),"DROPDOWN"===i?(h(this.domNode,"interventionMenu"),this._createDropDownButton(n)):(h(this.domNode,"interventionRadio"),this._createRadio(n,e,t,s)),this._updateStrength({label:o,style:a,judgement:t}),this.setAsComparator(this.isComparator)}setAsComparator(e){r(this.domNode,"comparator",e),r(this.interventionName.firstElementChild,l,!e)}onChange(){const e={factor:this.factor,judgement:this.judgement.toUpperCase(),ids:this.ids};this._emit("on-change",e)}_createRadio(e,t,i,n){e.forEach((e=>{const o=e.judgement.toUpperCase(),a=o===i?"checked":"",r=x.toDom(`<div><label><input type="radio" name="${t}_${n}" value="${o}" ${a}>${e.label}</label></div>`);this.optionsControl.appendChild(r),this.own(s(r,"click",(()=>{this._updateStrength(e),this.onChange()})))}))}_createDropDownButton(e){const t=e=>{this._updateStrength(e),this.onChange()},i=e.map((e=>({btnClass:e.style,label:e.label,onClick:()=>t(e)})));this._dropDownButton=new we({btnClass:"buttonStrength",label:de.actions.helpDecide,name:"editButton",menu:i}).placeAt(this.optionsControl),this._dropDownButton.startup()}_updateStrength(e){"DROPDOWN"===this.mode&&this._dropDownButton.updateLabel(e.label||de.general.pickOne),this._style&&m(this.domNode,this._style),e.style&&h(this.domNode,e.style),this.judgement=e.judgement,this._style=e.style}}class Yn extends Vn{options=[];_judgement="";_answerId=0;_answerIds=[{TRIVIAL:130},{SMALL:131},{MOD:132},{LARGE:133},{VERY_LOW:134},{WEAK:135},{MODERATE:136},{HIGH:137},{STRONG:138},{AGAINST:139},{LARGE_SAVE:140},{MOD_SAVE:141},{NO_SAVE:142},{MOD_COST:143},{LARGE_COST:144},{REDUCE:145},{PROB_INCREASE:146},{PROB_REDUCE:147},{PROB_NO_REDUCE:148},{INCREASE:149},{NO_IMPACT:150},{ACCEPT:151},{PROB_ACCEPT:152},{PROB_NO_ACCEPT:153},{NOT_ACCEPT:154},{FEASIBLE:155},{PROB_FEASIBLE:156},{PROB_NOT_FEASIBLE:157},{NOT_FEASIBLE:158}];constructor(){super(...arguments),this.templateString='<div class="keyInfoFactor">\n    <fieldset class="interventionSelectAnswer">\n        <div data-magic-id="optMenu" class="surveyInterventionSelect"></div>\n    </fieldset>\n</div>',Object.assign(this,...arguments)}startup(){super.startup(),this._createDropDownButton()}getAnswer(){const e=super.getAnswer();return e.answerId=this._answerId,e.answer=this._judgement.toUpperCase(),console.info(e),e}_createDropDownButton(){const e=this.question.answers&&this.question.answers[0].answer||"",t={answerId:0,intervention:this.question.question,factor:this.question.factor,judgement:e,mode:u.getKeyInfoJudgementMode()};this._keyInfoIntervention=new Kn(t).placeAt(this.optMenu,"first"),this._keyInfoIntervention.startup(),this._updateJudgement({judgement:e,answerId:0}),this.own(s(this._keyInfoIntervention,"on-change",(e=>this._updateJudgement(e.detail))))}_updateJudgement(e){this._judgement=e.judgement,this._answerId=e.answerId||0}}class Qn extends a{store=null;oId=-1;survey={surveyId:0,name:"",instructions:"",surveyType:"",startDate:"",endDate:"",completed:0};surveyType=null;formButtons={};_surveyType="NO_QUESTION";_answers=[];constructor(e){super(...arguments),this.templateString='<div class="surveyVote">\n    <div class="stickyWrapper">\n        <div class="surveyVoteSticky">\n            <p class="surveyInstructions">${survey.instructions}</p>\n            <form data-magic-id="qAndA">\n                <div class="surveyVoteWrap" data-magic-id="answerList"></div>\n                <div class="surveyVoteComment">\n                    <fieldset>\n                        <label>${commentLabel}\n                            <textarea name="comments">${survey.comments}</textarea>\n                        </label>\n                    </fieldset>\n                </div>\n            </form>\n            <div data-magic-id="formButtons"></div>\n        </div>\n    </div>\n    <div class="widget" data-magic-id="widgetNode"></div>\n</div>',this.i18n=de,this.commentLabel=de.general.comments,Object.assign(this,e);const t=this.survey.questions[0];this._surveyType=t&&t.questionType||"NO_QUESTION","NO_ANSWER"===this._surveyType&&(this.commentLabel=de.voting.yourVote)}postCreate(){super.postCreate();const e=this.survey.questions;"KEY_INFO_JUDGEMENTS"===this._surveyType&&(this.survey.questions=Dn.splitKeyInfoQuestions(e),Dn.getJudgementGroupingDom(e).forEach((e=>x.place(this.answerList,e))))}startup(){super.startup(),this.own(z(this.qAndA)),this.formButtons=new c({},this.formButtons),this.formButtons.startup(),this.formButtons.enableSummit(),h(this.domNode,this.surveyType.toLowerCase()+"Survey"),this._answers=[];let e=this.survey.questions;"KEY_INFO_JUDGEMENTS"===this._surveyType&&(e=e.sort(((e,t)=>e.question.localeCompare(t.question)))),e.forEach((e=>{let t;switch(this._surveyType){case"REC_INTERVENTIONS":t=new zn({question:e}).placeAt(this.answerList,"last");break;case"PICO_OUTCOMES":t=new Wn({question:e}).placeAt(this.answerList,"last");break;case"NO_ANSWER":t=new Hn({question:e}).placeAt(this.answerList,"last");break;case"MULTI_CHOICE":t=new Gn({question:e,answers:this.survey.answers}).placeAt(this.answerList,"last");break;case"KEY_INFO_JUDGEMENTS":const i=e.factor,s=this.domNode.querySelector(`[data-magic-id=judgement_${i}]`);t=new Yn({question:e,factor:i,judgement:e.judgement}).placeAt(s,"last");break;default:console.warn("Unknown survey type:",this._surveyType)}this._answers.push(t),this.own(t)})),this._wireEvents(),this.renderWidget()}renderWidget(){if(this.surveyType===o.types.survey.REC){console.info("adding rec widget to survey dialog");const t="recommendation_"+this.oId;e.byId(t).toggleAllEditControls(!0),Y(t,this.widgetNode)}}removeWidget(){if(this.surveyType===o.types.survey.REC){const t="recommendation_"+this.oId,i=e.byId(t);Y(t,this.widgetNode),i.toggleAllEditControls(!1)}}submitSurvey(){const e={surveyId:this.survey.surveyId,answers:this.getAnswers(),comments:this.qAndA.elements.comments.value};this.removeWidget(),this._emit("submit-survey",e)}getAnswers(){return this._answers.map((e=>e.getAnswer()))}_wireEvents(){this.own(s(this.formButtons,"submit",(()=>this.submitSurvey())),s(this.formButtons,"cancel",(()=>{this.removeWidget(),this._emit("go-back")})))}}class Jn extends a{survey={};constructor(e){super(...arguments),this.templateString='<div class="surveyListItem">\n    <div class="surveyListItemLeft">
289\n        <span class="surveyListItemTitle">\n            <h3 data-magic-id="linkName">${survey.name}</h3>\n            <span class="surveyStatusLabel ${statusClass}Survey">${statusLabel}</span>\n            <span class="surveyPicoNumber">${numLabel}</span>\n        </span>\n        <p><span class="surveyListType">${surveyTypeLabel}</span> | <span>${survey.startDate}${survey.endDate}</span></p>\n    </div>\n    <div class="surveyListItemRight">\n        <div class="surveyListItemCounts" data-magic-id="gotoIcon">\n            <picture title="${gotoHover}">\n                <span class="tooltip icon locationIcon" ></span>\n                <tool-tip inert role="tooltip" tip-position="top">${gotoHover}</tool-tip>\n            </picture>\n        </div>\n        <div class="surveyListItemCounts">\n            <span class="icon userIcon"></span> ${survey.participantCount} | ${survey.completed} ${votesLabel}\n        </div>\n        <div class="surveyListItemBtn">\n            <button data-magic-id="voteBtn">${i18n.voting.vote}</button>\n            <span class="surveyItemRightStatus" data-magic-id="voteStatus"></span>\n        </div>\n    </div>\n</div>\n',this.i18n=de,Object.assign(this,e),this.survey.endDate=this.survey.endDate?" - "+v.shortDate(this.survey.endDate):"",this.survey.startDate=v.shortDate(this.survey.startDate),this.surveyTypeLabel=vn[this.survey.questionType]||"~"+this.survey.questionType,this.statusClass="ACTIVE"===this.survey.status?B:Q,this.statusLabel="ACTIVE"===this.survey.status?de.voting.currentPolls:de.voting.closedPolls,this.votesLabel=this.survey.completed>1?de.voting.votes:de.voting.vote;let{surveyType:t,obj:i,oId:s}=this.getObject(),n=document.querySelector(`div[widgetid="${i}_${s}"] [data-magic-id="sectionIdNode"]`);this.numLabel=n&&""!==n.innerText?`[${n.innerText}]`:"",this.gotoHover="REC"===t||"PICO"===t?"REC"===t?de.actions.goToRec:de.actions.goToPico:""}startup(){super.startup(),this.survey.excluded?(this.voteBtn.remove(),this.voteStatus.innerText=de.voting.notInvited):"ACTIVE"===this.survey.status?(this.voteStatus.remove(),this.own(s(this.voteBtn,"click",(()=>{this._emit(Nn,this.survey)})))):(this.voteBtn.remove(),this.voteStatus.innerText=this.survey.hasCompleted?de.voting.voted:de.voting.didNotVote),"REC"!==this.survey.surveyType&&"PICO"!==this.survey.surveyType&&this.gotoIcon.remove();const t=this;this.own(s(this.linkName,"click",(()=>{console.info("show manager for survey: ",this.survey),this._emit(Ln,this.survey)})),s(this.gotoIcon,"click",(()=>{console.info("that.id",t.id);let{obj:i,oId:s}=this.getObject();"recommendation"===i&&F.openRecommendation(s),"pico"===i&&F.openPico(s),e.getEnclosingWidget(t.domNode.parentNode).dialog.destroy()})))}getObject(){let e=this.survey.surveyType,t=this.survey.oId,i=e.toLowerCase().replace("rec","recommendation");return{surveyType:e,obj:i,oId:t}}}class Xn extends a{guidelineShortCode=null;data={surveys:[]};_surveys=[];constructor(e){super(...arguments),this.templateString='<div class="surveyOverview">\n    <div data-magic-id="loadSpin"></div>\n    <div class="hideMe" data-magic-id="surveys">\n        <div class="surveyOverviewControls">\n            <span class="surveyLink hideMe">Link copied</span>\n            <span class="icon shareIcon" data-magic-id="copyLink" aria-label="Share voting dashboard"></span>\n            <label for="surveyOptions">${i18n.actions.filterBy}:</label>\n            <select data-magic-id="filterBy" id="surveyOptions">\n                <option value="ALL">${i18n.actions.showAll}</option>\n                <option value="COMPLETED">${i18n.voting.closedPolls}</option>\n                <option value="MY">Participating</option>\n                <option value="ACTIVE">${i18n.voting.currentPolls}</option>\n            </select>\n        </div>\n        <div class="surveyOverviewContent">\n            <h4>${i18n.voting.guidelinePolls}</h4>\n            <div class="surveyOverviewList" data-magic-id="guidelineSurveys"></div>\n            <h4>${i18n.recommendation.recommendations}</h4>\n            <div class="surveyOverviewList" data-magic-id="recommendationSurveys"></div>\n            <h4>${i18n.pico.picos}</h4>\n            <div class="surveyOverviewList" data-magic-id="picoSurveys"></div>\n        </div>\n    </div>\n</div>',this.i18n=de,Object.assign(this,e)}postCreate(){super.postCreate(),new ge({msg:de.general.loading}).placeAt(this.loadSpin)}async startup(){super.startup(),await this.loadData(),this.renderSurveys(),this.hideLoading(this.surveys),this._wireEvents()}async loadData(){await p.surveyStore().getSurveysOverview(this.guidelineId).then((e=>this.data.surveys=e))}async refreshData(){new ge({msg:de.general.loading}).placeAt(this.loadSpin),await this.loadData(),this.guidelineSurveys.replaceChildren(),this.picoSurveys.replaceChildren(),this.recommendationSurveys.replaceChildren(),this.renderSurveys(),this.hideLoading(this.surveys)}renderSurveys(){console.info("surveys",this.data.surveys);const e=this;let t=0;this.data.surveys.guidelineSurveys.length>0?this.data.surveys.guidelineSurveys.forEach((t=>{e._renderSurvey(t,this.guidelineSurveys)})):(this.guidelineSurveys.previousElementSibling&&this.guidelineSurveys.previousElementSibling.remove(),this.guidelineSurveys.remove(),t++),this.data.surveys.picoSurveys.length>0?this.data.surveys.picoSurveys.forEach((t=>{e._renderSurvey(t,this.picoSurveys)})):(this.picoSurveys.previousElementSibling&&this.picoSurveys.previousElementSibling.remove(),this.picoSurveys.remove(),t++),this.data.surveys.recommendationSurveys.length>0?this.data.surveys.recommendationSurveys.forEach((t=>{e._renderSurvey(t,this.recommendationSurveys)})):(this.recommendationSurveys.previousElementSibling&&this.recommendationSurveys.previousElementSibling.remove(),this.recommendationSurveys.remove(),t++),3===t&&(this.surveys.innerHTML=de.voting.noPolls)}_renderSurvey(e,t){const i=new Jn({survey:e});i.startup(),t.appendChild(i.domNode),this._surveys.push(i),this.own(s(i,Nn,(e=>{this._emit(Nn,e.detail)})),s(i,Ln,(e=>{this._emit(Ln,e.detail)})))}_filterBy(e){this._surveys.forEach((t=>{const i=e(t);r(t.domNode,l,i)}))}_wireEvents(){this.own(s(this.copyLink,"click",(()=>{const e=`${window.location.origin}/#/guideline/${u.getGuidelineId()}/survey`;navigator.clipboard.writeText(e),h(this.copyLink,l),m(this.copyLink.previousElementSibling,l),setTimeout((()=>{m(this.copyLink,l),h(this.copyLink.previousElementSibling,l)}),3e3)})),s(this.filterBy,"change",(e=>{const t=e.target.value;switch(t){case"COMPLETED":case"ACTIVE":this._filterBy((e=>e.survey.status!==t));break;case"MY":this._filterBy((e=>e.survey.excluded));break;default:this._filterBy((()=>!1))}})))}}const Zn="manager",eo="overview";class to extends P{oId=0;oShortCode="";keyInfoType=null;surveyType=null;mode=Zn;dialog=null;_surveyOverview=null;_surveyManager=null;_surveyEditor=null;_surveyVote=null;_surveyResults=null;_store=p.surveyStore();constructor(){super(...arguments),this.i18n=de,Object.assign(this,...arguments)}startup(){super.startup(),this.mode===Zn?(this.showManager(),this._home=this.showManager.bind(this)):(this.showOverview(),this._home=this.showOverview.bind(this))}deleteSurvey(e){this._store.deleteSurvey(e).then((()=>{this._surveyManager.removeSurvey(e)}))}duplicateSurvey(e){this._store.duplicateSurvey(e).then((e=>{this.showEditor(e.surveyId)}))}newSurvey(){console.info(wn),this._surveyEditor=new mn({store:this._store,survey:{surveyId:0,surveyType:this.surveyType},oId:this.oId,oShortCode:this.oShortCode,keyInfoType:this.keyInfoType}),this._surveyEditor.startup(),this._updateDialog(de.voting.headingNew,this._surveyEditor),this.own(s(this._surveyEditor,"cancel-edit",this.showManager.bind(this)),s(this._surveyEditor,"updated",(e=>{this.showManager(e.detail)})))}sendMailReminder(e){this._store.sendMailReminder(e)}showEditor(e){this._store.getSurvey(e).then((e=>{this._surveyEditor=new mn({store:this._store,survey:e,oId:this.oId,oShortCode:this.oShortCode,keyInfoType:this.keyInfoType}),this._surveyEditor.startup(),this._updateDialog(de.voting.headingEdit,this._surveyEditor),this.own(s(this._surveyEditor,"cancel-edit",this.showManager.bind(this)),s(this._surveyEditor,"updated",(e=>{this.showManager(e.detail)})))}
289))}showManager(e){console.info("Show survey manager"),this._surveyManager?null!=e&&(this._surveyManager.surveyType=this.surveyType,this._surveyManager.oShortCode=this.oShortCode):this._loadManager();const t="GUIDELINE"===this.surveyType?de.voting.votingSettingsMenu:de.voting.votingOptMenu;this._surveyManager.loadSurveys(),this._updateDialog(t,this._surveyManager),this._destroy()}async showOverview(){this._surveyOverview?await this._surveyOverview.refreshData():(this._surveyOverview=new Xn({guidelineShortCode:u.getGuidelineShortCode(),guidelineId:u.getGuidelineId()}),this._surveyOverview.startup(),this.own(s(this._surveyOverview,Nn,(e=>{const{surveyId:t,oId:i,surveyType:s}=e.detail;this.showVoting(t,i,s)})),s(this._surveyOverview,Ln,(e=>{const{surveyType:t,oId:i,oShortCode:s,keyInfoType:n}=e.detail;this.surveyType=t,this.oId=i,this.oShortCode=s,this.keyInfoType=n,this.showManager(e.detail)})))),this._updateDialog(de.voting.nav.dashboard,this._surveyOverview),this._destroy()}showResults(e){this._store.getSurveyResults(e).then((t=>{this._surveyResults=new jn({store:this._store,survey:t,oId:this.oId,oShortCode:this.oShortCode}),this._surveyResults.startup(),this._updateDialog(de.voting.viewResults,this._surveyResults),this.trackEvent(b.show,`survey:${t.surveyId}:results`),this.own(s(this._surveyResults,fn,this.showManager.bind(this)),s(this._surveyResults,EVENT_MAIL,(()=>{this.sendMailReminder(e)})))}))}showInvite(e){const t=new Ze({guidelineId:u.getGuidelineId(),surveyId:e});t.startup(),this._updateDialog(de.actions.inviteUsersPoll,t),this.trackEvent(b.show,"invites-surveys"),this.own(s(t,yn,this.showManager.bind(this)))}showVoting(e,t,i){this._store.getSurveyForVoting(e,u.getUserId()).then((e=>{this._surveyVote=new Qn({store:this._store,survey:e,surveyType:i,oId:t}),this._surveyVote.startup(),this._updateDialog(de.voting.yourVote,this._surveyVote),this.trackEvent(b.show,`survey:${e.surveyId}:voting`),this.own(s(this._surveyVote,"submit-survey",(e=>{this.submitVote(e.detail)})),s(this._surveyVote,fn,this._home))}))}submitVote(e){console.info("submitSurvey",e),this._store.submitSurvey(e,u.getUserId()).then(this._home)}startSurvey(e){this._store.startSurvey(e).then(this.showManager.bind(this))}stopSurvey(e){this._store.stopSurvey(e).then(this.showManager.bind(this))}_destroy(){this._surveyEditor?.destroyRecursive(),this._surveyResults?.destroyRecursive(),this._surveyVote?.destroyRecursive()}_loadManager(){const e=this;this._surveyManager=new An({surveyType:this.surveyType,oShortCode:this.oShortCode,store:this._store}),this._surveyManager.startup(),this.own(s(this._surveyManager,In,(e=>{this.showEditor(e.detail)})),s(this._surveyManager,wn,this.newSurvey.bind(this)),s(this._surveyManager,kn,this.showOverview.bind(this)),s(this._surveyManager,Tn,(t=>{this.showVoting(t.detail,e.oId,e.surveyType)})),s(this._surveyManager,En,(e=>{this.showInvite(e.detail)})),s(this._surveyManager,Sn,(e=>{this.showResults(e.detail)})),s(this._surveyManager,Cn,(e=>{this.deleteSurvey(e.detail)})),s(this._surveyManager,_n,(e=>{this.duplicateSurvey(e.detail)})),s(this._surveyManager,On,(e=>{this.stopSurvey(e.detail)})),s(this._surveyManager,$n,(e=>{this.startSurvey(e.detail)})))}_updateDialog(e,t){this.dialog?(this.dialog.setTitle(e),this.dialog.setContent(t)):(this.dialog=new w({title:e,content:t,_destroyContent:!1}),this.dialog.startup(),this.own(s(this.dialog,yn,(()=>{this._surveyVote?.removeWidget(),this.emit(yn)}))))}}var io=Object.freeze({__proto__:null,MODE_MANAGER:Zn,MODE_OVERVIEW:eo,default:to});class so extends xe{constructor(e){super(...arguments),this.addBtnLabel=de.contentTags.addTag,this.btnLabel=de.contentTags.addTag,this._store={add:this.store.addTag.bind(this.store),get:this.store.getTags.bind(this.store),remove:this.store.removeTag.bind(this.store),update:this.store.updateTag.bind(this.store)},Object.assign(this,...arguments)}saveItem(e,t){super.saveItem(e,t),document.querySelectorAll("div.recommendationWidget[data-tags]").forEach((e=>{e.dataset.tags=e.dataset.tags.replace(`||${t.old}||`,`||${t.name}||`)}))}}let no;class oo extends D{constructor(e){super(...arguments),Object.assign(this,e),no=this}disableContentLock(){const e=u.getBaseApiUrl()+"/unlock";return no.get(e)}}class ao extends a{templateString=`<span title="surveys" class="${l}" data-magic-id="surveyBtn"><span class="pollCount"></span></span>`;constructor(e={}
289){super(...arguments),this.shortCode=e.shortCode||null,this.getStatsFnc=e.getStatsFnc||null,this.isContentAdmin=e.isContentAdmin||!1,e.iconId?this.id=`surveyIcon_${e.iconId}`:(this.id="surveyIcon_?",log.error("surveys icon needs an ID")),Object.assign(this,e)}updateState(){this.getStatsFnc(this.shortCode).then((e=>this._updateState(e)))}_updateState(e){if(console.debug("!! survey icon state",this.shortCode,e),!this.surveyBtn)return void console.info("survey btn missing",this,e);const t=e.countActive+e.countComplete,i=this._determineIconClass(e,t);t>0?this._showSurveyIcon(i,t):this._hideSurveyIcon()}_determineIconClass(e,t){return t>0&&!e.participant&&!this.isContentAdmin?"pollIcon":e.allComplete&&!this.isContentAdmin?"pollIconVoted":e.countActive>0?"pollIconActive":"pollIcon"}_showSurveyIcon(e,t){this.surveyBtn.className=`icon ${e}`,this.surveyBtn.firstElementChild.innerText="pollIconVoted"!==e?t:""}_hideSurveyIcon(){h(this.surveyBtn,l)}}const ro="searchOpen",lo=(e=>class extends e{currentSelectedTab=null;_showEvidenceFirstShow=!0;_publishing=null;_optMenuSettings=null;_Highlighter=Ct;constructor(e,t){super(...arguments),this.guideline=e,this.summary=t,Object.assign(this,...arguments)}startup(){super.startup&&super.startup(),console.info(":: editor.menu.options.mixin");const e=this.guideline?.pdfPublishedPath||this.guideline?.pdfPath||this.summary?.pdfPublishedPath||this.summary?.pdfPath;this._publishing=new Ht({params:this._getSettingParams()}),this._publishing.startup(),this._optMenuSettings=new ft({pdfPath:e}).placeAt(this.settingsControl),this.own(s(this._optMenuSettings,et,this.createPDF.bind(this)),s(this._optMenuSettings,nt,this.showDocuments.bind(this)),s(this._optMenuSettings,ot,this.showCOI.bind(this)),s(this._optMenuSettings,at,this.showMilestones.bind(this)),s(this._optMenuSettings,rt,this._publishing.showHistory.bind(this._publishing)),s(this._optMenuSettings,lt,this._publishing.showHistory.bind(this._publishing)),s(this._optMenuSettings,ct,this.showSurveys.bind(this)),s(this._optMenuSettings,dt,this.showSurveyOverview.bind(this)),s(this._optMenuSettings,ht,this.showTags.bind(this)),s(this._optMenuSettings,"toggle-public",this.togglePublic.bind(this)),s(this._optMenuSettings,tt,this.showGeneralInfo.bind(this)),s(this._optMenuSettings,it,this.showCustomization.bind(this)),s(this._optMenuSettings,st,this.showPermissions.bind(this)),s(this._optMenuSettings,"show-invites",this.showInvites.bind(this)),s(this._optMenuSettings,pt,this.disableContentLock.bind(this)),s(this._optMenuSettings,gt,this.downloadDiscussionReport.bind(this)),s(this._optMenuSettings,vt,this.downloadFullZip.bind(this)),s(this._optMenuSettings,mt,this.downloadFullHTML.bind(this)),s(this._optMenuSettings,bt,this.downloadFullXmlZip.bind(this)),s(this._optMenuSettings,ut,this.showSubscribeTo.bind(this)),n.subscribe(o.topic.toggle.controls,this.toggleEditControls.bind(this)),s(this.sidebarToggler,"click",this.toggleSideBar.bind(this))),this.setupTabs(),u.isPublished()?h(this.previewCheck,l):this.own(s(this.toggleViewModeChk,"click",(()=>F.toggleEditControls(u.inPreviewMode()))),s(this.contentLockIcon,"click",this.showLockStatus.bind(this)))}setupTabs(){const e=e=>{const t=e.target.dataset.magicId;t===o.tabs.evidence&&n.publish(o.topic.show.evidence),t===o.tabs.reference&&n.publish(o.topic.show.references),t===o.tabs.recommendation&&n.publish(o.topic.show.recommendation)};this.tabBtnContainer.querySelectorAll(".contentTab").forEach((t=>{t.addEventListener("click",e),t.addEventListener("keydown",(t=>{13===t.keyCode&&e(t)}))}))}createPDF(){const e=new Zt({guideline:u.getGuideline(),admin:!0,currentDraft:!u.isPublished()}),t=new w({title:de.actions.exporting.pdfWord,content:e});t.startup(),this.trackEvent(b.show,`guideline:${u.getContentId()}:pdf`),this.own(s(e,Kt,this.showPDFDialog.bind(this,t)))}downloadDiscussionReport(){this.trackEvent(b.exported,`guideline:${u.getContentId()}:discussion`);const e=`/api/v2/reports/guidelines/${u.getContentId()}/discussion`,t=`guideline-${u.getContentId()}-discussion-report.csv`;ye(e,t,Ce.CSV,{title:de.actions.rec.recCommentExport,completeTitle:de.msg.ready,completeMsg:de.msg.file.ready})}downloadFullHTML(){this.trackEvent(b.exported,`guideline:${u.getContentId()}:html`);const e=`/api/v2/guidelines/${u.getContentId()}/pdf/html`,t=`guideline-export-${u.getContentId()}.html`;ye(e,t,Ce.HTML,{title:de.actions.zip.guidelineExport,message:de.msg.zip.process,completeTitle:de.msg.ready,completeMsg:de.msg.zip.ready})}downloadFullZip(){this.trackEvent(b.exported,`guideline:${u.getContentId()}:zip`);const e=`/api/v2/guidelines/${u.getContentId()}/export/zip`,t=`guideline-export-${u.getContentId()}.zip`;ye(e,t,Ce.ZIP,{title:de.actions.zip.guidelineExport,message:de.msg.zip.process,completeTitle:de.msg.ready,completeMsg:de.msg.zip.ready})}downloadFullXmlZip(){this.trackEvent(b.exported,`guideline:${u.getContentId()}:zip`);const e=`/api/v2/guidelines/${u.getContentId()}/export/zip?f=xml`,t=`guideline-export-${u.getContentId()}.zip`;ye(e,t,Ce.ZIP,{title:de.actions.zip.guidelineExport,message:de.msg.zip.process,completeTitle:de.msg.ready,completeMsg:de.msg.zip.ready})}showPDFDialog(e,t){t.detail.success?this.showDialog(e,de.pdf.pdfProcess):this.showDialog(e,de.errors.default)}showDialog(e,t){e.close(),i.confirm({title:de.pdfDialog.title,message:t,yes:de.general.ok,mode:"ALERT"})}showGeneralInfo(){if(u.canUserEdit()){const e=new kt(this._getSettingParams());this._openDialog(de.settings.general.label,e,"about")}else new Se({data:u.getContent()}).startup(),this.trackEvent(b.show,"about")}showCustomization(){const e=new Lt(this._getSettingParams());this._openDialog("Customization",e,"guideline-customization")}showLinks(){const e={headingLabel:"",guidelineId:u.getGuidelineId(),guidelineShortCode:u.getGuidelineShortCode()},t=new Ni(e);this._openDialog("Guideline Links",t,"links")}showPermissions(){const e=new Mt(this._getSettingParams());this._openDialog(de.settings.permissions.label,e,"permissions")}showInvites(){const e=new Ze({guidelineId:u.getGuidelineId()});this._openDialog(de.actions.inviteUsers,e,"invites")}showCOI(){const e=new Li({guidelineId:this.guideline.guidelineId});
289this._openDialog("Conflict of Interest",e,"coi",!0)}showCheckList(){const e=`${de.settings.checklist.label} & ${de.settings.milestones.label}`;this._openDialog(e,this._getCheckListAndMilestones("checklist"),"checklist")}showDocuments(){const e=`${de.settings.checklist.label} & ${de.settings.milestones.label}`;this._openDialog(e,this._getCheckListAndMilestones("info"),"checklist")}showMilestones(){const e=`${de.settings.checklist.label} & ${de.settings.milestones.label}`;this._openDialog(e,this._getCheckListAndMilestones("milestone"),"milestone")}togglePublic(){const e=this.summary.isPublic;u.getContent().isPublic=!e,p.guidelineStore().togglePublic(u.getGuidelineId(),e).then((()=>{const t=de.settings.publicSettings,s=e?t.privateMsgEvidence:t.publicMsgEvidence;i.confirm({title:t.label,message:s,mode:"ALERT",yes:de.general.ok}),this.summary.isPublic=!e})).catch((()=>{u.getContent().isPublic=e}))}toggleEditControls(e=!1){u.canUserEdit()&&(r(this.createSectionBtn,l,e),r(document.body,R,e),this._Highlighter.toggleText(!e)),this.trackEvent(b.show,"preview")}toggleLockIcon(e){e&&(this.contentLockIcon.title=u.isPublished()?de.guideline.status.published:de.guideline.status.lockedForPublishing),r(this.contentLockIcon,l,!e),u.isDraft()&&r(this.previewCheck,l,e)}showLockStatus(){this._publishing.showEventsLogs()}showSubscribeTo(){(new Ke).startup()}_getCheckListAndMilestones(e){return new ui({params:this._getSettingParams(),selectedTab:e})}_openDialog(e,t,i,n=!1){const o=new w({title:e,content:t,fullScreen:n});o.startup(),this.trackEvent(b.show,i),this.own(s(o,"close",(()=>this.trackEvent(b.close,i))))}_getSettingParams(){return{oid:u.getGuidelineId(),obj:u.getGuideline(),currentDraft:u.isDraft(),admin:u.isContentAdmin()}}})((co=ce(a),class extends co{sideBar=null;_observer=null;_scrollPanel=null;constructor(){super(...arguments),Object.assign(this,...arguments)}startup(){super.startup&&super.startup(),console.info("startup - scrollMixin");const e=new Set,t={root:document.getElementById("mainContent"),rootMargin:"50px",threshold:[0],trackVisibility:!0,delay:100};this._observer=new IntersectionObserver(this.observerCallBack.bind(this,e),t),this._scrollPanel=this.editorContentPane,document.addEventListener("visibilitychange",this.handleVisibilityChange.bind(this,e,null),!1),window.setInterval(this.handleRefreshInterval.bind(this,e),1e3)}observerCallBack(t,i){i.forEach((i=>{let s=i.target;if(i.isIntersecting)s.dataset.lastViewStarted=i.time.toFixed(2),console.debug("visibleWidgets add",s.id,i.isVisible),t.add(s);else{console.debug("visibleWidgets remove",s.id),t.delete(s);const i=e.byNode(s);i&&i._onInVisible&&i._onInVisible()}}))}handleVisibilityChange(e,t){document.hidden?(t=e,e.clear(),t.forEach((e=>{this.updateWidgetTimer(e),e.dataset.lastViewStarted=0}))):(t?.forEach((e=>{e.dataset.lastViewStarted=performance.now().toFixed(2)})),e=t,t=null)}handleRefreshInterval(t){let i=[];t.forEach((e=>{this.updateWidgetTimer(e),e.dataset.totalViewTime>=3e3&&i.push(e)})),i.forEach((i=>{console.debug("onVisible",i.id);const s=e.byNode(i);s&&s?._onVisible(),t.delete(i)}))}updateWidgetTimer(e){let t=e.dataset.lastViewStarted,i=performance.now().toFixed(2);if(t){let s=i-t;e.dataset.totalViewTime=(parseFloat(e.dataset.totalViewTime||i)+s).toFixed(2)}e.dataset.lastViewStarted=i}isElementInViewport(e,t){if(!e)return!1;const i=e.getBoundingClientRect(),s=t.getBoundingClientRect(),n=s.top,o=n+64,a=s.bottom;return i.top<=n&&i.bottom>=a||(i.top>=o||i.bottom>o)&&i.bottom<=a}addToObserver(e){console.debug("++ addToObserver",e),this._observer.observe(e)}reSyncScroll(){0!==this.lastSectionSelected&&(console.info("Re-sync scroll to section: ",this.lastSectionSelected),Je("section_"+this.lastSectionSelected,this._scrollPanel))}scrollToSection(e){e&&(this.lastSectionSelected=e,Je("section_"+e,this._scrollPanel))}scrollToOutcome(e){if(!e)return;const s=e;t(s)?Je(s,this._scrollPanel):i.confirm(Qe.outcome)}scrollToPico(e){if(!e)return;const s="pico_"+e;t(s)?Je(s,this._scrollPanel):i.confirm(Qe.pico)}scrollToRecommendation(e){if(!e)return;const s="recommendation_"+e;t(s)?Je(s,this._scrollPanel):i.confirm(Qe.recommendation)}scrollToReference(e){if(!e)return;const s="reference_"+e;t(s)?Je(s,this._scrollPanel):i.confirm(Qe.reference)}watchScroll(){let e;Ye=s.pausable(this._scrollPanel,"scrollend",(()=>{clearTimeout(e),e=setTimeout((()=>{console.debug("scrolling stopped");let e,t=26e3;for(const[,i]of Object.entries(this.contentWidget.sectionWidgets))if(i&&this.isElementInViewport(i.domNode,this._scrollPanel)){const s=i.domNode.getBoundingClientRect().top;s<t&&(t=s,e=i)}e&&(this.sideBar.highlightSection(e.sectionId,e.parentId),this.lastSectionSelected=e.sectionId)}),1e3)}))}_wireEvents(){super._wireEvents&&super._wireEvents(),this.own(n.subscribe(o.topic.scroll.
289section,(e=>this.scrollToSection(e.id))),n.subscribe(o.topic.scroll.pico,(e=>this.scrollToPico(e.id))),n.subscribe(o.topic.scroll.outcome,(e=>this.scrollToOutcome(e.id))),n.subscribe(o.topic.scroll.recommendation,(e=>this.scrollToRecommendation(e.id))),n.subscribe(o.topic.scroll.reference,(e=>this.scrollToReference(e.id))),n.subscribe("reSync",this.reSyncScroll.bind(this)))}}));var co;class ho extends lo{activity={};contentWidget=null;currentSelectedTab=null;lastSectionSelected=0;referenceTabLabel=de.clinical.references;evidenceTabLabel=de.pico.evidence.default;recommendationTabLabel=de.recommendation.recommendations;_referencesRendered=!1;_optMenuSettings=null;_isContentLocked=!1;_lockMsgDialog=null;_filterBar=null;_isSideBarShowing=!0;_isFindBar=null;_objCounts={recommendations:0,picos:0,references:0};constructor(){super(...arguments),this.id="contentEditor",this.templateString='<div class="editor" data-magic-content="${magicContent}" data-magic-id="editorWrap" xmlns="http://www.w3.org/1999/html">\n    <div class="sidebarToggler" data-magic-id="sidebarToggler"><span class="icon"></span></div>\n    <div class="subHeader">\n        <div class="controls" role="region" data-magic-id="sideBarControls">\n            <h2>${i18n.sidebar.tab.contents}</h2>\n            <button data-magic-id="createSectionBtn">${i18n.actions.newSection}</button>\n        </div>\n        <div class="editorTabs" data-magic-id="topTabs">\n            <div class="tabBtnContainer" role="region" data-magic-id="tabBtnContainer">\n                <div class="contentTab hideMe" data-magic-id="referenceTab" tabindex="0">\n                    <span class="tabInner" data-magic-id="refTabInner">\n                        ${referenceTabLabel}\n                        <span class="objCount" data-magic-id="refCount"></span>\n                    </span>\n                    <span class="tabIndicator"></span>\n                </div>\n                <div class="contentTab" data-magic-id="evidenceTab" tabindex="0">\n                    <span class="tabInner" data-magic-id="picoTabInner">\n                        ${evidenceTabLabel}\n                        <span class="objCount" data-magic-id="picoCount"></span>\n                    </span>\n                    <span class="tabIndicator"></span>\n                </div>\n                <div class="contentTab" data-magic-id="recommendationTab" tabindex="0">\n                    <span class="tabInner" data-magic-id="recommendationTabInner">\n                        ${recommendationTabLabel}\n                        <span class="objCount" data-magic-id="recCount"></span>\n                    </span>\n                    <span class="tabIndicator"></span>\n                </div>\n            </div>\n            <div class="editorControls" data-magic-id="editorControls" tabindex="-1">\n                <a href="/" class="mobileHomeLink">&lt; Home</a>\n                <button class="sectionToggleBtn" data-magic-id="sectionToggleBtn" data-state="collapse"></button>\n                <span class="icon lockIcon hideMe" data-magic-id="contentLockIcon"></span>\n                <div class="settingsIcons" role="menubar" tabindex="-1">\n                    <label class="switchLabel" role="menuitem" data-magic-id="previewCheck">${i18n.actions.toggleEdit}\n                        <span class="switch" role="menuitem" tabindex="0">\n                            <input id="switch" class="switch-input" type="checkbox" aria-label="Toggle preview mode" data-magic-id="toggleViewModeChk" tabindex="0"/>\n                            <span class="switch-label" data-on="${i18n.general.on}" data-off="${i18n.general.off}"></span>\n                            <span class="switch-handle"></span>\n                        </span>\n                    </label>\n                    <span data-magic-id="surveyBtn"></span>\n                    <span class="settingsControl icon shareIcon" data-magic-id="linksControl"></span>\n                    <span class="settingsControl" role="menuitem" data-magic-id="menuControl"></span>\n                    <span class="settingsControl" role="menuitem" data-magic-id="settingsControl"></span>
289\n                    <span class="settingsControl" role="menuitem" data-magic-id="activityControl" tabindex="0"></span>\n                    <span class="searchBtn" role="menuitem" data-magic-id="findBtn" tabindex="0"></span>\n                </div>\n                <span class="icon commentIconOn hideMe" title="" data-magic-id="commentCount"></span>\n            </div>\n        </div>\n    </div>\n    <div class="editorLayoutWrap" data-magic-id="editorContentPane">\n        <div class="sidebar" data-magic-id="sideBarPane">\n            <div class="aboutGuidelineLink" data-magic-id="aboutBtn">${i18n.guideline.about.thisGuideline} <span class="icon openDialogIcon"></span></div>\n            <div class="tocPane" data-magic-id="tocPane">${i18n.general.loading}</div>\n        </div>\n        <main class="centerPanel" data-magic-id="centerPanel">\n            <div data-magic-id="filterBar"></div>\n            <div id="mainContent" data-magic-id="contentPanel" role="main" ></div>\n        </main>\n        <div class="findPanel" role="search" data-magic-id="findPanel"></div>\n    </div>\n    <div class="bulkEditMessage hideMe" data-magic-id="bulkEditMessage">\n        <img alt="Warning image" src="/app/images/icon-warning-18.svg">\n        <span data-magic-id="bulkEditMessageTxt"></span>\n        <button class="hideMe bulkEditReload" data-magic-id="bulkEditReloadChange">${i18n.lockedDialog.bulkRefBannerUpdate}</button>\n    </div>\n</div>\n',this.i18n=de,Object.assign(this,...arguments),p.init(u.getContentId())}startup(){super.startup(),this._initializeUI(),this.addCitationTooltips(),this.loadActivities(),this.loadCodingSystems(),this.updateObjCounts(),this._setupSubscriptions(),this._wireEvents(),n.publish(o.topic.update.reference),n.publish(o.topic.sub.guideline,u.getContentId())}addSection(){this.contentWidget.addSection()}disableContentLock(){oo().disableContentLock()}loadActivities(){if(u.showEditControls()){const e=new ws({guidelineId:u.getContentId()},this.activityControl);e.startup(),this.activity=e,this.own(n.subscribe(o.topic.clear.activities,e.clearNotification),n.subscribe(o.topic.poll.activities,e.pollForChanges.bind(e)))}else u.isUserViewer()&&this.removeTabs()}loadCodingSystems(){p.picoCodeStore().getContentOrgCodingSystems(u.getContentOrgId()).then((e=>{u.setContentOrgCodingSystems(e)}))}loadFilterBary(){this._filterBar=new Vs,this._filterBar.startup(),this.filterBar.replaceWith(this._filterBar.domNode),this.own(s(this._filterBar,Rs,(e=>this._updateRecTab(e.detail))),s(this._filterBar,Us,(e=>this._updatePicoTab(e.detail))),s(this._filterBar,qs,(e=>this._updateRefTab(e.detail)))),this._filterBar.showRecFilterBar()}loadReferences(){this.contentWidget.loadReferences().then((()=>{m(this.referenceTab,l)}))}loadState(){p.guidelineStore().getGuidelineState(this.guideline.guidelineId).then((e=>{console.info("guideilne status",e);const t=e.guidelineState;u.getGuideline().state=t,t?.locked&&J.processUserActions(t.actions),J.processStatusMessage({guidelineState:t})}))}lockContent(e){u.getContentId()===e.guidelineId&&(this._isContentLocked=e.isLocked,this.toggleLockIcon(this._isContentLocked),this._toggleLockUI(e))}reloadContent(){}removeTabs(){[this.centerPanel,this.editorControls,this.findPanel,this.topTabs,this.sideBarControls,this.tocPane,this.tabBtnContainer].forEach((e=>r(e,"noTabs"))),this.tabBtnContainer.remove()}setBulkReferenceEditMode(e){const t=e.bulkEditReferenceMode;r(this.createSectionBtn,l,t),t?this._enterBulkMode(e):this._exitBulkMode(e)}showFindTextSideBar(){if(this._isFindBar)return;const e=this;console.info("show find sidebar",this.currentSelectedTab),m(this.editorWrap,ee),h(this.editorWrap,ro),h(this.sideBarControls,l);const t=this.currentSelectedTab.replace("Tab","");this._isFindBar=new Qs({tab:t}).placeAt(this.findPanel,"only"),n.publish(o.topic.toggle.sideBar,{show:!1}),this.trackEvent(b.show,"find-text"),this.own(s(this._isFindBar,"close-find",(function(){console.info("hiding find sidebar"),e._isFindBar.destroyRecursive(),e._isFindBar=null,n.publish(o.topic.toggle.sideBar,{show:!u.areWeMobile()}),e.trackEvent(e._trackActions.hide,"find-text"),r(e.editorWrap,ro,!1)})))}showSurveys(){const e=new to({surveyType:o.types.survey.GUIDELINE,oId:this.guideline.guidelineId});e.startup(),s(e,"close",(()=>{e.destroyRecursive(),this.surveyIcon.updateState()}))}
289showSurveyOverview(){const e=new to({mode:eo,guidelineShortCode:this.guideline.shortCode,guidelineId:this.guideline.guidelineId});e.startup(),s(e,"close",(()=>{e.destroyRecursive(),this.surveyIcon.updateState()}))}showTags(){const e=new so({store:p.tagStore()}),t=new w({title:de.contentTags.tagsLabel,content:e});t.startup(),s(t,"close",(()=>this._filterBar.loadTags()))}showEvidence(){this._showEvidenceFirstShow&&(this._showEvidenceFirstShow=!1,document.querySelectorAll("div.picoWidget").forEach(this.addToObserver.bind(this))),this.currentSelectedTab=o.tabs.evidence,u.isUserViewer()||(h(this.evidenceTab,se),m(this.referenceTab,se)),this.recommendationTab&&m(this.recommendationTab,se),this._filterBar.showPicoFilterBar(),X('[data-magic-id="sectionWrap"] h1.heading'),m(this.sectionToggleBtn,l),this.trackEvent(b.nav,"picos","picos"),n.publish(o.tracking.saveLocation,"")}showRecommendations(){this.currentSelectedTab=o.tabs.recommendation,u.isUserViewer()||(this.evidenceTab&&r(this.evidenceTab,se,!1),this.referenceTab&&r(this.referenceTab,se,!1)),this.recommendationTab&&r(this.recommendationTab,se,!0),this._filterBar?.showRecFilterBar(),X('[data-magic-id="sectionWrap"]'),m(this.sectionToggleBtn,l),this.trackEvent(b.nav,"recommendations","recommendations"),n.publish(o.tracking.saveLocation,"")}showReferences(){this.currentSelectedTab=o.tabs.reference,this._referencesRendered?this._filterBar.showRefFilterBar():this.contentWidget.displayReferences().then((()=>{this._filterBar.showRefFilterBar(),this._referencesRendered=!0,this._filterBar.markReferencesRendered()})),Z('[data-magic-id="sectionWrap"] div.heading'),h(this.sectionToggleBtn,l),r(this.evidenceTab,se,!1),r(this.referenceTab,se,!0),this.recommendationTab&&r(this.recommendationTab,se,!1),this.trackEvent(b.nav,"references","references"),n.publish(o.tracking.saveLocation,"")}toggle(){this.reloadContent(),this.editorControls.style.display=u.showEditControls()?"block":"none"}toggleSideBar(e){const t=e&&void 0!==e.show?e.show:!this._isSideBarShowing;console.info("Toggle sidebar",t,this._isSideBarShowing),t?(m(this.sideBarPane,l),m(this.sideBarControls,l),r(this.editorWrap,ee,!1),this._isFindBar&&this._isFindBar.closeFind(),this._isSideBarShowing=!0):(h(this.sideBarPane,l),h(this.sideBarControls,l),r(this.editorWrap,ee,!this._isFindBar),this._isSideBarShowing=!1),r(this.sidebarToggler,"toggled",this._isSideBarShowing),this.trackEvent(this._isSideBarShowing?this._trackActions.hide:this._trackActions.show,"toc"),n.publish("reSync")}updateObjCounts(){p.guidelineStore().getContentCounts(u.getContentId()).then((e=>{this._objCounts=e,this._updateCountUI(e)}))}updateSurveyCount(e){this.surveyIcon&&(e?this.surveyIcon._updateState(e):this.surveyIcon.updateState())}_initializeUI(){if(this._referencesRendered=!1,this.sectionToggleBtn.innerText=de.actions.section.collapseSections,u.isPublished())this.surveyBtn.remove(),delete this.surveyBtn;else{const e=p.surveyStore();this.surveyIcon=new ao({iconId:`guideline_${this.guideline.guidelineId}`,isContentAdmin:u.isContentAdmin(),getStatsFnc:e.getSurveysStatsByGuideline.bind(e),shortCode:this.guideline.shortCode},this.surveyBtn),this.surveyIcon.startup(),this.surveyIcon.updateState(),this.own(s(this.surveyIcon.domNode,"click",this.showSurveyOverview.bind(this)))}if(u.showEditControls()?this.own(s(this.createSectionBtn,"click",this.addSection.bind(this))):h(this.createSectionBtn,l),u.areWeOffline())h(this.findBtn,l);else{const e=this.showFindTextSideBar.bind(this);this.own(s(this.findBtn,"click",e),s(window,"keydown",(t=>{"s"===t.key&&(t.ctrlKey||t.metaKey)&&(t.preventDefault(),e())})))}}_enterBulkMode(e){m(this.bulkEditMessage,l),h(this.bulkEditReloadChange,l),this.setBulkReferenceEditModePopup(this._getBulkEditModeMsg(e))}
289_exitBulkMode(e){e.wasCancelled?(h(this.bulkEditMessage,l),h(this.bulkEditReloadChange,l)):(this.setBulkReferenceEditModePopup(de.lockedDialog.bulkRefBannerFinished),m(this.bulkEditReloadChange,l),this.own(s(this.bulkEditReloadChange,"click",this.reloadContent.bind(this))))}_getBulkEditModeMsg(e){return de.lockedDialog.bulkRefBannerAdmin.replace("{username}",e.bulkEditReferenceModeBy).replace("{timestamp}",v.shortDateTimeFromISO(e.bulkEditReferenceModeAt))}_setupSubscriptions(){[[o.topic.poll.surveyStats,this.updateSurveyCount.bind(this)],[o.topic.poll.sectionCounts,this.updateObjCounts.bind(this)],[o.topic.poll.objectCounts,this.updateObjCounts.bind(this)],[o.topic.offline.goOn,this.toggle.bind(this)],[o.topic.offline.goOff,this.toggle.bind(this)],[o.topic.lock,this.lockContent.bind(this)],[o.topic.show.evidence,this.showEvidence.bind(this)],[o.topic.show.recommendation,this.showRecommendations.bind(this)],[o.topic.show.references,this.showReferences.bind(this)],[o.topic.toggle.sideBar,this.toggleSideBar.bind(this)],[o.topic.toggle.referenceBulkEdit,this.setBulkReferenceEditMode.bind(this)],[o.topic.reload.toc,this.loadSideBar.bind(this)],[o.topic.show.tags,this.showTags.bind(this)]].forEach((([e,t])=>this.own(n.subscribe(e,t))))}_toggleLockUI(e){console.info("!> Locking content",e),this._optMenuSettings.hideControlToggle(),this._optMenuSettings.showLockToggle(),this._isContentLocked&&e.lockedById!==u.getUserId()&&(this._lockMsgDialog=i.confirm({yes:de.general.ok,no:de.actions.cancel,title:de.lockedDialog.tempLocked,message:`${de.lockedDialog.pub} ${e.lockedBy} @ ${v.shortDateTimeFromISO(e.lockedAt)}`,mode:"ALERT"}))}sectionsExpand(){this.toggleSections("expand")}sectionsCollapse(){this.toggleSections("collapse")}toggleSections(e){"expand"===e?(this.sectionToggleBtn.dataset.state="collapse",this.sectionToggleBtn.innerHTML=de.actions.section.collapseSections,this._toggleSections("expand")):(this.sectionToggleBtn.dataset.state="expand",this.sectionToggleBtn.innerHTML=de.actions.section.expandSections,this._toggleSections("collapse"))}_toggleSections(e){const t="expand"===e;this.trackEvent(t?b.open:b.close,"sections-all"),[...document.querySelectorAll("#mainContent section")].forEach((e=>{const i=e.firstElementChild.getElementsByClassName("ctrButtons")[0],s=e.firstElementChild.getElementsByClassName("expandIcon")[0];r(i,l,!t),s?.classList.toggle(te,t),s?.classList.toggle(ie,!t),e.querySelector("[data-magic-id=container]")?.classList.toggle(l,!t)}))}_updateCountUI(e){this.refCount.innerHTML=e.references,this.picoCount.innerHTML=e.picos,this.recCount&&(this.recCount.innerHTML=e.recommendations)}_updateRecTab(e){r(this.recommendationTabInner,ne,e),this.recCount.innerText=e?document.querySelectorAll("div.recommendationWidget:not(.hideMe)").length:this._objCounts.recommendations}_updatePicoTab(e){r(this.picoTabInner,ne,e),this.picoCount.innerText=e?document.querySelectorAll("div.picoWidget:not(.hideMe)").length:this._objCounts.picos}_updateRefTab(e){r(this.refTabInner,ne,e),this.refCount.innerText=e?document.querySelectorAll("div.referenceWidget:not(.hideMe)").length:this._objCounts.references}async _showAbout(){const e=u.getGuidelineId();this.trackEvent(b.show,"guideline:about",`${o.content.guidelines}:${e}`);const t=await p.contentListStore().getAbout(e),i=new Se({id:"aboutContent",data:t,mode:Ee});i.startup(),this.own(s(i.about,"open-settings",(()=>{this.showGeneralInfo.call(this),i.destroy()})))}_wireEvents(){super._wireEvents&&super._wireEvents();const e=this;this.own(s(this.aboutBtn,"click",this._showAbout.bind(this)),s(this.linksControl,"click",this.showLinks.bind(this)),s(this.sectionToggleBtn,"click",(t=>{const i=t.target.dataset.state;e.toggleSections(i)})))}}class uo extends P{constructor(){super(...arguments),this.templateString="",this.data=null,this.propertyMap=null,this.renderListItem=null,this.sortedData=[],this.sortedDataDomArray=[],this.expandable=!0,this.showNumbers=!1,Object.assign(this,...arguments)}startup(){super.startup(),this.sortedData=[],this.sortedDataDomArray=[],this.boundGetItemPropProxyName=this.getItemPropProxyName.bind(this),this.maybeTransformData()}addMappingProxyToItem(e){return new Proxy(e,{get:(e,t,i)=>Reflect.get(e,this.boundGetItemPropProxyName(t),i)})}maybeTransformData(){Object.keys(this.propertyMap).length&&Array.isArray(this.data)&&(this.data=this.data.map(this.addMappingProxyToItem.bind(this)))}getItemPropProxyName(e){return this.propertyMap[e]||e}isTopLevelItem(e){return!e.parent}sortListItems(){const e=[...this.data],t=e.filter((e=>this.isTopLevelItem(e))).sort(((e,t)=>e.order&&t.order?e.order-t.order:0)),i=e.filter((e=>!this.isTopLevelItem(e))).reduce(((e,t)=>t.parent?(e[t.parent]?e[t.parent].push(t):e[t.parent]=[t],e):e),{});
289return Object.keys(i).forEach((t=>{i[t].sort(((e,t)=>e.order&&t.order?e.order-t.order:0));const s=e.find((e=>e.sectionId==t));s&&(s.hasChild=!0)})),this.sortedData=[...t,...Object.values(i).flat()],this.sortedData}addNewItem(e,t=!1){const i=this.addMappingProxyToItem(e);return Array.isArray(this.data)&&this.data[t?"push":"unshift"](i),this.createItemElement(i)}removeItem(e){this.data=this.data.filter((t=>t.sectionId!==e))}createItemElement(e,t="li"){const i=String(e.id),s=e.text||this.defaultLabel,n=e.sectionLabel||"",o=this.showNumbers?`<span class="tocSectionNumberWrap"><span class="tocSectionNumber">${n}</span><span class="label">${s}</span></span>`:`<span class="label">${s}</span>`,a=document.createElement(t);if(a.dataset.id=i,a.dataset.number=n,"li"===t&&o&&(a.innerHTML=o),"li"===t&&this.expandable&&e.hasChild){const e=document.createElement("span");e.className="icon blackCarrotRightIcon",a.appendChild(e)}return"ol"===t&&this.expandable&&h(a,l),"li"===t&&"function"==typeof this.renderListItem?this.renderListItem(a,e):a}elementIsParentOfItem(e,t){return e.dataset.id===`${t.parent}`}getParentNodeOfItem(e,t,i){return e.querySelector(`${i}[data-id="${t.parent}"]`)}elementIsAncestorOfItem(e,t){return!!this.getParentNodeOfItem(e,t,"li")}getDirectListParentOfItem(e,t){return this.getParentNodeOfItem(e,t,"ol")}maybeAppendItemToParentDom(e){const t=e.parent,i=this.sortedDataDomArray.find((t=>this.elementIsParentOfItem(t,e)||this.elementIsAncestorOfItem(t,e)));if(!i)return!1;const s=this.createItemElement(e);let n=this.getDirectListParentOfItem(i,e);if(!n){n=this.createItemElement({id:t},"ol");(this.getParentNodeOfItem(i,e,"li")||i).appendChild(n)}return n.appendChild(s),!0}getListItemsDom(){this.sortedDataDomArray=[];let e=[];for(;e.length!==this.sortListItems().length;)e=this.sortedData.reduce(((e,t)=>{if(!t.id)return e;const i=t.id.toString();if(e.includes(i))return e;let s;if(t.parent)s=this.maybeAppendItemToParentDom(t);else{const e=this.createItemElement(t);this.sortedDataDomArray.push(e),s=!0}return s&&e.push(i),e}),e);return this.sortedDataDomArray}convertDomToData(e){return Array.from(e?e.querySelectorAll("li"):[]).map((e=>{const t=e.parentNode,i=t.dataset.id,s=Array.from(t.children).findIndex((t=>t===e))+1;return{[this.getItemPropProxyName("id")]:e.dataset.id,[this.getItemPropProxyName("parent")]:i||0,[this.getItemPropProxyName("order")]:10*s,[this.getItemPropProxyName("number")]:e.dataset.number}}))}dataToTree(e){const t=this.getItemPropProxyName("id"),i=this.getItemPropProxyName("parent"),s=Object.create(null);e.forEach((e=>s[e[t]]={...e,children:[]}));const n=[];return e.forEach((e=>{e[i]?s[e[i]].children.push(s[e[t]]):n.push(s[e[t]])})),n}render(){const e=document.createElement("ol");return this.getListItemsDom().forEach((t=>e.appendChild(t))),e}}function po(){const e=document.createElement("span");return e.className="icon blackCarrotDownIcon",e}class go extends a{constructor(){super(...arguments),this.templateString="<div></div>",this.initialised=!1,this.readOnly=!1,this.canEdit=!1,this.showNumbers=!1,this.el=null,this.actions={},this.classNames={},this.cursor="Cursor",this.data=[],this.dataEngine=null,this.distances={droppingEdge:15,mouseTo:{targetedElTop:0,targetedElTopAbs:0,targetedElBot:0}},this.defaultLabel="",this.expandable=!0,this.listClassNames=["tocGroup","hideMe"],this.listItemClassNames=["tocLabel"],this.listEventListeners={},this.listInterface=null,this.mainListClassName="tocRoot",this.nestingLevels=10,this.placeholderList=null,this.placeholderInUse=null,this.propertyMap={},this.renderListItem=null,this.sortableList=[],this.targetNode=null,this.draggedNode=null,this.targetedNode=null,this.wrapper=null,Object.assign(this,...arguments)}postCreate(){super.postCreate&&super.postCreate(),this.initialised=!1;const e="string"==typeof this.el?document.querySelector(this.el):this.el,t=e instanceof HTMLOListElement||e instanceof HTMLUListElement;this.wrapper=t?void 0:e,this.sortableList=t?e:null,this.listClassNames=this.createListClassNamesArray(this.listClassNames),this.listItemClassNames=this.createListClassNamesArray(this.listItemClassNames),this.actions={onDrop:this.actionOnDrop,onClick:this.actionOnClick},this.classNames={dragged:"tocDragged",placeholder:"tocPlaceholder",targeted:"tocTargeted"},this.listEventListeners={dragover:this.onDragOver.bind(this),dragstart:this.onDragStart.bind(this),dragenter:this.onDragEnter.bind(this),dragend:this.onDragEnd.bind(this),drop:this.onDrop.bind(this),click:this.onClick.bind(this),mousedown:this.onMousedown.bind(this),mouseup:this.onMouseup.bind(this)};const i=parseInt(this.nestingLevels);this.nestingLevels=isNaN(i)?-1:i,this.listInterface=this.getListInterface()}startup(){super.startup(),this.initialised||(this.initDataDom(),this.addListAttributes(),this.toggleListEventListeners(),this.initPlaceholderList(),this.toggleListItemAttributes(),this.initialised=!0)}destroy(){super.destroy(),this.toggleListEventListeners(!0),this.toggleListItemAttributes(!1),this.initialised=!1}refresh(){console.info("todo - finish me."),this.getDataEngine().render()}
289addListAttributes(){const e=this.getSortableList();e&&(h(e,...this.listClassNames.concat(this.mainListClassName)),e.querySelectorAll(this.getListTagName()).forEach((e=>{h(e,...this.listClassNames)})),e.querySelectorAll("li").forEach((e=>{h(e,...this.listItemClassNames)})))}createListClassNamesArray(e){return e?Array.isArray(e)?e:e.split(" "):[]}getListInterface(){return Array.isArray(this.data)&&this.data.length||this.sortableList instanceof HTMLOListElement?HTMLOListElement:HTMLUListElement}getDataEngine(){return this.dataEngine||(this.dataEngine=new uo({data:this.data,propertyMap:this.propertyMap,renderListItem:this.renderListItem,expandable:this.expandable,defaultLabel:this.defaultLabel,showNumbers:this.showNumbers}),this.dataEngine.startup()),this.dataEngine}getListTagName(){return this.listInterface===HTMLOListElement?"ol":"ul"}getSortableList(){return this.sortableList instanceof this.listInterface||this.wrapper?.querySelector&&(this.sortableList=this.wrapper.querySelector(this.getListTagName())),this.sortableList}initDataDom(){if(!(Array.isArray(this.data)&&this.data.length&&this.wrapper))return;const e=this.getDataEngine().render();this.wrapper.innerHTML="",this.wrapper.appendChild(e),this.sortableList=e}toggleListItemAttributes(e=!0){this.getSortableList()?.querySelectorAll("li").forEach((t=>{t.draggable=e}))}toggleListEventListeners(e=!1){const t=this.getSortableList();if(!t)return;(this.canEdit?Object.keys(this.listEventListeners):["click"]).forEach((i=>{e?t.removeEventListener(i,this.listEventListeners[i]):t.addEventListener(i,this.listEventListeners[i],!1)}))}removeClassFromEl(e,t){t&&O(t,e)&&m(t,e)}onClick(e){const t="OL"!==e.target.nodeName&&"SPAN"!==e.target.nodeName,i=t&&"LI"===e.target.nodeName?e.target:e.target.parentElement,s=i.dataset.id;if(t)"function"==typeof this.actions.onClick&&this.actions.onClick(s,i);else if(this.expandable){const t=this.wrapper.querySelector(`ol[data-id="${s}"]`);if(!t)return;const i=e.target.parentElement.querySelector("span.icon");O(t,l)?(oe(t,l,re),"SPAN"===i?.nodeName&&(i.className="icon blackCarrotDownIcon")):(oe(t,re,l),"SPAN"===i?.nodeName&&(i.className="icon blackCarrotRightIcon"))}}canBeTargeted(e){return!(!this.draggedNode||this.draggedNode===e)&&("LI"===e.nodeName?!this.nestingThresholdReached(e):e instanceof this.listInterface&&O(e,this.classNames.placeholder))}onDragStart(e){this.draggedNode=e.target,h(this.draggedNode,this.classNames.dragged),e.dataTransfer?.setData("text","")}onDragOver(e){e.preventDefault(),this.updateCoordination(e),this.managePlaceholderLists()}onDragEnter(e){this.canBeTargeted(e.target)&&(this.removeClassFromEl(this.classNames.targeted,this.targetedNode),this.targetedNode=e.target,h(this.targetedNode,this.classNames.targeted))}onDragEnd(e){e.stopPropagation(),this.removeClassFromEl(this.classNames.dragged,this.draggedNode),this.removeClassFromEl(this.classNames.targeted,this.targetedNode),this.cleanupPlaceholderLists(),delete this.draggedNode,delete this.targetedNode}onDrop(e){if(e.stopPropagation(),this.maybeDrop(),this.cleanupPlaceholderLists(),"OL"===this.targetedNode?.nodeName&&!this.targetedNode.parentElement.querySelector(":scope > span.icon")){const e=po(),t=this.targetedNode.parentElement.querySelector("ol");this.targetedNode.parentElement.insertBefore(e,t)}if(!this.targetedNode.querySelector("span.icon")){const t=this.targetedNode.parentElement.querySelector("ol");if(null!==t&&!O(t,ae)){const i=po();try{this.targetedNode.parentElement.insertBefore(i,t)}catch(e){console.warn(e)}}}if(this.enableDnD(),[...this.wrapper.querySelectorAll("ol.tocGroup li span.icon")].forEach((e=>{"OL"!==e.nextElementSibling?.nodeName&&e.remove()})),"function"==typeof this.actions.onDrop){const t={};t.sectionIdToMove=this.draggedNode.dataset.id,t.sections=this.getDataEngine().convertDomToData(this.getSortableList()),this.actions.onDrop(t,e.target)}}onMousedown(e){if(!this.readOnly){[...e.target.querySelectorAll("li")].forEach((e=>e.draggable=!1))}}onMouseup(e){if(!this.readOnly){[...e.target.querySelectorAll("li")].forEach((e=>e.setAttribute("draggable",!0)))}}getDropLocation(){if(this.canBeDropped()){if("LI"===this.targetedNode?.nodeName)return"before";if(this.targetedNode instanceof this.listInterface)return"inside"}}maybeDrop(){const e=this.getDropLocation();e&&this.dropTheItem(e)}dropTheItem(e){switch(e){case"before":this.targetedNode?.parentNode?.insertBefore(this.draggedNode,this.targetedNode);break;case"inside":this.targetedNode?.appendChild(this.draggedNode)}}calcMouseCoords(e){this.cursor={X:e.clientX,Y:e.clientY}}calcMouseToTargetedElDist(){if(!this.targetedNode)return;const e=this.targetedNode.getBoundingClientRect();this.targetNode={X:e.left,Y:e.top};const t=this.targetNode.Y-this.cursor.Y,i=Math.abs(t);this.distances.mouseTo={targetedElTop:t,targetedElTopAbs:i,targetedElBot:i-this.targetedNode.clientHeight}}areNested(e,t){return!!e&&!!t&&Array.from(t.querySelectorAll("li")).some((t=>t===e))}updateCoordination(e){this.calcMouseCoords(e),this.calcMouseToTargetedElDist()}cursorIsIndentedEnough(){return this.cursor.X-this.targetNode.X>50}mouseIsTooCloseToTop(){return!!this.distances?.droppingEdge&&this.cursor.Y-this.targetNode.Y<this.distances.droppingEdge}managePlaceholderLists(){this.analysePlaceHolderSituation().forEac
289h((e=>{switch(e){case"add":this.cleanupPlaceholderLists(),this.addPlaceholderList();break;case"cleanup":this.cleanupPlaceholderLists()}}))}targetedNodeIsPlaceholder(){return this.targetedNode instanceof this.listInterface&&O(this.targetedNode,this.classNames.placeholder)}getNodeDepth(e){let t=0;const i=this.getSortableList();let s=0;if(this.draggedNode){const e=this.draggedNode.querySelectorAll("ul").length||0,t=this.draggedNode.querySelectorAll("ol").length||0;s=e>t?e:t}for(;i!==e?.parentElement;)e?.parentElement instanceof this.listInterface&&t++,e=e?.parentElement;return t+s}nestingThresholdReached(e,t=!1){return!(this.nestingLevels<0)&&(t?this.getNodeDepth(e)>=this.nestingLevels:this.getNodeDepth(e)>this.nestingLevels)}analysePlaceHolderSituation(){if(!this.targetedNode||this.areNested(this.targetedNode,this.draggedNode))return[];const e=[];return!this.cursorIsIndentedEnough()||this.mouseIsTooCloseToTop()?this.targetedNodeIsPlaceholder()||e.push("cleanup"):this.targetedNode===this.draggedNode||"LI"!==this.targetedNode.nodeName||this.targetedNode.querySelectorAll(this.getListTagName()).length||this.nestingThresholdReached(this.targetedNode,!0)||e.push("add"),e}animatePlaceholderList(){this.placeholderInUse.style.minHeight="0",this.placeholderInUse.style.transition="min-height ease .2s",this.placeholderInUse.style.minHeight=`${this.draggedNode?.offsetHeight}px`}addPlaceholderList(){this.getPlaceholderList(),this.targetedNode?.appendChild(this.placeholderInUse),this.animatePlaceholderList()}targetNodeIsIdentified(){return!!this.targetedNode}targetNodeIsBeingDragged(){return this.targetNodeIsIdentified()&&this.targetedNode===this.draggedNode}targetNodeIsListWithItems(){return this.targetNodeIsIdentified()&&this.targetedNode instanceof this.listInterface&&!!this.targetedNode.querySelectorAll("li").length}canBeDropped(){return this.targetNodeIsIdentified()&&!this.targetNodeIsBeingDragged()&&
289!this.targetNodeIsListWithItems()&&!this.areNested(this.targetedNode,this.draggedNode)}cleanupPlaceholderLists(){const e=this.getListTagName(),t=this.getSortableList()?.querySelectorAll(e)||[];Array.from(t).forEach((e=>{e.querySelectorAll("li").length?O(e,this.classNames.placeholder)&&(m(e,this.classNames.placeholder),e.style.minHeight="auto",e.dataset.id=e.parentNode.dataset.id):e.remove()}))}initPlaceholderList(){this.placeholderList=document.createElement(this.getListTagName()),h(this.placeholderList,this.classNames.placeholder,...this.listClassNames)}getPlaceholderList(){return this.placeholderInUse=this.placeholderList.cloneNode(!0),this.placeholderInUse}getNodesById(e){return this.wrapper.querySelector(`li.tocLabel[data-id="${e}"]`)}enableDnD(){this.readOnly=!1;[...this.wrapper.querySelectorAll("li")].forEach((e=>e.draggable=!0))}disableDnD(){this.readOnly=!0;[...this.wrapper.querySelectorAll("li")].forEach((e=>e.draggable=!1))}addNewItem(e,t=!1){const i=this.getDataEngine().addNewItem(e,t);return i.setAttribute("draggable",String(this.initialised)),this.listItemClassNames.forEach((e=>h(i,e))),this.getSortableList()?.[t?"append":"prepend"](i),{data:this.getDataEngine().convertDomToData(this.getSortableList())}}removeItem(e){return this.getDataEngine().removeItem(e),this.wrapper.querySelector(`[data-id="${e}"]`).remove(),{data:this.getDataEngine().convertDomToData(this.getSortableList())}}updateItem(e,t,i){e&&(t&&(this.wrapper.querySelector(`[data-id="${e}"] .label`).innerHTML=t),null!=i&&(this.wrapper.querySelector(`[data-id="${e}"]`).dataset.number=i,this.wrapper.querySelector(`[data-id="${e}"] .tocSectionNumber`).innerText=i))}}const mo="tocClicked";class vo extends a{constructor(e){super(...arguments),this.id="tableOfContents",this.templateString='<section class="contents"></section>',this.toc=null,this.showNumbers=!1,this.data={},Object.assign(this,e)}postCreate(){super.postCreate(),this.showNumbers=u.getContent().sectionNumbers,this.own(n.subscribe("toc/delete",this.deleteTOC.bind(this)),n.subscribe("toc/insert",this.insertTOC.bind(this)),n.subscribe("toc/click",(e=>this.highlightSection(e.sectionId))),n.subscribe(o.topic.update.toc,this.updateTOC.bind(this)),n.subscribe(o.topic.toggle.controls,(e=>this.toggleEditControls(!e))),n.subscribe(o.topic.toggle.referenceControls,(e=>this.toggleEditControls(!e))))}startup(){super.startup();const t={canEdit:u.canUserEdit(),id:"tocTree",data:this.data,showNumbers:this.showNumbers,el:this.domNode,listClassNames:["tocGroup","expand"],listItemClassNames:["tocLabel"],defaultLabel:de.section.placeHolder.newSection,propertyMap:{id:"sectionId",parent:"parentId",text:"name"},actionOnClick:(e,t)=>{this.setStyleMarker(t,e),n.publish(o.topic.scroll.section,{id:e}),this.trackEvent(b.nav,"section:"+e,"section:"+e),u.areWeMobile()&&n.publish(o.topic.toggle.sideBar,{show:!1})},actionOnDrop:(e,t)=>{e.sections.forEach((e=>delete e.number));const i=e.sectionIdToMove;delete e.sectionIdToMove,p.tocStore.updateTOC(u.getGuidelineId(),i,e).then((e=>this.updateTOCNumbering(e)))}},i=e.byId("tocTree");i&&i.destroyRecursive(),this.toc=new go(t),this.toc.startup(),this.toggleEditControls()}getData(){return this.toc.getDataEngine().convertDomToData(this.toc.getSortableList())}refresh(){this.toc.startup()}highlightSection(e,t){console.info("highlightSection -> ",e,t);const i=this.toc.getNodesById(e),s=i.getBoundingClientRect(),n=this.domNode.getBoundingClientRect();s.top>n.top&&(console.debug("scrolling toc"),i.scrollIntoView(!1)),this.setStyleMarker(i,e),this.expandParents(i)}setStyleMarker(e,t){this.domNode.querySelectorAll(".tocClicked").forEach((e=>m(e,mo))),h(e,mo),this.trackEvent(this._trackActions.view,"section:"+t)}toggleEditControls(e=!0){u.canUserEdit()&&e?this.toc.enableDnD():this.toc.disableDnD()}insertTOC(e){console.info("insert TOC ",e),e.name=e.heading||"",this.toc.addNewItem(e,10!==e.order)}updateTOCNumbering(e){delete e.cached,Object.entries(e).forEach((([e,t])=>{this.updateTOC({sectionId:e,sectionNumber:t})})),n.publish(o.topic.section.move,this.getData())}updateTOC(e){console.info("update TOC ",e),this.toc.updateItem(e.sectionId,e.name,e.sectionNumber)}deleteTOC(e,t){console.info("delete TOC ",e,t),this.toc.removeItem(t)}expandParents(e){if(this.isHidden(e)){const t=e.closest("ol.hideMe");t&&(m(t,l),t.previousSibling.className="icon blackCarrotDownIcon",this.expandParents(t))}}isHidden(e){return null===e.offsetParent}}var bo=Object.freeze({__proto__:null,default:class extends ho{sideBar=null;baseClass="editor";_locked=!1;constructor(e){super(...arguments),this.magicContent=`guideline_${e.guideline.guidelineId}`,Object.assign(this,...arguments)}startup(){super.startup(),console.info("Starting guideline editor:: ",this.guideline),r(this.domNode,R,u.isPublished()),this.reloadContent()}reloadContent(){super.reloadContent(),this._referencesRendered=!1,this.loadContent().then(this.loadSecondaryContent.bind(this))}destroy(){super.destroy(),console.debug("-- Destroy",this.id),this.surveyIcon&&this.surveyIcon.destroyRecursive(),this.sideBar&&this.sideBar.destroyRecursive(),this.contentWidget&&this.contentWidget.destroyRecursive()}loadContent(){return console.info("*> Loading content"),new Promise((e=>{import("./guideline-B4q9swg-.js").then((function(e){return e.K})).then((({default:t})=>{console.info("*> Loading guideline into editor"),this.contentWidget&&this.contentWidget.destroyRecursive(),this.contentWidget=new t({guideline:this.guideline}
289).placeAt(this.contentPanel),this.contentWidget.displaySections().then((()=>{u.areWeMobile()&&this.sectionsCollapse(),console.info("done - displaySections"),le.endLoading(),e()}))}))}))}loadSideBar(){return console.info("*> Loading sidebar"),new Promise((e=>{p.tocStore.getTOC().then((t=>{this.renderSideBar(t),e()}))}))}renderSideBar(e){console.info("rendering sidebar: ",e),this.sideBar&&this.sideBar.destroyRecursive(),this.sideBar=new vo({data:e.sections}),this.sideBar.startup(),this.tocPane.replaceChildren(this.sideBar.domNode),u.areWeMobile()&&this.toggleSideBar()}openAfterLoad(){setTimeout((()=>this._openAfterLoad()),600)}_openAfterLoad(){this.sectionId?(console.info("show section - ",this.sectionId),F.showSection(this.sectionId),this.trackEvent(b.deepLink,window.location.hash)):this.recommendationId?(console.info("open recommendation - ",this.recommendationId),F.openRecommendation(this.recommendationId,this.tab),this.trackEvent(b.deepLink,window.location.hash)):this.showSurvey&&!u.isPublished()&&this.showSurveyOverview()}loadSecondaryContent(){console.info("*> Loading Secondary Content"),this.loadSideBar().then((()=>this.openAfterLoad())),this.loadFilterBary();
289!(u.isPublished()&&(u.isUserAnon()||u.isUserViewer()))&&this.loadReferences(),this.watchScroll(),this.loadState(),document.querySelectorAll("section.recommendationSection").forEach(this.addToObserver.bind(this)),document.querySelectorAll("div.recommendationWidget").forEach(this.addToObserver.bind(this))}_getSettingParams(){return{type:"guideline",oid:u.getGuidelineId(),obj:u.getGuideline(),currentDraft:this.guideline.currentDraftId===this.guideline.guidelineId,admin:u.isContentAdmin()}}}});export{Is as A,fs as D,li as F,Ni as G,vi as H,Zi as K,gi as M,ao as S,Tt as T,Qi as a,$s as b,Ls as c,to as d,Rn as e,Kn as f,bo as g,$t as o,io as s};
290//# sourceMappingURL=guidelineEditor-Cdr7QOTZ.js.map

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.