@lightworkai.official/debug-capture-vue 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -0
- package/dist/components/BugIcon.d.ts +3 -0
- package/dist/components/DebugCaptureInit.vue.d.ts +13 -0
- package/dist/components/ImageAnnotatorDialog.vue.d.ts +19 -0
- package/dist/components/MyTicketsPanel.vue.d.ts +17 -0
- package/dist/components/ReopenPanel.vue.d.ts +12 -0
- package/dist/components/ReportProblemButton.vue.d.ts +17 -0
- package/dist/components/RichReplyEditor.vue.d.ts +59 -0
- package/dist/components/StatusHero.vue.d.ts +10 -0
- package/dist/components/StatusPill.vue.d.ts +16 -0
- package/dist/components/TicketBody.vue.d.ts +6 -0
- package/dist/components/TicketConversation.vue.d.ts +22 -0
- package/dist/components/TicketDetail.vue.d.ts +28 -0
- package/dist/components/TicketScreenshots.vue.d.ts +8 -0
- package/dist/components/TicketTable.vue.d.ts +25 -0
- package/dist/components/TicketTimeline.vue.d.ts +11 -0
- package/dist/components/ToolbarButton.vue.d.ts +21 -0
- package/dist/components/icons.d.ts +38 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.mjs +2996 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +64 -0
- package/src/components/BugIcon.ts +23 -0
- package/src/components/DebugCaptureInit.vue +41 -0
- package/src/components/ImageAnnotatorDialog.vue +160 -0
- package/src/components/MyTicketsPanel.vue +312 -0
- package/src/components/README.md +12 -0
- package/src/components/ReopenPanel.vue +47 -0
- package/src/components/ReportProblemButton.vue +28 -0
- package/src/components/RichReplyEditor.vue +321 -0
- package/src/components/StatusHero.vue +85 -0
- package/src/components/StatusPill.vue +14 -0
- package/src/components/TicketBody.vue +50 -0
- package/src/components/TicketConversation.vue +227 -0
- package/src/components/TicketDetail.vue +130 -0
- package/src/components/TicketScreenshots.vue +47 -0
- package/src/components/TicketTable.vue +142 -0
- package/src/components/TicketTimeline.vue +86 -0
- package/src/components/ToolbarButton.vue +33 -0
- package/src/components/icons.ts +90 -0
- package/src/index.ts +34 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../debug-capture/dist/index.mjs","../src/components/DebugCaptureInit.vue","../src/components/BugIcon.ts","../src/components/ReportProblemButton.vue","../src/components/StatusPill.vue","../src/components/icons.ts","../src/components/TicketTable.vue","../src/components/TicketBody.vue","../src/components/StatusHero.vue","../src/components/ReopenPanel.vue","../src/components/TicketTimeline.vue","../src/components/ToolbarButton.vue","../src/components/ImageAnnotatorDialog.vue","../src/components/RichReplyEditor.vue","../src/components/TicketConversation.vue","../src/components/TicketScreenshots.vue","../src/components/TicketDetail.vue","../src/components/MyTicketsPanel.vue"],"sourcesContent":["var M2={maxRequests:60,maxConsoleEntries:120,maxActions:80,maxBodyChars:20000},L=null;function C2($){L=$}function B(){if(!L)throw Error(\"[debug-capture] configureDebugCapture() has not been called\");return L}function F0(){return L!==null}function x(){let $=B().app;return{name:$.name,version:$.version??\"0.0.0\",environment:$.environment??U2()}}function U2(){if(typeof window>\"u\")return\"unknown\";let $=window.location.hostname;if($===\"localhost\"||$===\"127.0.0.1\"||$.endsWith(\".local\"))return\"development\";return\"production\"}function E($){let j=L?.capture?.[$];return typeof j===\"number\"?j:M2[$]}function $1($){let j=L?.module;if(!j)return null;try{return j($)??null}catch{return null}}function $0(){let $=L?.redact;return{headers:$?.headers??[],queryKeys:($?.queryKeys??[]).map((j)=>j.toLowerCase()),bodyKeys:($?.bodyKeys??[]).map((j)=>j.toLowerCase())}}function j1(){return L?.capture?.overlaySelectors??[]}function J1($){if(typeof window>\"u\")return!1;let j;try{j=new URL($,window.location.href)}catch{return!1}if(P2(j))return!1;if(j.origin===window.location.origin)return!0;return(L?.capture?.bodyOrigins??[]).some((J)=>{try{return new URL(J).origin===j.origin}catch{return!1}})}function P2($){if(!L?.host)return!1;try{if(new URL(L.host).origin!==$.origin)return!1}catch{return!1}return $.pathname.startsWith(\"/ingest/\")}var v=\"‹redacted›\",w2=/^(authorization|proxy-authorization|cookie|set-cookie|x-[a-z-]*token|x-csrf[a-z-]*|x-xsrf[a-z-]*)$/i,I2=new Set([\"access_token\",\"token\",\"id_token\",\"refresh_token\",\"code\",\"secret\",\"client_secret\",\"password\",\"apikey\",\"api_key\",\"signature\",\"x-amz-signature\",\"x-amz-credential\"]),D2=/(password|passwd|token|secret|authorization|refresh|client_secret|otp|pin)/i,B2=/[\\w.+-]+@[\\w-]+\\.[\\w.-]+/g,N2=/\\d(?:[\\d\\s-]{7,})\\d/g;function g($){return $.replace(B2,v).replace(N2,v)}function q2($){if(w2.test($))return!0;return $0().headers.some((J)=>J.toLowerCase()===$.toLowerCase())}function m($){let j={};for(let[J,Q]of Object.entries($))j[J]=q2(J)?v:Q;return j}function y($){try{let j=/^https?:\\/\\//i.test($),J=new URL($,j?void 0:\"http://local.invalid\"),Q=!1;if(J.searchParams.forEach((Z,z)=>{if(I2.has(z.toLowerCase())||$0().queryKeys.includes(z.toLowerCase()))J.searchParams.set(z,v),Q=!0}),!Q)return $;return j?J.toString():`${J.pathname}${J.search}`}catch{return $}}function H0($,j){if(j>6||$===null||typeof $!==\"object\")return $;if(Array.isArray($))return $.map((Q)=>H0(Q,j+1));let J={};for(let[Q,Z]of Object.entries($)){let z=D2.test(Q)||$0().bodyKeys.some((V)=>Q.toLowerCase().includes(V));J[Q]=z?v:H0(Z,j+1)}return J}function b($,j){if($==null)return null;let J=$,Q=$.trim();if(Q.startsWith(\"{\")||Q.startsWith(\"[\"))try{let Z=JSON.parse(Q);J=JSON.stringify(H0(Z,0))}catch{}if(J.length>j)return`${J.slice(0,j)}… [truncated ${J.length-j} chars]`;return J}var M0=120,C0=40,d=($,j)=>$.length>j?`${$.slice(0,j)}…`:$,U0=($)=>{try{return decodeURIComponent($)}catch{return $}},u=[],Q1=0,Z1=!1;function n($,j,J,Q){let Z=d(j,M0),z=u[u.length-1];if($===\"navigate\"&&z?.kind===\"click\"){let Y=Z.replace(/^ไปที่\\s*/,\"\");if(z.detail.includes(`→ ${Y}`))return z.at=new Date().toISOString(),z;let F=Y.split(/[?#]/)[0]??Y,C=z.source?U0(z.source.replace(/^→\\s*/,\"\")).split(/[?#]/)[0]:null;if(C&&(F===C||F.startsWith(C)))return z.detail=d(`${z.detail} → ${Y}`,M0),z.source=void 0,z.at=new Date().toISOString(),z}if(z&&z.kind===$&&z.detail===Z){if(z.at=new Date().toISOString(),$!==\"navigate\")z.count=(z.count??1)+1;return z}Q1+=1;let V={id:`act_${Q1}`,at:new Date().toISOString(),kind:$,detail:Z,count:1,source:J,html:J0(Q)};u.push(V);while(u.length>E(\"maxActions\"))S2(u.shift());return V}var R2=200000,r=0;function J0($){if(!$)return;if(r+$.length>R2)return;return r+=$.length,$}function S2($){if(!$)return;if(r-=($.html?.length??0)+($.afterHtml?.length??0),r<0)r=0}function P0($){return $&&$>1?` (×${$})`:\"\"}function j0($){return $ instanceof Element&&Boolean($.closest(\"[data-debug-reporter]\"))}var O2='button, a[href], [role=\"button\"], [role=\"tab\"], [role=\"menuitem\"], [role=\"option\"], [role=\"switch\"], [role=\"checkbox\"], [role=\"radio\"], [role=\"link\"], summary, input, select, textarea',_2={button:\"ปุ่ม\",a:\"ลิงก์\",input:\"ช่อง\",textarea:\"ช่อง\",select:\"ตัวเลือก\",summary:\"ส่วนขยาย\"},z1={button:\"ปุ่ม\",tab:\"แท็บ\",menuitem:\"เมนู\",option:\"ตัวเลือก\",switch:\"สวิตช์\",checkbox:\"ช่องเลือก\",radio:\"ตัวเลือก\",link:\"ลิงก์\"};function f2($){let j=$.getAttribute(\"role\");if(j&&z1[j])return z1[j];return _2[$.tagName.toLowerCase()]??\"ปุ่ม\"}function L2($,j){try{let J=$,Q=0;while(J&&Q<=j){let Z=G1(J);if(Z&&typeof Z.memoizedProps?.onClick===\"function\")return J;J=J.parentElement,Q+=1}}catch{}return null}function k2($){let j=$.getAttribute(\"aria-label\")?.trim();if(j)return j;let J=$.getAttribute(\"title\")?.trim();if(J)return J;if($ instanceof HTMLInputElement||$ instanceof HTMLTextAreaElement||$ instanceof HTMLSelectElement)return($.getAttribute(\"placeholder\")||$.getAttribute(\"name\")||\"\").trim();if($ instanceof HTMLImageElement)return($.getAttribute(\"alt\")||\"\").trim();let Q=($.textContent??\"\").replace(/\\s+/g,\" \").trim();if(Q)return Q;if($ instanceof HTMLAnchorElement){let Z=$.getAttribute(\"href\");if(Z?.startsWith(\"/\"))return U0(Z)}return\"\"}function A2($){if(!($ instanceof Element))return null;let j=$.closest(O2)??L2($,4);if(!j)return null;let J=j.tagName.toLowerCase();if(J===\"html\"||J===\"body\")return null;return j}function T2($){let j=g(k2($));if(!j)return null;return`${f2($)} “${d(j,C0)}”`}var Y1=6000,x2=4000,E2=/(?:^|\\s)!?(?:fixed|absolute|sticky|inset-\\S+|z-\\S+|top-\\S+|bottom-\\S+|left-\\S+|right-\\S+|w-screen|h-screen|min-h-screen|max-h-screen|translate-\\S+|scale-\\S+)(?=\\s|$)/g;function p2($){$.querySelectorAll(\"script, style, link, iframe, object, embed, noscript, canvas, video, audio\").forEach((Z)=>Z.remove());let j=[$,...Array.from($.querySelectorAll(\"*\"))];for(let Z of j){for(let V of Array.from(Z.attributes)){let Y=V.name.toLowerCase();if(Y.startsWith(\"on\")||Y===\"srcdoc\"||Y===\"value\"||Y.startsWith(\"data-\"))Z.removeAttribute(V.name)}if(Z instanceof HTMLAnchorElement)Z.setAttribute(\"href\",\"#\");if(Z instanceof HTMLImageElement)Z.removeAttribute(\"src\");let z=Z.getAttribute(\"class\");if(z){let V=z.replace(E2,\" \").replace(/\\s+/g,\" \").trim();if(V)Z.setAttribute(\"class\",V);else Z.removeAttribute(\"class\")}}let J=document.createTreeWalker($,NodeFilter.SHOW_TEXT),Q=J.nextNode();while(Q){if(Q.nodeValue)Q.nodeValue=g(Q.nodeValue);Q=J.nextNode()}}function w0($,j,J){try{let Q=$.outerHTML;if(!Q||Q.length>j)return;let Z=$.cloneNode(!0);p2(Z);let z=Z.outerHTML;return z&&z.length<=J?z:void 0}catch{return}}var h2=($)=>w0($,Y1,x2),v2=150000,g2=40000,W1=($)=>w0($,v2,g2);function m2($){if(!($ instanceof HTMLInputElement)&&!($ instanceof HTMLTextAreaElement)&&!($ instanceof HTMLSelectElement))return null;let j=$.name||$.id||$.getAttribute(\"aria-label\")||$.getAttribute(\"placeholder\")||$.tagName.toLowerCase();return`ช่อง “${g(j)}”`}var V1=80;function G1($){let j=Object.keys($).find((J)=>J.startsWith(\"__reactFiber$\")||J.startsWith(\"__reactInternalInstance$\"));return j?$[j]:null}function y2($){if(typeof $!==\"function\")return null;try{let j=Function.prototype.toString.call($);return(j.match(/\\.(?:push|replace)\\(\\s*['\"`]([^'\"`]+)['\"`]/)??j.match(/redirect\\(\\s*['\"`]([^'\"`]+)['\"`]/))?.[1]??null}catch{return null}}function K1($){if(!$)return;return`→ ${$.length>V1?`${$.slice(0,V1)}…`:$}`}function b2($){try{let j=$.closest(\"a[href]\")?.getAttribute(\"href\");if(j&&j.startsWith(\"/\"))return K1(j);let J=G1($),Q=0;while(J&&Q<30){if(typeof J.memoizedProps?.onClick===\"function\")return K1(y2(J.memoizedProps.onClick));J=J.return,Q+=1}return}catch{return}}var u2='[role=\"dialog\"], [role=\"alertdialog\"], [role=\"menu\"], [role=\"listbox\"], [role=\"status\"], [role=\"alert\"]';function d2(){let $=j1();return $.length?$.join(\", \"):u2}function c2($){let j=$.getAttribute(\"role\");if(j===\"status\"||j===\"alert\")return\"ข้อความแจ้งเตือน\";if(j===\"menu\")return\"เมนู\";if(j===\"listbox\")return\"รายการตัวเลือก\";if(j===\"alertdialog\")return\"กล่องยืนยัน\";return\"กล่องโต้ตอบ\"}function i2($){let j=$.getAttribute(\"aria-label\")?.trim();if(j)return j;let J=$.getAttribute(\"aria-labelledby\");if(J){let z=J.split(/\\s+/).map((V)=>document.getElementById(V)?.textContent?.trim()??\"\").filter(Boolean).join(\" \");if(z)return z}let Z=$.querySelector('[data-slot=\"dialog-title\"], h1, h2, h3, [role=\"heading\"]')?.textContent?.replace(/\\s+/g,\" \").trim();if(Z)return Z;return($.textContent??\"\").replace(/\\s+/g,\" \").trim()}function F1($){let j=g(i2($)),J=c2($);return j?`เปิด ${J} “${d(j,C0)}”`:`เปิด ${J}`}var o2='[aria-busy=\"true\"], [role=\"progressbar\"], [data-loading=\"true\"], .animate-pulse, .animate-spin',l2=/กำลังโหลด|กำลังค้นหา|กำลังดำเนินการ|\\bloading\\b/i;function n2($){if($.querySelector(o2))return!0;return l2.test($.textContent??\"\")}var r2=400,s2=250,a2=8000;function t2($,j){if(typeof MutationObserver>\"u\"){j.html=J0(W1($));return}let J=Date.now(),Q=!1,Z=()=>{Q=!0,V.disconnect(),window.clearInterval(Y),window.clearTimeout(F)},z=()=>{if(Q)return;if(Z(),!$.isConnected)return;j.detail=d(F1($),M0),j.html=J0(W1($))},V=new MutationObserver(()=>{J=Date.now()});V.observe($,{childList:!0,subtree:!0,attributes:!0,characterData:!0});let Y=window.setInterval(()=>{if(Q)return;if(!$.isConnected){Z();return}if(Date.now()-J>=r2&&!n2($))z()},s2),F=window.setTimeout(z,a2)}function e2($){if(j0($))return;let j=n(\"ui\",F1($));if(j)t2($,j)}function $4(){if(typeof MutationObserver>\"u\")return;let $=new WeakSet;new MutationObserver((J)=>{for(let Q of J)for(let Z of Array.from(Q.addedNodes)){if(!(Z instanceof Element))continue;let z=d2(),V=Z.matches(z)?[Z]:Array.from(Z.querySelectorAll(z));for(let Y of V){if($.has(Y))continue;$.add(Y),e2(Y)}}}).observe(document.body,{childList:!0,subtree:!0})}var j4=1600,J4=2500;function X1($){return{disabled:$.hasAttribute(\"disabled\")||$.getAttribute(\"aria-disabled\")===\"true\",busy:$.getAttribute(\"aria-busy\")===\"true\",text:d(($.textContent??\"\").replace(/\\s+/g,\" \").trim(),C0)}}function Q4($,j){if(!$.disabled&&j.disabled)return\"ปุ่มถูกปิดใช้งานหลังคลิก\";if(!$.busy&&j.busy)return\"ปุ่มเข้าสู่สถานะกำลังโหลด\";if($.text!==j.text&&j.text)return`ข้อความเปลี่ยนเป็น “${j.text}”`;return null}function Z4($,j){if(typeof MutationObserver>\"u\")return;let J=X1($),Q=!1,Z=(Y,F)=>{if(Q)return;if(Q=!0,z.disconnect(),window.clearTimeout(V),j.afterNote=Y,F)j.afterHtml=J0(w0($,Y1,J4))},z=new MutationObserver(()=>{if(!$.isConnected){Z(\"องค์ประกอบหายไปจากหน้าจอ\",!1);return}let Y=Q4(J,X1($));if(Y)Z(Y,!0)});z.observe($,{attributes:!0,attributeFilter:[\"disabled\",\"aria-disabled\",\"aria-busy\",\"class\"],childList:!0,subtree:!0,characterData:!0});let V=window.setTimeout(()=>{if(!Q&&!$.isConnected){Z(\"องค์ประกอบหายไปจากหน้าจอ\",!1);return}Q=!0,z.disconnect()},j4)}function H1(){if(Z1||typeof window>\"u\")return;Z1=!0,document.addEventListener(\"click\",(Q)=>{if(j0(Q.target))return;let Z=A2(Q.target);if(!Z)return;let z=T2(Z);if(!z)return;let V=n(\"click\",`คลิก ${z}`,b2(Z),h2(Z));if(V)Z4(Z,V)},{capture:!0,passive:!0}),document.addEventListener(\"change\",(Q)=>{if(j0(Q.target))return;let Z=m2(Q.target);if(Z)n(\"input\",`แก้ไข ${Z}`)},{capture:!0,passive:!0}),document.addEventListener(\"submit\",(Q)=>{if(j0(Q.target))return;n(\"submit\",\"ส่งฟอร์ม\")},{capture:!0,passive:!0});let $=()=>n(\"navigate\",`ไปที่ ${U0(y(location.pathname+location.search))}`),j=history.pushState.bind(history),J=history.replaceState.bind(history);history.pushState=(...Q)=>{let Z=j(...Q);return $(),Z},history.replaceState=(...Q)=>{let Z=J(...Q);return $(),Z},window.addEventListener(\"popstate\",$),$4()}function I0(){return u.map(($)=>({...$}))}var M1=2000,Q0=[],C1=0,U1=!1;function D0($,j){C1+=1,Q0.push({id:`log_${C1}`,at:new Date().toISOString(),level:$,message:j.length>M1?`${j.slice(0,M1)}…`:j});while(Q0.length>E(\"maxConsoleEntries\"))Q0.shift()}function z4(){let $=new WeakSet;return(j,J)=>{if(typeof J===\"object\"&&J!==null){if($.has(J))return\"[Circular]\";$.add(J)}if(typeof J===\"bigint\")return J.toString();return J}}function P1($){if(typeof $===\"string\")return $;if($ instanceof Error)return`${$.name}: ${$.message}`;try{return JSON.stringify($,z4())??String($)}catch{return String($)}}function w1(){if(U1||typeof window>\"u\")return;U1=!0;let $=[\"log\",\"info\",\"warn\",\"error\",\"debug\"];for(let j of $){let J=console[j].bind(console);console[j]=(...Q)=>{D0(j,Q.map(P1).join(\" \")),J(...Q)}}window.addEventListener(\"error\",(j)=>{let J=j.filename?` (${j.filename}:${j.lineno}:${j.colno})`:\"\";D0(\"exception\",`${j.message}${J}`)}),window.addEventListener(\"unhandledrejection\",(j)=>{let J=j.reason instanceof Error?`${j.reason.name}: ${j.reason.message}`:P1(j.reason);D0(\"unhandledrejection\",J)})}function B0(){return Q0.map(($)=>({...$}))}var I1=new Set,D1=new Set;function B1($,j){return $.add(j),()=>$.delete(j)}function N1($,j){for(let J of[...$])J(j)}function N0($){return B1(I1,$)}function q0($={type:\"manual\"}){N1(I1,$)}function R0($){return B1(D1,$)}function S0($){N1(D1,$)}var W4=15000,V4=[\"ResizeObserver loop\",\"Script error.\",\"Non-Error promise rejection captured\"],q1=!1,R1=0;function K4($){return V4.some((j)=>$.includes(j))}function S1($){let j=$.message??\"\";if(!j||K4(j))return;let J=Date.now();if(J-R1<W4)return;R1=J,S0({...$,message:j})}function O1(){if(q1||typeof window>\"u\")return;q1=!0,window.addEventListener(\"error\",($)=>{if(!$.message&&!$.error)return;let j=$.error instanceof Error?$.error:null;S1({type:\"runtime-error\",message:$.message||(j?j.message:\"Unknown error\"),stack:j?.stack})}),window.addEventListener(\"unhandledrejection\",($)=>{let j=$.reason;S1({type:\"unhandledrejection\",message:j instanceof Error?j.message:String(j),stack:j instanceof Error?j.stack:void 0})})}var k1=4000,X4=1e6,Y4=1e7,Z0=[],_1=0,f1=!1;function A1($){Z0.push($);while(Z0.length>E(\"maxRequests\"))Z0.shift()}function T1(){return _1+=1,`req_${_1}`}function L1($){let j={};if(!$)return j;if($ instanceof Headers)$.forEach((J,Q)=>{j[Q]=J});else if(Array.isArray($))for(let[J,Q]of $)j[J]=Q;else Object.assign(j,$);return j}function G4($){let j={};return $.forEach((J,Q)=>{j[Q]=J}),j}function F4($){if($==null)return null;if(typeof $===\"string\")return $;if($ instanceof URLSearchParams)return $.toString();if(typeof FormData<\"u\"&&$ instanceof FormData)return`[FormData: ${Array.from($.keys()).join(\", \")}]`;if(typeof Blob<\"u\"&&$ instanceof Blob)return`[Blob ${$.size} bytes]`;if($ instanceof ArrayBuffer)return`[ArrayBuffer ${$.byteLength} bytes]`;return\"[binary]\"}function H4($,j){let J=\"\",Q=\"GET\",Z={},z=null;if(typeof $===\"string\")J=$;else if($ instanceof URL)J=$.toString();else J=$.url,Q=$.method||Q,Z=L1($.headers);if(j){if(j.method)Q=j.method;if(j.headers)Z={...Z,...L1(j.headers)};if(j.body!==void 0)z=F4(j.body)}return{method:Q.toUpperCase(),url:J,headers:Z,body:z}}function x1($){return!J1($)}function M4($,j){if(x1(j.url)){j.responseSnippet=\"[body not captured for this origin]\";return}let J=$.headers.get(\"content-type\")??\"\",Q=Number($.headers.get(\"content-length\")??\"0\"),Z=Q?`, ~${Q} bytes`:\"\";if(!/json|text|xml|html|javascript|urlencoded/i.test(J)){j.responseSnippet=`[binary ${J||\"unknown\"}${Z}]`;return}if(Q>X4){j.responseSnippet=`[response ${J||\"text\"}${Z} — omitted]`;return}try{$.clone().text().then((z)=>{j.responseSnippet=b(z,E(\"maxBodyChars\"))}).catch(()=>{})}catch{}}function E1($,j){if(/[?&]_rsc=/.test($))return!0;for(let J of Object.keys(j)){let Q=J.toLowerCase();if(Q===\"rsc\"||Q===\"next-router-prefetch\"||Q===\"next-router-state-tree\")return!0}return!1}function C4(){if(typeof window>\"u\"||typeof window.fetch!==\"function\")return;let $=window.fetch.bind(window);window.fetch=Object.assign(async(j,J)=>{let Q=H4(j,J);if(E1(Q.url,Q.headers))return $(j,J);let Z={id:T1(),startedAt:new Date().toISOString(),method:Q.method,url:y(Q.url),requestHeaders:m(Q.headers),requestBody:b(Q.body,k1),status:null,statusText:null,durationMs:null,via:\"fetch\"};A1(Z);let z=performance.now();try{let V=await $(j,J);return Z.status=V.status,Z.statusText=V.statusText,Z.durationMs=Math.round(performance.now()-z),Z.responseHeaders=m(G4(V.headers)),M4(V,Z),V}catch(V){throw Z.durationMs=Math.round(performance.now()-z),Z.error=V instanceof Error?`${V.name}: ${V.message}`:String(V),V}},$)}function U4(){if(typeof window>\"u\"||typeof window.XMLHttpRequest!==\"function\")return;let $=XMLHttpRequest.prototype,j=$.open,J=$.send,Q=function(z,V){let Y=typeof V===\"string\"?V:V.toString();return this.__cibEntry=E1(Y,{})?void 0:{id:T1(),startedAt:\"\",method:(z||\"GET\").toUpperCase(),url:y(Y),requestHeaders:{},requestBody:null,status:null,statusText:null,durationMs:null,via:\"xhr\"},j.apply(this,arguments)},Z=function(z){let V=this.__cibEntry;if(V){V.startedAt=new Date().toISOString(),V.requestBody=typeof z===\"string\"?b(z,k1):z==null?null:\"[non-string body]\";let Y=performance.now();A1(V),this.addEventListener(\"loadend\",()=>{if(V.status=this.status||null,V.statusText=this.statusText||null,V.durationMs=Math.round(performance.now()-Y),x1(V.url))V.responseSnippet=\"[body not captured for this origin]\";else if(this.responseType===\"\"||this.responseType===\"text\")try{V.responseSnippet=b(this.responseText||\"\",E(\"maxBodyChars\"))}catch{}else{let F=this.getResponseHeader(\"content-type\")??this.responseType;V.responseSnippet=`[binary ${F}]`}})}return J.apply(this,arguments)};$.open=Q,$.send=Z}function p1(){if(f1)return;f1=!0,C4(),U4()}function O0(){let $=Z0.map((J)=>({...J})),j=0;for(let J=$.length-1;J>=0;J-=1){let Q=$[J],Z=Q?.responseSnippet;if(!Q||typeof Z!==\"string\"||Z.length===0)continue;if(j+Z.length>Y4)Q.responseSnippet=`[response omitted — report size budget reached (${Z.length.toLocaleString()} chars)]`;else j+=Z.length}return $}var P4={title:\"รายงานปัญหา\",summaryLabel:\"หัวข้อปัญหา\",summaryRequired:\"(ต้องกรอกก่อนแจ้งปัญหา)\",summaryPlaceholder:\"สรุปปัญหาสั้น ๆ เช่น กดบันทึกร่างแล้ว error\",detailLabel:\"อธิบายปัญหา (ไม่บังคับ)\",detailPlaceholder:\"เกิดอะไรขึ้น? กำลังทำอะไรอยู่ตอนที่พบปัญหา?\",annotateTitle:\"วาดบนรูป\",annotateHint:\"ทำเครื่องหมายจุดที่มีปัญหาก่อนแนบ — วงกรอบ ชี้ลูกศร ไฮไลต์ หรือพิมพ์ข้อความ\",annotateApply:\"ใช้รูปนี้\",cancel:\"ยกเลิก\",toolRect:\"กรอบ\",toolArrow:\"ลูกศร\",toolHighlight:\"ไฮไลต์\",toolText:\"ข้อความ\",deleteSelected:\"ลบที่เลือก\",clearAll:\"ล้างทั้งหมด\",annotateHelp:\"เลือกเครื่องมือแล้วลากบนรูป · ไม่ได้เลือกเครื่องมือ = ย้าย/ปรับขนาดสิ่งที่วาดไว้ · กดกากบาทมุมขวาบนของรูปทรงเพื่อลบ\",capturing:\"กำลังเก็บภาพหน้าจอ…\",noScreenshot:\"ไม่มีภาพหน้าจอ — ยังส่งรายงานได้\",cancelled:\"ยกเลิกการเก็บภาพหน้าจอแล้ว\",close:\"ปิด\",submit:\"แจ้งปัญหา\",submitting:\"กำลังส่ง…\",submitted:\"แจ้งปัญหาสำเร็จ\",crashed:\"เกิดข้อผิดพลาดในระบบ\",crashAction:\"แจ้งปัญหา\",failed:\"ส่งรายงานไม่สำเร็จ\",captured:\"เก็บข้อมูลแล้ว\",reporter:\"ผู้แจ้ง\",page:\"หน้า\"},w4={title:\"Report a problem\",summaryLabel:\"Summary\",summaryRequired:\"(required)\",summaryPlaceholder:\"One line, e.g. saving a draft returns an error\",detailLabel:\"Details (optional)\",detailPlaceholder:\"What happened? What were you doing at the time?\",annotateTitle:\"Draw on the image\",annotateHint:\"Mark what went wrong before attaching — box it, point at it, highlight it, or type on it\",annotateApply:\"Use this image\",cancel:\"Cancel\",toolRect:\"Box\",toolArrow:\"Arrow\",toolHighlight:\"Highlight\",toolText:\"Text\",deleteSelected:\"Delete selected\",clearAll:\"Clear all\",annotateHelp:\"Pick a tool and drag on the image · no tool selected = move/resize what you drew · press the ✕ on a shape to delete it\",capturing:\"Capturing the screen…\",noScreenshot:\"No screenshot — you can still send the report\",cancelled:\"Screen capture cancelled\",close:\"Close\",submit:\"Send report\",submitting:\"Sending…\",submitted:\"Report sent\",crashed:\"Something went wrong\",crashAction:\"Report it\",failed:\"Could not send the report\",captured:\"Captured\",reporter:\"Reporter\",page:\"Page\"};function s($){return $===\"en\"?w4:P4}var _0=null;function I4(){if(typeof document>\"u\")return null;if(_0?.isConnected)return _0;let $=document.createElement(\"lw-debug-toasts\");$.dataset.debugReporter=\"true\";let j=$.attachShadow({mode:\"open\"}),J=document.createElement(\"style\");J.textContent=`\n:host { all: initial; }\n.stack {\n position: fixed; top: 16px; right: 16px; z-index: 2147483001;\n display: flex; flex-direction: column; gap: 8px; pointer-events: none;\n font-family: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Noto Sans Thai\", sans-serif;\n}\n.toast {\n pointer-events: auto; display: flex; align-items: center; gap: 8px;\n max-width: 380px; padding: 12px 14px; border-radius: 10px;\n font-size: 14px; line-height: 1.5; color: #0f172a;\n background: #fff; border: 1px solid #e2e8f0;\n box-shadow: 0 10px 30px rgba(15, 23, 42, 0.16);\n animation: in 160ms ease-out;\n}\n.toast[data-tone=\"success\"] { border-left: 3px solid #10b981; }\n.toast[data-tone=\"error\"] { border-left: 3px solid #e11d48; }\n.dot { width: 8px; height: 8px; border-radius: 50%; flex: none; }\n.toast[data-tone=\"success\"] .dot { background: #10b981; }\n.toast[data-tone=\"error\"] .dot { background: #e11d48; }\n.action {\n flex: none; cursor: pointer; padding: 5px 10px; margin-left: auto;\n font: inherit; font-size: 13px; font-weight: 600;\n color: #fff; background: #0f172a; border: none; border-radius: 7px;\n}\n.action + .close { margin-left: 4px; }\n.close {\n margin-left: auto; flex: none; cursor: pointer; border: none; background: none;\n padding: 0 2px; font: inherit; font-size: 16px; line-height: 1; color: #94a3b8;\n}\n@keyframes in { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }\n@media (prefers-reduced-motion: reduce) { .toast { animation: none; } }\n`;let Q=document.createElement(\"div\");return Q.className=\"stack\",Q.setAttribute(\"role\",\"status\"),Q.setAttribute(\"aria-live\",\"polite\"),j.append(J,Q),document.body.append($),_0=Q,Q}function c($,j=\"success\",J){let Q=I4();if(!Q)return;let Z=document.createElement(\"div\");Z.className=\"toast\",Z.dataset.tone=j;let z=document.createElement(\"span\");z.className=\"dot\";let V=document.createElement(\"span\");V.textContent=$;let Y=document.createElement(\"button\");Y.type=\"button\",Y.className=\"close\",Y.textContent=\"✕\",Y.setAttribute(\"aria-label\",\"ปิด\");let F=()=>{window.clearTimeout(C),Z.remove()};Y.addEventListener(\"click\",F);let C=j===\"error\"||J?0:window.setTimeout(F,6000);if(Z.append(z,V),J){let P=document.createElement(\"button\");P.type=\"button\",P.className=\"action\",P.textContent=J.label,P.addEventListener(\"click\",()=>{F(),J.onClick()}),Z.append(P)}Z.append(Y),Q.append(Z)}function h1($,j,J){let Q=$.filter((z)=>Boolean(z.error)||z.status!=null&&z.status>=400).slice(-20).map((z)=>({method:z.method,url:z.url,status:z.status,error:z.error,at:z.startedAt})),Z=j.filter((z)=>z.level===\"error\"||z.level===\"exception\"||z.level===\"unhandledrejection\").slice(-20).map((z)=>z.message);return{failedRequests:Q,errors:Z,erroredQueries:J.slice(0,20)}}function v1($){return $.failedRequests.length+$.errors.length+$.erroredQueries.length}function D4(){let $={memoryUsedMb:null,memoryLimitMb:null,domContentLoadedMs:null,loadEventMs:null};if(typeof performance>\"u\")return $;let j=performance.memory;if(j)$.memoryUsedMb=Math.round(j.usedJSHeapSize/1024/1024),$.memoryLimitMb=Math.round(j.jsHeapSizeLimit/1024/1024);let[J]=performance.getEntriesByType(\"navigation\");if(J)$.domContentLoadedMs=Math.round(J.domContentLoadedEventEnd),$.loadEventMs=Math.round(J.loadEventEnd);return $}function f0($,j){if(!$)return j;try{return $()}catch{return j}}function g1(){let $=B(),{pathname:j,search:J,href:Q}=window.location;return{capturedAt:new Date().toISOString(),route:{href:Q,pathname:j,search:J},module:$1(j),user:f0($.user,{}),apiHeaders:m(f0($.headers,{})),app:{name:x().name,version:x().version,environment:x().environment},client:{userAgent:navigator.userAgent,language:navigator.language,platform:navigator.platform,online:navigator.onLine,viewport:{width:window.innerWidth,height:window.innerHeight,dpr:window.devicePixelRatio},screen:{width:window.screen.width,height:window.screen.height}},performance:D4(),extra:f0($.extra,{})}}var B4=2,N4={manual:\"ผู้ใช้แจ้งเอง\",\"runtime-error\":\"ข้อผิดพลาด runtime (auto)\",unhandledrejection:\"Promise rejection (auto)\",\"framework-error\":\"หน้าจอค้าง/พัง (auto)\"};function L0($){let j=O0(),J=B0();return{context:g1(),reason:$.reason,note:$.note,cause:h1(j,J,$.erroredQueries),actionTrail:I0(),network:j,console:J,screenshotDataUrl:$.screenshotDataUrl,screenshotMethod:$.screenshotMethod,meta:{generatedBy:\"lightwork-debug-capture\",schemaVersion:B4}}}function m1($){return $.replace(/'/g,\"'\\\\''\")}function y1($){let j=[`curl -X ${$.method} '${$.url}'`];for(let[J,Q]of Object.entries($.requestHeaders))j.push(` -H '${J}: ${m1(Q)}'`);if($.requestBody)j.push(` --data '${m1($.requestBody)}'`);return j.join(\" \\\\\\n\")}function q4($){if($.error)return`ERR ${$.error}`;return`${$.status??\"—\"} ${$.statusText??\"\"}`.trim()}function R4($){if($.length===0)return\"No network activity captured.\";return $.map((j)=>{let J=j.durationMs!=null?`${j.durationMs}ms`:\"—\",Q=`# [${q4(j)}] ${j.method} ${j.url} (${J}, ${j.startedAt})`,Z=j.responseSnippet?`\n# response: ${j.responseSnippet}`:\"\";return`${Q}\n${y1(j)}${Z}`}).join(`\n\n`)}function S4($){if($.length===0)return\"No console output captured.\";return $.map((j)=>`[${j.at}] ${j.level.toUpperCase()}: ${j.message}`).join(`\n`)}function O4($){if($.length===0)return\"No user actions captured.\";let j=0;return $.map((J)=>{let Q=J.source?` (${J.source})`:\"\",Z=`${J.detail}${P0(J.count)}${Q}`;if(J.kind===\"ui\")return` ↳ [${J.at}] ${Z}`;j+=1;let z=`${j}. [${J.at}] ${Z}`;return J.afterNote?`${z}\n ↳ ${J.afterNote}`:z}).join(`\n`)}function _4($){let j=[];for(let J of $.failedRequests)j.push(`✗ ${J.status??J.error??\"ERR\"} ${J.method} ${J.url}`);for(let J of $.errors)j.push(`⚠ ${J}`);for(let J of $.erroredQueries)j.push(`⚠ React Query error: ${J.key} — ${J.error}`);return j}function f4($){let{context:j}=$;return[`User : ${j.user.fullName??\"—\"} (${j.user.email??\"—\"})`,`Unit : ${j.user.unit??\"—\"}`,`Roles : ${j.user.roles?.join(\", \")||\"—\"}`,`Route : ${j.route.href}`,`Module : ${j.module?`${j.module.label} (${j.module.key})`:\"—\"}`,`App : ${j.app.name} v${j.app.version} · ${j.app.environment}`,`Memory : ${j.performance.memoryUsedMb??\"—\"}/${j.performance.memoryLimitMb??\"—\"} MB`,`Client : ${j.client.userAgent}`,`Viewport : ${j.client.viewport.width}×${j.client.viewport.height} @${j.client.viewport.dpr}x`,`Reason : ${N4[$.reason.type]}${$.reason.message?` — ${$.reason.message}`:\"\"}`,`Captured : ${$.network.length} requests · ${$.console.length} console · ${$.actionTrail.length} actions · screenshot=${$.screenshotMethod}`]}function L4($){let j=_4($.cause),J=[`## \\uD83D\\uDC1E ${$.context.app.name} — Debug Report`,`**Generated:** ${$.context.capturedAt}`,\"\",...f4($).map((Q)=>`- ${Q.replace(/\\s{2,}:/,\":\")}`),\"\",`**หมายเหตุจากผู้แจ้ง:** ${$.note.trim()||\"(ไม่มี)\"}`];if(j.length>0)J.push(\"\",\"### ⚠ สาเหตุที่น่าจะเป็น\",\"```\",...j,\"```\");return J.push(\"\",`<details><summary>ขั้นตอน (${$.actionTrail.length})</summary>`,\"\",\"```\",O4($.actionTrail),\"```\",\"</details>\",\"\",`<details><summary>Network (${$.network.length})</summary>`,\"\",\"```\",R4($.network),\"```\",\"</details>\",\"\",`<details><summary>Console (${$.console.length})</summary>`,\"\",\"```\",S4($.console),\"```\",\"</details>\",\"\",\"_ข้อมูลลับ (token, cookie) ถูกปกปิดอัตโนมัติ · ภาพหน้าจออยู่ในไฟล์ .zip_\"),J.join(`\n`)}function k4($){return $.replace(/[:.]/g,\"-\").replace(\"T\",\"_\").slice(0,19)}function A4($,j){return`debug-report_${k4($.context.capturedAt)}.${j}`}function T4($){return v1($.cause)>0}async function k0(){if(typeof navigator<\"u\"&&Boolean(navigator.mediaDevices?.getDisplayMedia)){let J=await x4();if(J.status===\"ok\")return{dataUrl:J.dataUrl,method:\"display-media\"};if(J.status===\"cancelled\")return{dataUrl:null,method:\"cancelled\"}}let j=await h4();if(j)return{dataUrl:j,method:\"html-to-image\"};return{dataUrl:null,method:\"none\"}}async function x4(){let $=null;try{let j={video:{frameRate:30},audio:!1,preferCurrentTab:!0,selfBrowserSurface:\"include\",surfaceSwitching:\"exclude\"};$=await navigator.mediaDevices.getDisplayMedia(j);let J=await E4($);return J?{status:\"ok\",dataUrl:J}:{status:\"error\"}}catch(j){if(j instanceof DOMException&&(j.name===\"NotAllowedError\"||j.name===\"AbortError\"))return{status:\"cancelled\"};return{status:\"error\"}}finally{$?.getTracks().forEach((j)=>j.stop())}}async function E4($){let j=document.createElement(\"video\");j.srcObject=$,j.muted=!0,j.playsInline=!0,await new Promise((V)=>{let Y=!1,F=()=>{if(Y)return;Y=!0,V()};j.onloadedmetadata=()=>{j.play().then(F).catch(F)},window.setTimeout(F,1500)}),await p4(j);let{videoWidth:J,videoHeight:Q}=j;if(!J||!Q)return null;let Z=document.createElement(\"canvas\");Z.width=J,Z.height=Q;let z=Z.getContext(\"2d\");if(!z)return null;z.drawImage(j,0,0,J,Q),j.pause(),j.srcObject=null;try{return Z.toDataURL(\"image/png\")}catch{return null}}function p4($){return new Promise((j)=>{let J=!1,Q=()=>{if(J)return;J=!0,j()},Z=$;if(typeof Z.requestVideoFrameCallback===\"function\")Z.requestVideoFrameCallback(()=>Q()),window.setTimeout(Q,1000);else window.setTimeout(Q,250)})}async function h4(){let $=B().screenshotFallback;if(!$)return null;let j=await $().catch(()=>null);if(!j)return null;try{return await j(document.body,{cacheBust:!0,pixelRatio:Math.min(window.devicePixelRatio||1,2),filter:(J)=>!(J instanceof HTMLElement&&J.dataset?.debugReporter===\"true\")})}catch{return null}}var v4=2000,g4=0.82,m4=3000000;function y4($){return new Promise((j,J)=>{let Q=new Image;Q.onload=()=>j(Q),Q.onerror=()=>J(Error(\"could not read the screenshot\")),Q.src=$})}async function b1($){try{let j=await y4($),J=Math.max(j.naturalWidth,j.naturalHeight),Q=Math.min(1,v4/J),Z=document.createElement(\"canvas\");Z.width=Math.max(1,Math.round(j.naturalWidth*Q)),Z.height=Math.max(1,Math.round(j.naturalHeight*Q));let z=Z.getContext(\"2d\");if(!z)return $;z.fillStyle=\"#fff\",z.fillRect(0,0,Z.width,Z.height),z.drawImage(j,0,0,Z.width,Z.height);let V=g4,Y=Z.toDataURL(\"image/jpeg\",V);while(Y.length>m4&&V>0.4)V-=0.15,Y=Z.toDataURL(\"image/jpeg\",V);return Y}catch{return $}}var b4=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,u4=/^\\d+$/,d4=/^[0-9a-f]{16,}$/i;function A0($){if($.reason.type===\"manual\")return null;let j=$.cause?.failedRequests?.[0];if(!j?.url)return null;let J;try{J=new URL(j.url,\"http://x\").pathname}catch{J=j.url}let Q=J.split(\"/\").map((z)=>b4.test(z)||u4.test(z)||d4.test(z)?\":id\":z).join(\"/\"),Z=j.status??(j.error?\"ERR\":\"?\");return`${j.method??\"REQ\"} ${Q} ${Z}`}var T0=2000000;function z0($){let{screenshotDataUrl:j,...J}=$;return JSON.stringify(J).length}function x0($,j=2000000){if(z0($)<=j)return $;let J=$.network.map((Z)=>({...Z})),Q={...$,network:J};for(let Z of J){if(z0(Q)<=j)return Q;if(typeof Z.responseSnippet===\"string\"&&Z.responseSnippet.length>35)Z.responseSnippet=\"[body dropped — report size budget]\";if(typeof Z.requestBody===\"string\"&&Z.requestBody.length>35)Z.requestBody=\"[body dropped — report size budget]\"}while(Q.network.length>1&&z0(Q)>j)Q.network=Q.network.slice(1);while(Q.console.length>1&&z0(Q)>j)Q.console=Q.console.slice(1);return Q}var u1=32768;function c4($){let j=\"\";for(let J=0;J<$.length;J+=u1)j+=String.fromCharCode(...$.subarray(J,J+u1));return btoa(j)}function i4($){return{dataUri:`data:application/json;base64,${c4(new TextEncoder().encode(JSON.stringify($)))}`,filename:\"debug-bundle.json\"}}async function E0($,j){let J=B(),Q=x0(j,T0),{context:Z,note:z}=Q,V=[];if(Q.screenshotDataUrl){let P=await b1(Q.screenshotDataUrl);V.push({dataUri:P,filename:\"screenshot.jpg\"})}V.push(i4(Q));let Y=A0(Q),F={title:$,description:z.trim()||void 0,category:Z.module?.label||x().name,routeUrl:Z.route.href,priority:\"MEDIUM\",requesterEmail:Z.user.email??void 0,requesterName:Z.user.fullName??void 0,customFields:{unit:Z.user.unit??\"\",appVersion:Z.app.version,environment:Z.app.environment,reasonType:Q.reason.type,appName:x().name,module:Z.module?.label??\"\"},context:{...Y?{signature:Y}:{},capturedAt:Z.capturedAt,reason:Q.reason,cause:Q.cause,actionTrail:Q.actionTrail,client:Z.client,performance:Z.performance,apiHeaders:Z.apiHeaders,extra:Z.extra,counts:{network:Q.network.length,console:Q.console.length,actions:Q.actionTrail.length},screenshotMethod:Q.screenshotMethod},attachments:V},C=await fetch(`${J.host.replace(/\\/$/,\"\")}/ingest/tickets`,{method:\"POST\",headers:{\"content-type\":\"application/json\",\"x-realm-key\":J.realmKey},body:JSON.stringify(F)});if(!C.ok){let P=C.headers.get(\"retry-after\"),I=await C.json().then((w)=>w.error).catch(()=>null);throw Error(C.status===429?`Too many reports — try again in ${P??\"a moment\"}s`:I??`Report failed (${C.status})`)}return await C.json()}var a=Math.PI/6;function d1($,j,J){let Q=j.x-$.x,Z=j.y-$.y,z=Math.hypot(Q,Z),V=Math.atan2(Z,Q),Y=[{x:j.x,y:j.y},{x:j.x-J*Math.cos(V-a),y:j.y-J*Math.sin(V-a)},{x:j.x-J*Math.cos(V+a),y:j.y-J*Math.sin(V+a)}],F=J*Math.cos(a)*0.92;if(z<=F)return{shaft:null,head:Y};return{shaft:{from:$,to:{x:j.x-F*Math.cos(V),y:j.y-F*Math.sin(V)}},head:Y}}var p0=\"#f44336\",o4=\"rgba(250, 204, 21, 0.4)\",h0=22,c1=\"#2563eb\",i1=9,o1=11,l1=18,n1=4,W0=8,l4=[{id:\"nw\",fx:0,fy:0,cursor:\"nwse-resize\"},{id:\"n\",fx:0.5,fy:0,cursor:\"ns-resize\"},{id:\"ne\",fx:1,fy:0,cursor:\"nesw-resize\"},{id:\"e\",fx:1,fy:0.5,cursor:\"ew-resize\"},{id:\"se\",fx:1,fy:1,cursor:\"nwse-resize\"},{id:\"s\",fx:0.5,fy:1,cursor:\"ns-resize\"},{id:\"sw\",fx:0,fy:1,cursor:\"nesw-resize\"},{id:\"w\",fx:0,fy:0.5,cursor:\"ew-resize\"}];function v0($,j,J){let Q=[],Z=null,z=-1,V=null,Y=null,F=$.getContext(\"2d\");function C(){let W=$.getBoundingClientRect().width;return W>0?$.width/W:1}function P(W){let K=$.getBoundingClientRect();return{x:(W.clientX-K.left)/K.width*$.width,y:(W.clientY-K.top)/K.height*$.height}}function I(W){let K=W.size??h0;if(!F)return(W.text?.length??0)*K*0.6;F.save(),F.font=`600 ${K}px system-ui, sans-serif`;let G=F.measureText(W.text??\"\").width;return F.restore(),G}function w(W){if(W.tool===\"text\"){let K=W.size??h0;return{left:W.x1,top:W.y1,right:W.x1+I(W),bottom:W.y1+K*1.25}}return{left:Math.min(W.x1,W.x2),top:Math.min(W.y1,W.y2),right:Math.max(W.x1,W.x2),bottom:Math.max(W.y1,W.y2)}}function q(W){if(W.tool===\"arrow\")return[{id:\"tail\",x:W.x1,y:W.y1,cursor:\"move\"},{id:\"head\",x:W.x2,y:W.y2,cursor:\"move\"}];let K=w(W);if(W.tool===\"text\")return[{id:\"size\",x:K.right,y:K.bottom,cursor:\"nwse-resize\"}];return l4.map((G)=>({id:G.id,x:K.left+(K.right-K.left)*G.fx,y:K.top+(K.bottom-K.top)*G.fy,cursor:G.cursor}))}function N(W){let K=w(W);return{x:K.right+l1*C(),y:K.top-l1*C()}}function R(W,K,G){let{shaft:X,head:H}=d1({x:K.x1,y:K.y1},{x:K.x2,y:K.y2},Math.max(10,16*G));if(X)W.lineCap=\"butt\",W.beginPath(),W.moveTo(X.from.x,X.from.y),W.lineTo(X.to.x,X.to.y),W.stroke();W.beginPath(),W.moveTo(H[0].x,H[0].y),W.lineTo(H[1].x,H[1].y),W.lineTo(H[2].x,H[2].y),W.closePath(),W.fill()}function _(W,K,G){W.save(),W.lineWidth=Math.max(2,3*G),W.strokeStyle=p0,W.fillStyle=p0;let X=w(K);if(K.tool===\"rect\")W.strokeRect(X.left,X.top,X.right-X.left,X.bottom-X.top);else if(K.tool===\"arrow\")R(W,K,G);else if(K.tool===\"highlight\")W.fillStyle=o4,W.fillRect(X.left,X.top,X.right-X.left,X.bottom-X.top);else if(K.tool===\"text\"&&K.text){let H=K.size??h0;W.font=`600 ${H}px system-ui, sans-serif`,W.textBaseline=\"top\";let M=H*0.22;W.fillStyle=\"rgba(255,255,255,0.92)\",W.fillRect(X.left-M,X.top-M,X.right-X.left+M*2,X.bottom-X.top+M*2),W.fillStyle=p0,W.fillText(K.text,X.left,X.top)}W.restore()}function D(W,K,G){let X=w(K);W.save(),W.strokeStyle=c1,W.lineWidth=Math.max(1,1.5*G),W.setLineDash([6*G,4*G]),W.strokeRect(X.left,X.top,X.right-X.left,X.bottom-X.top),W.setLineDash([]);let H=i1*G;for(let f of q(K))W.fillStyle=\"#fff\",W.strokeStyle=c1,W.lineWidth=Math.max(1,1.5*G),W.beginPath(),W.rect(f.x-H/2,f.y-H/2,H,H),W.fill(),W.stroke();let M=N(K),U=o1*G;W.beginPath(),W.arc(M.x,M.y,U,0,Math.PI*2),W.fillStyle=\"#dc2626\",W.fill(),W.strokeStyle=\"#fff\",W.lineWidth=Math.max(1.5,2*G),W.beginPath(),W.moveTo(M.x-U*0.4,M.y-U*0.4),W.lineTo(M.x+U*0.4,M.y+U*0.4),W.moveTo(M.x+U*0.4,M.y-U*0.4),W.lineTo(M.x-U*0.4,M.y+U*0.4),W.stroke(),W.restore()}function S(){if(!F)return;let W=C();if(F.clearRect(0,0,$.width,$.height),F.drawImage(j,0,0,$.width,$.height),Q.forEach((G,X)=>{if(X!==t)_(F,G,W)}),V)_(F,V,W);let K=Q[z];if(K&&!V)D(F,K,W)}function i0(W,K,G,X,H){return Math.abs(W-G)<=H&&Math.abs(K-X)<=H}function o0(W,K){let G=Q[z];if(!G)return null;let X=i1*C()/2+3*C();for(let H of q(G))if(i0(W,K,H.x,H.y,X))return H.id;return null}function l0(W,K){let G=Q[z];if(!G)return!1;let X=N(G);return i0(W,K,X.x,X.y,o1*C())}function Y0(W,K){let G=6*C();for(let X=Q.length-1;X>=0;X-=1){let H=Q[X];if(H.tool===\"arrow\"){let U=H.x2-H.x1,f=H.y2-H.y1,p=Math.hypot(U,f)||1,h=Math.max(0,Math.min(1,((W-H.x1)*U+(K-H.y1)*f)/(p*p)));if(Math.hypot(W-(H.x1+h*U),K-(H.y1+h*f))<=G+4*C())return X;continue}let M=w(H);if(W>=M.left-G&&W<=M.right+G&&K>=M.top-G&&K<=M.bottom+G)return X}return-1}function X2(W,K,G,X,H){if(K===\"tail\"){W.x1=G.x1+X,W.y1=G.y1+H;return}if(K===\"head\"){W.x2=G.x2+X,W.y2=G.y2+H;return}if(K===\"size\"){let H2=(G.size??24)+H;W.size=Math.max(10,H2);return}let M=w(G),{left:U,top:f,right:p,bottom:h}=M;if(K.includes(\"w\"))U=Math.min(p-W0,U+X);if(K.includes(\"e\"))p=Math.max(U+W0,p+X);if(K.includes(\"n\"))f=Math.min(h-W0,f+H);if(K.includes(\"s\"))h=Math.max(f+W0,h+H);W.x1=U,W.y1=f,W.x2=p,W.y2=h}function Y2(W,K,G,X){W.x1=K.x1+G,W.y1=K.y1+X,W.x2=K.x2+G,W.y2=K.y2+X}let k=null,t=-1,A={x:0,y:0,size:24};function G2(){let W=$.getBoundingClientRect().width;return W>0?W/$.width:1}function F2(W,K){if(!F)return W.length*K*0.6;F.save(),F.font=`600 ${K}px system-ui, sans-serif`;let G=F.measureText(W||\" \").width;return F.restore(),G}function n0(){if(!k)return;let W=$.parentElement;if(!W)return;let K=$.getBoundingClientRect(),G=W.getBoundingClientRect(),X=G2(),H=A.size*X;k.style.left=`${K.left-G.left+A.x*X}px`,k.style.top=`${K.top-G.top+A.y*X}px`,k.style.fontSize=`${H}px`,k.style.width=`${Math.max(40,F2(k.value,H)+H)}px`}function l(W){let K=k;if(!K)return;k=null;let G=K.value.trim(),X=t;if(t=-1,K.remove(),W&&G){if(X>=0&&Q[X])Q[X].text=G,z=X;else Q.push({tool:\"text\",x1:A.x,y1:A.y,x2:A.x,y2:A.y,text:G,size:A.size}),z=Q.length-1;J()}else if(X>=0)z=X;$.focus(),S()}function r0(W,K,G=-1){l(!0);let X=$.parentElement;if(!X)return;if(getComputedStyle(X).position===\"static\")X.style.position=\"relative\";let H=G>=0?Q[G]:void 0;t=G,A={x:H?.x1??W,y:H?.y1??K,size:H?.size??Math.round(24*C())};let M=document.createElement(\"input\");M.type=\"text\",M.className=\"text-edit\",M.value=H?.text??\"\",M.setAttribute(\"aria-label\",\"ข้อความบนภาพ\"),M.placeholder=\"ข้อความ\",k=M,X.append(M),n0(),M.addEventListener(\"input\",n0),M.addEventListener(\"keydown\",(U)=>{if(U.stopPropagation(),U.key===\"Enter\")l(!0);else if(U.key===\"Escape\")l(!1)}),requestAnimationFrame(()=>{if(k!==M)return;M.focus(),M.select(),M.addEventListener(\"blur\",()=>l(!0))}),S()}function s0(W){let{x:K,y:G}=P(W);if($.setPointerCapture(W.pointerId),l0(K,G)){G0();return}let X=o0(K,G);if(X&&Q[z]){Y={grip:X,x:K,y:G,start:{...Q[z]}};return}if(Z===\"text\"){if(W.preventDefault(),$.hasPointerCapture(W.pointerId))$.releasePointerCapture(W.pointerId);Z=null,J(),r0(K,G);return}if(Z){V={tool:Z,x1:K,y1:G,x2:K,y2:G},z=-1;return}let H=Y0(K,G);z=H,Y=H>=0?{grip:\"body\",x:K,y:G,start:{...Q[H]}}:null,S()}function a0(W){let{x:K,y:G}=P(W);if(V){V.x2=K,V.y2=G,S();return}if(Y){let H=Q[z];if(!H)return;let M=K-Y.x,U=G-Y.y;if(Y.grip===\"body\")Y2(H,Y.start,M,U);else X2(H,Y.grip,Y.start,M,U);S();return}if(Z){$.style.cursor=\"crosshair\";return}if(l0(K,G)){$.style.cursor=\"pointer\";return}let X=o0(K,G);if(X){let H=Q[z]?q(Q[z]).find((M)=>M.id===X):null;$.style.cursor=H?.cursor??\"pointer\";return}$.style.cursor=Y0(K,G)>=0?\"move\":\"default\"}function e(){if(V){if(!(Math.abs(V.x2-V.x1)<n1&&Math.abs(V.y2-V.y1)<n1))Q.push(V),z=Q.length-1,Z=null,J();V=null}if(Y)Y=null,J();S()}function t0(W){let K=$.getBoundingClientRect(),G=(W.clientX-K.left)/K.width*$.width,X=(W.clientY-K.top)/K.height*$.height,H=Y0(G,X),M=Q[H];if(!M||M.tool!==\"text\")return;W.preventDefault(),r0(M.x1,M.y1,H)}function e0(W){if(z<0)return;if(W.key===\"Delete\"||W.key===\"Backspace\")W.preventDefault(),G0();else if(W.key===\"Escape\")z=-1,S()}function G0(){if(z<0)return;Q.splice(z,1),z=-1,J(),S()}return $.addEventListener(\"pointerdown\",s0),$.addEventListener(\"pointermove\",a0),$.addEventListener(\"pointerup\",e),$.addEventListener(\"pointercancel\",e),$.addEventListener(\"dblclick\",t0),$.tabIndex=0,$.addEventListener(\"keydown\",e0),S(),{setTool(W){Z=W,z=-1,$.style.cursor=W?\"crosshair\":\"default\",S()},deleteSelected:G0,clear(){Q.length=0,z=-1,J(),S()},hasShapes:()=>Q.length>0,hasSelection:()=>z>=0,toDataUrl(){let W=document.createElement(\"canvas\");W.width=j.naturalWidth,W.height=j.naturalHeight;let K=W.getContext(\"2d\");if(!K)return $.toDataURL(\"image/png\");K.drawImage(j,0,0);let G=C();for(let X of Q)_(K,X,G);return W.toDataURL(\"image/png\")},destroy(){l(!1),$.removeEventListener(\"pointerdown\",s0),$.removeEventListener(\"pointermove\",a0),$.removeEventListener(\"pointerup\",e),$.removeEventListener(\"pointercancel\",e),$.removeEventListener(\"dblclick\",t0),$.removeEventListener(\"keydown\",e0)}}}var r1=`\n:host { all: initial; }\n* { box-sizing: border-box; }\n\n.backdrop {\n position: fixed; inset: 0; z-index: 2147483000;\n display: flex; align-items: center; justify-content: center;\n padding: 24px; background: rgba(15, 23, 42, 0.55);\n font-family: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Noto Sans Thai\", sans-serif;\n color: #0f172a;\n}\n.panel {\n display: flex; flex-direction: column; gap: 16px;\n width: min(820px, 100%); max-height: 90vh; overflow-y: auto;\n /* No bottom padding: the footer supplies its own and sits flush, so it can\n stick to the panel's edge without a gap under it. */\n padding: 24px 24px 0; border-radius: 16px; background: #fff;\n box-shadow: 0 24px 60px rgba(15, 23, 42, 0.28);\n}\n.head { display: flex; align-items: flex-start; gap: 12px; }\nh2 { margin: 0; font-size: 20px; font-weight: 700; flex: 1; }\nlabel { display: block; font-size: 14px; font-weight: 600; margin-bottom: 6px; }\n.req { color: #dc2626; }\n.hint { font-weight: 400; color: #64748b; }\ninput[type=\"text\"], textarea {\n width: 100%; padding: 10px 12px; font: inherit; font-size: 14px;\n border: 1px solid #cbd5e1; border-radius: 10px; background: #fff; color: inherit;\n}\ninput[type=\"text\"]:focus, textarea:focus {\n outline: none; border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.18);\n}\ntextarea { min-height: 88px; resize: vertical; }\n\n.meta {\n padding: 12px 14px; border-radius: 10px; background: #f8fafc;\n font-size: 13px; line-height: 1.7; color: #475569; word-break: break-all;\n}\n.meta b { color: #0f172a; font-weight: 600; }\n\n.tools { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }\n.sep { width: 1px; align-self: stretch; background: #e2e8f0; margin: 0 4px; }\nbutton {\n display: inline-flex; align-items: center; gap: 6px; cursor: pointer;\n padding: 8px 14px; font: inherit; font-size: 14px; font-weight: 500;\n border: 1px solid #cbd5e1; border-radius: 10px; background: #fff; color: inherit;\n}\nbutton:hover:not(:disabled) { background: #f1f5f9; }\nbutton:disabled { opacity: 0.5; cursor: not-allowed; }\nbutton[aria-pressed=\"true\"] { border-color: #2563eb; background: #eff6ff; color: #1d4ed8; }\nbutton.primary { background: #2563eb; border-color: #2563eb; color: #fff; }\nbutton.primary:hover:not(:disabled) { background: #1d4ed8; }\nbutton.icon { padding: 6px 10px; border-color: transparent; font-size: 18px; line-height: 1; }\n\n/* The on-image text editor. Absolutely placed over the canvas and matched to\n the shape it becomes — same weight, same red, same white plate — so what you\n type is what gets drawn, at the position you clicked. Sized in JS, because\n the font size tracks the image's own scale. */\n.text-edit {\n position: absolute; z-index: 2; margin: 0; padding: 2px 4px;\n font-family: system-ui, sans-serif; font-weight: 600; line-height: 1.25;\n color: #e11d48; background: rgba(255, 255, 255, 0.92);\n border: 1px dashed #e11d48; border-radius: 4px; outline: none;\n box-shadow: 0 2px 10px rgba(15, 23, 42, 0.18);\n}\n.text-edit::placeholder { color: rgba(225, 29, 72, 0.45); }\n\ncanvas { width: 100%; height: auto; display: block; border: 1px solid #e2e8f0; border-radius: 10px; touch-action: none; }\n.shot { position: relative; }\n.status { font-size: 13px; color: #64748b; }\n.status[data-tone=\"error\"] { color: #dc2626; }\n/* Pinned to the bottom of the scrolling panel.\n A screenshot is tall — often taller than the viewport — so แจ้งปัญหา sat\n below the fold and the last step of filing a report was \"scroll to the end\n and find the button\". Sticky, with its own ground and a rule above it so the\n annotated image scrolls underneath rather than bleeding into it. */\n.foot {\n position: sticky; bottom: 0; z-index: 3;\n display: flex; align-items: center; gap: 12px;\n margin: 4px -24px 0; padding: 12px 24px;\n background: #fff; border-top: 1px solid #e2e8f0;\n border-radius: 0 0 16px 16px;\n}\n.foot .grow { flex: 1; }\n`;var o=\"lw-debug-reporter\",s1=()=>[];function n4($){s1=$}var r4=[{tool:\"rect\",key:\"toolRect\"},{tool:\"arrow\",key:\"toolArrow\"},{tool:\"highlight\",key:\"toolHighlight\"},{tool:\"text\",key:\"toolText\"}];function s4(){return class extends HTMLElement{root;stop=null;annotator=null;bundle=null;busy=!1;constructor(){super();this.root=this.attachShadow({mode:\"open\"})}connectedCallback(){this.dataset.debugReporter=\"true\",this.stop=N0((j)=>void this.open(j))}disconnectedCallback(){this.stop?.(),this.stop=null,this.close()}async open(j){if(this.busy)return;this.busy=!0;let J=s(B().locale),Q=await k0();if(Q.method===\"cancelled\"){this.close();return}this.bundle=L0({reason:j,note:\"\",screenshotDataUrl:Q.dataUrl,screenshotMethod:Q.method,erroredQueries:a4()}),this.renderForm(J)}close(){this.annotator?.destroy(),this.annotator=null,this.bundle=null,this.busy=!1,this.root.replaceChildren()}shell(j){let J=document.createElement(\"style\");J.textContent=r1;let Q=document.createElement(\"div\");Q.className=\"backdrop\";let Z=document.createElement(\"div\");return Z.className=\"panel\",Z.setAttribute(\"role\",\"dialog\"),Z.setAttribute(\"aria-modal\",\"true\"),Z.setAttribute(\"aria-label\",j.title),Q.append(Z),this.root.replaceChildren(J,Q),Z}renderShell(j,J){let Q=this.shell(j),Z=O(\"div\",\"head\");Z.append(O(\"h2\",\"\",j.title)),Q.append(Z,O(\"p\",\"status\",J))}renderForm(j){let J=this.bundle;if(!J)return;let Q=this.shell(j),Z=O(\"div\",\"head\"),z=i(\"✕\",\"icon\");z.setAttribute(\"aria-label\",j.close),z.addEventListener(\"click\",()=>this.close()),Z.append(O(\"h2\",\"\",j.title),z);let V=document.createElement(\"input\");V.type=\"text\",V.placeholder=j.summaryPlaceholder;let Y=g0(j.summaryLabel,j.summaryRequired,!0),F=document.createElement(\"textarea\");F.placeholder=j.detailPlaceholder;let C=O(\"div\",\"meta\");C.innerHTML=\"\";let{context:P}=J;for(let[R,_]of[[j.reporter,`${P.user.fullName??\"—\"} (${P.user.email??\"—\"})`],[j.page,P.route.href],[j.captured,`${J.network.length} network · ${J.console.length} console · ${J.actionTrail.length} actions`]]){let D=document.createElement(\"div\"),S=document.createElement(\"b\");S.textContent=`${R}: `,D.append(S,document.createTextNode(_)),C.append(D)}let I=O(\"p\",\"status\",\"\"),w=i(j.submit,\"primary\");if(w.disabled=!0,V.addEventListener(\"input\",()=>{w.disabled=V.value.trim().length===0}),Q.append(Z,Y,V,g0(j.detailLabel),F,C),J.screenshotDataUrl)Q.append(...this.screenshotSection(j,J.screenshotDataUrl));else Q.append(O(\"p\",\"status\",j.noScreenshot));let q=O(\"div\",\"foot\"),N=i(j.close);N.addEventListener(\"click\",()=>this.close()),q.append(N,I,O(\"span\",\"grow\"),w),Q.append(q),w.addEventListener(\"click\",async()=>{w.disabled=!0,I.dataset.tone=\"\",I.textContent=j.submitting;try{let R=await E0(V.value.trim(),{...J,note:F.value,screenshotDataUrl:this.annotator?.hasShapes()?this.annotator.toDataUrl():J.screenshotDataUrl}),_=this.dispatchEvent(new CustomEvent(\"lw-report-submitted\",{detail:R,bubbles:!0,composed:!0,cancelable:!0}));if(this.close(),_)c(`${j.submitted} — #${R.number}`,\"success\")}catch(R){let _=R instanceof Error?R.message:j.failed;I.dataset.tone=\"error\",I.textContent=_,c(`${j.failed} — ${_}`,\"error\"),w.disabled=!1}}),V.focus()}screenshotSection(j,J){let Q=g0(j.annotateHint),Z=O(\"div\",\"tools\"),z=document.createElement(\"canvas\"),V=O(\"div\",\"shot\");V.append(z);let Y=[],F=(w)=>{for(let q of Y)q.setAttribute(\"aria-pressed\",String(q===w))};for(let{tool:w,key:q}of r4){let N=i(j[q]);N.setAttribute(\"aria-pressed\",\"false\"),N.addEventListener(\"click\",()=>{let R=N.getAttribute(\"aria-pressed\")===\"true\";F(R?null:N),this.annotator?.setTool(R?null:w)}),Y.push(N),Z.append(N)}Z.append(O(\"span\",\"sep\"));let C=i(j.deleteSelected);C.addEventListener(\"click\",()=>this.annotator?.deleteSelected());let P=i(j.clearAll);P.addEventListener(\"click\",()=>{this.annotator?.clear(),F(null)}),Z.append(C,P);let I=new Image;return I.onload=()=>{z.width=I.naturalWidth,z.height=I.naturalHeight,this.annotator=v0(z,I,()=>{F(null),C.disabled=!this.annotator?.hasSelection()})},I.src=J,[Q,Z,O(\"p\",\"status\",j.annotateHelp),V]}}}function a4(){try{return s1()}catch{return[]}}function O($,j=\"\",J=\"\"){let Q=document.createElement($);if(j)Q.className=j;if(J)Q.textContent=J;return Q}function i($,j=\"\"){let J=document.createElement(\"button\");if(J.type=\"button\",J.textContent=$,j)J.className=j;return J}function g0($,j=\"\",J=!1){let Q=document.createElement(\"label\");if(Q.append(document.createTextNode($)),J){let Z=document.createElement(\"span\");Z.className=\"req\",Z.textContent=\" *\",Q.append(Z)}if(j){let Z=document.createElement(\"span\");Z.className=\"hint\",Z.textContent=` ${j}`,Q.append(Z)}return Q}function m0(){if(typeof window>\"u\"||customElements.get(o))return;customElements.define(o,s4())}var a1=!1;function t4($={}){if(a1||typeof window>\"u\")return;if(!F0()){console.error(\"[debug-capture] configureDebugCapture() must be called before install\");return}if(a1=!0,p1(),w1(),H1(),O1(),$.ui===!1)return;let j=s(B().locale);if(R0((J)=>{c(J.message??j.crashed,\"error\",{label:j.crashAction,onClick:()=>q0(J)})}),m0(),!document.querySelector(o))document.body.append(document.createElement(o))}var e4=new Set([\"error\",\"exception\",\"unhandledrejection\"]);function t1($){if($.error)return!0;return $.status!==null&&$.status>=400}function y0($){if(!$)return null;let j=Date.parse($);return Number.isNaN(j)?null:j}function $5($){try{let{pathname:j}=new URL($,\"http://x\");try{return decodeURIComponent(j)}catch{return j}}catch{return $.split(/[?#]/)[0]??$}}function j5($,j,J){let Q=(V)=>({elapsedMs:V,requests:[],failedRequests:[],consoleErrors:[],slowestMs:null});if($.length===0)return[];let Z=$.map((V)=>y0(V.at)),z=(V)=>{for(let Y=V+1;Y<Z.length;Y+=1){let F=Z[Y];if(F!=null)return F}return Number.POSITIVE_INFINITY};return $.map((V,Y)=>{let F=Z[Y]??null,C=(Y>0?Z[Y-1]:null)??null,P=F!==null&&C!==null?Math.max(0,F-C):null;if(F===null)return Q(P);let I=F,w=Math.max(I,z(Y)),q=(D)=>D!==null&&D>=I&&(D<w||w===Number.POSITIVE_INFINITY),N=j.filter((D)=>q(y0(D.startedAt))),R=J.filter((D)=>e4.has(D.level)&&q(y0(D.at))),_=N.map((D)=>D.durationMs).filter((D)=>typeof D===\"number\");return{elapsedMs:P,requests:N,failedRequests:N.filter(t1),consoleErrors:R,slowestMs:_.length>0?Math.max(..._):null}})}function J5($,j){return $.requests.length===0&&$.consoleErrors.length===0&&($.elapsedMs===null||$.elapsedMs<j)}function Q5($){if($<1000)return`${Math.round($)} มิลลิวินาที`;let j=$/1000;if(j<10)return`${j.toFixed(1)} วิ`;if(j<60)return`${Math.round(j)} วิ`;let J=Math.floor(j/60),Q=Math.round(j%60);return Q===0?`${J} นาที`:`${J} นาที ${Q} วิ`}class X0 extends Error{status;constructor($,j){super($);this.status=j}}class K0 extends Error{constructor(){super(\"[debug-capture] no reporter identity — configure `identity` to use the tickets panel\")}}function e1(){return B().host.replace(/\\/$/,\"\")}async function Z5(){let $=B().identity;if(!$)throw new K0;let j=await $();if(!j)throw new K0;return j}async function T($,j={}){let J=await Z5(),Q=await fetch(`${e1()}/ingest/me${$}`,{...j,headers:{\"x-realm-key\":B().realmKey,authorization:`Bearer ${J}`,...j.body?{\"content-type\":\"application/json\"}:{},...j.headers}});if(!Q.ok){let Z=await Q.json().then((z)=>z.error).catch(()=>null);throw new X0(Z??`Request failed (${Q.status})`,Q.status)}return await Q.json()}async function z5(){let{items:$}=await T(\"/tickets\");return $}function W5($){return T(`/tickets/${encodeURIComponent($)}`)}function V5($){return T(`/tickets/by-number/${$}`)}function K5($){return T(`/attachments/${encodeURIComponent($)}`)}function X5($){return T(`/tickets/${encodeURIComponent($)}/history`)}function Y5($,j){return T(`/tickets/${encodeURIComponent($)}/messages`,{method:\"POST\",body:JSON.stringify({body:j})})}function G5($,j,J){return T(`/tickets/${encodeURIComponent($)}/messages/${encodeURIComponent(j)}`,{method:\"PUT\",body:JSON.stringify({body:J})})}function F5($,j){return T(`/tickets/${encodeURIComponent($)}/reopen`,{method:\"POST\",body:JSON.stringify({note:j?.trim()||void 0})})}function H5($,j,J){return T(`/tickets/${encodeURIComponent($)}/inline-image`,{method:\"POST\",body:JSON.stringify({dataUri:j,filename:J})})}var V0=null;function M5(){if(!V0){let $=encodeURIComponent(B().realmKey);V0=fetch(`${e1()}/ingest/config?key=${$}`).then((j)=>{if(!j.ok)throw new X0(`Config failed (${j.status})`,j.status);return j.json()}).catch((j)=>{throw V0=null,j})}return V0}function $2($,j){let J=($??\"\").trim().toUpperCase().replace(/[^A-Z0-9]+/g,\"\");return J?`${J}-${j}`:`#${j}`}function C5($,j,J){if(!$)return\"—\";let Q=new Date($);if(Number.isNaN(Q.getTime()))return\"—\";try{return new Intl.DateTimeFormat(J===\"en\"?\"en-GB\":\"th-TH-u-ca-buddhist\",{dateStyle:\"medium\",timeStyle:\"short\",timeZone:j}).format(Q)}catch{return Q.toISOString().slice(0,16).replace(\"T\",\" \")}}function U5($,j){let J=new Map($.map((Z)=>[Z.key,Z])),Q=$.map((Z)=>Z.key);return{labelOf:(Z)=>J.get(Z)?.label??Z,columnOf:(Z)=>J.get(Z),isAwaitingReply:(Z)=>J.get(Z)?.awaitingReply===!0,isClosed:(Z)=>J.get(Z)?.bucket===\"closed\",rankOf:(Z)=>{let z=Q.indexOf(Z);return z===-1?Q.length:z},options:[{value:\"\",label:j},...$.map((Z)=>({value:Z.key,label:Z.label}))]}}function j2($){return Boolean($.resolutionNote&&$.resolutionNote.trim())}function J2($){return $.agentReplyCount>0}function b0($){return j2($)?2:J2($)?1:0}function P5($,j,J,Q){let Z=j.trim().toLowerCase();if(!Z)return!0;return[$2(J,$.number),String($.number),$.title,$.category??\"\",Q($.status)].join(\" \").toLowerCase().includes(Z)}function w5($,j,J){let Q=$.direction===\"asc\"?1:-1;return(Z,z)=>{let V=0;switch($.key){case\"number\":V=Z.number-z.number;break;case\"title\":V=(Z.title??\"\").localeCompare(z.title??\"\",\"th\");break;case\"module\":V=(Z.category??\"\").localeCompare(z.category??\"\",\"th\");break;case\"status\":V=j.rankOf(Z.status)-j.rankOf(z.status);break;case\"response\":V=b0(Z)-b0(z);break;case\"createdAt\":V=Date.parse(Z.createdAt)-Date.parse(z.createdAt);break;case\"updatedAt\":V=Date.parse(Z.updatedAt)-Date.parse(z.updatedAt);break}return V!==0?V*Q:(Z.number-z.number)*Q}}var d0=10;function I5($,j,J=d0){return $.slice((j-1)*J,j*J)}function D5($,j=d0){return Math.max(1,Math.ceil($/j))}var u0={blue:{fg:\"#1c5cab\",bg:\"#e8f1fd\"},amber:{fg:\"#92400e\",bg:\"#fef3c7\"},violet:{fg:\"#4a3aa7\",bg:\"#ece9fb\"},emerald:{fg:\"#0f766e\",bg:\"#d9f2ec\"},gray:{fg:\"#4b5563\",bg:\"#f1f2f4\"},red:{fg:\"#b91c1c\",bg:\"#fde8e8\"},sky:{fg:\"#0369a1\",bg:\"#e0f2fe\"},rose:{fg:\"#be123c\",bg:\"#ffe4e9\"},teal:{fg:\"#0f766e\",bg:\"#d7f2ef\"},orange:{fg:\"#c2410c\",bg:\"#ffedd5\"}};function B5($){return u0[$??\"\"]??u0.gray}var Q2=new Set([\"p\",\"br\",\"strong\",\"b\",\"em\",\"i\",\"u\",\"s\",\"code\",\"pre\",\"ul\",\"ol\",\"li\",\"blockquote\",\"h1\",\"h2\",\"h3\",\"a\",\"img\",\"span\"]),Z2=new Set([\"href\",\"target\",\"rel\",\"src\",\"alt\",\"title\"]),N5=/^\\/api\\/inline\\/[a-f0-9]{64}$/i;function z2($){return/^(?:https?:\\/\\/|mailto:|#|\\/)/i.test($.trim())}function W2($,j){try{let J=new URL($.trim(),j);return J.origin===new URL(j).origin&&N5.test(J.pathname)}catch{return!1}}var q5=/<\\/(p|div|li|h[1-6]|tr)\\s*>/gi,R5=/<br\\s*\\/?>/gi,S5=/<[^>]*>/g,O5={\" \":\" \",\"&\":\"&\",\"<\":\"<\",\">\":\">\",\""\":'\"',\"'\":\"'\"};function c0($){return/<[a-z/][^>]*>/i.test($)}function _5($){if(!c0($))return $;return $.replace(R5,`\n`).replace(q5,`\n`).replace(S5,\"\").replace(/&[a-z#0-9]+;/gi,(j)=>O5[j.toLowerCase()]??j).split(`\n`).map((j)=>j.trim()).filter(Boolean).join(`\n`)}function V2($,j,J){if($.textContent=\"\",!c0(j)){for(let[Z,z]of j.split(`\n`).entries()){if(Z)$.append(document.createElement(\"br\"));$.append(document.createTextNode(z))}return}let Q=new DOMParser().parseFromString(j,\"text/html\");for(let Z of Array.from(Q.body.childNodes)){let z=K2(Z,J);if(z)$.append(z)}}var f5=new Set([\"script\",\"style\",\"iframe\",\"object\",\"embed\",\"noscript\",\"template\",\"svg\",\"math\"]);function K2($,j){if($.nodeType===3)return document.createTextNode($.nodeValue??\"\");if($.nodeType!==1)return null;let J=$,Q=J.tagName.toLowerCase();if(f5.has(Q))return null;let Z=Q2.has(Q),z=Z?document.createElement(Q):document.createDocumentFragment();if(Z){let V=z;for(let Y of Array.from(J.attributes)){let F=Y.name.toLowerCase();if(!Z2.has(F))continue;if(F===\"href\"&&!z2(Y.value))continue;if(F===\"src\"){if(Q!==\"img\"||!W2(Y.value,j))continue;V.setAttribute(\"src\",T5(Y.value,j));continue}V.setAttribute(F,Y.value)}if(Q===\"a\")V.setAttribute(\"target\",\"_blank\"),V.setAttribute(\"rel\",\"noopener noreferrer nofollow\");if(Q===\"img\"&&!V.getAttribute(\"src\"))return null}for(let V of Array.from(J.childNodes)){let Y=K2(V,j);if(Y)z.append(Y)}return z}function L5($,j){let J=document.createElement(\"div\");V2(J,$,j);let Q=k5(j);if(Q)for(let Z of Array.from(J.querySelectorAll(\"img\"))){let z=Z.getAttribute(\"src\")??\"\";if(z.startsWith(`${Q}/`))Z.setAttribute(\"src\",z.slice(Q.length))}return J.innerHTML}function k5($){try{return new URL($).origin}catch{return null}}function A5($){if(!$)return!0;if(/<img\\b/i.test($))return!1;return $.replace(/<[^>]*>/g,\"\").replace(/ /g,\" \").trim()===\"\"}function T5($,j){let J=$.trim();if(!J.startsWith(\"/\"))return J;return`${j.replace(/\\/$/,\"\")}${J}`}var x5=[\"bold\",\"italic\",\"underline\",\"bulletList\",\"orderedList\",\"link\",\"image\"],E5=[\"bold\",\"italic\",\"underline\",\"strike\",\"code\",\"bulletList\",\"orderedList\",\"blockquote\",\"link\",\"image\"];var p5={title:\"ปัญหาที่แจ้ง\",intro:\"ปัญหาที่คุณแจ้งไว้ พร้อมสถานะล่าสุด\",searchPlaceholder:\"ค้นหาเลขที่/หัวข้อ/โมดูล\",searchLabel:\"ค้นหาปัญหาที่แจ้ง\",allStatuses:\"ทุกสถานะ\",count:($)=>`${$} รายการ`,colNumber:\"เลขที่\",colTitle:\"หัวข้อ\",colModule:\"โมดูล\",colStatus:\"สถานะ\",colResponse:\"คำตอบจากทีม\",colCreated:\"แจ้งเมื่อ\",colUpdated:\"อัปเดตล่าสุด\",awaitingReply:\"รอคุณตอบกลับ\",hasSolution:\"มีวิธีแก้ไข\",hasReply:\"ตอบกลับแล้ว\",noReply:\"ยังไม่มีการตอบกลับ\",empty:\"คุณยังไม่ได้แจ้งปัญหา\",emptyFiltered:\"ไม่พบรายการที่ตรงกับการค้นหา\",loading:\"กำลังโหลด…\",listFailed:\"โหลดรายการไม่สำเร็จ\",detailFailed:\"โหลดรายงานไม่สำเร็จ\",signedOut:\"กรุณาเข้าสู่ระบบเพื่อดูปัญหาที่แจ้งไว้\",back:\"กลับไปรายการ\",reportedBy:\"แจ้งเมื่อ\",conversation:\"การสนทนา\",resolution:\"วิธีแก้ไข\",noMessages:\"ยังไม่มีข้อความ\",you:\"คุณ\",team:\"ทีมงาน\",reporterRole:\"ผู้แจ้ง\",edited:\"แก้ไขแล้ว\",edit:\"แก้ไข\",saveEdit:\"บันทึกการแก้ไข\",cancel:\"ยกเลิก\",replyPlaceholder:\"พิมพ์ข้อความถึงทีมงาน\",bold:\"ตัวหนา\",italic:\"ตัวเอียง\",underline:\"ขีดเส้นใต้\",strike:\"ขีดฆ่า\",code:\"โค้ด\",blockquote:\"ยกคำพูด\",bulletList:\"รายการหัวข้อ\",orderedList:\"รายการตัวเลข\",link:\"ลิงก์\",linkPrompt:\"ใส่ลิงก์\",linkNeedsSelection:\"เลือกข้อความที่ต้องการทำลิงก์ก่อน\",linkInvalid:\"ลิงก์ต้องขึ้นต้นด้วย http:// หรือ https://\",attachImage:\"แนบรูป\",uploading:\"กำลังอัปโหลดรูป…\",send:\"ส่งข้อความ\",sending:\"กำลังส่ง…\",sent:\"ส่งข้อความแล้ว\",sendFailed:\"ส่งไม่สำเร็จ ลองใหม่อีกครั้ง\",reopen:\"ยังมีปัญหา\",reopenHint:\"ถ้าปัญหายังไม่หาย แจ้งทีมงานอีกครั้งได้\",reopening:\"กำลังแจ้ง…\",reopened:\"แจ้งทีมงานอีกครั้งแล้ว — เรากำลังดูให้ครับ\",reopenFailed:\"เปิดเรื่องไม่สำเร็จ ลองใหม่อีกครั้ง\",close:\"ปิด\",retry:\"ลองใหม่\",page:\"หน้า\",of:($,j)=>`หน้า ${$} จาก ${j}`,prev:\"ก่อนหน้า\",next:\"ถัดไป\"},h5={title:\"My reports\",intro:\"The problems you have reported, with their latest status\",searchPlaceholder:\"Search number / title / module\",searchLabel:\"Search my reports\",allStatuses:\"All statuses\",count:($)=>`${$} item${$===1?\"\":\"s\"}`,colNumber:\"No.\",colTitle:\"Title\",colModule:\"Module\",colStatus:\"Status\",colResponse:\"Team response\",colCreated:\"Reported\",colUpdated:\"Last update\",awaitingReply:\"Awaiting your reply\",hasSolution:\"Solution provided\",hasReply:\"Replied\",noReply:\"No reply yet\",empty:\"You have not reported anything yet\",emptyFiltered:\"Nothing matches that search\",loading:\"Loading…\",listFailed:\"Could not load your reports\",detailFailed:\"Could not load this report\",signedOut:\"Sign in to see the problems you have reported\",back:\"Back to the list\",reportedBy:\"Reported\",conversation:\"Conversation\",resolution:\"Solution\",noMessages:\"No messages yet\",you:\"You\",team:\"Support\",reporterRole:\"Reporter\",edited:\"edited\",edit:\"Edit\",saveEdit:\"Save changes\",cancel:\"Cancel\",replyPlaceholder:\"Write a message to the team\",bold:\"Bold\",italic:\"Italic\",underline:\"Underline\",strike:\"Strikethrough\",code:\"Code\",blockquote:\"Quote\",bulletList:\"Bulleted list\",orderedList:\"Numbered list\",link:\"Link\",linkPrompt:\"Enter a link\",linkNeedsSelection:\"Select the text you want to link first\",linkInvalid:\"A link must start with http:// or https://\",attachImage:\"Add an image\",uploading:\"Uploading the image…\",send:\"Send\",sending:\"Sending…\",sent:\"Message sent\",sendFailed:\"Could not send — try again\",reopen:\"Still a problem\",reopenHint:\"If the problem is not fixed, tell the team again\",reopening:\"Sending…\",reopened:\"The team has been notified — we are looking at it\",reopenFailed:\"Could not reopen — try again\",close:\"Close\",retry:\"Try again\",page:\"Page\",of:($,j)=>`Page ${$} of ${j}`,prev:\"Previous\",next:\"Next\"};function v5($){return $===\"en\"?h5:p5}export{H5 as uploadInlineImage,x0 as trimToBudget,_5 as toPlainText,y1 as toCurl,v5 as ticketStrings,$2 as ticketKey,E0 as submitBundle,B5 as statusTone,U5 as statusMaps,c as showToast,n4 as setErroredQueriesSource,b0 as responseRank,$5 as requestPath,s as reporterStrings,Y5 as replyToTicket,F5 as reopenMyTicket,V2 as renderBody,y as redactUrl,g as redactLabel,m as redactHeaders,b as redactBody,I5 as pageOf,D5 as pageCount,N0 as onLaunch,R0 as onCrash,P5 as matchesKeyword,c0 as looksLikeHtml,z5 as listMyTickets,q0 as launch,J5 as isQuietStep,t1 as isFailedRequest,F0 as isConfigured,W2 as isAllowedImageSrc,z2 as isAllowedHref,t4 as installDebugCapture,A5 as htmlIsEmpty,J2 as hasTeamReply,j2 as hasSolution,T4 as hasCause,O0 as getNetworkLog,X5 as getMyTicketHistory,V5 as getMyTicketByNumber,W5 as getMyTicket,B0 as getConsoleLog,B as getConfig,K5 as getAttachmentUrl,I0 as getActionTrail,Q5 as formatDuration,C5 as formatDateTime,M5 as fetchRealmConfig,A0 as errorSignature,S0 as emitCrash,G5 as editMyMessage,m0 as defineReporterElement,v0 as createAnnotator,j5 as correlateActionTrail,C2 as configureDebugCapture,w5 as compareBy,L5 as cleanHtml,k0 as captureScreen,L4 as bundleToMarkdown,A4 as bundleFileName,L0 as buildBundle,x as appInfo,P0 as actionCountSuffix,X0 as TicketApiError,u0 as STATUS_TONES,o as REPORTER_TAG,v as REDACTED,d0 as PAGE_SIZE,K0 as NoIdentityError,x5 as NOTE_TOOLBAR,E5 as FULL_TOOLBAR,T0 as BUNDLE_BUDGET_BYTES,Q2 as ALLOWED_TAGS,Z2 as ALLOWED_ATTR};\n","<script setup lang=\"ts\">\n/**\n * Arms the capture buffers and mounts the reporter. Renders nothing.\n *\n * Mount it once, in App.vue above the router-view — the buffers must be\n * recording BEFORE a user hits a problem, or the report arrives with no trail\n * of how they got there.\n */\nimport { onMounted } from \"vue\";\nimport {\n configureDebugCapture,\n installDebugCapture,\n isConfigured,\n setErroredQueriesSource,\n type DebugCaptureConfig,\n type ErroredQuery,\n} from \"@lightworkai.official/debug-capture\";\n\nconst props = withDefaults(\n defineProps<{\n /** Mount the built-in reporter UI. Off if the host renders its own. */\n ui?: boolean;\n /** Failed queries from the app's data layer, if it has one. */\n errorQueries?: () => ErroredQuery[];\n /** The config, if you did not call configureDebugCapture at module scope. */\n config?: DebugCaptureConfig;\n }>(),\n { ui: true },\n);\n\n// In setup, not onMounted: a mounted hook runs after the first paint, and\n// anything the app fetched or logged before then would be missed.\nif (props.config && !isConfigured()) configureDebugCapture(props.config);\n\nonMounted(() => {\n if (props.errorQueries) setErroredQueriesSource(props.errorQueries);\n installDebugCapture({ ui: props.ui });\n});\n</script>\n\n<template><span style=\"display: none\" /></template>\n","import { h, type FunctionalComponent } from \"vue\";\n\n/** The reporter's own glyph, drawn rather than depending on an icon set. */\nexport const BugIcon: FunctionalComponent = () =>\n h(\n \"svg\",\n {\n width: 20,\n height: 20,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": 1.8,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"aria-hidden\": \"true\",\n },\n [\n h(\"path\", { d: \"M8 2l1.9 1.9M16 2l-1.9 1.9\" }),\n h(\"rect\", { x: 8, y: 6, width: 8, height: 14, rx: 4 }),\n h(\"path\", { d: \"M3 13h5M16 13h5M4 8l3 2M20 8l-3 2M4 18l3-2M20 18l-3-2\" }),\n ],\n );\n","<script setup lang=\"ts\">\n/**\n * The button that opens the reporter.\n *\n * `launch` runs straight out of the click with nothing awaited in front of it:\n * screen capture is gated on a user gesture, and one `await` between the click\n * and `getDisplayMedia` loses it — the browser then refuses with an error that\n * explains nothing.\n *\n * Unstyled by default. It lands in the host's own header, and a widget with\n * opinions about its border radius is a widget somebody has to fight.\n */\nimport { launch } from \"@lightworkai.official/debug-capture\";\nimport { BugIcon } from \"./BugIcon\";\n\nwithDefaults(defineProps<{ label?: string }>(), { label: \"รายงานปัญหา\" });\n\nfunction report(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n launch({ type: \"manual\" });\n}\n</script>\n\n<template>\n <button type=\"button\" :aria-label=\"label\" :title=\"label\" @click=\"report\">\n <slot><BugIcon /></slot>\n </button>\n</template>\n","<script setup lang=\"ts\">\n/**\n * A status as the realm coloured it.\n *\n * The tone arrives as DATA — a realm adds lanes whenever it likes — so it is an\n * inline style rather than a class. There is no stylesheet that could know the\n * names in advance.\n */\ndefineProps<{ label: string; tone: { fg: string; bg: string } }>();\n</script>\n\n<template>\n <span class=\"lw-status\" :style=\"{ background: tone.bg, color: tone.fg }\">{{ label }}</span>\n</template>\n","/**\n * The toolbar's icons, as tiny functional components.\n *\n * Drawn rather than imported: the original uses lucide, and a package that\n * pulled an icon set in so a reply box could show a B would cost every consumer\n * that dependency. These are the same lucide paths at the same 24-unit scale.\n */\nimport { h, type FunctionalComponent } from \"vue\";\n\nfunction glyph(paths: string[], extra: Record<string, unknown> = {}): FunctionalComponent {\n const component: FunctionalComponent = () =>\n h(\n \"svg\",\n {\n width: 15,\n height: 15,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": 2,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"aria-hidden\": \"true\",\n ...extra,\n },\n paths.map((d) => h(\"path\", { d })),\n );\n return component;\n}\n\nexport const BoldIcon = glyph([\"M6 4h8a4 4 0 0 1 0 8H6z\", \"M6 12h9a4 4 0 0 1 0 8H6z\"]);\nexport const ItalicIcon = glyph([\"M19 4h-9\", \"M14 20H5\", \"M15 4L9 20\"]);\nexport const UnderlineIcon = glyph([\"M6 4v6a6 6 0 0 0 12 0V4\", \"M4 20h16\"]);\nexport const BulletListIcon = glyph([\n \"M8 6h13\", \"M8 12h13\", \"M8 18h13\", \"M3 6h.01\", \"M3 12h.01\", \"M3 18h.01\",\n]);\nexport const OrderedListIcon = glyph([\n \"M10 6h11\", \"M10 12h11\", \"M10 18h11\", \"M4 6h1v4\", \"M4 10h2\", \"M6 18H4c0-1 2-2 2-3s-1-1.5-2-1\",\n]);\nexport const LinkIcon = glyph([\n \"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\",\n \"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\",\n]);\nexport const ImageIcon = glyph([\n \"M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2z\",\n \"M8.5 10a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z\",\n \"M21 15l-5-5L5 21\",\n]);\nexport const SendIcon = glyph([\"M22 2L11 13\", \"M22 2l-7 20-4-9-9-4 20-7z\"]);\nexport const SearchIcon = glyph([\"M21 21l-4.34-4.34\", \"M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16z\"]);\nexport const ArrowLeftIcon = glyph([\"M19 12H5\", \"M12 19l-7-7 7-7\"]);\nexport const CheckIcon = glyph([\"M20 6L9 17l-5-5\"]);\nexport const MessageIcon = glyph([\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"]);\nexport const RotateIcon = glyph([\"M3 12a9 9 0 1 0 3-6.7L3 8\", \"M3 3v5h5\"]);\nexport const AlertIcon = glyph([\"M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20z\", \"M12 8v4\", \"M12 16h.01\"]);\nexport const InboxIcon = glyph([\n \"M22 12h-6l-2 3h-4l-2-3H2\",\n \"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\",\n]);\nexport const ClockIcon = glyph([\"M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20z\", \"M12 6v6l4 2\"]);\nexport const CheckCircleIcon = glyph([\"M22 11.08V12a10 10 0 1 1-5.93-9.14\", \"M22 4L12 14.01l-3-3\"]);\nexport const BanIcon = glyph([\"M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20z\", \"M4.93 4.93l14.14 14.14\"]);\nexport const WrenchIcon = glyph([\n \"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\",\n]);\n\n/* The annotator toolbar — the same four tools the app's dialog offers. */\nexport const SquareIcon = glyph([\"M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2z\"], { width: 14, height: 14 });\nexport const ArrowUpRightIcon = glyph([\"M7 17L17 7\", \"M7 7h10v10\"], { width: 14, height: 14 });\nexport const HighlighterIcon = glyph([\n \"M9 11l-6 6v3h9l3-3\", \"M22 12l-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4\",\n], { width: 14, height: 14 });\nexport const TypeIcon = glyph([\"M4 7V4h16v3\", \"M9 20h6\", \"M12 4v16\"], { width: 14, height: 14 });\nexport const TrashIcon = glyph([\n \"M3 6h18\", \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\",\n], { width: 14, height: 14 });\n\n/* The three the admin composer had grown beyond the original's NOTE_TOOLBAR. */\nexport const StrikeIcon = glyph([\"M16 4H9a3 3 0 0 0-2.83 4\", \"M14 12a4 4 0 0 1 0 8H6\", \"M4 12h16\"]);\nexport const CodeIcon = glyph([\"M16 18l6-6-6-6\", \"M8 6l-6 6 6 6\"]);\nexport const QuoteIcon = glyph([\n \"M3 21c3 0 7-1 7-8V5a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h3\",\n \"M14 21c3 0 7-1 7-8V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h3\",\n]);\n\nexport const PencilIcon = glyph([\n \"M12 20h9\", \"M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z\",\n], { width: 11, height: 11 });\nexport const CheckIcon2 = glyph([\"M20 6L9 17l-5-5\"], { width: 12, height: 12 });\nexport const XIcon = glyph([\"M18 6L6 18\", \"M6 6l12 12\"], { width: 12, height: 12 });\n","<script setup lang=\"ts\">\n/**\n * The reporter's list — the original's seven columns, as a template.\n *\n * Every decision here is imported: which rows survive the filter, how a column\n * sorts, what \"the team replied\" means, how a date reads. That is the point of\n * the split. This file arranges them; it decides nothing.\n */\nimport { computed } from \"vue\";\nimport {\n compareBy,\n formatDateTime,\n hasSolution,\n hasTeamReply,\n matchesKeyword,\n pageCount,\n pageOf,\n statusTone,\n ticketKey,\n type MyTicketListItem,\n type Sort,\n type SortKey,\n type StatusMaps,\n type TicketStrings,\n} from \"@lightworkai.official/debug-capture\";\nimport StatusPill from \"./StatusPill.vue\";\nimport { CheckIcon, MessageIcon } from \"./icons\";\n\nconst props = defineProps<{\n items: MyTicketListItem[];\n maps: StatusMaps;\n t: TicketStrings;\n slug: string | undefined;\n timezone: string;\n locale: \"th\" | \"en\" | undefined;\n keyword: string;\n statusFilter: string;\n sort: Sort;\n page: number;\n}>();\n\nconst emit = defineEmits<{\n (e: \"open\", id: string): void;\n (e: \"sort\", key: SortKey): void;\n (e: \"page\", page: number): void;\n}>();\n\nconst columns: { key: SortKey; label: keyof TicketStrings; width?: string }[] = [\n { key: \"number\", label: \"colNumber\", width: \"120px\" },\n { key: \"title\", label: \"colTitle\" },\n { key: \"module\", label: \"colModule\", width: \"160px\" },\n { key: \"status\", label: \"colStatus\", width: \"130px\" },\n { key: \"response\", label: \"colResponse\", width: \"150px\" },\n { key: \"createdAt\", label: \"colCreated\", width: \"170px\" },\n { key: \"updatedAt\", label: \"colUpdated\", width: \"170px\" },\n];\n\nconst visible = computed(() =>\n props.items\n .filter((item) => (props.statusFilter ? item.status === props.statusFilter : true))\n .filter((item) => matchesKeyword(item, props.keyword, props.slug, props.maps.labelOf))\n .sort(compareBy(props.sort, props.maps, props.slug)),\n);\n\nconst pages = computed(() => pageCount(visible.value.length));\n// A filter can strand the reader past the end of the shorter list.\nconst current = computed(() => Math.min(props.page, pages.value));\nconst rows = computed(() => pageOf(visible.value, current.value));\n\ndefineExpose({ count: computed(() => visible.value.length) });\n\nfunction when(iso: string | null): string {\n return formatDateTime(iso, props.timezone, props.locale);\n}\n</script>\n\n<template>\n <div class=\"lw-tablewrap\">\n <table class=\"lw-table\">\n <thead>\n <tr>\n <th\n v-for=\"column in columns\"\n :key=\"column.key\"\n scope=\"col\"\n class=\"lw-th\"\n :style=\"column.width ? { width: column.width } : undefined\"\n :aria-sort=\"\n sort.key === column.key ? (sort.direction === 'asc' ? 'ascending' : 'descending') : undefined\n \"\n @click=\"emit('sort', column.key)\"\n >\n {{ t[column.label] }}\n <span class=\"lw-arrow\">{{\n sort.key === column.key ? (sort.direction === \"asc\" ? \"▲\" : \"▼\") : \"⇅\"\n }}</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr v-if=\"!rows.length\">\n <td :colspan=\"columns.length\" class=\"lw-empty\">\n {{ items.length === 0 ? t.empty : t.emptyFiltered }}\n </td>\n </tr>\n <tr v-for=\"row in rows\" :key=\"row.id\" class=\"lw-row\" tabindex=\"0\" @click=\"emit('open', row.id)\" @keydown.enter.space.prevent=\"emit('open', row.id)\">\n <td class=\"lw-num\">{{ ticketKey(slug, row.number) }}</td>\n <td class=\"lw-title\">{{ row.title }}</td>\n <td>\n <span v-if=\"row.category\" class=\"lw-chip\">{{ row.category }}</span>\n <span v-else class=\"lw-dash\">—</span>\n </td>\n <td>\n <!-- \"Waiting on you\" outranks the neutral status: it is the honest\n state and the only one the reporter can act on. -->\n <span v-if=\"maps.isAwaitingReply(row.status)\" class=\"lw-pill lw-pill--awaiting\">\n <MessageIcon /> {{ t.awaitingReply }}\n </span>\n <StatusPill v-else :label=\"maps.labelOf(row.status)\" :tone=\"statusTone(maps.columnOf(row.status)?.color)\" />\n </td>\n <td>\n <span v-if=\"hasSolution(row)\" class=\"lw-pill lw-pill--solution\"><CheckIcon /> {{ t.hasSolution }}</span>\n <span v-else-if=\"hasTeamReply(row)\" class=\"lw-pill lw-pill--replied\"><MessageIcon /> {{ t.hasReply }}</span>\n <span v-else class=\"lw-muted\">{{ t.noReply }}</span>\n </td>\n <td class=\"lw-dim\">{{ when(row.createdAt) }}</td>\n <td class=\"lw-dim\">{{ when(row.updatedAt) }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div v-if=\"visible.length > rows.length || current > 1\" class=\"lw-pager\">\n <span>{{ t.of(current, pages) }}</span>\n <button type=\"button\" class=\"lw-btn\" :disabled=\"current <= 1\" @click=\"emit('page', current - 1)\">\n {{ t.prev }}\n </button>\n <button type=\"button\" class=\"lw-btn\" :disabled=\"current >= pages\" @click=\"emit('page', current + 1)\">\n {{ t.next }}\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * A message or description body, rendered safely.\n *\n * Deliberately NOT `v-html`. Bodies are HTML written by other people and shown\n * inside the HOST application's page — markup that ran here would run with the\n * host's origin, against the host's session. `renderBody` parses into an inert\n * document, walks it against an allowlist and fills this node; `v-html` would\n * hand the string straight to innerHTML.\n */\nimport { onMounted, ref, watch } from \"vue\";\nimport { renderBody } from \"@lightworkai.official/debug-capture\";\n\nconst props = defineProps<{ html: string; host: string }>();\nconst target = ref<HTMLElement | null>(null);\n/**\n * The image being viewed full size, if any.\n *\n * Bodies are capped to a thumbnail so one screenshot cannot push a whole\n * conversation off the screen — which is only reasonable if the full size is a\n * click away.\n *\n * Delegated from the container rather than bound per image: this is sanitised\n * HTML we inject, not elements we built, so there is nothing to attach to.\n */\nconst zoomed = ref<string | null>(null);\n\nfunction onClick(event: MouseEvent): void {\n const node = event.target as HTMLElement | null;\n if (!node || node.tagName !== \"IMG\") return;\n const src = node.getAttribute(\"src\");\n if (src) zoomed.value = src;\n}\n\nfunction paint(): void {\n if (target.value) renderBody(target.value, props.html, props.host);\n}\n\nonMounted(paint);\nwatch(() => [props.html, props.host], paint);\n</script>\n\n<template>\n <div ref=\"target\" class=\"lw-body\" @click=\"onClick\" />\n\n <div v-if=\"zoomed\" class=\"lw-zoom\" role=\"dialog\" aria-modal=\"true\" @click=\"zoomed = null\">\n <button type=\"button\" class=\"lw-zoom__close\" aria-label=\"close\">✕</button>\n <img :src=\"zoomed\" alt=\"\" />\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * Where the report stands, in one banner.\n *\n * The status LINE is config-first: an awaiting lane's \"please reply\" wins, then\n * the lane's own description (so a realm's custom lane carries its own words),\n * then our default copy, then the bare label.\n */\nimport { computed } from \"vue\";\nimport type { MyTicketDetail, StatusMaps, TicketStrings } from \"@lightworkai.official/debug-capture\";\nimport TicketBody from \"./TicketBody.vue\";\nimport { BanIcon, CheckCircleIcon, ClockIcon, InboxIcon, MessageIcon, WrenchIcon } from \"./icons\";\n\nconst props = defineProps<{\n ticket: MyTicketDetail;\n maps: StatusMaps;\n t: TicketStrings;\n locale: \"th\" | \"en\";\n host: string;\n}>();\n\n/** Only the SYSTEM statuses get a tone; an admin-added lane falls back to OPEN. */\nconst TONES: Record<string, { icon: unknown; border: string; bg: string; fg: string; accent: string }> = {\n OPEN: { icon: InboxIcon, border: \"#bfdbfe\", bg: \"#eff6ff\", fg: \"#1e3a8a\", accent: \"#3b82f6\" },\n IN_PROGRESS: { icon: ClockIcon, border: \"#fde68a\", bg: \"#fffbeb\", fg: \"#78350f\", accent: \"#f59e0b\" },\n RESOLVED: { icon: CheckCircleIcon, border: \"#a7f3d0\", bg: \"#ecfdf5\", fg: \"#064e3b\", accent: \"#10b981\" },\n CLOSED: { icon: CheckCircleIcon, border: \"#e5e7eb\", bg: \"#f9fafb\", fg: \"#1f2937\", accent: \"#9ca3af\" },\n WONT_FIX: { icon: BanIcon, border: \"#e5e7eb\", bg: \"#f9fafb\", fg: \"#374151\", accent: \"#9ca3af\" },\n};\nconst AWAITING = { icon: MessageIcon, border: \"#fcd34d\", bg: \"#fffbeb\", fg: \"#78350f\", accent: \"#f59e0b\" };\n\nconst MESSAGES: Record<string, { th: string; en: string }> = {\n OPEN: { th: \"รับเรื่องแล้ว — รอทีมงานตรวจสอบ\", en: \"Received — waiting for the team to look\" },\n IN_PROGRESS: { th: \"ทีมงานกำลังดำเนินการแก้ไข\", en: \"The team is working on it\" },\n RESOLVED: { th: \"แก้ไขเรียบร้อยแล้ว\", en: \"Fixed\" },\n CLOSED: { th: \"ปิดเรื่องแล้ว\", en: \"Closed\" },\n WONT_FIX: { th: \"พิจารณาแล้ว — ยังไม่ได้ดำเนินการในขณะนี้\", en: \"Reviewed — not being worked on for now\" },\n};\n\nconst awaiting = computed(() => props.maps.isAwaitingReply(props.ticket.status));\nconst tone = computed(() => (awaiting.value ? AWAITING : (TONES[props.ticket.status] ?? TONES.OPEN!)));\n\nconst headline = computed(() => {\n if (awaiting.value) {\n return props.locale === \"en\"\n ? \"The team needs more information from you\"\n : \"ทีมงานขอข้อมูลเพิ่มเติม — รอการตอบกลับจากคุณ\";\n }\n const described = props.maps.columnOf(props.ticket.status)?.description?.trim();\n return described || MESSAGES[props.ticket.status]?.[props.locale] || props.maps.labelOf(props.ticket.status);\n});\n\n/*\n * The solution note, only when the thread does not already carry it. A resolved\n * ticket usually has the team's answer as their last message, and printing the\n * note here as well says the same words twice on one screen. Kept as the\n * fallback for a ticket whose note never reached the conversation.\n */\nconst showNote = computed(\n () =>\n !awaiting.value &&\n !props.ticket.messages.some((m) => m.authorRole === \"AGENT\") &&\n props.maps.isClosed(props.ticket.status) &&\n Boolean(props.ticket.resolutionNote?.trim()),\n);\n</script>\n\n<template>\n <section class=\"lw-hero\" :style=\"{ borderColor: tone.border, background: tone.bg }\">\n <component :is=\"tone.icon\" class=\"lw-hero__icon\" :style=\"{ color: tone.accent }\" />\n <div class=\"lw-hero__body\">\n <p class=\"lw-hero__kicker\">\n {{ awaiting ? (locale === \"en\" ? \"AWAITING YOUR REPLY\" : \"รอการตอบกลับจากคุณ\") : locale === \"en\" ? \"LATEST STATUS\" : \"สถานะล่าสุด\" }}\n </p>\n <p class=\"lw-hero__headline\" :style=\"{ color: tone.fg }\">{{ headline }}</p>\n <p v-if=\"awaiting\" class=\"lw-hero__nudge\">\n {{ locale === \"en\" ? \"Please reply to the team in the conversation below\" : \"กรุณาตอบกลับให้ทีมงานในช่องแชทด้านล่าง\" }}\n </p>\n <div v-if=\"showNote\" class=\"lw-hero__note\">\n <WrenchIcon class=\"lw-hero__wrench\" />\n <TicketBody :html=\"ticket.resolutionNote ?? ''\" :host=\"host\" />\n </div>\n </div>\n </section>\n</template>\n","<script setup lang=\"ts\">\n/**\n * \"Still a problem?\" — a SEPARATE action from the chat, with its own endpoint\n * and its own confirmation, only when the ticket is done and the realm allows it.\n */\nimport { ref } from \"vue\";\nimport type { TicketStrings } from \"@lightworkai.official/debug-capture\";\nimport { RotateIcon } from \"./icons\";\n\ndefineProps<{ t: TicketStrings; locale: \"th\" | \"en\"; busy?: boolean }>();\nconst emit = defineEmits<{ (e: \"reopen\", note: string): void }>();\n\nconst open = ref(false);\nconst note = ref(\"\");\n\nfunction confirm(): void {\n emit(\"reopen\", note.value.trim());\n}\n</script>\n\n<template>\n <section class=\"lw-reopen\">\n <div v-if=\"!open\" class=\"lw-reopen__row\">\n <span class=\"lw-reopen__hint\">{{ locale === \"en\" ? \"Problem not fixed?\" : \"ปัญหายังไม่หาย?\" }}</span>\n <button type=\"button\" class=\"lw-reopen__open\" @click=\"open = true\">\n <RotateIcon /> {{ t.reopen }}\n </button>\n </div>\n <div v-else>\n <p class=\"lw-reopen__title\">{{ t.reopen }}</p>\n <textarea\n v-model=\"note\"\n rows=\"2\"\n class=\"lw-reopen__note\"\n :placeholder=\"locale === 'en' ? 'Tell us what is still happening (optional)…' : 'บอกเราหน่อยว่ายังพบปัญหาอะไร (ไม่ระบุก็ได้)…'\"\n />\n <div class=\"lw-reopen__actions\">\n <button type=\"button\" class=\"lw-reopen__cancel\" @click=\"open = false; note = ''\">\n {{ locale === \"en\" ? \"Cancel\" : \"ยกเลิก\" }}\n </button>\n <button type=\"button\" class=\"lw-reopen__confirm\" :disabled=\"busy\" @click=\"confirm\">\n <RotateIcon /> {{ busy ? t.reopening : t.reopen }}\n </button>\n </div>\n </div>\n </section>\n</template>\n","<script setup lang=\"ts\">\n/**\n * The lifecycle, chronologically — including a reopen, which is the event a\n * fixed happy-path progress bar hides and the one a reporter most wants to see\n * recorded.\n */\nimport { computed } from \"vue\";\nimport { formatDateTime, type StatusEvent, type StatusMaps } from \"@lightworkai.official/debug-capture\";\nimport { RotateIcon } from \"./icons\";\n\nconst props = defineProps<{\n history: StatusEvent[];\n status: string;\n createdAt: string;\n maps: StatusMaps;\n timezone: string;\n locale: \"th\" | \"en\";\n}>();\n\n/** The forward happy path, for the stages still to come. */\nconst HAPPY = [\"OPEN\", \"IN_PROGRESS\", \"RESOLVED\", \"CLOSED\"];\n\ninterface Node {\n label: string;\n time: string;\n state: \"done\" | \"current\" | \"pending\";\n reopened: boolean;\n}\n\nconst nodes = computed<Node[]>(() => {\n const events = props.history.length\n ? props.history.map((h) => ({ status: h.toStatus, at: h.createdAt }))\n : // A row from before history was recorded still gets one node rather than\n // an empty section.\n [{ status: \"OPEN\", at: props.createdAt }];\n\n const out: Node[] = events.map((event, i) => {\n const previous = events[i - 1];\n return {\n label: i === 0 ? (props.locale === \"en\" ? \"Reported\" : \"รายงานปัญหา\") : props.maps.labelOf(event.status),\n time: formatDateTime(event.at, props.timezone, props.locale),\n state: i === events.length - 1 ? \"current\" : \"done\",\n reopened: Boolean(previous && props.maps.isClosed(previous.status) && !props.maps.isClosed(event.status)),\n };\n });\n\n const index = HAPPY.indexOf(props.status);\n const upcoming = props.maps.isClosed(props.status) || index < 0 ? [] : HAPPY.slice(index + 1);\n for (const status of upcoming) {\n out.push({\n label: props.maps.labelOf(status),\n time: props.locale === \"en\" ? \"Pending\" : \"รอดำเนินการ\",\n state: \"pending\",\n reopened: false,\n });\n }\n return out;\n});\n</script>\n\n<template>\n <ol class=\"lw-timeline\">\n <li v-for=\"(node, i) in nodes\" :key=\"`${node.label}-${i}`\" class=\"lw-node\">\n <div class=\"lw-rail\">\n <span\n v-if=\"i < nodes.length - 1\"\n class=\"lw-line\"\n :class=\"{ 'lw-line--pending': node.state === 'pending' }\"\n />\n <span\n class=\"lw-dot\"\n :class=\"[`lw-dot--${node.state}`, { 'lw-dot--reopened': node.reopened }]\"\n >\n <span v-if=\"node.state === 'current' && !node.reopened\" class=\"lw-pip\" />\n </span>\n </div>\n <div class=\"lw-node__text\" :class=\"{ 'lw-node__text--last': i === nodes.length - 1 }\">\n <div class=\"lw-node__label\" :class=\"[`lw-node__label--${node.state}`, { 'lw-node__label--reopened': node.reopened }]\">\n <RotateIcon v-if=\"node.reopened\" class=\"lw-node__icon\" />\n {{ node.reopened ? `${locale === \"en\" ? \"Reopened\" : \"เปิดใหม่\"} · ${node.label}` : node.label }}\n </div>\n <div class=\"lw-node__time\">{{ node.time }}</div>\n </div>\n </li>\n </ol>\n</template>\n","<script setup lang=\"ts\">\n/**\n * One editor toolbar button.\n *\n * It emits on `mousedown` with the default prevented, not on `click`, and that\n * is the whole reason it is a component rather than a `<button>` repeated seven\n * times: a toolbar button taking focus collapses the editor's selection, so by\n * the time `click` fires the command has nothing to apply to. Getting that\n * wrong is invisible until someone selects a word and presses B.\n */\ndefineProps<{ label: string; active?: boolean; disabled?: boolean }>();\nconst emit = defineEmits<{ (e: \"activate\"): void }>();\n\nfunction activate(event: MouseEvent): void {\n event.preventDefault();\n emit(\"activate\");\n}\n</script>\n\n<template>\n <button\n type=\"button\"\n class=\"lw-tool\"\n :class=\"{ 'lw-tool--on': active }\"\n :title=\"label\"\n :aria-label=\"label\"\n :aria-pressed=\"active ? 'true' : 'false'\"\n :disabled=\"disabled\"\n @mousedown=\"activate\"\n >\n <slot />\n </button>\n</template>\n","<script setup lang=\"ts\">\n/**\n * Draw on an image before it is sent.\n *\n * The original opens this the moment you pick a picture, and the reason is in\n * its own comment: annotating BEFORE upload keeps the canvas same-origin, so\n * `toDataURL` is not tainted by a cross-origin presigned URL. Pointing at the\n * problem is also most of what a screenshot is for.\n *\n * The drawing itself is `createAnnotator` from the core — one canvas engine,\n * shared by all three framework packages, because there is no declarative way\n * to draw on a canvas. What is here is only the chrome: a dialog, a toolbar and\n * two buttons.\n */\nimport { onBeforeUnmount, ref, shallowRef, watch } from \"vue\";\nimport {\n createAnnotator,\n getConfig,\n reporterStrings,\n type Annotator,\n type AnnotatorTool,\n type ReporterStrings,\n} from \"@lightworkai.official/debug-capture\";\nimport { ArrowUpRightIcon, HighlighterIcon, SquareIcon, TrashIcon, TypeIcon } from \"./icons\";\n\nconst props = defineProps<{\n /**\n * The picked image, as a same-origin data URI. Null closes the dialog, so a\n * caller can keep it mounted and drive it from one nullable ref.\n */\n src: string | null;\n /** Shown in the description, as the app's dialog does. */\n filename?: string;\n /** Falls back to the configured locale — a caller inside the app need not pass it. */\n locale?: \"th\" | \"en\";\n}>();\n\nconst emit = defineEmits<{\n /** The annotated image, at full resolution. */\n (e: \"confirm\", dataUri: string): void;\n (e: \"cancel\"): void;\n}>();\n\nconst t = reporterStrings(props.locale ?? safeLocale());\n\n/** `getConfig()` throws when nothing is configured; the dialog still has words. */\nfunction safeLocale(): \"th\" | \"en\" | undefined {\n try {\n return getConfig().locale;\n } catch {\n return undefined;\n }\n}\nconst TOOLS: { tool: AnnotatorTool; key: keyof ReporterStrings; icon: unknown }[] = [\n { tool: \"rect\", key: \"toolRect\", icon: SquareIcon },\n { tool: \"arrow\", key: \"toolArrow\", icon: ArrowUpRightIcon },\n { tool: \"highlight\", key: \"toolHighlight\", icon: HighlighterIcon },\n { tool: \"text\", key: \"toolText\", icon: TypeIcon },\n];\n\nconst canvas = ref<HTMLCanvasElement | null>(null);\n// shallowRef: the annotator holds a canvas and its own mutable state, and Vue\n// has no business making any of that reactive.\nconst annotator = shallowRef<Annotator | null>(null);\nconst active = ref<AnnotatorTool | null>(null);\nconst loading = ref(true);\n\nwatch(\n () => [props.src, canvas.value] as const,\n ([src, node]) => {\n if (!src || !node) return;\n annotator.value?.destroy();\n const image = new Image();\n image.addEventListener(\"load\", () => {\n // A backing store at the image's own size, BEFORE the annotator draws\n // into it. Without this the canvas keeps its default 300x150, the image\n // is squashed into that, and CSS then stretches the result — blurry, and\n // the wrong shape.\n node.width = image.naturalWidth;\n node.height = image.naturalHeight;\n annotator.value = createAnnotator(node, image, () => {\n // The toolbar mirrors the engine, so it has to hear about a tool being\n // CONSUMED as well as a shape being added.\n active.value = null;\n });\n loading.value = false;\n });\n image.src = src;\n },\n { immediate: true },\n);\n\nonBeforeUnmount(() => annotator.value?.destroy());\n\nfunction pick(tool: AnnotatorTool): void {\n active.value = active.value === tool ? null : tool;\n annotator.value?.setTool(active.value);\n}\n\nfunction clearAll(): void {\n annotator.value?.clear();\n active.value = null;\n}\n\nfunction confirm(): void {\n // Full resolution, never the on-screen scale.\n emit(\"confirm\", annotator.value?.toDataUrl() ?? props.src ?? \"\");\n}\n</script>\n\n<template>\n <div v-if=\"src\" class=\"lw-annotator\" role=\"dialog\" aria-modal=\"true\" @click.self=\"emit('cancel')\">\n <div class=\"lw-annotator__panel\">\n <!-- Header, toolbar, canvas, help, footer — the same shape and the same\n words as the app's own dialog, so the two are one thing in two\n places rather than two things that resemble each other. -->\n <div class=\"lw-annotator__head\">\n <div class=\"lw-grow\">\n <h2 class=\"lw-annotator__title\">{{ t.annotateTitle }}</h2>\n <p class=\"lw-annotator__desc\">\n {{ t.annotateHint }}<template v-if=\"filename\"> · {{ filename }}</template>\n </p>\n </div>\n <button type=\"button\" class=\"lw-annotator__close\" :aria-label=\"t.cancel\" @click=\"emit('cancel')\">✕</button>\n </div>\n\n <div class=\"lw-annotator__tools\">\n <button\n v-for=\"tool in TOOLS\"\n :key=\"tool.tool\"\n type=\"button\"\n class=\"lw-atool\"\n :aria-pressed=\"active === tool.tool\"\n :disabled=\"loading\"\n @click=\"pick(tool.tool)\"\n >\n <component :is=\"tool.icon\" /> {{ t[tool.key] }}\n </button>\n <span class=\"lw-grow\" />\n <!-- Right-aligned and on its own, like the app's. Deleting ONE shape is\n the ✕ on the shape, which is what the help line below explains. -->\n <button type=\"button\" class=\"lw-atool lw-atool--plain\" :disabled=\"loading\" @click=\"clearAll\">\n <TrashIcon /> {{ t.clearAll }}\n </button>\n </div>\n\n <div class=\"lw-annotator__canvas\">\n <div class=\"lw-annotator__canvasbox\"><canvas ref=\"canvas\" /></div>\n </div>\n\n <p class=\"lw-annotator__hint\">{{ t.annotateHelp }}</p>\n\n <div class=\"lw-annotator__actions\">\n <span class=\"lw-grow\" />\n <button type=\"button\" class=\"lw-btn\" @click=\"emit('cancel')\">{{ t.cancel }}</button>\n <button type=\"button\" class=\"lw-send\" :disabled=\"loading\" @click=\"confirm\">{{ t.annotateApply }}</button>\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * The reporter's reply box — TipTap, the same editor the original gives them.\n *\n * This was hand-rolled on `contenteditable` + `document.execCommand` for one\n * round, on the reasoning that a package should not ship a rich-text editor.\n * That was wrong twice over: TipTap is a PEER dependency, so an app that\n * already has it (both of ours do) pays nothing, and re-implementing selection\n * handling, list nesting and paste sanitising by hand is a maintenance bill\n * with no upside. The original uses TipTap; so do we.\n */\nimport { computed, onBeforeUnmount, ref, watch } from \"vue\";\nimport { EditorContent, useEditor } from \"@tiptap/vue-3\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport Image from \"@tiptap/extension-image\";\nimport Placeholder from \"@tiptap/extension-placeholder\";\nimport { NOTE_TOOLBAR, cleanHtml, htmlIsEmpty, type EditorTool } from \"@lightworkai.official/debug-capture\";\nimport ToolbarButton from \"./ToolbarButton.vue\";\nimport ImageAnnotatorDialog from \"./ImageAnnotatorDialog.vue\";\nimport {\n BoldIcon, ItalicIcon, UnderlineIcon, StrikeIcon, CodeIcon, BulletListIcon,\n OrderedListIcon, QuoteIcon, LinkIcon, ImageIcon,\n} from \"./icons\";\n\nconst props = withDefaults(\n defineProps<{\n placeholder: string;\n /** Support host origin — the sanitiser resolves inline image URLs against it. */\n host: string;\n disabled?: boolean;\n /** Which controls to show. Defaults to the original's NOTE_TOOLBAR. */\n tools?: EditorTool[];\n /** Hide the toolbar until focused or non-empty. */\n compact?: boolean;\n labels: Record<string, string>;\n /**\n * Store an image and return the URL to reference it by.\n *\n * Optional, and the fallback is not \"no images\" — it is the annotated data\n * URI carried in the body for the server to store on arrival. A composer on\n * a ticket that does not exist yet has nowhere to upload to, and that is a\n * reason to move the work, not to take the feature away.\n */\n uploadImage?: (file: File) => Promise<string>;\n /** UI language, for the annotator's own labels. */\n locale?: \"th\" | \"en\";\n /** Content to start from — editing an existing message rather than writing one. */\n initial?: string;\n }>(),\n { tools: () => NOTE_TOOLBAR, compact: false },\n);\n\n/**\n * Two-way binding, for a host that would rather drive this from a ref than call\n * `value()`. Optional: the panel uses the imperative API, the app uses v-model.\n */\nconst model = defineModel<string>({ required: false });\n\nconst emit = defineEmits<{ (e: \"error\", message: string): void }>();\n\nconst focused = ref(false);\nconst uploading = ref(false);\nconst fileInput = ref<HTMLInputElement | null>(null);\n/**\n * The image waiting to be drawn on, as a same-origin data URI. Non-null means\n * the annotator is open.\n *\n * Every route in — the picker, a paste, a drop — lands here first. The original\n * does the same, and for two reasons: pointing at the problem is most of what a\n * screenshot is for, and annotating BEFORE upload keeps the canvas same-origin,\n * so `toDataURL` is not tainted by a cross-origin presigned URL.\n */\nconst pending = ref<string | null>(null);\nconst pendingName = ref(\"screenshot.png\");\n\nconst editor = useEditor({\n // StarterKit v3 already carries Underline and Link, so the toolbar the\n // original defines needs only two extensions beyond it.\n extensions: [\n StarterKit,\n Image.configure({ inline: false, allowBase64: false }),\n Placeholder.configure({ placeholder: () => props.placeholder }),\n ],\n content: props.initial ?? model.value ?? \"\",\n onUpdate: ({ editor: e }) => {\n // TipTap's \"empty\" document is still <p></p>; report it as empty so a send\n // button bound to the model stays disabled.\n if (model.value !== undefined || props.compact) model.value = e.isEmpty ? \"\" : e.getHTML();\n },\n onFocus: () => (focused.value = true),\n onBlur: () => (focused.value = false),\n editorProps: {\n attributes: { class: \"lw-editor-body\" },\n /**\n * A pasted screenshot is the normal case — Cmd+Shift+4, Cmd+V — and\n * without this the only route is save-to-disk, find-the-file, pick-it.\n */\n handlePaste: (_view, event) => {\n const file = Array.from(event.clipboardData?.files ?? []).find((f) => f.type.startsWith(\"image/\"));\n if (!file) return false;\n event.preventDefault();\n void addImage(file);\n return true;\n },\n handleDrop: (_view, event) => {\n const dropped = event as DragEvent;\n const file = Array.from(dropped.dataTransfer?.files ?? []).find((f) => f.type.startsWith(\"image/\"));\n if (!file) return false;\n dropped.preventDefault();\n void addImage(file);\n return true;\n },\n },\n});\n\nwatch(\n () => props.disabled,\n (off) => editor.value?.setEditable(!off),\n);\n\n// The parent clears the box after a successful send.\nwatch(model, (next) => {\n const current = editor.value;\n if (!current || current.isDestroyed) return;\n if (next === \"\" && !current.isEmpty) current.commands.clearContent();\n});\n\n/**\n * `compact` hides the toolbar until there is something to format.\n *\n * Note what this makes load-bearing: the toolbar UNMOUNTS on blur, so a button\n * that acted on `click` would disappear between mousedown and click and the\n * click would never land. ToolbarButton fires on mousedown for exactly this.\n */\nconst showToolbar = computed(() => !props.compact || focused.value || !editor.value?.isEmpty);\n\ninterface ToolSpec {\n name: string;\n icon: unknown;\n label: string;\n run: () => void;\n}\n\nconst ALL: Record<EditorTool, () => ToolSpec> = {\n bold: () => ({ name: \"bold\", icon: BoldIcon, label: props.labels.bold!, run: () => editor.value?.chain().focus().toggleBold().run() }),\n italic: () => ({ name: \"italic\", icon: ItalicIcon, label: props.labels.italic!, run: () => editor.value?.chain().focus().toggleItalic().run() }),\n underline: () => ({ name: \"underline\", icon: UnderlineIcon, label: props.labels.underline!, run: () => editor.value?.chain().focus().toggleUnderline().run() }),\n strike: () => ({ name: \"strike\", icon: StrikeIcon, label: props.labels.strike!, run: () => editor.value?.chain().focus().toggleStrike().run() }),\n code: () => ({ name: \"code\", icon: CodeIcon, label: props.labels.code!, run: () => editor.value?.chain().focus().toggleCode().run() }),\n bulletList: () => ({ name: \"bulletList\", icon: BulletListIcon, label: props.labels.bulletList!, run: () => editor.value?.chain().focus().toggleBulletList().run() }),\n orderedList: () => ({ name: \"orderedList\", icon: OrderedListIcon, label: props.labels.orderedList!, run: () => editor.value?.chain().focus().toggleOrderedList().run() }),\n blockquote: () => ({ name: \"blockquote\", icon: QuoteIcon, label: props.labels.blockquote!, run: () => editor.value?.chain().focus().toggleBlockquote().run() }),\n link: () => ({ name: \"link\", icon: LinkIcon, label: props.labels.link!, run: toggleLink }),\n image: () => ({ name: \"image\", icon: ImageIcon, label: props.labels.attachImage!, run: pickImage }),\n};\n\n/** The chosen controls, with `image` split off so it can sit after a separator. */\nconst marks = computed(() => props.tools.filter((t) => t !== \"image\").map((t) => ALL[t]()));\nconst hasImage = computed(() => props.tools.includes(\"image\"));\n\nonBeforeUnmount(() => editor.value?.destroy());\n\n/**\n * Open the annotator on a picked image rather than inserting it straight away.\n *\n * One dialog, everywhere. There was briefly a config hook letting a host swap\n * in its own — which solved the symptom (two dialogs that looked different) by\n * blessing the cause (two dialogs). This component IS the one dialog now; the\n * app uses it too.\n */\nasync function addImage(file: File): Promise<void> {\n if (uploading.value || pending.value) return;\n try {\n pendingName.value = file.name || \"screenshot.png\";\n pending.value = await readDataUri(file);\n } catch (e) {\n emit(\"error\", e instanceof Error ? e.message : \"unreadable file\");\n }\n}\n\n/** The annotated image comes back as a data URI; upload THAT and insert it. */\nasync function commitImage(dataUri: string): Promise<void> {\n pending.value = null;\n uploading.value = true;\n try {\n /*\n * No uploader means the host wants the image inline — a composer on a\n * ticket that does not exist yet, with nowhere to upload to. The data URI\n * travels with the body and the server swaps it for a stored one once\n * there is somewhere to put it.\n */\n const src = props.uploadImage\n ? await props.uploadImage(dataUriToFile(dataUri, pendingName.value))\n : dataUri;\n editor.value?.chain().focus().setImage({ src, alt: pendingName.value }).run();\n } catch (e) {\n emit(\"error\", e instanceof Error ? e.message : \"upload failed\");\n } finally {\n uploading.value = false;\n }\n}\n\nfunction readDataUri(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener(\"load\", () =>\n typeof reader.result === \"string\" ? resolve(reader.result) : reject(new Error(\"unreadable file\")),\n );\n reader.addEventListener(\"error\", () => reject(new Error(\"unreadable file\")));\n reader.readAsDataURL(file);\n });\n}\n\n/**\n * Back to a File, because `uploadImage` takes one.\n *\n * The annotator hands back a data URI — it draws on a canvas, and a canvas\n * exports one. Rebuilding a File here keeps the upload contract identical for\n * an annotated image and an untouched one, so the caller never has to care\n * which it got.\n */\nfunction dataUriToFile(dataUri: string, name: string): File {\n const [header, encoded] = dataUri.split(\",\");\n const type = /data:([^;]+)/.exec(header ?? \"\")?.[1] ?? \"image/png\";\n const binary = atob(encoded ?? \"\");\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i += 1) bytes[i] = binary.charCodeAt(i);\n return new File([bytes], name, { type });\n}\n\nfunction pickImage(): void {\n fileInput.value?.click();\n}\n\nfunction onFile(event: Event): void {\n const input = event.target as HTMLInputElement;\n const file = input.files?.[0];\n // Cleared so choosing the same file twice still fires `change`.\n input.value = \"\";\n if (file) void addImage(file);\n}\n\nfunction toggleLink(): void {\n const current = editor.value;\n if (!current) return;\n const existing = current.getAttributes(\"link\").href as string | undefined;\n if (existing) {\n current.chain().focus().unsetLink().run();\n return;\n }\n const href = window.prompt(props.labels.linkPrompt, \"https://\");\n if (!href) return;\n // Only ordinary destinations. The outgoing sanitiser would drop a\n // `javascript:` URL anyway, so allowing it here just shows the writer a link\n // that silently vanishes when they send.\n if (!/^https?:\\/\\//i.test(href)) {\n emit(\"error\", `${props.labels.link}: http(s) only`);\n return;\n }\n current.chain().focus().extendMarkRange(\"link\").setLink({ href }).run();\n}\n\n/**\n * Sanitised HTML, or \"\" when there is nothing worth sending.\n *\n * `cleanHtml` is not belt-and-braces over TipTap's schema. The schema drops an\n * `onclick`, but the Image extension takes any `src` it is given — so a\n * screenshot pasted from a web page arrives with that page's remote image\n * intact, and posting it would store a tracking pixel in the thread aimed at\n * every future reader. The allowlist is what narrows an image to our own.\n */\nfunction value(): string {\n const html = cleanHtml(editor.value?.getHTML() ?? \"\", props.host);\n return htmlIsEmpty(html) ? \"\" : html;\n}\n\nfunction clear(): void {\n editor.value?.commands.clearContent(true);\n}\n\ndefineExpose({ value, clear, focus: () => editor.value?.commands.focus() });\n</script>\n\n<template>\n <div class=\"lw-editor\" :class=\"{ 'lw-editor--disabled': disabled }\">\n <!-- `compact` unmounts this on blur, which is why every button fires on\n mousedown: on click it would disappear between the two and never\n land. -->\n <div v-if=\"showToolbar\" class=\"lw-editor__tools\">\n <ToolbarButton\n v-for=\"tool in marks\"\n :key=\"tool.name\"\n :label=\"tool.label\"\n :active=\"editor?.isActive(tool.name)\"\n :disabled=\"disabled\"\n @activate=\"tool.run()\"\n >\n <component :is=\"tool.icon\" />\n </ToolbarButton>\n\n <template v-if=\"hasImage\">\n <span class=\"lw-editor__sep\" />\n <ToolbarButton :label=\"labels.attachImage ?? ''\" :disabled=\"disabled || uploading\" @activate=\"pickImage\">\n <ImageIcon />\n </ToolbarButton>\n </template>\n <span v-if=\"uploading\" class=\"lw-editor__uploading\">{{ labels.uploading ?? \"\" }}</span>\n </div>\n\n <EditorContent :editor=\"editor\" class=\"lw-editor__content\" />\n <input ref=\"fileInput\" type=\"file\" accept=\"image/*\" hidden @change=\"onFile\" />\n\n <ImageAnnotatorDialog\n :src=\"pending\"\n :filename=\"pendingName\"\n :locale=\"locale\"\n @confirm=\"commitImage\"\n @cancel=\"pending = null\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * The thread, and the box to add to it.\n *\n * The composer is the same TipTap editor the team uses — the original's own\n * reasoning, in its own words: \"ผู้แจ้งอธิบายปัญหาด้วยภาพหน้าจอเป็นเรื่องปกติที่สุด\".\n */\nimport { computed, nextTick, ref, shallowRef, watch } from \"vue\";\nimport { editMyMessage, formatDateTime, type MyTicketDetail, type TicketStrings } from \"@lightworkai.official/debug-capture\";\nimport RichReplyEditor from \"./RichReplyEditor.vue\";\nimport TicketBody from \"./TicketBody.vue\";\nimport { CheckIcon2, PencilIcon, SendIcon, XIcon } from \"./icons\";\n\nconst props = defineProps<{\n ticket: MyTicketDetail;\n t: TicketStrings;\n host: string;\n timezone: string;\n locale: \"th\" | \"en\" | undefined;\n sending?: boolean;\n uploadImage: (file: File) => Promise<string>;\n}>();\n\nconst emit = defineEmits<{\n (e: \"send\", body: string): void;\n (e: \"edited\"): void;\n (e: \"error\", message: string): void;\n}>();\n\nconst editor = ref<InstanceType<typeof RichReplyEditor> | null>(null);\nconst thread = ref<HTMLElement | null>(null);\n\n/**\n * The message being rewritten, if any.\n *\n * Only ONE at a time: an open editor per bubble would let someone start three\n * rewrites and lose track of which are unsaved. The original makes the same\n * choice for the same reason.\n *\n * Only your own, and the server agrees — it refuses any message the caller did\n * not write, so this button is a convenience, not the rule.\n */\nconst editingId = ref<string | null>(null);\nconst savingEdit = ref(false);\n\n/**\n * The open edit box.\n *\n * A FUNCTION ref, not a string one. A `ref=\"x\"` inside `v-for` collects an\n * ARRAY of instances — even when only one of them renders — so calling\n * `.value()` on it threw \"value is not a function\" the moment anyone pressed\n * บันทึกการแก้ไข. A function ref is handed the instance itself, and null when it\n * unmounts.\n */\nconst editingDraft = shallowRef<InstanceType<typeof RichReplyEditor> | null>(null);\n\nfunction bindDraft(el: unknown): void {\n editingDraft.value = (el as InstanceType<typeof RichReplyEditor> | null) ?? null;\n}\n\n/** Just the toolbar's words: TicketStrings also carries formatters. */\nconst labels = computed<Record<string, string>>(() => ({\n bold: props.t.bold,\n italic: props.t.italic,\n underline: props.t.underline,\n bulletList: props.t.bulletList,\n orderedList: props.t.orderedList,\n link: props.t.link,\n linkPrompt: props.t.linkPrompt,\n attachImage: props.t.attachImage,\n uploading: props.t.uploading,\n}));\n\nfunction canEdit(message: MyTicketDetail[\"messages\"][number]): boolean {\n return message.authorRole === \"REPORTER\";\n}\n\nasync function saveEdit(message: MyTicketDetail[\"messages\"][number]): Promise<void> {\n const body = editingDraft.value?.value() ?? \"\";\n if (!body || savingEdit.value) return;\n savingEdit.value = true;\n try {\n await editMyMessage(props.ticket.id, message.id, body);\n editingId.value = null;\n emit(\"edited\");\n } catch (e) {\n emit(\"error\", e instanceof Error ? e.message : props.t.sendFailed);\n } finally {\n savingEdit.value = false;\n }\n}\n\nfunction send(): void {\n const body = editor.value?.value() ?? \"\";\n if (!body || props.sending) return;\n emit(\"send\", body);\n // Cleared here, not by the parent. It used to be cleared by accident: the\n // whole detail unmounted after a reply, so a fresh editor came back empty.\n // Now that the view survives the send, the box has to be emptied on purpose.\n editor.value?.clear();\n}\n\n/**\n * Open at the newest message.\n *\n * The thread is a fixed-height window now, so without this it opens showing the\n * OLDEST messages and the reader has to scroll to find out what has happened\n * since. Every chat opens at the bottom; this one should too.\n *\n * Jumped, not animated: this is where the conversation starts, not a transition\n * from somewhere else, and watching it scroll on open reads as a glitch.\n */\nasync function toBottom(behavior: ScrollBehavior): Promise<void> {\n await nextTick();\n const box = thread.value;\n if (box) box.scrollTop = box.scrollHeight;\n if (behavior === \"smooth\") {\n thread.value?.lastElementChild?.scrollIntoView({ block: \"nearest\", behavior });\n }\n}\n\n// A different ticket is a different conversation: start it at the bottom too.\nwatch(() => props.ticket.id, () => void toBottom(\"auto\"), { immediate: true });\n\n/**\n * Keep the newest message in view.\n *\n * The thread sits above the composer, so a reply pushes the composer down and\n * out of sight — the reader is left looking at the middle of the conversation\n * with no sign their message landed.\n */\nwatch(\n () => props.ticket.messages.length,\n (now, before) => {\n if (now <= (before ?? 0)) return;\n void toBottom(\"smooth\");\n },\n);\n\ndefineExpose({ clear: () => editor.value?.clear() });\n</script>\n\n<template>\n <section class=\"lw-card\">\n <h3 class=\"lw-card__title\">{{ t.conversation }}</h3>\n\n <div ref=\"thread\" class=\"lw-thread\">\n <p v-if=\"!ticket.messages.length\" class=\"lw-thread__empty\">{{ t.noMessages }}</p>\n <!-- The original's shape exactly: the meta line lives INSIDE a bordered\n bubble, and a TEAM message shows only \"ทีมงาน\" — never the officer's\n name. That is deliberate there and worth keeping: the team answers as\n one unit, and a reporter should not see which person replied. -->\n <article\n v-for=\"message in ticket.messages\"\n :key=\"message.id\"\n class=\"lw-msg\"\n :class=\"{ 'lw-msg--mine': message.authorRole === 'REPORTER' }\"\n >\n <div class=\"lw-msg__bubble\">\n <p class=\"lw-msg__meta\">\n <template v-if=\"message.authorRole === 'AGENT'\">\n <span class=\"lw-msg__who\">{{ t.team }}</span>\n </template>\n <template v-else>\n <span class=\"lw-msg__who\">{{ message.authorName || t.you }}</span>\n <span class=\"lw-msg__role\">{{ t.reporterRole }}</span>\n </template>\n <span>· {{ formatDateTime(message.createdAt, timezone, locale) }}</span>\n <span v-if=\"message.editedAt\" class=\"lw-msg__edited\">· {{ t.edited }}</span>\n <button\n v-if=\"canEdit(message) && editingId !== message.id\"\n type=\"button\"\n class=\"lw-msg__edit\"\n @click=\"editingId = message.id\"\n >\n <PencilIcon /> {{ t.edit }}\n </button>\n </p>\n\n <!-- Rewriting uses the same editor as the composer: a correction is\n usually fixing a link or replacing the screenshot, and neither\n survives a plain text box. -->\n <div v-if=\"editingId === message.id\" class=\"lw-msg__editing\">\n <RichReplyEditor\n :ref=\"bindDraft\"\n :placeholder=\"t.replyPlaceholder\"\n :host=\"host\"\n :locale=\"locale\"\n :disabled=\"savingEdit\"\n :upload-image=\"uploadImage\"\n :labels=\"labels\"\n :initial=\"message.body\"\n @error=\"emit('error', $event)\"\n />\n <div class=\"lw-msg__editActions\">\n <button type=\"button\" class=\"lw-btn\" :disabled=\"savingEdit\" @click=\"editingId = null\">\n <XIcon /> {{ t.cancel }}\n </button>\n <button type=\"button\" class=\"lw-send\" :disabled=\"savingEdit\" @click=\"saveEdit(message)\">\n <CheckIcon2 /> {{ t.saveEdit }}\n </button>\n </div>\n </div>\n <TicketBody v-else :html=\"message.body\" :host=\"host\" />\n </div>\n </article>\n </div>\n\n <div class=\"lw-composer\">\n <RichReplyEditor\n ref=\"editor\"\n :placeholder=\"t.replyPlaceholder\"\n :host=\"host\"\n :locale=\"locale\"\n :disabled=\"sending\"\n :upload-image=\"uploadImage\"\n :labels=\"labels\"\n @error=\"emit('error', $event)\"\n />\n <div class=\"lw-composer__actions\">\n <button type=\"button\" class=\"lw-send\" :disabled=\"sending\" @click=\"send\">\n <SendIcon /> {{ sending ? t.sending : t.send }}\n </button>\n </div>\n </div>\n </section>\n</template>\n","<script setup lang=\"ts\">\n/**\n * The pictures the reporter attached — shown, not offered as downloads.\n *\n * The URL is FETCHED, not constructed. These are ordinary attachments: the\n * inline-image route answers only to the per-object tokens embedded images\n * carry, and the admin download route wants a session this widget has not got.\n */\nimport { onMounted, ref } from \"vue\";\nimport type { TicketAttachment } from \"@lightworkai.official/debug-capture\";\n\nconst props = defineProps<{\n images: TicketAttachment[];\n title: string;\n attachmentUrl: (id: string) => Promise<string>;\n}>();\n\n/** id → signed URL. A missing entry means it is still loading or failed. */\nconst urls = ref<Record<string, string>>({});\nconst failed = ref<Record<string, true>>({});\n\nonMounted(() => {\n for (const image of props.images) {\n props.attachmentUrl(image.id).then(\n (url) => (urls.value = { ...urls.value, [image.id]: url }),\n // Drop the frame rather than leave a broken-image icon where a screenshot\n // should be.\n () => (failed.value = { ...failed.value, [image.id]: true }),\n );\n }\n});\n</script>\n\n<template>\n <section class=\"lw-card\">\n <h3 class=\"lw-card__title\">{{ title }}</h3>\n <template v-for=\"image in images\" :key=\"image.id\">\n <img\n v-if=\"urls[image.id] && !failed[image.id]\"\n class=\"lw-shot\"\n :src=\"urls[image.id]\"\n :alt=\"image.filename ?? ''\"\n @error=\"failed = { ...failed, [image.id]: true }\"\n />\n </template>\n </section>\n</template>\n","<script setup lang=\"ts\">\n/**\n * One report: what was filed, where it stands, what happened, and the thread.\n * The order is the original's.\n */\nimport { computed } from \"vue\";\nimport {\n formatDateTime,\n ticketKey,\n type MyTicketDetail,\n type RealmConfig,\n type StatusEvent,\n type StatusMaps,\n type TicketStrings,\n} from \"@lightworkai.official/debug-capture\";\nimport TicketBody from \"./TicketBody.vue\";\nimport StatusHero from \"./StatusHero.vue\";\nimport ReopenPanel from \"./ReopenPanel.vue\";\nimport TicketTimeline from \"./TicketTimeline.vue\";\nimport TicketConversation from \"./TicketConversation.vue\";\nimport TicketScreenshots from \"./TicketScreenshots.vue\";\nimport { ArrowLeftIcon } from \"./icons\";\n\nconst props = defineProps<{\n ticket: MyTicketDetail;\n history: StatusEvent[];\n config: RealmConfig;\n maps: StatusMaps;\n t: TicketStrings;\n host: string;\n locale: \"th\" | \"en\" | undefined;\n sending?: boolean;\n reopening?: boolean;\n uploadImage: (file: File) => Promise<string>;\n attachmentUrl: (id: string) => Promise<string>;\n}>();\n\nconst emit = defineEmits<{\n (e: \"back\"): void;\n (e: \"edited\"): void;\n (e: \"send\", body: string): void;\n (e: \"reopen\", note: string): void;\n (e: \"error\", message: string): void;\n}>();\n\nconst lang = computed<\"th\" | \"en\">(() => (props.locale === \"en\" ? \"en\" : \"th\"));\nconst canReopen = computed(\n () => props.maps.isClosed(props.ticket.status) && props.config.featureFlags.selfServiceReopen === true,\n);\nconst updated = computed(() => props.ticket.updatedAt && props.ticket.updatedAt !== props.ticket.createdAt);\n\n/*\n * Images only. The original's reporter view lists no attachments at all, and\n * what a widget report actually carries makes the reason plain: the other file\n * is `debug-bundle.json`, the capture payload the TEAM reads. The screenshot\n * they drew on is theirs; the bundle is not.\n */\nconst screenshots = computed(() =>\n props.ticket.attachments.filter((a) => (a.contentType ?? \"\").startsWith(\"image/\")),\n);\n\nfunction when(iso: string | null): string {\n return formatDateTime(iso, props.config.timezone, props.locale);\n}\n</script>\n\n<template>\n <div class=\"lw-detail\">\n <button type=\"button\" class=\"lw-back\" @click=\"emit('back')\">\n <ArrowLeftIcon /> {{ t.back }}\n </button>\n\n <section class=\"lw-card\">\n <h3 class=\"lw-card__heading\">{{ ticket.title }}</h3>\n <div class=\"lw-facts\">\n <span class=\"lw-key\">{{ ticketKey(config.realm.slug, ticket.number) }}</span>\n <span v-if=\"ticket.category\" class=\"lw-chip\">{{ ticket.category }}</span>\n <span>{{ t.colCreated }} {{ when(ticket.createdAt) }}</span>\n <span v-if=\"updated\">{{ t.colUpdated }} {{ when(ticket.updatedAt) }}</span>\n </div>\n <TicketBody v-if=\"ticket.description\" class=\"lw-intro\" :html=\"ticket.description\" :host=\"host\" />\n <p v-if=\"ticket.routeUrl\" class=\"lw-route\">\n {{ t.page }}:\n <a :href=\"ticket.routeUrl\" target=\"_blank\" rel=\"noopener noreferrer\">{{ ticket.routeUrl }}</a>\n </p>\n </section>\n\n <StatusHero :ticket=\"ticket\" :maps=\"maps\" :t=\"t\" :locale=\"lang\" :host=\"host\" />\n\n <ReopenPanel\n v-if=\"canReopen\"\n :t=\"t\"\n :locale=\"lang\"\n :busy=\"reopening\"\n @reopen=\"emit('reopen', $event)\"\n />\n\n <section class=\"lw-card\">\n <h3 class=\"lw-card__title\">{{ lang === \"en\" ? \"Progress\" : \"ความคืบหน้า\" }}</h3>\n <TicketTimeline\n :history=\"history\"\n :status=\"ticket.status\"\n :created-at=\"ticket.createdAt\"\n :maps=\"maps\"\n :timezone=\"config.timezone\"\n :locale=\"lang\"\n />\n </section>\n\n <TicketConversation\n :ticket=\"ticket\"\n :t=\"t\"\n :host=\"host\"\n :timezone=\"config.timezone\"\n :locale=\"locale\"\n :sending=\"sending\"\n :upload-image=\"uploadImage\"\n @send=\"emit('send', $event)\"\n @edited=\"emit('edited')\"\n @error=\"emit('error', $event)\"\n />\n\n <TicketScreenshots\n v-if=\"screenshots.length\"\n :images=\"screenshots\"\n :title=\"lang === 'en' ? 'Screenshots you sent' : 'ภาพหน้าจอที่คุณแจ้ง'\"\n :attachment-url=\"attachmentUrl\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * \"ปัญหาที่แจ้ง\" — the reports this person filed, and what became of them.\n *\n * Drop it on a route of your own — the reporter-facing counterpart to the\n * agent's ticket list. It needs `identity` in the config, because the widget's\n * realm key is public and can authorise filing a report but never reading one\n * back — see the core README.\n *\n * This component owns fetching and view state and nothing else: the columns,\n * the sorting, the sanitising and the dates all live in the core, shared with\n * the React and Angular packages.\n */\nimport { computed, onMounted, ref, watch } from \"vue\";\nimport {\n NoIdentityError,\n fetchRealmConfig,\n getAttachmentUrl,\n getConfig,\n getMyTicket,\n getMyTicketHistory,\n listMyTickets,\n reopenMyTicket,\n replyToTicket,\n statusMaps,\n ticketStrings,\n uploadInlineImage,\n type MyTicketDetail,\n type MyTicketListItem,\n type RealmConfig,\n type SortKey,\n type StatusEvent,\n} from \"@lightworkai.official/debug-capture\";\nimport TicketTable from \"./TicketTable.vue\";\nimport TicketDetail from \"./TicketDetail.vue\";\nimport { AlertIcon, SearchIcon } from \"./icons\";\n\nconst props = defineProps<{\n /** Change it to re-read the list — after filing a report, say. */\n refreshKey?: string | number;\n /** Hide the panel's own heading when the host page already has one. */\n hideTitle?: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: \"replied\", ticket: MyTicketDetail): void;\n (e: \"reopened\", ticket: MyTicketDetail): void;\n (e: \"error\", message: string): void;\n}>();\n\nconst locale = computed(() => {\n try {\n return getConfig().locale;\n } catch {\n return undefined;\n }\n});\nconst host = computed(() => {\n try {\n return getConfig().host;\n } catch {\n return \"\";\n }\n});\nconst t = computed(() => ticketStrings(locale.value));\n\nconst items = ref<MyTicketListItem[]>([]);\nconst config = ref<RealmConfig | null>(null);\nconst loading = ref(true);\nconst error = ref<string | null>(null);\nconst noIdentity = ref(false);\n\nconst keyword = ref(\"\");\nconst applied = ref(\"\");\nconst statusFilter = ref(\"\");\nconst sort = ref<{ key: SortKey; direction: \"asc\" | \"desc\" }>({ key: \"createdAt\", direction: \"desc\" });\nconst page = ref(1);\n\nconst detail = ref<MyTicketDetail | null>(null);\nconst history = ref<StatusEvent[]>([]);\nconst detailError = ref<string | null>(null);\nconst detailLoading = ref(false);\nconst sending = ref(false);\nconst reopening = ref(false);\n\nconst maps = computed(() => statusMaps(config.value?.statusColumns ?? [], t.value.allStatuses));\nconst table = ref<InstanceType<typeof TicketTable> | null>(null);\nconst shownCount = computed(() => table.value?.count ?? 0);\n\n// Debounced like the original: re-filtering per keystroke resets the page under\n// the reader's hands.\nlet debounce: ReturnType<typeof setTimeout> | null = null;\nwatch(keyword, (next) => {\n if (debounce) clearTimeout(debounce);\n debounce = setTimeout(() => {\n applied.value = next;\n page.value = 1;\n }, 300);\n});\nwatch(statusFilter, () => (page.value = 1));\nwatch(() => props.refreshKey, () => void load());\n\nonMounted(load);\n\nasync function load(): Promise<void> {\n loading.value = true;\n error.value = null;\n noIdentity.value = false;\n try {\n // Config and list together: the labels are useless without the rows and the\n // rows unreadable without the labels.\n const [realm, list] = await Promise.all([fetchRealmConfig(), listMyTickets()]);\n config.value = realm;\n items.value = list;\n } catch (e) {\n if (e instanceof NoIdentityError) noIdentity.value = true;\n else error.value = e instanceof Error ? e.message : t.value.listFailed;\n } finally {\n loading.value = false;\n }\n}\n\n/** Open a DIFFERENT ticket: tear the view down, because nothing on screen is its. */\nasync function open(id: string): Promise<void> {\n detail.value = null;\n history.value = [];\n detailError.value = null;\n detailLoading.value = true;\n try {\n await reload(id);\n } finally {\n detailLoading.value = false;\n }\n}\n\n/**\n * Re-read the ticket we are already looking at, in place.\n *\n * Deliberately NOT `open()`. That nulls the detail and raises the loading flag,\n * which unmounts the whole view and remounts it — so sending a reply threw the\n * reader back to the top of the page, away from the conversation they were in\n * the middle of. It reads as the page reloading, because visually that is what\n * happens.\n *\n * Updating the refs instead lets Vue patch what changed: the new message\n * appears, the timeline updates, and everything else stays exactly where it was.\n */\nasync function reload(id: string): Promise<void> {\n try {\n const [found, events] = await Promise.all([\n getMyTicket(id),\n // The timeline is a nicety, not the page: a ticket whose history fails to\n // load should still show its conversation.\n getMyTicketHistory(id).catch(() => [] as StatusEvent[]),\n ]);\n detail.value = found;\n history.value = events;\n } catch (e) {\n detailError.value = e instanceof Error ? e.message : t.value.detailFailed;\n }\n}\n\nfunction back(): void {\n detail.value = null;\n // Counts and badges move when a reply lands, so the list is re-read rather\n // than restored from what it said before the detail opened.\n void load();\n}\n\nfunction toggleSort(key: SortKey): void {\n sort.value =\n sort.value.key === key\n ? { key, direction: sort.value.direction === \"asc\" ? \"desc\" : \"asc\" }\n : // Dates open newest-first, text A→Z: the useful first click differs by\n // what the column holds.\n { key, direction: key === \"createdAt\" || key === \"updatedAt\" ? \"desc\" : \"asc\" };\n}\n\nasync function send(body: string): Promise<void> {\n const ticket = detail.value;\n if (!ticket || sending.value) return;\n sending.value = true;\n try {\n await replyToTicket(ticket.id, body);\n await reload(ticket.id);\n if (detail.value) emit(\"replied\", detail.value);\n } catch (e) {\n emit(\"error\", e instanceof Error ? e.message : t.value.sendFailed);\n } finally {\n sending.value = false;\n }\n}\n\nasync function reopen(note: string): Promise<void> {\n const ticket = detail.value;\n if (!ticket || reopening.value) return;\n reopening.value = true;\n try {\n await reopenMyTicket(ticket.id, note);\n await reload(ticket.id);\n if (detail.value) emit(\"reopened\", detail.value);\n } catch (e) {\n emit(\"error\", e instanceof Error ? e.message : t.value.reopenFailed);\n } finally {\n reopening.value = false;\n }\n}\n\nfunction uploadImage(file: File): Promise<string> {\n const ticket = detail.value;\n if (!ticket) return Promise.reject(new Error(\"no ticket\"));\n return readDataUri(file).then((dataUri) =>\n uploadInlineImage(ticket.id, dataUri, file.name).then((stored) => stored.url),\n );\n}\n\nfunction attachmentUrl(id: string): Promise<string> {\n return getAttachmentUrl(id).then((found) => found.url);\n}\n\nfunction readDataUri(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener(\"load\", () =>\n typeof reader.result === \"string\" ? resolve(reader.result) : reject(new Error(\"unreadable file\")),\n );\n reader.addEventListener(\"error\", () => reject(new Error(\"unreadable file\")));\n reader.readAsDataURL(file);\n });\n}\n</script>\n\n<template>\n <div class=\"lw-panel\">\n <template v-if=\"!detail && !detailLoading\">\n <h2 v-if=\"!hideTitle\" class=\"lw-panel__title\">{{ t.title }}</h2>\n <p class=\"lw-panel__intro\">{{ t.intro }}</p>\n\n <div class=\"lw-controls\">\n <div class=\"lw-search\">\n <SearchIcon class=\"lw-search__icon\" />\n <input\n v-model=\"keyword\"\n type=\"search\"\n class=\"lw-input lw-search__field\"\n :placeholder=\"t.searchPlaceholder\"\n :aria-label=\"t.searchLabel\"\n />\n </div>\n <select v-model=\"statusFilter\" class=\"lw-input\">\n <option v-for=\"option in maps.options\" :key=\"option.value\" :value=\"option.value\">\n {{ option.label }}\n </option>\n </select>\n <span class=\"lw-count\">{{ t.count(shownCount) }}</span>\n </div>\n\n <p v-if=\"noIdentity\" class=\"lw-state\">{{ t.signedOut }}</p>\n <div v-else-if=\"loading\" class=\"lw-skeletons\">\n <div v-for=\"n in 4\" :key=\"n\" class=\"lw-skeleton\" />\n </div>\n <p v-else-if=\"error\" class=\"lw-state lw-state--error\">\n <AlertIcon /> {{ error }}\n <button type=\"button\" class=\"lw-retry\" @click=\"load\">{{ t.retry }}</button>\n </p>\n <TicketTable\n v-else\n ref=\"table\"\n :items=\"items\"\n :maps=\"maps\"\n :t=\"t\"\n :slug=\"config?.realm.slug\"\n :timezone=\"config?.timezone ?? 'Asia/Bangkok'\"\n :locale=\"locale\"\n :keyword=\"applied\"\n :status-filter=\"statusFilter\"\n :sort=\"sort\"\n :page=\"page\"\n @open=\"open\"\n @sort=\"toggleSort\"\n @page=\"page = $event\"\n />\n </template>\n\n <div v-else-if=\"detailLoading\" class=\"lw-skeletons\">\n <div class=\"lw-skeleton\" />\n <div class=\"lw-skeleton\" />\n </div>\n\n <p v-else-if=\"detailError\" class=\"lw-state lw-state--error\">{{ detailError }}</p>\n\n <TicketDetail\n v-else-if=\"detail && config\"\n :ticket=\"detail\"\n :history=\"history\"\n :config=\"config\"\n :maps=\"maps\"\n :t=\"t\"\n :host=\"host\"\n :locale=\"locale\"\n :sending=\"sending\"\n :reopening=\"reopening\"\n :upload-image=\"uploadImage\"\n :attachment-url=\"attachmentUrl\"\n @back=\"back\"\n @edited=\"detail && reload(detail.id)\"\n @send=\"send\"\n @reopen=\"reopen\"\n @error=\"emit('error', $event)\"\n />\n </div>\n</template>\n"],"names":["M2","L","C2","$","B","F0","x","U2","E","j","_a","$1","$0","j1","J1","P2","J","v","w2","I2","D2","B2","N2","g","q2","m","Q","y","Z","z","H0","V","b","M0","C0","d","U0","u","Q1","Z1","n","Y","F","C","J0","S2","R2","r","_b","j0","O2","_2","z1","f2","L2","G1","k2","A2","T2","Y1","x2","E2","p2","w0","h2","v2","g2","W1","m2","V1","y2","K1","b2","u2","d2","c2","i2","_c","F1","o2","l2","n2","r2","s2","a2","t2","e2","$4","j4","J4","X1","Q4","Z4","H1","I0","M1","Q0","C1","U1","D0","z4","P1","w1","B0","I1","D1","B1","N1","N0","q0","R0","S0","W4","V4","q1","R1","K4","S1","O1","k1","X4","Y4","Z0","_1","f1","A1","T1","L1","G4","F4","H4","x1","M4","E1","C4","U4","p1","O0","P4","w4","s","_0","I4","c","P","h1","D4","f0","g1","B4","L0","k0","x4","h4","E4","p4","v4","g4","m4","y4","b1","b4","u4","d4","A0","T0","z0","x0","u1","c4","i4","E0","I","w","a","d1","p0","o4","h0","c1","i1","o1","l1","n1","W0","l4","v0","W","K","G","q","N","X","H","_","M","D","f","U","S","t","i0","o0","l0","Y0","p","h","X2","H2","Y2","k","A","G2","F2","n0","l","r0","s0","G0","a0","e","t0","e0","r1","o","s1","n4","r4","s4","__publicField","a4","O","i","g0","R","m0","a1","t4","X0","K0","e1","Z5","T","z5","W5","K5","X5","Y5","G5","F5","H5","V0","M5","$2","C5","U5","j2","J2","b0","P5","w5","d0","I5","D5","u0","B5","Q2","Z2","N5","z2","W2","c0","V2","K2","f5","T5","L5","k5","A5","x5","p5","h5","v5","props","__props","isConfigured","configureDebugCapture","onMounted","setErroredQueriesSource","installDebugCapture","_openBlock","_createElementBlock","_hoisted_1","BugIcon","report","event","launch","_renderSlot","_ctx","_createVNode","_unref","glyph","paths","extra","BoldIcon","ItalicIcon","UnderlineIcon","BulletListIcon","OrderedListIcon","LinkIcon","ImageIcon","SendIcon","SearchIcon","ArrowLeftIcon","CheckIcon","MessageIcon","RotateIcon","AlertIcon","InboxIcon","ClockIcon","CheckCircleIcon","BanIcon","WrenchIcon","SquareIcon","ArrowUpRightIcon","HighlighterIcon","TypeIcon","TrashIcon","StrikeIcon","CodeIcon","QuoteIcon","PencilIcon","CheckIcon2","XIcon","emit","__emit","columns","visible","computed","item","matchesKeyword","compareBy","pages","pageCount","current","rows","pageOf","__expose","when","iso","formatDateTime","_createElementVNode","_hoisted_2","_Fragment","_renderList","column","_normalizeStyle","$event","_createTextVNode","_toDisplayString","_hoisted_4","_hoisted_5","_hoisted_6","row","_withKeys","_withModifiers","_hoisted_8","ticketKey","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_createBlock","StatusPill","statusTone","hasSolution","_hoisted_13","hasTeamReply","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_cache","_hoisted_19","_hoisted_20","target","ref","zoomed","onClick","node","src","paint","renderBody","watch","TONES","AWAITING","MESSAGES","awaiting","tone","headline","showNote","_resolveDynamicComponent","_hoisted_3","TicketBody","open","note","confirm","_hoisted_7","HAPPY","nodes","events","out","previous","index","upcoming","status","_normalizeClass","activate","reporterStrings","safeLocale","getConfig","TOOLS","canvas","annotator","shallowRef","active","loading","image","createAnnotator","onBeforeUnmount","pick","tool","clearAll","model","_useModel","focused","uploading","fileInput","pending","pendingName","editor","useEditor","StarterKit","Image","Placeholder","_view","file","addImage","dropped","off","next","showToolbar","ALL","toggleLink","pickImage","marks","hasImage","readDataUri","commitImage","dataUri","dataUriToFile","resolve","reject","reader","name","header","encoded","type","binary","bytes","onFile","input","href","value","html","cleanHtml","htmlIsEmpty","clear","ToolbarButton","EditorContent","ImageAnnotatorDialog","thread","editingId","savingEdit","editingDraft","bindDraft","el","labels","canEdit","message","saveEdit","body","editMyMessage","send","toBottom","behavior","nextTick","box","now","before","RichReplyEditor","urls","failed","url","lang","canReopen","updated","screenshots","StatusHero","ReopenPanel","TicketTimeline","TicketConversation","TicketScreenshots","locale","host","ticketStrings","items","config","error","noIdentity","keyword","applied","statusFilter","sort","page","detail","history","detailError","detailLoading","sending","reopening","maps","statusMaps","table","shownCount","debounce","load","realm","list","fetchRealmConfig","listMyTickets","NoIdentityError","id","reload","found","getMyTicket","getMyTicketHistory","back","toggleSort","key","ticket","replyToTicket","reopen","reopenMyTicket","uploadImage","uploadInlineImage","stored","attachmentUrl","getAttachmentUrl","option","TicketTable","TicketDetail"],"mappings":"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"}
|