@rubytech/create-maxy-code 0.1.588 → 0.1.589

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.
Files changed (174) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +4 -0
  3. package/payload/server/public/activity.html +6 -6
  4. package/payload/server/public/agents.html +5 -5
  5. package/payload/server/public/assets/{AdminLoginScreens-DoYIIvBQ.js → AdminLoginScreens-CemYu7ho.js} +1 -1
  6. package/payload/server/public/assets/AdminLoginScreens-CemYu7ho.js.br +0 -0
  7. package/payload/server/public/assets/AdminLoginScreens-CemYu7ho.js.gz +0 -0
  8. package/payload/server/public/assets/{AdminShell-CzHB95sB.js → AdminShell-B5vEeSLw.js} +1 -1
  9. package/payload/server/public/assets/AdminShell-B5vEeSLw.js.br +0 -0
  10. package/payload/server/public/assets/AdminShell-B5vEeSLw.js.gz +0 -0
  11. package/payload/server/public/assets/{activity-jvITtNuy.js → activity-BHSuZrqG.js} +1 -1
  12. package/payload/server/public/assets/activity-BHSuZrqG.js.br +0 -0
  13. package/payload/server/public/assets/activity-BHSuZrqG.js.gz +0 -0
  14. package/payload/server/public/assets/{admin-Ck4GDj6I.js → admin-DnvauP59.js} +1 -1
  15. package/payload/server/public/assets/admin-DnvauP59.js.br +0 -0
  16. package/payload/server/public/assets/admin-DnvauP59.js.gz +0 -0
  17. package/payload/server/public/assets/{agents-K62OTVqY.js → agents-CwTJjfyV.js} +1 -1
  18. package/payload/server/public/assets/agents-CwTJjfyV.js.br +0 -0
  19. package/payload/server/public/assets/agents-CwTJjfyV.js.gz +0 -0
  20. package/payload/server/public/assets/{browser-D44lWNJu.js → browser-D4yjnKEH.js} +1 -1
  21. package/payload/server/public/assets/browser-D4yjnKEH.js.br +0 -0
  22. package/payload/server/public/assets/browser-D4yjnKEH.js.gz +0 -0
  23. package/payload/server/public/assets/{calendar-BeP0MSFX.js → calendar-DUi1XFyY.js} +1 -1
  24. package/payload/server/public/assets/calendar-DUi1XFyY.js.br +0 -0
  25. package/payload/server/public/assets/calendar-DUi1XFyY.js.gz +0 -0
  26. package/payload/server/public/assets/chat-BJ1p4kuh.js +1 -0
  27. package/payload/server/public/assets/chat-BJ1p4kuh.js.br +1 -0
  28. package/payload/server/public/assets/chat-BJ1p4kuh.js.gz +0 -0
  29. package/payload/server/public/assets/chevron-left-Ctw-3JsV.js +1 -0
  30. package/payload/server/public/assets/chevron-left-Ctw-3JsV.js.br +0 -0
  31. package/payload/server/public/assets/clock-BLOp42yY.js +1 -0
  32. package/payload/server/public/assets/clock-BLOp42yY.js.br +0 -0
  33. package/payload/server/public/assets/clock-BLOp42yY.js.gz +0 -0
  34. package/payload/server/public/assets/{copy-C87QIN_o.js → copy-Bw2h4ofb.js} +1 -1
  35. package/payload/server/public/assets/copy-Bw2h4ofb.js.br +0 -0
  36. package/payload/server/public/assets/copy-Bw2h4ofb.js.gz +0 -0
  37. package/payload/server/public/assets/data-uR7BZKVU.js +1 -0
  38. package/payload/server/public/assets/data-uR7BZKVU.js.br +0 -0
  39. package/payload/server/public/assets/data-uR7BZKVU.js.gz +0 -0
  40. package/payload/server/public/assets/{field-C3kQgGWE.js → field-BS-mu5Jx.js} +1 -1
  41. package/payload/server/public/assets/field-BS-mu5Jx.js.br +0 -0
  42. package/payload/server/public/assets/field-BS-mu5Jx.js.gz +0 -0
  43. package/payload/server/public/assets/{file-text-rWowl9RN.js → file-text-xUlDn7ui.js} +1 -1
  44. package/payload/server/public/assets/file-text-xUlDn7ui.js.br +0 -0
  45. package/payload/server/public/assets/file-text-xUlDn7ui.js.gz +0 -0
  46. package/payload/server/public/assets/{graph-DvB6wgt_.js → graph-DEEXiQLx.js} +1 -1
  47. package/payload/server/public/assets/graph-DEEXiQLx.js.br +0 -0
  48. package/payload/server/public/assets/graph-DEEXiQLx.js.gz +0 -0
  49. package/payload/server/public/assets/{graph-labels-kneGnsHB.js → graph-labels-F6hQJKCn.js} +1 -1
  50. package/payload/server/public/assets/graph-labels-F6hQJKCn.js.br +0 -0
  51. package/payload/server/public/assets/graph-labels-F6hQJKCn.js.gz +0 -0
  52. package/payload/server/public/assets/{jsx-runtime-rMaiYjNu.css → jsx-runtime-DDrveXI8.css} +1 -1
  53. package/payload/server/public/assets/jsx-runtime-DDrveXI8.css.br +0 -0
  54. package/payload/server/public/assets/{jsx-runtime-rMaiYjNu.css.gz → jsx-runtime-DDrveXI8.css.gz} +0 -0
  55. package/payload/server/public/assets/{operator-N1tnD0Of.js → operator-CkWK9uRB.js} +1 -1
  56. package/payload/server/public/assets/operator-CkWK9uRB.js.br +0 -0
  57. package/payload/server/public/assets/operator-CkWK9uRB.js.gz +0 -0
  58. package/payload/server/public/assets/{page-DyVAu7tm.js → page-DbWIOK60.js} +1 -1
  59. package/payload/server/public/assets/page-DbWIOK60.js.br +0 -0
  60. package/payload/server/public/assets/page-DbWIOK60.js.gz +0 -0
  61. package/payload/server/public/assets/{page-CGTC6xi4.js → page-Dh6fCuUi.js} +1 -1
  62. package/payload/server/public/assets/page-Dh6fCuUi.js.br +0 -0
  63. package/payload/server/public/assets/{page-CGTC6xi4.js.gz → page-Dh6fCuUi.js.gz} +0 -0
  64. package/payload/server/public/assets/play-fy3tdi7M.js +1 -0
  65. package/payload/server/public/assets/play-fy3tdi7M.js.br +0 -0
  66. package/payload/server/public/assets/play-fy3tdi7M.js.gz +0 -0
  67. package/payload/server/public/assets/{public-CpkYl4eK.js → public-DmD6vvFM.js} +1 -1
  68. package/payload/server/public/assets/public-DmD6vvFM.js.br +0 -0
  69. package/payload/server/public/assets/public-DmD6vvFM.js.gz +0 -0
  70. package/payload/server/public/assets/{rotate-ccw-Dnn7gbPh.js → rotate-ccw-BDdOWTDl.js} +1 -1
  71. package/payload/server/public/assets/rotate-ccw-BDdOWTDl.js.br +0 -0
  72. package/payload/server/public/assets/rotate-ccw-BDdOWTDl.js.gz +0 -0
  73. package/payload/server/public/assets/{routines-Db2sVPdc.js → routines-CZoKUK0p.js} +1 -1
  74. package/payload/server/public/assets/routines-CZoKUK0p.js.br +0 -0
  75. package/payload/server/public/assets/routines-CZoKUK0p.js.gz +0 -0
  76. package/payload/server/public/assets/{skills-DBIFhggq.js → skills-D0yS0qLX.js} +1 -1
  77. package/payload/server/public/assets/skills-D0yS0qLX.js.br +0 -0
  78. package/payload/server/public/assets/skills-D0yS0qLX.js.gz +0 -0
  79. package/payload/server/public/assets/{tasks-DUFbl-N-.js → tasks-Dtn1uDRY.js} +1 -1
  80. package/payload/server/public/assets/tasks-Dtn1uDRY.js.br +0 -0
  81. package/payload/server/public/assets/tasks-Dtn1uDRY.js.gz +0 -0
  82. package/payload/server/public/assets/{triangle-alert-el772yUQ.js → triangle-alert-DN-Eswuf.js} +1 -1
  83. package/payload/server/public/assets/triangle-alert-DN-Eswuf.js.br +0 -0
  84. package/payload/server/public/assets/triangle-alert-DN-Eswuf.js.gz +0 -0
  85. package/payload/server/public/assets/{useCopyFeedback-DfNAu8hQ.js → useCopyFeedback-BmOZr_Mw.js} +1 -1
  86. package/payload/server/public/assets/useCopyFeedback-BmOZr_Mw.js.br +0 -0
  87. package/payload/server/public/assets/useCopyFeedback-BmOZr_Mw.js.gz +0 -0
  88. package/payload/server/public/assets/{useMediaQuery-B469O83-.js → useMediaQuery-fFM7rxUD.js} +1 -1
  89. package/payload/server/public/assets/useMediaQuery-fFM7rxUD.js.br +0 -0
  90. package/payload/server/public/assets/{useMediaQuery-B469O83-.js.gz → useMediaQuery-fFM7rxUD.js.gz} +0 -0
  91. package/payload/server/public/assets/{useVoiceRecorder-Bb-51cJv.js → useVoiceRecorder-D0MWFIde.js} +1 -1
  92. package/payload/server/public/assets/useVoiceRecorder-D0MWFIde.js.br +0 -0
  93. package/payload/server/public/assets/useVoiceRecorder-D0MWFIde.js.gz +0 -0
  94. package/payload/server/public/assets/{wrench-Ck4phkdB.js → wrench-C-yn7q1Q.js} +1 -1
  95. package/payload/server/public/assets/wrench-C-yn7q1Q.js.br +0 -0
  96. package/payload/server/public/assets/wrench-C-yn7q1Q.js.gz +0 -0
  97. package/payload/server/public/browser.html +5 -5
  98. package/payload/server/public/calendar.html +8 -8
  99. package/payload/server/public/chat.html +14 -14
  100. package/payload/server/public/data.html +12 -12
  101. package/payload/server/public/field.html +3 -3
  102. package/payload/server/public/graph.html +10 -10
  103. package/payload/server/public/index.html +14 -14
  104. package/payload/server/public/operator.html +15 -15
  105. package/payload/server/public/public.html +14 -14
  106. package/payload/server/public/routines.html +8 -8
  107. package/payload/server/public/skills.html +6 -6
  108. package/payload/server/public/tasks.html +7 -7
  109. package/payload/server/public/assets/AdminLoginScreens-DoYIIvBQ.js.br +0 -0
  110. package/payload/server/public/assets/AdminLoginScreens-DoYIIvBQ.js.gz +0 -0
  111. package/payload/server/public/assets/AdminShell-CzHB95sB.js.br +0 -0
  112. package/payload/server/public/assets/AdminShell-CzHB95sB.js.gz +0 -0
  113. package/payload/server/public/assets/activity-jvITtNuy.js.br +0 -0
  114. package/payload/server/public/assets/activity-jvITtNuy.js.gz +0 -0
  115. package/payload/server/public/assets/admin-Ck4GDj6I.js.br +0 -0
  116. package/payload/server/public/assets/admin-Ck4GDj6I.js.gz +0 -0
  117. package/payload/server/public/assets/agents-K62OTVqY.js.br +0 -0
  118. package/payload/server/public/assets/agents-K62OTVqY.js.gz +0 -0
  119. package/payload/server/public/assets/browser-D44lWNJu.js.br +0 -0
  120. package/payload/server/public/assets/browser-D44lWNJu.js.gz +0 -0
  121. package/payload/server/public/assets/calendar-BeP0MSFX.js.br +0 -0
  122. package/payload/server/public/assets/calendar-BeP0MSFX.js.gz +0 -0
  123. package/payload/server/public/assets/chat-CeDpcouO.js +0 -1
  124. package/payload/server/public/assets/chat-CeDpcouO.js.br +0 -0
  125. package/payload/server/public/assets/chat-CeDpcouO.js.gz +0 -0
  126. package/payload/server/public/assets/chevron-left-0tVo23Dh.js +0 -1
  127. package/payload/server/public/assets/chevron-left-0tVo23Dh.js.br +0 -0
  128. package/payload/server/public/assets/clock-D2cZ0sge.js +0 -1
  129. package/payload/server/public/assets/clock-D2cZ0sge.js.br +0 -0
  130. package/payload/server/public/assets/clock-D2cZ0sge.js.gz +0 -0
  131. package/payload/server/public/assets/copy-C87QIN_o.js.br +0 -0
  132. package/payload/server/public/assets/copy-C87QIN_o.js.gz +0 -0
  133. package/payload/server/public/assets/data-CK7AMxPt.js +0 -1
  134. package/payload/server/public/assets/data-CK7AMxPt.js.br +0 -0
  135. package/payload/server/public/assets/data-CK7AMxPt.js.gz +0 -0
  136. package/payload/server/public/assets/field-C3kQgGWE.js.br +0 -0
  137. package/payload/server/public/assets/field-C3kQgGWE.js.gz +0 -0
  138. package/payload/server/public/assets/file-text-rWowl9RN.js.br +0 -0
  139. package/payload/server/public/assets/file-text-rWowl9RN.js.gz +0 -0
  140. package/payload/server/public/assets/graph-DvB6wgt_.js.br +0 -0
  141. package/payload/server/public/assets/graph-DvB6wgt_.js.gz +0 -0
  142. package/payload/server/public/assets/graph-labels-kneGnsHB.js.br +0 -0
  143. package/payload/server/public/assets/graph-labels-kneGnsHB.js.gz +0 -0
  144. package/payload/server/public/assets/jsx-runtime-rMaiYjNu.css.br +0 -0
  145. package/payload/server/public/assets/operator-N1tnD0Of.js.br +0 -0
  146. package/payload/server/public/assets/operator-N1tnD0Of.js.gz +0 -0
  147. package/payload/server/public/assets/page-CGTC6xi4.js.br +0 -0
  148. package/payload/server/public/assets/page-DyVAu7tm.js.br +0 -0
  149. package/payload/server/public/assets/page-DyVAu7tm.js.gz +0 -0
  150. package/payload/server/public/assets/play-DgP7vl0r.js +0 -1
  151. package/payload/server/public/assets/play-DgP7vl0r.js.br +0 -0
  152. package/payload/server/public/assets/play-DgP7vl0r.js.gz +0 -0
  153. package/payload/server/public/assets/public-CpkYl4eK.js.br +0 -0
  154. package/payload/server/public/assets/public-CpkYl4eK.js.gz +0 -0
  155. package/payload/server/public/assets/rotate-ccw-Dnn7gbPh.js.br +0 -0
  156. package/payload/server/public/assets/rotate-ccw-Dnn7gbPh.js.gz +0 -0
  157. package/payload/server/public/assets/routines-Db2sVPdc.js.br +0 -0
  158. package/payload/server/public/assets/routines-Db2sVPdc.js.gz +0 -0
  159. package/payload/server/public/assets/skills-DBIFhggq.js.br +0 -0
  160. package/payload/server/public/assets/skills-DBIFhggq.js.gz +0 -0
  161. package/payload/server/public/assets/tasks-DUFbl-N-.js.br +0 -0
  162. package/payload/server/public/assets/tasks-DUFbl-N-.js.gz +0 -0
  163. package/payload/server/public/assets/triangle-alert-el772yUQ.js.br +0 -0
  164. package/payload/server/public/assets/triangle-alert-el772yUQ.js.gz +0 -0
  165. package/payload/server/public/assets/useCopyFeedback-DfNAu8hQ.js.br +0 -0
  166. package/payload/server/public/assets/useCopyFeedback-DfNAu8hQ.js.gz +0 -0
  167. package/payload/server/public/assets/useMediaQuery-B469O83-.js.br +0 -0
  168. package/payload/server/public/assets/useVoiceRecorder-Bb-51cJv.js.br +0 -0
  169. package/payload/server/public/assets/useVoiceRecorder-Bb-51cJv.js.gz +0 -0
  170. package/payload/server/public/assets/wrench-Ck4phkdB.js.br +0 -0
  171. package/payload/server/public/assets/wrench-Ck4phkdB.js.gz +0 -0
  172. /package/payload/server/public/assets/{jsx-runtime-BmNepPEn.js → jsx-runtime-DXWyHqht.js} +0 -0
  173. /package/payload/server/public/assets/{jsx-runtime-BmNepPEn.js.br → jsx-runtime-DXWyHqht.js.br} +0 -0
  174. /package/payload/server/public/assets/{jsx-runtime-BmNepPEn.js.gz → jsx-runtime-DXWyHqht.js.gz} +0 -0
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/pdf-render-B5af7vu1.js","assets/preload-helper-eAV8hweq.js"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./chunk-BycB0eMI.js";import{i as t,t as n}from"./jsx-runtime-BmNepPEn.js";import{B as r,G as i,Z as a,a as o,f as s,j as c,o as l,v as u,w as d,x as f}from"./useMediaQuery-B469O83-.js";import{t as p}from"./copy-C87QIN_o.js";import{t as m}from"./play-DgP7vl0r.js";import{t as h}from"./preload-helper-eAV8hweq.js";var g=`image/jpeg,image/png,image/gif,image/webp,application/pdf,text/plain,text/markdown,text/csv,text/html,text/calendar,application/zip,application/x-zip-compressed,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.oasis.opendocument.text,text/rtf,application/rtf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel,application/vnd.oasis.opendocument.spreadsheet,application/vnd.openxmlformats-officedocument.presentationml.presentation,application/vnd.ms-powerpoint,application/vnd.oasis.opendocument.presentation,audio/ogg,audio/opus,audio/mp4,audio/x-m4a,audio/mpeg,audio/webm,audio/wav,video/mp4,.docx,.odt,.rtf,.xlsx,.xls,.ods,.pptx,.ppt,.odp,.opus,.ogg,.m4a,.mp4,.mp3,.wav,.webm`,_=new Set(g.split(`,`).filter(e=>!e.startsWith(`.`))),v=50*1024*1024;function y(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}var b=a(`check-check`,[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]),x=a(`file-code`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12.5 8 15l2 2.5`,key:`1tg20x`}],[`path`,{d:`m14 12.5 2 2.5-2 2.5`,key:`yinavb`}]]),S=a(`mic`,[[`path`,{d:`M12 19v3`,key:`npa21l`}],[`path`,{d:`M19 10v2a7 7 0 0 1-14 0v-2`,key:`1vc78b`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`13`,rx:`3`,key:`s6n7sd`}]]),C=a(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),w=a(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),T=a(`reply`,[[`path`,{d:`M20 18v-2a4 4 0 0 0-4-4H4`,key:`5vmcpk`}],[`path`,{d:`m9 17-5-5 5-5`,key:`nvlc11`}]]),E=a(`user`,[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]),D=e(t(),1),O=n(),k=200;function A({children:e,tail:t=null,repinSignals:n,onReachTop:r,prependToken:i=0}){let a=(0,D.useRef)(null),o=(0,D.useRef)(null),s=(0,D.useRef)(!0),[c,l]=(0,D.useState)(!0),u=(0,D.useRef)(0),d=(0,D.useRef)(0),f=(0,D.useRef)(!1),p=(0,D.useRef)(r);p.current=r;let m=()=>{let e=a.current;if(!e)return;let t=e.clientHeight,n=e.scrollHeight,r=t!==u.current||n!==d.current;if(u.current=t,d.current=n,r){s.current&&(e.scrollTop=e.scrollHeight);return}let i=n-e.scrollTop-t<=32;s.current=i,l(e=>e===i?e:i);let o=e.scrollTop<=k;o&&!f.current&&p.current?.(),f.current=o},h=()=>{let e=a.current;e&&(e.scrollTop=e.scrollHeight,d.current=e.scrollHeight,u.current=e.clientHeight,s.current=!0,l(!0))},g=t!=null;return(0,D.useLayoutEffect)(()=>{let e=a.current;if(!e||i===0)return;let t=e.scrollHeight-d.current;t>0&&(e.scrollTop+=t),d.current=e.scrollHeight},[i]),(0,D.useLayoutEffect)(()=>{let e=a.current;e&&s.current&&(e.scrollTop=e.scrollHeight),e&&(d.current=e.scrollHeight,u.current=e.clientHeight)},[...n,g]),(0,D.useLayoutEffect)(()=>{if(typeof ResizeObserver>`u`)return;let e=new ResizeObserver(()=>m());return a.current&&e.observe(a.current),o.current&&e.observe(o.current),()=>e.disconnect()},[]),(0,O.jsxs)(`div`,{className:`wa-reader`,children:[(0,O.jsx)(`div`,{className:`wa-reader-thread`,ref:a,onScroll:m,children:(0,O.jsxs)(`div`,{className:`wa-thread-scroll`,ref:o,children:[e,t]})}),!c&&(0,O.jsx)(`button`,{type:`button`,className:`wa-jump`,onClick:h,"aria-label":`Jump to latest message`,title:`Jump to latest message`,children:`↓`})]})}var j={auth_expired:`Your session has expired. Please sign in again.`,claude_down:`Claude is currently experiencing an outage. Please try again in a few minutes.`,claude_overloaded:`Claude is overloaded right now. Please try again shortly.`,model_unavailable:`The selected model is currently unavailable. Switch to a different model from the model picker to continue.`,agent_error:`Something went wrong. Please try again.`},M={auth_expired:`I'm not available right now. Please try again later.`,claude_down:`I'm not available right now. Please try again later.`,claude_overloaded:`I'm not available right now. Please try again shortly.`,model_unavailable:`I'm not available right now. Please try again later.`,agent_error:`I'm not available right now. Please try again later.`};function N(e,t=`admin`){return t===`public`?M[e]:j[e]}function P(e){return e===`whatsapp`?` · via WhatsApp`:e===`webchat`?` · via web`:``}var F=56,I=5;function L(e,t){let n=Math.max(1,Math.floor(e.length/t)),r=[],i=0;for(let a=0;a<t;a++){let t=a*n,o=0,s=0;for(let r=t;r<t+n&&r<e.length;r++)o+=e[r]*e[r],s++;let c=s>0?Math.sqrt(o/s):0;r.push(c),c>i&&(i=c)}return i>0?r.map(e=>e/i):r}function ee({src:e,filename:t,onDecodeFail:n,onMediaError:r}){let i=(0,D.useRef)(null),a=(0,D.useRef)(null),o=(0,D.useRef)(!1),[s,c]=(0,D.useState)([]),[u,d]=(0,D.useState)(void 0),[f,p]=(0,D.useState)(!1),[h,g]=(0,D.useState)(0),[_,v]=(0,D.useState)(0);(0,D.useEffect)(()=>{let t=!1,r=null,i=window.AudioContext??window.webkitAudioContext,a=()=>{t||o.current||(o.current=!0,n())};if(!i){a();return}let s=new i;return(async()=>{try{let n=await fetch(e);if(!n.ok)throw Error(`audio fetch ${n.status}`);let i=await n.blob();if(t)return;r=URL.createObjectURL(i),d(r);let a=await s.decodeAudioData(await i.arrayBuffer());if(t)return;c(L(a.getChannelData(0),F)),Number.isFinite(a.duration)&&a.duration>0&&v(a.duration)}catch{a()}finally{try{s.close()}catch{}}})(),()=>{t=!0,r&&URL.revokeObjectURL(r)}},[e]);let y=()=>{let e=i.current;e&&(f?e.pause():Promise.resolve(e.play()).catch(()=>{}))},b=e=>{let t=i.current;if(!t||!(_>0))return;let n=Math.min(_,Math.max(0,e));t.currentTime=n,g(n)},x=e=>{let t=a.current;if(!t||!(_>0))return;let n=t.getBoundingClientRect();b(Math.min(1,Math.max(0,(e-n.left)/n.width))*_)},S=e=>{x(e.clientX);let t=e=>x(e.clientX),n=()=>{window.removeEventListener(`mousemove`,t),window.removeEventListener(`mouseup`,n)};window.addEventListener(`mousemove`,t),window.addEventListener(`mouseup`,n)},C=e=>{if(!(_>0))return;let t=i.current?.currentTime??0;switch(e.key){case`ArrowRight`:case`ArrowUp`:b(t+I),e.preventDefault();break;case`ArrowLeft`:case`ArrowDown`:b(t-I),e.preventDefault();break;case`Home`:b(0),e.preventDefault();break;case`End`:b(_),e.preventDefault();break;default:break}},T=_>0?Math.min(1,h/_):0,E=Math.round(T*F),k=l(h>0?h:_);return(0,O.jsxs)(`div`,{className:`voice-note`,children:[(0,O.jsx)(`button`,{type:`button`,className:`voice-note-play`,"aria-label":`${f?`Pause`:`Play`} ${t}`,onClick:y,children:f?(0,O.jsx)(w,{size:16,"aria-hidden":!0}):(0,O.jsx)(m,{size:16,"aria-hidden":!0})}),(0,O.jsx)(`div`,{ref:a,className:`voice-note-bars`,role:`slider`,tabIndex:0,"aria-label":`Seek ${t}`,"aria-valuemin":0,"aria-valuemax":Math.round(_),"aria-valuenow":Math.round(h),onMouseDown:S,onKeyDown:C,children:(s.length?s:Array.from({length:F},()=>0)).map((e,t)=>(0,O.jsx)(`span`,{className:`voice-note-bar${t<E?` is-played`:``}`,style:{height:`${Math.max(10,Math.round(e*100))}%`}},t))}),(0,O.jsx)(`span`,{className:`voice-note-time`,children:k}),(0,O.jsx)(`audio`,{ref:i,className:`voice-note-audio`,preload:`metadata`,src:u,"aria-label":t,onPlay:()=>p(!0),onPause:()=>p(!1),onEnded:()=>p(!1),onError:()=>r?.(),onLoadedMetadata:e=>{let t=e.currentTarget.duration;Number.isFinite(t)&&t>0&&v(t)},onTimeUpdate:e=>g(e.currentTarget.currentTime)})]})}var R=/\.(png|jpe?g|gif|webp|svg|bmp)$/i,z=/\.pdf$/i;function te(e,t){return(t?t.startsWith(`image/`):R.test(e))?`image`:t&&t.startsWith(`audio/`)?`audio`:(t?t===`application/pdf`:z.test(e))?`pdf`:`file`}function ne(e,t,n,r){let i=encodeURIComponent(e.path),a=encodeURIComponent(n),o=r?`&disposition=${r}`:``;return e.root===`scratchpad`?`/api/admin/files/download?path=${i}&root=scratchpad&sessionId=${encodeURIComponent(t)}&session_key=${a}${o}`:`/api/admin/files/download?path=${i}&root=data&session_key=${a}${o}`}function B(e,t,n,r){return t===`public`?`/api/public-reader/attachment/${e}?sessionId=${encodeURIComponent(n)}`:`/api/admin/attachment/${e}?session_key=${encodeURIComponent(r)}`}function re(e,t,n){return`/api/admin/session-upload?session_key=${encodeURIComponent(n)}&session_id=${encodeURIComponent(e)}&file=${encodeURIComponent(t)}`}function ie(e){if(e<1024)return`${e} B`;let t=e/1024;if(t<1024)return`${t<10?t.toFixed(1):Math.round(t)} KB`;let n=t/1024;return`${n<10?n.toFixed(1):Math.round(n)} MB`}function V({href:e,filename:t,label:n}){return(0,O.jsxs)(`a`,{className:`chat-attachment-chip`,href:e,download:t,children:[(0,O.jsx)(C,{size:14,"aria-hidden":!0}),n]})}function ae({href:e,filename:t,className:n,size:r=14,onClick:a}){return(0,O.jsx)(`a`,{className:n,href:e,download:t,"aria-label":`Download ${t}`,onClick:a,children:(0,O.jsx)(i,{size:r,"aria-hidden":!0})})}function oe({src:e,filename:t,sizeBytes:n,expandable:r,onFail:i}){let[a,o]=(0,D.useState)(!1),[s,c]=(0,D.useState)(!1),l=n==null?t:`${t} · ${ie(n)}`;return s?(0,O.jsx)(V,{href:e,filename:t,label:l}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(`span`,{className:`chat-attachment-image-wrap`,children:[(0,O.jsx)(`img`,{className:`chat-attachment-image`,src:e,alt:t,onClick:r?()=>o(!0):void 0,onError:()=>{c(!0),i?.(`fetch`)}}),(0,O.jsx)(ae,{href:e,filename:t,className:`chat-attachment-download`})]}),r&&a&&(0,O.jsx)(`div`,{className:`chat-attachment-overlay`,role:`dialog`,"aria-label":t,onClick:()=>o(!1),children:(0,O.jsx)(`img`,{className:`chat-attachment-overlay-image`,src:e,alt:t})})]})}var se=280,ce=360,le=16;function ue({src:e,filename:t,sizeBytes:n,onFail:i}){let[a,o]=(0,D.useState)(!1),[s,c]=(0,D.useState)(!1),l=(0,D.useRef)(null),u=n==null?t:`${t} · ${ie(n)}`;return(0,D.useEffect)(()=>{let t=!1,n=null;return(async()=>{try{let{loadPdf:r,renderPageToFit:i}=await h(async()=>{let{loadPdf:e,renderPageToFit:t}=await import(`./pdf-render-B5af7vu1.js`);return{loadPdf:e,renderPageToFit:t}},__vite__mapDeps([0,1])),a=await r(e);n=a;let o=l.current;if(t||!o)return;await i(a,1,o,se,ce)}catch{t||(c(!0),i?.(`render`))}})(),()=>{t=!0;try{n?.destroy()}catch{}}},[e]),s?(0,O.jsx)(V,{href:e,filename:t,label:u}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(`div`,{className:`chat-attachment-pdf`,children:[(0,O.jsx)(`canvas`,{ref:l,className:`chat-attachment-pdf-canvas`,"aria-label":t}),(0,O.jsx)(ae,{href:e,filename:t,className:`chat-attachment-download`}),(0,O.jsx)(`button`,{type:`button`,className:`chat-attachment-pdf-expand`,"aria-label":`Expand ${t}`,onClick:()=>o(!0),children:(0,O.jsx)(r,{size:14,"aria-hidden":!0})})]}),a&&(0,O.jsx)(de,{src:e,filename:t,label:u,onClose:()=>o(!1),onFail:i})]})}function de({src:e,filename:t,label:n,onClose:r,onFail:i}){let a=(0,D.useRef)(null),o=(0,D.useRef)(null),[s,l]=(0,D.useState)(null),[u,d]=(0,D.useState)(!1);return(0,D.useEffect)(()=>{let t=!1;return(async()=>{try{let{loadPdf:n}=await h(async()=>{let{loadPdf:e}=await import(`./pdf-render-B5af7vu1.js`);return{loadPdf:e}},__vite__mapDeps([0,1])),r=await n(e);if(t){try{r.destroy()}catch{}return}o.current=r,l(r.numPages)}catch{t||(d(!0),i?.(`render`))}})(),()=>{t=!0;try{o.current?.destroy()}catch{}}},[e]),(0,D.useEffect)(()=>{if(s==null)return;let e=a.current,t=o.current;if(!e||!t)return;let n=!1;return(async()=>{try{let{renderPageToWidth:r}=await h(async()=>{let{renderPageToWidth:e}=await import(`./pdf-render-B5af7vu1.js`);return{renderPageToWidth:e}},__vite__mapDeps([0,1])),i=Array.from(e.querySelectorAll(`canvas.chat-attachment-overlay-page`)),a=Math.max(e.clientWidth-le*2,1);for(let e=0;e<i.length;e++){if(n)return;await r(t,e+1,i[e],a)}}catch{n||(d(!0),i?.(`render`))}})(),()=>{n=!0}},[s]),(0,O.jsxs)(`div`,{className:`chat-attachment-overlay`,role:`dialog`,"aria-label":t,onClick:r,children:[(0,O.jsx)(`div`,{ref:a,className:`chat-attachment-overlay-pdf`,onClick:e=>e.stopPropagation(),children:u?(0,O.jsx)(V,{href:e,filename:t,label:n}):Array.from({length:s??0},(e,n)=>(0,O.jsx)(`canvas`,{className:`chat-attachment-overlay-page`,"aria-label":`${t} page ${n+1}`},n))}),(0,O.jsx)(ae,{href:e,filename:t,className:`chat-attachment-overlay-download`,size:20,onClick:e=>e.stopPropagation()}),(0,O.jsx)(`button`,{type:`button`,className:`chat-attachment-overlay-close`,"aria-label":`Close`,onClick:r,children:(0,O.jsx)(c,{size:20,"aria-hidden":!0})})]})}function fe({src:e,filename:t,onFail:n}){let[r,i]=(0,D.useState)(!1);return r?(0,O.jsx)(`audio`,{className:`chat-attachment-audio`,controls:!0,preload:`metadata`,src:e,"aria-label":t,onError:()=>n?.(`fetch`)}):(0,O.jsx)(ee,{src:e,filename:t,onDecodeFail:()=>{i(!0),n?.(`render`)},onMediaError:()=>{i(!0),n?.(`fetch`)}})}function H({filename:e,href:t,mimeType:n,sizeBytes:r,expandable:i,telemetry:a}){let o=te(e,n);(0,D.useEffect)(()=>{a?.onRender?.({kind:o,mime:n,served:!!t})},[]);let s=a?.onFail?e=>a.onFail({kind:o===`pdf`?`pdf`:o===`audio`?`audio`:`image`,mime:n,reason:e}):void 0;if(o===`image`&&t)return(0,O.jsx)(oe,{src:t,filename:e,sizeBytes:r,expandable:i,onFail:s});if(o===`audio`&&t)return(0,O.jsx)(fe,{src:t,filename:e,onFail:s});if(o===`pdf`&&t)return(0,O.jsx)(ue,{src:t,filename:e,sizeBytes:r,onFail:s});let c=r==null?e:`${e} · ${ie(r)}`;return t?(0,O.jsx)(V,{href:t,filename:e,label:c}):(0,O.jsxs)(`p`,{className:`chat-doc`,children:[(0,O.jsx)(C,{size:14,"aria-hidden":!0,style:{verticalAlign:`text-bottom`}}),` `,c]})}function U(e,t){return(e+180)/360*2**t}function W(e,t){return(1-Math.asinh(Math.tan(e*Math.PI/180))/Math.PI)/2*2**t}function pe(e,t,n){return`https://tile.openstreetmap.org/${e}/${t}/${n}.png`}function me(e,t,n){let r=2**n,i=Math.round(e)-1,a=(i%r+r)%r,o=Math.min(Math.max(Math.round(t)-1,0),r-2);return{tiles:[{x:a,y:o},{x:(a+1)%r,y:o},{x:a,y:o+1},{x:(a+1)%r,y:o+1}].map(e=>({...e,url:pe(n,e.x,e.y)})),offsetX:e*256-i*256,offsetY:t*256-o*256}}function he(e,t,n=16){return me(U(t,n),W(e,n),n)}function ge(e,t,n,r,i){let a=2**n,o=Math.min(Math.ceil(r/256)+1,a),s=Math.min(Math.ceil(i/256)+1,a),c=Math.round(e-o/2),l=Math.min(Math.max(Math.round(t-s/2),0),Math.max(a-s,0)),u=[];for(let e=0;e<s;e++)for(let t=0;t<o;t++){let r=((c+t)%a+a)%a,i=l+e;i<0||i>=a||u.push({x:r,y:i,url:pe(n,r,i)})}return{tiles:u,cols:o,rows:s,offsetX:(e-c)*256,offsetY:(t-l)*256}}function _e(e){let t=[];for(let n of e){let e=t[t.length-1],r=e===void 0?0:Math.round((e-n)/360);t.push(r===0?n:n+r*360)}return t}function G(e,t,n){let r=_e(e.map(e=>e.lon)),i=1;for(let a=16;a>=1;a--){let o=r.map(e=>U(e,a)*256),s=e.map(e=>W(e.lat,a)*256);if(Math.max(...o)-Math.min(...o)<=t&&Math.max(...s)-Math.min(...s)<=n){i=a;break}}let a=r.map(e=>U(e,i)),o=e.map(e=>W(e.lat,i)),s=(Math.min(...a)+Math.max(...a))/2,c=(Math.min(...o)+Math.max(...o))/2,l=me(s,c,i);return{zoom:i,...l,cxf:s,cyf:c,points:a.map((e,t)=>({x:l.offsetX+(e-s)*256,y:l.offsetY+(o[t]-c)*256}))}}function ve(e){return G(e,240,160)}function ye(e,t,n){let r=2**e.zoom,i=((e.cxf-t/256)%r+r)%r,a=Math.min(Math.max(e.cyf-n/256,0),r);return{...e,cxf:i,cyf:a}}function K(e,t,n,r){let i=Math.min(Math.max(e.zoom+t,1),19);if(i===e.zoom)return e;let a=2**(i-e.zoom),o=2**i;return{cxf:(((e.cxf+n/256)*a-n/256)%o+o)%o,cyf:Math.min(Math.max((e.cyf+r/256)*a-r/256,0),o),zoom:i}}var q=0,be=0,xe=0,J=0,Se=0,Ce=0,we=0,Te=0,Y=0,Ee=``,De=0;function Oe(){return{modalsLive:q,opens:be,tileRequests:J,tileErrors:Se,gestures:Ce,viewChanges:we,points:Te,zoomMax:Y,mapKey:Ee,ageMs:De===0?0:Date.now()-De}}function ke(e,t){let n=e.tileErrors>0?`tiles`:e.zoomMax>19?`zoom`:e.tileRequests>500?`budget`:e.gestures>0&&e.viewChanges===0?`inert`:e.modalsLive>0&&t>e.points?`stale`:null;return n?`[operator-ui] op=map-modal-alarm reason=${n} mapKey=${e.mapKey} zoom=${e.zoomMax} tiles=${e.tileRequests} tileErrors=${e.tileErrors} gestures=${e.gestures} viewChanges=${e.viewChanges} modalPoints=${e.points} transcriptPoints=${t} ageMs=${e.ageMs}`:null}function Ae(e,t){return t.get(e.replace(/:\d+$/,``))??0}function je(e){let t=ke(Oe(),e);t&&console.warn(t)}function Me({points:e,msgKeyId:t,formatTime:n,onClose:r}){let{zone:i}=u(),a=(0,D.useRef)(null),o=(0,D.useRef)(null),[s,c]=(0,D.useState)(null),[l,d]=(0,D.useState)(null),[f,p]=(0,D.useState)(null),[m]=(0,D.useState)(()=>++xe),h=s?.w??640,g=s?.h??480,_=e.length,v=e[_-1],y=f?.zoom??l??G(e,h,g).zoom,b=f===null,x=f??{cxf:U(v.lon,y),cyf:W(v.lat,y),zoom:y},S=(0,D.useRef)(x);S.current=x;let C=ge(x.cxf,x.cyf,x.zoom,h,g),w=e.map(e=>({x:C.offsetX+(U(e.lon,x.zoom)-x.cxf)*256,y:C.offsetY+(W(e.lat,x.zoom)-x.cyf)*256}));(0,D.useLayoutEffect)(()=>{let e=a.current;if(!e)return;let t=()=>c({w:e.clientWidth||640,h:e.clientHeight||480});return t(),window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t)},[]),(0,D.useLayoutEffect)(()=>{s&&l===null&&d(G(e,s.w,s.h).zoom)},[s,l,e]);let T=(0,D.useRef)(new Set),E=(0,D.useRef)(e.length);E.current=e.length;let k=()=>{let e=window.setTimeout(()=>{T.current.delete(e),je(E.current)},250);T.current.add(e)};(0,D.useEffect)(()=>{let e=T.current;return()=>{for(let t of e)window.clearTimeout(t);e.clear()}},[]),(0,D.useEffect)(()=>(be+=1,q+=1,J=0,Ce=0,we=0,Y=0,Ee=`${t??`nokey`}:${m}`,()=>{--q,Te=0}),[t,m]),(0,D.useEffect)(()=>{let e=o.current?.getAttribute(`points`)??``;Te=e===``?_===1?1:0:e.trim().split(/\s+/).length,De=v.ts?new Date(v.ts).getTime():0}),(0,D.useEffect)(()=>{J+=C.tiles.length,Y=Math.max(Y,x.zoom)},[C.tiles.map(e=>e.url).join(`|`)]);let A=(0,D.useRef)(``);(0,D.useEffect)(()=>{let t=`${x.cxf}:${x.cyf}:${x.zoom}`;A.current!==``&&A.current!==t&&(we+=1),A.current=t,je(e.length)}),(0,D.useEffect)(()=>{let e=e=>{e.key===`Escape`&&r()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r]);let j=e=>{let t=a.current?.getBoundingClientRect();return t?{px:e.clientX-(t.left+t.width/2),py:e.clientY-(t.top+t.height/2)}:{px:0,py:0}},M=(e,t)=>{t===e||t.cxf===e.cxf&&t.cyf===e.cyf&&t.zoom===e.zoom||(Ce+=1,p(t),k())},N=(0,D.useRef)(new Map),P=(0,D.useRef)(null),F=e=>{N.current.set(e.pointerId,{x:e.clientX,y:e.clientY});let t=e.currentTarget;if(typeof t.setPointerCapture==`function`&&t.setPointerCapture(e.pointerId),N.current.size===2){let[e,t]=[...N.current.values()];P.current=Math.hypot(e.x-t.x,e.y-t.y)}},I=e=>{let t=N.current.get(e.pointerId);if(!t)return;if(N.current.set(e.pointerId,{x:e.clientX,y:e.clientY}),N.current.size>=2){let[e,t]=[...N.current.values()],n=Math.hypot(e.x-t.x,e.y-t.y),r=P.current;if(!r||n===0)return;let i=j({clientX:(e.x+t.x)/2,clientY:(e.y+t.y)/2});n/r>=2?(P.current=n,M(S.current,K(S.current,1,i.px,i.py))):n/r<=.5&&(P.current=n,M(S.current,K(S.current,-1,i.px,i.py)));return}let n=e.clientX-t.x,r=e.clientY-t.y;n===0&&r===0||M(S.current,ye(S.current,n,r))},L=e=>{N.current.delete(e.pointerId),N.current.size<2&&(P.current=null)},ee=e=>{let{px:t,py:n}=j(e);M(S.current,K(S.current,1,t,n))};(0,D.useEffect)(()=>{let e=a.current;if(!e)return;let t=e=>{e.preventDefault();let{px:t,py:n}=j(e);M(S.current,K(S.current,e.deltaY<0?1:-1,t,n))};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[_]);let R=n?n(v.ts,i):``,z=v.ts?Math.max(0,Math.floor((Date.now()-new Date(v.ts).getTime())/6e4)):null,te=z===null?``:z===0?` · just now`:` · ${z} min ago`;return(0,O.jsx)(`div`,{className:`wa-map-modal`,onClick:e=>{e.target===e.currentTarget&&r()},children:(0,O.jsxs)(`div`,{className:`wa-map-modal-panel`,role:`dialog`,"aria-modal":`true`,"aria-label":`Location map`,children:[(0,O.jsxs)(`div`,{className:`wa-map-modal-head`,children:[(0,O.jsxs)(`span`,{className:`wa-map-modal-title`,children:[R?`Latest fix ${R}`:`${v.lat},${v.lon}`,te]}),_>1&&(0,O.jsxs)(`span`,{className:`wa-map-modal-count`,children:[_,` updates`]}),!b&&(0,O.jsx)(`button`,{type:`button`,className:`wa-map-modal-btn`,onClick:()=>p(null),children:`Follow`}),(0,O.jsx)(`button`,{type:`button`,className:`wa-map-modal-close`,"aria-label":`Close map`,onClick:r,children:`×`})]}),(0,O.jsx)(`div`,{className:`wa-map-modal-area`,ref:a,onPointerDown:F,onPointerMove:I,onPointerUp:L,onPointerCancel:L,onDoubleClick:ee,children:(0,O.jsxs)(`div`,{className:`wa-map-modal-block`,style:{left:`calc(50% - ${C.offsetX}px)`,top:`calc(50% - ${C.offsetY}px)`,width:C.cols*256,height:C.rows*256,gridTemplateColumns:`repeat(${C.cols}, 256px)`},children:[C.tiles.map(e=>(0,O.jsx)(`img`,{className:`wa-map-tile`,src:e.url,alt:``,width:256,height:256,draggable:!1,onError:()=>{Se+=1,je(_)}},e.url)),_>1&&(0,O.jsxs)(`svg`,{className:`wa-map-track`,width:C.cols*256,height:C.rows*256,"aria-hidden":!0,children:[(0,O.jsx)(`polyline`,{ref:o,points:w.map(e=>`${e.x},${e.y}`).join(` `)}),(0,O.jsx)(`circle`,{className:`wa-map-track-start`,cx:w[0].x,cy:w[0].y,r:5}),(0,O.jsx)(`circle`,{className:`wa-map-track-now`,cx:w[_-1].x,cy:w[_-1].y,r:6})]}),_===1&&(0,O.jsx)(`span`,{className:`wa-map-modal-pin`,style:{left:w[0].x,top:w[0].y},"aria-hidden":!0})]})}),(0,O.jsxs)(`div`,{className:`wa-map-modal-foot`,children:[(0,O.jsx)(`span`,{className:`wa-map-credit`,children:`© OpenStreetMap contributors`}),(0,O.jsx)(`a`,{className:`wa-map-modal-osm`,href:`https://www.openstreetmap.org/?mlat=${v.lat}&mlon=${v.lon}#map=${x.zoom}/${v.lat}/${v.lon}`,target:`_blank`,rel:`noopener noreferrer`,children:`Open in OpenStreetMap`})]})]})})}var Ne=/^-?\d+(\.\d+)?,-?\d+(\.\d+)?$/,Pe=/^\[(?:live )?location: (.+)\]$/;function Fe(e){let t=Pe.exec(e.trim());if(!t)return{kind:`none`};let n=t[1].split(` — `),r=n[n.length-1].trim();if(!Ne.test(r))return{kind:`label-only`};let[i,a]=r.split(`,`),o=Number(i),s=Number(a);return!Number.isFinite(o)||!Number.isFinite(s)?{kind:`reject`,reason:`nan`,raw:r}:o<-90||o>90||s<-180||s>180?{kind:`reject`,reason:`range`,raw:r}:`${o},${s}`===r?{kind:`point`,lat:o,lon:s}:{kind:`reject`,reason:`roundtrip`,raw:r}}var Ie=/^\[live location: .+\]$/;function Le(e){let t=new Map;e.forEach((e,n)=>{if(e.kind!==`turn`)return;let r=e.turn;if(r.kind!==`telegram-persisted`||!Ie.test(r.text.trim()))return;let i=Fe(r.text);if(i.kind!==`point`)return;let a=r.messageId.replace(/:edit:[^:]*$/,``),o=t.get(a)??[];o.push({index:n,point:{lat:i.lat,lon:i.lon,ts:r.ts}}),t.set(a,o)});let n=new Map;for(let e of t.values())if(!(e.length<2)){n.set(e[0].index,{role:`head`,points:e.map(e=>e.point)});for(let t of e.slice(1))n.set(t.index,{role:`member`})}return n}var Re=0,ze=0,Be=0,Ve=0;function He(){return{maps:Re,tracks:ze,trackPoints:Be,tileErrors:Ve}}function Ue({lat:e,lon:t,msgKeyId:n,ts:r,formatTime:i}){let{tiles:a,offsetX:o,offsetY:s}=he(e,t),[c,l]=(0,D.useState)(!1);return(0,D.useEffect)(()=>(Re+=1,()=>{--Re}),[]),(0,O.jsxs)(O.Fragment,{children:[c&&(0,O.jsx)(Me,{points:[{lat:e,lon:t,ts:r??null}],msgKeyId:n,formatTime:i,onClose:()=>l(!1)}),(0,O.jsx)(`button`,{type:`button`,className:`wa-map wa-map-open`,"aria-label":`Open map`,onClick:()=>l(!0),style:{width:240,height:160},children:(0,O.jsxs)(`span`,{className:`wa-map-viewport`,children:[(0,O.jsx)(`span`,{className:`wa-map-block`,style:{left:`calc(50% - ${o}px)`,top:`calc(50% - ${s}px)`},children:a.map(e=>(0,O.jsx)(`img`,{className:`wa-map-tile`,src:e.url,alt:``,width:256,height:256,loading:`lazy`,onError:()=>{Ve+=1}},e.url))}),(0,O.jsx)(`span`,{className:`wa-map-pin`,"aria-hidden":!0}),(0,O.jsx)(`span`,{className:`wa-map-credit`,children:`© OpenStreetMap contributors`})]})})]})}function We({points:e,formatTime:t,msgKeyId:n}){let{zone:r}=u(),i=ve(e),a=e.length,[o,s]=(0,D.useState)(!1);(0,D.useEffect)(()=>(ze+=1,Be+=a,()=>{--ze,Be-=a}),[a]);let c=e[a-1],l=i.points[0],d=i.points[a-1],f=t(e[0].ts,r),p=t(c.ts,r);return(0,O.jsxs)(O.Fragment,{children:[o&&(0,O.jsx)(Me,{points:e,msgKeyId:n,formatTime:t,onClose:()=>s(!1)}),(0,O.jsx)(`button`,{type:`button`,className:`wa-map wa-map-open`,"aria-label":`Open map`,onClick:()=>s(!0),style:{width:240,height:160},children:(0,O.jsxs)(`span`,{className:`wa-map-viewport`,children:[(0,O.jsxs)(`span`,{className:`wa-map-block`,style:{left:`calc(50% - ${i.offsetX}px)`,top:`calc(50% - ${i.offsetY}px)`},children:[i.tiles.map(e=>(0,O.jsx)(`img`,{className:`wa-map-tile`,src:e.url,alt:``,width:256,height:256,loading:`lazy`,onError:()=>{Ve+=1}},e.url)),(0,O.jsxs)(`svg`,{className:`wa-map-track`,width:256*2,height:256*2,"aria-hidden":!0,children:[(0,O.jsx)(`polyline`,{points:i.points.map(e=>`${e.x},${e.y}`).join(` `)}),(0,O.jsx)(`circle`,{className:`wa-map-track-start`,cx:l.x,cy:l.y,r:4}),(0,O.jsx)(`circle`,{className:`wa-map-track-now`,cx:d.x,cy:d.y,r:5})]})]}),(0,O.jsx)(`span`,{className:`wa-map-credit`,children:`© OpenStreetMap contributors`})]})}),(0,O.jsxs)(`span`,{className:`wa-map-track-caption`,children:[a,` updates · `,f,` to `,p]})]})}function X({text:e,body:t,msgKeyId:n,ts:r,formatTime:i}){let a=Fe(e);return(0,O.jsxs)(O.Fragment,{children:[a.kind===`point`&&(0,O.jsx)(Ue,{lat:a.lat,lon:a.lon,msgKeyId:n,ts:r,formatTime:i}),(0,O.jsx)(`p`,{className:`wa-body`,children:t})]})}function Ge(e){let t=0,n=0,r=0,i=0;for(let a of e){let e=a.kind===`turn`?a.turn:null,o=e&&`text`in e&&typeof e.text==`string`?e.text:``;if(o===``)continue;t+=1;let s=Fe(o);s.kind!==`none`&&(n+=1,s.kind===`point`?r+=1:s.kind===`reject`&&(i+=1))}return{bodies:t,withLabel:n,parsed:r,rejected:i}}function Ke(e,t){let{maps:n,tracks:r,trackPoints:i,tileErrors:a}=t;return e.rejected>0||e.parsed>n+i||r===0&&i>0?`[operator-ui] op=location-census-alarm bodies=${e.bodies} withLabel=${e.withLabel} parsed=${e.parsed} rejected=${e.rejected} maps=${n} tracks=${r} trackPoints=${i} tileErrors=${a}`:null}var qe=20;function Je(e){let t=e.replace(/\/(store-)?stream$/,(e,t)=>t?`/store-backfill`:`/backfill`);return t===e?``:t}function Ye(e,...t){let[n,r,i,a,o]=t,[s,c]=(0,D.useState)([]),[l,u]=(0,D.useState)(null),[d,f]=(0,D.useState)(!1),[p,m]=(0,D.useState)(0),h=(0,D.useRef)(!1);(0,D.useEffect)(()=>{c([]),u(null),f(!1),m(0),h.current=!1},[a,n,r,i,e]);let g=(0,D.useCallback)(e=>u(e),[]),_=(0,D.useCallback)(()=>{!e||l===null||l<=0||h.current||(h.current=!0,f(!0),(async()=>{let t=l,a=[],s=0;try{for(;t>0&&a.length===0&&s<qe;){s+=1;let c=await fetch(`${e}?${Ze(e,n,r,i,t,o)}`);if(!c.ok)break;let l=await c.json();if(!Array.isArray(l.turns))break;a.unshift(...l.turns);let u=l.reachedStart?0:l.from;if(!l.reachedStart&&u>=t){Xe(e,t,l.from);break}t=u}}catch{}finally{a.length>0&&(c(e=>[...a,...e]),m(e=>e+1)),u(t),h.current=!1,f(!1)}})())},[e,n,r,i,l]);return{turns:s,hasOlder:l!==null&&l>0,loadingOlder:d,prependCount:p,loadOlder:_,setTurns:c,onWindow:g}}function Xe(e,t,n){let r=e.endsWith(`/store-backfill`)?`store`:e.includes(`/public-reader/`)?`public`:`session`;try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`event`,source:`reader-backfill`,op:`backfill-no-advance`,reader:r,before:t,from:n}),keepalive:!0}).catch(()=>{})}catch{}}function Ze(e,t,n,r,i,a=`remoteJid`){let o=e.endsWith(`/store-backfill`);return new URLSearchParams(o?{accountId:t,[a]:n,session_key:r,before:String(i)}:{sessionId:t,projectDir:n,session_key:r,before:String(i)}).toString()}function Qe(e,t,n,r=`/api/session-reader/stream`,i=e,a=!0){let[o,s]=(0,D.useState)([]),[c,l]=(0,D.useState)(`open`),[u,d]=(0,D.useState)(null),f=Ye(Je(r),e,t,n,i),{onWindow:p}=f,m=(0,D.useRef)([]);return(0,D.useEffect)(()=>{m.current=o},[o]),(0,D.useEffect)(()=>{s([]),m.current=[],d(null)},[i,t,n,r]),(0,D.useEffect)(()=>{if(l(`open`),!a)return;let i=m.current.slice(),o=i.map($e),c=0,u=i.length>0,f=`${r}?sessionId=${encodeURIComponent(e)}&projectDir=${encodeURIComponent(t)}&session_key=${encodeURIComponent(n)}`,h=new EventSource(f);return h.onopen=()=>{l(`open`)},h.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}if(u){if(c<o.length&&$e(t)===o[c]){c+=1;return}u=!1}s(e=>[...e,t])},h.addEventListener(`activity`,e=>{try{d(JSON.parse(e.data))}catch{}}),h.addEventListener(`activity-clear`,()=>d(null)),h.addEventListener(`window`,e=>{try{let t=JSON.parse(e.data);typeof t.from==`number`&&p(t.from)}catch{}}),h.onerror=()=>{h.readyState===2&&(console.error(`[admin-ui] wa-stream onerror readyState=${h.readyState}`),l(`error`))},()=>h.close()},[e,t,n,r,i,a,p]),{turns:(0,D.useMemo)(()=>[...f.turns,...o],[f.turns,o]),status:c,subagentActivity:u,hasOlder:f.hasOlder,loadingOlder:f.loadingOlder,prependCount:f.prependCount,loadOlder:f.loadOlder}}function $e(e){return JSON.stringify(e)}function et(e,t,n,r,i,a=!0){let[o,s]=(0,D.useState)([]),[c,l]=(0,D.useState)(`open`),u=Ye(`${e}/store-backfill`,n,r,i,`${n}|${r}`,t),{onWindow:d,setTurns:f}=u;return(0,D.useEffect)(()=>{if(s([]),l(`open`),!a||!n||!r)return;let o=`${e}/store-stream?accountId=${encodeURIComponent(n)}&${t}=${encodeURIComponent(r)}&session_key=${encodeURIComponent(i)}`,c=new EventSource(o);return c.onopen=()=>l(`open`),c.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}s(e=>[...e,t])},c.addEventListener(`window`,e=>{try{let t=JSON.parse(e.data);typeof t.from==`number`&&d(t.from)}catch{}}),c.addEventListener(`reaction`,e=>{let t;try{t=JSON.parse(e.data)}catch{return}let n=e=>e.map(e=>e.kind===`whatsapp-persisted`&&e.msgKeyId===t.targetMsgKeyId?{...e,reactions:t.reactions}:e);s(n),f(n)}),c.addEventListener(`update`,e=>{let t;try{t=JSON.parse(e.data)}catch{return}let n=e=>e.map(e=>e.kind===`telegram-persisted`&&e.messageId===t.targetMessageId?{...e,...t.attachments?{attachments:t.attachments}:{},...t.text===void 0?{}:{text:t.text}}:e);s(n),f(n)}),c.onerror=()=>{c.readyState===2&&l(`error`)},()=>c.close()},[e,t,n,r,i,a,d,f]),{turns:(0,D.useMemo)(()=>[...u.turns,...o].sort((e,t)=>String(e.ts??``).localeCompare(String(t.ts??``))),[u.turns,o]),status:c,hasOlder:u.hasOlder,loadingOlder:u.loadingOlder,prependCount:u.prependCount,loadOlder:u.loadOlder}}var tt=e=>{if(!e)return 1/0;let t=new Date(e).getTime();return Number.isNaN(t)?1/0:t};function nt(e,t){let n=[],r=0;return e.forEach((e,t)=>n.push({sort:tt(e.ts),sub:1,ins:r++,item:{kind:`turn`,turn:e,idx:t}})),t.forEach(e=>n.push({sort:tt(e.ts),sub:0,ins:r++,item:{kind:`directive`,entry:e}})),n.sort((e,t)=>e.sort===t.sort?e.sort===1/0?e.ins-t.ins:e.sub-t.sub||e.ins-t.ins:e.sort<t.sort?-1:1).map(e=>e.item)}function rt(e,t,n=!0){let[r,i]=(0,D.useState)([]);return(0,D.useEffect)(()=>{if(!n||typeof fetch!=`function`)return;let r=!0,a=`/api/session-reader/directives?sessionId=${encodeURIComponent(e)}&session_key=${encodeURIComponent(t)}`;return fetch(a).then(e=>e.ok?e.json():{entries:[]}).then(e=>{r&&i(Array.isArray(e.entries)?e.entries:[])}).catch(()=>{r&&i([])}),()=>{r=!1}},[e,t,n]),r}var it=new Set([`operator-inbound`,`operator-typed`,`agent-reply`,`agent-reply-document`,`agent-file`,`agent-error`,`agent-webchat-final`,`agent-send-party`,`whatsapp-persisted`,`telegram-persisted`]),at=[`#c2185b`,`#7b1fa2`,`#512da8`,`#303f9f`,`#1976d2`,`#0288d1`,`#0097a7`,`#00796b`,`#388e3c`,`#689f38`,`#af6c00`,`#e64a19`,`#5d4037`,`#455a64`,`#d81b60`,`#8e24aa`,`#3949ab`,`#039be5`,`#00897b`,`#6d4c41`];function ot(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return t>>>0}function st(e){return at[ot(e)%at.length]}function ct({accountId:e,jid:t,sessionKey:n,className:r=`wa-web-avatar`,size:i=20}){let[a,o]=(0,D.useState)(null);if(!t||a===t)return(0,O.jsx)(`span`,{className:r,"aria-hidden":!0,children:(0,O.jsx)(E,{size:i})});let s=`/api/whatsapp-reader/avatar?session_key=${encodeURIComponent(n)}&accountId=${encodeURIComponent(e)}&jid=${encodeURIComponent(t)}`;return(0,O.jsx)(`span`,{className:r,"aria-hidden":!0,children:(0,O.jsx)(`img`,{className:`wa-avatar-img`,src:s,alt:``,onError:()=>o(t)})})}function Z(e,t){if(!e)return``;let n=new Date(e);if(Number.isNaN(n.getTime()))return``;let r=d(n,t);return`${String(r.hh).padStart(2,`0`)}:${String(r.mm).padStart(2,`0`)}`}function lt(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}var ut=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],dt=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function ft(e,t){if(!e)return null;let n=new Date(e);return Number.isNaN(n.getTime())?null:f(n,t)}function pt(e,t,n=new Date){if(!e)return``;let r=new Date(e);if(Number.isNaN(r.getTime()))return``;let i=f(r,t);if(i===f(n,t))return`Today`;let a=d(n,t);if(i===f(new Date(Date.UTC(a.y,a.m-1,a.d)-864e5),`UTC`))return`Yesterday`;let o=d(r,t);return`${ut[new Date(Date.UTC(o.y,o.m-1,o.d)).getUTCDay()]} ${o.d} ${dt[o.m-1]} ${o.y}`}function mt(e){return e.kind===`turn`?e.turn.ts:e.entry.ts}function ht({ts:e,prevTs:t=null}){let{zone:n}=u(),r=ft(e,n);return r===null||t!==null&&ft(t,n)===r?null:(0,O.jsx)(`div`,{className:`day-divider`,role:`separator`,children:(0,O.jsx)(`span`,{className:`day-divider-label`,children:pt(e,n)})})}function gt({ts:e,className:t}){let{zone:n}=u();return(0,O.jsx)(`time`,{className:t,children:Z(e,n)})}function _t(){return(0,O.jsx)(`div`,{className:`session-divider`,role:`separator`,children:(0,O.jsx)(`span`,{className:`session-divider-label`,children:`Conversation continued`})})}function Q({label:e,ts:t,colour:n}){let{zone:r}=u();return(0,O.jsxs)(`div`,{className:`wa-turn-head`,children:[(0,O.jsx)(`span`,{className:`wa-who`,style:n?{color:n}:void 0,children:e}),(0,O.jsx)(`time`,{className:`wa-time`,children:Z(t,r)})]})}function vt({turn:e}){let[t,n]=(0,D.useState)(!1),{zone:r}=u(),i=e.kind===`tool-result`,a=i?`wa-turn wa-turn-result${e.isError?` is-error`:``}`:`wa-turn wa-turn-tool`,o=i?e.isError?`result (error)`:`result`:`↳ ${e.name}`,s=i?e.text:JSON.stringify(e.input,null,2);return(0,O.jsxs)(`div`,{className:a,children:[(0,O.jsxs)(`button`,{type:`button`,className:`wa-tool-toggle`,"aria-expanded":t,onClick:()=>n(e=>!e),children:[(0,O.jsx)(`span`,{className:`wa-chevron`,children:t?`▾`:`▸`}),(0,O.jsx)(`span`,{className:`wa-who`,children:o}),(0,O.jsx)(`time`,{className:`wa-time`,children:Z(e.ts,r)})]}),t&&(0,O.jsx)(`pre`,{className:`wa-code`,children:s})]})}function yt({entry:e,sessionId:t,sessionKey:n}){let[r,i]=(0,D.useState)(!1),[a,o]=(0,D.useState)(null),{zone:s}=u(),c=()=>{let s=!r;if(i(s),s&&a===null&&typeof fetch==`function`){let r=`/api/session-reader/directive?sessionId=${encodeURIComponent(t)}&name=${encodeURIComponent(e.name)}&session_key=${encodeURIComponent(n)}`;fetch(r).then(e=>e.ok?e.text():`(directive unavailable)`).then(o).catch(()=>o(`(directive unavailable)`))}};return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-directive`,children:[(0,O.jsxs)(`button`,{type:`button`,className:`wa-tool-toggle`,"aria-expanded":r,onClick:c,children:[(0,O.jsx)(`span`,{className:`wa-chevron`,children:r?`▾`:`▸`}),(0,O.jsxs)(`span`,{className:`wa-who`,children:[`⚙ directive injected (`,e.len,` B)`]}),(0,O.jsx)(`time`,{className:`wa-time`,children:Z(e.ts,s)})]}),r&&(0,O.jsx)(`pre`,{className:`wa-code`,children:a??`Loading…`})]})}function bt(e){return`text`in e&&typeof e.text==`string`?e.text:``}function xt(e,t){let n=(t??``).trim();if(!n)return e;let r=e.toLowerCase(),i=n.toLowerCase(),a=[],o=0,s=0;for(;;){let t=r.indexOf(i,o);if(t===-1){a.push(e.slice(o));break}t>o&&a.push(e.slice(o,t)),a.push((0,O.jsx)(`mark`,{className:`wa-search-hit`,children:e.slice(t,t+i.length)},s++)),o=t+i.length}return a.length===1?a[0]:(0,O.jsx)(O.Fragment,{children:a})}var $={onFail:({kind:e,mime:t,reason:n})=>console.warn(`[operator-ui] op=reader-attachment-fail kind=${e} mime=${t??``} reason=${n}`)};function St(e,t,n,r){switch(e.kind){case`operator-inbound`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-in`,children:[(0,O.jsx)(Q,{label:`Operator${P(e.source)}`,ts:e.ts}),e.text&&(0,O.jsx)(X,{text:e.text,body:e.text,ts:e.ts,formatTime:Z}),e.attachments&&e.attachments.length>0&&(0,O.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,O.jsx)(H,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:B(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:$},t))})]},t);case`operator-typed`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-in wa-turn-typed`,children:[(0,O.jsx)(Q,{label:`Operator (web)`,ts:e.ts}),(0,O.jsx)(X,{text:e.text,body:e.text,ts:e.ts,formatTime:Z})]},t);case`agent-text`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-think`,children:[(0,O.jsx)(Q,{label:`Agent`,ts:e.ts}),(0,O.jsx)(X,{text:e.text,body:e.text,ts:e.ts,formatTime:Z})]},t);case`agent-reply`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,O.jsx)(Q,{label:`Agent`,ts:e.ts}),(0,O.jsx)(X,{text:e.text,body:e.text,ts:e.ts,formatTime:Z})]},t);case`agent-send-party`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,O.jsx)(Q,{label:`Agent to ${e.phone}`,ts:e.ts}),(0,O.jsx)(X,{text:e.text,body:e.text,ts:e.ts,formatTime:Z})]},t);case`agent-reply-document`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,O.jsx)(Q,{label:`Agent`,ts:e.ts}),(0,O.jsxs)(`p`,{className:`wa-doc`,children:[(0,O.jsx)(C,{size:14,"aria-hidden":!0,style:{verticalAlign:`text-bottom`}}),` `,`sent document(s): `,e.files.map(lt).join(`, `)]}),e.caption&&(0,O.jsx)(`p`,{className:`wa-body`,children:e.caption})]},t);case`agent-file`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,O.jsx)(Q,{label:`Agent`,ts:e.ts}),e.files.map((t,r)=>{let i=lt(t),a=e.downloads?.[r];return(0,O.jsx)(H,{expandable:!0,filename:i,href:a?ne(a,n.sessionId,n.sessionKey,z.test(i)?`inline`:void 0):void 0,telemetry:$},r)}),e.caption&&(0,O.jsx)(`p`,{className:`wa-body`,children:e.caption})]},t);case`telegram-persisted`:{let i=e.origin===`operator-manual`,a=e.fromMe?i?`You`:`Sent`:e.senderName??`Contact`,o=e.deleted===!0;return(0,O.jsxs)(`div`,{className:`wa-turn ${e.fromMe?`wa-turn-out`:`wa-turn-in`}${i?` wa-op-manual`:``}${o?` wa-turn-deleted`:``}`,children:[(0,O.jsx)(Q,{label:a,ts:e.ts}),o&&(0,O.jsx)(`span`,{className:`wa-deleted-tag`,children:`deleted`}),e.text&&r?.role===`head`&&(0,O.jsx)(We,{points:r.points,formatTime:Z,msgKeyId:e.messageId}),e.text&&r&&(0,O.jsx)(`p`,{className:`wa-body`,children:xt(e.text,n.highlight)}),e.text&&!r&&(0,O.jsx)(X,{text:e.text,body:xt(e.text,n.highlight),msgKeyId:e.messageId,ts:e.ts,formatTime:Z}),e.attachments&&e.attachments.length>0&&(0,O.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,O.jsx)(H,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:B(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:$},t))}),(0,O.jsxs)(`span`,{className:`wa-bubble-meta`,children:[i&&(0,O.jsx)(`span`,{className:`wa-op-tag`,children:`You`}),(0,O.jsx)(gt,{ts:e.ts,className:`wa-bubble-time`})]})]},t)}case`whatsapp-persisted`:{let r=e.origin===`operator-manual`,i=e.fromMe?r?`You`:`Sent`:e.senderName??`Contact`,a=n.groupThread&&!e.fromMe&&n.storeAccountId&&e.senderJid&&s(e.senderJid)?e.senderJid:null;return(0,O.jsxs)(`div`,{className:`wa-turn ${e.fromMe?`wa-turn-out`:`wa-turn-in`}${r?` wa-op-manual`:``}${a?` wa-turn-has-avatar`:``}`,children:[a&&(0,O.jsx)(ct,{accountId:n.storeAccountId,jid:a,sessionKey:n.sessionKey,className:`wa-bubble-avatar`,size:14}),n.onReplyTo&&e.msgKeyId&&(0,O.jsx)(`button`,{type:`button`,className:`wa-bubble-reply`,"aria-label":`Reply to this message`,onClick:()=>n.onReplyTo({msgKeyId:e.msgKeyId,body:e.text,senderName:e.senderName,fromMe:e.fromMe}),children:(0,O.jsx)(T,{size:14})}),n.showCopy&&e.text&&(0,O.jsx)(`button`,{type:`button`,className:`wa-bubble-copy`,"aria-label":`Copy this message`,onClick:()=>{let t=e.text;o(t).then(e=>{e||console.warn(`[operator-ui] op=wa-copy-fail reason=clipboard-unavailable`)})},children:(0,O.jsx)(p,{size:14})}),e.quoted&&(0,O.jsxs)(`div`,{className:`wa-quoted`,children:[(0,O.jsx)(`span`,{className:`wa-quoted-who`,children:e.quoted.fromMe?`You`:e.quoted.sender??`Contact`}),(0,O.jsx)(`span`,{className:`wa-quoted-body`,children:e.quoted.body||`Message`})]}),(0,O.jsx)(Q,{label:i,ts:e.ts,colour:n.groupThread&&!e.fromMe?st(e.senderTelephone||e.senderName||``):void 0}),e.text&&(0,O.jsx)(X,{text:e.text,body:xt(e.text,n.highlight),msgKeyId:e.msgKeyId??void 0,ts:e.ts,formatTime:Z}),e.attachments&&e.attachments.length>0&&(0,O.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,O.jsx)(H,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:B(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:$},t))}),e.reactions&&e.reactions.length>0&&(0,O.jsx)(`div`,{className:`wa-reactions`,children:e.reactions.map((e,t)=>(0,O.jsx)(`span`,{className:`wa-reaction`,title:e.reactorName??void 0,children:e.emoji},t))}),(0,O.jsxs)(`span`,{className:`wa-bubble-meta`,children:[r&&(0,O.jsx)(`span`,{className:`wa-op-tag`,children:`You`}),(0,O.jsx)(gt,{ts:e.ts,className:`wa-bubble-time`}),e.fromMe&&(0,O.jsx)(b,{size:14,className:`wa-bubble-tick`,"aria-hidden":!0})]})]},t)}case`session-continued`:return(0,O.jsx)(_t,{},t);case`harness-internal`:return null;case`tool-call`:case`tool-result`:return(0,O.jsx)(vt,{turn:e},t);case`agent-error`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-error`,role:`alert`,children:[(0,O.jsx)(Q,{label:`Agent`,ts:e.ts}),(0,O.jsx)(`p`,{className:`wa-body wa-error-body`,children:N(e.code,`admin`)}),e.code===`agent_error`&&e.raw&&(0,O.jsx)(`pre`,{className:`wa-code`,children:e.raw})]},t)}}function Ct(e,t,n,r=`admin`,i,a,o,s,c){let l={sessionId:t,sessionKey:n,audience:r,highlight:i,onReplyTo:a,showCopy:o,groupThread:s,storeAccountId:c},u=Le(e),d=[],f=null;return e.forEach((e,r)=>{let i=mt(e);i!==null&&!Number.isNaN(new Date(i).getTime())&&(d.push((0,O.jsx)(ht,{ts:i,prevTs:f},`day-${r}`)),f=i),d.push(e.kind===`turn`?St(e.turn,r,l,u.get(r)):(0,O.jsx)(yt,{entry:e.entry,sessionId:t,sessionKey:n},r))}),d}function wt(e){return e.filter(e=>e.kind===`turn`&&it.has(e.turn.kind)&&!(e.turn.kind===`operator-inbound`&&e.turn.scheduled))}function Tt(e,t,n){return t===0||n>0?null:`[operator-ui] op=store-turns-unpainted channel=${e} received=${t} painted=${n}`}var Et=(0,D.memo)(function({sessionId:e,projectDir:t,sessionKey:n,renderItems:r=Ct,clean:i,onToggleClean:a,forceDeliveredOnly:o=!1,streamEndpoint:s=`/api/session-reader/stream`,suppressDirectives:c=!1,tail:l=null,resetKey:u,onTurnsChange:d,onActivityChange:f,store:p,search:m,onReplyTo:h,groupThread:g=!1}){let _=!!p,v=Qe(e,t,n,s,u,!_),y=p?.channel===`telegram`?`/api/telegram-reader`:`/api/whatsapp-reader`,b=p?.channel===`telegram`?`channelKey`:`remoteJid`,x=p?p.channel===`telegram`?p.channelKey:p.remoteJid:``,S=et(y,b,p?.accountId??``,x,n,_),{turns:C,status:w}=_?{turns:S.turns,status:S.status}:{turns:v.turns,status:v.status},T=_?S:v,E=_?null:v.subagentActivity;(0,D.useEffect)(()=>{f?.(E)},[E,f]),(0,D.useEffect)(()=>{d?.(C.length)},[C.length,d]);let k=nt(C,rt(e,n,!c)),j=a==null?!1:!!i,M=o||j?wt(k):k,N=(m??``).trim().toLowerCase(),P=N.length>0,F=P?M.filter(e=>e.kind===`turn`&&bt(e.turn).toLowerCase().includes(N)):M;(0,D.useEffect)(()=>{if(!g||!_)return;let e=C.filter(e=>e.kind===`whatsapp-persisted`&&!e.fromMe);if(e.length===0)return;let t=new Set(e.map(e=>e.senderTelephone||e.senderName||``));new Set(Array.from(t,e=>st(e))),new Set(e.filter(e=>!e.senderTelephone).map(e=>e.senderName??``)).size},[g,_,C,x]),(0,D.useEffect)(()=>{let e=_?F:r===Ct?M:null;if(!e)return;let t=Ge(e);if(t.bodies===0)return;let n=Ke(t,He());n&&console.warn(n);let i=Oe();if(i.modalsLive>0){let t=new Map,n=Le(e);e.forEach((e,r)=>{let i=n.get(r);if(!i||i.role!==`head`)return;let a=e.kind===`turn`?e.turn:null;a&&`messageId`in a&&typeof a.messageId==`string`&&t.set(a.messageId,i.points.length)});let r=ke(i,Ae(i.mapKey,t));r&&console.warn(r)}},[_,F,M,r]);let I=p?.channel;return(0,D.useEffect)(()=>{if(!_||!I)return;let e=Tt(I,C.length,M.length);e&&console.warn(e)},[_,I,C.length,M.length]),(0,O.jsxs)(A,{repinSignals:[C,j,P],tail:l,onReachTop:T.hasOlder&&!P?T.loadOlder:void 0,prependToken:T.prependCount,children:[w===`error`&&(0,O.jsx)(`div`,{className:`wa-reader-error`,children:`Stream disconnected.`}),T.loadingOlder&&(0,O.jsx)(`div`,{className:`wa-reader-placeholder`,children:`Loading earlier messages…`}),!P&&C.length===0&&w===`open`&&(0,O.jsx)(`div`,{className:`wa-reader-placeholder`,children:`No messages in this conversation yet.`}),P&&F.length===0&&(0,O.jsxs)(`div`,{className:`wa-reader-placeholder`,children:[`No matches for "`,m,`".`]}),_?Ct(F,e,n,`admin`,m,h,!0,g,p?.accountId):r(M,e,n)]})});function Dt(e,t){let n=e.split(`;`)[0].trim().toLowerCase();return t.has(n)}var Ot=[`audio/ogg;codecs=opus`,`audio/webm;codecs=opus`,`audio/webm`,`audio/mp4`];function kt(){for(let e of Ot)if(MediaRecorder.isTypeSupported(e))return e;return``}function At(e){return e.split(`;`)[0]}async function jt(){return typeof navigator>`u`||!navigator.mediaDevices?.enumerateDevices?[]:(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`)}function Mt(e){let[t,n]=(0,D.useState)(`idle`),[r,i]=(0,D.useState)(0),[a,o]=(0,D.useState)(null),[s,c]=(0,D.useState)(null),l=(0,D.useRef)(null),u=(0,D.useRef)(null),d=(0,D.useRef)([]),f=(0,D.useRef)(``),p=(0,D.useRef)(null),m=(0,D.useRef)(0),h=(0,D.useRef)(0),g=(0,D.useRef)(null),_=(0,D.useRef)(null),v=(0,D.useRef)(0),y=(0,D.useCallback)(()=>{if(p.current&&=(clearInterval(p.current),null),v.current&&=(cancelAnimationFrame(v.current),0),l.current&&l.current.state!==`inactive`)try{l.current.stop()}catch{}l.current=null,d.current=[],u.current&&=(u.current.getTracks().forEach(e=>e.stop()),null),g.current&&(g.current.close().catch(()=>{}),g.current=null,_.current=null),h.current=0,m.current=0},[]);(0,D.useEffect)(()=>y,[y]);let b=(0,D.useCallback)(()=>{m.current=Date.now(),p.current=setInterval(()=>{let e=Date.now()-m.current,t=h.current+e;i(Math.floor(t/1e3))},200)},[]),x=(0,D.useCallback)(()=>{p.current&&=(clearInterval(p.current),null);let e=Date.now()-m.current;h.current+=e},[]),S=(0,D.useCallback)(()=>{let e=_.current;if(!e)return;let t=new Uint8Array(e.frequencyBinCount),n=()=>{e.getByteTimeDomainData(t),o(new Uint8Array(t)),v.current=requestAnimationFrame(n)};n()},[]),C=(0,D.useCallback)(()=>{v.current&&=(cancelAnimationFrame(v.current),0)},[]),w=e?.onResult,T=(0,D.useCallback)(async e=>{if(!(t!==`idle`&&t!==`error`)){if(c(null),typeof window<`u`&&!window.isSecureContext){n(`error`),c(`Voice recording requires a secure connection (HTTPS). Use your tunnel URL for voice notes.`);return}if(typeof navigator>`u`||!navigator.mediaDevices?.getUserMedia){n(`error`),c(`Voice recording is not supported in this browser.`);return}if(typeof MediaRecorder>`u`){n(`error`),c(`Voice recording is not supported in this browser.`);return}try{let t=e?{audio:{deviceId:{exact:e}}}:{audio:!0},r;try{r=await navigator.mediaDevices.getUserMedia(t)}catch(t){let n=t?.name;if(e&&(n===`OverconstrainedError`||n===`NotFoundError`))r=await navigator.mediaDevices.getUserMedia({audio:!0});else throw t}u.current=r;let a=new AudioContext;g.current=a;let s=a.createMediaStreamSource(r),c=a.createAnalyser();c.fftSize=256,s.connect(c),_.current=c;let p=kt();f.current=p;let m=new MediaRecorder(r,p?{mimeType:p}:void 0);l.current=m,d.current=[],m.ondataavailable=e=>{e.data.size>0&&d.current.push(e.data)},r.getAudioTracks()[0]?.addEventListener(`ended`,()=>{y(),n(`idle`),i(0),o(null)}),m.start(1e3),n(`recording`),i(0),b(),S(),w?.({ok:!0})}catch(e){y(),n(`error`),e instanceof DOMException?(w?.({ok:!1,name:e.name,message:e.message}),e.name===`NotAllowedError`?c(`Microphone access was denied. Check your browser permissions to enable voice recording.`):e.name===`NotFoundError`?c(`No microphone found. Connect a microphone to use voice recording.`):e.name===`NotReadableError`?c(`The microphone could not be started even though access was granted. The browser reported: ${e.message} (${e.name}).`):c(`Microphone error (${e.name}): ${e.message}`)):(w?.({ok:!1}),c(`Could not start recording.`))}}},[t,y,b,S,w]),E=(0,D.useCallback)(()=>{let e=l.current;e&&(t===`recording`&&e.state===`recording`?(e.pause(),x(),C(),n(`paused`)):t===`paused`&&e.state===`paused`&&(e.resume(),b(),S(),n(`recording`)))},[t,x,b,S,C]),O=(0,D.useCallback)(()=>{t!==`recording`&&t!==`paused`||(y(),n(`idle`),i(0),o(null))},[t,y]),k=(0,D.useCallback)(async()=>{if(t!==`recording`&&t!==`paused`)return null;let e=l.current;if(!e)return null;let r=t===`recording`?Date.now()-m.current:0;return h.current+r<1e3?(O(),null):(n(`sending`),x(),C(),new Promise(t=>{e.onstop=()=>{let r=f.current||e.mimeType||`audio/webm`,a=new Blob(d.current,{type:At(r)});y(),n(`idle`),i(0),o(null),t(a.size>0?a:null)},e.stop()}))},[t,O,x,C,y]);return(0,D.useEffect)(()=>{if(t!==`error`)return;let e=setTimeout(()=>{n(`idle`),c(null)},8e3);return()=>clearTimeout(e)},[t]),{state:t,elapsedSeconds:r,waveform:a,errorMessage:s,start:T,togglePause:E,discard:O,send:k}}export{y as A,w as C,g as D,x as E,v as O,T as S,S as T,B as _,yt as a,N as b,lt as c,mt as d,ct as f,z as g,R as h,ht as i,_ as k,ft as l,ue as m,Mt as n,_t as o,H as p,Dt as r,Et as s,jt as t,Z as u,ne as v,C as w,E as x,re as y};
2
+ import{o as e}from"./chunk-BycB0eMI.js";import{i as t,t as n}from"./jsx-runtime-DXWyHqht.js";import{B as r,G as i,Z as a,a as o,f as s,j as c,o as l,v as u,w as d,x as f}from"./useMediaQuery-fFM7rxUD.js";import{t as p}from"./copy-Bw2h4ofb.js";import{t as m}from"./play-fy3tdi7M.js";import{t as h}from"./preload-helper-eAV8hweq.js";var g=`image/jpeg,image/png,image/gif,image/webp,application/pdf,text/plain,text/markdown,text/csv,text/html,text/calendar,application/zip,application/x-zip-compressed,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.oasis.opendocument.text,text/rtf,application/rtf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel,application/vnd.oasis.opendocument.spreadsheet,application/vnd.openxmlformats-officedocument.presentationml.presentation,application/vnd.ms-powerpoint,application/vnd.oasis.opendocument.presentation,audio/ogg,audio/opus,audio/mp4,audio/x-m4a,audio/mpeg,audio/webm,audio/wav,video/mp4,.docx,.odt,.rtf,.xlsx,.xls,.ods,.pptx,.ppt,.odp,.opus,.ogg,.m4a,.mp4,.mp3,.wav,.webm`,_=new Set(g.split(`,`).filter(e=>!e.startsWith(`.`))),v=50*1024*1024;function y(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}var b=a(`check-check`,[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]),x=a(`file-code`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12.5 8 15l2 2.5`,key:`1tg20x`}],[`path`,{d:`m14 12.5 2 2.5-2 2.5`,key:`yinavb`}]]),S=a(`mic`,[[`path`,{d:`M12 19v3`,key:`npa21l`}],[`path`,{d:`M19 10v2a7 7 0 0 1-14 0v-2`,key:`1vc78b`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`13`,rx:`3`,key:`s6n7sd`}]]),C=a(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),w=a(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),T=a(`reply`,[[`path`,{d:`M20 18v-2a4 4 0 0 0-4-4H4`,key:`5vmcpk`}],[`path`,{d:`m9 17-5-5 5-5`,key:`nvlc11`}]]),E=a(`user`,[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]),D=e(t(),1),O=n(),k=200;function A({children:e,tail:t=null,repinSignals:n,onReachTop:r,prependToken:i=0}){let a=(0,D.useRef)(null),o=(0,D.useRef)(null),s=(0,D.useRef)(!0),[c,l]=(0,D.useState)(!0),u=(0,D.useRef)(0),d=(0,D.useRef)(0),f=(0,D.useRef)(!1),p=(0,D.useRef)(r);p.current=r;let m=()=>{let e=a.current;if(!e)return;let t=e.clientHeight,n=e.scrollHeight,r=t!==u.current||n!==d.current;if(u.current=t,d.current=n,r){s.current&&(e.scrollTop=e.scrollHeight);return}let i=n-e.scrollTop-t<=32;s.current=i,l(e=>e===i?e:i);let o=e.scrollTop<=k;o&&!f.current&&p.current?.(),f.current=o},h=()=>{let e=a.current;e&&(e.scrollTop=e.scrollHeight,d.current=e.scrollHeight,u.current=e.clientHeight,s.current=!0,l(!0))},g=t!=null;return(0,D.useLayoutEffect)(()=>{let e=a.current;if(!e||i===0)return;let t=e.scrollHeight-d.current;t>0&&(e.scrollTop+=t),d.current=e.scrollHeight},[i]),(0,D.useLayoutEffect)(()=>{let e=a.current;e&&s.current&&(e.scrollTop=e.scrollHeight),e&&(d.current=e.scrollHeight,u.current=e.clientHeight)},[...n,g]),(0,D.useLayoutEffect)(()=>{if(typeof ResizeObserver>`u`)return;let e=new ResizeObserver(()=>m());return a.current&&e.observe(a.current),o.current&&e.observe(o.current),()=>e.disconnect()},[]),(0,O.jsxs)(`div`,{className:`wa-reader`,children:[(0,O.jsx)(`div`,{className:`wa-reader-thread`,ref:a,onScroll:m,children:(0,O.jsxs)(`div`,{className:`wa-thread-scroll`,ref:o,children:[e,t]})}),!c&&(0,O.jsx)(`button`,{type:`button`,className:`wa-jump`,onClick:h,"aria-label":`Jump to latest message`,title:`Jump to latest message`,children:`↓`})]})}var j={auth_expired:`Your session has expired. Please sign in again.`,claude_down:`Claude is currently experiencing an outage. Please try again in a few minutes.`,claude_overloaded:`Claude is overloaded right now. Please try again shortly.`,model_unavailable:`The selected model is currently unavailable. Switch to a different model from the model picker to continue.`,agent_error:`Something went wrong. Please try again.`},M={auth_expired:`I'm not available right now. Please try again later.`,claude_down:`I'm not available right now. Please try again later.`,claude_overloaded:`I'm not available right now. Please try again shortly.`,model_unavailable:`I'm not available right now. Please try again later.`,agent_error:`I'm not available right now. Please try again later.`};function N(e,t=`admin`){return t===`public`?M[e]:j[e]}function P(e){return e===`whatsapp`?` · via WhatsApp`:e===`webchat`?` · via web`:``}var F=56,I=5;function L(e,t){let n=Math.max(1,Math.floor(e.length/t)),r=[],i=0;for(let a=0;a<t;a++){let t=a*n,o=0,s=0;for(let r=t;r<t+n&&r<e.length;r++)o+=e[r]*e[r],s++;let c=s>0?Math.sqrt(o/s):0;r.push(c),c>i&&(i=c)}return i>0?r.map(e=>e/i):r}function ee({src:e,filename:t,onDecodeFail:n,onMediaError:r}){let i=(0,D.useRef)(null),a=(0,D.useRef)(null),o=(0,D.useRef)(!1),[s,c]=(0,D.useState)([]),[u,d]=(0,D.useState)(void 0),[f,p]=(0,D.useState)(!1),[h,g]=(0,D.useState)(0),[_,v]=(0,D.useState)(0);(0,D.useEffect)(()=>{let t=!1,r=null,i=window.AudioContext??window.webkitAudioContext,a=()=>{t||o.current||(o.current=!0,n())};if(!i){a();return}let s=new i;return(async()=>{try{let n=await fetch(e);if(!n.ok)throw Error(`audio fetch ${n.status}`);let i=await n.blob();if(t)return;r=URL.createObjectURL(i),d(r);let a=await s.decodeAudioData(await i.arrayBuffer());if(t)return;c(L(a.getChannelData(0),F)),Number.isFinite(a.duration)&&a.duration>0&&v(a.duration)}catch{a()}finally{try{s.close()}catch{}}})(),()=>{t=!0,r&&URL.revokeObjectURL(r)}},[e]);let y=()=>{let e=i.current;e&&(f?e.pause():Promise.resolve(e.play()).catch(()=>{}))},b=e=>{let t=i.current;if(!t||!(_>0))return;let n=Math.min(_,Math.max(0,e));t.currentTime=n,g(n)},x=e=>{let t=a.current;if(!t||!(_>0))return;let n=t.getBoundingClientRect();b(Math.min(1,Math.max(0,(e-n.left)/n.width))*_)},S=e=>{x(e.clientX);let t=e=>x(e.clientX),n=()=>{window.removeEventListener(`mousemove`,t),window.removeEventListener(`mouseup`,n)};window.addEventListener(`mousemove`,t),window.addEventListener(`mouseup`,n)},C=e=>{if(!(_>0))return;let t=i.current?.currentTime??0;switch(e.key){case`ArrowRight`:case`ArrowUp`:b(t+I),e.preventDefault();break;case`ArrowLeft`:case`ArrowDown`:b(t-I),e.preventDefault();break;case`Home`:b(0),e.preventDefault();break;case`End`:b(_),e.preventDefault();break;default:break}},T=_>0?Math.min(1,h/_):0,E=Math.round(T*F),k=l(h>0?h:_);return(0,O.jsxs)(`div`,{className:`voice-note`,children:[(0,O.jsx)(`button`,{type:`button`,className:`voice-note-play`,"aria-label":`${f?`Pause`:`Play`} ${t}`,onClick:y,children:f?(0,O.jsx)(w,{size:16,"aria-hidden":!0}):(0,O.jsx)(m,{size:16,"aria-hidden":!0})}),(0,O.jsx)(`div`,{ref:a,className:`voice-note-bars`,role:`slider`,tabIndex:0,"aria-label":`Seek ${t}`,"aria-valuemin":0,"aria-valuemax":Math.round(_),"aria-valuenow":Math.round(h),onMouseDown:S,onKeyDown:C,children:(s.length?s:Array.from({length:F},()=>0)).map((e,t)=>(0,O.jsx)(`span`,{className:`voice-note-bar${t<E?` is-played`:``}`,style:{height:`${Math.max(10,Math.round(e*100))}%`}},t))}),(0,O.jsx)(`span`,{className:`voice-note-time`,children:k}),(0,O.jsx)(`audio`,{ref:i,className:`voice-note-audio`,preload:`metadata`,src:u,"aria-label":t,onPlay:()=>p(!0),onPause:()=>p(!1),onEnded:()=>p(!1),onError:()=>r?.(),onLoadedMetadata:e=>{let t=e.currentTarget.duration;Number.isFinite(t)&&t>0&&v(t)},onTimeUpdate:e=>g(e.currentTarget.currentTime)})]})}var R=/\.(png|jpe?g|gif|webp|svg|bmp)$/i,z=/\.pdf$/i;function te(e,t){return(t?t.startsWith(`image/`):R.test(e))?`image`:t&&t.startsWith(`audio/`)?`audio`:(t?t===`application/pdf`:z.test(e))?`pdf`:`file`}function ne(e,t,n,r){let i=encodeURIComponent(e.path),a=encodeURIComponent(n),o=r?`&disposition=${r}`:``;return e.root===`scratchpad`?`/api/admin/files/download?path=${i}&root=scratchpad&sessionId=${encodeURIComponent(t)}&session_key=${a}${o}`:`/api/admin/files/download?path=${i}&root=data&session_key=${a}${o}`}function B(e,t,n,r){return t===`public`?`/api/public-reader/attachment/${e}?sessionId=${encodeURIComponent(n)}`:`/api/admin/attachment/${e}?session_key=${encodeURIComponent(r)}`}function re(e,t,n){return`/api/admin/session-upload?session_key=${encodeURIComponent(n)}&session_id=${encodeURIComponent(e)}&file=${encodeURIComponent(t)}`}function ie(e){if(e<1024)return`${e} B`;let t=e/1024;if(t<1024)return`${t<10?t.toFixed(1):Math.round(t)} KB`;let n=t/1024;return`${n<10?n.toFixed(1):Math.round(n)} MB`}function V({href:e,filename:t,label:n}){return(0,O.jsxs)(`a`,{className:`chat-attachment-chip`,href:e,download:t,children:[(0,O.jsx)(C,{size:14,"aria-hidden":!0}),n]})}function ae({href:e,filename:t,className:n,size:r=14,onClick:a}){return(0,O.jsx)(`a`,{className:n,href:e,download:t,"aria-label":`Download ${t}`,onClick:a,children:(0,O.jsx)(i,{size:r,"aria-hidden":!0})})}function oe({src:e,filename:t,sizeBytes:n,expandable:r,onFail:i}){let[a,o]=(0,D.useState)(!1),[s,c]=(0,D.useState)(!1),l=n==null?t:`${t} · ${ie(n)}`;return s?(0,O.jsx)(V,{href:e,filename:t,label:l}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(`span`,{className:`chat-attachment-image-wrap`,children:[(0,O.jsx)(`img`,{className:`chat-attachment-image`,src:e,alt:t,onClick:r?()=>o(!0):void 0,onError:()=>{c(!0),i?.(`fetch`)}}),(0,O.jsx)(ae,{href:e,filename:t,className:`chat-attachment-download`})]}),r&&a&&(0,O.jsx)(`div`,{className:`chat-attachment-overlay`,role:`dialog`,"aria-label":t,onClick:()=>o(!1),children:(0,O.jsx)(`img`,{className:`chat-attachment-overlay-image`,src:e,alt:t})})]})}var se=280,ce=360,le=16;function ue({src:e,filename:t,sizeBytes:n,onFail:i}){let[a,o]=(0,D.useState)(!1),[s,c]=(0,D.useState)(!1),l=(0,D.useRef)(null),u=n==null?t:`${t} · ${ie(n)}`;return(0,D.useEffect)(()=>{let t=!1,n=null;return(async()=>{try{let{loadPdf:r,renderPageToFit:i}=await h(async()=>{let{loadPdf:e,renderPageToFit:t}=await import(`./pdf-render-B5af7vu1.js`);return{loadPdf:e,renderPageToFit:t}},__vite__mapDeps([0,1])),a=await r(e);n=a;let o=l.current;if(t||!o)return;await i(a,1,o,se,ce)}catch{t||(c(!0),i?.(`render`))}})(),()=>{t=!0;try{n?.destroy()}catch{}}},[e]),s?(0,O.jsx)(V,{href:e,filename:t,label:u}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(`div`,{className:`chat-attachment-pdf`,children:[(0,O.jsx)(`canvas`,{ref:l,className:`chat-attachment-pdf-canvas`,"aria-label":t}),(0,O.jsx)(ae,{href:e,filename:t,className:`chat-attachment-download`}),(0,O.jsx)(`button`,{type:`button`,className:`chat-attachment-pdf-expand`,"aria-label":`Expand ${t}`,onClick:()=>o(!0),children:(0,O.jsx)(r,{size:14,"aria-hidden":!0})})]}),a&&(0,O.jsx)(de,{src:e,filename:t,label:u,onClose:()=>o(!1),onFail:i})]})}function de({src:e,filename:t,label:n,onClose:r,onFail:i}){let a=(0,D.useRef)(null),o=(0,D.useRef)(null),[s,l]=(0,D.useState)(null),[u,d]=(0,D.useState)(!1);return(0,D.useEffect)(()=>{let t=!1;return(async()=>{try{let{loadPdf:n}=await h(async()=>{let{loadPdf:e}=await import(`./pdf-render-B5af7vu1.js`);return{loadPdf:e}},__vite__mapDeps([0,1])),r=await n(e);if(t){try{r.destroy()}catch{}return}o.current=r,l(r.numPages)}catch{t||(d(!0),i?.(`render`))}})(),()=>{t=!0;try{o.current?.destroy()}catch{}}},[e]),(0,D.useEffect)(()=>{if(s==null)return;let e=a.current,t=o.current;if(!e||!t)return;let n=!1;return(async()=>{try{let{renderPageToWidth:r}=await h(async()=>{let{renderPageToWidth:e}=await import(`./pdf-render-B5af7vu1.js`);return{renderPageToWidth:e}},__vite__mapDeps([0,1])),i=Array.from(e.querySelectorAll(`canvas.chat-attachment-overlay-page`)),a=Math.max(e.clientWidth-le*2,1);for(let e=0;e<i.length;e++){if(n)return;await r(t,e+1,i[e],a)}}catch{n||(d(!0),i?.(`render`))}})(),()=>{n=!0}},[s]),(0,O.jsxs)(`div`,{className:`chat-attachment-overlay`,role:`dialog`,"aria-label":t,onClick:r,children:[(0,O.jsx)(`div`,{ref:a,className:`chat-attachment-overlay-pdf`,onClick:e=>e.stopPropagation(),children:u?(0,O.jsx)(V,{href:e,filename:t,label:n}):Array.from({length:s??0},(e,n)=>(0,O.jsx)(`canvas`,{className:`chat-attachment-overlay-page`,"aria-label":`${t} page ${n+1}`},n))}),(0,O.jsx)(ae,{href:e,filename:t,className:`chat-attachment-overlay-download`,size:20,onClick:e=>e.stopPropagation()}),(0,O.jsx)(`button`,{type:`button`,className:`chat-attachment-overlay-close`,"aria-label":`Close`,onClick:r,children:(0,O.jsx)(c,{size:20,"aria-hidden":!0})})]})}function fe({src:e,filename:t,onFail:n}){let[r,i]=(0,D.useState)(!1);return r?(0,O.jsx)(`audio`,{className:`chat-attachment-audio`,controls:!0,preload:`metadata`,src:e,"aria-label":t,onError:()=>n?.(`fetch`)}):(0,O.jsx)(ee,{src:e,filename:t,onDecodeFail:()=>{i(!0),n?.(`render`)},onMediaError:()=>{i(!0),n?.(`fetch`)}})}function H({filename:e,href:t,mimeType:n,sizeBytes:r,expandable:i,telemetry:a}){let o=te(e,n);(0,D.useEffect)(()=>{a?.onRender?.({kind:o,mime:n,served:!!t})},[]);let s=a?.onFail?e=>a.onFail({kind:o===`pdf`?`pdf`:o===`audio`?`audio`:`image`,mime:n,reason:e}):void 0;if(o===`image`&&t)return(0,O.jsx)(oe,{src:t,filename:e,sizeBytes:r,expandable:i,onFail:s});if(o===`audio`&&t)return(0,O.jsx)(fe,{src:t,filename:e,onFail:s});if(o===`pdf`&&t)return(0,O.jsx)(ue,{src:t,filename:e,sizeBytes:r,onFail:s});let c=r==null?e:`${e} · ${ie(r)}`;return t?(0,O.jsx)(V,{href:t,filename:e,label:c}):(0,O.jsxs)(`p`,{className:`chat-doc`,children:[(0,O.jsx)(C,{size:14,"aria-hidden":!0,style:{verticalAlign:`text-bottom`}}),` `,c]})}function U(e,t){return(e+180)/360*2**t}function W(e,t){return(1-Math.asinh(Math.tan(e*Math.PI/180))/Math.PI)/2*2**t}function pe(e,t,n){return`https://tile.openstreetmap.org/${e}/${t}/${n}.png`}function me(e,t,n){let r=2**n,i=Math.round(e)-1,a=(i%r+r)%r,o=Math.min(Math.max(Math.round(t)-1,0),r-2);return{tiles:[{x:a,y:o},{x:(a+1)%r,y:o},{x:a,y:o+1},{x:(a+1)%r,y:o+1}].map(e=>({...e,url:pe(n,e.x,e.y)})),offsetX:e*256-i*256,offsetY:t*256-o*256}}function he(e,t,n=16){return me(U(t,n),W(e,n),n)}function ge(e,t,n,r,i){let a=2**n,o=Math.min(Math.ceil(r/256)+1,a),s=Math.min(Math.ceil(i/256)+1,a),c=Math.round(e-o/2),l=Math.min(Math.max(Math.round(t-s/2),0),Math.max(a-s,0)),u=[];for(let e=0;e<s;e++)for(let t=0;t<o;t++){let r=((c+t)%a+a)%a,i=l+e;i<0||i>=a||u.push({x:r,y:i,url:pe(n,r,i)})}return{tiles:u,cols:o,rows:s,offsetX:(e-c)*256,offsetY:(t-l)*256}}function _e(e){let t=[];for(let n of e){let e=t[t.length-1],r=e===void 0?0:Math.round((e-n)/360);t.push(r===0?n:n+r*360)}return t}function G(e,t,n){let r=_e(e.map(e=>e.lon)),i=1;for(let a=16;a>=1;a--){let o=r.map(e=>U(e,a)*256),s=e.map(e=>W(e.lat,a)*256);if(Math.max(...o)-Math.min(...o)<=t&&Math.max(...s)-Math.min(...s)<=n){i=a;break}}let a=r.map(e=>U(e,i)),o=e.map(e=>W(e.lat,i)),s=(Math.min(...a)+Math.max(...a))/2,c=(Math.min(...o)+Math.max(...o))/2,l=me(s,c,i);return{zoom:i,...l,cxf:s,cyf:c,points:a.map((e,t)=>({x:l.offsetX+(e-s)*256,y:l.offsetY+(o[t]-c)*256}))}}function ve(e){return G(e,240,160)}function ye(e,t,n){let r=2**e.zoom,i=((e.cxf-t/256)%r+r)%r,a=Math.min(Math.max(e.cyf-n/256,0),r);return{...e,cxf:i,cyf:a}}function K(e,t,n,r){let i=Math.min(Math.max(e.zoom+t,1),19);if(i===e.zoom)return e;let a=2**(i-e.zoom),o=2**i;return{cxf:(((e.cxf+n/256)*a-n/256)%o+o)%o,cyf:Math.min(Math.max((e.cyf+r/256)*a-r/256,0),o),zoom:i}}var q=0,be=0,xe=0,J=0,Se=0,Ce=0,we=0,Te=0,Y=0,Ee=``,De=0;function Oe(){return{modalsLive:q,opens:be,tileRequests:J,tileErrors:Se,gestures:Ce,viewChanges:we,points:Te,zoomMax:Y,mapKey:Ee,ageMs:De===0?0:Date.now()-De}}function ke(e,t){let n=e.tileErrors>0?`tiles`:e.zoomMax>19?`zoom`:e.tileRequests>500?`budget`:e.gestures>0&&e.viewChanges===0?`inert`:e.modalsLive>0&&t>e.points?`stale`:null;return n?`[operator-ui] op=map-modal-alarm reason=${n} mapKey=${e.mapKey} zoom=${e.zoomMax} tiles=${e.tileRequests} tileErrors=${e.tileErrors} gestures=${e.gestures} viewChanges=${e.viewChanges} modalPoints=${e.points} transcriptPoints=${t} ageMs=${e.ageMs}`:null}function Ae(e,t){return t.get(e.replace(/:\d+$/,``))??0}function je(e){let t=ke(Oe(),e);t&&console.warn(t)}function Me({points:e,msgKeyId:t,formatTime:n,onClose:r}){let{zone:i}=u(),a=(0,D.useRef)(null),o=(0,D.useRef)(null),[s,c]=(0,D.useState)(null),[l,d]=(0,D.useState)(null),[f,p]=(0,D.useState)(null),[m]=(0,D.useState)(()=>++xe),h=s?.w??640,g=s?.h??480,_=e.length,v=e[_-1],y=f?.zoom??l??G(e,h,g).zoom,b=f===null,x=f??{cxf:U(v.lon,y),cyf:W(v.lat,y),zoom:y},S=(0,D.useRef)(x);S.current=x;let C=ge(x.cxf,x.cyf,x.zoom,h,g),w=e.map(e=>({x:C.offsetX+(U(e.lon,x.zoom)-x.cxf)*256,y:C.offsetY+(W(e.lat,x.zoom)-x.cyf)*256}));(0,D.useLayoutEffect)(()=>{let e=a.current;if(!e)return;let t=()=>c({w:e.clientWidth||640,h:e.clientHeight||480});return t(),window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t)},[]),(0,D.useLayoutEffect)(()=>{s&&l===null&&d(G(e,s.w,s.h).zoom)},[s,l,e]);let T=(0,D.useRef)(new Set),E=(0,D.useRef)(e.length);E.current=e.length;let k=()=>{let e=window.setTimeout(()=>{T.current.delete(e),je(E.current)},250);T.current.add(e)};(0,D.useEffect)(()=>{let e=T.current;return()=>{for(let t of e)window.clearTimeout(t);e.clear()}},[]),(0,D.useEffect)(()=>(be+=1,q+=1,J=0,Ce=0,we=0,Y=0,Ee=`${t??`nokey`}:${m}`,()=>{--q,Te=0}),[t,m]),(0,D.useEffect)(()=>{let e=o.current?.getAttribute(`points`)??``;Te=e===``?_===1?1:0:e.trim().split(/\s+/).length,De=v.ts?new Date(v.ts).getTime():0}),(0,D.useEffect)(()=>{J+=C.tiles.length,Y=Math.max(Y,x.zoom)},[C.tiles.map(e=>e.url).join(`|`)]);let A=(0,D.useRef)(``);(0,D.useEffect)(()=>{let t=`${x.cxf}:${x.cyf}:${x.zoom}`;A.current!==``&&A.current!==t&&(we+=1),A.current=t,je(e.length)}),(0,D.useEffect)(()=>{let e=e=>{e.key===`Escape`&&r()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r]);let j=e=>{let t=a.current?.getBoundingClientRect();return t?{px:e.clientX-(t.left+t.width/2),py:e.clientY-(t.top+t.height/2)}:{px:0,py:0}},M=(e,t)=>{t===e||t.cxf===e.cxf&&t.cyf===e.cyf&&t.zoom===e.zoom||(Ce+=1,p(t),k())},N=(0,D.useRef)(new Map),P=(0,D.useRef)(null),F=e=>{N.current.set(e.pointerId,{x:e.clientX,y:e.clientY});let t=e.currentTarget;if(typeof t.setPointerCapture==`function`&&t.setPointerCapture(e.pointerId),N.current.size===2){let[e,t]=[...N.current.values()];P.current=Math.hypot(e.x-t.x,e.y-t.y)}},I=e=>{let t=N.current.get(e.pointerId);if(!t)return;if(N.current.set(e.pointerId,{x:e.clientX,y:e.clientY}),N.current.size>=2){let[e,t]=[...N.current.values()],n=Math.hypot(e.x-t.x,e.y-t.y),r=P.current;if(!r||n===0)return;let i=j({clientX:(e.x+t.x)/2,clientY:(e.y+t.y)/2});n/r>=2?(P.current=n,M(S.current,K(S.current,1,i.px,i.py))):n/r<=.5&&(P.current=n,M(S.current,K(S.current,-1,i.px,i.py)));return}let n=e.clientX-t.x,r=e.clientY-t.y;n===0&&r===0||M(S.current,ye(S.current,n,r))},L=e=>{N.current.delete(e.pointerId),N.current.size<2&&(P.current=null)},ee=e=>{let{px:t,py:n}=j(e);M(S.current,K(S.current,1,t,n))};(0,D.useEffect)(()=>{let e=a.current;if(!e)return;let t=e=>{e.preventDefault();let{px:t,py:n}=j(e);M(S.current,K(S.current,e.deltaY<0?1:-1,t,n))};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[_]);let R=n?n(v.ts,i):``,z=v.ts?Math.max(0,Math.floor((Date.now()-new Date(v.ts).getTime())/6e4)):null,te=z===null?``:z===0?` · just now`:` · ${z} min ago`;return(0,O.jsx)(`div`,{className:`wa-map-modal`,onClick:e=>{e.target===e.currentTarget&&r()},children:(0,O.jsxs)(`div`,{className:`wa-map-modal-panel`,role:`dialog`,"aria-modal":`true`,"aria-label":`Location map`,children:[(0,O.jsxs)(`div`,{className:`wa-map-modal-head`,children:[(0,O.jsxs)(`span`,{className:`wa-map-modal-title`,children:[R?`Latest fix ${R}`:`${v.lat},${v.lon}`,te]}),_>1&&(0,O.jsxs)(`span`,{className:`wa-map-modal-count`,children:[_,` updates`]}),!b&&(0,O.jsx)(`button`,{type:`button`,className:`wa-map-modal-btn`,onClick:()=>p(null),children:`Follow`}),(0,O.jsx)(`button`,{type:`button`,className:`wa-map-modal-close`,"aria-label":`Close map`,onClick:r,children:`×`})]}),(0,O.jsx)(`div`,{className:`wa-map-modal-area`,ref:a,onPointerDown:F,onPointerMove:I,onPointerUp:L,onPointerCancel:L,onDoubleClick:ee,children:(0,O.jsxs)(`div`,{className:`wa-map-modal-block`,style:{left:`calc(50% - ${C.offsetX}px)`,top:`calc(50% - ${C.offsetY}px)`,width:C.cols*256,height:C.rows*256,gridTemplateColumns:`repeat(${C.cols}, 256px)`},children:[C.tiles.map(e=>(0,O.jsx)(`img`,{className:`wa-map-tile`,src:e.url,alt:``,width:256,height:256,draggable:!1,onError:()=>{Se+=1,je(_)}},e.url)),_>1&&(0,O.jsxs)(`svg`,{className:`wa-map-track`,width:C.cols*256,height:C.rows*256,"aria-hidden":!0,children:[(0,O.jsx)(`polyline`,{ref:o,points:w.map(e=>`${e.x},${e.y}`).join(` `)}),(0,O.jsx)(`circle`,{className:`wa-map-track-start`,cx:w[0].x,cy:w[0].y,r:5}),(0,O.jsx)(`circle`,{className:`wa-map-track-now`,cx:w[_-1].x,cy:w[_-1].y,r:6})]}),_===1&&(0,O.jsx)(`span`,{className:`wa-map-modal-pin`,style:{left:w[0].x,top:w[0].y},"aria-hidden":!0})]})}),(0,O.jsxs)(`div`,{className:`wa-map-modal-foot`,children:[(0,O.jsx)(`span`,{className:`wa-map-credit`,children:`© OpenStreetMap contributors`}),(0,O.jsx)(`a`,{className:`wa-map-modal-osm`,href:`https://www.openstreetmap.org/?mlat=${v.lat}&mlon=${v.lon}#map=${x.zoom}/${v.lat}/${v.lon}`,target:`_blank`,rel:`noopener noreferrer`,children:`Open in OpenStreetMap`})]})]})})}var Ne=/^-?\d+(\.\d+)?,-?\d+(\.\d+)?$/,Pe=/^\[(?:live )?location: (.+)\]$/;function Fe(e){let t=Pe.exec(e.trim());if(!t)return{kind:`none`};let n=t[1].split(` — `),r=n[n.length-1].trim();if(!Ne.test(r))return{kind:`label-only`};let[i,a]=r.split(`,`),o=Number(i),s=Number(a);return!Number.isFinite(o)||!Number.isFinite(s)?{kind:`reject`,reason:`nan`,raw:r}:o<-90||o>90||s<-180||s>180?{kind:`reject`,reason:`range`,raw:r}:`${o},${s}`===r?{kind:`point`,lat:o,lon:s}:{kind:`reject`,reason:`roundtrip`,raw:r}}var Ie=/^\[live location: .+\]$/;function Le(e){let t=new Map;e.forEach((e,n)=>{if(e.kind!==`turn`)return;let r=e.turn;if(r.kind!==`telegram-persisted`||!Ie.test(r.text.trim()))return;let i=Fe(r.text);if(i.kind!==`point`)return;let a=r.messageId.replace(/:edit:[^:]*$/,``),o=t.get(a)??[];o.push({index:n,point:{lat:i.lat,lon:i.lon,ts:r.ts}}),t.set(a,o)});let n=new Map;for(let e of t.values())if(!(e.length<2)){n.set(e[0].index,{role:`head`,points:e.map(e=>e.point)});for(let t of e.slice(1))n.set(t.index,{role:`member`})}return n}var Re=0,ze=0,Be=0,Ve=0;function He(){return{maps:Re,tracks:ze,trackPoints:Be,tileErrors:Ve}}function Ue({lat:e,lon:t,msgKeyId:n,ts:r,formatTime:i}){let{tiles:a,offsetX:o,offsetY:s}=he(e,t),[c,l]=(0,D.useState)(!1);return(0,D.useEffect)(()=>(Re+=1,()=>{--Re}),[]),(0,O.jsxs)(O.Fragment,{children:[c&&(0,O.jsx)(Me,{points:[{lat:e,lon:t,ts:r??null}],msgKeyId:n,formatTime:i,onClose:()=>l(!1)}),(0,O.jsx)(`button`,{type:`button`,className:`wa-map wa-map-open`,"aria-label":`Open map`,onClick:()=>l(!0),style:{width:240,height:160},children:(0,O.jsxs)(`span`,{className:`wa-map-viewport`,children:[(0,O.jsx)(`span`,{className:`wa-map-block`,style:{left:`calc(50% - ${o}px)`,top:`calc(50% - ${s}px)`},children:a.map(e=>(0,O.jsx)(`img`,{className:`wa-map-tile`,src:e.url,alt:``,width:256,height:256,loading:`lazy`,onError:()=>{Ve+=1}},e.url))}),(0,O.jsx)(`span`,{className:`wa-map-pin`,"aria-hidden":!0}),(0,O.jsx)(`span`,{className:`wa-map-credit`,children:`© OpenStreetMap contributors`})]})})]})}function We({points:e,formatTime:t,msgKeyId:n}){let{zone:r}=u(),i=ve(e),a=e.length,[o,s]=(0,D.useState)(!1);(0,D.useEffect)(()=>(ze+=1,Be+=a,()=>{--ze,Be-=a}),[a]);let c=e[a-1],l=i.points[0],d=i.points[a-1],f=t(e[0].ts,r),p=t(c.ts,r);return(0,O.jsxs)(O.Fragment,{children:[o&&(0,O.jsx)(Me,{points:e,msgKeyId:n,formatTime:t,onClose:()=>s(!1)}),(0,O.jsx)(`button`,{type:`button`,className:`wa-map wa-map-open`,"aria-label":`Open map`,onClick:()=>s(!0),style:{width:240,height:160},children:(0,O.jsxs)(`span`,{className:`wa-map-viewport`,children:[(0,O.jsxs)(`span`,{className:`wa-map-block`,style:{left:`calc(50% - ${i.offsetX}px)`,top:`calc(50% - ${i.offsetY}px)`},children:[i.tiles.map(e=>(0,O.jsx)(`img`,{className:`wa-map-tile`,src:e.url,alt:``,width:256,height:256,loading:`lazy`,onError:()=>{Ve+=1}},e.url)),(0,O.jsxs)(`svg`,{className:`wa-map-track`,width:256*2,height:256*2,"aria-hidden":!0,children:[(0,O.jsx)(`polyline`,{points:i.points.map(e=>`${e.x},${e.y}`).join(` `)}),(0,O.jsx)(`circle`,{className:`wa-map-track-start`,cx:l.x,cy:l.y,r:4}),(0,O.jsx)(`circle`,{className:`wa-map-track-now`,cx:d.x,cy:d.y,r:5})]})]}),(0,O.jsx)(`span`,{className:`wa-map-credit`,children:`© OpenStreetMap contributors`})]})}),(0,O.jsxs)(`span`,{className:`wa-map-track-caption`,children:[a,` updates · `,f,` to `,p]})]})}function X({text:e,body:t,msgKeyId:n,ts:r,formatTime:i}){let a=Fe(e);return(0,O.jsxs)(O.Fragment,{children:[a.kind===`point`&&(0,O.jsx)(Ue,{lat:a.lat,lon:a.lon,msgKeyId:n,ts:r,formatTime:i}),(0,O.jsx)(`p`,{className:`wa-body`,children:t})]})}function Ge(e){let t=0,n=0,r=0,i=0;for(let a of e){let e=a.kind===`turn`?a.turn:null,o=e&&`text`in e&&typeof e.text==`string`?e.text:``;if(o===``)continue;t+=1;let s=Fe(o);s.kind!==`none`&&(n+=1,s.kind===`point`?r+=1:s.kind===`reject`&&(i+=1))}return{bodies:t,withLabel:n,parsed:r,rejected:i}}function Ke(e,t){let{maps:n,tracks:r,trackPoints:i,tileErrors:a}=t;return e.rejected>0||e.parsed>n+i||r===0&&i>0?`[operator-ui] op=location-census-alarm bodies=${e.bodies} withLabel=${e.withLabel} parsed=${e.parsed} rejected=${e.rejected} maps=${n} tracks=${r} trackPoints=${i} tileErrors=${a}`:null}var qe=20;function Je(e){let t=e.replace(/\/(store-)?stream$/,(e,t)=>t?`/store-backfill`:`/backfill`);return t===e?``:t}function Ye(e,...t){let[n,r,i,a,o]=t,[s,c]=(0,D.useState)([]),[l,u]=(0,D.useState)(null),[d,f]=(0,D.useState)(!1),[p,m]=(0,D.useState)(0),h=(0,D.useRef)(!1);(0,D.useEffect)(()=>{c([]),u(null),f(!1),m(0),h.current=!1},[a,n,r,i,e]);let g=(0,D.useCallback)(e=>u(e),[]),_=(0,D.useCallback)(()=>{!e||l===null||l<=0||h.current||(h.current=!0,f(!0),(async()=>{let t=l,a=[],s=0;try{for(;t>0&&a.length===0&&s<qe;){s+=1;let c=await fetch(`${e}?${Ze(e,n,r,i,t,o)}`);if(!c.ok)break;let l=await c.json();if(!Array.isArray(l.turns))break;a.unshift(...l.turns);let u=l.reachedStart?0:l.from;if(!l.reachedStart&&u>=t){Xe(e,t,l.from);break}t=u}}catch{}finally{a.length>0&&(c(e=>[...a,...e]),m(e=>e+1)),u(t),h.current=!1,f(!1)}})())},[e,n,r,i,l]);return{turns:s,hasOlder:l!==null&&l>0,loadingOlder:d,prependCount:p,loadOlder:_,setTurns:c,onWindow:g}}function Xe(e,t,n){let r=e.endsWith(`/store-backfill`)?`store`:e.includes(`/public-reader/`)?`public`:`session`;try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`event`,source:`reader-backfill`,op:`backfill-no-advance`,reader:r,before:t,from:n}),keepalive:!0}).catch(()=>{})}catch{}}function Ze(e,t,n,r,i,a=`remoteJid`){let o=e.endsWith(`/store-backfill`);return new URLSearchParams(o?{accountId:t,[a]:n,session_key:r,before:String(i)}:{sessionId:t,projectDir:n,session_key:r,before:String(i)}).toString()}function Qe(e,t,n,r=`/api/session-reader/stream`,i=e,a=!0){let[o,s]=(0,D.useState)([]),[c,l]=(0,D.useState)(`open`),[u,d]=(0,D.useState)(null),f=Ye(Je(r),e,t,n,i),{onWindow:p}=f,m=(0,D.useRef)([]);return(0,D.useEffect)(()=>{m.current=o},[o]),(0,D.useEffect)(()=>{s([]),m.current=[],d(null)},[i,t,n,r]),(0,D.useEffect)(()=>{if(l(`open`),!a)return;let i=m.current.slice(),o=i.map($e),c=0,u=i.length>0,f=`${r}?sessionId=${encodeURIComponent(e)}&projectDir=${encodeURIComponent(t)}&session_key=${encodeURIComponent(n)}`,h=new EventSource(f);return h.onopen=()=>{l(`open`)},h.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}if(u){if(c<o.length&&$e(t)===o[c]){c+=1;return}u=!1}s(e=>[...e,t])},h.addEventListener(`activity`,e=>{try{d(JSON.parse(e.data))}catch{}}),h.addEventListener(`activity-clear`,()=>d(null)),h.addEventListener(`window`,e=>{try{let t=JSON.parse(e.data);typeof t.from==`number`&&p(t.from)}catch{}}),h.onerror=()=>{h.readyState===2&&(console.error(`[admin-ui] wa-stream onerror readyState=${h.readyState}`),l(`error`))},()=>h.close()},[e,t,n,r,i,a,p]),{turns:(0,D.useMemo)(()=>[...f.turns,...o],[f.turns,o]),status:c,subagentActivity:u,hasOlder:f.hasOlder,loadingOlder:f.loadingOlder,prependCount:f.prependCount,loadOlder:f.loadOlder}}function $e(e){return JSON.stringify(e)}function et(e,t,n,r,i,a=!0){let[o,s]=(0,D.useState)([]),[c,l]=(0,D.useState)(`open`),u=Ye(`${e}/store-backfill`,n,r,i,`${n}|${r}`,t),{onWindow:d,setTurns:f}=u;return(0,D.useEffect)(()=>{if(s([]),l(`open`),!a||!n||!r)return;let o=`${e}/store-stream?accountId=${encodeURIComponent(n)}&${t}=${encodeURIComponent(r)}&session_key=${encodeURIComponent(i)}`,c=new EventSource(o);return c.onopen=()=>l(`open`),c.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}s(e=>[...e,t])},c.addEventListener(`window`,e=>{try{let t=JSON.parse(e.data);typeof t.from==`number`&&d(t.from)}catch{}}),c.addEventListener(`reaction`,e=>{let t;try{t=JSON.parse(e.data)}catch{return}let n=e=>e.map(e=>e.kind===`whatsapp-persisted`&&e.msgKeyId===t.targetMsgKeyId?{...e,reactions:t.reactions}:e);s(n),f(n)}),c.addEventListener(`update`,e=>{let t;try{t=JSON.parse(e.data)}catch{return}let n=e=>e.map(e=>e.kind===`telegram-persisted`&&e.messageId===t.targetMessageId?{...e,...t.attachments?{attachments:t.attachments}:{},...t.text===void 0?{}:{text:t.text}}:e);s(n),f(n)}),c.onerror=()=>{c.readyState===2&&l(`error`)},()=>c.close()},[e,t,n,r,i,a,d,f]),{turns:(0,D.useMemo)(()=>[...u.turns,...o].sort((e,t)=>String(e.ts??``).localeCompare(String(t.ts??``))),[u.turns,o]),status:c,hasOlder:u.hasOlder,loadingOlder:u.loadingOlder,prependCount:u.prependCount,loadOlder:u.loadOlder}}var tt=e=>{if(!e)return 1/0;let t=new Date(e).getTime();return Number.isNaN(t)?1/0:t};function nt(e,t){let n=[],r=0;return e.forEach((e,t)=>n.push({sort:tt(e.ts),sub:1,ins:r++,item:{kind:`turn`,turn:e,idx:t}})),t.forEach(e=>n.push({sort:tt(e.ts),sub:0,ins:r++,item:{kind:`directive`,entry:e}})),n.sort((e,t)=>e.sort===t.sort?e.sort===1/0?e.ins-t.ins:e.sub-t.sub||e.ins-t.ins:e.sort<t.sort?-1:1).map(e=>e.item)}function rt(e,t,n=!0){let[r,i]=(0,D.useState)([]);return(0,D.useEffect)(()=>{if(!n||typeof fetch!=`function`)return;let r=!0,a=`/api/session-reader/directives?sessionId=${encodeURIComponent(e)}&session_key=${encodeURIComponent(t)}`;return fetch(a).then(e=>e.ok?e.json():{entries:[]}).then(e=>{r&&i(Array.isArray(e.entries)?e.entries:[])}).catch(()=>{r&&i([])}),()=>{r=!1}},[e,t,n]),r}var it=new Set([`operator-inbound`,`operator-typed`,`agent-reply`,`agent-reply-document`,`agent-file`,`agent-error`,`agent-webchat-final`,`agent-send-party`,`whatsapp-persisted`,`telegram-persisted`]),at=[`#c2185b`,`#7b1fa2`,`#512da8`,`#303f9f`,`#1976d2`,`#0288d1`,`#0097a7`,`#00796b`,`#388e3c`,`#689f38`,`#af6c00`,`#e64a19`,`#5d4037`,`#455a64`,`#d81b60`,`#8e24aa`,`#3949ab`,`#039be5`,`#00897b`,`#6d4c41`];function ot(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return t>>>0}function st(e){return at[ot(e)%at.length]}function ct({accountId:e,jid:t,sessionKey:n,className:r=`wa-web-avatar`,size:i=20}){let[a,o]=(0,D.useState)(null);if(!t||a===t)return(0,O.jsx)(`span`,{className:r,"aria-hidden":!0,children:(0,O.jsx)(E,{size:i})});let s=`/api/whatsapp-reader/avatar?session_key=${encodeURIComponent(n)}&accountId=${encodeURIComponent(e)}&jid=${encodeURIComponent(t)}`;return(0,O.jsx)(`span`,{className:r,"aria-hidden":!0,children:(0,O.jsx)(`img`,{className:`wa-avatar-img`,src:s,alt:``,onError:()=>o(t)})})}function Z(e,t){if(!e)return``;let n=new Date(e);if(Number.isNaN(n.getTime()))return``;let r=d(n,t);return`${String(r.hh).padStart(2,`0`)}:${String(r.mm).padStart(2,`0`)}`}function lt(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}var ut=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],dt=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function ft(e,t){if(!e)return null;let n=new Date(e);return Number.isNaN(n.getTime())?null:f(n,t)}function pt(e,t,n=new Date){if(!e)return``;let r=new Date(e);if(Number.isNaN(r.getTime()))return``;let i=f(r,t);if(i===f(n,t))return`Today`;let a=d(n,t);if(i===f(new Date(Date.UTC(a.y,a.m-1,a.d)-864e5),`UTC`))return`Yesterday`;let o=d(r,t);return`${ut[new Date(Date.UTC(o.y,o.m-1,o.d)).getUTCDay()]} ${o.d} ${dt[o.m-1]} ${o.y}`}function mt(e){return e.kind===`turn`?e.turn.ts:e.entry.ts}function ht({ts:e,prevTs:t=null}){let{zone:n}=u(),r=ft(e,n);return r===null||t!==null&&ft(t,n)===r?null:(0,O.jsx)(`div`,{className:`day-divider`,role:`separator`,children:(0,O.jsx)(`span`,{className:`day-divider-label`,children:pt(e,n)})})}function gt({ts:e,className:t}){let{zone:n}=u();return(0,O.jsx)(`time`,{className:t,children:Z(e,n)})}function _t(){return(0,O.jsx)(`div`,{className:`session-divider`,role:`separator`,children:(0,O.jsx)(`span`,{className:`session-divider-label`,children:`Conversation continued`})})}function Q({label:e,ts:t,colour:n}){let{zone:r}=u();return(0,O.jsxs)(`div`,{className:`wa-turn-head`,children:[(0,O.jsx)(`span`,{className:`wa-who`,style:n?{color:n}:void 0,children:e}),(0,O.jsx)(`time`,{className:`wa-time`,children:Z(t,r)})]})}function vt({turn:e}){let[t,n]=(0,D.useState)(!1),{zone:r}=u(),i=e.kind===`tool-result`,a=i?`wa-turn wa-turn-result${e.isError?` is-error`:``}`:`wa-turn wa-turn-tool`,o=i?e.isError?`result (error)`:`result`:`↳ ${e.name}`,s=i?e.text:JSON.stringify(e.input,null,2);return(0,O.jsxs)(`div`,{className:a,children:[(0,O.jsxs)(`button`,{type:`button`,className:`wa-tool-toggle`,"aria-expanded":t,onClick:()=>n(e=>!e),children:[(0,O.jsx)(`span`,{className:`wa-chevron`,children:t?`▾`:`▸`}),(0,O.jsx)(`span`,{className:`wa-who`,children:o}),(0,O.jsx)(`time`,{className:`wa-time`,children:Z(e.ts,r)})]}),t&&(0,O.jsx)(`pre`,{className:`wa-code`,children:s})]})}function yt({entry:e,sessionId:t,sessionKey:n}){let[r,i]=(0,D.useState)(!1),[a,o]=(0,D.useState)(null),{zone:s}=u(),c=()=>{let s=!r;if(i(s),s&&a===null&&typeof fetch==`function`){let r=`/api/session-reader/directive?sessionId=${encodeURIComponent(t)}&name=${encodeURIComponent(e.name)}&session_key=${encodeURIComponent(n)}`;fetch(r).then(e=>e.ok?e.text():`(directive unavailable)`).then(o).catch(()=>o(`(directive unavailable)`))}};return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-directive`,children:[(0,O.jsxs)(`button`,{type:`button`,className:`wa-tool-toggle`,"aria-expanded":r,onClick:c,children:[(0,O.jsx)(`span`,{className:`wa-chevron`,children:r?`▾`:`▸`}),(0,O.jsxs)(`span`,{className:`wa-who`,children:[`⚙ directive injected (`,e.len,` B)`]}),(0,O.jsx)(`time`,{className:`wa-time`,children:Z(e.ts,s)})]}),r&&(0,O.jsx)(`pre`,{className:`wa-code`,children:a??`Loading…`})]})}function bt(e){return`text`in e&&typeof e.text==`string`?e.text:``}function xt(e,t){let n=(t??``).trim();if(!n)return e;let r=e.toLowerCase(),i=n.toLowerCase(),a=[],o=0,s=0;for(;;){let t=r.indexOf(i,o);if(t===-1){a.push(e.slice(o));break}t>o&&a.push(e.slice(o,t)),a.push((0,O.jsx)(`mark`,{className:`wa-search-hit`,children:e.slice(t,t+i.length)},s++)),o=t+i.length}return a.length===1?a[0]:(0,O.jsx)(O.Fragment,{children:a})}var $={onFail:({kind:e,mime:t,reason:n})=>console.warn(`[operator-ui] op=reader-attachment-fail kind=${e} mime=${t??``} reason=${n}`)};function St(e,t,n,r){switch(e.kind){case`operator-inbound`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-in`,children:[(0,O.jsx)(Q,{label:`Operator${P(e.source)}`,ts:e.ts}),e.text&&(0,O.jsx)(X,{text:e.text,body:e.text,ts:e.ts,formatTime:Z}),e.attachments&&e.attachments.length>0&&(0,O.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,O.jsx)(H,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:B(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:$},t))})]},t);case`operator-typed`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-in wa-turn-typed`,children:[(0,O.jsx)(Q,{label:`Operator (web)`,ts:e.ts}),(0,O.jsx)(X,{text:e.text,body:e.text,ts:e.ts,formatTime:Z})]},t);case`agent-text`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-think`,children:[(0,O.jsx)(Q,{label:`Agent`,ts:e.ts}),(0,O.jsx)(X,{text:e.text,body:e.text,ts:e.ts,formatTime:Z})]},t);case`agent-reply`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,O.jsx)(Q,{label:`Agent`,ts:e.ts}),(0,O.jsx)(X,{text:e.text,body:e.text,ts:e.ts,formatTime:Z})]},t);case`agent-send-party`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,O.jsx)(Q,{label:`Agent to ${e.phone}`,ts:e.ts}),(0,O.jsx)(X,{text:e.text,body:e.text,ts:e.ts,formatTime:Z})]},t);case`agent-reply-document`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,O.jsx)(Q,{label:`Agent`,ts:e.ts}),(0,O.jsxs)(`p`,{className:`wa-doc`,children:[(0,O.jsx)(C,{size:14,"aria-hidden":!0,style:{verticalAlign:`text-bottom`}}),` `,`sent document(s): `,e.files.map(lt).join(`, `)]}),e.caption&&(0,O.jsx)(`p`,{className:`wa-body`,children:e.caption})]},t);case`agent-file`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-out`,children:[(0,O.jsx)(Q,{label:`Agent`,ts:e.ts}),e.files.map((t,r)=>{let i=lt(t),a=e.downloads?.[r];return(0,O.jsx)(H,{expandable:!0,filename:i,href:a?ne(a,n.sessionId,n.sessionKey,z.test(i)?`inline`:void 0):void 0,telemetry:$},r)}),e.caption&&(0,O.jsx)(`p`,{className:`wa-body`,children:e.caption})]},t);case`telegram-persisted`:{let i=e.origin===`operator-manual`,a=e.fromMe?i?`You`:`Sent`:e.senderName??`Contact`,o=e.deleted===!0;return(0,O.jsxs)(`div`,{className:`wa-turn ${e.fromMe?`wa-turn-out`:`wa-turn-in`}${i?` wa-op-manual`:``}${o?` wa-turn-deleted`:``}`,children:[(0,O.jsx)(Q,{label:a,ts:e.ts}),o&&(0,O.jsx)(`span`,{className:`wa-deleted-tag`,children:`deleted`}),e.text&&r?.role===`head`&&(0,O.jsx)(We,{points:r.points,formatTime:Z,msgKeyId:e.messageId}),e.text&&r&&(0,O.jsx)(`p`,{className:`wa-body`,children:xt(e.text,n.highlight)}),e.text&&!r&&(0,O.jsx)(X,{text:e.text,body:xt(e.text,n.highlight),msgKeyId:e.messageId,ts:e.ts,formatTime:Z}),e.attachments&&e.attachments.length>0&&(0,O.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,O.jsx)(H,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:B(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:$},t))}),(0,O.jsxs)(`span`,{className:`wa-bubble-meta`,children:[i&&(0,O.jsx)(`span`,{className:`wa-op-tag`,children:`You`}),(0,O.jsx)(gt,{ts:e.ts,className:`wa-bubble-time`})]})]},t)}case`whatsapp-persisted`:{let r=e.origin===`operator-manual`,i=e.fromMe?r?`You`:`Sent`:e.senderName??`Contact`,a=n.groupThread&&!e.fromMe&&n.storeAccountId&&e.senderJid&&s(e.senderJid)?e.senderJid:null;return(0,O.jsxs)(`div`,{className:`wa-turn ${e.fromMe?`wa-turn-out`:`wa-turn-in`}${r?` wa-op-manual`:``}${a?` wa-turn-has-avatar`:``}`,children:[a&&(0,O.jsx)(ct,{accountId:n.storeAccountId,jid:a,sessionKey:n.sessionKey,className:`wa-bubble-avatar`,size:14}),n.onReplyTo&&e.msgKeyId&&(0,O.jsx)(`button`,{type:`button`,className:`wa-bubble-reply`,"aria-label":`Reply to this message`,onClick:()=>n.onReplyTo({msgKeyId:e.msgKeyId,body:e.text,senderName:e.senderName,fromMe:e.fromMe}),children:(0,O.jsx)(T,{size:14})}),n.showCopy&&e.text&&(0,O.jsx)(`button`,{type:`button`,className:`wa-bubble-copy`,"aria-label":`Copy this message`,onClick:()=>{let t=e.text;o(t).then(e=>{e||console.warn(`[operator-ui] op=wa-copy-fail reason=clipboard-unavailable`)})},children:(0,O.jsx)(p,{size:14})}),e.quoted&&(0,O.jsxs)(`div`,{className:`wa-quoted`,children:[(0,O.jsx)(`span`,{className:`wa-quoted-who`,children:e.quoted.fromMe?`You`:e.quoted.sender??`Contact`}),(0,O.jsx)(`span`,{className:`wa-quoted-body`,children:e.quoted.body||`Message`})]}),(0,O.jsx)(Q,{label:i,ts:e.ts,colour:n.groupThread&&!e.fromMe?st(e.senderTelephone||e.senderName||``):void 0}),e.text&&(0,O.jsx)(X,{text:e.text,body:xt(e.text,n.highlight),msgKeyId:e.msgKeyId??void 0,ts:e.ts,formatTime:Z}),e.attachments&&e.attachments.length>0&&(0,O.jsx)(`div`,{className:`chat-attachment-list`,children:e.attachments.map((e,t)=>(0,O.jsx)(H,{expandable:!0,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,href:B(e.attachmentId,n.audience,n.sessionId,n.sessionKey),telemetry:$},t))}),e.reactions&&e.reactions.length>0&&(0,O.jsx)(`div`,{className:`wa-reactions`,children:e.reactions.map((e,t)=>(0,O.jsx)(`span`,{className:`wa-reaction`,title:e.reactorName??void 0,children:e.emoji},t))}),(0,O.jsxs)(`span`,{className:`wa-bubble-meta`,children:[r&&(0,O.jsx)(`span`,{className:`wa-op-tag`,children:`You`}),(0,O.jsx)(gt,{ts:e.ts,className:`wa-bubble-time`}),e.fromMe&&(0,O.jsx)(b,{size:14,className:`wa-bubble-tick`,"aria-hidden":!0})]})]},t)}case`session-continued`:return(0,O.jsx)(_t,{},t);case`harness-internal`:return null;case`tool-call`:case`tool-result`:return(0,O.jsx)(vt,{turn:e},t);case`agent-error`:return(0,O.jsxs)(`div`,{className:`wa-turn wa-turn-error`,role:`alert`,children:[(0,O.jsx)(Q,{label:`Agent`,ts:e.ts}),(0,O.jsx)(`p`,{className:`wa-body wa-error-body`,children:N(e.code,`admin`)}),e.code===`agent_error`&&e.raw&&(0,O.jsx)(`pre`,{className:`wa-code`,children:e.raw})]},t)}}function Ct(e,t,n,r=`admin`,i,a,o,s,c){let l={sessionId:t,sessionKey:n,audience:r,highlight:i,onReplyTo:a,showCopy:o,groupThread:s,storeAccountId:c},u=Le(e),d=[],f=null;return e.forEach((e,r)=>{let i=mt(e);i!==null&&!Number.isNaN(new Date(i).getTime())&&(d.push((0,O.jsx)(ht,{ts:i,prevTs:f},`day-${r}`)),f=i),d.push(e.kind===`turn`?St(e.turn,r,l,u.get(r)):(0,O.jsx)(yt,{entry:e.entry,sessionId:t,sessionKey:n},r))}),d}function wt(e){return e.filter(e=>e.kind===`turn`&&it.has(e.turn.kind)&&!(e.turn.kind===`operator-inbound`&&e.turn.scheduled))}function Tt(e,t,n){return t===0||n>0?null:`[operator-ui] op=store-turns-unpainted channel=${e} received=${t} painted=${n}`}var Et=(0,D.memo)(function({sessionId:e,projectDir:t,sessionKey:n,renderItems:r=Ct,clean:i,onToggleClean:a,forceDeliveredOnly:o=!1,streamEndpoint:s=`/api/session-reader/stream`,suppressDirectives:c=!1,tail:l=null,resetKey:u,onTurnsChange:d,onActivityChange:f,store:p,search:m,onReplyTo:h,groupThread:g=!1}){let _=!!p,v=Qe(e,t,n,s,u,!_),y=p?.channel===`telegram`?`/api/telegram-reader`:`/api/whatsapp-reader`,b=p?.channel===`telegram`?`channelKey`:`remoteJid`,x=p?p.channel===`telegram`?p.channelKey:p.remoteJid:``,S=et(y,b,p?.accountId??``,x,n,_),{turns:C,status:w}=_?{turns:S.turns,status:S.status}:{turns:v.turns,status:v.status},T=_?S:v,E=_?null:v.subagentActivity;(0,D.useEffect)(()=>{f?.(E)},[E,f]),(0,D.useEffect)(()=>{d?.(C.length)},[C.length,d]);let k=nt(C,rt(e,n,!c)),j=a==null?!1:!!i,M=o||j?wt(k):k,N=(m??``).trim().toLowerCase(),P=N.length>0,F=P?M.filter(e=>e.kind===`turn`&&bt(e.turn).toLowerCase().includes(N)):M;(0,D.useEffect)(()=>{if(!g||!_)return;let e=C.filter(e=>e.kind===`whatsapp-persisted`&&!e.fromMe);if(e.length===0)return;let t=new Set(e.map(e=>e.senderTelephone||e.senderName||``));new Set(Array.from(t,e=>st(e))),new Set(e.filter(e=>!e.senderTelephone).map(e=>e.senderName??``)).size},[g,_,C,x]),(0,D.useEffect)(()=>{let e=_?F:r===Ct?M:null;if(!e)return;let t=Ge(e);if(t.bodies===0)return;let n=Ke(t,He());n&&console.warn(n);let i=Oe();if(i.modalsLive>0){let t=new Map,n=Le(e);e.forEach((e,r)=>{let i=n.get(r);if(!i||i.role!==`head`)return;let a=e.kind===`turn`?e.turn:null;a&&`messageId`in a&&typeof a.messageId==`string`&&t.set(a.messageId,i.points.length)});let r=ke(i,Ae(i.mapKey,t));r&&console.warn(r)}},[_,F,M,r]);let I=p?.channel;return(0,D.useEffect)(()=>{if(!_||!I)return;let e=Tt(I,C.length,M.length);e&&console.warn(e)},[_,I,C.length,M.length]),(0,O.jsxs)(A,{repinSignals:[C,j,P],tail:l,onReachTop:T.hasOlder&&!P?T.loadOlder:void 0,prependToken:T.prependCount,children:[w===`error`&&(0,O.jsx)(`div`,{className:`wa-reader-error`,children:`Stream disconnected.`}),T.loadingOlder&&(0,O.jsx)(`div`,{className:`wa-reader-placeholder`,children:`Loading earlier messages…`}),!P&&C.length===0&&w===`open`&&(0,O.jsx)(`div`,{className:`wa-reader-placeholder`,children:`No messages in this conversation yet.`}),P&&F.length===0&&(0,O.jsxs)(`div`,{className:`wa-reader-placeholder`,children:[`No matches for "`,m,`".`]}),_?Ct(F,e,n,`admin`,m,h,!0,g,p?.accountId):r(M,e,n)]})});function Dt(e,t){let n=e.split(`;`)[0].trim().toLowerCase();return t.has(n)}var Ot=[`audio/ogg;codecs=opus`,`audio/webm;codecs=opus`,`audio/webm`,`audio/mp4`];function kt(){for(let e of Ot)if(MediaRecorder.isTypeSupported(e))return e;return``}function At(e){return e.split(`;`)[0]}async function jt(){return typeof navigator>`u`||!navigator.mediaDevices?.enumerateDevices?[]:(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`)}function Mt(e){let[t,n]=(0,D.useState)(`idle`),[r,i]=(0,D.useState)(0),[a,o]=(0,D.useState)(null),[s,c]=(0,D.useState)(null),l=(0,D.useRef)(null),u=(0,D.useRef)(null),d=(0,D.useRef)([]),f=(0,D.useRef)(``),p=(0,D.useRef)(null),m=(0,D.useRef)(0),h=(0,D.useRef)(0),g=(0,D.useRef)(null),_=(0,D.useRef)(null),v=(0,D.useRef)(0),y=(0,D.useCallback)(()=>{if(p.current&&=(clearInterval(p.current),null),v.current&&=(cancelAnimationFrame(v.current),0),l.current&&l.current.state!==`inactive`)try{l.current.stop()}catch{}l.current=null,d.current=[],u.current&&=(u.current.getTracks().forEach(e=>e.stop()),null),g.current&&(g.current.close().catch(()=>{}),g.current=null,_.current=null),h.current=0,m.current=0},[]);(0,D.useEffect)(()=>y,[y]);let b=(0,D.useCallback)(()=>{m.current=Date.now(),p.current=setInterval(()=>{let e=Date.now()-m.current,t=h.current+e;i(Math.floor(t/1e3))},200)},[]),x=(0,D.useCallback)(()=>{p.current&&=(clearInterval(p.current),null);let e=Date.now()-m.current;h.current+=e},[]),S=(0,D.useCallback)(()=>{let e=_.current;if(!e)return;let t=new Uint8Array(e.frequencyBinCount),n=()=>{e.getByteTimeDomainData(t),o(new Uint8Array(t)),v.current=requestAnimationFrame(n)};n()},[]),C=(0,D.useCallback)(()=>{v.current&&=(cancelAnimationFrame(v.current),0)},[]),w=e?.onResult,T=(0,D.useCallback)(async e=>{if(!(t!==`idle`&&t!==`error`)){if(c(null),typeof window<`u`&&!window.isSecureContext){n(`error`),c(`Voice recording requires a secure connection (HTTPS). Use your tunnel URL for voice notes.`);return}if(typeof navigator>`u`||!navigator.mediaDevices?.getUserMedia){n(`error`),c(`Voice recording is not supported in this browser.`);return}if(typeof MediaRecorder>`u`){n(`error`),c(`Voice recording is not supported in this browser.`);return}try{let t=e?{audio:{deviceId:{exact:e}}}:{audio:!0},r;try{r=await navigator.mediaDevices.getUserMedia(t)}catch(t){let n=t?.name;if(e&&(n===`OverconstrainedError`||n===`NotFoundError`))r=await navigator.mediaDevices.getUserMedia({audio:!0});else throw t}u.current=r;let a=new AudioContext;g.current=a;let s=a.createMediaStreamSource(r),c=a.createAnalyser();c.fftSize=256,s.connect(c),_.current=c;let p=kt();f.current=p;let m=new MediaRecorder(r,p?{mimeType:p}:void 0);l.current=m,d.current=[],m.ondataavailable=e=>{e.data.size>0&&d.current.push(e.data)},r.getAudioTracks()[0]?.addEventListener(`ended`,()=>{y(),n(`idle`),i(0),o(null)}),m.start(1e3),n(`recording`),i(0),b(),S(),w?.({ok:!0})}catch(e){y(),n(`error`),e instanceof DOMException?(w?.({ok:!1,name:e.name,message:e.message}),e.name===`NotAllowedError`?c(`Microphone access was denied. Check your browser permissions to enable voice recording.`):e.name===`NotFoundError`?c(`No microphone found. Connect a microphone to use voice recording.`):e.name===`NotReadableError`?c(`The microphone could not be started even though access was granted. The browser reported: ${e.message} (${e.name}).`):c(`Microphone error (${e.name}): ${e.message}`)):(w?.({ok:!1}),c(`Could not start recording.`))}}},[t,y,b,S,w]),E=(0,D.useCallback)(()=>{let e=l.current;e&&(t===`recording`&&e.state===`recording`?(e.pause(),x(),C(),n(`paused`)):t===`paused`&&e.state===`paused`&&(e.resume(),b(),S(),n(`recording`)))},[t,x,b,S,C]),O=(0,D.useCallback)(()=>{t!==`recording`&&t!==`paused`||(y(),n(`idle`),i(0),o(null))},[t,y]),k=(0,D.useCallback)(async()=>{if(t!==`recording`&&t!==`paused`)return null;let e=l.current;if(!e)return null;let r=t===`recording`?Date.now()-m.current:0;return h.current+r<1e3?(O(),null):(n(`sending`),x(),C(),new Promise(t=>{e.onstop=()=>{let r=f.current||e.mimeType||`audio/webm`,a=new Blob(d.current,{type:At(r)});y(),n(`idle`),i(0),o(null),t(a.size>0?a:null)},e.stop()}))},[t,O,x,C,y]);return(0,D.useEffect)(()=>{if(t!==`error`)return;let e=setTimeout(()=>{n(`idle`),c(null)},8e3);return()=>clearTimeout(e)},[t]),{state:t,elapsedSeconds:r,waveform:a,errorMessage:s,start:T,togglePause:E,discard:O,send:k}}export{y as A,w as C,g as D,x as E,v as O,T as S,S as T,B as _,yt as a,N as b,lt as c,mt as d,ct as f,z as g,R as h,ht as i,_ as k,ft as l,ue as m,Mt as n,_t as o,H as p,Dt as r,Et as s,jt as t,Z as u,ne as v,C as w,E as x,re as y};
@@ -1 +1 @@
1
- import{Z as e}from"./useMediaQuery-B469O83-.js";var t=e(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]);export{t};
1
+ import{Z as e}from"./useMediaQuery-fFM7rxUD.js";var t=e(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]);export{t};
@@ -5,12 +5,12 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Browser — Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/browser-D44lWNJu.js"></script>
8
+ <script type="module" crossorigin src="/assets/browser-D4yjnKEH.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-BycB0eMI.js">
10
- <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-BmNepPEn.js">
11
- <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-B469O83-.js">
12
- <link rel="modulepreload" crossorigin href="/assets/AdminShell-CzHB95sB.js">
13
- <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-rMaiYjNu.css">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-DXWyHqht.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-fFM7rxUD.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/AdminShell-B5vEeSLw.js">
13
+ <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-DDrveXI8.css">
14
14
  <link rel="stylesheet" crossorigin href="/assets/useMediaQuery-DXAuc8G-.css">
15
15
  <link rel="stylesheet" href="/brand-defaults.css">
16
16
  </head>
@@ -5,15 +5,15 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Calendar — Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/calendar-BeP0MSFX.js"></script>
8
+ <script type="module" crossorigin src="/assets/calendar-DUi1XFyY.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-BycB0eMI.js">
10
- <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-BmNepPEn.js">
11
- <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-B469O83-.js">
12
- <link rel="modulepreload" crossorigin href="/assets/AdminShell-CzHB95sB.js">
13
- <link rel="modulepreload" crossorigin href="/assets/chevron-left-0tVo23Dh.js">
14
- <link rel="modulepreload" crossorigin href="/assets/clock-D2cZ0sge.js">
15
- <link rel="modulepreload" crossorigin href="/assets/file-text-rWowl9RN.js">
16
- <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-rMaiYjNu.css">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-DXWyHqht.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-fFM7rxUD.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/AdminShell-B5vEeSLw.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/chevron-left-Ctw-3JsV.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/clock-BLOp42yY.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/file-text-xUlDn7ui.js">
16
+ <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-DDrveXI8.css">
17
17
  <link rel="stylesheet" crossorigin href="/assets/useMediaQuery-DXAuc8G-.css">
18
18
  <link rel="stylesheet" href="/brand-defaults.css">
19
19
  </head>
@@ -5,22 +5,22 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Chat — Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/chat-CeDpcouO.js"></script>
8
+ <script type="module" crossorigin src="/assets/chat-BJ1p4kuh.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-BycB0eMI.js">
10
- <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-BmNepPEn.js">
11
- <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-B469O83-.js">
12
- <link rel="modulepreload" crossorigin href="/assets/AdminShell-CzHB95sB.js">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-DXWyHqht.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-fFM7rxUD.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/AdminShell-B5vEeSLw.js">
13
13
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-eAV8hweq.js">
14
- <link rel="modulepreload" crossorigin href="/assets/copy-C87QIN_o.js">
15
- <link rel="modulepreload" crossorigin href="/assets/play-DgP7vl0r.js">
16
- <link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-Bb-51cJv.js">
17
- <link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-DfNAu8hQ.js">
18
- <link rel="modulepreload" crossorigin href="/assets/chevron-left-0tVo23Dh.js">
19
- <link rel="modulepreload" crossorigin href="/assets/file-text-rWowl9RN.js">
20
- <link rel="modulepreload" crossorigin href="/assets/rotate-ccw-Dnn7gbPh.js">
21
- <link rel="modulepreload" crossorigin href="/assets/wrench-Ck4phkdB.js">
22
- <link rel="modulepreload" crossorigin href="/assets/page-CGTC6xi4.js">
23
- <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-rMaiYjNu.css">
14
+ <link rel="modulepreload" crossorigin href="/assets/copy-Bw2h4ofb.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/play-fy3tdi7M.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-D0MWFIde.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-BmOZr_Mw.js">
18
+ <link rel="modulepreload" crossorigin href="/assets/chevron-left-Ctw-3JsV.js">
19
+ <link rel="modulepreload" crossorigin href="/assets/file-text-xUlDn7ui.js">
20
+ <link rel="modulepreload" crossorigin href="/assets/rotate-ccw-BDdOWTDl.js">
21
+ <link rel="modulepreload" crossorigin href="/assets/wrench-C-yn7q1Q.js">
22
+ <link rel="modulepreload" crossorigin href="/assets/page-Dh6fCuUi.js">
23
+ <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-DDrveXI8.css">
24
24
  <link rel="stylesheet" crossorigin href="/assets/useMediaQuery-DXAuc8G-.css">
25
25
  <link rel="stylesheet" href="/brand-defaults.css">
26
26
  </head>
@@ -5,21 +5,21 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Data — Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/data-CK7AMxPt.js"></script>
8
+ <script type="module" crossorigin src="/assets/data-uR7BZKVU.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-BycB0eMI.js">
10
- <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-BmNepPEn.js">
11
- <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-B469O83-.js">
12
- <link rel="modulepreload" crossorigin href="/assets/graph-labels-kneGnsHB.js">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-DXWyHqht.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-fFM7rxUD.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/graph-labels-F6hQJKCn.js">
13
13
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-eAV8hweq.js">
14
- <link rel="modulepreload" crossorigin href="/assets/copy-C87QIN_o.js">
15
- <link rel="modulepreload" crossorigin href="/assets/play-DgP7vl0r.js">
16
- <link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-Bb-51cJv.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/copy-Bw2h4ofb.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/play-fy3tdi7M.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-D0MWFIde.js">
17
17
  <link rel="modulepreload" crossorigin href="/assets/file-download-B7zwa78w.js">
18
- <link rel="modulepreload" crossorigin href="/assets/chevron-left-0tVo23Dh.js">
19
- <link rel="modulepreload" crossorigin href="/assets/file-text-rWowl9RN.js">
20
- <link rel="modulepreload" crossorigin href="/assets/triangle-alert-el772yUQ.js">
21
- <link rel="modulepreload" crossorigin href="/assets/page-DyVAu7tm.js">
22
- <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-rMaiYjNu.css">
18
+ <link rel="modulepreload" crossorigin href="/assets/chevron-left-Ctw-3JsV.js">
19
+ <link rel="modulepreload" crossorigin href="/assets/file-text-xUlDn7ui.js">
20
+ <link rel="modulepreload" crossorigin href="/assets/triangle-alert-DN-Eswuf.js">
21
+ <link rel="modulepreload" crossorigin href="/assets/page-DbWIOK60.js">
22
+ <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-DDrveXI8.css">
23
23
  <link rel="stylesheet" crossorigin href="/assets/useMediaQuery-DXAuc8G-.css">
24
24
  <link rel="stylesheet" href="/brand-defaults.css">
25
25
  </head>
@@ -5,10 +5,10 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
6
6
  <title>Job sheet — Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/field-C3kQgGWE.js"></script>
8
+ <script type="module" crossorigin src="/assets/field-BS-mu5Jx.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-BycB0eMI.js">
10
- <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-BmNepPEn.js">
11
- <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-rMaiYjNu.css">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-DXWyHqht.js">
11
+ <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-DDrveXI8.css">
12
12
  <link rel="stylesheet" href="/brand-defaults.css">
13
13
  </head>
14
14
  <body>
@@ -5,17 +5,17 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Graph — Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/graph-DvB6wgt_.js"></script>
8
+ <script type="module" crossorigin src="/assets/graph-DEEXiQLx.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-BycB0eMI.js">
10
- <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-BmNepPEn.js">
11
- <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-B469O83-.js">
12
- <link rel="modulepreload" crossorigin href="/assets/graph-labels-kneGnsHB.js">
13
- <link rel="modulepreload" crossorigin href="/assets/AdminShell-CzHB95sB.js">
14
- <link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-DfNAu8hQ.js">
15
- <link rel="modulepreload" crossorigin href="/assets/chevron-left-0tVo23Dh.js">
16
- <link rel="modulepreload" crossorigin href="/assets/copy-C87QIN_o.js">
17
- <link rel="modulepreload" crossorigin href="/assets/rotate-ccw-Dnn7gbPh.js">
18
- <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-rMaiYjNu.css">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-DXWyHqht.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-fFM7rxUD.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/graph-labels-F6hQJKCn.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/AdminShell-B5vEeSLw.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-BmOZr_Mw.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/chevron-left-Ctw-3JsV.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/copy-Bw2h4ofb.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/rotate-ccw-BDdOWTDl.js">
18
+ <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-DDrveXI8.css">
19
19
  <link rel="stylesheet" crossorigin href="/assets/useMediaQuery-DXAuc8G-.css">
20
20
  <link rel="stylesheet" href="/brand-defaults.css">
21
21
  </head>
@@ -5,23 +5,23 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/admin-Ck4GDj6I.js"></script>
8
+ <script type="module" crossorigin src="/assets/admin-DnvauP59.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-BycB0eMI.js">
10
- <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-BmNepPEn.js">
11
- <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-B469O83-.js">
12
- <link rel="modulepreload" crossorigin href="/assets/graph-labels-kneGnsHB.js">
13
- <link rel="modulepreload" crossorigin href="/assets/AdminShell-CzHB95sB.js">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-DXWyHqht.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-fFM7rxUD.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/graph-labels-F6hQJKCn.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/AdminShell-B5vEeSLw.js">
14
14
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-eAV8hweq.js">
15
- <link rel="modulepreload" crossorigin href="/assets/copy-C87QIN_o.js">
16
- <link rel="modulepreload" crossorigin href="/assets/play-DgP7vl0r.js">
17
- <link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-Bb-51cJv.js">
18
- <link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-DoYIIvBQ.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/copy-Bw2h4ofb.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/play-fy3tdi7M.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-D0MWFIde.js">
18
+ <link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-CemYu7ho.js">
19
19
  <link rel="modulepreload" crossorigin href="/assets/file-download-B7zwa78w.js">
20
- <link rel="modulepreload" crossorigin href="/assets/chevron-left-0tVo23Dh.js">
21
- <link rel="modulepreload" crossorigin href="/assets/file-text-rWowl9RN.js">
22
- <link rel="modulepreload" crossorigin href="/assets/triangle-alert-el772yUQ.js">
23
- <link rel="modulepreload" crossorigin href="/assets/page-DyVAu7tm.js">
24
- <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-rMaiYjNu.css">
20
+ <link rel="modulepreload" crossorigin href="/assets/chevron-left-Ctw-3JsV.js">
21
+ <link rel="modulepreload" crossorigin href="/assets/file-text-xUlDn7ui.js">
22
+ <link rel="modulepreload" crossorigin href="/assets/triangle-alert-DN-Eswuf.js">
23
+ <link rel="modulepreload" crossorigin href="/assets/page-DbWIOK60.js">
24
+ <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-DDrveXI8.css">
25
25
  <link rel="stylesheet" crossorigin href="/assets/useMediaQuery-DXAuc8G-.css">
26
26
  <link rel="stylesheet" crossorigin href="/assets/AdminLoginScreens-CWMpccrR.css">
27
27
  <link rel="stylesheet" href="/brand-defaults.css">
@@ -5,23 +5,23 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Operator — Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/operator-N1tnD0Of.js"></script>
8
+ <script type="module" crossorigin src="/assets/operator-CkWK9uRB.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-BycB0eMI.js">
10
- <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-BmNepPEn.js">
11
- <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-B469O83-.js">
12
- <link rel="modulepreload" crossorigin href="/assets/AdminShell-CzHB95sB.js">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-DXWyHqht.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-fFM7rxUD.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/AdminShell-B5vEeSLw.js">
13
13
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-eAV8hweq.js">
14
- <link rel="modulepreload" crossorigin href="/assets/copy-C87QIN_o.js">
15
- <link rel="modulepreload" crossorigin href="/assets/play-DgP7vl0r.js">
16
- <link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-Bb-51cJv.js">
17
- <link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-DoYIIvBQ.js">
18
- <link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-DfNAu8hQ.js">
19
- <link rel="modulepreload" crossorigin href="/assets/chevron-left-0tVo23Dh.js">
20
- <link rel="modulepreload" crossorigin href="/assets/file-text-rWowl9RN.js">
21
- <link rel="modulepreload" crossorigin href="/assets/rotate-ccw-Dnn7gbPh.js">
22
- <link rel="modulepreload" crossorigin href="/assets/wrench-Ck4phkdB.js">
23
- <link rel="modulepreload" crossorigin href="/assets/page-CGTC6xi4.js">
24
- <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-rMaiYjNu.css">
14
+ <link rel="modulepreload" crossorigin href="/assets/copy-Bw2h4ofb.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/play-fy3tdi7M.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-D0MWFIde.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-CemYu7ho.js">
18
+ <link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-BmOZr_Mw.js">
19
+ <link rel="modulepreload" crossorigin href="/assets/chevron-left-Ctw-3JsV.js">
20
+ <link rel="modulepreload" crossorigin href="/assets/file-text-xUlDn7ui.js">
21
+ <link rel="modulepreload" crossorigin href="/assets/rotate-ccw-BDdOWTDl.js">
22
+ <link rel="modulepreload" crossorigin href="/assets/wrench-C-yn7q1Q.js">
23
+ <link rel="modulepreload" crossorigin href="/assets/page-Dh6fCuUi.js">
24
+ <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-DDrveXI8.css">
25
25
  <link rel="stylesheet" crossorigin href="/assets/useMediaQuery-DXAuc8G-.css">
26
26
  <link rel="stylesheet" crossorigin href="/assets/AdminLoginScreens-CWMpccrR.css">
27
27
  <link rel="stylesheet" href="/brand-defaults.css">
@@ -5,22 +5,22 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/public-CpkYl4eK.js"></script>
8
+ <script type="module" crossorigin src="/assets/public-DmD6vvFM.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-BycB0eMI.js">
10
- <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-BmNepPEn.js">
11
- <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-B469O83-.js">
12
- <link rel="modulepreload" crossorigin href="/assets/AdminShell-CzHB95sB.js">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-DXWyHqht.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-fFM7rxUD.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/AdminShell-B5vEeSLw.js">
13
13
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-eAV8hweq.js">
14
- <link rel="modulepreload" crossorigin href="/assets/copy-C87QIN_o.js">
15
- <link rel="modulepreload" crossorigin href="/assets/play-DgP7vl0r.js">
16
- <link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-Bb-51cJv.js">
17
- <link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-DfNAu8hQ.js">
18
- <link rel="modulepreload" crossorigin href="/assets/chevron-left-0tVo23Dh.js">
19
- <link rel="modulepreload" crossorigin href="/assets/file-text-rWowl9RN.js">
20
- <link rel="modulepreload" crossorigin href="/assets/rotate-ccw-Dnn7gbPh.js">
21
- <link rel="modulepreload" crossorigin href="/assets/wrench-Ck4phkdB.js">
22
- <link rel="modulepreload" crossorigin href="/assets/page-CGTC6xi4.js">
23
- <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-rMaiYjNu.css">
14
+ <link rel="modulepreload" crossorigin href="/assets/copy-Bw2h4ofb.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/play-fy3tdi7M.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/useVoiceRecorder-D0MWFIde.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/useCopyFeedback-BmOZr_Mw.js">
18
+ <link rel="modulepreload" crossorigin href="/assets/chevron-left-Ctw-3JsV.js">
19
+ <link rel="modulepreload" crossorigin href="/assets/file-text-xUlDn7ui.js">
20
+ <link rel="modulepreload" crossorigin href="/assets/rotate-ccw-BDdOWTDl.js">
21
+ <link rel="modulepreload" crossorigin href="/assets/wrench-C-yn7q1Q.js">
22
+ <link rel="modulepreload" crossorigin href="/assets/page-Dh6fCuUi.js">
23
+ <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-DDrveXI8.css">
24
24
  <link rel="stylesheet" crossorigin href="/assets/useMediaQuery-DXAuc8G-.css">
25
25
  <link rel="stylesheet" href="/brand-defaults.css">
26
26
  </head>
@@ -5,16 +5,16 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Routines — Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/routines-Db2sVPdc.js"></script>
8
+ <script type="module" crossorigin src="/assets/routines-CZoKUK0p.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-BycB0eMI.js">
10
- <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-BmNepPEn.js">
11
- <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-B469O83-.js">
12
- <link rel="modulepreload" crossorigin href="/assets/AdminShell-CzHB95sB.js">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-DXWyHqht.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/useMediaQuery-fFM7rxUD.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/AdminShell-B5vEeSLw.js">
13
13
  <link rel="modulepreload" crossorigin href="/assets/file-download-B7zwa78w.js">
14
- <link rel="modulepreload" crossorigin href="/assets/clock-D2cZ0sge.js">
15
- <link rel="modulepreload" crossorigin href="/assets/triangle-alert-el772yUQ.js">
16
- <link rel="modulepreload" crossorigin href="/assets/wrench-Ck4phkdB.js">
17
- <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-rMaiYjNu.css">
14
+ <link rel="modulepreload" crossorigin href="/assets/clock-BLOp42yY.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/triangle-alert-DN-Eswuf.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/wrench-C-yn7q1Q.js">
17
+ <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-DDrveXI8.css">
18
18
  <link rel="stylesheet" crossorigin href="/assets/useMediaQuery-DXAuc8G-.css">
19
19
  <link rel="stylesheet" href="/brand-defaults.css">
20
20
  </head>