@aiquants/daily-report 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.mjs CHANGED
@@ -1,7 +1,7 @@
1
- import{jsx as qt}from"react/jsx-runtime";var st=({orientation:e,thumbCenter:t,label:r,isDragging:n,isTapScrollActive:a,isWheelScrollActive:o})=>r.trim()&&(n||a||o)?qt("div",{className:"pointer-events-none absolute flex items-center",style:e==="vertical"?{top:t,left:-16,transform:"translate(-100%, -50%)"}:{left:t,top:-16,transform:"translate(-50%, -100%)"},children:qt("div",{className:"rounded-full border border-slate-200 bg-white px-3 py-1 text-slate-700 text-xs shadow-md shadow-slate-400/30 dark:border-slate-700 dark:bg-slate-900/90 dark:text-slate-100",children:qt("span",{className:"whitespace-nowrap font-semibold text-slate-800 dark:text-slate-100",children:r.trim()})})}):null;import Yn from"lucide-react/dist/esm/icons/paperclip.js";import{jsx as xr,jsxs as qn}from"react/jsx-runtime";var Gn=2,it=({count:e,label:t})=>e<=0?null:qn("span",{className:"inline-flex shrink-0 items-center gap-0.5 rounded px-1 py-0.5 text-slate-500 dark:text-slate-400",title:`${t}: ${e}`,role:"img","aria-label":`${t}: ${e}`,"data-testid":"daily-report-attachment-indicator","data-attachment-count":e,children:[xr(Yn,{className:"h-3.5 w-3.5","aria-hidden":"true"}),e>=Gn&&xr("span",{className:"font-semibold text-[10px] leading-none",children:e})]});import{resolveVirtualScrollLocale as ra}from"@aiquants/virtualscroll";import{createContext as na,useContext as aa,useMemo as oa}from"react";import{resolveVirtualScrollLabels as Jn,resolveVirtualScrollLocale as Xn,VIRTUAL_SCROLL_LABEL_CATALOGS as Dr,VIRTUAL_SCROLL_LABEL_KEYS as Zt}from"@aiquants/virtualscroll";var Sr=["id","businessDate","author","visitTime","createdAt","updatedAt","updatedBy","category","categoryInfo","creationCategory","customer","subject","content","interviewers","comments","attachments","attachmentMissing","attachmentDownload","tabArticle","tabRelations","relationsEmpty","title","tabList","tabTree","tabDetailList","treeComingSoon","totalCountLoading","createReport","createReportTitle","devControls","devSseToggle","devReload","devClearCache","autoRead","autoReadTitle","loadErrorBadge","loadError","reload","loadingIds","streamFailed","streamRetry","streamRevalidating","listEmpty","selectPrompt","loading","reportNotFound","contentEmpty","contentEmptyPreview","confirmDelete","deleteFailed","starAdd","starRemove","markRead","markUnread","deleteReport","resizeHandle","overlayBackdrop","overlayDialog","close","formTitle","formTitlePlaceholder","formContent","formContentPlaceholder","formCancel","formSave","formPublish","commentPlaceholder","commentSend","commentDelete","commentDeleteConfirm","unknownUser","sourceInternal"],Cr=["totalCount","debounce","streamProgressCount","streamProgressRatio","streamRetrying","reportLoadFailed","reportSummaryLoadFailed","interviewerWithAffiliation","operationFailed"],Xt=[...Zt,...Sr,...Cr];var Qn=Object.freeze({en:"en-US",ja:"ja-JP"}),fe=(e,t)=>t.toLocaleString(Qn[e]),Zn=Object.freeze({create:"\u65E5\u5831\u306E\u4F5C\u6210",update:"\u65E5\u5831\u306E\u4FDD\u5B58",publish:"\u65E5\u5831\u306E\u516C\u958B",delete:"\u65E5\u5831\u306E\u524A\u9664",addComment:"\u30B3\u30E1\u30F3\u30C8\u306E\u6295\u7A3F",deleteComment:"\u30B3\u30E1\u30F3\u30C8\u306E\u524A\u9664",toggleStar:"\u30B9\u30BF\u30FC\u306E\u66F4\u65B0",toggleRead:"\u65E2\u8AAD\u72B6\u614B\u306E\u66F4\u65B0"}),ea=Object.freeze({create:"create the report",update:"save the report",publish:"publish the report",delete:"delete the report",addComment:"post the comment",deleteComment:"delete the comment",toggleStar:"update the star",toggleRead:"update the read state"}),Qt=Object.freeze({en:Object.freeze({id:"ID",businessDate:"Business date",author:"Author",visitTime:"Visit time",createdAt:"Created at",updatedAt:"Updated at",updatedBy:"Updated by",category:"Category",categoryInfo:"Category",creationCategory:"Creation category",customer:"Customer",subject:"Subject",content:"Content",interviewers:"Attendees",comments:"Comments",attachments:"Attachments",attachmentMissing:"File is missing",attachmentDownload:"Download",tabArticle:"Overview",tabRelations:"Related",relationsEmpty:"No related view configured yet.",title:"Daily Reports",tabList:"\u{1F4C4} List",tabTree:"\u{1F333} Tree",tabDetailList:"\u{1F4CB} DetailList",treeComingSoon:"The tree view is coming soon",totalCountLoading:"Total: loading...",createReport:"New report",createReportTitle:"Create a daily report",devControls:"Development-only controls",devSseToggle:"Toggle SSE real-time sync",devReload:"Reload data",devClearCache:"Clear the cache and reload",autoRead:"Auto-read",autoReadTitle:"Mark reports as read automatically while viewing them",loadErrorBadge:"Error",loadError:"Failed to load the daily reports.",reload:"Reload",loadingIds:"Loading report IDs...",streamFailed:"Failed to load",streamRetry:"Retry",streamRevalidating:"Refreshing",listEmpty:"No data",selectPrompt:"Select a report from the list on the left.",loading:"Loading...",reportNotFound:"Report not found",contentEmpty:"No content has been entered.",contentEmptyPreview:"No content has been entered",confirmDelete:"Are you sure you want to delete this report?",deleteFailed:"Failed to delete the report",starAdd:"Add star",starRemove:"Remove star",markRead:"Mark as read",markUnread:"Mark as unread",deleteReport:"Delete",resizeHandle:"Resize the border between the report list and the detail pane",overlayBackdrop:"Tap the background to close",overlayDialog:"Report details",close:"Close",formTitle:"Title",formTitlePlaceholder:"Enter the report title",formContent:"Content",formContentPlaceholder:"Enter the report content",formCancel:"Cancel",formSave:"Save",formPublish:"Publish",commentPlaceholder:"Add a comment...",commentSend:"Send",commentDelete:"Delete comment",commentDeleteConfirm:"Delete",unknownUser:"Unknown",sourceInternal:"Original",totalCount:e=>`Total: ${fe("en",e)}`,debounce:e=>`Debounce: ${e} ms`,streamProgressCount:e=>`Loading ${fe("en",e)}`,streamProgressRatio:(e,t,r)=>`Loading ${fe("en",e)} / ${fe("en",t)} (${r}%)`,streamRetrying:e=>`Reconnecting... (${fe("en",e)} received)`,reportLoadFailed:e=>`Failed to load report ${fe("en",e)}.`,reportSummaryLoadFailed:e=>`Failed to load the summary of report ${fe("en",e)}.`,interviewerWithAffiliation:(e,t)=>`${e} (${t})`,operationFailed:e=>`Failed to ${ea[e]}. Please try again later.`}),ja:Object.freeze({id:"ID",businessDate:"\u55B6\u696D\u65E5",author:"\u4F5C\u6210\u8005",visitTime:"\u8A2A\u554F\u6642\u9593",createdAt:"\u4F5C\u6210\u65E5\u6642",updatedAt:"\u66F4\u65B0\u65E5\u6642",updatedBy:"\u66F4\u65B0\u8005",category:"\u533A\u5206",categoryInfo:"\u533A\u5206\u60C5\u5831",creationCategory:"\u4F5C\u6210\u533A\u5206",customer:"\u9867\u5BA2",subject:"\u4EF6\u540D",content:"\u5185\u5BB9",interviewers:"\u9762\u8AC7\u8005",comments:"\u30B3\u30E1\u30F3\u30C8",attachments:"\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB",attachmentMissing:"\u5B9F\u4F53\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",attachmentDownload:"\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9",tabArticle:"\u6982\u8981",tabRelations:"\u95A2\u9023",relationsEmpty:"\u95A2\u9023\u30D3\u30E5\u30FC\u306F\u307E\u3060\u69CB\u6210\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002",title:"\u65E5\u5831",tabList:"\u{1F4C4} \u4E00\u89A7",tabTree:"\u{1F333} \u30C4\u30EA\u30FC",tabDetailList:"\u{1F4CB} \u8A73\u7D30\u4E00\u89A7",treeComingSoon:"\u30C4\u30EA\u30FC\u306F\u73FE\u5728\u6E96\u5099\u4E2D\u3067\u3059",totalCountLoading:"\u7DCF\u4EF6\u6570: \u8AAD\u307F\u8FBC\u307F\u4E2D...",createReport:"\u65E5\u5831\u4F5C\u6210",createReportTitle:"\u65E5\u5831\u3092\u4F5C\u6210",devControls:"\u958B\u767A\u74B0\u5883\u9650\u5B9A\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB",devSseToggle:"SSE \u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u540C\u671F\u5207\u66FF",devReload:"\u30C7\u30FC\u30BF\u518D\u53D6\u5F97 (\u30EA\u30ED\u30FC\u30C9)",devClearCache:"\u30AD\u30E3\u30C3\u30B7\u30E5\u7834\u68C4 & \u518D\u53D6\u5F97",autoRead:"\u81EA\u52D5\u65E2\u8AAD",autoReadTitle:"\u65E5\u5831\u95B2\u89A7\u6642\u306E\u81EA\u52D5\u65E2\u8AAD\u51E6\u7406\u5207\u66FF",loadErrorBadge:"\u30A8\u30E9\u30FC",loadError:"\u65E5\u5831\u30C7\u30FC\u30BF\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002",reload:"\u518D\u8AAD\u307F\u8FBC\u307F",loadingIds:"\u65E5\u5831 ID \u3092\u8AAD\u307F\u8FBC\u307F\u4E2D\u3067\u3059...",streamFailed:"\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F",streamRetry:"\u518D\u8A66\u884C",streamRevalidating:"\u6700\u65B0\u5316\u4E2D",listEmpty:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093",selectPrompt:"\u5DE6\u5074\u306E\u4E00\u89A7\u304B\u3089\u65E5\u5831\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002",loading:"\u8AAD\u307F\u8FBC\u307F\u4E2D...",reportNotFound:"\u65E5\u5831\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",contentEmpty:"\u5185\u5BB9\u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002",contentEmptyPreview:"\u5185\u5BB9\u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093",confirmDelete:"\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F",deleteFailed:"\u524A\u9664\u306B\u5931\u6557\u3057\u307E\u3057\u305F",starAdd:"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B",starRemove:"\u30B9\u30BF\u30FC\u3092\u5916\u3059",markRead:"\u65E2\u8AAD\u306B\u3059\u308B",markUnread:"\u672A\u8AAD\u306B\u3059\u308B",deleteReport:"\u524A\u9664\u3059\u308B",resizeHandle:"\u65E5\u5831\u4E00\u89A7\u3068\u8A73\u7D30\u30DA\u30A4\u30F3\u306E\u5883\u754C\u306E\u30B5\u30A4\u30BA\u5909\u66F4\u30CF\u30F3\u30C9\u30EB",overlayBackdrop:"\u80CC\u666F\u3092\u30BF\u30C3\u30D7\u3057\u3066\u9589\u3058\u308B",overlayDialog:"\u65E5\u5831\u8A73\u7D30",close:"\u9589\u3058\u308B",formTitle:"\u30BF\u30A4\u30C8\u30EB",formTitlePlaceholder:"\u65E5\u5831\u306E\u30BF\u30A4\u30C8\u30EB\u3092\u5165\u529B",formContent:"\u5185\u5BB9",formContentPlaceholder:"\u65E5\u5831\u306E\u5185\u5BB9\u3092\u5165\u529B",formCancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",formSave:"\u4FDD\u5B58",formPublish:"\u516C\u958B",commentPlaceholder:"\u30B3\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0...",commentSend:"\u9001\u4FE1",commentDelete:"\u524A\u9664",commentDeleteConfirm:"\u524A\u9664\u3059\u308B",unknownUser:"\u4E0D\u660E\u306A\u30E6\u30FC\u30B6\u30FC",sourceInternal:"\u30AA\u30EA\u30B8\u30CA\u30EB",totalCount:e=>`\u7DCF\u4EF6\u6570: ${fe("ja",e)} \u4EF6`,debounce:e=>`\u30C7\u30D0\u30A6\u30F3\u30B9: ${e} ms`,streamProgressCount:e=>`\u8AAD\u307F\u8FBC\u307F\u4E2D ${fe("ja",e)} \u4EF6`,streamProgressRatio:(e,t,r)=>`\u8AAD\u307F\u8FBC\u307F\u4E2D ${fe("ja",e)} / ${fe("ja",t)} (${r}%)`,streamRetrying:e=>`\u518D\u63A5\u7D9A\u4E2D... (${fe("ja",e)} \u4EF6\u53D7\u4FE1\u6E08)`,reportLoadFailed:e=>`\u65E5\u5831 ${fe("ja",e)} \u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002`,reportSummaryLoadFailed:e=>`\u65E5\u5831 ${fe("ja",e)} \u306E\u6982\u8981\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002`,interviewerWithAffiliation:(e,t)=>`${e} (${t})`,operationFailed:e=>`${Zn[e]}\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u6642\u9593\u3092\u304A\u3044\u3066\u518D\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002`})}),Ir=Object.freeze({en:Object.freeze({...Dr.en,...Qt.en}),ja:Object.freeze({...Dr.ja,...Qt.ja})}),Jt=e=>typeof e=="string"?JSON.stringify(e):e===null?"null":typeof e,ta=e=>{let t={},r=!1;for(let n of Zt){let a=Object.hasOwn(e,n)?e[n]:void 0;a!==void 0&&(t[n]=a,r=!0)}return r?t:void 0},wr=(e,t,r)=>{e[t]=r},er=(e,t)=>{let r=Xn(e);if(t===void 0)return Ir[r];if(t===null||typeof t!="object")throw new RangeError(`[daily-report] labels must be an object; got ${Jt(t)}`);let n=Object.getPrototypeOf(t);if(n!==Object.prototype&&n!==null)throw new RangeError(`[daily-report] labels must be a plain object (prototype Object.prototype or null); got ${Array.isArray(t)?"an array":"an object with a non-plain prototype"}`);for(let s of Object.keys(t))if(!Xt.includes(s))throw new RangeError(`[daily-report] labels.${s} is not a known label key; expected one of ${Xt.join(", ")}`);let o={...Jn(r,ta(t)),...Qt[r]};for(let s of Sr){let l=Object.hasOwn(t,s)?t[s]:void 0;if(l!==void 0){if(typeof l!="string"||l.trim()==="")throw new RangeError(`[daily-report] labels.${s} must be a non-blank string; got ${Jt(l)}`);wr(o,s,l)}}for(let s of Cr){let l=Object.hasOwn(t,s)?t[s]:void 0;if(l!==void 0){if(typeof l!="function")throw new RangeError(`[daily-report] labels.${s} must be a function; got ${Jt(l)}`);wr(o,s,l)}}return Object.freeze(o)},Tr=e=>{let t={};for(let r of Zt)t[r]=e[r];return Object.freeze(t)};import{jsx as tr,jsxs as da}from"react/jsx-runtime";var sa=e=>({Internal:{label:e.sourceInternal,badgeClassName:"bg-emerald-100 text-emerald-800 dark:bg-emerald-900/30 dark:text-emerald-400"}}),ia=({title:e,annotation:t})=>da("header",{className:"flex flex-wrap items-baseline justify-between gap-2 px-2 py-1",children:[tr("span",{className:"text-nowrap text-slate-700 text-sm dark:text-slate-200",children:e}),t?tr("span",{className:"text-slate-600 text-xs dark:text-slate-300",children:t}):null]}),rr=Object.freeze({apiBasePath:"/daily_report/api",ssePath:"/sse/daily_report/updates",draftLabelName:"draft",renderHeader:ia,showDevControls:!1}),kr=["apiBasePath","ssePath","draftLabelName","locale","labels","sourceTypeConfigs","renderHeader","showDevControls","onError"];var Nr=Object.freeze({fieldLabels:"config.labels (the same 21 keys)",title:"config.labels.title"}),la=e=>{for(let t of Object.keys(e))if(!kr.includes(t))throw Object.hasOwn(Nr,t)?new RangeError(`[daily-report] config.${t} was removed in 0.21.0; use ${Nr[t]}`):new RangeError(`[daily-report] config.${t} is not a known config key; expected one of ${kr.join(", ")}`)},Er=e=>{let t=e===void 0?{}:e;la(t);let r=ra(t.locale),n=er(r,t.labels),a=rr;return{apiBasePath:t.apiBasePath===void 0?a.apiBasePath:t.apiBasePath,ssePath:t.ssePath===void 0?a.ssePath:t.ssePath,draftLabelName:t.draftLabelName===void 0?a.draftLabelName:t.draftLabelName,locale:r,labels:n,sourceTypeConfigs:t.sourceTypeConfigs===void 0?sa(n):t.sourceTypeConfigs,renderHeader:t.renderHeader===void 0?a.renderHeader:t.renderHeader,showDevControls:t.showDevControls===void 0?a.showDevControls:t.showDevControls,onError:t.onError}},Lr=na(Er(void 0)),Pr=({config:e,children:t})=>{let r=oa(()=>Er(e),[e]);return tr(Lr.Provider,{value:r,children:t})},_=()=>aa(Lr),Me=(e,t)=>{if(!(e&&t))return;if(t[e])return t[e];let r=e.toLowerCase(),n=Object.keys(t).find(a=>a.toLowerCase()===r);return n?t[n]:void 0};import{jsx as ze,jsxs as lt}from"react/jsx-runtime";var Ar=1024,nr=["B","KB","MB","GB"],ca=e=>{if(e===null||!Number.isFinite(e)||e<0)return null;let t=e,r=0;for(;t>=Ar&&r<nr.length-1;)t/=Ar,r+=1;return r===0?`${t} ${nr[r]}`:`${t.toFixed(1)} ${nr[r]}`},dt=({attachments:e})=>{let{apiBasePath:t,labels:r}=_();return e.length===0?null:lt("div",{className:"flex flex-col gap-2","data-testid":"daily-report-attachment-section",children:[ze("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:r.attachments}),ze("ul",{className:"flex flex-col gap-1.5",children:e.map(n=>{let a=`${t}/attachment/${n.id}`,o=ca(n.fileSize),s=n.state==="absent";return lt("li",{className:"flex items-center gap-2 rounded-lg bg-slate-50 px-3 py-2 dark:bg-slate-800/40","data-testid":"daily-report-attachment-item","data-attachment-state":n.state,children:[lt("div",{className:"flex min-w-0 flex-col",children:[s?ze("span",{className:"truncate text-slate-400 text-sm line-through dark:text-slate-500","data-testid":"daily-report-attachment-name",children:n.fileName}):ze("a",{href:a,className:"truncate text-blue-600 text-sm hover:underline dark:text-blue-400","data-testid":"daily-report-attachment-link",children:n.fileName}),lt("span",{className:"text-[10px] text-slate-400 dark:text-slate-500",children:[o??"\u2014",s&&` \xB7 ${r.attachmentMissing}`]})]}),!s&&ze("a",{href:`${a}?download=1`,className:"ml-auto shrink-0 text-[10px] text-slate-500 hover:text-slate-700 hover:underline dark:text-slate-400 dark:hover:text-slate-200","data-testid":"daily-report-attachment-download",children:r.attachmentDownload})]},n.id)})})]})};import pa from"@heroicons/react/24/outline/TrashIcon.js";import{useState as fa}from"react";var Or=(e,t,r,n)=>{if(typeof n!="string"||n.trim()==="")throw new RangeError(`[daily-report] mergeComments: unknownAuthorName must be a non-blank string; got ${typeof n=="string"?JSON.stringify(n):typeof n}`);let a=e.map((s,l)=>({id:`legacy-${l}`,authorName:s.name||n,content:s.text||"",isMine:!1,color:s.color||void 0,isLegacy:!0})),o=t.map(s=>({id:s.id,authorName:s.userName||n,content:s.content??"",createdAt:s.createdAt??"",isMine:r?s.userId===r:s.isMine,isLegacy:!1}));return[...a,...o]},Mr=e=>{if(!e)return"text-gray-700 dark:text-gray-300";let t=e.toLowerCase();return t.includes("red")||t.includes("\u8D64")?"text-red-600 dark:text-red-400":t.includes("green")||t.includes("\u7DD1")?"text-green-600 dark:text-green-400":t.includes("blue")||t.includes("\u9752")?"text-blue-600 dark:text-blue-400":t.includes("yellow")||t.includes("\u9EC4")?"text-yellow-600 dark:text-yellow-400":t.includes("orange")||t.includes("\u6A59")?"text-orange-500 dark:text-orange-400":"text-gray-700 dark:text-gray-300"};var ie=e=>{if(!e)return"-";let t=e.trim();return t===""?"-":t},le=e=>{if(!e)return"-";if(typeof e!="string")return e instanceof Date?le(e.toISOString()):String(e);let t=e.trim();if(t==="")return"-";let r=t.match(/^(\d{4})[-/](\d{2})[-/](\d{2})$/);if(r)return`${r[1]}-${r[2]}-${r[3]}`;let n=new Date(t);if(Number.isNaN(n.getTime()))return t;let a=n.getFullYear(),o=String(n.getMonth()+1).padStart(2,"0"),s=String(n.getDate()).padStart(2,"0");if(t.includes(":")||t.includes("T")){let m=String(n.getHours()).padStart(2,"0"),u=String(n.getMinutes()).padStart(2,"0"),i=String(n.getSeconds()).padStart(2,"0");return`${a}-${o}-${s}T${m}:${u}:${i}`}return`${a}-${o}-${s}`};import{clsx as ua}from"clsx";import{twMerge as ma}from"tailwind-merge";function Y(...e){return ma(ua(e))}import{jsx as He,jsxs as ct}from"react/jsx-runtime";var ba=(e,t,r)=>t===e||typeof e=="number"&&e<0&&r?.get(e)===t||typeof t=="number"&&t<0&&r?.get(t)===e,Hr=({comment:e,reportHubId:t,businessDate:r,onOptimisticDelete:n,pendingDeleteId:a,onPendingDeleteIdChange:o,onTrashClick:s,resolvedIdMap:l})=>{let[m,u]=fa(!1),{labels:i}=_(),f=ba(e.id,a,l),x=d=>{d.stopPropagation(),d.preventDefault(),o(null),u(!0),typeof e.id=="number"&&n(e.id)};return ct("li",{"data-comment-id":e.id,"data-deleted":m?"true":void 0,className:Y("group relative rounded-xl border border-slate-200 bg-white p-3 dark:border-slate-700 dark:bg-slate-900/70",e.isMine&&"border-blue-200 bg-blue-50 dark:border-blue-800/70 dark:bg-blue-950/40",m&&"hidden",f?"z-50":"z-0 hover:z-10"),children:[ct("div",{className:"mb-1 flex items-center justify-between",children:[He("div",{className:Y("font-semibold text-xs",Mr(e.color)),children:ie(e.authorName)}),ct("div",{className:"flex items-center gap-2",children:[e.createdAt&&He("div",{className:"text-[10px] text-slate-400",children:le(e.createdAt)}),e.isMine&&!e.isLegacy&&ct("div",{className:"relative",children:[He("button",{type:"button",className:Y("transition-colors",f?"text-red-500":"text-slate-400 hover:text-red-500"),title:i.commentDelete,"aria-label":i.commentDelete,onClick:d=>s(d,e.id),children:He(pa,{className:"h-4 w-4"})}),f&&He("button",{type:"button","data-delete-confirmation":!0,className:"fade-in zoom-in-95 absolute top-full right-0 z-20 mt-1 animate-in whitespace-nowrap rounded-md bg-red-600 px-3 py-1.5 font-bold text-white text-xs shadow-lg duration-200 hover:bg-red-700 active:scale-95",onClick:x,children:i.commentDeleteConfirm})]})]})]}),He("div",{className:"whitespace-pre-wrap text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:e.content})]})};import{useCallback as ga,useEffect as _r,useRef as Fr,useState as ya}from"react";import{jsx as Pe,jsxs as va}from"react/jsx-runtime";var ha=(e,t)=>{let r=Fr(null);return _r(()=>{if(e===null)return;let a=o=>{o.target.closest("[data-delete-confirmation]")||t(null)};return document.addEventListener("mousedown",a),document.addEventListener("touchstart",a),()=>{document.removeEventListener("mousedown",a),document.removeEventListener("touchstart",a)}},[e,t]),_r(()=>()=>{r.current&&clearTimeout(r.current)},[]),{handleTrashClick:ga((a,o)=>{a.stopPropagation(),a.preventDefault(),e!==o&&(t(o),r.current&&clearTimeout(r.current),r.current=window.setTimeout(()=>{t(null),r.current=null},5e3))},[e,t])}},ut=({comments:e,reportHubId:t,businessDate:r,onDeleteComment:n,pendingDeleteId:a,onPendingDeleteIdChange:o,resolvedIdMap:s})=>{let{handleTrashClick:l}=ha(a,o);return e.length===0?null:Pe("ul",{className:"mb-3 space-y-2",children:e.map(m=>Pe(Hr,{comment:m,reportHubId:t,businessDate:r,onOptimisticDelete:n||(()=>{}),pendingDeleteId:a,onPendingDeleteIdChange:o,onTrashClick:l,resolvedIdMap:s},m.id))})},mt=({reportHubId:e,businessDate:t,onAddComment:r})=>{let[n,a]=ya(!1),o=Fr(null),{labels:s}=_();return va("form",{className:"flex gap-2",ref:o,onSubmit:async m=>{m.preventDefault();let i=new FormData(m.currentTarget).get("content")?.trim();if(i&&r){a(!0),o.current?.reset();try{await r(i)}catch{if(o.current){let f=o.current.elements.namedItem("content");f&&(f.value=i)}}finally{a(!1)}}},children:[Pe("input",{type:"hidden",name:"intent",value:"addComment"}),Pe("input",{type:"hidden",name:"reportHubId",value:e}),Pe("input",{type:"hidden",name:"businessDate",value:t}),Pe("input",{type:"text",name:"content",placeholder:s.commentPlaceholder,className:"flex-1 rounded-lg border border-slate-300 bg-slate-50 px-3 py-2 text-sm focus:border-blue-500 focus:bg-white focus:outline-none dark:border-slate-700 dark:bg-slate-800 dark:text-slate-200",autoComplete:"off"}),Pe("button",{type:"submit",className:"rounded-lg bg-blue-600 px-4 py-2 font-medium text-sm text-white hover:bg-blue-700 disabled:opacity-50",disabled:n,children:s.commentSend})]})};import{VirtualScroll as Eo}from"@aiquants/virtualscroll";import Lo from"lucide-react/dist/esm/icons/check.js";import wn from"lucide-react/dist/esm/icons/star.js";import Po from"lucide-react/dist/esm/icons/trash-2.js";import{useCallback as Se,useEffect as ke,useMemo as yr,useRef as ce,useState as tt}from"react";import{createContext as io,useCallback as Ie,useContext as lo,useEffect as fr,useRef as de,useState as Mt}from"react";var Br=e=>{if(typeof e!="object"||e===null)return"unknown";let t=e;return typeof t.kind=="string"?t.kind==="chunk"?"chunk":t.kind==="error"?"error":"unknown":Array.isArray(t.items)?"chunk":typeof t.error=="string"?"error":"unknown"};var pt=(e,t)=>e.businessDate!==t.businessDate?e.businessDate===null?1:t.businessDate===null||e.businessDate>t.businessDate?-1:1:t.reportHubId-e.reportHubId,Ur=e=>{for(let t=1;t<e.length;t++)if(pt(e[t-1],e[t])>0)return!1;return!0},ar=(e,t)=>{let r=e.filter(o=>o.reportHubId!==t.reportHubId),n=0,a=r.length;for(;n<a;){let o=n+a>>1;pt(r[o],t)<=0?n=o+1:a=o}return r.splice(n,0,t),r};var _e=(e,t,r=console)=>{let n=a=>typeof a=="string"?[`${t} ${a}`]:[t,a];return{debug:(a,...o)=>{e<=0&&r.debug(...n(a),...o)},info:(a,...o)=>{e<=1&&r.info(...n(a),...o)},warn:(a,...o)=>{e<=2&&r.warn(...n(a),...o)},error:(a,...o)=>{e<=3&&r.error(...n(a),...o)}}};import{useCallback as wa,useEffect as Kr,useRef as Sa,useState as Ct}from"react";var Ra=/^\d{4}-\d{2}-\d{2}$/,xa=/^\d{4}\/\d{2}\/\d{2}$/,ft=e=>e<10?`0${e}`:`${e}`,$r=e=>{if(Number.isNaN(e.getTime()))return null;let t=e.getFullYear(),r=ft(e.getMonth()+1),n=ft(e.getDate());return`${t}-${r}-${n}`},or=(e=new Date)=>Number.isNaN(e.getTime())?or(new Date):`${e.getFullYear()}-${ft(e.getMonth()+1)}-${ft(e.getDate())}`,Ke=e=>{if(e==null)return null;if(e instanceof Date)return $r(e);let t=e.trim();if(t==="")return null;if(Ra.test(t))return t;if(xa.test(t))return t.replaceAll("/","-");let r=new Date(t);return $r(r)};import{tapScrollCircleSampleVisual as Da}from"@aiquants/virtualscroll";var Fe=120,Vr=1e3,sr=160,bt=6,We=sr-bt,gt=.8,yt={maxVelocity:18,deceleration:.0018,startVelocityThreshold:.03},ht=20,jr=6,vt={reportHubId:-1,businessDate:null},ii={report:null,error:null,isLoading:!1,isRefetching:!1},Rt=240,xt=15,Dt=8,zr=3,wt={enabled:!0,renderVisual:Da,maxSpeedCurve:{exponentialSteepness:3,exponentialScale:8},maxSpeedMultiplier:8},St=["pen","touch"];var Yr=_e(1,"use-daily-report"),Gr=(e,t)=>{if(typeof window>"u")return t;let r=window[e];return typeof r=="number"&&!Number.isNaN(r)?r:t},ir=Gr("__DAILY_REPORT_CACHE_TTL__",3e5),Ca=Gr("__DAILY_REPORT_CACHE_REVIVE_MS__",6e4),M={reports:new Map,lists:new Map,pendingLists:new Map,pendingReports:new Map,listeners:new Set,locks:new Set,lastMutations:new Map,recentDeletes:new Map,lastPrune:0,prune(){let e=Date.now();if(e-this.lastPrune<6e4)return;this.lastPrune=e;let t=3600*1e3;for(let[r,n]of this.reports)e-n.expiresAt>t&&this.reports.delete(r);for(let[r,n]of this.lists)e-n.expiresAt>t&&this.lists.delete(r)},clear(){this.reports.clear(),this.lists.clear(),this.pendingLists.clear(),this.pendingReports.clear(),this.locks.clear(),this.lastMutations.clear(),this.recentDeletes.clear(),this.listeners.forEach(e=>{e(-1)})},isValid:e=>e>Date.now(),notify:e=>{M.listeners.forEach(t=>{t(e)})},getReport(e,t=!1){let r=this.reports.get(e);return r&&(t||this.isValid(r.expiresAt))?r.data:null},getList(e,t=!1){let r=e&&this.lists.get(e);return r&&(t||this.isValid(r.expiresAt))?r.data:null},set(e,t,r=!0){if(this.reports.set(e.reportHubId,{data:e,expiresAt:t}),r){let n=Ke(e.date),a=n?this.lists.get(n):null;if(a&&n){let s=a.data.some(l=>l.reportHubId===e.reportHubId)?a.data.map(l=>l.reportHubId===e.reportHubId?e:l):[e,...a.data];this.lists.set(n,{...a,data:s})}}this.notify(e.reportHubId)},update(e,t,r=!0){let n=this.reports.get(e);if(n?.data){if(r&&t.updatedAt&&n.data.updatedAt&&new Date(t.updatedAt).getTime()<new Date(n.data.updatedAt).getTime()){Yr.warn(`[DailyReportCache] Stale update skipped id=${e}`);return}this.set({...n.data,...t},Math.max(n.expiresAt,Date.now()+Ca))}},delete(e,t){this.reports.delete(e);let r=Ke(t),n=r&&this.lists.get(r);n&&r&&this.lists.set(r,{...n,data:n.data.filter(a=>a.reportHubId!==e)}),this.notify(e)},merge(e,t){let r=e;if(r.postedComments.some(n=>this.recentDeletes.has(n.id))&&(r={...r,postedComments:r.postedComments.filter(n=>!this.recentDeletes.has(n.id))}),t){let n=new Set(r.postedComments.map(o=>o.id)),a=t.postedComments.filter(o=>!n.has(o.id)&&o.isMine&&Date.now()-new Date(o.createdAt||0).getTime()<1e4);a.length>0&&(r={...r,postedComments:[...r.postedComments,...a].sort((o,s)=>new Date(o.createdAt||0).getTime()-new Date(s.createdAt||0).getTime())})}return r},cacheMany(e,t,r){this.prune();let n=Date.now(),a=n+ir;for(let[s,l]of this.recentDeletes)n-l>1e4&&this.recentDeletes.delete(s);let o=e.map(s=>{if(this.locks.has(s.reportHubId))return s;let l=this.lastMutations.get(s.reportHubId);if(l&&r>0&&l>r)return this.reports.get(s.reportHubId)?.data??s;let m=this.reports.get(s.reportHubId)?.data,u=this.merge(s,m);return this.set(u,a,!1),u});return t&&this.lists.set(t,{data:o,expiresAt:a}),o}},qr=(e,t,r=!0)=>M.set(e,t,r),ye=(e,t)=>M.getReport(e,t?.ignoreExpiry),he=(e,t)=>M.update(e,t),Tt=(e,t)=>M.delete(e,t),Ye=()=>{M.clear(),It.clear()},Ge=e=>{M.locks.add(e),M.lastMutations.set(e,Date.now())},qe=e=>{M.locks.delete(e),M.lastMutations.set(e,Date.now())},Jr=e=>M.recentDeletes.set(e,Date.now()),Xr=(e,t)=>{let r=n=>{n===e&&t()};return M.listeners.add(r),()=>{M.listeners.delete(r)}},Ae=(e,t)=>{M.prune(),M.set(t,Date.now()+ir)},Qr=e=>{M.prune();let t=M.getReport(e.reportHubId,!0),r=new Map;for(let a of t?.postedComments??[])r.set(a.id,a.isMine??!1);let n=(e.postedComments??[]).map(a=>({...a,isMine:r.get(a.id)??!1}));M.set({...e,isRead:t?.isRead??!1,isStarred:t?.isStarred??!1,postedComments:n},Date.now()+ir)},Ia=async(e,t)=>{let r=M.getReport(t);if(r)return r;let n=M.pendingReports.get(t);if(n)return n;let a=Date.now(),o=fetch(`${e}/report?reportHubId=${t}`,{cache:"no-cache"}).then(s=>s.ok?s.json():Promise.reject(`HTTP ${s.status}`)).then(s=>{if(s.error)throw new Error(s.error.message);let l=s.report;return M.cacheMany([l],null,a)[0]}).finally(()=>M.pendingReports.delete(t));return M.pendingReports.set(t,o),o},It=new Map,Ta=1e4,ka=(e,t)=>{let r=It.get(t),n=Date.now();if(r&&n-r.at<Ta)return r.inFlight;let a=lr(e,t,{forceRefresh:!0}),o={at:n,inFlight:a};return It.set(t,o),a.finally(()=>{It.get(t)===o&&(o.inFlight=null)}).catch(()=>{}),a},lr=async(e,t,r={})=>{let n=r.forceRefresh?null:M.getList(t);if(n)return n;let a=M.pendingLists.get(t);if(a)return a;let o=Date.now(),s=fetch(`${e}/business-date?businessDate=${encodeURIComponent(t)}`,{cache:"no-cache"}).then(l=>l.ok?l.json():Promise.reject(`HTTP ${l.status}`)).then(l=>{if(l.error)throw new Error(l.error.message);return M.cacheMany(l.reports??[],t,o)}).finally(()=>M.pendingLists.delete(t));return M.pendingLists.set(t,s),s},Be=(e,t)=>{let{apiBasePath:r}=_(),[n,a]=Ct(()=>M.getReport(e)),[o,s]=Ct(null),[l,m]=Ct(!1),[u,i]=Ct(!1),f=Sa({id:e,token:0});return Kr(()=>{let x=d=>{if(d===e){let L=M.getReport(e,!0);a(L)}};return M.listeners.add(x),()=>{M.listeners.delete(x)}},[e]),Kr(()=>{let x=Ke(t),d=(f.current.token||0)+1;if(f.current={id:e,token:d},e<=0){a(null),s(e===0?new Error("Invalid ID"):null),m(!1),i(!1);return}let L=M.getReport(e,!0),D=!1;if(L)D=!M.isValid(M.reports.get(e)?.expiresAt??0);else if(x){let P=M.getList(x,!0)?.find(V=>V.reportHubId===e);P&&(L=P,D=!M.isValid(M.lists.get(x)?.expiresAt??0))}if(a(L),L&&!D){s(null),m(!1),i(!1);return}m(!L),i(!0);let C=setTimeout(async()=>{if(f.current.token===d)try{let S=null;if(x){let P=M.getList(x)!==null;if(S=(await lr(r,x)).find(F=>F.reportHubId===e)??null,!S&&P){let F=await ka(r,x);F&&(S=F.find(B=>B.reportHubId===e)??null)}}else S=await Ia(r,e);f.current.token===d&&(a(S),s(null))}catch(S){f.current.token===d&&s(S instanceof Error?S:new Error("Load failed"))}finally{f.current.token===d&&(m(!1),i(!1))}},L?Fe:0);return()=>clearTimeout(C)},[e,t,r]),{report:n,error:o,isLoading:l,isRefetching:u}},Zr=()=>{let{apiBasePath:e}=_();return wa(t=>{let r=Ke(t);r&&!M.getList(r)&&lr(e,r).catch(n=>Yr.warn("Prefetch error",r,n))},[e])};import{useEffect as $a}from"react";import{z as y}from"zod";var Na=y.object({name:y.string().nullish(),affiliation:y.string().nullish()}),Ea=y.object({name:y.string().nullish(),text:y.string().nullish(),color:y.string().nullish()}),La=y.object({id:y.number(),name:y.string().nullish(),color:y.string().nullish()}),en=y.object({id:y.number(),userId:y.string().nullish(),userName:y.string().nullish(),content:y.string().nullish(),createdAt:y.string().nullish(),isMine:y.boolean()}),Pa=y.object({id:y.string(),fileName:y.string(),fileType:y.string().nullable(),fileSize:y.number().nullable(),createdAt:y.string().nullable(),state:y.enum(["present","absent","unknown"])}),dr=y.object({reportHubId:y.number(),date:y.string().nullish(),createdAt:y.string().nullish(),author:y.string().nullish(),userId:y.string().nullish(),sourceType:y.string().nullish(),employeeName:y.string().nullish(),updatedBy:y.string().nullish(),updatedAt:y.string().nullish(),category:y.string().nullish(),creationCategory:y.string().nullish(),visitTimeFrom:y.string().nullish(),visitTimeTo:y.string().nullish(),customerName:y.string().nullish(),interviewers:y.array(Na),subject:y.string().nullish(),content:y.string().nullish(),externalComments:y.array(Ea),isRead:y.boolean(),isStarred:y.boolean(),labels:y.array(La),postedComments:y.array(en),attachments:y.array(Pa).default([])}),Aa=y.object({type:y.literal("connected")}),Oa=y.object({type:y.literal("status-update"),reportHubId:y.number(),statusType:y.enum(["star","read"]),value:y.boolean(),clientTempId:y.string(),recipientRawUserId:y.number().optional()}),cr=y.string().optional(),Ma=y.object({type:y.literal("comment-add"),reportHubId:y.number(),comment:en,clientTempId:y.string(),recipientRawUserId:y.number().optional(),sourceType:cr}),Ha=y.object({type:y.literal("comment-delete"),reportHubId:y.number(),commentId:y.number(),clientTempId:y.string(),recipientRawUserId:y.number().optional(),sourceType:cr}),_a=y.object({type:y.literal("report-create"),reportHubId:y.number(),report:dr,clientTempId:y.string(),recipientRawUserId:y.number().optional()}),Fa=y.object({type:y.literal("report-update"),reportHubId:y.number(),report:dr,clientTempId:y.string(),recipientRawUserId:y.number().optional()}),Ba=y.object({type:y.literal("report-publish"),reportHubId:y.number(),report:dr,clientTempId:y.string(),recipientRawUserId:y.number().optional()}),Ua=y.object({type:y.literal("report-delete"),reportHubId:y.number(),clientTempId:y.string(),sourceType:cr}),tn=y.discriminatedUnion("type",[Aa,Oa,Ma,Ha,_a,Fa,Ba,Ua]);var Je=_e(1,"daily-report-sse-connection"),rn=({isSseEnabled:e,onMessage:t})=>{let{ssePath:r}=_();$a(()=>{if(!e)return;let n=null,a=null,o=0,s,l=()=>{n?.close(),n=new EventSource(`${r}${s?`?lastEventId=${s}`:""}`),n.onopen=()=>{o=0,Je.info("SSE Connected")},n.onmessage=m=>{m.lastEventId&&(s=m.lastEventId);try{let u=JSON.parse(m.data),i=tn.safeParse(u);if(!i.success){Je.error("SSE Validation Error:",i.error.flatten(),"raw message:",u);return}if(i.data.type==="connected"){Je.info("SSE Subscribe Ready");return}t(i.data)}catch(u){Je.error("SSE Parse Error",u)}},n.onerror=m=>{n?.close(),n=null,o++;let u=Math.min(2e3*2**(o-1),3e4);Je.error(`SSE Error. Retrying in ${u}ms (attempt ${o})...`,m),a=setTimeout(l,u)}};return l(),()=>{n&&n.close(),a&&clearTimeout(a)}},[e,t,r])};import{useSyncExternalStore as qa}from"react";var Va=50,ja=1e3,za=3e4,Ka=6,Wa=3e4,kt=Symbol("read-stall"),Ya="/daily_report/api",Ga=/^\d{4}-\d{2}-\d{2}$/,Nt=class{constructor(t={}){this.itemMap=new Map;this.listeners=new Set;this.state={items:[],loadedCount:0,totalCount:null,phase:"idle",isRevalidating:!1,hasCompletedOnce:!1,completedAt:null,error:null};this.lastCursor=null;this.lastSnapshot=null;this.consecutiveFailures=0;this.started=!1;this.disposed=!1;this.loopGeneration=0;this.activeAbortController=null;this.activeSeenIds=null;this.externalRemovalTombstones=new Set;this.pendingForceRefresh=!1;this.wakeRetryWait=null;this.handleOnline=()=>this.wakeRetryWait?.();this.publishCoalesceTimer=null;this.lastItemsPublishAt=0;this.apiBasePath=t.apiBasePath??Ya,this.fetchFn=t.fetchFn??((r,n)=>fetch(r,n)),this.setTimeoutFn=t.setTimeoutFn??((r,n)=>setTimeout(r,n)),this.clearTimeoutFn=t.clearTimeoutFn??(r=>clearTimeout(r)),this.warn=t.warn??((...r)=>console.warn(...r)),this.readStallTimeoutMs=t.readStallTimeoutMs??Wa,this.publishCoalesceMs=t.publishCoalesceMs??Va,typeof window<"u"&&window.addEventListener("online",this.handleOnline)}getState(){return this.state}subscribe(t){return this.listeners.add(t),()=>this.listeners.delete(t)}start(){this.started||this.disposed||(this.started=!0,this.runStreamLoop({revalidate:!1,forceRefresh:!1}))}retry(){this.disposed||this.state.phase!=="failed"||(this.consecutiveFailures=0,this.runStreamLoop({revalidate:this.state.hasCompletedOnce,forceRefresh:!1}))}refresh(t={}){if(!this.disposed){if(this.state.phase==="failed"){this.consecutiveFailures=0,this.runStreamLoop({revalidate:this.state.hasCompletedOnce,forceRefresh:t.forceRefresh??!1});return}if(this.state.phase==="complete"){if(this.state.isRevalidating){t.forceRefresh&&(this.pendingForceRefresh=!0);return}this.lastCursor=null,this.consecutiveFailures=0,this.runStreamLoop({revalidate:!0,forceRefresh:t.forceRefresh??!1})}}}applyExternalUpsert(t){if(this.disposed||!t||typeof t.reportHubId!="number")return;this.externalRemovalTombstones.delete(t.reportHubId),this.activeSeenIds?.add(t.reportHubId);let r=this.itemMap.get(t.reportHubId),n={reportHubId:t.reportHubId,businessDate:t.businessDate,sourceType:t.sourceType??r?.sourceType};(!r||r.businessDate!==n.businessDate||r.sourceType!==n.sourceType)&&(this.itemMap.set(t.reportHubId,n),this.publishItems())}applyExternalRemoval(t){this.disposed||(this.activeSeenIds?.delete(t),this.externalRemovalTombstones.add(t),this.itemMap.delete(t)&&this.publishItems())}dispose(){this.disposed=!0,this.loopGeneration+=1,this.activeAbortController?.abort(),this.cancelScheduledPublishItems(),this.wakeRetryWait?.(),typeof window<"u"&&window.removeEventListener("online",this.handleOnline),this.listeners.clear()}async runStreamLoop(t){let r=++this.loopGeneration;for(this.activeAbortController?.abort(),this.wakeRetryWait?.(),this.lastCursor===null&&(this.activeSeenIds=new Set,this.externalRemovalTombstones.clear(),this.lastSnapshot=null),t.forceRefresh&&(this.pendingForceRefresh=!1),this.publish({phase:t.revalidate?this.state.phase:"streaming",isRevalidating:t.revalidate,error:null});!this.disposed&&r===this.loopGeneration;){let n=await this.streamOnce(t.forceRefresh);if(this.disposed||r!==this.loopGeneration)return;if(n.kind==="complete"){this.pruneUnseenItems(),this.consecutiveFailures=0,this.cancelScheduledPublishItems(),this.lastItemsPublishAt=Date.now(),this.publish({phase:"complete",isRevalidating:!1,hasCompletedOnce:!0,completedAt:Date.now(),error:null,items:Array.from(this.itemMap.values()),loadedCount:this.itemMap.size}),this.pendingForceRefresh&&!this.disposed&&(this.pendingForceRefresh=!1,this.lastCursor=null,this.runStreamLoop({revalidate:!0,forceRefresh:!0}));return}if(n.kind==="aborted")return;if(n.kind==="auth-required"){this.publish({phase:"auth-required",isRevalidating:!1});return}if(this.consecutiveFailures+=1,this.consecutiveFailures>=Ka){t.revalidate&&this.state.hasCompletedOnce?(this.warn("[DailyReportIdsStream] revalidation gave up:",n.error.message),this.pendingForceRefresh=!1,this.publish({isRevalidating:!1,error:n.error})):this.publish({phase:"failed",isRevalidating:!1,error:n.error});return}this.publish({phase:t.revalidate?this.state.phase:"retrying",error:n.error}),await this.waitBeforeRetry(Math.min(ja*2**(this.consecutiveFailures-1),za))}}pruneUnseenItems(){let t=this.activeSeenIds;if(this.activeSeenIds=null,!!t)for(let r of Array.from(this.itemMap.keys()))t.has(r)||this.itemMap.delete(r)}async streamOnce(t){let r=new AbortController;this.activeAbortController=r;try{let n=this.fetchFn(this.buildStreamUrl(t),{signal:r.signal,headers:{Accept:"application/x-ndjson"},cache:"no-store"}),a=null,o=this.readStallTimeoutMs<=0?await n:await Promise.race([n,new Promise(f=>{a=this.setTimeoutFn(()=>f(kt),this.readStallTimeoutMs*3)})]).finally(()=>{a!==null&&this.clearTimeoutFn(a)});if(o===kt)return r.abort(),n.catch(()=>{}),{kind:"retryable",error:new Error("Stream stalled: no response headers within timeout")};if(o.status===401||o.status===403)return{kind:"auth-required"};if(!(o.ok&&o.body))return{kind:"retryable",error:new Error(`ids stream HTTP ${o.status}`)};let s=o.body.getReader(),l=new TextDecoder,m="",u=!1,i=!1;for(;;){let f=await this.readWithStallGuard(s);if(f===kt)return r.abort(),s.cancel().catch(()=>{}),{kind:"retryable",error:new Error("Stream stalled: no data within timeout")};let{done:x,value:d}=f;if(x)break;let L=(m+l.decode(d,{stream:!0})).split(`
2
- `);m=L.pop()??"";let D=!1;for(let N of L){if(N.trim()==="")continue;let C;try{C=JSON.parse(N)}catch{this.warn("[DailyReportIdsStream] skipped malformed line");continue}let S=Br(C);if(S==="unknown"){this.warn("[DailyReportIdsStream] skipped line of unknown kind");continue}if(S==="error"){u=!0;continue}let P=C;D=this.absorbChunkLine(P)||D,typeof P.total=="number"&&Number.isFinite(P.total)&&P.total!==this.state.totalCount&&this.publish({totalCount:P.total}),P.nextCursor&&(P.nextCursor.businessDate===null||Ga.test(P.nextCursor.businessDate))&&(this.lastCursor=P.nextCursor),P.isLast&&(i=!0)}D&&(this.consecutiveFailures=0,this.schedulePublishItems())}return u?{kind:"retryable",error:new Error("Stream interrupted by server error")}:i?{kind:"complete"}:{kind:"retryable",error:new Error("Stream ended before completion")}}catch(n){return n instanceof Error&&n.name==="AbortError"?{kind:"aborted"}:{kind:"retryable",error:n instanceof Error?n:new Error(String(n))}}finally{this.activeAbortController===r&&(this.activeAbortController=null)}}async readWithStallGuard(t){if(this.readStallTimeoutMs<=0)return t.read();let r=null,n=new Promise(a=>{r=this.setTimeoutFn(()=>a(kt),this.readStallTimeoutMs)});try{return await Promise.race([t.read(),n])}finally{r!==null&&this.clearTimeoutFn(r)}}absorbChunkLine(t){t.restarted===!0&&(this.lastCursor=null,this.lastSnapshot=null,this.activeSeenIds=new Set,this.externalRemovalTombstones.clear()),typeof t.snapshot=="string"&&(this.lastSnapshot=t.snapshot);let r=t.provisional===!0,n=!1;for(let a of t.items){if(!a||typeof a.reportHubId!="number"||this.externalRemovalTombstones.has(a.reportHubId))continue;r||this.activeSeenIds?.add(a.reportHubId);let o=this.itemMap.get(a.reportHubId);(!o||o.businessDate!==a.businessDate||o.sourceType!==a.sourceType)&&(this.itemMap.set(a.reportHubId,a),n=!0)}return n}publishItems(){this.lastItemsPublishAt=Date.now(),this.publish({items:Array.from(this.itemMap.values()),loadedCount:this.itemMap.size})}schedulePublishItems(){if(this.publishCoalesceMs<=0){this.publishItems();return}let t=Date.now()-this.lastItemsPublishAt;if(t>=this.publishCoalesceMs){this.publishItems();return}this.publishCoalesceTimer===null&&(this.publishCoalesceTimer=this.setTimeoutFn(()=>{this.publishCoalesceTimer=null,this.publishItems()},this.publishCoalesceMs-t))}cancelScheduledPublishItems(){this.publishCoalesceTimer!==null&&(this.clearTimeoutFn(this.publishCoalesceTimer),this.publishCoalesceTimer=null)}publish(t){this.state={...this.state,...t};for(let r of this.listeners)r()}buildStreamUrl(t){let r=new URLSearchParams;this.lastCursor&&(r.set("cursor_report_hub_id",String(this.lastCursor.reportHubId)),this.lastCursor.businessDate!==null&&r.set("cursor_business_date",this.lastCursor.businessDate),this.lastSnapshot!==null&&r.set("cursor_snapshot",this.lastSnapshot)),t&&r.set("forceRefresh","true");let n=r.toString();return`${this.apiBasePath}/ids-stream${n?`?${n}`:""}`}waitBeforeRetry(t){return new Promise(r=>{let n=null,a=()=>{n!==null&&(this.clearTimeoutFn(n),n=null),this.wakeRetryWait===a&&(this.wakeRetryWait=null),r()};this.wakeRetryWait=a,n=this.setTimeoutFn(a,t)})}};var Ja=6e4,X=null,nn=!1,ur=new Set,an={items:[],loadedCount:0,totalCount:null,phase:"idle",isRevalidating:!1,hasCompletedOnce:!1,completedAt:null,error:null},on=()=>{typeof window<"u"&&window.location.reload()},mr=()=>{for(let e of ur)e()},Lt=()=>{X&&(X.unsubscribe(),X.client.dispose(),X=null,mr())},Et=e=>{if(typeof window>"u")return;let t=e.apiBasePath??rr.apiBasePath;if(X&&(X.userKey!==e.userKey||X.apiBasePath!==t)&&(X.userKey!==e.userKey&&Ye(),Lt()),!X){let r=new Nt({apiBasePath:t});X={client:r,userKey:e.userKey,apiBasePath:t,unsubscribe:r.subscribe(mr)},Xa(),r.start(),mr();return}Pt(X)},Pt=e=>{let t=e.client.getState();if(t.phase==="failed"){e.client.retry();return}t.phase==="complete"&&!t.isRevalidating&&t.completedAt!==null&&Date.now()-t.completedAt>Ja&&e.client.refresh()},Xa=()=>{if(nn||typeof document>"u"||typeof window>"u")return;nn=!0;let e=()=>{X&&Pt(X)};document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&e()}),window.addEventListener("focus",e)},sn=e=>{if(!(typeof window>"u")){if(!X){Et(e);return}if(X.userKey!==e.userKey){Ye(),Lt(),Et(e);return}Pt(X)}},ln=()=>{typeof window>"u"||!X||Pt(X)},Xe=e=>{X?.client.applyExternalUpsert(e)},At=e=>{X?.client.applyExternalRemoval(e)},Ot=()=>{X?.client.retry()},pr=(e={})=>{X?.client.refresh(e)},dn=()=>X?.userKey,Qa=e=>(ur.add(e),()=>ur.delete(e)),Za=()=>X?.client.getState()??an,eo=()=>an,Ue=()=>qa(Qa,Za,eo),ki=()=>{Lt()};typeof import.meta<"u"&&import.meta.hot&&import.meta.hot.dispose(()=>{Lt()});import{createContext as to,useCallback as cn,useContext as ro,useEffect as no,useMemo as ao,useRef as un,useState as oo}from"react";import{jsx as mn,jsxs as pn}from"react/jsx-runtime";var so=8e3,fn=to({notifyError:()=>{}}),bn=()=>ro(fn),gn=({children:e})=>{let{onError:t,labels:r}=_(),[n,a]=oo(null),o=un(t);o.current=t;let s=un(null),l=cn(i=>{let f=o.current;if(f){f(i);return}a(i)},[]),m=cn(()=>{s.current!==null&&(clearTimeout(s.current),s.current=null),a(null)},[]);no(()=>{if(n)return s.current=setTimeout(()=>a(null),so),()=>{s.current!==null&&(clearTimeout(s.current),s.current=null)}},[n]);let u=ao(()=>({notifyError:l}),[l]);return pn(fn.Provider,{value:u,children:[e,n&&pn("div",{role:"alert","data-testid":"daily-report-error-banner",className:"fade-in slide-in-from-bottom-2 fixed inset-x-0 bottom-4 z-[100] mx-auto flex w-fit max-w-[92vw] animate-in items-center gap-3 rounded-lg border border-red-300 bg-red-600 px-4 py-2.5 text-sm text-white shadow-lg duration-200 dark:border-red-500/60 dark:bg-red-700",children:[mn("span",{className:"font-medium",children:n.message}),mn("button",{type:"button","aria-label":r.close,onClick:m,className:"shrink-0 rounded px-1.5 py-0.5 font-bold text-white/90 transition-colors hover:bg-red-700 hover:text-white dark:hover:bg-red-800",children:"\u2715"})]})]})};import{jsx as uo}from"react/jsx-runtime";var we=_e(1,"daily-report-action-context"),co=Object.freeze([]),br=globalThis.__DailyReportActionContext??io(null);globalThis.__DailyReportActionContext=br;var ve=()=>{let e=lo(br);if(!e)throw new Error("useDailyReportActionContext must be used within a DailyReportActionProvider");return e},Qe=(e,t)=>{if(!e)return t;if(e.displayName?.trim())return e.displayName;if(e.name){let r=`${e.name.familyName??""} ${e.name.givenName??""}`.trim();if(r)return r}return e.emails?.[0]?.value??t},yn=({children:e,user:t,initialItems:r=co,userId:n})=>{let{apiBasePath:a,draftLabelName:o,labels:s}=_(),{notifyError:l}=bn(),m=de(l);m.current=l;let u=de(new Map),i=de(new Map),f=de(new Map),x=de(new Map),d=de(new Map),[L,D]=Mt(0),[N,C]=Mt(r),[S,P]=Mt(!1),V=de(!1),F=de(new Map),B=de(new Set),I=de(new Set),k=de(new Set),A=Ue(),O=de(!1);O.current=A.phase==="complete"&&!A.isRevalidating;let K=Ie(()=>dn()===(n??null),[n]),ue=Ie(async()=>{we.info("[DailyReportActionProvider] Refetching data without page reload..."),pr(),D(b=>b+1),M.listeners.forEach(b=>{b(-1)})},[]),De=Ie(async()=>{we.info("[DailyReportActionProvider] Clearing client & server/DB cache and refetching data without page reload..."),Ye(),I.current.clear();try{sessionStorage.clear()}catch{}try{let b=new FormData;b.append("intent","clearCache");let c=await fetch(`${a}/action`,{method:"POST",body:b});if(!c.ok){let v=await c.json().catch(()=>null);we.warn("[DailyReportActionProvider] Failed to clear server-side cache:",c.status,v)}}catch(b){we.warn("[DailyReportActionProvider] Failed to clear server-side cache:",b)}K()&&(pr({forceRefresh:!0}),D(b=>b+1),M.listeners.forEach(b=>{b(-1)}))},[a,K]),ae=de(new Map),ge=de(()=>{}),te=Ie((b,c)=>{let v=ae.current,g=v.get(b);if(g){g.messages.push(c);return}let R={messages:[c],unsubscribe:()=>{},timer:setTimeout(()=>{let w=v.get(b);w&&(w.unsubscribe(),v.delete(b),we.warn(`[SSE Queue] Expired: reportHubId=${b}, dropped=${w.messages.length} messages`))},3e4)};R.unsubscribe=Xr(b,()=>{let w=v.get(b);if(w&&ye(b,{ignoreExpiry:!0})){w.unsubscribe(),clearTimeout(w.timer),v.delete(b),we.info(`[SSE Queue] Replaying ${w.messages.length} messages for reportHubId=${b}`);for(let E of w.messages)ge.current(E)}}),v.set(b,R)},[]),me=b=>{k.current.add(b),setTimeout(()=>{k.current.delete(b)},3e4)},J=Ie(b=>!!b&&k.current.has(b),[]),se=Ie((b,c)=>{c!==void 0&&Xe({reportHubId:b,businessDate:c??null}),C(v=>{let g=v.find(w=>w.reportHubId===b),R=c??g?.businessDate??null;return ar(v,{reportHubId:b,businessDate:R,sourceType:g?.sourceType})})},[]),Ce=()=>{n&&(V.current=!0,P(b=>!b))};fr(()=>{if(!n)return;let b=setTimeout(()=>{V.current||P(!0)},Vr);return()=>clearTimeout(b)},[n]);let pe=Ie(b=>{K()&&(I.current.add(b),At(b),C(c=>c.filter(v=>v.reportHubId!==b)))},[K]),[T,U]=Mt(r);if(r!==T){U(r);let b=new Map;for(let g of r)I.current.has(g.reportHubId)||b.set(g.reportHubId,g);let c=O.current;for(let g of N)b.has(g.reportHubId)||I.current.has(g.reportHubId)||c&&g.reportHubId>0||b.set(g.reportHubId,g);let v=Array.from(b.values());Ur(v)||v.sort(pt),C(v)}fr(()=>{if(O.current){let b=new Set(r.map(c=>c.reportHubId));for(let c of I.current)b.has(c)||I.current.delete(c)}},[r]);let G=Ie(b=>{if(K()&&!J(b.clientTempId))switch(b.type){case"comment-add":{let{comment:c,reportHubId:v}=b,g=ye(v,{ignoreExpiry:!0});if(g){if(g.postedComments.some(q=>q.id===c.id))return;let R=!1,w=u.current.get(v);if(w){for(let[q,be]of w.entries())if(be===c.content){w.delete(q),d.current.set(q,c.id),R=!0;break}}let E={...c,userName:c.userName||(R?Qe(t,s.unknownUser):s.unknownUser),createdAt:c.createdAt||new Date().toISOString(),isMine:R},W={...g,postedComments:[...g.postedComments,E].sort((q,be)=>new Date(q.createdAt||0).getTime()-new Date(be.createdAt||0).getTime())};Ae(v,W),Ge(v),qe(v),D(q=>q+1)}else te(v,b);break}case"comment-delete":{let{commentId:c,reportHubId:v}=b,g=ye(v,{ignoreExpiry:!0});if(g){let R={...g,postedComments:g.postedComments.filter(w=>w.id!==c)};Ae(v,R),Ge(v),qe(v),D(w=>w+1)}else te(v,b);break}case"status-update":{let{statusType:c,value:v,reportHubId:g}=b,R=ye(g,{ignoreExpiry:!0});if(c==="star")if(f.current.get(g)===v&&f.current.delete(g),R){let w={...R,isStarred:v};Ae(g,w),D(E=>E+1)}else te(g,b);else if(c==="read")if(x.current.get(g)===v&&x.current.delete(g),R){let w={...R,isRead:v};Ae(g,w),D(E=>E+1)}else te(g,b);break}case"report-delete":{let{reportHubId:c}=b;B.current.delete(c),I.current.add(c),At(c);let v=ae.current.get(c);v&&(v.unsubscribe(),clearTimeout(v.timer),ae.current.delete(c));let g=ye(c,{ignoreExpiry:!0});g?.date&&(Tt(c,g.date),D(R=>R+1)),C(R=>R.filter(w=>w.reportHubId!==c));break}case"report-create":case"report-update":case"report-publish":{let{report:c}=b;Qr(c),(b.type==="report-create"||b.type==="report-publish")&&(B.current.add(c.reportHubId),se(c.reportHubId,c.date)),D(v=>v+1);break}}},[J,K,se,t,te,s.unknownUser]);ge.current=G,fr(()=>()=>{for(let b of ae.current.values())b.unsubscribe(),clearTimeout(b.timer);ae.current.clear()},[]),rn({isSseEnabled:S,onMessage:G});let z=async(b,c,v,g,R,w)=>{w?.skipLock||Ge(b),R.onOptimistic?.();let E=g.clientTempId||crypto.randomUUID();me(E);let W=new FormData;W.append("intent",c),W.append("reportHubId",String(b)),W.append("businessDate",v),W.append("operationTimestamp",String(Date.now())),W.append("clientTempId",E);for(let[q,be]of Object.entries(g))q!=="clientTempId"&&W.append(q,be);try{let q=await fetch(`${a}/action`,{method:"POST",body:W,headers:{Accept:"application/json"}});if(!q.ok){let Rr=new Error(`Failed to ${c}`);throw Object.assign(Rr,{status:q.status}),Rr}let be=await q.json();if(be.status!=="OK"||c!=="create"&&String(be.reportHubId)!==String(b))throw new Error(`Invalid response for ${c}`);if(typeof be.clientTempId!="string"||be.clientTempId!==E)throw new Error(`Invalid clientTempId for ${c}`);if(!K())throw we.warn(`[executeAction] ${c} resolved after a user switch; discarding continuation`),new Error(`Stale continuation for ${c}`);return await R.onSuccess?.(be)}catch(q){throw we.error(`${c} failed:`,q),K()&&(R.onFailure?.(),m.current({operation:c,message:s.operationFailed(c),cause:q})),q}finally{w?.keepLock||w?.skipLock||qe(b)}},H=async(b,c,v)=>{let g=Number(b),R=-1*Date.now(),w=z(g,"addComment",v,{content:c,clientTempId:String(R)},{onOptimistic:()=>{u.current.has(g)||u.current.set(g,new Map),u.current.get(g)?.set(R,c),D(E=>E+1)},onSuccess:E=>{if(!E.newComment)throw new Error("No new comment returned");let W=E.newComment.id;d.current.set(R,W),u.current.get(g)?.delete(R);let q=ye(g,{ignoreExpiry:!0});return q&&!q.postedComments.some(be=>be.id===W)&&he(g,{postedComments:[...q.postedComments,{...E.newComment,id:W,isMine:!0,userName:Qe(t,s.unknownUser)}],updatedAt:E.updatedAt}),W},onFailure:()=>{u.current.get(g)?.delete(R)}},{skipLock:!0}).finally(()=>F.current.delete(R));F.current.set(R,w),await w},$=async(b,c,v)=>{let g=Number(b);i.current.has(g)||i.current.set(g,new Set),i.current.get(g)?.add(c),D(w=>w+1);let R=c;if(c<0){let w=d.current.get(c);if(w!==void 0)R=w;else{let E=F.current.get(c);if(!E)return;try{R=await E}catch{return}}}await z(g,"deleteComment",v,{commentId:String(R)},{onSuccess:w=>{let E=typeof w.deletedCommentId=="string"?Number(w.deletedCommentId):R,W=ye(g,{ignoreExpiry:!0});W&&(he(g,{postedComments:W.postedComments.filter(q=>q.id!==E),updatedAt:w.updatedAt}),Jr(E)),i.current.get(g)?.delete(c)},onFailure:()=>{i.current.get(g)?.delete(c)}},{skipLock:!0})},re=async(b,c,v)=>{let g=Number(b);await z(g,"toggleStar",v,{isStarred:String(c)},{onOptimistic:()=>{he(g,{isStarred:c}),f.current.set(g,c),D(R=>R+1)},onSuccess:R=>{R.updatedStatus&&typeof R.updatedStatus.isStarred=="boolean"&&ye(g,{ignoreExpiry:!0})&&(he(g,{isStarred:R.updatedStatus.isStarred,updatedAt:R.updatedAt}),D(E=>E+1)),f.current.delete(g)},onFailure:()=>{he(g,{isStarred:!c}),f.current.delete(g)}},{skipLock:!0})},Ne=async(b,c,v)=>{let g=Number(b);await z(g,"toggleRead",v,{isRead:String(c)},{onOptimistic:()=>{he(g,{isRead:c}),x.current.set(g,c),D(R=>R+1)},onSuccess:R=>{R.updatedStatus&&typeof R.updatedStatus.isRead=="boolean"&&ye(g,{ignoreExpiry:!0})&&(he(g,{isRead:R.updatedStatus.isRead,updatedAt:R.updatedAt}),D(E=>E+1)),x.current.delete(g)},onFailure:()=>{he(g,{isRead:!c}),x.current.delete(g)}},{skipLock:!0})},je=de(Ne);je.current=Ne;let Vn=Ie((b,c,v)=>je.current(b,c,v),[]),jn=async b=>{let c=-1*Date.now(),v=new Date().toISOString(),g={reportHubId:c,date:b,createdAt:v,author:Qe(t,s.unknownUser),userId:t?.id??"unknown",sourceType:"Internal",employeeName:Qe(t,s.unknownUser),updatedBy:Qe(t,s.unknownUser),updatedAt:v,category:null,creationCategory:null,visitTimeFrom:null,visitTimeTo:null,customerName:null,interviewers:[],subject:"",content:"",externalComments:[],isRead:!0,isStarred:!1,labels:[{id:0,name:o,color:"#9ca3af"}],postedComments:[],attachments:[]};qr(g,Date.now()+3e5,!1),C(R=>[{reportHubId:c,businessDate:b},...R]);try{let R=await z(0,"create",b,{clientTempId:String(c)},{onSuccess:E=>E});if(R.clientTempId&&R.clientTempId!==String(c))throw we.warn(`[createReport] ID mismatch. req=${c}, res=${R.clientTempId}`),new Error("Optimistic ID mismatch");let w=Number(R.reportHubId);return Xe({reportHubId:w,businessDate:b}),Ge(w),R.report&&(Ae(w,R.report),D(E=>E+1)),C(E=>E.some(W=>W.reportHubId===w)?E.filter(W=>W.reportHubId!==c):E.map(W=>W.reportHubId===c?{...W,reportHubId:w}:W)),setTimeout(()=>qe(w),1e3),w}catch(R){throw we.error("[createReport] Failed or mismatched",R),C(w=>w.filter(E=>E.reportHubId!==c)),R}},zn=async(b,c,v)=>{let g=Number(b);await z(g,"update",v,{...c.title&&{title:c.title},...c.content&&{content:c.content}},{onSuccess:()=>{let R=ye(g,{ignoreExpiry:!0});R&&(he(g,{subject:c.title??R.subject,content:c.content??R.content}),D(w=>w+1))}})},Kn=async(b,c)=>{let v=Number(b),g=ye(v,{ignoreExpiry:!0}),R=g?.labels||[];await z(v,"publish",c,{},{onOptimistic:()=>{if(g){let w=g.labels.filter(E=>E.name!==o);he(v,{labels:w}),D(E=>E+1)}},onSuccess:w=>{w.report&&(Ae(v,w.report),D(E=>E+1)),Xe({reportHubId:v,businessDate:c})},onFailure:()=>{he(v,{labels:R}),D(w=>w+1)}},{skipLock:!0})},Wn=async(b,c)=>{let v=Number(b),g=N.find(R=>R.reportHubId===v);I.current.add(v),At(v),C(R=>R.filter(w=>w.reportHubId!==v));try{await z(v,"delete",c,{},{onSuccess:R=>{Tt(v,c)}})}catch(R){if(R.status===404){Tt(v,c);return}if(!K())return;I.current.delete(v),Xe({reportHubId:v,businessDate:g?.businessDate??c}),g&&C(E=>E.some(W=>W.reportHubId===v)?E:ar(E,g))}};return uo(br.Provider,{value:{user:t,pendingAddCommentIds:u,pendingDeleteCommentIds:i,pendingStarUpdates:f,pendingReadUpdates:x,resolvedIdMap:d,version:L,items:N,isSseEnabled:S,toggleSse:Ce,addComment:H,deleteComment:$,toggleStar:re,toggleRead:Vn,createReport:jn,updateReport:zn,publishReport:Kn,deleteReport:Wn,removeStaleItem:pe,refetchData:ue,clearCacheAndRefetch:De},children:e})};import{useCallback as hn,useMemo as mo,useRef as po,useState as fo}from"react";var Ht=(e,t,r)=>{let{pendingAddCommentIds:n,pendingDeleteCommentIds:a,resolvedIdMap:o,version:s,addComment:l,deleteComment:m}=ve(),{labels:u}=_(),i=u.unknownUser,[f,x]=fo(null),d=hn(C=>e&&m(e.reportHubId,C,e.date??""),[e,m]),L=hn(C=>e&&t?l(e.reportHubId,C,e.date??""):Promise.resolve(),[e,t,l]),D=po([]);return{uiComments:mo(()=>{if(!e)return[];let C=Or(e.externalComments,e.postedComments,r,i),S=a.current.get(e.reportHubId);S?.size&&(C=C.filter(V=>!S.has(V.id)));let P=n.current.get(e.reportHubId);if(P?.size&&t){let V=new Set(C.map(B=>B.id)),F=t.displayName?.trim()||(t.name?`${t.name.familyName??""} ${t.name.givenName??""}`.trim():"")||t.emails?.[0]?.value||i;for(let[B,I]of P){if(S?.has(B)||V.has(B))continue;let k=o.current.get(B);k&&V.has(k)||C.some(A=>A.isMine&&A.content===I&&typeof A.id=="number"&&A.id>0)||C.push({id:B,authorName:F,content:I,createdAt:new Date().toISOString(),isMine:!0,isLegacy:!1})}}return JSON.stringify(C)===JSON.stringify(D.current)?D.current:(D.current=C,C)},[e,t,r,i,a,n,o,s]),handleAddComment:L,handleDeleteComment:d,pendingDeleteId:f,setPendingDeleteId:x,resolvedIdMap:o.current}};import{VIRTUAL_SCROLL_LABEL_KEYS as bo}from"@aiquants/virtualscroll";import{useRef as go}from"react";var _t=()=>{let{locale:e,labels:t}=_(),r=Tr(t),n=go(null),a=n.current;return a!==null&&bo.every(o=>a[o]===r[o])?{locale:e,labels:a}:(n.current=r,{locale:e,labels:r})};import{useCallback as yo,useEffect as ho,useState as vo}from"react";var Ft=(e,t)=>{let{enableMutationObserver:r=!1,bottomGap:n=4,minFallbackHeight:a=240}=t??{},[o,s]=vo(600),l=yo(()=>{if(typeof window>"u")return;let m=e.current;if(!m||m.offsetParent===null&&window.getComputedStyle(m).position!=="fixed")return;let u=O=>Number.parseFloat(O)||0,{top:i}=m.getBoundingClientRect(),f=m.parentElement?.getBoundingClientRect(),x=window.getComputedStyle(document.documentElement),d=u(x.getPropertyValue("--footer-height")),L=u(x.getPropertyValue("--header-height")),D=u(x.getPropertyValue("--scrollbar-height")),N=window.getComputedStyle(m),C=u(N.marginBottom),S=u(N.paddingBottom),P=window.innerHeight-d-D-n,V=f?Math.min(f.bottom,P):P,F=f?Math.max(f.top,L):L,B=Math.max(i,F),I=V-B-C-S,k=Number.isFinite(I)?Math.floor(I):0,A=k>0?k:a;A>0&&Number.isFinite(A)&&s(O=>Math.abs(O-A)>1?A:O)},[n,e,a]);return ho(()=>{if(typeof window>"u")return;let m=null,u=null,i=null,f=null,x=()=>{m!==null&&window.cancelAnimationFrame(m),m=window.requestAnimationFrame(()=>{l()})};x(),u=window.setTimeout(()=>{x()},150);let d=e.current;return typeof ResizeObserver<"u"&&d&&(i=new ResizeObserver(()=>{x()}),i.observe(d),d.parentElement&&i.observe(d.parentElement)),r&&typeof MutationObserver<"u"&&(f=new MutationObserver(()=>{x()}),f.observe(document.documentElement,{attributes:!0,attributeFilter:["style"]})),window.addEventListener("resize",x),()=>{m!==null&&window.cancelAnimationFrame(m),u!==null&&window.clearTimeout(u),window.removeEventListener("resize",x),i?.disconnect(),f?.disconnect()}},[r,l,e]),{viewportHeight:o,updateViewportHeight:l}};import{useEffect as To,useRef as ko,useState as gr}from"react";import{Slot as Ro}from"@radix-ui/react-slot";import{cva as xo}from"class-variance-authority";import*as vn from"react";import{jsx as wo}from"react/jsx-runtime";var Do=xo("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),Te=vn.forwardRef(({className:e,variant:t,size:r,asChild:n=!1,...a},o)=>wo(n?Ro:"button",{className:Y(Do({variant:t,size:r,className:e})),ref:o,...a}));Te.displayName="Button";import{jsx as So}from"react/jsx-runtime";function Rn({className:e,type:t,...r}){return So("input",{type:t,"data-slot":"input",className:Y("flex h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:font-medium file:text-foreground file:text-sm placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30","focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50","aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",e),...r})}import*as xn from"@radix-ui/react-label";import{jsx as Co}from"react/jsx-runtime";function Ze({className:e,...t}){return Co(xn.Root,{"data-slot":"label",className:Y("flex select-none items-center gap-2 font-medium text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50",e),...t})}import{jsx as Io}from"react/jsx-runtime";function Dn({className:e,...t}){return Io("textarea",{"data-slot":"textarea",className:Y("flex min-h-15 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30","aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",e),...t})}import{jsx as Oe,jsxs as Bt}from"react/jsx-runtime";var Ut=({report:e,onCancel:t,onPublishSuccess:r})=>{let{updateReport:n,publishReport:a}=ve(),{labels:o}=_(),[s,l]=gr(e.subject??""),[m,u]=gr(e.content??""),[i,f]=gr(!1),x=ko(e.reportHubId);To(()=>{e.reportHubId!==x.current&&(l(e.subject??""),u(e.content??""),x.current=e.reportHubId)},[e.reportHubId,e.subject,e.content]);let d=async()=>{f(!0);try{await n(e.reportHubId,{title:s,content:m},e.date??"")}catch{}finally{f(!1)}},L=async()=>{f(!0);try{await n(e.reportHubId,{title:s,content:m},e.date??""),await a(e.reportHubId,e.date??""),r?.()}catch{}finally{f(!1)}};return Bt("div",{className:"space-y-6 p-1",children:[Bt("div",{className:"space-y-2",children:[Oe(Ze,{htmlFor:`report-title-${e.reportHubId}`,children:o.formTitle}),Oe(Rn,{id:`report-title-${e.reportHubId}`,value:s,onChange:D=>l(D.target.value),placeholder:o.formTitlePlaceholder,disabled:i})]}),Bt("div",{className:"space-y-2",children:[Oe(Ze,{htmlFor:`report-content-${e.reportHubId}`,children:o.formContent}),Oe(Dn,{id:`report-content-${e.reportHubId}`,value:m,onChange:D=>u(D.target.value),placeholder:o.formContentPlaceholder,className:"min-h-50",disabled:i})]}),Bt("div",{className:"flex justify-end gap-2",children:[t&&Oe(Te,{variant:"outline",onClick:t,disabled:i,children:o.formCancel}),Oe(Te,{variant:"secondary",onClick:d,disabled:i,children:o.formSave}),Oe(Te,{onClick:L,disabled:i,children:o.formPublish})]})]})};import{jsx as No}from"react/jsx-runtime";var et=({className:e})=>No("span",{className:Y("text-blue-500",e),children:"\u25CF"});import{Fragment as Vo,jsx as h,jsxs as j}from"react/jsx-runtime";var Ao=(e,t,r)=>{ke(()=>{let n=e.current;if(!n)return;let a=new ResizeObserver(()=>{r(t,n.offsetHeight)});return a.observe(n),()=>a.disconnect()},[t,r,e])},Oo=({itemId:e,index:t,setSize:r,onHeightMeasured:n,children:a})=>{let o=ce(null);return Ao(o,e,n),h("div",{ref:o,className:"px-2 pb-3","data-daily-report-button":e,role:"listitem","aria-posinset":t+1,"aria-setsize":r,children:a})},Mo=(e,t)=>e.affiliation?.trim()?t.interviewerWithAffiliation(e.name??"",e.affiliation):e.name??"",Sn=({dailyReportItems:e,userId:t,selectedItemId:r,onSelectItem:n,scrollRestoreRef:a})=>{let[{initialScrollAnchor:o,restored:s}]=tt(()=>{let T=a?.current;if(!T||T.anchorReportHubId!==(r??null))return{initialScrollAnchor:void 0,restored:!1};if(!T.topItem)return{initialScrollAnchor:void 0,restored:!0};let U=e.findIndex(G=>G.reportHubId===T.topItem?.reportHubId);return U!==-1?{initialScrollAnchor:{index:U,offsetPx:T.topItem.offsetPx},restored:!0}:{initialScrollAnchor:{index:T.topItem.index,offsetPx:0},restored:!0}}),l=ce(s),m=ce(r??null),u=ce(a?.current.measuredHeights??new Map),i=ce(null),f=ce(null),{labels:x}=_(),d=_t(),{viewportHeight:L,updateViewportHeight:D}=Ft(i,{enableMutationObserver:!0}),N=Zr(),[C,S]=tt(""),[P,V]=tt(!1),F=ce(null),B=ce(null),I=ce(e);I.current=e;let k=ce(null);ke(()=>{if(r!=null&&f.current){let T=e.findIndex(U=>U.reportHubId===r);if(T!==-1){if(k.current?.id===r&&k.current?.index===T)return;if(l.current&&(l.current=!1,(r??null)===m.current)){k.current={id:r,index:T};return}f.current.scrollToIndex(T,{align:"top"}),k.current={id:r,index:T}}}else k.current=null},[r,e]),ke(()=>{let T=a?.current;T&&(T.anchorReportHubId=r??null)},[r,a]);let A=ce(n);A.current=n,ke(()=>{if(f.current){let T=document.querySelector('[data-testid="daily-report-detail-list"]');if(T){let U=f.current,G=Object.assign({},U,{findReportIndex:z=>I.current.findIndex(H=>H.reportHubId===z),getReportItem:z=>I.current[z],selectItem:z=>A.current?.(z)});T.__virtualScroll=G}}});let O=e.length,K=Se(T=>T>=O?vt:e[T],[e,O]),ue=Se((T,U)=>{if(O===0)return;let G=Math.max(0,T),z=Math.min(O-1,U);if(G>z)return;let H=new Set;for(let $=G;$<=z;$++){let re=K($);if(re.businessDate&&H.add(re.businessDate),H.size>=jr)break}H.forEach($=>{N($)})},[K,O,N]),De=Se(({renderingStartIndex:T,renderingEndIndex:U,visibleStartIndex:G})=>{if(O===0)return;let z=K(G);z?.businessDate&&S(le(z.businessDate)),ue(T,U),ue(U+1,U+ht),ue(T-ht,T-1)},[K,O,ue]),ae=ce(null),ge=Se(()=>{f.current&&(ae.current=f.current);let T=a?.current,U=f.current??ae.current;if(T&&U){let z=U.getScrollAnchor(),H=z?I.current[z.index]:void 0;z&&H&&(T.topItem={reportHubId:H.reportHubId,index:z.index,offsetPx:z.offsetPx})}let G=i.current;G&&(G.dataset.scrolling!=="true"&&(G.dataset.scrolling="true"),B.current&&clearTimeout(B.current),B.current=setTimeout(()=>{G&&delete G.dataset.scrolling,B.current=null},150))},[a]),te=Se(T=>h(st,{...T,label:C,isWheelScrollActive:P}),[C,P]);ke(()=>{let T=i.current;if(!T)return;let U=()=>{V(!0),F.current&&clearTimeout(F.current),F.current=window.setTimeout(()=>{V(!1),F.current=null},Rt)};return T.addEventListener("wheel",U,{passive:!0}),()=>{T.removeEventListener("wheel",U),F.current&&clearTimeout(F.current)}},[]);let me=Se((T,U)=>{if(u.current.get(T)!==U&&(u.current.set(T,U),f.current)){let G=I.current.findIndex(z=>z.reportHubId===T);G!==-1&&f.current.updateItemSize(G,U)}},[]),J=Se(T=>{let U=K(T);return u.current.get(U.reportHubId)||350},[K]),se=Se(T=>K(T).reportHubId,[K]);ke(()=>{O>=0&&D()},[O,D]),ke(()=>{O!==0&&ue(0,Math.min(O-1,ht))},[O,ue]);let Ce=Se(T=>{let U=I.current.findIndex(G=>G.reportHubId===T);U>=0&&setTimeout(()=>f.current?.scrollToIndex(U,{align:"bottom"}),300)},[]),pe=Se((T,U)=>h(_o,{item:T,index:U,setSize:O,onHeightMeasured:me,onCommentAdded:Ce,userId:t},T.reportHubId),[me,Ce,t,O]);return j(Vo,{children:[h("div",{ref:i,className:"flex min-h-0 flex-1 flex-col",children:h(Eo,{ref:f,itemCount:O,getItem:K,getItemKey:se,getItemHeight:J,viewportSize:L,initialScrollAnchor:o,overscanCount:xt,scrollBarOptions:{width:Dt,tapScrollCircleOptions:wt,renderThumbOverlay:te},behaviorOptions:{pointerDragInputs:St,wheelSpeedMultiplier:gt,inertiaOptions:yt,enableKeyboardNavigation:!1},onRangeChange:De,onScroll:ge,testId:"daily-report-detail-list",className:"relative w-full",locale:d.locale,labels:d.labels,contentProps:{role:"list","aria-label":x.title},children:pe})}),O===0&&h("div",{className:"py-8 text-center",children:h("p",{className:"text-slate-500",children:x.listEmpty})})]})},Ho=()=>j("div",{className:"rounded-2xl border border-slate-200 bg-white p-4 shadow-sm dark:border-slate-700 dark:bg-slate-900/70",children:[j("div",{className:"mb-4 flex flex-wrap gap-2",children:[h("div",{className:"h-6 w-20 rounded-full bg-slate-200"}),h("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),h("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),h("div",{className:"h-6 w-28 rounded-full bg-slate-200"})]}),j("div",{className:"mb-3 grid gap-3 md:grid-cols-[minmax(0,1fr)_220px]",children:[j("div",{className:"space-y-3",children:[h("div",{className:"h-5 w-40 rounded bg-slate-200"}),h("div",{className:"h-5 w-56 rounded bg-slate-200"}),h("div",{className:"h-24 rounded-lg bg-slate-200"})]}),j("div",{className:"rounded-xl bg-slate-100 p-3",children:[h("div",{className:"mb-2 h-4 w-24 rounded bg-slate-200"}),h("div",{className:"mb-2 h-4 w-28 rounded bg-slate-200"}),h("div",{className:"h-4 w-32 rounded bg-slate-200"})]})]}),j("div",{className:"space-y-3",children:[h("div",{className:"h-4 w-24 rounded bg-slate-200"}),j("div",{className:"flex flex-wrap gap-2",children:[h("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),h("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),h("div",{className:"h-6 w-16 rounded-full bg-slate-200"})]}),j("div",{className:"space-y-2",children:[h("div",{className:"h-16 rounded-lg bg-slate-200"}),h("div",{className:"h-16 rounded-lg bg-slate-200"})]})]})]}),_o=({item:e,index:t,setSize:r,onHeightMeasured:n,onCommentAdded:a,userId:o})=>{let{report:s,error:l,isLoading:m,isRefetching:u}=Be(e.reportHubId,e.businessDate),{removeStaleItem:i}=ve(),{draftLabelName:f}=_(),[x,d]=tt(!1),[L,D]=tt(!1),N=ce(!1),C=ce(!1);u&&(C.current=!0),ke(()=>{!(s||m||u||l)&&C.current&&e.reportHubId>0&&i(e.reportHubId)},[s,m,u,l,e.reportHubId,i]);let S=s?.labels.some(V=>V.name===f),P=o&&s?.userId===o;return ke(()=>{s&&P&&S&&!x&&!L?(d(!0),N.current=!0):s&&!S&&x&&N.current&&(d(!1),N.current=!1)},[s,P,S,x,L]),h(Oo,{itemId:e.reportHubId,index:t,setSize:r,onHeightMeasured:n,children:l?h($o,{itemId:e.reportHubId}):s?x?h(Ut,{report:s,onCancel:()=>{d(!1),D(!0)},onPublishSuccess:()=>{d(!1)}}):h(Uo,{item:e,report:s,onCommentAdded:a,userId:o,onDoubleClick:P?()=>d(!0):void 0}):h(Ho,{})})},Fo=({report:e,isRead:t,isStarred:r,isMine:n,onToggleRead:a,onToggleStar:o,onDelete:s,itemSourceType:l,visitTimeDisplay:m,categoryLabel:u,labels:i})=>{let{sourceTypeConfigs:f}=_();return j("div",{className:"flex flex-wrap items-center gap-2 font-medium text-slate-600 text-xs",children:[h(it,{count:e.attachments.length,label:i.attachments}),(()=>{let x=l??e?.sourceType,d=Me(x,f);return d?h("span",{className:Y("inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",d.badgeClassName),children:d.label}):null})(),h("button",{type:"button",onClick:o,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 focus:outline-none dark:hover:bg-slate-700",title:r?i.starRemove:i.starAdd,"data-detail-star-button":e.reportHubId,children:r?h(wn,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):h(wn,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),h("button",{type:"button",onClick:a,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 focus:outline-none dark:hover:bg-slate-700",title:t?i.markUnread:i.markRead,"data-detail-read-button":e.reportHubId,children:t?h(Lo,{className:"h-3.5 w-3.5 text-blue-500"}):h(et,{className:"text-xs"})}),n&&h("button",{type:"button",onClick:s,"data-detail-delete-button":e.reportHubId,className:"text-lg leading-none transition-transform focus:outline-none active:scale-125",title:i.deleteReport,children:h(Po,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})}),j("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-blue-50 px-3 py-1 font-semibold text-blue-700 text-xs",children:[h("span",{className:"text-[10px] text-blue-500 uppercase tracking-wide",children:i.id}),e.reportHubId]}),j("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[h("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:i.businessDate}),le(e.date)]}),j("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[h("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:i.author}),ie(e.employeeName)]}),j("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[h("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:i.visitTime}),m||"-"]}),j("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[h("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:i.updatedAt}),le(e.updatedAt)]}),u&&j("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-amber-100 px-3 py-1 text-amber-700",children:[h("span",{className:"text-[10px] text-amber-500 uppercase tracking-wide",children:i.category}),u]})]})},Bo=({report:e,visitTimeDisplay:t,categoryLabel:r,labels:n})=>j("div",{className:"flex flex-col gap-3 rounded-xl bg-slate-100 p-4 text-slate-600 text-xs dark:bg-slate-800/60 dark:text-slate-300",children:[j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.author}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:ie(e.author)})]}),j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.createdAt}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:le(e.createdAt)})]}),j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.updatedBy}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:ie(e.updatedBy)})]}),j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.updatedAt}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:le(e.updatedAt)})]}),j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.businessDate}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:le(e.date)})]}),t&&j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.visitTime}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:t})]}),r&&j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.categoryInfo}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:r})]})]}),Uo=({item:e,report:t,onCommentAdded:r,userId:n,onDoubleClick:a})=>{let o=ce(null),{toggleStar:s,toggleRead:l,pendingStarUpdates:m,pendingReadUpdates:u,deleteReport:i,user:f}=ve(),{uiComments:x,handleAddComment:d,handleDeleteComment:L,pendingDeleteId:D,setPendingDeleteId:N,resolvedIdMap:C}=Ht(t,f,n),{labels:S,sourceTypeConfigs:P}=_(),V=e.sourceType??t?.sourceType,F=Me(V,P),B=V?V.toLowerCase()!=="internal":!1,I=F?.allowComment??!B,k=async J=>{await d(J),r?.(e.reportHubId)},A=m.current.has(t.reportHubId)?m.current.get(t.reportHubId)??!1:t.isStarred,O=u.current.has(t.reportHubId)?u.current.get(t.reportHubId)??!1:t.isRead,K=!!(n&&t.userId===n),ue=async()=>{try{await l(t.reportHubId,!O,t.date??"")}catch{}},De=async()=>{try{await s(t.reportHubId,!A,t.date??"")}catch{}},ae=async()=>{confirm(S.confirmDelete)&&await i(t.reportHubId,t.date??"")},ge=yr(()=>t.content?t.content.replace(/<br\s*\/??\s*>/gi,`
3
- `).trim():"",[t.content]),te=yr(()=>{let J=t.visitTimeFrom?.trim(),se=t.visitTimeTo?.trim();return J&&se?`${J} - ${se}`:J||se||""},[t.visitTimeFrom,t.visitTimeTo]),me=yr(()=>{let J=[];return t.category?.trim()&&J.push(`${S.category}: ${t.category}`),t.creationCategory?.trim()&&J.push(`${S.creationCategory}: ${t.creationCategory}`),J.join(" / ")},[t.category,t.creationCategory,S.category,S.creationCategory]);return h("div",{onDoubleClick:a,className:`flex h-full w-full flex-col rounded-2xl border bg-white p-4 shadow-sm transition-all duration-200 hover:-translate-y-0.5 hover:border-blue-300 hover:shadow-lg dark:border-slate-700 dark:bg-slate-900/70 ${O?"":"border-l-4 border-l-blue-500"}`,children:j("div",{className:"flex flex-col gap-4",children:[h(Fo,{report:t,itemSourceType:e.sourceType,isRead:O,isStarred:A,isMine:K,onToggleRead:ue,onToggleStar:De,onDelete:ae,visitTimeDisplay:te,categoryLabel:me,labels:S}),j("div",{className:"grid gap-4 md:grid-cols-[minmax(0,1fr)_240px]",children:[j("div",{className:"flex flex-col gap-4",children:[j("div",{className:"grid gap-3 sm:grid-cols-2",children:[j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:S.customer}),h("span",{className:"font-semibold text-base text-slate-900 dark:text-slate-100",children:ie(t.customerName)})]}),j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:S.subject}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:ie(t.subject)})]})]}),ge&&j("div",{className:"flex flex-col gap-2",children:[h("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:S.content}),h("div",{className:"whitespace-pre-wrap rounded-xl bg-slate-50 p-3 text-slate-700 text-sm leading-relaxed dark:bg-slate-800/60 dark:text-slate-200",children:ge})]}),t.interviewers.length>0&&j("div",{className:"flex flex-col gap-2",children:[h("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:S.interviewers}),h("ul",{className:"flex flex-wrap gap-2",children:t.interviewers.map(J=>h("li",{className:"rounded-full bg-slate-100 px-3 py-1 text-slate-600 text-xs",children:Mo(J,S)},`${J.name}-${J.affiliation||""}`))})]}),h(dt,{attachments:t.attachments}),x.length>0&&j("div",{className:"flex flex-col gap-2",children:[h("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:S.comments}),h(ut,{comments:x,reportHubId:t.reportHubId,businessDate:t.date??"",onDeleteComment:L,pendingDeleteId:D,onPendingDeleteIdChange:N,resolvedIdMap:C})]}),I&&h("div",{className:"mt-auto",ref:o,children:h(mt,{reportHubId:t.reportHubId,businessDate:t.date??"",onAddComment:k})})]}),h(Bo,{report:t,visitTimeDisplay:te,categoryLabel:me,labels:S})]})]})})},$o=({itemId:e})=>{let{labels:t}=_();return h("div",{className:"rounded-2xl border border-red-200 bg-red-50 p-4 text-red-700 text-sm",children:h("p",{children:t.reportLoadFailed(e)})})};import In from"lucide-react/dist/esm/icons/refresh-cw.js";import{useEffect as jo,useRef as Cn,useState as zo}from"react";var rt=(e,t=250)=>{let[r,n]=zo(e),a=Cn(e),o=Cn(!0);return jo(()=>{if(o.current){o.current=!1,a.current=e,n(e);return}let s=a.current;if(s===e)return;let l=null,m=null,u=i=>{m===null&&(m=i);let f=Math.min(1,Math.max(0,(i-m)/t)),x=1-(1-f)**3,d=Math.round(s+(e-s)*x);a.current=d,n(d),f<1&&(l=requestAnimationFrame(u))};return l=requestAnimationFrame(u),()=>{l!==null&&cancelAnimationFrame(l)}},[e,t]),r};import{jsx as $t,jsxs as Vt}from"react/jsx-runtime";var jt=()=>{let e=Ue(),{labels:t}=_(),r=rt(e.loadedCount),n=rt(e.totalCount??0);if(e.phase==="streaming"){let a=e.totalCount&&e.totalCount>0?Math.min(100,Math.round(e.loadedCount/e.totalCount*100)):null;return Vt("span",{"data-testid":"daily-report-ids-stream-status","data-phase":"streaming",className:"inline-flex items-center gap-1.5 rounded-full bg-blue-100 px-2 py-0.5 font-medium text-blue-800 text-xs tabular-nums dark:bg-blue-900/40 dark:text-blue-300",children:[$t("span",{"aria-hidden":"true",className:"h-1.5 w-1.5 animate-pulse rounded-full bg-blue-500 dark:bg-blue-400"}),a!==null?t.streamProgressRatio(r,n,a):t.streamProgressCount(r)]})}return e.phase==="retrying"?Vt("span",{role:"status","data-testid":"daily-report-ids-stream-status","data-phase":"retrying",className:"inline-flex items-center gap-1.5 rounded-full bg-amber-100 px-2 py-0.5 font-medium text-amber-800 text-xs tabular-nums dark:bg-amber-900/40 dark:text-amber-300",children:[$t(In,{"aria-hidden":"true",className:"h-3 w-3 animate-spin"}),t.streamRetrying(e.loadedCount)]}):e.phase==="failed"?Vt("span",{role:"status","data-testid":"daily-report-ids-stream-status","data-phase":"failed",className:"inline-flex items-center gap-1.5 rounded-full bg-rose-100 px-2 py-0.5 font-medium text-rose-800 text-xs dark:bg-rose-900/40 dark:text-rose-300",children:[t.streamFailed,$t("button",{type:"button","data-testid":"daily-report-ids-stream-retry",onClick:()=>Ot(),className:"rounded bg-rose-200 px-1.5 py-0.5 font-semibold text-rose-900 hover:bg-rose-300 dark:bg-rose-800 dark:text-rose-100 dark:hover:bg-rose-700",children:t.streamRetry})]}):e.isRevalidating?Vt("span",{"data-testid":"daily-report-ids-stream-status","data-phase":"revalidating",className:"inline-flex items-center gap-1 text-slate-400 text-xs dark:text-slate-500",children:[$t(In,{"aria-hidden":"true",className:"h-3 w-3 animate-spin"}),t.streamRevalidating]}):null};import{Panel as Nn,PanelGroup as qo,PanelResizeHandle as Jo}from"@aiquants/resize-panels";import{SwipeCloseGuardContext as Xo,useSwipeGuardState as Qo,useSwipeToDismissOverlay as Zo,useTapClick as Ln,useTransitionDisplay as es}from"@aiquants/swipe-overlay";import{VirtualScroll as ts}from"@aiquants/virtualscroll";import rs from"lucide-react/dist/esm/icons/check.js";import En from"lucide-react/dist/esm/icons/star.js";import ns from"lucide-react/dist/esm/icons/trash-2.js";import{memo as as,useCallback as xe,useEffect as oe,useMemo as Wt,useRef as ee,useState as Ee}from"react";import{useSyncExternalStore as Ko}from"react";var Tn="(max-width: 639px)",Wo=e=>{if(typeof window>"u"||typeof window.matchMedia!="function")return()=>{};let t=window.matchMedia(Tn);return t.addEventListener("change",e),()=>t.removeEventListener("change",e)},Yo=()=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia(Tn).matches:!1,Go=()=>!1,kn=()=>Ko(Wo,Yo,Go);import*as Re from"@radix-ui/react-tabs";import*as zt from"react";import{jsx as hr}from"react/jsx-runtime";var Kt=Re.Root,nt=zt.forwardRef(({className:e,...t},r)=>hr(Re.List,{ref:r,className:Y("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",e),...t}));nt.displayName=Re.List.displayName;var at=zt.forwardRef(({className:e,...t},r)=>hr(Re.Trigger,{ref:r,className:Y("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 font-medium text-sm ring-offset-background transition-all focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-2xs",e),...t}));at.displayName=Re.Trigger.displayName;var $e=zt.forwardRef(({className:e,...t},r)=>hr(Re.Content,{ref:r,className:Y("data-[state=inactive]:hidden","mt-2 ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...t}));$e.displayName=Re.Content.displayName;import{Fragment as ps,jsx as p,jsxs as Q}from"react/jsx-runtime";var os={pointerDragInputs:St,inertiaOptions:yt,wheelSpeedMultiplier:gt,enableKeyboardNavigation:!1},ss={top:bt,bottom:bt},is=(e,t,r,n)=>{let[a,o]=Ee(!1),[s,l]=Ee(!1),m=ee(null),u=ee(null),i=ee(null),f=ee(e),x=ee(!0),d=Wt(()=>t===null?null:r.find(N=>N.reportHubId===t)??null,[r,t]);oe(()=>{if(x.current){x.current=!1,f.current=e;return}let N=!f.current;f.current=e,N&&e&&t!==null?o(!0):!e&&a&&(o(!1),i.current!==null&&(document.body.style.overflow=i.current,i.current=null))},[e,t,a]);let L=e&&a&&d!==null;oe(()=>{if(L)l(!0);else{let N=setTimeout(()=>l(!1),300);return()=>clearTimeout(N)}},[L]),oe(()=>{if(!(typeof window>"u")){if(e&&a&&t!==null&&!m.current){let N=`overlay-${Date.now()}`;window.history.pushState({...window.history.state,dailyReportOverlay:N},"",window.location.href),m.current=N}else!(e&&a)&&m.current&&(m.current=null);return e&&a?(i.current=document.body.style.overflow,document.body.style.overflow="hidden"):i.current!==null&&(document.body.style.overflow=i.current,i.current=null),()=>{i.current!==null&&(document.body.style.overflow=i.current)}}},[e,a,t]),oe(()=>{if(typeof window>"u")return;let N=()=>{m.current&&(u.current=t,m.current=null,o(!1),n(null))};return window.addEventListener("popstate",N),()=>window.removeEventListener("popstate",N)},[t,n]);let D=xe(()=>{e&&(u.current=t,o(!1),n(null),m.current&&typeof window<"u"&&(m.current=null,window.history.back()))},[e,t,n]);return{isMobileDetailOpen:a,setIsMobileDetailOpen:o,isOverlayMounted:s,shouldShowOverlay:L,handleOverlayClose:D,lastClosedItemIdRef:u,selectedItem:d}},ls=(e,t,r,n,a)=>{let o=ee(null),s=ee(void 0);s.current!==e?.reportHubId&&(s.current=e?.reportHubId,o.current=null),oe(()=>{n||(o.current=null)},[n]);let l=xe(async(m=!1)=>{if(!e)return;m||(o.current=e.reportHubId);let u=!e.isRead;try{await a(e.reportHubId,u,e.date??"")}catch{}},[e,a]);return oe(()=>{if(r&&e&&!e.isRead&&!t){if(o.current===e.reportHubId)return;let m=setTimeout(()=>l(!0),500);return()=>clearTimeout(m)}},[e,t,r,l]),{handleToggleRead:l}},Pn=({dailyReportItems:e,autoMarkRead:t=!1,selectedReportHubId:r,onSelectItem:n,userId:a,scrollOffsetRef:o})=>{let[s]=Ee(()=>o?.current??0),l=ee(null),m=ee(null),{labels:u}=_(),i=_t(),{viewportHeight:f,updateViewportHeight:x}=Ft(l),[d,L]=Ee(""),[D,N]=Ee(!1),C=kn(),S=ee(null),[P,V]=Ee(!1);oe(()=>{if(typeof window>"u"||typeof ResizeObserver>"u")return;let H=S.current;if(!H)return;let $=new ResizeObserver(re=>{for(let Ne of re)if(Ne.target===H){let je=Ne.contentRect.width;V(je>0&&je<460)}});return $.observe(H),()=>$.disconnect()},[]);let F=C||P,B=ee(null),I=e.length,k=ee(null),{isMobileDetailOpen:A,setIsMobileDetailOpen:O,isOverlayMounted:K,shouldShowOverlay:ue,handleOverlayClose:De,lastClosedItemIdRef:ae,selectedItem:ge}=is(F,r,e,n),te=Wt(()=>Number.isFinite(f)&&f>0?{height:f}:void 0,[f]);oe(()=>{if(typeof window>"u")return;let H=()=>requestAnimationFrame(x);window.addEventListener("resize",H),x();let $=l.current,re=()=>{N(!0),B.current&&clearTimeout(B.current),B.current=window.setTimeout(()=>{N(!1),B.current=null},Rt)};return $?.addEventListener("wheel",re,{passive:!0}),()=>{window.removeEventListener("resize",H),$?.removeEventListener("wheel",re),B.current&&clearTimeout(B.current)}},[x]),oe(()=>{!I&&r!==null&&n(null)},[I,r,n]),oe(()=>{if(F||A||ae.current===null)return;let H=ae.current;ae.current=null;let $=e.findIndex(re=>re.reportHubId===H);$>=0&&(m.current?.scrollToIndex($),requestAnimationFrame(()=>{document.querySelector(`[data-testid="daily-report-list"] [data-daily-report-button="${H}"]`)?.focus()}))},[A,F,e,ae]),oe(()=>{I>0&&L(H=>{let $=le(e[0]?.businessDate);return H===$?H:$})},[e,I]);let me=ee(e);me.current=e,oe(()=>{if(m.current){let H=document.querySelector('[data-testid="daily-report-list"]');H&&(H.__virtualScroll={...m.current,findReportIndex:$=>me.current.findIndex(re=>re.reportHubId===$),getReportIds:($=20)=>me.current.slice(0,$).map(re=>re.reportHubId)})}});let J=xe(H=>{H<=0||(n(H),F&&O(!0))},[F,n,O]),se=xe(H=>H<I?e[H]:vt,[e,I]),Ce=xe(()=>sr,[]),pe=xe((H,$)=>p(On,{item:H,index:$,setSize:I,isActive:H.reportHubId===r,onSelect:J},H.reportHubId),[I,r,J]),T=xe(H=>{let $=se(H.visibleStartIndex);$?.reportHubId>0&&L(re=>{let Ne=le($.businessDate);return re===Ne?re:Ne})},[se]),U=xe(H=>{o&&(o.current=H);let $=l.current;$&&($.dataset.scrolling!=="true"&&($.dataset.scrolling="true"),k.current&&clearTimeout(k.current),k.current=setTimeout(()=>{$&&delete $.dataset.scrolling,k.current=null},150))},[o]),G=xe(H=>p(st,{...H,label:d,isWheelScrollActive:D}),[d,D]),z=Wt(()=>p("div",{ref:l,className:"isolate flex h-full min-h-0 w-full overflow-hidden",style:te,children:p(ts,{ref:m,itemCount:I,getItem:se,getItemHeight:Ce,viewportSize:f,initialScrollOffset:s,overscanCount:xt,scrollBarOptions:{width:Dt,tapScrollCircleOptions:wt,renderThumbOverlay:G},behaviorOptions:os,onRangeChange:T,onScroll:U,contentInsets:ss,testId:"daily-report-list",className:"relative w-full",locale:i.locale,labels:i.labels,contentProps:{role:"list","aria-label":u.title},children:pe})}),[te,I,se,Ce,f,s,G,T,U,u.title,i.locale,i.labels,pe]);return Q("div",{ref:S,className:"h-full min-h-0 w-full","data-testid":"daily-report-root",children:[F?p("div",{className:"flex h-full min-h-0",children:z}):Q(qo,{direction:"horizontal",className:"flex h-full min-h-0","data-testid":"daily-report-panel-group",children:[p(Nn,{id:"daily-report-list-panel",defaultSize:{value:360,unit:"pixels"},minSize:{value:160,unit:"pixels"},maxSize:{value:520,unit:"pixels"},contentOverflow:"hidden",className:"flex min-h-0",children:z}),p(Jo,{id:"daily-report-list-handle",thickness:10,indicator:{visible:!0,thickness:6,length:32,barThickness:2,barLength:16},className:"cursor-col-resize rounded transition-colors hover:bg-slate-200/60 focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-1 dark:hover:bg-slate-700/60","aria-label":u.resizeHandle}),p(Nn,{id:"daily-report-detail-panel",minSize:{value:160,unit:"pixels"},contentOverflow:"hidden",className:"flex min-h-0 flex-1 pl-1.5",children:p(An,{dailyReportItems:e,selectedItem:ge,autoMarkRead:t,isActive:r!==null,userId:a})})]}),I===0&&p("div",{className:"py-8 text-center",children:p("p",{className:"text-slate-500",children:u.listEmpty})}),K&&p(us,{isOpen:ue,selectedItem:ge,onClose:De,autoMarkRead:F&&t,userId:a})]})},ds=e=>p("div",{...e,className:"px-2 pb-3",style:{height:We},children:Q("div",{"data-skeleton":!0,className:"flex h-full animate-pulse flex-col justify-between rounded-2xl border border-slate-200 bg-white p-4 shadow-sm dark:border-slate-700 dark:bg-slate-900/70",children:[Q("div",{className:"mb-3 flex flex-wrap items-center gap-3",children:[p("div",{className:"h-4 w-24 rounded bg-slate-200"}),p("div",{className:"h-4 w-24 rounded bg-slate-200"}),p("div",{className:"h-4 w-24 rounded bg-slate-200"})]}),Q("div",{className:"space-y-2",children:[p("div",{className:"h-4 w-full rounded bg-slate-200"}),p("div",{className:"h-4 w-11/12 rounded bg-slate-200"}),p("div",{className:"h-4 w-5/6 rounded bg-slate-200"})]})]})}),An=({dailyReportItems:e,selectedItem:t,heightStyle:r,autoMarkRead:n=!1,isActive:a=!0,userId:o})=>{let[s,l]=Ee("article"),[m,u]=Ee(!1),{draftLabelName:i,labels:f,sourceTypeConfigs:x}=_(),{report:d,error:L,isLoading:D}=Be(t?.reportHubId??-1,t?.businessDate??null),N=ee(null),C=ee(null),S=ee(!1);oe(()=>{if(!d)return;let A=d.labels.some(O=>O.name===i);d.reportHubId!==C.current?(C.current=d.reportHubId,A?(u(!0),S.current=!0):(u(!1),S.current=!1)):!A&&m&&S.current&&(u(!1),S.current=!1)},[d,m,i]);let P=!!(o&&d?.userId===o),V=xe(()=>{setTimeout(()=>{N.current&&N.current.scrollTo({top:N.current.scrollHeight,behavior:"smooth"})},100)},[]);if(e&&(e.length===0||!t))return p("aside",{className:"hidden h-full min-h-0 min-w-0 flex-1 gap-3 rounded-2xl border border-slate-200 bg-white p-4 shadow-sm sm:flex dark:border-slate-700 dark:bg-slate-900/70",style:r,children:p("div",{className:"flex h-full flex-1 items-center justify-center rounded-xl border border-slate-300 border-dashed bg-slate-50 p-4 text-center text-slate-500 text-sm dark:border-slate-600 dark:bg-slate-900/40 dark:text-slate-300",children:p("p",{children:f.selectPrompt})})});let F=le(d?.date??t?.businessDate),B=d?.employeeName||d?.author?ie(d.employeeName??d.author):"",I=D||!d,k=Q(ps,{children:[Q("div",{className:"space-y-1",children:[p("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:f.businessDate}),p("div",{className:"text-slate-900 text-sm dark:text-slate-100",children:F}),Q("div",{className:"flex min-h-4 items-center gap-1 text-slate-500 text-xs dark:text-slate-300",children:[Q("span",{children:[f.author,":"]}),I?p("div",{"data-skeleton":!0,className:"h-3 w-24 animate-pulse rounded bg-slate-200 dark:bg-slate-700"}):p("span",{children:B}),(()=>{let A=d?.sourceType,O=A?x?.[A]:void 0;return O?p("span",{className:Y("ml-2 inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",O.badgeClassName),children:O.label}):null})()]})]}),Q(Kt,{value:s,onValueChange:A=>l(A),className:"flex min-h-0 flex-1 flex-col",children:[p(nt,{className:"grid grid-cols-2 gap-1 rounded-md bg-slate-100 p-1 text-xs dark:bg-slate-800",children:["article","relations"].map(A=>p(at,{value:A,className:"rounded-md px-2 py-1 font-medium text-slate-600 transition-colors data-[state=active]:bg-white data-[state=active]:text-slate-900 data-[state=active]:shadow-sm dark:text-slate-200 dark:data-[state=active]:bg-slate-900/70 dark:data-[state=active]:text-slate-100",children:A==="article"?f.tabArticle:f.tabRelations},A))}),p($e,{ref:N,value:"article",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto overflow-x-hidden pt-3 text-sm",children:m?d?p(Ut,{report:d,onCancel:()=>u(!1),onPublishSuccess:()=>u(!1)}):p("p",{className:"rounded-lg border border-slate-300 border-dashed bg-slate-50 p-4 text-slate-600 dark:border-slate-600 dark:bg-slate-900/40 dark:text-slate-300",children:f.loading}):t&&p(cs,{report:d,isLoading:D,error:L,selectedItem:t,autoMarkRead:n,isActive:a,onCommentAdded:V,userId:o,onDoubleClick:P?()=>u(!0):void 0})}),p($e,{value:"relations",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto pt-3 text-sm",children:p("p",{className:"rounded-lg border border-slate-300 border-dashed bg-slate-50 p-4 text-slate-600 dark:border-slate-600 dark:bg-slate-900/40 dark:text-slate-300",children:f.relationsEmpty})})]})]});return e?p("aside",{"data-testid":"daily-report-side-pane","data-report-id":t?.reportHubId,className:"hidden h-full min-h-0 w-full min-w-0 flex-1 flex-col gap-3 rounded-2xl border border-slate-200 bg-white p-4 shadow-sm sm:flex dark:border-slate-700 dark:bg-slate-900/70",style:r,children:k}):p("div",{"data-testid":"daily-report-side-pane","data-report-id":t?.reportHubId,className:"flex min-h-0 flex-1 flex-col gap-3 overflow-hidden",children:k})},Ve=({className:e="w-32"})=>p("div",{"data-skeleton":!0,className:`h-4 animate-pulse rounded bg-slate-200 dark:bg-slate-700 ${e}`}),cs=({report:e,isLoading:t,error:r,selectedItem:n,autoMarkRead:a=!1,isActive:o=!0,onCommentAdded:s,userId:l,onDoubleClick:m})=>{let{toggleStar:u,toggleRead:i,deleteReport:f,user:x}=ve(),{labels:d,sourceTypeConfigs:L}=_(),{uiComments:D,handleAddComment:N,handleDeleteComment:C,pendingDeleteId:S,setPendingDeleteId:P,resolvedIdMap:V}=Ht(e,x,l),{handleToggleRead:F}=ls(e,t,a,o,i),B=n.sourceType??e?.sourceType,I=Me(B,L),k=B?B.toLowerCase()!=="internal":!1,A=I?.allowComment??!k,O=ee(null),K=ee(D.length);oe(()=>{let pe=e?.reportHubId??null;if(pe!==O.current){O.current=pe,K.current=D.length;return}D.length>K.current&&s?.(),K.current=D.length},[D.length,e?.reportHubId,s]);let ue=async pe=>{await N(pe)},De=Wt(()=>e?.content?e.content.replace(/<br\s*\/?\s*>/gi,`
1
+ import{jsx as Qt}from"react/jsx-runtime";var st=({orientation:e,thumbCenter:t,label:r,isDragging:n,isTapScrollActive:a,isWheelScrollActive:o})=>r.trim()&&(n||a||o)?Qt("div",{className:"pointer-events-none absolute flex items-center",style:e==="vertical"?{top:t,left:-16,transform:"translate(-100%, -50%)"}:{left:t,top:-16,transform:"translate(-50%, -100%)"},children:Qt("div",{className:"rounded-full border border-slate-200 bg-white px-3 py-1 text-slate-700 text-xs shadow-md shadow-slate-400/30 dark:border-slate-700 dark:bg-slate-900/90 dark:text-slate-100",children:Qt("span",{className:"whitespace-nowrap font-semibold text-slate-800 dark:text-slate-100",children:r.trim()})})}):null;import na from"lucide-react/dist/esm/icons/paperclip.js";import{jsx as Er,jsxs as oa}from"react/jsx-runtime";var aa=2,it=({count:e,label:t})=>e<=0?null:oa("span",{className:"inline-flex shrink-0 items-center gap-0.5 rounded px-1 py-0.5 text-slate-500 dark:text-slate-400",title:`${t}: ${e}`,role:"img","aria-label":`${t}: ${e}`,"data-testid":"daily-report-attachment-indicator","data-attachment-count":e,children:[Er(na,{className:"h-3.5 w-3.5","aria-hidden":"true"}),e>=aa&&Er("span",{className:"font-semibold text-[10px] leading-none",children:e})]});import{resolveVirtualScrollLocale as ma}from"@aiquants/virtualscroll";import{createContext as pa,useContext as fa,useMemo as ba}from"react";import{resolveVirtualScrollLabels as sa,resolveVirtualScrollLocale as ia,VIRTUAL_SCROLL_LABEL_CATALOGS as kr,VIRTUAL_SCROLL_LABEL_KEYS as rr}from"@aiquants/virtualscroll";var Lr=["id","businessDate","author","visitTime","createdAt","updatedAt","updatedBy","category","categoryInfo","creationCategory","customer","subject","content","interviewers","comments","attachments","attachmentMissing","attachmentDownload","tabArticle","tabRelations","relationsEmpty","title","tabList","tabTree","tabDetailList","treeComingSoon","totalCountLoading","createReport","createReportTitle","devControls","devSseToggle","devReload","devClearCache","autoRead","autoReadTitle","loadErrorBadge","loadError","reload","loadingIds","streamFailed","streamRetry","streamRevalidating","listEmpty","selectPrompt","loading","reportNotFound","contentEmpty","contentEmptyPreview","confirmDelete","deleteFailed","starAdd","starRemove","markRead","markUnread","deleteReport","resizeHandle","overlayBackdrop","overlayDialog","close","formTitle","formTitlePlaceholder","formContent","formContentPlaceholder","formCancel","formSave","formPublish","commentPlaceholder","commentSend","commentDelete","commentDeleteConfirm","unknownUser","sourceInternal"],Ar=["totalCount","debounce","streamProgressCount","streamProgressRatio","streamRetrying","reportLoadFailed","reportSummaryLoadFailed","interviewerWithAffiliation","operationFailed"],er=[...rr,...Lr,...Ar];var la=Object.freeze({en:"en-US",ja:"ja-JP"}),fe=(e,t)=>t.toLocaleString(la[e]),da=Object.freeze({create:"\u65E5\u5831\u306E\u4F5C\u6210",update:"\u65E5\u5831\u306E\u4FDD\u5B58",publish:"\u65E5\u5831\u306E\u516C\u958B",delete:"\u65E5\u5831\u306E\u524A\u9664",addComment:"\u30B3\u30E1\u30F3\u30C8\u306E\u6295\u7A3F",deleteComment:"\u30B3\u30E1\u30F3\u30C8\u306E\u524A\u9664",toggleStar:"\u30B9\u30BF\u30FC\u306E\u66F4\u65B0",toggleRead:"\u65E2\u8AAD\u72B6\u614B\u306E\u66F4\u65B0"}),ca=Object.freeze({create:"create the report",update:"save the report",publish:"publish the report",delete:"delete the report",addComment:"post the comment",deleteComment:"delete the comment",toggleStar:"update the star",toggleRead:"update the read state"}),tr=Object.freeze({en:Object.freeze({id:"ID",businessDate:"Business date",author:"Author",visitTime:"Visit time",createdAt:"Created at",updatedAt:"Updated at",updatedBy:"Updated by",category:"Category",categoryInfo:"Category",creationCategory:"Creation category",customer:"Customer",subject:"Subject",content:"Content",interviewers:"Attendees",comments:"Comments",attachments:"Attachments",attachmentMissing:"File is missing",attachmentDownload:"Download",tabArticle:"Overview",tabRelations:"Related",relationsEmpty:"No related view configured yet.",title:"Daily Reports",tabList:"\u{1F4C4} List",tabTree:"\u{1F333} Tree",tabDetailList:"\u{1F4CB} DetailList",treeComingSoon:"The tree view is coming soon",totalCountLoading:"Total: loading...",createReport:"New report",createReportTitle:"Create a daily report",devControls:"Development-only controls",devSseToggle:"Toggle SSE real-time sync",devReload:"Reload data",devClearCache:"Clear the cache and reload",autoRead:"Auto-read",autoReadTitle:"Mark reports as read automatically while viewing them",loadErrorBadge:"Error",loadError:"Failed to load the daily reports.",reload:"Reload",loadingIds:"Loading report IDs...",streamFailed:"Failed to load",streamRetry:"Retry",streamRevalidating:"Refreshing",listEmpty:"No data",selectPrompt:"Select a report from the list on the left.",loading:"Loading...",reportNotFound:"Report not found",contentEmpty:"No content has been entered.",contentEmptyPreview:"No content has been entered",confirmDelete:"Are you sure you want to delete this report?",deleteFailed:"Failed to delete the report",starAdd:"Add star",starRemove:"Remove star",markRead:"Mark as read",markUnread:"Mark as unread",deleteReport:"Delete",resizeHandle:"Resize the border between the report list and the detail pane",overlayBackdrop:"Tap the background to close",overlayDialog:"Report details",close:"Close",formTitle:"Title",formTitlePlaceholder:"Enter the report title",formContent:"Content",formContentPlaceholder:"Enter the report content",formCancel:"Cancel",formSave:"Save",formPublish:"Publish",commentPlaceholder:"Add a comment...",commentSend:"Send",commentDelete:"Delete comment",commentDeleteConfirm:"Delete",unknownUser:"Unknown",sourceInternal:"Original",totalCount:e=>`Total: ${fe("en",e)}`,debounce:e=>`Debounce: ${e} ms`,streamProgressCount:e=>`Loading ${fe("en",e)}`,streamProgressRatio:(e,t,r)=>`Loading ${fe("en",e)} / ${fe("en",t)} (${r}%)`,streamRetrying:e=>`Reconnecting... (${fe("en",e)} received)`,reportLoadFailed:e=>`Failed to load report ${fe("en",e)}.`,reportSummaryLoadFailed:e=>`Failed to load the summary of report ${fe("en",e)}.`,interviewerWithAffiliation:(e,t)=>`${e} (${t})`,operationFailed:e=>`Failed to ${ca[e]}. Please try again later.`}),ja:Object.freeze({id:"ID",businessDate:"\u55B6\u696D\u65E5",author:"\u4F5C\u6210\u8005",visitTime:"\u8A2A\u554F\u6642\u9593",createdAt:"\u4F5C\u6210\u65E5\u6642",updatedAt:"\u66F4\u65B0\u65E5\u6642",updatedBy:"\u66F4\u65B0\u8005",category:"\u533A\u5206",categoryInfo:"\u533A\u5206\u60C5\u5831",creationCategory:"\u4F5C\u6210\u533A\u5206",customer:"\u9867\u5BA2",subject:"\u4EF6\u540D",content:"\u5185\u5BB9",interviewers:"\u9762\u8AC7\u8005",comments:"\u30B3\u30E1\u30F3\u30C8",attachments:"\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB",attachmentMissing:"\u5B9F\u4F53\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",attachmentDownload:"\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9",tabArticle:"\u6982\u8981",tabRelations:"\u95A2\u9023",relationsEmpty:"\u95A2\u9023\u30D3\u30E5\u30FC\u306F\u307E\u3060\u69CB\u6210\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002",title:"\u65E5\u5831",tabList:"\u{1F4C4} \u4E00\u89A7",tabTree:"\u{1F333} \u30C4\u30EA\u30FC",tabDetailList:"\u{1F4CB} \u8A73\u7D30\u4E00\u89A7",treeComingSoon:"\u30C4\u30EA\u30FC\u306F\u73FE\u5728\u6E96\u5099\u4E2D\u3067\u3059",totalCountLoading:"\u7DCF\u4EF6\u6570: \u8AAD\u307F\u8FBC\u307F\u4E2D...",createReport:"\u65E5\u5831\u4F5C\u6210",createReportTitle:"\u65E5\u5831\u3092\u4F5C\u6210",devControls:"\u958B\u767A\u74B0\u5883\u9650\u5B9A\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB",devSseToggle:"SSE \u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u540C\u671F\u5207\u66FF",devReload:"\u30C7\u30FC\u30BF\u518D\u53D6\u5F97 (\u30EA\u30ED\u30FC\u30C9)",devClearCache:"\u30AD\u30E3\u30C3\u30B7\u30E5\u7834\u68C4 & \u518D\u53D6\u5F97",autoRead:"\u81EA\u52D5\u65E2\u8AAD",autoReadTitle:"\u65E5\u5831\u95B2\u89A7\u6642\u306E\u81EA\u52D5\u65E2\u8AAD\u51E6\u7406\u5207\u66FF",loadErrorBadge:"\u30A8\u30E9\u30FC",loadError:"\u65E5\u5831\u30C7\u30FC\u30BF\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002",reload:"\u518D\u8AAD\u307F\u8FBC\u307F",loadingIds:"\u65E5\u5831 ID \u3092\u8AAD\u307F\u8FBC\u307F\u4E2D\u3067\u3059...",streamFailed:"\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F",streamRetry:"\u518D\u8A66\u884C",streamRevalidating:"\u6700\u65B0\u5316\u4E2D",listEmpty:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093",selectPrompt:"\u5DE6\u5074\u306E\u4E00\u89A7\u304B\u3089\u65E5\u5831\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002",loading:"\u8AAD\u307F\u8FBC\u307F\u4E2D...",reportNotFound:"\u65E5\u5831\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",contentEmpty:"\u5185\u5BB9\u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002",contentEmptyPreview:"\u5185\u5BB9\u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093",confirmDelete:"\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F",deleteFailed:"\u524A\u9664\u306B\u5931\u6557\u3057\u307E\u3057\u305F",starAdd:"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B",starRemove:"\u30B9\u30BF\u30FC\u3092\u5916\u3059",markRead:"\u65E2\u8AAD\u306B\u3059\u308B",markUnread:"\u672A\u8AAD\u306B\u3059\u308B",deleteReport:"\u524A\u9664\u3059\u308B",resizeHandle:"\u65E5\u5831\u4E00\u89A7\u3068\u8A73\u7D30\u30DA\u30A4\u30F3\u306E\u5883\u754C\u306E\u30B5\u30A4\u30BA\u5909\u66F4\u30CF\u30F3\u30C9\u30EB",overlayBackdrop:"\u80CC\u666F\u3092\u30BF\u30C3\u30D7\u3057\u3066\u9589\u3058\u308B",overlayDialog:"\u65E5\u5831\u8A73\u7D30",close:"\u9589\u3058\u308B",formTitle:"\u30BF\u30A4\u30C8\u30EB",formTitlePlaceholder:"\u65E5\u5831\u306E\u30BF\u30A4\u30C8\u30EB\u3092\u5165\u529B",formContent:"\u5185\u5BB9",formContentPlaceholder:"\u65E5\u5831\u306E\u5185\u5BB9\u3092\u5165\u529B",formCancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",formSave:"\u4FDD\u5B58",formPublish:"\u516C\u958B",commentPlaceholder:"\u30B3\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0...",commentSend:"\u9001\u4FE1",commentDelete:"\u524A\u9664",commentDeleteConfirm:"\u524A\u9664\u3059\u308B",unknownUser:"\u4E0D\u660E\u306A\u30E6\u30FC\u30B6\u30FC",sourceInternal:"\u30AA\u30EA\u30B8\u30CA\u30EB",totalCount:e=>`\u7DCF\u4EF6\u6570: ${fe("ja",e)} \u4EF6`,debounce:e=>`\u30C7\u30D0\u30A6\u30F3\u30B9: ${e} ms`,streamProgressCount:e=>`\u8AAD\u307F\u8FBC\u307F\u4E2D ${fe("ja",e)} \u4EF6`,streamProgressRatio:(e,t,r)=>`\u8AAD\u307F\u8FBC\u307F\u4E2D ${fe("ja",e)} / ${fe("ja",t)} (${r}%)`,streamRetrying:e=>`\u518D\u63A5\u7D9A\u4E2D... (${fe("ja",e)} \u4EF6\u53D7\u4FE1\u6E08)`,reportLoadFailed:e=>`\u65E5\u5831 ${fe("ja",e)} \u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002`,reportSummaryLoadFailed:e=>`\u65E5\u5831 ${fe("ja",e)} \u306E\u6982\u8981\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002`,interviewerWithAffiliation:(e,t)=>`${e} (${t})`,operationFailed:e=>`${da[e]}\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u6642\u9593\u3092\u304A\u3044\u3066\u518D\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002`})}),Pr=Object.freeze({en:Object.freeze({...kr.en,...tr.en}),ja:Object.freeze({...kr.ja,...tr.ja})}),Zt=e=>typeof e=="string"?JSON.stringify(e):e===null?"null":typeof e,ua=e=>{let t={},r=!1;for(let n of rr){let a=Object.hasOwn(e,n)?e[n]:void 0;a!==void 0&&(t[n]=a,r=!0)}return r?t:void 0},Nr=(e,t,r)=>{e[t]=r},nr=(e,t)=>{let r=ia(e);if(t===void 0)return Pr[r];if(t===null||typeof t!="object")throw new RangeError(`[daily-report] labels must be an object; got ${Zt(t)}`);let n=Object.getPrototypeOf(t);if(n!==Object.prototype&&n!==null)throw new RangeError(`[daily-report] labels must be a plain object (prototype Object.prototype or null); got ${Array.isArray(t)?"an array":"an object with a non-plain prototype"}`);for(let s of Object.keys(t))if(!er.includes(s))throw new RangeError(`[daily-report] labels.${s} is not a known label key; expected one of ${er.join(", ")}`);let o={...sa(r,ua(t)),...tr[r]};for(let s of Lr){let d=Object.hasOwn(t,s)?t[s]:void 0;if(d!==void 0){if(typeof d!="string"||d.trim()==="")throw new RangeError(`[daily-report] labels.${s} must be a non-blank string; got ${Zt(d)}`);Nr(o,s,d)}}for(let s of Ar){let d=Object.hasOwn(t,s)?t[s]:void 0;if(d!==void 0){if(typeof d!="function")throw new RangeError(`[daily-report] labels.${s} must be a function; got ${Zt(d)}`);Nr(o,s,d)}}return Object.freeze(o)},_r=e=>{let t={};for(let r of rr)t[r]=e[r];return Object.freeze(t)};import{jsx as ar,jsxs as va}from"react/jsx-runtime";var ga=e=>({Internal:{label:e.sourceInternal,badgeClassName:"bg-emerald-100 text-emerald-800 dark:bg-emerald-900/30 dark:text-emerald-400"}}),ya=({title:e,annotation:t})=>va("header",{className:"flex flex-wrap items-baseline justify-between gap-2 px-2 py-1",children:[ar("span",{className:"text-nowrap text-slate-700 text-sm dark:text-slate-200",children:e}),t?ar("span",{className:"text-slate-600 text-xs dark:text-slate-300",children:t}):null]}),or=Object.freeze({apiBasePath:"/daily_report/api",ssePath:"/sse/daily_report/updates",draftLabelName:"draft",renderHeader:ya,showDevControls:!1}),Or=["apiBasePath","ssePath","draftLabelName","locale","labels","sourceTypeConfigs","renderHeader","showDevControls","onError","onSessionExpired"];var Mr=Object.freeze({fieldLabels:"config.labels (the same 21 keys)",title:"config.labels.title"}),ha=e=>{for(let t of Object.keys(e))if(!Or.includes(t))throw Object.hasOwn(Mr,t)?new RangeError(`[daily-report] config.${t} was removed in 0.21.0; use ${Mr[t]}`):new RangeError(`[daily-report] config.${t} is not a known config key; expected one of ${Or.join(", ")}`)},Hr=e=>{if(ha(e),typeof e.onSessionExpired!="function")throw new TypeError("[daily-report] config.onSessionExpired must be a function (the host decides the navigation on session expiry)");let t=ma(e.locale),r=nr(t,e.labels),n=or;return{apiBasePath:e.apiBasePath===void 0?n.apiBasePath:e.apiBasePath,ssePath:e.ssePath===void 0?n.ssePath:e.ssePath,draftLabelName:e.draftLabelName===void 0?n.draftLabelName:e.draftLabelName,locale:t,labels:r,sourceTypeConfigs:e.sourceTypeConfigs===void 0?ga(r):e.sourceTypeConfigs,renderHeader:e.renderHeader===void 0?n.renderHeader:e.renderHeader,showDevControls:e.showDevControls===void 0?n.showDevControls:e.showDevControls,onError:e.onError,onSessionExpired:e.onSessionExpired}},Ra=()=>{throw new Error("[daily-report] onSessionExpired is not wired: render inside DailyReportConfigProvider with a config")},Fr=pa(Hr({onSessionExpired:Ra})),Br=({config:e,children:t})=>{let r=ba(()=>Hr(e),[e]);return ar(Fr.Provider,{value:r,children:t})},F=()=>fa(Fr),He=(e,t)=>{if(!(e&&t))return;if(t[e])return t[e];let r=e.toLowerCase(),n=Object.keys(t).find(a=>a.toLowerCase()===r);return n?t[n]:void 0};import{jsx as Ke,jsxs as lt}from"react/jsx-runtime";var Ur=1024,sr=["B","KB","MB","GB"],xa=e=>{if(e===null||!Number.isFinite(e)||e<0)return null;let t=e,r=0;for(;t>=Ur&&r<sr.length-1;)t/=Ur,r+=1;return r===0?`${t} ${sr[r]}`:`${t.toFixed(1)} ${sr[r]}`},dt=({attachments:e})=>{let{apiBasePath:t,labels:r}=F();return e.length===0?null:lt("div",{className:"flex flex-col gap-2","data-testid":"daily-report-attachment-section",children:[Ke("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:r.attachments}),Ke("ul",{className:"flex flex-col gap-1.5",children:e.map(n=>{let a=`${t}/attachment/${n.id}`,o=xa(n.fileSize),s=n.state==="absent";return lt("li",{className:"flex items-center gap-2 rounded-lg bg-slate-50 px-3 py-2 dark:bg-slate-800/40","data-testid":"daily-report-attachment-item","data-attachment-state":n.state,children:[lt("div",{className:"flex min-w-0 flex-col",children:[s?Ke("span",{className:"truncate text-slate-400 text-sm line-through dark:text-slate-500","data-testid":"daily-report-attachment-name",children:n.fileName}):Ke("a",{href:a,className:"truncate text-blue-600 text-sm hover:underline dark:text-blue-400","data-testid":"daily-report-attachment-link",children:n.fileName}),lt("span",{className:"text-[10px] text-slate-400 dark:text-slate-500",children:[o??"\u2014",s&&` \xB7 ${r.attachmentMissing}`]})]}),!s&&Ke("a",{href:`${a}?download=1`,className:"ml-auto shrink-0 text-[10px] text-slate-500 hover:text-slate-700 hover:underline dark:text-slate-400 dark:hover:text-slate-200","data-testid":"daily-report-attachment-download",children:r.attachmentDownload})]},n.id)})})]})};import wa from"@heroicons/react/24/outline/TrashIcon.js";import{useState as Ca}from"react";var $r=(e,t,r,n)=>{if(typeof n!="string"||n.trim()==="")throw new RangeError(`[daily-report] mergeComments: unknownAuthorName must be a non-blank string; got ${typeof n=="string"?JSON.stringify(n):typeof n}`);let a=e.map((s,d)=>({id:`legacy-${d}`,authorName:s.name||n,content:s.text||"",isMine:!1,color:s.color||void 0,isLegacy:!0})),o=t.map(s=>({id:s.id,authorName:s.userName||n,content:s.content??"",createdAt:s.createdAt??"",isMine:r?s.userId===r:s.isMine,isLegacy:!1}));return[...a,...o]},Vr=e=>{if(!e)return"text-gray-700 dark:text-gray-300";let t=e.toLowerCase();return t.includes("red")||t.includes("\u8D64")?"text-red-600 dark:text-red-400":t.includes("green")||t.includes("\u7DD1")?"text-green-600 dark:text-green-400":t.includes("blue")||t.includes("\u9752")?"text-blue-600 dark:text-blue-400":t.includes("yellow")||t.includes("\u9EC4")?"text-yellow-600 dark:text-yellow-400":t.includes("orange")||t.includes("\u6A59")?"text-orange-500 dark:text-orange-400":"text-gray-700 dark:text-gray-300"};var ie=e=>{if(!e)return"-";let t=e.trim();return t===""?"-":t},le=e=>{if(!e)return"-";if(typeof e!="string")return e instanceof Date?le(e.toISOString()):String(e);let t=e.trim();if(t==="")return"-";let r=t.match(/^(\d{4})[-/](\d{2})[-/](\d{2})$/);if(r)return`${r[1]}-${r[2]}-${r[3]}`;let n=new Date(t);if(Number.isNaN(n.getTime()))return t;let a=n.getFullYear(),o=String(n.getMonth()+1).padStart(2,"0"),s=String(n.getDate()).padStart(2,"0");if(t.includes(":")||t.includes("T")){let u=String(n.getHours()).padStart(2,"0"),f=String(n.getMinutes()).padStart(2,"0"),i=String(n.getSeconds()).padStart(2,"0");return`${a}-${o}-${s}T${u}:${f}:${i}`}return`${a}-${o}-${s}`};import{clsx as Da}from"clsx";import{twMerge as Sa}from"tailwind-merge";function Y(...e){return Sa(Da(e))}import{jsx as Fe,jsxs as ct}from"react/jsx-runtime";var Ia=(e,t,r)=>t===e||typeof e=="number"&&e<0&&r?.get(e)===t||typeof t=="number"&&t<0&&r?.get(t)===e,jr=({comment:e,reportHubId:t,businessDate:r,onOptimisticDelete:n,pendingDeleteId:a,onPendingDeleteIdChange:o,onTrashClick:s,resolvedIdMap:d})=>{let[u,f]=Ca(!1),{labels:i}=F(),m=Ia(e.id,a,d),R=l=>{l.stopPropagation(),l.preventDefault(),o(null),f(!0),typeof e.id=="number"&&n(e.id)};return ct("li",{"data-comment-id":e.id,"data-deleted":u?"true":void 0,className:Y("group relative rounded-xl border border-slate-200 bg-white p-3 dark:border-slate-700 dark:bg-slate-900/70",e.isMine&&"border-blue-200 bg-blue-50 dark:border-blue-800/70 dark:bg-blue-950/40",u&&"hidden",m?"z-50":"z-0 hover:z-10"),children:[ct("div",{className:"mb-1 flex items-center justify-between",children:[Fe("div",{className:Y("font-semibold text-xs",Vr(e.color)),children:ie(e.authorName)}),ct("div",{className:"flex items-center gap-2",children:[e.createdAt&&Fe("div",{className:"text-[10px] text-slate-400",children:le(e.createdAt)}),e.isMine&&!e.isLegacy&&ct("div",{className:"relative",children:[Fe("button",{type:"button",className:Y("transition-colors",m?"text-red-500":"text-slate-400 hover:text-red-500"),title:i.commentDelete,"aria-label":i.commentDelete,onClick:l=>s(l,e.id),children:Fe(wa,{className:"h-4 w-4"})}),m&&Fe("button",{type:"button","data-delete-confirmation":!0,className:"fade-in zoom-in-95 absolute top-full right-0 z-20 mt-1 animate-in whitespace-nowrap rounded-md bg-red-600 px-3 py-1.5 font-bold text-white text-xs shadow-lg duration-200 hover:bg-red-700 active:scale-95",onClick:R,children:i.commentDeleteConfirm})]})]})]}),Fe("div",{className:"whitespace-pre-wrap text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:e.content})]})};import{useCallback as Ta,useEffect as zr,useRef as Kr,useState as Ea}from"react";import{jsx as Pe,jsxs as Na}from"react/jsx-runtime";var ka=(e,t)=>{let r=Kr(null);return zr(()=>{if(e===null)return;let a=o=>{o.target.closest("[data-delete-confirmation]")||t(null)};return document.addEventListener("mousedown",a),document.addEventListener("touchstart",a),()=>{document.removeEventListener("mousedown",a),document.removeEventListener("touchstart",a)}},[e,t]),zr(()=>()=>{r.current&&clearTimeout(r.current)},[]),{handleTrashClick:Ta((a,o)=>{a.stopPropagation(),a.preventDefault(),e!==o&&(t(o),r.current&&clearTimeout(r.current),r.current=window.setTimeout(()=>{t(null),r.current=null},5e3))},[e,t])}},ut=({comments:e,reportHubId:t,businessDate:r,onDeleteComment:n,pendingDeleteId:a,onPendingDeleteIdChange:o,resolvedIdMap:s})=>{let{handleTrashClick:d}=ka(a,o);return e.length===0?null:Pe("ul",{className:"mb-3 space-y-2",children:e.map(u=>Pe(jr,{comment:u,reportHubId:t,businessDate:r,onOptimisticDelete:n||(()=>{}),pendingDeleteId:a,onPendingDeleteIdChange:o,onTrashClick:d,resolvedIdMap:s},u.id))})},mt=({reportHubId:e,businessDate:t,onAddComment:r})=>{let[n,a]=Ea(!1),o=Kr(null),{labels:s}=F();return Na("form",{className:"flex gap-2",ref:o,onSubmit:async u=>{u.preventDefault();let i=new FormData(u.currentTarget).get("content")?.trim();if(i&&r){a(!0),o.current?.reset();try{await r(i)}catch{if(o.current){let m=o.current.elements.namedItem("content");m&&(m.value=i)}}finally{a(!1)}}},children:[Pe("input",{type:"hidden",name:"intent",value:"addComment"}),Pe("input",{type:"hidden",name:"reportHubId",value:e}),Pe("input",{type:"hidden",name:"businessDate",value:t}),Pe("input",{type:"text",name:"content",placeholder:s.commentPlaceholder,className:"flex-1 rounded-lg border border-slate-300 bg-slate-50 px-3 py-2 text-sm focus:border-blue-500 focus:bg-white focus:outline-none dark:border-slate-700 dark:bg-slate-800 dark:text-slate-200",autoComplete:"off"}),Pe("button",{type:"submit",className:"rounded-lg bg-blue-600 px-4 py-2 font-medium text-sm text-white hover:bg-blue-700 disabled:opacity-50",disabled:n,children:s.commentSend})]})};import{VirtualScroll as Wo}from"@aiquants/virtualscroll";import Go from"lucide-react/dist/esm/icons/check.js";import Pn from"lucide-react/dist/esm/icons/star.js";import qo from"lucide-react/dist/esm/icons/trash-2.js";import{useCallback as we,useEffect as Ee,useMemo as Sr,useRef as ce,useState as tt}from"react";import{createContext as Co,useCallback as Ie,useContext as Io,useEffect as vr,useRef as de,useState as Ft}from"react";var Yr=e=>{if(typeof e!="object"||e===null)return"unknown";let t=e;return typeof t.kind=="string"?t.kind==="chunk"?"chunk":t.kind==="error"?"error":"unknown":Array.isArray(t.items)?"chunk":typeof t.error=="string"?"error":"unknown"};var pt=(e,t)=>e.businessDate!==t.businessDate?e.businessDate===null?1:t.businessDate===null||e.businessDate>t.businessDate?-1:1:t.reportHubId-e.reportHubId,Wr=e=>{for(let t=1;t<e.length;t++)if(pt(e[t-1],e[t])>0)return!1;return!0},ir=(e,t)=>{let r=e.filter(o=>o.reportHubId!==t.reportHubId),n=0,a=r.length;for(;n<a;){let o=n+a>>1;pt(r[o],t)<=0?n=o+1:a=o}return r.splice(n,0,t),r};var Be=(e,t,r=console)=>{let n=a=>typeof a=="string"?[`${t} ${a}`]:[t,a];return{debug:(a,...o)=>{e<=0&&r.debug(...n(a),...o)},info:(a,...o)=>{e<=1&&r.info(...n(a),...o)},warn:(a,...o)=>{e<=2&&r.warn(...n(a),...o)},error:(a,...o)=>{e<=3&&r.error(...n(a),...o)}}};import{useCallback as _a,useEffect as Qr,useRef as Oa,useState as Ct}from"react";var La=/^\d{4}-\d{2}-\d{2}$/,Aa=/^\d{4}\/\d{2}\/\d{2}$/,ft=e=>e<10?`0${e}`:`${e}`,Gr=e=>{if(Number.isNaN(e.getTime()))return null;let t=e.getFullYear(),r=ft(e.getMonth()+1),n=ft(e.getDate());return`${t}-${r}-${n}`},lr=(e=new Date)=>Number.isNaN(e.getTime())?lr(new Date):`${e.getFullYear()}-${ft(e.getMonth()+1)}-${ft(e.getDate())}`,Ye=e=>{if(e==null)return null;if(e instanceof Date)return Gr(e);let t=e.trim();if(t==="")return null;if(La.test(t))return t;if(Aa.test(t))return t.replaceAll("/","-");let r=new Date(t);return Gr(r)};import{tapScrollCircleSampleVisual as Pa}from"@aiquants/virtualscroll";var Ue=120,qr=1e3,dr=160,bt=6,We=dr-bt,gt=.8,yt={maxVelocity:18,deceleration:.0018,startVelocityThreshold:.03},ht=20,Jr=6,Rt={reportHubId:-1,businessDate:null},Ci={report:null,error:null,isLoading:!1,isRefetching:!1},vt=240,xt=15,Dt=8,Xr=3,St={enabled:!0,renderVisual:Pa,maxSpeedCurve:{exponentialSteepness:3,exponentialScale:8},maxSpeedMultiplier:8},wt=["pen","touch"];var en=Be(1,"use-daily-report"),tn=(e,t)=>{if(typeof window>"u")return t;let r=window[e];return typeof r=="number"&&!Number.isNaN(r)?r:t},cr=tn("__DAILY_REPORT_CACHE_TTL__",3e5),Ma=tn("__DAILY_REPORT_CACHE_REVIVE_MS__",6e4),M={reports:new Map,lists:new Map,pendingLists:new Map,pendingReports:new Map,listeners:new Set,locks:new Set,lastMutations:new Map,recentDeletes:new Map,lastPrune:0,prune(){let e=Date.now();if(e-this.lastPrune<6e4)return;this.lastPrune=e;let t=3600*1e3;for(let[r,n]of this.reports)e-n.expiresAt>t&&this.reports.delete(r);for(let[r,n]of this.lists)e-n.expiresAt>t&&this.lists.delete(r)},clear(){this.reports.clear(),this.lists.clear(),this.pendingLists.clear(),this.pendingReports.clear(),this.locks.clear(),this.lastMutations.clear(),this.recentDeletes.clear(),this.listeners.forEach(e=>{e(-1)})},isValid:e=>e>Date.now(),notify:e=>{M.listeners.forEach(t=>{t(e)})},getReport(e,t=!1){let r=this.reports.get(e);return r&&(t||this.isValid(r.expiresAt))?r.data:null},getList(e,t=!1){let r=e&&this.lists.get(e);return r&&(t||this.isValid(r.expiresAt))?r.data:null},set(e,t,r=!0){if(this.reports.set(e.reportHubId,{data:e,expiresAt:t}),r){let n=Ye(e.date),a=n?this.lists.get(n):null;if(a&&n){let s=a.data.some(d=>d.reportHubId===e.reportHubId)?a.data.map(d=>d.reportHubId===e.reportHubId?e:d):[e,...a.data];this.lists.set(n,{...a,data:s})}}this.notify(e.reportHubId)},update(e,t,r=!0){let n=this.reports.get(e);if(n?.data){if(r&&t.updatedAt&&n.data.updatedAt&&new Date(t.updatedAt).getTime()<new Date(n.data.updatedAt).getTime()){en.warn(`[DailyReportCache] Stale update skipped id=${e}`);return}this.set({...n.data,...t},Math.max(n.expiresAt,Date.now()+Ma))}},delete(e,t){this.reports.delete(e);let r=Ye(t),n=r&&this.lists.get(r);n&&r&&this.lists.set(r,{...n,data:n.data.filter(a=>a.reportHubId!==e)}),this.notify(e)},merge(e,t){let r=e;if(r.postedComments.some(n=>this.recentDeletes.has(n.id))&&(r={...r,postedComments:r.postedComments.filter(n=>!this.recentDeletes.has(n.id))}),t){let n=new Set(r.postedComments.map(o=>o.id)),a=t.postedComments.filter(o=>!n.has(o.id)&&o.isMine&&Date.now()-new Date(o.createdAt||0).getTime()<1e4);a.length>0&&(r={...r,postedComments:[...r.postedComments,...a].sort((o,s)=>new Date(o.createdAt||0).getTime()-new Date(s.createdAt||0).getTime())})}return r},cacheMany(e,t,r){this.prune();let n=Date.now(),a=n+cr;for(let[s,d]of this.recentDeletes)n-d>1e4&&this.recentDeletes.delete(s);let o=e.map(s=>{if(this.locks.has(s.reportHubId))return s;let d=this.lastMutations.get(s.reportHubId);if(d&&r>0&&d>r)return this.reports.get(s.reportHubId)?.data??s;let u=this.reports.get(s.reportHubId)?.data,f=this.merge(s,u);return this.set(f,a,!1),f});return t&&this.lists.set(t,{data:o,expiresAt:a}),o}},rn=(e,t,r=!0)=>M.set(e,t,r),ye=(e,t)=>M.getReport(e,t?.ignoreExpiry),he=(e,t)=>M.update(e,t),Tt=(e,t)=>M.delete(e,t),Ge=()=>{M.clear(),It.clear()},qe=e=>{M.locks.add(e),M.lastMutations.set(e,Date.now())},Je=e=>{M.locks.delete(e),M.lastMutations.set(e,Date.now())},nn=e=>M.recentDeletes.set(e,Date.now()),an=(e,t)=>{let r=n=>{n===e&&t()};return M.listeners.add(r),()=>{M.listeners.delete(r)}},_e=(e,t)=>{M.prune(),M.set(t,Date.now()+cr)},on=e=>{M.prune();let t=M.getReport(e.reportHubId,!0),r=new Map;for(let a of t?.postedComments??[])r.set(a.id,a.isMine??!1);let n=(e.postedComments??[]).map(a=>({...a,isMine:r.get(a.id)??!1}));M.set({...e,isRead:t?.isRead??!1,isStarred:t?.isStarred??!1,postedComments:n},Date.now()+cr)},Ha=async(e,t)=>{let r=M.getReport(t);if(r)return r;let n=M.pendingReports.get(t);if(n)return n;let a=Date.now(),o=fetch(`${e}/report?reportHubId=${t}`,{cache:"no-cache"}).then(s=>s.ok?s.json():Promise.reject(`HTTP ${s.status}`)).then(s=>{if(s.error)throw new Error(s.error.message);let d=s.report;return M.cacheMany([d],null,a)[0]}).finally(()=>M.pendingReports.delete(t));return M.pendingReports.set(t,o),o},It=new Map,Fa=1e4,Ba=(e,t)=>{let r=It.get(t),n=Date.now();if(r&&n-r.at<Fa)return r.inFlight;let a=ur(e,t,{forceRefresh:!0}),o={at:n,inFlight:a};return It.set(t,o),a.finally(()=>{It.get(t)===o&&(o.inFlight=null)}).catch(()=>{}),a},ur=async(e,t,r={})=>{let n=r.forceRefresh?null:M.getList(t);if(n)return n;let a=M.pendingLists.get(t);if(a)return a;let o=Date.now(),s=fetch(`${e}/business-date?businessDate=${encodeURIComponent(t)}`,{cache:"no-cache"}).then(d=>d.ok?d.json():Promise.reject(`HTTP ${d.status}`)).then(d=>{if(d.error)throw new Error(d.error.message);return M.cacheMany(d.reports??[],t,o)}).finally(()=>M.pendingLists.delete(t));return M.pendingLists.set(t,s),s},$e=(e,t)=>{let{apiBasePath:r}=F(),[n,a]=Ct(()=>M.getReport(e)),[o,s]=Ct(null),[d,u]=Ct(!1),[f,i]=Ct(!1),m=Oa({id:e,token:0});return Qr(()=>{let R=l=>{if(l===e){let L=M.getReport(e,!0);a(L)}};return M.listeners.add(R),()=>{M.listeners.delete(R)}},[e]),Qr(()=>{let R=Ye(t),l=(m.current.token||0)+1;if(m.current={id:e,token:l},e<=0){a(null),s(e===0?new Error("Invalid ID"):null),u(!1),i(!1);return}let L=M.getReport(e,!0),D=!1;if(L)D=!M.isValid(M.reports.get(e)?.expiresAt??0);else if(R){let k=M.getList(R,!0)?.find(U=>U.reportHubId===e);k&&(L=k,D=!M.isValid(M.lists.get(R)?.expiresAt??0))}if(a(L),L&&!D){s(null),u(!1),i(!1);return}u(!L),i(!0);let w=setTimeout(async()=>{if(m.current.token===l)try{let S=null;if(R){let k=M.getList(R)!==null;if(S=(await ur(r,R)).find(H=>H.reportHubId===e)??null,!S&&k){let H=await Ba(r,R);H&&(S=H.find(B=>B.reportHubId===e)??null)}}else S=await Ha(r,e);m.current.token===l&&(a(S),s(null))}catch(S){m.current.token===l&&s(S instanceof Error?S:new Error("Load failed"))}finally{m.current.token===l&&(u(!1),i(!1))}},L?Ue:0);return()=>clearTimeout(w)},[e,t,r]),{report:n,error:o,isLoading:d,isRefetching:f}},sn=()=>{let{apiBasePath:e}=F();return _a(t=>{let r=Ye(t);r&&!M.getList(r)&&ur(e,r).catch(n=>en.warn("Prefetch error",r,n))},[e])};import{systemSseRuntime as Mt}from"@aiquants/sse";import{createBrowserEventSource as po}from"@aiquants/sse/client";import{useReopeningEventSource as fo}from"@aiquants/sse/react";import{useEffect as Rr,useRef as Ht,useState as bo}from"react";import{z as y}from"zod";var ln=["auth-required","forbidden","resync-required"],mr=15e3,dn="lastEventId",Ua=/^\d{1,15}-\d{1,15}$/,Et=e=>Ua.test(e),$a=y.object({name:y.string().nullish(),affiliation:y.string().nullish()}),Va=y.object({name:y.string().nullish(),text:y.string().nullish(),color:y.string().nullish()}),ja=y.object({id:y.number(),name:y.string().nullish(),color:y.string().nullish()}),cn=y.object({id:y.number(),userId:y.string().nullish(),userName:y.string().nullish(),content:y.string().nullish(),createdAt:y.string().nullish(),isMine:y.boolean()}),za=y.object({id:y.string(),fileName:y.string(),fileType:y.string().nullable(),fileSize:y.number().nullable(),createdAt:y.string().nullable(),state:y.enum(["present","absent","unknown"])}),pr=y.object({reportHubId:y.number(),date:y.string().nullish(),createdAt:y.string().nullish(),author:y.string().nullish(),userId:y.string().nullish(),sourceType:y.string().nullish(),employeeName:y.string().nullish(),updatedBy:y.string().nullish(),updatedAt:y.string().nullish(),category:y.string().nullish(),creationCategory:y.string().nullish(),visitTimeFrom:y.string().nullish(),visitTimeTo:y.string().nullish(),customerName:y.string().nullish(),interviewers:y.array($a),subject:y.string().nullish(),content:y.string().nullish(),externalComments:y.array(Va),isRead:y.boolean(),isStarred:y.boolean(),labels:y.array(ja),postedComments:y.array(cn),attachments:y.array(za).default([])}),Ka=y.object({type:y.literal("connected")}),Ya=y.object({type:y.literal("status-update"),reportHubId:y.number(),statusType:y.enum(["star","read"]),value:y.boolean(),clientTempId:y.string(),recipientRawUserId:y.number().optional()}),fr=y.string().optional(),Wa=y.object({type:y.literal("comment-add"),reportHubId:y.number(),comment:cn,clientTempId:y.string(),recipientRawUserId:y.number().optional(),sourceType:fr}),Ga=y.object({type:y.literal("comment-delete"),reportHubId:y.number(),commentId:y.number(),clientTempId:y.string(),recipientRawUserId:y.number().optional(),sourceType:fr}),qa=y.object({type:y.literal("report-create"),reportHubId:y.number(),report:pr,clientTempId:y.string(),recipientRawUserId:y.number().optional()}),Ja=y.object({type:y.literal("report-update"),reportHubId:y.number(),report:pr,clientTempId:y.string(),recipientRawUserId:y.number().optional()}),Xa=y.object({type:y.literal("report-publish"),reportHubId:y.number(),report:pr,clientTempId:y.string(),recipientRawUserId:y.number().optional()}),Qa=y.object({type:y.literal("report-delete"),reportHubId:y.number(),clientTempId:y.string(),sourceType:fr}),un=y.discriminatedUnion("type",[Ka,Ya,Wa,Ga,qa,Ja,Xa,Qa]);import{useSyncExternalStore as so}from"react";var Za=50,eo=1e3,to=3e4,ro=6,no=3e4,kt=Symbol("read-stall"),ao="/daily_report/api",oo=/^\d{4}-\d{2}-\d{2}$/,Nt=class{constructor(t={}){this.itemMap=new Map;this.listeners=new Set;this.state={items:[],loadedCount:0,totalCount:null,phase:"idle",isRevalidating:!1,hasCompletedOnce:!1,completedAt:null,error:null,streamAnchor:null};this.streamAnchorRevision=0;this.lastCursor=null;this.lastSnapshot=null;this.consecutiveFailures=0;this.started=!1;this.disposed=!1;this.loopGeneration=0;this.activeAbortController=null;this.activeSeenIds=null;this.externalRemovalTombstones=new Set;this.pendingForceRefresh=!1;this.wakeRetryWait=null;this.handleOnline=()=>this.wakeRetryWait?.();this.publishCoalesceTimer=null;this.lastItemsPublishAt=0;this.apiBasePath=t.apiBasePath??ao,this.fetchFn=t.fetchFn??((r,n)=>fetch(r,n)),this.setTimeoutFn=t.setTimeoutFn??((r,n)=>setTimeout(r,n)),this.clearTimeoutFn=t.clearTimeoutFn??(r=>clearTimeout(r)),this.warn=t.warn??((...r)=>console.warn(...r)),this.readStallTimeoutMs=t.readStallTimeoutMs??no,this.publishCoalesceMs=t.publishCoalesceMs??Za,typeof window<"u"&&window.addEventListener("online",this.handleOnline)}getState(){return this.state}subscribe(t){return this.listeners.add(t),()=>this.listeners.delete(t)}start(){this.started||this.disposed||(this.started=!0,this.runStreamLoop({revalidate:!1,forceRefresh:!1}))}retry(){this.disposed||this.state.phase!=="failed"||(this.consecutiveFailures=0,this.runStreamLoop({revalidate:this.state.hasCompletedOnce,forceRefresh:!1}))}refresh(t={}){if(!this.disposed){if(this.state.phase==="failed"){this.consecutiveFailures=0,this.runStreamLoop({revalidate:this.state.hasCompletedOnce,forceRefresh:t.forceRefresh??!1});return}if(this.state.phase==="complete"){if(this.state.isRevalidating){t.forceRefresh&&(this.pendingForceRefresh=!0);return}this.lastCursor=null,this.consecutiveFailures=0,this.runStreamLoop({revalidate:!0,forceRefresh:t.forceRefresh??!1})}}}resync(){if(!this.disposed){if(this.state.phase==="streaming"||this.state.phase==="retrying"){this.pendingForceRefresh=!0;return}this.refresh({forceRefresh:!0})}}applyExternalUpsert(t){if(this.disposed||!t||typeof t.reportHubId!="number")return;this.externalRemovalTombstones.delete(t.reportHubId),this.activeSeenIds?.add(t.reportHubId);let r=this.itemMap.get(t.reportHubId),n={reportHubId:t.reportHubId,businessDate:t.businessDate,sourceType:t.sourceType??r?.sourceType};(!r||r.businessDate!==n.businessDate||r.sourceType!==n.sourceType)&&(this.itemMap.set(t.reportHubId,n),this.publishItems())}applyExternalRemoval(t){this.disposed||(this.activeSeenIds?.delete(t),this.externalRemovalTombstones.add(t),this.itemMap.delete(t)&&this.publishItems())}dispose(){this.disposed=!0,this.loopGeneration+=1,this.activeAbortController?.abort(),this.cancelScheduledPublishItems(),this.wakeRetryWait?.(),typeof window<"u"&&window.removeEventListener("online",this.handleOnline),this.listeners.clear()}async runStreamLoop(t){let r=++this.loopGeneration;for(this.activeAbortController?.abort(),this.wakeRetryWait?.(),this.lastCursor===null&&(this.activeSeenIds=new Set,this.externalRemovalTombstones.clear(),this.lastSnapshot=null),t.forceRefresh&&(this.pendingForceRefresh=!1),this.publish({phase:t.revalidate?this.state.phase:"streaming",isRevalidating:t.revalidate,error:null});!this.disposed&&r===this.loopGeneration;){let n=await this.streamOnce(t.forceRefresh);if(this.disposed||r!==this.loopGeneration)return;if(n.kind==="complete"){this.pruneUnseenItems(),this.consecutiveFailures=0,this.cancelScheduledPublishItems(),this.lastItemsPublishAt=Date.now(),this.publish({phase:"complete",isRevalidating:!1,hasCompletedOnce:!0,completedAt:Date.now(),error:null,items:Array.from(this.itemMap.values()),loadedCount:this.itemMap.size}),this.pendingForceRefresh&&!this.disposed&&(this.pendingForceRefresh=!1,this.lastCursor=null,this.runStreamLoop({revalidate:!0,forceRefresh:!0}));return}if(n.kind==="aborted")return;if(n.kind==="auth-required"){this.publish({phase:"auth-required",isRevalidating:!1});return}if(this.consecutiveFailures+=1,this.consecutiveFailures>=ro){t.revalidate&&this.state.hasCompletedOnce?(this.warn("[DailyReportIdsStream] revalidation gave up:",n.error.message),this.pendingForceRefresh=!1,this.publish({isRevalidating:!1,error:n.error})):this.publish({phase:"failed",isRevalidating:!1,error:n.error});return}this.publish({phase:t.revalidate?this.state.phase:"retrying",error:n.error}),await this.waitBeforeRetry(Math.min(eo*2**(this.consecutiveFailures-1),to))}}pruneUnseenItems(){let t=this.activeSeenIds;if(this.activeSeenIds=null,!!t)for(let r of Array.from(this.itemMap.keys()))t.has(r)||this.itemMap.delete(r)}async streamOnce(t){let r=new AbortController;this.activeAbortController=r;try{let n=this.fetchFn(this.buildStreamUrl(t),{signal:r.signal,headers:{Accept:"application/x-ndjson"},cache:"no-store"}),a=null,o=this.readStallTimeoutMs<=0?await n:await Promise.race([n,new Promise(m=>{a=this.setTimeoutFn(()=>m(kt),this.readStallTimeoutMs*3)})]).finally(()=>{a!==null&&this.clearTimeoutFn(a)});if(o===kt)return r.abort(),n.catch(()=>{}),{kind:"retryable",error:new Error("Stream stalled: no response headers within timeout")};if(o.status===401||o.status===403)return{kind:"auth-required"};if(!(o.ok&&o.body))return{kind:"retryable",error:new Error(`ids stream HTTP ${o.status}`)};let s=o.body.getReader(),d=new TextDecoder,u="",f=!1,i=!1;for(;;){let m=await this.readWithStallGuard(s);if(m===kt)return r.abort(),s.cancel().catch(()=>{}),{kind:"retryable",error:new Error("Stream stalled: no data within timeout")};let{done:R,value:l}=m;if(R)break;let L=(u+d.decode(l,{stream:!0})).split(`
2
+ `);u=L.pop()??"";let D=!1;for(let I of L){if(I.trim()==="")continue;let w;try{w=JSON.parse(I)}catch{this.warn("[DailyReportIdsStream] skipped malformed line");continue}let S=Yr(w);if(S==="unknown"){this.warn("[DailyReportIdsStream] skipped line of unknown kind");continue}if(S==="error"){f=!0;continue}let k=w;D=this.absorbChunkLine(k)||D,typeof k.total=="number"&&Number.isFinite(k.total)&&k.total!==this.state.totalCount&&this.publish({totalCount:k.total}),k.nextCursor&&(k.nextCursor.businessDate===null||oo.test(k.nextCursor.businessDate))&&(this.lastCursor=k.nextCursor),k.isLast&&(i=!0)}D&&(this.consecutiveFailures=0,this.schedulePublishItems())}return f?{kind:"retryable",error:new Error("Stream interrupted by server error")}:i?{kind:"complete"}:{kind:"retryable",error:new Error("Stream ended before completion")}}catch(n){return n instanceof Error&&n.name==="AbortError"?{kind:"aborted"}:{kind:"retryable",error:n instanceof Error?n:new Error(String(n))}}finally{this.activeAbortController===r&&(this.activeAbortController=null)}}async readWithStallGuard(t){if(this.readStallTimeoutMs<=0)return t.read();let r=null,n=new Promise(a=>{r=this.setTimeoutFn(()=>a(kt),this.readStallTimeoutMs)});try{return await Promise.race([t.read(),n])}finally{r!==null&&this.clearTimeoutFn(r)}}absorbChunkLine(t){t.restarted===!0&&(this.lastCursor=null,this.lastSnapshot=null,this.activeSeenIds=new Set,this.externalRemovalTombstones.clear()),typeof t.snapshot=="string"&&(this.lastSnapshot=t.snapshot),t.streamAnchor!==void 0&&this.absorbStreamAnchor(t.streamAnchor);let r=t.provisional===!0,n=!1;for(let a of t.items){if(!a||typeof a.reportHubId!="number"||this.externalRemovalTombstones.has(a.reportHubId))continue;r||this.activeSeenIds?.add(a.reportHubId);let o=this.itemMap.get(a.reportHubId);(!o||o.businessDate!==a.businessDate||o.sourceType!==a.sourceType)&&(this.itemMap.set(a.reportHubId,a),n=!0)}return n}absorbStreamAnchor(t){if(t!==null&&!(typeof t=="string"&&Et(t))){this.warn(`[DailyReportIdsStream] ids stream carried a malformed streamAnchor: ${String(t)}`);return}this.streamAnchorRevision+=1,this.publish({streamAnchor:{lastEventId:t,revision:this.streamAnchorRevision}})}publishItems(){this.lastItemsPublishAt=Date.now(),this.publish({items:Array.from(this.itemMap.values()),loadedCount:this.itemMap.size})}schedulePublishItems(){if(this.publishCoalesceMs<=0){this.publishItems();return}let t=Date.now()-this.lastItemsPublishAt;if(t>=this.publishCoalesceMs){this.publishItems();return}this.publishCoalesceTimer===null&&(this.publishCoalesceTimer=this.setTimeoutFn(()=>{this.publishCoalesceTimer=null,this.publishItems()},this.publishCoalesceMs-t))}cancelScheduledPublishItems(){this.publishCoalesceTimer!==null&&(this.clearTimeoutFn(this.publishCoalesceTimer),this.publishCoalesceTimer=null)}publish(t){this.state={...this.state,...t};for(let r of this.listeners)r()}buildStreamUrl(t){let r=new URLSearchParams;this.lastCursor&&(r.set("cursor_report_hub_id",String(this.lastCursor.reportHubId)),this.lastCursor.businessDate!==null&&r.set("cursor_business_date",this.lastCursor.businessDate),this.lastSnapshot!==null&&r.set("cursor_snapshot",this.lastSnapshot)),t&&r.set("forceRefresh","true");let n=r.toString();return`${this.apiBasePath}/ids-stream${n?`?${n}`:""}`}waitBeforeRetry(t){return new Promise(r=>{let n=null,a=()=>{n!==null&&(this.clearTimeoutFn(n),n=null),this.wakeRetryWait===a&&(this.wakeRetryWait=null),r()};this.wakeRetryWait=a,n=this.setTimeoutFn(a,t)})}};var io=6e4,q=null,mn=!1,br=new Set,pn={items:[],loadedCount:0,totalCount:null,phase:"idle",isRevalidating:!1,hasCompletedOnce:!1,completedAt:null,error:null,streamAnchor:null},gr=()=>{for(let e of br)e()},At=()=>{q&&(q.unsubscribe(),q.client.dispose(),q=null,gr())},Lt=e=>{if(typeof window>"u")return;let t=e.apiBasePath??or.apiBasePath;if(q&&(q.userKey!==e.userKey||q.apiBasePath!==t)&&(q.userKey!==e.userKey&&Ge(),At()),!q){let r=new Nt({apiBasePath:t});q={client:r,userKey:e.userKey,apiBasePath:t,unsubscribe:r.subscribe(gr)},lo(),r.start(),gr();return}Pt(q)},Pt=e=>{let t=e.client.getState();if(t.phase==="failed"){e.client.retry();return}t.phase==="complete"&&!t.isRevalidating&&t.completedAt!==null&&Date.now()-t.completedAt>io&&e.client.refresh()},lo=()=>{if(mn||typeof document>"u"||typeof window>"u")return;mn=!0;let e=()=>{q&&Pt(q)};document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&e()}),window.addEventListener("focus",e)},fn=e=>{if(!(typeof window>"u")){if(!q){Lt(e);return}if(q.userKey!==e.userKey){Ge(),At(),Lt(e);return}Pt(q)}},bn=()=>{typeof window>"u"||!q||Pt(q)},Xe=e=>{q?.client.applyExternalUpsert(e)},_t=e=>{q?.client.applyExternalRemoval(e)},Ot=()=>{q?.client.retry()},yr=()=>{q?.client.resync()},hr=(e={})=>{q?.client.refresh(e)},gn=()=>q?.userKey,co=e=>(br.add(e),()=>br.delete(e)),uo=()=>q?.client.getState()??pn,mo=()=>pn,ke=()=>so(co,uo,mo),Vi=()=>{At()};typeof import.meta<"u"&&import.meta.hot&&import.meta.hot.dispose(()=>{At()});var Oe=Be(1,"daily-report-sse-connection"),go=Object.freeze({kind:"resyncing"}),yn={initialDelayMs:2e3,maxDelayMs:3e4,multiplier:2},yo=1,hn=mr*3,ho=hn+mr,Rn=({isSseEnabled:e,onMessage:t})=>{let{ssePath:r,onSessionExpired:n}=F(),{streamAnchor:a,phase:o,isRevalidating:s,error:d}=ke(),[u,f]=bo({generation:0,minAnchorRevision:1,anchored:!1}),i=u.generation>0&&!u.anchored,m=i&&o==="complete"&&!s?d:null,R=Ht(0),l=Ht(null),L=Ht(n);L.current=n;let D=Ht(0);D.current=a===null?0:a.revision,Rr(()=>{u.anchored||a===null||a.revision<u.minAnchorRevision||(l.current=a.lastEventId,R.current=0,f({...u,anchored:!0}))},[u,a]),Rr(()=>{if(!e||m===null)return;let{initialDelayMs:w,maxDelayMs:S,multiplier:k}=yn,U=Mt.random()*Math.min(S,w*k**R.current);Oe.warn(`SSE resync: the ids rescan gave up (${m.message}); rescanning in ${Math.round(U)} ms`);let H=Mt.setTimer(()=>{R.current+=1,yr()},U);return()=>Mt.clearTimer(H)},[e,m]);let{status:I}=fo(e&&u.anchored?`${r}#${u.generation}`:null,{resolveUrl:({lastEventId:w})=>w===null?r:`${r}?${dn}=${encodeURIComponent(w)}`,initialLastEventId:l.current,withCredentials:!1,createEventSource:po,runtime:Mt,backoff:yn,healthyOpenMs:ho,nativeRetryLimit:yo,giveUpAfterFailures:"never",terminalEvents:ln,heartbeat:{staleAfterMs:hn,onHeartbeat:null},events:{message:w=>{w.lastEventId!==""&&(Et(w.lastEventId)?l.current=w.lastEventId:Oe.warn("SSE event carried a malformed id; keeping the previous cursor:",w.lastEventId));try{let S=JSON.parse(w.data),k=un.safeParse(S);if(!k.success){Oe.error("SSE Validation Error:",k.error.flatten(),"raw message:",S);return}if(k.data.type==="connected"){Oe.info("SSE Subscribe Ready");return}t(k.data)}catch(S){Oe.error("SSE Parse Error",S)}}}});return Rr(()=>{if(I.kind==="faulted"){Oe.error("SSE connection faulted:",I.error);return}if(I.kind==="terminated")switch(I.terminalEvent){case"auth-required":L.current();return;case"forbidden":Oe.warn("SSE stopped: the viewer is not registered (forbidden)");return;case"resync-required":{let w=D.current+1;f(S=>({generation:S.generation+1,minAnchorRevision:w,anchored:!1})),yr();return}}},[I]),e&&i?go:I};import{createContext as Ro,useCallback as vn,useContext as vo,useEffect as xo,useMemo as Do,useRef as xn,useState as So}from"react";import{jsx as Dn,jsxs as Sn}from"react/jsx-runtime";var wo=8e3,wn=Ro({notifyError:()=>{}}),Cn=()=>vo(wn),In=({children:e})=>{let{onError:t,labels:r}=F(),[n,a]=So(null),o=xn(t);o.current=t;let s=xn(null),d=vn(i=>{let m=o.current;if(m){m(i);return}a(i)},[]),u=vn(()=>{s.current!==null&&(clearTimeout(s.current),s.current=null),a(null)},[]);xo(()=>{if(n)return s.current=setTimeout(()=>a(null),wo),()=>{s.current!==null&&(clearTimeout(s.current),s.current=null)}},[n]);let f=Do(()=>({notifyError:d}),[d]);return Sn(wn.Provider,{value:f,children:[e,n&&Sn("div",{role:"alert","data-testid":"daily-report-error-banner",className:"fade-in slide-in-from-bottom-2 fixed inset-x-0 bottom-4 z-[100] mx-auto flex w-fit max-w-[92vw] animate-in items-center gap-3 rounded-lg border border-red-300 bg-red-600 px-4 py-2.5 text-sm text-white shadow-lg duration-200 dark:border-red-500/60 dark:bg-red-700",children:[Dn("span",{className:"font-medium",children:n.message}),Dn("button",{type:"button","aria-label":r.close,onClick:u,className:"shrink-0 rounded px-1.5 py-0.5 font-bold text-white/90 transition-colors hover:bg-red-700 hover:text-white dark:hover:bg-red-800",children:"\u2715"})]})]})};import{jsx as Eo}from"react/jsx-runtime";var Se=Be(1,"daily-report-action-context"),To=Object.freeze([]),xr=globalThis.__DailyReportActionContext??Co(null);globalThis.__DailyReportActionContext=xr;var Re=()=>{let e=Io(xr);if(!e)throw new Error("useDailyReportActionContext must be used within a DailyReportActionProvider");return e},Qe=(e,t)=>{if(!e)return t;if(e.displayName?.trim())return e.displayName;if(e.name){let r=`${e.name.familyName??""} ${e.name.givenName??""}`.trim();if(r)return r}return e.emails?.[0]?.value??t},Tn=({children:e,user:t,initialItems:r=To,userId:n})=>{let{apiBasePath:a,draftLabelName:o,labels:s}=F(),{notifyError:d}=Cn(),u=de(d);u.current=d;let f=de(new Map),i=de(new Map),m=de(new Map),R=de(new Map),l=de(new Map),[L,D]=Ft(0),[I,w]=Ft(r),[S,k]=Ft(!1),U=de(!1),H=de(new Map),B=de(new Set),T=de(new Set),N=de(new Set),_=ke(),O=de(!1);O.current=_.phase==="complete"&&!_.isRevalidating;let z=Ie(()=>gn()===(n??null),[n]),ue=Ie(async()=>{Se.info("[DailyReportActionProvider] Refetching data without page reload..."),hr(),D(b=>b+1),M.listeners.forEach(b=>{b(-1)})},[]),De=Ie(async()=>{Se.info("[DailyReportActionProvider] Clearing client & server/DB cache and refetching data without page reload..."),Ge(),T.current.clear();try{sessionStorage.clear()}catch{}try{let b=new FormData;b.append("intent","clearCache");let c=await fetch(`${a}/action`,{method:"POST",body:b});if(!c.ok){let v=await c.json().catch(()=>null);Se.warn("[DailyReportActionProvider] Failed to clear server-side cache:",c.status,v)}}catch(b){Se.warn("[DailyReportActionProvider] Failed to clear server-side cache:",b)}z()&&(hr({forceRefresh:!0}),D(b=>b+1),M.listeners.forEach(b=>{b(-1)}))},[a,z]),ae=de(new Map),ge=de(()=>{}),te=Ie((b,c)=>{let v=ae.current,g=v.get(b);if(g){g.messages.push(c);return}let x={messages:[c],unsubscribe:()=>{},timer:setTimeout(()=>{let C=v.get(b);C&&(C.unsubscribe(),v.delete(b),Se.warn(`[SSE Queue] Expired: reportHubId=${b}, dropped=${C.messages.length} messages`))},3e4)};x.unsubscribe=an(b,()=>{let C=v.get(b);if(C&&ye(b,{ignoreExpiry:!0})){C.unsubscribe(),clearTimeout(C.timer),v.delete(b),Se.info(`[SSE Queue] Replaying ${C.messages.length} messages for reportHubId=${b}`);for(let P of C.messages)ge.current(P)}}),v.set(b,x)},[]),me=b=>{N.current.add(b),setTimeout(()=>{N.current.delete(b)},3e4)},J=Ie(b=>!!b&&N.current.has(b),[]),se=Ie((b,c)=>{c!==void 0&&Xe({reportHubId:b,businessDate:c??null}),w(v=>{let g=v.find(C=>C.reportHubId===b),x=c??g?.businessDate??null;return ir(v,{reportHubId:b,businessDate:x,sourceType:g?.sourceType})})},[]),Ce=()=>{n&&(U.current=!0,k(b=>!b))};vr(()=>{if(!n)return;let b=setTimeout(()=>{U.current||k(!0)},qr);return()=>clearTimeout(b)},[n]);let pe=Ie(b=>{z()&&(T.current.add(b),_t(b),w(c=>c.filter(v=>v.reportHubId!==b)))},[z]),[E,$]=Ft(r);if(r!==E){$(r);let b=new Map;for(let g of r)T.current.has(g.reportHubId)||b.set(g.reportHubId,g);let c=O.current;for(let g of I)b.has(g.reportHubId)||T.current.has(g.reportHubId)||c&&g.reportHubId>0||b.set(g.reportHubId,g);let v=Array.from(b.values());Wr(v)||v.sort(pt),w(v)}vr(()=>{if(O.current){let b=new Set(r.map(c=>c.reportHubId));for(let c of T.current)b.has(c)||T.current.delete(c)}},[r]);let W=Ie(b=>{if(z()&&!J(b.clientTempId))switch(b.type){case"comment-add":{let{comment:c,reportHubId:v}=b,g=ye(v,{ignoreExpiry:!0});if(g){if(g.postedComments.some(G=>G.id===c.id))return;let x=!1,C=f.current.get(v);if(C){for(let[G,be]of C.entries())if(be===c.content){C.delete(G),l.current.set(G,c.id),x=!0;break}}let P={...c,userName:c.userName||(x?Qe(t,s.unknownUser):s.unknownUser),createdAt:c.createdAt||new Date().toISOString(),isMine:x},K={...g,postedComments:[...g.postedComments,P].sort((G,be)=>new Date(G.createdAt||0).getTime()-new Date(be.createdAt||0).getTime())};_e(v,K),qe(v),Je(v),D(G=>G+1)}else te(v,b);break}case"comment-delete":{let{commentId:c,reportHubId:v}=b,g=ye(v,{ignoreExpiry:!0});if(g){let x={...g,postedComments:g.postedComments.filter(C=>C.id!==c)};_e(v,x),qe(v),Je(v),D(C=>C+1)}else te(v,b);break}case"status-update":{let{statusType:c,value:v,reportHubId:g}=b,x=ye(g,{ignoreExpiry:!0});if(c==="star")if(m.current.get(g)===v&&m.current.delete(g),x){let C={...x,isStarred:v};_e(g,C),D(P=>P+1)}else te(g,b);else if(c==="read")if(R.current.get(g)===v&&R.current.delete(g),x){let C={...x,isRead:v};_e(g,C),D(P=>P+1)}else te(g,b);break}case"report-delete":{let{reportHubId:c}=b;B.current.delete(c),T.current.add(c),_t(c);let v=ae.current.get(c);v&&(v.unsubscribe(),clearTimeout(v.timer),ae.current.delete(c));let g=ye(c,{ignoreExpiry:!0});g?.date&&(Tt(c,g.date),D(x=>x+1)),w(x=>x.filter(C=>C.reportHubId!==c));break}case"report-create":case"report-update":case"report-publish":{let{report:c}=b;on(c),(b.type==="report-create"||b.type==="report-publish")&&(B.current.add(c.reportHubId),se(c.reportHubId,c.date)),D(v=>v+1);break}}},[J,z,se,t,te,s.unknownUser]);ge.current=W,vr(()=>()=>{for(let b of ae.current.values())b.unsubscribe(),clearTimeout(b.timer);ae.current.clear()},[]);let X=Rn({isSseEnabled:S,onMessage:W}),A=async(b,c,v,g,x,C)=>{C?.skipLock||qe(b),x.onOptimistic?.();let P=g.clientTempId||crypto.randomUUID();me(P);let K=new FormData;K.append("intent",c),K.append("reportHubId",String(b)),K.append("businessDate",v),K.append("operationTimestamp",String(Date.now())),K.append("clientTempId",P);for(let[G,be]of Object.entries(g))G!=="clientTempId"&&K.append(G,be);try{let G=await fetch(`${a}/action`,{method:"POST",body:K,headers:{Accept:"application/json"}});if(!G.ok){let Tr=new Error(`Failed to ${c}`);throw Object.assign(Tr,{status:G.status}),Tr}let be=await G.json();if(be.status!=="OK"||c!=="create"&&String(be.reportHubId)!==String(b))throw new Error(`Invalid response for ${c}`);if(typeof be.clientTempId!="string"||be.clientTempId!==P)throw new Error(`Invalid clientTempId for ${c}`);if(!z())throw Se.warn(`[executeAction] ${c} resolved after a user switch; discarding continuation`),new Error(`Stale continuation for ${c}`);return await x.onSuccess?.(be)}catch(G){throw Se.error(`${c} failed:`,G),z()&&(x.onFailure?.(),u.current({operation:c,message:s.operationFailed(c),cause:G})),G}finally{C?.keepLock||C?.skipLock||Je(b)}},V=async(b,c,v)=>{let g=Number(b),x=-1*Date.now(),C=A(g,"addComment",v,{content:c,clientTempId:String(x)},{onOptimistic:()=>{f.current.has(g)||f.current.set(g,new Map),f.current.get(g)?.set(x,c),D(P=>P+1)},onSuccess:P=>{if(!P.newComment)throw new Error("No new comment returned");let K=P.newComment.id;l.current.set(x,K),f.current.get(g)?.delete(x);let G=ye(g,{ignoreExpiry:!0});return G&&!G.postedComments.some(be=>be.id===K)&&he(g,{postedComments:[...G.postedComments,{...P.newComment,id:K,isMine:!0,userName:Qe(t,s.unknownUser)}],updatedAt:P.updatedAt}),K},onFailure:()=>{f.current.get(g)?.delete(x)}},{skipLock:!0}).finally(()=>H.current.delete(x));H.current.set(x,C),await C},re=async(b,c,v)=>{let g=Number(b);i.current.has(g)||i.current.set(g,new Set),i.current.get(g)?.add(c),D(C=>C+1);let x=c;if(c<0){let C=l.current.get(c);if(C!==void 0)x=C;else{let P=H.current.get(c);if(!P)return;try{x=await P}catch{return}}}await A(g,"deleteComment",v,{commentId:String(x)},{onSuccess:C=>{let P=typeof C.deletedCommentId=="string"?Number(C.deletedCommentId):x,K=ye(g,{ignoreExpiry:!0});K&&(he(g,{postedComments:K.postedComments.filter(G=>G.id!==P),updatedAt:C.updatedAt}),nn(P)),i.current.get(g)?.delete(c)},onFailure:()=>{i.current.get(g)?.delete(c)}},{skipLock:!0})},Ae=async(b,c,v)=>{let g=Number(b);await A(g,"toggleStar",v,{isStarred:String(c)},{onOptimistic:()=>{he(g,{isStarred:c}),m.current.set(g,c),D(x=>x+1)},onSuccess:x=>{x.updatedStatus&&typeof x.updatedStatus.isStarred=="boolean"&&ye(g,{ignoreExpiry:!0})&&(he(g,{isStarred:x.updatedStatus.isStarred,updatedAt:x.updatedAt}),D(P=>P+1)),m.current.delete(g)},onFailure:()=>{he(g,{isStarred:!c}),m.current.delete(g)}},{skipLock:!0})},ze=async(b,c,v)=>{let g=Number(b);await A(g,"toggleRead",v,{isRead:String(c)},{onOptimistic:()=>{he(g,{isRead:c}),R.current.set(g,c),D(x=>x+1)},onSuccess:x=>{x.updatedStatus&&typeof x.updatedStatus.isRead=="boolean"&&ye(g,{ignoreExpiry:!0})&&(he(g,{isRead:x.updatedStatus.isRead,updatedAt:x.updatedAt}),D(P=>P+1)),R.current.delete(g)},onFailure:()=>{he(g,{isRead:!c}),R.current.delete(g)}},{skipLock:!0})},Ir=de(ze);Ir.current=ze;let Qn=Ie((b,c,v)=>Ir.current(b,c,v),[]),Zn=async b=>{let c=-1*Date.now(),v=new Date().toISOString(),g={reportHubId:c,date:b,createdAt:v,author:Qe(t,s.unknownUser),userId:t?.id??"unknown",sourceType:"Internal",employeeName:Qe(t,s.unknownUser),updatedBy:Qe(t,s.unknownUser),updatedAt:v,category:null,creationCategory:null,visitTimeFrom:null,visitTimeTo:null,customerName:null,interviewers:[],subject:"",content:"",externalComments:[],isRead:!0,isStarred:!1,labels:[{id:0,name:o,color:"#9ca3af"}],postedComments:[],attachments:[]};rn(g,Date.now()+3e5,!1),w(x=>[{reportHubId:c,businessDate:b},...x]);try{let x=await A(0,"create",b,{clientTempId:String(c)},{onSuccess:P=>P});if(x.clientTempId&&x.clientTempId!==String(c))throw Se.warn(`[createReport] ID mismatch. req=${c}, res=${x.clientTempId}`),new Error("Optimistic ID mismatch");let C=Number(x.reportHubId);return Xe({reportHubId:C,businessDate:b}),qe(C),x.report&&(_e(C,x.report),D(P=>P+1)),w(P=>P.some(K=>K.reportHubId===C)?P.filter(K=>K.reportHubId!==c):P.map(K=>K.reportHubId===c?{...K,reportHubId:C}:K)),setTimeout(()=>Je(C),1e3),C}catch(x){throw Se.error("[createReport] Failed or mismatched",x),w(C=>C.filter(P=>P.reportHubId!==c)),x}},ea=async(b,c,v)=>{let g=Number(b);await A(g,"update",v,{...c.title&&{title:c.title},...c.content&&{content:c.content}},{onSuccess:()=>{let x=ye(g,{ignoreExpiry:!0});x&&(he(g,{subject:c.title??x.subject,content:c.content??x.content}),D(C=>C+1))}})},ta=async(b,c)=>{let v=Number(b),g=ye(v,{ignoreExpiry:!0}),x=g?.labels||[];await A(v,"publish",c,{},{onOptimistic:()=>{if(g){let C=g.labels.filter(P=>P.name!==o);he(v,{labels:C}),D(P=>P+1)}},onSuccess:C=>{C.report&&(_e(v,C.report),D(P=>P+1)),Xe({reportHubId:v,businessDate:c})},onFailure:()=>{he(v,{labels:x}),D(C=>C+1)}},{skipLock:!0})},ra=async(b,c)=>{let v=Number(b),g=I.find(x=>x.reportHubId===v);T.current.add(v),_t(v),w(x=>x.filter(C=>C.reportHubId!==v));try{await A(v,"delete",c,{},{onSuccess:x=>{Tt(v,c)}})}catch(x){if(x.status===404){Tt(v,c);return}if(!z())return;T.current.delete(v),Xe({reportHubId:v,businessDate:g?.businessDate??c}),g&&w(P=>P.some(K=>K.reportHubId===v)?P:ir(P,g))}};return Eo(xr.Provider,{value:{user:t,pendingAddCommentIds:f,pendingDeleteCommentIds:i,pendingStarUpdates:m,pendingReadUpdates:R,resolvedIdMap:l,version:L,items:I,isSseEnabled:S,toggleSse:Ce,sseStatus:X,addComment:V,deleteComment:re,toggleStar:Ae,toggleRead:Qn,createReport:Zn,updateReport:ea,publishReport:ta,deleteReport:ra,removeStaleItem:pe,refetchData:ue,clearCacheAndRefetch:De},children:e})};import{useCallback as En,useMemo as ko,useRef as No,useState as Lo}from"react";var Bt=(e,t,r)=>{let{pendingAddCommentIds:n,pendingDeleteCommentIds:a,resolvedIdMap:o,version:s,addComment:d,deleteComment:u}=Re(),{labels:f}=F(),i=f.unknownUser,[m,R]=Lo(null),l=En(w=>e&&u(e.reportHubId,w,e.date??""),[e,u]),L=En(w=>e&&t?d(e.reportHubId,w,e.date??""):Promise.resolve(),[e,t,d]),D=No([]);return{uiComments:ko(()=>{if(!e)return[];let w=$r(e.externalComments,e.postedComments,r,i),S=a.current.get(e.reportHubId);S?.size&&(w=w.filter(U=>!S.has(U.id)));let k=n.current.get(e.reportHubId);if(k?.size&&t){let U=new Set(w.map(B=>B.id)),H=t.displayName?.trim()||(t.name?`${t.name.familyName??""} ${t.name.givenName??""}`.trim():"")||t.emails?.[0]?.value||i;for(let[B,T]of k){if(S?.has(B)||U.has(B))continue;let N=o.current.get(B);N&&U.has(N)||w.some(_=>_.isMine&&_.content===T&&typeof _.id=="number"&&_.id>0)||w.push({id:B,authorName:H,content:T,createdAt:new Date().toISOString(),isMine:!0,isLegacy:!1})}}return JSON.stringify(w)===JSON.stringify(D.current)?D.current:(D.current=w,w)},[e,t,r,i,a,n,o,s]),handleAddComment:L,handleDeleteComment:l,pendingDeleteId:m,setPendingDeleteId:R,resolvedIdMap:o.current}};import{VIRTUAL_SCROLL_LABEL_KEYS as Ao}from"@aiquants/virtualscroll";import{useRef as Po}from"react";var Ut=()=>{let{locale:e,labels:t}=F(),r=_r(t),n=Po(null),a=n.current;return a!==null&&Ao.every(o=>a[o]===r[o])?{locale:e,labels:a}:(n.current=r,{locale:e,labels:r})};import{useCallback as _o,useEffect as Oo,useState as Mo}from"react";var $t=(e,t)=>{let{enableMutationObserver:r=!1,bottomGap:n=4,minFallbackHeight:a=240}=t??{},[o,s]=Mo(600),d=_o(()=>{if(typeof window>"u")return;let u=e.current;if(!u||u.offsetParent===null&&window.getComputedStyle(u).position!=="fixed")return;let f=O=>Number.parseFloat(O)||0,{top:i}=u.getBoundingClientRect(),m=u.parentElement?.getBoundingClientRect(),R=window.getComputedStyle(document.documentElement),l=f(R.getPropertyValue("--footer-height")),L=f(R.getPropertyValue("--header-height")),D=f(R.getPropertyValue("--scrollbar-height")),I=window.getComputedStyle(u),w=f(I.marginBottom),S=f(I.paddingBottom),k=window.innerHeight-l-D-n,U=m?Math.min(m.bottom,k):k,H=m?Math.max(m.top,L):L,B=Math.max(i,H),T=U-B-w-S,N=Number.isFinite(T)?Math.floor(T):0,_=N>0?N:a;_>0&&Number.isFinite(_)&&s(O=>Math.abs(O-_)>1?_:O)},[n,e,a]);return Oo(()=>{if(typeof window>"u")return;let u=null,f=null,i=null,m=null,R=()=>{u!==null&&window.cancelAnimationFrame(u),u=window.requestAnimationFrame(()=>{d()})};R(),f=window.setTimeout(()=>{R()},150);let l=e.current;return typeof ResizeObserver<"u"&&l&&(i=new ResizeObserver(()=>{R()}),i.observe(l),l.parentElement&&i.observe(l.parentElement)),r&&typeof MutationObserver<"u"&&(m=new MutationObserver(()=>{R()}),m.observe(document.documentElement,{attributes:!0,attributeFilter:["style"]})),window.addEventListener("resize",R),()=>{u!==null&&window.cancelAnimationFrame(u),f!==null&&window.clearTimeout(f),window.removeEventListener("resize",R),i?.disconnect(),m?.disconnect()}},[r,d,e]),{viewportHeight:o,updateViewportHeight:d}};import{useEffect as zo,useRef as Ko,useState as Dr}from"react";import{Slot as Ho}from"@radix-ui/react-slot";import{cva as Fo}from"class-variance-authority";import*as kn from"react";import{jsx as Uo}from"react/jsx-runtime";var Bo=Fo("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),Te=kn.forwardRef(({className:e,variant:t,size:r,asChild:n=!1,...a},o)=>Uo(n?Ho:"button",{className:Y(Bo({variant:t,size:r,className:e})),ref:o,...a}));Te.displayName="Button";import{jsx as $o}from"react/jsx-runtime";function Nn({className:e,type:t,...r}){return $o("input",{type:t,"data-slot":"input",className:Y("flex h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:font-medium file:text-foreground file:text-sm placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30","focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50","aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",e),...r})}import*as Ln from"@radix-ui/react-label";import{jsx as Vo}from"react/jsx-runtime";function Ze({className:e,...t}){return Vo(Ln.Root,{"data-slot":"label",className:Y("flex select-none items-center gap-2 font-medium text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50",e),...t})}import{jsx as jo}from"react/jsx-runtime";function An({className:e,...t}){return jo("textarea",{"data-slot":"textarea",className:Y("flex min-h-15 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30","aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",e),...t})}import{jsx as Me,jsxs as Vt}from"react/jsx-runtime";var jt=({report:e,onCancel:t,onPublishSuccess:r})=>{let{updateReport:n,publishReport:a}=Re(),{labels:o}=F(),[s,d]=Dr(e.subject??""),[u,f]=Dr(e.content??""),[i,m]=Dr(!1),R=Ko(e.reportHubId);zo(()=>{e.reportHubId!==R.current&&(d(e.subject??""),f(e.content??""),R.current=e.reportHubId)},[e.reportHubId,e.subject,e.content]);let l=async()=>{m(!0);try{await n(e.reportHubId,{title:s,content:u},e.date??"")}catch{}finally{m(!1)}},L=async()=>{m(!0);try{await n(e.reportHubId,{title:s,content:u},e.date??""),await a(e.reportHubId,e.date??""),r?.()}catch{}finally{m(!1)}};return Vt("div",{className:"space-y-6 p-1",children:[Vt("div",{className:"space-y-2",children:[Me(Ze,{htmlFor:`report-title-${e.reportHubId}`,children:o.formTitle}),Me(Nn,{id:`report-title-${e.reportHubId}`,value:s,onChange:D=>d(D.target.value),placeholder:o.formTitlePlaceholder,disabled:i})]}),Vt("div",{className:"space-y-2",children:[Me(Ze,{htmlFor:`report-content-${e.reportHubId}`,children:o.formContent}),Me(An,{id:`report-content-${e.reportHubId}`,value:u,onChange:D=>f(D.target.value),placeholder:o.formContentPlaceholder,className:"min-h-50",disabled:i})]}),Vt("div",{className:"flex justify-end gap-2",children:[t&&Me(Te,{variant:"outline",onClick:t,disabled:i,children:o.formCancel}),Me(Te,{variant:"secondary",onClick:l,disabled:i,children:o.formSave}),Me(Te,{onClick:L,disabled:i,children:o.formPublish})]})]})};import{jsx as Yo}from"react/jsx-runtime";var et=({className:e})=>Yo("span",{className:Y("text-blue-500",e),children:"\u25CF"});import{Fragment as os,jsx as h,jsxs as j}from"react/jsx-runtime";var Jo=(e,t,r)=>{Ee(()=>{let n=e.current;if(!n)return;let a=new ResizeObserver(()=>{r(t,n.offsetHeight)});return a.observe(n),()=>a.disconnect()},[t,r,e])},Xo=({itemId:e,index:t,setSize:r,onHeightMeasured:n,children:a})=>{let o=ce(null);return Jo(o,e,n),h("div",{ref:o,className:"px-2 pb-3","data-daily-report-button":e,role:"listitem","aria-posinset":t+1,"aria-setsize":r,children:a})},Qo=(e,t)=>e.affiliation?.trim()?t.interviewerWithAffiliation(e.name??"",e.affiliation):e.name??"",_n=({dailyReportItems:e,userId:t,selectedItemId:r,onSelectItem:n,scrollRestoreRef:a})=>{let[{initialScrollAnchor:o,restored:s}]=tt(()=>{let E=a?.current;if(!E||E.anchorReportHubId!==(r??null))return{initialScrollAnchor:void 0,restored:!1};if(!E.topItem)return{initialScrollAnchor:void 0,restored:!0};let $=e.findIndex(W=>W.reportHubId===E.topItem?.reportHubId);return $!==-1?{initialScrollAnchor:{index:$,offsetPx:E.topItem.offsetPx},restored:!0}:{initialScrollAnchor:{index:E.topItem.index,offsetPx:0},restored:!0}}),d=ce(s),u=ce(r??null),f=ce(a?.current.measuredHeights??new Map),i=ce(null),m=ce(null),{labels:R}=F(),l=Ut(),{viewportHeight:L,updateViewportHeight:D}=$t(i,{enableMutationObserver:!0}),I=sn(),[w,S]=tt(""),[k,U]=tt(!1),H=ce(null),B=ce(null),T=ce(e);T.current=e;let N=ce(null);Ee(()=>{if(r!=null&&m.current){let E=e.findIndex($=>$.reportHubId===r);if(E!==-1){if(N.current?.id===r&&N.current?.index===E)return;if(d.current&&(d.current=!1,(r??null)===u.current)){N.current={id:r,index:E};return}m.current.scrollToIndex(E,{align:"top"}),N.current={id:r,index:E}}}else N.current=null},[r,e]),Ee(()=>{let E=a?.current;E&&(E.anchorReportHubId=r??null)},[r,a]);let _=ce(n);_.current=n,Ee(()=>{if(m.current){let E=document.querySelector('[data-testid="daily-report-detail-list"]');if(E){let $=m.current,W=Object.assign({},$,{findReportIndex:X=>T.current.findIndex(A=>A.reportHubId===X),getReportItem:X=>T.current[X],selectItem:X=>_.current?.(X)});E.__virtualScroll=W}}});let O=e.length,z=we(E=>E>=O?Rt:e[E],[e,O]),ue=we((E,$)=>{if(O===0)return;let W=Math.max(0,E),X=Math.min(O-1,$);if(W>X)return;let A=new Set;for(let V=W;V<=X;V++){let re=z(V);if(re.businessDate&&A.add(re.businessDate),A.size>=Jr)break}A.forEach(V=>{I(V)})},[z,O,I]),De=we(({renderingStartIndex:E,renderingEndIndex:$,visibleStartIndex:W})=>{if(O===0)return;let X=z(W);X?.businessDate&&S(le(X.businessDate)),ue(E,$),ue($+1,$+ht),ue(E-ht,E-1)},[z,O,ue]),ae=ce(null),ge=we(()=>{m.current&&(ae.current=m.current);let E=a?.current,$=m.current??ae.current;if(E&&$){let X=$.getScrollAnchor(),A=X?T.current[X.index]:void 0;X&&A&&(E.topItem={reportHubId:A.reportHubId,index:X.index,offsetPx:X.offsetPx})}let W=i.current;W&&(W.dataset.scrolling!=="true"&&(W.dataset.scrolling="true"),B.current&&clearTimeout(B.current),B.current=setTimeout(()=>{W&&delete W.dataset.scrolling,B.current=null},150))},[a]),te=we(E=>h(st,{...E,label:w,isWheelScrollActive:k}),[w,k]);Ee(()=>{let E=i.current;if(!E)return;let $=()=>{U(!0),H.current&&clearTimeout(H.current),H.current=window.setTimeout(()=>{U(!1),H.current=null},vt)};return E.addEventListener("wheel",$,{passive:!0}),()=>{E.removeEventListener("wheel",$),H.current&&clearTimeout(H.current)}},[]);let me=we((E,$)=>{if(f.current.get(E)!==$&&(f.current.set(E,$),m.current)){let W=T.current.findIndex(X=>X.reportHubId===E);W!==-1&&m.current.updateItemSize(W,$)}},[]),J=we(E=>{let $=z(E);return f.current.get($.reportHubId)||350},[z]),se=we(E=>z(E).reportHubId,[z]);Ee(()=>{O>=0&&D()},[O,D]),Ee(()=>{O!==0&&ue(0,Math.min(O-1,ht))},[O,ue]);let Ce=we(E=>{let $=T.current.findIndex(W=>W.reportHubId===E);$>=0&&setTimeout(()=>m.current?.scrollToIndex($,{align:"bottom"}),300)},[]),pe=we((E,$)=>h(es,{item:E,index:$,setSize:O,onHeightMeasured:me,onCommentAdded:Ce,userId:t},E.reportHubId),[me,Ce,t,O]);return j(os,{children:[h("div",{ref:i,className:"flex min-h-0 flex-1 flex-col",children:h(Wo,{ref:m,itemCount:O,getItem:z,getItemKey:se,getItemHeight:J,viewportSize:L,initialScrollAnchor:o,overscanCount:xt,scrollBarOptions:{width:Dt,tapScrollCircleOptions:St,renderThumbOverlay:te},behaviorOptions:{pointerDragInputs:wt,wheelSpeedMultiplier:gt,inertiaOptions:yt,enableKeyboardNavigation:!1},onRangeChange:De,onScroll:ge,testId:"daily-report-detail-list",className:"relative w-full",locale:l.locale,labels:l.labels,contentProps:{role:"list","aria-label":R.title},children:pe})}),O===0&&h("div",{className:"py-8 text-center",children:h("p",{className:"text-slate-500",children:R.listEmpty})})]})},Zo=()=>j("div",{className:"rounded-2xl border border-slate-200 bg-white p-4 shadow-sm dark:border-slate-700 dark:bg-slate-900/70",children:[j("div",{className:"mb-4 flex flex-wrap gap-2",children:[h("div",{className:"h-6 w-20 rounded-full bg-slate-200"}),h("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),h("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),h("div",{className:"h-6 w-28 rounded-full bg-slate-200"})]}),j("div",{className:"mb-3 grid gap-3 md:grid-cols-[minmax(0,1fr)_220px]",children:[j("div",{className:"space-y-3",children:[h("div",{className:"h-5 w-40 rounded bg-slate-200"}),h("div",{className:"h-5 w-56 rounded bg-slate-200"}),h("div",{className:"h-24 rounded-lg bg-slate-200"})]}),j("div",{className:"rounded-xl bg-slate-100 p-3",children:[h("div",{className:"mb-2 h-4 w-24 rounded bg-slate-200"}),h("div",{className:"mb-2 h-4 w-28 rounded bg-slate-200"}),h("div",{className:"h-4 w-32 rounded bg-slate-200"})]})]}),j("div",{className:"space-y-3",children:[h("div",{className:"h-4 w-24 rounded bg-slate-200"}),j("div",{className:"flex flex-wrap gap-2",children:[h("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),h("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),h("div",{className:"h-6 w-16 rounded-full bg-slate-200"})]}),j("div",{className:"space-y-2",children:[h("div",{className:"h-16 rounded-lg bg-slate-200"}),h("div",{className:"h-16 rounded-lg bg-slate-200"})]})]})]}),es=({item:e,index:t,setSize:r,onHeightMeasured:n,onCommentAdded:a,userId:o})=>{let{report:s,error:d,isLoading:u,isRefetching:f}=$e(e.reportHubId,e.businessDate),{removeStaleItem:i}=Re(),{draftLabelName:m}=F(),[R,l]=tt(!1),[L,D]=tt(!1),I=ce(!1),w=ce(!1);f&&(w.current=!0),Ee(()=>{!(s||u||f||d)&&w.current&&e.reportHubId>0&&i(e.reportHubId)},[s,u,f,d,e.reportHubId,i]);let S=s?.labels.some(U=>U.name===m),k=o&&s?.userId===o;return Ee(()=>{s&&k&&S&&!R&&!L?(l(!0),I.current=!0):s&&!S&&R&&I.current&&(l(!1),I.current=!1)},[s,k,S,R,L]),h(Xo,{itemId:e.reportHubId,index:t,setSize:r,onHeightMeasured:n,children:d?h(as,{itemId:e.reportHubId}):s?R?h(jt,{report:s,onCancel:()=>{l(!1),D(!0)},onPublishSuccess:()=>{l(!1)}}):h(ns,{item:e,report:s,onCommentAdded:a,userId:o,onDoubleClick:k?()=>l(!0):void 0}):h(Zo,{})})},ts=({report:e,isRead:t,isStarred:r,isMine:n,onToggleRead:a,onToggleStar:o,onDelete:s,itemSourceType:d,visitTimeDisplay:u,categoryLabel:f,labels:i})=>{let{sourceTypeConfigs:m}=F();return j("div",{className:"flex flex-wrap items-center gap-2 font-medium text-slate-600 text-xs",children:[h(it,{count:e.attachments.length,label:i.attachments}),(()=>{let R=d??e?.sourceType,l=He(R,m);return l?h("span",{className:Y("inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",l.badgeClassName),children:l.label}):null})(),h("button",{type:"button",onClick:o,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 focus:outline-none dark:hover:bg-slate-700",title:r?i.starRemove:i.starAdd,"data-detail-star-button":e.reportHubId,children:r?h(Pn,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):h(Pn,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),h("button",{type:"button",onClick:a,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 focus:outline-none dark:hover:bg-slate-700",title:t?i.markUnread:i.markRead,"data-detail-read-button":e.reportHubId,children:t?h(Go,{className:"h-3.5 w-3.5 text-blue-500"}):h(et,{className:"text-xs"})}),n&&h("button",{type:"button",onClick:s,"data-detail-delete-button":e.reportHubId,className:"text-lg leading-none transition-transform focus:outline-none active:scale-125",title:i.deleteReport,children:h(qo,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})}),j("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-blue-50 px-3 py-1 font-semibold text-blue-700 text-xs",children:[h("span",{className:"text-[10px] text-blue-500 uppercase tracking-wide",children:i.id}),e.reportHubId]}),j("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[h("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:i.businessDate}),le(e.date)]}),j("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[h("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:i.author}),ie(e.employeeName)]}),j("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[h("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:i.visitTime}),u||"-"]}),j("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[h("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:i.updatedAt}),le(e.updatedAt)]}),f&&j("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-amber-100 px-3 py-1 text-amber-700",children:[h("span",{className:"text-[10px] text-amber-500 uppercase tracking-wide",children:i.category}),f]})]})},rs=({report:e,visitTimeDisplay:t,categoryLabel:r,labels:n})=>j("div",{className:"flex flex-col gap-3 rounded-xl bg-slate-100 p-4 text-slate-600 text-xs dark:bg-slate-800/60 dark:text-slate-300",children:[j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.author}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:ie(e.author)})]}),j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.createdAt}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:le(e.createdAt)})]}),j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.updatedBy}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:ie(e.updatedBy)})]}),j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.updatedAt}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:le(e.updatedAt)})]}),j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.businessDate}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:le(e.date)})]}),t&&j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.visitTime}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:t})]}),r&&j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.categoryInfo}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:r})]})]}),ns=({item:e,report:t,onCommentAdded:r,userId:n,onDoubleClick:a})=>{let o=ce(null),{toggleStar:s,toggleRead:d,pendingStarUpdates:u,pendingReadUpdates:f,deleteReport:i,user:m}=Re(),{uiComments:R,handleAddComment:l,handleDeleteComment:L,pendingDeleteId:D,setPendingDeleteId:I,resolvedIdMap:w}=Bt(t,m,n),{labels:S,sourceTypeConfigs:k}=F(),U=e.sourceType??t?.sourceType,H=He(U,k),B=U?U.toLowerCase()!=="internal":!1,T=H?.allowComment??!B,N=async J=>{await l(J),r?.(e.reportHubId)},_=u.current.has(t.reportHubId)?u.current.get(t.reportHubId)??!1:t.isStarred,O=f.current.has(t.reportHubId)?f.current.get(t.reportHubId)??!1:t.isRead,z=!!(n&&t.userId===n),ue=async()=>{try{await d(t.reportHubId,!O,t.date??"")}catch{}},De=async()=>{try{await s(t.reportHubId,!_,t.date??"")}catch{}},ae=async()=>{confirm(S.confirmDelete)&&await i(t.reportHubId,t.date??"")},ge=Sr(()=>t.content?t.content.replace(/<br\s*\/??\s*>/gi,`
3
+ `).trim():"",[t.content]),te=Sr(()=>{let J=t.visitTimeFrom?.trim(),se=t.visitTimeTo?.trim();return J&&se?`${J} - ${se}`:J||se||""},[t.visitTimeFrom,t.visitTimeTo]),me=Sr(()=>{let J=[];return t.category?.trim()&&J.push(`${S.category}: ${t.category}`),t.creationCategory?.trim()&&J.push(`${S.creationCategory}: ${t.creationCategory}`),J.join(" / ")},[t.category,t.creationCategory,S.category,S.creationCategory]);return h("div",{onDoubleClick:a,className:`flex h-full w-full flex-col rounded-2xl border bg-white p-4 shadow-sm transition-all duration-200 hover:-translate-y-0.5 hover:border-blue-300 hover:shadow-lg dark:border-slate-700 dark:bg-slate-900/70 ${O?"":"border-l-4 border-l-blue-500"}`,children:j("div",{className:"flex flex-col gap-4",children:[h(ts,{report:t,itemSourceType:e.sourceType,isRead:O,isStarred:_,isMine:z,onToggleRead:ue,onToggleStar:De,onDelete:ae,visitTimeDisplay:te,categoryLabel:me,labels:S}),j("div",{className:"grid gap-4 md:grid-cols-[minmax(0,1fr)_240px]",children:[j("div",{className:"flex flex-col gap-4",children:[j("div",{className:"grid gap-3 sm:grid-cols-2",children:[j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:S.customer}),h("span",{className:"font-semibold text-base text-slate-900 dark:text-slate-100",children:ie(t.customerName)})]}),j("div",{className:"flex flex-col gap-1",children:[h("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:S.subject}),h("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:ie(t.subject)})]})]}),ge&&j("div",{className:"flex flex-col gap-2",children:[h("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:S.content}),h("div",{className:"whitespace-pre-wrap rounded-xl bg-slate-50 p-3 text-slate-700 text-sm leading-relaxed dark:bg-slate-800/60 dark:text-slate-200",children:ge})]}),t.interviewers.length>0&&j("div",{className:"flex flex-col gap-2",children:[h("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:S.interviewers}),h("ul",{className:"flex flex-wrap gap-2",children:t.interviewers.map(J=>h("li",{className:"rounded-full bg-slate-100 px-3 py-1 text-slate-600 text-xs",children:Qo(J,S)},`${J.name}-${J.affiliation||""}`))})]}),h(dt,{attachments:t.attachments}),R.length>0&&j("div",{className:"flex flex-col gap-2",children:[h("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:S.comments}),h(ut,{comments:R,reportHubId:t.reportHubId,businessDate:t.date??"",onDeleteComment:L,pendingDeleteId:D,onPendingDeleteIdChange:I,resolvedIdMap:w})]}),T&&h("div",{className:"mt-auto",ref:o,children:h(mt,{reportHubId:t.reportHubId,businessDate:t.date??"",onAddComment:N})})]}),h(rs,{report:t,visitTimeDisplay:te,categoryLabel:me,labels:S})]})]})})},as=({itemId:e})=>{let{labels:t}=F();return h("div",{className:"rounded-2xl border border-red-200 bg-red-50 p-4 text-red-700 text-sm",children:h("p",{children:t.reportLoadFailed(e)})})};import Mn from"lucide-react/dist/esm/icons/refresh-cw.js";import{useEffect as ss,useRef as On,useState as is}from"react";var rt=(e,t=250)=>{let[r,n]=is(e),a=On(e),o=On(!0);return ss(()=>{if(o.current){o.current=!1,a.current=e,n(e);return}let s=a.current;if(s===e)return;let d=null,u=null,f=i=>{u===null&&(u=i);let m=Math.min(1,Math.max(0,(i-u)/t)),R=1-(1-m)**3,l=Math.round(s+(e-s)*R);a.current=l,n(l),m<1&&(d=requestAnimationFrame(f))};return d=requestAnimationFrame(f),()=>{d!==null&&cancelAnimationFrame(d)}},[e,t]),r};import{jsx as zt,jsxs as Kt}from"react/jsx-runtime";var Yt=()=>{let e=ke(),{labels:t}=F(),r=rt(e.loadedCount),n=rt(e.totalCount??0);if(e.phase==="streaming"){let a=e.totalCount&&e.totalCount>0?Math.min(100,Math.round(e.loadedCount/e.totalCount*100)):null;return Kt("span",{"data-testid":"daily-report-ids-stream-status","data-phase":"streaming",className:"inline-flex items-center gap-1.5 rounded-full bg-blue-100 px-2 py-0.5 font-medium text-blue-800 text-xs tabular-nums dark:bg-blue-900/40 dark:text-blue-300",children:[zt("span",{"aria-hidden":"true",className:"h-1.5 w-1.5 animate-pulse rounded-full bg-blue-500 dark:bg-blue-400"}),a!==null?t.streamProgressRatio(r,n,a):t.streamProgressCount(r)]})}return e.phase==="retrying"?Kt("span",{role:"status","data-testid":"daily-report-ids-stream-status","data-phase":"retrying",className:"inline-flex items-center gap-1.5 rounded-full bg-amber-100 px-2 py-0.5 font-medium text-amber-800 text-xs tabular-nums dark:bg-amber-900/40 dark:text-amber-300",children:[zt(Mn,{"aria-hidden":"true",className:"h-3 w-3 animate-spin"}),t.streamRetrying(e.loadedCount)]}):e.phase==="failed"?Kt("span",{role:"status","data-testid":"daily-report-ids-stream-status","data-phase":"failed",className:"inline-flex items-center gap-1.5 rounded-full bg-rose-100 px-2 py-0.5 font-medium text-rose-800 text-xs dark:bg-rose-900/40 dark:text-rose-300",children:[t.streamFailed,zt("button",{type:"button","data-testid":"daily-report-ids-stream-retry",onClick:()=>Ot(),className:"rounded bg-rose-200 px-1.5 py-0.5 font-semibold text-rose-900 hover:bg-rose-300 dark:bg-rose-800 dark:text-rose-100 dark:hover:bg-rose-700",children:t.streamRetry})]}):e.isRevalidating?Kt("span",{"data-testid":"daily-report-ids-stream-status","data-phase":"revalidating",className:"inline-flex items-center gap-1 text-slate-400 text-xs dark:text-slate-500",children:[zt(Mn,{"aria-hidden":"true",className:"h-3 w-3 animate-spin"}),t.streamRevalidating]}):null};import{Panel as Bn,PanelGroup as ms,PanelResizeHandle as ps}from"@aiquants/resize-panels";import{SwipeCloseGuardContext as fs,useSwipeGuardState as bs,useSwipeToDismissOverlay as gs,useTapClick as $n,useTransitionDisplay as ys}from"@aiquants/swipe-overlay";import{VirtualScroll as hs}from"@aiquants/virtualscroll";import Rs from"lucide-react/dist/esm/icons/check.js";import Un from"lucide-react/dist/esm/icons/star.js";import vs from"lucide-react/dist/esm/icons/trash-2.js";import{memo as xs,useCallback as xe,useEffect as oe,useMemo as qt,useRef as ee,useState as Ne}from"react";import{useSyncExternalStore as ls}from"react";var Hn="(max-width: 639px)",ds=e=>{if(typeof window>"u"||typeof window.matchMedia!="function")return()=>{};let t=window.matchMedia(Hn);return t.addEventListener("change",e),()=>t.removeEventListener("change",e)},cs=()=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia(Hn).matches:!1,us=()=>!1,Fn=()=>ls(ds,cs,us);import*as ve from"@radix-ui/react-tabs";import*as Wt from"react";import{jsx as wr}from"react/jsx-runtime";var Gt=ve.Root,nt=Wt.forwardRef(({className:e,...t},r)=>wr(ve.List,{ref:r,className:Y("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",e),...t}));nt.displayName=ve.List.displayName;var at=Wt.forwardRef(({className:e,...t},r)=>wr(ve.Trigger,{ref:r,className:Y("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 font-medium text-sm ring-offset-background transition-all focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-2xs",e),...t}));at.displayName=ve.Trigger.displayName;var Ve=Wt.forwardRef(({className:e,...t},r)=>wr(ve.Content,{ref:r,className:Y("data-[state=inactive]:hidden","mt-2 ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...t}));Ve.displayName=ve.Content.displayName;import{Fragment as Ns,jsx as p,jsxs as Q}from"react/jsx-runtime";var Ds={pointerDragInputs:wt,inertiaOptions:yt,wheelSpeedMultiplier:gt,enableKeyboardNavigation:!1},Ss={top:bt,bottom:bt},ws=(e,t,r,n)=>{let[a,o]=Ne(!1),[s,d]=Ne(!1),u=ee(null),f=ee(null),i=ee(null),m=ee(e),R=ee(!0),l=qt(()=>t===null?null:r.find(I=>I.reportHubId===t)??null,[r,t]);oe(()=>{if(R.current){R.current=!1,m.current=e;return}let I=!m.current;m.current=e,I&&e&&t!==null?o(!0):!e&&a&&(o(!1),i.current!==null&&(document.body.style.overflow=i.current,i.current=null))},[e,t,a]);let L=e&&a&&l!==null;oe(()=>{if(L)d(!0);else{let I=setTimeout(()=>d(!1),300);return()=>clearTimeout(I)}},[L]),oe(()=>{if(!(typeof window>"u")){if(e&&a&&t!==null&&!u.current){let I=`overlay-${Date.now()}`;window.history.pushState({...window.history.state,dailyReportOverlay:I},"",window.location.href),u.current=I}else!(e&&a)&&u.current&&(u.current=null);return e&&a?(i.current=document.body.style.overflow,document.body.style.overflow="hidden"):i.current!==null&&(document.body.style.overflow=i.current,i.current=null),()=>{i.current!==null&&(document.body.style.overflow=i.current)}}},[e,a,t]),oe(()=>{if(typeof window>"u")return;let I=()=>{u.current&&(f.current=t,u.current=null,o(!1),n(null))};return window.addEventListener("popstate",I),()=>window.removeEventListener("popstate",I)},[t,n]);let D=xe(()=>{e&&(f.current=t,o(!1),n(null),u.current&&typeof window<"u"&&(u.current=null,window.history.back()))},[e,t,n]);return{isMobileDetailOpen:a,setIsMobileDetailOpen:o,isOverlayMounted:s,shouldShowOverlay:L,handleOverlayClose:D,lastClosedItemIdRef:f,selectedItem:l}},Cs=(e,t,r,n,a)=>{let o=ee(null),s=ee(void 0);s.current!==e?.reportHubId&&(s.current=e?.reportHubId,o.current=null),oe(()=>{n||(o.current=null)},[n]);let d=xe(async(u=!1)=>{if(!e)return;u||(o.current=e.reportHubId);let f=!e.isRead;try{await a(e.reportHubId,f,e.date??"")}catch{}},[e,a]);return oe(()=>{if(r&&e&&!e.isRead&&!t){if(o.current===e.reportHubId)return;let u=setTimeout(()=>d(!0),500);return()=>clearTimeout(u)}},[e,t,r,d]),{handleToggleRead:d}},Vn=({dailyReportItems:e,autoMarkRead:t=!1,selectedReportHubId:r,onSelectItem:n,userId:a,scrollOffsetRef:o})=>{let[s]=Ne(()=>o?.current??0),d=ee(null),u=ee(null),{labels:f}=F(),i=Ut(),{viewportHeight:m,updateViewportHeight:R}=$t(d),[l,L]=Ne(""),[D,I]=Ne(!1),w=Fn(),S=ee(null),[k,U]=Ne(!1);oe(()=>{if(typeof window>"u"||typeof ResizeObserver>"u")return;let A=S.current;if(!A)return;let V=new ResizeObserver(re=>{for(let Ae of re)if(Ae.target===A){let ze=Ae.contentRect.width;U(ze>0&&ze<460)}});return V.observe(A),()=>V.disconnect()},[]);let H=w||k,B=ee(null),T=e.length,N=ee(null),{isMobileDetailOpen:_,setIsMobileDetailOpen:O,isOverlayMounted:z,shouldShowOverlay:ue,handleOverlayClose:De,lastClosedItemIdRef:ae,selectedItem:ge}=ws(H,r,e,n),te=qt(()=>Number.isFinite(m)&&m>0?{height:m}:void 0,[m]);oe(()=>{if(typeof window>"u")return;let A=()=>requestAnimationFrame(R);window.addEventListener("resize",A),R();let V=d.current,re=()=>{I(!0),B.current&&clearTimeout(B.current),B.current=window.setTimeout(()=>{I(!1),B.current=null},vt)};return V?.addEventListener("wheel",re,{passive:!0}),()=>{window.removeEventListener("resize",A),V?.removeEventListener("wheel",re),B.current&&clearTimeout(B.current)}},[R]),oe(()=>{!T&&r!==null&&n(null)},[T,r,n]),oe(()=>{if(H||_||ae.current===null)return;let A=ae.current;ae.current=null;let V=e.findIndex(re=>re.reportHubId===A);V>=0&&(u.current?.scrollToIndex(V),requestAnimationFrame(()=>{document.querySelector(`[data-testid="daily-report-list"] [data-daily-report-button="${A}"]`)?.focus()}))},[_,H,e,ae]),oe(()=>{T>0&&L(A=>{let V=le(e[0]?.businessDate);return A===V?A:V})},[e,T]);let me=ee(e);me.current=e,oe(()=>{if(u.current){let A=document.querySelector('[data-testid="daily-report-list"]');A&&(A.__virtualScroll={...u.current,findReportIndex:V=>me.current.findIndex(re=>re.reportHubId===V),getReportIds:(V=20)=>me.current.slice(0,V).map(re=>re.reportHubId)})}});let J=xe(A=>{A<=0||(n(A),H&&O(!0))},[H,n,O]),se=xe(A=>A<T?e[A]:Rt,[e,T]),Ce=xe(()=>dr,[]),pe=xe((A,V)=>p(zn,{item:A,index:V,setSize:T,isActive:A.reportHubId===r,onSelect:J},A.reportHubId),[T,r,J]),E=xe(A=>{let V=se(A.visibleStartIndex);V?.reportHubId>0&&L(re=>{let Ae=le(V.businessDate);return re===Ae?re:Ae})},[se]),$=xe(A=>{o&&(o.current=A);let V=d.current;V&&(V.dataset.scrolling!=="true"&&(V.dataset.scrolling="true"),N.current&&clearTimeout(N.current),N.current=setTimeout(()=>{V&&delete V.dataset.scrolling,N.current=null},150))},[o]),W=xe(A=>p(st,{...A,label:l,isWheelScrollActive:D}),[l,D]),X=qt(()=>p("div",{ref:d,className:"isolate flex h-full min-h-0 w-full overflow-hidden",style:te,children:p(hs,{ref:u,itemCount:T,getItem:se,getItemHeight:Ce,viewportSize:m,initialScrollOffset:s,overscanCount:xt,scrollBarOptions:{width:Dt,tapScrollCircleOptions:St,renderThumbOverlay:W},behaviorOptions:Ds,onRangeChange:E,onScroll:$,contentInsets:Ss,testId:"daily-report-list",className:"relative w-full",locale:i.locale,labels:i.labels,contentProps:{role:"list","aria-label":f.title},children:pe})}),[te,T,se,Ce,m,s,W,E,$,f.title,i.locale,i.labels,pe]);return Q("div",{ref:S,className:"h-full min-h-0 w-full","data-testid":"daily-report-root",children:[H?p("div",{className:"flex h-full min-h-0",children:X}):Q(ms,{direction:"horizontal",className:"flex h-full min-h-0","data-testid":"daily-report-panel-group",children:[p(Bn,{id:"daily-report-list-panel",defaultSize:{value:360,unit:"pixels"},minSize:{value:160,unit:"pixels"},maxSize:{value:520,unit:"pixels"},contentOverflow:"hidden",className:"flex min-h-0",children:X}),p(ps,{id:"daily-report-list-handle",thickness:10,indicator:{visible:!0,thickness:6,length:32,barThickness:2,barLength:16},className:"cursor-col-resize rounded transition-colors hover:bg-slate-200/60 focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-1 dark:hover:bg-slate-700/60","aria-label":f.resizeHandle}),p(Bn,{id:"daily-report-detail-panel",minSize:{value:160,unit:"pixels"},contentOverflow:"hidden",className:"flex min-h-0 flex-1 pl-1.5",children:p(jn,{dailyReportItems:e,selectedItem:ge,autoMarkRead:t,isActive:r!==null,userId:a})})]}),T===0&&p("div",{className:"py-8 text-center",children:p("p",{className:"text-slate-500",children:f.listEmpty})}),z&&p(Es,{isOpen:ue,selectedItem:ge,onClose:De,autoMarkRead:H&&t,userId:a})]})},Is=e=>p("div",{...e,className:"px-2 pb-3",style:{height:We},children:Q("div",{"data-skeleton":!0,className:"flex h-full animate-pulse flex-col justify-between rounded-2xl border border-slate-200 bg-white p-4 shadow-sm dark:border-slate-700 dark:bg-slate-900/70",children:[Q("div",{className:"mb-3 flex flex-wrap items-center gap-3",children:[p("div",{className:"h-4 w-24 rounded bg-slate-200"}),p("div",{className:"h-4 w-24 rounded bg-slate-200"}),p("div",{className:"h-4 w-24 rounded bg-slate-200"})]}),Q("div",{className:"space-y-2",children:[p("div",{className:"h-4 w-full rounded bg-slate-200"}),p("div",{className:"h-4 w-11/12 rounded bg-slate-200"}),p("div",{className:"h-4 w-5/6 rounded bg-slate-200"})]})]})}),jn=({dailyReportItems:e,selectedItem:t,heightStyle:r,autoMarkRead:n=!1,isActive:a=!0,userId:o})=>{let[s,d]=Ne("article"),[u,f]=Ne(!1),{draftLabelName:i,labels:m,sourceTypeConfigs:R}=F(),{report:l,error:L,isLoading:D}=$e(t?.reportHubId??-1,t?.businessDate??null),I=ee(null),w=ee(null),S=ee(!1);oe(()=>{if(!l)return;let _=l.labels.some(O=>O.name===i);l.reportHubId!==w.current?(w.current=l.reportHubId,_?(f(!0),S.current=!0):(f(!1),S.current=!1)):!_&&u&&S.current&&(f(!1),S.current=!1)},[l,u,i]);let k=!!(o&&l?.userId===o),U=xe(()=>{setTimeout(()=>{I.current&&I.current.scrollTo({top:I.current.scrollHeight,behavior:"smooth"})},100)},[]);if(e&&(e.length===0||!t))return p("aside",{className:"hidden h-full min-h-0 min-w-0 flex-1 gap-3 rounded-2xl border border-slate-200 bg-white p-4 shadow-sm sm:flex dark:border-slate-700 dark:bg-slate-900/70",style:r,children:p("div",{className:"flex h-full flex-1 items-center justify-center rounded-xl border border-slate-300 border-dashed bg-slate-50 p-4 text-center text-slate-500 text-sm dark:border-slate-600 dark:bg-slate-900/40 dark:text-slate-300",children:p("p",{children:m.selectPrompt})})});let H=le(l?.date??t?.businessDate),B=l?.employeeName||l?.author?ie(l.employeeName??l.author):"",T=D||!l,N=Q(Ns,{children:[Q("div",{className:"space-y-1",children:[p("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:m.businessDate}),p("div",{className:"text-slate-900 text-sm dark:text-slate-100",children:H}),Q("div",{className:"flex min-h-4 items-center gap-1 text-slate-500 text-xs dark:text-slate-300",children:[Q("span",{children:[m.author,":"]}),T?p("div",{"data-skeleton":!0,className:"h-3 w-24 animate-pulse rounded bg-slate-200 dark:bg-slate-700"}):p("span",{children:B}),(()=>{let _=l?.sourceType,O=_?R?.[_]:void 0;return O?p("span",{className:Y("ml-2 inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",O.badgeClassName),children:O.label}):null})()]})]}),Q(Gt,{value:s,onValueChange:_=>d(_),className:"flex min-h-0 flex-1 flex-col",children:[p(nt,{className:"grid grid-cols-2 gap-1 rounded-md bg-slate-100 p-1 text-xs dark:bg-slate-800",children:["article","relations"].map(_=>p(at,{value:_,className:"rounded-md px-2 py-1 font-medium text-slate-600 transition-colors data-[state=active]:bg-white data-[state=active]:text-slate-900 data-[state=active]:shadow-sm dark:text-slate-200 dark:data-[state=active]:bg-slate-900/70 dark:data-[state=active]:text-slate-100",children:_==="article"?m.tabArticle:m.tabRelations},_))}),p(Ve,{ref:I,value:"article",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto overflow-x-hidden pt-3 text-sm",children:u?l?p(jt,{report:l,onCancel:()=>f(!1),onPublishSuccess:()=>f(!1)}):p("p",{className:"rounded-lg border border-slate-300 border-dashed bg-slate-50 p-4 text-slate-600 dark:border-slate-600 dark:bg-slate-900/40 dark:text-slate-300",children:m.loading}):t&&p(Ts,{report:l,isLoading:D,error:L,selectedItem:t,autoMarkRead:n,isActive:a,onCommentAdded:U,userId:o,onDoubleClick:k?()=>f(!0):void 0})}),p(Ve,{value:"relations",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto pt-3 text-sm",children:p("p",{className:"rounded-lg border border-slate-300 border-dashed bg-slate-50 p-4 text-slate-600 dark:border-slate-600 dark:bg-slate-900/40 dark:text-slate-300",children:m.relationsEmpty})})]})]});return e?p("aside",{"data-testid":"daily-report-side-pane","data-report-id":t?.reportHubId,className:"hidden h-full min-h-0 w-full min-w-0 flex-1 flex-col gap-3 rounded-2xl border border-slate-200 bg-white p-4 shadow-sm sm:flex dark:border-slate-700 dark:bg-slate-900/70",style:r,children:N}):p("div",{"data-testid":"daily-report-side-pane","data-report-id":t?.reportHubId,className:"flex min-h-0 flex-1 flex-col gap-3 overflow-hidden",children:N})},je=({className:e="w-32"})=>p("div",{"data-skeleton":!0,className:`h-4 animate-pulse rounded bg-slate-200 dark:bg-slate-700 ${e}`}),Ts=({report:e,isLoading:t,error:r,selectedItem:n,autoMarkRead:a=!1,isActive:o=!0,onCommentAdded:s,userId:d,onDoubleClick:u})=>{let{toggleStar:f,toggleRead:i,deleteReport:m,user:R}=Re(),{labels:l,sourceTypeConfigs:L}=F(),{uiComments:D,handleAddComment:I,handleDeleteComment:w,pendingDeleteId:S,setPendingDeleteId:k,resolvedIdMap:U}=Bt(e,R,d),{handleToggleRead:H}=Cs(e,t,a,o,i),B=n.sourceType??e?.sourceType,T=He(B,L),N=B?B.toLowerCase()!=="internal":!1,_=T?.allowComment??!N,O=ee(null),z=ee(D.length);oe(()=>{let pe=e?.reportHubId??null;if(pe!==O.current){O.current=pe,z.current=D.length;return}D.length>z.current&&s?.(),z.current=D.length},[D.length,e?.reportHubId,s]);let ue=async pe=>{await I(pe)},De=qt(()=>e?.content?e.content.replace(/<br\s*\/?\s*>/gi,`
4
4
  `).replace(/<\/p>/gi,`
5
- `).replace(/<[^>]+>/g,""):null,[e]),ae=async()=>{if(!e)return;let pe=!e.isStarred;try{await u(e.reportHubId,pe,e.date??"")}catch{}},ge=async()=>{if(e&&confirm(d.confirmDelete))try{await f(e.reportHubId,e.date??"")}catch{alert(d.deleteFailed)}};if(r)return p("p",{className:"text-red-500",children:d.reportLoadFailed(n.reportHubId)});let te=!e,me=e?.isStarred??!1,J=e?.isRead??!1,se=!!(l&&e?.userId===l),Ce=D.length>0;return Q("div",{className:"relative space-y-4 text-slate-700 dark:text-slate-200",onDoubleClick:m,children:[!te&&e&&Q("div",{className:"absolute top-0 right-2 z-10 flex items-center justify-end gap-3",children:[p("button",{type:"button",onClick:()=>F(!1),className:"rounded text-lg leading-none transition-transform focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 active:scale-95",title:J?d.markUnread:d.markRead,"data-detail-read-button":e.reportHubId,children:J?p("span",{className:"text-slate-300 hover:text-blue-500",children:"\u2713"}):p(et,{className:"hover:text-blue-600"})}),p("button",{type:"button",onClick:ae,className:"rounded text-lg leading-none transition-transform focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 active:scale-95",title:me?d.starRemove:d.starAdd,"data-detail-star-button":e.reportHubId,children:me?p("span",{className:"text-yellow-400",children:"\u2605"}):p("span",{className:"text-slate-300 hover:text-yellow-400",children:"\u2606"})}),se&&p("button",{type:"button",onClick:ge,"data-detail-delete-button":e.reportHubId,className:"rounded text-lg leading-none transition-transform focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 active:scale-95",title:d.deleteReport,children:p(ns,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})})]}),Q("div",{className:"flex items-baseline",children:[p("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:d.subject}),p("div",{className:"flex-1 pr-20",children:te?p(Ve,{className:"w-3/4"}):p("span",{className:"fade-in animate-in text-sm duration-500",children:ie(e?.subject)})})]}),Q("div",{className:"flex items-baseline",children:[p("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:d.customer}),p("div",{className:"flex-1",children:te?p(Ve,{className:"w-1/2"}):p("span",{className:"fade-in animate-in text-sm duration-500",children:ie(e?.customerName)})})]}),Q("div",{className:"space-y-2",children:[p("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:d.content}),p("div",{className:"min-h-22 rounded-lg bg-slate-50 p-3 text-sm leading-relaxed dark:bg-slate-800/40",children:te?Q("div",{className:"space-y-2",children:[p(Ve,{className:"w-full"}),p(Ve,{className:"w-11/12"}),p(Ve,{className:"w-4/5"})]}):De?p("div",{className:"fade-in animate-in whitespace-pre-wrap duration-500",children:De}):p("p",{className:"fade-in animate-in text-slate-500 duration-500 dark:text-slate-400",children:d.contentEmpty})})]}),Q("div",{className:"flex items-baseline",children:[p("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:d.visitTime}),p("div",{className:"flex-1",children:te?p(Ve,{className:"w-1/3"}):Q("span",{className:"fade-in animate-in text-sm duration-500",children:[ie(e?.visitTimeFrom)," ",e?.visitTimeFrom&&e?.visitTimeTo?"-":""," ",ie(e?.visitTimeTo)]})})]}),e&&p(dt,{attachments:e.attachments}),e&&Q("div",{className:"fade-in animate-in space-y-2 border-slate-100 border-t pt-4 duration-500 dark:border-slate-800",children:[p("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:d.comments}),Ce&&p(ut,{comments:D,reportHubId:e.reportHubId,businessDate:e.date??"",onDeleteComment:C,pendingDeleteId:S,onPendingDeleteIdChange:P,resolvedIdMap:V}),A&&p(mt,{reportHubId:e.reportHubId,businessDate:e.date??"",onAddComment:ue})]})]})},us=({isOpen:e,selectedItem:t,onClose:r,autoMarkRead:n=!1,userId:a})=>{let{labels:o}=_(),s=ee(null),l=ee(null),{isBlocked:m,requestBlock:u,reset:i}=Qo(),{report:f,error:x,isLoading:d}=Be(t?.reportHubId??-1,t?.businessDate??null),D=es(e,t?{item:t,detail:{report:f,error:x,isLoading:d}}:null)?.item??null,{overlayRef:N,overlayStyle:C,attemptClose:S,isSwiping:P}=Zo({isOpen:e,onClose:r,isCloseBlocked:xe(()=>m,[m]),skipWhenTextSelected:!0}),V=Ln(()=>S());return oe(()=>{e?requestAnimationFrame(()=>l.current?.focus()):(s.current?.contains(document.activeElement)&&document.activeElement.blur(),i())},[e,i]),D?Q("div",{ref:s,"data-daily-report-mobile-overlay":"true",className:`fixed top-0 bottom-0 left-0 z-[100] flex touch-manipulation transition-[visibility] duration-200 ${e?"visible":"invisible"} ${e&&!P?"pointer-events-auto":"pointer-events-none"}`,style:{right:"var(--aqdr-overlay-right, 0px)",transition:"right 0.5s, visibility 0.2s"},"aria-hidden":!e,children:[p("button",{type:"button","aria-label":o.overlayBackdrop,className:`absolute inset-0 touch-manipulation bg-slate-900/50 transition-opacity duration-200 focus:outline-none ${e?"opacity-100":"opacity-0"}`,...V}),p("aside",{role:"dialog","aria-modal":"true","aria-label":o.overlayDialog,className:`relative ml-auto flex h-full w-full max-w-full transform touch-none bg-white shadow-xl transition-transform duration-200 ease-out dark:bg-slate-900/95 ${e?"pointer-events-auto":"pointer-events-none"}`,ref:N,onKeyDown:F=>{F.key==="Escape"&&(F.preventDefault(),S())},style:C,children:Q("div",{className:"flex h-full w-full flex-col gap-3 p-4",children:[p(Xo.Provider,{value:{isBlocked:m,requestBlock:u},children:p(An,{selectedItem:D,autoMarkRead:n,isActive:e,userId:a})}),p("div",{className:"mt-2 flex justify-start",children:p("button",{type:"button",ref:l,"data-overlay-interactive":"true",className:"touch-manipulation rounded-full border border-slate-300 px-4 py-2 font-medium text-slate-600 text-sm shadow-sm transition-colors hover:bg-slate-100 dark:border-slate-600 dark:text-slate-200 dark:hover:bg-slate-800",onClick:()=>S(),children:o.close})})]})})]}):null},ms=e=>e?e.replace(/<br\s*\/?\s*>/gi,`
5
+ `).replace(/<[^>]+>/g,""):null,[e]),ae=async()=>{if(!e)return;let pe=!e.isStarred;try{await f(e.reportHubId,pe,e.date??"")}catch{}},ge=async()=>{if(e&&confirm(l.confirmDelete))try{await m(e.reportHubId,e.date??"")}catch{alert(l.deleteFailed)}};if(r)return p("p",{className:"text-red-500",children:l.reportLoadFailed(n.reportHubId)});let te=!e,me=e?.isStarred??!1,J=e?.isRead??!1,se=!!(d&&e?.userId===d),Ce=D.length>0;return Q("div",{className:"relative space-y-4 text-slate-700 dark:text-slate-200",onDoubleClick:u,children:[!te&&e&&Q("div",{className:"absolute top-0 right-2 z-10 flex items-center justify-end gap-3",children:[p("button",{type:"button",onClick:()=>H(!1),className:"rounded text-lg leading-none transition-transform focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 active:scale-95",title:J?l.markUnread:l.markRead,"data-detail-read-button":e.reportHubId,children:J?p("span",{className:"text-slate-300 hover:text-blue-500",children:"\u2713"}):p(et,{className:"hover:text-blue-600"})}),p("button",{type:"button",onClick:ae,className:"rounded text-lg leading-none transition-transform focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 active:scale-95",title:me?l.starRemove:l.starAdd,"data-detail-star-button":e.reportHubId,children:me?p("span",{className:"text-yellow-400",children:"\u2605"}):p("span",{className:"text-slate-300 hover:text-yellow-400",children:"\u2606"})}),se&&p("button",{type:"button",onClick:ge,"data-detail-delete-button":e.reportHubId,className:"rounded text-lg leading-none transition-transform focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 active:scale-95",title:l.deleteReport,children:p(vs,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})})]}),Q("div",{className:"flex items-baseline",children:[p("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:l.subject}),p("div",{className:"flex-1 pr-20",children:te?p(je,{className:"w-3/4"}):p("span",{className:"fade-in animate-in text-sm duration-500",children:ie(e?.subject)})})]}),Q("div",{className:"flex items-baseline",children:[p("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:l.customer}),p("div",{className:"flex-1",children:te?p(je,{className:"w-1/2"}):p("span",{className:"fade-in animate-in text-sm duration-500",children:ie(e?.customerName)})})]}),Q("div",{className:"space-y-2",children:[p("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:l.content}),p("div",{className:"min-h-22 rounded-lg bg-slate-50 p-3 text-sm leading-relaxed dark:bg-slate-800/40",children:te?Q("div",{className:"space-y-2",children:[p(je,{className:"w-full"}),p(je,{className:"w-11/12"}),p(je,{className:"w-4/5"})]}):De?p("div",{className:"fade-in animate-in whitespace-pre-wrap duration-500",children:De}):p("p",{className:"fade-in animate-in text-slate-500 duration-500 dark:text-slate-400",children:l.contentEmpty})})]}),Q("div",{className:"flex items-baseline",children:[p("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:l.visitTime}),p("div",{className:"flex-1",children:te?p(je,{className:"w-1/3"}):Q("span",{className:"fade-in animate-in text-sm duration-500",children:[ie(e?.visitTimeFrom)," ",e?.visitTimeFrom&&e?.visitTimeTo?"-":""," ",ie(e?.visitTimeTo)]})})]}),e&&p(dt,{attachments:e.attachments}),e&&Q("div",{className:"fade-in animate-in space-y-2 border-slate-100 border-t pt-4 duration-500 dark:border-slate-800",children:[p("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:l.comments}),Ce&&p(ut,{comments:D,reportHubId:e.reportHubId,businessDate:e.date??"",onDeleteComment:w,pendingDeleteId:S,onPendingDeleteIdChange:k,resolvedIdMap:U}),_&&p(mt,{reportHubId:e.reportHubId,businessDate:e.date??"",onAddComment:ue})]})]})},Es=({isOpen:e,selectedItem:t,onClose:r,autoMarkRead:n=!1,userId:a})=>{let{labels:o}=F(),s=ee(null),d=ee(null),{isBlocked:u,requestBlock:f,reset:i}=bs(),{report:m,error:R,isLoading:l}=$e(t?.reportHubId??-1,t?.businessDate??null),D=ys(e,t?{item:t,detail:{report:m,error:R,isLoading:l}}:null)?.item??null,{overlayRef:I,overlayStyle:w,attemptClose:S,isSwiping:k}=gs({isOpen:e,onClose:r,isCloseBlocked:xe(()=>u,[u]),skipWhenTextSelected:!0}),U=$n(()=>S());return oe(()=>{e?requestAnimationFrame(()=>d.current?.focus()):(s.current?.contains(document.activeElement)&&document.activeElement.blur(),i())},[e,i]),D?Q("div",{ref:s,"data-daily-report-mobile-overlay":"true",className:`fixed top-0 bottom-0 left-0 z-[100] flex touch-manipulation transition-[visibility] duration-200 ${e?"visible":"invisible"} ${e&&!k?"pointer-events-auto":"pointer-events-none"}`,style:{right:"var(--aqdr-overlay-right, 0px)",transition:"right 0.5s, visibility 0.2s"},"aria-hidden":!e,children:[p("button",{type:"button","aria-label":o.overlayBackdrop,className:`absolute inset-0 touch-manipulation bg-slate-900/50 transition-opacity duration-200 focus:outline-none ${e?"opacity-100":"opacity-0"}`,...U}),p("aside",{role:"dialog","aria-modal":"true","aria-label":o.overlayDialog,className:`relative ml-auto flex h-full w-full max-w-full transform touch-none bg-white shadow-xl transition-transform duration-200 ease-out dark:bg-slate-900/95 ${e?"pointer-events-auto":"pointer-events-none"}`,ref:I,onKeyDown:H=>{H.key==="Escape"&&(H.preventDefault(),S())},style:w,children:Q("div",{className:"flex h-full w-full flex-col gap-3 p-4",children:[p(fs.Provider,{value:{isBlocked:u,requestBlock:f},children:p(jn,{selectedItem:D,autoMarkRead:n,isActive:e,userId:a})}),p("div",{className:"mt-2 flex justify-start",children:p("button",{type:"button",ref:d,"data-overlay-interactive":"true",className:"touch-manipulation rounded-full border border-slate-300 px-4 py-2 font-medium text-slate-600 text-sm shadow-sm transition-colors hover:bg-slate-100 dark:border-slate-600 dark:text-slate-200 dark:hover:bg-slate-800",onClick:()=>S(),children:o.close})})]})})]}):null},ks=e=>e?e.replace(/<br\s*\/?\s*>/gi,`
6
6
  `).replace(/<\/p>/gi,`
7
- `).replace(/<[^>]+>/g,"").split(/\r?\n/).map(t=>t.replace(/\u3000/g," ").trim()).filter(t=>t.length>0).slice(0,zr):[],On=as(({item:e,index:t,setSize:r,isActive:n,onSelect:a})=>{let{labels:o,sourceTypeConfigs:s}=_(),{toggleStar:l,toggleRead:m,removeStaleItem:u}=ve(),{report:i,error:f,isLoading:x,isRefetching:d}=Be(e.reportHubId,e.businessDate),L={role:"listitem","aria-posinset":t+1,"aria-setsize":r},D=ee(!1);d&&(D.current=!0),oe(()=>{!(i||x||d||f)&&D.current&&e.reportHubId>0&&u(e.reportHubId)},[i,x,d,f,e.reportHubId,u]);let N=Ln(()=>a(e.reportHubId));if(f)return p("div",{...L,className:"px-2 pb-3",style:{height:We},children:p("div",{className:"flex h-full items-center justify-center rounded-2xl border border-red-200 bg-red-50 p-4 text-red-700 text-sm dark:border-red-900/50 dark:bg-red-950/40 dark:text-red-300",children:p("p",{children:o.reportSummaryLoadFailed(e.reportHubId)})})});if(x)return p(ds,{...L});if(!i)return p("div",{...L,className:"px-2 pb-3",style:{height:We},children:p("div",{className:"flex h-full items-center justify-center rounded-2xl border border-slate-200 bg-slate-50 p-4 text-slate-500 text-sm dark:border-slate-700 dark:bg-slate-900/40 dark:text-slate-400",children:p("p",{children:o.reportNotFound})})});let C=ms(i.content??null).map((I,k)=>({line:I,key:`${e.reportHubId}-line-${k}`})),S=ie(i.employeeName??i.author),P=le(i.date),V=async I=>{I.stopPropagation();let k=!i.isStarred;try{await l(i.reportHubId,k,i.date??"")}catch{}},F=async I=>{I.stopPropagation();let k=!i.isRead;try{await m(i.reportHubId,k,i.date??"")}catch{}},B=I=>{I.stopPropagation()};return p("div",{...L,className:"px-2 pb-3",style:{height:We},children:Q("div",{"data-daily-report-button":e.reportHubId,className:`flex h-full w-full in-[[data-scrolling]]:transform-none cursor-pointer select-none flex-col rounded-2xl border in-[[data-scrolling]]:border-slate-200 bg-white p-4 text-left in-[[data-scrolling]]:shadow-sm shadow-sm in-[[data-scrolling]]:transition-none transition-[transform,border-color,box-shadow] duration-200 hover:-translate-y-0.5 hover:border-blue-300 hover:shadow-lg dark:bg-slate-900/70 ${n?"border-blue-300 shadow-md ring-2 ring-blue-200 dark:border-blue-500/70 dark:ring-blue-500/40":"border-slate-200 dark:border-slate-700"}`,style:{touchAction:"manipulation"},role:"button",tabIndex:0,"aria-current":n?"true":void 0,"aria-pressed":n,"aria-label":`${P} ${S}`,...N,children:[Q("div",{className:"mb-3 flex items-center gap-3 text-slate-600 text-sm",children:[p("span",{className:"inline-flex shrink-0 items-center rounded-full bg-slate-100 px-3 py-1 font-semibold text-xs dark:bg-slate-800 dark:text-slate-200",children:p("span",{className:"whitespace-nowrap font-medium text-slate-900 dark:text-slate-100",children:P})}),p("span",{className:"inline-flex min-w-0 max-w-full items-center rounded-full bg-slate-100 px-3 py-1 font-semibold text-xs dark:bg-slate-800 dark:text-slate-200",children:p("span",{className:"truncate font-medium text-slate-900 dark:text-slate-100",children:S})}),Q("div",{className:"ml-auto flex items-center gap-1.5",children:[p(it,{count:i.attachments.length,label:o.attachments}),(()=>{let I=e.sourceType??i?.sourceType,k=Me(I,s);return k?p("span",{className:Y("inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",k.badgeClassName),children:k.label}):null})(),p("button",{type:"button",title:i.isStarred?o.starRemove:o.starAdd,"aria-label":i.isStarred?o.starRemove:o.starAdd,"aria-pressed":i.isStarred,"data-list-star-button":e.reportHubId,onClick:V,onPointerDown:B,onPointerUp:B,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 dark:hover:bg-slate-700",children:i.isStarred?p(En,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):p(En,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),p("button",{type:"button",title:i.isRead?o.markUnread:o.markRead,"aria-label":i.isRead?o.markUnread:o.markRead,"aria-pressed":i.isRead,"data-list-read-button":e.reportHubId,onClick:F,onPointerDown:B,onPointerUp:B,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 dark:hover:bg-slate-700",children:i.isRead?p(rs,{className:"h-3.5 w-3.5 text-blue-500"}):p(et,{className:"text-xs"})})]})]}),p("div",{className:"space-y-1 text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:C.length>0?C.map(({line:I,key:k})=>p("p",{className:"wrap-break-word line-clamp-1",children:I},k)):p("p",{children:o.contentEmptyPreview})})]})})});On.displayName="ListReportItem";import{useEffect as Un}from"react";import fs from"lucide-react/dist/esm/icons/plus.js";import bs from"lucide-react/dist/esm/icons/refresh-cw.js";import gs from"lucide-react/dist/esm/icons/rotate-cw.js";import{useEffect as _n,useMemo as ys,useRef as vr,useState as Fn}from"react";import{useSearchParams as hs}from"react-router";import*as ot from"@radix-ui/react-switch";import*as Hn from"react";import{jsx as Mn}from"react/jsx-runtime";var Yt=Hn.forwardRef(({className:e,...t},r)=>Mn(ot.Root,{className:Y("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",e),...t,ref:r,children:Mn(ot.Thumb,{className:Y("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));Yt.displayName=ot.Root.displayName;import{Fragment as Rs,jsx as Z,jsxs as Le}from"react/jsx-runtime";var vs="px-2 py-1 font-medium text-slate-600 text-xs transition-colors rounded-sm data-[state=active]:bg-white data-[state=active]:text-slate-900 data-[state=active]:shadow-xs dark:text-slate-300 dark:data-[state=active]:bg-slate-800 dark:data-[state=active]:text-slate-100",Bn=({userId:e})=>{let[t,r]=Fn(!1),{labels:n,renderHeader:a,showDevControls:o}=_(),{isSseEnabled:s,toggleSse:l,createReport:m,items:u,refetchData:i,clearCacheAndRefetch:f}=ve(),[x]=hs(),d=rt(u.length),L=vr(0),D=vr({topItem:null,anchorReportHubId:null,measuredHeights:new Map}),[N,C]=Fn(()=>u.length===0?null:u[0].reportHubId),S=vr(!1);_n(()=>{!S.current&&u.length>0&&(S.current=!0,C(k=>k??u[0].reportHubId))},[u]);let P=async()=>{await i()},V=async()=>{await f()},F=async()=>{let A=x.get("businessDate")||or(),O=await m(A);C(O)};_n(()=>{localStorage.getItem("daily-report-auto-read")==="true"&&r(!0)},[]);let B=k=>{r(k),localStorage.setItem("daily-report-auto-read",String(k))},I=ys(()=>[{value:"list",label:n.tabList,content:Z(Pn,{dailyReportItems:u,autoMarkRead:t,selectedReportHubId:N,onSelectItem:C,userId:e,scrollOffsetRef:L})},{value:"tree",label:n.tabTree,content:Z("div",{className:"flex flex-1 items-center justify-center rounded-lg border border-slate-300 border-dashed bg-white p-6 text-slate-500 transition-colors dark:border-slate-700 dark:bg-slate-900/70 dark:text-slate-300",children:n.treeComingSoon})},{value:"detailList",label:n.tabDetailList,content:Z(Sn,{dailyReportItems:u,userId:e,selectedItemId:N,onSelectItem:C,scrollRestoreRef:D})}],[u,t,N,e,n]);return Le(Rs,{children:[a({title:n.title,annotation:Le("div",{className:"flex flex-wrap items-center gap-2 leading-1",children:[Z(jt,{}),Z("span",{className:"tabular-nums",children:n.totalCount(d)}),Z("span",{children:n.debounce(Fe)})]})}),Z("div",{className:"h-full bg-slate-50 dark:bg-slate-950",children:Z("div",{className:"flex h-full w-full max-w-6xl flex-1 flex-col p-1",children:Le(Kt,{defaultValue:"list",className:"flex h-full flex-1 flex-col",children:[Le("div",{className:"flex items-center justify-between gap-1.5 rounded-md border border-slate-200/80 bg-slate-100/60 p-0.5 transition-colors dark:border-slate-800 dark:bg-slate-900/60 dark:text-slate-200",children:[Z(nt,{className:"scrollbar-none flex h-auto touch-pan-x flex-nowrap gap-0.5 overflow-x-auto overflow-y-hidden bg-transparent p-0",children:I.map(({value:k,label:A})=>Z(at,{value:k,className:vs,children:A},k))}),Le("div",{className:"flex shrink-0 items-center gap-1.5 px-1",children:[Le(Te,{size:"sm",onClick:F,className:"flex h-6 items-center gap-1 rounded bg-amber-600 px-2 font-medium text-[11px] text-white shadow-xs hover:bg-amber-700 dark:bg-amber-600 dark:hover:bg-amber-700",title:n.createReportTitle,children:[Z(fs,{className:"h-3 w-3"}),Z("span",{children:n.createReport})]}),o&&Le("div",{className:"hidden h-5.5 items-center gap-1 rounded border border-amber-300/70 bg-amber-50/60 px-1 text-slate-600 sm:flex dark:border-amber-700/50 dark:bg-amber-950/40 dark:text-slate-300",title:n.devControls,"data-testid":"dev-controls-toolbox",children:[Z("span",{className:"select-none font-bold font-mono text-[9px] text-amber-800 uppercase dark:text-amber-200",children:"dev"}),Z("div",{className:"-mx-0.5 flex items-center",title:n.devSseToggle,children:Z(Yt,{id:"sse-mode",checked:s,onCheckedChange:l,className:"origin-center scale-50"})}),Z(Te,{variant:"ghost",size:"icon",onClick:P,className:"h-4 w-4 p-0 text-slate-600 hover:bg-amber-200/60 hover:text-slate-900 dark:text-slate-300 dark:hover:bg-amber-800/60 dark:hover:text-slate-100",title:n.devReload,"data-testid":"dev-reload-btn",children:Z(gs,{className:"h-2.5 w-2.5"})}),Z(Te,{variant:"ghost",size:"icon",onClick:V,className:"h-4 w-4 p-0 text-amber-800 hover:bg-amber-200/60 hover:text-amber-950 dark:text-amber-300 dark:hover:bg-amber-800/60 dark:hover:text-amber-100",title:n.devClearCache,"data-testid":"dev-clear-cache-btn",children:Z(bs,{className:"h-2.5 w-2.5"})})]}),Le("div",{className:"flex items-center gap-0.5 pl-0.5",title:n.autoReadTitle,children:[Z(Yt,{id:"auto-read-mode",checked:t,onCheckedChange:B,className:"origin-center scale-50"}),Z(Ze,{htmlFor:"auto-read-mode",className:"cursor-pointer select-none text-[10px] text-slate-500 dark:text-slate-400",children:n.autoRead})]})]})]}),I.map(({value:k,content:A})=>Z($e,{value:k,className:"mt-0 flex h-full min-h-0 flex-1 flex-col",children:A},k))]})})})]})};import{Fragment as $n,jsx as ne,jsxs as Gt}from"react/jsx-runtime";var xs=()=>{let{labels:e,renderHeader:t}=_();return Gt($n,{children:[t({title:e.title,annotation:ne("span",{className:"font-bold text-red-500",children:e.loadErrorBadge})}),ne("div",{className:"h-full bg-slate-50 p-2",children:ne("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:Gt("div",{className:"flex h-full flex-1 flex-col items-center justify-center gap-4 rounded-lg border border-red-200 bg-white p-4 text-slate-500 shadow-sm dark:border-red-900 dark:bg-slate-900/70 dark:text-slate-400",children:[ne("p",{className:"font-medium text-red-600",children:e.loadError}),ne("button",{type:"button","data-testid":"daily-report-load-error-retry",onClick:()=>Ot(),className:"rounded bg-slate-100 px-4 py-2 text-slate-700 text-sm hover:bg-slate-200 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-slate-700",children:e.reload})]})})})]})},Ds=()=>{let{labels:e,renderHeader:t}=_();return Gt($n,{children:[t({title:e.title,annotation:Gt("div",{className:"flex flex-wrap items-center gap-2 leading-none",children:[ne(jt,{}),ne("span",{children:e.totalCountLoading}),ne("span",{children:e.debounce(Fe)})]})}),ne("div",{className:"h-full bg-slate-50 p-2",children:ne("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:ne("div",{className:"flex h-full flex-1 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-500 shadow-sm dark:border-slate-700 dark:bg-slate-900/70 dark:text-slate-300",children:e.loadingIds})})})]})},ws=({user:e,userId:t})=>{let{apiBasePath:r}=_(),n=Ue();Un(()=>{Et({apiBasePath:r,userKey:t??null})},[r,t]),Un(()=>{n.phase==="auth-required"&&on()},[n.phase]);let a=n.items.length>0||n.phase==="complete";return ne(gn,{children:ne(yn,{user:e,initialItems:n.items,userId:t,children:a?ne(Bn,{userId:t}):n.phase==="failed"?ne(xs,{}):ne(Ds,{})},t??"anonymous")})},mc=({config:e,...t})=>ne(Pr,{config:e,children:ne(ws,{...t})});var gc=({actionResult:e,actionStatus:t,currentUrl:r,defaultShouldRevalidate:n,formAction:a,formData:o,formEncType:s,formMethod:l,json:m,nextUrl:u,text:i})=>{if(!n)return!1;if(!(r.pathname===u.pathname&&r.search===u.search&&r.hash===u.hash))return n;if(o){let d=o.get("intent");if(d==="toggleRead"||d==="toggleStar"||d==="addComment"||d==="deleteComment"||d==="create"||d==="update"||d==="publish"||d==="delete")return!1}return e!==void 0||t!==void 0||a!==void 0||o!==void 0||s!==void 0||l!==void 0||m!==void 0||i!==void 0?n:!1},yc=e=>{let t=async r=>{ln();let n=await r.serverLoader(),a=n.userId;return sn({apiBasePath:e?.apiBasePath,userKey:typeof a=="string"?a:null}),n};return t.hydrate=!0,t};export{st as BusinessDayThumbOverlay,St as CONTENT_DRAG_POINTER_INPUTS,Fe as DAILY_REPORT_FETCH_DEBOUNCE_MS,Ir as DAILY_REPORT_LABEL_CATALOGS,Xt as DAILY_REPORT_LABEL_KEYS,sr as DEFAULT_ITEM_HEIGHT,yn as DailyReportActionProvider,it as DailyReportAttachmentIndicator,dt as DailyReportAttachmentList,M as DailyReportCache,mt as DailyReportCommentForm,ut as DailyReportCommentList,Pr as DailyReportConfigProvider,Sn as DailyReportDetailList,Ut as DailyReportEditForm,gn as DailyReportErrorProvider,Nt as DailyReportIdsStreamClient,jt as DailyReportIdsStreamStatus,Pn as DailyReportList,xs as DailyReportLoadError,Ds as DailyReportLoading,mc as DailyReportPage,Hr as DailyReportPostedComment,Bn as DailyReportResolvedContent,ii as EMPTY_DETAIL,vt as EMPTY_ITEM,yt as FAST_SCROLL_INERTIA_OPTIONS,gt as FAST_SCROLL_WHEEL_MULTIPLIER,We as ITEM_CONTAINER_HEIGHT,bt as ITEM_VERTICAL_PADDING,zr as MAX_PREVIEW_LINES,ht as PREFETCH_LOOKAHEAD,jr as PREFETCH_MAX_DATES,Dt as SCROLL_BAR_WIDTH,Vr as SSE_INITIAL_CONNECT_DEFER_MS,wt as TAP_SCROLL_CIRCLE_OPTIONS,et as UnreadIndicator,xt as VIRTUAL_SCROLL_OVERSCAN_COUNT,Rt as WHEEL_RESET_TIMEOUT_MS,Ge as acquireMutationLock,Qr as applyBroadcastReportUpdate,Ae as applyDailyReportServerUpdates,sn as bootstrapDailyReportIdsStreamSession,Ye as clearDailyReportCache,yc as createDailyReportClientLoader,gc as dailyReportShouldRevalidate,rr as defaultDailyReportClientConfig,Tt as deleteDailyReportCache,Et as ensureDailyReportIdsStreamSession,ye as getCachedReport,dn as getDailyReportIdsStreamSessionUserKey,ln as primeDailyReportIdsStreamSession,pr as refreshDailyReportIdsStream,Jr as registerRecentDeletion,qe as releaseMutationLock,on as reloadDocument,At as removeDailyReportIdsStreamItem,ki as resetDailyReportIdsStreamSessionForTesting,er as resolveDailyReportLabels,Me as resolveSourceTypeConfig,Ot as retryDailyReportIdsStream,Xr as subscribeCacheReady,he as updateDailyReportCache,Xe as upsertDailyReportIdsStreamItem,rt as useAnimatedNumber,ve as useDailyReportActionContext,Ht as useDailyReportComments,_ as useDailyReportConfig,Be as useDailyReportDetail,bn as useDailyReportErrorSurface,Ue as useDailyReportIdsStream,Zr as useDailyReportPrefetch,rn as useDailyReportSseConnection,Ft as useDynamicViewportHeight,qr as writeCache};
7
+ `).replace(/<[^>]+>/g,"").split(/\r?\n/).map(t=>t.replace(/\u3000/g," ").trim()).filter(t=>t.length>0).slice(0,Xr):[],zn=xs(({item:e,index:t,setSize:r,isActive:n,onSelect:a})=>{let{labels:o,sourceTypeConfigs:s}=F(),{toggleStar:d,toggleRead:u,removeStaleItem:f}=Re(),{report:i,error:m,isLoading:R,isRefetching:l}=$e(e.reportHubId,e.businessDate),L={role:"listitem","aria-posinset":t+1,"aria-setsize":r},D=ee(!1);l&&(D.current=!0),oe(()=>{!(i||R||l||m)&&D.current&&e.reportHubId>0&&f(e.reportHubId)},[i,R,l,m,e.reportHubId,f]);let I=$n(()=>a(e.reportHubId));if(m)return p("div",{...L,className:"px-2 pb-3",style:{height:We},children:p("div",{className:"flex h-full items-center justify-center rounded-2xl border border-red-200 bg-red-50 p-4 text-red-700 text-sm dark:border-red-900/50 dark:bg-red-950/40 dark:text-red-300",children:p("p",{children:o.reportSummaryLoadFailed(e.reportHubId)})})});if(R)return p(Is,{...L});if(!i)return p("div",{...L,className:"px-2 pb-3",style:{height:We},children:p("div",{className:"flex h-full items-center justify-center rounded-2xl border border-slate-200 bg-slate-50 p-4 text-slate-500 text-sm dark:border-slate-700 dark:bg-slate-900/40 dark:text-slate-400",children:p("p",{children:o.reportNotFound})})});let w=ks(i.content??null).map((T,N)=>({line:T,key:`${e.reportHubId}-line-${N}`})),S=ie(i.employeeName??i.author),k=le(i.date),U=async T=>{T.stopPropagation();let N=!i.isStarred;try{await d(i.reportHubId,N,i.date??"")}catch{}},H=async T=>{T.stopPropagation();let N=!i.isRead;try{await u(i.reportHubId,N,i.date??"")}catch{}},B=T=>{T.stopPropagation()};return p("div",{...L,className:"px-2 pb-3",style:{height:We},children:Q("div",{"data-daily-report-button":e.reportHubId,className:`flex h-full w-full in-[[data-scrolling]]:transform-none cursor-pointer select-none flex-col rounded-2xl border in-[[data-scrolling]]:border-slate-200 bg-white p-4 text-left in-[[data-scrolling]]:shadow-sm shadow-sm in-[[data-scrolling]]:transition-none transition-[transform,border-color,box-shadow] duration-200 hover:-translate-y-0.5 hover:border-blue-300 hover:shadow-lg dark:bg-slate-900/70 ${n?"border-blue-300 shadow-md ring-2 ring-blue-200 dark:border-blue-500/70 dark:ring-blue-500/40":"border-slate-200 dark:border-slate-700"}`,style:{touchAction:"manipulation"},role:"button",tabIndex:0,"aria-current":n?"true":void 0,"aria-pressed":n,"aria-label":`${k} ${S}`,...I,children:[Q("div",{className:"mb-3 flex items-center gap-3 text-slate-600 text-sm",children:[p("span",{className:"inline-flex shrink-0 items-center rounded-full bg-slate-100 px-3 py-1 font-semibold text-xs dark:bg-slate-800 dark:text-slate-200",children:p("span",{className:"whitespace-nowrap font-medium text-slate-900 dark:text-slate-100",children:k})}),p("span",{className:"inline-flex min-w-0 max-w-full items-center rounded-full bg-slate-100 px-3 py-1 font-semibold text-xs dark:bg-slate-800 dark:text-slate-200",children:p("span",{className:"truncate font-medium text-slate-900 dark:text-slate-100",children:S})}),Q("div",{className:"ml-auto flex items-center gap-1.5",children:[p(it,{count:i.attachments.length,label:o.attachments}),(()=>{let T=e.sourceType??i?.sourceType,N=He(T,s);return N?p("span",{className:Y("inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",N.badgeClassName),children:N.label}):null})(),p("button",{type:"button",title:i.isStarred?o.starRemove:o.starAdd,"aria-label":i.isStarred?o.starRemove:o.starAdd,"aria-pressed":i.isStarred,"data-list-star-button":e.reportHubId,onClick:U,onPointerDown:B,onPointerUp:B,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 dark:hover:bg-slate-700",children:i.isStarred?p(Un,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):p(Un,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),p("button",{type:"button",title:i.isRead?o.markUnread:o.markRead,"aria-label":i.isRead?o.markUnread:o.markRead,"aria-pressed":i.isRead,"data-list-read-button":e.reportHubId,onClick:H,onPointerDown:B,onPointerUp:B,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 dark:hover:bg-slate-700",children:i.isRead?p(Rs,{className:"h-3.5 w-3.5 text-blue-500"}):p(et,{className:"text-xs"})})]})]}),p("div",{className:"space-y-1 text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:w.length>0?w.map(({line:T,key:N})=>p("p",{className:"wrap-break-word line-clamp-1",children:T},N)):p("p",{children:o.contentEmptyPreview})})]})})});zn.displayName="ListReportItem";import{useEffect as Jn,useRef as Fs}from"react";import Ls from"lucide-react/dist/esm/icons/plus.js";import As from"lucide-react/dist/esm/icons/refresh-cw.js";import Ps from"lucide-react/dist/esm/icons/rotate-cw.js";import{useEffect as Wn,useMemo as _s,useRef as Cr,useState as Gn}from"react";import{useSearchParams as Os}from"react-router";import*as ot from"@radix-ui/react-switch";import*as Yn from"react";import{jsx as Kn}from"react/jsx-runtime";var Jt=Yn.forwardRef(({className:e,...t},r)=>Kn(ot.Root,{className:Y("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",e),...t,ref:r,children:Kn(ot.Thumb,{className:Y("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));Jt.displayName=ot.Root.displayName;import{Fragment as Hs,jsx as Z,jsxs as Le}from"react/jsx-runtime";var Ms="px-2 py-1 font-medium text-slate-600 text-xs transition-colors rounded-sm data-[state=active]:bg-white data-[state=active]:text-slate-900 data-[state=active]:shadow-xs dark:text-slate-300 dark:data-[state=active]:bg-slate-800 dark:data-[state=active]:text-slate-100",qn=({userId:e})=>{let[t,r]=Gn(!1),{labels:n,renderHeader:a,showDevControls:o}=F(),{isSseEnabled:s,toggleSse:d,createReport:u,items:f,refetchData:i,clearCacheAndRefetch:m}=Re(),[R]=Os(),l=rt(f.length),L=Cr(0),D=Cr({topItem:null,anchorReportHubId:null,measuredHeights:new Map}),[I,w]=Gn(()=>f.length===0?null:f[0].reportHubId),S=Cr(!1);Wn(()=>{!S.current&&f.length>0&&(S.current=!0,w(N=>N??f[0].reportHubId))},[f]);let k=async()=>{await i()},U=async()=>{await m()},H=async()=>{let _=R.get("businessDate")||lr(),O=await u(_);w(O)};Wn(()=>{localStorage.getItem("daily-report-auto-read")==="true"&&r(!0)},[]);let B=N=>{r(N),localStorage.setItem("daily-report-auto-read",String(N))},T=_s(()=>[{value:"list",label:n.tabList,content:Z(Vn,{dailyReportItems:f,autoMarkRead:t,selectedReportHubId:I,onSelectItem:w,userId:e,scrollOffsetRef:L})},{value:"tree",label:n.tabTree,content:Z("div",{className:"flex flex-1 items-center justify-center rounded-lg border border-slate-300 border-dashed bg-white p-6 text-slate-500 transition-colors dark:border-slate-700 dark:bg-slate-900/70 dark:text-slate-300",children:n.treeComingSoon})},{value:"detailList",label:n.tabDetailList,content:Z(_n,{dailyReportItems:f,userId:e,selectedItemId:I,onSelectItem:w,scrollRestoreRef:D})}],[f,t,I,e,n]);return Le(Hs,{children:[a({title:n.title,annotation:Le("div",{className:"flex flex-wrap items-center gap-2 leading-1",children:[Z(Yt,{}),Z("span",{className:"tabular-nums",children:n.totalCount(l)}),Z("span",{children:n.debounce(Ue)})]})}),Z("div",{className:"h-full bg-slate-50 dark:bg-slate-950",children:Z("div",{className:"flex h-full w-full max-w-6xl flex-1 flex-col p-1",children:Le(Gt,{defaultValue:"list",className:"flex h-full flex-1 flex-col",children:[Le("div",{className:"flex items-center justify-between gap-1.5 rounded-md border border-slate-200/80 bg-slate-100/60 p-0.5 transition-colors dark:border-slate-800 dark:bg-slate-900/60 dark:text-slate-200",children:[Z(nt,{className:"scrollbar-none flex h-auto touch-pan-x flex-nowrap gap-0.5 overflow-x-auto overflow-y-hidden bg-transparent p-0",children:T.map(({value:N,label:_})=>Z(at,{value:N,className:Ms,children:_},N))}),Le("div",{className:"flex shrink-0 items-center gap-1.5 px-1",children:[Le(Te,{size:"sm",onClick:H,className:"flex h-6 items-center gap-1 rounded bg-amber-600 px-2 font-medium text-[11px] text-white shadow-xs hover:bg-amber-700 dark:bg-amber-600 dark:hover:bg-amber-700",title:n.createReportTitle,children:[Z(Ls,{className:"h-3 w-3"}),Z("span",{children:n.createReport})]}),o&&Le("div",{className:"hidden h-5.5 items-center gap-1 rounded border border-amber-300/70 bg-amber-50/60 px-1 text-slate-600 sm:flex dark:border-amber-700/50 dark:bg-amber-950/40 dark:text-slate-300",title:n.devControls,"data-testid":"dev-controls-toolbox",children:[Z("span",{className:"select-none font-bold font-mono text-[9px] text-amber-800 uppercase dark:text-amber-200",children:"dev"}),Z("div",{className:"-mx-0.5 flex items-center",title:n.devSseToggle,children:Z(Jt,{id:"sse-mode",checked:s,onCheckedChange:d,className:"origin-center scale-50"})}),Z(Te,{variant:"ghost",size:"icon",onClick:k,className:"h-4 w-4 p-0 text-slate-600 hover:bg-amber-200/60 hover:text-slate-900 dark:text-slate-300 dark:hover:bg-amber-800/60 dark:hover:text-slate-100",title:n.devReload,"data-testid":"dev-reload-btn",children:Z(Ps,{className:"h-2.5 w-2.5"})}),Z(Te,{variant:"ghost",size:"icon",onClick:U,className:"h-4 w-4 p-0 text-amber-800 hover:bg-amber-200/60 hover:text-amber-950 dark:text-amber-300 dark:hover:bg-amber-800/60 dark:hover:text-amber-100",title:n.devClearCache,"data-testid":"dev-clear-cache-btn",children:Z(As,{className:"h-2.5 w-2.5"})})]}),Le("div",{className:"flex items-center gap-0.5 pl-0.5",title:n.autoReadTitle,children:[Z(Jt,{id:"auto-read-mode",checked:t,onCheckedChange:B,className:"origin-center scale-50"}),Z(Ze,{htmlFor:"auto-read-mode",className:"cursor-pointer select-none text-[10px] text-slate-500 dark:text-slate-400",children:n.autoRead})]})]})]}),T.map(({value:N,content:_})=>Z(Ve,{value:N,className:"mt-0 flex h-full min-h-0 flex-1 flex-col",children:_},N))]})})})]})};import{Fragment as Xn,jsx as ne,jsxs as Xt}from"react/jsx-runtime";var Bs=()=>{let{labels:e,renderHeader:t}=F();return Xt(Xn,{children:[t({title:e.title,annotation:ne("span",{className:"font-bold text-red-500",children:e.loadErrorBadge})}),ne("div",{className:"h-full bg-slate-50 p-2",children:ne("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:Xt("div",{className:"flex h-full flex-1 flex-col items-center justify-center gap-4 rounded-lg border border-red-200 bg-white p-4 text-slate-500 shadow-sm dark:border-red-900 dark:bg-slate-900/70 dark:text-slate-400",children:[ne("p",{className:"font-medium text-red-600",children:e.loadError}),ne("button",{type:"button","data-testid":"daily-report-load-error-retry",onClick:()=>Ot(),className:"rounded bg-slate-100 px-4 py-2 text-slate-700 text-sm hover:bg-slate-200 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-slate-700",children:e.reload})]})})})]})},Us=()=>{let{labels:e,renderHeader:t}=F();return Xt(Xn,{children:[t({title:e.title,annotation:Xt("div",{className:"flex flex-wrap items-center gap-2 leading-none",children:[ne(Yt,{}),ne("span",{children:e.totalCountLoading}),ne("span",{children:e.debounce(Ue)})]})}),ne("div",{className:"h-full bg-slate-50 p-2",children:ne("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:ne("div",{className:"flex h-full flex-1 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-500 shadow-sm dark:border-slate-700 dark:bg-slate-900/70 dark:text-slate-300",children:e.loadingIds})})})]})},$s=({user:e,userId:t})=>{let{apiBasePath:r,onSessionExpired:n}=F(),a=ke(),o=Fs(n);o.current=n,Jn(()=>{Lt({apiBasePath:r,userKey:t??null})},[r,t]),Jn(()=>{a.phase==="auth-required"&&o.current()},[a.phase]);let s=a.items.length>0||a.phase==="complete";return ne(In,{children:ne(Tn,{user:e,initialItems:a.items,userId:t,children:s?ne(qn,{userId:t}):a.phase==="failed"?ne(Bs,{}):ne(Us,{})},t??"anonymous")})},Oc=({config:e,...t})=>ne(Br,{config:e,children:ne($s,{...t})});var Bc=({actionResult:e,actionStatus:t,currentUrl:r,defaultShouldRevalidate:n,formAction:a,formData:o,formEncType:s,formMethod:d,json:u,nextUrl:f,text:i})=>{if(!n)return!1;if(!(r.pathname===f.pathname&&r.search===f.search&&r.hash===f.hash))return n;if(o){let l=o.get("intent");if(l==="toggleRead"||l==="toggleStar"||l==="addComment"||l==="deleteComment"||l==="create"||l==="update"||l==="publish"||l==="delete")return!1}return e!==void 0||t!==void 0||a!==void 0||o!==void 0||s!==void 0||d!==void 0||u!==void 0||i!==void 0?n:!1},Uc=e=>{let t=async r=>{bn();let n=await r.serverLoader(),a=n.userId;return fn({apiBasePath:e?.apiBasePath,userKey:typeof a=="string"?a:null}),n};return t.hydrate=!0,t};export{st as BusinessDayThumbOverlay,wt as CONTENT_DRAG_POINTER_INPUTS,Ue as DAILY_REPORT_FETCH_DEBOUNCE_MS,Pr as DAILY_REPORT_LABEL_CATALOGS,er as DAILY_REPORT_LABEL_KEYS,dr as DEFAULT_ITEM_HEIGHT,Tn as DailyReportActionProvider,it as DailyReportAttachmentIndicator,dt as DailyReportAttachmentList,M as DailyReportCache,mt as DailyReportCommentForm,ut as DailyReportCommentList,Br as DailyReportConfigProvider,_n as DailyReportDetailList,jt as DailyReportEditForm,In as DailyReportErrorProvider,Nt as DailyReportIdsStreamClient,Yt as DailyReportIdsStreamStatus,Vn as DailyReportList,Bs as DailyReportLoadError,Us as DailyReportLoading,Oc as DailyReportPage,jr as DailyReportPostedComment,qn as DailyReportResolvedContent,Ci as EMPTY_DETAIL,Rt as EMPTY_ITEM,yt as FAST_SCROLL_INERTIA_OPTIONS,gt as FAST_SCROLL_WHEEL_MULTIPLIER,We as ITEM_CONTAINER_HEIGHT,bt as ITEM_VERTICAL_PADDING,Xr as MAX_PREVIEW_LINES,ht as PREFETCH_LOOKAHEAD,Jr as PREFETCH_MAX_DATES,Dt as SCROLL_BAR_WIDTH,qr as SSE_INITIAL_CONNECT_DEFER_MS,St as TAP_SCROLL_CIRCLE_OPTIONS,et as UnreadIndicator,xt as VIRTUAL_SCROLL_OVERSCAN_COUNT,vt as WHEEL_RESET_TIMEOUT_MS,qe as acquireMutationLock,on as applyBroadcastReportUpdate,_e as applyDailyReportServerUpdates,fn as bootstrapDailyReportIdsStreamSession,Ge as clearDailyReportCache,Uc as createDailyReportClientLoader,Bc as dailyReportShouldRevalidate,or as defaultDailyReportClientConfig,Tt as deleteDailyReportCache,Lt as ensureDailyReportIdsStreamSession,ye as getCachedReport,gn as getDailyReportIdsStreamSessionUserKey,bn as primeDailyReportIdsStreamSession,hr as refreshDailyReportIdsStream,nn as registerRecentDeletion,Je as releaseMutationLock,_t as removeDailyReportIdsStreamItem,Vi as resetDailyReportIdsStreamSessionForTesting,nr as resolveDailyReportLabels,He as resolveSourceTypeConfig,yr as resyncDailyReportIdsStream,Ot as retryDailyReportIdsStream,an as subscribeCacheReady,he as updateDailyReportCache,Xe as upsertDailyReportIdsStreamItem,rt as useAnimatedNumber,Re as useDailyReportActionContext,Bt as useDailyReportComments,F as useDailyReportConfig,$e as useDailyReportDetail,Cn as useDailyReportErrorSurface,ke as useDailyReportIdsStream,sn as useDailyReportPrefetch,Rn as useDailyReportSseConnection,$t as useDynamicViewportHeight,rn as writeCache};