1import{_ as yn}from"./D9MvgeHQ.js";import{K as os,e as M,c as o,h as v,o as l,E,d as n,a3 as _,t as r,af as ls,f as kn,L as fn,z as hn,av as $t,r as c,w as oe,g as wn,G as Tn,i as a,F as b,a as U,v as D,aL as N,m as k,aM as Y,aN as It,aP as Te,b1 as W,aO as $e,b4 as $n,I as ge,p as as}from"./hpNDvw06.js";import{_ as In}from"./BFMj98Ab.js";import{_ as Cn}from"./DenpUUh4.js";import{r as An}from"./BYrMGjzP.js";import{u as Sn,a as xn}from"./C-LiYy0w.js";import{c as Nn}from"./hZ2BpX9w.js";import"./Cf455Atp.js";function En(R){return!R.public||!R.emailDelivery?null:R.emailDelivery.status==="failed"?{label:"Email failed",tone:"danger",title:R.emailDelivery.error||"The send reported an error."}:R.emailDelivery.status==="sent"?{label:"Emailed",tone:"success"}:null}function Un(R){const{delivery:y,notification:w,customerEmail:le,sentAtLabel:Ie}=R,f=(w==null?void 0:w.recipientEmail)||le;return(y==null?void 0:y.status)==="failed"||(w==null?void 0:w.status)==="failed"?{tone:"danger",text:`Email failed for ${f} â the reply is saved. Check the System log before resending.`}:(y==null?void 0:y.status)==="sent"||(w==null?void 0:w.status)==="sent"?{tone:"success",text:`Email sent to ${f} at ${Ie}`}:(w==null?void 0:w.status)==="skipped"?{tone:"warning",text:`Reply saved, but no email was sent: ${w.error||"email sending is turned off."}`}:null}const zn=["title"],Dn={"aria-hidden":"true"},Mn={key:0,class:"visually-hidden"},Rn=os({__name:"SupportEmailDeliveryBadge",props:{message:{}},setup(R){const y=R,w=M(()=>En(y.message));return(le,Ie)=>w.value?(l(),o("span",{key:0,class:E(["support-email-delivery-badge",`support-email-delivery-badge--${w.value.tone}`]),title:w.value.title},[n("span",Dn,r(w.value.tone==="success"?"â":"â"),1),_(" "+r(w.value.label)+" ",1),w.value.title?(l(),o("span",Mn,": "+r(w.value.title),1)):v("",!0)],10,zn)):v("",!0)}}),Hn=ls(Rn,[["__scopeId","data-v-8527ad5a"]]);function Ln(R,y){const w=new Set;if(!R)return{html:R,usedContentIds:w};const le=new Set(y.map(f=>f.contentId));return{html:R.replace(/<img\b[^>]*>/gi,f=>{var Oe;const q=((Oe=f.match(/\sdata-cid=(["'])(.*?)\1/i))==null?void 0:Oe[2])||"";return q&&le.has(q)?(w.add(q),f.replace(/\ssrc=(["']).*?\1/i,` src="cid:${q}"`).replace(/\sdata-cid=(["']).*?\1/i,"")):/\ssrc\s*=\s*(["'])?cid:/i.test(f)?"":f}),usedContentIds:w}}const Bn={class:"container-fluid support-admin-page"},Fn={key:0,class:"alert alert-secondary mb-0"},Pn={key:1,class:"alert alert-danger mb-0"},Vn={class:"support-admin-page__header"},qn={class:"support-admin-page__actions"},On=["disabled"],jn=["disabled"],Kn={class:"support-admin-workspace"},Zn={class:"support-admin-column support-admin-column--queue"},Wn={class:"support-admin-panel support-admin-panel--full-height"},Qn={class:"support-admin-filters"},Gn={class:"support-admin-filters__quick"},Jn={class:"support-filter-search"},Xn={class:"support-filter-search__control"},Yn=["aria-label","onClick"],ea=["onKeydown"],ta={key:0,class:"support-tag-search__results"},sa=["onClick"],na={class:"support-admin-filters__status-row"},aa=["value"],oa=["value"],la={class:"support-admin-filters__dates"},ia={class:"form-label"},ra={class:"form-label"},ua=["disabled"],da=["value"],ca=["value"],pa={key:0,class:"alert alert-info m-3"},ma={key:1,class:"text-muted p-3"},va={key:2,class:"alert alert-danger m-3"},ga={key:3,class:"text-muted p-3"},_a={key:4,class:"support-ticket-list"},ba=["onClick"],ya={class:"support-ticket-list__topline"},ka={class:"support-ticket-list__subject"},fa={key:0,class:"support-tag-list"},ha={class:"support-ticket-list__meta"},wa={class:"support-ticket-list__meta"},Ta={class:"support-admin-column support-admin-column--conversation"},$a={key:0,class:"support-admin-panel support-admin-empty"},Ia={key:1,class:"support-admin-panel support-admin-panel--full-height support-admin-panel--conversation"},Ca={class:"support-ticket-detail__header"},Aa={class:"support-ticket-detail__number"},Sa={class:"h4 mb-1"},xa={class:"text-muted"},Na={class:"support-ticket-detail__alerts","aria-live":"polite"},Ea={class:"support-reply-email-banner__text"},Ua={key:1,class:"alert alert-danger"},za={key:2,class:"alert alert-warning support-merged-ticket-alert"},Da={class:"support-ticket-conversation-scroll"},Ma={class:"support-ticket-messages","aria-label":"Ticket messages"},Ra=["id"],Ha={class:"support-ticket-message__meta"},La=["datetime"],Ba=["disabled","onClick"],Fa=["innerHTML"],Pa={key:1,class:"support-ticket-message__body"},Va={key:2,class:"support-attachment-list"},qa=["href"],Oa=["src","onError"],ja={class:"support-attachment__name"},Ka={class:"support-attachment__size"},Za=["disabled","onClick"],Wa={key:0,class:"support-merged-history","aria-label":"Merged ticket histories"},Qa={class:"support-merged-history__header"},Ga={class:"text-muted"},Ja=["onClick"],Xa={class:"support-merged-history__messages"},Ya={class:"support-ticket-message__meta"},eo=["datetime"],to=["innerHTML"],so={key:1,class:"support-ticket-message__body"},no={key:2,class:"support-attachment-list"},ao=["href"],oo=["src","onError"],lo={class:"support-attachment__name"},io={class:"support-attachment__size"},ro={key:0,class:"support-reply-box__identity"},uo={class:"text-muted"},co=["value"],po={class:"support-reply-box__internal-toggle"},mo=["checked","disabled"],vo=["disabled"],go={class:"support-reply-box__attachments"},_o={class:"form-label mb-0"},bo={key:0,class:"support-reply-box__attachment-list"},yo=["aria-label","onClick"],ko={class:"support-admin-column support-admin-column--properties"},fo={key:0,class:"support-admin-panel support-admin-empty"},ho={key:1,class:"support-admin-side-stack"},wo={class:"support-admin-panel"},To={class:"support-side-section__header"}
1,$o=["disabled"],Io={class:"support-ticket-detail__controls"},Co={class:"support-ticket-detail__status-row"},Ao={class:"form-label"},So=["disabled"],xo={key:0,value:"merged"},No=["value"],Eo={class:"form-label"},Uo=["disabled"],zo=["value"],Do={class:"form-label"},Mo={class:"support-ticket-field-label"},Ro=["disabled"],Ho=["disabled"],Lo=["value"],Bo=["value"],Fo={class:"support-ticket-tags-editor"},Po={key:0,class:"support-tag-list"},Vo=["disabled","aria-label","onClick"],qo={class:"support-tag-search"},Oo=["disabled","onKeydown"],jo={key:0,class:"support-tag-search__results"},Ko=["disabled","onClick"],Zo={key:1,class:"text-muted"},Wo={class:"support-admin-panel"},Qo={class:"support-kb-panel"},Go={key:0,class:"text-muted"},Jo={key:1,class:"alert alert-danger mb-0"},Xo={key:2,class:"text-muted"},Yo={key:3,class:"text-muted"},el={key:4,class:"support-kb-results"},tl={class:"support-kb-result__title"},sl={key:0,class:"support-kb-result__summary"},nl=["href"],al={class:"support-kb-result__actions"},ol=["onClick"],ll=["disabled","onClick"],il=["disabled","onClick"],rl={class:"support-admin-panel"},ul={key:0,class:"support-merge-actions"},dl={class:"text-muted"},cl=["disabled"],pl={key:1,class:"text-muted"},ml={key:2,class:"alert alert-danger mb-0"},vl={key:3,class:"alert alert-warning mb-0"},gl={key:4,class:"text-muted"},_l={key:5,class:"support-interaction-history"},bl={class:"support-interaction-history__topline"},yl={key:0,class:"badge text-bg-light"},kl={key:1,class:"badge text-bg-dark"},fl={class:"support-interaction-history__subject"},hl={class:"support-interaction-history__meta"},wl={class:"support-interaction-history__date"},Tl={class:"support-interaction-history__actions"},$l={key:0,class:"support-interaction-history__merge-check"},Il=["checked","onChange"],Cl=["onClick"],Al={key:0,class:"support-interaction-history__date"},Sl={class:"support-interaction-history__topline"},xl={class:"support-interaction-history__subject"},Nl={class:"support-interaction-history__meta"},El={class:"support-interaction-history__date"},Ul={class:"support-interaction-history__actions"},zl=["onClick"],Dl=["id"],Ml=["onClick"],Rl={class:"support-new-ticket-form"},Hl={class:"form-label"},Ll={class:"form-label"},Bl={class:"form-label support-new-ticket-form__wide"},Fl={class:"form-label"},Pl=["value"],Vl=["value"],ql={class:"support-new-ticket-form__wide"},Ol={key:0,class:"support-tag-list mb-2"},jl=["aria-label","onClick"],Kl={class:"support-tag-search"},Zl=["disabled","onKeydown"],Wl={key:0,class:"support-tag-search__results"},Ql=["onClick"],Gl={key:1,class:"text-muted"},Jl={class:"support-new-ticket-form__wide"},Xl={class:"support-reply-box__toolbar"},Yl=["value"],ei={class:"form-label mb-0"},ti={key:0,class:"support-reply-box__attachment-list"},si=["aria-label","onClick"],ni={class:"support-new-ticket-form__actions"},ai=["disabled"],oi=["id"],li=["onClick"],ii={key:0,class:"text-muted",tabindex:"0"},ri={key:1,class:"alert alert-danger mb-0",tabindex:"0"},ui={key:2,class:"support-zendesk-dialog__content",tabindex:"0"},di={class:"support-zendesk-dialog__ticket-header"},ci={class:"h5 mb-1"},pi={class:"text-muted"},mi={key:0},vi={class:"support-zendesk-dialog__meta"},gi={key:0,class:"support-zendesk-dialog__tags"},_i={class:"support-zendesk-dialog__comments"},bi={class:"support-zendesk-comment__header"},yi={key:0,class:"text-muted"},ki={class:"support-zendesk-comment__badges"},fi={class:"badge text-bg-light"},hi={class:"support-zendesk-comment__time"},wi=["innerHTML"],Ti={key:1,class:"support-zendesk-comment__text"},$i={key:2,class:"support-zendesk-comment__attachments"},Ii=["href"],Ci={key:0,class:"text-muted"},rt=5,Ai=os({__name:"index",setup(R){const y=Sn(),w=hn(),le=kn(),Ie=fn(),f=An(w.public.apiUrl),{authStatus:q,currentUser:Oe,fetchAuthStatus:is}=xn(),{showSuccess:j,showError:ee,showWarning:Ce,showInfo:rs}=$n(),Ct=["new","open","pending_customer","pending_internal","resolved","closed","merged"],us=Ct.filter(t=>t!=="merged"),At=["low","normal","high","urgent"],p=$t({sortBy:"",status:"",priority:"",assignee:"",search:"",createdFrom:"",createdTo:"",tagIds:[]}
1),Q=c("all"),je=c([]),d=c(null),Ke=c(!1),ie=c(!1),Ze=c(!1),We=c(!1),re=c(null);oe(()=>{var t;return(t=d.value)==null?void 0:t.id},()=>{re.value=null});const Qe=c(!1),Ae=c(!1),ut=c(new Set),G=c(new Set),_e=c(""),A=c(""),Se=c(""),J=c([]),xe=c(!1),Ge=c(""),te=c([]),Ne=c(!1),Je=c(""),Xe=c(!1),$=c(null),Ye=c(!1),Ee=c(""),K=c(""),B=c(""),se=c(""),X=c([]),be=c([]),St=c(null),Ue=c(null),ze=c(null),H=c(!0),De=c(""),ye=c(""),Me=c([]),et=c([]),xt=c([]),F=c([]),ke=c(""),ue=c(""),ne=c(!1),Re=c(!1),fe=c(!1),P=c([]),de=c(""),He=c([]),tt=c(!1),st=c(""),dt=c(!1),Le=c(null),Nt=c(!1),ct=c(!1);let nt=0,ce=null,pe=0,Be=0;const g=$t({customerName:"",customerEmail:"",subject:"",bodyText:"",bodyHtml:"",assignedAgentId:"",tagIds:[]}),x=$t({status:"new",priority:"normal",assignedAgentId:"",assignedAgentUserId:"",assignedAgentName:"",assignedAgentEmail:""});oe(De,t=>{const e=Me.value.find(i=>i.id===t);if(e){if(H.value){const i=e.bodyHtml||e.bodyMarkdown;B.value=B.value?`${B.value}<p><br></p>${i}`:i,K.value=at(B.value)}else{const i=e.bodyHtml||e.bodyMarkdown;se.value=se.value?`${se.value}<p><br></p>${i}`:i,K.value=at(se.value)}De.value=""}}),oe(ye,t=>{const e=Me.value.find(m=>m.id===t);if(!e)return;const i=e.bodyHtml||e.bodyMarkdown;g.bodyHtml=g.bodyHtml?`${g.bodyHtml}<p><br></p>${i}`:i,g.bodyText=at(g.bodyHtml),ye.value=""}),oe(H,t=>{t?!B.value.trim()&&K.value.trim()&&(B.value=Vt(K.value)):se.value=Vt(K.value)});const Fe=M({get:()=>H.value?B.value:se.value,set:t=>{H.value?B.value=t:se.value=t}}),z=M(()=>{var t;return((t=d.value)==null?void 0:t.status)==="merged"}),ds=M(()=>be.value.some(t=>Fe.value.includes(t.contentId))),Et=M(()=>(K.value.trim().length>0||ds.value)&&(!z.value||!H.value)),I=M(()=>{var e;const t=String(((e=Oe.value)==null?void 0:e.email)||"").trim().toLowerCase();return t&&et.value.find(i=>String(i.email||"").trim().toLowerCase()===t)||null}),pt=M(()=>et.value.filter(t=>{var e;return t.id!==((e=I.value)==null?void 0:e.id)})),ae=M(()=>xt.value.filter(t=>t.active)),cs=M(()=>p.tagIds.map(t=>ae.value.find(e=>e.id===t)).filter(t=>!!t)),Ut=M(()=>ft(p.search,p.tagIds)),zt=M(()=>F.value.map(t=>ae.value.find(e=>e.id===t)).filter(t=>!!t)),Dt=M(()=>g.tagIds.map(t=>ae.value.find(e=>e.id===t)).filter(t=>!!t)),mt=M(()=>ft(ke.value,F.value)),vt=M(()=>ft(ue.value,g.tagIds)),gt=M(()=>{const t=le.query.ticket,e=Array.isArray(t)?t[0]:t;return String(e||"").replace(/^#/,"").trim()}),L=t=>t.replace(/_/g," ").replace(/\b\w/g,e=>e.toUpperCase()),O=t=>{const e=new Date(t);return Number.isNaN(e.getTime())?t:new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"short"}).format(e)},ps=t=>{const e=new Date(t);return Number.isNaN(e.getTime())?t:new Intl.DateTimeFormat(void 0,{timeStyle:"short"}).format(e)},ms=t=>["resolved","closed","merged"].includes(t.status)||!t.lastCustomerMessageAt?!1:t.lastAgentMessageAt?new Date(t.lastCustomerMessageAt).getTime()>new Date(t.lastAgentMessageAt).getTime():!0,vs=t=>p.sortBy==="created_at"?`Started · ${O(t.createdAt)}`:p.sortBy==="waiting_since"&&ms(t)?`Waiting since · ${O(t.lastCustomerMessageAt||"")}`:`${t.assignedAgentName||"Unassigned"} · ${O(t.updatedAt)}`,me=t=>{const e=Number(t||0);return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`},Mt=t=>{var e;return(((e=d.value)==null?void 0:e.attachments)||[]).filter(i=>i.messageId===t)},Rt=(t,e)=>(t.attachments||[]).filter(i=>i.messageId===e),Ht=t=>Mt(t).filter(e=>!e.isInline),Lt=(t,e)=>Rt(t,e).filter(i=>!i.isInline),Bt=c(new Set),_t=t=>{Bt.value.add(t)},Ft=(t,e)=>{const i=t;i&&i.complete&&i.naturalWidth===0&&_t(e)},Pe=t=>Nn(t.mimeType,t.size)&&!Bt.value.has(t.id),Ve=t=>`/api/admin/support-attachments/${encodeURIComponent(t)}/file`,gs=t=>{const e=String(t).trim();try{return decodeURIComponent(e).toLowerCase()}catch{return e.toLowerCase()}},Pt=(t,e)=>String(t||"").replace(/(<img\b[^>]*\bsrc=)(["'])cid:([^"']+)\2([^>]*>)/gi,(i,m,C,Z,V)=>{const s=gs(Z),u=e.find(h=>
1String(h.contentId||"").toLowerCase()===s);return u?`${m}${C}${Ve(u.supportAttachmentId)}${C}${V}`:""}),_s=t=>Pt(t.bodyHtml,Mt(t.id)),bs=(t,e)=>Pt(e.bodyHtml,Rt(t,e.id)),at=t=>{if(!t)return"";{const e=document.createElement("div");return e.innerHTML=t,String(e.innerText||e.textContent||"").trim()}},he=t=>String(t||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),Vt=t=>String(t||"").split(/\n{2,}/).map(e=>e.trim()).filter(Boolean).map(e=>`<p>${he(e).replace(/\n/g,"<br>")}</p>`).join(""),ys=t=>{const e=String(t||"").startsWith("/")?String(t||""):`/${t}`;return new URL(e,window.location.origin).toString()},ks=t=>`/documentation/kb/${encodeURIComponent(t.slug)}`,ot=t=>ys(ks(t)),fs=t=>{const e=String((t==null?void 0:t.slug)||"").trim();return e?{slug:e,title:String((t==null?void 0:t.title)||"Knowledge base article").trim()||"Knowledge base article",description:String((t==null?void 0:t.description)||"").trim()}:null},qt=t=>{if(z.value){Ce("Public replies are disabled for merged tickets.");return}H.value=!0;const e=String(B.value||"").trim(),i=String(t||"").trim();i&&(B.value=e?`${e}<p><br></p>${i}`:i,K.value=at(B.value))},hs=t=>{if(!t&&z.value){Ce("Public replies are disabled for merged tickets."),H.value=!1;return}H.value=!t},ws=t=>{var e;hs(!!((e=t.target)!=null&&e.checked))},Ts=t=>{const e=t.target;X.value=bt(X.value,Array.from(e.files||[]))},bt=(t,e)=>{const i=new Set(t.map(C=>`${C.name}:${C.size}:${C.lastModified}`)),m=[...t];for(const C of e){const Z=`${C.name}:${C.size}:${C.lastModified}`;i.has(Z)||(i.add(Z),m.push(C))}return m},$s=t=>{be.value.push(...t)},Is=t=>{X.value=X.value.filter(e=>e!==t),Ue.value&&(Ue.value.value="")},Cs=t=>{const e=t.target;P.value=bt(P.value,Array.from(e.files||[]))},Ot=t=>{P.value=bt(P.value,t),t.length&&j(`${t.length} attachment${t.length===1?"":"s"} added.`)},As=t=>{var e;Ot(Array.from(((e=t.dataTransfer)==null?void 0:e.files)||[]))},Ss=t=>{P.value=P.value.filter(e=>e!==t),ze.value&&(ze.value.value="")},yt=()=>{K.value="",B.value="",se.value="",X.value=[];for(const t of be.value)URL.revokeObjectURL(t.previewUrl);be.value=[],Ue.value&&(Ue.value.value="")},xs=()=>{var t;g.customerName="",g.customerEmail="",g.subject="",g.bodyText="",g.bodyHtml="",g.assignedAgentId=((t=I.value)==null?void 0:t.id)||"",g.tagIds=[],ue.value="",ye.value="",P.value=[],ze.value&&(ze.value.value="")},Ns=()=>{xs(),Re.value=!0},Es=t=>{if(t){Re.value=!0;return}Us()},Us=()=>{fe.value||(Re.value=!1)},kt=t=>ut.value.has(t),we=(t,e)=>{const i=new Set(ut.value);e?i.add(t):i.delete(t),ut.value=i},ft=(t,e)=>{const i=String(t||"").trim().toLowerCase();if(!i)return[];const m=new Set(e);return ae.value.filter(C=>!m.has(C.id)&&(C.name.toLowerCase().includes(i)||C.slug.toLowerCase().includes(i))).slice(0,8)},zs=()=>{ce&&window.clearTimeout(ce),ce=window.setTimeout(()=>{Ae.value=!1,ce=null},120)},Ds=t=>{ce&&(window.clearTimeout(ce),ce=null),p.tagIds.includes(t)||(p.tagIds=[...p.tagIds,t]),p.search="",Ae.value=!0,as(()=>{var e;return(e=St.value)==null?void 0:e.focus()}),S()},Ms=t=>{p.tagIds=p.tagIds.filter(e=>e!==t),S()},Rs=()=>{S()},jt=async t=>{if(!(z.value||ne.value)){if(!F.value.includes(t)){const e=[...F.value];F.value=[...F.value,t],await es(e)}ke.value=""}},Hs=async t=>{if(z.value||ne.value)return;const e=[...F.value];F.value=F.value.filter(i=>i!==t),await es(e)},Ls=()=>{const t=mt.value[0];t&&jt(t.id)},Kt=t=>{g.tagIds.includes(t)||(g.tagIds=[...g.tagIds,t]),ue.value=""},Bs=t=>{g.tagIds=g.tagIds.filter(e=>e!==t)},Fs=()=>{const t=vt.value[0];t&&Kt(t.id)},Zt=t=>{var m;const e=(m=t.target)==null?void 0:m.closest("a");if(!e)return;const i=String(e.getAttribute("href")||"").trim();i&&(t.preventDefault(),window.open(i,"_blank","noopener,noreferrer"))},Ps=t=>{if(!(t!=null&&t.length))return!1;for(const e of t){const i=e.recipientEmail||"recipient";e.status==="sent"?j(e.kind==="assignment"?`Assignment email sent to ${i}.`:e.kind==="resolved"?`Resolved notification sent to ${i}.`:`Email sent to ${i}.`):e.status==="failed"?ee(e.kind==="assignment"?`Assignment email failed for ${i}.`:e.kind==="resolved"?`Resolved notification failed for ${i}.`:`Email failed for ${i}.`):e.error&&Ce(e.error)}return!0},Wt=t=>(t==null?void 0:t.find(e=>e.kind==="customer_reply"))||null,Vs=t=>{const e=Wt(t.emailNotifications);if(!e){Ce(`Ticket #${t.ticketNumber} created, but no email send result was returned.`);return}const i=e.recipientEmail||t.customerEmail;if(e.status==="sent"){j(`Ticket #${t.ticketNumber} created and email sent to ${i}.`);return}if(e.status==="failed"){ee(`Ticket #${t.ticketNumber} created, but email failed for ${i}.`);return}Ce(e.error||`Ticket #${t.ticketNumber} created, but email was not sent.`)},qs=async()=>{const t=de.value.trim(),e=++nt;if(st.value="",t.length<2){He.value=[],dt.value=!1,tt.value=!1;return}tt.value=!0,dt.value=!0;try{const i=await y(`${f}/content-posts/kb-search`,{credentials:"include",query:{locale:"en",q:t,limit:6}});if(e!==nt)return;He.value=(Array.isArray(i)?i:[]).map(fs).filter(m=>!!m)}catch{if(e!==nt)return;He.value=[],st.value="Unable to search knowledge base."}finally{e===nt&&(tt.value=!1)}},Os=async t=>{var C;const e=String(t||"").trim();if(!e)return!1;if((C=navigator.clipboard)!=null&&C.writeText)return await navigator.clipboard.writeText(e),!0;const i=document.createElement("textarea");i.value=e,i.setAttribute("readonly","readonly"),i.style.position="fixed",i.style.left="-9999px",document.body.append(i),i.select();
1const m=document.execCommand("copy");return i.remove(),m},js=async t=>{try{if(!await Os(ot(t)))throw new Error("Clipboard unavailable");j("Knowledge base link copied.")}catch{ee("Unable to copy knowledge base link.")}},Ks=t=>{const e=ot(t);qt(`<p>This article may help: <a href="${he(e)}" target="_blank" rel="noopener noreferrer">${he(t.title)}</a></p>`),j("Knowledge base link inserted.")},Zs=t=>{const e=ot(t),i=String(t.description||"").trim();qt(`<p>This article may help: <a href="${he(e)}" target="_blank" rel="noopener noreferrer">${he(t.title)}</a></p>`+(i?`<p>${he(i)}</p>`:"")),j("Knowledge base summary inserted.")},ht=t=>({"text-bg-secondary":t==="new","text-bg-primary":t==="open","text-bg-warning":t==="pending_customer","text-bg-info":t==="pending_internal","text-bg-success":t==="resolved","text-bg-dark":t==="closed"||t==="merged"}),Qt=t=>({"text-bg-secondary":t==="new"||t==="closed"||!t,"text-bg-primary":t==="open","text-bg-warning":t==="pending"||t==="hold","text-bg-success":t==="solved"}),Gt=t=>`${t.name}${t.email?` · ${t.email}`:""}`,ve=t=>{x.status=t.status,x.priority=t.priority,x.assignedAgentId=t.assignedAgentId||t.assignedAgentUserId||"",x.assignedAgentUserId=t.assignedAgentUserId||"",x.assignedAgentName=t.assignedAgentName||"",x.assignedAgentEmail=t.assignedAgentEmail||"",F.value=(t.tags||[]).map(e=>e.id)},Jt=()=>{const t=et.value.find(e=>e.id===x.assignedAgentId);x.assignedAgentUserId="",x.assignedAgentName=(t==null?void 0:t.name)||"",x.assignedAgentEmail=(t==null?void 0:t.email)||""},Ws=()=>{const t=I.value;return t?(x.assignedAgentId=t.id,Jt(),!0):!1},Qs=async()=>{Ws()&&await it("assignee")},Gs=t=>!!(I.value&&t.assignedAgentId===I.value.id),Xt=t=>{var e;Q.value=t,p.assignee=t==="mine"?((e=I.value)==null?void 0:e.id)||"":t==="unassigned"?"__unassigned__":"",S()},Js=()=>{p.status="",p.priority="",p.assignee="",p.sortBy="",p.search="",p.createdFrom="",p.createdTo="",p.tagIds=[],Ae.value=!1,Q.value="all",S()},S=async()=>{Ke.value=!0,_e.value="",Se.value="";try{je.value=await y(`${f}/support/admin/tickets`,{credentials:"include",query:{sortBy:p.sortBy||void 0,status:p.status||void 0,priority:p.priority||void 0,assignee:p.assignee.trim()||void 0,search:p.search.trim()||void 0,createdFrom:p.createdFrom||void 0,createdTo:p.createdTo||void 0,tagIds:p.tagIds.length?p.tagIds:void 0,limit:100}}),d.value&&!je.value.some(t=>{var e;
1return t.id===((e=d.value)==null?void 0:e.id)})&&(d.value=null,J.value=[],te.value=[])}catch{_e.value="Unable to load support tickets."}finally{Ke.value=!1}},Xs=async()=>{if(!Ze.value){Ze.value=!0,_e.value="",Se.value="";try{const t=await y(`${f}/support/admin/email-sync/run`,{method:"POST",credentials:"include"}),e=t.enabled?`Email sync processed ${t.processed} messages and created ${t.createdTickets} tickets.`:"Email sync is not enabled.";await S(),Se.value=e}catch{_e.value="Unable to sync support email."}finally{Ze.value=!1}}},Yt=async t=>{const e=String(t||"").trim()||void 0;if(gt.value!==String(e||"")){ct.value=!0;try{await Ie.replace({query:{...le.query,ticket:e}})}finally{ct.value=!1}}},lt=async(t,e={})=>{d.value=t,ve(t),yt(),G.value=new Set,t.status==="merged"&&(H.value=!1),await qe(t.customerEmail),e.updateDeepLink!==!1&&await Yt(t.ticketNumber)},wt=async(t,e={})=>{A.value="";try{const i=await y(`${f}/support/admin/tickets/${t}`,{credentials:"include"});await lt(i,e)}catch{A.value="Unable to load ticket detail."}},Tt=async t=>{var i;const e=String(t||"").replace(/^#/,"").trim();if(e&&((i=d.value)==null?void 0:i.ticketNumber)!==e){A.value="";try{const m=await y(`${f}/support/admin/tickets/by-number/${encodeURIComponent(e)}`,{credentials:"include"});await lt(m,{updateDeepLink:!1})}catch{A.value=`Unable to load ticket #${e}.`}}},qe=async t=>{const e=String(t||"").trim(),i=++pe;if(J.value=[],Ge.value="",te.value=[],Je.value="",!e){xe.value=!1,Ne.value=!1;return}xe.value=!0,Ne.value=!0;try{const m=await y(`${f}/support/admin/customers/tickets`,{credentials:"include",query:{email:e}});i===pe&&(J.value=m)}catch{i===pe&&(Ge.value="Unable to load interaction history.")}finally{i===pe&&(xe.value=!1)}try{const m=await y(`${f}/support/admin/zendesk/tickets/search`,{credentials:"include",query:{requesterEmail:e,limit:25}});i===pe&&(te.value=m)}catch{i===pe&&(Je.value="Unable to load Zendesk interaction history.")}finally{i===pe&&(Ne.value=!1)}},Ys=()=>{Be+=1,Xe.value=!1,$.value=null,Ee.value="",Ye.value=!1},en=t=>{if(t){Xe.value=!0;return}Ys()},tn=async t=>{const e=String(t||"").trim();if(!e)return;const i=++Be;Xe.value=!0,$.value=null,Ee.value="",Ye.value=!0;try{const m=await y(`${f}/support/admin/zendesk/tickets/${encodeURIComponent(e)}`,{credentials:"include"});i===Be&&($.value=m)}catch{i===Be&&(Ee.value="Unable to load Zendesk ticket.")}finally{i===Be&&(Ye.value=!1)}},sn=t=>!!(d.value&&d.value.status!=="merged"&&t.id!==d.value.id&&t.status!=="merged"),nn=t=>G.value.has(t),an=t=>{const e=new Set(G.value);e.has(t)?e.delete(t):e.add(t),G.value=e},on=async()=>{if(!d.value||Qe.value||!G.value.size)return;const e=J.value.filter(m=>G.value.has(m.id)).map(m=>`#${m.ticketNumber}`).join(", ");if(window.confirm(`Merge ${e} into Ticket #${d.value.ticketNumber}? The selected tickets will be marked as merged and public replies will continue on the current ticket.`)){Qe.value=!0,A.value="";try{const m=await y(`${f}/support/admin/tickets/${d.value.id}/merge`,{method:"POST",credentials:"include",body:{secondaryTicketIds:Array.from(G.value)}});await lt(m),j(`Merged ${e} into Ticket #${m.ticketNumber}.`),await S(),await qe(m.customerEmail)}catch{A.value="Unable to merge tickets.",ee("Unable to merge tickets.")}finally{Qe.value=!1}}},ln=(t,e)=>t==="status"?`Status updated to ${L(e.status)}.`:t==="priority"?`Priority updated to ${L(e.priority)}.`:e.assignedAgentName?`Ticket assigned to ${e.assignedAgentName}.`:"Ticket unassigned.",it=async t=>{if(!d.value||ie.value)return;const e=d.value;ie.value=!0,A.value="";try{const i=await y(`${f}/support/admin/tickets/${d.value.id}`,{method:"PUT",credentials:"include",body:x});d.value=i,ve(i),Ps(i.emailNotifications),j(ln(t,i)),await S(),await qe(i.customerEmail)}catch{ve(e),A.value="Unable to update ticket.",ee("Unable to update ticket.")}finally{ie.value=!1}},rn=async()=>{Jt(),await it("assignee")},es=async t=>{if(!(!d.value||ne.value)){ne.value=!0,A.value="";try{const e=await y(`${f}/support/admin/tickets/${d.value.id}/tags`,{method:"PUT",credentials:"include",body:{tagIds:F.value}});d.value=e,ve(e),j("Ticket tags updated."),await S()}catch{F.value=t,A.value="Unable to save ticket tags.",ee("Unable to save ticket tags.")}finally{ne.value=!1}}},un=async()=>
1{if(!fe.value){if(P.value.length>rt){A.value=`A ticket can carry at most ${rt} files. This one has ${P.value.length}.`;return}fe.value=!0,A.value="",rs("Creating ticket and sending email...");try{const t=new FormData;t.append("customerName",g.customerName.trim()),t.append("customerEmail",g.customerEmail.trim()),t.append("subject",g.subject.trim()),t.append("bodyText",g.bodyText.trim()),t.append("bodyHtml",g.bodyHtml),g.assignedAgentId&&t.append("assignedAgentId",g.assignedAgentId);for(const i of g.tagIds)t.append("tagIds",i);for(const i of P.value)t.append("attachments",i);const e=await y(`${f}/support/admin/tickets`,{method:"POST",credentials:"include",body:t});Re.value=!1,await lt(e),Vs(e),await S()}catch{ee("Unable to create ticket.")}finally{fe.value=!1}}},dn=async()=>{if(!d.value||!window.confirm(`Delete ticket #${d.value.ticketNumber}? This hides it from support and public views.`))return;const e=d.value.id,i=`ticket:${e}`;we(i,!0),A.value="";try{await y(`${f}/support/admin/tickets/${e}`,{method:"DELETE",credentials:"include"}),d.value=null,J.value=[],te.value=[],await Yt(null),await S()}catch{A.value="Unable to delete ticket."}finally{we(i,!1)}},cn=async()=>{if(!d.value||We.value||!Et.value)return;const t=H.value;if(d.value.status==="merged"&&t){A.value="Public replies are disabled for merged tickets.";return}We.value=!0,A.value="",re.value=null;const e=new Set(d.value.messages.map(i=>i.id));try{const{html:i,usedContentIds:m}=Ln(Fe.value,be.value),C=be.value.filter(T=>m.has(T.contentId)),Z=X.value.length+C.length;if(Z>rt){A.value=`A message can carry at most ${rt} files, including inline images. This reply has ${Z}.`;return}const V=new FormData;V.append("bodyText",K.value.trim()),V.append("public",String(H.value)),i&&V.append("bodyHtml",i);const s=[];for(const T of X.value)V.append("attachments",T),s.push(null);for(const T of C)V.append("attachments",T.file),s.push(T.contentId);C.length&&V.append("attachmentContentIds",JSON.stringify(s));const u=await y(`${f}/support/admin/tickets/${d.value.id}/messages`,{method:"POST",credentials:"include",body:V});d.value=u,ve(u),yt();const h=u.messages.findLast(T=>T.public===t&&T.authorType==="agent"&&!e.has(T.id));if(t){const T=h==null?void 0:h.emailDelivery;re.value=Un({delivery:T,notification:Wt(u.emailNotifications),customerEmail:u.customerEmail,sentAtLabel:ps((T==null?void 0:T.createdAt)||(h==null?void 0:h.createdAt)||new Date().toISOString())})}else j("Internal note added.");as(()=>{var ss,ns;const T=h||u.messages[u.messages.length-1];if(!T)return;const bn=(ss=window.matchMedia)==null?void 0:ss.call(window,"(prefers-reduced-motion: reduce)").matches;
1(ns=document.getElementById(`support-message-${T.id}`))==null||ns.scrollIntoView({block:"end",behavior:bn?"auto":"smooth"})}),await S(),await qe(u.customerEmail)}catch{A.value="Unable to send message.",ee(t?"Unable to send email.":"Unable to add internal note.")}finally{We.value=!1}},pn=async t=>{if(!d.value||!window.confirm("Delete this feed item? This only removes it from the support system."))return;const i=`message:${t.id}`;we(i,!0),A.value="";try{const m=await y(`${f}/support/admin/tickets/${d.value.id}/messages/${t.id}`,{method:"DELETE",credentials:"include"});d.value=m,ve(m),await S(),await qe(m.customerEmail)}catch{A.value="Unable to delete feed item."}finally{we(i,!1)}},mn=async t=>{if(!d.value||!window.confirm(`Remove attachment "${t.originalName}"?`))return;const i=`attachment:${t.supportAttachmentId}`;we(i,!0),A.value="";try{const m=await y(`${f}/support/admin/tickets/${d.value.id}/attachments/${encodeURIComponent(t.supportAttachmentId)}`,{method:"DELETE",credentials:"include"});d.value=m,ve(m)}catch{A.value="Unable to delete attachment."}finally{we(i,!1)}},vn=async()=>{Me.value=await y(`${f}/support/admin/canned-responses`,{credentials:"include"}).catch(()=>[])},gn=async()=>{var t;et.value=await y(`${f}/support/admin/agents`,{credentials:"include",query:{includeInactive:!0}}).catch(()=>[]),Q.value==="mine"&&((t=I.value)!=null&&t.id)&&(p.assignee=I.value.id)},_n=async()=>{xt.value=await y(`${f}/support/admin/tags`,{credentials:"include",query:{includeInactive:!0}}).catch(()=>[])},ts=async()=>{Nt.value||q.value!=="authorized"||(Nt.value=!0,await Promise.all([S(),vn(),gn(),_n()]),await Tt(gt.value))};return oe(q,()=>{ts()},{immediate:!0}),oe(()=>gt.value,t=>{if(!(ct.value||q.value!=="authorized")){if(!t){d.value=null,J.value=[],te.value=[],yt();return}Tt(t)}}),oe(()=>p.assignee,t=>{var e;if(t==="__unassigned__"){Q.value="unassigned";return}if((e=I.value)!=null&&e.id&&t===I.value.id){Q.value="mine";return}t||(Q.value="all")}),oe(()=>de.value,()=>{Le.value&&clearTimeout(Le.value),Le.value=setTimeout(()=>{qs()},350)}),wn(async()=>{await is(),await ts()}),Tn(()=>{Le.value&&clearTimeout(Le.value)}),(t,e)=>{var V;const i=yn,m=Hn,C=In,Z=Cn;return l(),o("main",Bn,[a(q)==="idle"||a(q)==="loading"?(l(),o("div",Fn," Checking access... ")):a(q)!=="authorized"?(l(),o("div",Pn," Support staff access required. ")):(l(),o(b,{key:2},[n("div",Vn,[e[42]||(e[42]=n("div",null,[n("div",{class:"support-admin-page__eyebrow"},"Customer Support"),n("h1",{class:"support-admin-page__title mb-0"},"Support Tickets")],-1)),n("div",qn,[U(i,{class:"btn-small button-blue",to:"/admin/support/agents"},{default:D(()=>[...e[32]||(e[32]=[_(" Agents ",-1)])]),_:1}),U(i,{class:"btn-small button-blue",to:"/admin/support/canned-responses"},{default:D(()=>[...e[33]||(e[33]=[_(" Canned responses ",-1)])]),_:1}),U(i,{class:"btn-small button-blue",to:"/admin/support/email-templates"},{default:D(()=>[...e[34]||(e[34]=[_(" Email templates ",-1)])]),_:1}),U(i,{class:"btn-small button-blue",to:"/admin/support/tags"},{default:D(()=>[...e[35]||(e[35]=[_(" Tags ",-1)])]),_:1}),U(i,{class:"btn-small button-blue",to:"/admin/support/zendesk-tickets"},{default:D(()=>[...e[36]||(e[36]=[_(" Zendesk tickets ",-1)])]),_:1}),U(i,{class:"btn-small button-blue",to:"/admin/support/zendesk-import"},{default:D(()=>[...e[37]||(e[37]=[_(" Zendesk macros ",-1)])]),_:1}),U(i,{class:"btn-small button-blue",to:"/admin/support/system-log"},{default:D(()=>[...e[38]||(e[38]=[_(" System Log ",-1)])]),_:1}),U(i,{class:"btn-small button-blue",to:"/admin/push-migration"},{default:D(()=>[...e[39]||(e[39]=[_(" Push migration ",-1)])]),_:1}),U(i,{class:"btn-small button-blue",to:"/admin/push-delivery-test"},{default:D(()=>[...e[40]||(e[40]=[_(" Push test ",-1)])]),_:1}),n("button",{class:"btn-small button-blue",type:"button",disabled:a(Ze),onClick:Xs}," Sync email ",8,On),U(i,{class:"btn-small button-blue",to:"/admin/support/tickets"},{default:D(()=>[...e[41]||(e[41]=[_(" Table view ",-1)])]),_:1}),n("button",{class:"btn-small button-orange",type:"button",onClick:Ns}," New ticket "),n("button",{class:"btn-small button-blue",type:"button",disabled:a(Ke),onClick:S}," Refresh ",8,jn)])]),n("div",Kn,[n("aside",Zn,[n("section",Wn,[n("div",Qn,[n("div",Gn,[n("button",{class:E(["btn-small",a(Q)==="all"?"button-orange":"button-blue"]),type:"button",onClick:e[0]||(e[0]=s=>Xt("all"))}," All tickets ",2),a(I)?(l(),o("button",{key:0,class:E(["btn-small",a(Q)==="mine"?"button-orange":"button-blue"]),type:"button",onClick:e[1]||(e[1]=s=>Xt("mine"))}," My tickets ",2)):v("",!0),n("button",{class:"support-icon-button support-admin-filters__clear",type:"button","aria-label":"Clear filters",title:"Clear filters",onClick:Js},[...e[43]||(e[43]=[n("span",{"aria-hidden":"true"},"Ã",-1)])])]),n("div",Jn,[n("div",Xn,[(l(!0),o(b,null,k(a(cs),s=>(l(),o("span",{key:s.id,class:"support-tag-chip support-tag-chip--removable",style:ge({"--tag-color":s.color||"#64748b"})},[_(r(s.name)+" ",1),n("button",{class:"support-tag-chip__remove",type:"button","aria-label":`Remove ${s.name}`,onClick:u=>Ms(s.id)}," x ",8,Yn)],4))),128)),N(n("input",{ref_key:"filterSearchInput",ref:St,"onUpdate:modelValue":e[2]||(e[2]=s=>a(p).search=s),class:"support-filter-search__input",type:"search",placeholder:"Search ticket, customer, email, tag",onFocus:e[3]||(e[3]=s=>Ae.value=!0),onBlur:zs,onKeydown:It(Te(Rs,["prevent"]),["enter"])},null,40,ea),[[Y,a(p).search]])]),a(Ae)&&a(Ut).length?(l(),o("div",ta,[(l(!0),o(b,null,k(a(Ut),s=>(l(),o("button",{key:s.id,class:"support-tag-search__result",type:"button",onMousedown:e[4]||(e[4]=Te(()=>{},["prevent"])),onClick:u=>Ds(s.id)},[n("span",{class:"support-tag-chip",style:ge({"--tag-color":s.color||"#64748b"})},r(s.name),5)],40,sa))),128))])):v("",!0)]),n("div",na,[N(n("select",{"onUpdate:modelValue":e[5]||(e[5]=s=>a(p).status=s),class:"form-select",onChange:S},[e[44]||(e[44]=n("option",{value:""},"All active statuses",-1)),(l(),o(b,null,k(Ct,s=>n("option",{key:s,value:s},r(L(s)),9,aa)),64))],544),[[W,a(p).status]]),N(n("select",{"onUpdate:modelValue":e[6]||(e[6]=s=>a(p).priority=s),class:"form-select",onChange:S},[e[45]||(e[45]=n("option",{value:""},"All priorities",-1)),(l(),o(b,null,k(At,s=>n("option",{key:s,value:s},r(L(s)),9,oa)),64))],544),[[W,a(p).priority]])]),n("div",la,[n("label",ia,[e[46]||(e[46]=_(" Created from ",-1)),N(n("input",{"onUpdate:modelValue":e[7]||
1(e[7]=s=>a(p).createdFrom=s),class:"form-control",type:"date",onChange:S},null,544),[[Y,a(p).createdFrom]])]),n("label",ra,[e[47]||(e[47]=_(" Created to ",-1)),N(n("input",{"onUpdate:modelValue":e[8]||(e[8]=s=>a(p).createdTo=s),class:"form-control",type:"date",onChange:S},null,544),[[Y,a(p).createdTo]])])]),N(n("select",{"onUpdate:modelValue":e[9]||(e[9]=s=>a(p).assignee=s),class:"form-select",disabled:a(Q)==="mine",onChange:S},[e[48]||(e[48]=n("option",{value:""},"All agents",-1)),e[49]||(e[49]=n("option",{value:"__unassigned__"},"Unassigned only",-1)),a(I)?(l(),o("option",{key:0,value:a(I).id}," Me ("+r(a(I).name)+") ",9,da)):v("",!0),(l(!0),o(b,null,k(a(pt),s=>(l(),o("option",{key:s.id,value:s.id},r(s.name)+r(s.active?"":" (inactive)"),9,ca))),128))],40,ua),[[W,a(p).assignee]]),N(n("select",{"onUpdate:modelValue":e[10]||(e[10]=s=>a(p).sortBy=s),class:"form-select","aria-label":"Sort tickets by",onChange:S},[...e[50]||(e[50]=[n("option",{value:""},"Sort by",-1),n("option",{value:"last_activity"},"Last activity",-1),n("option",{value:"created_at"},"Date started",-1),n("option",{value:"waiting_since"},"Waiting since",-1)])],544),[[W,a(p).sortBy]])]),a(Se)?(l(),o("div",pa,r(a(Se)),1)):v("",!0),a(Ke)?(l(),o("div",ma,"Loading tickets...")):a(_e)?(l(),o("div",va,r(a(_e)),1)):a(je).length?(l(),o("div",_a,[(l(!0),o(b,null,k(a(je),s=>{var u,h;return l(),o("button",{key:s.id,type:"button",class:E(["support-ticket-list__item",{"support-ticket-list__item--active":((u=a(d))==null?void 0:u.id)===s.id,"support-ticket-list__item--mine":Gs(s)}]),onClick:T=>wt(s.id)},[n("span",ya,[n("strong",null,"#"+r(s.ticketNumber),1),n("span",{class:E(["badge",ht(s.status)])},r(L(s.status)),3)]),n("span",ka,r(s.subject),1),(h=s.tags)!=null&&h.length?(l(),o("span",fa,[(l(!0),o(b,null,k(s.tags,T=>(l(),o("span",{key:T.id,class:"support-tag-chip",style:ge({"--tag-color":T.color||"#64748b"})},r(T.name),5))),128))])):v("",!0),n("span",ha,r(s.customerName)+" · "+r(s.customerEmail),1),n("span",wa,r(vs(s)),1)],10,ba)}),128))])):(l(),o("div",ga,"No tickets found."))])]),n("section",Ta,[a(d)?(l(),o("div",Ia,[n("div",Ca,[n("div",null,[n("div",Aa,"#"+r(a(d).ticketNumber),1),n("h2",Sa,r(a(d).subject),1),n("div",xa,r(a(d).customerName)+" · "+r(a(d).customerEmail),1)]),n("span",{class:E(["badge",ht(a(d).status)])},r(L(a(d).status)),3)]),n("div",Na,[a(re)?(l(),o("div",{key:0,class:E(["alert support-reply-email-banner",`alert-${a(re).tone}`])},[n("span",Ea,r(a(re).text),1),n("button",{class:"support-reply-email-banner__dismiss",type:"button","aria-label":"Dismiss email status",onClick:e[11]||(e[11]=s=>re.value=null)}," à ")],2)):v("",!0),a(A)?(l(),o("div",Ua,r(a(A)),1)):v("",!0),a(z)?(l(),o("div",za,[n("div",null,[e[51]||(e[51]=_(" This ticket was merged into ",-1)),n("strong",null,"Ticket #"+r(a(d).mergedIntoTicketNumber||a(d).mergedIntoTicketId),1),e[52]||(e[52]=_(". Public replies are disabled here. ",-1))]),a(d).mergedIntoTicketNumber?(l(),o("button",{key:0,class:"btn-small button-blue",type:"button",onClick:e[12]||(e[12]=s=>Tt(a(d).mergedIntoTicketNumber||""))}," Open primary ticket ")):v("",!0)])):v("",!0)]),n("div",Da,[n("section",Ma,[(l(!0),o(b,null,k(a(d).messages,s=>(l(),o("article",{id:`support-message-${s.id}`,key:s.id,class:E(["support-ticket-message",{"support-ticket-message--internal":!s.public,"support-ticket-message--system":s.authorType==="system"}])},[n("div",Ha,[n("strong",null,r(s.authorName),1),n("span",null,r(s.public?"Public":"Internal note"),1),U(m,{message:s},null,8,["message"]),n("time",{datetime:s.createdAt},r(O(s.createdAt)),9,La),n("button",{class:"support-subtle-danger-button support-ticket-message__delete",type:"button",disabled:kt(`message:${s.id}`),onClick:u=>pn(s)}," Delete ",8,Ba)]),s.bodyHtml?(l(),o("div",{key:0,class:"support-ticket-message__body support-ticket-message__body--html",onClick:Zt,innerHTML:_s(s)},null,8,Fa)):(l(),o("p",Pa,r(s.bodyText),1)),Ht(s.id).length?(l(),o("div",Va,[(l(!0),o(b,null,k(Ht(s.id),u=>(l(),o("span",{key:u.id,class:E(["support-ticket-message__attachment-item",{"support-ticket-message__attachment-item--preview":Pe(u)}])},[n("a",{class:E(["support-attachment",{"support-attachment--preview":Pe(u)}]),href:Ve(u.supportAttachmentId),target:"_blank",rel:"noopener noreferrer"},[Pe(u)?(l(),o(b,{key:0},[n("img",{ref_for:!0,ref:h=>Ft(h,u.id),class:"support-attachment__thumb",src:Ve(u.supportAttachmentId),alt:"",loading:"lazy",decoding:"async",onError:h=>_t(u.id)},null,40,Oa),n("span",ja,r(u.originalName),1),n("span",Ka,r(me(u.size)),1)],64)):(l(),o(b,{key:1},[_(r(u.originalName)+" ("+r(me(u.size))+") ",1)],64))],10,qa),n("button",{class:"support-attachment-remove-button",type:"button",title:"Remove attachment","aria-label":"Remove attachment",disabled:kt(`attachment:${u.supportAttachmentId}`),onClick:h=>mn(u)}," x ",8,Za)],2))),128))])):v("",!0)],10,Ra))),128))]),(V=a(d).mergedTicketHistories)!=null&&V.length?(l(),o("section",Wa,[(l(!0),o(b,null,k(a(d).mergedTicketHistories,s=>(l(),o("article",{key:s.ticket.id,class:"support-merged-history__section"},[n("div",Qa,[n("div",null,[n("strong",null,"Merged history from Ticket #"+r(s.ticket.ticketNumber),1),n("div",Ga,r(s.ticket.subject)+" · merged "+r(O(s.mergedAt)),1)]),n("button",{class:"btn-small button-blue",type:"button",onClick:u=>wt(s.ticket.id)}," Open audit ticket ",8,Ja)]),n("div",Xa,[(l(!0),o(b,null,k(s.messages,u=>(l(),o("article",{key:u.id,class:E(["support-ticket-message support-ticket-message--merged",{"support-ticket-message--internal":!u.public,"support-ticket-message--system":u.authorType==="system"}])},[n("div",Ya,[n("strong",null,r(u.authorName),1),n("span",null,r(u.public?"Public":"Internal note"),1),U(m,{message:u},null,8,["message"]),n("time",{datetime:u.createdAt},r(O(u.createdAt)),9,eo)]),u.bodyHtml?(l(),o("div",{key:0,class:"support-ticket-message__body support-ticket-message__body--html",onClick:Zt,innerHTML:bs(s,u)},null,8,to)):(l(),o("p",so,r(u.bodyText),1)),Lt(s,u.id).length?(l(),o("div",no,[(l(!0),o(b,null,k(Lt(s,u.id),h=>(l(),o("a",{key:h.id,class:E(["support-attachment",{"support-attachment--preview":Pe(h)}]),href:Ve(h.supportAttachmentId),target:"_blank",rel:"noopener noreferrer"},[Pe(h)?(l(),o(b,{key:0},[n("img",{ref_for:!0,ref:T=>Ft(T,h.id),class:"support-attachment__thumb",src:Ve(h.supportAttachmentId),alt:"",loading:"lazy",decoding:"async",onError:T=>_t(h.id)},null,40,oo),n("span",lo,r(h.originalName),1),n("span",io,r(me(h.size)),1)],64)):(l(),o(b,{key:1},[_(r(h.originalName)+" ("+r(me(h.size))+") ",1)],64))],10,ao))),128))])):v("",!0)],2))),128))])]))),128))])):v("",!0)]),n("section",{class:E(["support-reply-box support-reply-box--sticky",{"support-reply-box--internal":!a(H)}])},[a(I)?(l(),o("div",ro,[e[53]||(e[53]=_(" Replying as ",-1)),n("strong",null,r(a(I).name),1),n("span",uo,"· "+r(a(I).email),1)])):v("",!0),U(C,{modelValue:a(Fe),"onUpdate:modelValue":e[14]||(e[14]=s=>$e(Fe)?Fe.value=s:null),label:a(H)?"Public reply":"Internal note","max-length":"50000","allow-inline-images":"","onUpdate:text":e[15]||(e[15]=s=>K.value=s),onInlineImages:$s},{"toolbar-actions":D(()=>[N(n("select",{"onUpdate:modelValue":e[13]||(e[13]=s=>$e(De)?De.value=s:null),class:"form-select support-reply-box__canned"},[e[54]||(e[54]=n("option",{value:""},"Insert canned response",-1)),(l(!0),o(b,null,k(a(Me),s=>(l(),o("option",{key:s.id,value:s.id},r(s.title),9,co))),128))],512),[[W,a(De)]]),n("label",po,[n("input",{type:"checkbox",checked:!a(H),disabled:a(z),onChange:ws},null,40,mo),e[55]||(e[55]=_(" Internal note ",-1))]),n("button",{class:"btn-small button-orange support-reply-box__send",type:"button",disabled:a(We)||!a(Et),onClick:cn}," Send ",8,vo)]),_:1},8,["modelValue","label"]),n("div",go,[n("label",_o,[e[56]||(e[56]=_(" Attach files ",-1)),n("input",{ref_key:"replyAttachmentInput",ref:Ue,class:"form-control",type:"file",multiple:"",onChange:Ts},null,544)]),a(X).length?(l(),o("div",bo,[(l(!0),o(b,null,k(a(X),s=>(l(),o("span",{key:`${s.name}-${s.size}-${s.lastModified}`,class:"support-draft-attachment"},[_(r(s.name)+" ("+r(me(s.size))+") ",1),n("button",{class:"support-attachment-remove-button",type:"button",title:"Remove attachment","aria-label":`Remove ${s.name}`,onClick:u=>Is(s)}," x ",8,yo)]))),128))])):v("",!0)])],2)])):(l(),o("div",$a," Select a ticket. "))]),n("aside",ko,[a(d)?(l(),o("div",ho,[n("section",wo,[n("div",To,[e[57]||(e[57]=n("h3",{class:"support-side-section__title"},"Ticket",-1)),n("button",{class:"support-subtle-danger-button",type:"button",disabled:kt(`ticket:${a(d).id}`),onClick:dn}," Delete ticket ",8,$o)]),n("div",Io,[n("div",Co,[n("label",Ao,[e[58]||(e[58]=_(" Status ",-1)),N(n("select",{"onUpdate:modelValue":e[16]||(e[16]=s=>a(x).status=s),class:"form-select",disabled:a(ie)||a(z),onChange:e[17]||(e[17]=s=>it("status"))},[a(d).status==="merged"?(l(),o("option",xo," Merged ")):v("",!0),(l(!0),o(b,null,k(a(us),s=>(l(),o("option",{key:s,value:s},r(L(s)),9,No))),128))],40,So),[[W,a(x).status]])]),n("label",Eo,[e[59]||(e[59]=_(" Priority ",-1)),N(n("select",{"onUpdate:modelValue":e[18]||(e[18]=s=>a(x).priority=s),class:"form-select",disabled:a(ie)||a(z),onChange:e[19]||(e[19]=s=>it("priority"))},[(l(),o(b,null,k(At,s=>n("option",{key:s,value:s},r(L(s)),9,zo)),64))],40,Uo),[[W,a(x).priority]])])]),n("div",Do,[n("span",Mo,[e[60]||(e[60]=_(" Assigned agent ",-1)),a(I)&&!a(z)?(l(),o("button",{key:0,class:"support-inline-action",type:"button",disabled:a(ie)||a(x).assignedAgentId===a(I).id,onClick:Qs}," assign to me ",8,Ro)):v("",!0)]),N(n("select",{"onUpdate:modelValue":e[20]||(e[20]=s=>a(x).assignedAgentId=s),class:"form-select",disabled:a(ie)||a(z),onChange:rn},[e[61]||(e[61]=n("option",{value:""},"Unassigned",-1)),a(I)?(l(),o("option",{key:0,value:a(I).id}," Me ("+r(a(I).name)+") ",9,Lo)):v("",!0),(l(!0),o(b,null,k(a(pt),s=>(l(),o("option",{key:s.id,value:s.id},r(s.name)+r(s.active?"":" (inactive)"),9,Bo))),128))],40,Ho),[[W,a(x).assignedAgentId]])]),n("div",Fo,[e[62]||(e[62]=n("div",{class:"form-label mb-1"},"Add Tags",-1)),a(zt).length?(l(),o("div",Po,[(l(!0),o(b,null,k(a(zt),s=>(l(),o("span",{key:s.id,class:"support-tag-chip support-tag-chip--removable",style:ge({"--tag-color":s.color||"#64748b"})},[_(r(s.name)+" ",1),n("button",{class:"support-tag-chip__remove",type:"button",disabled:a(ne)||a(z),"aria-label":`Remove ${s.name}`,onClick:u=>Hs(s.id)}
1," x ",8,Vo)],4))),128))])):v("",!0),n("div",qo,[N(n("input",{"onUpdate:modelValue":e[21]||(e[21]=s=>$e(ke)?ke.value=s:null),class:"form-control",type:"search",placeholder:"Search tags",disabled:a(ne)||a(z)||!a(ae).length,onKeydown:It(Te(Ls,["prevent"]),["enter"])},null,40,Oo),[[Y,a(ke)]]),a(ke).trim()&&a(mt).length?(l(),o("div",jo,[(l(!0),o(b,null,k(a(mt),s=>(l(),o("button",{key:s.id,class:"support-tag-search__result",type:"button",disabled:a(ne),onClick:u=>jt(s.id)},[n("span",{class:"support-tag-chip",style:ge({"--tag-color":s.color||"#64748b"})},r(s.name),5)],8,Ko))),128))])):v("",!0)]),a(ae).length?v("",!0):(l(),o("div",Zo,"No tags defined."))])])]),n("section",Wo,[e[63]||(e[63]=n("div",{class:"support-side-section__header"},[n("h3",{class:"support-side-section__title"},"Knowledge base")],-1)),n("div",Qo,[N(n("input",{"onUpdate:modelValue":e[22]||(e[22]=s=>$e(de)?de.value=s:null),class:"form-control",type:"search",placeholder:"Search articles"},null,512),[[Y,a(de)]]),a(tt)?(l(),o("div",Go,"Searching articles...")):a(st)?(l(),o("div",Jo,r(a(st)),1)):a(de).trim().length>0&&a(de).trim().length<2?(l(),o("div",Xo," Enter at least 2 characters. ")):a(dt)&&!a(He).length?(l(),o("div",Yo," No matching articles found. ")):(l(),o("div",el,[(l(!0),o(b,null,k(a(He),s=>(l(),o("article",{key:s.slug,class:"support-kb-result"},[n("div",tl,r(s.title),1),s.description?(l(),o("p",sl,r(s.description),1)):v("",!0),n("a",{class:"support-kb-result__link",href:ot(s),target:"_blank",rel:"noopener noreferrer"}," Open article ",8,nl),n("div",al,[n("button",{class:"btn-small button-blue",type:"button",onClick:u=>js(s)}," Copy link ",8,ol),n("button",{class:"btn-small button-blue",type:"button",disabled:a(z),onClick:u=>Ks(s)}," Insert link ",8,ll),n("button",{class:"btn-small button-blue",type:"button",disabled:a(z),onClick:u=>Zs(s)}," Insert summary ",8,il)])]))),128))]))])]),n("section",rl,[e[67]||(e[67]=n("div",{class:"support-side-section__header"},[n("h3",{class:"support-side-section__title"},"Interaction history")],-1)),a(G).size?(l(),o("div",ul,[n("div",dl,r(a(G).size)+" selected for merge into #"+r(a(d).ticketNumber),1),n("button",{class:"btn-small button-orange",type:"button",disabled:a(Qe),onClick:on}," Merge selected ",8,cl)])):v("",!0),a(xe)||a(Ne)?(l(),o("div",pl," Loading history... ")):v("",!0),a(Ge)?(l(),o("div",ml,r(a(Ge)),1)):v("",!0),a(Je)?(l(),o("div",vl,r(a(Je)),1)):v("",!0),!a(xe)&&!a(Ne)&&!a(J).length&&!a(te).length?(l(),o("div",gl," No other tickets found. ")):v("",!0),a(J).length||a(te).length?(l(),o("div",_l,[(l(!0),o(b,null,k(a(J),s=>(l(),o("article",{key:s.id,class:E(["support-interaction-history__item",{"support-interaction-history__item--active":s.id===a(d).id}])},[n("span",bl,[n("strong",null,"#"+r(s.ticketNumber),1),s.id===a(d).id?(l(),o("span",yl," Current ")):s.status==="merged"?(l(),o("span",kl," Merged ")):v("",!0)]),n("span",fl,r(s.subject),1),n("span",hl,[n("span",{class:E(["badge",ht(s.status)])},r(L(s.status)),3),n("span",null,r(L(s.priority)),1)]),n("span",wl,r(O(s.updatedAt)),1),n("div",Tl,[sn(s)?(l(),o("label",$l,[n("input",{type:"checkbox",checked:nn(s.id),onChange:u=>an(s.id)},null,40,Il),e[64]||(e[64]=_(" Merge ",-1))])):v("",!0),n("button",{class:"btn-small button-blue",type:"button",onClick:u=>wt(s.id)}," Open ",8,Cl)]),s.mergedIntoTicketNumber?(l(),o("span",Al," Merged into #"+r(s.mergedIntoTicketNumber),1)):v("",!0)],2))),128)),(l(!0),o(b,null,k(a(te),s=>{var u;return l(),o("article",{key:`zendesk:${s.zendeskTicketId}`,class:"support-interaction-history__item support-interaction-history__item--zendesk"},[n("span",Sl,[n("strong",null,"Zendesk #"+r(s.zendeskTicketId),1),e[65]||(e[65]=n("span",{class:"badge text-bg-info"},"Zendesk",-1))]),n("span",xl,r(s.subject),1),n("span",Nl,[n("span",{class:E(["badge",Qt(s.status)])},r(L(s.status)),3),n("span",null,r(((u=s.assignee)==null?void 0:u.name)||"Unassigned"),1)]),n("span",El,r(O(s.updatedAt||"")),1),n("div",Ul,[e[66]||(e[66]=n("span",{class:"text-muted"},"Read-only",-1)),n("button",{class:"btn-small button-blue",type:"button",onClick:h=>tn(s.zendeskTicketId)}," View ",8,zl)])])}),128))])):v("",!0)])])):(l(),o("div",fo," Ticket properties. "))])]),U(Z,{"model-value":a(Re),title:"New Ticket","max-width":"960px","overlay-class":"support-modal","dialog-class":"support-modal__panel","header-class":"support-modal__header","body-class":"support-modal__body","
1show-close-button":!1,"close-on-backdrop":!a(fe),"onUpdate:modelValue":Es},{header:D(({titleId:s,close:u})=>[n("div",null,[e[68]||(e[68]=n("div",{class:"support-admin-page__eyebrow"},"Customer Support",-1)),n("h2",{id:s,class:"h4 mb-0"},"New Ticket",8,Dl)]),n("button",{class:"btn-small button-blue",type:"button",onClick:u},"Close",8,Ml)]),default:D(()=>[n("div",Rl,[n("label",Hl,[e[69]||(e[69]=_(" Customer name ",-1)),N(n("input",{"onUpdate:modelValue":e[23]||(e[23]=s=>a(g).customerName=s),class:"form-control",maxlength:"100"},null,512),[[Y,a(g).customerName]])]),n("label",Ll,[e[70]||(e[70]=_(" Customer email ",-1)),N(n("input",{"onUpdate:modelValue":e[24]||(e[24]=s=>a(g).customerEmail=s),class:"form-control",type:"email",maxlength:"180"},null,512),[[Y,a(g).customerEmail]])]),n("label",Bl,[e[71]||(e[71]=_(" Subject ",-1)),N(n("input",{"onUpdate:modelValue":e[25]||(e[25]=s=>a(g).subject=s),class:"form-control",maxlength:"200"},null,512),[[Y,a(g).subject]])]),n("label",Fl,[e[73]||(e[73]=_(" Assigned agent ",-1)),N(n("select",{"onUpdate:modelValue":e[26]||(e[26]=s=>a(g).assignedAgentId=s),class:"form-select"},[e[72]||(e[72]=n("option",{value:""},"Me / current agent",-1)),a(I)?(l(),o("option",{key:0,value:a(I).id}," Me ("+r(a(I).name)+") ",9,Pl)):v("",!0),(l(!0),o(b,null,k(a(pt),s=>(l(),o("option",{key:s.id,value:s.id},r(s.name)+r(s.active?"":" (inactive)"),9,Vl))),128))],512),[[W,a(g).assignedAgentId]])]),n("div",ql,[e[74]||(e[74]=n("div",{class:"form-label mb-1"},"Tags",-1)),a(Dt).length?(l(),o("div",Ol,[(l(!0),o(b,null,k(a(Dt),s=>(l(),o("span",{key:s.id,class:"support-tag-chip support-tag-chip--removable",style:ge({"--tag-color":s.color||"#64748b"})},[_(r(s.name)+" ",1),n("button",{class:"support-tag-chip__remove",type:"button","aria-label":`Remove ${s.name}`,onClick:u=>Bs(s.id)}," x ",8,jl)],4))),128))])):v("",!0),n("div",Kl,[N(n("input",{"onUpdate:modelValue":e[27]||(e[27]=s=>$e(ue)?ue.value=s:null),class:"form-control",type:"search",placeholder:"Search tags",disabled:!a(ae).length,onKeydown:It(Te(Fs,["prevent"]),["enter"])},null,40,Zl),[[Y,a(ue)]]),a(ue).trim()&&a(vt).length?(l(),o("div",Wl,[(l(!0),o(b,null,k(a(vt),s=>(l(),o("button",{key:s.id,class:"support-tag-search__result",type:"button",onClick:u=>Kt(s.id)},[n("span",{class:"support-tag-chip",style:ge({"--tag-color":s.color||"#64748b"})},r(s.name),5)],8,Ql))),128))])):v("",!0)]),a(ae).length?v("",!0):(l(),o("span",Gl,"No tags defined."))]),n("div",Jl,[n("div",Xl,[e[76]||(e[76]=n("label",{class:"form-label mb-0"},"Message",-1)),N(n("select",{"onUpdate:modelValue":e[28]||(e[28]=s=>$e(ye)?ye.value=s:null),class:"form-select support-reply-box__canned"},[e[75]||(e[75]=n("option",{value:""},"Insert canned response",-1)),(l(!0),o(b,null,k(a(Me),s=>(l(),o("option",{key:s.id,value:s.id},r(s.title),9,Yl))),128))],512),[[W,a(ye)]])]),U(C,{modelValue:a(g).bodyHtml,"onUpdate:modelValue":e[29]||(e[29]=s=>a(g).bodyHtml=s),label:"New ticket message","onUpdate:text":e[30]||(e[30]=s=>a(g).bodyText=s),onFiles:Ot},null,8,["modelValue"])]),n("div",{class:"support-new-ticket-form__wide support-reply-box__attachments support-attachment-dropzone",onDrop:Te(As,["prevent"]),onDragover:e[31]||(e[31]=Te(()=>{},["prevent"]))},[n("label",ei,[e[77]||(e[77]=_(" Attach files or drop files here ",-1)),n("input",{ref_key:"newTicketAttachmentInput",ref:ze,class:"form-control",type:"file",multiple:"",onChange:Cs},null,544)]),a(P).length?(l(),o("div",ti,[(l(!0),o(b,null,k(a(P),s=>(l(),o("span",{key:`${s.name}-${s.size}-${s.lastModified}`,class:"support-draft-attachment"},[_(r(s.name)+" ("+r(me(s.size))+") ",1),n("button",{class:"support-attachment-remove-button",type:"button",title:"Remove attachment","aria-label":`Remove ${s.name}`,onClick:u=>Ss(s)}," x ",8,si)]))),128))])):v("",!0)],32),n("div",ni,[n("button",{class:"btn-small button-orange",type:"button",disabled:a(fe)||!a(g).customerName.trim()||!a(g).customerEmail.trim()||!a(g).subject.trim()||!a(g).bodyText.trim(),onClick:un}," Create and send ",8,ai)])])]),_:1},8,["model-value","close-on-backdrop"]),U(Z,{"model-value":a(Xe),title:a($)?`#${a($).zendeskTicketId}`:"Ticket","max-width":"960px","overlay-class":"support-zendesk-dialog","dialog-class":"support-zendesk-dialog__panel","header-class":"support-zendesk-dialog__header","body-class":"support-zendesk-dialog__body","
1show-close-button":!1,"onUpdate:modelValue":en},{header:D(({titleId:s,close:u})=>[n("div",null,[e[78]||(e[78]=n("div",{class:"support-zendesk-dialog__eyebrow"},"Zendesk",-1)),n("h2",{id:s,class:"h4 mb-0"},r(a($)?`#${a($).zendeskTicketId}`:"Ticket"),9,oi)]),n("button",{class:"btn-small button-blue",type:"button",onClick:u},"Close",8,li)]),default:D(()=>[a(Ye)?(l(),o("div",ii," Loading Zendesk ticket... ")):a(Ee)?(l(),o("div",ri,r(a(Ee)),1)):a($)?(l(),o("div",ui,[n("div",di,[n("div",null,[n("h3",ci,r(a($).subject),1),n("div",pi,[_(r(a($).customer.name)+" ",1),a($).customer.email?(l(),o("span",mi," · "+r(a($).customer.email),1)):v("",!0)])]),n("span",{class:E(["badge",Qt(a($).status)])},r(L(a($).status)),3)]),n("dl",vi,[n("div",null,[e[79]||(e[79]=n("dt",null,"Requester",-1)),n("dd",null,r(Gt(a($).requester)),1)]),n("div",null,[e[80]||(e[80]=n("dt",null,"Assignee",-1)),n("dd",null,r(a($).assignee?Gt(a($).assignee):"Unassigned"),1)]),n("div",null,[e[81]||(e[81]=n("dt",null,"Channel",-1)),n("dd",null,r(a($).channel||"Unknown"),1)]),n("div",null,[e[82]||(e[82]=n("dt",null,"Priority",-1)),n("dd",null,r(a($).priority?L(a($).priority):"None"),1)]),n("div",null,[e[83]||(e[83]=n("dt",null,"Created",-1)),n("dd",null,r(O(a($).createdAt||"")),1)]),n("div",null,[e[84]||(e[84]=n("dt",null,"Updated",-1)),n("dd",null,r(O(a($).updatedAt||"")),1)])]),a($).tags.length?(l(),o("div",gi,[(l(!0),o(b,null,k(a($).tags,s=>(l(),o("span",{key:s,class:"badge text-bg-light"},r(s),1))),128))])):v("",!0),n("div",_i,[(l(!0),o(b,null,k(a($).comments,s=>(l(),o("article",{key:s.zendeskCommentId,class:E(["support-zendesk-comment",{"support-zendesk-comment--internal":!s.public,"support-zendesk-comment--customer":s.authorType==="customer"}])},[n("div",bi,[n("div",null,[n("strong",null,r(s.authorName),1),s.authorEmail?(l(),o("span",yi," · "+r(s.authorEmail),1)):v("",!0)]),n("div",ki,[n("span",{class:E(["badge",s.public?"text-bg-primary":"text-bg-warning"])},r(s.public?"Public":"Internal note"),3),n("span",fi,r(L(s.authorType)),1)])]),n("div",hi,r(O(s.createdAt||""))+r(s.source?` · ${s.source}`:""),1),s.bodyHtml?(l(),o("div",{key:0,class:"support-zendesk-comment__body",innerHTML:s.bodyHtml},null,8,wi)):(l(),o("pre",Ti,r(s.bodyText),1)),s.attachments.length?(l(),o("div",$i,[(l(!0),o(b,null,k(s.attachments,u=>(l(),o("a",{key:`${s.zendeskCommentId}:${u.zendeskAttachmentId}:${u.fileName}`,href:u.url||void 0,class:"support-zendesk-comment__attachment",target:"_blank",rel:"noopener noreferrer"},[_(r(u.fileName)+" ",1),u.size?(l(),o("span",Ci," · "+r(me(u.size)),1)):v("",!0)],8,Ii))),128))])):v("",!0)],2))),128))])])):v("",!0)]),_:1},8,["model-value","title"])],64))])}}}),Ri=ls(Ai,[["__scopeId","data-v-28c4938a"]]);export{Ri as default};
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.